public string Hash(string plainText) { if (string.IsNullOrEmpty(plainText)) return plainText; var buffer = _hashAlgorithm.Hash(GetHashKey(_store.HashKeyVersion), Encoding.UTF8.GetBytes(plainText)); var value = new HashValue { AlgorithmVersion = _hashAlgorithm.Version, KeyVersion = _store.HashKeyVersion, Value = Convert.ToBase64String(buffer) }; return value.Serialize(); }
public void CanSerializeAndDeserialize() { var hashValue = new HashValue { AlgorithmVersion = '\u00A9', KeyVersion = "123", Value = "abc" }; var serializedHashValue = hashValue.Serialize(); var newHashValue = HashValue.Deserialize(serializedHashValue); Assert.That(newHashValue.AlgorithmVersion, Is.EqualTo(hashValue.AlgorithmVersion)); Assert.That(newHashValue.KeyVersion, Is.EqualTo(hashValue.KeyVersion)); Assert.That(newHashValue.Value, Is.EqualTo(hashValue.Value)); }
public void CanHash() { var plainTextBuffer = Encoding.UTF8.GetBytes(_plainText); var cipherTextBuffer = new byte[4] { 25, 100, 128, 5 }; var hashKeyCipherTextBuffer = GenerateRandomKey(); var hashKeyPlainTextBuffer = Encoding.UTF8.GetBytes("h_" + _stubCryptoStore.HashKeyVersion); _mockHashAlgorithm.Setup(x => x.Version).Returns(_algorithmVersion); SetupMockHashAlgorithmToHash(_masterKeyPlainTextBuffer, hashKeyPlainTextBuffer, hashKeyCipherTextBuffer); SetupMockHashAlgorithmToHash(hashKeyCipherTextBuffer, plainTextBuffer, cipherTextBuffer); var expectedHashValue = new HashValue { AlgorithmVersion = _algorithmVersion, KeyVersion = _stubCryptoStore.HashKeyVersion, Value = Convert.ToBase64String(cipherTextBuffer) }; var actualHashValue = _cryptoService.Hash(_plainText); Assert.That(actualHashValue, Is.EqualTo(expectedHashValue.Serialize())); }