文档章节

DES函数加密算法

高处胜寒
 高处胜寒
发布于 2017/10/24 16:02
字数 224
阅读 8
收藏 0
<?php
 /** * 用DES算法加密/解密字符串 * *
  @param string $string 待加密的字符串 
  @param string $key 密匙,和管理后台需保持一致
  @return string 返回经过加密/解密的字符串
*/
// 加密,注意,加密前需要把数组转换为json格式的字符串 
function des_encrypt($string, $key) {
    $size = mcrypt_get_block_size('des', 'ecb');
    $string = mb_convert_encoding($string, 'GBK', 'UTF-8');
    $pad = $size - (strlen($string) % $size);
    $string = $string . str_repeat(chr($pad), $pad);
    $td = mcrypt_module_open('des', '', 'ecb', '');
    $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    @mcrypt_generic_init($td, $key, $iv);
    $data = mcrypt_generic($td, $string);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $data = base64_encode($data);
    return $data;
}

// 解密,解密后返回的是json格式的字符串
function des_decrypt($string, $key) {
    $string = base64_decode($string);
    $td = mcrypt_module_open('des', '', 'ecb', '');
    $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    $ks = mcrypt_enc_get_key_size($td);
    @mcrypt_generic_init($td, $key, $iv);
    $decrypted = mdecrypt_generic($td, $string);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $pad = ord($decrypted{strlen($decrypted) - 1});
    if($pad > strlen($decrypted)) {
        return false;
    }
    if(strspn($decrypted, chr($pad), strlen($decrypted) - $pad) != $pad) {
        return false;
    }
    $result = substr($decrypted, 0, -1 * $pad);
    $result = mb_convert_encoding($result, 'UTF-8', 'GBK');
    return $result;
}
?>

© 著作权归作者所有

高处胜寒

高处胜寒

粉丝 9
博文 213
码字总数 148499
作品 0
西安
程序员
私信 提问
iGO实现之路 —— Security

本文为转载,原文:iGO实现之路 —— Security Golang 介绍 在我们写代码的过程中,可能会遇到很多的数据安全问题。比如我们在后端进行http请求的时候,url编码问题;用户登录密码数据库的保...

ChainZhang
2018/01/23
0
0
三重DES加密算法原理与实现(一)

随着信息技术的飞速发展,人们对信息系统的安全性,信息传输的保密性要求越来越高。伴随着通信和计算机技术发展起来的现代密码学,不仅在解决信息的机密性、而且在解决信息的完整性、可用性和...

凯文加内特
2015/12/08
1K
0
数据加密算法--详解DES算法原理与实现

DES算法简介 DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。 DES还是一种分组加密算法,该算法每次处理固定长度的数...

IDreamo
2018/07/30
0
0
AES,SHA1,DES,RSA,MD5区别 

AES,SHA1,DES,RSA,MD5区别 加密 版权声明:本文为博主原创文章,未经博主允许不得转载。 AES:更快,兼容设备,安全级别高; SHA1:公钥后处理回传 DES:本地数据,安全级别低 RSA:非对称加...

法斗斗
2016/05/31
59
0
Java中常用的加密方法(JDK) (转)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密和单向加密,而双向加密又分为对称...

hulubo
2012/04/08
478
3

没有更多内容

加载失败,请刷新页面

加载更多

shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
2
0
微服务架构依赖图

基于spring-cloud-alibaba + dubbo

龙影
昨天
5
0
Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部