加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1 RSA算法基本原理
    • 2 RSA密鑰計(jì)算規(guī)則
    • 3 RSA密鑰計(jì)算實(shí)例
    • 4 總結(jié)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

嵌入式基礎(chǔ)知識(shí)-RSA非對(duì)稱加密基本原理

2023/10/30
2132
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

之前的文章:嵌入式基礎(chǔ)知識(shí)-信息安全與加密,介紹過數(shù)據(jù)加密的一些基本概念,對(duì)稱加密的原理比較簡(jiǎn)單,加密和解密的密鑰相同,而非對(duì)稱加密,兩個(gè)密鑰不同,本篇就來具體介紹RSA這種非對(duì)稱加密的密鑰計(jì)算原理。

1 RSA算法基本原理

RSA加密算法是由羅納德·李維斯特(Ronald Linn Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德爾曼(Leonard Adleman)于1977年共同發(fā)明的。它的密鑰計(jì)算規(guī)則可由下圖所示。

公鑰和私鑰的基本特點(diǎn)為:

    公鑰和私鑰中都有兩個(gè)數(shù)字構(gòu)成,并且其中一個(gè)數(shù)字是相同的,即圖中所示的N,示例為33公鑰有自己特有的數(shù)字,即圖中所示的E,示例為3私鑰有自己特有的數(shù)字,即圖中所示的D,示例為7


公鑰加密的過程為(對(duì)明文中的每個(gè)字符分別解密,示例為加密其中一個(gè)字符):

    先對(duì)明文求E次冪再將結(jié)果對(duì)N取余

私鑰解密的過程與加密過程類似:

    先對(duì)密文求D次冪再將結(jié)果對(duì)N取余

2 RSA密鑰計(jì)算規(guī)則

上面介紹了RSA加密解密的基本過程,那RSA的密鑰(公鑰和私鑰),怎么計(jì)算得到呢?

RSA的密鑰計(jì)算,需要用到質(zhì)數(shù)和歐拉函數(shù)的知識(shí)。

質(zhì)數(shù)的概念如果忘了,后面會(huì)再介紹。

歐拉函數(shù)暫不展開講解,記住公式即可。

下面就來看下RSA密鑰的計(jì)算步驟。

2.1 計(jì)算步驟

RSA密鑰(公鑰和私鑰)的計(jì)算步驟可分為如下五步:

第一步:取兩個(gè)質(zhì)數(shù),如p=3,q=11

第二步:質(zhì)數(shù)相乘,N=pxq=3x11=33

第三步:歐拉函數(shù),T=(p-1)x(q-1)=2x10=20

第四步:選公鑰E,需滿足以下條件:

可以從小開始選,選E=3,因此公鑰為(3, 33)

      • 是一個(gè)質(zhì)數(shù)1<公鑰<T不是T的因子

第五步,計(jì)算私鑰D,公式為**(DxE)%T=1**,解得D=7,因此私鑰為(7,33)

RSA密鑰的計(jì)算規(guī)則是公開的,那破譯的難點(diǎn)在哪里呢?

其實(shí),在實(shí)際使用時(shí),兩個(gè)質(zhì)數(shù)盡量取大,轉(zhuǎn)換成二進(jìn)制后1024個(gè)二進(jìn)制位或者更多,位數(shù)越多越難破解。

對(duì)于RSA的破解難度分析:

    公鑰(E,N)是公開的,要想破解密鑰,就是求出D根據(jù)公式(DxE)%T=1,E是已知的,下一步就是要獲取到T,而T=(p-1)x(q-1),與兩個(gè)質(zhì)數(shù)有關(guān)雖然N=pxq,N也是已知的,但如果這兩個(gè)質(zhì)數(shù)設(shè)置的非常大,N和T也就會(huì)很大而對(duì)于大數(shù)的質(zhì)數(shù)分解,是很難計(jì)算的,這就是RSA算法難破解的原理了

2.2 質(zhì)數(shù)簡(jiǎn)介

上面說到,RSA密鑰的計(jì)算,需要用的質(zhì)數(shù),那質(zhì)數(shù)的概念,是否還熟悉呢?

質(zhì)數(shù)是小學(xué)數(shù)學(xué)中就學(xué)過的知識(shí)點(diǎn),不過平時(shí)用的不多,這里再簡(jiǎn)單回顧以下。

質(zhì)數(shù)(也叫素?cái)?shù)),指在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的自然數(shù)。

質(zhì)數(shù)的一些性質(zhì):

    質(zhì)數(shù)p的約數(shù)只有兩個(gè):1和p算術(shù)基本定理:任一大于1的自然數(shù),要么本身是質(zhì)數(shù),要么可以分解為幾個(gè)質(zhì)數(shù)之積,且這種分解是唯一的質(zhì)數(shù)的個(gè)數(shù)是無限的若n為正整數(shù),在n^2到(n+1)^2之間至少有一個(gè)質(zhì)數(shù)若n為大于等于2的正整數(shù),在n到n!之間至少有一個(gè)質(zhì)數(shù)

可以寫一段代碼,求取一定范圍的質(zhì)數(shù),感受一下質(zhì)數(shù)有哪些。

代碼怎么寫呢?還是可以看下小學(xué)課本:

Python編寫的打印5000以內(nèi)質(zhì)數(shù)的代碼如下:

#判斷是否是質(zhì)數(shù):大于1,不等于2,是否為奇數(shù),是否有約數(shù)'''
def isPrime(num):
    if num > 1:
        if num>2:
            if num%2==1:
                for i in range(2, int((num-1)/2)): 
                    if num%i == 0:
                        return False #有約數(shù)
                return True #無約數(shù)
            return False #3以上的偶數(shù)
        return True #等于2
    return False #小于2

if __name__ == '__main__':
    prime_list = []
    for i in range(5000):
        if isPrime(i):
            prime_list.append(i)
    print(prime_list)

這里列舉5000以內(nèi)的質(zhì)數(shù):

3 RSA密鑰計(jì)算實(shí)例

題目:RSA算法中,選擇兩個(gè)質(zhì)數(shù),p=11,q=17,加密密鑰為e=23,且求解密密鑰。

分析:按照RSA算法的基本原理,N=pxq=11x17=187,T=(p-1)x(q-1)=10x16=160,而E=23,

根據(jù)(DxE)%T=1,即(Dx23)%160=1,解得D=7

4 總結(jié)

本篇介紹了RSA這種非對(duì)稱加密算法的加密解密基本過程,以及公鑰和私鑰的計(jì)算基本步驟,并補(bǔ)充介紹了質(zhì)數(shù)的相關(guān)概念,最后通過一個(gè)實(shí)例來簡(jiǎn)單體會(huì)下RSA密鑰的計(jì)算。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
74LVC244APW,118 1 NXP Semiconductors 74LVC(H)244A - Octal buffer/line driver; 3-state TSSOP2 20-Pin
$0.36 查看
HFBR-1521ETZ 1 Avago Technologies FIBER OPTIC TRANSMITTER, 5Mbps, THROUGH HOLE MOUNT, ROHS COMPLIANT, 6 PIN

ECAD模型

下載ECAD模型
$17.77 查看
PE4312C-Z 1 Peregrine Semiconductor Corp SPECIALTY TELECOM CIRCUIT, QCC20, QFN-20

ECAD模型

下載ECAD模型
$9.21 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

控制科學(xué)與工程碩士,日常分享單片機(jī)、嵌入式、C/C++、Linux等學(xué)習(xí)經(jīng)驗(yàn)干貨~