在讲解RSA加密算法之前先了解一下对称加密。
首先a对“m”进行加密:m+e=c,这里的“m”指“明文”、“e”指“密钥”、“c”指“密文”。
然后b得到密文“c”就需要进行解密:c-e=m。这样b就可以得到a传递过来的信息。
可是密钥“e”的传输就成了问题,窃听者完全可以窃听到密钥使用同样的算法进行解密。于是就诞生了非对称加密。
了解非对称加密之后我们就可以去探讨如何寻求一个公钥与私钥。就是说如何去找到一把锁和一把钥匙,并且它们之间需要有关联。下面就开始讲解这次的主角RSA加密算法。
第二步:把p*q得到n:n=p*q
第三步:x=(p-1)*(q-1) 这一步的作用在下面说讲到
第四步:找出公钥“e”,“e”必须是大于1且小于x的整数,同时“e”与“x”需要互质(两个数除1之外没有共同的公约数)
第五步:找出私钥“d”,“d”可以通过下面的公式求出:(e*d)/x余数为1
加密:m的e次幂除以n求余c
解密:c的d次幂除以n的余数必然是m
通过上述方法就可以完成一次信息的传输,那么再看看它的安全性:
已知公开的信息为:n、e、c
而解密需要:n、d、c
如果窃听者解密就必然要知道私钥“d”,想要知道私钥“d”需要通过“(e*d)/x余数为1”这段公式求得。而x为不公开的,那么想要知道x又必须又必须通过“x=(p-1)*(q-1)”求得。再往后,想要知道p、q又必须通过“n=p*q”公式求得。最关键的一步来了,对这种大数字的质数分解目前人类还没有办法办到。
对称加密:
假设a要传递信息“m”给b。首先a对“m”进行加密:m+e=c,这里的“m”指“明文”、“e”指“密钥”、“c”指“密文”。
然后b得到密文“c”就需要进行解密:c-e=m。这样b就可以得到a传递过来的信息。
可是密钥“e”的传输就成了问题,窃听者完全可以窃听到密钥使用同样的算法进行解密。于是就诞生了非对称加密。
非对称加密:
假设a要传递信息“m”给b。
首先b找出公钥“e”和私钥“d”,然后将公钥“e”传输给a。
之后a使用公钥“e”对信息“m”进行加密:e+m=c。
b得到密文“c”就需要进行解密,但这里的解密密钥是私钥“d”。简单来说就是密文“c”只有通过私钥“d”才能得到原来的信息“m”。那么解密就是:c-d=m。了解非对称加密之后我们就可以去探讨如何寻求一个公钥与私钥。就是说如何去找到一把锁和一把钥匙,并且它们之间需要有关联。下面就开始讲解这次的主角RSA加密算法。
RSA加密算法:
假设a要传递信息“m”给b。那么b就需要找到公钥和私钥。
第一步:找出两个质数(只有1和本身两个公约数的数):p、q第二步:把p*q得到n:n=p*q
第三步:x=(p-1)*(q-1) 这一步的作用在下面说讲到
第四步:找出公钥“e”,“e”必须是大于1且小于x的整数,同时“e”与“x”需要互质(两个数除1之外没有共同的公约数)
第五步:找出私钥“d”,“d”可以通过下面的公式求出:(e*d)/x余数为1
加密:m的e次幂除以n求余c
解密:c的d次幂除以n的余数必然是m
通过上述方法就可以完成一次信息的传输,那么再看看它的安全性:
已知公开的信息为:n、e、c
而解密需要:n、d、c
如果窃听者解密就必然要知道私钥“d”,想要知道私钥“d”需要通过“(e*d)/x余数为1”这段公式求得。而x为不公开的,那么想要知道x又必须又必须通过“x=(p-1)*(q-1)”求得。再往后,想要知道p、q又必须通过“n=p*q”公式求得。最关键的一步来了,对这种大数字的质数分解目前人类还没有办法办到。