【问题标题】:Is there a Java equivalent of the PHP function "hash"?是否有 PHP 函数“哈希”的 Java 等价物?
【发布时间】:2014-02-02 23:18:50
【问题描述】:

我正在尝试将 Java 应用程序与 Web 应用程序(在 PHP 中)连接起来,其中人们可以在 Java 应用程序或 Web 应用程序上注册用户。我正在尝试在 Java 中找到与 PHP“哈希”函数等效的函数。

为了在网络应用程序中创建哈希,这是我使用的代码:

$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));

$password = hash('sha256', $_POST['password'] . $salt);

for($round = 0; $round < 65536; $round++) {
    $password = hash('sha256', $password . $salt);
}

加密后的密码和盐值与用户一起存储在它们自己的列中,有点像这样:

|=====|==========|============|==========|
| ID  | Username |  Password  |   Salt   |
| 1   | Bob      | x24da0el.. | 39bbc9.. |
|=====|==========|============|==========|

我已经尝试了所有方法,但在 Java 中找不到相同的方法。

【问题讨论】:

    标签: java php mysql hash equivalent


    【解决方案1】:

    是的,看看 Java 的 MessageDigest 类: http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html

    它提供了 3 种哈希算法:
    -MD5
    -SHA-1
    -SHA-256

    散列文件的示例:

    MessageDigest md = MessageDigest.getInstance("SHA-256");
    FileInputStream fis = new FileInputStream("~/Documents/Path/To/File.txt");
    
    byte[] dataBytes = new byte[1024];
    
    int nread = 0; 
    while ((nread = fis.read(dataBytes)) != -1) {
      md.update(dataBytes, 0, nread);
    };
    byte[] mdbytes = md.digest();
    
    //Convert "mdbytes" to hex String:
    StringBuffer hexString = new StringBuffer();
    for (int i=0;i<mdbytes.length;i++) {
      hexString.append(Integer.toHexString(0xFF & mdbytes[i]));
    }
    
    return hexString.toString();
    

    以下是对字符串进行哈希处理的示例:

    String password = "123456";
    
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    md.update(password.getBytes());
    
    byte byteData[] = md.digest();
    
    //Convert "byteData" to hex String:
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < byteData.length; i++) {
        sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
    }
    
    return sb.toString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2019-11-07
      • 2020-09-20
      • 2014-07-21
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      相关资源
      最近更新 更多