php对称算法_php里简单的对称加密算法
这里讲解一下php里的对称加密算法,很简单,使用base64的方法,不过也挺实用的。复杂的也有,比如AES,DES等
前几天突发奇想要往数据库里保存一些机密的东西,然后就想着怎么让别人即使进入到了数据库也看不懂存储的是什么,那么只有加密了;可是我们自己还要看呢,那只能找一些对称加密的算法了,我们想看的时候再解密回来。
在网上找到了一个不错的PHP方面的对称加密算法;在PHP的语法环境里,有urlencode与urldecode,base64_encode和base64_decode自带的对称算法,不过这些自带的算法不能称之为加密算法,只能说是编码方式而已。可是我们可以利用这些来进行一些加工,来实现简单的加密和解密算法。
这次的加密和解密算法是使用base64的方式改编的。通常我们使用base64_encode($str)产生的字符串,不经过任何的加工的话,base64_decode()就能转回我们之前的字符串;可是如果我们在base64_encode()之后的字符串里插入几个字符呢,那他就转不回来了,即使转过来也不是我们自己的字符串。<?php
$content = "大家好,我是中国人,你是谁";
/**
* 简单对称加密算法之加密
* @param String $string 需要加密的字串
* @param String $skey 加密EKY
* @return String
*/
function encode($string = '', $skey = 'wenzi') {
$strArr = str_split(base64_encode($string));
$strCount = count($strArr);
foreach (str_split($skey) as $key => $value)
$key < $strCount && $strArr[$key].=$value;
return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}
/**
* 简单对称加密算法之解密
* @param String $string 需要解密的字串
* @param String $skey 解密KEY
* @return String
*/
function decode($string = '', $skey = 'wenzi') {
$strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
$strCount = count($strArr);
foreach (str_split($skey) as $key => $value)
$key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
return base64_decode(join('', $strArr));
}
echo '
';
echo "string : " . $content . "
";
echo "encode : " . ($enstring = encode($content)) . '
';
echo "decode : " . decode($enstring);
exit();
上面的算法里我们可以看到:我们把base64_encode()产生的字符中插入我们提前设定的密钥,然后再把里面的特殊字符进行替换,即使别人看到这样的字符串也不知道是什么。当然,这里我们再稍微的改进下,比如把密钥倒着插入到字符串里,密钥base64后再进行插入等等,插入密钥后再base64一次。
当然解密就是加密的反方向了,思考了一会儿才知道解密的原理:之前我们在字符串里插入了一些字符,现在解密时我们就要把他摘出来,首先把加密后的字符串按每个数组里2个元素进行分组,然后判断第二个字符是不是密钥里的,如果是,那么第一个字符就是原来base64里的字符。
当然在php里除了base64实现加密和解密外,还有AES和DES等算法,以后有时间了会更加详细的讲解这两种算法
php对称算法_php里简单的对称加密算法相关推荐
- python自带的对称算法_一种基于对称算法和专用加载模块的Python程序模块加密方法...
一种基于对称算法和专用加载模块的Python程序模块加密方法 [专利说明]一种基于对称算法和专用加载模块的Python程序模块加密方法 技术领域 [0001]本发明涉及一种网络安全技术,具体涉及一种P ...
- php对称字符串,PHP实现简单的对称加密和解密方法 - str_split
...获取指定值自定义函数代码 Oracle CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split CREATE O ...
- 公钥和私钥的完全解释(包括对称算法和非对称算法、RSA解释)
密钥分为两种:对称密钥与非对称密钥 对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据.它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难. 非对称密钥加 ...
- Linux crypto相关知识的汇总 Linux加密框架crypto对称算法和哈希算法加密模式
参考链接 Linux加密框架中的算法和算法模式(二)_家有一希的博客-CSDN博客 对称算法 分组算法模式 ECB模式 ECB模式下,明文数据被分为大小合适的分组,然后对每个分组独立进行加密或解密 如 ...
- 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://blog.csdn.net/chay_chan/article/details/58605605 数据 ...
- 数据传输加密非对称加密算法以及对称算法-RSA+AES
转载:http://blog.csdn.net/chay_chan/article/details/58605605 源码:https://github.com/Javen205/IJPay 数据传输 ...
- 常用的安全算法-数字摘要、对称加密、非对称加密详解
本文仅介绍摘要算法.对称加密算法.非对称加密算法的使用场景和使用方法. 1.数字摘要 说明:数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数.数字摘要 ...
- 对称加密算法(AES加密)以及对称算法与非对称算法的对比
概述 对称加密算法就是传统的用一个密码进行加密和解密.例如,我们常用的WinZIP 和WinRAR对压缩包的加密和解密,就是使用对称加密算法: 从程序的角度着,所谓加密,就是这样一个函 ...
- strongswan对称算法plugin
文章目录 面向对象-父类 面向对象-子类 插件PLUGIN libstrongswan库初始化算法和加载插件 算法使用 面向对象-父类 strongswan/src/libstrongswan/cry ...
最新文章
- 51CTO交流摘录(1):SOC的定义、适用性和组成
- 【leetcode77】Single Number
- sql读取 获取子节点 父节点
- Java:cmd命令行中 错误: 找不到或无法加载主类(从原理出发讲解!)
- 电脑自带的服务器修复,还原或修复运行 Windows Server Essentials 的服务器
- python zen_The Zen of Python(Python 之禅) - by Tim Peters
- w10电脑c盘满了怎么清理_快速清理:Win10系统C盘满了怎么办?
- 超详细图文介绍,华为桌面云解决方案
- 简明Python教程链接
- Bypass 360主机卫士SQL注入防御(多姿势)
- 学习Matlab的第一个程序——用二分法求根
- 破解安居家数字加密成功爬取
- 生成对抗式网络 (GAN) 及其应用
- P2-前端基础-网页中的实体(转义字符)
- Unknown column 'JOIN.id' in 'order clause'和 Unknown column 'XXXX.id' in 'order clause'的解决办法
- C# 获取 checkbox选中的值
- 关于“给PHP源代码加密“的代码分析
- AutoRunner怎么做脚本参数化实现用例的自动化批量执行
- 计算机专业的三行情书,这是我们专业的三行情书,请查收
- 海投简历无回应?是不是你写简历的方式错了?
热门文章
- SourceInsight 4.0 之一 设置项目的相对路径(可任意移动位置)
- Linux C :线程操作和线程同步的多线程并发编程
- Linux opencv安装与编译
- eclipse / 绑定 OpenJDK 1.8 Java 源码的方法
- 邮件服务器收件人数量限制,邮件服务器DBMail
- mysql timestamp 插入null报错_读MySQL 5.7文档11.2 Date and Time Data Types总结
- JAVA个go哪个写web方便_Go语言实现的一个简单Web服务器
- c++ 数组置0_0基础学习C语言第七章:数组(1)
- 高清HDMI接口保护用TVS二极管阵列选型
- 项目中用到的语音识别方案 硬件/软件相关介绍