2017-12-10 1 views
0

.config 파일에서 암호화 된 암호를 읽는 동안 암호 런타임을 해독하려고합니다. 구성 파일에서 pw가 나오지만 인수를 전달하여 직접 메소드를 호출 할 때 암호 해독이 작동하지 않습니다. 내가 통과 해독 이제Python : 구성에서 값을 가져올 때 암호 해독이 발생하지 않습니다.

def abc(self, user, pw, somoMoreInfo) 
    decr= AES.new(b'AbcDefPqrXyzSvcs', AES.MODE_CFB, b'AbcDefPqrXyzSvcs') 
    x= decr.decrypt(pw) 

에 대한

from Crypto.Cipher import AES 
def main(): 
    obj = AES.new(b'AbcDefPqrXyzSvcs', AES.MODE_CFB, b'AbcDefPqrXyzSvcs') 
    ciphertext = obj.encrypt(b'[email protected]') 
    print ciphertex 

if __name__ == "__main__":main() 

와 코드를 아래와 같이 암호화 코드 PW 아래에 보이는 설정 파일을 통해 방법 "ABC"를 작동하지 않습니다. (코드에서이다 FYI를 지나기 전에 사전으로 변환했다.)

[EndSystem] 

user=user 

pw=\xaf\xc6m\t\x84\xbd\xbe 

그러나 직접 아래의 메소드를 호출 할 때 작동 중이다.

abc("user", "\xaf\xc6m\t\x84\xbd\xbe", "xyz") 

사전에서 pw가 발생할 때 어떤 문제가 발생합니까?

+0

설정 파일에서 값을 얻는 방법을 표시하지 않았습니다. 그게 문제가 시작되는 곳입니다 ... – zwer

+0

config에서''\ xaf \ xc6m \ t \ x84 \ xbd \ xbe ''를 읽을 때 문제가 있다고 가정합니다. 원시 문자열을 의미합니다 주어진 파이썬 문자열''\\ xaf \\ xc6m \\ t \\ x84 \\ xbd \\ xbe '와 같습니다. – Sebastian

+1

이러한 이스케이프 시퀀스를 바이트로 변환해야합니다. 그러나 암호를 이스케이프 시퀀스가 ​​아닌 16 진수로 저장하면 수명이 더 간단 해집니다. –

답변

1

우리는 문제가, 내가, 당신은 config 파일에서 암호화 된 암호를 얻기 위해 사용하는 코드를 게시하도록 요청했다 무엇을 알고하지만 당신은이 일을 보는 것이 일을하지에 집요있어 이후 :

# under the assumption that your config is in a dict called `config` 

abc(config["pw"].decode("string_escape")) 
# Python 3.x: abc(bytes(config["pw"], "ascii").decode("unicode_escape")) 
+0

이 작업은 Python 3에서 좀 더 까다 롭습니다. 텍스트 문자열에는 디코드 메서드가 없으므로 "unicode_escape"를 사용할 수 없습니다. 따라서 바이너리 모드에서 설정 파일을 읽거나, 여러 단계에서 변환을해야합니다. 예를 들어'pw'가'r '\ xaf \ xc6m \ t \ x84 \ xbd \ xbe''를 포함한다면 'pw_bytes = pw.encode ('latin1') .deode ('unicode-escape'). encode ('latin1')'AES 키 함수가 요구하는'bytes' 객체를 얻습니다. 1 단계는'.encode ('ascii')' –

관련 문제