密码学原理精解【6】

文章目录

  • 置换密码
    • 密码体制
      • 加解密过程
      • 置换
        • 置换运算
          • 定义
          • 置换运算的例子
            • 集合与置换
            • 置换规则
            • 两行表示法
            • 轮换表示法
            • 置换运算的结果
            • 置换的性质
            • 注意事项
        • 分组
        • 加解密
    • 理论基础
      • 1. 准备工作
      • 2. 置换过程
      • 3. 置换密码的具体实现方式
      • 4. 安全性分析
      • 5. 置换密码的应用
      • 代换密码
        • 代换密码的工作原理
        • 代换密码的类型
        • 代换密码的应用
        • 结论
      • 代换与置换的区别
        • 加密原理
        • 实现方式
        • 安全性
        • 应用场景
        • 总结
      • 置换集合概述
        • 一、定义
        • 二、表示法
        • 三、特殊置换
        • 四、应用
        • 五、实例
        • 六、结论
  • 参考文献

置换密码

密码体制

加解密过程

  • 令m为一个正整数
    P = C = ( Z 26 ) m , K 是定义在集合 ( 1 , 2 , . . , m ) 上的置换组成。 P=C=(Z_{26})^m,K是定义在集合(1,2,..,m)上的置换组成。 P=C=(Z26)m,K是定义在集合(1,2,..,m)上的置换组成。
    对任意的密钥(即置换) π ,定义加密: 对任意的密钥(即置换)\pi,定义加密: 对任意的密钥(即置换)π,定义加密:
    e π ( x 1 , x 2 , . . . , x m ) = ( x π ( 1 ) , x π ( 2 ) , . . . , x π ( m ) ) e_{\pi}(x_1,x_2,...,x_m)=(x_{\pi(1)},x_{\pi(2)},...,x_{\pi(m)}) eπ(x1,x2,...,xm)=(xπ(1),xπ(2),...,xπ(m))
    定义解密: 定义解密: 定义解密:
    d π ( y 1 , y 2 , . . . , y m ) = ( y π − 1 ( 1 ) , y π − 1 ( 2 ) , . . . , y π − 1 ( m ) ) d_{\pi}(y_1,y_2,...,y_m)=(y_{\pi^{-1}(1)},y_{\pi^{-1}(2)},...,y_{\pi^{-1}(m)}) dπ(y1,y2,...,ym)=(yπ1(1),yπ1(2),...,yπ1(m))
  • 对于英文字母26个来说, Z 26 够用 但实际对于一个字节数据来说,需要将运算定义在群 Z 256 中。 Z_{26}够用 \\但实际对于一个字节数据来说,需要将运算定义在群Z_{256}中。 Z26够用但实际对于一个字节数据来说,需要将运算定义在群Z256中。

置换

实质是位置置换,不是内容置换,特别注意!!

置换运算
定义

1. P (明文)和 C (密文) 2. 置换运算 ( 1 ) A 是含有 n 个元素的集合 ( 2 ) S n = { π ∣ π 是 A 上的双射 } ( 3 )将 S n 中的元素称为 n 元置换。 ( 4 )现在令集合 A = { 1 , 2 , 3 , . . . , n } , P = C = A , 任意置换 π ∈ S n 表示如下: π = ( 1 2 . . . n π ( 1 ) π ( 2 ) . . . π ( n ) ) ( 5 ) S n 中有 n ! 个元素。 1.P(明文)和C(密文) \\2.置换运算 \\(1)A是含有n个元素的集合 \\(2)S_n=\{\pi|\pi是A上的双射\} \\(3)将S_n中的元素称为n元置换。 \\(4)现在令集合A=\{1,2,3,...,n\},P=C=A,任意置换\pi \in S_n表示如下: \\\pi=\begin{pmatrix} 1 & 2 & ... & n \\ \pi(1) & \pi(2) & ... & \pi(n) \end{pmatrix} \\(5)S_n中有n!个元素。 1.P(明文)和C(密文)2.置换运算1A是含有n个元素的集合2Sn={ππA上的双射}3)将Sn中的元素称为n元置换。4)现在令集合A={1,2,3,...,n}P=C=A,任意置换πSn表示如下:π=(1π(1)2π(2)......nπ(n))(5)Sn中有n!个元素。

置换运算的例子

本例子来自文心一言的自动生成内容
置换运算是一个将集合中的元素按照某种规则重新排列的过程。以下是一个置换运算的例子,以集合 {1, 2, 3} 为例:

集合与置换

考虑集合 S = { 1 , 2 , 3 } S = \{1, 2, 3\} S={1,2,3},我们想要对这个集合进行置换,即重新排列它的元素。

置换规则

假设我们有一个置换规则,它将集合 S S S 中的元素按照以下方式重新排列:

  • 元素 1 映射到元素 2
  • 元素 2 映射到元素 3
  • 元素 3 映射到元素 1

这个置换可以用多种方式表示,但最常见的是通过轮换(cycle)或两行表示法(two-line notation)来表示。

两行表示法

两行表示法将原始集合的元素写在上面一行,将置换后的元素写在下面一行,并对齐:

( 1 2 3 2 3 1 ) \begin{pmatrix} 1 & 2 & 3 \\ 2 & 3 & 1 \end{pmatrix} (122331)

这表示元素 1 变成了 2,元素 2 变成了 3,元素 3 变成了 1。

轮换表示法

这个置换也可以用一个轮换来表示,即 (1 2 3)。这个轮换表示元素 1 映射到 2,元素 2 映射到 3,元素 3 映射回 1,形成了一个循环。

置换运算的结果

根据这个置换规则,集合 S = { 1 , 2 , 3 } S = \{1, 2, 3\} S={1,2,3} 置换后的新集合是 S ′ = { 2 , 3 , 1 } S' = \{2, 3, 1\} S={2,3,1}

置换的性质
  • 可逆性:每个置换都是可逆的,即存在一个逆置换可以将集合元素恢复到原始状态。在这个例子中,逆置换也是 (1 2 3)(因为它是一个 3-轮换,且 3 是奇数,所以逆置换是它本身;但在更一般的情况下,逆置换可能是不同的轮换或置换的复合)。
  • 复合:两个置换可以复合成一个新的置换。例如,如果我们有另一个置换 (1 3)(将 1 映射到 3,3 映射到 1,2 保持不变),那么它与 (1 2 3) 的复合置换将是 (1 2 3) ∘ (1 3) = (2 3)(因为首先 1 变成 3,然后 3 变成 2,而 2 变成 3 后再变回 3,所以 2 保持不变,但这是一个简化的例子,实际上应该考虑所有元素的映射)。
注意事项
  • 置换的复合运算不满足交换律,即 σ ∘ τ \sigma \circ \tau στ 不一定等于 τ ∘ σ \tau \circ \sigma τσ(其中 σ \sigma σ τ \tau τ 是两个置换)。
  • 在有限集合上,所有可能的置换构成一个群,称为对称群。在这个例子中,集合 {1, 2, 3} 上的对称群 S 3 S_3 S3 包含 6 个元素:恒等置换、两个 2-轮换(即对换)和三个 3-轮换。
分组

设原文为"abcdefghij"
分组,因为m=5,所以5个字符为一组,以便下一步将每个组内部的位置进行重排,具体如下:
(1) abcde
(2) fghij

加解密
  • 加密
    设 m = 5 ,密钥为置换 π π = ( 1 2 3 4 5 2 4 1 5 3 ) 设m=5,密钥为置换\pi \\\pi=\begin{pmatrix} 1 & 2 & 3 &4 &5\\ 2 & 4 & 1 &5 &3 \end{pmatrix} m=5,密钥为置换ππ=(1224314553)
    abcde=> caebd
    fghij=>hfjgi
  • 解密 π − 1 = ( 1 2 3 4 5 3 1 5 2 4 ) \pi^{-1}=\begin{pmatrix} 1 & 2 & 3 &4 &5\\ 3 & 1 & 5 &2 &4 \end{pmatrix} π1=(1321354254)
    caebd=>abcde
    hfjgi=>fghij

