System.out.println(str); //c3b68dca7f530043db5590f8c5e53a1a
//方式二
String string = DigestUtil.md5Hex(testStr);
System.out.println(string); //c3b68dca7f530043db5590f8c5e53a1a
}
//非对称加密
@Test
public void fun2() {
//非对称加密
RSA rsa = new RSA();
//获得私钥
rsa.getPrivateKey();
rsa.getPrivateKeyBase64();
//获得公钥
rsa.getPublicKey();
rsa.getPublicKeyBase64();
//公钥加密,私钥加密
byte[] encrypt = rsa.encrypt(StrUtil.bytes(“RAS测试”, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
String encode = Base64.encode(decrypt);
System.out.println(encode); //UkFT5rWL6K+V
//单元测试
// Assert.assertEquals(“我是一段测试aaaa”, StrUtil.str(decrypt, CharsetUtil.UTF_8));
//私钥加密,公钥解密
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes(“RAS测试”, CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
String encode2 = Base64.encode(decrypt2);
System.out.println(encode2); //UkFT5rWL6K+V
}
@Test
public void fun4(){
String content =“asdf1234”;
byte[] key = “hahaaha”.getBytes();
//构建
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
//加密
byte[] encrypt = aes.encrypt(content);
//解密
byte[] decrypt = aes.decrypt(encrypt);
}
//对称加密
@Test
public void fun3() {
//第一种:以AES算法
String content = “test中文”;
//随机生成密钥
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
//构建
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
//加密
byte[] encrypt = aes.encrypt(content);
//解密
byte[] decrypt = aes.decrypt(encrypt);
//加密16进制表示
String encryptHex = aes.encryptHex(content);
System.out.println(“AES加密16进制表示:” + encryptHex); //46953def8ec02e21f7c9bb4405243a70
//解密为字符串
String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
System.out.println(“AES解密为字符串:” + decryptStr); //test中文
//第二种 DESede加密
String content2 = “test中文”;
byte[] key2 = SecureUtil.generateKey(SymmetricAlgorithm.DESede.getValue()).getEncoded();
SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DESede, key2);
//加密
byte[] encrypt2 = des.encrypt(content2);
//解密
byte[] decrypt2 = des.decrypt(encrypt2);
//加密为16进制字符串(Hex表示)
String encryptHex2 = des.encryptHex(content2);
System.out.println(“DESede加密16进制表示:” + encryptHex2); //fcedfe2478d3e65b1a525d60676a6d88
String decryptStr2 = des.decryptStr(encryptHex2);
System.out.println(“DESede解密为字符串:” + decryptStr2); //test中文
//第三种AES封装
String content3 = “test中文”;
//随机生成密钥
byte[] key3 = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
//构建
AES aes3 = SecureUtil.aes(key3);
//加密
byte[] encrypt3 = aes3.encrypt(content3);
//解密
byte[] decrypt3 = aes3.decrypt(encrypt3);
//加密为16进制表示
String encryptHex3 = aes3.encryptHex(content3);
System.out.println(“AES封装加密16进制表示:” + encryptHex3); //7300c26ae4081f9d9bd2395b9390f9ec
//解密为字符串
String decryptStr3 = aes3.decryptStr(encryptHex3, CharsetUtil.CHARSET_UTF_8);
System.out.println(“AES封装解密为字符串:” + decryptStr3); //test中文
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!