数字签名、证书,RSA加密、解密

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、相关知识扫盲篇

数字签名、数字证书

A与B的交互,通过一方的公私密钥,实现数据的加密,解密,验证数据签名,以保证其数据是对的。

但是存在比如B处存放的A的公钥被别人替换为如C的公钥可能性,这样C去发送信息给B,B会误以为是A发的,达到欺骗的效果
由此出现了,中心证书的CA(Certificate authority)机构,做中间人,把公钥持有人的信息,再用机构的私钥对A的信息进行加密。

B拿到数据,先用证书持有机构的公钥进行解密,证明是A的数据,然后再用A的公钥进行验签

引申:既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

解释:CA的公钥是公开的,是可查的,他们的公钥在自己网站上提供下载,因此无法伪造

总结:公私钥用于加密、验证之间的数据,证书(中心媒介)用于证明其拿到的是正确的交互方的公钥。

防止证书伪造 之 证书链-Digital Certificates

文档地址,点击跳转

SHA256withRSA 先用RAS加密,在执行SHA256的哈希运算,主要用在签名验证操作

二、公私钥格式、协议规范

主要涉及的go包:

  • x509 x509包解析X.509(密码学里公钥证书的格式标准)编码的证书和密钥
  • pem包,pem包实现了PEM数据编码(源自保密增强邮件协议 Privacy Enbanced Mail)。目前PEM编码主要用于TLS密钥和证书
  • crypto/rsa rsa包实现了PKCS#1规定的RSA加密算法

三、golang RSA加密、解密具体实现

RSA加密、解密

  • RSA加密数据
  • 再配合 SHA256哈希 获得不可修改的签名signature

RSA公钥加密

// 公钥加密-分段

func RsaEncryptBlock(src, publicKeyByte []byte) (bytesEncrypt []byte, err error) {
   
   
    // 解码公钥文件,返回block结构
    // The encoded form is:
    //    -----BEGIN Type-----
    //    Headers
    //    base64-encoded Bytes
    //    -----END Type-----
	block, _ := pem.Decode(publicKeyByte)
	if block == nil {
   
   
		return nil, errors.New("Decode PublicKey Fail")
	}
	
	// 解析 PKIX 格式的公钥,返回 *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey 等格式的struct
	publicKey, err := x509.ParsePKIXPublicKey(block.Bytes)
	if err != nil {
   
   
		return nil, err
	}
	
	//根据自己具体使用的格式做推测
	pub, keySize :=  publicKey.(*rsa.PublicKey), publicKey.(*rsa.PublicKey).Size()
	srcSize := len(src)
	
    fmt.Println("密钥长度:", keySize, "\t明文长度:\t", srcSize)
	//单次加密的长度需要减掉padding的长度,PKCS1为11
	

    // 按需加密
	offSet, once := 0, keySize-11
	buffer := bytes.Buffer{
   
   }
	for offSet < srcSize {
   
   
		endIndex := offSet + once
		if endIndex > srcSize {
   
   
			endIndex = srcSize
		}
		// 加密一部分
		bytesOnce, err := rsa.EncryptPKCS1v15(myrand.Reader, pub, src[offSet:endIndex])
		if err != nil {
   
   
			return nil, err
		}
		buffer.Write(bytesOnce)
		offSet = endIndex
	}
	bytesEncrypt = buffer.Bytes()
	return
}

RSA

加密解密数字签名 在工作中,我们用到了加密解密,以及数字签名,所以对它的原理以及实现进行讲解: 实际上数字签名又称作基于PKI的电子名, PKI的核心机构是电子认证服务提供者,即通称的认证机构CA,PKI名的核心元素是由CA发的数字证书,数字证书就如同日常生活中的身份证一样,用来标识网上实体的身份,CA就是对网上实体进行认证的第三方机构.数字证书就是CA机构对网上实体进行认证而产生的电子证书,它是数据名的基础技术保障.CA机构对电子证书的有效性,有效期等提供查询服务.数字证书所包含公钥用来 阅读详情

相关推荐

信息安全——加密解密技术

前一阵特别火的一部剧《解密》,就是讲的特务组织潜入我国,启用“紫米”高级密码联络,然后数学天才金荣珍最后破译了“紫密”,也发现了“黑密”的阴谋(黑密只是紫密的逆向推理)附张帅帅哒剧照,后面开始信息安全基础技术——加密解密技术 加密就是将原来的明文, 经过一系列的算法对应成密文 1.对称加密   特点:文件加密和文件解密使用相容的秘钥。   优点:速度快   缺点:加密强度不高,秘

