实用的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产生动态的影像图
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP7新增函数
Mar 09 PHP
imagettftext() 失效,不起作用
Mar 09 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
javascript实现json页面分页实例代码
2014/02/20 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
python 远程统计文件代码分享
2015/05/14 Python
python获取目录下所有文件的方法
2015/06/01 Python
Java分治归并排序算法实例详解
2017/12/12 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
python pycharm的安装及其使用
2019/10/11 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
python中安装django模块的方法
2020/03/12 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
德国综合购物网站:OTTO
2018/11/13 全球购物
品管员岗位职责
2013/11/10 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
清洁工个人总结
2015/03/04 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers