国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

國密算法SM2 密鑰對的生成

這篇具有很好參考價值的文章主要介紹了國密算法SM2 密鑰對的生成。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、橢圓曲線密碼算法? ? ? ??

????????橢圓曲線密碼編碼學(xué)(ECC)是一種理論性很強的學(xué)科。后來隨著計算科學(xué)和密碼學(xué)的發(fā)展,被應(yīng)用到了公鑰密碼體制這個領(lǐng)域中。橢圓曲線密碼體制最早是由Kobiliz和Millr于185年提出的,是迄今為止安全性最高的一種算法,它的安全性是基于有限域橢圓曲線離散對數(shù)(Eliptic Curve Discrete Logarithm Problem,ECDLP)的難解性,是目前公認的3種安全有效的公鑰密碼體制之一另外2種分別是基于大整數(shù)分解問題(nteger Factorization Problem,IFP)的公鑰密碼體制和基于有限域離散對數(shù)問題(Discrete Logarithm Problem,DLP)的公鑰密碼體制。ECDLP比DLP更難處理.這使得橢圓曲線密碼體制采用較短的密鑰就可以達到與有限域上使用較長的密鑰所達的安全性。橢圓曲線的安全性除了依賴于ECC上離散對數(shù)的分解難度,還依賴于曲線的選擇。因此建立橢圓曲線密碼體制的首要問題就是產(chǎn)生可以抵御所有已有算法攻擊的橢圓曲線。

? ? ? ? SM2是國家密碼管理局組織制定并提出的橢圓曲線密碼算法標準。關(guān)于其具體算法內(nèi)容及國標內(nèi)容可以參考:在線預(yù)覽|GB/T 32918.1-2016

二、密鑰對生成大致流程

輸入:一個有效的Fq(包含q個元素的有限域,q=p且p為大于3的素數(shù)或q=2^m)上橢圓系統(tǒng)參數(shù)的集合。

基于橢圓曲線的密碼系統(tǒng)有7個主要域參數(shù)T=(q,a,b,FR,G,n,h):

????????q代表有限域GF(q),其中q為p或2m(p為素數(shù)),相應(yīng)的有限域分別為素域和二進制域;

????????a,b是橢圓曲線方程的系數(shù);

????????FR為曲線的方程,如素域GF(q)上的曲線方程為y^2=x^3+ax+b,二進制域GF(2^m)上的曲線方程為y^2+xy=x^3+a^2x+b;G為基點;

????????G為基點;

????????n為大素數(shù)并且等于基點G的階6,橢圓曲線系統(tǒng)中最主要的參數(shù)是n,因此橢圓曲線的密鑰長度就定義為n的長度;

????????h是n的余因子,其為一個小整數(shù)且h=#E(Fq)/n;

輸出:與橢圓系統(tǒng)參數(shù)相關(guān)的密鑰對(d,P),d為私鑰,P為公鑰

1)初始化橢圓系統(tǒng)

2)產(chǎn)生隨機整數(shù)d∈[1,n-2]

3)以G為基點,計算P(Xp,Yp)=[d]G(橢圓曲線上點G的d倍點),可用多種方法如:加減法、滑動窗法等計算

4)輸出(d,P),d為私鑰,P為公鑰

注:以上所有計算都可以借助庫函數(shù)實現(xiàn)

三、代碼實現(xiàn)

我采用的是C實現(xiàn),使用的是miracl庫

輸入的參數(shù)可參考:

struct FPECC
{
	char* p;
	char* a;
	char* b;
	char* n;  //G的階
	char* x;  //g=(x,y)
	char* y;
};

struct FPECC Ecc256 =
{
    "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",
    "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",
    "28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",
    "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",
    "32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7",
    "BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0",
};

若想使用其他參數(shù)可參考?http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=3EE2FD47B962578070541ED468497C5B中的附錄C文章來源地址http://www.zghlxwxcb.cn/news/detail-403007.html

/**
	* @brief 生成SM2公私鑰對
	* @param wx:         公鑰的X坐標,不足32字節(jié)在前面加0x00
	* @param wxlen:       wx的字節(jié)數(shù),32
	* @param wy:         公鑰的Y坐標,不足32字節(jié)在前面加0x00
	* @param wylen:       wy的字節(jié)數(shù),32
	* @param privkey:    私鑰,不足32字節(jié)在前面加0x00
	* @param privkeylen: privkey的字節(jié)數(shù),32
  * @retval void
  */
