实用的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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
PHP开发Apache服务器配置
Jul 15 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 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
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
python写入文件自动换行问题的方法
2019/07/05 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
python如何写个俄罗斯方块
2020/11/06 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
春季运动会加油词
2015/07/18 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS