换句话说,一个质数是一个只能被1和它自己整除的大于1的自然数。对于其他大于1的自然数,都是合数,可以分成1和它本身以外的整数量。很明显,素数和素数的乘积得到的数一定是合数。
长期以来,素数的科学研究被认为只有纯数学的实际意义,没有实际价值。直到20世纪70年代,美国麻省理工学院(MIT)的三位数学家Lee West、Samol和Aderman明确提出一种公钥加密技术,即RSA算法,并广泛应用于金融机构的数据加密,大家才意识到素数的关键作用。
质数为何能用以加密技术?这个问题需要涉及到最素因子分解。如果一个合数是由两个较小的质数的乘积得到的,那么转换成两个质数是非常容易的(1和它本身的合成除外)。例如,51的两个质因数是3和17。众所周知,如果两个非常大的质数相乘后得到一个非常大的合数,那么把它反过来转化成两个质数是非常困难的。比如511883,换算成两个质因数,就是557和919;238952327(超过25亿),换算成两个质因数后就是29179和87013。这个难度系数明显大于上一个。
截至2020年1月,现阶段已知最大的素数是2 825899331,有248.6万多位数。即使是高性能计算机,也很难对两个素数乘积得到的合数进行合理的素数因子分解,这样基本原理就可以用于加密技术。
什么叫RSA加密技术?RSA算法是一种对称加密优化算法。数据加密和解密的常用密钥是不同的。用于解密的公共密钥与用于数据加密的公共密钥相匹配。假设A给B发了一条短信A,那么A就是必须加密的信息内容;假设b是两个素数乘积得到的合数;c是与欧拉函数相关的数,是公钥;d是C关于欧拉函数值的模。最后,D是公钥。
数据加密B创建复数B、公钥C和公钥D后,B将B和C发送给A,D对信息进行保密,不被传输。用公钥C加密信息内容A,即计算A C除以B的余数E,即A C mod B = E,得到的E是保密的。因此,A将机密E传送给B..
信息内容破译获得机密性后,B使用公钥D解密机密性E..可以证明ed除B之外的余数就是信息内容A,即E D mod B = A,从而完成了信息内容的解密。
因为数字B、公钥C和秘密E都是被传输的,所以这类信息内容会被窃取。窃贼要想破译信息内容,必须知道公钥D,为了根据公钥C计算出密钥D,必须进行合数B的素因子分解。但是合数B是两个素数乘积得到的绝大部分,要成功地分解这个数是极其困难的。
目前绝大多数的RSA加密技术都已经有几百位数了,一般都是转换成两个几百位数的素数。如果再加注十位数的大部分,可以进一步降低被破译的风险。所以RSA加密技术的安全系数是很有保障的,这也是它会被广泛使用的原因。