hutool使用小结

本文详细介绍了Java中对称加密(如AES和DESede)和非对称加密(RSA)的使用方法,以及如何在Android开发中实现加密和解密操作。同时提到了一套针对Android开发者的完整学习资料,旨在帮助工程师提升技能。
摘要由CSDN通过智能技术生成

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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值