php中des加密cbc模式,php中加密解密DES类的简单使用方法示例

本文实例讲述了php中加密解密DES类的简单使用方法。分享给大家供大家参考,具体如下:

在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密

uv4zmxh21jq.jpg

代码1:

class DES

{

var $key; // 密钥

var $iv; // 偏移量

function __construct( $key, $iv=0 ) {

$this->key = $key;

if( $iv == 0 ) {

$this->iv = $key;

} else {

$this->iv = $iv;

// 创建初始向量, 并且检测密钥长度, Windows 平台请使用 MCRYPT_RAND

// mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );

}

}

function encrypt($str) {

//加密,返回大写十六进制字符串

$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );

$str = $this->pkcs5Pad ( $str, $size );

// bin2hex 把 ASCII 字符的字符串转换为十六进制值

return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );

}

function decrypt($str) {

//解密

$strBin = $this->hex2bin( strtolower( $str ) );

$str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );

$str = $this->pkcs5Unpad( $str );

return $str;

}

function hex2bin($hexData) {

$binData = "";

for($i = 0; $i < strlen ( $hexData ); $i += 2) {

$binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );

}

return $binData;

}

function pkcs5Pad($text, $blocksize) {

$pad = $blocksize - (strlen ( $text ) % $blocksize);

return $text . str_repeat ( chr ( $pad ), $pad );

}

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 );

}

}

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; DES5 has a deprecated constructor in D:\phpstudy_pro\WWW\des\DES5.php on line 2

Fatal error: Uncaught Error: Call to undefined function mcrypt_get_block_size() in D:\phpstudy_pro\WWW\des\DES5.php:19 Stack trace: #0 D:\phpstudy_pro\WWW\des\1.php(10): DES5->encrypt('podsmia') #1 {main} thrown in D:\phpstudy_pro\WWW\des\DES5.php on line 19

mcrypt_cbc 以 CBC 模式加解密数据, 在PHP 5.5.0+被弃用, PHP 7.0.0被移除

mcrypt_encrypt / mcrypt_decrypt 使用给定参数加密 / 解密, 在PHP 7.1.0+被弃用, 在PHP 7.2.0+被移除

代码2:

class DES7

{

//要改的加密, 使用 openssl

public function desEncrypt($str,$key) {

$iv = $key;

$data = openssl_encrypt($str,"DES-CBC",$key,OPENSSL_RAW_DATA,$iv);

$data = strtolower(bin2hex($data));

return $data;

}

//要改的解密

public function desDecrypt($str,$key) {

$iv = $key;

return openssl_decrypt (hex2bin($str), 'DES-CBC', $key, OPENSSL_RAW_DATA,$iv);

}

}

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线DES加密/解密工具http://tools.jb51.net/password/des_encode

MD5在线加密工具:http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:http://tools.jb51.net/password/sha_encode

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》

希望本文所述对大家PHP程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 并发线程_Java并发教程–线程之间的可见性

java 并发线程当在不同线程之间共享对象的状态时&#xff0c;除了原子性外&#xff0c;其他问题也会发挥作用。 其中之一是可见性。 关键事实是&#xff0c;如果没有同步&#xff0c;则不能保证指令按照它们在源代码中出现的顺序执行。 这不会影响单线程程序中的结果&#xff…

维持硒测试自动化的完美方法

毫无疑问&#xff0c; 自动浏览器测试已经改变了软件开发的工作方式。 如果不是Selenium&#xff0c;我们将无法像我们一样使用各种各样的无错误Web应用程序。 但是有时&#xff0c;甚至IT部门也误解了自动化一词。 大多数人认为计算机将为他们完成所有测试&#xff01; 他们最…

双色球霸主网络问题_霸主–统治和管理API的地方

双色球霸主网络问题今天我们生活在一个越来越分散的世界中。 如今的计算机系统不再是在随机桌子下面的某些硬件上运行单个部门项目&#xff0c;而是大规模&#xff0c;集中甚至分散地运行。 监视和管理的需求从未改变&#xff0c;但是随着时间的推移变得越来越复杂。 如果将所有…

php验证码 php中文网,ThinkPHP 使用不同风格及中文的验证码

使用其他风格验证码在上文《ThinkPHP 验证码详解及实例》中了解了 ThinkPHP 验证码的具体用法&#xff0c;本文将进一步介绍如何使用不同风格的验证码以及使用中文验证码。上文例子使用的是默认参数&#xff0c;也就是生成 4 位的数字验证码。buildImageVerify 方法生成验证码时…

java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

java 开发人员工具随着Java生态系统的发展&#xff0c;可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误&#xff0c;并以传统方法无法维持的水平获得对应用程序行为的洞察力。 在本文中&#xff0c;…

Apache Camel 3.2 – Camel的无反射配置

在Apache Camel项目中&#xff0c;我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小&#xff0c;更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel&#xff0c;以使配置与应…

java jsoup解析_3使用Jsoup解析Java中HTML文件的示例

java jsoup解析HTML是Web的核心&#xff0c;无论您是通过JavaScript&#xff0c;JSP&#xff0c;PHP&#xff0c;ASP或任何其他Web技术动态生成的&#xff0c;您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现它。 但是&#xff0c;如果需要…

