タイムスタンプ署名されたデータから利用者が確認できる情報

タイムスタンプ署名の生成と検証のわかりやすいフローがあったので紹介します。
タイムスタンプ署名の生成、検証フロー
タイムスタンプサービスSecureSealの仕組み-SecureSeal:NTTデータ
タイトルのタイムスタンプ署名されたデータから利用者が確認できる情報は、データのコード署名が行われた日時です。

図の説明

利用者がタイムスタンプトークンをデータと一緒に取得した後、TSAの公開鍵を用いてタイムスタンプトークンを複合します(7)。複合するとハッシュ値(メッセージダイジェスト)+日時(コード署名が行われた日時)を取得できますので、ここで取得できたハッシュ値と、取得したデータから算出したハッシュ値を比較して改ざんやなりすましがされていないかを確認します(8)。

Posted in Security | Tagged | Leave a comment

Android: リソースの画像ファイルの拡大・縮小描画 – drawBitmap()

画像ファイルの表示(拡大・縮小)

表示する画像はEclipse上でAndroidプロジェクト作成時に自動的に作成されるIcon画像です。
画像パス:プロジェクト名/res/drawable-hdpi/icon.png

resフォルダ以下に置かれたリソースはコンパイル時にプログラムに組み込まれます。その画像リソースを読み込む際は、

Bitmap BitmapFactory.decodeResource(Resources r, int resourcesID)

を用います。読み込んだBitmapインスタンスを描画するには、Canvasクラスのインスタンスメソッドである

void drawBitmap(Bitmap image, int x, int y, Paint p)

を使います。なお、拡大・縮小する場合も上記のdrawBitmapをオーバーロードしたものを使います。

void drawBitmap(Bitmap image, Rect src, Rect dst, Paint p)

今回のサンプルプログラムでは、元画像の幅と高さを2倍したイメージを描画しています。

ImageSp.java

package info.yukun.imagesp;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class ImageSp extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(new ImageView(this));
	}
}

ImageView.java

package info.yukun.imagesp;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
import android.view.View;

public class ImageView extends View {

	private Bitmap image;

	public ImageView(Context context) {
		super(context);
		setBackgroundColor(Color.WHITE);

		// リソースの画像ファイルの読み込み
		Resources r = context.getResources();
		image = BitmapFactory.decodeResource(r, R.drawable.icon);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// イメージ描画
		canvas.drawBitmap(image, 0, 0, null);

		int w = image.getWidth();
		int h = image.getHeight();
		// 描画元の矩形イメージ
		Rect src = new Rect(0, 0, w, h);
		// 描画先の矩形イメージ
		Rect dst = new Rect(0, 200, w*2, 200 + h*2);
		canvas.drawBitmap(image, src, dst, null);
	}
}
Posted in Android | Tagged , , | 1 Comment

携帯の迷惑メールフィルタのホワイトリスト(ドメイン)設定例

携帯メールアドレスを分かりやすい文字列(短いor意味がある)すると迷惑メールが頻繁に来るので、迷惑メールフィルタのホワイトリスト設定で受信許可するドメインを絞ると良いかもしれません。

追記(2009-7): 許可アドレス以外は問答無用ではじいてしまうので、予期しないドメインからの重要なメールを取りこぼしてしまいます。ブラックリスト型に切り替えようかな。

ホワイトリストドメイン例

softbank.ne.jp
vodafone.ne.jp
ezweb.ne.jp
docomo.ne.jp
gmail.com
me.com
mac.com
i.softbank.jp
dk.pdx.ne.jp

迷惑メールのドメインをチェックするとyahoo.com、yahoo.co.jpやhotmail.comが多いので、これらはリストには入れませんでした。
その他、使用しているサービスからの連絡メールが受け取れるように別途ドメインを追加していけば良いかと思います。

Posted in Security | Tagged , , | 3 Comments

SJC-Pに受かった

春先にSunがOracleに買収されて私的に気になるMySQLの形振りどうなるのかな、とか今後のOracleのロードマップ次第ではPostgreSQLのOSSとしての立場が再度見直されそう、とかSJC-P(Sun Certified Programmer for the Java Platform, Standard Edition 5.0)の名前や内容が変わるか否かが少し気になってましたが、そういった今後のことは今夏に発表らしいので(手続きや株主の訴訟が解決後?みたい)、気兼ねなくできました。

