だから私はc#でAES暗号化を研究しようとしてきました。私はIVに少しこだわっていますが、暗号化を理解するのに苦労しているだけで、他の人からの説明がこの壁を乗り越えてくれることを願っています。
とにかく、暗号化されたメッセージを使用して、IVとそれをWebサービスに送信する方法(これが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からIVを取得しているようですが、最初のN文字ではなく、最初のNバイトです。それで私は混乱しました!!
また、キーを使用してメッセージを暗号化するためにIVを使用するべきではありません。前回の記事では、KEYとIVで暗号化してから、メッセージの前にIVを再度添付して、文字列に変換していますか?
編集:お詫びします。私がWebサービスを作成したのは私であり、これが私が実装しようとしている暗号化であると言うのを忘れました。