public byte[] Protect(byte[] userData) { var armoredData = cryptoProvider.Encrypt(userData); var hmacBytes = hmacProvider.GenerateHmac(armoredData); var signedArmoredData = SecurityHelperMethods.MergeByteArrays(hmacBytes, armoredData); return(signedArmoredData); }
/// <summary> /// Computes the hash. /// </summary> /// <param name="data">The data.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">data</exception> public byte[] ComputeHash(byte[] data) { if (data == null || data.Length == 0) { throw new ArgumentNullException(nameof(data)); } var saltArray = SecurityHelperMethods.GenerateRandomSalt(); return(ComputeHash(data, saltArray)); }
/// <summary> /// Generates the key. /// </summary> /// <param name="keySize">Size of the key.</param> /// <returns></returns> public static string GenerateKey(int keySize) { using (var rijProvider = new RijndaelManaged { KeySize = keySize, BlockSize = 128 }) { rijProvider.GenerateKey(); rijProvider.GenerateIV(); var key = SecurityHelperMethods.MergeByteArrays(rijProvider.Key, rijProvider.IV); return(Convert.ToBase64String(key)); } }
public byte[] ComputeHash(byte[] data, byte[] saltArray) { if (data == null) { throw new ArgumentNullException(nameof(data)); } if (saltArray == null) { throw new ArgumentNullException(nameof(saltArray)); } using var derivedBytes = new Rfc2898DeriveBytes(data, saltArray, iterations); var hash = derivedBytes.GetBytes(hashSize); var saltedHash = SecurityHelperMethods.MergeByteArrays(hash, saltArray); return(saltedHash); }
/// <summary> /// Computes the hash. /// </summary> /// <param name="data">The data.</param> /// <param name="saltArray">The salt array.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">data</exception> public byte[] ComputeHash(byte[] data, byte[] saltArray) { if (data == null || data.Length == 0) { throw new ArgumentNullException(nameof(data)); } if (saltArray == null || saltArray.Length == 0) { throw new ArgumentNullException(nameof(saltArray)); } using (var managedHashProvider = new SHA256Managed()) { var saltedData = SecurityHelperMethods.MergeByteArrays(data, saltArray); var hash = managedHashProvider.ComputeHash(saltedData); var saltedHash = SecurityHelperMethods.MergeByteArrays(hash, saltArray); return(saltedHash); } }
public bool VerifyHash(byte[] data, byte[] hash) { var salt = SecurityHelperMethods.ExtractRandomSalt(hashSize, hash); return(VerifyHash(data, hash, salt)); }
public byte[] ComputeHash(byte[] data) { var saltArray = SecurityHelperMethods.GenerateRandomSalt(); return(ComputeHash(data, saltArray)); }