ホームページ  >  記事  >  バックエンド開発  >  POSTのsha1暗号化文字列が等しいという判断が間違っているのはなぜですか?

POSTのsha1暗号化文字列が等しいという判断が間違っているのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 14:12:531749ブラウズ

たとえば、私のフォームでは暗号化された文字列 sha1('1') 356a192b7913b04c54574d18c28d46e6395428ab を投稿しました。
次に if($_POST['s']=='356a192b7913b04c54574d18c28d46e6395428ab')
なぜ false と判定されるのでしょうか?
echo $_POST['s'] も 356a192b7913b04c54574d18c28d46e6395428ab です。 。


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

$_POST['s'] がその値であるかどうかをよく確認してください

$_POST['s'] がその値であるかどうかをよく確認してください 私が正しかったです。 。 。 BAEで試してみました。 。理由が全く分かりませんでした。 。 。

var_dump() を使用して、スペースと改行が含まれているかどうかを確認することもできます

var_dump() を使用して、スペースと改行が含まれているかどうかを確認することもできます
いいえ。 。また、trim() を使用してフィルタリングしました。 。見てみるのを手伝ってくれませんか。 http://hole.icnu.me/t1.php

彼の var_dump() によって出力された引用符 + 値をコピーすると、それは true である可能性があります。
引用符を自分で入力すると false になります。 。 。だからああ? ?

コードの投稿はあなたが言った理由ではないかもしれません

コードの投稿はあなたが言った理由ではないかもしれません
t.php のコード。 。

<?phpecho $_POST['set'].'<br>';var_dump($_POST['set']);if($_POST['set']=="f45918a75f152c9ce0b58043d5e5d7f22358665c")echo 'qw';?>

if の二重引用符が false になります。 。なぜだか分からない。 。 。
http://hole.icnu.me/t1.php ここに t.php に投稿してください

コードを投稿してください。それはあなたが言った理由ではないかもしれません
それはエンコーディングの問題であるはずです。エンコードを変換すればOKです。 。


コードを投稿すると、あなたが言った理由ではないかもしれません
それはコーディングの問題であるはずです。エンコードを変換すればOKです。 。

違う、違う。 。 。理由は私にもわかりません。 。 。

もう一度説明します。 。 。
sha1暗号化後の文字数は40文字のはずなのに
投稿が来た後、なぜ43文字になってしまったのでしょうか? 。 。 ?
次のページの再暗号化も 40 文字です。 。
ただし、ポインタを直接指定した場合、暗号化された文字列も 43 文字になります。 。 。
なぜですか?

var_dump() によって投稿されたデータ
string(43) "?356a192b7913b04c54574d18c28d46e6395428ab"
var_dump(sha1('1'))
string(40) "356a192b7913b04c54 d18c28d46e6395428ab"
var_dump('356a192b7913b04c54574d18c28d46e6395428ab')
string(43) "? 356a192b7913b04c54574d18c28d46e6395428ab"

echo Pack('H*', $_POST['set']); して結果を確認します

You echo Pack('H*', $_POST['set']); して結果を確認します

ごめんなさい、間違えました!
次のようにします:
print_r(unpack('H*', $_POST['set']));

申し訳ありませんが、間違えました。
このように:
print_r(unpack('H*', $_POST['set']));

Array ( [1] => efbbbf333536613139326237393133623034633534353734643138633238643 436 65363339353432386162 )

配列 ( [1] => efbbbf33353661313932623739313362303463353435373464313863323864343665363339 35343238 6162)

この efbbbf は utf-8 の BOM ヘッダーです。 43665363339353432386162 )

この efbbbf は utf-8 の BOM ヘッダーです

該当するファイルの BOM ヘッダーを削除します。それは

ありがとう~~

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