实用的PHP带公钥加密类分享(每次加密结果都不一样哦)


Posted in PHP onAugust 20, 2014

WEB交互安全一直是个各大网站的首要解决方案,本文介绍的PHP加密类非常实用哦,带有公钥,这是最大的亮点,没有公钥是不能解密的,加密度非常高。

类代码:

<?php
/**
 * PHP加密类
 * 琼台博客
 */
class Jiami{
  // 公钥
  protected $key = 'lee'; 
  private function keyED($txt,$encrypt_key){
    $encrypt_key = md5($encrypt_key);
    $ctr=0;
    $tmp = '';
    for ($i=0;$i<strlen($txt);$i++){
      if ($ctr==strlen($encrypt_key)){
        $ctr=0;
      }
      $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
      $ctr++;
    }
    return $tmp;
  }
 
  public function encrypt($txt,$key=''){
    if(empty($key)){
      $key=$this->key;
    }
    srand((double)microtime()*1000000);
    $encrypt_key = md5(rand(0,32000));
    $ctr=0;
    $tmp = '';
    for ($i=0;$i<strlen($txt);$i++) {
      if ($ctr==strlen($encrypt_key)){
        $ctr=0;
      }
      $tmp.= substr($encrypt_key,$ctr,1).(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
      $ctr++;
    }
    return $this->keyED($tmp,$key);
  }
 
  public function decrypt($txt,$key=''){
    if(empty($key)){
      $key=$this->key;
    }
 
    $txt = $this->keyED($txt,$key);
    $tmp = '';
    for ($i=0;$i<strlen($txt);$i++){
      $md5 = substr($txt,$i,1);
      $i++;
      $tmp.= (substr($txt,$i,1) ^ $md5);
    }
    return $tmp;
  }
 
  public function setKey($key){
    if(empty($key)){
      return null;
    }
    $this->key=$key;
  }
 
  public function getPK(){
    return $this->key;
  }
 
}

使用方法:

<?php
// 先包含加密类
require_once('jiami.class.php');
 
// 要加密的字符串
$string = 'https://3water.com';
 
// 实例化加密类
$jiami= new Jiami();
 
// 设置公钥
$jiami->setKey('qttc');
 
// 加密字符串
$enc = $jiami->encrypt($string,$jiami->getPK());
 
// 解密字符串
$dec = $jiami->decrypt($enc,$jiami->getPK());
 
echo '<meta charset="utf-8" />';
echo '加密前 : '.$string .'<br/>';
echo '加密后 : '.$enc .'<br/>';
echo '解密后 : '.$dec;
?>

页面执行结果

结果1:

实用的PHP带公钥加密类分享(每次加密结果都不一样哦)

结果2:

实用的PHP带公钥加密类分享(每次加密结果都不一样哦)

由以上结果可以看到,每次加密产生的加密字符串都不一样,这是随机的。
解密的时候,需要使用加密时的公钥,否则无法解密。如你这边加密公钥使用‘qttc',解密的时候,也需要使用这个'qttc'作为公钥去解密,否则无法解密。

PHP 相关文章推荐
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
php+mysql实现无限级分类
Nov 11 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
PHP中的函数声明与使用详解
May 27 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 #PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 #PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 #PHP
实例讲解PHP面向对象之多态
Aug 20 #PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 #PHP
Linux下PHP连接Oracle数据库
Aug 20 #PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 #PHP
You might like
input file获得文件根目录简单实现
2013/04/26 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
电子信息毕业生自荐信
2013/11/16 职场文书
教师专业自荐书范文
2014/02/10 职场文书
会计岗位职责范本
2015/04/02 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书