JavaでRijndael(AES)で暗号化されたデータをPerlで復号化しようと思います。 「暗号方式と秘密鍵だけ聞いておけば簡単にデコードできるっしょ、余裕っしょ」とタカをくくっていたら、思いっきり天罰がくだりました。久しぶりにハマったのであります。 ちゃんと確認しておくべきだった情報 まずは暗号方式と秘密鍵だけでなく、以下の情報をしっかりと確認しておく必要アリでした。 暗号アルゴリズム 秘密鍵 秘密鍵の長さ ブロック暗号化モード IV(Initialization Vector:初期化ベクトル) padding方式 暗号のことちゃんと勉強した事がないので、なんだかよくわからんけど、必要らしい。 せめて事前にここらへんを読んで勉強しておけばよかった。 ぱせらんメモ http://d.hatena.ne.jp/pasela/20100612/crypto DESに代わる次世代暗号「AES
前回は、Perlで書いたのだけど、 Rubyでも書いてみたので載せます。 動的型付け言語と静的型付け言語における多態性 オブジェクト指向では、多態性(ポリモーフィズム)という発想がでてくる。 この多態性を実現する方法を今回は2つ紹介する。 Rubyは動的型付け言語であり、ダックタイピングという手法で、多態性を実現できる。 対して、静的型付け言語であるJavaでは上位の型を作ることで多態性を実現できる(今回はインタフェースを用いてみた)。 ダックタイピング Rubyでのタックタイピングを見てみよう。 human = Human.new dog = Dog.new duck = Duck.new human.touch(dog) human.touch(duck)いま、このようにhumanがtouchすると、おのおのの動物が鳴くソースを書いてみる。 duck(アヒル)はhuman(人間)に触ら
はじめに 多くのGUIを使ったプログラムでは、ユーザーの操作などに関する処理を「イベント」と呼ばれるものを利用して処理します。イベントというのは、さまざまなプログラムへのアクションに応じて発信される「信号」のようなものだと考えてください。例えば、ユーザーがマウスでボタンをクリックすると、それに対応するイベントが発生する。このイベントに応じて何らかの処理が実行される。そういう仕組みになっているわけです。 GUIのプログラミングでは、このイベント処理が非常に重要となります。Javaに用意されているイベント処理の仕組みについて、ここでしっかりと理解しておきましょう。 対象読者 Javaに興味はある、けれどプログラミング経験がない、という人。 Javaに興味はある、けれど何から手をつければいいかわからない、という人。 Javaに興味はない、でも何でもいいからプログラミングをしたい、という人。 これ
はじめに プログラミングというのは、ある程度の技量がつくまでは、計算したりテキストの処理をしたりといった地味~な作業ばかりするもの、というイメージがあります。が、コマンドラインから数字や文字が出てくるようなプログラムばかり作って、楽しいですか?(筆者は、全然楽しくない!) やっぱり、プログラミングは「作って楽しい」ものでなければやってられません。クロウトならば、どんなものであれ楽しみを見出せるでしょうが、ビギナーのうちは、やっぱり「目に見える」形で動くものでないと楽しさを実感できないでしょう。そう、やっぱりプログラムと言えば「ウインドウ」がないと始まらないのです。そこで、Javaの最も基礎的なところを覚えたところで、「ウインドウ」を使ったプログラムの作り方へと進むことにしましょう。 これまでの記事 Java入門 (1) - まずはここから始めよう Java入門 (2) - 値と制御構文 J
Apache POI(以前はJakarta POIと呼ばれていました)はJavaアプリケーションからExcelやWordなどのMicrosoft製品のフォーマットファイルを読み書きするためのAPIです。 今回は特にExcelのファイルを対象として試していきますが、Excelのファイルの読み書きではApache POIの中のHSSFとXSSFを使用します。HSSFはExcel2003までのファイルフォーマットに対応したもので、XSSFはExcel2007のOOXML(.xlsx)ファイルフォーマットに対応したものです。 Apache POI 3.6のダウンロード Apache POI 3.6のインストール クラスパスの設定
Javaプログラム実行時にプロキシ経由接続が必要だと、java.net.ConnectExceptionが発生する場合があるようです。 今日Saxon+XSLTを使ったXML変換処理を行う際に発生する環境がありました(Saxonが接続しに行くのは、指定されたDTDを取りに行く為です)。 後述するSunのドキュメントで調べたところ、OSのバージョンによって自動でシステムのプロキシ設定を検出できないものがあり、 "最近のWindowsでは対応している"とのこと (なんて抽象的な!)。そしてどうやらVistaがこれに当たり、XPは該当しないようです。 自動検出されないOSの場合は、手動設定します。実行時に以下のいずれかのVMオプションを追加します。 ・プロキシを直接指定する場合: -Dhttp.proxyHost=[ホスト名] -Dhttp.proxyPort=[ポート番号] ・システムのプロキ
Mac OS X 10.4 Tiger で Java 3D を使い、チュートリアルを進めています。 もっといい方法があるのかも知れませんがいまのところ、Xcode でソースを書き、ターミナルで javac を使いコンパイル・ java ~ を実行して結果を見ています。 ひとつ問題があって、ターミナルで javac を使いコンパイルしエラーが発生したときに出るエラーメッセージがなんだか文字化けしてさっぱり読めません。解決策を求めてインターネットの海を漂うと、ありましたありました答えが。 まず原因は『Terminalが日本語に対応していないにも関わらず,javac が日本語でエラーメッセージを出すために文字が化ける』ということでした。 いくつか提案されていた中から当面は『解決案1:英語にする』を採用し、 % env LC_ALL=en javac XXXXX.java でコンパイルする、ことに
Let'sプログラミングでは初心者の方を対象にJavaやPython、PHP、Rubyなど色々なプログラミング言語の解説を行っています。 Java Java入門 これからJavaを使ったプログラミングの習得を目指している方を対象としたチュートリアルです サーブレット(Servlet) / JSP入門 サーバサイドで動作するアプリケーションの作成方法 Androidプログラミング入門 モバイル向けプラットフォーム Android で動くアプリの作成 Swingを使ってみよう GUIを使ったJavaアプリケーションの作成で使用するSwing入門です Eclipse入門 開発環境として広く使われているEclipseのインストールと活用法 Javadocの記述 ソースコードからHTML形式の仕様書を生成します Apache POIでExcelを操作 Excelファイルの作成・操作
Java言語による暗号化をサンプルと共に説明しています。 JDK1.5以上には、JCE(Java 暗号化拡張機能)が含まれており、この機能を利用すると、共通鍵方式による暗号化や公開鍵方式による暗号化機能を実装できます。 このページでは、以下の手法を説明しています。 ・ 共通鍵を自動生成して暗号化する ・ 共通鍵を作成して暗号化する(その1)[htt://www.trustss.co.jp/Java/JEncrypt122.html] ・ 共通鍵を作成して暗号化する(その2)[htt://www.trustss.co.jp/Java/JEncrypt123.html] ・ パスワードベース暗号化[htt://www.trustss.co.jp/Java/JEncrypt124.html] また、Windowd APIとの連携として以下の説明もあります。 ・ Javaで暗号化したデータをWin
整数型を扱う 文字列から整数への変換 16進数文字列を整数型へ変換する 16進数文字列から整数値へ変換するメソッドが、数値型のラッパークラスに用意されています。
パスワードの照合などによく用いられるのがハッシュアルゴリズム,またはダイジェストと呼ばれる関数です。ここでは,広く利用されているハッシュアルゴリズムのMD5を使う方法を紹介します。 暗号化とは少し違う ハッシュアルゴリズムとは,データの全体を反映した別のデータを作るアルゴリズムのことです。ダイジェストとも呼ばれます。データが1ビットでも異なれば,それを反映するハッシュデータも異なる値になります。また,逆方向の変換ができないことも特徴の1つです。計算する過程で情報の一部を意図的に欠落させます。こうすることにより,ハッシュ値から元データを復元できなくすることに大きな特徴があります。 ハッシュは,大きなデータから小さなハッシュを作ることで「チェックサム」として使うこともあります。この用途には,CRCのようなアルゴリズムも一般的に使われます。 ハッシュはまた,パスワード照合にも使われます。ハッシュ
Javaです。 バイナリのファイルデータを読み込むときとかにByteBufferを使ってます。 リトルエンディアン指定で、読み込む場合は、orderを指定します。 import java.nio.ByteBuffer; import java.nio.ByteOrder; public class TestByteBuffer { public static void main(String[] args) { a(); } static void a(){ byte[] bs = {0x01,0x0, 0x0, 0x0}; ByteBuffer buffer = ByteBuffer.wrap(bs); buffer.order(ByteOrder.LITTLE_ENDIAN); System.out.println(buffer.getInt()); } }
byte配列→float型の値を読みlongに変換 UTF-8 encodingで書かれたテキスト分とfloat型 (IEEE-754/octet-stream)で書かれたバイナリ分混ざったファイルがあります。そのファイルをdataInputStreamを使って読んで、byte配列に保存されています。 FileInputStream fis = new FileInputStream(ファイル); DataInputStream dis = new DataInputStream(fis); byte[] bs = new byte[適切なサイズ]; //読み込み dis.read(bs); byte配列「bs」のindex 0 から 5までテキスト情報(XML式のヘッダー情報)あると仮定します。 UTF-8の分は for loop で "new String(bs, loop index
新着記事一覧 OKI データ、植林活動による環境保護とカーボンオフセットをタイで実施 [14:42 9/30] TVアニメ『恋姫†無双』、待望のDVD第一巻登場! 特典は立体マウスパッド!! [14:29 9/30] 質問そのものに投票? 20%ルールから新サービスGoogle Moderator登場 [14:18 9/30] Google Chromeマルチプロセスの功罪、メモリ使用編 [14:10 9/30] HTML 4.01の正しい記述方法、最小構成編 [14:01 9/30] 【コラム】恋する家電 第3回 毎日一緒に過ごしたくなるカメラ、リコー「R10」 [14:00 9/30] 世界的に有名な"福田産コーデュロイ"のオリジナル服を発売 - 東武百貨店 [13:21 9/30] 【インタビュー】蜷川幸雄監督、吉高由里子主演の『蛇にピアス』を原作者・金原ひとみが語る
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く