我正试图找出以下openssl命令的编码方法:
场景:
给定:文件的Base64编码值(b64.txt)
Base64编码的文件的sha1摘要(正好是该文件的20字节sha1摘要)。
问题:我必须用C程序验证给定的文件摘要是否正确。
我的方法:
- I first tried openssl commands to verify the digest before writing a code. Here is how I did it.
- I decoded this base64 file first and then found the sha1 digest of the file.
我不知道为什么我从来没有得到20字节的值作为输出。经过反复试验,只有这些有效:
在linux系统上,我做了以下操作:
base64 -d b64.txt > dec.out
(dec.out was a mix of textual and binary(undecipherable) text)openssl dgst -sha1 -binary dec.out > sha1.bin
(I found out the digest in binary form assuming the dec.out as binary input)base64 sha1.bin > sha1.b64
(encoding the sha1 result in base64)
现在我的sha1.b64给出了一个20字节的摘要,和给我的一样。
首先,我想知道命令的顺序是否正确,以及是否有更简单的方法。
此外,使用EVP_Digest*如何对此进行编程(我的意思是,这些文件中指定了什么输入格式?)
请澄清。
谢谢