如何使用SHA1(或类似的加密函数)散列有多个密钥的类(或结构),例如,
struct Foo{
string name;
int age;
int score;
}简单的方法是hash(has(name) + hash(age) + hash(score)),但哈希冲突是可能的。
发布于 2022-03-20 10:24:10
如果整个结构只包含sizeof,则直接散列(即不分配任何数据,并且它的union是常量):您可以使用union来获得一个正确的字节数组,或者使用强制转换来获得一个char*以提供给哈希函数。
如果在struct/class中有动态数据,则需要序列化所有数据并将其发送到散列函数--显然,由于动态数据,其大小在执行过程中会有所不同。但是,您必须只调用hash一次(每个数据结构只调用一次),而在中,不可能将散列添加到一起--这是一派胡言。您还可以使用框架特性将struct/class序列化为文本流(通常是XML或JSON格式),并散列此序列化而不是二进制结构。
显然,所有这些都取决于平台--如果您愿意的话,您可以使用哪种加密API。
应用这些原则,碰撞(完全不可避免,数学证明)将不会超过任何其他类型的哈希数据。
https://stackoverflow.com/questions/71545803
复制相似问题