密码学03--go语言与非对称加密RSA算法的实现

本文详细介绍了非对称加密的原理和RSA算法,探讨了对称加密的弊端以及非对称加密的优势。通过Go语言,阐述了RSA密钥对的生成、公钥加密和私钥解密的流程,展示了如何在实际应用中使用RSA进行安全通信。
摘要由CSDN通过智能技术生成

目录

1.对称加密的弊端

2.非对称加密

2.1 非对称加密使用场景

2.2 区分公私钥

2.3 非对称加密通信流程

2.4 非对称加密与对称加密

3.非对称加密RSA算法

3.1 RSA算法

3.2 RSA原理

3.3 RSA生成密钥对流程

3.3.1 RSA生成私钥

3.3.2 RSA生成公钥

3.4 RSA生成密钥对模板

3.5 使用RSA密钥对加密-解密流程

3.5.1 使用RSA公钥加密流程

3.5.2 使用RSA私钥解密流程

3.6 使用RSA密钥对加密-解密模板

1.对称加密的弊端

对称加密的弊端在于密钥分发困难,无法保证密钥的发送是绝对安全,因此一旦密钥丢失会导致数据信息极易被攻破。一般会通过非对称加密的方式来对对称加密的密钥进行分发保护。例如:

在图中步骤1、2、3都是为了能够将对称加密的key以一种相对安全的方式传输给Alex的一种手段。因为与Alex公钥对应的私钥仅仅在Alex本地才持有,这就意味着Frank处通过Alex公钥加密的内容其他人即便截获也无法读取。这样就保证了对称加密key的安全性。

2.非对称加密

非对称加密不存在密钥分发困难的问题,但需要对非对称加密的公私钥作出一个简单的说明:公钥和私钥都能够加密数据,公钥和私钥也都能解密数据,并不存在说只能使用公钥加密数据,只能使用私钥解密数据的说法。但是不同的是如果使用私钥加密数据,那么与私钥对应的所有公钥都能解密数据,由于公钥是公开的,所以所有持有公钥的用户都能够破解数据的加密,那么数据就无法做到限制某一个用户读取,换言之这种加密方式基本就等于没有加密。所以对于非对称加密来说:通常都是使用公钥对数据加密,然后只有持有私钥的用户可以对数据解密,保证数据安全。

2.1 非对称加密使用场景

数据对谁更重要,谁就持有私钥。

  • (1)通信过程:A将数据传输给B,信息显然只允许B读取(A持有公钥加密数据,B持有私钥解密数据)
  • (2)登录认证:客户端需要向服务器发送登录请求(服务器持有公钥加密登录请求响应,客户端持有私钥解密响应数据)
  • (3)网银U盾:银行向个人发起认证信息只能允许个人读取(银行中持有公钥加密,个人持有的U盾中持有私钥解密)
  • (4)数字签名:附在信息原文后面的表明信息传输过程中是否受到伪造、用来确认的确由信息拥有者发出的验证信息
  •                        (比较特殊,由发送者持有私钥,接受者持有公钥。)

2.2 区分公私钥

  • 直接观察区别区分:一般情况下,私钥长度大于公钥长度。
  • 第三方工具生成的:公钥结构都是xxx.pub带有.pub的后缀,而私钥则是xxx这种不带有后缀的结构。

2.3 非对称加密通信流程

具体细节参见1中的图示内部步骤1、2、3即可。

2.4 非对称加密与对称加密

非对称加密尽管看起来简洁清晰、安全性高、似乎各方面都完爆对称加密,但是非对称加密无法替代对称加密!因为非对称加密尽管加密过程简单,但是非对称加密也存在很大的局限性

  • 非对称加密的执行效率要低于对称加密,同样数量级的数据加密操作对称加密速度更快
  • 非对称加密无法对大结构数据进行加密,因为非对称加密不存在分组加密操作,因此密钥的长度决定了加密数据长度有限

所以在使用加密的时候都会将对称加密的key通过非对称加密先行发送,毕竟对称加密的key都不会很大。然后在将本体数据经过对称加密后发送。也就是1中图示的内容。

3.非对称加密RSA算法

3.1 RSA算法

RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的,即Rivest-Shamir-Leonard(来威斯特-夏米尔-莱昂纳德)。它是目前使用最广泛的一种非对称加密算法,RSA不仅可以被用于非对称加密还能够用于生成数字签名。1983年,RSA公司为RSA算法在美国取得了专利,但现在该专利于2000年9月21日过期。

再次强调:非对称加密的密钥分为加密密钥解密密钥两部分

3.2 RSA原理

与逻辑原理非常复杂的对称加密相比较,非对称加密中的RSA逻辑原理简单到让人不可思议,因为RSA的逻辑原理仅仅只用到了简单的乘方与取模操作。在RSA算法中明文、密文还有密钥都是数字,那么他的逻辑原理就能够用下面两个公式来表示:

其中E代表单词Encryption加密、D代表Decryption解密、N代表Number数字,而{E,N}组合就是公钥&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值