void sm2_keygen(unsigned char* wx, int* wxlen, unsigned char* wy, int* wylen, unsigned char* privkey, int* privkeylen)
{
	struct FPECC *cfig = &Ecc256;
	epoint* g, * pB;
	big a, b, p, n, x, y, key1;
	miracl* mip = mirsys(20, 0);   //初始化大數(shù)系統(tǒng)
	mip->IOBASE = 16;   //輸入為16進制數(shù)改為大數(shù)

	p = mirvar(0);    //將大數(shù)字符串轉(zhuǎn)換成大數(shù),這里是16進制的字符串轉(zhuǎn)換大數(shù)
	a = mirvar(0);
	b = mirvar(0);
	n = mirvar(0);
	x = mirvar(0);
	y = mirvar(0);
	key1 = mirvar(0);

	cinstr(p, cfig->p);      //將大數(shù)字符串轉(zhuǎn)換成大數(shù),這里是16進制的字符串轉(zhuǎn)換大數(shù)
	cinstr(a, cfig->a);
	cinstr(b, cfig->b);
	cinstr(n, cfig->n);
	cinstr(x, cfig->x);
	cinstr(y, cfig->y);

	ecurve_init(a, b, p, MR_PROJECTIVE);   //初始化橢圓曲線
	g = epoint_init();
	pB = epoint_init();
	epoint_set(x, y, 0, g);    //g=(x,y)為基點G

    //產(chǎn)生私鑰
	irand(time(NULL) + SEED_CONST);   //初始化種子
	bigrand(n, key1);    //生成隨機數(shù)key1,即為私鑰

    //產(chǎn)生公鑰
	ecurve_mult(key1, g, pB);   //pB=[key1]G
	epoint_get(pB, x, y);    //取pB上的點(x,y)x和y即為公鑰

	*wxlen = big_to_bytes(0, x, (char*)wx, FALSE);    //公鑰寫入wx、wy,長度wxlen
	*wylen = big_to_bytes(0, y, (char*)wy, FALSE);
	*privkeylen = big_to_bytes(0, key1, (char*)privkey, FALSE);

    //清內(nèi)存
	mirkill(key1);
	mirkill(p);
	mirkill(a);
	mirkill(b);
	mirkill(n);
	mirkill(x);
	mirkill(y);
	epoint_free(g);
	epoint_free(pB);
	mirexit();
}

