golang [2]

推荐一些好的golang学习资料

 

1. 入门

官方网址https://golang.org/

A tour of go [官方教程 go play]

http://openmymind.net/The-Little-Go-Book/ [很精简但很好的入门教程]

https://github.com/sendwithus/workshop-go  [入门代码练习]

https://github.com/golang/go/wiki/CodeReviewComments [推荐的编码风格]

 

2. 提高

https://golang.org/doc/effective_go.html [官方,go语言的编写规范和使用指导]

https://github.com/StefanSchroeder/Golang-Regex-Tutorial [很好的正则表达式教程]

https://www.gitbook.com/book/codegangsta/building-web-apps-with-go/details [开发一个web后台进一步提高自己吧]

 

3. 比较好的go语言项目

http://awesome-go.com/ [所有aswsome的golang项目都会收录在这里]

http://beego.me/ [国内go 后台框架]

 

以上教程基于个人学习时的整理,如果你有新的推荐可以在评论中列出。

ps: 个人觉得如果有人开发出用go语言写图形界面的框架就好了,比如像python那样,但目前与之相关的很多golang项目都不太成熟。

转载于:https://www.cnblogs.com/7explore-share/p/5594589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用golang进行SM2签名和验证的示例代码: ```go package main import ( "crypto/rand" "crypto/sm2" "crypto/x509" "encoding/asn1" "encoding/base64" "encoding/hex" "fmt" ) func main() { // 生成SM2密钥对 privateKey, err := sm2.GenerateKey() if err != nil { panic(err) } publicKey := &privateKey.PublicKey // 待签名的数据 data := []byte("hello world") // 签名 r, s, err := sm2.Sign(rand.Reader, privateKey, data) if err != nil { panic(err) } // 将签名结果转换为DER编码 signature, err := asn1.Marshal(sm2Signature{r, s}) if err != nil { panic(err) } // 验证签名 ok := sm2.Verify(publicKey, data, r, s) fmt.Println("Verify result:", ok) // 将公钥转换为PEM格式 publicKeyBytes, err := x509.MarshalPKIXPublicKey(publicKey) if err != nil { panic(err) } publicKeyPEM := pemEncode("PUBLIC KEY", publicKeyBytes) // 将私钥转换为PEM格式 privateKeyBytes, err := x509.MarshalECPrivateKey(privateKey) if err != nil { panic(err) } privateKeyPEM := pemEncode("EC PRIVATE KEY", privateKeyBytes) fmt.Println("Public key (PEM):") fmt.Println(publicKeyPEM) fmt.Println("Private key (PEM):") fmt.Println(privateKeyPEM) fmt.Println("Signature (DER):") fmt.Println(hex.EncodeToString(signature)) } // 将DER编码的数据转换为SM2签名结构体 type sm2Signature struct { R, S *big.Int } // 将数据编码为PEM格式 func pemEncode(blockType string, data []byte) string { pemData := &pem.Block{ Type: blockType, Bytes: data, } return base64.StdEncoding.EncodeToString(pem.EncodeToMemory(pemData)) } ``` 上述代码中,我们首先生成了一个SM2密钥对,然后使用私钥对数据进行签名,并将签名结果转换为DER编码。接着,我们使用公钥对签名进行验证,验证结果为true。最后,我们将公钥和私钥转换为PEM格式,并将签名结果以16进制字符串的形式输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值