03 Dec 2015
This post contains examples of how to generate a SHA-256 and SHA-512 hash key with the examples in C# and VB.NET
This solution matches the expected result for Ingenico's implementation for their payment gateway.
C# - UPDATED
using System; using System.Text; using System.Security.Cryptography; using CodeShare.Cryptography;
namespace CodeShare.Cryptography { public static class SHA {
public static string GenerateSHA256String(string inputString) { SHA256 sha256 = SHA256Managed.Create(); byte[] bytes = Encoding.UTF8.GetBytes(inputString); byte[] hash = sha256.ComputeHash(bytes); return GetStringFromHash(hash); }
public static string GenerateSHA512String(string inputString) { SHA512 sha512 = SHA512Managed.Create(); byte[] bytes = Encoding.UTF8.GetBytes(inputString); byte[] hash = sha512.ComputeHash(bytes); return GetStringFromHash(hash); }
private static string GetStringFromHash(byte[] hash) { StringBuilder result = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { result.Append(hash[i].ToString("X2")); } return result.ToString(); }
} }
Usage Example
public void UsageExample()
{
Console.WriteLine(SHA.GenerateSHA256String("abc"));
//returns BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD
Console.WriteLine(SHA.GenerateSHA512String("abc"));
//returns DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F
}
Have you gone through this course on Pluralsight yet? Blockchain – Principles and Practices
VB.NET
Imports System.Text
Imports System.Security.Cryptography
Namespace CodeShare.Cryptography
Public Class SHA
Public Shared Function GenerateSHA256String(ByVal inputString) As String
Dim sha256 As SHA256 = SHA256Managed.Create()
Dim bytes As Byte() = Encoding.UTF8.GetBytes(inputString)
Dim hash As Byte() = sha256.ComputeHash(bytes)
Dim stringBuilder As New StringBuilder()
For i As Integer = 0 To hash.Length - 1
stringBuilder.Append(hash(i).ToString("X2"))
Next
Return stringBuilder.ToString()
End Function
Public Shared Function GenerateSHA512String(ByVal inputString) As String
Dim sha512 As SHA512 = SHA512Managed.Create()
Dim bytes As Byte() = Encoding.UTF8.GetBytes(inputString)
Dim hash As Byte() = sha512.ComputeHash(bytes)
Dim stringBuilder As New StringBuilder()
For i As Integer = 0 To hash.Length - 1
stringBuilder.Append(hash(i).ToString("X2"))
Next
Return stringBuilder.ToString()
End Function
End Class
End Namespace
Please feel free to comment if you would like to propose any improvements for a better solution.
Paul