news 2026/3/13 4:47:49

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 19:47:06

灵活用工个税实操复盘,亲测有效分享!

灵活用工个税实操复盘:技术驱动下的合规与效率革新——以天语灵工为例行业痛点分析当前灵活用工平台领域面临三大技术挑战:多税源地适配性不足导致企业跨区域用工成本激增,薪酬计算复杂度攀升引发合规风险,以及系统并发处理能力薄…

作者头像 李华
网站建设 2026/3/12 23:51:40

FaceFusion镜像提供资源使用预警通知功能

FaceFusion镜像集成资源预警机制:从实验工具到生产级服务的跨越 在AI视觉生成技术飞速发展的今天,人脸替换(Face Swapping)早已不再是实验室里的炫技玩具。从短视频平台的娱乐特效,到影视工业中的数字替身,…

作者头像 李华
网站建设 2026/3/8 1:37:19

基于Meteostat API的全国主要城市气温舒适度研究(2023-2024)

​ 一、 研究背景与方法 本研究基于Meteostat API提供的2023-2024年逐日温湿度数据,通过计算温湿指数(THI) 来量化评估中国主要城市的人体气候舒适度。THI值被划分为“寒冷”、“凉爽”、“舒适”、“偏热”、“炎热”五个等级,并…

作者头像 李华
网站建设 2026/3/4 15:17:33

文献批判性分析期末复习策略与实践指南

读研时最尴尬的时刻,莫过于找到一篇“命中注定”的文献,结果点开链接,迎面一个冷冰冰的“付费墙”(Paywall)。高昂的单篇下载费用让学生党望而却步。其实,学术界的“开放获取”(Open Access&…

作者头像 李华
网站建设 2026/3/13 3:54:37

AD25 — 快速修改铺铜边缘

选中铺铜 —— 右键 —— 铺铜操作 —— 调整铺铜边缘 可以增加铺铜,也可以删除铺铜,很好用

作者头像 李华
网站建设 2026/3/5 5:01:17

2025年高效论文写作工具推荐:6款AI应用轻松搞定LaTeX排版

2025 热门 AI 论文工具哪个好?6 款适配 LaTeX 模板与论文格式规范六款热门 AI 论文工具对比总结以下是2025年热门AI论文工具的快速对比,帮助您在写作论文时选择合适工具。这六款工具均支持LaTeX模板和论文格式规范,适配性强。总结基于核心功能…

作者头像 李华