我正在为金融科技的产品开发一个android库。我只想将AAR文件的使用限制在通过身份验证的用户。我们为每个客户端提供了带有访问密钥的服务器验证。还有其他客户端验证吗?保护我的图书馆的最佳机制是什么?
发布于 2018-01-19 05:26:11
最好的解决方案是在服务器端验证宿主应用程序的包名和签名的散列密钥。
不要将哈希键作为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();
}https://stackoverflow.com/questions/47279873
复制相似问题