繁体   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