encryption - 使用秘密值的 SHA 哈希作为其外部 ID 是否安全?
问题描述
我正在尝试设计需要将用户的秘密值存储在数据库中的系统(私钥和公钥字符串)。机密本身的存储将在 HashiCorp Vault 的帮助下完成。但是我还有一个要求不允许存储两个相等的对(私钥+公钥)。至于我无法在存储之前检查密钥的唯一性,我必须存储原始秘密的哈希值。我的想法是从秘密数据中计算 SHA 哈希并将其与已保存的哈希进行比较。所以,我想知道它是否可行,我是否可以将此摘要用作访问数据的外部 ID(因为哈希意味着数据条目的唯一性)。希望得到您的帮助。
解决方案
我的想法是从秘密数据中计算 SHA 哈希并将其与已保存的哈希进行比较
当没有其他唯一标识符时,我认为加密哈希是您拥有的最佳选择
(因为散列暗示了数据条目的唯一性)
这是错误的假设。不管密码散列被设计成具有可忽略的冲突概率(两个输入具有相同散列值的概率),原则上仍然存在一些(非常小的)概率。
对于受控(格式化)输入,我会说碰撞概率非常小,您可以大胆地使用哈希作为唯一标识符,但准备处理发生碰撞的极少数情况(可能您可以发布它并成名)
从秘密数据计算 SHA 哈希
关于安全性 - 根据其哈希计算输入值非常困难(=不可能)(假设加密哈希当前被认为是安全的)
注意空间大小——如果你有 1000 个已知值,检查哪个秘密值具有一定的散列是很简单的。假设您存储密钥对,应该没问题
推荐阅读
- javascript - Angular9 sanitizer:Sanitizer 返回 null
- c++ - 为什么 rand()%10+1 给我一个 1-10 之间的数字?
- java - 使用 RewardedAd 将用户名传递给另一个活动
- python - 将 QMessageBox 系统图标添加到 QDialog
- c++ - 如何在 C/C++ 中测量顺序内存读取速度
- python - 字符串索引超出范围且语法无效
- html - 使用 SVG 或 JPG/PNG 图像来提高页面性能是否更好?
- javascript - 将渲染道具反应到 UI 并映射所有道具
- here-api - 等值线上的范围行为
- python - Python SQLite搜索具有多个关键字的帖子标题