Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何通过nodejs签署(pkcs#1v1_5)_Node.js_Go_Sign_Verify_Pkcs#1 - Fatal编程技术网

Node.js 如何通过nodejs签署(pkcs#1v1_5)

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

我试图与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 = 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);
}