加入星計劃,您可以享受以下權益:

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

嵌入式基礎知識-RSA非對稱加密基本原理

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

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

1 RSA算法基本原理

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

公鑰和私鑰的基本特點為:

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


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

    先對明文求E次冪再將結果對N取余

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

    先對密文求D次冪再將結果對N取余

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

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

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

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

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

下面就來看下RSA密鑰的計算步驟。

2.1 計算步驟

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

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

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

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

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

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

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

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

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

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

對于RSA的破解難度分析:

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

2.2 質數(shù)簡介

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

質數(shù)是小學數(shù)學中就學過的知識點,不過平時用的不多,這里再簡單回顧以下。

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

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

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

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

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

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

#判斷是否是質數(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以內的質數(shù):

3 RSA密鑰計算實例

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

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

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

4 總結

本篇介紹了RSA這種非對稱加密算法的加密解密基本過程,以及公鑰和私鑰的計算基本步驟,并補充介紹了質數(shù)的相關概念,最后通過一個實例來簡單體會下RSA密鑰的計算。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據手冊 ECAD模型 風險等級 參考價格 更多信息
HFBR-2521Z 1 Foxconn Receiver, 5Mbps, DIP, Through Hole Mount, ROHS COMPLIANT PACKAGE
$14.78 查看
LMK62A2-100M00SIAT 1 Texas Instruments 100-MHz, LVDS ±50 ppm, high-performance, low-jitter, standard oscillator 6-QFM -40 to 85

ECAD模型

下載ECAD模型
$10.7 查看
AB26TRQ-32.768KHZ-T 1 Abracon Corporation CRYSTAL 32.7680KHZ 12.5PF SMD

ECAD模型

下載ECAD模型
$0.5 查看

相關推薦

電子產業(yè)圖譜

控制科學與工程碩士,日常分享單片機、嵌入式、C/C++、Linux等學習經驗干貨~