密码学基础-对称密码算法(Symmetric-key Algorithm)

简介: 密码学基础-对称密码算法(Symmetric-key Algorithm)

对称密码算法(Symmetric-key Algorithm)


对称算法 是指加密秘钥和解密秘钥相同的密码算法,又称为 秘密秘钥算法 或 单密钥算法 。

该算法又分为 分组密码算法(Block cipher) 和 流密码算法(Stream cipher) 。

  • 分组密码算法
  • 又称块加密算法
  • 加密步骤一:将明文拆分为 N 个固定长度的明文块
  • 加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
  • 加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文
  • 流密码算法
  • 又称序列密码算法
  • 加密:每次只加密一位或一字节明文
  • 解密:每次只解密一位或一字节密文

常见的分组密码算法包括 AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等;


常见的流密码算法包括 RC4 等。

  • AES:目前安全强度较高、应用范围较广的对称加密算法
  • SM1:国密,采用硬件实现
  • SM4:国密,可使用软件实现
  • DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法

这里 我们以AES为例子,详细讲解一下里面的数学原理,让你们了解一下计算机中一个简单的加密算法背后到底做了一些什么东西。(AES是我们当时课本上需要手动计算的例子,当时计算一个简单的123加密 都可能需要花费十几分钟到半个小时,可见其数学复杂度)

   

上面是详细的流程图,简单梳理一下上面的流程

1.把明文按照128bit拆分成若干个明文块。

2.按照选择的填充方式来填充最后一个明文块。

3.每一个明文块利用AES加密器和密钥,加密成密文块。

4.拼接所有的密文块,成为最终的密文结果。

具体分成多少轮呢?

初始轮(Initial Round)  1次

普通轮(Rounds)          N次

最终轮(Final Round)   1次

而AES还有AES128,AES192,AES256三种key长度的区分,这里每种方式对应的加密轮数不一样,分别为AES128:10轮AES192:12轮AES256:14轮。

其中的加密方式 又有两种不同的区别,一种是ECB(Electronic Code Book 电子密码本) 模式

ECB 模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。但是这种早就被淘汰了,我们现在广泛使用的是另外一种,CBC(Cipher Block Chaining 加密块链) 模式。

这种模式的加密方式相对来说更加复杂和安全,在n轮加密中,每一次加密都需要使用前面一次加密的结果来进行下一次的加密,如果其中有一步计算错误,后面全部都将错误。

       这个就是我们应用于互联网的一个相对来说比较简单的加密方式,这里面详细的计算逻辑我这里就不再一一讲述,里面涉及到大量的数学与计算机知识(S盒,逆S盒,行位移,列混淆(列混淆子层是AES算法中最为复杂的部分))有想要了解的可以去读一些《密码学概论》这本书,这也是我们当时的教材,这里只是讲解流程。AES只是计算机加密方式中比较简单的一种,有感兴趣的同学可以去了解一下这些算法,你会了解到数学的无穷奥秘。

相关文章
|
11月前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
11月前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
12月前
|
存储 人工智能 算法
解锁分布式文件分享的 Java 一致性哈希算法密码
在数字化时代,文件分享成为信息传播与协同办公的关键环节。本文深入探讨基于Java的一致性哈希算法,该算法通过引入虚拟节点和环形哈希空间,解决了传统哈希算法在分布式存储中的“哈希雪崩”问题,确保文件分配稳定高效。文章还展示了Java实现代码,并展望了其在未来文件分享技术中的应用前景,如结合AI优化节点布局和区块链增强数据安全。
|
12月前
|
JavaScript 算法 安全
深度剖析:共享文件怎么设置密码和权限的 Node.js 进阶算法
在数字化时代,共享文件的安全性至关重要。本文聚焦Node.js环境,介绍如何通过JavaScript对象字面量构建数据结构管理文件安全信息,包括使用`bcryptjs`库加密密码和权限校验算法,确保高效且安全的文件共享。通过实例代码展示加密与权限验证过程,帮助各行业实现严格的信息资产管理与协作。
|
11月前
|
存储 算法 测试技术
【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
|
11月前
|
算法 安全 调度
【动态规划篇】穿越算法迷雾:约瑟夫环问题的奇幻密码
【动态规划篇】穿越算法迷雾:约瑟夫环问题的奇幻密码
|
11月前
|
存储 人工智能 算法
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
1178 1
|
机器学习/深度学习 算法 网络性能优化
【博士每天一篇文献-算法】A brain-inspired algorithm that mitigates catastrophic forgetting of
本文提出了一种受大脑启发的神经调节辅助信用分配(NACA)算法,该算法通过模拟大脑中的神经调节机制,有效减轻了人工神经网络(ANNs)和脉冲神经网络(SNNs)在学习过程中的灾难性遗忘问题,并具有较低的计算成本。
309 1
|
算法 安全 网络安全
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。