| 38473 |      1 | /*  Title:      Pure/General/sha1.scala
 | 
|  |      2 |     Author:     Makarius
 | 
|  |      3 | 
 | 
|  |      4 | Digesting strings according to SHA-1 (see RFC 3174).
 | 
|  |      5 | */
 | 
|  |      6 | 
 | 
|  |      7 | package isabelle
 | 
|  |      8 | 
 | 
|  |      9 | 
 | 
|  |     10 | import java.security.MessageDigest
 | 
|  |     11 | 
 | 
|  |     12 | 
 | 
|  |     13 | object SHA1
 | 
|  |     14 | {
 | 
|  |     15 |   def digest_bytes(bytes: Array[Byte]): String =
 | 
|  |     16 |   {
 | 
|  |     17 |     val result = new StringBuilder
 | 
|  |     18 |     for (b <- MessageDigest.getInstance("SHA").digest(bytes)) {
 | 
|  |     19 |       val i = b.asInstanceOf[Int] & 0xFF
 | 
|  |     20 |       if (i < 16) result += '0'
 | 
|  |     21 |       result ++= Integer.toHexString(i)
 | 
|  |     22 |     }
 | 
|  |     23 |     result.toString
 | 
|  |     24 |   }
 | 
|  |     25 | 
 | 
|  |     26 |   def digest(s: String): String = digest_bytes(Standard_System.string_bytes(s))
 | 
|  |     27 | }
 | 
|  |     28 | 
 |