Skip to content

Instantly share code, notes, and snippets.

@yoonchulkoh
Created April 1, 2013 04:58
Show Gist options
  • Select an option

  • Save yoonchulkoh/5283300 to your computer and use it in GitHub Desktop.

Select an option

Save yoonchulkoh/5283300 to your computer and use it in GitHub Desktop.
暗号化の鍵生成が遅いとのことなので検証用に毎回鍵生成と鍵使い回しの両メソッドを書いた。使い方は$ encrypt_test [メソッド名] [ファイル名]
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