我正在尝试将一个“简单”的字符串加密算法从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有关?
编辑:以下是我得到的几个例子:
PHP编码“garden”: YjFhZGU1MzEwNTdmNTFjMjk5MjQ3OTMzNWQwM2I3NzRhZmRlYjZmYQ ==
“WhyJavaWhy”的Java编码: oJTJIq6WJM8P9rFPnZdoyK / WBK4 =
答案 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)));