Hash 具有可变长度字母数字输出的单向散列

Hash 具有可变长度字母数字输出的单向散列,hash,alphanumeric,hash-collision,variable-length,Hash,Alphanumeric,Hash Collision,Variable Length,我需要单向散列可变长度(10-20个字符)的字母数字+特殊字符(ascii)字符串。 输出应为可变长度,但最大长度为25个字符,字母数字,不区分大小写 另外,我不想产生冲突,所以我需要一些无冲突或至少未经验证(尚未验证)的东西来产生冲突。是关于不同哈希函数的很多好东西。不过,我认为没有人会按照你的要求去做。它们都会发生碰撞 也许你应该看看一些简单的加密算法 下面是一种简单的加密技术,它可以实现您想要的功能: char szInput = "hash me", szOutput[20], szKe

我需要单向散列可变长度(10-20个字符)的字母数字+特殊字符(ascii)字符串。 输出应为可变长度,但最大长度为25个字符,字母数字,不区分大小写

另外,我不想产生冲突,所以我需要一些无冲突或至少未经验证(尚未验证)的东西来产生冲突。

是关于不同哈希函数的很多好东西。不过,我认为没有人会按照你的要求去做。它们都会发生碰撞

也许你应该看看一些简单的加密算法

下面是一种简单的加密技术,它可以实现您想要的功能:

char szInput = "hash me", szOutput[20], szKey = "foo";
int i, cbKey = strlen(szKey), cbInput = strlen(szInput);

for (i=0 ; i<cbInput ; ++i)
  szOutput[i] = szInput[i]^szKey[i%cbKey];  // xor with a differnt char from the key
char szInput=“hash me”,szOutput[20],szKey=“foo”;
int i,cbKey=strlen(szKey),cbInput=strlen(szInput);

对于(i=0;iI认为散列的全部意义在于生成比原始数据更小的数据,您可以将其用作唯一的标识符。因此冲突总是会发生。我认为您需要的不是散列。@johnnycrash散列应该更小,但这并不意味着控制散列的大小没有用。Bloom filters需要更改散列的长度。谢谢!这是一个很好的起点。我想我是在错误的方向上搜索的,正如你在评论中提到的。