利用JS的CryptoJS 3.x和php的openssl_encrypt,openssl_decrypt實現AES對稱加密解密,由于需要兩種語言對同一字符串的操作,而CryptoJS 的默認加密方式為“aes-256-cbc”,PHP端也使用aes-256-cbc方式解密。
JS端的AES加密解密
在CryptoJS 的官網
https://cryptojs.gitbook.io/docs/,有示例代碼,我稍加改造,主要功能是利用默認的加密方式,將任意內容(數組,對象,字符串等)轉成加密字符串。后面兩個方法可以忽略。
aes-format.js
加密后生成一個JSON字符串,第一個是密文,第二個是偏移量,第三個是加鹽字符串。使用示例如下:
js-example.js
PHP服務端加密解密
原數據可以是JS端的加密字符串,也可以解密PHP加密的數據。為此封裝了一個AES類,實現加密解密兩個方法。與上面的JS代碼一一對應。
CryptoJsAes.php
加密解密方式與JS端一致,同樣會得到JSON字符串。使用方法如下:
test.php