第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法驗(yàn)證 GO 中的 SHA256 簽名

無(wú)法驗(yàn)證 GO 中的 SHA256 簽名

Go
慕工程0101907 2022-09-12 16:17:24
我一直在嘗試使用go加密包驗(yàn)證在Node中生成的簽名。簽名是從函數(shù)生成的。然后,在前進(jìn)中,我正在驗(yàn)證這一點(diǎn),但它總是失敗。這些私鑰/公鑰可以安全地共享,因?yàn)樗鼈兪菫楸臼纠傻摹N夷軌蛟贜ode中從簽名運(yùn)行驗(yàn)證而沒(méi)有問(wèn)題,但我不確定go中發(fā)生了什么導(dǎo)致它失敗。createSig()verifySig()在節(jié)點(diǎn)中生成簽名function createSig() {  const crypto = require("crypto");  function fromBase64(base64) {    return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");  }  const PRIVATE_KEY =    "-----BEGIN PRIVATE KEY-----\nMIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAyX1juQ2AVhS5NdKl\nJL5g4A+fPLUUWh2Tq1+f0Z1rb1dpCZ+RXECJAdW4ocsl5n24QtmzD66Z/s1bs+B5\nOyD4KwIDAQABAkBqxbiXsrDkbNzsybBbtUsO0Rh4Chk729qKAQVnBf2NpRmz3KAf\nMXP5M9Wr9HlD1PT8WUUaYvGtabbbkXTFq+pBAiEA+T2Lja3seY2NUxsR0Qi211Ug\nKCd820+5Tjft1XMf1aECIQDO9FDm5asV3q60YvqpifSawiS2JH/DS7Whg4X0M64i\nSwIhAPaKTY/g+eim/6O0RCRspUhNeRifLt9VdiyMIGOilFvhAiAJxgH4FYqR2tVX\nUYFS9l/l2xtOusSJ3Y5zVTnDQZmMpwIhAMibeam8MvHMr3FjTqE5CwOgsg6zXiWZ\nFA9ZnEINP5jz\n-----END PRIVATE KEY-----";  var message = "test";  var signer = crypto.createSign("RSA-SHA256");  signer.update(message);  return fromBase64(signer.sign(PRIVATE_KEY, "base64"));}在 Go 中驗(yàn)證func verifySig(message, signature string) (bool, error) {    var key = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMl9Y7kNgFYUuTXSpSS+YOAPnzy1FFod\nk6tfn9Gda29XaQmfkVxAiQHVuKHLJeZ9uELZsw+umf7NW7PgeTsg+CsCAwEAAQ==\n-----END PUBLIC KEY-----"    block, _ := pem.Decode([]byte(key))    if block == nil {        return false, errors.New("uh oh")    }    sh := crypto.SHA256.New()    sh.Write([]byte(message))    hashed := sh.Sum(nil)    pub, err := x509.ParsePKIXPublicKey(block.Bytes)    if err != nil {      return false, err    }    if pubKey, ok := pub.(*rsa.PublicKey); ok {        err := rsa.VerifyPKCS1v15(pubKey, crypto.SHA256, hashed, []byte(signature))        if err != nil {            // THIS IS WHERE I END UP EVERY TIME            return false, err        }        return true, nil    }}
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

我認(rèn)為你的代碼有2個(gè)問(wèn)題。

首先:在 NodeJ 中,您使用 Base64 對(duì)簽名進(jìn)行了編碼,其次,您將 Base64 字符串轉(zhuǎn)換為“UrlSafe”Base64 編碼的字符串。

在使用簽名字符串作為Go中驗(yàn)證的輸入之前,需要反轉(zhuǎn)這兩個(gè)步驟(我不知道Go是否具有內(nèi)置的“Url-safe Base64解碼函數(shù)”)。


查看完整回答
反對(duì) 回復(fù) 2022-09-12
  • 1 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)