我想将消息加密为字符串(文本)格式,但我不知道可以将Hex转换为String的函数:
这是我的页面:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
// on commence par définir la fonction Cryptage que l'on utilisera ensuite
function Cryptage($TEXT, $Clef) {
$LClef = strlen($Clef);
$LTEXT = strlen($TEXT);
if ($LClef < $LTEXT) {
$Clef = str_pad($Clef, $LTEXT, $Clef, STR_PAD_RIGHT);
} elseif ($LClef > $LTEXT) {
$diff = $LClef - $LTEXT;
$_Clef = substr($Clef, 0, -$diff);
}
return bin2hex($TEXT ^ $Clef);
}
/* On vérifie l’existence de $_POST['TEXT'] et de $_POST['Clef'].
Ça revient au même que isset($_POST['TEXT']) AND isset($_POST['Clef']) */
if (isset($_POST['TEXT'], $_POST['Clef'])) {
$resultat = Cryptage($_POST['TEXT'], $_POST['Clef']);
}
// on a fini les traitement en PHP, on passe à l'affichage :
if (isset($resultat)) {
echo "Chaîne cryptée/décryptée : " . $resultat;
}
?>
<!-- on affiche le formulaire pour que l'utilisateur puisse directement refaire un cryptage/décryptage -->
<form method="post">
<input type="text" name="TEXT" style="width:500px" value="Cliquez ici pour ajouter un texte." onFocus="javascript:this.value=''" />
<input type="text" name="Clef" style="width:500px" value="Cliquez ici pour ajouter un masque." onFocus="javascript:this.value=''" />
<input type="submit" value="Crypter/Décrypter" />
</form>
</body>
</html>
我测试了这个函数,但它没有返回任何东西(它返回一个空字符串)
function hextostr($hex)
{
$str='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
{
$str .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $str;
}
你有任何想法,谢谢
答案 0 :(得分:4)
function hex2str($hex) {
for($i=0;$i<strlen($hex);$i+=2)
$str .= chr(hexdec(substr($hex,$i,2)));
return $str;
}
会做的伎俩
答案 1 :(得分:2)
尝试此功能
function hex2str($func_string) {
$func_retVal = '';
$func_length = strlen($func_string);
for($func_index = 0; $func_index < $func_length; ++$func_index) $func_retVal .= chr(hexdec($func_string{$func_index} . $func_string{++$func_index}));
return $func_retVal;
}
我个人经常使用这个,所以它应该有用。
答案 2 :(得分:1)
你可以尝试
hex2bin()
这会将您的十六进制转换为字符串格式。