hutool中身份证工具-IdcardUtil

身份证工具-IdcardUtil

String ID_18 = "321083197812162119";
String ID_15 = "150102880730303";

//是否有效
boolean valid = IdcardUtil.isValidCard(ID_18);
boolean valid15 = IdcardUtil.isValidCard(ID_15);

//转换
String convert15To18 = IdcardUtil.convert15To18(ID_15);
Assert.assertEquals(convert15To18, "150102198807303035");

//年龄
DateTime date = DateUtil.parse("2017-04-10");

int age = IdcardUtil.getAgeByIdCard(ID_18, date);
Assert.assertEquals(age, 38);

int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
Assert.assertEquals(age2, 28);

//生日
String birth = IdcardUtil.getBirthByIdCard(ID_18);
Assert.assertEquals(birth, "19781216");

String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
Assert.assertEquals(birth2, "19880730");

//省份
String province = IdcardUtil.getProvinceByIdCard(ID_18);
Assert.assertEquals(province, "江苏");

String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
Assert.assertEquals(province2, "内蒙古")
### Hutool 身份证信息加密和解密 为了实现身份证信息的加密与解密操作,可以利用 `Hutool` 提供的安全模块中的对称加密功能。具体来说,对于敏感数据如身份证号码,推荐采用 AES 或 DES 等算法来保障信息安全。 #### 添加 Maven 依赖 首先,在项目中加入必要的 Maven 依赖项以便使用 Hutool 的加解密特性: ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-crypto</artifactId> <version>5.7.15</version> </dependency> ``` 此版本包含了完整的安全组件支持[^1]。 #### 加密过程 下面展示了一个简单的例子用于说明如何通过 AES 方式对身份证号进行加密处理: ```java import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.symmetric.AES; public class IDCardEncryptDemo { private static final String KEY = "your-secret-key"; // 密钥长度需满足AES标准 public static void main(String[] args){ // 初始化AES对象并设置工作模式及填充方式 AES aes = SecureUtil.aes(KEY.getBytes()); // 待加密的数据源 String idNumber = "123456789012345678"; // 执行加密操作得到Base64编码后的字符串形式的结果 String encryptStr = aes.encryptBase64(idNumber); System.out.println("Encrypted ID Card Number: "+encryptStr); } } ``` 这段代码展示了如何创建一个基于给定秘钥的 AES 实例,并调用其方法完成对指定身份证号码串的实际转换。 #### 解密过程 当接收到经过上述流程加密过的身份证明编号时,则可通过相同的方式对其进行还原: ```java // 假设这是从前端传来的已加密的身份认证码 String encryptedData = "..."; // 创建相同的AES实例 AES aesDecryptor = SecureUtil.aes(KEY.getBytes()); try{ // 尝试解析输入参数为原始明文表示 byte[] decryptedBytes = aesDecryptor.decrypt(encryptedData); String originalText = new String(decryptedBytes,"UTF-8"); System.out.println("Decrypted Original Text:"+originalText); }catch(Exception e){ e.printStackTrace(); } ``` 这里需要注意的是,无论是执行加密还是解密动作之前都应当确保所使用的密钥一致;另外考虑到安全性因素建议定期更换密钥以增强保护力度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值