python字符串保持原有顺序_如何按顺序更改python中的字符串?

我试图编写一个针对DES的暴力攻击程序,其关键是一个8个字符的字符串,仅由十进制数字组成,例如(12345678)。在

所以我需要一些帮助来编写一个程序,在这个程序中我可以将测试密钥设置为(00000000),并开始以递增方式循环(00000001),(00000002),直到(999999999)为止,当然每次都要尝试这个键。在

我已经完成了DES程序,现在我的大脑被这个部分卡住了。在

更新:非常感谢Hyperboreus,感谢您使用密钥生成器函数,但是当我在程序中使用它时,我收到了错误消息UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 1: invalid start byte

对于任何大于(00000002)的键

这是我的密码from Crypto.Cipher import DES

import os

import base64

print ("key size is fixed at 16 Bytes including parities (56 bits effective)")

size = 16

key = '00000002'

cipher = DES.new(key)

BS = 8

def getMode():

while True:

mode = input('Do you wish to Encrypt "e", Decrypt "d" or Brute force "b" a message?\n')

if mode in 'e d b'.split():

return mode

else:

print('Enter either "e" for encrypt,"d" for decrypt, or "b" for brute force.\n')

def encrypt(text):

length = len(plaintext)

pad = lambda s: s + (BS - len(s) % BS) * ('~')

paddedtext = pad(plaintext)

encrypted = DES.new(key, DES.MODE_ECB)

ciphertext = base64.b64encode(encrypted.encrypt(paddedtext)).decode("utf-8")

return ciphertext

def decrypt(text):

decrypted = DES.new(key, DES.MODE_ECB)

paddedtext = decrypted.decrypt(base64.b64decode(cipher)).decode("utf-8")

l = paddedtext.count ('~')

return paddedtext[:len(paddedtext)-l]

def brute(text):

text2 = input("enter a part of the plain text: ")

def testkeys ():

for i in range (100000000):

yield '{:08d}'.format (i)

for testkey in testkeys ():

testkey = format (testkey)

decrypted = DES.new(testkey, DES.MODE_ECB)

paddedtext = decrypted.decrypt(base64.b64decode(cipher)).decode("utf-8")

if paddedtext.find(text2) != -1:

print ("the key is ",testkey)

l = paddedtext.count ('~')

return paddedtext[:len(paddedtext)-l]

break

mode = getMode()

print ("key is:", key)

if mode[0] == 'e':

plaintext = input("Enter the plaintext: ")

encrypted = encrypt(plaintext)

print ("encrypted:\n", encrypted)

elif mode [0] == 'd':

cipher = input("Enter the ciphertext: ")

decrypted = decrypt(cipher)

print ("decrypted:\n", decrypted)

else:

cipher = input("Enter the ciphertext: ")

brute = brute(cipher)

print ("decrypted:\n", brute)

一旦我解决了这个问题,下一步就是把字母表(大写和小写)合并到键中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值