RSA密碼學規範PKCS1 v2 2

2022-08-11 22:39:21 字數 2272 閱讀 6572

rust實現

目錄資料轉換

密碼學原語

加密方案

rsaes-pkcs1_v1.5

簽名方案

rsassa-pkcs1-v1.5

emsa-pss

emsa-pkcs1-v1.5

mgf參考資料

數論相關;

橢圓曲線加密數學基礎;

私鑰:第二種私鑰表示:

記有大整數\(x=\sum_^b_i\cdot 2^, n=len(x)\), 則對應的八位串字串為\(x=b_||\dots||b_1||b_0\);

記有八位串字串為\(x=b_||\dots||b_1||b_0\), 則對應的大整數為\(x=\sum_^b_i\cdot 2^, n=len(x)\);

\[c = m^e \mod n

\]第二種私鑰表示:

第二種私鑰表示:

\[m = s^e \mod n

\]rsaes-oaep-encrypt

eme-oaep編碼:

rsa加密:

輸出\(c\);

rsaes-oaep-decrypt

rsa解密:

eme-oaep解碼:

檢查格式是否合法:

輸出\(m\);

rsaes-pkcs1_v1.5-encrypt

eme-pkcs1-v1.5編碼:

rsa加密:

輸出\(c\);

rsaes-pkcs_v1.5-decrypt

rsa解密:

eme-pkcs1-v1.5解碼:

輸出\(m\);

rsassa-pss-sign

rsa簽名:

rsassa-pss-verify

rsa簽名驗證:

emsa-pss驗證:

rsassa-pkcs1-v1.5-sign

rsa簽名:

rsassa-pkcs1-v1.5-verify

emsa-pkcs1-v1.5編碼:

emsa-pss-encode

\(mhash = hash(m)\);

隨機生成長度為\(slen\)的salt字串;

\(m' = 0x00||0x00||0x00||0x00||0x00||0x00||0x00||0x00||mhash||salt\);

\(h = hash(m')\);

\(ps = 0||\dots||0, len(ps)=emlen - slen - len(h) - 2\);

\(db = ps || 0x01 || salt\);

\(dbmask = mgf(h, emlen - len(h) - 1)\);

\(maskeddb = db\oplus dbmask\);

將\(maskeddb\)最左邊的\(8*emlen - embits\)的各位替換為0;

\(em = maskeddb || h || 0xbc\);

輸出em;

emsa-pss-verify

檢查\(em\)最右邊的位元組是否為\(0xbc\);

\(em = maskeddb || h, len(maskeddb) = emlen - len(hashval) - 1\);

檢查\(maskeddb\)最左邊的\(8*emlen - embits\)的各位是否為0;

\(dbmask = mgf(h, emlen - len(h) - 1)\);

\(db = maskeddb \oplus dbmask\);

將\(db\)的最左邊的\(8*emlen - embits\)的各位替換為0;

\(db = x||y||salt, len(x) = emlen-len(h)-slen-2, len(y)=1\);

檢查\(x\)的各位是否為0, 且\(y=0x01\);

\(m' = 0x00||0x00||0x00||0x00||0x00||0x00||0x00||0x00||mhash||salt\);

\(h' = hash(m')\);

檢查是否滿足\(h = h'\);

emsa-pkcs1-v1.5-encode

\(h = hash(m)\);

der(distinguished encoding rules):

digestinfo ::= sequence
pkcs#1 v2.2中定義了掩碼生成函式mgf1, 其和標準ieee 1363-2000, ansi x9.44-2007中的一致;

(1)密碼學之RSA演算法

開始前先講一下對稱加密演算法和公鑰加密演算法 我不喜歡叫非對稱加密演算法,這使我想起那個被問md5演算法屬於對稱還是非對稱的恐懼 對稱加密演算法 1 甲方選擇某一種加密規則,對資訊進行加密 2 乙方使用同一種規則,對資訊進行解密。公鑰加密演算法 1 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人...

密碼學演算法 RSA

rsa演算法安全瓶頸 rsa演算法的乘法同態特性 rsa第一次在r.l.rivest,a.shamir和l.adleman的1978年的 a method for obtaining digital signatures and public key cryptosystems 中,作為一種新的數字...

密碼學之RSA加密

最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記3 rsa加密 非對稱金鑰,公開金鑰演算法 rsa加密利用了單向函式正向求解很簡單,反向求解很複雜的特性。具體是利用了 1.對兩個質數相乘容易,而將其合數分解很難的這個特點進行的加密演算法。n p1 p2,已知p1 p2求n簡單,已...