sm2和sm4加密算法浅析
sm2和sm4加密算法淺析
一: SM2
簡介:SM2是國家密碼管理局于2010年12月17日發布的橢圓曲線公鑰密碼算法 ,SM2為非對稱加密,基于ECC。該算法已公開。由于該算法基于ECC,故其簽名速度與秘鑰生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快于RSA。
SM2和RSA算法比較
SM2性能更優更安全:密碼復雜度高、處理速度快、機器性能消耗更小
①:加密算法以及流程:
輸入:需要發送的消息為比特串M,klen為M的比特長度。
1.用隨機數發生器產生隨機數k∈[1,n-1],k的值為1到n-1
2.計算橢圓曲線點C1=[k]G=(x1,y1),將C1的數據類 型轉換為比特串
3.計算橢圓曲線點S=[h]PB,若S是無窮遠點,則報錯并退出
4.計算橢圓曲線點[k]PB=(x2,y2),按本文本第1部分4.2.5和4.2.4給出的細節,將坐標x2、y2 的 數據類型轉換為比特串
5.計算t=KDF(x2 ∥y2, klen),若t為全0比特串,則返回A1
6.計算C2 = M ⊕t
7.計算C3 = Hash(x2 ∥ M ∥ y2)
8.輸出密文C = C1 ∥ C2 ∥ C3
加密算法流程:
②:解密算法以及流程
klen為密文中C2的比特長度,對密文C=C1 ∥ C2 ∥ C3 進行解密,需要實現以下步驟
1.從C中取出比特串C1,按本文本第1部分4.2.3和4.2.9給出的細節,將C1的數據類型轉換為橢 圓曲線上的點,驗證C1是否滿足橢圓曲線方程,若不滿足則報錯并退出
2.計算橢圓曲線點S=[h]C1,若S是無窮遠點,則報錯并退出
3.計算[dB]C1=(x2,y2),按本文本第1部分4.2.5和4.2.4給出的細節,將坐標x2、y2的數據類型轉 換為比特串
4.計算t=KDF(x2 ∥y2, klen),若t為全0比特串,則報錯并退出
5.從C中取出比特串C2,計算M′ = C2 ⊕t
6.計算u = Hash(x2 ∥ M′ ∥ y2),從C中取出比特串C3,若u ?= C3,則報錯并退出
7.輸出明文M′
解密算法流程:
③:SM2橢圓曲線公鑰密碼算法推薦曲線參數
橢圓曲線方程:y2 = x3 + ax + b。
曲線參數:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93 n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0二:SM4
簡介:SM4由國家密碼管理局于2012年3月21日發布,SM4 無線局域網標準的分組數據算法。對稱加密,密鑰長度和分組長度均為128位。
算法定義:該算法的分組長度為 128 比特,密鑰長度為 128 比特。加密算 法與密鑰擴展算法都采用 32 輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪 密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序
(1)基本運算:
? ⊕ 32 比特異或
? i 32比特循環左移 i 位
(2)密鑰及密鑰參量 :
(3)輪函數 F:
(4)合成置換 T:
(5) 非線性變換τ
(6): 線性變換 L
(7):S 盒
(8)加/解密算法
(9):密鑰擴展算法
這邊有個小demo:以供參考:https://download.csdn.net/download/kawayiyy123/12535104?spm=1001.2014.3001.5503
總結
以上是生活随笔為你收集整理的sm2和sm4加密算法浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 栅栏密码怎么写java程序_栅栏密码
- 下一篇: 3.6 矩阵秩的其它重要关系