资源简介

该资源时纯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个文件信息

评论

共有 条评论