JavaScript 中的 PHP 函数 crypt() [英] PHP function crypt() in JavaScript

查看:50
本文介绍了JavaScript 中的 PHP 函数 crypt()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在服务器端,我创建了一个密码哈希:

On the server side I create a password hash:

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 做同样的事情.javascript 中是否有用于 PHP crypt() 的类似物,而 CryptoJS 则不需要?

And on client side I want to do the same using CryptoJS. Is there any analogues in javascript for PHP crypt(), not necessary with CryptoJS?

UPD:我想在客户端执行此操作,因为我不想将密码发送到服务器,但是诸如使用哈希加密的 clientId 之类的东西,在服务器上对其进行解密并获取用于下一次操作的哈希.

UPD: I want to do this on client side because I don't want to send password to server, but something like clientId crypted with hash, decrypt it on the server and get the hash for the next manipulations.

推荐答案

好吧,这里是:一个 PHP 的 crypt 的 CryptoJS 实现对于 MD5 哈希(我想它太大而无法粘贴).所以它不是一个完整的 crypt-like 东西,但在你的代码示例中你正在设置一个基于 MD5 的哈希(带有 $1$ salt 前缀).

Well, here it is: a CryptoJS implementation of PHP's crypt for MD5-hashes (I guess it's too large to paste). So it's not a complete crypt-like thing but in your code example you are setting up a MD5-based hash (with the $1$ salt prefix).

使用方法:

  1. 存储在名为 php-crypt-md5.js
  2. 的文件中
  3. 像这样使用它(rollups"在您的 CryptoJS 目录中,只需使用正确的路径):

  1. Store in a file named php-crypt-md5.js
  2. Use it like that ("rollups" is in your CryptoJS directory, just use the correct path):

<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);

这篇关于JavaScript 中的 PHP 函数 crypt()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