【学习笔记】AES 对称加密 ECB

2 篇文章 0 订阅
1 篇文章 0 订阅

AES 简介

高级加密标准 (AES,Advanced Encryption Standard) 为最常见的对称加密算法 (微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥

对称加密

加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。秘钥容易泄露。

非对称加密

加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为 RSA、ECC 和 EIGamal。

注意事项

PHP7.2 删除了 Mcrypt 扩展,这里使用 OpenSSL 扩展。

PHP后端代码实现

	const KEY = '397e2eb61307109f6e68006ebcb62f98';
    const IV = '00000000000000000000000000000000';

    /**
     * 加密   ECB - 128 - addPkcs7Padding
     */
    public function encrypts($data)
    {
        // $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::KEY, $this->addPkcs7Padding($data), MCRYPT_MODE_ECB,self::IV);//php7.1以下版本用法
        return base64_encode(openssl_encrypt($data, "AES-128-ECB", self::KEY, OPENSSL_RAW_DATA)); //php7.1以上版本用法
    }

    /**
     * 解密
     */
    public function decrypts($data)
    {
        // Log::info($data);
        // $data =base64_decode($data);
        // return $this->stripPkcs7Padding(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::KEY, $data, MCRYPT_MODE_ECB, self::IV));//php7.1以下版本用法
        return openssl_decrypt(base64_decode($data), "AES-128-ECB", self::KEY, OPENSSL_RAW_DATA); //php7.1以上版本用法
    }

vue前端代码实现

1-先安装 crypto-js

npm install crypto-js --save-dev

2-代码实现

import CryptoJS from "crypto-js";

export default {
 // 加密
 encrypt(word, keyStr) {
 keyStr = keyStr ? keyStr : "397e2eb61307109f6e68006ebcb62f98";
 let key = CryptoJS.enc.Utf8.parse(keyStr);
 let srcs = CryptoJS.enc.Utf8.parse(word);
 let encrypted = CryptoJS.AES.encrypt(srcs, key, {
 mode: CryptoJS.mode.ECB,
 padding: CryptoJS.pad.Pkcs7
 });
 return encrypted.toString();
 },
 // 解密
 decrypt(word, keyStr) {
 keyStr = keyStr ? keyStr : "397e2eb61307109f6e68006ebcb62f98";
 var key = CryptoJS.enc.Utf8.parse(keyStr);
 var decrypt = CryptoJS.AES.decrypt(word, key, {
 mode: CryptoJS.mode.ECB,
 padding: CryptoJS.pad.Pkcs7
 });
 return CryptoJS.enc.Utf8.stringify(decrypt).toString();
 }
};

在线AES 加密测试

AES在线加密解密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值