AES对称加密实战——前端js加密后端python解密_前端aes加密

引言

高级加密标准(AES, Advanced Encryption Standard),是一种最常见的对称加密算法 。其加密流程如下图所示,发送方通过密钥对明文加密后进行网络传输,接收方用同样的密钥将密文解密。在前后端通讯场景中,可利用AES算法对用户密码进行加密后传输,防止被抓包而造成密码泄露。

加解密流程

为了完成加解密操作,双方需要事先约定好: 秘钥长度,密钥,IV值,加密模式,填充方式共计5项内容。下面以128位密钥长度、CBC加密模式、零填充为例进行实战介绍,更多AES加密算法的细节读者可自行查阅。

前端 JS加解密

前端要实现AES加密,需要安装CryptoJS。 CryptoJS是一个JavaScript的加解密的工具包。它支持多种算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 的哈希散列,以及进行 AES、DES、Rabbit、RC4、Triple DES 加解密。

npm install --save crypto-js

新建secret.js,将相关操作封装成函数,代码如下:

// 引用AES源码js
const CryptoJS = require(‘crypto-js’);

// 128位的密钥与IV,与后端约定好
let crypt_key = ‘OS7kWn9kGLmr7wxD’;
let crypt_iv &#

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python实现AES对称加密算法的示例代码: ```python from Crypto.Cipher import AES import base64 # 加密函数 def encrypt(text, key): # 将密钥转换为16字节长度的bytes类型 key = key.encode('utf-8') key = key.ljust(16, b'\0') # 将明文转换为bytes类型 text = text.encode('utf-8') # 使用AES加密算法进行加密 cipher = AES.new(key, AES.MODE_ECB) encrypted_text = cipher.encrypt(text) # 将加密后的bytes类型数据转换为base64编码的字符串 encrypted_text = base64.b64encode(encrypted_text).decode('utf-8') return encrypted_text # 解密函数 def decrypt(encrypted_text, key): # 将密钥转换为16字节长度的bytes类型 key = key.encode('utf-8') key = key.ljust(16, b'\0') # 将密文转换为bytes类型 encrypted_text = base64.b64decode(encrypted_text) # 使用AES加密算法进行解密 cipher = AES.new(key, AES.MODE_ECB) decrypted_text = cipher.decrypt(encrypted_text) # 将解密后的bytes类型数据转换为字符串 decrypted_text = decrypted_text.decode('utf-8') return decrypted_text # 测试 text = 'Hello, world!' key = '1234567890123456' encrypted_text = encrypt(text, key) print('加密后的密文:', encrypted_text) decrypted_text = decrypt(encrypted_text, key) print('解密后的明文:', decrypted_text) ``` 上述代码使用了Python的`Crypto`库实现了AES对称加密算法。其中,`encrypt`函数用于加密明文,`decrypt`函数用于解密密文。在加密解密过程中,需要使用相同的密钥。在本例中,密钥为16字节长度的字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值