12 changed files with 216 additions and 8 deletions
@ -0,0 +1,103 @@ |
|||
package com.zdxt.code.utils; |
|||
|
|||
import cn.hutool.core.codec.Base64; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.crypto.SecureUtil; |
|||
import cn.hutool.crypto.asymmetric.KeyType; |
|||
import cn.hutool.crypto.asymmetric.RSA; |
|||
import cn.hutool.crypto.symmetric.SymmetricAlgorithm; |
|||
import com.zdxt.code.utils.HttpUtil; |
|||
|
|||
import java.nio.charset.StandardCharsets; |
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 证件号加密工具 |
|||
* |
|||
* @author joelzzhang |
|||
*/ |
|||
public class IdCardCryptoUtil { |
|||
|
|||
/** |
|||
* 以下字符串为密钥,可以通过配置来传递 |
|||
*/ |
|||
public static final String OUTER_AES_KEY = "u3BPiZWALItH27e34oO6bw=="; |
|||
public static final String INNER_AES_KEY = "ol1hV81iCruo+thxtZGnCg=="; |
|||
public static final String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDADIVdRXNyT5pmGxSUfwEup2Y1YCz7VfibMyyQhkpVP3ByKsoFDjZ30yW5gv70sQbqn/MCthTFqwh3/I/YLfthM3vU7TdlmNfnlKcQ6prxYofLkX8akrhgQVFerb/4DhcbAk5xvx12Dkeh/nzDf5Qw2K3CymRPnr4zN6ZjAL79HwIDAQAB"; |
|||
public static final String PRIVATE_KEY = "MIICdAIBADANBgkqhkiG9w0BAQEFAASCAl4wggJaAgEAAoGBAMAMhV1Fc3JPmmYbFJR/AS6nZjVgLPtV+JszLJCGSlU/cHIqygUONnfTJbmC/vSxBuqf8wK2FMWrCHf8j9gt+2Eze9TtN2WY1+eUpxDqmvFih8uRfxqSuGBBUV6tv/gOFxsCTnG/HXYOR6H+fMN/lDDYrcLKZE+evjM3pmMAvv0fAgMBAAECf2rTWPVVrHuC/ywzFz+CmSXAxLNSZbMCH0doYvs0hIrmvtjCjgN1F6P1z2yUpHBEbsetZEwdyQnEf74+WCuBaFIYjmQm/05grIxam/QrGibnV5qNiA0VeCkj6bUy+z5mt3/ithgzjmOiYIgMenjf6ut6RmgRDodgJiFbvSvfskECQQDoqGMNaUV+Y/O9h+l9eOCkSUOjOsL9WDRL34ei/jf7VFFYBZLs2GMzLunDkDz1dHvufDiMPeHUTTN8zIEEpNMVAkEA01Ehf9Np2zUqFQp3SW/fHVsaGM97JsbsTQrsDdUWwZLJTSQ7Yf+yg21GkNa8Mmlsp1OLyS607HV7lPlKO0LsYwJBAN1LTOv0taUCbVRZcj1mPEYHac5Ylh9jRlrkwp7GL3lfOf//TUD6kWCdvrvE9jaCFV9ByIecVLEavV53JkDEhgECQHgR40z0XXOWs8Cc38a0cDwH5b4vNjSEVwQ3roT1jSaUNxlD+xHl7hLLZosp2Gl0ia5RxF2d0mOBJaUyOMGPdy0CQCLBU3995JMoUyLgt2+Riw0PFbdxFEnKGyshAt5Q957/hC6L/V5tQNnh/AM9q23DIUQGb1whhxdIzV12qFSSS34="; |
|||
|
|||
public static void main(String[] args) { |
|||
String encode = Base64.encode(SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded()); |
|||
System.out.println(encode); |
|||
// String content = "1111111111";
|
|||
// String value = asymmetricEncryptIdCard(PUBLIC_KEY, null, content);
|
|||
// System.out.println(value);
|
|||
// String decryptIdCard = asymmetricDecryptIdCard(null, PRIVATE_KEY, value);
|
|||
// System.out.println(decryptIdCard);
|
|||
// Map<String,Object> heardMap = new HashMap<>();
|
|||
// try {
|
|||
// heardMap.put("x-auth-channel","123456");
|
|||
// heardMap.put("x-auth-app-code","zfjdm");
|
|||
// String s = HttpUtil.HttpSendPost("http://egbpub.siqhz.com/egb/api/thirdauth/pub/auth/token/",
|
|||
// null, heardMap, "");
|
|||
// System.out.println(s);
|
|||
// } catch (Exception e) {
|
|||
// e.printStackTrace();
|
|||
// }
|
|||
|
|||
System.out.println(symmetricEncryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "8892121545124124")); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 证件号通过RSA的公钥加密 |
|||
* |
|||
* @param publicKey 公钥Base64 |
|||
* @param privateKey 私钥Base64 |
|||
* @param content 被加密的字符串 |
|||
* @return 加密后的字符串 |
|||
*/ |
|||
public static String asymmetricEncryptIdCard(String publicKey, String privateKey, String content) { |
|||
RSA rsa = SecureUtil.rsa(privateKey, publicKey); |
|||
byte[] encrypt = rsa.encrypt(content, StandardCharsets.UTF_8, KeyType.PublicKey); |
|||
return Base64.encode(encrypt); |
|||
} |
|||
|
|||
/** |
|||
* 证件号通过RSA的私钥解密 |
|||
* |
|||
* @param publicKey 公钥Base64 |
|||
* @param privateKey 私钥Base64 |
|||
* @param content 被解密的字符串 |
|||
* @return 解密后的字符串 |
|||
*/ |
|||
public static String asymmetricDecryptIdCard(String publicKey, String privateKey, String content) { |
|||
RSA rsa = SecureUtil.rsa(privateKey, publicKey); |
|||
byte[] decrypt = rsa.decrypt(content, KeyType.PrivateKey); |
|||
return StrUtil.str(decrypt, StandardCharsets.UTF_8); |
|||
} |
|||
|
|||
/** |
|||
* 证件号对称加密后入库 |
|||
* |
|||
* @param key 密钥Base64 |
|||
* @param content 被加密的字符串 |
|||
* @return 加密后的字符串 |
|||
*/ |
|||
public static String symmetricEncryptIdCard(String key, String content) { |
|||
return SecureUtil.aes(SecureUtil.decode(key)).encryptBase64(content); |
|||
} |
|||
|
|||
/** |
|||
* 证件号对称解密 |
|||
* |
|||
* @param key 密钥Base64 |
|||
* @param content 被解密的字符串Base64 |
|||
* @return 解密后的字符串 |
|||
*/ |
|||
public static String symmetricDecryptIdCard(String key, String content) { |
|||
return SecureUtil.aes(SecureUtil.decode(key)).decryptStr(content); |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue