そのため、同じ暗号化を使用して.NetWcfサービスにAES128暗号化を実装する際に、やっと不安定なことがわかりました。今の私の問題は、文字列を復号化しようとするたびに、FromBase64String変換を実行するステップがあり、エラーが発生することです。
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);
}
}
}
}
エラーは次のとおりです。
インデックスが配列の範囲外だった。
そしてそれは
cs.FlushFinalBlock();
これは、メッセージ「heythere」と「25f9e794323b453885f5181f1b624d0b」のキーに対して生成された暗号化です。
0suql40BUGiDoFA4SdXJAA ==
これは私の.Net暗号化から来ています:
unNWQfm9RaU / HgKlDNEmoXZaTzsuBoTNsA2UvDKZhc4 =
PS AES 128のiPhone暗号化の場合、ここからコードを取得しました。