在Unity android build中使用AES解密字符串时获取空引用异常。它的一些HMAC Initialize错误。
我使用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的新手,我试过找到重复但是我失败了。如果您认为问题重复,请提供链接。
答案 0 :(得分:0)
我得到了解决方案。我得到null ref因为,使用HMAC .Net2.0使用反射,当我进行构建时,我正在使用.Net 2.0子集,我正在剥离使用加密所需的所有代码。