到了這里,關(guān)于國密算法SM2 密鑰對的生成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 橢圓曲線密碼(SM2)

    橢圓曲線密碼(SM2)

    1. 公鑰生成 ① Alice首先構(gòu)造一條橢圓曲線E,在曲線上選擇一點G作為生成元,并求G的階為n,要求n必須為質(zhì)數(shù)。此時構(gòu)成了一個循環(huán)群G. ② Alice選擇一個私鑰k (k n),生成公鑰 Q = kG ③ Alice將公鑰組E、Q、G發(fā)送給Bob 2. 加密過程 ① Bob收到信息后,將明文編碼為M,M為曲線上一點,

    2024年02月17日
    瀏覽(25)
  • 國密算法 SM2 公鑰加密 數(shù)字簽名 密鑰交換 全網(wǎng)最高效的開源python代碼

    國密算法 SM2 公鑰加密 數(shù)字簽名 密鑰交換 全網(wǎng)最高效的開源python代碼

    此前發(fā)布過SM2、SM3、SM4、ZUC等文章,以及開源的完整python代碼。近些天看到一篇電子科大蘭同學(xué)的碩士畢業(yè)論文(蘭修文. ECC計算算法的優(yōu)化及其在SM2實現(xiàn)中的運用[D]. 成都: 電子科技大學(xué), 2019),文中采用預(yù)計算加速SM2橢圓曲線基點點乘,將這個思路用python代碼實現(xiàn)后,實測

    2024年02月09日
    瀏覽(54)
  • Python實現(xiàn)國家商用密碼算法sm2/sm3/sm4/sm9(國密)

    2010 年開始,我國國家密碼管理局就已經(jīng)開始陸續(xù)發(fā)布了一系列國產(chǎn)加密算法,這其中就包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖沖之加密算法)等,SM 代表商密,即商業(yè)密碼,是指用于商業(yè)的、不涉及國家秘密的密碼技術(shù)。SM1 和 SM7 的算法不公開,其余算法都已成為 ISO/IEC

    2024年02月15日
    瀏覽(32)
  • 新手入門 | 掌握國密算法:新手指南: SM2 / SM3 / SM4密碼算法詳解

    在密碼學(xué)領(lǐng)域,有多種加密與簽名算法,它們在信息安全領(lǐng)域發(fā)揮著舉足輕重的作用。如今,隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)安全已經(jīng)成為各類信息系統(tǒng)完整性、可用性、保密性的重要保障,越來越多的國產(chǎn)密碼算法得到了廣泛的應(yīng)用與關(guān)注。在本文中,我們將重點介紹三個經(jīng)

    2024年02月12日
    瀏覽(36)
  • 橢圓曲線在SM2加解密中的應(yīng)用(三)

    橢圓曲線在SM2加解密中的應(yīng)用(三)

    1.1加密原始數(shù)據(jù) SM2加密運算首先是用戶A對數(shù)據(jù)加密,用戶A擁有原始數(shù)據(jù) 橢圓曲線系統(tǒng)參數(shù) 長度為klen比特的消息M 公鑰Pb 橢圓曲線系統(tǒng)參數(shù),已經(jīng)在 橢圓曲線參數(shù)(二)中詳細介紹;M就是需要加密消息,長度為klen; 1.1.1 公鑰Pb的計算方式 公鑰Pb=dBG,其中dB是私鑰,是256b

    2024年02月08日
    瀏覽(27)
  • 商用密碼應(yīng)用與安全性評估要點筆記(SM2密鑰交換算法)

    商用密碼應(yīng)用與安全性評估要點筆記(SM2密鑰交換算法)

    1、SM2算法簡介 ? ? ? ? SM2密碼算法是我國2010年發(fā)布的商用密碼算法,屬于公鑰密碼算法,也成為非對稱密鑰機制密碼算法。SM2基于橢圓曲線離散對數(shù)問題,相對于RSA基于大整數(shù)因數(shù)分解更具優(yōu)越性。 ? ? ? ? SM2算法于2012年成為我國密碼行業(yè)標準,并于2017年被ISO采納,成為

    2024年02月11日
    瀏覽(30)
  • 國密SM2/SM3算法

    分類 1、SM1是一種分組加密算法 對稱加密算法中的分組加密算法,其分組長度、秘鑰長度都是128bit,算法安全保密強度跟 AES 相當(dāng),但是算法不公開,僅以IP核的形式存在于芯片中,需要通過加密芯片的接口進行調(diào)用。 采用該算法已經(jīng)研制了系列芯片、智能IC卡、智能密碼鑰匙

    2024年02月05日
    瀏覽(22)
  • 國密算法-SM2

    ????????國密算法是國家密碼局制定標準的一系列算法,包括SM1、SM2、SM3、SM4等。其中,SM1是采用硬件實現(xiàn)的,不予討論;SM2是非對稱加密算法;SM3是摘要算法;SM4是對稱加密算法。本篇貼出SM2?Java版本實現(xiàn)生成公私鑰及加解密、簽名驗簽代碼,供大家一起討論學(xué)習(xí),所有

    2024年02月11日
    瀏覽(22)
  • 國密:生成SM2秘鑰、加解密及加驗簽

    國密:生成SM2秘鑰、加解密及加驗簽

    國密改造已經(jīng)持續(xù)了很長時間了,相信很多從事金融科技類的程序猿都遇到過這個需求。這篇文章就為大家?guī)砉P者對于國密改造的一些經(jīng)驗,主要是代碼層面,有興趣的同學(xué)可以研究下國密的算法模型! 注:本文所用到的工具類并非筆者所寫! 目錄 一、國密簡述 二、依賴

    2024年02月03日
    瀏覽(26)
  • SM2國密算法加解密

    接口安全設(shè)計原則的一個點就是數(shù)據(jù)不能明文傳輸,除了https這個必須的請求外,接口數(shù)據(jù)加密也是一個重要的方式,下面介紹一下SM2國密算法加解密的使用方式。 這里我就針對目前前后端分離架構(gòu)的方式來簡單介紹一下如何正確使用 SM2 算法對數(shù)據(jù)進行加解密,介紹分為后

    2024年02月11日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包