openssl加密算法简介

news2024/11/12 15:45:03

文章目录

  • 一、openssl概述
      • 1. **对称加密算法 (Symmetric Encryption)**
        • 示例代码(AES CBC 加密)
      • 2. **非对称加密算法 (Asymmetric Encryption)**
        • 示例代码(RSA 加密)
      • 3. **哈希算法 (Hashing Algorithms)**
        • 示例代码(SHA256 哈希)
      • 4. **消息认证码 (MAC)**
      • 5. **数字签名 (Digital Signatures)**
      • OpenSSL 编程接口
      • 总结
  • 二、密钥、公钥、证书、初始向量(IV)的概念
      • 1. 密钥(Key)
      • 2. 公钥(Public Key)和私钥(Private Key)
      • 3. 证书(Certificate)
      • 4. 初始向量(IV)
      • 总结


一、openssl概述

OpenSSL 是一个广泛使用的开源加密库,它支持多种加密算法,提供了加密、解密、证书管理、哈希运算等功能。OpenSSL 支持对称加密、非对称加密、哈希算法、消息认证码等不同类型的加密算法。

以下是 OpenSSL 中一些常见的加密算法的简要介绍:

1. 对称加密算法 (Symmetric Encryption)

对称加密算法使用相同的密钥进行加密和解密。加密和解密过程是相反的,密钥必须保密,因为任何知道密钥的人都能进行加解密。常见的对称加密算法包括:

  • AES (Advanced Encryption Standard):

    • 是当前最常用的对称加密算法,支持 128 位、192 位和 256 位密钥。
    • 工作模式有 ECB、CBC、CFB、OFB 等。CBC(Cipher Block Chaining)是其中一种常用模式,它使用一个初始向量(IV)来增强加密强度。
  • DES (Data Encryption Standard):

    • 曾经广泛使用,但由于密钥长度仅为 56 位,现在被认为不安全。
    • DES 已被 AES 替代,但它仍然可以用于学习和兼容性目的。
  • 3DES (Triple DES):

    • 是对 DES 算法的改进,使用三个 DES 加密操作来提高安全性,虽然比 DES 更安全,但相对较慢。
  • SM4 (Chinese National Standard):

    • SM4 是中国国家标准对称加密算法,主要用于加密处理,常见于金融、电信等领域。它支持 128 位密钥和块大小。
  • RC4 (Rivest Cipher 4):

    • 一种流加密算法,使用一个密钥流来加密数据,曾被广泛使用,但由于其安全性问题,现已不再推荐使用。
示例代码(AES CBC 加密)
EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv);

2. 非对称加密算法 (Asymmetric Encryption)

非对称加密算法使用一对密钥:一个公钥和一个私钥。公钥用于加密,私钥用于解密。私钥不能从公钥推算出来,这使得非对称加密非常适合用于密钥交换和数字签名。

  • RSA (Rivest-Shamir-Adleman):

    • 是最常见的非对称加密算法,广泛应用于数据加密、数字签名等场景。
    • RSA 的安全性基于大整数分解问题。
  • ECDSA (Elliptic Curve Digital Signature Algorithm):

    • 基于椭圆曲线的数字签名算法,比 RSA 更高效,通常用于低功耗设备或移动应用。
  • DH (Diffie-Hellman):

    • 用于密钥交换,使得两方可以安全地在不安全的通道中共享密钥。
  • DSA (Digital Signature Algorithm):

    • 用于生成数字签名,常用于身份验证和数据完整性验证。
示例代码(RSA 加密)
EVP_EncryptInit_ex(ctx, EVP_rsa_sign(), NULL, pub_key, NULL);

3. 哈希算法 (Hashing Algorithms)

哈希算法将任意长度的输入(消息)转换为固定长度的输出(哈希值)。哈希值用于验证数据完整性和生成签名。常见的哈希算法包括:

  • MD5 (Message Digest Algorithm 5):

    • 输出 128 位的哈希值,曾经非常流行,但由于碰撞攻击,现已不再推荐用于安全应用。
  • SHA (Secure Hash Algorithm):

    • SHA 系列包括 SHA-1、SHA-256、SHA-512 等,其中 SHA-256 和 SHA-512 目前仍然是广泛使用的安全哈希算法。
  • HMAC (Hash-based Message Authentication Code):

    • 使用哈希算法与密钥结合生成消息认证码,提供消息完整性和认证。
示例代码(SHA256 哈希)
EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);

4. 消息认证码 (MAC)

消息认证码是一种通过密钥和数据生成的“签名”,它用于验证消息的完整性和来源。HMAC 是一种常用的 MAC,基于哈希算法和密钥。

5. 数字签名 (Digital Signatures)

数字签名用于验证消息的来源和完整性。通常使用非对称加密算法来生成和验证签名。发送方使用私钥签名数据,接收方使用公钥验证签名。

OpenSSL 编程接口

