ホームページ  >  記事  >  バックエンド開発  >  環境を持っている兄弟姉妹は、運営を手伝うことができます。

環境を持っている兄弟姉妹は、運営を手伝うことができます。

WBOY
WBOYオリジナル
2016-06-23 13:40:161664ブラウズ

テストデータ $str1="1149395524",$str2="4255390370"

//xor
function my_xor($text,$key)
{
$i = 0
$encrypted = ""
foreach (str_split; ($text) as $char) {
$encrypted .= chr(ord($char) ^ ord($key{$i++ % strlen($key)})); //base64 エンコード
function my_generate_sign( $str1,$str2)
{
$xorstr = my_xor($str1,$str2);
returnbase64_encode($xorstr);
}

JAVAのXOR暗号化とbase64暗号化を書きましたが、結果のデータは異なるようです。環境に詳しい人が実行を手伝ってくれませんか? ちなみに、my_xor($text,$key) メソッドを正しく理解しているかどうかを説明してください。




ディスカッションへの返信 (解決策)

BQMBDAAABQYFBA==
Java は何を取得しますか?

JAVA で XOR 後に取得される多くの非表示文字。それを表示する方法はありません。

たとえば、文字列 a= 1149395524 は byte[]=[49, 49, 52, 57, 51, 57, 53, 53, 50, 52] に変換され、バイナリは [110001, 110001,110100,111001] に変換されます。 ,110011, 1110 01,110101 ,110101,110010,110100]
文字列 b= 4255390370 を byte[]=[52, 50, 53, 53, 51, 57, 48, 51, 55, 48] に変換しますバイナリを [ 110100, 110010,11010 1, 110101,110011, 111001,110000,110011,110111,110000]
式に従って (a これを String 型に変換して目に見えない文字列にします

PHP で得られた結果: [5, 3, 1 、12、7、11、0、0、1、13]


専門家による解説

テストデータ$ text="1149395524",$key="4255390370"

//xor
function my_xor($text,$key )

{

$i = 0;
$encrypted = "";
foreach (str_split( $text) as $char) {
$encrypted .= chr(ord($char) ^ ord($key{$i++ %) strlen($key)}));
return $encrypted
}
暗号化された値

$text = '1149395524';$key = '4255390370';$s = my_xor($text, $key);echo base64_encode($s), PHP_EOL;//因为含有不可见字符,所以需要做 base64 编码。你解码就还原了print_r(unpack('C*', $s)); //十进制内码//xorfunction my_xor($text,$key){    $i = 0;    $encrypted = "";    foreach (str_split($text) as $char) {        $encrypted .= chr(ord($char) ^ ord($key{$i++ % strlen($key)}));    }    return $encrypted;}
BQMBDAAABQYFBA==Array(    [1] => 5    [2] => 3    [3] => 1    [4] => 12    [5] => 0    [6] => 0    [7] => 5    [8] => 6    [9] => 5    [10] => 4)


辛抱強いご回答ありがとうございます。理由が分かりました。自分で行う必要はありません。byte[ ] を使用して暗号化するだけです。 Stringに変換した後、それは間違っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。