2014-02-25 1 views
0

파이썬 스크립트를 수정하고 있습니다. 문자열을 디코딩하는 함수가 있지만 decrypt에 전달 된 데이터가 8의 배수가 아니라는 오류가 발생합니다. 필요한 바이트를 추가하려고했으나 삭제하는 방법을 모르는 후에 객체를 반환하기 전에. 또 다른 스크립트 에 의해 cripted있어 날짜가있는 내가하지 소스를 가지고 있기 때문에개체에서 바이트 제거 (python decrypt blowfish ECB)

def plain(value, key): 

    length = 8 - (len(value) % 8) 
    value += chr(length)*length 
    obj= Crypto.Cipher.Blowfish.new(
     key, Crypto.Cipher.Blowfish.MODE_ECB).decrypt(
      value.decode('string_escape')) 
    return obj 

내가 해독의 모드를 변경할 수 없습니다 :

는 기능입니다.

내가 decript 전에 추가 한 여분의 바이트없이 올바른 obj를 어떻게 반환 할 수 있습니까?

덕분에 당신은 암호 해독 시간에 패딩을 추가하지 않아야 많은 :

답변

0

, 평문 블록 길이의 배수를 만들기 위해 암호화시에 추가됩니다.

암호문 value이 블록 길이의 배수가 아니면 동일한 알고리즘이나 매개 변수로 암호화되지 않았거나 생각한 내용이 포함되어 있지 않습니다.

decrypt 메서드가 바이트 문자열을 허용하는 동안 16 진수 문자열 또는 base64 인코딩 된 문자열이 될 것입니다.

+0

이것은 암호화 된 데이터입니다 : '\ xa3 \ x8a \ x8e \ xff \ xb7'] \ x9dP \ xf2; [' – Vitto