您可以将 SSL 与客户端身份验证一起使用。服务器必须知道应用程序的公钥,而应用程序必须知道服务器的公钥。应用程序的私钥使用密钥库存储在应用程序本身中,这是一种防止反编译的安全方法,请查看https://developer.android.com/training/articles/keystore.html
选择:
获取您的应用程序的哈希
public void traceKeyHash(Activity activity){
try {
PackageInfo info = activity.getPackageManager().getPackageInfo("your.package.here", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i(getClass().getName(), "Share - KeyHash: " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
现在您必须将哈希发送到您的服务器,但是......为了避免嗅探请求,您必须加密您的哈希。使用存储在密钥库中的私钥加密您的哈希,并使用服务器端的公钥解密消息,检查哈希是否与您注册的匹配。