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加密解密技术做一个讲解.并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长.个人觉着学习一个学习方法比学习一个知识点更有价值的多. 首先,对于加密解密知识体系没有 ...
随机推荐
- JavaEE开发之记事本完整案例(SpringBoot + iOS端)
上篇博客我们聊了<JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎>,并且在之前我们也聊了<Swift3.0服务端开发(五) 记事本的开发(iO ...
- jQuery选择器的优点
jQuery选择器的优点 相信小伙伴们对选择器并不陌生,从css1到css3的选择器有很多,但是JQuery都能完美的支持,而且API操作起来也特别方便好用,在很大程度上精简了代码,节约了很多性能.那 ...
- Oracle 12C 新特性之表分区或子分区的在线迁移
Oracle 12c 中迁移表分区或子分区到不同的表空间不再需要复杂的过程.与之前版本中未分区表进行在线迁移类似,表分区或子分区可以在线或是离线迁移至一个不同的表空间.当指定了 ONLINE 语句,所 ...
- java容器类
一. 容器类: 下图摘自<Java编程思想>,很好地展示了整个容器类的结构. 由上图可知,容器类库可分为两大类,各自实现了Collection接口和Map接口,下面就常见的类进行一下分类 ...
- python 基本数据类型set
set 是一个无序且不重复的序列 set 是一个无序且不重复的序列 set 不允许重复的集合.set不允许重复的序列 1.创建 s=set() #创建空集合只能用这种方法 s={11,222,233, ...
- YYLabel 自动布局 富文本文字点击事件
YYLabel显示多行除了需要设置numberOfLines = 0以外,还需要设置preferredMaxLayoutWidth最大的宽度值才可以生效多行效果 YYLabel中的NSMutableA ...
- 使用 CKEditor 上传图片, 粘贴屏幕截图
之前写过wangEditor,那真是好用,文档也清晰,半天就搞定了,无奈没有对应license,只好选择别的. 外语一般,阅读理解都靠蒙.CKEditor官方文档看的我云里雾里,国内的博客比较少,经过 ...
- Linux_破解密码-营救模式
实验用机:CentOS 5.7 破解密码 设置开机启动界面 系统运行级别 营救模式 一.破解密码 root用户可以更改任何用户的密码,普通用户只能修改自己的密码. 步骤: 1.重新启动系统 2.开机倒 ...
- 消息:SQL Server 2017(vNext)的第三个公开的CTP(社区技术预览版)发布了
今天看到了一个新闻,跟大家分享一下,有兴趣的可以去尝试一下. SQL Server 2017 CTP3于5月23日发布了,详细版本号是6.7.55.0. 大家可以去安装试试.在下载页面,目前是SQL ...
- C# MVC权限验证
前言 之前一直没怎么接触过权限验证这块,刚好公司老平台改版,就有了这篇权限验证.此篇文章大致讲解下 精确到按钮级别的验证如何实现.以及权限验证设计的参考思路(菜鸟一枚,大神勿喷). 在开发大项目的时候 ...