MessageDigest

こんな記事を読んでみた → MD4/MD5 コリジョンの実証コードが公開 | スラド
MD5はアレだそうで, んじゃ 'SHA-256'かなってことでソレ用のを公開。
元々このプログラムは 'MD5'用に作ったんだけど, だから元に戻すのも簡単。一か所直すだけだお。

/* MessageDigest */
importPackage(java.lang, java.security, java.io)
var newArray = java.lang.reflect.Array.newInstance

function digest(file) {
  var md = MessageDigest.getInstance('SHA-256')
  var ba = newArray(Byte.TYPE, file.length())
  var ins = new DigestInputStream(new FileInputStream(file), md)
  try {
    ins.read(ba)
  }
  finally {
    if (ins)
      ins.close(), ins = null
  }
  return md.digest()
}

function toHex(ba) {
  var res = ''
  for (var i = 0; i < ba.length; i++) {
    var n = ba[i] &0xff
    if (n < 0x10) res += '0'
    res += n.toString(16) //+' '
  }
  return res
}

if (arguments.length == 0)
  quit()

for (var cnt = 0; cnt < arguments.length; cnt++) {
  var file = new File(arguments[cnt])
  if (file.exists())
    print(file+':\t', toHex(digest(file)))
}