文字列をUTF-8を使用してバイナリに変換する必要がありますが、できません。私はUTF-8エンコーディングを使用して文字列をバイナリに変換する
String encodedName=URLEncoder.encode(name, "UTF-8");
を試してみましたが、それは私のバイナリフォーマットを与えていない 、それはちょうど私のわずかな変化と同じ文字列を返された、助けてください。
編集:私は何をすべきか
: 私は、文字列と仮定する「HelloWorldの」 私は「UTF-8」を使用してバイナリに変換して、ハッシュアルゴリズムSHA1を使用する必要がありますを持っており、このことから私はしますハッシュキーを取得し、これは私が "ハッシュキー"が必要なものです。
これはSHA1ハッシュに対して1つ見つかりました。
public class AeSimpleSHA1 {
private String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
public String SHA1(String text)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
sha1hash = md.digest();
return convertToHex(sha1hash);
}
}
同じ方法で独自のエンコーディングを定義するかもしれませんが、バイナリ形式で、それは私の希望されたものであることあなたのコードは本当に役に立ちます、私はデータのコード化されたフォーマットを持っていますが、私は文字列としてそれを格納する必要があります、あなたは私を助けてください。 – droid
@ user1211188:達成しようとしていることはまったく不明です。 'byte []'はバイナリデータ、 'String'はテキストデータです。あなたが何をしているのかを明確にしてください - http://tinyurl.com/so-hintsを読んで質問を編集してください。 –
OK、UTF-8を使用して文字列をバイナリに変換したことを明確にすることができます。今ではデータがdata.Nowに格納されていますが、SHA1ハッシングアルゴリズムを使用する必要があります。私は別のエンコーディングの入力としてそれを与えることができるように、文字列です。 – droid