我已将自己从Eclipse转移到Android Studio.现在我正在尝试使用我的地图应用程序.所以我需要我的SHA-1指纹证书号码.
当我使用Eclipse时,它正好在Windows - > Preferences - > Android - > Build下.但是在Android Studio中,我找不到这样的选项,以便我可以轻松找到指纹.我正在使用Windows.我从这个链接中读到:
当您从IDE运行或调试项目时,Android Studio会自动以调试模式签署您的应用程序.
所以我尝试在从此链接设置我的Java bin路径后在命令行中运行它,但遗憾的是找不到我的指纹.据说这是非法的选择.
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
Run Code Online (Sandbox Code Playgroud)
有没有办法从Android Studio中找到SHA-1指纹,就像在Eclipse中一样容易?由于我是Android Studio中的新手,找到它的完整过程是什么?
我想要添加的另一件事是我让我的Eclipse生成SHA-1指纹,之前我在Google开发者控制台中将该应用程序注册在该指纹上,并且我通过该API密钥在Eclipse中使用该应用程序.在Android Studio中我的项目是否可以使用相同的API密钥?
我想在Android中获取字符串的SHA256.
这是我要匹配的PHP代码:
echo bin2hex(mhash(MHASH_SHA256,"asdf"));
//outputs "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b"
Run Code Online (Sandbox Code Playgroud)
现在,在Java中,我正在尝试执行以下操作:
String password="asdf"
MessageDigest digest=null;
try {
digest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
digest.reset();
try {
Log.i("Eamorr",digest.digest(password.getBytes("UTF-8")).toString());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但这打印出来:"a42yzk3axdv3k4yh98g8"
我在这做错了什么?
解决方案感谢erickson:
Log.i("Eamorr",bin2hex(getHash("asdf")));
public byte[] getHash(String password) {
MessageDigest digest=null;
try {
digest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
digest.reset();
return digest.digest(password.getBytes());
}
static String bin2hex(byte[] data) …Run Code Online (Sandbox Code Playgroud)