タグ「java」が付けられているエントリー

2008年はいろんな言語を扱いました

| | コメント(2) 2008年はいろんな言語を扱いました

1年総決算エントリを書き始める時期になりました.今年はいろんな言語を扱いました.

  • C
  • Java
  • JavaScript
  • LaTeX
  • NQC
  • Perl
  • PHP
  • Prolog
  • XHTML + CSS

この中で苦もなく書けるのは,やはりC言語.難しいことをしなければ,リファレンスを読まなくても書けます(ぇ,それ普通?).入門してすぐに挫折したのは,Objective-C.オブジェクト指向が苦手なオレとしては,ありゃダメだ.今年はVBを書かなかったけど,年明けになると書かざるを得ない状況になるのかなぁ・・・.予め想定で書いておけばいいのかな?実家にはVB環境がないな(ぁ.

それから,(X)HTMLやらCSSやらは,相変わらずvalidな記述を心がけてます.W3Cの甘さに喜び,Another HTML-Lintの厳しさに半ベソです.マイブームはXHTML 1.0 Strictです.「まだ1.1じゃないのか」というツッコミは躱します.そうこうしている間に,XHTML 2.0やらHTML 5.0が出てくるでしょう(いつの話だ).

それから忘れてはならない言語は英語と日本語.相変わらず英語のスキルは向上していない.言ってることはだいたい理解できるのだが,喋ろうと思っても言葉が出てこないのはどうにかならないのだろうか.シナプスが一方通行になっているのだろうか?なお,日本語のスキルは社会人仕様になっているはずなので,少しは向上していると信じたい.

Javaっていうか,型に厳しい言語は面倒くさい(ぇぇ!).今日は論文を書きながら,実証コードを書いてみました.言語は何でも良かったんだけど,なるべく標準機能だけでできて,コードに苦労せずさらっと書けて欲しかったので,なんとなくJavaならいけるかなと思って,Javaを使ってみた.結論からいえば,PHPでやるべきだった.面倒くさかった.

今日学んだこと!

・byte[]をprintlnで表示するには
.toString()じゃ上手くいかない.独自にメソッドを書かないといけないらしい.なんたる面倒くささ.こんなやり方もあるっぽい.

・HMAC的な計算は
javax.cryptoにMacってクラスがあるっぽ.こんなコードで遊べるっぽ.

import java.security.*;
import javax.crypto.*;

public class hmacsha2 {
public static void main(String[] args) throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("HmacSHA256");
SecretKey sk = kg.generateKey();

Mac mac = Mac.getInstance("HmacSHA256");
mac.init(sk);
byte[] result = mac.doFinal("hoge".getBytes());
}
}

へー.

・BASE64エン/デコができない
えー.って感じ.不便すぎる.(参考:javaにおけるbase64の性能テスト - トラシスラボ 技術ブログ

・色々調べていたら
OAEPとかパディングとか標準で積んでるみたい.使ったことなかった.最早,BigIntegerでRSAを書いてる場合じゃない?CryptixとかGUN Cryptoとか,強力な暗号ライブラリがあるっぽい.まだ使ってないけど.

あと,暗号強度の制限があるらしい.

デフォルトの Sun JDK 環境で使用できる暗号化アルゴリズムは 輸入管理制限 によってキー長に制限が設けられています。

(中略)ほとんどのアルゴリズムに 128bit の制限がかけられています。

暗号強度の制限解除

なるほど.とりあえず,解除してみた.

200810221046追記:
Java5から,System.out.printfなるメソッドが追加されていて,C言語ライクな出力ができる模様.

for(int i=0;i<result.length;i++)
System.out.printf("%02x",result[i]);

関連:
J2SE 5.0の新機能 ――第4回 Javaのprintf - ITアーキテクト [IT Architect]
[Java 5]C言語からの移植に便利なprintfの注意点 - @IT

プロフィール

e-m@il @ddress