如何使用android中的特殊字符加密字符串?

时间:2013-04-24 04:46:20

标签: android javax.crypto

我需要加密用户名和密码并对其进行编码并通过SOAP标头发送。 我使用DES算法来加密plainText`

String key = "qwer1234qwetr123wqw";
        String x = "sadgsagd:%%^%ghsagdh";
        byte[] keyBytes = new byte[1024];
        byte[] plaintext = x.getBytes();
        byte[] tdesKeyData = key.getBytes();

    Cipher c3des = Cipher.getInstance("DESede/CBC/PKCS5Padding");
    SecretKeySpec myKey = new SecretKeySpec(tdesKeyData, "DESede");
    IvParameterSpec ivspec = new IvParameterSpec(keyBytes);

    c3des.init(Cipher.ENCRYPT_MODE, myKey, ivspec);
    byte[] cipherText = c3des.doFinal(plaintext);
    int hash = Base64.encode(cipherText).hashCode();

    return Base64.encode(cipherText);`

在运行时我遇到异常:

  

javax.crypto.BadPaddingException:给定

1 个答案:

答案 0 :(得分:0)

如果您使用64的字节缓冲区,我可能太长了将其更改为32,   或使用此length

file byte[] buffer = new byte[(int)new File("data").length()];

我的问题在这样做后得到解决..