实用的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
discuz7 phpMysql操作类
Jun 21 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
PHP中的替代语法介绍
Jan 09 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
php身份证号码检查类实例
Jun 18 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
PHP项目多语言配置平台实现过程解析
May 18 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
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
php的hash算法介绍
2014/02/13 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
Python 文件读写操作实例详解
2014/03/12 Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python使用Tesseract库识别验证
2018/03/21 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python输入错误后删除的方法
2019/10/12 Python
python 下划线的不同用法
2020/10/24 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
工程安全员岗位职责
2014/03/09 职场文书
六五普法规划实施方案
2014/03/21 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
2015年资料员工作总结
2015/04/25 职场文书
关于开学的感想
2015/08/10 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python