国密算法的一些简单学习

1:国密算法是什么?

国密算法是我国自主研发创新的一套数据加密处理系列算法。从SM1-SM4分别实现了对称、非对称、摘要等算法功能。
SM1 为对称加密;
SM2为非对称加密,基于ECC;
SM3 消息摘要;
SM4 对称加密;

2:SM2的学习-数字签名

先了解几个东西

ECC: 椭圆曲线算法。
数字签名:由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名 者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成 过程之前,要用密码杂凑函数对M (包含ZA和待签消息M)进行压缩;在验证过程之前,要用密码杂 凑函数对M′(包含ZA和验证消息M′)进行压缩。
详细可参考《国密算法SM2椭圆曲线公钥密码算法》
下面来看一下数字签名的过程:
准备工作:计算用户的ZA值(椭圆曲线方程参数a、b、G的 坐标xG、yG 和PA的坐标xA、yA的数据类型转换为比特串,ZA=H256(ENTLA ∥ IDA ∥ a ∥ b ∥ xG ∥ yG ∥xA ∥yA)。)
A1:置M=ZA ∥ M;
A2:计算e = Hv(M),国密算法第1部分4.2.3和4.2.2给出的细节将e的数据类型转换为整数;
A3:用随机数发生器产生随机数k ∈[1,n-1];
A4:计算椭圆曲线点(x1,y1)=[k]G,国密算法第1部分4.2.7给出的细节将x1的数据类型转换为整
数;
A5:计算r=(e+x1) modn,若r=0或r+k=n则返回A3;
A6:计算s = ((1 + dA)−1 · (k − r · dA)) modn,若s=0则返回A3;

A7:按本文本第1部分4.2.1给出的细节将r、s的数据类型转换为字节串,消息M 的签名为(r,s)。

屏幕快照 2018-12-20 下午2.22.59.png

数字签名的验证算法:
B1:检验r′ ∈[1,n-1]是否成立,若不成立则验证不通过;
B2:检验s′ ∈[1,n-1]是否成立,若不成立则验证不通过;
B3:置M′=ZA ∥ M′;
B4:计算e′ = Hv(M′),国密算法文档第1部分4.2.3和4.2.2给出的细节将e′的数据类型转换为整数;
B5:按本文本第1部分4.2.2给出的细节将r′、s′的数据类型转换为整数,计算t = (r′ + s′) modn, 若t = 0,则验证不通过;
B6:计算椭圆曲线点(x′1, y1′ )=[s′]G + [t]PA;
B7:按本文本第1部分4.2.7给出的细节将x′1的数据类型转换为整数,计算R = (e′ + x′1) modn,检 验R=r′是否成立,若成立则验证通过;否则验证不通过。

屏幕快照 2018-12-20 下午2.25.42.png

接下来就是对于给的测试数据进行代码分析(本文所用代码是从Github大佬下载的,然后学习的,本着学习的精神来的,如果有合适的,请大佬赐教)
Fp 上的椭圆曲线数字签名
椭圆曲线方程为:y2 = x3 + ax + b
Fp -256 下面是一些参数:直接上图。
屏幕快照 2018-12-20 下午2.29.55.png

下面是参数输入
屏幕快照 2018-12-20 下午2.32.41.png

预处理 (ENTLA )
屏幕快照 2018-12-20 下午2.34.57.png

杂凑值ZA=H256(ENTLA ∥IDA ∥a∥b∥xG ∥yG ∥xA ∥yA)。
屏幕快照 2018-12-20 下午2.36.50.png

屏幕快照 2018-12-20 下午2.39.13.png

得到摘要
屏幕快照 2018-12-20 下午2.39.42.png

获取随机值K
屏幕快照 2018-12-20 下午2.41.23.png

屏幕快照 2018-12-20 下午2.42.30.png

屏幕快照 2018-12-20 下午2.42.30.png

屏幕快照 2018-12-20 下午2.43.41.png

屏幕快照 2018-12-20 下午2.43.53.png

基于libtommath函数的实现
libtommath是一个大数算法库.这个C语言的函数库非常牛X可以实现多种算法。感兴趣的可以去学习https://github.com/libtom/libtommath
可以验证算法文档给出的实例。
代码项目作者simonpang/steven.psm@gmail.com;感谢libtommath作者及goldbar :)
站在大佬的肩膀上学习真香。鸣谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 转:https://blog.csdn.net/qq_30866297/article/details/51175...
    right_33cb阅读 9,956评论 2 5
  • 椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实...
    Li_MAX阅读 64,484评论 0 37
  • 原文:Transactions 交易是由外部拥有的账户发起的签名消息,由以太坊网络传输,并记录(挖掘)在以太坊区块...
    Jisen阅读 3,675评论 0 8
  • 我一直都想向优秀的人靠近, 可是我为什么不做一个优秀的人, 等着别人向我靠近呢。
    _顾盼阅读 172评论 0 0