实用的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 相关文章推荐
关于mysql 字段的那个点为是定界符
Jan 15 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
PHP编程函数安全篇
Jan 08 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
php实现源代码加密的方法
Jul 11 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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 ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
List Installed Software Features
2007/06/11 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python 多线程的实例详解
2017/09/07 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
给我一面国旗 python帮你实现
2019/09/30 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
如何使用PHP session
2015/04/21 面试题
国家助学金获奖感言
2014/01/31 职场文书
买房协议书
2014/04/11 职场文书
低碳环保倡议书
2014/04/14 职场文书
电工技术比武方案
2014/05/11 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS