2016-05-02 13 views
-1

私は文字列を暗号化し、暗号化された結果をバイナリ形式(例:10101111101)の形で返すのに助けが必要です。バイナリ結果を解読するためにも助けが必要です。私を案内してください。phpでの文字列の暗号化と復号

私はこのコードを使用しました。 文字列の暗号化/復号化は完全に機能します。問題は、暗号化された結果に「特殊文字、演算子など」が含まれていることです。 私はこれを望ましくありません。私は暗号化された結果はこれを解決する唯一の

function encryptIt($q) { 
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
$qEncoded  = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), $q, MCRYPT_MODE_CBC, md5(md5($cryptKey)))); 
return($qEncoded);} 


function decryptIt($q) { 
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
$qDecoded  = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), base64_decode($q), MCRYPT_MODE_CBC, md5(md5($cryptKey))), "\0"); 
return($qDecoded);} 
+0

なぜすべての人が私にマイナスポイントを与えた..私はちょうど私を導いてください。..唯一の助けが必要です。 –

+2

何も提供していないというマイナスポイントがあります。私たちはあなたを助けたいと思っていますが、私たちはあなたの宿題(または同様のこと)をしません。例を提供する。これまでに何を試しましたか? – DasSaffe

+0

私は質問を更新します –

答えて

1

簡単な方法は、暗号化した後、および復号化の前進にしてから暗号文をひそかすることです「英数字、数値、バイナリー、アルファベット」になります必要があります。

コード:

$string = "10101111101"; 
$encrypted = encryptIt($string); 
$decrypted = decryptIt($encrypted); 

// Change \n to <br> for newline in web browser 
echo $string."\n"; 
echo $encrypted."\n"; 
echo $decrypted."\n"; 

function encryptIt($q) { 
    $cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
    $qEncoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), $q, MCRYPT_MODE_CBC, md5(md5($cryptKey)))); 
    $qEncoded = strToHex($qEncoded); 
    return($qEncoded); 
} 

function decryptIt($q) { 
    $q = hexToStr($q); 
    $cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
    $qDecoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), base64_decode($q), MCRYPT_MODE_CBC, md5(md5($cryptKey))), "\0"); 
    return($qDecoded); 
} 

function strToHex($string) { 
    $hex = ''; 
    for ($i=0; $i<strlen($string); $i++){ 
     $ord = ord($string[$i]); 
     $hexCode = dechex($ord); 
     $hex .= substr('0'.$hexCode, -2); 
    } 
    return strToUpper($hex); 
} 

function hexToStr($hex) { 
    $string=''; 
    for ($i=0; $i < strlen($hex)-1; $i+=2){ 
     $string .= chr(hexdec($hex[$i].$hex[$i+1])); 
    } 
    return $string; 
} 

出力:

10101111101 
62554A5951644A4B7552564C52396A69686A5A6F4A453539534850517A533573583331316D5372676C6B493D 
10101111101 
+0

ありがとうございます。 @Jon –

+0

あなたの答えは正しいとマークされています:) –

関連する問題