理论基础

置换密码(Permutation Cipher),又称为换位密码(Transposition Cipher),其工作原理主要基于重新排列明文中的字符或字节的顺序来生成密文,而不改变这些字符或字节本身的内容。以下是置换密码工作的详细过程:

1. 准备工作

  • 选择密钥:密钥是置换密码中用于指导字符重新排列的关键信息。密钥可以是数字序列、字母序列或其他形式的标识符,具体形式取决于所使用的置换密码算法。
  • 确定分组:根据密钥或算法的要求,将明文分成若干组或块。这些组或块的大小可以是固定的,也可以是可变的,具体取决于算法的设计。

2. 置换过程

  • 字符排列:在每个组或块内,按照某种特定的置换规则(通常由密钥决定)重新排列字符的顺序。这些规则可能涉及列置换、行置换、矩阵置换等多种方式。
  • 生成密文:根据置换后的字符顺序,重新组合成密文。在密文中,字符的内容保持不变,但它们的顺序已经发生了改变。

3. 置换密码的具体实现方式

  • 列置换:将明文按列写入一个矩阵中,然后根据密钥指定的列顺序重新排列这些列,最后按行或按列读出以形成密文。
  • 行置换:与列置换类似,但将明文按行写入矩阵,并根据密钥指定的行顺序进行重排。
  • 矩阵置换:将明文中的字符按照某种规则(如密钥指定的顺序)填充到一个矩阵中,然后根据密钥提供的顺序重新组合矩阵中的字符,以形成密文。

4. 安全性分析

  • 单次置换的局限性:单次置换后的密文往往保留了原始明文的某些统计特性(如字符频率分布),这使得它相对容易被破解。因此,单次置换的安全性较低。
  • 多次置换的增强:为了提高安全性,可以对同一明文进行多次置换。每次置换都可以使用不同的算法或密钥,以进一步打乱字符的顺序并增加破解的难度。

5. 置换密码的应用

  • 置换密码在古典密码学中有着广泛的应用,如历史上的栅栏密码等。
  • 在现代密码学中,置换密码的概念仍然被用于某些加密算法中,但通常作为加密过程的一部分而非唯一手段。

综上所述,置换密码通过重新排列明文中的字符顺序来生成密文,其工作原理简单而有效。然而,为了确保加密的安全性,通常需要结合其他加密方法共同使用。

代换密码

代换密码(Substitution Cipher),又称为代替密码或替代密码,是密码学中的一种基本加密方法。它通过替换明文中的字符(如字母、数字或符号)来生成密文,从而保障信息的安全性。代换密码的加密过程通常涉及一个代换表(也称为密钥),该表定义了明文字符与密文字符之间的映射关系。

代换密码的工作原理
  1. 建立代换表:首先,根据密钥信息(可能是数字、字母序列或其他形式的标识符)建立一个代换表。这个表定义了如何将明文中的每个字符替换为密文中的对应字符。

  2. 加密过程:在加密过程中,将明文中的每个字符依次通过代换表进行查找和替换,生成密文。这个过程中,明文字符的内容发生了改变,但它们的顺序保持不变。

  3. 解密过程:解密是加密的逆过程。在解密时,使用相同的代换表(即密钥)将密文中的每个字符替换回明文中的对应字符,从而恢复出原始信息。

代换密码的类型

