【Ruby】ファイル暗号化と復号化

1.encrypt.rb
require “jcode"
$KCODE="u" #UTF-8を使用
TEST_OJ="C:/BJ.txt"
puts “ファイルのパスを入力してください:"
TEST_FILE_NAME=gets.chomp
if File.exist?(TEST_FILE_NAME)
outfile=File.new(TEST_OJ,"w")

File.open(TEST_FILE_NAME,"r") do |infile|
infile.each_line do |line|
str=[line].pack(“m") #この行目を暗号
outfile.puts str
end
end

outfile.close #クローズファイルを出力
infile=File.new(TEST_FILE_NAME,"w")
File.open(TEST_OJ,"r") do |outfile|
outfile.each_line do |line|
infile.puts(line)
end
end
infile.close
File.delete(TEST_OJ); #中間ファイルを削除
else
puts “#{TEST_FILE_NAME} is no exit!!"
end

2.decrypt.rb

require “jcode"
$KCODE="u" #UTF-8を設定
puts “暗号化されたファイルのパスを入力してください:"
str=gets.chomp
if File.exist?(str)
temp=File.new('c:/temp.txt’,"w")
File.open(str,"r") do |infile|
while !infile.eof? #ファイルを読み取り終了しない
line=infile.gets.chomp #ファイルから最初行を読み取る
a=line.unpack(“m") #復号
temp.puts a #一時ファイルを書き込み
end
temp.close #一時ファイルをクローズ
end
infile=File.new(str,"w") #書き込み専用のファイルに復号化される
File.open('c:/temp.txt’,"r") do |temp|
while !temp.eof?
line=temp.gets #一時ファイルから正常なデータを解除
infile.puts line #復号化されたファイルを書き換える
end
infile.close #復号化されたファイルをクローズ
end
File.delete('c:/temp.txt’) #一時ファイルを削除
end

Source

Posted by arkgame