mcrypt

Decrypt AES-256-CFB in PHP with openssl instead mcrypt

独自空忆成欢 提交于 2021-02-08 08:59:25
问题 The function below correctly decrypt the data in php5 function decrypt_mcrypt($key, $str) { $str = base64_decode($str); $iv = substr($str, 0, 16); $str = substr($str, 16); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CFB, $iv); } I tried to use openssl instead of mcrypt (in php7), but got garbage on the output. function decrypt_openssl($key, $str) { $str = base64_decode($str); $iv = substr($str, 0, 16); $str = substr($str, 16); return openssl_decrypt($str, 'AES-256-CFB',

PHP Converting mcrypt to openssl

只谈情不闲聊 提交于 2021-02-05 05:25:27
问题 I know 3DES and MD5 are insecure. I will work on replacing them once I have it working again, I have a mobile app that is using 3DES with an MD5 of a key as a SECRET KEY to talk to a PHP Application. Now this code worked perfectly on PHP 5.3 (this is an example I have generated) mcrypt_decrypt( MCRYPT_3DES, md5( utf8_encode( "MobileAppSecureKey" ), true ), base64_decode("bkCfcseIt/TPsgNCdyX9fv2/4MjOJdaPXakNNbxQT3n6tXHa5bDoXojQ3g7jPLCu+wjwD0guQzw3hCFUSVx47PmDNHASk7g/kJ4K4tX0VGI="), MCRYPT_MODE

js与php7互通加解密

荒凉一梦 提交于 2021-01-23 23:44:07
php 7.1以后mcrypt_encrypt将会被废弃,所以我们使用openssl_decrypt和openssl_encrypt的组合方式实现AES加密实现 php /js互通加密/解密。 js端使用CryptoJS封装的库 https://blog.csdn.net/weixin_35719518/article/details/112054379 来源: oschina 链接: https://my.oschina.net/shunshun/blog/4921830

From mcrypt_decrypt to openssl_decrypt

白昼怎懂夜的黑 提交于 2021-01-20 11:54:19
问题 I have a question, I want to replace a function call to mcrypt with open_ssl decrypt. but the output is mingled: This is the mcrypt implementation (which works great): $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, substr(sha1($this->secretKey), 0, 32), base64_decode($encrypted), MCRYPT_MODE_CBC, base64_decode($iv)), "\0..\32"); var_dump($decrypted); And i translated it to: var_dump( trim( openssl_decrypt( $encrypted, 'AES-256-CBC', substr(sha1($this->secretKey), 0, 32), OPENSSL_ZERO

From mcrypt_decrypt to openssl_decrypt

不羁的心 提交于 2021-01-20 11:54:19
问题 I have a question, I want to replace a function call to mcrypt with open_ssl decrypt. but the output is mingled: This is the mcrypt implementation (which works great): $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, substr(sha1($this->secretKey), 0, 32), base64_decode($encrypted), MCRYPT_MODE_CBC, base64_decode($iv)), "\0..\32"); var_dump($decrypted); And i translated it to: var_dump( trim( openssl_decrypt( $encrypted, 'AES-256-CBC', substr(sha1($this->secretKey), 0, 32), OPENSSL_ZERO

微信小程序des加密、PHP des解密

五迷三道 提交于 2020-12-29 17:12:23
最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 引用的插件为tripledes.js, https://github.com/Favour1111in/hello-world/tree/master 需要传入内容,密钥,初始化向量3个参数 var server = require('../../utils/server.js' ); var CryptoJS = require('../../utils/tripledes.js' ); Page({ /* * * 页面的初始数据 */ data: { val: '' }, input(e) { var val = e.detail.value; this .encrypt(val); }, encrypt(val) { var pwd = 'lib123123'; // 这里需要传入8个字节以上的密钥 var iv = '123123123' ; var encryptData = this .encryptByDESModeCBCUtf8to64(val, pwd, iv); console.log(encryptData); this .setData({ encryptData: encryptData }) server.postJSON( 'Index/decrypt',

PHP的Mcrypt加密扩展知识了解

余生长醉 提交于 2020-12-17 02:06:15
PHP的Mcrypt加密扩展知识了解 今天我们来学习的是 PHP 中的一个过时的扩展 Mcrypt 。在 PHP7 之前,这个扩展是随 PHP 安装包一起内置发布的,但是现在新版本的 PHP 中已经没有了,需要使用这个扩展的话我们需要单独安装,并且在使用的时候也是会报出过时的警告的。所以,我们学习使用这些函数的时候,就需要使用 @ 来抑制错误信息。当然,之所以会对这套扩展发出过时警告,是因为 PHP 更加推荐使用 OpenSSL 来处理类似的加密能力。 模块和算法 Mcrypt 主要是使用的 Mcrypt 工具来进行加密操作的,所以在 CentOS 或者其它操作系统中,我们需要安装 libmcrypt-devel 来使用这个扩展。如果 yum 中无法安装的话,直接更新 yum 源即可。 Mcrypt 包含很多的模块和算法。算法就不用多解释了,就是用来对数据进行加密的方式。而模块,包括 CBC, OFB,CFB 和 ECB 这几种,是一系列的分组、流式加密的模式,有推荐的模块,也有安全的模块,具体的区分大家可以自行查阅相关的资料,这里我们先看一下我们的环境中所支持的模块和算法。 $algorithms = @mcrypt_list_algorithms(); print_r($algorithms); // Array // ( // [0] => cast-128 // [1] =

PHP加密函数—sha1()函数加密

♀尐吖头ヾ 提交于 2020-12-17 01:33:35
首先我们先介绍下什么是 sha1 ? 大理石构件 sha的全称是:Secure Hash Algorithm(安全哈希算法)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。PHP提供的sha1()函数使用的就是SHA 算法! 在之前介绍的两篇文章《PHP加密函数—crypt()函数加密》和《PHP加密函数—md5()函数加密》,相信大家对加密有一定了解,在本章中我们将继续介绍跟MD5()函数类似的sha1()函数算法。 sha1()函数的语法格式如下: 1 string sha1 ( string $str [, bool $raw_output = false ] ) 参数 描述 string 必需。规定要计算的字符串。 raw 可选。规定十六进制或二进制输出格式:TRUE - 原始 20 字符二进制格式FALSE - 默认。40 字符十六进制数 函数返回一个 40位的十六进制数,如果参数 raw_output 为 true,那么就会返回一个

PHP的Sodium加密扩展函数了解

梦想的初衷 提交于 2020-12-17 00:51:53
PHP的Sodium加密扩展函数了解 这是本次加密扩展系列的最后一篇文章,也是我们要学习了解的最后一个 PHP 加密扩展。Sodium 出现的目的也是为了代替 Mcrypt 这个原来的加密扩展。在 PHP7.2 之后,Mcrypt 已经被移除,在 PHP7.1 时就已经被标记为过时。不过,Sodium 扩展的应用也并不是很多,大部分情况下我们都会使用 OpenSSL 来进行加密操作,同时,Sodium 扩展提供的函数也非常多,所以,我们这篇文章只做了解即可。当然,最主要的是,关于这个扩展即使是官方文档也没有完善,大部分函数的参数说明都没有,搜索出来的资料也是非常少。 Sodium 扩展在 PHP7.2 后是跟随 PHP 源码一起发布的,只需要在编译的时候加上 --with-sodium 即可安装成功。如果是 PHP7.2 之前的版本,需要单独安装这个扩展。同时,操作系统中也需要安装 libsodium-devel 库。 AEAD_AES_256_GCM 加解密 首先是这个 AEAD_AES_256_GCM 加解密能力函数的应用。在微信支付相关的开发中,有一个接口就是使用的这种方式进行数据加密,在官方文档中,也提供了 PHP 对应的解密方式,其中使用的就是 Sodium 扩展库中的函数。(见文末参考文档中第二条链接) $data = '测试加密' ; // 原始数据 $nonce =

PHP加密扩展库-openssl

女生的网名这么多〃 提交于 2020-10-06 02:03:11
PHP加密扩展库—Mcrypt扩展库 概要: php从7.0升级到7.1废弃了一个扩展,即mcrypt扩展,虽然安装上扩展也能正常使用,但是会发出警告,告诉我们mcrypt相关方法已经被废弃,到了7.2,已经被移除,因此不建议继续使用。 来源: 在使用微信,淘宝第三方开发文档的时候,很多地方还是沿用以前的加密方法,这个时候我们需要找到替换的方法,openssl就是不错的选择,这就需要我们清楚mcrypt和openssl之间的差异,以便保证数据加解密的一致性。 详解mcrypt和openssl来实现AES-128/192/256-CBC加解密 1. 条件约束 之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。 加密方式采用DES-EDE-CBC方式。 密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。 2. 代码分享 <? php class DesEdgCbc { private $cipher , $key , $iv ; public function __construct( $cipher , $key , $iv ){ $this ->cipher = $cipher ; $this -> key = $this