我正在为金融科技产品开发一个 Android 库。 我想将 AAR 文件的使用限制为仅经过身份验证的用户。 我们对每个客户端都使用访问 key 进行服务器验证。 还有其他客户端验证吗? 保护我的库的最佳机制是什么?
最佳答案
最好的解决方案是在服务器端验证托管应用程序的包名称和签名的哈希 key 。
不要将哈希 key 作为 SDK 的参数,让 SDK 在运行时读取它并将其传递给服务器。
public String getCertificateHash(Context context) {
String hashKey = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
hashKey = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
LogUtil.printObject(e);
} catch (NoSuchAlgorithmException e) {
LogUtil.printObject(e);
}
return hashKey.trim();
}
关于android-library - 保护 Android 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47279873/