0

この byte[] を String に変換するにはどうすればよいですか:

byte[] mytest = new byte[] {100,25,28,-122,-26,94,-3,-26};

私はこれを取得します:"d��^�"私が使用するとき:

new String( mytest , "UTF-8" )

キーを作成するためのコード Java は次のとおりです。

m_key = new javax.crypto.spec.SecretKeySpec(new byte[] {100,25,28,-122,-26,94,-3,-26}, "DES");

ありがとう。

4

3 に答える 3

2

バイト配列を ASCII などにデコードするには、元のエンコーディングを知る必要があります。それ以外の場合は、バイナリとして扱う必要があります。

注: Base64 は、ネットワーク経由でバイナリ データを転送することを目的としています。

Base64 でバイト配列をエンコードすることをお勧めします。次に、PHP コードで Base64 文字列をデコードして UTF-8 文字列に戻します。

Java では、バイト配列を Base64 でエンコードしてから UTF-8 にデコードする方法を次に示します。

import org.apache.commons.codec.binary.Base64;

public class MyTest {
    public static void main(String[] args) throws Exception {
        byte[] byteArray = new byte[] {100,25,28,-122,-26,94,-3,-26};
        System.out.println("To UTF-8 string: " + new String(byteArray, "UTF-8"));

        byte[] base64 = Base64.encodeBase64(byteArray);
        System.out.println("To Base64 string: " + new String(base64, "UTF-8"));

        byte[] decoded = Base64.decodeBase64(base64);
        System.out.println("Back to UTF-8 string: " + new String(decoded, "UTF-8"));

        /* the decoded byte array is the same as the original byte array */
        for (int i = 0; i < decoded.length; i++) {
            assert byteArray[i] == decoded[i];
        }
    }
}

上記のコードからの出力は次のとおりです。

UTF-8 文字列へ: d��^�
Base64 文字列へ: ZBkchuZe/eY=
UTF-8 文字列に戻る: d��^�</pre>

したがって、PHP コードで同じバイナリ データを使用する場合は、Base64 文字列をコピーして PHP コードに貼り付け、UTF-8 にデコードします。このようなもの:

<?php
$str = 'ZBkchuZe/eY=';
$key = base64_decode($str);
echo $key;
?>

私は PHP でコーディングしていませんが、次の方法を使用して Base64 をデコードできるはずです: http://php.net/manual/en/function.base64-decode.php

上記のコードは、元のバイナリ データを UTF-8 としてエコー バックする必要があります (ただし、変な文字が含まれています)。$key要点は、変数内のおかしな文字列が、Java バイト配列にあったものと同じバイナリ データを表しているということです。

d��^�</pre>

$key変数を PHP 暗号化メソッドに渡すことができるはずです。

于 2013-02-13T11:58:08.860 に答える
0

あなたのやり方では意味がありません。byte[] を引数として新しい文字列を作成しています。関数が解析することになっているとは思いません。そのため、最終的にはたくさんのがらくたになります。しかし、少しグーグルでこれを手に入れました: http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-Java/

于 2013-02-13T11:19:23.700 に答える
0

m_key.getEncoded() で目的の結果が得られますか。

Javadocs - SecretKeySpec

そうでない場合は、エンコードに使用されたキー プロバイダー (現在のバイト配列になった) を特定し、デコードする必要があります。

于 2013-02-13T11:38:50.127 に答える