2013-07-14 5 views
0

Je déménage à partir de fichiers MYSQL et je veux utiliser md5 au lieu de chiffrementDécryptage inconnu Hash cryptage

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; 
} 

Mais je dois déchiffrer. Je ne sais pas comment faire une fonction de décryptage. Quelqu'un peut-il m'aider?

+0

De quel langage de programmation s'agit-il? – Joni

+0

@Joni PAWN (pseudo-langage de C) – user1546616

+0

Vous rendez-vous compte que MD5 est ** NON ** réversible? C'est à dire. Une fois que vous avez exécuté quelque chose via MD5, vous ne pouvez pas récupérer la valeur d'origine du hachage. –

Répondre

0

Il semble que le "cryptage" ajoute à chaque caractère un nombre dérivé de sa position. Le chiffrement peut être annulé en soustrayant par le même nombre.

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

Ne fonctionne pas bien parce que j'ai un texte: baqsbaqs <- Encrypted et décrypté et en me donnant un: baqsbaĄsj5 – user1546616

+0

Ne fonctionne pas bien parce que j'ai un texte: baqsbaqs <- chiffré et décrypté et en me donnant un: baqsbaĄsj5 – user1546616

+0

obtenez-vous en cryptant 'baqsbaqs'? – Joni

1

Ma compréhension de PAWN est qu'il utilise des chaînes à terminaison nulle. Si tel est le cas, alors ce cryptage n'est pas un processus réversible en général. Considérons une chaîne où le treizième caractère (chaîne [12]) est 'L'. Le décalage qui sera ajouté à cela est (3^12) * (12 % 15), soit 180. En ASCII, le caractère 'L' a une valeur de 76, qui, lorsqu'il est ajouté à 180 est 256. Après l'emballage pour tenir dans la gamme de caractères 0-255 qui devient un zéro, terminant potentiellement votre chaîne cryptée quelque part au milieu.

Si vous stockez la longueur de la chaîne d'origine séparément ou s'il s'agit toujours d'une longueur fixe, alors ce n'est peut-être pas un problème. Mais si vous comptez sur un terminateur null pour déterminer la longueur de la chaîne, cela ne fonctionnera pas.