void initSM2()
{
FILE* fp;
pm = mirsys(1000, 0);
pm->IOBASE = 16;
big Gx, Gy, x1, y1, x2, y2;
p = mirvar(0);
a = mirvar(0);
b = mirvar(0);
n = mirvar(0);
Gx = mirvar(0);
Gy = mirvar(0);
db = mirvar(0);
cinstr(p, para.p);
cinstr(a, para.a);
cinstr(b, para.b);
cinstr(n, para.n);
cinstr(Gx, para.Gx);
cinstr(Gy, para.Gy);
ecurve_init(a, b, p, MR_AFFINE); //初始化橢圓曲線
epoint* C1 = NULL;
epoint* kPb = NULL;
G = epoint_init(); //記憶體分配給Gf(p)橢圓曲線一個點 初始化為無窮大
Pb = epoint_init();
C1 = epoint_init();
kPb = epoint_init();
//設定點坐標 若屬于當前方程則回傳true 不滿足則回傳false
if (!epoint_set(Gx, Gy, 1, G));
{
exit(0);
}
//生成公鑰私鑰Pb = G*db
printf("n: "); cotnum(n, stdout);
bigrand(n, db);
printf("私鑰db=");
cotnum(db, stdout);
//生成公鑰pb=G*db
ecurve_mult(db, G, Pb);
printf("引數: \np: %s\na: %s\nb: %s\nn %s\nGx %s\nGy %s\n", p, a, b, n, Gx, Gy);
} //密鑰對生成(db,Pb) db為私鑰 Pb為公鑰
int main(void)
{
initSM2();
return 0;
}
uj5u.com熱心網友回復:
格式是否匹配,從代碼里看不出來~uj5u.com熱心網友回復:
匹配,用到一個第三方密碼學庫uj5u.com熱心網友回復:
除錯一下看看,就明白了uj5u.com熱心網友回復:
printf("引數: \np: %s\na: %s\nb: %s\nn %s\nGx %s\nGy %s\n", p, a, b, n, Gx, Gy);肯定是變數與格式符的匹配問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25933.html
標籤:C語言
上一篇:求解
