package rsa import ( "crypto" "crypto/rsa" "encoding/base64" "log" ) func main() { // 1、对base64编码的签名内容进行解码,返回签名字节 a := "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbtzmEy7zEUDsskOHI8TFGBG/slgXIvzzO7bcejLyEiSMbTtZMNgGFewpYGaAb1fCMTUuc5HQrKx4T/qr2C2nkw0WjroE5UrykYag6qgpx2WXc68+cn0mODgaeczWnt0gjCqRn+lE1O9wxPbJwL85ZH58cWFjha1AMedeh5lg9iQIDAQAB" bytes, err := base64.StdEncoding.DecodeString(a) if err != nil { log.Fatal(err) } // 2、选择hash算法,对需要签名的数据进行hash运算 myhash := crypto.SHA256 hashInstance := myhash.New() hashInstance.Write(data) hashed := hashInstance.Sum(nil) // 3、读取公钥文件,解析出公钥对象 publicKey, err := ReadParsePublicKey(filename) if err != nil { return err } // 4、RSA验证数字签名(参数是公钥对象、哈希类型、签名文件的哈希串、签名后的字节) return rsa.VerifyPKCS1v15(publicKey, myhash, hashed, bytes) }