• evo真人(中国)

    文章橫幅PC版
    文章橫幅iPad版
    文章橫幅手機版

    RSA加密與簽名過程

    TIME:2019-03-15 09:43  click: 224 次 來源: 未知

    1.RSA加密格式

    RSA公鑰與私鑰都能加、解密。

    假設用公鑰pk(RSAPublicKey類型)或私鑰vk(RSAPrivatekey類型)加密計算明文數據D(字符串類型)。具體計算步驟如下:

    ①構造加密塊(encryption block):EB=00‖BT‖PS‖00‖D。EB長度為k。

    其中,BT為塊類型,OCTET STRING類型,長度=1,值可以為00、01或02。私鑰加/解密時,BT=00或01,公鑰加/解密時,BT=02。

    PS為填充字符串,為OCTET STRING類型,長度=k-3-‖D‖。當BT=00時,PS值全為00。當BT=01時,PS值全為FF。當BT=02時,PS值不能為0,隨機產生。

    ②格式轉換:把OCTET STRING類型EB轉換成Integer類型x。

    ③RSA加密:用RSA公鑰或私鑰加密Integer類型x後取得Integer類型密文y。

    ④格式轉換:把Integer類型密文y轉換成OCTET STRING類型密文ED,長度為k。

    假設用公鑰pk(RSAPublicKey類型)或私鑰vk(RSAPrivateKey類型)解密計算密文數據ED(OCTET STRING類型)。具體計算步驟如下:

    ①將OCTET STRING類型ED轉換成Integer類型密文y。

    ②RSA解密:用RSA公鑰或私鑰解密Integer類型密文y後取得Integer類型明文x。

    ③格式轉換:把Integer類型明文x轉換成OCTET STRING類型明文EB,長度為k。

    ④加密塊分拆(encryption block):把明文EB分拆成BT、PS和D,即可取得明文數據D。

    2.RSA簽名格式

    RSA簽名時摘要格式用ASN.1描述時,DigestAlgorithm為摘要算法,Digest為摘要值。

    假設用私鑰vk(RSAPrivateKey類型)簽名計算待簽名數據M(字符串類型)。具體計算步驟如下:

    ①計算摘要值:MD=HASH(M)。

    ②數據編碼:把摘要算法ID和摘要值MD按DigestInfo類型編碼,取得摘要數據D。

    ③RSA加密:用私鑰vk加密摘要數據D後取得密文ED(OCTET STRING類型),其中BT=0x01。

    ④格式轉換:把密文ED轉換成比特字符串S(BIT STRING類型),其中S採用MSB(most significant bit)方式。S即為簽名結果。

    假設用公鑰pk(RSAPublickey類型)簽名驗證待簽名數據M(字符串類型)和待簽名結果S(BIT STRING類型)。具體計算步驟如下:

    ①格式轉換:將簽名結果S(BIT STRING類型)轉換成密文ED(OCTET STRING類型)。

    ②RSA解密:用公鑰pk對密文ED進行解密取得摘要數據D(OCTET STRING類型)。

    ③數據解碼:摘要數據D是DigestInfo類型,解碼後取得摘要值MD和摘要算法ID。

    ④計算摘要並比較:根據摘要算法ID,計算M的摘要值MD'=HASH(M)。如果MD'等於MD,則驗證成功,否則驗證失敗。

    上一篇:密碼模塊的安全級別 下一篇:數字證書存儲方式