PHP加密解密数字
<?php
/**
* 加密解密类,PHP加密解密数字,适用于URL加密
* 该算法仅支持加密数字。比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密。
* @version alpha
* @加密原则 标记长度 + 补位 + 数字替换
* @加密步骤:
* 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串
* 1.计算数字长度n,取乱码的第n位作为标记长度。
* 2.计算补位的长度,加密串的长度N -1 - n 为补位的长度。根据指定的算法得到补位字符串。
* 3.根据数字替换字符串替换数字,得到数字加密字符串。
* 标记长度字符 + 补位字符串 + 数字加密字符串 = 加密串
* Usage:
* $obj = new XDeode(9);
* $e_txt = $obj->encode(123);
* echo $e_txt.'<br/>';
* echo $key->decode($e_txt);
*/
class XDeode
{
private $strbase = "Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI";
private $key,$length,$codelen,$codenums,$codeext;
function __construct($length = 9,$key = 2543.5415412812){
$this->key = $key;
$this->length = $length;
$this->codelen = substr($this->strbase,0,$this->length);
$this->codenums = substr($this->strbase,$this->length,10);
$this->codeext = substr($this->strbase,$this->length + 10);
}
function encode($nums){
$rtn = "";
$numslen = strlen($nums);
//密文第一位标记数字的长度
$begin = substr($this->codelen,$numslen - 1,1);
//密文的扩展位
$extlen = $this->length - $numslen - 1;
$temp = str_replace('.', '', $nums / $this->key);
$temp = substr($temp,-$extlen);
$arrextTemp = str_split($this->codeext);
$arrext = str_split($temp);
foreach ($arrext as $v) {
$rtn .= $arrextTemp[$v];
}
$arrnumsTemp = str_split($this->codenums);
$arrnums = str_split($nums);
foreach ($arrnums as $v) {
$rtn .= $arrnumsTemp[$v];
}
return $begin.$rtn;
}
function decode($code){
$begin = substr($code,0,1);
$rtn = '';
$len = strpos($this->codelen,$begin);
if($len!== false){
$len++;
$arrnums = str_split(substr($code,-$len));
foreach ($arrnums as $v) {
$rtn .= strpos($this->codenums,$v);
}
}
return $rtn;
}
}
$obj = new XDeode(10);
echo $obj->encode(1)."<br/>";
echo $obj->encode(2)."<br/>";
echo $obj->encode(3)."<br/>";
echo $obj->encode(4)."<br/>";
echo $obj->encode(5)."<br/>";
echo $obj->encode(6)."<br/>";
echo $obj->encode(7)."<br/>";
echo $obj->encode(8)."<br/>";
echo $obj->encode(9)."<br/>";
echo $obj->encode(10)."<br/>";
echo $obj->encode(45762454)."<br/>";
echo $obj->encode(1023213123)."<br/>";
echo $obj->encode(134320)."<br/>";
echo '<hr/>';
echo $obj->decode('FzxxmyQzxV')."<br/>";
echo $obj->decode('FSSyJzxSSj')."<br/>";
echo $obj->decode('FmNyixHxNq')."<br/>";
echo $obj->decode('FQJJzHSSJg')."<br/>";
echo $obj->decode('FzyQiNziye')."<br/>";
echo $obj->decode('FizmQyNyzW')."<br/>";
echo $obj->decode('FNSNSxxJyU')."<br/>";
echo $obj->decode('FQNHyNJJHP')."<br/>";
echo $obj->decode('FyiQiimiiX')."<br/>";
echo $obj->decode('lxxmyQzxVk')."<br/>";
echo $obj->decode('CSgeUWjgeg')."<br/>";
echo $obj->decode('aQSSmNHxxzzJJNVkjqjVqVjq')."<br/>";
echo $obj->decode('7ziiVqgqjk')."<br/>";
//FzxxmyQzxV
//FSSyJzxSSj
//FmNyixHxNq
//FQJJzHSSJg
//FzyQiNziye
//FizmQyNyzW
//FNSNSxxJyU
//FQNHyNJJHP
//FyiQiimiiX
//lxxmyQzxVk
//CSgeUWjgeg
//aQSSmNHxxzzJJNVkjqjVqVjq
//7ziiVqgqjk
//1
//2
//3
//4
//5
//6
//7
//8
//9
//10
//45762454
//1023213123
//134320
PHP加密解密数字的更多相关文章
- PHP加密解密数字,适用于URL加密。
本博主最近正在建设一个9元包邮的网站,希望各位光临指导一些意见: 9元包邮 http://www.jiubaou.com/ <?php /** * 加密解密类 * 该算法仅支持加密数字.比较适用 ...
- Java加密解密与数字证书的操作
1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool ...
- PHP针对数字的加密解密类,可直接使用
<?phpnamespace app;/** * 加密解密类 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. * @author 深秋的竹子 * ...
- java纯数字加密解密实例
我们都知道,在用户加入信息时,一些比較敏感的信息,如身份证号,手机号,用户的登录password等信息,是不能直接明文存进数据库的.今天我们就以一个详细的样例来说明一下纯数字的java加密解密技术. ...
- 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
一. 使用证书结合对称加密算法加.解密长数据 上一章节讨论了如何使用RSA证书加密数据,文中提到:“Dotnet的RSA实现有个特点,它必须要在明文中添加一些随机数,所以明文不能把128字节占满,实 ...
- 使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据
一. 使用RSA证书加.解密敏感数据 X.509证书标准支持三种不对称加密算法:RSA, DSA, Diffie-Hellman algorithms.最常用的是RSA算法.所以本文就以前面章节使用 ...
- openssl evp RSA 加密解密
openssl evp RSA 加密解密 可以直接使用RSA.h 提供的接口 如下测试使用EVP提供的RSA接口 1. EVP提供的RSA 加密解密 主要接口: int EVP_PKEY_encryp ...
- .NET/android/java/iOS AES通用加密解密(修正安卓)
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- java加密解密的学习
注:此文章只是对如何学习java加密解密技术做一个讲解.并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长.个人觉着学习一个学习方法比学习一个知识点更有价值的多. 首先,对于加密解密知识体系没有 ...
随机推荐
- W10上面DOSBOX安装
第一步:下载好MASM.exe.debug.exe.link.exe.将其放在根目录下面.我们以后自己编写的汇编代码也是在此目录下.如图: 第二步:我这里的文件夹名称是Assembly那么这个也就是待 ...
- JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(三),多线程断点下载
一 前言 本篇博客是<JWebFileTrans(JDownload):一款可以从网络上下载文件的小程序>系列博客的第三篇,本篇博客的内容主要是在前两篇的基础上增加多线程的功能.简言之,本 ...
- 简易数据加密传输电路(VHDL)(原创)
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY KEKE IS --定义实体wsj ...
- java集合(1)- 类底层数据结构分析
Java 集合类图 参考:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html
- JavaScript基础(.....持续待更)
javascript热身 一.你知道,为什么JavaScript非常值得我们学习吗? 1. 所有主流浏览器都支持JavaScript. 2. 目前,全世界大部分网页都使用JavaScript. 3. ...
- nodejs服务实现反向代理,解决本地开发接口请求跨域问题
前后端分离项目需要解决第一个问题就是,前端本地开发时如何解决通过ajax请求产生的跨域的问题.一般的做法是通过本地配置nginx反向代理进行处理的,除此之外,还可以通过nodejs来进行代理接口.当然 ...
- iOS安全攻防之越狱设备检测
iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到 iOS 的最高权限,甚至可能可以进一步解开运营商对手 ...
- [oracle]Oracle数据库安全管理
目录 + 1.数据库安全控制策略概述 + 2.用户管理 + 3.资源限制与口令管理 + 4.权限管理 + 5.角色管理 + 6.审计 1.数据库安全控制策略概述 安全性是评估一个数据库的重 ...
- 在host-only模式下ssh不插网线
visualbox在host-only模式下,宿主机可以在没有网络的条件下ssh虚拟机. 设置方法: 1.在visualbox中,选择全局设置(preference)--网络(network)-- h ...
- 小K的H5之旅-CSS基础(一)
一.什么是CSS W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说是CSS.CSS全称Cascadi ...