gpt4 book ai didi

android - Openssl 结果在 Windows 的 cmd 和 power shell 中不匹配

转载 作者:可可西里 更新时间:2023-11-01 13:26:30 25 4
gpt4 key购买 nike

现在我要获取android debug key的签名

在windows命令中(cmd.exe)

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl.exe sha1 -binary | openssl.exe base64
Enter keystore password: android

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12".
uQzK/Tk81BxWs8sBwQyvTLOWCKQ=

在 Windows Power Shell 中

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | .\openssl.exe
sha1 -binary | .\openssl.exe base64
Enter keystore password: android

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12".
Pz8/Pwo/MDNuPyE/Pys/Pz8/Sm8K

两个结果不匹配。

cmd.exe: uQzK/Tk81BxWs8sBwQyvTLOWCKQ=

电源外壳:Pz8/Pwo/MDNuPyE/Pys/Pz8/Sm8K

为什么?发生了什么事?

最佳答案

这是 PowerShell 中对象管道的结果,您永远不应在 PowerShell 中通过管道传输原始二进制数据,因为它会被损坏。

在 PowerShell 中传输原始二进制数据从来都不安全。 PowerShell 中的管道用于可以安全地自动转换为字符串数组的对象和文本。请阅读this以获得详细的完整解释。

用powershell计算出来的结果是错误的,因为你用的是管道。解决此问题的一种方法是在 powershell 中使用 cmd.exe:

cmd /C "keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl.exe sha1 -binary | openssl.exe base64"

您可以使用管道从文件读取/写入输入/输出,而不是使用管道。不幸的是 openssl.exe sha1 没有 -in 参数来指定输入文件。因此我们需要使用powershell-commandlet Start-Process,它允许通过参数-RedirectStandardInput-RedirectStandardOutput读写文件:

keytool -exportcert -alias mykey -storepass wortwort -file f1.bin
Start-Process -FilePath openssl.exe -ArgumentList "sha1 -binary" -RedirectStandardInput f1.bin -RedirectStandardOutput f2.bin
Start-Process -FilePath openssl.exe -ArgumentList base64 -RedirectStandardInput f2.bin -RedirectStandardOutput o_with_ps.txt

keytool 写入文件 f1.bin。然后 openssl.exe sha1f1.bin 读取并写入 f2.bin。最后,openssl.exe base64f2.bin 读取并写入o_with-ps.txt

关于android - Openssl 结果在 Windows 的 cmd 和 power shell 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com