songgeng87 / sm9_free Goto Github PK
View Code? Open in Web Editor NEW基于Miracl的国密算法SM9实现
License: BSD 2-Clause "Simplified" License
基于Miracl的国密算法SM9实现
License: BSD 2-Clause "Simplified" License
生成签名:代码 SM9_Signature() 函数,签名通过结构体SM9_Sign存放,想问一下放在消息体后的签名,是将结构体赋值再消息体之后,直接发送至对端么。还是经过了进一步的运算
老师您好,我使用了您的代码,打印出了相关密钥和内容,采用工具验证总是显示C3比对失败,请问是什么缘故
SM9_Init函数始终返回1 ,建议初始化成功返回其他值
输出big不正确,只能输出28字节。并且我的SM9_init也不能正确运行。epoint_set始终不对,是怎么回事呢,谢谢博主。
我发现了一些函数官方库里没有,比如zzn2_pow,zzn2_kill,是作者自己添加的么。我本来想用别人编译好的库,但是发现有些函数提示找不到,查了官方的代码发现也没有。
Makefile
第2行: CC = gcc -std=c99
第27行: $(CC) SM9Test.o -o test -L./ -lsm9
cks:="\x1A\x94\x71\xE7\x2F\xA8\xAB\xE0\xCC\x6B\x9C\x1C\x71\x43\xCF\x77\xC6\xFD\xAF\x62\x7C\x4E\xF5\x5F\x11\x9A\xB6\x9F\xC2\x3D\x48\x97"
msg := "\x43\x68\x69\x6E\x65\x73\x65\x20\x49\x42\x53\x20\x73\x74\x61\x6E\x64\x61\x72\x64"
rand:="\x25\x20\xE4\xEC\x4A\x03\xBD\xED\x54\xEF\x07\x2D\x59\xC5\xFE\xBF\x20\x14\xBE\xDD\xAF\x43\x14\xAA\x94\x35\x9B\x7B\xE4\xE9\x55\xC9"
---------------------------------------结果----xs显示不全-------------------------------------
h: 1fcb9f5bac5e3cef88fa839504fcd7ab9fb89337e95fdfa659a370f728bbd66a
xs: 6cec7fa9abae
ys: 86a7f2b3236b9feda074fded1201ca33c13c2ebe057a99073b02e70ec6e05cb1
--------------------------加密测试参数--------------------------
unsigned char cmsg[20] = {"\x43\x68\x69\x6E\x65\x73\x65\x20\x49\x42\x45\x20\x73\x74\x61\x6E\x64\x61\x72\x64"};
unsigned char eks[32] = {"\x00\x01\xED\xEE\x37\x78\xF4\x41\xF8\xDE\xA3\xD9\xFA\x0A\xCC\x4E\x07\xEE\x36\xC9\x3F\x9A\x08\x61\x8A\xF4\xAD\x85\xCE\xDE\x1C\x22"};
unsigned char eid[3] = {"\x42\x6F\x62"};
unsigned char er[32] = {"\x00\x00\xAA\xC0\x54\x17\x79\xC8\xFC\x45\xE3\xE2\xCB\x25\xC1\x2B\x5D\x25\x76\xB2\x12\x9A\xE8\xBB\x5E\xE2\xCB\xE5\xEC\x9E\x78\x5C"};
注:这个加密结果前半部分 x+y都是一致的,后半部分是c3+cp吗 好像不太一样
--------------------------调用库得到的结果--------------------------
x: 2445471164490618e1ee20528ff1d545b0f14c8bcaa44544f03dab5dac07d8ff
y: 42ffca97d57cddc05ea405f2e586feb3a6930715532b8000759f13059ed59ac0
c3: fd3c98dd92c44c68332675a370cceede31e0c5cd209c257601149d12b394a2be
cp: e05b6fac6f11b965268c994f00dba7a8bb00fd60583546cbdf4649250863f10a
--------------------------测试工具得到的结果--------------------------
2445471164490618E1EE20528FF1D545B0F14C8BCAA44544F03DAB5DAC07D8FF42FFCA97D57CDDC05EA405F2E586FEB3A6930715532B8000759F13059ED59AC0DEA278E55F9ECB2ECD98E4BA8C8B8EF05571D2AFB3BD94BA8563E236125055A163451E20CD57DFB0722D6D0C8731573FBB00FD60583546CBDF4649250863F10A
SM9_PK pk = SM9_PK_New(5, id); // 申明一个签名公钥,不知签名公钥是否根据id生成
cks="2185EFAE4160ADB3ADF66661896A0093730FA84100A18AB252892B3C5151D7D4"
id="rtxm"
msg="mfds"
rand="641C11724B96E1CABE8230F9E4EFC309A7D2B8B0C18234E6D3249C3C9AB247A9"
代码测试结果:
h:
8ca9426325d020fd7bb92f3f4b17bc2ff941353d133699e2c8cdc9b8ece48eba
xs:
14d624aeb3f9774540a4e99767ae88791757c8087a15b0df271381203b1cadd7
ys:
4588e599a91466ffe22e21adbf7ad4168cb7ac4bd93c042771fbaf2aaf6c3897
###############################################################################
测试工具结果:
h:
8CA9426325D020FD7BB92F3F4B17BC2FF941353D133699E2C8CDC9B8ECE48EBA
xs:
9073D8A1588EB53D659DB032E26E688A7E3FD36A99D8F5C80AF020D2199755CA
ys:
47030BA93EFD34970C6F83AEEDBB201239D4473CC58B21DC1BBD71FAD07626F6
使用arm交叉编译时,内联的汇编指令报错,但是对汇编不了解,应该怎么解决呢
😜
发现一个bug, id=mqq , 签名原文=mqqq的时候,签名结果和测试工具的结果不太一样
cks:="\x86\xDC\xD6\x4F\xEB\x81\xA7\x19\x63\x59\x59\xF1\xA5\xC2\xF9\x88\xBD\x39\x43\x1B\x08\xA8\x63\xF0\x42\x8D\x21\xDF\xFA\xF2\xBF\x89"
id:="\x41\x6C\x69\x63\x65"
msg := "\x43\x68\x69\x6E\x65\x73\x65\x20\x49\x42\x53\x20\x73\x74\x61\x6E\x64\x61\x72\x64"
rand:="\x1A\x23\x29\x77\xBA\x9F\xA2\xD1\xC5\x58\xF2\xD4\x67\xFE\x7B\xE7\x04\x05\x41\x26\x73\xF8\xBE\x64\x9B\xBD\xD4\xA0\x95\xBE\x1B\x4B"
---------------------------------------结果----xs显示不全-------------------------------------
h: 396fb96c805e65426b1120c27edf86ecc1e36f88e8fdd1f59cbfc573c20536b0
xs: 52a37a7ab0b9016147593d068370268dd6e011e8443fffc194
ys: 2eaaba9d337a3cbc8562e1e22794f69f950b82785fe2df7e512ec9588ae3cfa8
1、写死随机数,但每次执行签名结果不同
2、将msg改为非Chinese IBS standard,比如 abcd 等等,验签会失败
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.