ruby AES加密解密


  最近和京東合作做一個項目,在接口對接傳遞參數時,參數需要通過AES加密解密。

本來想到用gem 'aescrypt'處理,但是aescrypt的編碼方式用的base64,而京東那邊用的是16進制。所以就自己寫了加密解密方法。

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 解密

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"可以選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM