Data Encryption Standard: Difference between revisions
→{{header|Go}}
(Added D) |
|||
Line 489:
Encoded : C0999FDDE378D7ED727DA00BCA5A84EE47F269A4D6438190D9D52F78F53584997F922CCB5B068D99
Decoded : 596F7572206C6970732061726520736D6F6F74686572207468616E20766173656C696E650D0A</pre>
=={{header|F#|F sharp}}==
{{trans|C#}}
<lang fsharp>open System
open System.Security.Cryptography
open System.IO
let ByteArrayToString ba =
ba |> Array.map (fun (b : byte) -> b.ToString("X2")) |> String.Concat
let Encrypt passwordBytes messageBytes =
// Configure encryption settings
let iv = Array.zeroCreate 8
let provider = new DESCryptoServiceProvider()
let transform = provider.CreateEncryptor(passwordBytes, iv)
// Setup streams and encrypt
let memStream = new MemoryStream()
let cryptoStream = new CryptoStream(memStream, transform, CryptoStreamMode.Write)
cryptoStream.Write(messageBytes, 0, messageBytes.Length)
cryptoStream.FlushFinalBlock()
// Read the encrypted message from the stream
let encryptedMessageBytes = Array.zeroCreate ((int) memStream.Length)
memStream.Position <- 0L
memStream.Read(encryptedMessageBytes, 0, encryptedMessageBytes.Length) |> ignore
// Return the encrypted bytes
encryptedMessageBytes
let Decrypt passwordBytes encryptedBytes =
// Configure encryption settings
let iv = Array.zeroCreate 8
let provider = new DESCryptoServiceProvider()
let transform = provider.CreateDecryptor(passwordBytes, iv)
// Setup streams and decrypt
let memStream = new MemoryStream()
let cryptoStream = new CryptoStream(memStream, transform, CryptoStreamMode.Write)
cryptoStream.Write(encryptedBytes, 0, encryptedBytes.Length)
cryptoStream.FlushFinalBlock()
// Read the message from the stream
let messageBytes = Array.zeroCreate ((int) memStream.Length)
memStream.Position <- 0L
memStream.Read(messageBytes, 0, messageBytes.Length) |> ignore
// Return the encrypted bytes
messageBytes
[<EntryPoint>]
let main _ =
let keyBytes = [|0x0euy; 0x32uy; 0x92uy; 0x32uy; 0xeauy; 0x6duy; 0x0duy; 0x73uy|]
let plainbytes = [|0x87uy; 0x87uy; 0x87uy; 0x87uy; 0x87uy; 0x87uy; 0x87uy; 0x87uy|]
let encStr = Encrypt keyBytes plainbytes
printfn "Encoded: %s" (ByteArrayToString encStr)
let decBytes = Decrypt keyBytes encStr
printfn "Decoded: %s" (ByteArrayToString decBytes)
0 // return an integer exit code</lang>
{{out}}
<pre>Encoded: 0000000000000000A913F4CB0BD30F97
Decoded: 8787878787878787</pre>
=={{header|Go}}==
|