代换密码可以分为两大类:单表代换密码和多表代换密码。

  1. 单表代换密码

    • 单表代换密码是指对明文消息中出现的同一个字母,在加密时都使用同一固定的字母来代换,不管它出现在什么地方。
    • 常见的单表代换密码包括凯撒密码(Caesar Cipher),它将明文中每个字母都按照字母表顺序向后(或向前)移动若干个位置来生成密文。
    • 优点:实现简单,易于理解。
    • 缺点:安全性较低,容易受到频率分析等攻击。
  2. 多表代换密码

    • 多表代换密码是指明文消息中出现的同一个字母,在加密时不是完全被同一固定的字母代换,而是根据其出现的位置次序,用不同的字母代换。
    • 常见的多表代换密码包括维吉尼亚密码(Vigenère Cipher)和Playfair密码。维吉尼亚密码是一种典型的多表密码,它使用一个密钥字符串对明文进行加密,每个明文字符都与密钥字符串中对应位置的字符结合进行加密。Playfair密码则是一种基于两字母组的代替密码,它使用一个5阶方阵作为密钥,根据一定的规则对明文中的字母对进行加密。
    • 优点:能够更好地抵抗统计密码分析,提高加密的安全性。
    • 缺点:如果密钥长度较短或重复使用,仍然可能受到攻击。
代换密码的应用

代换密码在密码学历史上有着广泛的应用,从古典密码学时期的各种代换密码算法,到现代密码学中的某些加密算法(如某些对称加密算法中的S盒设计),都可以看到代换密码的影子。此外,代换密码也是密码学教学和研究中的一个重要内容,它有助于人们理解密码学的基本原理和加密方法。

结论

代换密码是一种基于字符替换的加密方法,它通过代换表将明文中的字符替换为密文中的对应字符来生成密文。代换密码可以分为单表代换密码和多表代换密码两大类,它们在安全性、实现复杂度和应用场景等方面各有特点。在实际应用中,可以根据需要选择合适的代换密码算法来保护信息的安全性。

代换与置换的区别

置换密码(Permutation Cipher)和代换密码(Substitution Cipher)是密码学中的两种基本加密方法,它们在加密原理、实现方式和安全性方面存在明显的区别。

加密原理
  • 置换密码:通过重新排列明文中的字符或字节的顺序来生成密文,而不改变这些字符或字节本身的内容。其核心在于改变字符的位置,而非内容。
  • 代换密码:通过替换明文中的字符(如字母、数字或符号)来生成密文。每个明文字符都被映射到密文中的另一个字符,而字符的顺序保持不变。
实现方式
  • 置换密码
    • 常见的实现方式包括列置换、行置换和矩阵置换等。
    • 明文被分成若干组或块,然后根据密钥或算法的要求重新排列这些组或块中的字符顺序。
  • 代换密码
    • 通过建立代换表(也称为密钥)来实现加密。
    • 明文中的每个字符都在代换表中查找对应的密文字符,并进行替换。
安全性
  • 置换密码
    • 单次置换可能保留了原始明文的某些统计特性(如字符频率分布),因此相对容易被识别和分析。
    • 通过多次置换或与其他加密方法结合使用,可以显著提高安全性。
  • 代换密码
    • 单表代换密码的安全性较低,容易受到频率分析等攻击。
    • 多表代换密码通过引入更多的变换规则,提高了安全性,但仍需注意密钥的管理和安全性。
应用场景
  • 置换密码:由于其实现简单且易于理解,常用于教学或演示目的。在需要较高安全性的场合,通常与其他加密方法结合使用。
  • 代换密码:在历史上有着广泛的应用,如凯撒密码等。在现代密码学中,代换密码的思想仍然被用于某些加密算法中(如对称加密算法中的S盒设计)。
总结

置换密码和代换密码在加密原理、实现方式和安全性方面存在明显的区别。置换密码通过重新排列字符顺序来加密,而代换密码则通过替换字符来加密。在实际应用中,可以根据需要选择合适的加密方法或结合使用多种加密方法来提高信息的安全性。

置换集合概述

下面内容来自文心一言的自动生成内容
置换集合是一个数学概念,尤其在集合论、抽象代数以及组合数学中有重要的应用。以下是对置换集合的详细解释:

一、定义
  1. 集合的置换:集合的置换是指从集合到其自身的双射(即一一映射),也就是说,集合中的每一个元素都唯一地映射到集合中的另一个元素,且没有元素被遗漏。
  2. 有限集合的置换:对于有限集合X,其置换的个数恰好是X中元素个数的阶乘(n!),其中n是集合X中元素的个数。
