加密解密及算法详解

article/2025/10/11 3:23:57

1、简介

  今天我要给大家分享的是互联网通信中用到的各种加密解密算法,在我们介绍加解密知识前,首先我们了解一下密码学、密码、加密、数字签名、密钥交换等相关术语的含义。

1.1 密码学

  密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。

1.2 密码

  密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。

加密:加密是一种以密码方式发送信息的方法。只有拥有正确密钥的人才能解开这个信息的密码。对于其他人来说,这个信息看起来就像是一系列随机的字母、数字和符号。如果你要发送不应该让其他人看的敏感信息时,加密是特别重要的。

数字签名:数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。

密钥交换:双方使用密钥交换算法确定对称密钥,然后用这个密钥进行加密和解密。这个密钥交换协议/算法只能用于密钥的交换, 而不能进行消息的加密和解密。

1.3 算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。(百度百科)
 
算法在数学(算学)和计算机科学之中,为任何良定义的具体计算步骤的一个序列[1],常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长[2]列表的有效方法。算法应包含清晰定义的指令[3]用于计算函数[4]。算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入(可能为空)开始,[5]经过一系列有限[6]而清晰定义的状态最终产生输出[7]并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。(维基百科)
 

2、加密算法

2.1 加密算法的特点

对称加密:加密和解密使用同一个密码
公钥加密: [也可称为非对称加密]
1)每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)
2)公钥加密算法很少用来加密数据,速度太慢 比对称加密算法加密数据的速度慢上3个数量级,1000倍左右
单向加密即散列加密:提取数据特征码,常用于数据完整性校验
1)雪崩效应,输入的微小改变,将会引起结果的巨大改变。不可逆,无法根据特征码还原原来的数据
2) 定长输出,无论原始数据是多大,结果大小都是相同的。输入一样,输出必然相同
MAC:消息摘要码,单向加密的延伸应用

  • 应用:用于实现在网络通信中保证所传输的数据完整性
  • 机制:
  • CBC-MAC
  • HMAC:使用md5和sha1算法

2.2 加密解密技术常用的功能及算法

对称加密

  • 算法:DES, 3DES, AES, Blowfish, Twofish, RC6, CAST5
  • 工具:gpg, openssl enc
  • 加密算法 + 口令
  • 密钥交换
  • 用户身份认证
  • 数据完整性
    加密解密及算法详解

非对称加密

  • 算法:RSA, EIGamal, DSA
  • 工具:openssl rsautl
  • 密钥交换
  • 身份认证
  • 数据加密
    加密解密及算法详解

单向加密

  • 算法:MD5, SHA1, SHA512, CRC-32
  • 工具:sha1sum, md5sum, cksum, openssl dgst
  • 完整性

密钥交换(IKE: Internet Key Exchange):

  • 算法: DH,公钥加密 [并没有在互联网传输,比较安全]
  • Diffie-Hellman
    密钥交换的两种机制:
    1、公钥加密实现:发送方用接收方的公钥加密自己的密钥,接收方用自己的私钥解密得到发送方的密钥,逆过来亦然,从而实现密钥交换。
    2、使用DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数X和Y。发送方将g的X次方mod P产生的数值发送给接收方,接受方将g的Y次方mod P产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。
     
    DH算法的数学原理
    加密解密及算法详解

2.3公钥加密的功用

公钥加密、私钥解密;反之亦然,私钥加密、公钥解密

  • 公钥:pkey
  • 私钥:skey
  • 算法:RSA, EIGamal
  • 工具:gpg, openssl rsautl

数字签名:电子签名私钥用来加密,公钥用来解密

  • 算法: RSA, EIGamal, DSA [DSA只能用来签名,无法用来加密]

数字证书:

*       证书格式:x509、pkcs【x509、pkcs12】
*       x509格式:
*               公钥和有效期限;
*               证书的合法拥有者;(主机名)
*               证书的使用方式;
*               CA的信息;
*               CA的数字签名;(CA签名的校验码)
*       谁给CA发证:自签署证书
    X.509:定义了证书的结构以及认证协议标准版本号序列号签名算法ID发行者名称有效期限主体名称主体公钥发行者惟一标识主体的惟一标识扩展发行者签名

 

3、PKI

