openssl
虽迟但到灬
一起快乐的努力
展开
-
C++安全方向(三):3.8 openssl单项散列章节总结
原创 2022-01-19 22:46:10 · 931 阅读 · 0 评论 -
C++安全方向(三)3.8 HMAC算法介绍和安全分析
就是A发送一个消息给B,我们如何确定这个消息是A发送的。这个就需要用到这节的知识,需要共享一个密钥。注意:HMAC应用的算法不一定是一致的,可以是SHA1,也可以是SHA2等。代码如下#define TESTA_KEY "123456"#define HASH_SIZE 32string GetHMAC1(){ unsigned char data[1024] = "MAC1"; int data_size = strlen(data); //准备好的测试数据 unsigned c.原创 2022-01-19 18:31:13 · 1698 阅读 · 0 评论 -
C++安全方向(三):3.7 使用openssl_evp接口完成SHA3和国密SM3
EVP接口·EVP系列函数主要封装了加密,摘要,编码三大类型的算法。·EVP_MD_CTX摘要上下文·EVP_MD_CTX_new()·EVP_MD_CTX_free()·EVP_MD 摘要算法·EVP_sm3()·EVP_sha3_256原创 2022-01-18 22:40:32 · 850 阅读 · 0 评论 -
C++安全方向(三):3.5 SHA-1 算法分析和代码演示
SHA-1算法分析和代码演示·安全散列算法(source hash Algorithm)·消息摘要(message digest)·产生160比特(20字节)散列值H0 H1 H2 H3 H4·强抗碰撞已经攻破,在2005年由王小云公婆·和md5一样都是由md4导出注意:sshA-1的输出与md5相比,只是多了一个变量。...原创 2022-01-17 16:17:07 · 696 阅读 · 0 评论 -
C++安全方向(三)3.4 使用哈希列表验证文件的完整性
操作步骤1.哈希列表(Hash List)2.读取文件,分块生成hash值3.合并所有hash值再生成hash值4.hash(hash(f1)…hash(f100))问题:为什么要用哈希列表来验证呢?·如果说整个文件全读出来,再重新生成一个md5值的话,会使得资源的开销过大。所以我们通过哈希文件来生成一个列表。整个列表有一个好处就是列表的话,我们把文件的每一块生成一个哈希值。如下代码:/*/***************************************************原创 2022-01-17 16:11:53 · 11304 阅读 · 0 评论 -
C++安全方向(三)3.3 openssl的MD5接口调用演示
如下代码:1064420127下载代码和学员交流*/#include <iostream>#include <openssl/md5.h>using namespace std;int main(int argc, char* argv[]){ cout << "Test Hash!" << endl; unsigned char data[] = "测试md5数据"; unsigned char out[1024] =原创 2022-01-17 15:00:39 · 516 阅读 · 0 评论 -
C++安全方向openssl(三):3.2 md5算法原理详解以及代码实现
如下图:由上可知,任意大小的数据经过md5算法是都是4个字节。涉及到新的安全相关的内容,不再用md5了。通过md5算法的分析我们应该知道我们通过什么方式实现不可逆,又是通过什么方式实现修改一处内容,就能使得获得的md5值发生改变。md5算法原理,如下图大小端字节序注意C++中是小端模式,而md5算法使用大端模式。...原创 2022-01-16 19:19:39 · 428 阅读 · 0 评论 -
C++安全方向(三):3.2 单项散列函数的应用场景
1.检测文件完整(防止下载文件被篡改),主要防止下载出错2.消息认证:消息认证码,ssi安全套接字认证下面是常用的哈希算法原创 2022-01-16 19:02:13 · 101 阅读 · 0 评论 -
C++安全方向opensssl(三)3.1 什么是单项散列函数
我们如何确定一个文件是否被人篡改过?上图中的操作存在两个问题:(1)如果不敢保证存储文件的安全,那么如何保证存储文件的副本是安全的呢。(2)通过源文件与分本文件进行对比,系统资源开销也太大了。所以确保文件未被篡改的做法,下图方法较为通用用指纹代替文件对比,哪怕你只改变了源文件一位字符,指纹都会跟着改变。所以这样就生成了单项散列函数。所有的散列函数都要满足弱抗碰撞...原创 2022-01-16 18:38:41 · 99 阅读 · 0 评论 -
C++安全方向:openssl,剧场版,一个字节多少位
一:首先我们要明白:1KB = 1024Byte,那么也就是1KB大小是1024字节。1Byte = 8 bit (在通用64位系统中)(翻译过来就是:在通用64位系统中我们的每个字节有0-256中的数字表示,最大不会超过255)二:而在我们的Base16,Base64章节中讲到的1字符是什么意思呢?看这个:字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。每个字符都有对应的ASCII码值它们完全不是一个位面的概念,所以两者之间没有“区别”这个原创 2022-01-16 14:31:04 · 86 阅读 · 0 评论 -
C++安全方向:(三)课前导学:密码学核心开发技术
主要讲解关于单项散列(hash)函数-消息指纹这节主要关于md5,ssh。等算法详解。这里的前提是要掌握前面的Base64算法,openssl库编译成功呢。下面的章节还会讲解。关于Hash算法实现的openssl相关项目。...原创 2022-01-16 13:37:17 · 299 阅读 · 0 评论 -
C++安全方向(二):2.4 openssl_BIO接口解析
数据源:我们通过BIO_new申请了内存的BIO对象,表示我们把数据写入到BIO中。过滤器:通过过滤器处理数据,提供了多种方法。比如一个数据进入之后,先做md5,做完md5之后,再交给Base64来生成最终数据,md5是哈希值,生成二进制,通过Base64处理为字符,进行输出。BIO链:BIO_PUSH使得数据形成了一个链表。对这个链表数据进行读写操作。...原创 2022-01-15 20:53:58 · 686 阅读 · 0 评论 -
C++安全方向(二):2.3 base64编码原理讲解
我们目前的编码可以理解为base2564位是0-166位是0-63,能表示我们的base64,所以base64我们是取6位表示一个字节。原创 2022-01-15 20:50:33 · 259 阅读 · 0 评论 -
C++安全方向openssl(二):2.2 C++代码实现base16编解码
使用C++代码编解码,着重理解上一篇的概念,编码的时候内存会扩大二倍,一个字节4位被转为8位,字符变为两个。代码如下#include <iostream>#include <string>using namespace std;static const char BASE16_ENC_TAB[] = "0123456789ABCDEF";//0~9 对应的ASCII编码是 58~57 'A' ~'F'对应的是65~70static const char BASE1原创 2022-01-15 18:14:41 · 559 阅读 · 0 评论 -
C++安全方向:(二)2.1 base16编解码原理讲解
1.概述:二进制转字符串2.应用场景(1)邮件编码(2)xml或者json存储二进制内容(3)网页传递数据URL(4)数据库中以文本形式存放二进制(5)可打印的比特币钱包地址,base58Check(6)比特币地址,bech32(base32)本章学习目标:·从0编写base16编解码算法·理解base64原理·使用openssl BIO接口完成base64编解码高级目标·理解比特币钱包地址base58源码并读懂源码·抽取比特币base58代码并测试编解码是会将对应关系存放一原创 2022-01-14 22:00:15 · 2325 阅读 · 0 评论 -
C++安全方向openssl(一):1.2 Linux下编译openssl3.0并编写测试项目
代码:#include <stdio.h>#include <openssl/rand.h>#include <iostream>#include <time.h>using namespace std;int main(){ cout << "first openssl code!" << endl; time_t t = time(0); //以时间作为随机数种子 unsigned char buf.原创 2022-01-14 19:22:06 · 534 阅读 · 0 评论 -
C++安全方向openssl(一):1.1 openssl3.0介绍以及在windows2019下使用vs2019
安装好vs2019版本,下载http://www.openssl.vip/download要对openssl源码进行编译我们应该安装nasm(配置它的环境变量),perl。如下代码:windows下第一个随机数生成项目原创 2022-01-14 18:43:14 · 799 阅读 · 0 评论 -
C++安全方向openssl:绪论
本系列博客主要涉及内容:在openssl的学习中,我们会从openssl的编译,使用,以及项目实际开发中,以及相关算法实现进行层层讲解。力求熟悉openssl。原创 2022-01-14 15:59:59 · 114 阅读 · 0 评论