private static <T> void encrytDESField(T t, Stirng lastKeyId, Sting lastKey, PropertyDescripter p) throws IllegalAccessException, InvocationTargetException, CryptException {
// 判断该字段是否需要加密
if(CryptFields.CRYPT_MAP.get(t.getClass()).contains(p.getName())) {
Method readMethod = p.getReadMethod();
if(!readMethod.isAccessible()) {
readMethod.setAccessible(true);
}
Object obj = readMethod.invoke(t);
if((obj instanceof String) && obj != null) {
String cipher = ThreeDESUtils.encryptThreeDESECB(obj.toString(), lastKey);
p.getWriteMethod().invoke(t, cipher);
}
}
// 将密钥主键存放到desKey字段中
if(DES_KEY.equals(p.getName())) {
Method writeMethod = p.getWriteMethod();
if(!writeMethod.isAccessible()) {
writeMethod.setAccessible(true);
}
}
}