js java 加密算法_AES(对称加密算法)的JS实现和JAVA实现

本文介绍了AES加密算法的基本概念,包括其作为对称加密算法的特点、秘钥长度、填充方式和加密模式。提供了JAVA实现的AES加密和解密示例代码,以及JS端使用CryptoJS库进行AES加密的示例。文章强调了加解密时必须使用相同的模式和填充方式。
摘要由CSDN通过智能技术生成

文首声明:本文不讲算法实现

AES介绍

AES算法是一种典型的对称加密算法,不同于md5这种摘要算法是不可逆的,AES是可以通过秘钥解密的,一般用于对私密信息的保密。

md5算法一般用文件的完整性校验,可以根据文件的所有的字节生成一个md5,也经常用于登录的鉴权,将密码的md5值存于数据库,登录时比较前端输入的密码的md5值和数据库的md5值。

AES算法中有三个重要的定义:秘钥,加密模式,填充

秘钥

AES通过秘钥加解密,支持128位,192位,256位秘钥长度,也就是平时说的AES128,AES192,AES256,秘钥越长效率越低,保密性越强。

填充

AES算法加密时会将明文拆分成128bit的数据块,分别进行加密,也就是如果明文长度非128bit的整数倍则必出现不满128bit的数据块,填充就是在此时起作用的,填充方式如下。

NoPadding:不做任何填充,但是要求明文必须是16字节的整数倍。

PKCS5Padding(默认):如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

ISO10126Padding:如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

模式

AES的加密模式体现在加密的处理,总共五种。

CBC模式:电码本模式 Electronic Codebook Book

ECB模式(默认):密码分组链接模式 Cipher Block Chaining

CTR模式:计算器模式 Counter

CFB模式:密码反馈模式 Cipher FeedBack

OFB模式:输出反馈模式 Output FeedBack

加解密必须使用相同的模式和填充方式

JAVA实现

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.lang3.StringUtils;

import sun.misc.BASE64Decoder;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.cr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值