des加密 php7.1,php实现des加密
开发中碰到的需求,网上介绍的很乱,难得找到一个,但是直接使用会报错,下面是经过自己加工后的Des加密算法类,可以加密,解密,同时支持偏移量参数。<?php
class Des {
private $key;
private $iv; //偏移量
public function __construct($key, $iv = 0) {
$this->key = $key;
$this->iv = $iv == 0 ? $key : $iv;
}
//加密
public function encrypt($str) {
$size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$str = $this->pkcs5Pad($str, $size);
@$data = mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv);
//$data=strtoupper(bin2hex($data)); //返回大写十六进制字符串
return base64_encode($data);
}
//解密
public function decrypt($str) {
$str = base64_decode($str);
$str = mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_DECRYPT, $this->iv);
$str = $this->pkcs5Unpad($str);
return $str;
}
public function hex2bin($hexData) {
$binData = "";
for ($i = 0; $i < strlen($hexData); $i += 2) {
$binData .= chr(hexdec(substr($hexData, $i, 2)));
}
return $binData;
}
public function pkcs5Pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
public function pkcs5Unpad($text) {
$pad = ord($text {strlen($text) - 1});
if ($pad > strlen($text))
return false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)
return false;
return substr($text, 0, - 1 * $pad);
}
}使用示例
$key = '12345678';
$iv = 0;//偏移量
$des = new Des($key,$iv);
//加密
$str = 'abcd';//待加密串
$result1 = $des->encrypt($str);
var_dump($result1 );
//解密
$result2 = $des->decrypt($result1 );
var_dump($result2);示例加密的结果为UUNQKpO/V5PRlS6zxbN2MQ==,有一点需要说明一下,加密使用的key必须要求是8位的字符串,否则是加密不了的。
des加密 php7.1,php实现des加密相关推荐
- 常见加密工具类Base64、DES、AES、RSA、MD5汇总
文章目录 引言 1.Base64加密 2.DES加密 3.AES加密 4.RSA加密 5.MD5加密 引言 项目中经常会用到Base64.DES.AES.RSA.MD5几种加解密方式,每次都要去网上搜 ...
- C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...
- Java加密与解密的艺术~DES实现
密钥长度与安全性成正比,但Java仅支持56位密钥长度,作为补充,Bouncy Castle 提供64位密钥长度支持.在此基础上配合不同填充方式(如PKCS5Padding,PKCS7Padding) ...
- [转]DES加密 java与.net可以相互加密解密两种方法
[转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...
- Delphi调用C#的加密解密(Base64/AES/DES/MD5可扩充)
1. 背景: 近期,由于工作上与第三方公司传输数据的时候需要采取数据加密,但是我们采用的时较低版本的Delphi 6:由于加密算法等差异,导致在传输的加密数据第三方一致解析不了(具体问题表现为base ...
- java des ecb_【转】 java DES ECB模式对称加密解密
最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我 ...
- des加密解密 代码 java_java 实现DES 加密解密的示例
package com.cn.peitest; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.cryp ...
- java socket 加密,Java socket通信实现DES加密与解密
DES是对称加密算法的其中一个,用一个密钥进行加密解密数据,安全性能比较低,效率较高,一些不太重要的数据可以使用DES加密算法进行加密解密传输,其他的3DES与AES用法类似. 流程图 首先认真看一下 ...
- (三)Kotlin加密/解密之AES和DES
Kotlin加密/解密系列 (一)Kotlin加密/解密之ASCII码 (二)Kotlin加密/解密之凯撒加密算法 文章目录 Kotlin加密/解密系列 前言 一.加密算法 二.Base64编码 1. ...
- C#.Net中的加密解密(AES、DES、RSA、MD5)、数字证书、HTTPS
一.信息安全的基本概念,以及为什么要使用加密? 1.信息安全的定义 保密性(Confidentiality) 只有你自己和你允许的人能看到相关的信息. 完整性(Integrity) 信息收发过程中 ...
最新文章
- JavaScript强化教程——JavaScript 运算符
- [YTU]_2018 ( 约瑟夫问题)
- 经典!MATLAB线性等分linspace()函数,精确等分点数
- Flowable最新版(6.4) 新特性
- 全面预测我国量子通信市场规模及发展趋势
- 【Python基础入门系列】第06天:Python 模块和包
- c语言中for优化,c – 在For循环中发生了什么GCC优化?
- CMU Deep Learning 2018 by Bhiksha Raj 学习记录(8)
- 停航63天!湖北复航了,机票预订火爆程度堪比春运
- WPF XMAL获取元素的父元素,子元素
- Atitit gis之道 attilax著
- 学校固定资产管理系统由谁来做,云呐RFID固定资产管理系统
- 任天堂残酷马里奥游戏
- 华为服务器自检信息怎么开,服务器开机自检内存
- C语言:梯形面积的求解公式为 S = (a + b) * h / 2。从键盘读入一个梯形的上底a、下底b和高h,请计算表梯形的面积。(结果保留1位小数)
- 论运营型CRM和分析型CRM
- 中职计算机c语言课程,中职计算机C语言教学探讨
- pages文件夹 AddCartSuccess Center Detail Home Login Pay PaySuccess
- Java SHA-256 算法实例
- 【技术】5G技术的应用场景及发展趋势
热门文章
- 使用APICloud AVM多端框架开发课程表功能
- 计算机主板的接口结构名称10,[pc玩家]主板接口大盘点,细数历年主流的主板接口:内部接口...
- 快乐数Python解法
- html英雄联盟网页,Html+Css+JQuery实现简易英雄联盟官网
- Windos下的UPD服务器端的C++实现
- 浅谈腾讯云IM接入方式(java后端)
- 树莓派是什么?能干什么?
- python:IndentationError:expected an indented block
- Linux虚拟机配置防火墙和软件安装限制
- tomcat设置一级域名、二级域名访问指定项目