Java 字符串加密解密示例(加密后长度小于16位)
由于身份证号码是唯一的且不可更改的,为了保护用户隐私,一般不建议对身份证号码进行加密和解密。但是,如果您有其他需要加密的字符串,可以参考以下代码:
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 著作权归作者所有。请勿转载和采集!