公开密钥机制 算法及公式 例子 转

Domino的安全机制中用到了公开密钥机制。请你用5分钟的时间看看我这个帖子,你就会明白公开密钥机制的原理和使用方法。

几个小数数学中的概念:
1、自然数(natural number),用以计量事物的件数或表示事物次序的数。即用数码0,1,2,3,4,……所表示的数 。自然数由0开始 , 一个接一个,组成一个无穷集合。
2、一整数被另一整数整除,后者即是前者的因数,如1,2,4都为8的因数。1,2,4被称为8的因子。
3、在两个或几个数中,如果它们有相同的因数,那么这个/些因数就叫做它们的公因数。而这些公因数中最大的那个称为这些正整数的最大公因数。12和18的公因数有:1、2、3、6,而最大公因数就是6了!
4、质数,又称素数,就是一个正整数,除了本身和 1 以外并没有任何其他因子。例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数。
5、互素,又称互质。若n个整数a1,a2,…,an的最大公因数为1,就称这n个整数互素。
============================================


1、找密钥的过程
在自然数中找两个大质数p和q,记n=pq,m=(p-1)(q-1)。
在0至m-1的自然数中找一个e,但e要满足1个条件:e与m互素。
再找一个数d,d要满足的条件是:ed-1除以m的余数是0(即ed-1能够被m除尽)。
那么,数字对(e,n)就是公开密钥,数字对(d,n)就是私有密钥。

2、用公开密钥机制加解密的算法公式
注意:在使用公开密钥加密时,明文分组的值要小于n。
假设明文的值是x,密文的值是y。则:
加密公式:密文y=x的e次方除以n的余数
解密公式:明文x=y的d次方除以n的余数

至于这两个公式是怎么成立的,你不用去管,自然是有大数学家证明过的。数学是自然科学的基础,这句话没错吧!

3、举例
(1)找两个大质数p和q,假设为:p=7,q=17;
n=7*17=119;
m=(7-1)(17-1)=96
(2)从0至m-1(即0至95)的自然数中找一个e,但e要与96互素。我们就找e=5;
(3)现在再找d,使5d-1能够被96除尽。可以从1往大的数推算,可找到d=77。
因为5*77-1=384,384/96=4,余数是0。

好了,公开密钥就是(5,119),私有密钥就是(77,119)。
注意:77这个数很关键呀,不能告诉任何人。

(你看它多放肆,它就料定你从5推算不出77来!其根本原因就是把119分解成两个质数的乘积很困难。不过这儿还是不困难,因为119太小了)。

(4)加解密的过程。
在使用公开密钥加密时,明文分组的值要小于n。
在本例中,n=119,由于2的7次方等于128,所以使用本例密钥加密时,明文数据只能按照6位(bit)分组。2的6次方等于64。

假设明文的某个分组的值是8,即x=8。
加密后的密文y=x的e次方除以n的余数=8的5次方除以96的余数=32768/96的余数=32,所以密文y=32。

得到密文值是32的人,使用私有密钥解密:
解密后的明文x=y的d次方除以n的余数=32的77次方除以96的余数=8


五分钟不到,你就明白了公开密钥机制和使用方法了吧。

OK,发挥自己的想象力,去使用公开密钥机制吧。

转载于:https://www.cnblogs.com/kevinge/archive/2012/07/05/2577488.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值