Unity C#:HMAC初始化抛出并出错。如何解决它

时间:2017-08-25 10:58:35

标签: c# android unity3d encryption cryptography

在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;
}

enter image description here

我是Stackoverflow的新手,我试过找到重复但是我失败了。如果您认为问题重复,请提供链接。

1 个答案:

答案 0 :(得分:0)

我得到了解决方案。我得到null ref因为,使用HMAC .Net2.0使用反射,当我进行构建时,我正在使用.Net 2.0子集,我正在剥离使用加密所需的所有代码。