PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

这篇文章主要介绍了PHP7实现和CryptoJS的AES加密方式互通操作,结合实例形式分析了PHP AES-128-ECB加密算法相关使用技巧,需要的朋友可以参考下。

本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通,分享给大家供大家参考,具体如下:

PHP类:

  1. class AES
  2. {
  3. /**
  4. *
  5. * @param string $string 需要加密的字符串
  6. * @param string $key 密钥
  7. * @return string
  8. */
  9. public static function encrypt($string, $key)
  10. {
  11. // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变
  12. $data = openssl_encrypt($string, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
  13. return base64_encode($data);
  14. }
  15. /**
  16. * @param string $string 需要解密的字符串
  17. * @param string $key 密钥
  18. * @return string
  19. */
  20. public static function decrypt($string, $key)
  21. {
  22. return openssl_decrypt(base64_decode($string), 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
  23. }
  24. /**
  25. * 获取秘钥
  26. * @return string
  27. */
  28. public static function getSecretKey()
  29. {
  30. $str='xxx';//生成16位的字符窜
  31. return $str;
  32. }
  33. }

JS的写法:

  1. <script type="text/javascript" src="./bower_components/crypto-js/crypto-js.js"></script>
  2. <script type="text/javascript">
  3. AesKey = 'xxxxx';//加密时用的key,跟php一样
  4. message='xxxxxxx';//加密后的字符窜
  5. var ECBOptions = {
  6. mode: CryptoJS.mode.ECB,
  7. padding: CryptoJS.pad.Pkcs7
  8. };
  9. var key = CryptoJS.enc.Utf8.parse(AesKey);
  10. var bytes = CryptoJS.AES.decrypt(message, key,ECBOptions);
  11. var originalText = bytes.toString(CryptoJS.enc.Utf8);
  12. console.log(originalText)
  13. </script>