圆月山庄资源网 Design By www.vgjia.com
高级加密标准(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 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- lol全球总决赛哪只队伍最年轻 2024世界赛最年轻队伍排名
- lol全球总决赛lpl二号种子是谁 S14全球总决赛lpl二号种子队伍介绍
- 恩雅-雨过天晴DTS-WAV
- 王心雅《诗意琼瑶》DTS-WAV
- 阿丽娅《印象》DTS6.1-WAV
- PS官方晒《怪物猎人:荒野》公测启动页面!你准备好了吗?
- 《怪物猎人:荒野》新怪物“赫猿兽”PV公布:残暴巨兽登场!
- 童丽2024 《千愁记旧情》8月最新 限量1:1母盘直刻[WAV+CUE][1.1G]
- 陈奕迅《认了吧》[新加坡纸盒版] [WAV+CUE][1.1G]
- 群星《小夫妻 电视原声带》[320K/MP3][113.44MB]
- 孙楠.2004-燃烧【华纳】【WAV+CUE】
- 群星.2003-英皇精挑细选VOL.1【英皇娱乐】【WAV+CUE】
- 林姗.2024-寄天的记忆【豪记】【FLAC分轨】
- 陈洁丽-《可改变HQ2》2024[WAV+CUE]
- 福田进一2024《魔鬼随想曲》WAV