gpt4 book ai didi

c# - 在 C# 中是否有产生 64 位散列大小的散列算法?

转载 作者:太空狗 更新时间:2023-10-30 00:28:00 24 4
gpt4 key购买 nike

我需要根据可变长度字符串生成哈希值,我可以将其存储在不超过 16 位的字段中(由于供应商要求)。

我将通过 C# 脚本转换传递的几个字符串连接在一起以计算哈希值。我受到供应商文件规范的限制,因为哈希的输出不能超过 16 个字符。

有人有什么建议吗?例如,MD5 算法(128 位)的字符串转换具有 32 个字符的十六进制编码长度。

最佳答案

加密函数的设计使您可以将输出截断为一定大小,截断后的哈希函数仍然是安全的加密哈希函数。例如,如果您将 SHA-512 输出的前 128 位(16 字节)应用于某些输入,则前 128 位是与任何其他 128 位加密哈希一样强大的加密哈希。

解决方案是选择一些加密哈希函数 - SHA-256、SHA-384 和 SHA-512 是不错的选择 - truncate the output到 128 位(16 字节)。

--编辑--

根据注释,当编码为 ASCII 时,散列值必须在 16 个 ASCI 字符以内,解决方案是

  • 首先,选择一些加密哈希函数(SHA-2 系列包括 SHA-256、SHA-384 和 SHA-512)
  • 然后,将所选散列函数的输出截断为 96 位(12 字节)——也就是说,保留散列函数输出的前 12 个字节并丢弃剩余字节
  • 然后,将截断的输出进行 base-64 编码为 16 个 ASCII 字符(128 位)
  • 有效地生成 96 位强加密哈希。

关于c# - 在 C# 中是否有产生 64 位散列大小的散列算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com