2013-07-14 2 views
0

내가 파일에서 MYSQL로 이동하고있어 내가 암호화암호 해독 알 수없는 해시 암호화

public Encrypt(string[]) 
{ 
for(new x=0; x < strlen(string); x++) 
    { 
    string[x] += (3^x) * (x % 15); 
    if(string[x] > (0xff)) 
    { 
    string[x] -= 256; 
    } 
    } 
return 1; 
} 

대신 MD5를 사용하고자하지만 암호를 해독 할 필요가있다. 나는 암호 해독 기능을 만드는 방법을 모른다. 아무도 나를 도울 수 있습니까?

+0

어떤 프로그래밍 언어입니까? – Joni

+0

@ Joni PAWN (C의 의사 언어) – user1546616

+0

MD5가 ** 되돌릴 수 없음을 알고 있습니까? 나는. MD5를 통해 무언가를 실행하면 해시에서 원래 값을 복구 할 수 없습니다. –

답변

0

"암호화"가 각 문자에 위치에서 파생 된 숫자를 추가하는 것처럼 보입니다. 암호화는 동일한 수만큼 빼서 취소 할 수 있습니다.

public Decrypt(string[]) 
{ 
for(new x=0; x < strlen(string); x++) 
    { 
    string[x] -= (3^x) * (x % 15); 
    if(string[x] < (0x00)) 
    { 
    string[x] += 256; 
    } 
    } 
return 1; 
} 
+0

텍스트가 있기 때문에 잘 작동하지 않습니다 : baqsbaqs <- 암호화 및 해독 및 제공 : baqsbaĄsj5 – user1546616

+0

텍스트가 있기 때문에 제대로 작동하지 않습니다 : baqsbaqs <- 암호화 및 암호 해독 및 제공 : baqsbaĄsj5 – user1546616

+0

무엇 'baqsbaqs '를 암호화 할 때 얻는가? – Joni

1

내 이해 PAWN은 null로 끝나는 문자열을 사용합니다. 그렇다면이 암호화는 일반적으로 되돌릴 수있는 프로세스가 아닙니다.

13 번째 문자 (문자열 [12])가 'L'인 문자열을 생각해보십시오. 그것에 추가 될 오프셋은 (3^12) * (12 % 15), 즉 180입니다. ASCII에서 'L'문자는 76의 값을 가지며, 180에 추가하면 256이됩니다. 0-255 문자 범위에 맞게 줄 바꿈을 한 후 중간에 암호화 된 문자열을 잠재적으로 종료합니다.

원래 문자열의 길이를 별도로 저장하거나 항상 고정 길이 인 경우 문제가되지 않을 수도 있습니다. 그러나 문자열의 길이를 결정하기 위해 널 종결 자 (null terminator)를 사용한다면 작동하지 않을 것입니다.