实用的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 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
实例解析php的数据类型
Oct 24 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 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 之入门篇
2006/12/04 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
layui使用label标签的方法
2019/09/14 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python监测当前联网状态并连接的实例
2018/12/18 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
adidas美国官网:adidas US
2016/09/21 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript