由于身份证号码是唯一的且不可更改的,为了保护用户隐私,一般不建议对身份证号码进行加密和解密。但是,如果您有其他需要加密的字符串,可以参考以下代码:

import java.util.Base64;

public class IdCardEncryption {
    // 加密密钥,可以自定义
    private static final String KEY = "mysecretkey";
    
    /**
     * 加密字符串
     * @param str 待加密的字符串
     * @return 加密后的字符串
     */
    public static String encrypt(String str) {
        String result = "";
        byte[] bytes = (str + KEY).getBytes();
        // 使用Base64编码,将加密后的字节数组转换为字符串
        result = Base64.getEncoder().encodeToString(bytes);
        // 返回加密后的字符串,长度小于16位
        return result.substring(0, 15);
    }
    
    /**
     * 解密字符串
     * @param str 待解密的字符串
     * @return 解密后的字符串
     */
    public static String decrypt(String str) {
        String result = "";
        byte[] bytes = Base64.getDecoder().decode(str);
        // 将解密后的字节数组转换为字符串,并去掉密钥部分
        result = new String(bytes).replace(KEY, "");
        return result;
    }
    
    public static void main(String[] args) {
        String idCard = "110101199001011234"; // 待加密的身份证号码
        String encryptedIdCard = encrypt(idCard);
        System.out.println("加密后的身份证号码:" + encryptedIdCard);
        String decryptedIdCard = decrypt(encryptedIdCard);
        System.out.println("解密后的身份证号码:" + decryptedIdCard);
    }
}

加密过程中,我们先将待加密的字符串与密钥拼接起来,然后将拼接后的字节数组使用Base64编码,得到加密后的字符串。由于Base64编码后的字符串长度为原字符串长度的4/3左右,因此我们只需要取前15个字符即可。

解密过程中,我们先使用Base64解码得到字节数组,然后将字节数组转换为字符串,并去掉密钥部分,得到解密后的字符串。


原文地址: https://www.cveoy.top/t/topic/mDKM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录