自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 SSL/TLS交互细节

TSL=3.0SSL安全协议包括握手协议(重要)、密码规格变更协议、警告协议、应用数据协议后续的消息加密为对称加密

2021-09-06 22:28:51 174

原创 生成自签名证书(二)

方式二:openssl req -x509 -newkey rsa:4096 -keyout server.key -out cert.crt -days 365 -nodes ---------nodes 表示为不设置密码解析证书:openssl x509 -in cert.pem -text一、常见证书格式1、pem格式(默认)解析命令:openssl x509 -in pem文件名 -text -noout2、der格式解析命令:openssl x...

2021-09-06 22:21:31 140

原创 生成自签名证书步骤(一)

##1.方式一1.创建一个目录如Mytest,进入该目录,在该目录下打开命令行窗口2.启动openssl```shellopenssl#执行该命令即可```3.使用openssl工具生成一个RSA私钥,注意:生成私钥,需要提供一个至少4位的密码。```shellgenrsa-des3-outserver.key2048//2048私钥的位数,可以不指定,默认值:???-des3:使用3d...

2021-09-05 22:43:48 1100

原创 HTTPS请求的流程

https=http+sslssl是一个通讯协议,在通讯过程中,使用了数字证书流程:1、网站提供者在本地生成公钥私钥2、服务器提供者将公钥发送给CA机构3、CA机构使用自己的私钥对服务器的公钥进行签名,向服务器提供数字证书4、用户访问网站时,会提供CA数字证书给客户5、客户浏览器端已经随着操作系统预装了CA机构的根证书6、浏览器会对服务器的证书进行验证7、如果认证成功,说明服务器可靠,可以正常通信(有个小锁头)8、如果认证失败,显示Not Security,提示Wa.

2021-09-05 22:30:11 696

原创 消息认证与数字签名

一、消息认证1、原理:2、使用场景:SWFT、https、IPFS3、消息认证存在的问题①密钥需要第三方配送②无法进行第三方认证③无法防止发送方否认解决办法:引入数字签名二、数字签名1、原理:使用非对称加密算法的私钥进行数字签名,公钥进行加密2、签名认证流程签名过程需要内容:私钥、原文验证过程需要内容:原文、数字签名、公钥数字签名原理流程图如下...

2021-09-05 22:08:36 467

原创 des-cbc 的go实现

