PHP如何使用AES加密和解密

AES加密在php5的版本中使用的mcrypt_decrypt 函数,该函数已经在php7.1后弃用了,取而代之的是openssl的openssl_encrypt和openssl_decrypt,并且代码也非常精简,下面是示例代码:

 1 <?php
 2
 3 class Aes
 4 {
 5     public $key = ‘‘;
 6     public $iv = ‘‘;
 7     public $method = ‘‘;
 8
 9     public function __construct($config)
10     {
11         foreach ($config as $k => $v) {
12             $this->$k = $v;
13         }
14     }
15
16     //加密
17     public function aesEn($data)
18     {
19         return base64_encode(openssl_encrypt($data, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv));
20     }
21
22     //解密
23     public function aesDe($data)
24     {
25         return openssl_decrypt(base64_decode($data), $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
26     }
27 }
28
29 $config = [
30     ‘key‘ => ‘reter4446fdfgdfgdfg‘, //加密key
31     ‘iv‘ => md5(time() . uniqid(), true), //保证偏移量为16位
32     ‘method‘ => ‘AES-128-CBC‘ //加密方式  # AES-256-CBC等
33 ];
34 $obj = new Aes($config);
35 $res = $obj->aesEn(‘[email protected]‘);//加密数据
36 echo $res;
37 echo ‘<hr>‘;
38 echo $obj->aesDe($res);//解密

注意:要使用openssl相关函数必须要开启openssl扩展,否则程序报错

链接:https://www.php.cn/php-weizijiaocheng-437570.html(文章没有提示要开启openssl,不知道的人会踩坑报错)

原文地址:https://www.cnblogs.com/clubs/p/12009414.html

时间: 2024-08-29 10:05:22

PHP如何使用AES加密和解密的相关文章

iOS开发之Objective-c的AES加密和解密算法的实现

原文:http://www.lidaren.com/archives/1470 高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法. 以下实现代码中分别为NSData和NSString增加了一个Category.使用时直接调用即可. 需要注意的是,AES并不能作为HASH算法,加密并解密后的结果,并不一定与原文相同,使用时请注意进行结果验算.例如解密原文的长度,格式规则等. NG实例 原文:170987350 密码:170 Objecti

polarssl rsa &amp; aes 加密与解密

上周折腾加密与解密,用了openssl, crypto++, polarssl, cyassl, 说起真的让人很沮丧,只有openssl & polarssl两个库的RSA & AES 加密和解密,我用起来了,crypto++各种模板,各种多继承,看的头大,而且对各种常用的加密算法也不了解,所以这个库我在折腾了一天之后就放弃了:cyassl这个库现在没什么印象了:openssl没什么好说的,用起来很方便,尤其是使用win32openssl,都不用自己编译,下载下来安装好了就能用,着实方便:

Java aes加密C#解密的取巧方法

摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Java代码: /** * 加密 * * @param content 需要加密的内... 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Java代码: /**

c# AES加密,解密

转载:http://www.cnblogs.com/kevin-top/archive/2010/07/01/1769351.html using System;using System.Text;using System.Security.Cryptography;using System.IO; namespace MyCryptography{    /// <summary>    /// DES加密解密    /// </summary>    public class 

CryptoJS AES加密、解密练习demo

<!DOCTYPE html> <html> <head>     <title>aes demo</title>     <meta charset="utf-8"/>     <style>         *{margin:0;padding:0}         .demo-wrap{width: 400px;height: 50px;margin: 50px auto auto auto}  

兔子--AES加密,解密算法

// AES加密 public String encrypt_AES(String source, String key) throws Exception { if (key == null) { return null; } // 判断key是否为16位 if (key.length() != 16) { return null; } byte[] raw = key.getBytes(); SecretKey keySpec = new SecretKeySpec(raw, "AES&qu

aes 加密,解密(2)

JavaScript加密,解密 1,此为AES加密后,转换为16进制编码 var encodePwd = function (data,key){ var keyHex = CryptoJS.enc.Utf8.parse(key); var encrypted1 = CryptoJS.AES.encrypt(data, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.He

iOS客户端学习 AES加密和解密

数据加密在解密在软件开发过程中举足轻重的作用,可能有的公司在加密的时候有自己公司内部一套设计的算法,而在这方面不想浪费太大精力就可以去考虑使用第三方提供的加密算法,如AES加密算法,本篇内容介绍开源中国iOS客户端使用ASE算法加密密码: AES   GitHub 下载地址  https://github.com/Gurpartap/AESCrypt-ObjC 对一个比较大的工程我们可能都不知道某个类库或者方法在哪被使用,但是智能的Xcode给我们提供了一个全局搜索的功能,我们可以在真个工程中来

C#中AES加密和解密

/// AES加密 /// </summary> /// <param name="inputdata">输入的数据</param> /// <param name="iv">向量128位</param> /// <param name="strKey">加密密钥</param> /// <returns></returns> public

Python中crypto模块进行AES加密和解密

#coding: utf8 import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class prpcrypt(): def __init__(self, key): self.key = key self.mode = AES.MODE_CBC #加密函数,如果text不是16的倍数[加密文本text必须为16的倍数!],那就补足为16的倍数 def encrypt(self, text):