二、表示法
  1. 矩阵表示法:在有限集的情况下,可以利用矩阵符号将自然排序写在第一列,而将置换后的排序写在第二列来表示置换。
  2. 轮换分解:另一种表示方法是借由置换的相继作用描述,这被称为“轮换分解”。轮换是将集合中的一些元素循环移位,而保持其他元素不变。
三、特殊置换
  1. 对换:长度为二的轮换称为对换,即只交换两个元素的位置,而保持其他元素不变。
  2. 奇置换与偶置换:根据置换可以分解为偶数个还是对数个对换,置换被分为奇置换和偶置换。
四、应用
  1. 对称群:集合X的全体置换构成一个群,称为X上的对称群,记为S_X。当X={1,2,…,n}时,常用S_n来记S_X,并称之为n个字母上的对称群。
  2. 计算机科学:在计算机学科中,置换的概念被用于各种算法和数据结构中,特别是在处理排列、组合和排序问题时。
五、实例

考虑集合X={1,2,3},其置换有6个,分别是:

  • 123(恒等置换)
  • 132
  • 213
  • 231
  • 312
  • 321

这些置换可以看作是集合X中元素的一种重排方式。

六、结论

置换集合是数学中的一个基本概念,它描述了集合中元素位置互换的可能性。在有限集合的情况下,置换的个数是有限的,并且与集合中元素的个数密切相关。置换的概念在抽象代数、组合数学以及计算机科学等领域都有广泛的应用。

参考文献

1.文心一言
2.《密码学原理与实践(第三版)》
3.《抽象代数》

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

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

相关文章

Python中EMD的安装教程

第一步:首先安装两个包 pip install pyemd pip install EMD-signal第二步:然后,进行改名 安装完之后,找到包所在的位置,然后要将原来pyemd的文件夹名称改为PyEMD:

cleanshot Mac 上的截图工具

笔者闲来无事,最近在找一些mac上好用的工具其中一款就是cleanShot。为什么不用原有的mac自带的呢。因为相对来说编辑功能不算全面,不支持长截图。那有没有一款软件支持关于截图的好用工具呢。 所以笔者找了这款。安装包是直接安装就可使用的。请大家点赞…

Golang | Leetcode Golang题解之第237题删除链表中的节点

题目: 题解: func deleteNode(node *ListNode) {node.Val node.Next.Valnode.Next node.Next.Next }

Python中的UnboundLocalError是什么错误?如何解决?

如果代码报错UnboundLocalError, 大概率犯了以下错误: money 10000 # 当前存款def add_money(value):money valueif __name__ __main__:print(当前存款:, money)add_money(1000)print(当前存款:, money)其中,变量money表示当前存款;函数…

DialogFragment 开发手游sdk代替透明的activity

前言 各位同学大家好 有段时间没有给各位更新文章了,最近在写新的项目 之前的手游sdk 都是用透明的activity 效果有缺陷,现在我改成用这个dialogfragment 来实现 , 废话不多说我们正式开始 效果图 : 为什么要使用dialogfragment: 之前开发手游sdk的时候 我这边都是使用透…

【区块链 + 智慧政务】区块链 +ETC 下一代公路联网收费关键技术优化项目 | FISCO BCOS应用案例

2020 年,我国取消省界收费站项目完成后,随着收费模式与收费方式的变化,形成了以门架为计费单元的新收 费体系:按照车辆通行门架数,RSU 天线读取 ETC 卡、电子标签 OBU 或 CPC 卡内标识的车型信息,车型门架计…

ALlegro批量替换封装?

1,此种情况批量修改同名封装,即改前改后的封装名相同 2,首先将改好后的封装放于库路径下 3,place ----update symbols —package symbols ----选择修改的封装名 4,refresh 完成

开源PS2模拟器 PCSX2 2.0版发布 性能与功能全面升级

时隔多年之后,备受玩家喜爱的PS2模拟器PCSX2迎来了重大更新,2.0版本正式发布!此次更新包含了大量改进,几乎涵盖了模拟器各个方面,为玩家带来更流畅、更便捷的游戏体验。 下载地址: https://pcsx2.net/ 界…

Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器

