php的openssl模块的aes128/cbc加密如何与java通讯?

php的openssl模块的aes128/cbc加密似乎没有办法指定填充模式,查了文档说是默认使用pkcs7的填充方式.于是捣鼓了一下java,引入了…
关注者
2
被浏览
3,116

1 个回答

自己捣鼓了一下java.. 感觉就是什么都要要用模块.. 然后比php严格很多, 本来是有个base64_encode的过程,但是java不能把字符串encode(限定了bytes)


//java
byte[] raw = sKey.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//aes-cbc-pkcs5(pkcs5与pkcs7通用)
IvParameterSpec iv = new IvParameterSpec(sIv.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(sSrc.getBytes("UTF-8"));
String encryptedString = new String(Base64.encodeBase64(encrypted));


//php
/*****加密过程*****/
        $str = "Hello World";
        //1.使用16位密钥
        $key = '12345678901234ab';
        //2.生成16位iv 算法自定,示例中直接指定