暗号化と複合化
ライブラリopensslを使ってファイルを暗号化・複合化するプログラムを書きました。
暗号化
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()
- 暗号オブジェクトを生成
- encrypt()で暗号化の準備
- pkc5_keyivgen(pass)でパスワードからivとキーを生成
- read(8000)で8000文字のbuffブロックを作る
- update(buff)で暗号化
- ブロックに残っているデータを暗号化
- reset()でivとキーなど複合の為に必要な情報を消去
以上の順で暗号化を行う。
複合化
enc = OpenSSL::Cipher::AES256.new("CBC") enc.decrypt() enc.pkcs5_keyivgen(pass) File.open(file, "rb") do |fin| File.open("#{file}.plain", "wb") do |fout| while buff = fin.read(8000) fout.write(enc.update(buff)) end fout.write(enc.final()) end end enc.reset()
暗号化と違う点は
- decrypt()で複合化の準備
一点のみなので、とても楽だった。