一、通过数据库信息访问第三方数据库
本例子是从一张存储数据库信息表中查出第三方数据库信息,再进行访问的
1、 对数据库密码的加密、解密类
public classSecretHelper {public byte[] random(intlen) {byte[] buf = new byte[len];
random.nextBytes(buf);returnbuf;
}public byte[] password(byte[] plain) throwsGeneralSecurityException {
Mac mac= macKeysetHandle.getPrimitive(Mac.class);returnmac.computeMac(plain);
}public boolean verify(byte[] cipher, byte[] plain) {try{
Mac mac= macKeysetHandle.getPrimitive(Mac.class);
mac.verifyMac(cipher, plain);return true;
}catch(GeneralSecurityException e) {
logger.error("fail on verify password ", e);
}return false;
}public byte[] encrypt(byte[] plain, byte[] salt) throwsGeneralSecurityException {
Aead aead= aesKeysetHandle.getPrimitive(Aead.class);returnaead.encrypt(plain, salt);
}public byte[] decrypt(byte[] cipher, byte[] salt) throwsGeneralSecurityException {
Aead aead= aesKeysetHandle.getPrimitive(Aead.class);returnaead.decrypt(cipher, salt);
}
@PostConstructvoid init() throwsIOException, GeneralSecurityException {
random= newRandom();final var aes = new File("aes.json");if(aes.exists()) {
logger.info("load aes key from {}", aes);
aesKeysetHandle=CleartextKeysetHandle.read(JsonKeysetReader.withFile(aes));