章节内容 上节我们完成了: ZNode的基本介绍ZNode节点类型的介绍事务ID的介绍ZNode实机测试效果 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff…

C语言性能优化背后技术详解

引言 C语言因其高效和接近硬件的特性,在性能敏感的应用中得到了广泛的应用。然而,要写出高性能的C代码,需要对C语言的内部机制和计算机体系结构有深入的理解。本文将深入探讨C语言性能优化的背后技术,揭示其原理,并通…

品牌形象的智能塑造:Kompas.ai如何构建品牌视觉识别

品牌形象是企业在消费者心中构建的独特印象,它对于品牌识别和记忆度至关重要。一个一致且具有辨识度的品牌形象能够帮助企业在激烈的市场竞争中脱颖而出。Kompas.ai,作为一款智能设计工具,正帮助品牌塑造和维护其独特的视觉识别系统。 一致的…

JMeter进行HTTP接口测试的技术要点

参数化 用户定义的变量 用的时候 ${名字} 用户参数 在参数列表中传递 并且也是${} csv数据文件设置 false 不忽略首行 要首行 从第一行读取 true 忽略首行 从第二行开始 请求时的参数设置: 这里的名称是看其接口需要的请求参数的名称 这里的变量名称就是为csv里面…

【AI应用探讨】—生成对抗网络(GAN)应用场景

目录 1. 图像生成 2. 数据增强 3. 图像编辑与风格转换 4. 视频生成 5. 游戏设计 6. 其他领域 1. 图像生成 应用场景: 艺术创作:艺术家和设计师使用GAN生成的图像作为创作的灵感,创造出新颖、独特的艺术品。GAN可以生成具有特定风格的…

帮助中心如何提高用户粘性和活跃度?

帮助中心(Help Center)是在产品网站或者产品内部设立的一个功能模块,用于将产品使用上遇到的问题,或者关于产品的所有问题进行汇总,并通过Q&A(问题与解答)的形式展现给用户,帮助…

【linux】服务器重装系统之系统盘写入准备

【linux】服务器重装系统之系统盘写入准备 【创作不易,求点赞关注收藏】😀 文章目录 【linux】服务器重装系统之系统盘写入准备一、前期准备1、准备一个U盘,并进行格式化2、下载UltralSO工具3、下载对应的Ubuntu版本 二、写入操作教程 一、…

论文分享|AAAI2024‘北航|用大语言模型缩小有监督和无监督句子表示学习的差距

先说结论,大语言模型除了作为聊天的Agent,也可以为检索模型生成优质的文本对训练数据,从而做到无监督场景下也能够适用。这里分享一篇AAAI2024的工作,重点探讨如何生成比评估集更困难的训练数据来提升无监督句子表示学习质量&…

Zynq系列FPGA实现SDI编解码转SFP光口传输(光端机),基于GTX高速接口,提供6套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx-Kintex7上的应用 3、详细设计方案设计原理框图输入Sensor之-->OV5640摄像头输入Sensor之-->HDMIVDMA图像缓存RGB转BT1120GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBHDMI输…

Java二十三种设计模式-适配器模式(6/23)

适配器模式:使不兼容的接口协同工作的桥梁 引言 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间可以一起工作,通过将一个类的接口转换成客户端期望的另一个接口。 在计算机编程中&#x…

嵌入式 - ADC介绍

在电子工程学中,ADC 是模数转换器的缩写。ADC 是一种将模拟信号(在时间和振幅上是连续的)转换为数字信号(在时间和振幅上是离散的)的设备。通过这种转换,模拟信号可以被微控制器和计算机等数字系统处理。 以…

C语言 ——— 调试的时候如何查看当前程序的变量信息

目录 调试前/后的调试窗口 ​编辑 调试窗口 --- 监视 调试窗口 --- 内存 调试窗口 --- 调用堆栈 调试前/后的调试窗口 调试前的调试窗口: 调试前的调试窗口是没有显示的,只有在调试的时候才会有相对应的调试窗口 调试后的调试窗口&#xff1a…