我想知道什麼是RSA簽名的長度?它是否總是與RSA密鑰大小相同,如果密鑰大小是1024,那麼RSA簽名是128字節,如果密鑰大小是512位,那麼RSA簽名是64字節?什麼是RSA模數? RSA-sha1又是什麼意思? 非常感謝任何指針。RSA簽名大小?
RSA簽名大小?
回答
你是對的,RSA簽名大小取決於密鑰大小,RSA簽名大小等於以字節爲單位的模數長度。這意味着對於一個「n位密鑰」,所得到的簽名將是正好n位長。儘管所計算的簽名值不一定是n位,但結果將被填充以恰好匹配n位。
現在,這是如何工作的:RSA算法是基於modular exponentiation。對於這樣的計算,最終結果是「正常」結果的餘數除以模量。模塊化算術在Number Theory中扮演着重要角色。那裏同餘(≡)的定義爲
m is congruent to n mod k if k divides m - n
簡單例子 - 令n = 2且k = 7,則
2 ≡ 2 (mod 7) because: 7 divides 2 - 2
9 ≡ 2 (mod 7) because: 7 divides 9 - 2
16 ≡ 2 (mod 7) because: 7 divides 16 - 2
...
7實際上不鴻溝0,用於除法的定義是
一個整數一個把一個一個整數b,如果有一個整數n與屬性是b = NA
對於a = 7和b = 0,選擇n = 0。這意味着每個整數除以0,但它也意味着同餘可以擴展爲負數(這裏不會詳細討論,這對RSA並不重要)。
所以要點是同餘原則擴展了我們對餘數的天真理解,模數就是「mod之後的數字」,在我們的例子中它將是7.因爲有無限多的數字是一致的,我們把這稱爲同餘類,通常爲我們的計算選擇一個代表(最小的一致整數> 0),就像我們在談論計算的「餘數」時直觀地做的那樣。
在RSA,簽名消息m裝置冪與「私人指數」 d,結果r大於模數n的最小整數> 0且小,使得
m^d ≡ r (mod n)
這意味着兩件事
- R(以比特)的長度由n括住(位)
- 的米(位)長度必須< = n(以比特,太)
要使簽名長度爲n位,應用某種形式的填充。參看有效選項的PKCS#1。
第二個事實意味着大於n的消息將不得不通過在幾個塊中分解m來簽名,但這在實踐中並未完成,因爲它會太慢(模數求冪在計算上花費太高) ,所以我們需要另一種方式來「壓縮」我們的信息小於n。爲此,我們使用cryptographically secure hash functions,例如您提到的SHA-1。將SHA-1應用於任意長度的消息m將產生20個字節長的「散列」,小於RSA模數的典型大小,常見大小爲1024位或2048位,即128或256字節,所以簽名計算可以應用於任何任意消息。
這樣的散列函數的密碼特性確保(理論上 - 簽名僞造是研究社區中的一個巨大話題),除了通過暴力破解之外,不可能僞造簽名。
- 1. C++ RSA簽名
- 2. AS3Crypto RSA簽名
- 3. 以字節爲單位的RSA簽名的大小是多少?
- 4. 使用RSA-1024簽名SHA-256摘要:大小是多少?
- 5. RSA簽名性能
- 6. Veryifying RSA簽名簽名的串
- 7. RSA數字簽名驗證
- 8. 瞭解JWT的RSA簽名
- 9. 驗證RSA簽名iOS
- 10. RSA PKCS#1兼容簽名
- 11. JavaScript中的RSA簽名
- 12. RSA加密輸出大小
- 13. ECDSA簽名大小太長?
- 14. .NET RSA加密:最小密鑰大小?
- 15. 什麼RSA最大塊大小編碼?
- 16. RSA簽名不同於rsa模塊和m2crypto生成
- 17. 簽名使用RSA-SHA256簽名方法問題
- 18. C#使用RSA簽名和驗證簽名。編碼問題
- 19. 使用Crypt :: RSA和Crypt :: RSA :: SS :: PSS在Perl中無法驗證RSA PSS簽名
- 20. 無法驗證SHA1簽名與RSA
- 21. OpenSSL RSA與SHA256摘要簽名
- 22. RSA與數字簽名在Java中
- 23. ECDSA證書是否有RSA簽名?
- 24. 跨平臺的RSA簽名不一致
- 25. RSA在java中籤名和驗證
- 26. iOS上使用RSA-SHA1的OAuth簽名
- 27. Java和.NET interop on(RSA)簽名
- 28. 基本加密理解:RSA簽名
- 29. 用JavaScript生成RSA-SHA1簽名
- 30. C#使用BouncyCastle與RSA簽名數據
非常感謝!感謝您的幫助 – user839917
所以......多久了?如果我用1024位密鑰加密單個字節,我的理解是簽名將是1024位長。 – ixe013
我強調了一點更清楚的結果:)你是對的,一個1024位的密鑰將產生1024位的簽名。 – emboss