php 加密解密算法 用于数据传输
/**
* 加密方法
* @param string $data 要加密的字符串
* @param string $key 加密密钥
* @param int $expire 过期时间 (单位:秒)
* @return string
*/
function _encrypt($data, $key, $expire = 0) {
$key = md5($key);
$data = base64_encode($data);
$x = 0;
$len = strlen($data);
$l = strlen($key);
$char = '';
for ($i = 0; $i < $len; $i++) {
if ($x == $l) $x=0;
$char .= substr($key, $x, 1);
$x++;
}
$str = sprintf('%010d', $expire ? $expire + time() : 0);
for ($i = 0; $i < $len; $i++) {
$str .= chr(ord(substr($data,$i,1)) + (ord(substr($char,$i,1)))%256);
}
$str = base64_encode($str);
$str = str_replace(array('=','+','/'),array('O0O0O','o000o','oo00o'),$str);
return $str;
} /** * 解密方法
* @param string $data 要解密的字符串 (必须是think_encrypt方法加密的字符串)
* @param string $key 加密密钥
* @return string
*/
function _decrypt($data, $key){
$data = str_replace(array('O0O0O','o000o','oo00o'), array('=','+','/'),$data);
$key = md5($key);
$x = 0;
$data = base64_decode($data);
$expire = substr($data, 0, 10);
$data = substr($data, 10);
if($expire > 0 && $expire < time()) {
return null;
}
$len = strlen($data);
$l = strlen($key);
$char = $str = '';
for ($i = 0; $i < $len; $i++) {
if ($x == $l) $x = 0;
$char .= substr($key, $x, 1);
$x++;
}
for ($i = 0; $i < $len; $i++) {
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}
else{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return base64_decode($str);
}
如何使用呢?很简单,只需要用下面的操作步骤进行操作即可。 // 数据加密
$data = '这是我要传递的数据';
$key = '这是我的密钥';
$expire = 3600*2;
$post = _encrypt($data,$key,$expire);
将$post传送到远方,并且用另外一个渠道把$key告知远方接受用户,再执行下面的代码解密。 // 数据解密
$post = '我收到的加密后数据';
$key = '我悄悄获得的密钥';
$data = _decrypt($post,$key);
$data就是对方想要传送的原始数据了。注意,由于我们规定了expire为两个小时,所以解密过程要在两个小时内完成哦~
php 加密解密算法 用于数据传输的更多相关文章
- 一组PHP可逆加密解密算法
对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...
- 数据的加密传输——单片机上实现TEA加密解密算法
各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实 ...
- 一个经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API ...
- 一个经典的PHP加密解密算法authcode
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API ...
- 介绍三种PHP加密解密算法
PHP加密解密算法 这里主要介绍三种常用的加密解密算法:方法一: /** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCOD ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- RC4加密解密算法
RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- md5加密以及可逆的加密解密算法
md5加密 package gov.mof.fasp2.gcfr.adjustoffset.adjust; import java.security.MessageDigest; public cla ...
随机推荐
- C++中的常量函数
(1)常量成员函数不修改对象. (2)常量成员函数在定义和声明中都需要加上 const; (3)非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外. (4)常量(cosnt对象)对象不能调 ...
- OO第一次博客作业--第一单元总结
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出 ...
- oracle_创建表空间_临时表空间_修改表空间_以及自增长
管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...
- 一键启动frida server的cmd脚本
和以前写过的在pc直接操作的手机端的sqlite的脚本类似,需要用到重定向的命令 frida-server_helper.bat su /data/local/tmp/frida-server fri ...
- MySQL 误删数据、误更新数据(update,delete忘加where条件)
MySQL 误操作后数据恢复(update,delete忘加where条件) 关键词:mysql误删数据,mysql误更新数据 转自:https://www.cnblogs.com/gomysql/p ...
- 跨主机网络overlay和macvlan模型
overlay网络模型 无论是openstack还是docker都是先创建一个网络然后再创建虚机或者容器 并把创建的虚机或者容器运行在此网络中 Docker 提供了 overlay driver,使 ...
- css实现礼券效果
<template> <div class="demo"> <div class="stamp stamp01"> < ...
- [svc]简单理解什么是rpc调用?跟restapi有何区别?
什么是rpc调用 restapi调用方式是对数据的crud. 常见的我们写flash写个api,或者借助django drf写个标准的resetapi,一个url可以借助httpget post pu ...
- np.mgrid 用法
import numpy as np dtype=np.float32 num_anchors = 6 y, x = np.mgrid[0:4, 0:4] print(y) print(x) y = ...
- xamarin.forms 动态条件更换数据模板
解决方案1: https://oren.codes/2014/12/31/datatemplateselector-for-xamarin-forms/ 解决方案2: https://docs.m ...