当前位置:Gxlcms > PHP教程 > php对称加密算法的例子_PHP教程

php对称加密算法的例子_PHP教程

时间:2021-07-01 10:21:17 帮助过:1人阅读

分享下php对称加密算法的实现代码。

KEY 是之前定义的常量

  1. Mcrypt::<span encrypt();="" mcrypt<="" span="">::<span decrypt();="" <="" span=""><span defined<="" span="">('ROOT') or <span exit<="" span="">('Access Denied'<span );="" <="" span=""><span class<="" span=""><span mcrypt{="" <="" span=""><span public<="" span=""> <span static<="" span=""> <span function<="" span=""> encrypt(<span $code<="" span=""><span ){="" <="" span=""><span return<="" span=""> <span base64_encode<="" span="">(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, <span md5<="" span="">(<span key<="" span="">), <span $code<="" span="">, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB),<span mcrypt_rand)));="" }="" <="" span=""><span public<="" span=""> <span static<="" span=""> <span function<="" span=""> decrypt(<span $code<="" span=""><span ){="" <="" span=""><span return<="" span=""> mcrypt_decrypt(MCRYPT_RIJNDAEL_256, <span md5<="" span="">(<span key<="" span="">), <span base64_decode<="" span="">(<span $code<="" span="">), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB),<span mcrypt_rand));="" }="" }<="" span=""></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

