所以我一直在尝试用 c# 研究 AES 加密。不过,我对 IV 有点坚持,只是我很难理解加密,我希望其他人的更多解释可以让我越过这堵墙。
无论如何,我发现了一些关于 IV 的内容以及如何通过加密消息将其发送到我的网络服务(因为这是我使用 AES 的主要目的)。
这是我找到的文章
http://old.nabble.com/AES-decryption-with-different-IV-td31004365.html
它在那里说,您可以在传递到解密它的目的地时将您的 IV 附加到消息中。
话虽如此,我的问题是,它们是否与从用于加密消息的 IV 转换的普通字符串有关?或者您是否以字节为单位附加您的 IV?
这是我的主要解密
public string DecryptString(string encryptedString, string key)
{
if (encryptedString == null || encryptedString.Length <= 0)
throw new ApplicationException("No string to decrypt.");
if (key == null || key.Length <= 0)
throw new ApplicationException("No key.");
byte[] cipherText = Convert.FromBase64String(encryptedString);
Rijndael aes = new RijndaelManaged();
aes.Key = StringToByte(key);
aes.IV = GetIV(cipherText);
ICryptoTransform decryptor = aes.CreateDecryptor();
throw new NotImplementedException();
}
我的 GetIV() 是
static public byte[] GetIV(string cipherText)
{
// IV will be attached to the beginning of the encrypted String
// needs the length of the IV
int ivStringLength = 16;
string ivString = cipherText.Substring(0, ivStringLength);
byte[] ivByte = StringToByte(ivString);
return ivByte;
}
现在,基于我阅读的另一个线程
似乎您从加密中获得了 IV,但它不是前 N 个字符,而是前 N 个字节。所以这让我很困惑!
还有一件事,IV 不应该用于使用密钥加密消息。在上一篇文章中,他/她是否使用 KEY 和 IV 对其进行加密,然后在消息前面再次附加 IV,然后将其转换为字符串?
编辑:抱歉,我忘了说我是创建 Web 服务的人,这是我正在尝试实施的加密。