因此,我終於發現了一些更加不可理解的實施AES加密的.Net Wcf服務與相同的加密。我與它現在的問題是,每當它會嘗試解密字符串時,它會有一個步驟中它確實一個FromBase64String轉換,這將給我一個錯誤:objective c aes 128加密.net aes
static public string DecryptString(string message, string key)
{
string output = "";
Rijndael aes = new RijndaelManaged();
try
{
byte[] encrypted = Convert.FromBase64String(message);
byte[] cipherText = GetCipherText(encrypted);
aes.Key = Convert.FromBase64String(key);
aes.Mode = CipherMode.CBC;
aes.IV = GetIV(encrypted);
using (MemoryStream ms = new MemoryStream())
{
using (ICryptoTransform decryptor = aes.CreateDecryptor())
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
cs.Write(cipherText, 0, cipherText.Length);
cs.FlushFinalBlock();
byte[] decrypted = ms.ToArray();
output = Encoding.UTF8.GetString(decrypted);
}
}
}
}
的錯誤是:
Index was outside the bounds of the array.
和它發生在
cs.FlushFinalBlock();
這是它產生用於消息「heythere」和「25f9e794323b453885f5181f1b624d0b」
的密鑰的加密0suql40BUGiDoFA4SdXJAA==
這是從我的.Net加密來:
unNWQfm9RaU/HgKlDNEmoXZaTzsuBoTNsA2UvDKZhc4=
PS對於AES 128加密iPhone,這是我從拿到代碼:
iPhone代碼在哪裏?您引用的問題沒有(問題中的鏈接指向空白頁面)。我注意到的一件事是,你使用加密文本作爲IV;這幾乎肯定是錯誤的。 – Ameen
另外,AES是Rijndael的「專業」版本。您需要確保設置正確的密鑰大小和填充('KeySize = 256; BlockSize = 128; Mode = CipherMode.CBC; Padding = PaddingMode.PKCS7') – Ameen
@gdubs:您的代碼可能會讓某些人感到驚訝。至少在一個正確的支撐塊中完成它將有助於可讀性。 –