(资料图片)
不论前途如何,不管发生什么事情,我们都不失去希望,希望是一种美德。——《雨果传》
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一样,都是通过分组加密、分组解密。所谓分组...
1、国庆节游牡丹公园今天是国庆节,爸爸说要去曹州牡丹园玩,我别提...
1、艾笑彤(Amelia),中国影视演员、国内著名模特,凭借着青春靓丽...
03月11日06时新疆和田疫情数据阳了以后为什么会腰疼?应该怎么办?...
1、受众人群专指广告等服务面向的对象。2、是具有某共同特点的一类...
风吹过山丘,山丘曲线摇曳,变柔了;水流过岩石,岩石拥有了被时光打磨...
佩蒂股份近日在机构调研时表示,鸡肉是公司产品重要的原材料之一,...
题字:朱志良教授主办单位尚艺美术馆指导单位无锡市文学艺术界联合...
1、就是海水进入到了陆地与海洋原来的分界线以内。2、主要有两种形...
人身体上什么东西是去掉之后对我们没有影响又不会痛的?答案是毛发...
近日,极电光能完成数亿元A轮融资,由深创投领投,鼎晖百孚等机构跟...
1、汉斯•克里斯蒂安•安徒生(1805~1875)。2、诞生于丹麦。本文到...
1、效果挺好的!我现在正在使用中、、大概用了一个多礼拜吧!我的过...
1、鱼想起了过去,还有最后一句话:让鸟儿爱上老林。2、“飞鸟眷恋...
【发布声明】本文源自学生投稿,为学生真实考研经验,授权勤思发布...
看手相:IReer是一款没有广告的免费移动电子书iReader。重点是免费...
1、启动电脑,启动到windows10开机LOGO时按住电源键强制关机,反复...
台陆委会今天(9日)下午召开记者会,宣布启动“恢复两岸空运客运航...
1、9555是招商银行呼叫中心的客服电话。2、用户拨打95555即可获得24...
1、10月下旬,采收果实,脱种后除去果壳等杂质,将种子湿藏或干藏。...
统一毛利率11年来首次跌破30%,去年方便面业务营收增近18% 食品...
1、首先,第一步,我们需要steam,然后打开csgo游戏。2、第二步:进...
加华资本官微消息,3月9日,小菜园宣布完成数千万美元融资,投资方...
1、怎么查自己银行卡的开户行。本文就为大家分享到这里,希望小伙伴...
1、有啊,我现在就在玩我是在易玩游戏盒子上下载的,那个里有很多游...
中国女排北仑集训仍在紧锣密鼓的进行着,姑娘们在蔡斌的率领下分别...
1、楼主问的是原因不是影响人类排放的一些气体如二氧化碳、甲烷、氯...
1、1.天行健,君子以自强不息 ——《周易》(鉴赏:作为君子,应该...
1、晕,现代汉语规范一级字(常用字),普通话读音为yùn、yūn,最...
1、毕畅,女,1989年7月4日出生于辽宁省抚顺市,毕业于沈阳民族艺术...