我想使用openssl dgst来验证第三方提供的消息和签名数据是否正确。
消息和符号数据均经过base64编码。
根据它们的规范,我必须首先将消息加密为sha256摘要,然后将base64解码符号数据,然后再进行公共密钥解密。最后,我可以通过比较sha256摘要和解密的符号数据来进行验证。
这是我从其证书中提取的公钥。
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxTRl9FnUNrnXNVFRl5gC
2Fo/rdr/x0T/dyoCuCmJKMO9tijgdS8/NNOyKRyswtq1gGSmAEKqcwqV6/cn8u8N
1QD/vO8jXErUwixVgypLyq6qNMz6qot+aabRwJuILFZbQ/lQQiCJA3VrEMgl8yFT
OOQNVvEovWbeLuaqJghJH4YfhmlC29stlb6oLmUoHmB0l1MgUqcxtmjwj+Q3a3R8
mAIKRpXnCYD+dLpnHwegcPpPbRBkmRFaM0M58msOelqayNrbTKwlM98xSlS+FAzQ
gyWWmiCMtxK+P1lTgQRWyOF2rp3ucc16hwlq0YvV5fCD5HHwp/46ftLKHY2szVHe
HQIDAQAB
-----END PUBLIC KEY-----
以下是数据:
eyJtZXNzYWdlSWQiOiJINlIwMDA1MDAxMDAiLCJmcHNJZGVudGlmaWVyIjoiMTk5NDA3OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCJ0cmFuc2FjdGlvbklkIjoiMTIxOTAzMjdGMDA0ODc1NzQ4ICAgICAgICAgICAgICAgICAiLCJlbmRUb0VuZElkIjoiMDAtMTkwMzI3Q1hBMjIyMTExMUhLNzc5MyAgICAgICAgICAiLCJ0eG5DdXIiOiJIS0QiLCJ0eG5BbXQiOiIgICAgICAgIDEwMS4wMCIsInR4bkRhdGVUaW1lIjoiMjAyMjA4MDEgMTg6MDQ6MzEifQ
以下是标志数据:
XYuv2MvzWfzc0dmB_mVbKdlHZC26AiZdllFEQFhYMmAhvhe7AOOWQ8xrEYeca0D4UMPdHGfCPY0qNVGa0jNUvIwK0qJ6V6Le6dhkXVk5q0o0Q3Is6C3mk4Q6CqBdGK5yAdrYLmNG5v6fA2ifg_YvcVnavwFawvSue-fp7yyAyNZtdyeC2j3mMND0P91NQ2yHHbGCRJWFxzsqz4CdhTPrLGPiqZAdJejfz1irMLuiuUjTKSazsqYAJhXslz9xXd9hyZsQdCTrGT4MYQjTHoiQAoIEqrE5rhDI3ZifhaYFg1fRrGXagw5s5naelCks6ypu95YPmuEqG0QJl2YoQlwMpw
我尝试使用
base64 --decode sigfile > decodedsigfile
首先解码符号数据。
然后,使用
openssl dgst -sha256 -verify <public key> -signature decodedsigfile datafile
进行验证。
我希望这是真的。但是,输出始终为false。
我需要一些帮助,让我知道哪一部分不对。
(假设公钥正确)