托马斯.杰斐逊(Crypto--bugku)

2023-11-10 20:00

本文主要是介绍托马斯.杰斐逊(Crypto--bugku),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目如下:
在这里插入图片描述
这是一种加密方式,叫做轮转密码或者叫比尔密码,解密的方式就是先通过密钥调整字符串的行号,然后通过密文调整每一行字符串的顺序,例如,密文的第一个字母是H,
第一行字符串是

KPBELNACZDTRXMJQOYHGVSFUWI

则,将H 以前的所有字符放到该字符串的末尾

HGVSFUWIKPBELNACZDTRXMJQOY

知道了解决方法,下面开始写脚本,我是先人工将字符串行号排序,放到一个txt中,然后才用脚本解密,脚本如下:

fileone = open("t.txt","r+") #手工排序行号的字符串
filetwo = open("c.txt","w+") # 新的文件保存结果
attr = "HCBTSXWCRQGLES" # 密文
attrtwo = ""
num = 0
for line in fileone:print(len(line))for i in line:if i != attr[num]:attrtwo = attrtwo + ielse:#attrtwo = attrtwo + iattrone = line[len(attrtwo):26]+attrtwo + "\n"filetwo.write(attrone)breakattrtwo = ""num = num + 1
fileone.close()
filetwo.close()

运行脚本,生成c.txt文件,仔细观察每一列,在倒数第六列有发现:
在这里插入图片描述
对的,结果就是上述字符串,最后再贴上大佬写的一个脚本,不用人工排序:

#coding:utf-8
#秘钥
key="2,5,1,3,6,4,9,7,8,14,10,13,11,12"
#密文
cipher_text = "HCBTSXWCRQGLES"f = open("1.txt")
str_first_encry = []for line in f:line = line.strip()str_first_encry.append(line)key_index = key.split(",")
str_second_encry=[]
for k in key_index:str_second_encry.append(str_first_encry[int(k)-1])print(str_first_encry[int(k)-1])for i,ch in enumerate(cipher_text):line = str_second_encry[i]split_index = line.index(ch)temp=[]temp[0:len(line)-split_index+1] = line[split_index:len(line)]temp[len(temp):] = line[0:split_index]str_second_encry[i] = "".join(temp)
print("-------------------------------------")
for plain in str_second_encry:print(plain)

这篇关于托马斯.杰斐逊(Crypto--bugku)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384936

相关文章

BugKu练习记录:小山丘的秘密

题目: hill能有什么秘密呢 bugku{PLGTGBQHM}其中A=1,flag全为小写 hill解密,a=1,所以z=0,字母表为zabcdefghijklmnopqrstuvwxy,根据图片上的棋子数得到对应的字母,分别是abczadefz,用工具解出明文为whatahill,答案为bugku{whatahill}

[羊城杯 2024] Crypto

文章目录 TH_Curvebaby_CurveRSA_lossTheoremPlus TH_Curve 题目描述: from Crypto.Util.number import *from secret import flagdef add_THcurve(P, Q):if P == (0, 0):return Qif Q == (0, 0):return Px1, y1

[DASCTF2024八月开学季!] Crypto

文章目录 EZsquaresEZmatrixEZsignin EZsquares 题目描述: from Crypto.Util.number import *from gmpy2 import *from secret import flagp=getPrime(512)q=getPrime(512)n0=p**2+q**2print('n0 =',n0)e=655

golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方法

golang中 RSA解密前端(jsencrypt)发来的密文后出现  "crypto/rsa: decryption error"  , 这个问题首先需要确认你的私匙和公匙是否匹配, 如果匹配 那检查入参数据类型, 前端发送来的rsa加密后的数据一般都是经过base64编码后的, 在后端进行RSA解码时需要对前端发送的数据进行base64解码! crypto/rsa: decryption

NSSCTF练习记录:[鹤城杯 2021]A_CRYPTO

题目: 4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点:ntlm编码 打开文件,显示内容就是ntlm格式 ntlm解密 在线网站: https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点:夏多密码 在线加密原理网站: 加密解密原理:https://blog.csdn.net/destiny1507/article

polarctf靶场【四方密码题】【CRYPTO】不一样的四四方方、四个正方形

[CRYPTO]不一样的四四方方 考点:四方密码 在线网站: https://www.metools.info/code/four-square244.html 或者https://wtool.com.cn/four.html 请开始你的表演(密文):jilinjingcha注意:正确的密钥后面最后一个字母不要!!!key1:informationkey2:engineering

Crypto++:私钥和公钥保存到文件

在Crypto++库中,生成的RSA私钥和公钥可以通过将它们序列化到文件来保存。这通常涉及到使用FileSink来将密钥的数据写入到文件中。以下是一个示例函数,展示了如何将RSA私钥和公钥保存到文件中: #include <cryptopp/rsa.h>#include <cryptopp/osrng.h>#include <cryptopp/files.h>#include <fstre

基于Crypto++/Cryptopp的rsa密钥生成,rsa加密、解密,rsa签名、验签12

在项目中需要增加一个注册的功能,想到了用rsa非对称加密的方法。对比了openssl等第三方库,最后采用了Cryptopp。 1.源文件整理 可以在http://www.cryptopp.com/获取库的源文件,解压后将文件重新归档。头文件放置到include文件夹,cpp放到src目录。同时去除所有的test相关的cpp及非cpp、h文件。拷本cryptopp目录到工程目录下 2.加入工程 在

Crypto++库在VS 2008中的使用——RSA加解密

源代码:下载    一.   下载Crypto++ Library   Crypto++ Library的官方网:http://www.cryptopp.com/   二.   建立自己使用的Crypto++ Library   由于从官方网下载的Crypto++库是开源的,只有源文件和几个可以生成lib、dll的工程,以及一个使用的例子工程,因此希望生成自己建的