Node.js 如何通过nodejs签署(pkcs#1v1_5)
我试图与a公司沟通。a公司使用golang作为服务器。我用nodejs 加密通信过程,使用哈希256摘要,rsa密钥为1024位 这是一个用于验证的golang代码Node.js 如何通过nodejs签署(pkcs#1v1_5),node.js,go,sign,verify,pkcs#1,Node.js,Go,Sign,Verify,Pkcs#1,我试图与a公司沟通。a公司使用golang作为服务器。我用nodejs 加密通信过程,使用哈希256摘要,rsa密钥为1024位 这是一个用于验证的golang代码 func NewRsaVerifier(publicKeyPem string) (verifier *RsaVerifier, err error) { block, _ := pem.Decode([]byte(publicKeyPem)) if block == nil { err = err
func NewRsaVerifier(publicKeyPem string) (verifier *RsaVerifier, err error) {
block, _ := pem.Decode([]byte(publicKeyPem))
if block == nil {
err = errors.New(PUBLIC_KEY_ERR)
return
}
publicKeyInterface, err1 := x509.ParsePKIXPublicKey(block.Bytes)
if err1 != nil {
err = errors.New(PUBLIC_KEY_ERR)
return
}
publicKey, ok := publicKeyInterface.(*rsa.PublicKey)
if !ok {
err = errors.New(PUBLIC_KEY_ERR)
return
}
return &RsaVerifier{
publicKey: publicKey,
}, nil
}
func (v *RsaVerifier) Verify(msg string, signature string) (err error) {
signatureBytes, err := base64.StdEncoding.DecodeString(signature)
if err != nil {
return
}
//VerifyPKCS1v15
hash := sha256.New()
io.WriteString(hash, msg)
hashed := hash.Sum(nil)
err = rsa.VerifyPKCS1v15(v.publicKey, crypto.SHA256, hashed, signatureBytes)
return err
}
func (a *BrokerAuth) VerifySignature(pubKey, payload string, signature string) error {
verifier, err := security.NewRsaVerifier(pubKey)
if verifier == nil {
return errors.New("未找到指定代理商的鉴权模块")
}
err := verifier.Verify(payload, signature)
if err != nil {
logger.Error("验证签名错误: %v", err)
return errors.New("代理商鉴权失败")
}
return nil
}
如何通过nodejs对字符串进行签名,并使用此golang代码返回true
我尝试使用符号('RSA-SHA256'),这是错误的
这是我的代码:
const SIGN_TYPE = 'RSA-SHA256';
_hashDigest(data_buff) {
let hash = crypto.createHash(HASH_TYPE);
hash.update(data_buff);
return hash.digest();
}
_sign(data_buff) {
const sign = crypto.createSign(SIGN_TYPE);
sign.update(this._hashDigest(data_buff));
var signPramas = {
key: this._privateKey,
passphrase: this._passphrase
};
return sign.sign(signPramas);
}