OpenSSL 提供了一组强大的 API 用于加密、解密、哈希计算、数字签名等操作。常见的函数如下:

  • EVP_EncryptInit_ex(), EVP_EncryptUpdate(), EVP_EncryptFinal_ex() — 用于加密。
  • EVP_DecryptInit_ex(), EVP_DecryptUpdate(), EVP_DecryptFinal_ex() — 用于解密。
  • EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex() — 用于哈希计算。

总结

OpenSSL 支持各种加密算法,用于数据加密、数字签名、身份验证等多种场景。它提供了灵活且强大的 API,允许开发人员实现多种加密方案。常见的加密方法包括对称加密(如 AES、SM4)、非对称加密(如 RSA、ECDSA)、哈希算法(如 SHA、MD5)等。

二、密钥、公钥、证书、初始向量(IV)的概念

在加密和安全通信中,密钥、公钥、证书、初始向量(IV)是常见且重要的概念。它们分别在不同加密场景中扮演不同角色。以下是这些概念的详细讲解:

1. 密钥(Key)

密钥是一个用于加密和解密的核心机密值。它可以是对称密钥或非对称密钥。

  • 对称密钥:加密和解密使用相同的密钥,常用于对称加密算法(如 AES、DES、SM4)。对称加密速度较快,适合加密大批量数据。因为双方使用的是相同的密钥,密钥的安全管理至关重要。

  • 非对称密钥:非对称加密使用一对密钥——公钥私钥。公钥用于加密数据,而私钥用于解密数据。由于每个人都有一对唯一的公私钥,非对称加密更适合在需要身份验证的通信中使用,比如在 HTTPS、电子邮件等安全协议中。

2. 公钥(Public Key)和私钥(Private Key)

公钥和私钥是非对称加密算法中的一对密钥,每个密钥的用途不同:

  • 公钥:可以公开分享给任何人,用于加密数据验证签名。任何人都可以使用它来加密信息,但只能由拥有对应私钥的人解密。

  • 私钥:必须保持机密,用于解密数据生成签名。它在解密加密的数据或证明身份方面起着关键作用。私钥丢失或泄露会导致安全问题,因此通常需要妥善保护。

3. 证书(Certificate)

证书是加密和身份认证的凭证,用来验证公钥的真实性。它通过数字签名和公钥结合来确认某个主体的身份。

  • 组成部分:证书通常包含主体的名称、公钥、签发者的名称、有效期等。

  • 数字证书的用途:在 SSL/TLS、HTTPS 等场景中,证书保证了用户连接的网站的身份。证书由可信的第三方(证书颁发机构 CA)签发。CA 在生成证书前会验证申请方的身份,并用 CA 的私钥对证书进行签名,确保证书的真实性。

  • 工作流程:在 HTTPS 连接中,服务器向客户端提供证书,客户端使用证书中的公钥加密会话密钥,并将其传送给服务器,以此确保数据的安全传输。

4. 初始向量(IV)

初始向量(IV)是一个用于加密过程的随机值或固定值,常见于对称加密中的分组加密模式,比如 CBC(Cipher Block Chaining)模式。

  • 作用:IV 用于增加加密的不可预测性,避免相同的明文在不同加密过程中生成相同的密文。这通过为每个明文块增加一个随机元素,确保即使相同的明文在相同的密钥下加密多次,生成的密文也会不同。

  • 使用方法:在 CBC 模式中,IV 会和第一个明文块进行异或运算,生成第一个密文块。后续的明文块会依次与前一个密文块进行运算,形成依赖关系。

  • 安全性:IV 不需要保密,但需要在加密和解密时保持一致。IV 通常会和密文一起传递给接收方,以便于解密时恢复明文。

总结

  • 密钥:数据加密和解密的核心机密值。
  • 公钥和私钥:用于非对称加密的成对密钥,公钥公开,私钥保密。
  • 证书:用于验证公钥的真实性和主体身份的凭证,由 CA 签发。
  • 初始向量(IV):分组加密算法中的随机值,用于增加加密结果的随机性,确保相同明文不会生成相同密文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板

