【Miracl密碼庫(kù)】國(guó)密算法SM2復(fù)現(xiàn)
國(guó)密算法SM2的官方文檔描述
http://www.gmbz.org.cn/main/postDetail.html?id=20180724110812
這是2018-07-24公布的文件《GM/T 0003-2012 SM2橢圓曲線公鑰密碼算法標(biāo)準(zhǔn)英文文本發(fā)布》
本文利用Miracl密碼庫(kù)實(shí)現(xiàn)SM2算法,參考GitHub源碼完成
https://github.com/lookingforfanyunfei/SMX_Test/tree/master/SMX_Test
該源碼項(xiàng)目給出了不同環(huán)境下的SM2密碼實(shí)現(xiàn),本文在Macbook環(huán)境下實(shí)現(xiàn),采用的是arm64參數(shù)。
用Miracl密碼庫(kù)實(shí)現(xiàn)SM2密碼算法,可以學(xué)習(xí)到橢圓曲線上的雙線性配對(duì)運(yùn)算,以及Miracl密碼庫(kù)提供的大數(shù)運(yùn)算規(guī)則。
以下是SM2密碼實(shí)現(xiàn)的過(guò)程
1、加入幾個(gè)字節(jié)轉(zhuǎn)化函數(shù)
在GitHub項(xiàng)目中,這三個(gè)函數(shù)有static關(guān)鍵字修飾,這里去掉,否則報(bào)錯(cuò)
下面看這三個(gè)函數(shù)的功能實(shí)現(xiàn)
bytes2hex將字符串轉(zhuǎn)換為十六進(jìn)制字符串,hex2bytes將十六進(jìn)制字符串轉(zhuǎn)換為字符串,dump_byte直接輸出字符串的十六進(jìn)制字符串。
2、功能函數(shù)
功能:生成指定長(zhǎng)度隨機(jī)數(shù)
隨機(jī)數(shù)187179559的十六進(jìn)制表示即0b282227,用dump_byte函數(shù)打印。
3、SM2的推薦參數(shù)設(shè)定
SM2標(biāo)準(zhǔn)推薦的ECC橢圓曲線參數(shù)


太長(zhǎng)了,懶得復(fù)制了,移步去公眾號(hào)看吧!