Ruby 暗号化したファイルの復号について
Rubyでファイルを暗号化し、それを復号したいのですがうまくいかないため、
質問させていただきます。
Ruby 1.9.3を使用しています。
・ファイルの暗号化 encrypt.rb
-------------------------------------------------
# encoding: cp932
require 'openssl'
def encrypt(file, pass)
enc = OpenSSL::Cipher::AES256.new('CBC')
enc.encrypt
enc.pkcs5_keyivgen(pass)
File.open(file, 'rb') do |fin|
File.open("#{file}.sec", 'wb') do |fout|
while buff = fin.read(8000)
fout.write(enc.update(buff))
end
fout.write(enc.final)
end
end
enc.reset
end
if $*.length > 0
print 'password: '
pass = $stdin.gets.chomp
$*.each do |arg|
begin
encrypt(arg, pass)
puts "#{arg}を暗号化したファイル#{arg}.secを作りました。"
rescue
puts "#{arg}の暗号化に失敗しました。"
end
end
0.upto(pass.length - 1) do |i|
pass[i] = '\xff'
end
end
-------------------------------------------------
・ファイルの復号 decrypt.rb
-------------------------------------------------
# encoding: cp932
def decrypt(file, pass)
dec = OpenSSL::Cipher::AES256.new('CBC')
dec.decrypt
dec.pkcs5_keyivgen(pass)
File.open(file, 'rb') do |fin|
File.open("#{file}.plain", 'wb') do |fout|
while buff = fin.read(512)
fout.write(dec.update(buff))
end
fout.write(dec.final)
end
end
dec.reset
end
if $*.length > 0
print 'password: '
pass = $stdin.gets.chomp
$*.each do |arg|
begin
decrypt(arg, pass)
puts "#{arg}を復号したファイル#{arg}.plainを作りました。"
rescue
puts "#{arg}の復号に失敗しました。"
end
end
0.upto(pass.length - 1) do |i|
pass[i] = '\xff'
end
end
-------------------------------------------------
コマンドプロンプトでencrypt.rb自身を暗号化し、encrypt.rb.secの作成はできるのですが、
decrypt.rbを実行してパスワードを入力しても復号ができません。
どのようにすれば復号できるのか教えていただけますでしょうか。
お礼
アドバイスありがとうございます。 その方法では、microSDカードの中のファイルがすべて暗号化されてしまいます。 microSDカードの中の重要なファイルとアドエス本体の中の重要なファイルだけを暗号化したいのです。
補足
1.スタート→「設定」→「システム」タブ→「暗号化」の設定をする。 2.エクセルファイルを変更して保存する。 3.メールにて、office2007がインストールされたPCに送る ということをしてみました。 当然、暗号化されているのでPCではエクセルファイルを開けないと推測していましたが、 開けるという結果になりました。ちょっと驚きました。 誤って重要なファイルを意図していない相手に送ってしまったとき、 この暗号化は役に立たないのですね。 困った。