1

我正在通过网络发送密码,并在发送它们之前验证它们是否可以被解密,并且它们始终如一地从测试中正常运行,但是当它们通过网络发送时,它们不再正确解密。这不会始终如一地发生。它们比其他方式更常见地被发送并解密,但是它们未能经常解密以产生严重的问题。我猜测密码中使用的某些字符并非旨在通过网络传播,因此它们在某个时候被替换,因此密码从其旅程中以损坏的状态返回。不过,这只是一个猜测。有人有想法么?细节:

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 长度太短”和“最终块长度错误”。它似乎以某种方式与时间有关,因为我似乎更频繁地得到一连串错误或一连串干净的解密,而不是混合的东西,所以这指向了我脑海中的密码字符问题。

4

1 回答 1

1

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

encrypted.unpack("H*).first

在另一端:

encrypted_data = [hex_data].pack("H*")
于 2015-05-05T14:03:51.113 回答