資源簡介
該資源時純C源碼,可以在任意平臺下編譯,,本人在QT下經過整理并調試通過,里面有測試數據,其功能有簽名,驗簽,加密和解密等,在windows和linux都可以使用

代碼片段和文件信息
#include?
#include?“sm2/sm2.h“
int?Asc2Hex(char?*pDst?const?char?*pSrc?int?nSrcLen)
{
????for?(int?i?=?0;?i?????{
????????//?輸出高4位
????????if?(*pSrc?>=?‘0‘?&&?*pSrc?<=?‘9‘)
????????{
????????????*pDst?=?(*pSrc?-?‘0‘)?<4;
????????}
????????else?if?(*pSrc?>=?‘A‘?&&?*pSrc?<=?‘F‘)
????????{
????????????*pDst?=?(*pSrc?-?‘A‘?+?10)?<4;
????????}
????????else
????????{
????????????*pDst?=?(*pSrc?-?‘a‘?+?10)?<4;
????????}
????????pSrc++;
????????//?輸出低4位
????????if?(*pSrc?>=?‘0‘?&&?*pSrc?<=?‘9‘)
????????{
????????????*pDst?|=?*pSrc?-?‘0‘;
????????}
????????else?if?(*pSrc?>=?‘A‘?&&?*pSrc?<=?‘F‘)
????????{
????????????*pDst?|=?*pSrc?-?‘A‘?+?10;
????????}
????????else
????????{
????????????*pDst?|=?*pSrc?-?‘a‘?+?10;
????????}
????????pSrc++;
????????pDst++;
????}
????//?返回目標數據長度
????return?nSrcLen?/?2;
}
int?Hex2Asc(char?*pDst?char?*pSrc?int?SrcLen)
{
????const?char?tab[]?=?“0123456789ABCDEF“; //?0x0-0xf的字符查找表
????for?(int?i?=?0;?i?????{
????????*pDst++?=?tab[*((unsigned?char*)pSrc)?>>?4]; //?輸出低4位
????????*pDst++?=?tab[*((unsigned?char*)pSrc)?&?0x0f]; //?輸出高4位
????????pSrc++;
????}
????//?輸出字符串加個結束符
????*pDst?=?‘\0‘;
????//?返回目標字符串長度
????return?SrcLen?*?2;
}
int?main(int?argc?char?*argv[])
{
????QCoreApplication?a(argc?argv);
????int?ret=0;
????//簽名和驗簽部分
????int?hashlen=0;
????char?signdata[512]={“34181126215341430393D359833534527515238418000000000000000000003418112621534143000000000000“};
????char?hexsigndatabuff[256]={0};
????char?usrid[16]={0x310x320x330x340x350x360x370x380x310x320x330x340x350x360x370x38};
????char?hashbuff[128]={0};
????char?signfirstbuff[256]={0};
????char?signsecondbuff[256]={0};
????//加密部分
????char?data[256]={“4321“};
????int?datalen=0?encryptlen=0?firstlen=0secondlen=0;
????char?hexdata[128]={0};
????//公鑰64字節
????char?textpubbuff[512]={“71FE3F39D0815D23B8B61A6C3C0CEEAB1B5FE5D2C7183F923532AB4FAC681E1B42D408AD4321C94BC9FFF4CF26ECD4E16E95448A579F6F31A8677A2BD889A4BC“};
????char?publicbuff[256]={0};
????char?encrpytdata[256]={0};
????//
????char?signvaluebuff[512]={“0A9ED8A9F3F9DB50371BF8F49935B93FAB855A8D0082EF7BA30DABB53B2899EBE76676DE6B204FD4476F3D38DC9CD260BE989D82C875E458F3C46F8E2D496A6A“};
????char?hexsignbuff[256]={0};
????//解密部分
????int?hexlen=0outlen=0;????
????//私鑰32字節
????char?textpribuff[512]={“187ABC6D77C78851A088B3CC3C42E87A100373848F91851192508D6393DAA530“};
????char?pribuff[256]={0};
????unsigned?char?outbuff[256]={0};
????char?outASCbuff[256];
????char?hexbuff[256]={0};
????Asc2Hex(publicbufftextpubbuff?strlen(textpubbuff));
????Asc2Hex(pribuff?textpribuff?strlen(textpribuff));
???//?Asc2Hex(hexsignbuff?signvaluebuff?strlen(signvaluebuff));
????ret?=?Asc2Hex(hexsigndatabuff?signdata?strlen(signdata));
????//簽名部分
????if(sm3_e((unsigned?char*)usrid?16?(unsigned?char*)publicbuff32?(unsigned?char*)(publicbuff+3
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4693??2018-11-28?10:43??smtest\main.cpp
?????文件???????1079??2018-05-04?14:26??smtest\sm2\hexdump.c
?????文件????????133??2014-05-15?10:58??smtest\sm2\hexdump.h
?????文件??????18756??2018-06-06?17:59??smtest\sm2\main11.c
?????文件???????1158??2018-06-06?14:26??smtest\sm2\Makefile11
?????文件??????41861??2016-01-12?19:25??smtest\sm2\miracl.h
?????文件???????1417??2016-01-12?19:25??smtest\sm2\mirdef.h
?????文件??????41110??2016-01-12?19:25??smtest\sm2\mraes.c
?????文件????????979??2016-01-12?19:25??smtest\sm2\mralloc.c
?????文件???????6383??2016-01-12?19:25??smtest\sm2\mrarth0.c
?????文件??????20976??2016-01-12?19:25??smtest\sm2\mrarth1.c
?????文件??????39936??2016-01-12?19:25??smtest\sm2\mrarth2.c
?????文件???????4826??2016-01-12?19:25??smtest\sm2\mrarth3.c
?????文件???????3939??2016-01-12?19:25??smtest\sm2\mrbits.c
?????文件???????4158??2016-01-12?19:25??smtest\sm2\mrbrick.c
?????文件??????49044??2016-01-12?19:25??smtest\sm2\mrcore.c
?????文件???????2717??2016-01-12?19:25??smtest\sm2\mrcrt.c
?????文件??????67061??2016-01-12?19:25??smtest\sm2\mrcurve.c
?????文件???????4964??2016-01-12?19:25??smtest\sm2\mrebrick.c
?????文件??????51434??2016-01-12?19:25??smtest\sm2\mrec2m.c
?????文件??????82110??2016-01-12?19:25??smtest\sm2\mrecn2.c
?????文件??????36781??2016-01-12?19:25??smtest\sm2\mrfast.c
?????文件???????3580??2016-01-12?19:25??smtest\sm2\mrgcd.c
?????文件???????6797??2016-01-12?19:25??smtest\sm2\mrgcm.c
?????文件??????74601??2016-01-12?19:25??smtest\sm2\mrgf2m.c
?????文件??????10980??2016-01-12?19:25??smtest\sm2\mrio1.c
?????文件???????3866??2016-01-12?19:25??smtest\sm2\mrio2.c
?????文件???????7545??2016-01-12?19:25??smtest\sm2\mrjack.c
?????文件???????3513??2016-01-12?19:25??smtest\sm2\mrlucas.c
?????文件??????30364??2016-01-12?19:25??smtest\sm2\mrmonty.c
............此處省略26個文件信息
評論
共有 條評論