实用的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 替换模板变量实现步骤
Aug 24 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
PHP实时统计中文字数和区别
Feb 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP 字符串操作入门教程
2006/12/06 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
PHP中使用BigMap实例
2015/03/30 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
JS实现轮播图效果
2020/01/11 Javascript
Django框架中的对象列表视图使用示例
2015/07/21 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
python3下载抖音视频的完整代码
2019/06/05 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
Python中and和or如何使用
2020/05/28 Python
django rest framework 自定义返回方式
2020/07/12 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
领导视察欢迎词
2014/01/15 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
法人身份证明书
2015/06/18 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
Python os和os.path模块详情
2022/04/02 Python
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python