加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:39:38 所属栏目:百科 来源:网络整理
导读:我需要根据可变长度字符串生成一个Hash值,我可以将其存储在不超过16的字段中(由于供应商要求). 我正在连接几个正在通过C#脚本转换传递的字符串,以便计算哈希值.我受到供应商文件规范的限制,因为哈希的输出不能超过16. 有没有人有什么建议?作为示例,MD5算法
我需要根据可变长度字符串生成一个Hash值,我可以将其存储在不超过16的字段中(由于供应商要求).

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

有没有人有什么建议?作为示例,MD5算法的字符串转换具有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位强加密哈希.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读