当前位置: 代码迷 >> J2EE >> java des加密 DES/CBC/PKCS5Padding 与php 解密解决方法
  详细解决方案

java des加密 DES/CBC/PKCS5Padding 与php 解密解决方法

热度:456   发布时间:2016-04-17 23:14:04.0
java des加密 DES/CBC/PKCS5Padding 与php 解密
目前我要测试一个php写的接口,文档中提供:
DES加密解密工作模式、填充方式约定:
? 工作模式:CBC
? 填充方式:PKCS7
java中只有pkcs5,因此我才用DES/CBC/PKCS5Padding这个方式进行加密,采用对方提供的key和iv,要求加密后并且进行encode转码,提交。但是加密提交后后,对方解密返回:数据解码失败。
请问这最可能是由于什么原因造成?
得到对方加密的数据,经过decode解码后,发现是二进制。
而java进行加密后是byte,必须要转为string类型,请问这块如何处理?

// 加密数据
    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);
         
    }

------解决思路----------------------
你测试过自己加密,然后按照php那边的方法解密了么?
  相关解决方案