2006-09-04 [長年日記]

_ [ruby] openssl

いつまで続くのか

とりあえず、後半部分の pass -> (key, iv) の部分は、分かった。

def keyivgen(pass, salt = "", digest = Digest::MD5.new)
  m = digest.dup.update(pass + salt).digest.match(/\A(.{16})(.*?)\z/mn)
  data, key, iv = m.to_a
  iv << digest.dup.update(data + pass + salt).digest if iv.size < 8
  return key, iv.unpack("N2")
end

とか。あと、openssl に -nopad を付けなくても、

def encrypt(s)
  pad = 8 - s.length % 8
  s += 1.chr * pad
  _crypt(s) { |l,r| @bf.encipher(l,r) }
end

ってな感じにしとけば OK。でもまだ decrypt はできない。えーん。

[]

«前の日記(2006-09-03) 最新 次の日記(2006-09-05)»