この試験はスコアが分野別にも集計してくれるので受験者の知識・技能を細かく評価するのに役立ちます。私はAPIコンテンツや並行性のセクションが100%に対してコレクション/ジェネリックスのセクションが相対的に低いという少し意外な結果が出たので、今日は自分のレベルが客観的に分かって収穫だったかも。今後の学習の指針にしよう。

Posted in Days | Tagged , , | Leave a comment

Excel VBA: 指定した行、列内のテーブルのセルに乱数を格納

excel_vba_random_cells

今回のネタは乱数でサンプルデータを生成したいときなどに使えますかね。

ソースコード

Sub randloop()
    Randomize ' シードの設定(引数省略でシステムタイマーの値)
    Const GYO_S As Integer = 1 ' 開始行
    Const RETSU_S As Integer = 1 ' 開始列
    Const GYO_E As Integer = 10 ' 終了行
    Const RETSU_E As Integer = 5 ' 終了列
    Const UPPER As Integer = 100 ' 乱数の最大値
    Const LOWER As Integer = 0 ' 乱数の最小値

    ' 指定された行、列のテーブル内のセルに乱数を格納
    For i = GYO_S To GYO_E
        For j = RETSU_S To RETSU_E
            ' Rndは[0, 1)の範囲の値を返す
            Cells(i, j).Value = Int((UPPER - LOWER + 1) * Rnd + LOWER)
        Next j
    Next i
End Sub

実行結果は上図のように0~100の範囲の乱数(今回は整数)が格納されます。
上記のコードの要の式は

(upper - lower + 1) * Rnd + lower

です。簡単に意味を説明しますと括弧内の+1はRndの戻り値の範囲が1未満の為の補正で、式の最後の+lowerはRndの戻りが0の場合の補正、と捉えます。

参考サイト

Posted in Excel VBA | Tagged , , | 1 Comment

Java: OR論理演算子の評価条件

以前、OR演算の2つのオペランドが両方評価されるか否かがあやふやだったので以下のコードを以て改めて確認してみます。

public class Sample1 {
  public static void main(String[] args) {
    int i = 5, j = 10, k =15;
    if ((i++ < j) | (k-- > j))
      System.out.println("values of i: " + i + " values of k: " + k);
    if ((i < j) || (--k > j))
      System.out.println("values of k: " + k);
  }
}

実行結果は

values of i: 6 values of k: 14
values of k: 14

となります。
1つめのif文で使われている演算子はビット論理OR演算子で左右の両オペランドを評価します。よって式i++とk–が評価されているため結果はvalues of i: 6 values of k: 14となります。

2つめのif文で使われているのは短絡論理OR演算子で、評価順序は||の左側のオペランドを先ず評価し、それがtrueなら右側は評価せず(ORは片方が真ならもう片方の結果にかかわらず真ですから)、falseなら評価します。よって、if ((i < j) || (--k > j))ではi < jがtrueとなるため--k > jは評価されずkはデクリメントされません。よってkの値は変わらず、上記のような実行結果となります。

Posted in Java | Tagged | Leave a comment

Words of the Day – Friday March 27, 2009

28. It goes without saying that her condition is fatal.
29. Encountering a inevitable problem, we should solve it steadily.
30. What is juvenile delinquency caused by in the school?
31. “In all likelihood, my intuition will be right under these circumstances!” “huh…” “What!?” “Oh, Nothing in particular.”
32.This seat is vacant because it’s the priority seat.
33. If anything, I’m making much of quality over quantity.

Posted in Words of the Day | Tagged , | Leave a comment

Words of the Day – Thursday March 26, 2009

25. Why did you compromise on your opinion.
26. Typically, competent engineers have a decent custom.
27. Reflecting the past dismal consequences, we’ll execute the concrete idea.

Posted in Words of the Day | Tagged , | Leave a comment

Words of the Day – Wednesday March 25, 2009

23. Who afford to keep track of behavior of soldiers in the battle field?
24. Please inform me of your progress on a weekly basis.

Posted in Words of the Day | Tagged , | Leave a comment

Words of the Day – Tuesday March 24, 2009

20. He begged her to help.
21. I’m apt to shake my head on impulse when I’m busy.
23. In end of month, I’m sometimes broke.

Posted in Words of the Day | Tagged , | Leave a comment