目前我要测试一个php写的接口,文档中提供: // 加密数据 public static String encrypt(String message, String key, String ivStr) throws Exception { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(ivStr.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); byte[] byteMi = cipher.doFinal(message.getBytes()); return new String(byteMi); } |
|
40分 |
你测试过自己加密,然后按照php那边的方法解密了么?
|
得到对方加密的数据,经过decode解码后,发现是二进制。
而java进行加密后是byte,必须要转为string类型,请问这块如何处理? 这两句话我没有理解清楚。 |
|
是这样子:因为我加密后,对方解密报错。
所以我把我的参数,传给对方,对方加密。 我来比较2者的区别。 java加密后是byte【】类型的,如果我不转成string串,如何传递给对方呢 要求必须encode(加密后的数值)传递给对方。 |
|
还有一点:我把对方加密后的数值打出来:是一串乱码状的数值。
我自己加密后的byte【】数组,直接打印出来,确实一串字符串。 在这地方我很混乱。 我把双方加密后的数值都进行base64转换,2者的结果是一致的。 但目前不转换的情况下,我不晓得该如何处理了? |
|
嗯,目前估计是无法解决了,我认为是php端做的程序不兼容。
|
|
请问大侠,我也是做加密 现在的问题是,Java端加密结果跟php端加密结果长度完全不一致是怎么回事
|