‘壹’ 密码学 RSA算法
明文,密文,密钥
明文,密文,公钥,私钥
(n,e1)(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。
1、找到两个质数p,q
2、n=p q 欧拉函数:φ(N) =(p-1) (q-1)
3、选择一个小于φ(N)随机整数数e :1<e<φ(N)的整数 e和φ(N)互质
4、计算出e与φ(N)的模反元素d:
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
ed ≡ 1 (mod φ(n))
这个式子等价于
ed - 1 = kφ(n)
于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。
ex + φ(n)y = 1
这个方程可以用 "扩展欧几里得算法" 求解,
5、将n和e封装成公钥,n和d封装成私钥。
私钥d:e*d/F(n)余数为1
6、加密: 加密要用公钥 (n,e) me ≡ c (mod n) 即m^e/n余数为c
7、解密:解密要用私钥(n,d) cd ≡ m (mod n) 即 c^d/n的余数为m
1、取p=103,q=349
2、计算n=p q=103 349=35947
3、计算欧拉函数φ(N) =(p-1) (q-1)=35496
4、取随机整数 e小于φ(N)且互质e=773
5、 e 关于 r的模反元素 e d(mod φ(n))=1 d=45
6、公钥就是 (35496 ,773),私钥就是(35496 , 45)
传播:n,e,c
解密:n,d,c
那么,有无可能在已知n和e的情况下,推导出d?
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
结论:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。
可是,大整数的因数分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。
‘贰’ RSA算法加密
RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。
它的原理较为简单,假设有消息发送方A和消息接收方B,通过下面的几个步骤,就可以完成消息的加密传递:
消息发送方A在本地构建密钥对,公钥和私钥;
消息发送方A将产生的公钥发送给消息接收方B;
B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信;
反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。
由于公钥是消息发送方A暴露给消息接收方B的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄漏,则A通过私钥加密的数据就可能被解密。
如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。
当然,这种方式可能存在数据传递被模拟的隐患,但可以通过数字签名等技术进行安全性的进一步提升。由于存在多次的非对称加解密,这种方式带来的效率问题也更加严重。
‘叁’ RSA 钬斺 缁忓吀镄勯潪瀵圭О锷犲瘑绠楁硶
鎺㈢储RSA锷犲瘑浼犲囷细闱炲圭О锷犲瘑绠楁硶镄勫ゥ绉
鍦ㄥ瘑镰佸︾殑鐟板疂涓锛孯SA绠楁硶浠ュ叾镫鐗圭殑闱炲圭О镐х嫭镙戜竴甯溿傚畠灏卞儚涓鎶婄炵樼殑阍ュ宠锛岃╀俊鎭鍦ㄧ湅浼兼棤瑙g殑璋滈树腑瀹夊叏绌挎銆备竴镞︽帉鎻′简娆ф媺鍑芥暟銆佹ф媺瀹氱悊鍜岄嗗厓镄勭簿楂掳纴RSA锷犲瘑涓庤В瀵嗙殑铡熺悊灏嗗彉寰楄交钥屾槗涓俱傝╂垜浠涓璧锋彮寮杩欎釜锷犲瘑绠楁硶镄勭炵橀溃绾便
锷犲瘑锛屾槸灏嗘槑鏂囬氲繃鐗瑰畾绠楁硶鍙桦够锛屼娇涔嫔湪链鎺堟潈钥呴溃鍓嶅彉寰椾笉鍙璇汇傝岃В瀵嗭纴鍒欐槸杩欎釜杩囩▼镄勯呜繍绠楋纴鎭㈠嶅师濮嬩俊鎭銆傛槑鏂囦笌瀵嗘枃锛屽氨镀忎竴瀵瑰瘑镰佺殑铡熷舰涓庡彉褰锛岄氲繃锷犲瘑绠楁硶镄勯瓟娉曪纴鍙桦缑闅句互瑙﹀强銆
鍦ㄥ姞瀵嗘坠娈典腑锛屽圭О涓庨潪瀵圭О鏄涓ょ嶆埅铹朵笉钖岀殑鏂瑰纺銆傚圭О锷犲瘑濡侫ES鍜娈ES锛屼娇鐢ㄥ悓涓鎶婂瘑阍ヨ繘琛屽姞瑙e瘑锛岄珮鏁堜絾瀵嗛挜绠$悊澶嶆潅銆傜浉鍙嶏纴RSA镄勯潪瀵圭О镐т互鍏阍ュ拰绉侀挜镄勫囧欑粍钖堜负鐗圭偣锛屼竴涓鍏寮锛屼竴涓淇濆瘑锛岀‘淇濅简淇℃伅浜ゆ崲镄勫畨鍏ㄣ
RSA绠楁硶镄勬牳蹇冨熀浜庝竴涓鏁板﹂毦棰桡细绱犳暟镄勪箻绉鐪嬩技瀹规槗鐢熸垚锛屼絾鍒呜В鍗村纾甯稿汹闅俱傛f槸杩欎釜铡熺悊锛屾瀯鎴愪简RSA锷犲瘑镄勫潥锲哄熀鐭炽傚叾杩囩▼鍖呮嫭鐢熸垚涓瀵瑰签澶х殑绱犳暟锛岃$畻涔樼Н骞舵垒鍒板畠浠镄勯嗗厓锛屽舰鎴愬叕阍ュ拰绉侀挜杩椤瑰瘑阍ヤ即渚c
锷犲瘑镞讹纴鏄庢枃阃氲繃鍏阍ョ殑骞傝繍绠椾笌妯¤繍绠楋纴鍙樻垚鐪嬩技镞犺抗鍙寰镄勫瘑鏂囷绂钥岃В瀵嗭纴鍒欐槸绉侀挜镄勮亴璐o纴杩愮敤钖屾牱镄勬暟瀛﹂瓟娉曞皢瀵嗘枃杩桦师涓哄师濮嬩俊鎭銆俣SA镄勫阀濡栾捐★纴璁╁畨鍏ㄥ拰鏁堢巼镓惧埌浜嗗畬缇庣殑骞宠銆
绉侀挜瑙e瘑镄勫叧阌鍦ㄤ簬锛屽畠纭淇濅简瀵嗘枃缁忚繃骞傚彇妯″悗绛変簬鏄庢枃銆傛棤璁烘槸浜掔礌杩樻槸闱炰簰绱犵殑𨱍呭喌锛屾ф媺瀹氱悊鍜岄嗗厓镄勮繍鐢锛岄兘淇濊瘉浜呜繖涓杩囩▼镄勬g‘镐с傝孯SA镄勫畨鍏ㄦу湪浜庯纴瑕佺牬瑙e畠锛屽氨镀忚瘯锲句粠涓鍫嗘暟瀛椾腑镓惧嚭闅愯棌镄勯挜鍖欙纴闇瑕佸瑰ぇ鏁存暟杩涜屽洜鏁板垎瑙o纴杩椤湪褰揿墠镄勮$畻鑳藉姏涓嫔嚑涔庢槸涓嶅彲鑳界殑鎸戞垬銆
镐荤粨𨱒ヨ达纴RSA绠楁硶锲犲叾闱炲圭О镐э纴链夋晥鍦拌В鍐充简瀵圭О锷犲瘑镄勫悓姝ラ梾棰桡纴涓轰俊鎭瀹夊叏鎻愪緵浜嗗己澶х殑淇濇姢銆傚敖绠$牬瑙g殑闅惧害宸ㄥぇ锛屼絾姝f槸杩欑嶆写鎴樻э纴浣垮缑RSA鎴愪负鐜颁唬阃氢俊棰嗗烟涓嶅彲鎴栫己镄勫姞瀵嗗伐鍏枫