微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

unix – 为什么RSA加密的文本给我不同的结果相同的文本

我使用RSA加密使用openSSL加密数据,工作正常。我对RSA的理解是,使用相同的公钥加密相同的数据将始终给您相同的结果( as stated herehere)。

但是,使用openssl,我每次重复加密时都会得到不同的结果。
例如:

➜  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      11b6e058273df1ebe0be5e0596e07a6c51724ca0  -

➜  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      05cb82595f7429ef196189f4e781088597d90eee  -

那么为什么输出不是唯一的?是因为我的RSA加密错误,还是因为openssl做了一些额外的魔法?

其实我正在设计一个仅存储RSA加密数据的数据库。我想对加密信息的hashsums进行搜索,如果加密过程本身不是唯一的,这是不可能的。

使用适当的填充方案实现安全RSA加密,其包括一些随机性。详见 PKCS#1OAEP

RSA加密加密填充了0的消息和一串随机位。在这个过程中,随机字符串通过加密散列和异或“密”隐藏在密文中。在解密时,RSA解密从密文中恢复随机字符串,并使用它来恢复消息。这就是为什么与同样的短信的openssl rsautl得到不同的结果。

原文地址:https://www.jb51.cc/bash/387493.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