
AES的加解密过程和DES一样,都是通过分组加密、分组解密。所谓分组加密,就是将待加解密的内容按照128位进行分组,将密钥按照128位、192位、25
腾讯云 2023-03-13 15:05:40
【资料图】
不论前途如何,不管发生什么事情,我们都不失去希望,希望是一种美德。——《雨果传》
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、 随着经济和交通的发展,很多人都喜欢跑去日本旅游和购物了,那么去日本购物买什么好呢,下面小编为大家介绍去日本购物最
山西运动员王嘉磊全国跳台滑雪冠军赛摘金
董事会预计将通过联邦存款保险公司的保险结合其他补偿措施收回于硅谷银行的大部份现金存款。董事会认为事件并不会对公司造成任何重大不利影响
一、题文陈伦在校读书时是个“打架大王”,屡次违反学校规章制度,虽然校长和班主任经常对他进行教育,但他仍不悔改。一天,他乘
1、一、过去分词表示所处的状态,retired指“处于退休的状态”,可以用来作定语或表语,如:aretir
1、一、轧字是一个多音字,有三个读音,分别是zhá、yà和gá。2、二、基本释义[zhá]压(
上次,我们学习了如何“退一步”,也即让步状语从句的知识考点。今天,小编打算分享一个新东西,帮大家理清楚世事的来龙去脉。它就是我们的—
1、交通运输专业考研方向主要有:道路与铁道工程:道路与铁道工程是交通运输工程的二级学科,主要开展路面结构合理性和材料性能
1、小说名称:少年之烽火岁月小说作者:我是巴图鲁小说类型:战争幻想小说状态:连载完成字数:276432字简介:李勇是一
峡江县气象台发布大雾黄色预警信号【III级 较重】【2023-03-11】
1、陈皮是成熟果皮(例如柑橘皮)经过晒干或低温干燥做成的。2、2、陈皮自然是放置时间比较久的柑橘皮。3、它完整的定义是水
03月11日12时河南郑州疫情数据阳了以后为什么会腰疼?应该怎么办?以下为详情!一、03月11日12时郑州疫情数据概览
1、炒海苔头的做法:2、紫菜头洗净去皮,切成细丝。3、坐在火上,放些油,放入葱花和八角。4、洋葱出香后,取出,放入紫菜头
灵石县气象局发布沙尘蓝色预警【Ⅳ级 一般】【2023-03-11】