PKI: Public Key Infrastructure 公钥基础设施
CA: Certificate Authority CA证书权威机构
自建CA并完成对服务器发证:

3.1 自建CA(CA端)

    生成一对儿密钥生成自签证书

命令:
#(umask 077; openssl genrsa -out private/cakey.pem 2048) 【生成CA私钥】
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem 【生成自签证书】(.pem)

3.2 证书申请(客户端)

    生成一对儿密钥生成证书申请(.csr)将申请发送给CA

命令:
#(umask 077; openssl genrsa -out httpd.key 2048) 生成密钥
#openssl req -new -key httpd.key -out httpd.csr 生成证书申请 证书签署请求(.csr)

3.3 发证(CA端)

    签署证书传送给客户端

命令:
#openssl ca -in httpd.csr -out httpd.crt -days 365 签署证书(.crt)

3.4 PKI的实现

PKI: TLS/SSL: x509
第一种实现:互联网著名的安全机制TLS/SSL使用的是x509证书
PKI: OpenGPG
第二种实现:这是PKI的另外一种实现,它们实现证书的管理的机制不同,CA的信认关系传递机制略有不同。在Linux 上OpenGPG也是一种证书管理机制,或者PKI的实现架构。

SSL: Secure Socket Layer是由Netscape公司开发的一套Internet数据安全协议,当前版本为3.0。

  • NetScape 网景
  • Secure Socket Layer
  • SSLv2, SSLv3

TLS: Transport Layer Security 是国际标准化组织开发的一个通用性协议,当前版本为1.2。

  • TLSv1
  • http --> https
  • ldap --> ldaps
  • ftp --> ftps
  • smtp --> smtps
  • pop3 --> pop3s
  • imap --> imaps
    OpenSSL是SSL的开源实现
  • libcrpto: 通用加密库
  • libssl: TLS/SSL的实现
  • 基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库
  • openssl: 多用途命令行工具,可以实现单向加密、对称加密、非对称加密、实现私有证书颁发机构

3.5 SSL通信原理:

