
AES的加解密过程和DES一样,都是通过分组加密、分组解密。所谓分组加密,就是将待加解密的内容按照128位进行分组,将密钥按照128位、192位、25
腾讯云 2023-03-12 15:20:19
(相关资料图)
不论前途如何,不管发生什么事情,我们都不失去希望,希望是一种美德。——《雨果传》
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()}
AES的加解密过程和DES一样,都是通过分组加密、分组解密。所谓分组加密,就是将待加解密的内容按照128位进行分组,将密钥按照128位、192位、25
1、《植物与食物》是探微动物与植物两大生命形式之间相互较量、相互适应的永恒张力的图书。2、2020年6月由商务印书馆
1、杨宝璋先生一生喜欢“文哏”相声(指有知识性的段子)如:《解学士》《苏东坡三吃鱼》《刘罗锅传奇》(原名满汉斗)、《小神
03月12日00时福建福州疫情数据阳了以后为什么会腰疼?应该怎么办?以下为详情!一、03月12日00时福州疫情数据概览
1、有时需要多人进行聊天,这时需要群发消息,可以创建群。2、但有些人使用手机QQ群发的时候经常会遇到这样的问题就是找不到群发的入口,或者
茫茫雪原策马奔腾、江湖侠客行、穿越古今载歌载舞……近日,全国各地文旅局长们“卷”翻了个个使出浑身解数各种“变装”为家乡代
1、这个一般看是什么样的病了哦,比如包皮过长,是要做包皮过长切割手术哦前列腺增生影响排尿可以手术治疗,常见的手术方式有:
1、开合传媒是一家专业从事影视制作与公关传播的新锐文化传媒公司。2、开合传媒目前设有厦门、北京和广州三个工作站,并且旗下
1、参加人数共12人。2、分成3人1组,共四组(工作人员进行分配,参赛者不知道自己队友是谁)游戏开始前给每个人背上都
1、首先,在计算机桌面上,单击菜单按钮。2、然后单击左侧的设置选项。3、然后点击更新和安全进入里面。4、然后单击左侧的恢
老胡点评把『肥』施到个体工商户发展的『根』上个体工商户规模小,抗风险能力弱,受经济波动影响大。近年来,受超预期因素的影响,个体工商户
春季野菜大量上市!医生提醒:尝鲜需谨慎
1、第7节所有答案。本文到此分享完毕,希望对大家有所帮助。
1、汤灿没事。2、汤灿,1975年6月12日出生于湖南省株洲市,中国内地女歌手,中国音乐学院硕士毕业。3、1996年,因
1、打开支付宝,点击市民中心。2、然后,点击公积金功能。3、接下来点击全国公积金查询。4、接下来,点击人脸识别验证。5、