PHP Afficher Bits d'une chaine de caractère
Résolu/Fermé
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
-
20 nov. 2009 à 12:48
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 21 nov. 2009 à 14:41
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 21 nov. 2009 à 14:41
A voir également:
- PHP Afficher Bits d'une chaine de caractère
- Caractère ascii - Guide
- Winrar 64 bits windows 10 - Télécharger - Compression & Décompression
- Caractere speciaux - Guide
- 32 bits - Guide
- Caractère spéciaux - Guide
8 réponses
zoby44
Messages postés
818
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
7 avril 2010
199
20 nov. 2009 à 13:54
20 nov. 2009 à 13:54
Salut pour la première question :
Par contre, ca ne fonctionne que sur un seul caractère, pour toute une chaine, il va falloir passer par une boucle for.
Pour ton problème de cryptage, pourquoi ne pas réutiliser l'exemple de php.net ?
https://www.php.net/manual/fr/function.mcrypt-decrypt.php#usernotes
<?php $char = 'b'; $base1 = 16; // Base hexa $base2 = 2; // Base binaire // Conversion du caractere en hexa $hex_char = bin2hex($char); // Conversion hexa en binaire $bin_char = base_convert($hex_char, $base1, $base2); echo $char.' -> '.$bin_char; ?>
Par contre, ca ne fonctionne que sur un seul caractère, pour toute une chaine, il va falloir passer par une boucle for.
Pour ton problème de cryptage, pourquoi ne pas réutiliser l'exemple de php.net ?
https://www.php.net/manual/fr/function.mcrypt-decrypt.php#usernotes
<?php $text = "The quick brown fox jumps over the lazy dog."; $key = "haseveryletter"; $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB), MCRYPT_RAND); $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CFB, $iv); echo $encrypted; $good = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CFB, $iv); echo $good'; // The quick brown fox jumps over the lazy dog ?>
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
20 nov. 2009 à 13:56
20 nov. 2009 à 13:56
Ca ca marche apres test :
PS : J'obtiens :
<?php $chaine = 'TAta'; for ($temp = 0; $temp<strlen($chaine); $temp++) { $caractere = ord($chaine{$temp}); echo $chaine{$temp} . ' correspond a : ' . $caractere . ' et en binbin : '; for ($test = 128; $test >= 1; $test /= 2) echo (($caractere & $test) ? '1' : '0'); echo '<br />'; } ?>
PS : J'obtiens :
T correspond a : 84 et en binbin : 01010100 A correspond a : 65 et en binbin : 01000001 t correspond a : 116 et en binbin : 01110100 a correspond a : 97 et en binbin : 01100001
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
20 nov. 2009 à 13:33
20 nov. 2009 à 13:33
Bonjour,
Je ne sais pas si c'est utilisable en PHP mais cela marche en C, tu peux comparer ton caractère avec des masque binaire:
binaire / decimal
1 = 1
10 = 2
100 = 4
1000 = 8
10000 = 16
100000 = 32
1000000 = 64
10000000 = 128
Donc tu fais :
je test ca et je reviens ^^
Je ne sais pas si c'est utilisable en PHP mais cela marche en C, tu peux comparer ton caractère avec des masque binaire:
binaire / decimal
1 = 1
10 = 2
100 = 4
1000 = 8
10000 = 16
100000 = 32
1000000 = 64
10000000 = 128
Donc tu fais :
for ($test = 128, $test >= 1; $test = $test / 2) echo ($toncaractere & $test ? 1 : 0);
je test ca et je reviens ^^
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
20 nov. 2009 à 14:38
20 nov. 2009 à 14:38
Merci beaucoup !
Le problème de cryptage est résolu, je n'utilisé pas le même IV au cryptage qu'au décryptage et vu qu'en mode OFB l'iv peut être public j'ai fait une classe avec un iv définit pour chaque cipher...
je m'étais déjà basé sur l'exemple de php.net mais je n'avais pas capté ce détail...
pour ce qui est d'afficher les lettres en binaire c'est justement comme en C que je voulais faire,
récupérer même en base 10 la valeur de la lettre stocké dans la ram
le problème étant surtout de savoir quelle valeur analyse l'algorithme de cryptage (ou de chiffrement)
dans le but de faire un générateur de clef et de mot de passe.
Je crois que je suis parti dans une mauvaise direction et qu'il vaut mieux que je fasse 2 fonctions différentes pour les clefs et les mots de passe, et faire les clefs directement en binaire...
vous m'avez également appris un truc $chaine{$nbChar} je ne connaissais pas ! j'utilisais str_split et j'avais refais une fonction à la con pour les version de php 4...
Une dernière question et le post sera résolu :
si j'ai bien compris ord et bin2hex reviennent au même pour ce problème et la valeur ASCII est la valeur stocké dans la ram?
encore merci !
Le problème de cryptage est résolu, je n'utilisé pas le même IV au cryptage qu'au décryptage et vu qu'en mode OFB l'iv peut être public j'ai fait une classe avec un iv définit pour chaque cipher...
je m'étais déjà basé sur l'exemple de php.net mais je n'avais pas capté ce détail...
pour ce qui est d'afficher les lettres en binaire c'est justement comme en C que je voulais faire,
récupérer même en base 10 la valeur de la lettre stocké dans la ram
le problème étant surtout de savoir quelle valeur analyse l'algorithme de cryptage (ou de chiffrement)
dans le but de faire un générateur de clef et de mot de passe.
Je crois que je suis parti dans une mauvaise direction et qu'il vaut mieux que je fasse 2 fonctions différentes pour les clefs et les mots de passe, et faire les clefs directement en binaire...
vous m'avez également appris un truc $chaine{$nbChar} je ne connaissais pas ! j'utilisais str_split et j'avais refais une fonction à la con pour les version de php 4...
Une dernière question et le post sera résolu :
si j'ai bien compris ord et bin2hex reviennent au même pour ce problème et la valeur ASCII est la valeur stocké dans la ram?
encore merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
20 nov. 2009 à 14:41
20 nov. 2009 à 14:41
http://www.manuelphp.com/php/function.ord.php
ORD();
Retourn le code ASCII du caractère entré en parametre.
Pour ce qui est de bin2hex j'avoue ne pas connaitre.
Et ascii :
Heureux d'avoir pu t'aider ;)
ORD();
Retourn le code ASCII du caractère entré en parametre.
Pour ce qui est de bin2hex j'avoue ne pas connaitre.
Et ascii :
L'ASCII définit 128 caractères numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111.ASCII contient les caractères nécessaires pour écrire en anglais. Les caractères de numéro 0 à 31 et le 127 ne sont pas affichables ; ils correspondent à des commandes de contrôle de terminal informatique. Le caractère numéro 32 est l'espace. Les autres caractères sont les chiffres arabes, les lettres latines majuscules et minuscules et quelques symboles de ponctuation.
Heureux d'avoir pu t'aider ;)
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
20 nov. 2009 à 15:11
20 nov. 2009 à 15:11
Pour le bin2hex :
https://www.php.net/manual/fr/function.bin2hex.php
https://www.php.net/manual/fr/function.bin2hex.php
Description string bin2hex ( string $str ) Retourne la chaîne str dont tous les caractères sont représentés par leur équivalent hexadécimal. La chaîne retournée est une chaîne ASCII. La conversion supporte les caractères binaires, et utilise les bits de poids forts en premier.
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
20 nov. 2009 à 15:13
20 nov. 2009 à 15:13
je connais la table ascii mais en fait je crois que je m'égare, je cherche la complication là ou il n'y en a pas...
merci encore !
merci encore !
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
21 nov. 2009 à 14:41
21 nov. 2009 à 14:41
j'ai fais comme ça tout compte fais :
function generKey($nbOctet) { /* Génère une clef de cryptage aléatoire du nombre d'octet indiqué 1 --- $nbOctet -> Int : Nombre d'octet que doit contenir la clef */ $nbOctet *=8; $key = ''; for($i=0;$i<$nbOctet;$i++) $key .= mt_rand(0,1); $key = str_split($key,8); $keyt = ''; foreach($key as $oct) $keyt .= sprintf('%c',$oct); return $keyt; }