基于python3和Vue实现AES数据加密

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

1、最常用的对称加密算法
2、密钥建立时间短、灵敏性好、内存需求低
3、实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)
4、密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)
5、填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。
6、加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。
python (ECB)应用
安装:
Windows : pip install pycryptodome

Linux : pip install pycrypto

1 import base64
2 import json
3 import re
4
5 from Crypto.Cipher import AES
6 from Crypto.Util.Padding import pad
7
8
9 class AesCrypt(object):
10 """
11 AES 加密组件
12 """
13
14 def init(self, user, isjson=True):
15
16 # 这里的密钥长度必须是 16 24 32
17 key = ‘suiyi
‘ + user.get(‘Auth‘)
18 self.is_json = isjson
19 self.encode
= ‘utf-8‘
20 self.key = self.add_32(key)
21 print(self.key)
22 self.aes = AES.new(self.key, AES.MODE_ECB) # 创建一个aes对象
23
24 def add32(self, key):
25 """
26 key 补齐32位
27 :param key:
28 :return:
29 """
30 # 字符串 a 不要小于32位
31 a = ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘
32 key += a
33 key = key[0:32]
34 return key.encode(self.encode
)
35
36 def aes_encrypt(self, text):
37 """
38 加密 支持 json 需在实例中制动 is_json = True
39 :param text:
40 :return:
41 """
42 if self.is_json:
43 text = json.dumps(text, ensure_ascii=False)
44 text = pad(text.encode(‘utf-8‘), AES.block_size, style=‘pkcs7‘)
45 encrypt_text = self.aes.encrypt(text)
46 return base64.encodebytes(encrypt_text).decode().strip()
47
48 def aes_decrypt(self, text):
49 """
50 解密 支持 json 需在实例中制动 isjson = True
51 :param text:
52 :return:
53 """
54 text = base64.decodebytes(text.encode(self.encode
))
55 decrypt_bytes = self.aes.decrypt(text)
56 decrypt_text = re.compile(‘[\x00-\x08\x0b-\x0c\x0e-\x1f\n\r\t]‘).sub(‘‘, decryptbytes.decode(
57 self.encode
))
58 if self.is_json:
59 decrypt_text = json.loads(decrypt_text)
60 return decrypt_text
61 if name == ‘main‘:
62 user = {‘Auth‘: ‘0000_zhangziyi‘}
63 pr = AesCrypt(user, is_json=True)
64 data = {"unit": 1, "theme": "cur", "look_detail": True, "zero_empty": True, "zero_hide": True, "data_type": "sum"}
65 en_text = pr.aes_encrypt(data)
66 print(‘密文:‘, en_text)
67 pr2 = AesCrypt(user, is_json=True)
68 print(‘明文:‘, pr2.aes_decrypt(en_text))

Vue (ECB)应用
安装:
cnpm install crypto-js --save

1 import store from ‘@/store‘
2 import CryptoJS from ‘crypto-js/crypto-js‘
3
4 function add_secretkey (userAuth) {
5 let key = ‘suiyi
‘ + userAuth
6 if (key.length < 32) {
7 let a = ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘
8 key += a.slice(0, 32 - key.length)
9 } else if (key.length > 32) {
10 key = key.slice(0, 32)
11 }
12 console.log(key)
13 return key
14
15 }
16
17 /
18 加密
19
@param wordimport { aes_encrypt, aes_decrypt } from ‘../../libs/crypto‘
20
21 aes_encrypt(this.data)
22 aes_decrypt(this.AES_data)
23 @param userAuth代码
24
@param is_json
25 @returns {string}
26
/
27 export const aes_encrypt = (word, userAuth, is_json = true) => {
28 if (is_json) {
29 word = JSON.stringify(word)
30 }
31 var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth)) // s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set
32 var srcs = CryptoJS.enc.Utf8.parse(word)
33 var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
34 return encrypted.toString()
35 }
36 /
37 解密
38
@param word
39 @param userAuth
40
@param is_json
41 @returns {string}
42
/
43 export const aes_decrypt = (word, userAuth, is_json = true) => {
44 var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth))// s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set
45 var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
46 let decrypt_text = CryptoJS.enc.Utf8.stringify(decrypt).toString()
47 if (is_json) {
48 decrypt_text = JSON.parse(decrypt_text)
49 }****
50 return decrypt_text
51 }

原文地址:https://blog.51cto.com/11395518/2482607

