ユーザーのMACアドレスを取得し、MD5に変換してjavascript関数に送信するJAVAアプレットを作成しようとしています。
この MD5 を他の入力データと共にフォームに追加するつもりです。
これまでのところ、MAC アドレスを取得して MD5 に正常に変換できました。私ができなかったのは、それを私のjavascript関数に渡すことです。
これは私のHTMLコードです:
<body>
<script type="text/javascript">
function dohash(hash) { alert(hash); }
</script>
<APPLET code="start.class" width="200" height="200"></APPLET>
</body>
</html>
これはJAVAコードです:
import netscape.javascript.JSObject;
import java.applet.*;
import java.security.*;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.math.BigInteger;
public class start extends Applet {
private static final long serialVersionUID = 1L;
JSObject win;
public void main() {
win = (JSObject)JSObject.getWindow(this);
}
public void init() {
InetAddress ip;
String hashtext = "a";
try {
ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
try {
String plaintext = sb.toString();
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
hashtext = bigInt.toString(16);
while(hashtext.length() < 32 ){
hashtext = "0"+hashtext;
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
win.eval("alert('123');");
} catch (NullPointerException e) {
e.printStackTrace();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e){
e.printStackTrace();
}
}
}
これは、Eclipse のコンソールでの応答です。
java.lang.NullPointerException
at start.init(start.java:50)
at sun.applet.AppletPanel.run(AppletPanel.java:435)
at java.lang.Thread.run(Thread.java:744)