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


    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,发挥自己的想象力,去使用公开密钥机制吧。

  • 相关阅读:
    使用CablleStatement调用存储过程
    权限问题
    全文检索lucene6.1的检索方式
    spring的JdbcTemplate
    spring使用注解开发
    IDEA的快捷键:
    IDEA里面的facets和artifacts的讲解
    Hibernate---criteria的具体使用列子
    关于操作日期函数及其取范围
    hibernate---crateria
  • 原文地址:https://www.cnblogs.com/kevinge/p/2577488.html
Copyright © 2020-2023  润新知