PHP Afficher Bits d'une chaine de caractère
Résolu
Atropa
Messages postés
1940
Date d'inscription
Statut
Membre
Dernière intervention
-
Atropa Messages postés 1940 Date d'inscription Statut Membre Dernière intervention -
Atropa Messages postés 1940 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais avoir la valeur numérique d'une lettre dans le but d'afficher une chaine de caractère en binaire.
pour être clair je voudrais afficher
a
65
1000001
après je ne sais pas si "a" vaut 65...
comment faire ?
j'ai également une autre question,
comment utiliser le mode CBF de mcrypt?
il n'y a pas d'erreur php quand je le fait mais je retombe sur une chaine crypté
voilà ce que j'utilise :
merci d'avance !
je voudrais avoir la valeur numérique d'une lettre dans le but d'afficher une chaine de caractère en binaire.
pour être clair je voudrais afficher
a
65
1000001
après je ne sais pas si "a" vaut 65...
comment faire ?
j'ai également une autre question,
comment utiliser le mode CBF de mcrypt?
il n'y a pas d'erreur php quand je le fait mais je retombe sur une chaine crypté
voilà ce que j'utilise :
$string = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$string,MCRYPT_MODE_CFB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_CFB),MCRYPT_RAND)); $string = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key,$string,MCRYPT_MODE_CFB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_CFB),MCRYPT_RAND));
merci d'avance !
A voir également:
- PHP Afficher Bits d'une chaine de caractère
- Winrar 64 bits - Télécharger - Compression & Décompression
- Caractère ascii - Guide
- 32 bits - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
8 réponses
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 ?>
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
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 ^^
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
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 ;)
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.
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 !
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; }