有没有办法限制同一应用程序内进程的密钥库访问,我的意思是,如果一个进程创建了一个密钥条目,则即使它属于同一应用程序,其他进程也无法访问该条目?
如果我理解正确并假设你的密钥是 String 类型,你可以做的是: 创建一个类,例如 KeyHandler:
public class KeyHandler{
// Singleton design pattern needed, not part of the code here
static Map<Integer, String> keysHolder = new HashMap<>();
public void addEntry(Integer entryID){
// add key here
}
public void getValue(Integer keyOfDictionary)
{
// return the String value (which is your keystore) according to the Integer
}
}
当你想使用它时,如果你想要一个运行时安全措施,你可以在任何需要使用它的类中创建一个随机整数作为它的密钥并将其添加到类中。例如:
// Where you define your class's members
static private int mEntryRandomKey = -1;
// In your init part:
if(mEntryRandomKey == -1){
Random random = new Random();
mEntryRandomKey = random.nextInt();
KeyHandler.getInstance().addEntry(mEntryRandomKey)
}
我没有在我的电脑上编写正确的代码,但这至少应该让您朝着您需要的方向前进。当然,这个工作的全部意义在于,在 KeyHandler 类中,您拒绝由不存在的 ID 进行的任何调用,并且只有由特定类创建的 ID 才能通过该类的对象访问。