当我尝试在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;它出错了。 请帮帮我