F# Common Hash Functions
TODO: at the moment it didn't work well with streams.
open System
open System.IO
open System.Security.Cryptography
open System.Text
let encode (s: string) = UTF8Encoding().GetBytes(s)
let toHexDigit n =
if n < 10uy then char (n + 0x30uy)
else char (n + 0x37uy)
let toHex b =
let strArr =
[|for n in b do
let ln = (n &&& 0xF0uy) >>> 4
let rn = n &&& 0x0Fuy
yield ln |> toHexDigit
yield rn |> toHexDigit|]
new String(strArr)
let md5sum s =
use hashProvider = new MD5CryptoServiceProvider()
let hash = hashProvider.ComputeHash(encode s)
hash |> toHex
let sha1sum s =
use hashProvider = new SHA1CryptoServiceProvider()
let hash = hashProvider.ComputeHash(encode s)
hash |> toHex
let sha256sum s =
use hashProvider = new SHA256Managed()
let hash = hashProvider.ComputeHash(encode s)
hash |> toHex
let sha512sum s =
use hashProvider = new SHA512Managed()
let hash = hashProvider.ComputeHash(encode s)
hash |> toHex
open System
open HashSum
Console.WriteLine(md5sum "Hello World")
Console.WriteLine(sha1sum "Hello World")
Console.WriteLine(sha256sum "Hello World")
Console.WriteLine(sha512sum "Hello World")
No comments:
Post a Comment