reg*_*ity 7 encryption hash rsa
我正在考虑使用RSA加密算法创建一个哈希函数(如md5或sha1).我想知道是否有任何明显的原因,这个算法不起作用:
要验证消息与存储的哈希具有相同的哈希,请使用保存的公钥并重复此过程.
这可能,安全,实用吗?
谢谢你的评论.
RSA加密不是确定性的:如果遵循RSA标准,您将看到注入了一些随机字节.因此,如果您使用RSA加密相同的消息两次,则可能无法获得两倍相同的输出.
此外,您的"未指定的第5步"可能很弱.例如,如果您定义一种方法来散列一个块,然后将这些块一起异或,那么A || B和B || A(对于块大小的值A和B)将散列为相同的值; 那是碰撞的富矿.
在学术上,已经尝试过用数论结构构建散列函数(即不是原始RSA,而是重用相同类型的数学元素); 有关详细信息,请参阅Lars Knudsen的演示文稿.类似地,ECOH哈希函数被提交用于SHA-3竞争,其核心使用椭圆曲线(但它被"破坏").潜在的希望是哈希函数安全性可以某种方式与潜在的数理论难题相关联,从而提供可证明的安全性.但是,实际上,这种散列函数要么慢,要么很弱,要么两者兼而有之.
已经有散列基本上可以做到这一点,除非特别是 RSA 算法。它们被称为加密散列,它们的突出特点是它们在加密上是安全的——这意味着公钥加密函数中同样具有强度和面向安全的思想也已进入它们。
唯一的区别是,它们从头开始设计为散列,因此它们也满足散列函数的个性化需求,这可以被视为加密函数不需要的额外优势。
此外,两者之间存在完全矛盾的因素,例如,您希望哈希函数在不影响安全性的情况下尽可能快,而缓慢通常被视为加密函数的一个特征,因为它极大地限制了蛮力攻击。
SHA-512 是一种出色的加密哈希,可能值得您关注。Whirlpool、Tiger 和 RipeMD 也是不错的选择。这些都不会出错。
还有一件事:如果你真的希望它变慢,那么你绝对不想要一个散列函数并且完全错误。如果,正如我假设的那样,您想要的是一个非常、非常安全的哈希函数,那么就像我说的那样,有许多选项比您的示例更适合,同时具有同样甚至更高的加密安全性。
顺便说一句,我并不完全相信您的混合算法没有弱点。虽然每个 RSA 块的输出已经在高雪崩等情况下已经是统一的,但我仍然担心这可能会给选择的纯文本或类似消息的比较分析带来问题。
| 归档时间: |
|
| 查看次数: |
6630 次 |
| 最近记录: |