UnityアンドロイドビルドでAESを使用して文字列を解読するときに、ヌル参照例外を取得する。そのいくらかのHMAC初期化エラー。Unity C#:HMACの初期化スローとエラー。それを解決する方法
私はsystem.cryptorgraphyのAES暗号化と復号化アルゴリズムを使用してゲームで暗号化を使用していますが、Androidデバイスでエラーが発生しています。 HMAC Initialise()が何であるか、そしてこのエラーを解決する方法について誰かが考えていますか?私は解読するために使用しているコードを貼り付けました。
エラーのスクリーンショットはすべて以下に添付されています。
public string Decrypt (string cipherText)
{
string EncryptionKey = "abc123";
cipherText = cipherText.Replace (" ", "+");
byte[] cipherBytes = Convert.FromBase64String (cipherText);
using (Aes encryptor = Aes.Create()) {
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes (EncryptionKey, new byte[] {
0x49,
0x76,
0x61,
0x6e,
0x20,
0x4d,
0x65,
0x64,
0x76,
0x65,
0x64,
0x65,
0x76
});
encryptor.Key = pdb.GetBytes (32);
encryptor.IV = pdb.GetBytes (16);
using (MemoryStream ms = new MemoryStream()) {
using (CryptoStream cs = new CryptoStream (ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write)) {
cs.Write (cipherBytes, 0, cipherBytes.Length);
cs.Close();
}
cipherText = Encoding.Unicode.GetString (ms.ToArray());
}
}
return cipherText;
}
私は、私は重複を見つけることStackOverflowのに非常に新しい試みたのですが、私は失敗しました。質問が重複していると思われる場合は、リンクを提供してください。
[完璧な質問方法](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)と[最小、完全、およびVerifableの作成方法例](https://stackoverflow.com/help/mcve)をクリックして、あなたの質問をすぐに編集してから、下降して埋められます。 –
提案をお寄せいただき、ありがとうございます。 –
HMACは、特定のパスワード(および塩)から鍵を生成するために* within * Rfc2898DeriveBytesで使用されます。それは初期化されていない理由を説明していません。また、なぜハッシュが最初に呼び出され、次にHMACが呼び出されるのかは説明しません。私があなたに与えることができる唯一のアイデアは、反復回数(静的な塩の値の背後にある整数、たとえば40,000程度に設定されている)をさらに受け取るコンストラクタもあるということです。静塩は、無用の塩の隣にあることに注意してください。 –