用非十六进制字母字符替换 sha-256 哈希中的数字在密码学上是不是安全?
Posted
技术标签:
【中文标题】用非十六进制字母字符替换 sha-256 哈希中的数字在密码学上是不是安全?【英文标题】:Is it cryptographically secure to replace the numbers in a sha-256 hash with non hex alpha characters?用非十六进制字母字符替换 sha-256 哈希中的数字在密码学上是否安全? 【发布时间】:2021-12-12 01:08:27 【问题描述】:这里是一个相当简单的问题,但我想确保我没有想到这个问题的某些方面,这使得这是一个糟糕的想法。
假设我有一个 SHA-256 哈希:7fe3add3b08cf7efd042771ca4c6987a37db9f9cc253a40e741dfe8b04d3b19b
将散列中的每个数字替换为不在散列中的非十六进制(非 a-f)字母字符是否更不安全、容易发生冲突或有任何其他缺点?即替换 0-9 => g-p?在这种情况下,将哈希转换为:
nfejaddjbgocfnefdgkinnhcakcmponajndbpfpcciljakgenkhdfeobgkdjbhpb
从理论上讲,我不会立即看到这会降低安全性,但无法找到任何有关在线执行此类操作的真实信息。
【问题讨论】:
【参考方案1】:您建议的 1:1 字符映射不会在原始哈希中添加或删除任何信息,并且在功能上与原始哈希相同(例如,同样安全)。这些修改后的散列基本上具有与原始散列相同的所有属性,只是使用了一组不同的 16 个字符。
我能想到的主要缺点是引入这些“仅 alpha”哈希可能会令人困惑,因为它们显然是非标准的,特别是如果它们与没有替换数字字符的哈希混合时。根据您与这些哈希交互的方式,处理它们的代码可能需要“了解”数字是否已被替换,从而在原本不会被替换的情况下引入更多复杂性。
【讨论】:
以上是关于用非十六进制字母字符替换 sha-256 哈希中的数字在密码学上是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3:将 SHA256 哈希字符串转换为 SecCertificate