xcrypt.php

  1. <span *<="" span=""><span *="" 常用对称加密算法类="" 支持密钥:64="" 128="" 256="" bit(字节长度8="" 16="" 32)="" 支持算法:des="" aes(根据密钥长度自动匹配使用:des:64bit="" aes:128="" 256bit)="" 支持模式:cbc="" ecb="" ofb="" cfb="" 密文编码:base64字符串="" 十六进制字符串="" 二进制字符串流="" 填充方式:="" pkcs5padding(des)="" @author:="" linvo="" @version:="" 1.0.0="" @date:="" 2013="" 1="" 10="" <="" span=""><span *="" <="" span="">
  2. <span class<="" span=""><span xcrypt{="" <="" span=""><span private<="" span=""> <span $mcrypt<="" span=""><span ;="" <="" span=""><span private<="" span=""> <span $key<="" span=""><span ;="" <="" span=""><span private<="" span=""> <span $mode<="" span=""><span ;="" <="" span=""><span private<="" span=""> <span $iv<="" span=""><span ;="" <="" span=""><span private<="" span=""> <span $blocksize<="" span=""><span ;="" <="" span=""><span *<="" span=""><span *="" 构造函数="" @param="" string="" 密钥="" 模式="" 向量("off":不使用="" "auto":自动="" 其他:指定值,长度同密钥)="" <="" span=""><span *="" <="" span="">
  3. <span public<="" span=""> <span function<="" span=""> __construct(<span $key<="" span="">, <span $mode<="" span=""> = 'cbc', <span $iv<="" span=""> = "off"<span ){="" <="" span=""><span switch<="" span=""> (<span strlen<="" span="">(<span $key<="" span=""><span )){="" <="" span=""><span case<="" span=""> 8:
  4. <span $this<="" span="">->mcrypt =<span mcrypt_des;="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 16:
  5. <span $this<="" span="">->mcrypt =<span mcrypt_rijndael_128;="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 32:
  6. <span $this<="" span="">->mcrypt =<span mcrypt_rijndael_256;="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span default<="" span="">:
  7. <span die<="" span="">("Key size must be 8/16/32"<span );="" }="" www<="" span="">.jbxue.<span com="" <="" span=""><span $this<="" span="">-><span key<="" span=""> = <span $key<="" span=""><span ;="" <="" span=""><span switch<="" span=""> (<span strtolower<="" span="">(<span $mode<="" span=""><span )){="" <="" span=""><span case<="" span=""> 'ofb':
  8. <span $this<="" span="">->mode =<span mcrypt_mode_ofb;="" <="" span=""><span if<="" span=""> (<span $iv<="" span=""> == 'off') <span die<="" span="">('OFB must give a IV'); <span <="" span=""><span ofb必须有向量="" <="" span="">
  9. <span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'cfb':
  10. <span $this<="" span="">->mode =<span mcrypt_mode_cfb;="" <="" span=""><span if<="" span=""> (<span $iv<="" span=""> == 'off') <span die<="" span="">('CFB must give a IV'); <span <="" span=""><span cfb必须有向量="" <="" span="">
  11. <span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'ecb':
  12. <span $this<="" span="">->mode =<span mcrypt_mode_ecb;="" <="" span=""><span $iv<="" span=""> = 'off'; <span <="" span=""><span ecb不需要向量="" <="" span="">
  13. <span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'cbc':
  14. <span default<="" span="">:
  15. <span $this<="" span="">->mode =<span mcrypt_mode_cbc;="" }="" <="" span=""><span switch<="" span=""> (<span strtolower<="" span="">(<span $iv<="" span=""><span )){="" <="" span=""><span case<="" span=""> "off":
  16. <span $this<="" span="">->iv = <span null<="" span=""><span ;="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> "auto":
  17. <span $source<="" span=""> = <span php_os<="" span="">=='WINNT' ? MCRYPT_RAND :<span mcrypt_dev_random;="" <="" span=""><span $this<="" span="">->iv = mcrypt_create_iv(mcrypt_get_block_size(<span $this<="" span="">->mcrypt, <span $this<="" span="">->mode), <span $source<="" span=""><span );="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span default<="" span="">:
  18. <span $this<="" span="">->iv = <span $iv<="" span=""><span ;="" }="" <="" span=""><span *<="" span=""><span *="" 获取向量值="" @param="" string="" 向量值编码(base64="" hex="" bin)="" @return="" 向量值="" <="" span=""><span *="" <="" span=""> www.jbxue.<span com="" <="" span=""><span public<="" span=""> <span function<="" span=""> getIV(<span $code<="" span=""> = 'base64'<span ){="" <="" span=""><span switch<="" span=""> (<span $code<="" span=""><span ){="" <="" span=""><span case<="" span=""> 'base64':
  19. <span $ret<="" span=""> = <span base64_encode<="" span="">(<span $this<="" span="">-><span iv);="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'hex':
  20. <span $ret<="" span=""> = <span bin2hex<="" span="">(<span $this<="" span="">-><span iv);="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'bin':
  21. <span default<="" span="">:
  22. <span $ret<="" span=""> = <span $this<="" span="">-><span iv;="" }="" <="" span=""><span return<="" span=""> <span $ret<="" span=""><span ;="" }="" <="" span=""><span *<="" span=""><span *="" 加密="" @param="" string="" 明文="" 密文编码(base64="" hex="" bin)="" @return="" 密文="" <="" span=""><span *="" <="" span="">
  23. <span public<="" span=""> <span function<="" span=""> encrypt(<span $str<="" span="">, <span $code<="" span=""> = 'base64'<span ){="" <="" span=""><span if<="" span=""> (<span $this<="" span="">->mcrypt == MCRYPT_DES) <span $str<="" span=""> = <span $this<="" span="">->_pkcs5Pad(<span $str<="" span=""><span );="" <="" span=""><span if<="" span=""> (<span isset<="" span="">(<span $this<="" span="">-><span iv))="" {="" <="" span=""><span $result<="" span=""> = mcrypt_encrypt(<span $this<="" span="">->mcrypt, <span $this<="" span="">-><span key<="" span="">, <span $str<="" span="">, <span $this<="" span="">->mode, <span $this<="" span="">-><span iv);="" }="" <="" span=""><span else<="" span=""><span {="" @<="" span=""><span $result<="" span=""> = mcrypt_encrypt(<span $this<="" span="">->mcrypt, <span $this<="" span="">-><span key<="" span="">, <span $str<="" span="">, <span $this<="" span="">-><span mode);="" }="" <="" span=""><span switch<="" span=""> (<span $code<="" span=""><span ){="" <="" span=""><span case<="" span=""> 'base64':
  24. <span $ret<="" span=""> = <span base64_encode<="" span="">(<span $result<="" span=""><span );="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'hex':
  25. <span $ret<="" span=""> = <span bin2hex<="" span="">(<span $result<="" span=""><span );="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'bin':
  26. <span default<="" span="">:
  27. <span $ret<="" span=""> = <span $result<="" span=""><span ;="" }="" <="" span=""><span return<="" span=""> <span $ret<="" span=""><span ;="" }="" <="" span=""><span *<="" span=""><span *="" 解密="" @param="" string="" 密文="" 密文编码(base64="" hex="" bin)="" @return="" 明文="" <="" span=""><span *="" <="" span="">
  28. <span public<="" span=""> <span function<="" span=""> decrypt(<span $str<="" span="">, <span $code<="" span=""> = "base64"<span ){="" <="" span=""><span $ret<="" span=""> = <span false<="" span=""><span ;="" <="" span=""><span switch<="" span=""> (<span $code<="" span=""><span ){="" <="" span=""><span case<="" span=""> 'base64':
  29. <span $str<="" span=""> = <span base64_decode<="" span="">(<span $str<="" span=""><span );="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'hex':
  30. <span $str<="" span=""> = <span $this<="" span="">->_hex2bin(<span $str<="" span=""><span );="" <="" span=""><span break<="" span=""><span ;="" <="" span=""><span case<="" span=""> 'bin':
  31. <span default<="" span="">:<span }="" <="" span=""><span if<="" span=""> (<span $str<="" span=""> !== <span false<="" span=""><span ){="" <="" span=""><span if<="" span=""> (<span isset<="" span="">(<span $this<="" span="">-><span iv))="" {="" <="" span=""><span $ret<="" span=""> = mcrypt_decrypt(<span $this<="" span="">->mcrypt, <span $this<="" span="">-><span key<="" span="">, <span $str<="" span="">, <span $this<="" span="">->mode, <span $this<="" span="">-><span iv);="" }="" <="" span=""><span else<="" span=""><span {="" @<="" span=""><span $ret<="" span=""> = mcrypt_decrypt(<span $this<="" span="">->mcrypt, <span $this<="" span="">-><span key<="" span="">, <span $str<="" span="">, <span $this<="" span="">-><span mode);="" }="" <="" span=""><span if<="" span=""> (<span $this<="" span="">->mcrypt == MCRYPT_DES) <span $ret<="" span=""> = <span $this<="" span="">->_pkcs5Unpad(<span $ret<="" span=""><span );="" <="" span=""><span $ret<="" span=""> = <span trim<="" span="">(<span $ret<="" span=""><span );="" }="" <="" span=""><span return<="" span=""> <span $ret<="" span=""><span ;="" }="" <="" span=""><span private<="" span=""> <span function<="" span=""> _pkcs5Pad(<span $text<="" span=""><span ){="" <="" span=""><span $this<="" span="">->blocksize = mcrypt_get_block_size(<span $this<="" span="">->mcrypt, <span $this<="" span="">-><span mode);="" <="" span=""><span $pad<="" span=""> = <span $this<="" span="">->blocksize - (<span strlen<="" span="">(<span $text<="" span="">) % <span $this<="" span="">-><span blocksize);="" <="" span=""><span return<="" span=""> <span $text<="" span=""> . <span str_repeat<="" span="">(<span chr<="" span="">(<span $pad<="" span="">), <span $pad<="" span=""><span );="" }="" <="" span=""><span private<="" span=""> <span function<="" span=""> _pkcs5Unpad(<span $text<="" span=""><span ){="" <="" span=""><span $pad<="" span=""> = <span ord<="" span="">(<span $text<="" span="">{<span strlen<="" span="">(<span $text<="" span="">) - 1<span });="" <="" span=""><span if<="" span=""> (<span $pad<="" span=""> > <span strlen<="" span="">(<span $text<="" span="">)) <span return<="" span=""> <span false<="" span=""><span ;="" <="" span=""><span if<="" span=""> (<span strspn<="" span="">(<span $text<="" span="">, <span chr<="" span="">(<span $pad<="" span="">), <span strlen<="" span="">(<span $text<="" span="">) - <span $pad<="" span="">) != <span $pad<="" span="">) <span return<="" span=""> <span false<="" span=""><span ;="" <="" span=""><span $ret<="" span=""> = <span substr<="" span="">(<span $text<="" span="">, 0, -1 * <span $pad<="" span=""><span );="" <="" span=""><span return<="" span=""> <span $ret<="" span=""><span ;="" }="" <="" span=""><span private<="" span=""> <span function<="" span=""> _hex2bin(<span $hex<="" span=""> = <span false<="" span=""><span ){="" <="" span=""><span $ret<="" span=""> = <span $hex<="" span=""> !== <span false<="" span=""> && <span preg_match<="" span="">('/^[0-9a-fA-F]+$/i', <span $hex<="" span="">) ? <span pack<="" span="">("H*", <span $hex<="" span="">) : <span false<="" span=""><span ;="" <="" span=""><span return<="" span=""> <span $ret<="" span=""><span ;="" }="" <="" span=""></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

  1. <!--?<span php
  2. </span--><span header<="" span="">('Content-Type:text/html;Charset=utf-8;'<span );="" <="" span=""><span include<="" span=""> "xcrypt.php"<span ;="" <="" span=""><span echo<="" span=""> '<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>'<span ;="" <="" span=""><span $a<="" span=""> = <span isset<="" span="">(<span $_get<="" span="">['a']) ? <span $_get<="" span="">['a'] : '测试123'<span ;="" <="" span=""><span <="" span=""><span 密钥="" <="" span=""></li><li><span $key<="" span=""> = '12345678123456781234567812345678'; <span <="" span=""><span 256="" bit="" <="" span=""></li><li><span $key<="" span=""> = '1234567812345678'; <span <="" span=""><span 128="" bit="" <="" span=""></li><li><span $key<="" span=""> = '12345678'; <span <="" span=""><span 64="" bit="" 设置模式和iv="" <="" span=""></li><li><span $m<="" span=""> = <span new<="" span=""> Xcrypt(<span $key<="" span="">, 'cbc', 'auto'<span );="" <="" span=""><span <="" span=""><span 获取向量值="" <="" span=""></li><li><span echo<="" span=""> '向量:'<span ;="" <="" span=""><span var_dump<="" span="">(<span $m<="" span="">-><span getiv());="" <="" span=""><span <="" span=""><span 加密="" <="" span=""></li><li><span $b<="" span=""> = <span $m<="" span="">->encrypt(<span $a<="" span="">, 'base64'<span );="" <="" span=""><span <="" span=""><span 解密="" <="" span=""></li><li><span $c<="" span=""> = <span $m<="" span="">->decrypt(<span $b<="" span="">, 'base64'<span );="" <="" span=""><span echo<="" span=""> '加密后:'<span ;="" <="" span=""><span var_dump<="" span="">(<span $b<="" span=""><span );="" <="" span=""><span echo<="" span=""> '解密后:'<span ;="" <="" span=""><span var_dump<="" span="">(<span $c<="" span=""><span );="" <="" span=""><span echo<="" span=""> '</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li></ol></pre>';</span></span></span></span></span>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/767256.htmlTechArticle分享下php对称加密算法的实现代码。 KEY 是之前定义的常量 Mcrypt:: :: ('ROOT') or ('Access Denied' encrypt( (mcrypt_encrypt(MCRYPT_RIJNDAEL_256, ( ), , MCRYPT_M...

人气教程排行