Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 从数字生成唯一字符串(最多40亿)_Delphi_Encryption_Hash - Fatal编程技术网

Delphi 从数字生成唯一字符串(最多40亿)

Delphi 从数字生成唯一字符串(最多40亿),delphi,encryption,hash,Delphi,Encryption,Hash,如果我想散列一个简单的ID号,那么使用什么样的散列呢? (1到40亿),这在40亿没有碰撞的数字中是唯一的 我已经读了一些关于散列的书,以及它是如何检查字符串有效性的好方法 注意:我需要一个随机字符串,我可以稍后用相同的ID重新计算,而不是一些随机字符串,因为这个随机字符串没有存储 (注意:我可能需要在数字之前或之后添加一个键,以便我的哈希不容易重新构造, 例如,ID=1使用MySecretKey1散列,ID=25使用MySecretKey25散列,以此类推 标准: 字符串中可能达到此目的的最

如果我想散列一个简单的ID号,那么使用什么样的散列呢? (1到40亿),这在40亿没有碰撞的数字中是唯一的

我已经读了一些关于散列的书,以及它是如何检查字符串有效性的好方法

注意:我需要一个随机字符串,我可以稍后用相同的ID重新计算,而不是一些随机字符串,因为这个随机字符串没有存储

(注意:我可能需要在数字之前或之后添加一个键,以便我的哈希不容易重新构造, 例如,ID=1使用MySecretKey1散列,ID=25使用MySecretKey25散列,以此类推

标准:

  • 字符串中可能达到此目的的最短字节数:我不想使用128/256字节哈希
  • 若并没有内置密钥可用,若哈希算法并没有内置SecretKey,我将用mysecretkey作为前缀或后缀数字
  • 40亿数字之间没有冲突
我正在考虑使用32字节的MD5,但只是想知道是否有更好的替代方案

一些考虑:

  • 具有32字节的MD5是否超过了kill?因为我只需要大约40亿个ID(1-4000000000),是否有更好的替代方案?它必须存储为字符串,而不是字节,因此我将其计为32字节
  • 碰撞可能超过40亿次吗
  • 或者我附加到数字上的前缀/后缀密钥是否会决定是否可能发生冲突
  • 它不用于密码或任何敏感信息,因此我不需要最大的安全性,我需要具有最短字符串输出的algo
谢谢你的提示