Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 取一个值的SHA-1散列并对其进行Base64编码_Java_Shell_Unix_Base64 - Fatal编程技术网

Java 取一个值的SHA-1散列并对其进行Base64编码

Java 取一个值的SHA-1散列并对其进行Base64编码,java,shell,unix,base64,Java,Shell,Unix,Base64,我需要一个shell命令或shell脚本,它可以接受以下值 dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 然后生成它的SHA-1散列,即 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea 使用Base64对这个值进行编码,结果如下 s3pPLMBiTxaQ9kYG

我需要一个shell命令或shell脚本,它可以接受以下值

dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
然后生成它的SHA-1散列,即

0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6
   0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea
使用Base64对这个值进行编码,结果如下

s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
我可以使用下面的代码在Java中轻松地做到这一点

String key = "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

MessageDigest md = MessageDigest.getInstance("SHA-1");

//s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
System.out.println(Base64.encodeBase64String(md.digest(key.getBytes())));
到目前为止我已经试过了

echo -n "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | openssl sha1 -binary | base64
以防万一

echo -n "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | openssl dgst -sha1  | base64
但它们都打印出错误的值

请给我一些建议或帮助我解决这个问题


提前感谢。

您的第一次尝试对我有效,如果您将
-binary
添加到openssl命令中,您的第二次尝试也有效。@ThomasFenzl shot,它确实有效,我忘记添加95CA-C5AB0DC85B11部分,因此它向我显示了一个错误的值。。您是正确的,第一次尝试与| open ssl dgst-sha1-binary一样有效。谢谢你的帮助。