psi*_*bar 39 unix terminal openssl cryptography rsa
我使用RSA加密使用openSSL加密数据,效果很好.我对RSA的理解是,使用相同的公钥加密相同的数据总会给你相同的结果(如此处或此处所述).
但是,使用openssl每次重复加密时都会得到不同的结果.例如:
? ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum
11b6e058273df1ebe0be5e0596e07a6c51724ca0 -
? ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum
05cb82595f7429ef196189f4e781088597d90eee -
Run Code Online (Sandbox Code Playgroud)
那么为什么输出不是唯一的呢?是因为我得到RSA加密错误还是因为openssl做了一些额外的魔术?
实际上我正在尝试设计一个只存储RSA加密数据的数据库.我想对加密信息的哈希值进行搜索,如果加密过程本身不是唯一的,这是不可能的.
psi*_*bar 10
好,我知道了.RSA本身就是确定性的.但是,为了获得更好的安全性并防止攻击者猜测加密信息,加密不是在纯"数据"上进行,而是在"数据"+"某些随机模式"上进行(我应该更仔细地阅读维基百科)