地表最强菜鸡
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Gmssl编译问题: error while loading shared libraries: libssl.so.1.1: cannot open shared object file
在Centos7上编译安装Gmssl后,运行gmssl version出现如下错误:gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory查找一下libssl.so.1.1的位置,然后连接到/usr/lib6...原创 2019-08-31 11:58:28 · 8899 阅读 · 3 评论 -
Gmssl 各平台编译方法【绝对可用】
最近工作上需要在不同平台上使用SM2、SM4算法,所以需要在不同平台上进行编译Gmssl库,下面是我总结的编译命令。1、arm-himix200-linux(himix200芯片)gmssl动态链接库编译,代码如下:目录:GmSSL-master$ ./Configure --prefix=/home/qli/libopenssl --cross-compile-prefix=/o...原创 2019-11-26 20:30:53 · 14908 阅读 · 19 评论 -
CMakeLists 在实际项目中的编写实例
最近在项目中经常需要编写CMakeLists,在此记录一下正式项目中是如何编写使用的,特此记录便于日后查阅。project("device-authentication")cmake_minimum_required(VERSION 3.5)INCLUDE_DIRECTORIES( ../include/ ../../src/net/mbedtls/include ../...原创 2020-02-23 17:01:16 · 843 阅读 · 0 评论 -
CMakeLists 关于List的使用方法
可以使用set命令创建一个列表。LIST与SET命令类似,即使列表本身是在父域中定义的,LIST命令也只会在当前域创建新的变量,要想将这些操作的结果向上传递,需要通过SET PARENT_SCOPE, SET CACHE INTERNAL或运用其他值域扩展的方法。当指定index时,如果为大于或等于0的值,它从列表的开始处索引,0代表列表的第一个元素。如果为小于或等于-1的值,它从列表的结尾处索引,-1代表列表的最后一个元素。原创 2019-09-30 10:15:45 · 13011 阅读 · 0 评论 -
CMakeLists 中常用的预定义变量
最近在写CMakeLists遇到了很多预定义变量,特此记录便于日后查阅。文件结构如下:常用路径变量PROJECT_NAME:通过PROJECT指定的项目名称 project(Demo)PROJECT_SOURCE_DIR:工程的根目录,上图中的Demo目录PROJECT_BINARY_DIR:执行cmake命令的目录,一般是在build目录,在此目录执行cm...原创 2020-02-23 16:55:34 · 3009 阅读 · 0 评论 -
CMakeLists 正式环境模板常用语法
CMakeLists.txt是CMake的配置文件,方便编译大型项目。我为自己常用的项目写了一个统一的模板,把常用的语法记录下来。使用的时候去掉对应的注释就可以。cmake_minimum_required(VERSION 2.8)project(pr) #编译选项#add_definitions("-DXXX") # ${CMAKE_SOURCE_DIR}: The direc...原创 2020-02-23 17:23:10 · 1251 阅读 · 0 评论 -
CMakeLists 编译失败:Clock skew detected 问题解决
今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误:make: warning: Clock skew detected. Your build may be incomplete试了make clean后再make,仍然是同样的问题,最后发现这个错误的原因在于系统时间比文件修改时间早,看了下我的系统时间竟然还是2012-01-13,而今天都已经是2012-01-31呢,于是修改...原创 2019-10-27 22:59:31 · 989 阅读 · 0 评论 -
CMakeLists 实现动态宏开关
最近在工作中需要通过一份C代码控制逻辑走向,网上找了一下资料,发现可以通过在CMakeLists文件中动态定义宏开关,从而能够达到编译出不同逻辑流的代码。具体步骤:首先,我在src代码里编写了若干debug的输出:#IFDEF DEBUG some print command;#ENDIF然后,在CMakeLists文件中添加DEBUG的定义:IF (CMAK...原创 2020-02-23 16:20:57 · 6012 阅读 · 0 评论 -
C语言进制转换—16进制最大能表示10进制数是多少?
1个字节:最大0xFF = 255(存储类型byte和char) 2个字节:最大0xFF FF = 65535(存储类型shot int) 4个字节:最大0xFF FF FF FF= 4294967295(存储类型int 、long) 8个字节:最大0xFF FF FF FF FF FF FF FF= 18446744073709551615(存储类型long long)十六进制(英文名...原创 2019-08-12 21:25:18 · 5746 阅读 · 0 评论 -
C语言实现大小写转换的三种方法
实现大小写转换的三种方法方法一:#include<stdio.h>#include<stdlib.h>int main(){ char str[] = "AbCdEf"; char c; int i = 0; while (str[i] != '\0') { c = str[i]; if (c >= 'A' && c...原创 2019-10-26 17:08:03 · 27129 阅读 · 3 评论 -
Kubernetes(Docker)容器部署加载不到 .so动态链接文件(java.lang.UnsatisfiedLinkError: no xxx in java.library.path)
找了一下午,网上文章有很多,但都不适用,因为我是通过容器进行部署服务,然后容器加载.so动态链接文件,所以网上大多数文章是设置Linux的动态链接目录,这里统一记录一下解决方法:1、Linux设置LD_LIBRARY_PATH环境变量普通的 Jar 包加载 .so 可以通过设置动态链接目录的方式来找到动态链接文件$ vim /etc/profile$ export LD_LIBRA...原创 2019-10-22 17:19:44 · 9366 阅读 · 17 评论 -
Sm2公私钥
6. SM4,对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。3. 加解密、签名验签过程,掺杂随机数导致,结果长度在一定范围内变长。1. SM2为国家密码管理局公布的公钥算法,其加密强度为256位。4. SM1 对称加密算法,加密强度为128位,采用硬件实现;5. SM3 哈希算法,杂凑值长度为32字节。2. SM2公钥64字节,私钥32字节。签名长度70-72字节不等。原创 2019-09-03 12:04:55 · 11347 阅读 · 0 评论 -
SM2 椭圆曲线公钥密码算法,完整c代码,前人栽树,后人乘凉
这是基于mircal库实现的,没有mircal库的下载我以前的博客发的文件,根据教程在vs上搭建。某电信安信息安全数学基础实验要求实现SM2椭圆曲线公钥密码算法。一共四个文件 SM2.c SM2.h SM3.c SM3.h。原创 2019-09-03 14:24:42 · 10109 阅读 · 7 评论 -
Visual Studio搭建miracl,及.lib .h文件的下载
感谢两位dalao的博客:https://blog.csdn.net/shuilan0066/article/details/8520337https://blog.csdn.net/baron_wu/article/details/83186430.lib太麻烦了,看别人的教程怎么也弄不好,直接上传在vs2017上已经弄好的miracl.h miracl.def miracl.li...原创 2019-09-03 14:25:34 · 1124 阅读 · 0 评论 -
C语言学习笔记之字符串拼接的2种方法
1. 使用strcat进行字符串拼接#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { char *firstName = "Theo"; char *lastName = "Tsao"; char *name = (char *) mal...原创 2019-10-26 18:38:01 · 3658 阅读 · 0 评论 -
C语言实现md5加密
网上找到的实现md5函数代码,包括一个头文件md5.h和一个源文件md5.c,用下面的测试代码test.c测试通过,各文件依次如下:原创 2019-09-05 11:41:59 · 5722 阅读 · 0 评论 -
C语言匹配服务端返回数据方法
最近项目组让我来做安全模块,有一个地方比较有意思,就是用C语言来匹配服务端返回数据,代码如下:static uint8_t* findSnfromBuf(uint8_t* in){ int i = 7; while(in[i]){ if ( (in[i-7] == '\"') && (in[i-6] == 'd') ...原创 2019-10-11 20:49:50 · 450 阅读 · 0 评论 -
HMAC-SHA1 签名算法(签名设计思路)
1、HMAC-SHA1:HMAC是哈希运算消息认证码 (Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC-SHA1签名算法是一种常用的签名算法,用于对一段信息进行生成签名摘要。2、需要注意哪些问题:a) hmac-sha1可以认为是不可逆的加密算法,sk只能保存在服务器,不能通过任何途径传输给客户端b) 服务器发一个签名给客户端,此后服务器通过签名来校验客户端的访问权限原创 2020-05-25 20:11:04 · 6120 阅读 · 0 评论 -
C语言混合加密算法(通用)
最近在项目中写了一种异或混合加密算法,特此记录便于日后查阅。#include "com_openailab_oascloud_security_jni_eaidk_EaidkAuthJNI.h"#include <stdio.h>#include <string.h>#include <stdint.h>#include <stdlib.h>#include <sys/time.h>//异或混合加密算法int mixEncry原创 2020-05-09 19:45:15 · 1127 阅读 · 4 评论 -
SM2基于Gmssl加解密算法Demo
关于GmSSL当然本文也是参考关于GmSSL其中SM2为非对称算法。原创 2019-09-07 18:22:22 · 3870 阅读 · 10 评论 -
C语言结构体初始化的四种方法
定义typedef struct { int first; double second; char* third; float four;} T_init_member;方法一:定义时赋值T_init_member test = {-10,3.141590,"method one",0.25};需要注意对应的顺序,不能错位。方法二:定义后逐...原创 2020-03-26 15:51:08 · 1927 阅读 · 2 评论 -
C语言获取文件大小
方法一:获得文件大小需要用到2个函数:fseek(),ftell(),介绍如下: fseek()函数: 原型:intfseek(FILE *stream, long offset, int fromwhere); 参数: stream: 第一个参数stream为文件指针 offset : 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移 ...原创 2020-03-24 15:47:57 · 3919 阅读 · 0 评论 -
C语言将字节数组转为hex字符串
最近项目组让我来做安全模块,在数据传输之前需要将数组转换文hex字符串进行传输,因为字节数组是不能进行传输的,这个方法非常有用,特此记录便于日后查阅,代码如下:static uint8_t hex_lookup[16] = { '0', '1', '2', '3', '4', '5', '6', '7','8','9', 'a', 'b', 'c', 'd', 'e', 'f' };st...原创 2019-10-11 20:56:06 · 4006 阅读 · 0 评论 -
C语言对字节数组扰动
最近做安全模块,有对数组进行扰动打乱的方法,这里记录一下,便于日后查阅,代码如下:static int reoder(uint8_t *src, uint8_t *dst, int len){ int i; int m = 0; int n = len - 1; for (i = 0; i < len; i++) { if (i % 3 == 0) { dst...原创 2019-10-11 20:52:04 · 418 阅读 · 0 评论 -
C语言通过位移、异或计算对字节数组加密
最近在工作中做数据安全模块,有些非常巧妙的位移、异或计算加解密使用的非常好,下面记录一下。1、加密代码参数中plaintext为明文、plaintext_size=64、ciphertext为密文、ciphertext_size=128int fake_rsa_encrypt( const unsigned char* plaintext, unsigned int plai...原创 2019-10-11 17:07:40 · 1727 阅读 · 0 评论 -
C语言实现Base64编码/解码
Bse64是一种以64个可打印字符对二进制数据进行编码的编码算法。base64在对数据进行编码时以三个8位字符型数据为一组,取这三个字符型数据的ASCII码,然后以6位为一组组成4个新的数据,这4个新的数据有6位,所以它的最大值为2^6=64。我们以4个6位数据的十进制数从base64表中得到最终编码后的字符。Base64 编码表Value Char Value Cha...原创 2019-09-05 11:38:32 · 3719 阅读 · 4 评论 -
C语言SM4算法实现(基于GMSSL)
最近项目中需要通过C语言实现SM2、SM4国密算法,这里我基于GMSSL来进行实现,本人已在这5种环境下全部实现,并已使用在生产环境中。1、GMSSL编译GMSSL编译在不同环境下都不一样,这里我提供Window64、Arm64、Linux64、Android、himix200海思芯片 环境编译方法,传送门如下:Gmssl官网地址Gmssl 各平台编译方法【绝对可用】如果各位都...原创 2020-01-21 13:56:10 · 7785 阅读 · 20 评论 -
C语言SM2算法实现(基于GMSSL)
最近项目中需要通过C语言实现SM2、SM4国密算法,这里我基于GMSSL来进行实现,本人已在这5种环境下全部实现,并已使用在生产环境中。1、GMSSL编译GMSSL编译在不同环境下都不一样,这里我提供Window64、Arm64、Linux64、Android、himix200海思芯片 环境编译方法,传送门如下:Gmssl官网地址Gmssl 各平台编译方法【绝对可用】如果各位都...原创 2020-01-21 13:15:56 · 20213 阅读 · 41 评论 -
Mbedtls加密组件库使用
下载与安装github的下载:https://github.com/ARMmbed/mbedtls 官网下载:https://tls.mbed.orgmbedtls-2.6.0库我们要在工程中引用的目录有include,library和visualc这3文件夹:include: 库头文件所在 library:库源文件(.c)所在 visualc:工程文件所在,使用VS2010...原创 2019-10-26 16:36:56 · 6827 阅读 · 0 评论 -
C语言RSA算法实现(基于Mbedtls)
最近项目中需要通过C语言实现RSA算法,这里我通过Mbedtls库来进行实现。1、下载Mbedtls首先我们将Mbedtls代码放入到工程中,相关传送门如下:Mbedtls官方下载地址官方网址是国外的下载慢,所以也附上本文使用到的Mbedtls代码,传送门如下:Mbedtls加解密工具代码2、引入Mbedtls头文件这里我们在工程中的CMakeLists.txt中引入M...原创 2020-01-21 14:25:26 · 4321 阅读 · 2 评论 -
C语言AES算法实现(基于Mbedtls)
最近项目中需要通过C语言实现AES算法,这里我通过Mbedtls库来进行实现。1、下载Mbedtls首先我们将Mbedtls代码放入到工程中,相关传送门如下:Mbedtls官方下载地址官方网址是国外的下载慢,所以也附上本文使用到的Mbedtls代码,传送门如下:Mbedtls加解密工具代码2、引入Mbedtls头文件这里我们在工程中的CMakeLists.txt中引入M...原创 2020-01-21 14:35:42 · 3605 阅读 · 0 评论 -
C语言MD5算法实现(基于Mbedtls)
最近项目中需要通过C语言实现MD5算法,这里我通过Mbedtls库来进行实现。1、下载Mbedtls首先我们将Mbedtls代码放入到工程中,相关传送门如下:Mbedtls官方下载地址官方网址是国外的下载慢,所以也附上本文使用到的Mbedtls代码,传送门如下:Mbedtls加解密工具代码2、引入Mbedtls头文件这里我们在工程中的CMakeLists.txt中引入M...原创 2020-01-21 14:40:22 · 3607 阅读 · 0 评论 -
C语言安装openssl
https://blog.csdn.net/zzq900503/article/details/16841561https://blog.csdn.net/houjixin/article/details/25806151原创 2019-08-31 18:33:48 · 1020 阅读 · 0 评论 -
C语言0x00在无符号数组使用中的注意事项
C语言0x00在无符号数组使用中,不能使用 strlen() 计算数组长度,否则不准确,0x00 会起到停止符的作用。例如:uint8_t str[4] = {0x01,0x00,0x02,0x03};size_t len = strlen(str);这里按照常理来说 len 应该等于 4,但是实际上 len 等于 1,原因是\0 在内存中是以0x00来存放的,而数字0 是一个常用...原创 2019-10-17 11:09:34 · 4640 阅读 · 4 评论 -
C语言make的多线程编译
因为CPU是一个影响编译速度的重要因素,通过以下命令可以利用计算机所有线程来进行编译,命令如下: $ make -j可以把项目在进行中的并行编译,现在服务器上的CPU差不多都是多核多线程的,让make最多允许4个编译进程同时执行,这样可以更有效的利用CPU资源,命令如下: $ make -j4C语言make的多线程编译介绍到此结束。...原创 2019-08-31 10:36:44 · 3378 阅读 · 0 评论 -
C语言字节与不同进制转换关系(1字节、2进制、16进制)
最近项目组让我来做安全认证模块(SAS),因为涉及到算法领域,所以与字节转换密切相关,这里我需要明确1字节、16进制、2进制之间的关系,如下所示:∵ 1byte=8bit=128+64+32+16+8+4+2+1=255(无符号2进制)∵ 1byte=OXFF=15*16^1+15*16^0=255(双16进制)∴ 1byte=OXFF=8bit∴ 1字节==双16进制数==8位无符号...原创 2019-09-04 17:40:06 · 2894 阅读 · 0 评论 -
Visual Studio使用openssl库环境搭建
最近项目组需要写加解密算法,通过openssl实现,在这里讲一下openssl环境配置方式在VS的工程设置工程属性1:右击工程名 ——> 选择“属性”2:在“VC++目录”——> “包含目录”中添加openSSL的include文件(在您安装openssl的文件下)3:在“VC++目录”——> “库目录”中添加openSSL的lib文件(在您安装openssl的文件...原创 2019-09-05 17:37:40 · 6821 阅读 · 2 评论 -
C语言中,为什么字符串可以赋值给字符指针变量
C语言中,为什么字符串可以赋值给字符指针变量char *p,a='5';p=&a;//显然是正确的,p="abcd"; //但为什么也可以这样赋值??问:一直理解不了为什么可以将字串常量赋值给字符指针变量?答:双引号做了3件事: 1、申请了空间(在常量区),存放了字符串 2、在字符串尾加...原创 2019-09-10 16:06:20 · 1070 阅读 · 1 评论 -
Visual Studio报错CRT detected that the application wrote to memory after end of heap buffer.
最近在调试代码的时候遇到这样一个错误:detected that the application wrote to memory after end of heap buffer,图示如下:报错代码块如下:pResOut->text = (unsigned char *)malloc(strlen(enc_text));memset(pResOut->text, 0,...原创 2019-09-22 19:13:19 · 5334 阅读 · 6 评论 -
C语言数组初始化的三种方法
C语言中,数组初始化的方式主要有三种:1、声明时,使用 {0} 初始化;2、使用memset;3、用for循环赋值。那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码:#define ARRAY_SIZE_MAX (1*1024*1024) void function1(){ char array[ARRAY_SIZE_MAX] = {0}; ...原创 2019-09-27 10:37:06 · 18642 阅读 · 0 评论