密码学基础-对称密码算法(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

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


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 电子密码本) 模式

文章图片2

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

文章图片3

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

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

分布式ID生成器-雪花算法

1. 雪花算法(Snowflake)Twitter的Snowflake算法是在分布式系统中一种自增ID的算法,ID能够按照时间有序生成并且可以做

把算法关进法律的笼子

随着算法应用的场景拓展,算法技术的触角伸入数字化生活的每个角落:电商购物、信息知识浏览、金融信贷、绩效管理、AI辅助量刑、生物识别及监控安保都有

17个机器学习的常用算法

根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习…的分类类别;如何选择一个最佳的值,这取决于数据。一般情况下,在分类时较大的值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使近邻算法的准确性减小。…点。来源:图灵人工智能仅用于学术分享,版权属于原作者。- -

为什么要学习少儿编程?这些理由你无法拒绝

快速上手,机器人可以连接很多传感器,让机器人实现很多功能,机器人搭建+编程的学习方式更生动,在学习编程的同时也可以激发孩子的创新能力。在幼儿园接触过简单机器人搭建、编程的小朋友,小学-年级再接触机器人编程,一点儿都不费劲!然而之前毫无基础,等小学-年级才开