时间: 2024-10-27 07:10:01

基于python3和Vue实现AES数据加密的相关文章

python3 + Vue 应用 AES 数据加密

python3 + Vue 应用 AES 数据加密 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对称加密算法也就是加密和解密用相同的密钥,具有以下几个特点: 1.最常用的对称加密算法 2.密钥建立时间短.灵敏性好.内存需求低 3.实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组) 4.密钥长度128/192/256,其中192与256需要配置无政

基于Python3 神经网络的实现

基于Python3 神经网络的实现 本次学习是Denny Britz(作者)的Python2神经网络项目修改为基于Python3实现的神经网络(本篇博文代码完整).重在理解原理和实现方法,部分翻译不够准确,可查看Python2版的原文.原文英文地址(基于Python2) 概述如何搭建开发环境 安装Python3.安装jupyter notebook以及其他科学栈如numpy pip install jypyter notebook pip install numpy 生成测试数据集 # 导入需要

使用openssl库实现RSA、AES数据加密

使用openssl库实现RSA.AES数据加密 openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做法是使用对称密钥加密数据,然后再把这个只在当前有效的临时生成的对称密钥用非对称密钥的公钥加密之后传递给目标方,目标方使用约定好的非对称密钥中的私钥解开,得到数据加密的密钥,再进行数据解密,得到数据,这种使用方式很常见,可以认为是对HTTPS的裁剪.对称

lua 与 php 通过AES数据加密进行通讯

最近公司有款<围住神经猫>的微信小游戏火爆的不行!公司又决定开发一系列的神经猫的小游戏,于是,我被拉过来了. 后来使用cocos-2dx 开发一款小游戏,客户端用的是lua脚本,为了服务器与客户端交互的安全性,我们决定对API接口 传输的JSON数据进行加密.解密.一般情况就是客户端加密,服务器段进行解密: lua客户端使用的是一个纯lua写的库:aeslua,下载地址:http://luaforge.net/projects/aeslua/ 但是该库是有问题的:用该库加密解密是没有问题的,但

基于Python3的漏洞检测工具 ( Python3 插件式框架 )

[TOC] Python3 漏洞检测工具 -- lance lance, a simple version of the vulnerability detection framework based on Python3. 基于Python3的简单版漏洞检测框架 -- lance 可以自定义poc或exp插件,可以指定要加载的poc或exp. 代码已经上传到Github : https://github.com/b4zinga/lance screenshot requirements pyt

基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)

实全资讯采用基于Html5 Plus + Vue + Mui 移动App.主要实现功能包括: 实现搜索站点设置 实现搜索关键字定义 实现搜索资讯保存.删除功能. 主界面实现关键字搜索.预定义关键字搜索,下拉刷新,支持搜索结果保存.分享. 我的界面主要是展示自己保存的搜索资讯,支持删除.分享. 设置界面主要实现搜索站点.初始搜索关键字定义. 搜索站点目前支持:凤凰资讯.参考信息.腾讯资讯.百度资讯: 读取数据 /*读取内容*/ shiquan.readNews = function(callbac

基于axios的vue插件,让http请求更简单

ajax-plus 基于axios 的 Vue 插件 如何使用 npm 模块引入 首先通过 npm 安装 ```npm install --save ajax-plus or yarn add ajax-plus -S <p>然后在入口文件引入并配置:</p> <p>对标axios的配置,详见<a href="https://www.npmjs.com/package/axios" rel="nofollow noreferrer&q

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢?

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢? 项目你可以通过 easywebpack-cli 直接初始化即可完成或者clone egg-vue-webpack-boilerplate.下面说明一下从零如何搭建一个Egg + Webpack + Vue 的服务端渲染工程项目. 通过 egg-init 初始化 egg 项目 egg-init egg-vue-ssr // choose Simple egg app 安装 easywebpack-vue 和 egg

基于webpack的Vue.js开发环境快速搭建

1. 安装node node下载地址 2. 安装淘宝 NPM 镜像命令地址 3. 安装vue # 全局安装 vue-cli cnpm install -g vue-cli 4. 创建一个基于 "webpack" 模板的新项目 # 创建一个项目文件夹,在文件夹下shift + 右键,选择在此处打开cmd vue init webpack 5. 安装依赖 # 安装依赖 cnpm install #安装完毕后,在项目路径下多出了依赖包. 6. 运行项目 #运行项目 运行成功,默认8080 端