openssl开发
文章平均质量分 87
Openssl的C++开发实例,含源码实战。
N阶二进制
专注分享IT技术,【openssl/Qt/opencv/C++】,学习资料,工作经验,有趣好玩,靠谱!
展开
-
openssl数据压缩
数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的,即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间,减轻网络负载。在即需要加密又需要压缩的情况下,必须先压缩再加密,次序不能颠倒。因为加密后的数据是一个无序的数据,对它进行数据压缩,效果不大。SSL协议本身支持压缩算法,Openssl实现也支持压缩算法。它实现了一个空的压缩算法(crypto/comp/c_rle.c)并支持zlib压缩算法(crypto/comp/ c_zlib.c)。原创 2023-12-18 10:37:47 · 993 阅读 · 0 评论 -
openssl证书撤销列表(Certificate Revocation List,简称CRL)详解
证书撤销列表(Certificate Revocation List,简称CRL),是一种包含撤销的证书列表的签名数据结构。CRL是证书撤销状态的公布形式,CRL就像信用卡的黑名单,用于公布某些数字证书不再有效。CRL是一种离线的证书状态信息。它以一定的周期进行更新。CRL可以分为完全CRL和增量CRL。在完全CRL中包含了所有的被撤销证书信息,增量CRL由一系列的CRL来表明被撤销的证书信息,它每次发布的CRL是对前面发布CRL的增量扩充。原创 2023-12-11 13:32:40 · 2216 阅读 · 0 评论 -
openssl+ECC开发实例(含源码)
椭圆曲线加密(ECC,Elliptic Curve Cryptography)是一种非对称加密算法,它使用椭圆曲线上的点来进行加密、解密、数字签名和密钥交换。与传统的RSA算法相比,ECC提供了相当的安全性,但使用更短的密钥长度,从而提供更高的性能和较小的计算资源要求。原创 2023-12-05 10:42:08 · 1990 阅读 · 2 评论 -
openssl+EVP详解
EVP 提供了通用的加密和解密函数,可以用于对称加密和非对称加密。选择加密算法,创建相应的EVP_CIPHER结构。初始化上下文。使用或初始化加密或解密操作。使用或处理数据。使用或完成加密或解密操作。由digest.c实现,实现过程中调用了对应摘要算法的回调函数。各个摘要算法提供了自己的EVP_MD静态结构,对应源码为m_xxx.c。原创 2023-11-29 09:02:23 · 2913 阅读 · 0 评论 -
asn1格式详解
在ASN.1中,每种数据类型都有一个唯一的标识符,用于表示其类型和值。标签含义0x01BOOLEAN0x02INTEGER0x03BIT STRING0x040x05NULL0x060x0CUTF8String0x130x16IA5String0x17UTCTime0x180x30SEQUENCE0x31SET在ASN.1中,每个标签都对应着特定的数据类型,例如INTEGER、SEQUENCE等。原创 2023-11-30 07:00:00 · 852 阅读 · 0 评论 -
CSR证书开发详解
CSR(Certificate Signing Request)证书签名请求是一种包含公钥及其相关信息的文件,用于向证书颁发机构(CA)请求数字证书。原创 2023-11-28 07:00:00 · 3360 阅读 · 0 评论 -
openssl + ECDH + linux+开发详解(C++)
ECDH(Elliptic Curve Diffie-Hellman)是一种基于椭圆曲线密码学的密钥交换协议,用于在通信双方之间安全地协商共享密钥。ECDH是Diffie-Hellman密钥交换协议的一种变体,它利用椭圆曲线上的离散对数问题,提供了一种安全、高效的密钥协商方法。每个通信方都有一对密钥,包括一个公钥和一个私钥。公钥可以公开分享,而私钥则必须保密。通信双方通过互相交换各自的公钥,并使用对方的公钥和自己的私钥生成一个共享的对称密钥。原创 2023-11-27 07:00:00 · 1754 阅读 · 0 评论 -
openssl+ ECC + linux 签名校验开发实例(C++)
ECC(Elliptic Curve Cryptography)是一种基于椭圆曲线数学结构的密码学技术。在ECC中,签名和验证过程使用的是数字签名算法,通常是ECDSA(Elliptic Curve Digital Signature Algorithm)。原创 2023-11-26 07:00:00 · 1802 阅读 · 0 评论 -
openssl+ RSA + linux 签名校验开发实例(C++)
下面是一个简单的示例,演示如何使用OpenSSL库在Linux环境下进行RSA签名和验证。在这个示例中,我们使用PEM格式的密钥对进行签名和验证。RSA签名校验是一种用于验证数字签名的过程,它确保签名是由拥有相应私钥的合法实体创建的。在实际应用中,为增加安全性,通常使用填充方案对消息进行填充。签名的结果可以被验证,以确保消息的完整性和真实性。理解以上理论知识有助于正确实现和使用RSA签名,并在应用中确保数据的安全性和完整性。RSA签名使用一对公钥和私钥。公钥用于验证签名,私钥用于创建签名。原创 2023-11-25 07:00:00 · 1187 阅读 · 0 评论 -
openssl+ SM2 + linux 签名校验开发实例(C++)
SM2签名使用消息摘要算法对原始消息进行哈希,通常采用SM3算法。在校验过程中,验证者也需要使用相同的哈希算法对接收到的消息进行哈希。原创 2023-11-23 07:00:00 · 1707 阅读 · 0 评论 -
openssl+ SM2 + linux 签名开发实例(C++)
SM2签名使用消息摘要算法对原始消息进行哈希,通常采用SM3算法。原创 2023-11-22 07:00:00 · 1528 阅读 · 0 评论 -
openssl C++研发之pem格式处理详解
在OpenSSL的头文件中,和系列函数用于将特定类型的数据写入文件或BIO(内存缓冲区)中,其中XXXX代表不同的数据类型。这些函数的使用方式相似,通常接受一个文件指针(FILE*)或BIO指针(BIO*)作为参数,并将相应类型的数据写入到文件或BIO中。请根据需要选择合适的函数,并在使用时确保正确处理错误情况。原创 2023-11-21 07:00:00 · 1321 阅读 · 0 评论 -
openssl + 3DES开发实例(linux)
3DES(Triple DES)是对称密钥加密算法,也被称为DESede(DES加强版)。它是对DES(Data Encryption Standard)的一种改进和加强,旨在提高 DES 的安全性。原创 2023-11-17 07:00:00 · 894 阅读 · 0 评论 -
openssl+ DES开发实例(Linux)
DES(Data Encryption Standard)是一种对称密钥加密算法,最初由 IBM 设计,于1977年成为美国国家标准,用于加密非机密但敏感的政府数据。DES 使用相同的密钥进行数据的加密和解密,因此属于对称密钥加密算法。DES 使用56位的密钥,虽然实际上是64位,但其中有8位用于奇偶校验,因此实际参与加密计算的位数是56位。DES 将数据分成64位的块进行处理。每个64位的分组被视为一个数据块,并被输入到加密或解密算法中。原创 2023-11-16 07:00:00 · 981 阅读 · 0 评论 -
openssl+AES开发实例(linux)
AES(Advanced Encryption Standard)是一种对称密钥加密标准,它是一种对称加密算法,意味着相同的密钥用于加密和解密数据。AES 是 NIST(美国国家标准与技术研究院)于2001年发布的标准,用于替代原先的 DES(Data Encryption Standard)。AES 支持多种密钥长度,包括128位、192位和256位。密钥长度的不同影响了加密算法的安全性,通常更长的密钥长度意味着更高的安全性。AES 将数据分成固定大小的块(分组),每个块的大小是128位。原创 2023-11-15 07:00:00 · 822 阅读 · 0 评论 -
linux openssl C++ md5开发实例
MD5(Message Digest Algorithm 5)是一种广泛用于产生消息摘要(哈希值)的算法。MD5 属于 MD(Message Digest)家族,设计用于生成128位(16字节)的哈希值。然而,由于其设计上的一些弱点,MD5 在一些安全应用中被认为不再安全。MD5 生成的哈希值始终是128位长,不论输入的长度如何。MD5 的计算速度相对较快,适用于对大量数据进行哈希的场景。MD5 是一个单向哈希函数,即从哈希值不能逆向推导出原始输入。原创 2023-11-14 07:00:00 · 633 阅读 · 0 评论 -
openssl+sha256开发实例(C++)
SHA-256(Secure Hash Algorithm 256-bit)是一种哈希算法,属于 SHA-2(Secure Hash Algorithm 2)家族的一员。SHA-256 产生的哈希值是一个256位(32字节)的二进制数字,通常以64个十六进制字符的形式表示。SHA-256 被广泛认为是安全的哈希算法。对于理论上的攻击者来说,找到两个不同的输入产生相同的 SHA-256 哈希值(碰撞)的难度应该是极大的。SHA-256 生成的哈希值始终是256位,不论输入的长度如何。原创 2023-11-13 07:00:00 · 1737 阅读 · 0 评论 -
openssl研发之base64编解码实例
Base64编码是一种将二进制数据转换成ASCII字符的编码方式。它主要用于在文本协议中传输二进制数据,例如电子邮件的附件、XML文档、JSON数据等。Base64编码使用64个字符来表示二进制数据,通常使用字母(A-Z、a-z)、数字(0-9)和两个特殊字符(+ 和 /)。有时候,根据具体需求,可能会使用不同的字符集,比如URL安全的Base64编码会使用字符集,其中 “-” 和 “_” 替代了 “+” 和 “/”。Base64编码通常会导致编码后的数据长度略微增加。原创 2023-11-12 07:00:00 · 1576 阅读 · 0 评论 -
openssl+SM2开发实例一(含源码)
是中国国家密码管理局(CNCA)颁布的椭圆曲线密码算法标准,属于非对称加密算法。它基于椭圆曲线离散对数问题,提供了安全可靠的数字签名、密钥交换和公钥加密等功能。SM2被设计为适用于各种场景下的密码学应用,包括数字证书、数据加密、数字签名、身份认证等。SM2是一种非对称加密算法,意味着它使用两个密钥:公钥和私钥。公钥用于加密数据和验证签名,而私钥用于解密数据和生成签名。SM2基于椭圆曲线密码学(Elliptic Curve Cryptography,ECC),使用椭圆曲线上的点运算来实现加密和签名操作。原创 2023-11-11 07:00:00 · 3866 阅读 · 10 评论 -
linux系统openssl的C++开发环境搭建
在Linux上进行OpenSSL的C++开发,你需要安装OpenSSL库并且在编译时链接该库。原创 2023-10-22 22:26:14 · 1717 阅读 · 1 评论 -
openssl+sm3开发实例C++
SM3 是中国国家密码管理局(State Cryptography Administration,SCA)发布的一种密码散列函数,属于SHA-3 候选算法,也是我国的商用密码算法标准之一。SM3 是一种密码学安全性较高的密码散列函数,广泛应用于数字签名、消息认证码(MAC)等安全领域。原创 2023-10-25 07:00:00 · 1029 阅读 · 0 评论 -
openssl+RSA开发实例(含源码)
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它是由Ron Rivest、Adi Shamir和Leonard Adleman于1977年共同提出的,是最早的一种用于公开密钥加密和数字签名的算法。RSA算法的安全性基于大数因子分解的难度,即大整数分解问题。原创 2023-10-28 08:43:05 · 811 阅读 · 1 评论 -
openssl研发随机数(random)生成(含源码)
请注意,虽然可以用于非安全目的,但如果你的应用程序需要密码学安全的随机数,你应该使用函数。并且,在生产环境中,你应该避免使用自定义的随机数种子,而依赖于系统提供的随机性源来确保更高的安全性。原创 2023-10-24 07:30:00 · 2807 阅读 · 2 评论 -
openssl源代码结构说明
OpenSSL 的源代码目录结构通常是一个典型的 C/C++ 项目结构,包含了各种源文件、头文件、构建脚本和文档等。原创 2023-10-23 09:01:18 · 835 阅读 · 1 评论