2

サーバー側では、パスワード ハッシュを作成します。

public static function salt()
{
    return '$1$' . StringUtil::random(6, array('encode' => StringUtil::ENCODE_BASE_64));
}

public static function hash($password, $salt = null)
{
    return crypt($password, $salt ?: static::salt());
}

クライアント側では、CryptoJS を使用して同じことを行いたいと考えています。PHP crypt() の JavaScript には、CryptoJS では不要な類似物がありますか?

UPD: パスワードをサーバーに送信したくないため、クライアント側でこれを行いたいのですが、ハッシュで暗号化された clientId のようなものをサーバーで復号化し、次の操作のためにハッシュを取得します。

4

2 に答える 2

2

さて、これがそれです: MD5 ハッシュ用の PHP の crypt の CryptoJS 実装です(貼り付けるには大きすぎると思います)。したがって、完全な暗号のようなものではありませんが、コード例では、MD5 ベースのハッシュを設定しています ( $1$salt プレフィックスを使用)。

それの使い方:

  1. という名前のファイルに保存します。php-crypt-md5.js
  2. そのように使用します(「ロールアップ」はCryptoJSディレクトリにあります。正しいパスを使用してください):

    <script src="rollups/md5.js"></script>
    <script src="php-crypt-md5.js"></script>
    
    <script>
        function createSalt(len) {
            var saltAlpha = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                "abcdefghijklmnopqrstuvwxyz./-+_"
    
            var salt = '$1$';
            for(var i = 0; i < len; ++i) {
                salt += saltAlpha.charAt(
                    Math.floor(Math.random() * saltAlpha.length));
            }
    
            return salt;
        }
    
        // in your JavaScript code:
    
        var salt = createSalt(8);
        var pw = "your password";
    
        var hash = CryptoJS.PHP_CRYPT_MD5(pw, salt);
    
于 2013-06-08T18:31:58.603 に答える