2017-05-06 1 views
0

Ich bin ziemlich neu in Python-Programmierung, aber ich versuche, meine eigenen einfachen Verschlüsselungsprogramm für ein Schulprojekt zu machen. Endlich habe ich nach vielen Recherchen angefangen, hauptsächlich über die Syntax verschiedener Python-Befehle. Wie auch immer, ein Teil meines Codes beinhaltet die Übersetzung von zwei Textzeilen (Schlüssel und msg) in Hexadezimal, um meinen einfachen Verschlüsselungsalgorithmus auszuführen. Obwohl alles richtig scheint, bekomme ich manchmal Ausgaben mit einem Großbuchstaben L am Ende der hexadezimalen Zeichenkette. (Beispiel unten mit Code) Jeder Rat wäre hilfreich!Probleme mit Text zu Hexadezimal-Programm in Python

Angenommen msg = "Hallo Welt" und key = „/ abc zum Beispiel.

# define functions 

def function_hex(string, length): 
    variable = "0x00" 
    for i in xrange(0, length): 
    n = ord(string[i]) 
    variable = hex(256 * int(variable, 16) + n)  #line 24 
    return variable 

# transform input/key to hex 

msg_hex = function_hex(msg, msg_length)    #line 29 
print msg_hex 

key_hex = function_hex(key, key_length) 
print key_hex 

Ausgang

message: hello world 
key: /abc 
encrypt or decrypt: encrypt 
Traceback (most recent call last): 
    File "python", line 29, in <module> 
    File "python", line 24, in function_hex 
ValueError: invalid literal for int() with base 16: '0x68656c6c6f20776f72L' 

Antwort

0

Sam, Kann ich vorschlagen, eine bessere Methode?

# define functions 
msg = "hello world" 
key = "/abc" 

def function_hex(s): 
    return "0x" + "".join("{:02x}".format(ord(c)) for c in s) 

# transform input/key to hex 

msg_hex = function_hex(msg) 
print msg_hex 

key_hex = function_hex(key) 
print key_hex