返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP怎么使用Mcrypt加密
  • 830
分享到

PHP怎么使用Mcrypt加密

2023-06-15 06:06:39 830人浏览 独家记忆
摘要

小编给大家分享一下PHP怎么使用Mcrypt加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!模块和算法Mcrypt 主要是使用的 Mcrypt 工具来进行加密操

小编给大家分享一下PHP怎么使用Mcrypt加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

模块和算法

Mcrypt 主要是使用的 Mcrypt 工具来进行加密操作的,所以在 Centos 或者其它操作系统中,我们需要安装 libmcrypt-devel 来使用这个扩展。如果 yum 中无法安装的话,直接更新 yum 源即可。

Mcrypt 包含很多的模块和算法。算法就不用多解释了,就是用来对数据进行加密的方式。而模块,包括 CBC, OFB,CFB 和 ECB 这几种,是一系列的分组、流式加密的模式,有推荐的模块,也有安全的模块,具体的区分大家可以自行查阅相关的资料,这里我们先看一下我们的环境中所支持的模块和算法。

$alGorithms = @mcrypt_list_algorithms();print_r($algorithms);// Array// (//     [0] => cast-128//     [1] => gost//     [2] => rijndael-128//     [3] => twofish//     [4] => arcfour//     [5] => cast-256//     [6] => loki97//     [7] => rijndael-192//     [8] => saferplus//     [9] => wake//     [10] => blowfish-compat//     [11] => des//     [12] => rijndael-256//     [13] => serpent//     [14] => xtea//     [15] => blowfish//     [16] => enigma//     [17] => rc2//     [18] => tripledes// )$modes = @mcrypt_list_modes();print_r($modes);// Array// (//     [0] => cbc//     [1] => cfb//     [2] => ctr//     [3] => ecb//     [4] => ncfb//     [5] => nofb//     [6] => ofb//     [7] => stream// )

mcrypt_list_algorithms() 函数可以获得当前环境下所有支持的 Mcrypt 算法。而 mcrypt_list_modes() 则打印出了当前环境下所有可支持的模块。注意在某些版本的 php 或者某些系统中,这些内容会有所不同,在使用 Mcrypt 相关的加密能力的时候,这两项都是相互配合使用的。因此,我们有必要在需要运行 Mcrypt 的环境中预先确定好当前环境下所支持的模块和算法。

加密解密数据

$key = hash('sha256', 'secret key', true);$input = JSON_encode(['id'=>1, 'data'=>'Test mcrypt!']);$td = @mcrypt_module_open('rijndael-128', '', 'cbc', '');$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM);@mcrypt_generic_init($td, $key, $iv);$encrypted_data = @mcrypt_generic($td, $input);@mcrypt_generic_deinit($td);@mcrypt_module_close($td);echo $encrypted_data, PHP_EOL;// ��I      $�3���gE�ǣu(�9n�����//                            p�>P$td = @mcrypt_module_open('rijndael-128', '', 'cbc', '');@mcrypt_generic_init($td, $key, $iv);$data = @mdecrypt_generic($td, $encrypted_data);echo $data, PHP_EOL;// {"id":1,"data":"Test mcrypt!"}@mcrypt_generic_deinit($td);@mcrypt_module_close($td);

代码比较多也较乱,我们一块一块来看。

首先是我们确定一个加密的 key ,然后 input 就是我们要加密的数据。比如我们要加密一个 json 数据。这个 key 其实用字符串就可以,但我们这里也对 key 进行了一次 hash 处理,这个 hash 相关的内容在上一篇文章我们已经详细的讲解过了。

接下来就是使用 mcrypt_module_open() 打开一个加密模块句柄,这里我们使用 rijndael-128 算法和 cbc 模块。然后使用 mcrypt_create_iv() 创建一个 iv ,这个 iv 就是一个初始化向量。初始化向量的值依密码算法而不同。最基本的要求是“唯一性”,也就是说同一把密钥不重复使用同一个初始化向量。这个特性无论在分组加密或流加密中都非常重要。相信大家要是做过微信或支付宝相关的接口通信,在解密验证数据的时候一定会见过这个 iv 属性。

使用 mcrypt_generic() 生成加密结果,使用 mcrypt_generic_deinit() 结束生成初始化,最后通过 mcrypt_module_close() 关闭加密模块句柄。这样,一套 Mcrypt 加密流程就完成了。

同样的,解密流程和加密流程也是类似的,只是我们使用 mdecrypt_generic() 这个函数来进行解密就可以了。

另一种加密解密数据方式

上面的加密流程非常麻烦而且复杂,其实在 Mcrypt 中还提供了一种更简单的加密函数。

$string = 'Test MCrypt2';$algorithm = 'rijndael-128';$key = md5( "mypassWord", true);$iv_length = @mcrypt_get_iv_size( $algorithm, MCRYPT_MODE_CBC );$iv = @mcrypt_create_iv( $iv_length, MCRYPT_RAND );$encrypted = @mcrypt_encrypt( $algorithm, $key, $string, MCRYPT_MODE_CBC, $iv );$result = @mcrypt_decrypt( $algorithm, $key, $encrypted, MCRYPT_MODE_CBC, $iv );echo $encrypted, PHP_EOL; // \<�`�U��Uf)�Yecho $result, PHP_EOL; // Test MCrypt2

我们依然要准备好要加密的数据,算法,key ,以及 iv 向量。然后直接使用 mcrypt_encrypt() 和 mcrypt_decrypt() 来进行加/解密就可以了,是不是方便很多。

总结

