Xor

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Xor

Message par SPH »

Plantage de SPH en beauté
Dernière modification par SPH le ven. 07/sept./2012 17:10, modifié 2 fois.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Xor

Message par Ar-S »

Simplement parce que Asc("z") = 122

donc to soft au z de azerty fait

Code : Tout sélectionner

Debug Str(122 ! 122)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Xor

Message par Golfy »

Code : Tout sélectionner

message$="azerty"

Procedure.s Xorize(message$,b)
For u=1 To Len(message$)
  c=Asc(Mid(message$,u,1))
  c=c ! b
  b$+Chr(c)
  Debug Str(c)
Next
ProcedureReturn "["+b$+"]"
EndProcedure
Debug xorize(message$,65)
Debug xorize(message$,122)
Je ne vois pas où tu trouve un problème, hormis que dans le deuxième cas, il n'y a que des caractères non-imprimables (ASC < 32), dont un NULL.
32
59
36
51
53
56
[ ;$358]
27
0
31
8
14
3
[]
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Je me suis sans doute mal exprimé, fatigué que je suis d'avoir codé depuis 4h du mat.

ce code donne un espace (plus precisement un chr(0) :

Code : Tout sélectionner

message$="a"
b$=""

For u=1 To Len(message$)
  c=Asc(Mid(message$,u,1))
  b=65 ; on xorise le a
  c=c ! b
  b$+Chr(c)
Next
                
Debug b$
Tandis que ce code ne donne pas le chr(0) attendu apres le premier caractere :

Code : Tout sélectionner

message$="az"
b$=""

For u=1 To Len(message$)
  c=Asc(Mid(message$,u,1))
  b=122 ; on xorise le z
  c=c ! b
  b$+Chr(c)
Next
                
Debug b$

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Xor

Message par Ar-S »

Tu demandes un Chr(32) pas un chr(0)
je ne vois pas ou tu vois un chr(0) ?

Code : Tout sélectionner

c=Asc("a")
Debug "c = " +Str(c)
  
b=65 
c = c ! b
b$ = Chr(c)
Debug "(c ! b) = "+ Str(c)               
Debug "chr("+Str(c)+") donne : b$ = "+ Chr(c)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Ar-S a écrit :Tu demandes un Chr(32) pas un chr(0)
je ne vois pas ou tu vois un chr(0) ?

Code : Tout sélectionner

c=Asc("a")
Debug "c = " +Str(c)
  
b=65 
c = c ! b
b$ = Chr(c)
Debug "(c ! b) = "+ Str(c)               
Debug "chr("+Str(c)+") donne : b$ = "+ Chr(c)
un chr(0) car 65!65 = 0

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Xor

Message par Golfy »

Eh bien écrit ton message en majuscule !
Z = 90
z = 122

voilà la différence :)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Xor

Message par Ar-S »

SPH a écrit :
Ar-S a écrit :Tu demandes un Chr(32) pas un chr(0)
je ne vois pas ou tu vois un chr(0) ?

Code : Tout sélectionner

c=Asc("a")
Debug "c = " +Str(c)
  
b=65 
c = c ! b
b$ = Chr(c)
Debug "(c ! b) = "+ Str(c)               
Debug "chr("+Str(c)+") donne : b$ = "+ Chr(c)
un chr(0) car 65!65 = 0
Tu as essaye le code ?
c fait 95 pas 65
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Ar-S a écrit :
SPH a écrit :
Ar-S a écrit :Tu demandes un Chr(32) pas un chr(0)
je ne vois pas ou tu vois un chr(0) ?

Code : Tout sélectionner

c=Asc("a")
Debug "c = " +Str(c)
  
b=65 
c = c ! b
b$ = Chr(c)
Debug "(c ! b) = "+ Str(c)               
Debug "chr("+Str(c)+") donne : b$ = "+ Chr(c)
un chr(0) car 65!65 = 0
Tu as essaye le code ?
c fait 95 pas 65

Code : Tout sélectionner

Debug 65!65
0

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Xor

Message par Ar-S »

Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

..........
Dernière modification par SPH le ven. 07/sept./2012 17:11, modifié 1 fois.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Xor

Message par Golfy »

Golfy a écrit :Eh bien écrit ton message en majuscule !
Z = 90
z = 122

voilà la différence :)
Je ne dois pas écrire assez gros (pour une fois que j'arrive à trouver le problème)...
message$="az"
Les lettres du message sont en minuscules : pour xoriser le 'a' minuscule, la valeur ASCII est 97 (et non 65)
donc
Debug 65!65 = 0 MAIS Debug 97|65 = 32 (un espace en ASCII)


SPH, as-tu compris ? dans l'IDE de PureBasic, faire [Alt+A] pour avoir la table ASCII... 8)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Golfy a écrit :
Golfy a écrit :Eh bien écrit ton message en majuscule !
Z = 90
z = 122

voilà la différence :)
Je ne dois pas écrire assez gros (pour une fois que j'arrive à trouver le problème)...
message$="az"
Les lettres du message sont en minuscules : pour xoriser le 'a' minuscule, la valeur ASCII est 97 (et non 65)
donc
Debug 65!65 = 0 MAIS Debug 97|65 = 32 (un espace en ASCII)


SPH, as-tu compris ?
Oui mais je n'ai pas le choix. Le probleme, je le rencontre tot ou tard. Car j'xorise autant les minuscules que les majuscules...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Xor

Message par Golfy »

Bon, déjà une chose est sure : Purebasic ne buggue pas !
Par contre ta fonction doit être modifiée en fonction de ton besoin : si tu dois écrire le message en ASCII, tu dois éviter les résultats XOR plus petit que 32...

Voici un exemple de code (qui ne correspond probablement pas à ton besoin) pour te donner des idées.
Tu peux aussi ajouter des tests dans la procédure, mettre les LCASE ou UCASE dans celle-ci de manière conditionnelle (si b < 91 ALORS UCASE(message$) else LCASE(message$))

Si tu veux un code plus juste, il faut nous expliquer ce que tu attends exactement :)

Code : Tout sélectionner

message$="azerty"

Procedure.s Xorize(message$,b)
For u=1 To Len(message$)
  c=Asc(Mid(message$,u,1))
  c=c ! b
  b$+Chr(c)
  Debug Str(c)
Next
ProcedureReturn "["+b$+"]"
EndProcedure

; xorization des minuscules (a=97 à z=122)
For t=97 To 122
	Debug xorize(LCase(message$),t)
Next t

; xorization des majuscules (A=65 à Z=90)
For t=65 To 90
	Debug xorize(UCase(message$),t)
Next t
PS : regardes dans le message http://www.purebasic.fr/french/viewtopi ... 60#p146760 : la trace du debug caractère par caractère montre que ton xor "az" avec 65 renvoie le caractère 32 (ESPACE) et non CHR(0)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Merci golfy. Il n'y a probablement pas de bug dans PB mais n'empeche, le chr(0) apparait dans un cas sur 2 (voir mon premier post) :|

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre