Created
April 1, 2013 04:58
-
-
Save yoonchulkoh/5283300 to your computer and use it in GitHub Desktop.
暗号化の鍵生成が遅いとのことなので検証用に毎回鍵生成と鍵使い回しの両メソッドを書いた。使い方は$ encrypt_test [メソッド名] [ファイル名]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'openssl' | |
| # 暗号化 | |
| def encrypt(in_file) | |
| in_filename = File::basename(in_file, '.txt') | |
| out_file = open(in_filename + "_encrypted" + ".txt", "w") | |
| File::open(in_file, "r") {|f| | |
| f.each do |line| | |
| str = line.chomp! | |
| enc = OpenSSL::Cipher::Cipher.new("aes256") | |
| enc.encrypt | |
| enc.pkcs5_keyivgen("test") | |
| encrypted = (enc.update(str) + enc.final).unpack("H*").to_s | |
| out_file.puts encrypted | |
| end | |
| } | |
| end | |
| # 暗号化(鍵生成共通化) | |
| def encrypt_shared(in_file) | |
| in_filename = File::basename(in_file, '.txt') | |
| out_file = open(in_filename + "_encrypted" + ".txt", "w") | |
| enc = OpenSSL::Cipher::Cipher.new("aes256") | |
| enc.encrypt | |
| enc.pkcs5_keyivgen("test") | |
| File::open(in_file, "r") {|f| | |
| f.each do |line| | |
| str = line.chomp! | |
| enc2 = enc.clone | |
| encrypted = (enc2.update(str) + enc2.final).unpack("H*").to_s | |
| out_file.puts encrypted | |
| end | |
| } | |
| end | |
| # 復号化 | |
| def decrypt(in_file) | |
| in_filename = File::basename(in_file, '.txt') | |
| out_file = open(in_filename + "_decrypted" + ".txt", "w") | |
| File::open(in_file, "r") {|f| | |
| f.each do |line| | |
| str = line.chomp! | |
| dec = OpenSSL::Cipher::Cipher.new("aes256") | |
| dec.decrypt | |
| dec.pkcs5_keyivgen("test") | |
| decrypted = dec.update(Array.new([str]).pack("H*")) + dec.final | |
| out_file.puts decrypted | |
| end | |
| } | |
| end | |
| # 復号化(鍵生成共通化) | |
| def decrypt_shared(in_file) | |
| in_filename = File::basename(in_file, '.txt') | |
| out_file = open(in_filename + "_decrypted" + ".txt", "w") | |
| dec = OpenSSL::Cipher::Cipher.new("aes256") | |
| dec.decrypt | |
| dec.pkcs5_keyivgen("test") | |
| File::open(in_file, "r") {|f| | |
| f.each do |line| | |
| str = line.chomp! | |
| dec2 = dec.clone | |
| decrypted = dec2.update(Array.new([str]).pack("H*")) + dec2.final | |
| out_file.puts decrypted | |
| end | |
| } | |
| end | |
| # 実行 | |
| send(ARGV[0], ARGV[1]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment