温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-02-01 10:41:32 来源:亿速云 阅读:341 作者:小新 栏目:开发技术

这篇文章主要介绍基于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

import base64 import json import re from Crypto.Cipher import AES from Crypto.Util.Padding import pad class AesCrypt(object):   """   AES 加密组件   """   def __init__(self, user, is_json=True):     # 这里的密钥长度必须是 16 24 32     key = 'suiyi_' + user.get('Auth')     self.is_json = is_json     self.encode_ = 'utf-8'     self.key = self.add_32(key)     print(self.key)     self.aes = AES.new(self.key, AES.MODE_ECB) # 创建一个aes对象   def add_32(self, key):     """     key 补齐32位     :param key:     :return:     """     # 字符串 a 不要小于32位     a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'     key += a     key = key[0:32]     return key.encode(self.encode_)   def aes_encrypt(self, text):     """     加密 支持 json 需在实例中制动 is_json = True     :param text:     :return:     """     if self.is_json:       text = json.dumps(text, ensure_ascii=False)     text = pad(text.encode('utf-8'), AES.block_size, style='pkcs7')     encrypt_text = self.aes.encrypt(text)     return base64.encodebytes(encrypt_text).decode().strip()   def aes_decrypt(self, text):     """     解密 支持 json 需在实例中制动 is_json = True     :param text:     :return:     """     text = base64.decodebytes(text.encode(self.encode_))     decrypt_bytes = self.aes.decrypt(text)     decrypt_text = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', decrypt_bytes.decode(       self.encode_))     if self.is_json:       decrypt_text = json.loads(decrypt_text)     return decrypt_text if __name__ == '__main__':   user = {'Auth': '0000_zhangziyi'}   pr = AesCrypt(user, is_json=True)   data = {"unit": 1, "theme": "cur", "look_detail": True, "zero_empty": True, "zero_hide": True, "data_type": "sum"}   en_text = pr.aes_encrypt(data)   print('密文:', en_text)   pr2 = AesCrypt(user, is_json=True)   print('明文:', pr2.aes_decrypt(en_text))

Vue (ECB)应用

安装:

cnpm install crypto-js --save

import store from '@/store' import CryptoJS from 'crypto-js/crypto-js' function add_secret_key (userAuth) {  let key = 'suiyi_' + userAuth  if (key.length < 32) {   let a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'   key += a.slice(0, 32 - key.length)  } else if (key.length > 32) {   key = key.slice(0, 32)  }  console.log(key)  return key } /**  * 加密  * @param wordimport { aes_encrypt, aes_decrypt } from '../../libs/crypto' aes_encrypt(this.data) aes_decrypt(this.AES_data)  * @param userAuth代码  * @param is_json  * @returns {string}  */ export const aes_encrypt = (word, userAuth, is_json = true) => {  if (is_json) {   word = JSON.stringify(word)  }  var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth)) // s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set  var srcs = CryptoJS.enc.Utf8.parse(word)  var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })  return encrypted.toString() } /**  * 解密  * @param word  * @param userAuth  * @param is_json  * @returns {string}  */ export const aes_decrypt = (word, userAuth, is_json = true) => {  var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth))// s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set  var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })  let decrypt_text = CryptoJS.enc.Utf8.stringify(decrypt).toString()  if (is_json) {   decrypt_text = JSON.parse(decrypt_text)  }  return decrypt_text }

以上是“基于python3和Vue实现AES数据加密的示例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI