public void TestSha512ProviderConsistency() { byte[] message = System.Text.Encoding.UTF8.GetBytes( "abcdefghbcdefghicDEFghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); int digestExpectedLength = 64; //for SHA 512, this is the expected length //The Bouncy Castle way org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider provider = new org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider(); byte[] digestActual = new byte[digestExpectedLength]; provider.calculateDigest(digestActual, message, message.Length); //The WinRT way HashAlgorithmProvider sha512Provider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512); IBuffer bMessage = WindowsRuntimeBufferExtensions.AsBuffer(message); IBuffer bDigest = sha512Provider.HashData(bMessage); byte[] digestWinRT = WindowsRuntimeBufferExtensions.ToArray(bDigest); //The PCLCrypto way PCLCrypto.IHashAlgorithmProvider sha512PCLProvider = PCLCrypto.WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(PCLCrypto.HashAlgorithm.Sha512); byte[] digestPCL = sha512PCLProvider.HashData(message); //Did we get the same value for all ways? CollectionAssert.AreEqual(digestWinRT, digestActual); CollectionAssert.AreEqual(digestPCL, digestWinRT); }
public void TestSha512ProviderConsistency() { byte[] message = System.Text.Encoding.UTF8.GetBytes( "abcdefghbcdefghicDEFghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); int digestExpectedLength = 64; //for SHA 512, this is the expected length //The Bouncy Castle way org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider provider = new org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider(); byte[] digestActual = new byte[digestExpectedLength]; provider.calculateDigest(digestActual, message, message.Length); //the dotnet standard way var sha = SHA512.Create(); var shaHash = sha.ComputeHash(message); //Did we get the same value for all ways? CollectionAssert.AreEqual(shaHash, digestActual); }