需要帮助将一些Java加密转换为PHP

时间:2011-02-08 00:26:20

标签: java php base64 sha1 code-translation

我正在尝试将一个“简单”的字符串加密算法从Java移植到PHP,它使用了足够多的特定Java库,我正在猛烈抨击我。我希望SO社区可以提供帮助。这是Java:

public static String encode(String str) throws Exception {
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.reset();
    return (new BASE64Encoder()).encode(md.digest(str.getBytes("UTF-8")));
}

直觉上,我认为PHP中的等价物将是:

base64_encode(sha1($str));

但这不起作用。我猜这与使用getBytes有关?


编辑:以下是我得到的几个例子:

  • “garden”的Java编码: sa3lMQV / UcKZJHkzXQO3dK / etvo =
  • PHP编码“garden”: YjFhZGU1MzEwNTdmNTFjMjk5MjQ3OTMzNWQwM2I3NzRhZmRlYjZmYQ ==

  • “WhyJavaWhy”的Java编码: oJTJIq6WJM8P9rFPnZdoyK / WBK4 =

  • PHP编码“WhyJavaWhy”: YTA5NGM5MjJhZTk2MjRjZjBmZjZiMTRmOWQ5NzY4YzhhZmQ2MDRhZQ ==

2 个答案:

答案 0 :(得分:1)

这有效:

base64_encode(sha1($str, TRUE));

$ php -r "echo base64_encode(sha1('garden', TRUE));"
sa3lMQV/UcKZJHkzXQO3dK/etvo=

答案 1 :(得分:0)

尝试

base64_encode(sha1(utf8_encode($str)));