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);
感謝您的回覆。你可以給我任何示例代碼來做到這一點? (加密和解密) –