0

「単純な」文字列暗号化アルゴリズムを 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 の使用と関係があると思いますか?


編集:ここに私が得るもののいくつかの例があります:

  • 「庭」の Java エンコード: sa3lMQV/UcKZJHkzXQO3dK/etvo=
  • 「庭」の PHP エンコード: YjFhZGU1MzEwNTdmNTFjMjk5MjQ3OTMzNWQwM2I3NzRhZmRlYjZmYQ==

  • 「WhyJavaWhy」の Java エンコード: oJTJIq6WJM8P9rFPnZdoyK/WBK4=

  • 「WhyJavaWhy」の PHP エンコード: YTA5NGM5MjJhZTk2MjRjZjBmZjZiMTRmOWQ5NzY4YzhhZmQ2MDRhZQ==
4

2 に答える 2

1

これは機能します:

base64_encode(sha1($str, TRUE));

$ php -r "echo base64_encode(sha1('garden', TRUE));"
sa3lMQV/UcKZJHkzXQO3dK/etvo=
于 2011-02-08T18:03:47.530 に答える
0

試す

base64_encode(sha1(utf8_encode($str)));
于 2011-02-08T00:30:36.430 に答える