日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RSA算法原理——(2)RSA简介及基础数论知识

發(fā)布時(shí)間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSA算法原理——(2)RSA简介及基础数论知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上期為大家介紹了目前常見加密算法,相信閱讀過的同學(xué)們對(duì)目前的加密算法也算是有了一個(gè)大概的了解。如果你對(duì)這些解密算法概念及特點(diǎn)還不是很清晰的話,昌昌非常推薦大家可以看看HTTPS的加密通信原理,因?yàn)镠TTPS加密通信使用了目前主要的三種加密算法,大家可以從中體會(huì)到各種加密算法的優(yōu)缺點(diǎn)。

一、目前常見加密算法簡介
二、RSA算法介紹及數(shù)論知識(shí)介紹
三、RSA加解密過程及公式論證

二、RSA算法介紹及數(shù)論知識(shí)介紹

如果上期(目前常見加密算法簡介)算是天安門前的話,那今天的內(nèi)容就算是正式通過天安門進(jìn)入故宮了。

1.RSA算法介紹

對(duì)于大多數(shù)IT從業(yè)者來說RSA算法并不陌生,因?yàn)槲覀兌喽嗌偕俣际褂眠^。而對(duì)于非IT從業(yè)者來說或許你們知道有加密算法,但是具體的哪種算法可能并不了解,其實(shí)對(duì)所有人來說都接觸過RSA算法,只是你并不知道而已for example:你百度一下或者掃一掃、信用卡付款等這些過程都使用到了RSA加密算法。就目前安全通信來講,RSA無處不在。

那RSA加密算法究竟是怎么來的呢?

RSA加密算法是一種非對(duì)稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當(dāng)時(shí)他們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的?!S基百科

2.數(shù)論知識(shí)介紹

其實(shí)RSA算法加解密其實(shí)就是兩個(gè)公式,只是為了理解這兩個(gè)公式我們需要學(xué)習(xí)數(shù)論中的四個(gè)概念:互質(zhì)、歐拉函數(shù)、歐拉定理、模反元素,這四個(gè)概念都是非常好理解的,不需要有數(shù)論的基礎(chǔ),只需要有初高中的數(shù)學(xué)就夠用就能理解,下面我們就來看看這四個(gè)概念是什么?

(1)互質(zhì)關(guān)系

如果兩個(gè)正整數(shù),除了1以外沒有其他公因子,我們就稱這兩個(gè)數(shù)是互質(zhì)關(guān)系(coprime)。比如,6和21他們的公因子有:3和1,所以6和21就不是互質(zhì);而10和21只有一個(gè)公因子1,所以它們是互質(zhì)關(guān)系。這說明,不是質(zhì)數(shù)也可以構(gòu)成互質(zhì)關(guān)系。