相对于 Hash 来说,Mcrypt 是可解密的对称加密形式。关于什么是对称和非对称加密,我们将在 OpenSSL 扩展的学习中详细地讲解,而 Hash 加密则是单向的加密形式,是无法通过加密后的数据反向计算获得原始数据的。它们都有不同的应用场景,不过就像 PHP 提示的那样,Mcrypt 已经是不推荐使用的扩展了,所以我们在这里只是简单的进行了加/解密的测试而已,如果有用到的小伙伴,可以根据手册进行更深入地学习。

测试代码:

https://GitHub.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84Mcrypt%E5%8A%A0%E5%AF%86%E6%89%A9%E5%B1%95%E7%9F%A5%E8%AF%86%E4%BA%86%E8%A7%A3.php

以上是“PHP怎么使用Mcrypt加密”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP怎么使用Mcrypt加密

本文链接: https://lsjlt.com/news/278523.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP怎么使用Mcrypt加密
    小编给大家分享一下PHP怎么使用Mcrypt加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!模块和算法Mcrypt 主要是使用的 Mcrypt 工具来进行加密操...
    99+
    2023-06-15
  • php7+中怎么使用openssl替代mcrypt进行AES加密解密
    这篇文章主要介绍php7+中怎么使用openssl替代mcrypt进行AES加密解密,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mcrypt十年过去,现在php7+中已经开始淘汰。官方给出掉提示:mcrypt_ge...
    99+
    2023-06-15
  • php 怎么替换mcrypt
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 怎么替换mcrypt?php7.4中 mcrypt加解密替代方案问题描述mcrypt_encrypt以及mcrypt_decrypt函数自PHP 7.1.0 ...
    99+
    2024-04-02
  • php加密函数怎么使用
    PHP有很多加密函数可以使用,以下是几个常用的加密函数及其使用方法: md5函数:用于计算字符串的MD5哈希值。 $str = ...
    99+
    2023-10-27
    php
  • PHP怎么使用OpenSSL加密中的非对称加密
    这篇文章主要介绍了PHP怎么使用OpenSSL加密中的非对称加密,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的OpenSSL加密扩展学习:非对称加密生成私钥通过之前的...
    99+
    2023-06-15
  • php混淆加密算法怎么使用
    PHP混淆加密算法可用于保护源代码的安全性,防止代码被解析和修改。以下是一个使用PHP混淆加密算法的示例:1. 在开始之前,你需要安...
    99+
    2023-09-14
    php
  • 怎么通过php使用gpg加密文件
    本篇内容介绍了“怎么通过php使用gpg加密文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!加密一个简单但又实用的任务就是发送加密电子邮件...
    99+
    2023-06-20
  • PHP如何使用crypt()加密密码
    这篇文章将为大家详细讲解有关PHP如何使用crypt()加密密码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 crypt() 加密密码crypt函数的作用是使用salt返回一个散...
    99+
    2023-06-17
  • PHP如何使用password_hash()加密密码
    这篇文章主要为大家展示了“PHP如何使用password_hash()加密密码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP如何使用password_hash()加密密码”这篇文章吧。使用...
    99+
    2023-06-02
  • php如何使用3des加解密及hmacsha256加密
    目录一、3des加解密二、hmacsha256加密总结一、3des加解密 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用...
    99+
    2024-04-02
  • PHP中怎么使用OpenSSL加密中的证书
    小编给大家分享一下PHP中怎么使用OpenSSL加密中的证书,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP的OpenSSL加密扩展学习(三):证书操作关于对称和非对称的加密操作,我们已经学习完两篇文章的内容了,接下来...
    99+
    2023-06-15
  • 怎么用php给数据加密
    在php中使用crypt函数对数据进行加密,具体方法如下:crypt函数语法:string crypt ( string $str [, string $salt ] ) crypt函数使用方法:...
    99+
    2024-04-02
  • vue怎么使用base64加密
    本篇内容主要讲解“vue怎么使用base64加密”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么使用base64加密”吧!vue项目使用base64加密vue-cli 脚手架搭建前端项目...
    99+
    2023-07-02
  • Vue+php 使用AES进行加密解密
    php 代码 public function encrypt($data, $key, $iv) { return base64_encode(openssl_enc...
    99+
    2023-09-28
    1024程序员节 php vue.js aes加密解密
  • php文件怎么加密
    这篇文章将为大家详细讲解有关php文件怎么加密,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php文件加密的方法:1、打开Zend Guard 5.5.0;2、选择要进行加密的源文件或文件夹;3、选择PH...
    99+
    2023-06-20
  • PHP怎么使用加密伪随机数生成器
    这篇文章主要介绍了PHP怎么使用加密伪随机数生成器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的加密伪随机数生成器的使用今天我们来介绍的是 PHP 中的加密伪随机数生...
    99+
    2023-06-15
  • python加密解密算法怎么使用
    Python提供了多种加密解密算法的库,比如`hashlib`、`hmac`、`base64`、`cryptography`等。下面...
    99+
    2023-09-17
    python
  • 如何使用PHP进行加密和解密?
    PHP是一种流行的服务器端脚本语言,它可以用来创建复杂的Web应用程序。其中一个重要的功能是加密和解密敏感数据。在本文中,我们将讨论如何使用PHP进行加密和解密。对称加密算法对称加密算法是最常见的加密方式之一,也被称为单密钥加密。它使用同一...
    99+
    2023-05-22
    PHP加密(Encryption) PHP解密(Decryption) 对称加密(Symmetric encryptio
  • 怎么在PHP中使用RSA非对称加密算法
    本篇文章给大家分享的是有关怎么在PHP中使用RSA非对称加密算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言...
    99+
    2023-06-14
  • php怎么实现aes加密
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php怎么实现aes加密在php中我们使用openssl_encrypt来实现加密和使用openssl_decrypt实现解密一:openssl_encrypt方法详...
    99+
    2018-04-30
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作