使用ruby和cipher加密文件中的文本

时间:2017-11-16 01:05:20

标签: ruby-on-rails ruby encryption

我需要创建一个加密器和解密器,它使用文本读取文件并对其进行加密,然后生成带加密的txt文件。 然后你必须解密相同的txt文件 到目前为止,我设法加密文本并将其放在文件中,但我仍然无法解密其中的文本。 加密工作没有文件

**The problem starts here**

#Decrypt
data = ''
File.open('text2.txt','r') do |archivo|
    while line = archivo.gets
       data += line
    end
end


encrypted = data

cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
cipher.decrypt
cipher.key = key
cipher.iv = iv

# and decrypt it
decrypted = cipher.update(encrypted)
decrypted << cipher.final
puts "decrypted: #{decrypted}\n"

错误是:encrypt.rb:48:在final': wrong final block length (OpenSSL::Cipher::CipherError) from encrypt.rb:48:in&#39;

1 个答案:

答案 0 :(得分:1)

问题在于您将加密写入文件<Image source={Images.workingBg} style={styles.container} > {this.renderHeader(navigation)} {this.renderContent(navigation)} </Image> 的块中。您正在使用text2.txt,但您想使用archivo.putsarchivo.write会在每行的末尾添加换行符,以便您将puts写入文件。当你试图解密它时,那个额外的换行符会让它变得混乱。如果您使用encrypted + "\n",它只会准确写出您提供的内容而无需额外的字符。

你想做什么:

write

甚至更好:

File.open('text2.txt', 'w') do |archivo|
  archivo.write encrypted
end