【问题标题】:Encryption/Decryption in C# and JavaC# 和 Java 中的加密/解密
【发布时间】:2013-09-09 14:04:39
【问题描述】:

我想在 Android 上用 Java 解密我的加密字符串。

使用以下代码,我在 C# 中加密了我的原始字符串:

        public static string Encrypt(string decryptedString)
    {
        DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
        desProvider.Mode = CipherMode.ECB;
        desProvider.Padding = PaddingMode.PKCS7;
        desProvider.Key = Encoding.ASCII.GetBytes("password");
        using (MemoryStream stream = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(stream, desProvider.CreateEncryptor(), CryptoStreamMode.Write))
            {
                byte[] data = Encoding.Default.GetBytes(decryptedString);
                cs.Write(data, 0, data.Length);
                cs.FlushFinalBlock();
                return Convert.ToBase64String(stream.ToArray());
            }
        }
    }

我尝试用 Java 解密它:

   public String decrypt(){
       String keyStr = "password";
       String msg = "KGFL1GG5VLQ=";
       String erg = "";
       try{


       KeySpec ks = new DESKeySpec(keyStr.getBytes("UTF-8"));
       SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(ks);
       IvParameterSpec iv = new IvParameterSpec(Hex.decodeHex("1234567890ABCDEF".toCharArray()));
       Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
       cipher.init(Cipher.DECRYPT_MODE, key, iv);

       byte[] decoded = cipher.doFinal(Base64.decodeBase64(msg));
       erg = new String(decoded);
       } catch (Exception e){
           erg = "error";
       }
       return erg;

   }

我使用 commons-codec-1.8.jar。它崩溃并出现以下错误:

W/dalvikvm(17859): VFY: unable to resolve static method 339: Lorg/apache/commons/codec/binary/Base64;.decodeBase64 (Ljava/lang/String;)[B

请指出我哪里错了。

【问题讨论】:

  • 您必须比这更精确。什么不工作?它没有正确解密,引发异常等?
  • 我认为这类似于:stackoverflow.com/questions/5147789/…
  • 另外,您的代码中存在一些问题,例如,您在 .NET 代码中设置了加密密钥,但您没有在 Android 代码中设置,另外,您在您的 C# 代码中没有的 Android 代码。
  • 如果您不熟悉加密,我建议您在 C# 和 Android 应用程序上更好地使用 Bouncy Castle,这样您就可以在两者都有共同点。

标签: c# java android .net encryption


【解决方案1】:

我认为这个问题类似于:

NoSuchMethodError using commonc codec in Android application

Apache Commons Codec with Android: could not find method

答案是,Android 使用 1.2 版的 apache commons。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多