网络解密失败,本地解密OK

时间:2012-08-08 05:36:17

标签: ruby encryption openssl

我正在通过网络发送密码并验证它们是否可以在发送之前被解密,并且它们一直在测试中运行正常,但是当它们通过网络发送时,它们不再正确解密。这不会持续发生。它们通常会被发送和解密,因为它们应该比其他情况更常见,但是它们经常无法解密而不会产生严重的问题。我猜测密码中使用的某些字符并不打算通过网络传输,因此它们会在某些时候被替换,因此密码会从其处于破碎状态的旅程中返回。不过,这只是猜测。有人有主意吗? 细节:

require 'openssl'
require 'digest/sha1'

cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
cipher.encrypt
key = Digest::SHA1.hexdigest("password")
iv = cipher.random_iv

我得到的错误消息大多是“解密不好”,但也是“iv length too short”和“错误的最终块长度”。它似乎与某种程度上的时间有关,因为我似乎比混合的事情更多地得到一连串的错误或一连串干净的解密,以便在我的脑海中找到一个密码字符问题。

1 个答案:

答案 0 :(得分:1)

加密文本和IV是字符串是二进制的,因此包含通过网络发送不安全的字符。您可以将二进制字符串解压缩为十六进制并将其发送到。

encrypted.unpack("H*).first

另一方面:

encrypted_data = [hex_data].pack("H*")
相关问题