【问题标题】:Converting c# decryption method to android将c#解密方法转换为android
【发布时间】:2011-11-14 19:37:09
【问题描述】:

我试图用 JAVA 解密一个用 C# 加密的字符串。 在c#中,使用此方法解密成功:

  AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        aesProvider.BlockSize = 128;
        aesProvider.KeySize = 128;
        aesProvider.Key = strKey;
        aesProvider.IV = strIV;
        aesProvider.Padding = PaddingMode.PKCS7;
        aesProvider.Mode = CipherMode.CBC;

        ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor(aesProvider.Key, aesProvider.IV);
        byte[] DecryptedBytes = cryptoTransform.TransformFinalBlock(EncryptedBytes, 0, EncryptedBytes.Length);
        return System.Text.Encoding.UTF8.GetString(DecryptedBytes);

我想要做的是将此方法转换为 JAVA (Android),这是我尝试过的,但收到一条错误消息(“垫块损坏”):

 try
       {
           byte[] IV = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };
           byte[] KEY = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };

           SecretKeySpec key = new SecretKeySpec(KEY, "AES/CBC/PKCS7Padding");
           Cipher cipher = Cipher.getInstance ("AES/CBC/PKCS7Padding");

           cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV));

           byte[] bytesData = Utilities.Base64Coder.decode(data);

           Log.i("bytesData", String.valueOf(bytesData.length));

           String strResult = new String(cipher.doFinal(bytesData));


            Log.i("decrypted string", strResult);
            return strResult;
        }
        catch (Exception e) {

            Log.i("decrypted FAILED", e.getMessage());
            return null;
        }

10X :)

【问题讨论】:

  • 我确实看过,但没有在那里找到答案。实际上大多数相关问题从未解决。
  • 我会先为每个人编写加密器代码,比较已知输入的加密版本,然后调整每个人的设置,直到它们匹配。查看您的异常情况,您在 C# 中为 aesProvider.Padding = PaddingMode.PKCS7 尝试了哪些其他选项?
  • 再次检查密钥和 IV,确保 Base64Decoder 正常工作。您的算法看起来与我兼容。顺便说一句,在你成功解密数据后,你会想要使用new String(cipher.doFinal(bytesData), "UTF-8");之类的东西。

标签: c# android encryption aes


【解决方案1】:

对于曾经搜索并得到这个问题的人来说 - 这段代码运行良好,问题在于 c# 和 Java 之间的密钥不同。

GregS - 10X 提请我注意再次检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多