ホーム
| アプリケーション | Tips | ダウンロード | プログラミング | コラム | ブック


CBアプリ工房


ホーム > アプリケーション > 暗号/復号化ソフトって難しそう?[ 1 ]

暗号/復号化ソフトって難しそう - 1/2

更新 : 2006/08/19

 



実行中の暗号/復号化ソフト 完成品

暗号化ツールの作成について解説します。
ここではシーザー暗号を使った単純な暗号化を考えてみます。文字をただずらすだけでは繰り返しの文字が現れてすぐ解読されてしまいますので、与えられたパスワードに応じてずらす文字数を変える、という方法を採用します。復元は、この逆の処理を行うことになります。

なお、暗号(DES/RSA など)自体の詳しい説明はしていませんので、他の資料を参照してください。

暗号化ツール作成のポイント
●VCL で使う SubString や Length などの文字列関連の扱い方
●C言語の標準関数 sprintf の使い方
以上を理解すれば作成できます。

それでは早速作ってみましょう。



まず、新規にアプリケーションを作成します。以下のコンポーネントを配置後、Name プロパティを変えます。サイズや位置は適当でかまいません。

暗号化/復号化 解説
コンポーネント Name 説明
TMemo OrgMemo ここにオリジナルの文字列を入力します。
TMemo EncodeMemo 暗号化された文字列が表示されます。
TMemo DecodeMemo 復号化された文字列が表示されます。
TEdit KeyEdit ここに暗号化で使うキーワードを入力します。
TLabel ResultLabel 処理結果が表示されます。
TButton EncodeBtn 暗号化の処理を実行します。
TButton DecodeBtn 復号化の処理を実行します。

コンポーネントの配置が済んだら、ヘッダーファイル Unit1.h のコーディングを行います。
#include などが記述してある下の行に、stdio.h をインクルードします。これは、sprintf 関数を使えるようにするためです。


#include <stdio.h> 

次に、ソースファイル Unit1.cpp にインプリメントする、ASCII 文字とキャラクタの変換関数を宣言しておきます。


private:	// ユーザー宣言
    String __fastcall Chr(String str);
    int    __fastcall Ascii(String str); 

実際のコードを Unit1.cpp に書いていきます。
まず先ほど宣言した Chr 関数を作ります。この関数は、ASCII コードから文字をずらした後、キャラクタに変換する処理をします。
最初に関数を作り始めていますが、作る順番は特に決まっていません。自分に都合の良い順番で作成してください。


//------------------------------------------------------ 
//
// 機能 :ASCII文字をキャラクタに変換する
// 引数 :str(ASCII コードの番号)
// 戻り値:キャラクタを返す
// 備考 :数値を ASCII コードの番号と見なし、
//         それに対応するキャラクタを返す
//
//------------------------------------------------------
String __fastcall TForm1::Chr(String str)
{
    int i = StrToInt(str);//数値に変換
    char buf[1];
    sprintf(buf, "%c", i);//文字を取得
    return (String)buf;
}



[ ホーム | ページトップ | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.