金融实训--公钥加密

 

l 单向函数:
l 两个集合 X Y F 是两个集合之间的映射 Y = F(X) ,则 :

  1) 已知 X Y 容易

  2) 已知 Y 反推 X 困难

例如: y = f(x) = ax

  1) 求常数ax次方,简单来说做x次乘法即可得到y,如果采用二分法,计算的复杂度会更低。

  2) 反过来,如果已知yx,难度要比做x次乘法大很多。

如果x计算ax用时1秒,那么从ax反推x需要的时间约1014

l 公钥和私钥的产生
l 任意选择两个大的质数 ( 素数 ) p q p 不等于 q ,计算 N= pq
l 根据欧拉函数,不大于 N 且与 N 互质的整数个数为 (p-1)(q-1)
l 选择一个整数 e (p-1)(q-1) 互质,并且 e 小于 (p-1)(q-1)
l 用以下这个公式计算 d d×e ≡ 1 (mod (p-1)(q-1))
l p q 销毁 后, ( N,e ) 是公钥, ( N,d ) 是私钥

例如:

l 素数 p=47 q 71 ,得 N=3337 j (n)=(47-1)×(71-1) 3220
l 选择 e=79 ,求得私钥 d=e -1 º 1019(mod 3220) 公开 N=3337 e=79

l 加密消息
l 假设 Bob 想给 Alice 送一个消息,他知道 Alice 产生的公钥 N e
l 将原始信息分为多段,每一段(假定为 n )分别用以下公式计算出 c
l
l 将多个 n 计算出的多个 c 串在一起,就是密文,发送即可。
l 例如:公钥 ( N,e )=(3337,79) ,私钥 ( N,d )=(3337,1019)
l 现要发送明文 688 ,计算: 688 79 (mod 3337)=1570

 

l 解密消息
l Alice 得到 Bob 的消息 c 后就可以利用她的密钥( N,d )来解码。她可以用以下这个公式来将 c 转换为 n
l
l 得到 n 后,她可以将原来的信息 m 重新复原。
l 例如:公钥 ( N,e )=(3337,79) ,私钥 ( N,d )=(3337,1019)
l 收到密文 1570 后,用私钥 d 1019 进行解密:

15701019mod 3337)=688

RSA应用
l 加密少量数据
l 比起 DES 和其它对称算法来说, RSA 的运算速度要慢得多

实际使用时RSA算法不用来加密消息,而是用来加密传输密钥,加密消息用对称算法,如DES

实现数字签名

RSA算法反向使用(私钥加密公钥解密),对消息摘要加密,可以实现数字签名的功能。

数字签名可以防止数据篡改、数据抵赖和数据伪造发生

 小A同学准备一些文字(信件),选择一个密钥利用DES-Tool对文字进行加密得到密文1。

 

 小B同学运行RSA-Tool,生成公钥和私钥,将公钥发送给小A同学,私钥自己留存。

 小A同学利用小B同学的公钥对加密信件时使用的对称密钥进行加密,得到密文2。将密文1和密文2一同发送给小B同学。

 小B同学首先用自己的私钥解密密文2,接着利用解密密文2得到的对称密钥在DES-Tool中解密密文1,得到原始文字内容。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值