php维吉利亚算法,CTF杂项之“维吉尼亚密码”

本文详细介绍了维吉尼亚密码的原理和加密过程,这是一种基于多表代换的非固定式对应加密方法。在维吉尼亚密码中,密钥字用于分组明文并进行加密,即使使用相同的密钥,不同的密钥字也会产生不同的密文。通过给出的加密示例,展示了如何使用特定的密钥字将明文转化为密文。
摘要由CSDN通过智能技术生成

Didi

在这次省赛上做到了一到维吉尼亚密码的题,以前没做过很懵,问了同学才知道

先上图:

9bee30de4e9bc7effd5414c1e67cbf11.png

baby 是秘钥

glbe{pnf_njedc_js_ufjs_kmvrocz!} 是密文

在线解密

附上原理吧

简述

维吉尼亚密码是在代换密码(即单表代换)基础上,衍生出来的多表代换密码。

与单表代换相同,维吉尼亚密码也采用明文字母与密钥字母(即26字母表)间建立一一对应关系。

但是不同的是,单表代换密码中一旦密钥字母确定,相同的明文就只能产生唯一的密文;

而维吉尼亚密码则是在单表的基础上,加入了密钥字,使用密钥字对明文进行分组加密,因此即使密钥(打乱的字母表)确定了,密钥字不同,也会产生不同的密文,即非固定式对应。

**

加解密

**

在之后的表述中:

以表示26字母顺序表

以表示输入的一串辅助加密的消息序列

现假定输入的密钥字为k1到km,总长为m个字母;明文为x1到xm;表字母以初始26字母顺序表为例,进行加解密说明

加密

维吉尼亚密码的加密定义如下:

085a9e314d32a3b3f71ecb57ffc01e46.png

即:

将明文分成若干个分组,每个分组为m个字母长度(即密钥字的长度);

再找出分组中的字母和密钥字的字母在代换表中的对应数字;

将其对应位两两相加得出的数字,再代入代换表中,查出对应的密文字母;

将所有明文分组都如此操作,即得到密文。

加密示例:

字母表为原始A-Z

因此00对应A,……,25对应Z;

输入密钥字为Computer

因此 m = 8,key =(02,14,12,15,20,19,04,17);

输入明文为Block cipher design principles。

将明文分为8个字母一组,再进行找序号求和取余的运算,得出序号对应的密文字母:

比如 B(序号为01),对应的密钥字为C(序号为02),相加为03,再模26得03(即D),因此明文的B对应的密文字母为 D 。

所有加密步骤图如下:

f45ada99fcdbd6c1dba741abba656e00.png

可得出密文为:Dzarevmgjsdylmxpddxhvmgnse

标签:代换,字母,密文,明文,CTF,密钥,维吉尼亚,杂项

来源: https://blog.csdn.net/weixin_45556441/article/details/111462240

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值