大数的质因数分解为什么会破解密码?

大数的质因数分解为什么会破解密码?

RAS的加密原理大概是这样的。先选择两个大的质数p和q,然后自然的有n=p*q,有了这个前提之后我们开始生成公钥和秘钥。

1、公钥的选取方式是这样的:

a.首先计算 (这个东西是欧拉函数,大概的意思就是说比n小的正整数里面和n互质的数有多少个)。根据欧拉函数的性质有 :

上述公示成立的前提呢就是p和q都是质数。

b.选取一个数e, 而且要满足 ,说人话呢就是e和 的最大公约数要为1,也就是要互质

通过上述a、b步骤我们就得到了公钥。

2、私钥的选取方式是这样的:

设私钥为d,d需要满足 ,说人话就是私钥d和公钥e的乘积和 的模要为1。知道了e和 可以通过计算得到d,计算方法为:

其中k为整数

3、加密方式是这样的:

设明文为m,秘文为c的话,

这是加密步骤,通过e和n可以完成加密

这是解密步骤,通过d和n可以完成解密

通过上述描述不难看出公钥为e和n,秘钥为d和n。如果我们想通过公钥推算出秘钥的话,由于根据上文 ,那我们就需要知道 。根据欧拉公式的通式:

(其中p1, p2……pi为n的所有质因数,k是不为0的整数)

这就需要将n这个大数进行质因数分解,得到n的所有质因数进而计算出 ,最终得到秘钥d。当然也可以手动计算比n小的正整数里面有多少个数和n互质也可以得到 的值

-----------------------------------------------分割线----------------------------------------------

评论区有同学想搞清楚到底怎么加密的,比如”我爱你“这个字符串的加密,步骤如下:

1、选取两个质数比如:p=37,q=41(质数可以查看质数表去获取)

2、确定你的公钥和私钥,先列出来必要的一些值:

1)

2)

3) e取1~1440之间和1440互质的一个数

4) k取大于等于1的一个数

5)

这样我们得到了公钥为(73,1517),私钥为(217,1517),下面进行加密和解密:

"我爱你" 转unicode "\u6211\u7231\u4f60",分为三个部分:

\u6211=>我

\u7231=>爱

\u4f60 =>你

对每一个部分做加密,我们取第一个6211为例吧。

再对密文做解密

这里面要注意的是:

1、私钥 ,d不能为小数

2、要加密的数字不能大于N

还有对于字符串的加密,都需要把字符串转成数字才能进行上述工作,加密本质是一种数学运算而已,英文转ASCII码,汉字转unicode等等。