Encryption 使用秘密值的SHA哈希作为其外部ID安全吗?

Encryption 使用秘密值的SHA哈希作为其外部ID安全吗?,encryption,cryptography,sha,secret-key,hashicorp-vault,Encryption,Cryptography,Sha,Secret Key,Hashicorp Vault,我试图设计一个系统,在这个系统中,我需要在数据库中存储用户的秘密值(私钥和公钥字符串)。秘密本身的存储将在HashiCorp Vault的帮助下完成。但我还有一个要求,即不允许存储两个相等的对(私钥+公钥)。 因为我不能在存储之前检查密钥的唯一性,所以我必须存储原始机密的散列。我的想法是从秘密数据计算SHA哈希,并将其与已保存的哈希进行比较。所以,我想知道这是一个有效的解决方案,我可以使用这个摘要作为访问数据的外部ID(因为散列意味着数据条目的唯一性)。希望你的帮助 我的想法是从秘密数据计算SH

我试图设计一个系统,在这个系统中,我需要在数据库中存储用户的秘密值(私钥和公钥字符串)。秘密本身的存储将在HashiCorp Vault的帮助下完成。但我还有一个要求,即不允许存储两个相等的对(私钥+公钥)。 因为我不能在存储之前检查密钥的唯一性,所以我必须存储原始机密的散列。我的想法是从秘密数据计算SHA哈希,并将其与已保存的哈希进行比较。所以,我想知道这是一个有效的解决方案,我可以使用这个摘要作为访问数据的外部ID(因为散列意味着数据条目的唯一性)。希望你的帮助

我的想法是从秘密数据计算SHA哈希,并将其与已保存的哈希进行比较

我假设在没有其他唯一标识符的情况下,加密哈希是最好的选择

(因为散列意味着数据项的唯一性)

这是错误的假设。尽管密码散列被设计为具有可忽略的碰撞概率(两个输入具有相同散列值的概率),原则上仍然存在一些(非常小的)概率

对于受控(格式化)输入,我认为冲突概率非常小,因此您可以大胆地使用哈希作为唯一标识符,但准备处理很少发生冲突的情况(可能您可以发布它并成名)

从机密数据计算SHA哈希

关于安全性-很难(=不可能)根据其散列计算输入值(假设加密散列当前被认为是安全的)

注意空间大小——如果您有1000个已知值,那么检查哪个秘密值具有特定的哈希值是很繁琐的。假设您存储了密钥对,它应该可以

我的想法是从秘密数据计算SHA哈希,并将其与已保存的哈希进行比较

我假设在没有其他唯一标识符的情况下,加密哈希是最好的选择

(因为散列意味着数据项的唯一性)

这是错误的假设。尽管密码散列被设计为具有可忽略的碰撞概率(两个输入具有相同散列值的概率),原则上仍然存在一些(非常小的)概率

对于受控(格式化)输入,我认为冲突概率非常小,因此您可以大胆地使用哈希作为唯一标识符,但准备处理很少发生冲突的情况(可能您可以发布它并成名)

从机密数据计算SHA哈希

关于安全性-很难(=不可能)根据其散列计算输入值(假设加密散列当前被认为是安全的)


注意空间大小——如果您有1000个已知值,那么检查哪个秘密值具有特定的哈希值是很繁琐的。假设您存储了密钥对,应该可以

谢谢。我决定用Bcrypt代替SHA-256来提高熵。谢谢。为了获得更好的熵,我决定使用Bcrypt而不是SHA-256。