news 2025/12/28 3:54:04

go SHA256WithRSA

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
go SHA256WithRSA

In Go,SHA256WithRSArefers to RSA digital signatures with SHA-256 hashing, a common standard for signing and verification. Here's how to implement it:

1. Generate RSA Key Pair

go

复制

package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "os" ) func generateKeys() (*rsa.PrivateKey, error) { // Generate 2048-bit RSA key pair privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { return nil, err } return privateKey, nil } // Save keys to PEM files func savePrivateKey(key *rsa.PrivateKey, filename string) error { file, err := os.Create(filename) if err != nil { return err } defer file.Close() privateKeyBytes := x509.MarshalPKCS1PrivateKey(key) privateKeyPEM := &pem.Block{ Type: "RSA PRIVATE KEY", Bytes: privateKeyBytes, } return pem.Encode(file, privateKeyPEM) }

2. Sign Data with SHA256 + RSA

go

复制

import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" ) func signData(privateKey *rsa.PrivateKey, data []byte) ([]byte, error) { // Hash the data with SHA-256 hash := sha256.Sum256(data) // Sign the hash using RSA-PSS (recommended) or PKCS#1 v1.5 signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hash[:]) if err != nil { return nil, err } return signature, nil }

3. Verify Signature

go

复制

func verifySignature(publicKey *rsa.PublicKey, data, signature []byte) error { hash := sha256.Sum256(data) // Verify the signature err := rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, hash[:], signature) if err != nil { return fmt.Errorf("signature verification failed: %w", err) } return nil }

4. Complete Example

go

复制

package main import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "fmt" ) func main() { // Generate keys privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { panic(err) } // Data to sign data := []byte("Hello, SHA256WithRSA!") // Sign signature, err := signData(privateKey, data) if err != nil { panic(err) } fmt.Printf("Signature: %x\n", signature) // Verify publicKey := &privateKey.PublicKey err = verifySignature(publicKey, data, signature) if err != nil { panic(err) } fmt.Println("✅ Signature verified successfully!") }

Key Points

  • crypto.SHA256: Specifies SHA-256 as the hash algorithm

  • rsa.SignPKCS1v15: PKCS#1 v1.5 padding (widely compatible)

  • rsa.SignPSS: More secure PSS padding (recommended for new systems)

  • Hash first: Always hash data before signing; RSA operates on the hash digest

Thecrypto/x509andencoding/pempackages handle key serialization for storage and exchange.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 15:07:03

域名交易中常见骗局揭秘,新手一定要警惕这几种套路

随着互联网的发展,域名逐渐成为一种具有价值的数字资产,参与域名交易的人也越来越多。但与此同时,围绕域名交易的各类骗局也不断出现,尤其是新手用户,更容易因为经验不足而遭受损失。提前了解常见套路,是安…

作者头像 李华
网站建设 2025/12/24 4:29:59

FaceFusion人脸融合在智能安防仿真测试中的应用

FaceFusion人脸融合在智能安防仿真测试中的应用 在城市地铁站的监控中心,安全团队正试图验证新部署的人脸识别系统对通缉人员的捕捉能力。然而,真实案件影像稀少且涉及隐私,无法用于大规模压力测试。于是,工程师上传了10张嫌疑人照…

作者头像 李华
网站建设 2025/12/19 14:28:30

FaceFusion在文化遗产数字化保护中的应用探索

FaceFusion在文化遗产数字化保护中的应用探索 在敦煌莫高窟幽深的洞窟中,一尊千年壁画上的菩萨低眉含笑,颜料斑驳、轮廓模糊。千年来,人们只能凭想象揣摩其神态。如今,借助人工智能技术,这尊静止的画像正被赋予呼吸与表…

作者头像 李华
网站建设 2025/12/27 13:16:54

Qoder 自定义指令功能上线!对话框输入 /,即可快速调用指令

自定义指令功能允许开发者将常用的提示词 (Prompts) 和工作流封装为可复用的命令。只需在 Agent 对话框中输入 ​​/​​,即可快速调用这些指令,显著提升日常开发效率。 无论你是频繁执行代码审查、生成测试用例,还是需要快速查询项目规范&a…

作者头像 李华
网站建设 2025/12/19 14:25:56

FaceFusion在虚拟试妆平台中的集成实践

FaceFusion在虚拟试妆平台中的集成实践 在美妆电商与个性化服务快速演进的今天,用户早已不满足于“看图购物”。他们希望看到自己的脸涂上那支网红口红是什么效果,想预览十年后的自己是否适合某款抗老精华。这种对“真实感”和“即时反馈”的追求&#x…

作者头像 李华
网站建设 2025/12/19 14:24:42

制造业大模型落地新思维:从“AI+“到“+AI“的实战指南!

简介 本文探讨制造业从"AI“到”AI"的转变,强调AI应成为融入流程与决策的基础设施,而非外挂工具。生成式AI通过改变认知方式,成为业务与技术间的"连接器",推动业务流程、知识资产和决策机制的AI化。落地路径需…

作者头像 李华