• 实验一 密码引擎4国䀄算法交叉测试(选做)


    1.在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图

    参考在Linux下安装GmSSL安装gmssl环境,从码云https://gitee.com/shuangyu/GmSSL上下载源码

    安装GmSSL成功

    使用openssl SM4算法加密文件

    mysm4.c
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    #include <openssl/evp.h>
    #include <openssl/x509.h>
    void tEVP_Encrypt()
    {
        unsigned char key[EVP_MAX_KEY_LENGTH];  //密钥
        unsigned char iv[EVP_MAX_KEY_LENGTH];//初始化向量
        EVP_CIPHER_CTX* ctx;//EVP算法上下文
        unsigned char out[1024];//输出密文缓冲区
        int outl;//密文长度
        int outltmp;
        const char *msg="2019121320191201";//待加密的数据
        int rv;
        int i;
        //初始化函数才能用!
            ctx = EVP_CIPHER_CTX_new();
        //设置key和iv(可以采用随机数和可以是用户输入)
        for(i=0;i<24;i++)
        {
            key[i]=i;
        }
        for(i=0;i<8;i++)
        {
            iv[i]=i;
        }
        //初始化密码算法结构体
        EVP_CIPHER_CTX_init(ctx);
        //设置算法和密钥以
        rv = EVP_EncryptInit_ex(ctx,EVP_sm4_cbc(),NULL,key,iv);
        if(rv!=1)
        {
            printf("Err\n");
            return;
        }
        //数据加密
        rv = EVP_EncryptUpdate(ctx,out,&outl,(const unsigned char*)msg,strlen(msg));
        if(rv!=1)
        {
            printf("Err\n");
            return;
        }
        //结束数据加密,把剩余数据输出。
        rv = EVP_EncryptFinal_ex(ctx,out+outl,&outltmp);
        if(rv!=1)
        {
            printf("Err\n");
            return;
        }
        outl = outl +outltmp;
        printf("原文为:%s\n",msg);
        //打印输出密文
        printf("密文长度:%d\n密文数据:\n",outl);
        for(i=0;i<outl;i++)
        {
            printf("0x%02x ",out[i]);
        }
        printf("\n");
    }
    int main()
    {
        OpenSSL_add_all_algorithms();
        tEVP_Encrypt();
        return 0;
    }
    

    2.用龙脉eKey解密

    3.在Ubuntu中基于OpenSSL产生一对公私钥对


    4.在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值

    5.用OpenSSL SM2算法计算Hash值的签名

  • 相关阅读:
    BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
    BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )
    BZOJ 1066: [SCOI2007]蜥蜴( 最大流 )
    BZOJ 1935: [Shoi2007]Tree 园丁的烦恼( 差分 + 离散化 + 树状数组 )
    BZOJ 1297: [SCOI2009]迷路( dp + 矩阵快速幂 )
    BZOJ 1406: [AHOI2007]密码箱( 数论 )
    BZOJ 1876: [SDOI2009]SuperGCD( 更相减损 + 高精度 )
    spfa2
    spfa
    bellmanford队列优化
  • 原文地址:https://www.cnblogs.com/1301cn/p/16157507.html
Copyright © 2020-2023  润新知