焦玉丽 1542

paypal支付对接(付款方式:即时付款、快速付款):PC端支付、APP端支付,异步回调IPN

最近几天公司项目接入paypal支付,跟同事一路磕磕绊绊,各种邮件联系技术客服,各种等邮件,最后终于对接完成。中间遇到最大的坑,是APP端支付,IPN异步回调,一直不请求回调,该设置的回调地址都设置了好几遍,就在绝望时,昨晚抱着试试看的心态测试了一单,竟然回调了!!!沙盒环境调通了!!!可以安心切到生产环境了!!!paypal支付各种坑各种截图各种配置......

博客简介 1万+

PC端RSA加密算法实战指南及工具演示

本文还有配套的精品资源,点击获取 简介:RSA算法是一种广泛应用的非对称加密技术,依赖于大数的质因数分解难题,具备高效的加密和安全性。本资源包详细介绍了如何在PC端生成RSA密钥对并应用于加密数据。通过具体的RSA算法工具和证书文件(Cer.zip),用户可以直观地掌握RSA算法的操作流程,加强对加解密技术的理解,从而提升在远程通信、数字签名和身份证等方面的网络安全保护。...

weixin_42186387的博客 1232

证书与加/解密

证书是指使用自己的证书颁发机构(Certificate Authority,CA)来生成和颁发证书,而不是依赖于公共的第三方CA。与使用受信任的第三方CA不同,自证书的信任链由自己管理,因此在信任方面可能存在一些挑战。创建自证书颁发机构(CA):首先,您需要创建自己的证书颁发机构,也就是私有CA。这个CA将负责颁发和管理您自己的证书。您可以使用工具(如OpenSSL)生成自己的CA证书私钥

weixin_43460239的博客 2425

c# .net Paypal支付Webhooks回调

前言一、添加web窗体接收通知二、使用步骤1.引入bll2.config配置文件3.代码总结 前言 记录一下,那些年踩过的坑! 一、添加web窗体接收通知 用于接收第三方支付回调通知,请求链接例如:https://editor.csdn.net/Paypal/PaypalNotifyPage.aspx 二、使用步骤 1.引入bll 代码如下: using Newtonsoft.Json.Linq; using P.

zhong0_01的博客 2773

security

OID 以电子认证为例,X.509标准是ITU-T组织设计的PKI标准,是信息安全领域最基础的标准之一,目前应用广泛。X.509标准利用OID标识成功定义了CA证书和安全访问数据格式,完成了X.500目录中的身份认证和访问控制功能。 随着电子认证业务的广泛应用,美国、澳大利亚、印度等国家建立了本国的电子认证管理机构,对从事电子认证业务的机构进行严格审查。为此,国际OID注册机构为信息安全领域分...

weixin_30726161的博客 289

PayPal(贝宝) Webhooks使用

一、paypal账号注册 官网地址:https://www.paypal.com/ 右上角,点击“注册”按钮即可,后续步骤略。 二、添加Webhook 进入开发者管理台:https://developer.paypal.com/developer/applications/

yzh_1346983557的博客 5046

加密与安全:图解非对称加密算法 RSA 数字签名与数字证书

这时候我们需要一个权威的第三方机构(CA)确认这一个公钥确实是真实的服务器的公钥,服务器将自己的公钥和一些私人信息发给 CA,CA 用自己的私钥将这些数据加密之后就是数字证书(SSL证书)。当别人收到你的公告时,他可以用你的公钥解密你的名,如果解密成功,并且解密出来的哈希值确实和你的公告原文做哈希处理后是一致的,那就证明了两点:这消息确实是你发的,而且内容是完整的。当服务器向客户端发送数据的时候,还附带上从 CA 下载到本地的证书,客户端拿到证书以后使用CA的公钥进行解密,确认服务器的公钥无误。

yygr的博客 2315

【IoT】加密与安全:图解非对称加密算法 RSA 数字签名与数字证书

