java.security.*篇(3)AES加密解密demo
时间:2023-02-23 03:02:47 来源:阿里云
Aes是对称加密,所谓对称加密就是加密和解密均用同样的key即可,非对称加密解密参考《java.security.*篇(1)RSA加密解密》
(资料图)
涉及类CipherSecretKeySpecIvParameterSpec
试用场景
由于是对称机密,因此适合一些加密破解不是很核心的场景,
适用场景主要如下:
非核心机密内容的通信,比如服务端-客户端聊天通信
非核心机密文件加密,查看时解密
非核心机密数据库数据内容加密,查看时解密等等
ase加密解密详细demo如下
//加密key必须是16bytes长度privatestaticfinalStringAES_KEY="aes-key-aes-key?";//cbc模式向量iv必须是16bytes长度privatestaticfinalStringAES_IV="abcdefg123456789";
/***@description:demosofjdk8java.securityCipherSecretKeySpecIvParameterSpec*Aes算法加密解密*/@TestpublicvoidtestAesEncryptAndDecryptthrowsException{Stringdata="你好世界";System.out.println("需要加密的字符串:"+data);StringencryptData=encryptAes(data);System.out.println("aes加密后的字符串为:"+encryptData);StringdecryptData=decryptAES(encryptData);System.out.println("aes解密后的字符串为:"+decryptData);}
加密方法
/***@description:aes加密方法*@paramdata传入待加密数据*@return加密后的字符串**/publicStringencryptAes(Stringdata)throwsException{//创建密码器对象并获取aes/cbcinstanceCiphercipher=Cipher.getInstance("AES/CBC/NoPadding");//获取块大小intblockSize=cipher.getBlockSize;//获取要加密数据字节byte[]dataBytes=data.getBytes;//获取字节长度intplaintextLength=dataBytes.length;//判断数据字节长度是否是块大小倍数,不是的话补齐if(plaintextLength%blockSize!=0){plaintextLength=plaintextLength+(blockSize-(plaintextLength%blockSize));}//初始化字节数组并将数据拷贝过去byte[]plaintext=newbyte[plaintextLength];System.arraycopy(dataBytes,0,plaintext,0,dataBytes.length);//初始化aeseySpecSecretKeySpeckeyspec=newSecretKeySpec(AES_KEY.getBytes,"AES");//初始化iv向量,可增加加密算法的强度,cbc模式必须IvParameterSpecivspec=newIvParameterSpec(AES_IV.getBytes);//初始化cipher并赋值为encrypt对象cipher.init(Cipher.ENCRYPT_MODE,keyspec,ivspec);//执行加密byte[]encrypted=cipher.doFinal(plaintext);//base64转码加密数据returnBase64.encodeUrlSafe(encrypted).trim;}
解密方法
/***@description:aes解密方法*@paramdata传入加密后的数据*@return解密后的字符串**/publicStringdecryptAES(Stringdata)throwsException{//base解码数据byte[]encrypted1=Base64.decode(data);//初始化密码器并获取aes/cbc模式对象Ciphercipher=Cipher.getInstance("AES/CBC/NoPadding");//获取aesKeySpecSecretKeySpeckeyspec=newSecretKeySpec(AES_KEY.getBytes,"AES");//初始化iv向量,可增加加密算法的强度,cbc模式必须IvParameterSpecivspec=newIvParameterSpec(AES_IV.getBytes);//初始化cipher对象为decrpt模式cipher.init(Cipher.DECRYPT_MODE,keyspec,ivspec);//执行解码byte[]original=cipher.doFinal(encrypted1);//转为字符串并返回StringoriginalString=newString(original);returnoriginalString.trim;}
输出结果
最新文章推荐
- java.security.*篇(3)AES加密解密demo
- yadikar38_yadi-世界最资讯
- 麝鼠肉能吃么_麝鼠 快看
- 当前速讯:聊天机器人ChatGPT爆火,37岁幕后天才推手:8岁学会编程20岁从斯坦福辍学
- 世界聚焦:yellow歌词中文_yellow歌曲简介
- Godox宣布推出用于模块化闪光灯系统的新型R200环形闪光灯头
- 首航高科2月22日快速上涨_环球精选
- 西游记搞笑段子_西游记搞笑
- 全球快播:有什么危害_有什么危害谈谈你的看法
- 嗜热脂肪芽孢杆菌生物指示剂培养基_嗜热脂肪芽孢杆菌生物指示剂-天天信息
X 关闭
资讯中心
2021-10-18

2021-10-18

2021-10-18

2021-10-18
X 关闭
热点资讯
-
1
刘向东:推动数实融合首先要增强数字经济服务实体经济的能力
-
2
上海籍阳性夫妻内蒙古密接、次密接者出现初筛阳性情况
-
3
内蒙古二连浩特:市民非必要不出小区、不出城
-
4
重庆一名潜逃24年的持枪抢劫嫌犯落网
-
5
销售有毒、有害食品 郭美美获刑二年六个月
-
6
陕西新增6名确诊病例1名无症状感染者 西安全面开展排查管控
-
7
《加强建设中国风湿免疫病慢病管理》倡议书:建立基层医院独立风湿科
-
8
游客因未购物遭导游辱骂?九寨沟:相关部门已介入调查
-
9
郭美美再入狱!销售有毒有害食品获刑2年6个月
-
10
2020年黄河青海流域冰川面积和储量较十年前缩减
-
11
5名“摸金校尉”落网 内蒙古警方破获一起盗掘古墓葬案