OpenSSL HMCA SHA1 未给出预期结果
OpenSSL HMCA SHA1 not giving expected result
我正在尝试使用 OpenSSL 在 CMD 中生成校验和,根据最佳答案 here。
但是,使用提供的示例我得到了意想不到的结果:
C:\>echo -n "value" | openssl dgst -sha1 -hmac "key"
(stdin)= 8c5b4c3a9cee7bc9020a43f1c396f9e13c2bae4a
原始问题中显示的预期结果,我也使用其他 HMAC SHA1 生成器得到的结果是:
57443a4c052350a44638835d64fd66822f813319
奇怪的是,我在 PowerShell 中得到了第三个结果:
PS C:\> echo -n "value" | openssl sha1 -hmac "key"
(stdin)= 56d96e5393d98eb5e189ab189e02b1832af727b5
可能不言而喻,我在这里有点超出了我的舒适区,所以请原谅我在解释中的任何明显错误或不足。
将 SO 上的几个问题的答案拼凑在一起,教给我们一些技巧,以在所有三种情况下获得相同的结果:
在类似 *nix 的环境(包括 macOS)中,printf
是一种更便携的无换行打印方式:
$ printf value | openssl dgst -sha1 -hmac key
57443a4c052350a44638835d64fd66822f813319
CMD中避免换行的技巧(注意第二个[=14=之前没有space,这个必不可少):
>echo | set /p=value| openssl dgst -sha1 -hmac key
(stdin)= 57443a4c052350a44638835d64fd66822f813319
根据 PowerShell GitHub 项目中的这个问题:Piping Text To An External Program Appends A Trailing Newline,目前使用 PowerShell 这似乎“本地”是不可能的。如果您真的必须在 PowerShell 提示符下执行此操作,黑客可能会调用 CMD,如下所示:
> cmd /c "echo | set /p=value| openssl dgst -sha1 -hmac key"
(stdin)= 57443a4c052350a44638835d64fd66822f813319
我正在尝试使用 OpenSSL 在 CMD 中生成校验和,根据最佳答案 here。
但是,使用提供的示例我得到了意想不到的结果:
C:\>echo -n "value" | openssl dgst -sha1 -hmac "key"
(stdin)= 8c5b4c3a9cee7bc9020a43f1c396f9e13c2bae4a
原始问题中显示的预期结果,我也使用其他 HMAC SHA1 生成器得到的结果是:
57443a4c052350a44638835d64fd66822f813319
奇怪的是,我在 PowerShell 中得到了第三个结果:
PS C:\> echo -n "value" | openssl sha1 -hmac "key"
(stdin)= 56d96e5393d98eb5e189ab189e02b1832af727b5
可能不言而喻,我在这里有点超出了我的舒适区,所以请原谅我在解释中的任何明显错误或不足。
将 SO 上的几个问题的答案拼凑在一起,教给我们一些技巧,以在所有三种情况下获得相同的结果:
在类似 *nix 的环境(包括 macOS)中,printf
是一种更便携的无换行打印方式:
$ printf value | openssl dgst -sha1 -hmac key
57443a4c052350a44638835d64fd66822f813319
CMD中避免换行的技巧(注意第二个[=14=之前没有space,这个必不可少):
>echo | set /p=value| openssl dgst -sha1 -hmac key
(stdin)= 57443a4c052350a44638835d64fd66822f813319
根据 PowerShell GitHub 项目中的这个问题:Piping Text To An External Program Appends A Trailing Newline,目前使用 PowerShell 这似乎“本地”是不可能的。如果您真的必须在 PowerShell 提示符下执行此操作,黑客可能会调用 CMD,如下所示:
> cmd /c "echo | set /p=value| openssl dgst -sha1 -hmac key"
(stdin)= 57443a4c052350a44638835d64fd66822f813319