あと2つファイルがあります。
続いてMD5の暗号化部です。
WebSocketはHandShakeを実行するために、数字と特定のトークンをMD5で変換しないといけないことになっています。
package com.ttProject.webSocket.library;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5作成用ライブラリ
*/
public class MD5 {
/**
* 文字列からエンコードする。
* @param string 変換する文字列
* @return 変換してできたMD5バイトデータ
* @throws NoSuchAlgorithmException 例外
*/
public static byte[] crypt(String string) throws NoSuchAlgorithmException {
if(string == null || string.length() == 0) {
throw new IllegalArgumentException("String for encrypt must have body.");
}
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(string.getBytes());
return md.digest();
}
/**
* byteデータからエンコードする。
* @param bytes 変換するバイトデータ
* @return 変換してできたMD5バイトデータ
* @throws NoSuchAlgorithmException 例外
*/
public static byte[] crypt(byte[] bytes) throws NoSuchAlgorithmException {
if(bytes == null || bytes.length == 0) {
throw new IllegalArgumentException("bytes for encrypt must have body");
}
MessageDigest md = MessageDigest.getInstance("MD5");
return md.digest(bytes);
}
}
今回のプログラムでは、byteデータを変換するだけなので、後者のしか使いません。
なお、途中で文字列化等やってしまうと、HandShakeは失敗するので注意となります。
最終更新:2011年02月11日 21:22