我需要通过套接字在JSON中发送密码加密字符串。
JSON.generate
不喜欢这样并抛出错误:
`encode': "\xF7" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
要解决此问题,我只使用Base64.encode
对其进行编码,另一方面使用Base64.decode
对其进行解码
但是当我用密码解密时,我得到了错误:
`final': wrong final block length (OpenSSL::Cipher::CipherError)
我写的一个快速的小测试来证明它是Base64弄乱的东西:
decipher = OpenSSL::Cipher.new("des-ede3")
decipher.decrypt
decipher.key = symkey
test = Base64.encode64(encrypted_json)
test2 = Base64.decode64(test)
puts test2 == encrypted_json #Prints true
decrypted_json = decipher.update(test) + decipher.final
puts
puts "JSON: #{decrypted_json}"
此代码在decrypted_json = decipher.update(test) + decipher.final
encrypted_json
使用相同的密钥通过密码加密。
任何人对于出了什么问题都有任何想法?或者如何生成JSON而不必将其编码为Base64?
编辑:这是我的JSON生成器
ready_to_send = JSON.generate({
enc_json: Base64.encode64(encrypted_json),
symkey: Base64.encode64(encrypted_sym_key)
})