Openssl不被识别为内部或外部命令

我希望为我的应用程序生成一个应用程序签名,稍后将与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 

我怎样才能摆脱这个?

那么在openssl的地方…你必须把你已经下载的openssl文件夹的path。 你的实际命令应该是这样的:

 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 

记住,你将进入的path将是你安装openssl的path…希望这有助于.. 🙂

编辑:

你可以从下面的相应链接下载openssl for windows 32和64位:

64位的OpenSSL

OpenSSL的32位

使用整个path,如下所示:

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

它为我工作。

请按照这些步骤,我希望你的关键工作正常:

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

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

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

  3. 步骤3将path添加到您的系统环境path。 在设置PATH环境variables之后,打开cmd并键入以下命令:

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

    出现提示时input您的密码。 如果命令起作用,那么你将被显示一个键。

这对我成功了。

“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

小心以下path:

  • “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

如果命令成功工作,那么你会看到这个命令:

input密钥库密码:input您的密码

Encryptedhashkey **

这是迟到的答案,但它会帮助像我这样的懒惰的人..将此代码添加到您的应用程序类,不需要下载openssl,也不需要设置path..只需要只是复制我的代码..和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> 

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

然后使用:[将debug.keystorepath更改为系统上的正确位置]安装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 

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

 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: 

我用这个代码:

这对我成功了。

 "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 

使用这个为我工作。 请改变你的path

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

 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 -binary | openssl base64
//和ABC是系统名称把自己的系统名称

下载和解压

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

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

OpenSSL for 64位OpenSSL for 32位

 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 

重要的改变我们的path在这里以及安装在您的系统中打开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 

input密钥库密码: 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(); } } 

对于那些寻找更新的位置来安装Windows二进制版本的openssl(32位和64位),你可以在这里find它:

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

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

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

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

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

你会得到你的关键哈希

对于Windows用户下载从谷歌代码存储库中打开ssl https://code.google.com/p/openssl-for-windows/downloads/list

下载后,将内容提取到一个文件夹,最好在您的c:驱动器。

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

[Windows 8]要更新PATH环境variables,请单击我的计算机 – >属性 – >高级系统设置。

单击高级选项卡并单击对话框底部的“环境variables”button,然后通过单击编辑从“系统variables”部分中selectpath条目。

将path粘贴到提取的openssl下载的bin文件夹中,然后单击确定。

您将需要closures并打开并命令以前可能启动的提示,以便加载更新的path设置。

现在运行这个命令:

keytool -exportcert -alias androiddebugkey -keystore“C:\ Users \ Oladipo.android \ debug.keystore”| openssl sha1 -binary | openssl base64

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

这适用于我:

 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 

不保证用这个openssl方法生成hashkey是可行的。 如果它不适合我。 不过谢谢你给我一个方向来解决我的问题。

保证解决scheme:您需要在单独的命令中打破整个命令,并且必须将每次执行的输出写入文件。

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

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

请享用 :)