我希望B只由使用或处理敏感数据(例如:密钥、国家id等)的private
方法A#getSensitiveData()
运行。
public final class A{
private transient final B sensitiveHolder; //set at Constructor
public A(B sensitiveHolder){
this.sensitiveHolder = sensitiveHolder;
}
private final byte[] getSensitiveData(){
return sensitiveHolder.getSensitiveData();
}
}
public final class B{
private transient final byte[] sensitiveData;//encrypt and set at Constructor
public final byte[] getSensitiveData(){
//check if it is run by A#getSensitiveData(); if it is, decrypt by DEK and give plaintext.
}
}
请考虑到代码会被混淆,所以请不要将任何包名作为String
。
我必须用SecurityManager#checkPrivilege()
和AccessController.doPrivileged()
写什么才能达到这样的效果?
编辑:显然这是不同的,因为所谓的“答案”不包含任何代码。正常工作的代码比“哦,做这个做那个”更有价值。
https://stackoverflow.com/questions/50407042
复制相似问题