Windows下gmssl使用记录

使用gmssl进行计算sm4,编译的版本是gmssl2.0,2.1版本编译不过去

第一步下载软件,下载Visual Studio 2010旗舰版、nasm-2.13.03-installer-x86、ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863这三个软件,

注意vs版本不能太低,否则便宜的时候容易出现错误。

第二部使用命令进行编译,生成lib库和dll库,请选择好生成的版本,32位或者64位的dll库

perl Configure VC-WIN32
nmake
nmake install

第三步:在vs2010中调用该接口,可以使用dll直接调用,或者使用lib库,直接导入头文件。注意在选择选择vs2010中的平台配置,64位x64或者32位x86

HMODULE mHandle = LoadLibrary(L"libcrypto-1_1-x64.dll");

//pSms4_set_encrypt_key Sms4_set_encrypt_key = (pSms4_set_encrypt_key)GetProcAddress(mHandle, "sms4_set_encrypt_key");
//pSms4_encrypt Sms4_encrypt = (pSms4_encrypt)GetProcAddress(mHandle, "sms4_encrypt");

#pragma comment(lib, "libssl.lib")
#pragma comment(lib, "libcrypto.lib")

sms4_key_t key;

unsigned char user_key[16] = {
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
};

unsigned char plaintext[16] = {
0x77, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
};

unsigned char buf[16];

/* test key scheduling */
sms4_set_encrypt_key(&key, user_key);

sms4_encrypt(plaintext, buf, &key);

 

转载于:https://www.cnblogs.com/istar/p/8985437.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司管理项目管理中的技巧

如果在项目实施中选出最难解决的几个问题,那么管理问题一定名列前茅。在管理问题中,团队管理又是其中的难点。一个项目管理的好坏,很大程度就体现在团队的建设和管理上。团队管理涉及到管理学、心理学和哲学等诸多方面内容,具体实…

数据库管理系统

什么是数据库管理系统位于用户与操作系统之间的一层数据管理软件是基础软件,是一个大型复杂的软件系统 数据库管理系统的用途科学地组织和存储数据、高效地获取和维护数据数据定义功能提供数据定义语言(DDL)定义数据库中的数据对象数据组织、…

kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin复制代码(注:如果下载的版本不同输入实际版本)2.下载插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django项目--登录判断装饰器

view.py中定义登录判断装饰器函数 def login_required(view_func):登录判断装饰器def wrapper(request, *view_args, **view_kwargs):# 判断用户是否登录if request.session.has_key(islogin):# 用户已登录,调用对应的视图return view_func(request, *view_args, **view_kwarg…

Apple着手抛弃32位macOS应用程序

\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\Apple已经着手抛弃macOS上的32位应用程序了。macOS的下一个维护更新版本High Sierra 10.13.4将会在用户打开32位应用程序时对…

HiveQL与SQL区别

1、Hive不支持等值连接 •SQL中对两表内联可以写成:•select * from dual a,dual b where a.key b.key;•Hive中应为•select * from dual a join dual b on a.key b.key; 而不是传统的格式:SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2WHERE t1.a2 t…

Django项目--csrf攻击

1.案例流程图: 2.django防止csrf的方式: 1 ) Django中默认打开csrf中间件。settings.py文件中: MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

数据库管理系统与数据库系统

数据库:容纳数据的仓库。数据库系统:数据库、数据库管理系统、硬件、操作人员的合在一起的总称。数据库管理系统:用来管理数据及数据库的系统。数据库系统包含数据库管理系统、数据库及数据库开发工具所开发的软件(数据库应用系统…

如果你扯了团队后腿,你应该内疚

现在,我看到很多人扯了团队的后腿,一句道歉就了事,更甚者就以另一种方式来表达:你们没有给我足够的培训,你们的工作方式我无法接受,我工资太低,你们做的事情不够酷,你们做的事情不赚…

mysql count(*),count(1)与count(column)区别

2019独角兽企业重金招聘Python工程师标准>>> count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值。 count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。 性能问…

Java IO API记录

文件路径: public static final String FILEPATH File.separator"Users" File.separator"xuminzhe"File.separator"Documents"File.separator"io"; 1.创建文件 public static void main(String[] args) {File filenew File…

Flask项目--预防csrf攻击原理

1.CSRF机制原理 2.csrf成功攻击示意图 3.csrf防御

数据管理技术的发展过程

人工管理阶段(20世纪50年代中之前)文件系统阶段(20世纪50年代末--60年代中)数据库系统阶段(20世纪60年代末--现在)

一次失败的项目经理招聘经验

成功的原因有许多种,而失败的原因往往就那么几种。人们更愿意去讨论自己是如何成功的,确不太情愿开诚布公的去剖析自己是如何失败的。而时刻去反思自己失败的案例,我们会进步的更快! 和大家分享一个2010年发生在我身边的真实案例&…

NG客制项目下的I18n国际化标准方案

方案选择 国际化i18n ​ 这个方案是最成熟的,同时也是官方的方案,但是这样一个标准化的方案同时意味着灵活度不够。当需要划分feature module,需要客制化组件的时候,这个方案的实施的成本就会远远超过预期,因此在项目中…

Flsak项目--图片验证码

0. 图片验证码的使用流程 2.后端接口编写 verify_code.py中编写接口代码: # coding:utf-8from . import api from ihome.utils.captcha.captcha import captcha from ihome import redis_store, constants, db from flask import current_app, jsonify, make_respo…

数据库与数据库管理系统

数据库是长期存储在计算机内有组织的大量的共享的数据集合。可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时…

如何提高团队情商

在公司发展中,总裁,总监,经理,项目经理,他们对团队的建设意义重大,工作很重要,但团队的情商才更重要,笔者公司的一个团队,三十多个人就像一个人,命令所到之处…

ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

我有错误Exception in thread"main" java.lang.NoClassDefFoundError:当我尝试在Ubuntu上运行编译类时。我使用的是一个非常简单的helloworld示例,互联网上已有数百万的响应表明我的classpath和java_home变量设置错误。但是,我已经将etc/envir…

Polo the Penguin and Matrix

Little penguin Polo has an n  m matrix, consisting of integers. Lets index the matrix rows from 1 to n from top to bottom and lets index the columns from 1 to m from left to right. Lets represent the matrix element on the intersection of row i and column…