RSA 加密过程是公钥加密私钥解密,而数字签名、数字证书都是私钥名(可以理解为加密),公钥证(可以理解为解密)。公钥私钥都可以用来加密解密,只要能保证用 A 加密,就用 B 解密即可,至于 A 是公钥还是私钥,可以根据不同的用途而定。 例如: 如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密 因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目...

产品线负责人 8601

计算机网络安全 —— 非对称加密算法 RSA数字签名

在对称密钥系统中,两个参与者要共享同一个秘密密钥。但怎样才能做到这一点呢?一种是事先约定,另一种是用信使来传送

m0_59485658的博客 1688

RSA加密名、数字证书算法、DSA - 非对称加密

文章目录1. RSA信息加密1. 计算钥匙阶段 - N的二进制位数即是密钥的长度2. 加密解密阶段2. RSA名3. 数字证书 - 权威机构证明传过来的公钥是对方的 非对称加密RSA(发明家三人的首字母)DSA(数字签名算法): 1. RSA信息加密 RSA加密步骤 - 例子 1. 计算钥匙阶段 - N的二进制位数即是密钥的长度 一般用的密钥长度是1024位密钥,重要的信息需要2048位密...

weixin_39651356的博客 663

加密or解密数字签名or数字证书

https://www.jianshu.com/p/8dc4a5f64e06 RSA加密/解密名/过程理解 https://www.cnblogs.com/pcheng/p/9629621.htmlRSA加密解密名、的原理及方法 https://www.jianshu.com/p/80aa37311151数字签名和数字证书究竟是什么? https://www.jia...

centyuan的博客 289

【学习】openssl,证书加密

openssl生成证书数字签名加密解密

m0_37586703的博客 1033

8 加密数字签名证书

1、实目的 l了解对称加密、非对称加密体制概念 l了解散列函数、数字签名和数字证书的概念和理论 l掌握基于Openssl的对称加密、密钥对的创建和应用 l掌握基于Openssl数字签名和数字证书的创建和应用 2、实环境 l硬件要求:阿里云云主机ECS 一台。 l软件要求:Linux/ Windows 操作系统 3、实内容 OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

qq_62222185的博客 733

java加密解密的学习

注:此文章只是对如何学习java加密解密技术做一个讲解。并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长。个人觉着学习一个学习方法比学习一个知识点更有价值的多。 首先,对于加密解密知识体系没有了解的同学,不建议去看什么《java加密解密的艺术》。因为此书大多是对关于加密解密的java API的讲解,即使硬着头皮看完,也会是水里雾里的一片模糊。所以初学者还不建议直接阅读这类型书...

161

RSA : 加密 非对称加密

RSA算法优点 不需要进行密钥传递,提高了安全性 可以进行数字签名认证 RSA算法缺点 加密解密效率不高,一般只适用于处理小量数据(如:密钥) 容易遭受小指数攻击 流程 在此可以看到,非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密解密的。 公钥用于加密私钥用于解密。 ...

火星男孩的分享空间 955

RSA非对称加解密算法原理、应用场景及Java代码示例

RSA非对称加解密算法原理、应用场景及Java代码示例

jackiendsc的博客 1745

1数字签名_通讯系统工程师学习笔记(5)| 公钥/私钥/数字签名/数字证书 图文解释 及 RSA解密数学原理...

通讯系统工程师有话说:“我是CSDN的搬运工。”基于TBOX的产品功能特征,产品工程师除了要了解传统车端ECU的通用知识,还需要扩充通信网络信息安全等背景知识。只有实现了跨汽车电子、通信、计算机网络等专业的知识融合,才可配得上通讯系统工程师的称呼。作为一只求知路上不断挣扎的选手,对一些岗位必备的知识梳理成笔记,供自己实时重温。如果对看到文章的朋友有一丢丢帮助,那就是意外收获了~(一)公钥...

weixin_39635314的博客 229

【信息安全】RSA-数字签名-数字证书

先说明几点: RSA加密算法过程是公钥加密私钥解密 数字签名、数字证书都是私钥名(可以理解为加密),公钥证(可以理解为解密)。 1-4 是正常的rsa加密解密 5-9 是数字签名 5-14 是数字证书   转载地址:点击打开链接 原文网址:http://www.youdzone.com/signature.html 1. 鲍勃有两

依然那霖哥 4169
上一篇: govendor包管理工具
下一篇: Windows安装wsl,并升级到wsl2
AggressionStorm
博客等级 码龄8年 6粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值