198

我希望为我的应用程序生成一个应用程序签名,该签名稍后将与 Facebook 集成。在 Facebook 的一个教程中,我发现了这个命令:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

在教程中,它说通过运行这个 cmd,我的生成签名的过程将开始。

但是,此命令给出错误:

openssl is not recognized as an internal or external command

我怎样才能摆脱这个?

4

18 回答 18

423

好吧,在 OpenSSL 的地方……你必须把你下载的 OpenSSL 文件夹的路径放在里面。您的实际命令应如下所示:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\abc\openssl\bin\openssl.exe" sha1 -binary | "C:\Users\abc\openssl\bin\openssl.exe" base64

请记住,您将输入的路径将是您安装 OpenSSL 的路径。

编辑:

您可以从以下相应链接下载适用于 windows 32 和 64 位的 OpenSSL:

64 位的 OpenSSL

32 位的 OpenSSL

于 2012-08-10T06:15:44.760 回答
26

请按照以下步骤操作,希望您的密钥正常工作:

  1. 第 1 步您将需要 OpenSSL。您可以从 Google Code 上的 openssl-for-windows项目下载二进制文件。

  2. 步骤 2解压缩文件夹,然后将文件夹的路径复制bin到剪贴板。

    例如,如果文件解压缩到 location C:\Users\gaurav\openssl-0.9.8k_WIN32,则复制 path C:\Users\gaurav\openssl-0.9.8k_WIN32\bin

  3. 步骤 3将路径添加到您的系统环境路径。PATH设置环境变量后,打开 cmd 并键入以下命令:

    C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64
    

    出现提示时输入您的密码。如果该命令有效,那么您将看到一个密钥。

于 2013-04-28T14:07:50.197 回答
25

使用整个路径,如下所示:

exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe" base64

它对我有用。

于 2013-03-29T03:20:40.493 回答
11

这对我来说很成功。

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias sociallisting -keystore "D:\keystore\SocialListing" | "C:\cygwin\bin\openssl.exe" sha1 -binary | "C:\cygwin\bin\openssl.exe" base64

请注意以下路径:

  • “C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe”
  • "D:\keystore\SocialListing"或者它可以是这样的 " C:\Users\Shaon.android\debug.keystore "
  • "C:\cygwin\bin\openssl.exe"或者可以是这样的C:\Users\openssl\bin\openssl.exe

如果命令成功运行,那么您将看到此命令:

输入密钥库密码:输入您的密码

加密哈希键**

于 2012-09-08T02:07:58.460 回答
10

这是迟到的答案,但它会帮助像我这样的懒人..将此代码添加到您的应用程序类中,无需下载 openssl 也无需设置路径..只需复制此代码.. keyHash 将在日志中生成。

import com.facebook.FacebookSdk;
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        printKeyHash();
    }

    private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.i("KeyHash:",
                        Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("jk", "Exception(NameNotFoundException) : " + e);
        } catch (NoSuchAlgorithmException e) {
            Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
        }
    }
}

并且不要忘记在清单中添加 MyApplication 类:

<application
        android:name=".MyApplication"
</application>
于 2016-08-05T06:06:35.663 回答
6

首先导航到 cmd cd c:\Program Files (x86)\Java\jre7\bin 中的 Java/jre/bin 文件夹

然后使用: [将 debug.keystore 路径更改为系统上的正确位置] 安装 openssl(对于 windows 32 或 64,根据您在 c:\openssl 的需要)

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.exe" sha1 -binary | "c:\openssl\bin\openssl.exe" base64

所以整个命令是这样的:[执行时提示输入密钥库密码]

c:\Program Files (x86)\Java\jre7\bin>keytool -exportcert -alias androiddebugkey
-keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.ex
e" sha1 -binary | "c:\openssl\bin\openssl.exe" base64
Enter keystore password:
于 2014-08-12T06:08:13.050 回答
6
Steps to create Hash Key. 
1: Download openssl from Openssl for Windows . I downloaded the Win64 version 
2:Unzip and copy all the files in the bin folder including openssl.exe(All file of bin folder) 
3:Goto to the folder where you installed JDK for me it’s C:\Program Files\Java\jdk1.8.0_05\bin 
4:Paste all the files you copied from Openssl’s bin folder to the Jdk folder. 

然后转到 C:\Program Files\Java\jdk1.8.0_05\bin 并按 shift 键并右键单击并打开 cmd

C:\Program Files\Java\jdk1.8.0_05\bin>//cmd path 

这是 Sha1 过去这个
keytool -exportcert -alias androiddebugkey -keystore "C:\User\ABC\.android.keystore" | openssl sha1 -二进制 | openssl base64
//和ABC是系统名放自己的系统名

于 2015-05-13T18:50:44.590 回答
2

我使用了这段代码:

