最近我想实现一个功能,从 Rails 里面传一个 crypto 加密过的字符串到 node 中,所以想找了一下两种语言中相关的库。
nodejs:
var crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq';
function encrypt(text){
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'ascii',"base64")
crypted += cipher.final("base64");
return crypted;
}
经测试
encrypt("1") //-输出 2g==
Ruby 中
def encrypt(des_text)
des = OpenSSL::Cipher::Cipher.new('aes-256-ctr')
des.encrypt
des.key = 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq'
result = des.update(des_text)
result << des.final
return Base64.encode64 result
end
经测试
encrypt("1") # 输出 1A==
不知道为什么同样的加密方式和 key 加密出来的结果不一样呢?