此文为哈尔滨工程大计算机学院2020区块链技术课程附加作业,由武子腾(前四部分,70%),谈尤帅(第五部分,30%)共同完成,旨在帮助大家了解下传统的加密对称算法和非对称加密算法以及RSA算法的具体实现原理,最后给出了通过使用公私钥来实现数字签名的小例子。如有纰漏,还请指出。 传统的对称密码算法可以有效地保护小范围内的点对点传输数据的机密性,但是在参与通信的节点数量增多后,密钥管理成为了瓶颈问题。 RSA算法是一种非对称密码算法,通常是先生成一对RSA 密钥,其中之一是保密密钥(SK),由用户保存;另一个为公开密钥(PK),可对外公开,甚至可在网络服务器中注册,加密算法和解密算法也是公开的。 为了具体了解RSA算法,我们先熟悉下列简单的数学概念: 密钥的生成步骤: 1.小明随机选择两个不相等质数,例如61和53(即p=61,q=53) 利用公钥,私钥进行密文传递: 2.接收时: 注意: 下面根据具体实例模拟下密文的传递过程: 这里有的同学就有疑问了,既然n都已经公开了那么求φ(n)不是易如反掌吗,我随手就能说几个, φ(35)=24 ,φ(21)=12…,但是这是在n很小的情况下,倘若n很大呢,你还可以易如反掌地算出吗? 那么我们可以利用公钥和私钥做什么呢? 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。 然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 参考资料:一, 传统对称加密算法

在密码学中,恺撒密码,或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

对称加密算法是应用较早的加密算法。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。二,非对称加密算法

对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。三,RSA算法加密算法
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位,RSA密钥长度随着保密级别提高,且增加很快。但这会使加密的计算量增大,于是为减少计算量,在传送信息时常采用传统加密方法与公开密钥加密方法相结合的方式。

举例讲解RSA算法的加密,解密过程:
2. 小明计算出p* q得值,即n=6153=3233。
3. 小明计算出φ(3233)=6052,即φ(n)=3120
4. 小明在1到3120之间,选择一个随机数,假设为17,即公钥e=17
5. 小明算出e对于φ(n)的模反元素d为私钥,d=2753
ps:

6. 至此,公钥为(3233,17),私钥为(3233,2753)
1.发送时:

其中m为待发的信息,即将待发送消息m经过公钥和上述表达式转换后得到c,发送c,即发送的密文c=m^e%φ(n)

把收到的消息c利用私钥转换过来,得到实际消息m,即m=c^e%φ(n)
m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。此外,也可用私钥加密,公钥解密,这在下文会有详细说明
1.假设小明想要发送的密文为m=12
2.随后小明随机选取互质的两数p=3,q=5,则n=15, φ(n)=(3-1)*(5-1)=8
3.在1~8中随机选取一个与8互质的数作为公钥e,假设小明选取了e=3,则(15, 3)为公钥
4.那么根据e *d%8=1,可以算出d=19,则(15,3)为公钥,(15,19)为私钥
5.加密时:
实际发送出去的密文为:12^3%15=3
7. 解密时:
收到密文内容为3后,解密文: 3^19%15=12四,RSA加密算法安全性分析
对于RSA加密解密算法而言,(e,n)为公开密钥,那么破解RSA最直接的方法就是分解整数n,得到n=p* q中的p与q的值,之后由 φ(n)=(p-1)(q-1) 计算得到 φ(n),再通过 e*d%φ(n)=1,即可求出私钥d,之后使用(d,n)即可得出加密之前的明文。但是如果密钥的大小过大的话,那么就会产生“大整数分解难题”,从而导致解密失败。五,公私钥与数字签名
首先,鲍勃有两把钥匙,一把是公钥,另一把是私钥。鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。



鲍勃给苏珊回信,决定采用”数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。


鲍勃将这个签名,附在信件下面,一起发给苏珊。


苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
制作过程中有引用或参考下列优质内容,有问题请联系作者
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)