这对我来说很成功。

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias sociallisting -
keystore "D:\keystore\SocialListing" | "C:\cygwin\bin\openssl.exe" sha1 -binary | 
"C:\cygwin\bin\openssl.exe" base64
于 2013-04-09T08:51:18.363 回答
2

下载和解压

您可以从下面的相应链接下载适用于 windows 32 和 64 位的 openssl:

https://code.google.com/archive/p/openssl-for-windows/downloads

用于 64 位的 OpenSSL 用于 32 位的 OpenSSL

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" sha1 -binary | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" base64

重要 的是在这里更改我们的路径以及在您的系统中安装 open ssl

毫无疑问,它的工作原理

C:\Users\keshav.gera>keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" sha1 -binary | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" base64

输入密钥库密码: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

==================================================== ===========

通过编码手动使用

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


private void PrintHashKey() {

        try {
            PackageInfo info = getPackageManager().getPackageInfo("**com.keshav.patanjalidemo  Your Package Name Here**", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");        
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    }
于 2017-05-26T11:02:20.407 回答
2

IDK 如果这与此处相关,但如果您安装了 Git,您可以在“C:\Program Files\Git\usr\bin”中找到 openssl,并且您可以在终端中为您的密钥库命令使用该位置。

哦,是的,命令:

keytool -exportcert -alias keystore -keystore "C:\Users\YOURPATH/filename.jks" | "C:\Program Files\Git\usr\bin\openssl" sha1 -binary | "C:\Program Files\Git\usr\bin\openssl" base64

于 2020-11-30T10:03:00.017 回答
1

使用这对我有用。请更改您的路径

C:\Program Files\Java\jre7\bin keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Ace.android\debug.keystore" | "C:\openssl\bin

\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

于 2013-11-23T11:58:48.160 回答
0

对于那些寻找更新位置来安装 windows 二进制版本的 openssl(32 位和 64 位)的人,您可以在此处找到它:

http://slproweb.com/products/Win32OpenSSL.html

提供二进制分发的网站的最新列表在这里

http://www.openssl.org/related/binaries.html

于 2012-11-08T12:00:34.870 回答
0

转到cmd中的bin文件夹路径,然后运行以下命令

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

你会得到你的密钥哈希

于 2014-09-30T06:08:56.580 回答
0

对于 Windows 用户,从 google 的代码库https://code.google.com/p/openssl-for-windows/downloads/list下载 open ssl

下载后,将内容解压缩到 c: 驱动器中的文件夹中。

然后更新您的 PATH 环境变量,以便您可以从命令行中的任何位置使用 .exe。

[windows 8] 要更新您的 PATH 环境变量,请单击我的计算机->属性->高级系统设置。

单击高级选项卡并单击对话框底部的“环境变量”按钮,然后通过单击编辑从“系统变量”部分中选择路径条目。

将路径粘贴到解压缩的 openssl 下载的 bin 文件夹,然后单击确定。

您将需要关闭并打开您之前可能已启动的命令提示符,以便您可以加载更新的路径设置。

现在运行这个命令:

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Oladipo.android\debug.keystore" | openssl sha1 -二进制 | openssl base64

您应该看到开发人员密钥。

于 2014-11-20T19:44:07.823 回答
0

这对我有用:

C:\Users\example>keytool -exportcert -alias androiddebugkey -keystore 
"C:\Users\example\.android" | "C:\openssl\bin\openssl.exe" sha1 -binary 
| "C:\openssl\bin\oenssl.exe" base64
于 2017-09-09T05:05:52.750 回答
0

对于那些像我现在一样迷路的人,请遵循 Usama Sarwar 的回应,但如果:

“your_openssl_path/bin/openssl.exe”

不行,试试

your_openssl_path/bin/openssl.exe。

没有引号。

"c:\openssl\bin\openssl.exe" => 对我不起作用

c:\openssl\bin\openssl.exe => 为我工作

于 2021-07-03T21:32:26.063 回答
0

我今天遇到了同样的问题,通过观看此视频(SSL 安装)解决了它 - https://www.youtube.com/watch?v=PoAc1lpfK8I&ab_channel=GleyGames

然后,我接受了 Usamas 命令并运行它(在更改命令中的路径之后),我使用 CMD 从 java 安装内的 bin 文件夹中运行它。

对我有用的完整命令:

(从 C:\Program Files\Java\jdk-11.0.12\bin 内部)

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "C:\Program Files\OpenSSL-Win64\bin\openssl" sha1 -binary | "C:\Program Files\OpenSSL-Win64\bin\openssl" base64
于 2021-11-29T16:23:27.263 回答
-1

不能保证使用这种单一的 openssl 方法生成 hashkey 会起作用。如果它对我不起作用。但是感谢您给我一个解决问题的方向。

有保证的解决方案:您需要将整个命令分解为单独的命令,并且必须将每次执行的输出写入文件中。

您可以从以下链接获取帮助:

http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1

享受 :)

于 2013-05-02T10:11:16.767 回答