我尝试使用此代码在节点中创建签名:
var crypto = require('crypto');
var data = 'some data'
var signer = crypto.createSign('RSA-SHA256');
signer.write(data, 'base64');
signer.end();
var signature = signer.sign(privateKey, 'base64');
签名和数据被发送到python服务器。
现在我想用python代码验证它:
from base64 import b64decode, b64encode
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
rsakey = RSA.importKey(public_key)
signer = PKCS1_v1_5.new(rsakey)
digest = SHA256.new()
digest.update(data)
signer.verify(digest, b64decode(signature))
验证失败。 当我使用相同的语言进行签名并验证它是否有效。 有什么想法吗?
答案 0 :(得分:0)
我遇到了同样的问题,并且发现它可以工作:
import rsa
rsa.verify(message, signature, public_key)