相当于Java中PHP的crypt函数


问题内容

我正在将PHP代码迁移到Google App Engine-Java。
因此,我需要使用Java中的PHP的crypt函数,
因为我已经
使用crypt 将注册用户的所有密码存储在数据库中。

编辑1 :这是我的php密码加密代码:

$ password =“ test123”;
$ pwd = crypt($ password,$ password);
回声$ pwd;

输出为(在 Windows 以及 HostMonser 上的基于Linux的服务器上):
temjCCsjBECmU

有人可以给我等价的Java代码吗?
我已尝试使用
MessageDigest类进行各种排列和组合,但无法正确执行。

编辑2
这是示例代码,我认为可以,但是没有用:

try {
                {
                    String password = "test123";
                    MessageDigest digest = MessageDigest.getInstance( "MD5" ); 
                    byte[] passwordBytes = password.getBytes( );

                    digest.reset( );
                    digest.update( passwordBytes );
                    digest.update( passwordBytes );
                    byte[] message = digest.digest( );

                    StringBuffer hexString = new StringBuffer();
                    for ( int i=0; i < message.length; i++) 
                    {
                        hexString.append( Integer.toHexString(
                            0xFF & message[ i ] ) );
                    }
                    String encrypted = hexString.toString();
                    System.out.println(encrypted);
                  } } catch (NoSuchAlgorithmException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

问题答案:

您必须知道使用了哪种PHP
crypt实现(MD5,SHA256,SHA512?),因为有几种实现取决于您的操作系统:http
:
//php.net/manual/fr/function.crypt.php

Java的等效类是MessageDigest。创建此类的实例时,您将提供哈希算法,例如:

MessageDigest md = MessageDigest.getInstance("MD5");
MessageDigest md2 = MessageDigest.getInstance("SHA-256");
MessageDigest md3 = MessageDigest.getInstance("SHA-512");
// etc.
byte[] encryptedPassword = md.digest("yourPassword".getBytes());