【AI提示词艺术】第12期 摄影艺术构图处理和人像生成的技巧

摄影艺术构图 星空宇宙 关键词&#xff1a; 强烈的明暗对比,8k,精细的描述,相片纸,超高分辨率,无建筑的,大自然,星空&#xff0c;云朵&#xff0c;刺眼流星&#xff0c;群星&#xff0c;银河&#xff0c;仰视视角&#xff0c;广角镜头 以下是按照提示词类别整理的相关描述&a…

Kogito,ergo规则:从知识到服务,轻松自如

欢迎阅读有关Kogito倡议的博客系列的另一集&#xff0c;以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中&#xff0c;我们介绍了两种实现完整智能服务的新方法 &#xff1a; 独立的规则服务 集成智能工作流程和规则…

linux 读取内存颗粒,Linux虚拟内存地址转化成物理内存地址

背景现代手机这种SOC(system on chip)&#xff0c;因为功耗、Modem等功能soc上集成了很多core,他们还可以是独立的系统在运转。比如ADSP简介ADSP(Application Digital Signal Processing)就是高通的Hexagon DSP ,就是独立运转的一个coresystem。这样做不仅可以使用soc上的专用核…

primefaces_PrimeFaces扩展中的全新JSF组件

primefacesPrimeFaces扩展团队很高兴宣布即将推出的3.0.0主要版本的几个新组件。 我们的新提交者Francesco Strazzullo为该项目提供了“ Turbo Boost”&#xff0c;并带来了至少6个已成功集成的 JSF组件&#xff01; 当前的开发状态是OpenShift上的deployet – 请查看展示柜。以…

linux中memcpy实现分析,ARM64 的 memcpy 优化与实现

如何优化 memcpy 函数Linux 内核用到了许多方式来加强性能以及稳定性&#xff0c;本文探讨的 memcpy 的汇编实现方式就是其中的一种&#xff0c;memcpy 的性能是否强大&#xff0c;拷贝延迟是否足够低都直接影响着整个系统性能。通过对拷贝函数的理解可以加深对整个系统设计的一…

ejb生命周期_EJB 3.x:生命周期和并发模型(第2部分)

ejb生命周期这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 我将在本文中介绍Singleton EJB 。 Singleton模式可以说是最常用&#xff08;有时被滥用&#xff01;&#xff09;的模式。 单吨又爱它&#xff01; Java EE使我们无需编写显…

JDK 14 / JEP 305模式匹配“ Smart Casts”实例

我通常将Java代码中instanceof运算符的存在视为“ 红色标志 ”&#xff0c;这意味着在某些情况下使用instanceof不一定是错误的&#xff0c;但是使用它有时表示可以以一种更干净的方式解决设计问题&#xff0c;如所述本文末尾引用的一些资源中的内容&#xff08;包括有关Java以…

易流即时配送_即时大数据流处理=即时风暴

易流即时配送在Ubuntu背后的公司Canonical&#xff0c;每6个月进行一次技术工作&#xff0c;以第一手测试我们的工具并向其他人展示新想法。 这次&#xff0c;我创建了一个即时大数据解决方案&#xff0c;更具体地讲是“即时风暴”。 Storm现在是Apache基金会的一部分&#xf…

csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现

试题编号&#xff1a;201509-3试题名称&#xff1a;日期计算 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述&#xff1a;成成最近在搭建一个网站&#xff0c;其中一些页面的部分内容来自数据库中不同的数据记录&#xff0c;但是页面的基本结构是相同的。例如&…

osgi架构与linux_OSGi:进入微服务架构的门户

osgi架构与linux在构建可扩展&#xff0c;可靠的分布式系统的背景下&#xff0c;“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知&#xff0c;Java平台本身在模块化方面很弱&#xff08; Java 9将通过交付Jigsaw项目来解决此问题&#xff09;&#xff0c;这为…

引入我们全新的YouTube频道进行视频课程编程

嘿&#xff0c;极客们&#xff0c; 收到社区的反馈并紧贴行业发展趋势&#xff0c;我们非常高兴宣布推出全新的Youtube频道 &#xff01; 在我们的频道上&#xff0c;我们将主持与Java编程有关的视频课程&#xff0c;但通常也会进行软件开发。 我们将介绍代码演练以及完整的…

田忌赛马c语言程序设计,还是杭电1052田忌赛马

已结贴√问题点数&#xff1a;20 回复次数&#xff1a;2还是杭电1052田忌赛马//昨天那个算法漏洞挺大&#xff0c;但我重新构思了&#xff0c;但运行到312ms还是wa了。我测试了许多数据&#xff0c;结果是对的&#xff0c;郁闷了&#xff0c;谁能救救我啊&#xff1f;#include&…

启动jboss_3种启动JBoss BPM流程的基本方法

启动jboss这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。 规划项目可能包括流程项目&#xff0c;但是您是否考虑过可以启动流程的各种方式&#xff1f; 也许您的JBoss BPM Suite在您的体系结构中本地运行&#xff0c;也许您在云中运行&#xff0c;但是无论它…