PHP正确进行AES加密解密的方法

转载 2018年04月17日 18:40:05

废话不多说,直接上代码

<?php

namespace Aes;

class Aes
{
    /**
     * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得
     */
    protected $method;

    /**
     * var string $secret_key 加解密的密钥
     */
    protected $secret_key;

    /**
     * var string $iv 加解密的向量,有些方法需要设置比如CBC
     */
    protected $iv;

    /**
     * var string $options (不知道怎么解释,目前设置为0没什么问题)
     */
    protected $options;

    /**
     * 构造函数
     *
     * @param string $key 密钥
     * @param string $method 加密方式
     * @param string $iv iv向量
     * @param mixed $options 还不是很清楚
     *
     */
    public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0)
    {
        // key是必须要设置的
        $this->secret_key = isset($key) ? $key : 'morefun';

        $this->method = $method;

        $this->iv = $iv;

        $this->options = $options;
    }

    /**
     * 加密方法,对数据进行加密,返回加密后的数据
     *
     * @param string $data 要加密的数据
     *
     * @return string
     *
     */
    public function encrypt($data)
    {
        return openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);
    }

    /**
     * 解密方法,对数据进行解密,返回解密后的数据
     *
     * @param string $data 要解密的数据
     *
     * @return string
     *
     */
    public function decrypt($data)
    {
        return openssl_decrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);
    }
}

测试代码:

$aes = new OpenSSLAES('12345678');

$encrypted = $aes->encrypt('bbm是一家很有意思的公司');

echo '要加密的字符串:bbm是一家很有意思的公司<br>加密后的字符串:', $encrypted, '<hr>';

$decrypted = $aes->decrypt($encrypted);

echo '要解密的字符串:', $encrypted, '<br>解密后的字符串:', $decrypted;

android、ios、php之间AES加密解密

使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES。 PHP 源码 $aes ...
  • huangwenkui1990
  • huangwenkui1990
  • 2015-09-08 16:28:13
  • 7305

php AES128加密解密类的使用

AES128下载页(下载需要注册)require(./AES128.php); $aes=new AES128(); // 实例化$key=$aes->makeKey("china"); // key...
  • jom_ch
  • jom_ch
  • 2008-06-26 13:05:00
  • 1977

JS AES加密与PHP解密

网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码思路在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的数据...
  • wljk506
  • wljk506
  • 2016-10-08 13:12:03
  • 3510

PHP,安卓,ios相互适用的AES加密算法

http://wangsigui.blog.51cto.com/5362901/1340415 java的AES加密算法: 1 2 3 ...
  • leonpengweicn
  • leonpengweicn
  • 2015-12-03 12:27:10
  • 1380

PHP程序的AES加密解密算法

PHP关于AES加密解密算法, #KEY长度无限制,IV长度必须是block_size的倍数 #如果是MCRYPT_MODE_ECB加密,结果与KEY有关,与IV无关 ...
  • ffffffff8
  • ffffffff8
  • 2017-11-25 15:35:02
  • 228

Android传输数据时Aes加密解密详解

Android传输数据时Aes加密解密详解
  • binjianliu
  • binjianliu
  • 2017-09-07 09:04:47
  • 377

PHP----Crypt_AES数据加密,解密,验证签名

Crypt_AES数据加密,解密,验证签名
  • damys
  • damys
  • 2016-01-21 11:39:05
  • 1846

php和java之间aes加密的互通

php和java之间aes加密互通,亲测成功
  • panjiapengfly
  • panjiapengfly
  • 2017-07-18 18:58:36
  • 321

AES加密php,java,.net三种语言同步实现加密、解密

因工作需要,在使用aes解密时,因客户开发语言有多种,现在基本就是java,php,asp.net三种语言是主流,笔者对三种语言也算是研究多年了,有时客户总是问这问那的,就调试好了三种不同语言的AES...
  • cctcc
  • cctcc
  • 2017-02-08 15:07:39
  • 7068

PHP开发过程中AES加密解密问题 js前端AES加密,PHP解密

  • 2017年03月16日 14:25
  • 188KB
  • 下载
收藏助手
不良信息举报
您举报文章:PHP正确进行AES加密解密的方法
举报原因:
原因补充:

(最多只允许输入30个字)