1
我在使用RSA解密其中一個POST參數的Rails中構建了一個API。如下所示,當在ruby內部測試加密和解密時,加密後的字符串文字(似乎是UTF8編碼)在解密後不會以UTF-8形式出現。爲什麼是ASCII-8BIT?推薦的方法是什麼?我應該在解密的字符串上調用force_encoding(「UTF-8」),並在API規範中聲明所有字符串在加密之前都應該是UTF8?ruby OpenSSL RSA字符編碼
@rsa = OpenSSL::PKey::RSA.new(1024)
original = "hej på dig\n"
puts original.encoding.name # => "UTF-8"
ciphertext = @rsa.public_encrypt(original)
decrypted = @rsa.private_decrypt(ciphertext)
puts decrypted.encoding.name # => "ASCII-8BIT"
assert_equal original, decrypted
#expected: hej på dig
#actual: hej p\xC3\xA5 dig
我在使用Rails 4.1.5的OSX Yosemite上使用Ruby 2.1.3。