base64编码搞砸密码加密

时间:2015-05-01 17:23:43

标签: ruby json openssl

我需要通过套接字在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)
})

0 个答案:

没有答案