当前位置: 首页 > 面试题库 >

相当于Java中PHP的crypt函数

欧阳炜
2023-03-14
问题内容

我正在将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());


 类似资料:
  • 问题内容: PHP中的这一行代码评估为true 我需要的是Golang中的一个crypt函数,该函数也将评估为true。 尝试1 我试过了,但评估为假: 尝试2 我还尝试定义和使用在其他地方找到的这个crypt函数,但它也返回false: 所以我的问题是: 我如何获得一个golang地穴功能完全一样的琴弦的PHP crypt函数和? 问题答案: 尽管我还没有找到与PHP的crypt函数完全相同的“

  • 问题内容: 我正在将应用程序从PHP迁移到Java,并且在代码中大量使用了正则表达式。我遇到了PHP中似乎没有Java等效项的某些问题: 对于正则表达式中的每个匹配项,它都会调用一个函数,该函数将匹配文本作为参数传递给该函数。作为示例用法: 用Java做到这一点的理想方法是什么? 问题答案: 我不知道Java内置有什么类似的东西。您可以使用Matcher类轻松滚动自己的游戏: 然后致电: 请注意,

  • 问题内容: 在python中,如果我有一些要基于输入调用的函数,则可以执行以下操作: 那就是我有一个映射到函数的函数名字典,并通过字典查找来调用函数。 如何在Java中执行此操作? 问题答案: 有几种方法可以解决此问题。其中大多数已发布: 命令 -在地图中保留一堆具有execute()或invoke()方法的对象;通过名称查找命令,然后调用方法。 多态性 -比命令更一般的说,您可以在任何相关对象集

  • 问题内容: 我正在寻找一个等效于此php调用的Java: 我使用java.crypto.Mac尝试了此操作,但两者不同意: 键=“ secret”和test =“ test”的输出似乎不匹配。 问题答案: 实际上,他们确实同意。 正如Hans Doggen已经指出的那样,除非将raw输出参数设置为true,否则PHP使用十六进制表示法来输出消息摘要。 如果要在Java中使用相同的符号,可以使用类似

  • 问题内容: 我是Java新手,尽管在PHP方面有很好的经验,并且正在寻找Java中爆炸和爆破(PHP中可用)功能的完美替代品。 我已经用Google搜索了相同的结果,但对结果不满意。任何人对我的问题都有好的解决方案将不胜感激。 例如: 所需的输出: 问题答案: 用于String的Javadoc揭示了您正在寻找的东西。 Java不包括等效的“连接”的“内爆”。您可能只想编写几行代码,而不是像其他答案

  • 问题内容: 我正在如下计算Android / Java中的MD5: 但是,PHP的功能不匹配。 这是怎么引起的,我该如何解决,以便Android / Java和PHP都生成完全相同的MD5哈希? 问题答案: 当字节小于时,您需要在十六进制值前添加前缀。这是一个完整的示例: