GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: Ssk le 20 Novembre 2009, 17:30:23

Titre: [Code] Le rot [lol]
Posté par: Ssk le 20 Novembre 2009, 17:30:23
Salut tout le monde je vous donne aujourd' hui le code qui va revolutionner le Pawn ( arg j ai oublier la negation ^^ )

une fonctionne qui crypte en Rot un proceder tres simple

Seulement parmet de changer une lettre par la lettre qui est x fois plus que elle lol ( mal expliquer mais voila )

Par exemple

x notre lettre on fait

x vaut la lettre a
rot vaut 13
donc

x + rot = la lettre n ^^


allez on s en fou des explication

forward Crypter(Texte[],Rot);
public Crypter(Texte[],Rot)
{
new i = 0;
Rot %= 26; // yeah sim ^^
while(Texte[i] != '\0')
{
if(Texte[i] >= 'a' && Texte[i] <= 'z')
{
if(Texte[i] + Rot > 'z')
{
Texte[i] += (Rot - 26);
}
else if(Texte[i] + Rot < 'a')
{
Texte[i] += (Rot + 26);
}
else
{
Texte[i] += Rot;
}
}
else if(Texte[i] >= 'A' && Texte[i] <= 'Z')
{
if(Texte[i] + Rot > 'Z')
{
Texte[i] += (Rot - 26);
}
else if(Texte[i] + Rot < 'A')
{
Texte[i] += (Rot + 26);
}
else
{
Texte[i] += Rot;
}
}

i++;
}
}


Pour crypter par exemple sim en ROT 13 faites

new str[10] = "sim";
Crypter(str,13);

a la fin

vous aurez

fvz a la place de sim cool non ?

en plus c' est facilement decryptable ( donc inutile lol )

pour decrypter vous avez juste a mettez l inverse du rot que vous avez mis au depart ^^



PS:  SURTOUT NE JAMAIS METTRE UN ROT DE 0 OU DE 26 SINON (essayez pour voir ^^)


PS2: ceci n' est pas une vrai fonction coder pour crypter c etait juste un excercice que moi et sim avont fait en C lol puis j ai transpose le code en pawn ^^


Si vous voulez le code en C le voila

void Crypter(char Texte[],int Rot)
{
int i = 0;
Rot %= 26;
while(Texte[i] != '\0')
{
if(Texte[i] >= 'a' && Texte[i] <= 'z')
{
if(Texte[i] + Rot > 'z')
{
Texte[i] += (Rot - 26);
}
else if(Texte[i] + Rot < 'a')
{
Texte[i] += (Rot + 26);
}
else
{
Texte[i] += Rot;
}
}
else if(Texte[i] >= 'A' && Texte[i] <= 'Z')
{
if(Texte[i] + Rot > 'Z')
{
Texte[i] += (Rot - 26);
}
else if(Texte[i] + Rot < 'A')
{
Texte[i] += (Rot + 26);
}
else
{
Texte[i] += Rot;
}
}

i++;
}
}

mise en page pourrit je sais ^^


Merci a SIM ^^ qui ma dit de mettre Rot %= 26; xD

Titre: Re : [Code] Le rot [lol]
Posté par: Alex_Jhonny le 20 Novembre 2009, 18:37:39
beau boulot
Titre: Re : [Code] Le rot [lol]
Posté par: FuSion le 20 Novembre 2009, 18:51:10
GG

Cela peux servir au cryptage des mots de passe ? (( Si c'est pas sa, j'ai mal compris ))

++
FS'
Titre: Re : [Code] Le rot [lol]
Posté par: cristab le 20 Novembre 2009, 18:56:32
c'est un delire il me semble en gros rien capter  :lmfao
Titre: Re : [Code] Le rot [lol]
Posté par: S!m le 20 Novembre 2009, 19:11:56
Salut,

c'est une fonction qui sert à crypter un texte, peut importe lequel, comme vous pouvez le deviner, cette technique n'est pas la plus sécuritaire mais c rapide et simple

ps. on a tester et ca fonction très bien^^

++Sim++
Titre: Re : Re : [Code] Le rot [lol]
Posté par: R@f le 20 Novembre 2009, 19:16:19
GG

Cela peux servir au cryptage des mots de passe ? (( Si c'est pas sa, j'ai mal compris ))

++
FS'
Vu que ça peut être facilement décrypté, je le déconseille. Si tu veux bien protéger tes mots de passe (mais vraiment bien de chez bien X)), tu peux utiliser un hash haut niveau (512bits), utilise le plugin Whirlpool de Y_Less. Sinon y a le MD5 ou le SHA1 qui sont plus court =)

++
R@f
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 20 Novembre 2009, 19:19:58
Utilise pas pour le cryptage de Mdp lol

c' etait juste un délire mdr ^^
Titre: Re : Re : [Code] Le rot [lol]
Posté par: FuSion le 20 Novembre 2009, 19:21:29
Utilise pas pour le cryptage de Mdp lol

c' etait juste un délire mdr ^^

Comme si j'allais le faire

Rooh, et moi qui allait te faire confiance !

++
FS'
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 20 Novembre 2009, 19:44:58
Juste le titre fait comprendre que c' est une joke ^^

Le rot [lol] j' aurais pu mettre ROT mais rot c' est plus fun et le tag Lol ^^
Titre: Re : [Code] Le rot [lol]
Posté par: Syg le 25 Novembre 2009, 14:39:28
Voici la version abrégée du bout de script de sazuke :
Crypter2 (Texte[],Rot)
{
new i = 0;
Rot %= 26;
while(Texte[i] != '\0')
{
if(Texte[i] >= 'a' && Texte[i] <= 'z')
{
Texte[i] = (((Texte[i]+Rot)-'a')%26)+'a';
}
else if(Texte[i] >= 'A' && Texte[i] <= 'Z')
{
Texte[i] = (((Texte[i]+Rot)-'A')%26)+'A';
}
i++;
}
}

Sinon, voici les fonctions de cryptage/décryptage que j'ai écrite pour Lalu's Stunt (avec une clef de 2040 bits que je ne donne pas ici bien évidement) :
new Cle[255+1]="<ICI IL FAUT METTRE 255 CARACTERES CHOISIS AU HASARD PAR EXEMPLE fHçè_y'ébJsdf....>";

/************************************
* FONCTION DE CRYPTAGE D'UNE CHAINE *
************************************/
CrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >= ' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}

