簡體   English   中英

使用 python 混淆文本文件 - 通過反轉單詞並在它們之間插入特定數量的隨機字符

[英]obfuscation of a text file using python - by reversing the words and inserting a specific number of random characters between them

初學者編碼問題我應該編寫一個反轉文件內容的代碼,然后根據用戶選擇的強度插入一些隨機字符。 然后它會創建一個包含阻塞文件的新文件。

例如,如果用戶選擇strength = 2,它將在文本文件中的每個字母之間插入2個隨機字符:貓坐---> sgyt6gilns t7faxdc e3dh1kT

現在我的程序在兩者之間插入了太多字符,我不知道為什么。 這就是它正在做的事情:

輸入:

Output 強度 = 1: TeAEADQoC

import string
import random

def getRandomChar():
    alpha = string.ascii_letters + string.digits
    return random.choice(alpha)

def randomString(EncrypStrength): 
    count = 0
    result = ''
    while count < len(EncrypStrength):
        result += getRandomChar()
        count += 1
    return result

def ReverseString(OrigFile):
    return OrigFile[::-1]    

def LineEncrypt(line, EncrypStrength):
    EncrypStrength = ReverseString(line)
    
    index = 0 
    newline = EncrypStrength[index]
    index += 1
    
    while index < len(EncrypStrength):
        newline += randomString(EncrypStrength)
        newline += EncrypStrength[index]
        index += 1
    
    return newline    

def main():
    
    OrigFile =input('Original File Name:')
    EncryptedFile = input("obfuscated File Name:")
    EncrypStrength = int(input('Enter the Encryption Strength:'))
    
    Orig = open(OrigFile, 'r')
    Encrypted = open(EncryptedFile, 'w') 

    line = Orig.readline()
    
    while line!= '':
        encryptLine = LineEncrypt(line, EncrypStrength)
        Encrypted.write(encryptLine +"\n")
        line = Orig.readline()
           
    Orig.close()
    Encrypted.close()


if __name__=="__main__":
    main()

在 Line Encrypt 方法中,您錯誤地使用了 Encrypt Strength,您正在使用反向行覆蓋要作為 EncryptStrength 放置的字符數。


def LineEncrypt(line, EncrypStrength):
    reversedString = ReverseString(line)
    
    index = 0 
    newline = reversedString[index]
    index += 1
    
    while index < len(reversedString):
        newline += randomString(EncrypStrength)
        newline += reversedString[index]
        index += 1

正如 Ritesh 提到的那樣,您正在混淆 EncrypStrength 並覆蓋它。 這是完整的更正代碼,我希望它能按您的預期工作。

import string
import random

def getRandomChar():
    alpha = string.ascii_letters + string.digits
    return random.choice(alpha)

def randomString(EncrypStrength): 
    count = 0
    result = ''
    while count < EncrypStrength:
        result += getRandomChar()
        count += 1
    return result

def ReverseString(OrigFile):
    return OrigFile[::-1]    

def LineEncrypt(line, EncrypStrength):
    RevStr = ReverseString(line)
    
    index = 0 
    newline = RevStr[index]
    index += 1
    
    while index < len(RevStr):
        newline += randomString(EncrypStrength)
        newline += RevStr[index]
        index += 1
    
    return newline    

def main():
    
    OrigFile =input('Original File Name:')
    EncryptedFile = input("obfuscated File Name:")
    EncrypStrength = int(input('Enter the Encryption Strength:'))
    
    Orig = open(OrigFile, 'r')
    Encrypted = open(EncryptedFile, 'w') 

    line = Orig.readline()
    
    while line!= '':
        encryptLine = LineEncrypt(line, EncrypStrength)
        Encrypted.write(encryptLine +"\n")
        line = Orig.readline()
           
    Orig.close()
    Encrypted.close()


if __name__=="__main__":
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM