ps:今天在一个社交软件上认识了一个朋友,在聊天过程了谈到过质素于密码的关系,所以上网搜索些许资料,进行补充个人知识库。
在本世纪七十年代,有几位美国数学家提出一种编码方法,这种方法可以把通讯双方的约定公开,然而却无法破译密码,这种奇迹般的密码就与素数有关(RSA加密算法)。
我们知道,任何一个自然数都可以分解为素数的乘积,如果不计因数的次序,分解形式是唯一的。这叫做算术基本定理(欧几里得早已证明)。可是将一个大整数分解却没有一个简单通行的办法,只能用较小的素数一个一个去试除,耗时极大。如果用电子计算机来分解一个100位的数字,所花的时间要以万年计。可是将两个100位的数字相乘,对计算机却十分容易。美国数学家就利用了这一点发明了编制容易而破译难的密码方式。这种编码方式以三位发明者姓氏的首字母命名为RSA码。
例如,A、B两位通讯者约定两个数字N和e,A想要将数字M发给B,他不是直接将M发出,而是将M连乘e次,然后除以N,将余数K发给B。B有一个秘密的数字d,连A也不知道,他将K连乘d次,然后除以N,得到的余数就是原来的数M。
数字是这样选择的,N=p×q,p、q是选定的两个大的素数,选取e、d,使ed-1是(p-1)×(q-1)的倍数,而且使e和p-1、q-1没有公因数,这是容易做到的。根据这个方法,编码规则可以公开,可是由于N太大,分解得到p、q几乎是不可能的,他人也就无从知道d,不可能破译密码了。
RSA提出后,三位发明家曾经公布了一条密码,悬赏100美元破译,他们预言,人们至少需要20000年,才能破译,即使计算机性能提高百倍,也需要200年。但只过了不到18年,这个密码就被人破译,意思是:“The magic words are squeamish ossifrage”。这个密码如此快的破解,是因为全世界二十多个国家的六百多位工作者自发联合起来,利用计算机网络,同时进行因式分解,并不断交流信息,汇总计算结果,用了不到一年的时间,就将129位的N分解成64位和65位的两个素数的积。计算机网络将分解效率提高了近万倍,这是发明者当初没有预想到的。但是,如果提高位数到200或300位,工作量将会大的不可思议,即使计算机技术有重大突破,破译也几乎不可能。
原文地址:https://www.cnblogs.com/glenfen/p/10126829.html