热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php5.5des解密,使用php进行TRIPLEDES加密/解密

我在PHP中有这个TRIPLEDESENCRYPTIONCODE$encryption_keyCE51E06875F7D964;$datatokenNotest&securit

我在PHP中有这个TRIPLE DES ENCRYPTION CODE

$encryption_key = "CE51E06875F7D964";

$data='tokenNo=test&securityCode=111' ;

echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data

function encryptText_3des($plainText, $key) {

$key = hash("md5", $key, TRUE);

for ($x&#61;0;$x<8;$x&#43;&#43;) {

$key &#61; $key.substr($key, $x, 1);

}

$padded &#61; pkcs5_pad($plainText,

mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));

$encrypted &#61; base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));

return $encrypted;

}

function pkcs5_pad ($text, $blocksize)

{

$pad &#61; $blocksize - (strlen($text) % $blocksize);

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

}

我能够将数据加密为xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E &#61;

现在我有了密钥,我能将这些数据解密为纯文本格式吗&#xff1f;

我试过这种方式

$encryption_key &#61; "CE51E06875F7D964";

$data&#61;&#39;xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E&#61;&#39; ; //encrypted data

echo $desEncryptedData &#61; encryptText_3des($data, $encryption_key);//outputs 3des encrypted data

function encryptText_3des($plainText, $key) {

$key &#61; hash("md5", $key, TRUE);

for ($x&#61;0;$x<8;$x&#43;&#43;) {

$key &#61; $key.substr($key, $x, 1);

}

$padded &#61; pkcs5_unpad($plainText,

mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));

$encrypted &#61; base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));

return $encrypted;

}

function pkcs5_unpad($text)

{

$pad &#61; ord($text{strlen($text)-1});

if ($pad > strlen($text)) return false;

if (strspn($text, chr($pad), strlen($text) - $pad) !&#61; $pad) return false;

return substr($text, 0, -1 * $pad);

}

但我无法做到.我正在做的事情是错的&#xff1f;请建议我解密这个问题&#xff1f;加密密钥本身是用来解密三重DES中的数据吗&#xff1f;请帮忙

解决方法:

这是解决方案&#xff1a;

public function encrypt($data, $secret)

{

//Generate a key from a hash

$key &#61; md5(utf8_encode($secret), true);

//Take first 8 bytes of $key and append them to the end of $key.

$key .&#61; substr($key, 0, 8);

//Pad for PKCS7

$blockSize &#61; mcrypt_get_block_size(&#39;tripledes&#39;, &#39;ecb&#39;);

$len &#61; strlen($data);

$pad &#61; $blockSize - ($len % $blockSize);

$data .&#61; str_repeat(chr($pad), $pad);

//Encrypt data

$encData &#61; mcrypt_encrypt(&#39;tripledes&#39;, $key, $data, &#39;ecb&#39;);

return base64_encode($encData);

}

public function decrypt($data, $secret)

{

//Generate a key from a hash

$key &#61; md5(utf8_encode($secret), true);

//Take first 8 bytes of $key and append them to the end of $key.

$key .&#61; substr($key, 0, 8);

$data &#61; base64_decode($data);

$data &#61; mcrypt_decrypt(&#39;tripledes&#39;, $key, $data, &#39;ecb&#39;);

$block &#61; mcrypt_get_block_size(&#39;tripledes&#39;, &#39;ecb&#39;);

$len &#61; strlen($data);

$pad &#61; ord($data[$len-1]);

return substr($data, 0, strlen($data) - $pad);

}

问候.

标签&#xff1a;php,cryptography,encryption,tripledes

来源&#xff1a; https://codeday.me/bug/20190717/1491254.html



推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
author-avatar
手机用户2602883115
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有