首页 > 编程语言 >实验一 密码引擎-4-国䀄算法交叉测试

实验一 密码引擎-4-国䀄算法交叉测试

时间:2023-04-16 21:25:22浏览次数:40  
标签:Hash 交叉 int OpenSSL char 算法 引擎 Ubuntu

任务详情

0 2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名
1 在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图
2 在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)
3 在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签,提交代码和运行结果截图
4 加分项:在Windows中重现上述过程
 

二、实验过程

1.创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名,并在Ubuntu中使用OpenSSL用SM4算法加密      

 

代码:


#include <stdio.h> #include <string.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; unsigned char out[1024]; int outl; int outltmp; const char *msg="20201208syf"; int rv; int i; ctx = EVP_CIPHER_CTX_new(); 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; }

 

 

 

 

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

 

 

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

 

 

 

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

6.在windows下中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签,提交代码和运行结果截图。

 

 

 

标签:Hash,交叉,int,OpenSSL,char,算法,引擎,Ubuntu
From: https://www.cnblogs.com/syf0105/p/17323721.html

相关文章

  • 界面重建——Marching cubes算法
    一、引子对于一个标量场数据,我们可以描绘轮廓(Contouring),包括2D和3D。2D的情况称为轮廓线(contourlines),3D的情况称为表面(surface)。他们都是等值线或等值面。以下是一个2D例子: 为了生成轮廓,必须使用某种形式的插值。这是因为我们只在数据集中的一个有限点集上有标量值,而我们......
  • Floyd算法注意事项
    注意事项:k层循环不能内置Floyd适用于求解全源最短路径问题,即对于给定的图G,求解任意两点之间的最短路径长度。模板#include<bits/stdc++.h>usingnamespacestd;constintN=105;intdis[N][N];voidFloyd(){ memset(dis,0x3f3f3f,sizeof(dis));//初始化为极大值 //......
  • # 密码引擎-4-国䀄算法交叉测试
    任务详情2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用O......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之001 week01 02-01 什么是算法?
    1、什么是算法?为了明确什么是算法,我们会从简单的查找功能开始讲起。查找其实一个一个非常简单的算法,但我们会为这个查找功能的算法做如下工作:让查找的功能适应更多的数据类型通过查找的例子讲解如何编写正确的程序?为查找算法性能测试对一些常见算法做复杂度分析2、定义......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之002 week01 02-02 线性查找法
    1、线性查找法什么是线性查找法?举例:在一沓试卷中,找到属于自己的那张试卷。第1张:不是第2张:不是第3张:不是……第n张:是,找到了!第n+1张:不找了……这个解决问题的思路和过程体现就是线性查找法的思想。2、线性查找法思路梳理线性查找法,就是在线性的数据结构中来完成。例......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找
    1、算法描述在数组中逐个查找元素,即遍历。2、思路原理如算法描述,基本是最简单的代码块了,没有什么额外的原理。3、初步的代码实现线性查找法初步的代码实现:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音*@ClassNameLinea......
  • 搜索引擎语法
     1、介绍一般,搜索引擎支持高级搜索语法。这里以百度https://www.baidu.com/为例。2、高级搜索页https://www.baidu.com/gaoji/advanced.html通过该页面,填写表单,进行相关配置可以实现高级搜索功能如果有多个选项,通过空格进行分隔3、高级搜索语法根据高级搜索页配置后的......
  • 由数据范围反推算法复杂度以及算法内容
    一般ACM时间限制是1-2秒这种情况下,c++代码操作次数控制在1e7~1e8下面给出在不同数据范围下,代码时间复杂度和算法如何选择1.n<=30,指数级别,dfs+剪枝,状态压缩dp2.n<=100=>O(n3),floyd,dp,高斯消元3.n<=1000=>O(n2),O(n2logn),dp,二分,朴素版Dijkstra,朴素版Prim、Bellman-Ford4.......
  • 【LBLD】田忌赛马背后的算法决策
    田忌赛马背后的算法决策870.优势洗牌classSolution{public:vector<int>advantageCount(vector<int>&nums1,vector<int>&nums2){intn=nums1.size();priority_queue<pair<int,int>,vector<pair<int,int>&......
  • 存储引擎-MyISAM和Memory
    存储引擎特点:MyISAM:是mysql早期的默认存储引擎特点:1.不支持事务,不支持外键 2.支持表锁,不支持行锁 3.访问速度快文件:xxx.sdi:存储表结构信息 xxx.MYD:存储数据 xxx.MYI:存储索引 Memory:Memory引擎的表数据是存储在内存中的,由于受到硬件问题,或断电问题的影响,只能将......