1
因为我是加密概念的新手。我应该做的应用程序发送的数据,通过AES对称技术加密。另外我需要发送我使用不对称RSA技术以加密格式加密的密钥,另一方面。我已经使用AES对称加密技术使用256位密钥完成了加密,现在我已经以字节加密了数据,密钥和启动向量(IV)。虽然我试图解密,但我也知道启动向量也需要获取确切的数据。如何在AES加密中使用会话密钥传输初始向量
现在的问题是
1.how不要我送与初始向量IV另一只手的关键?
2.是否需要加密数据或字节键。使用密钥发送初始向量的标准方式是什么?
3.i需要用非对称加密方法用公钥加密密钥。
public byte[] SymmetricAESEncryption(string plainText, byte[] key, byte[] initVector)
{
byte[] encrypted;
using (Aes objAES = Aes.Create())
{
objAES.KeySize = 256;
ICryptoTransform encryptor = objAES.CreateEncryptor(key, initVector);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
AES解密代码在C#中:它们如何解密后的私钥
我的AES加密代码,在C#中读取另一方面密钥和IV
static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
{
string plaintext = null;
using (Aes rijAlg = Aes.Create())
{
rijAlg.Key = Key;
rijAlg.IV = IV;
ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plaintext = srDecrypt.ReadToEnd();
}
}
}
}
return plaintext;
}
我C中的不对称代码#
X509Certificate2 objCertificate = new X509Certificate2();
objCertificate.Import(Encoding.UTF8.GetBytes(rawData.ToString().Trim()));
RSACryptoServiceProvider objAsyAlgm1 = (RSACryptoServiceProvider)objCertificate.PublicKey.Key;
byte[] SessionKeyEncryptValue = objAsyAlgm1.Encrypt(sessionKey, false);
感谢您的回复。你可以给我任何示例代码来做到这一点? (加密和解密) –