private static byte[] Encrypt(byte[] data, int keySize, string publicKeyXml) { if (data == null || data.Length == 0) { throw new ArgumentException("Data are empty", "data"); } int maxLength = GetMaxDataLength(keySize); if (data.Length > maxLength) { throw new ArgumentException(String.Format("Maximum data length is {0}", maxLength), "data"); } if (!IsKeySizeValid(keySize)) { throw new ArgumentException("Key size is not valid", "keySize"); } if (String.IsNullOrEmpty(publicKeyXml)) { throw new ArgumentException("Key is null or empty", "publicKeyXml"); } using (var provider = new RSACryptoServiceProvider(keySize)) { RSAKeyExtensions.FromXmlString(provider, publicKeyXml); return(provider.Encrypt(data, _optimalAsymmetricEncryptionPadding)); } }
private static byte[] Decrypt(byte[] data, int keySize, string publicAndPrivateKeyXml) { if (data == null || data.Length == 0) { throw new ArgumentException("Data are empty", "data"); } if (!IsKeySizeValid(keySize)) { throw new ArgumentException("Key size is not valid", "keySize"); } if (String.IsNullOrEmpty(publicAndPrivateKeyXml)) { throw new ArgumentException("Key is null or empty", "publicAndPrivateKeyXml"); } using (var provider = new RSACryptoServiceProvider(keySize)) { RSAKeyExtensions.FromXmlString(provider, publicAndPrivateKeyXml); return(provider.Decrypt(data, _optimalAsymmetricEncryptionPadding)); } }