Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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()));
        }