Android - decodeBase64崩溃App

时间:2014-12-03 16:16:37

标签: java android encryption

我必须加密一个字符串,但应用程序没有到达加密方法,它在加载时崩溃。
我使用的是Apache Commons Codec库。

private EditText txtPass = (EditText)findViewById(R.id.txtPass);
public String key = txtPass.getText().toString();
public byte[] key_Array = org.apache.commons.codec.binary.Base64.decodeBase64(key);

出于某种原因,应用程序在第三行崩溃。

我的logcat。

12-03 14:03:31.441  23420-23420/com.example.cristiano.automacao V/ActivityThread﹕ Class path: /data/app/com.example.cristiano.automacao-2.apk, JNI path: /data/data/com.example.cristiano.automacao/lib
12-03 14:03:31.591  23420-23420/com.example.cristiano.automacao W/dalvikvm﹕ VFY: unable to resolve static method 8974: Lorg/apache/commons/codec/binary/Base64;.decodeBase64 (Ljava/lang/String;)[B
12-03 14:03:31.601  23420-23420/com.example.cristiano.automacao W/dalvikvm﹕ VFY: unable to resolve static method 8984: Lorg/apache/commons/codec/binary/Base64;.encodeBase64String ([B)Ljava/lang/String;
12-03 14:03:31.611  23420-23420/com.example.cristiano.automacao W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41c7b438)

有关这方面的任何线索?

更新

我将代码更改为:

public static String key = "1234";
public static byte[] key_Array = decodeBase64(key);

但现在我还有其他错误

java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64

3 个答案:

答案 0 :(得分:2)

试试这个:

// decode data from base 64
    private static byte[] decodeBase64(String dataToDecode)
        {
            byte[] dataDecoded = Base64.decode(dataToDecode, Base64.DEFAULT);
            return dataDecoded;
        }

//enconde data in base 64
        private static byte[] encodeBase64(byte[] dataToEncode)
        {
            byte[] dataEncoded = Base64.encode(dataToEncode, Base64.DEFAULT);
            return dataEncoded;
        }

答案 1 :(得分:0)

使用 org.apache.commons.codec.binary.Base64 库时,只需创建一个Base64对象并用它在Android中进行编码或解码

编码

  

Base64 ed = new Base64();

     

String encoded = new String(ed.encode(“Hello”.getBytes()));

将“Hello”替换为要以字符串格式编码的文本。

解码

  

Base64 ed = new Base64();

     

String decoding = new String(ed.decode(encoded.getBytes()));

这里编码的是要解码的String变量

答案 2 :(得分:0)

您要输入一个字符串作为输入 您应该将key.getBytes()赋予解码方法