暗号化と複合化

ライブラリ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()
  1. 暗号オブジェクトを生成
  2. encrypt()で暗号化の準備
  3. pkc5_keyivgen(pass)でパスワードからivとキーを生成
  4. read(8000)で8000文字のbuffブロックを作る
  5. update(buff)で暗号化
  6. ブロックに残っているデータを暗号化
  7. 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()で複合化の準備

一点のみなので、とても楽だった。