实用的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下把数组保存为文件格式的实例应用
Feb 08 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php学习笔记之面向对象编程
Dec 29 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
谈谈 PHP7新增功能
Dec 16 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
PHP设计模式(观察者模式)
Jul 07 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
中文专业学生自我评价范文
2014/02/06 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
学术会议领导致辞
2015/07/29 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
一文弄懂MySQL索引创建原则
2022/02/28 MySQL
详解Vue3使用axios的配置教程
2022/04/29 Vue.js