生成自签名证书(二) 方式二: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...
生成自签名证书步骤(一) ##1.方式一1.创建一个目录如Mytest,进入该目录,在该目录下打开命令行窗口2.启动openssl```shellopenssl#执行该命令即可```3.使用openssl工具生成一个RSA私钥,注意:生成私钥,需要提供一个至少4位的密码。```shellgenrsa-des3-outserver.key2048//2048私钥的位数,可以不指定,默认值:???-des3:使用3d...
HTTPS请求的流程 https=http+sslssl是一个通讯协议,在通讯过程中,使用了数字证书流程:1、网站提供者在本地生成公钥私钥2、服务器提供者将公钥发送给CA机构3、CA机构使用自己的私钥对服务器的公钥进行签名,向服务器提供数字证书4、用户访问网站时,会提供CA数字证书给客户5、客户浏览器端已经随着操作系统预装了CA机构的根证书6、浏览器会对服务器的证书进行验证7、如果认证成功,说明服务器可靠,可以正常通信(有个小锁头)8、如果认证失败,显示Not Security,提示Wa.
消息认证与数字签名 一、消息认证1、原理:2、使用场景:SWFT、https、IPFS3、消息认证存在的问题①密钥需要第三方配送②无法进行第三方认证③无法防止发送方否认解决办法:引入数字签名二、数字签名1、原理:使用非对称加密算法的私钥进行数字签名,公钥进行加密2、签名认证流程签名过程需要内容:私钥、原文验证过程需要内容:原文、数字签名、公钥数字签名原理流程图如下...
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、经行数据填充/...
常用对称加密算法与分组模式 一、常用的对称加密算法有DES:特点是每隔7位做一次奇偶校验,加密时8个字节为一组,得到的密文长度不变3DES:三重DES 加密过程为 加密-解密-加密(不是加密-加密-加密,是为了兼容以前的DES) 特点:安全,效率高,密钥为8*3=24bit,数据分组长度与DES相同 ①:如果密钥1与密钥2相同,或者密钥2与密钥3相同则相当于DES,体现了兼容性 ②:如果密钥1与密钥3相同,则相当于有两个密钥,专业名字:3des-EDE2 ...
go实现RSA公钥加密、私钥解密 packagemainimport("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""fmt""io/ioutil")funcRsaPriKeyDecryt(filenamestring,cipherData[]byte)(error,[]byte){//1、通过私钥文件获取私钥信息Keyinfo,err:=iou...
RSA生成公钥、私钥的go实现 packagemainimport("crypto/rand""crypto/rsa""crypto/x509""encoding/base64""encoding/pem""fmt""os")/*步骤:生成私钥分析1、GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥funcGenerateKey(randomio.Reader,bits...
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个字符.
高并发解决方案之一 ——负载均衡 1.什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡...
反向输出链表的两种方法 ①不改变链表的结构(利用递归的本质是利用栈)void Reve_list(listnode* phead){if(phead!=NULL){if(phead->next!=NULL){Reve_list(phead->next);}printf("%d\t",phead->value);}}②改变链表的结构(反转链表)(利用两个 空...
epoll机制原理 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_SE...
字符串如果有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...
C++ 类的大小计算 原c++类的大小计算2017年06月01日 23:01:02阅读数:4009c++中类所占的大小计算并没有想象中那么简单,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空类等,不同情况有对应的计算方式,在此对各种情况进行总结。首先要明确一个概念,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 我们这里指的类的大小,其实指的是类的对象所占的大小。因此,如果用siz...
select、poll和epoll区别 select的几大缺点:(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大(3)select支持的文件描述符数量太小了,默认是1024epoll epoll既然是对select和poll的改进,就应该能避免上述的三个缺点。那epoll都是怎么解...
gdb调试 c++ gdb调试大全基础用法1. 简介GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事。 4.动态的改变...
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...
最小生成树-Prim算法和Kruskal算法 最小生成树-Prim算法和Kruskal算法 假设以下情景,有一块木板,板上钉上了一些钉子,这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样的情况,即用最少的细绳把所有钉子连接起来。更为实际的情景是这样的情况,在某地分布着N个村庄,现在需要在N个村庄之间修路,每个村庄之前的距离不同,问怎么修最短的路,将各个村庄连接起来。以上这些问题都...
希尔排序(特殊的插入排序) #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) { ...