/**************************************
* FONCTION DE DECRYPTAGE D'UNE CHAINE *
**************************************/
DecrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >=' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+95-IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}
L'avantage de ces fonctions est qu'elles cryptent en donnant une chaîne de caractères qui ne contient que des caractères imprimables donc facilement stockable dans un fichier texte.
Elles fonctionnent un peu sur le même principe que la fonction de sazuke mais le décalage (rot) est donné par un des caractères de la clé et le rebouclage se fait les caractère imprimables (entre l'espace (32) et le caractère de code ASCII 127). D'ailleurs on remarquera que 127-32=95 ....
Ces fonctions ne doivent donc pas être utilisées pour crypter/décrypter des caractères accentués.

Sinon, le hashage (MD5) n'est pas réversible, il n'est pas possible de retrouver la chaîne originale avec un hash MD5. Il ne peut donc pas être utilisé si on a besoin de décrypter.

++
Syg
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 25 Novembre 2009, 15:01:02
OMG j' avoue le nombre de lignes a considerablement baisser lol
Titre: Re : Re : [Code] Le rot [lol]
Posté par: Syg le 26 Novembre 2009, 09:37:54
OMG j' avoue le nombre de lignes a considerablement baisser lol
Oui mais le code est devenu compliqué à comprendre (même si il fait exactement la même chose que le tien).
D'ailleurs, comme le modulo est fait dans le calcul du caractère crypté, on peut même supprimer la ligne
Rot %= 26;
++
Syg
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 26 Novembre 2009, 10:09:29
J' ai tester tes deux fonction de crypting decrypting seul celle du Crypting fonctionne ^^

Mais ca a l air bon ^^

Pour
Sasuke78200

voila le resultat ^^

gCgkWKNPD@@

Et Syg ^^

gsO
Titre: Re : [Code] Le rot [lol]
Posté par: Syg le 26 Novembre 2009, 12:15:28
Si tu passes la chaîne cryptée à la fonction de décryptage, tu retrouve la chaîne de départ.
Bien évidement, la clé de cryptage et de décryptage doit être la même.

D'ailleurs, je vois que ta clé est mauvaise car une même lettre ne devrait pas être codée de la même façon :
Sasuke78200
gCgkWKNPD@@


++
Syg
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 26 Novembre 2009, 12:55:22
gCg
=
sas

C' est pareil ici aussi ^^
Titre: Re : [Code] Le rot [lol]
Posté par: Syg le 26 Novembre 2009, 15:17:33
Non, ce n'est pas pareil, il y a un S et un s (majuscule, minuscule), ce n'est pas le même caractère.
Je suis peut-être vieux mais tu ne m'auras pas comme ça :)

++
Syg
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 26 Novembre 2009, 16:06:50
Ouaip ta raison ^^

j ai fait une erreur sur le forum au lieu de mettre

sasuke78200

j ai mis

Sasuke78200 ^^

Tu peut toujours essayez ca donnera ca ^^
Titre: Re : [Code] Le rot [lol]
Posté par: Syg le 26 Novembre 2009, 16:49:03
Par contre, il ne faut pas que la clef contienne de caractères accentués car ils ne sont pas gérés par mes fonctions (il faudrait les modifier pour qu'ils soient pris en compte).

Voici un script avec une clef qui fonctionne :
#include <a_samp>

new Cle[255+1]="jfierijIOjfrzpijJIPGJPRI02HFsodfhp4hofh8802novcbopuihbdfPOUHJBDSOGUIH24808HFHJE89FJE93JN5043Nsdfg56s5gs6g4wfb6qeg8wIhgpizrelnfpiGZRrets5654fgGDS6548sergRGRZH34sfh6sf2h4RSFHZRjfierijIOjfrzpijJIPGJPRI02HFsodfhp4hofh8802novcbopuihbdfPOUHJBDSOGUIH24808HFHJE8";

CrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >= ' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}

DecrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >=' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+95-IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}
main ()
{
new Texte[128] = "sasuke28700";
printf ("Chaine originale : <%s>", Texte);
CrypterChaine (Texte);
printf ("Chaine cryptee : <%s>", Texte);
DecrypterChaine (Texte);
printf ("Chaine decryptee : <%s>", Texte);
}

public OnGameModeInit ()
{
return 1;
}

Et voici le résultat de ce mode :
[16:43:18] Chaine originale : <sasuke78200>
[16:43:18] Chaine cryptee : <^H][^O"aazv>
[16:43:18] Chaine decryptee : <sasuke78200>

++
Syg
Titre: Re : [Code] Le rot [lol]
Posté par: Ssk le 26 Novembre 2009, 17:08:29
Ah mdr je n' utiliser pas le code de la bonne facon ^^

Quel gros noob je suis


#include <a_samp>
new Cle[255+1]="sasuke78200";

main()
{
}
public OnGameModeInit()
{
CrypterChaine (Cle);
printf("%s",Cle);
}
/************************************
* FONCTION DE CRYPTAGE D'UNE CHAINE *
************************************/
CrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >= ' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}

/**************************************
* FONCTION DE DECRYPTAGE D'UNE CHAINE *
**************************************/
DecrypterChaine (Chaine[])
{
new Index;
new IndexCar;
new IndexCle;
new Car;
while (Chaine[Index] >=' ')
{
IndexCar=Chaine[Index]-' ';
IndexCle=Cle[Index%256]-' ';
Car = (IndexCar+95-IndexCle)%95;
Chaine[Index] = Car+' ';
Index++;
}
}

Voila mon code ^^

et le resultat


gCgkWKNPD@@
Titre: Re : [Code] Le rot [lol]
Posté par: Syg le 26 Novembre 2009, 17:24:30
D'un autre côté, ça peut être drôle de crypté une chaîne avec la chaîne elle-même comme propre clef.
Le problème c'est pour le décryptage .... il faut connaître le clef.

++
Syg