0

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

私が間違っているところを指摘してください。

4

1 に答える 1

0

この質問は次のようなものだと思います。

Android アプリケーションで commonc コーデックを使用した場合の NoSuchMethodError

Android の Apache Commons Codec: メソッドが見つかりませんでした

答えは、Android はバージョン 1.2 の apache commons を使用するということです。

于 2013-09-09T15:06:38.833 に答える