go 如何实现PHP RSA签名

        $pkeyid = openssl_pkey_get_private ( $priv_key );
        openssl_sign ( $params_str, $signMsg, $pkeyid, OPENSSL_ALGO_SHA1 );
        openssl_free_key ( $pkeyid );
        $signMsg = base64_encode ( $signMsg );

请问用GO如何实现PHP这样的签名我写的代码如下,始终不成功

func getSing(splice string, priKey []byte) (encrypt string) {
    PEMBlock, _ := pem.Decode(priKey)
    if PEMBlock == nil {
        log.Fatal("PEM解析错误")
    }
    privkey, err := x509.ParsePKCS8PrivateKey(PEMBlock.Bytes)
    if err != nil {
        log.Fatal(err)
    }
    pri, ok := privkey.(*rsa.PrivateKey)
    if ok {
        // SH256 := crypto.SHA256
        // hashed := sha256.Sum256([]byte(fmt.Sprintf("%x", sha256.Sum256([]byte(splice)))))
        // hashed := sha256.Sum256([]byte(nil))
        // sign, err := rsa.SignPKCS1v15(rand.Reader, pri, SH256, hashed[:])

        SH1 := crypto.SHA1
        // hashed := sha1.Sum([]byte(fmt.Sprintf("%x", sha1.Sum([]byte(splice)))))
        hashed := sha1.Sum([]byte(nil))
        sign, err := rsa.SignPKCS1v15(rand.Reader, pri, SH1, hashed[:])

        if err != nil {
            log.Fatal(err)
        }
        return Base64Encode(sign)
    } else {
        log.Fatal(ok)
    }
    return
}

求大家帮忙解决,我肯定哪里错了,导致签名不对,验证签名也不对

红糖糍粑
浏览 526回答 2
2回答

温温酱

楼上回答正确
打开App,查看更多内容
随时随地看视频慕课网APP