OpenSSL/HTTP/Socket
文章平均质量分 85
OpenSSL, HTTP, Socket
fengbingchun
这个作者很懒,什么都没留下…
展开
-
Windows上网络调试助手NetAssist的使用
Windows上网络调试助手NetAssist的使用原创 2024-07-13 12:33:53 · 4654 阅读 · 0 评论 -
Python的cryptography库介绍
Python的cryptography库介绍原创 2024-01-07 10:44:17 · 2529 阅读 · 0 评论 -
C++套接字库sockpp介绍
C++套接字库sockpp介绍原创 2023-11-12 14:00:08 · 1224 阅读 · 2 评论 -
UDP协议在Windows上使用示例
UDP协议在Windows上使用示例原创 2022-12-25 19:08:36 · 4063 阅读 · 1 评论 -
代理服务器简介及libcurl测试
代理服务器英文全称是Proxy Server,其功能就是将局域网用户连接到Internet,代理网络用户去获得网络信息。形象地说,它是网络信息的中转站,是连接内部局域网和Internet的一种网关,该网关是运行代理服务软件的计算机,能够实现两种不同的网络互相通信。代理服务器有两个网络接口,一个接口用于连接Internet,另一个接口则用于连接内部网络。它的工作主要在开放系统互联(OSI)模型的会话层。 代理服务器定义:代理服务器是在用户和互联网之间提供网关的系统或路由器。因此,它有...原创 2022-04-24 13:41:46 · 3964 阅读 · 0 评论 -
TCP Flags标志位介绍
传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成。如下图所示:来自于https://www.geeksforgeeks.org 1.源端口号(Source Port):16bits,该字段标识发送方应用程序的端口号。 2.目...原创 2022-04-10 20:12:20 · 13234 阅读 · 2 评论 -
HTTP请求方法介绍
之前在https://blog.csdn.net/fengbingchun/article/details/85039308 中介绍过HTTP协议,在https://blog.csdn.net/fengbingchun/article/details/85208853 中介绍过HTTPS协议。 HTTP(HyperText Transfer Protocol,超文本传输协议):是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。通过HTTP或者H...原创 2022-04-10 08:50:27 · 2329 阅读 · 0 评论 -
网络数据包分析软件Wireshark简介
Wireshark是被广泛使用的免费开源的网络协议分析软件(network protocol analyzer)或网络数据包分析软件,它可以让你在微观层面上查看网络上发生的事情,它的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包信息。它的源码在https://github.com/wireshark/wireshark,最新发布版本为3.6.2,它的license为GPLv2。 Wireshark功能特性包括: (1).支持检查数百种协议,并不断添加支持更多...原创 2022-02-26 12:10:25 · 5133 阅读 · 2 评论 -
基于BearSSL实现自签名证书双向认证测试代码
客户端、服务器端双向认证大致过程:可以参考:https://blog.csdn.net/fengbingchun/article/details/106856332(1). 客户端发起连接请求;(2). 服务器端返回消息,包含服务器端证书server.crt;(3). 客户端验证服务器端证书server.crt的合法性;(4). 客户端向服务器端发送客户端证书client.crt;(5). 服务器端验证客户端证书client.crt,并将选定的加密方案发给客户端;(6). 客户端发送原创 2020-09-15 10:19:59 · 1064 阅读 · 1 评论 -
Windows/Linux TCP Socket网络编程简介及测试代码
典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中。当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字(socket)读出和写入数据在彼此之间进行通信。开发者创建一个网络应用时,其主要任务就是编写客户程序和服务器程序的代码。网络应用程序有两类。一类是由协议标准(如一个RFC或某种其它标准文档)中所定义的操作的实现,这样的应用程序有时称为”开放”的,因为定义其操作的这些规则为人们所共知。对于这样的实现,客户程序和服务器程序必须遵守由该RFC所规原创 2020-08-07 09:23:44 · 1694 阅读 · 0 评论 -
Linux下常用的C/C++开源Socket库
Linux下常用的C/C++开源Socket库!原创 2015-06-03 18:09:31 · 39982 阅读 · 4 评论 -
libcurl库的使用(通过libcurl库下载url图像)
libcurl库的使用(通过libcurl库下载url图像)!原创 2015-08-26 18:19:40 · 7558 阅读 · 0 评论 -
网络文件系统(NFS)简介
网络文件系统(Network File System, NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。NFS和其他许多协议一样,是基于开放网络运算远程过程调用(Open Network Computing Remote Procedure Call, ONC RPC)协议...原创 2019-03-24 16:17:55 · 5036 阅读 · 0 评论 -
C语言中select函数简介及使用
select函数用来检查套接字描述符(sockets descriptors)是否已准备好读/写,提供了一种同时检查多个套接字的方法。Linux中select函数的声明在/usr/include/x86_64-linux-gnu/sys/select.h文件中,Windows下select函数的声明在WinSock2.h文件中,声明如下:// Linuxint select(int n...原创 2019-09-14 20:36:53 · 29157 阅读 · 5 评论 -
使用OpenSSL生成自签名证书相关命令
在用于小范围测试等目的的时候,用户也可以自己生成数字证书,但没有任何可信赖的机构签名,此类数字证书称为自签名证书。证书一般采用X.509标准格式。下面通过OpenSSL相关命令介绍如何生成自签证书。1. 生成自签名根证书(一级证书):(1).产生长度为2048的rsa私钥root.key,PEM格式:LD_LIBRARY_PATH=../lib ./openssl genrsa -out root.key 2048(2).验证私钥root.key:执行结果如下图所示LD_LIBRAR原创 2020-07-16 18:46:30 · 3144 阅读 · 5 评论 -
SSL/TLS单向认证和双向认证介绍
为了便于理解SSL/TLS的单向认证和双向认证执行流程,这里先介绍一些术语。1. 散列函数(Hash function):又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字”指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values, hash codes, hash sums)的指纹。散列值通常用一个短的随机字母和数字组成的字符串代表。好的散列函数在输入域中很少出现散列冲突。散列函数的工作原理如下原创 2020-06-19 15:05:20 · 10511 阅读 · 4 评论 -
Linux Socket基础介绍
Linux Socket基础介绍!原创 2015-05-09 16:35:52 · 3918 阅读 · 0 评论 -
JWT(JSON Web Token)简介及实现
JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用HMAC SHA256或RSA等对JWT进行签名。JWT的组成:它是一个很长的字符串,中间用点(.)分隔成三个部分。它的三个部分依次是:Header(头部)、Payload(载荷)、Signature(签名)。JWT默认是不加密的。Header:是一个Json对象,描述JWT的元数据,例子如原创 2020-06-16 14:38:37 · 1464 阅读 · 0 评论 -
通过OpenSSL的接口实现Base64编解码
对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details/85218653 中介绍的方法,一是有可能不能从返回的结果中直接使用strlen来获得最终字符的大小,因为返回的结果中可能会有0x00;二是pem文件中会有换行符,每行的字节长度超过64个字节就会有换行,普通的base64解码中不会对换行符有处理。在OpenSSL中,默认情况下,base64行长度限制为64个原创 2020-06-05 15:54:08 · 5098 阅读 · 4 评论 -
从openssl rsa pem文件中提取公私钥数据实现
RSA为非对称加密算法,关于其介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/43638013。OpenSSL最新版为 1.1.1g,在Windows上和Linux上编译源码时均可以生成可执行文件openssl。通过此执行文件即可产生rsa公钥-私钥对,如产生长度为3072的密钥对,具体命令及执行结果如下图所示:3072是指modulus即模数长度为3072bit,即384字节。LD_LIBRARY_PATH=../lib ./o原创 2020-06-04 14:55:36 · 11978 阅读 · 2 评论 -
ASN.1简介及OpenSSL中ASN.1接口使用举例
ASN.1(Abstract Syntax Notation One)是一套标准,是描述数据的表示、编码传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。OpenSSL的编码方法就是基于该标准。ASN.1是一种结构化的数字对象描述语言,它包括两部分:数据描述语言和数据编码规则。ASN.1的数据描述语言允许用户自定义基本的数据类型,并可以通过简单的数据类型组成更复杂的数据类型。ASN.1是ISO和ITU-T的联合标准,它本身只定义了表示信息的抽象句法,但是没原创 2020-06-02 09:28:28 · 8770 阅读 · 1 评论 -
对称加密算法AES之GCM模式简介及在OpenSSL中使用举例
AES(Advanced Encryption Standard)即高级加密标准,由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法。关于AES的更多介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/100139524AES的GCM(Galois/Counter Mode)模式本质上是AES的CTR模式(计数器模式)加上GMAC(Galois Message Authentication Code, 伽罗华消息认证原创 2020-05-14 09:57:15 · 23647 阅读 · 2 评论 -
开源库BearSSL介绍及使用
BearSSL是用C语言实现的SSL/TLS协议,它的源码可直接通过git clone https://www.bearssl.org/git/BearSSL 下载,它的license是MIT,最新版本为0.6。BearSSL的主要特性是:(1). 正确且安全:对不安全的协议版本和算法选择是不支持的,密码算法的实现默认采用固定时间(constant-time)。(2). 较少的代码(B...原创 2020-03-15 12:18:40 · 2332 阅读 · 0 评论 -
gRPC简介及简单使用(C++)
gRPC是一个现代的、开源的、高性能远程过程调用(RPC)框架,可以在任何平台运行。gRPC使客户端和服务器端应用程序能够透明地进行通信,并简化了连接系统的构建。gRPC支持的语言包括C++、Ruby、Python、Java、Go等。gRPC默认使用Google的Protocol Buffers,关于Protocol Buffers的介绍可以参考:https://blog.csdn.net/f...原创 2019-09-08 13:41:18 · 30577 阅读 · 3 评论 -
在Windows和Linux上编译gRPC源码操作步骤(C++)
gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程。Windows7/10 vs2103编译gRPC源码操作步骤:1. 需要本机已安装Git、CMake、Perl、Go、yasm;2. 依次执行如下命令:git clone https://github.com/grpc/grpcgit checkout v1.23.xgit su...原创 2019-09-07 21:53:11 · 6513 阅读 · 0 评论 -
基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例
HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。HMAC运算利用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出。使用消息摘要算法MD2、MD4、MD5、S...原创 2019-08-31 20:36:55 · 2312 阅读 · 0 评论 -
对称加密算法AES简介及在OpenSSL中使用举例
高级加密标准(AES, Advanced Encryption Standard)由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法,用来替代DES。AES也称为Rijndael算法,是由两个比利时密码学家Vincent Rijmen和Joah Daemen开发的,他们的姓氏作为这个加密的名字。严格来说,AES和Rijndael加密算法并不完全一样。关于DES的介绍可以...原创 2019-08-29 15:48:50 · 4111 阅读 · 0 评论 -
远程过程调用RPC简介
RPC(Remote Procedure Call, 远程过程调用):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC是一种技术思想而非一种规范或协议,常见RPC技术和框架有:(1). 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。(2). 远程通信协议:RMI、Socket...原创 2019-06-16 16:46:38 · 3518 阅读 · 0 评论 -
实时流协议(RTSP)简介
RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景(Netscape)和Real Networks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与R...原创 2019-05-25 14:45:36 · 6764 阅读 · 1 评论 -
Ubuntu下使用CMake编译OpenSSL源码操作步骤(C语言)
OpenSSL的版本为1.0.1g,在ubuntu下通过CMake仅编译c代码不包括汇编代码,脚本内容如下:build.sh内容:#! /bin/bashreal_path=$(realpath $0)dir_name=`dirname "${real_path}"`echo "real_path: ${real_path}, dir_name: ${dir_name}"ne...原创 2018-12-30 13:47:24 · 6486 阅读 · 0 评论 -
HTTP解析库http-parser简介及使用
http-parser是一个用C编写的HTTP消息解析器,可以解析请求和响应,被设计用于高性能HTTP应用程序。它不会进行任何系统调用及内存分配,它不会缓冲数据,它可以被随时中断。根据你的体系结构,每个消息流只需要大约40个字节的数据(在每个连接的web服务器中。它的源码在https://github.com/nodejs/http-parser ,License为MIT,最新发布版为v2.8.1...原创 2018-12-23 18:25:21 · 25961 阅读 · 2 评论 -
base64开源库介绍及使用
网上有一些开源的base64编解码库的实现,下面介绍几个:cppcodec是一个仅包括头文件的C++11库,用于编解码RFC 4648中指定的base64, base64url, base32, base32hex等,它的License为MIT,源码在https://github.com/tplgy/cppcodec ,最新发布版本为v0.2,在windows下需要vs2015及以上才可以正常...原创 2018-12-22 22:17:36 · 8590 阅读 · 3 评论 -
HTTPS协议简介
HTTPS(HyperText Transfer Protocol Secure, 超文本传输安全协议):是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。历史上,HTTP...原创 2018-12-22 15:48:11 · 1219 阅读 · 0 评论 -
HTTP协议简介
HTTP(HyperText Transfer Protocol, 超文本传输协议):是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers, URI)来标识。HTTP的发展是由...原创 2018-12-16 18:38:52 · 730 阅读 · 0 评论 -
Base64简介
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中可打印字符包括字母A~Z、a~z、数字0~9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。Base64常用于在通常处...原创 2018-12-15 17:38:56 · 7171 阅读 · 0 评论 -
非对称加密算法RSA公钥私钥的模数和指数提取方法
生成非对称加密算法RSA公钥、私钥的方法:1. 通过OpenSSL库生成,可参考 https://github.com/fengbingchun/OpenSSL_Test/blob/master/demo/OpenSSL_Test/funset.cpp 中的Generate_RSA_Key函数;2. 在Linux下通过命令生成,执行: ssh-keygen -t rsa3. ...原创 2018-12-12 15:19:44 · 11890 阅读 · 0 评论 -
非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例
非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例!原创 2015-02-08 16:10:19 · 31492 阅读 · 5 评论 -
摘要算法之MD5介绍及OpenSSL中MD5常用函数使用举例
摘要算法之MD5介绍及OpenSSL中MD5常用函数使用举例!原创 2015-01-21 21:13:08 · 12149 阅读 · 3 评论 -
对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例
对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例!原创 2015-01-20 21:30:17 · 14290 阅读 · 0 评论 -
OpenSSL中对称加密算法DES常用函数使用举例
OpenSSL中对称加密算法DES常用函数使用举例!原创 2015-01-11 16:09:17 · 14830 阅读 · 12 评论