我尝试在一方用Ruby时测试openssl的互操作性,另一方面用命令行测试。
我生成了一个RSA证书并以这种方式提取了它的公钥:
openssl req -x509 -nodes -days 1825 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
openssl rsa -in mycert.pem -pubout > mycert.pub
我编写了一个执行两件事的Ruby脚本:
您可以在以下要点中找到此Ruby脚本的代码:https://gist.github.com/dirtyhenry/4673331(参见poc-openssl-rsa.rb
文件)
我的问题是:我的Ruby生成的public-encrypted.txt
文件与public-encrypted-cl64.txt
有何不同?是由一些文件系统副作用引起的吗? (即,当另一个是文件或其他东西时,一个是字符串?)
感谢。
答案 0 :(得分:2)
我发现这两者确实具有互操作性。只是填充带来一些随机性,导致2个连续编码将导致2个不同的编码数据。
比照http://en.wikipedia.org/wiki/RSA_%28algorithm%29#Padding_schemes:
实际的RSA实现通常嵌入某种形式的结构化随机化 在加密之前填充到值m。