packagemainimport("bytes""crypto/cipher""crypto/des""fmt")/*加密算法:des,分组模式:CBCdes:密钥:8bytes分组长度:8bytes步骤:1、创建并返回一个使用DES算法的cipher.Block接口。funcNewCipher(key[]byte)(cipher.Block,error){2、经行数据填充/...

2021-08-29 22:32:28 212

原创 常用对称加密算法与分组模式

一、常用的对称加密算法有DES:特点是每隔7位做一次奇偶校验,加密时8个字节为一组,得到的密文长度不变3DES:三重DES 加密过程为 加密-解密-加密(不是加密-加密-加密,是为了兼容以前的DES) 特点:安全,效率高,密钥为8*3=24bit,数据分组长度与DES相同 ①:如果密钥1与密钥2相同,或者密钥2与密钥3相同则相当于DES,体现了兼容性 ②:如果密钥1与密钥3相同,则相当于有两个密钥,专业名字:3des-EDE2 ...

2021-08-29 22:24:40 930

原创 go实现RSA公钥加密、私钥解密

packagemainimport("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""fmt""io/ioutil")funcRsaPriKeyDecryt(filenamestring,cipherData[]byte)(error,[]byte){//1、通过私钥文件获取私钥信息Keyinfo,err:=iou...

2021-08-25 20:42:27 2101

原创 RSA生成公钥、私钥的go实现

packagemainimport("crypto/rand""crypto/rsa""crypto/x509""encoding/base64""encoding/pem""fmt""os")/*步骤:生成私钥分析1、GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥funcGenerateKey(randomio.Reader,bits...

2021-08-25 20:38:36 1321

原创 base64的标准编码与URL编码的区别-go实现

packagemain/*介绍及作用:1、base64编码是程序开发中常使用的编码格式,因为更适合不同的平台、不同的语言传输,通常用于存储、传输一些二进制数据编码方法,即将二进制数据文本化(转化成ASCII)。比如有些系统只能使用ASCII字符,就可用base64将非ASCII字符数据转化为ASCII字符数据base64的特点:1、base64就是一种基于64个可以打印字符来表示二进制数据的方式2、A-Z(26)、a-z(26)、0-9(10)、+/(2):共计64个字符.

2021-08-25 20:31:27 1162

转载 高并发解决方案之一 ——负载均衡

1.什么是负载均衡?        当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡...

2018-10-10 11:24:51 158

原创 反向输出链表的两种方法

①不改变链表的结构(利用递归的本质是利用栈)void Reve_list(listnode* phead){if(phead!=NULL){if(phead->next!=NULL){Reve_list(phead->next);}printf("%d\t",phead->value);}}②改变链表的结构(反转链表)(利用两个 空...

2018-10-02 10:13:29 4385

转载 epoll机制原理

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_SE...

2018-09-21 08:59:45 1293

原创 字符串如果有A+B>B+A 则A>B

题目描述设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。代码实现:#include<stdio.h>#define MAX_LEN 1000int main(int argc,const char*arg...

2018-08-12 23:36:29 283

转载 C++ 类的大小计算

原c++类的大小计算2017年06月01日 23:01:02阅读数:4009c++中类所占的大小计算并没有想象中那么简单,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空类等,不同情况有对应的计算方式,在此对各种情况进行总结。首先要明确一个概念,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 我们这里指的类的大小,其实指的是类的对象所占的大小。因此,如果用siz...

2018-08-10 11:07:48 657

转载 select、poll和epoll区别

select的几大缺点:(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大(3)select支持的文件描述符数量太小了,默认是1024epoll  epoll既然是对select和poll的改进,就应该能避免上述的三个缺点。那epoll都是怎么解...

2018-08-09 20:10:16 109

转载 gdb调试

 c++ gdb调试大全基础用法1. 简介GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事。 4.动态的改变...

2018-08-09 15:43:39 121

转载 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO       看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度、环境不一样。所以,我们先说明基本的IO操作及环境。本文是在《UNIX网络编程 卷1:套接字联网API》6.2节"I/O 模型 "的基础上,即UNIX/LINUX环境下的网络 IO环境下的理解,它里面给出的例子是读取(接收)网络UDP数据。下面简单写写自己对这些IO...

2018-08-01 22:21:24 97

转载 最小生成树-Prim算法和Kruskal算法

 最小生成树-Prim算法和Kruskal算法 假设以下情景,有一块木板,板上钉上了一些钉子,这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样的情况,即用最少的细绳把所有钉子连接起来。更为实际的情景是这样的情况,在某地分布着N个村庄,现在需要在N个村庄之间修路,每个村庄之前的距离不同,问怎么修最短的路,将各个村庄连接起来。以上这些问题都...

2018-07-30 09:24:02 242

原创 希尔排序(特殊的插入排序)

#include <stdio.h>/*希尔排序:是一种特殊插入排序,根据等长度比较对应的元素值时间复杂度:O(n^1.25)*/void sort_data(int * array,int len){    int i;    int j;    int tmp;    for(i=len/2;i>0;i=i/2)    {   ...

2018-07-29 11:42:49 176

转载 数、深林、二叉树之间的转换

树转换为二叉树(1)加线。在所有兄弟结点之间加一条连线。(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)                       森林转换为二叉树(1)把每棵树...

2018-07-28 17:34:29 319

转载 逆波兰表达式(也叫做后缀表达式)

逆波兰表达式又叫后缀表达式,中学时候学的那种表达式叫中缀表达式。例如,5×(6+3)÷3-1      ,  3×(4÷(2+1)×2)-3例子中的这两个式子,就是中缀表达式。下面这两个就是后缀表达式:563+×3÷1-      ,    3421+÷2××3- 中缀表达式变后缀表达式方法:见到数字直接输出,见到符号按一定规则入栈出栈。规则就是,用当前的符号与栈顶的符...

2018-07-28 17:04:04 3025

原创 hash表

#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <string.h>/*hash表:称为散列表,由键值对存储数据.加快查找效率.查找值时根据键值找到值存储的位置.存储数据结构称为hash表体现键值与存储值关系称为hash函数f(key)=va...

2018-07-27 07:46:33 153

原创 归并排序

时间复杂度O(nlog n)#include <stdlib.h>#include <stdio.h> void Merge(int sourceArr[],int tempArr[], int startIndex, int midIndex, int endIndex){    int i = startIndex, j=midIndex+1, ...

2018-07-26 16:41:19 90

原创 查找树

#include <stdio.h>#include <stdlib.h>#include <assert.h>/*查找树:二叉树节点排列有序,方便快速查找.左孩子节点必须小于根节点,右孩子节点必须大于根节点1.lchild 值 <=根节点2.rchild 值 >=根节点如果对以上树按照中序遍历,输出一个升序序列创建查...

2018-07-26 07:45:34 114

原创 快速排序

//快排最差时间复杂度和冒泡排序是一样的都是O(N^2)#include <stdio.h>#define MAX 8int rec_quik_sort(int *array, int left, int right){int i ,j;int tmp = 0;int redix = 0;if(left > right){return;}...

2018-07-25 09:57:10 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除