國家商用密碼(五)基於SM2的軟體授權碼產生及校正

來源:互聯網
上載者:User

標籤:sm2   sm3   sm4   國家商用密碼   

將公開密鑰演算法作為軟體註冊演算法的好處是Cracker很難通過跟蹤驗證演算法得到註冊機。下面,將介紹使用SM2國密演算法進行軟體註冊的方法。

產生授權碼

  1. 選擇SM2橢圓曲線參數(P,a,b,N,Gx,Gy)
  2. 用隨機數發生器產生隨機數r∈[1,n-1]
  3. 計算橢圓曲線點R=[r]G=(XR,YR)
  4. 計算雜湊值h=SM3(使用者名稱 ∥ XR ∥ YR)
  5. 計算序號s≡(r - h * d) mod N,其中d為私密金鑰,N為G點的階
  6. 將s和h一起作為使用者的授權碼
校正授權碼
  1. 確定SM2橢圓曲線參數(P,a,b,N,Gx,Gy)
  2. 提取序號s和雜湊值h
  3. 計算點R≡([s]G + [h]Q) mod P,其中Q為公開金鑰,P為素域元素數目
  4. 計算雜湊值h‘=SM3(使用者名稱 ∥ XR ∥ YR)
  5. 如果h‘=h 則註冊成功;如果h‘≠h,則註冊失敗

在國家商用密碼演算法開放動態庫OpenSM.dll的SM2類中已整合授權碼的產生和驗證方法。對應的成員函數為:

/// <summary>/// 產生授權碼/// </summary>/// <param name="userId">使用者註冊資訊</param>/// <param name="PrivateKey">私密金鑰</param>/// <returns>授權碼</returns>   /// <remarks>注意:對於相同的註冊資訊,每次產生的授權碼並不相同</remarks>public ECLicenseKey LicenseKeyMaker(byte[] userId, BigInteger PrivateKey);/// <summary>/// 產生授權碼/// </summary>/// <param name="userId">使用者註冊資訊</param>/// <param name="PrivateKey">私密金鑰</param>/// <param name="r">隨機數,其值在[1, N-1],N為G點的階</param>/// <returns>授權碼</returns>/// <remarks>注意:對於相同的註冊資訊和相同的r,每次產生的授權碼一致</remarks>public ECLicenseKey LicenseKeyMaker(byte[] userId, BigInteger PrivateKey, BigInteger r);/// <summary>/// 校正授權碼/// </summary>/// <param name="userId">使用者註冊資訊</param>/// <param name="RegisterCode">註冊碼</param>/// <param name="PublicKey">公開金鑰</param>/// <returns>///     true:校正通過///     fasle:校正失敗/// </returns>public bool LicenseKeyVerifier(byte[] userId, ECLicenseKey RegisterCode, ECPoint PublicKey);

ECLicenseKey類定義如下:
/// <summary>/// SM2密碼演算法註冊機產生授權碼格式/// </summary>public class ECLicenseKey{ public readonly BigInteger mKey; public readonly BigInteger mHash; /// <summary> /// 建構函式 /// </summary> /// <param name="key">授權碼</param> /// <param name="hash">雜湊值</param> public ECLicenseKey(BigInteger key, BigInteger hash) {  this.mKey = key;  this.mHash = hash; }}




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

國家商用密碼(五)基於SM2的軟體授權碼產生及校正

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.