加密解密及算法详解
SSL的握手过程为:

  • (1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器。

  • (2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。

  • (3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。

  • (4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。

  • (5) SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服务器。

  • (6) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。

  • (7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

  • (8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。

  • (9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
     
  • 注意:在双方通信中,客户端和服务器端支持的加密解密算法未必一样。双方要协商各自所使用算法,且是双方支持的、可靠的算法,如:对称加密双方都支持的算法、非对称加密双方都支持的算法、单向加密双方都支持的算法。这个过程任何第三方都能看到,不能解密就得不到里面的数据,这个过程涉及到了认证、加密通信、密钥交换、双方使用这个对称密钥加解密数据而这个密钥是一次性的。
     

    3.6 互联网应用安全通信必须要满足以下特性

    1、私密性
    2、身份认证
    3、完整性
    加密解密及算法详解

openssl补充材料:

  • openssl中有如下后缀名的文件
  • .key格式:私有的密钥
  • .crt格式:证书文件,certificate的缩写
  • .csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
  • .crl格式:证书吊销列表,Certificate Revocation List的缩写
  • .pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

  • 常用证书协议
  • x509v3: IETF的证书标准
  • x.500:目录的标准
  • SCEP: 简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
  • PKCS#7: 是封装数据的标准,可以放置证书和一些请求信息
  • PKCS#10: 用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
  • PKCS#12: 用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,
  • CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx
     

4、总结

4.1密码算法总结

一、单向散列算法: 属于摘要算法,不是一种加密算法,作用是把任意长的输入消息串变化成固定长的输出串的一种函数

  • BASE64(严格地说,属于编码格式,而非加密算法)
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)
  • CRC(Cyclical Redundancy Check,循环冗余码校验)

二、对称加密算法: 加密密钥与解密密钥相同

  • DES(Data Encryption Standard,数据加密标准算法)
  • AES(Advanced Encryption Standard,高级加密标准)
  • PBE(Password-based encryption,基于密码验证)
  • RC5(参数可变的分组密码算法 )
  • BLOWFISH(对称密钥分组加密算法)

三、非对称加密算法 :加密密钥与解密密钥不相同

  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
  • DH(Diffie-Hellman算法,密钥一致协议)
  • Elgamal(既能用于数据加密也能用于数字签名)
  • DSA(Digital Signature Algorithm,数字签名)
  • ECC(Elliptic Curves Cryptography,椭圆曲线算法)
  • Merkle-Hellman(背包算法)
  • Miller Rabin算法(素数测试算法)
      学习完加密及各种算法后日常最多用到的场景就是加密、验签、密钥交换。非对称加密算法比对称加密算法的速度慢3个数量级,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。非对称加密算法通常做签名。对称加密算法的钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
      在业务使用中,我们通常采用的方式是:非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样就集成了两种加密算法的优点,既有了加密速度快的优点,又有了安全方便管理密钥的优点。RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
    加密解密及算法详解
    【实现算法难度★;设计算法难度★★★】大多公司没有能力设计加密算法,就算实现一款加密算法也是有难度的,一般调用标准加密库即可。
     
     

补充:算法分类可以根据算法设计原理、算法的具体应用和其他一些特性进行分类。程序开发中用到的算法和我们所提到的加密算法是不同的。

4.2算法分类

  • 基本算法
    枚举
    搜索
    深度优先搜索
    广度优先搜索
    启发式搜索
    遗传算法
  • 数据结构的算法
  • 数论与代数算法
  • 计算几何的算法
    凸包算法
  • 图论的算法
    哈夫曼编码
    树的遍历
    最短路径算法
    最小生成树算法
    最小树形图
    网络流算法
    匹配算法
    分团问题
  • 动态规划
  • 其他
    数值分析
    加密算法
    排序算法
    检索算法
    随机化算法

    加密解密及算法详解

转载于:https://blog.51cto.com/redone/2109375


http://chatgpt.dhexx.cn/article/B3xrEOnf.shtml

相关文章

常见的加密解密算法

文章目录 一、概述二、区别 一、概述 加密分为单向加密和双向加密: 单向加密 又称为不可逆加密,即生成密文无法反解的一种加密方式;eg:MD5和SHA系列、HMAC。 双向加密 又称为可逆加密,即生成密文后,在需要的时候可以反…

RSA 加密解密算法实现(简单,易懂)!!!

目录 一、什么是RSA算法 1.对称加密 2.非对称加密 3.非对称加密的应用 二、RSA算法的基础操作步骤 1.生成公钥和私钥 2.用公钥加密信息 3.用私钥解密信息 三、AC代码 六、RSA算法的测试 七、共勉 一、什么是RSA算法 在计算机中常用的加密算法分为两类:对称…

13种加密与解密算法【一】

这15种加密解密算法分别是:散列哈希[MD5、SHA1、CRC32],对称[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA],Base64、Rabbit、Escape。【三种分…

【2021最新版】Linux面试题总结(48道题含答案解析)

文章目录 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?3、怎么清屏?怎么退出当前命令…

linux操作系统期末考试题库

别光看点个赞呗 文档完整下载链接: w​​​​​​​w​​​​​​​https://download.csdn.net/download/weixin_59241300/87299684 1. cal命令 2.cat命令 3.cd命令 4.date命令 5.echo命令 6.grep命令 7.head 命令 8.ls 命令 9.touch 命令 10.more命令 …

Linux上机考试试题

Linux基础机考测试题 1、如果忘记登录密码,如何破解超级用户root的密码,并将密码改为redhat。(操作过程抓图体现) 开机在出现grub画面,按e键 用上下键选中第二项(类似于kernel /boot/vmlinuz-2.4.18-14 ro rootLABEL…

linux考试题库

(Linux)是一个自由、免费、开放的系统软件,支持多种硬件平台,多用户、多任务特点。 Linux操作系统是(Linus Torvalds)第一个开发的。 下列中(单用户)不是Linux的特点。 Linux一般…

Linux期末考试题库(超全)

文章目录 Linux期末考试题库选择题填空题简答题操作题 Linux期末考试题库 选择题 在创建Linux分区时,一定要创建( D )两个分区 A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区 在Red Hat Linux 9 中,系统默…

虚拟机镜像文件高速下载方法之一

虚拟机镜像文件高速下载方法之一(外加镜像文件合集打包) 1.打开网址网易开源镜像站 2.打开对应文件夹(比如下载kali镜像文件) (1)点击 kali-images/ (2)点击自己需要的版本(此处我…

添加虚拟机镜像centso 8的步骤

此篇文章仅介绍添加虚拟机镜像的步骤,特别说明这里以centso 8为例 如有需要安装VMware虚拟机,可以通过以下链接跳转至对应文章 VMware虚拟机安装配置及虚拟机网络模式说明https://blog.csdn.net/weixin_55883492/article/details/123790174?spm1001.2…

vmware 虚拟机恢复ghost镜像文件

一、下载winPE.iso、软碟通 链接:https://pan.baidu.com/s/1Ty2td8_9-3Dr7Qc5XHhyNw 提取码:wtuk 二、恢复: 1、配置基础Vmware系统模板,如何配置可百度搜索 注意:内存必须为2G以上,否则无法使用PE 2、CD/DVD — …

macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像

macOS Monterey 12.3(内部版本号 21E230),这是一个重大更新,引入了通用控制,这项功能可以支持一个键盘或者鼠标同时控制多台 Mac 电脑或者 iPad。另外根据用户反馈,此次更新也对 AMD 6000 系显卡进行了优化…

虚拟机的镜像安装

虚拟机镜像的安装 (1)下载好虚拟机iso镜像安装包 (2)命令virt-manager 打开虚拟机管理器 点击左上角创建新虚拟机按钮 (3)选择"Local install media"这个选项 --> Forward (4)点击Browse…按钮 (5)Browse Local–>找到rhel-server-7.3-x86_64-dvd.iso 镜像…

KVM详解(五)——KVM虚拟机镜像格式

今天继续给大家介绍Linux运维相关知识,本文主要内容是KVM虚拟机镜像格式。 一、虚拟机常用镜像格式介绍 目前,虚拟机的主流镜像格式有raw、cow、qcow、qcow2以及vmdk,下面,我就详细介绍一下这些主流的虚拟机镜像格式。 &#x…

虚拟机下载-下载windows镜像

虚拟机—官方镜像下载—windows镜像 访问微软官网: win10: https://www.microsoft.com/zh-cn/software-download/windows10 win7: https://www.microsoft.com/zh-cn/software-download/windows11 点击立即下载工具进行下载[windows] 下载 以后-双击—安装程序 点击 [下一步] 协…

如何下载虚拟机和下载kali虚拟机镜像

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 官网下载(Player版本免费)kali虚拟机镜像下载 官网下载(Player版本免费) VMware Workstation Player是免费版本 1.进入官网 2.选择大版本 3.下载 kali虚拟机镜…

Virtualbox加载虚拟机镜像

启动虚拟机 打开这个文件夹 双击蓝色图标 会自动开启virtualbox虚拟机,并加载当前镜像 必须保证当前镜像文件所在全部路径都没有中文 建议启动Virtualbox时使用单击右键->管理员方式运行 配置镜像参数 选中镜像,点击设置 修改usb设置 修改网络设置 桥接的网卡必须是具…

使用虚拟机镜像文件导入部署openGauss

实验项目名称 实验1 使用虚拟机镜像文件导入部署openGauss 一、实验目的: 将现有的VirtualboxcentosopenGauss镜像文件导入虚拟机,并启动使用openGauss数据库。本实验中使用的镜像文件名为:centos_openGauss.ova。 二、实验内容及过程、结…

制作虚拟机镜像文件

1. Linux(Ubuntu14.04)虚拟机镜像的制作过程 (1)准备ISO文件 准备Ubuntu14.04版本操作系统的ISO文件,文件名为ubuntu-14.04-server-amd64.iso(已提供)。 (2) 将ISO文件上传至宿主机 将Ubuntu14.04的ISO文件通过Xftp上…

几个自用的虚拟机镜像文件,兼容VMware vbox等虚拟机 ova格式直接导入

下载地址: 链接: https://pan.baidu.com/s/1-S-gBDFfiZSc4pLyDygfKw 提取码: havg详细说明 导出几个自己常用的虚拟机镜像 - 小类随手记1、win7 64 俄罗斯精简版没有优化,直接上传2、win10 64 20h2 企业 官网版正常安装,然后关闭休眠powercfg…