资源简介
该资源时纯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个文件信息
相关资源
- QQ自动回复机器人易语言源码
- 文档管理系统支持全文索引源码
- 麻将APP 源码
- 模拟POS机程序源码
- Flash as3.0制作的拼图小游戏源码。
- 淘宝天猫秒杀JS源码
- 中文版AutoCAD 2004工程绘图标准教程源
- 利用微软的SAPI编写简单的文本阅读程
- OpenGL 作图 - 圆环
- 考勤系统完整源码
- cocos creator实现的推箱子游戏,含源码
- 基于socket的联网五子棋游戏源码
- Linux下的DLNA播放器源码
- Flash打气球游戏AS3源码
- NB-IOT北向推送接收源码参考(电信、
- paho.mqtt.c-1.3.1
- 超炫打飞机flash游戏as3.0源码期末作业
- 流水线源码.zip
- 易语言夜神模拟器模块源码
- 中文聊天机器人chatbot源码
- 亲测正确版-win32汇编贪吃蛇源码-win
- pic单片机实现的频率计
- 军棋安卓版源码
- Unity3D 餐厅烹饪游戏源码
- IOS源码大全1000套
- 龙城游戏源码
- flash实现坦克大战,资源+源码
- Unity开发MMO游戏泰斗破坏神教学视频及
- Unity开发RPG游戏黑暗之光教学视频及素
- 计算器含源码
评论
共有 条评论