我正在将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哈希? 问题答案: 当字节小于时,您需要在十六进制值前添加前缀。这是一个完整的示例: