利用JS的CryptoJS 3.x和php的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也使用aes-256-cbc方式解密。
在CryptoJS 的官网
https://cryptojs.gitbook.io/docs/,有示例代码,我稍加改造,主要功能是利用默认的加密方式,将任意内容(数组,对象,字符串等)转成加密字符串。后面两个方法可以忽略。
aes-format.js
加密后生成一个JSON字符串,第一个是密文,第二个是偏移量,第三个是加盐字符串。使用示例如下:
js-example.js
原数据可以是JS端的加密字符串,也可以解密PHP加密的数据。为此封装了一个AES类,实现加密解密两个方法。与上面的JS代码一一对应。
CryptoJsAes.php
加密解密方式与JS端一致,同样会得到JSON字符串。使用方法如下:
test.php