public static string DecryptData(EncryptedPacket encryptedPacket, RSAWithRSAParameterKey rsaParams) { var aes = new AesEncryption(); // Decrypt AES key with RSA and then decrypt data with AES. var decryptedSessionKey = rsaParams.DecryptData(encryptedPacket.EncryptedSessionKey); var decryptedData = aes.Decrypt(encryptedPacket.EncryptedData, decryptedSessionKey, encryptedPacket.Iv); return(Encoding.UTF8.GetString(decryptedData)); }
public byte[] DecryptData(EncryptedPacket encryptedPacket, RSAWithRSAParameterKey rsaParams) { var decryptedSessionKey = rsaParams.DecryptData(encryptedPacket.EncryptedSessionKey); var decryptedData = _aes.Decrypt(encryptedPacket.EncryptedData, decryptedSessionKey, encryptedPacket.Iv, encryptedPacket.Tag, null); return(decryptedData); }
public byte[] DecryptData(EncryptedPacket encryptedPacket, RSAWithRSAParameterKey rsaParams) { // Decrypt AES Key with RSA. var decryptedSessionKey = rsaParams.DecryptData(encryptedPacket.EncryptedSessionKey); // Decrypt our data with AES using the decrypted session key. var decryptedData = _aes.Decrypt(encryptedPacket.EncryptedData, decryptedSessionKey, encryptedPacket.Iv); return(decryptedData); }
private static void TestRSAWithRSAParameterKey() { var rsaParams = new RSAWithRSAParameterKey(); const string original = "Text to encrypt"; rsaParams.AssignNewKey(); var encryptedRSAParams = rsaParams.EncryptData(Encoding.UTF8.GetBytes(original)); var decryptedRSAParams = rsaParams.DecryptData(encryptedRSAParams); Console.WriteLine($"Original Text: {original}"); Console.WriteLine($"Encrypted RSA Params: {Convert.ToBase64String(encryptedRSAParams)}"); Console.WriteLine($"Decrypted RSA Params: {Convert.ToBase64String(decryptedRSAParams)}"); Console.WriteLine($"Decrypted Text: {Encoding.Default.GetString(decryptedRSAParams)}"); }
public byte[] DecryptData(EncryptedPacket encryptedPacket, RSAWithRSAParameterKey rsaParams) { // Decrypt AES Key with RSA var decryptedSessionKey = rsaParams.DecryptData(encryptedPacket.EncryptedSessionKey); // Integrity Check var hmacToCheck = HMac.ComputeHMACSha256(encryptedPacket.EncryptedData, decryptedSessionKey); if (!Compare(encryptedPacket.HMAC, hmacToCheck)) { throw new CryptographicException("HMAC for decryption does not match encrypted package HMAC code received. This means the message has been tampered with."); } // Decrypt our data with AES using the decryptedSessionKey return(_aes.Decrypt(encryptedPacket.EncryptedData, decryptedSessionKey, encryptedPacket.IV)); }
public static string DecryptData(EncryptedPacket encryptedPacket, RSAWithRSAParameterKey rsaParams) { var aes = new AesEncryption(); // Decrypt AES key with RSA and then decrypt data with AES. var decryptedSessionKey = rsaParams.DecryptData(encryptedPacket.EncryptedSessionKey); using (var hmac = new HMACSHA256(decryptedSessionKey)) { var hmacToCheck = hmac.ComputeHash(encryptedPacket.EncryptedData); if (!CompareArrays.Compare(encryptedPacket.Hmac, hmacToCheck)) { throw new CryptographicException("HMAC for decryption does not match encrypted packet."); } } var decryptedData = aes.Decrypt(encryptedPacket.EncryptedData, decryptedSessionKey, encryptedPacket.Iv); return(Encoding.UTF8.GetString(decryptedData)); }