我有一个API,我将从Android应用程序调用。身份验证是使用oauth2,我有ressource owner password
- 流。
因此,当我想获得一个accessstoken时,我需要用户名,密码,clientId和clientSecret。
我的问题是:如何在我的应用程序中存储clientSecret?我读到有人以字节存储它,并在需要时生成字符串。 我的想法是使用签名(SHA)作为clientSecret。 所以我发现了这个功能:
private String getKeyHash(String packagename)
{
String hash = "";
try
{
PackageInfo info = getPackageManager().getPackageInfo(packagename, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign= Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
}
catch (PackageManager.NameNotFoundException e)
{
}
catch (NoSuchAlgorithmException e)
{
}
return hash;
}
哪种解决方案更好/最安全? 或者有更好的方法吗?