Hello Worldでけたので、DLLをCALLしてみる。昔はこんなこと取り組んでなかったってのと、やっぱりJavaってちょいちょい仕様が変わるのかWebの賢者たちの記事があまり役にたたなくて苦労したぜー。
それはおいておいて、eclipseでprojectを作っていくぞい。
- package study103;
- import com.sun.jna.Library;
- import com.sun.jna.Native;
- public class rijndael_call {
- static byte[] key={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
- static byte[] plain={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, (byte)0x88, (byte)0x99, (byte)0xaa, (byte)0xbb, (byte)0xcc, (byte)0xdd, (byte)0xee, (byte)0xff};
- public interface RijndaelLib extends Library{
- RijndaelLib INSTANCE= (RijndaelLib)Native.load("C:/Users/<username>/Documents/work/eclipse-java/study1/dll/rijndael_64.dll",RijndaelLib.class);
- int AES128Encrypt(byte[] plain,byte[] key,byte[] akeome);
- }
- public static void main(String[] args) {
- byte[] crypted=new byte[16];
- RijndaelLib rijndaelLib=RijndaelLib.INSTANCE;
- rijndaelLib.AES128Encrypt(plain, key, crypted);
- for(int i=0;i<16;i++) {
- System.out.print(String.format("%02X",crypted[i]));
- }
- System.out.println("");
- }
- }
Javaってunsignedってのがないらしく、0x80以上の数字は明示的にキャストせんといかんとか、ナゾのお手当てをしている。
いやーweb資料があまり役に立たなかったのでしんどかったです。プロフェッショナルなプログラマーは変更履歴から読み取るんだろうけど、webの実践記事だけを頼りにするとまぁまぁうまくいかんもんやね。そう考えると、AIなんて役に立たんやんとも思う。ちょっと前に取り組んで愕然としたので、今はAIに聞こうという気はさらさらないんやけどね。結局全部知ってないと、AIが作ったブラックボックスをどうしていいのかもわからんよね。妄想や幻想にかられて挑戦したものの挫折したときに、自力で這い上がる胆力が必要な時代や。