我正在为Fintech产品开发一个Android库。 我想将AAR文件的使用仅限于经过身份验证的用户。 我们使用每个客户端的访问密钥进行服务器验证。 还有其他客户端验证吗? 保护我的图书馆的最佳机制是什么?
答案 0 :(得分:1)
最佳解决方案是在服务器端验证托管应用程序的包名称和签名的哈希密钥。
不要将哈希键作为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();
}