资源简介
该资源时纯C源码,可以在任意平台下编译,,本人在QT下经过整理并调试通过,里面有测试数据,其功能有签名,验签,加密和解密等,在windows和linux都可以使用

代码片段和文件信息
#include
#include “sm2/sm2.h“
int Asc2Hex(char *pDst const char *pSrc int nSrcLen)
{
for (int i = 0; i < nSrcLen; i += 2)
{
// 输出高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 < SrcLen; 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个文件信息
相关资源
- E4A无障碍跨程序操作类库(带源码、
- 设备管理系统源码
- 安卓wifi直连app源码
- 我的世界源码(易语言版)
- labview编程软件滤波器以及编写程序设
- 我的界面(visual foxpro)源码
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- UNIX/LINUX编程实践教程的源码
- 十以内加减法练习 powerbuilder源码
- 农场开发项目
- OCR源码
- PLC上位机编程软件
- 用foobar2000听google音乐[更新一下]
- 学生信息管理系统源码
- 用VC 编写的仿QQ聊天室程序源代码
- 毕业论文之温度传感器DS18B20(源码
- 可自定义导航网站源码
- 栅栏填充算法源码(VC)
- msp430F149操作红外接收模块源码
- [免费]图像识别c 源码
- 周易排盘源码
- RSA算法源码
- 一个人脸识别程序源码
- 编译原理课程设计:词法语法编译器
- 透明加密源码及说明
评论
共有 条评论