有以下幾點(diǎn)可構(gòu)成互質(zhì)關(guān)系:

  • 任意兩個(gè)質(zhì)數(shù)構(gòu)成互質(zhì)關(guān)系,比如13和61
  • 1和任意一個(gè)自然數(shù)是都是互質(zhì)關(guān)系,比如1和99
  • p是大于1的整數(shù),則p和p-1構(gòu)成互質(zhì)關(guān)系,比如57和56
  • p是大于1的奇數(shù),則p和p-2構(gòu)成互質(zhì)關(guān)系,比如17和15
  • 如果兩個(gè)數(shù)之中,較大的那個(gè)數(shù)是質(zhì)數(shù),則兩者構(gòu)成互質(zhì)關(guān)系,比如97和10
  • 一個(gè)數(shù)是質(zhì)數(shù),另一個(gè)數(shù)只要不是前者的倍數(shù),兩者就構(gòu)成互質(zhì)關(guān)系,比如3和10
  • (2)歐拉函數(shù)

    思考:請(qǐng)問10以內(nèi)的正整數(shù)有哪幾個(gè)與10互質(zhì)呢?

    答案是:{1,3,7,9},10以內(nèi)可能用手指就可以算過來,那100呢?1000呢?那是不是有什么公式可以計(jì)算?答案是有,這就是我們這里要講的的歐拉函數(shù)

    任意給定正整數(shù)n,請(qǐng)問在小于等于n的正整數(shù)之中,有多少個(gè)與n構(gòu)成互質(zhì)關(guān)系?

    計(jì)算這個(gè)值的方法就叫做歐拉函數(shù),以φ(n)表示。在1到10之中,與10形成互質(zhì)關(guān)系的是1、3、7、9,所以 φ(10) = 4。

    φ(n) 的計(jì)算方法并不復(fù)雜,但是為了得到最后那個(gè)公式,需要一步步討論。對(duì)于下面的公式大家稍微記住就行,沒必要理解通透,有時(shí)候適當(dāng)?shù)泥駠魍虠椖茏屇銓W(xué)習(xí)的更快!

    第一種情況

    如果n=1,則 φ(1) = 1 。因?yàn)?與任何數(shù)(包括自身)都構(gòu)成互質(zhì)關(guān)系


    第二種情況

    如果n是質(zhì)數(shù),則 φ(n)=n-1 。因?yàn)橘|(zhì)數(shù)與小于它的每一個(gè)數(shù),都構(gòu)成互質(zhì)關(guān)系。比如5與1、2、3、4都構(gòu)成互質(zhì)關(guān)系。


    第三種情況

    如果n是質(zhì)數(shù)的某一個(gè)次方,即 n = p^k (p為質(zhì)數(shù),k為大于等于1的整數(shù)),則

    比如 φ(8) = φ(2^3) =2^3 – 2^2 = 8 -4 = 4。

    這是因?yàn)橹挥挟?dāng)一個(gè)數(shù)不包含質(zhì)數(shù)p,才可能與n互質(zhì)。而包含質(zhì)數(shù)p的數(shù)一共有p^(k-1)個(gè),即1×p、2×p、3×p、…、p^(k-1)×p,把它們?nèi)コ?#xff0c;剩下的就是與n互質(zhì)的數(shù)。

    上面的式子還可以寫成下面的形式:

    可以看出,上面的第二種情況是 k=1 時(shí)的特例。


    第四種情況

    如果n可以分解成兩個(gè)互質(zhì)的整數(shù)之積,

    n = p1 × p2

    φ(n) = φ(p1p2) = φ(p1)φ(p2)

    即積的歐拉函數(shù)等于各個(gè)因子的歐拉函數(shù)之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24


    第五種情況

    因?yàn)槿我庖粋€(gè)大于1的正整數(shù),都可以寫成一系列質(zhì)數(shù)的積。

    根據(jù)第4條的結(jié)論,得到

    再根據(jù)第3條的結(jié)論,得到

    也就等于

    這就是歐拉函數(shù)的通用計(jì)算公式。比如,1323的歐拉函數(shù),計(jì)算過程如下:

    (3)歐拉定理

    歐拉函數(shù)的用處,在于歐拉定理?!?strong>歐拉定理”指的是:

    如果兩個(gè)正整數(shù)a和n互質(zhì),則n的歐拉函數(shù) φ(n) 可以讓下面的等式成立:

    也就是說,a的φ(n)次方被n除的余數(shù)為1?;蛘哒f,a的φ(n)次方減去1,可以被n整除。比如,3和7互質(zhì),而7的歐拉函數(shù)φ(7)等于6,所以3的6次方(729)減去1,可以被7整除(728/7=104)。

    科普:mod為取模,取模運(yùn)算與取余運(yùn)算還是有區(qū)別。取余的商是靠近0的,而取模的商是靠近負(fù)無窮的,看下面的例子:
    7 mod 4 = 3(商 = 1 或 2,1<2,取商=1,與取余相同)
    -7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
    7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)
    -7 mod -4 = -3(商 = 1或2,1<2,取商=1,與取余相同)

    歐拉定理的證明比較復(fù)雜,這里就省略了。我們只要記住它的結(jié)論就行了。

    歐拉定理可以大大簡化某些運(yùn)算。比如,7和10互質(zhì),根據(jù)歐拉定理,

    因此,7的任意次方的個(gè)位數(shù)(例如7的222次方),心算就可以算出來。

    歐拉定理是RSA算法的核心。理解了這個(gè)定理,就可以理解RSA。多看幾遍歐拉定理的定義,知道公式表達(dá)的意思就夠了。

    (4)模反元素

    還剩最后一個(gè)概念:

    如果兩個(gè)正整數(shù)a和n互質(zhì),那么一定可以找到整數(shù)b,使得 ab-1 被n整除,或者說ab被n除的余數(shù)是1

    這時(shí),b就叫做a的“模反元素”。

    比如,3和11互質(zhì),那么3的模反元素就是4,因?yàn)?(3 × 4)-1 可以被11整除。顯然,模反元素不止一個(gè), 4加減11的整數(shù)倍都是3的模反元素 {…,-18,-7,4,15,26,…},即如果b是a的模反元素,則 b+kn 都是a的模反元素。

    歐拉定理可以用來證明模反元素必然存在。

    可以看到,a的 φ(n)-1 次方,就是a的模反元素。


    至此RSA算法的需要的數(shù)學(xué)知識(shí)就講完了,讓我們來總結(jié)一下吧:

  • 如果兩個(gè)正整數(shù),除了1以外沒有其他公因子,我們就稱這兩個(gè)數(shù)是互質(zhì)關(guān)系,比如4和15
  • 任意給定正整數(shù)n,請(qǐng)問在小于等于n的正整數(shù)之中,有多少個(gè)與n構(gòu)成互質(zhì)關(guān)系?比如10以內(nèi)的正整數(shù)有哪幾個(gè)與10互質(zhì)呢?計(jì)算這個(gè)值的方法就叫做歐拉函數(shù),以φ(n)表示,φ(10)=4,以及歐拉函數(shù)的5種情況。
  • 歐拉定理:如果兩個(gè)正整數(shù)a和n互質(zhì),則n的歐拉函數(shù) φ(n) 可以讓下面的等式成立:

  • 如果兩個(gè)正整數(shù)a和n互質(zhì),那么一定可以找到整數(shù)b,使得 ab-1 被n整除,或者說ab被n除的余數(shù)是1,這時(shí),b就叫做a的“模反元素

  • 是不是感覺也不是很難呀,下期我們將一起進(jìn)入RSA算法最核心的內(nèi)容:RSA加解密過程及公式論證,我會(huì)為大家一步一步的推論,絕對(duì)會(huì)是最詳細(xì)的一份RSA算法原理剖析,大家期待吧!

    ps:有一份英文介紹RSA加密算法的文檔,感興趣的同學(xué)可以看看:The RSA Cryptosystem: History, Algorithm, Primes

    附手稿:

    總結(jié)

    以上是生活随笔為你收集整理的RSA算法原理——(2)RSA简介及基础数论知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。