使用UTF-8加密和解密使用ruby中的aes时出错

时间:2016-12-11 21:18:05

标签: ruby utf-8 aes

当我尝试在ruby中加密和解密时,我遇到加密和解密的问题

这里是aescrypt.rb我用

 # -*- encoding: utf-8 -*-

 require 'openssl'
 require 'base64'

 module AESCrypt
   def self.encrypt(message, password)
     Base64.encode64(self.encrypt_data(message, self.key_digest(password),      nil, "AES-128-CBC"))
   end

   def self.decrypt(message, password)
     base64_decoded = Base64.decode64(message)
     self.decrypt_data(base64_decoded, self.key_digest(password), nil, "AES-     128-CBC")

   end

   def self.key_digest(password)
     OpenSSL::Digest::SHA256.new(password).digest
   end

   def self.decrypt_data(encrypted_data, key, iv, cipher_type)
     aes = OpenSSL::Cipher::Cipher.new(cipher_type)
     aes.decrypt 'utf-8'

     iv = ("\0" * 16)

     aes.key = key
     aes.iv = iv
     aes.update(encrypted_data) + aes.final  
   end

   def self.encrypt_data(data, key, iv, cipher_type)
     aes = OpenSSL::Cipher::Cipher.new(cipher_type)
     aes.encrypt 'utf-8'

     iv = ("\0" * 16)

     aes.key = key
     aes.iv = iv
     aes.update(data) + aes.final      
   end
 end

当我加密和解密字符串' abcde'使用此代码,它正常工作
但问题是使用其他语言,如中文,韩语,日语使用此代码

是否存在使用utf-8进行编码的问题?

这是我在我的代码中使用

    <% temp1 = "12345" %>
    <% tempcenter = AESCrypt.encrypt(temp1,"rf") %>
    <% temp2 = AESCrypt.decrypt(tempcenter,"rf") %>

但是当我改变temp1 =&#34;(中文)&#34;它出错了。 请帮帮我

0 个答案:

没有答案