【密码学原理与实践】(二)代换密码 符java代码实现

本文介绍了代换密码(Substitution Cipher)的概念,强调了其秘钥空间的巨大使得暴力攻击变得困难。通过示例展示了如何使用代换密码加密明文,并提供了具体的Java代码实现加密过程。
摘要由CSDN通过智能技术生成

代换密码(Substitution Cipher)

转载请著明出处

定义

令P=C=Z26,K是由26个数字0,1,…25的所有可能的置换组成,对任意的π∈K,定义eπ(x)=π(x)和dπ(y)=π-1(y),这里的π-1表示置换π的逆置换。

与上一节移位密码相比,移位密码的加密和解密都是代数运算,但是在代换密码的情形下,可简单将加密和解密过程直接看做是一个字母表上的置换。

因为代换密码比较简单,将不做过多的介绍,需要注意的是代换密码的秘钥空间大小是26!>4.0×1026是一个很大的数,因此采用暴力攻击方式即使在计算机上也是不可能的,但是并不是说代换密码不可被破解,使用其他的密码分析方法,代还密码还是可以被攻破。

举个栗子

试用代换密码加密下列明文:

we will meet at midnight,

其中π在Z26上的置换如下

x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
π(x) 23 13 24 0 7 15 14 6 25 16 22 1 19 18 5 11 17 2 21 12 20 4 10 9 3 8

先从如下字母表中获得每个字母对应的数字

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

可得到:

22 4 22 8 11 11 12 4 4 19 0 19 12 8 3 13 8 6 7 19

从置换中可得密文数为:

10 7 10 25 1 1 12 7 7 12 23 12 19 28 0 18 28 14 6 12

从字母表中检索可得密文为:

KHKZ BBTH HMXM TZAS ZOGM

代码实现

package com.slp.cryptography;


import java.util.Arrays;

/**
 * @ClassName SubstitutionCipher
 * @Description 代换密码
 * @Author sanglp
 * @Date 2020/11/30 11:24
 * @V
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值