如果
crypto.verify(...
使用错误的证书、签名或数据进行验证
议论
:您对add base64.B64解码有何看法。。。因为在android代码中我有这个
linetxtMaHoa.setText(Base64.encodeToString(signatureBytes,Baââse64.DEFAULT));
PEM
base64
.setText(Base64...
可以省略。现在,我已经用更新了下面的代码
base64.b64decode
.
问题
:示例----b“sha256”?“b”是二进制(内置函数,或者我必须将字符串sha256转换为二进制?)
仅作为字符串对我有效(
digest-names
import pem, base64
from OpenSSL import crypto
signature = b"MEYCIQC7Hz631IFGsUOogcRLeN99uM9hWgLr+LGzuJvR/6nBrgIhAMXgZcvXyMRCAELXlNNS1a9jiAT1x0q2C5Mdu+2aZKtN"
# As Creator of the Signatur do additional base64 encoding!
signature = base64.b64decode(signature)
data = "nguyen tran thanh Lam"
certificate = pem.parse_file('Android.pem')[0]
cert = crypto.load_certificate(crypto.FILETYPE_PEM, certificate.as_bytes())
try:
crypto.verify(cert=cert, signature=signature, data=data, digest='sha256')
except crypto.Error as exp:
print('crypto.Error:{}'.format(exp.args))
>>>crypto.Error:([('', 'ECDSA_do_verify', 'bad signature')],)
笔记
:抛出
crypto.Error
因为没有使用
certificate
signature
.
OpenSSL.crypto.verify(certificate, signature, data, digest)
验证数据字符串的签名。
证书是一个X509实例,对应于生成签名的私钥。
签名是给出签名本身的str实例。
digest is a str instance naming the message digest type of the signature, for example b"sha256"
.
版本0.11中新增。