main.go 970 B

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