最近和京東合做作一個項目,在接口對接傳遞參數時,參數須要經過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"能夠選擇。加密