最近和京东合做作一个项目,在接口对接传递参数时,参数须要经过AES加密解密。git
原本想到用gem 'aescrypt'处理,可是aescrypt的编码方式用的base64,而京东那边用的是16进制。因此就本身写了加密解密方法。
github
AES 加密算法
def aes_encrypt(key, encrypted_string) aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") aes.encrypt aes.key = key txt = aes.update(encrypted_string) << aes.final txt.unpack('H*')[0].upcase end
AES 解密ruby
def aes_dicrypt(key, dicrypted_string) aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") aes.decrypt aes.key = key aes.update([dicrypted_string].pack('H*')) << aes.final end
其中参数key,是aes加密解密的秘钥。encrypted_string和dicrypted_string是加密和解密字符串。编码
“AES-128-ECB”是秘钥长度算法模式,秘钥长度有128和256两种。算法模式有"CBC", "ECB","CFB","OFB"能够选择。加密