我需要创建一个加密器和解密器,它使用文本读取文件并对其进行加密,然后生成带加密的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;
答案 0 :(得分:1)
问题在于您将加密写入文件<Image
source={Images.workingBg}
style={styles.container}
>
{this.renderHeader(navigation)}
{this.renderContent(navigation)}
</Image>
的块中。您正在使用text2.txt
,但您想使用archivo.puts
。 archivo.write
会在每行的末尾添加换行符,以便您将puts
写入文件。当你试图解密它时,那个额外的换行符会让它变得混乱。如果您使用encrypted + "\n"
,它只会准确写出您提供的内容而无需额外的字符。
你想做什么:
write
甚至更好:
File.open('text2.txt', 'w') do |archivo|
archivo.write encrypted
end