0

2年ほど前に書いた関数を手に入れました。この関数は、sha1ハッシュおよび事前定義された値の束とともにbase64エンコードメソッドを使用します。これが機能です

     function secure_encode($x) { 
         return strtr(base64_encode(substr($_SESSION['Cksum'],rand(0,28),4) . $x), '+/=', '-_+');
     }

     $express = array();

     $express['0'] = "58464db46ba2ea0f54.8030317175114db46ba2ea1004.65676456123564db46ba2ea10b2.4389053856-5caecd9b6220eaea81e40641caad165ad681d49c-Bh8j1kU.kAIznsh5WhHH-XO5FJFGU6cMySblUAKkpdg==/".date();

     $express['1'] = "113354db46791181958.25326465113804db46791181a07.35447338301094db46791181ab9.28188138-c5438adfef452a06fffd8a1e755322796122620d-O1dnRG.KafUv8.JcISrn-Nhab7EDL.2lkQ68WfT1Pzg==/";

     $express['2'] = "299084db46ac385b7d9.3958582716614db46ac385ba68.3911624024184db46ac385bee5.3681503764-b249050b2cc8ec9a9a24e6775fd6d679982ce35e-E7rS6jrbjYdHptZPAe4v-WNwjOR1HEEMJURn/RUN.AA==/";

     $express['3'] = "233534db46ae7c7a2d7.98941083259824db46ae7c7a390.88346488191674db46ae7c7a449.03466538-08741422c3f59599e4c170ed4871e387a921268f-L/pA2jYJ/mEjZmyjHWt5-fVSwQyCRfxsR8lCmQkw2aw==/";

     $express['4'] = "107034db46b02569962.3398546439324db46b02569a26.08097334169974db46b02569ad1.521504520-e141a88ba3299debc3abc9a04d5953a7604df28e-JGkKsXa19ZEPuasSZLC5-B8oD3S68DPUL3zrZTjELZg==/";

     $pass = $_POST['auth_pass'];
     $hash = secure_encode((sha1($express['0']."//!%$!*&^@n3.".$pass).sha1($express['2']."//!%$!*&^@n3.".$pass)));

たとえば、ハッシュ値:123abc

NjY1NGI0ZTIzMTc5NmViNGU5MjhiMDgyZmUyMDYwNDAzYWQzM2NjYTJmZTYzYjk2ZTg3MzVkMTRmMTc2MjI0NjdkMjY2ZDg0MjAyMGY1ZTc +

コードスニペットに基づいて、このハッシュは、姓名、電話番号、住所、DOBなどの基本的なユーザーデータをハッシュするのに十分でしょうか、それとも他の形式のハッシュを使用する方がよいでしょうか?また、スニペットを改善できる場合は、それを改善できるセクションを指摘してください。

編集:私は現在、この関数を使用して、作成したフォーラムソフトウェアのユーザーパスワードをハッシュしています。また、ユーザーアカウントが侵害されたり、パスワードが盗まれたりする問題は発生しませんでした。

4

1 に答える 1

6

あなたがしていることは、隠すことによるセキュリティと呼ばれます。誰かがあなたのアルゴリズムを知らないからといって、それが安全になるわけではありません。誰かがあなたのウェブサイトに侵入してあなたのハッシュ関数を見た場合、あなたがしているのはソルトされたSHA1ハッシュをbase64でエンコードするだけなので、あなたの「カスタム」ハッシュは攻撃しやすいでしょう。

独自の関数を作成しないでください。攻撃に費用がかかるBcryptのような信頼できるハッシュ関数を使用します。

また、より詳細な説明については、この記事を必ずお読みください。

于 2013-03-10T00:30:34.290 に答える