3des算法

news/2024/11/1 13:54:46/

使用3des算法,加密模式:CBC,填充:pkcs5padding

/*** 3DES加解密类*/
class Des3phpService
{//加密秘钥(base64加密)private $key ;//初始偏移向量private $iv;/*** 构造,传递二个已经进行base64_encode的KEY与IV** @param string $key* @param string $iv*/public function __construct($key, $iv){$this->iv = $iv;$this->key = $key;}//填充加密快的大小public function pkcs5_pad($text, $blocksize){$padding_char = $blocksize - (strlen($text) % $blocksize);$text .= str_repeat(chr($padding_char), $padding_char);return $text;}//解密public function decrypt($encrypted){$key = $this->key;$encrypted = base64_decode($encrypted);$size = openssl_cipher_iv_length("DES-EDE3-CBC");if ($this->iv == "") {$iv = openssl_random_pseudo_bytes($size);} else {$iv = $this->iv;}$rs = openssl_decrypt($encrypted, "DES-EDE3-CBC", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv);$rs = $this->pkcs5_unpad($rs);return $rs;}//加密public function encrypt($input){$key =$this->key;$size = openssl_cipher_iv_length("DES-EDE3-CBC");$input = $this->pkcs5_pad($input, $size);$rs = openssl_encrypt($input, "DES-EDE3-CBC", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $this->iv);$rs = base64_encode($rs);return $rs;}public function pkcs5_unpad($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 = 'abcdefgh12345678abcdefgh';
$iv = '12345678';
$des = new Des3phpService($key, $iv);
$str = "api";
echo "source: {$str},len: ", strlen($str), "\r\n";
$e_str = $des->encrypt($str);
echo "entrypt: ", $e_str, "\r\n";
$d_str = $des->decrypt($e_str);
echo "dntrypt: {$d_str},len: ", strlen($d_str), "\r\n";
# 明文='api';
# 密文='eH89ioIVp/Y='



作者:双月鸟
链接:https://www.jianshu.com/p/047cfee4990f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.ppmy.cn/news/1543595.html

相关文章

ETF申购赎回指南:详解注意事项与低费率券商推荐!

​ETF 申购&赎回 ETF申购赎回是个啥业务? 01 ETF申购、赎回是一种交易委托方式,指投资者通过申购方式(买入方向)获得ETF份额,通过赎回的方式(卖出方向)换掉/卖出ETF份额。ETF申购,通常是通过一篮子成…

基于Springboot的在线考试与学习交流平台的设计与实现

基于Springboot的在线考试与学习交流平台 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https://download.csdn.net/downlo…

WebMvcConfigurationSupport和WebMvcConfigure

WebMvcConfigurationSupport和WebMvcConfigurer都是Spring MVC框架中用于配置MVC的组件,但它们之间存在显著的区别。以下是对这两者的详细比较: 一、定义与性质 WebMvcConfigurer ○定义:WebMvcConfigurer是Spring MVC中的一个接口&#xf…

基于单片机的家电远程控制系统的设计与实现

[ 摘 要 ] 本课题利用 51 单片机设计家电远程控制系统 。 通过软硬件相结合最终实现了通过手机与 GSM 模块通信控制继电器模拟家电开和关 , 为使系统相对操作和演示比较简单 。 整个系统设计功能完善 ,设计的成本较低, 并适用于各种家庭 , 具有一定的推广性 。 [ 关键…

计算机毕业设计django+大模型租房推荐系统 租房可视化 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统

开题报告:《Django大模型租房推荐系统》 一、研究背景与意义 随着城市化进程的加快,房屋租赁市场日益繁荣。然而,传统的房屋租赁方式存在信息不对称、交易流程繁琐等问题,给租户和房主带来了诸多不便。因此,开发一套…

Python零基础 [2.3] if else 语句的详解与示例

目录 引言 正文 什么是if-else语句 if-else语句的基本格式 示例:简单的if-else语句 示例:if-else语句与比较运算符 示例:if-else语句与逻辑运算符 嵌套的if-else语句 示例:嵌套的if-else语句 总结 引言 欢迎进入Python编…

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…

软考系统分析师知识点二九:专业英语2

前言 今年报考了11月份的软考高级:系统分析师。 考试时间:11月9日。 倒计时:8天。 目标:优先应试,其次学习,再次实践。 复习计划第二阶段:刷选择题,搜集错题集反复查看&#xf…