public static byte[] Encrypt(byte[] dataToEncrypt, byte[] key, byte[] iv) { if (dataToEncrypt == null || dataToEncrypt.Length == 0) { return(null); } if (key == null) { throw new ArgumentNullException("key"); } if (key.Length != AesKeyLength) { throw new ArgumentOutOfRangeException("key", "AES Key Length should always be " + AesKeyLength); } if (iv == null) { throw new ArgumentNullException("iv"); } if (iv.Length != AesIVLength) { throw new ArgumentOutOfRangeException("iv", "AES IV Length should always be " + AesIVLength); } using (var res = aesCryptoServiceProviderPool.Get()) { using (var encrypter = res.Data.CreateEncryptor(key, iv)) { using (var ms = new MemoryStream()) { ms.Write(iv, 0, AesIVLength); using (var cs = new CryptoStream(ms, encrypter, CryptoStreamMode.Write)) { cs.Write(dataToEncrypt, 0, dataToEncrypt.Length); cs.FlushFinalBlock(); } return(ms.ToArray()); } } } }
public static bool VerifySha256Hash(byte[] hash, byte[] sign, byte[] n, byte[] e) { using (var rsa = rsaCryptoServiceProviderPool.Get()) { var p = new RSAParameters() { Modulus = n, Exponent = e }; rsa.Data.ImportParameters(p); return(rsa.Data.VerifyHash(hash, sign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1)); } }