Android异常损坏了pad块

时间:2012-10-30 20:22:24

标签: android exception encryption aes

嗨,我的Android应用程序有问题。我写了一个使用tcp和udp的客户端。数据由AES加密。但是当我尝试接收数据报时,我的应用程序返回异常。 这是我的代码:

protected Void doInBackground(Void... params) 
     {
         try
            {

             udp = new DatagramSocket(2500);

                 boolean flagaBYE = true;

                 String w = "";
                while(flagaBYE)
                {
                            byte[] receiveData= new byte[1024];

                                DatagramPacket pakiet = new DatagramPacket(receiveData, receiveData.length);
                                udp.receive(pakiet);

                    String wiadomosc = new String(pakiet.getData(),"utf-8");
                                publishProgress(wiadomosc);
                               String szyfr = main.preferences.getString("SZYFR_TCP", "");
                               if(!szyfr.equals("1"))
                               {
                                   Encryptor enc = new Encryptor(getKeyBytes(key), getCode());
                                   wiadomosc = enc.decrypt(wiadomosc);

                               }

我的例外是pad块已损坏 我生成这样的密钥:

 String key = "tojestkluczwlasnie";

然后将字符串解析为byte []

public static byte[] getKeyBytes(String key) throws UnsupportedEncodingException{
        byte[] keyBytes= new byte[16];
        byte[] parameterKeyBytes= key.getBytes("UTF-8");
        System.arraycopy(parameterKeyBytes, 0, keyBytes, 0, Math.min(parameterKeyBytes.length, keyBytes.length));
      return keyBytes;
    }

1 个答案:

答案 0 :(得分:0)

您不应将字节视为UTF-8字符串,如果密码是密钥,则不应将其视为密码。在数据格式(编码/解码)之间转换期间,您可能会丢失信息。