文章目录 一、日志框架介绍1、浅谈与slfj4、log4j、logback的关系2、性能方面3、Slf4j使用方法 二、log4j配置三、log4j2配置1、SpringBoot整合Log4j22、非SpringBoot项目引入的依赖3、log4j2-spring.xml文件(Spring项目)或log4j2.xml(非Spri…

StarUML建模工具安装学习与汉化最新零基础详细教程【一键式下载】(适用于Windows、MacOS系统、Linux系统)

StarUML破解安装下载教程 前言: StarUML破解与汉化安装下载教程,仅供学习研究和交流使用,禁止作为商业用途或其他非法用途! 仓库作者:X1a0He,经仓库作者授权使用。 目录 StarUML破解安装下载教程1. 下载…

【网络安全】2.3 安全的网络设计_2.防御深度原则

文章目录 一、网络架构二、网络设备三、网络策略四、处理网络安全事件五、实例学习:安全的网络设计结论 网络设计是网络安全的基础,一个好的网络设计可以有效的防止攻击者的入侵。在本篇文章中,我们将详细介绍如何设计一个安全的网络&#…

IoTDB 与 HBase 对比详解:架构、功能与性能

五大方向,洞悉 IoTDB 与 HBase 的详尽对比! 在物联网(IoT)领域,数据的采集、存储和分析是确保系统高效运行和决策准确的重要环节。随着物联网设备数量的增加和数据量的爆炸式增长,开发者和决策者们需要选择…

如何找到系统中bert-base-uncased默认安装位置

问题: 服务器中无法连接huggingface,故需要自己将模型文件上传 ubuntu 可以按照这个链接下载 Bert下载和使用(以bert-base-uncased为例) - 会自愈的哈士奇 - 博客园 里面提供了giehub里面的链接 GitHub - google-research/be…

Qt 学习第十六天:文件和事件

一、创建widget对象(文件) 二、设计ui界面 放一个label标签上去,设置成box就可以显示边框了 三、新建Mylabel类 四、提升ui界面的label标签为Mylabel 五、修改mylabel.h,mylabel.cpp #ifndef MYLABEL_H #define MYLABEL_H#incl…

华为ensp配置bgp(避坑版)

文章目录 前言一、BGP是什么?二、拓扑三、基础配置四、测试五、拓展总结 前言 BGP(Border Gateway Protocol,边界网关协议)是一种在互联网中使用的路径矢量协议。它主要用于在不同的自治系统(AS)之间交换路…

QT最新版6.8在线社区版安装教程

访问QT的官网: Qt | Tools for Each Stage of Software Development Lifecycle 点击 Download Try: 点击社区版最新在线安装: 往下翻网页, 点击下载: 开始安装: 使用--mirror进行启动安装程序&#xff1…

鸿蒙多线程开发——Worker多线程

1、概 述 1.1、基本介绍 Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本进行耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。 创建Worker的线…

海量数据迁移:Elasticsearch到OpenSearch的无缝迁移策略与实践

文章目录 一.迁移背景二.迁移分析三.方案制定3.1 使用工具迁移3.2 脚本迁移 四.方案建议 一.迁移背景 目前有两个es集群,版本为5.2.2和7.16.0,总数据量为700T。迁移过程需要不停服务迁移&#…

在配置环境变量之后使用Maven报错 : mvn : 无法将“mvn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

最近,我在 Windows 系统上安装和配置 Apache Maven 时遇到了一些问题,想在此记录下我的解决历程,希望对遇到类似问题的朋友有所帮助。 问题描述 我下载了 Maven 并按照常规步骤配置了相关的环境变量。然而,在 PowerShell 中输入…

大模型,智能家居的春秋战国之交

智能家居,大家都不陌生。尽管苹果、谷歌、亚马逊等AI科技巨头,以及传统家电厂商都在积极进入这一领域,但发展了十多年之后,智能家居依然长期呈现出一种技术上人工智障、市场上四分五裂的局面。 究其原因,是此前传统家电…

【设计模式】结构型模式(四):组合模式、享元模式

《设计模式之结构型模式》系列,共包含以下文章: 结构型模式(一):适配器模式、装饰器模式结构型模式(二):代理模式结构型模式(三):桥接模式、外观…

众测遇到的一些案列漏洞

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行…

算法求解(C#)-- 寻找包含目标字符串的最短子串算法

1. 引言 在字符串处理中,我们经常需要从一个较长的字符串中找到包含特定目标字符串的最短子串。这个问题在文本搜索、基因序列分析等领域有着广泛的应用。本文将介绍一种高效的算法来解决这个问题。 2. 问题描述 给定一个源字符串 source 和一个目标字符串 targe…

ThingsBoard规则链节点:RPC Call Reply节点详解

引言 1. RPC Call Reply 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备控制 3.2 状态查询 3.3 命令执行 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理…

动态规划(简单多状态 dp 问题 1.按摩师 2.打家劫舍 II 3. 删除并获得点数 4.粉刷房子 5.买卖股票的最佳时机(全系列))

面试题 17.16. 按摩师213. 打家劫舍 II740. 删除并获得点数LCR 091. 粉刷房子 (原:剑指 Offer II 091. 粉刷房子)309. 买卖股票的最佳时机含冷冻期714. 买卖股票的最佳时机含手续费123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV 1.…

【VBA实战】用Excel制作排序算法动画续

为什么会产生用excel来制作排序算法动画的念头,参见【VBA实战】用Excel制作排序算法动画一文。这篇文章贴出我所制作的所有排序算法动画效果和源码,供大家参考。 冒泡排序: 插入排序: 选择排序: 快速排序:…

关于Markdown的一点疑问,为什么很多人说markdown比word好用?

markdown和word压根不是一类工具,不存在谁比谁好,只是应用场景不一样。 你写博客、写readme肯定得markdown,但写合同、写简历肯定word更合适。 markdown和word类似邮箱和微信的关系,这两者都可以通信,但微信因为功能…

区块链技术在数字版权管理中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 引言 区块链技术概述 …