(资料图)
不论前途如何,不管发生什么事情,我们都不失去希望,希望是一种美德。——《雨果传》
MD5
、SHA
等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密。双向加密是可逆的,存在密文的密钥。对称加密是指加密和解密使用相同的密钥,包括AES
加密、DES
加密等。非对称加密是指加密和解密使用不同的密钥,包括RSA
加密等。是用来替代DES的新一代分组加密算法。AES支持三种长度的密钥:128位、192位、256位。AES:高级加密标准(Advanced Encryption Standard)是美国联邦政府采用的一种区块加密标准,是目前最流行的一种
对称加密算法
。
AES
的加解密过程和DES
一样,都是通过分组加密、分组解密。所谓分组加密,就是将待加解密的内容按照128
位进行分组,将密钥按照128
位、192
位、256
位进行分组,分别将分组后的明文与相应分组后的密钥进行加解密。
加密: 明文与密钥分组后,对每组:明文组与密钥组处理 -> 轮密钥加 -> 10轮加密 -> 密文组 解密: 对每组:密文组 -> 轮密钥加 -> 10轮解密 -> 明文组
明文分组: 每组长度相等,都是128位(16字节); 密钥分组: 有128位、192位、256位,推荐加密轮数分别为 10、12、14
密钥组处理: 以密钥分组每组128位为例(则推荐加密轮数为10,前9次执行操作一样,第十次有所不同) 类似地,128位密钥也是用字节为单位的矩阵表示,通过密钥编排函数,形成具有44个元素的序列W[0],W[1], … ,W[43](每个元素4个字节);其中,W[0],W[1],W[2],W[3]为原始密钥,其余40个元素分为10组,每组4个元素(4*4=16字节),分别用于10轮加密。
AES加密算法涉及4种操作: 字节替代(SubBytes)
、行移位(ShiftRows)
、列混淆(MixColumns)
和轮密钥加(AddRoundKey
)。下图给出了AES加解密的流程:
public static String genAesSecret(){ try { KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); //密钥长度,单位:字节,AES支持128、192、256字节长度的密钥,上面文章已介绍 keyGenerator.init(128); SecretKey sk = keyGenerator.generateKey(); byte[] b = sk.getEncoded(); return Base64.encodeBase64String(b); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); throw new RuntimeException("没有此算法"); } }
public static String aesEncrypt(String content) throws Exception { //指定加密算法 Cipher cipher = Cipher.getInstance("AES"); //创建加密规则:指定key和加密类型 SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET.getBytes(), "AES"); //指定加密模式为加密,指定加密规则 cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); //调用加密方法 byte[] result = cipher.doFinal(content.getBytes()); //用Base64编码 return new String(java.util.Base64.getEncoder().encode(result)); }
public static String aesDecrypt(String content) throws Exception { //Base64解码 byte[] result = java.util.Base64.getDecoder().decode(content); //指定加密算法 Cipher cipher = Cipher.getInstance("AES"); //创建加密规则:指定key和加密类型 SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET.getBytes(), "AES"); //指定加密模式为解密,指定加密规则 cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); return new String(cipher.doFinal(result)); }
注意:SECRET.getBytes()
我这里是一个常量密钥,通过密钥生成后写成常量SECRET
。
安装依赖
npm install crypto-js --save-dev
// 引入import CryptoJS from "crypto-js"// 密钥const AES_KEY = "P@S5W0rDK3yBACHU" // 后端提供// 解密export function decrypt (word) { var key = CryptoJS.enc.Utf8.parse(AES_KEY) var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return CryptoJS.enc.Utf8.stringify(decrypt).toString()}
关键词:
摩洛哥南部地震致至少296人遇难 血液中心呼吁民众积极献血
被蜱虫咬属于意外险吗?赔偿要提供什么材料?
2023国际高桥极限运动邀请赛举行
筹集5693套保租房 开建4267套棚改房 宜昌5000余“新市民”圆了“安居梦”
富士X100V迭代款将更新 配备新镜头
持续推进长三角一体化,沪苏水域交通组织一体化若干措施发布
【青视点】剑指“中国休闲体育之城” 莱西打算这么干
长城汽车魏建军转型中很擅长做“毫不犹豫”的事
幻想传说修复弓(幻想传说x)
祝贺!中国女乒包揽四强!王艺迪逆转伊藤美诚,日本女乒全军覆没
烧瓷器的失败作品“嘴硬壶”意外成网红 山东买家288元买下 2000元不愿意转让
“种黄花这条路走对啦!”
火山引擎ByteHouse上线ELT能力,进一步降低企业数字化维护成本
iFixit拆毁了三星的新款GalaxyS22和S22Ultra智能手机
600元可亲吻? 莫把“沉浸式消费”玩成“沉沦式消费”
今日车轱辘是什么意思饭圈(车轱辘话什么意思)
公职人员被儿子举报出轨朋友妻子 官方回应:已被停职并立案调查
人工智能赋能可持续投资
探索数字化普惠金融新路径
通辽市奈曼旗300MW风电项目二标段37台风机吊装完成
安卓将迈入2TB时代!三星Galaxy S24 Ultra首发:售价过万
亚盛集团:8月31日融资净买入276.08万元,连续3日累计净买入734万元
南京新百4140万预付款背后 交易对手疑为控股股东关联方
sw2018破解版详细安装教程云魔方(solidworks魔方云学院)
江苏南通可提供东芝洗碗机维修服务地址在哪
公大研招网 公大
世茂股份:截止8月底未能按期支付债务累计84.8亿元
8月31日超讯通信涨停分析:智能制造,5G,智慧物流概念热股
捷途大圣对比长安CS55 PLUS,谁高颜高配强动力,更讨年轻人欢心?
新城发展:一年内到期债务256.16亿元,确保每一笔债务提前或到期偿付
主板纺织股(主板纺织上市企业名单2023)
宋祖儿前公司否认实名举报 称未参与艺人纳税申报
9月1日起实施!呼和浩特市三部门联合通知
供应链人士称Wi-Fi 7出货将于2024年放量
首张水上加油站危化品经营许可证颁发 崇川区18家相关企业计划年底前全部领证
北京市全力以赴确保“课前到书,人手一册”迎开学
相关新闻