src/Pure/General/sha1.scala
author wenzelm
Tue, 19 Apr 2011 20:47:02 +0200
changeset 42405 13ecdb3057d8
parent 41954 fb94df4505a0
child 43714 3749d1e6dde9
permissions -rw-r--r--
split Type_Infer into early and late part, after Proof_Context; added Type_Infer_Context.const_sorts option, which allows NBE to use regular Syntax.check_term;

/*  Title:      Pure/General/sha1.scala
    Author:     Makarius

Digest strings according to SHA-1 (see RFC 3174).
*/

package isabelle


import java.security.MessageDigest


object SHA1
{
  case class Digest(rep: String)
  {
    override def toString: String = rep
  }

  def digest_bytes(bytes: Array[Byte]): Digest =
  {
    val result = new StringBuilder
    for (b <- MessageDigest.getInstance("SHA").digest(bytes)) {
      val i = b.asInstanceOf[Int] & 0xFF
      if (i < 16) result += '0'
      result ++= Integer.toHexString(i)
    }
    Digest(result.toString)
  }

  def digest(s: String): Digest = digest_bytes(Standard_System.string_bytes(s))
}