1。用des加密后,产生的byte[]
2。如果用new String(byte[]);编码统一的情况下
3。用上面的String再进行getbytes(),进行解码,出问题
-----------------------------------------------------------------------
这个转换用base64encoder / base64decoder转换,没有问题(byte[] - String 相互转换)
android可以用base64进行转换
public static String encryData(String content) {
try {
DESKeySpec desKeySpec = new DESKeySpec(SECERT_KEY.getBytes("GBK"));
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
SecretKey sk = secretKeyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, sk,new SecureRandom());
result = cipher.doFinal(content.getBytes("GBK"));
System.out.println("encry length " + result.length);
return Base64Encoder.encode(result);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
private static byte[] result;
public static String decryData(String content) {
try {
System.out.println("decry length " + content.getBytes("GBK").length);
DESKeySpec desKeySpec = new DESKeySpec(SECERT_KEY.getBytes("GBK"));
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
SecretKey sk = secretKeyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, sk,new SecureRandom());
byte[] bytes = cipher.doFinal(Base64Decoder.decodeToBytes(content));
return new String(bytes,"GBK");
} catch (Exception e) {
e.printStackTrace();
}
return "";
}