2017-11-16 19 views
-1

テキストを含むファイルを読み取り、それを暗号化して暗号化を含むtxtファイルを生成する暗号化と復号化を行う必要があります。 その後、同じtxtファイルを解読する必要があります これまでのところ、私はそのテキストを暗号化してファイルに入れましたが、それでもこれの中のテキストは解読できません。ファイルruby​​と暗号でファイル内のテキストを暗号化

**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

+0

?暗号化は16進数で提供する必要があります。デバッグの助けを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短コードが含まれていなければなりません。 [mcve]を提供してください。 – zaph

+0

問題を分離して単純化します。最初に、暗号化された文字列を解読された文字列に変換して、テスト文字列を含むコード内の暗号化を取得します。そのときにファイルが追加されます。 – zaph

答えて

1

で問題は、ファイルtext2.txtに暗号化を書き出すブロックです。 archivo.putsを使用していますが、archivo.writeを使用します。 putsは各行の末尾に改行文字を追加するので、ファイルにencrypted + "\n"と書いています。それを解読しようとすると、余分な改行文字がそれを壊します。 writeを使用すると、余分な文字を付けずに入力したものをそのまま書き込むだけです。より良いまだ

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

かを:あなたの代わりに何をしたいのか

復号化した後、読んだ後、テストキー、IV、データ、暗号化されたデータ書き込み前にある
File.write('text2.txt', encrypted) 
+1

ありがとうございます –

関連する問題