杂学日记一

1.什么是加密?
加密就是将信息加工为第三方无法理解的信息形式的过程。通常为密码参与明文编码形成密文。(个人理解)

2.什么是对称/不对称加密?
2.1 简单的对称加密

加密的对称体现为加密密码既可以加密也可以解密。
例如,加密算法为将所有字母转变成数字,再减去密码,若负数+26:
明文:HELLO
密码:12345
明文数字表达:08 05 12 12 15
那么加密过程如下:
密文0[H]=08-1=07→G
密文1[E]=05-2=03→C
密文2[L]=12-3=09→I
密文3[L]=12-4=08→H
密文4[O]=15-5=10→J

密文数字表达:07 03 09 08 10
密文:GCIHJ

使用密匙(密码)123456,我们对密文进行解密,算法为加密算法的逆算法,所有字母转变为数字,再加上密码,若大于26则-26:
明文0[G]=07+1=08→H
明文1[C]=03+2=05→E
明文2[I]=09+3=12→L
明文3[H]=08+4=12→L
明文4[J]=10+5=15→O

得到明文:HELLO

以上就是对称加密。对称加密的问题是密匙的约定,在一个公共可访问的不安全信道内,传递密匙是可能被第三人窃听的,第三人掌握了密匙,那么就可以解开通讯双方接下来的加密内容。

2.2 简单的不对称加密

由对称加密的缺陷,不对称加密就应运而生了…
不对称加密的密匙由两方面组成:私钥和公钥
其特点是私钥编码的信息只能被公钥解读,公钥编写的信息只能被私钥解读。这就是不对称的来源。
通讯方A,将自己的公钥a发送给通讯方B,B用公钥a加密自己的信息后回传给通讯方A。这个过程中,就算有第三方得知了通讯A的公钥a,但没有私钥a,就无法解开通讯方B回传的信息。

接下来是如何得到私钥、公钥的简易过程:
(注:互质代表两个数没有除1以外的公约数。)

第一步:使用两个不相等的质数p和q
假设:p=7,q=11

第二步:计算p和q的乘积n
n=7*11=77

第三步:计算[1,n)中与n互质的整数个数φ(n)
φ(n)=(p-1)(q-1)
即:φ(35)=(7-1)*(11-1)=60

第四步:随机选择一个整数e,使1<e<φ(n),且e与φ(n)互质
这里就是在(1, 60)中选一个与60互质的数,例如17。
即:e=17

第五步:计算e对于φ(n)的模反元素d
(模反元素:
如果正整数a与n互质,那么一定存在整数b,使ab-1 mod n=0 或说 ab mod n=1,这里的b就是a的模反元素。
上述式等价于:ab-kn=1,即 b=(1+kn)/a
例如a=2,n=3,则有 b=(1+3k)/2 ,其中k(k∈N+)的取值要满足b为整数,比如k=1。

由上可知等式:d=(1+k
φ(n))/e,即:d=(1+60k)/17
我们这里随意解一组解 (d,k)=( 53,15) 满足等式,

第六步:将n和e封装成公钥,n和d封装成私钥。
即:公钥=(n,e),私钥=(n,d)
其中n=77,e=17,d=53

获得了公钥和私钥,接下来就是具体的加解密了:
1、加密使用公钥(n,e)
密文=明文^e mod n
假设明文为6(明文必须是整数且小于n)
那么有:
密文=6^17 mod 77
=16926659444736 mod 77
=41

2、解密使用私钥(n,d)
明文=密文^d mod n
即:
明文=41^53 mod 77
= 30029244509755528909515354610714362612715673268101405247552215337242228689328157470921 mod 77
=6

3、通讯方法
·直接使用不对称加密通讯
① 通讯方A(以下简称A方)将自己的公钥A光明正大的发送给通讯方B(以下简称B方)。
② B方将自己的公钥B同样光明正大的发送给A方。
③ 双方用对方的公钥加密接下来的信息,并用自己的私钥解密对方发来的信息。秘密通道√

·用不对称加密协商对称加密密匙后用对称加密通讯
① A方将自己的公钥A发送给B方
② B方用A方的公钥A加密密匙K后发送给A方
③ A方用私钥A解密B方发来的数据,获得密匙K
④ 双方使用密匙K加密数据通讯。秘密通道√

知识来源:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html RSA算法原理(一)阮一峰
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html RSA算法原理(二)阮一峰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值