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

CBアプリ工房


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

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

更新 : 2009/12/15

 



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

暗号化ツールの作成について解説します。

ここではシーザー暗号を使った単純な暗号化を考えてみます。文字をただずらすだけでは繰り返しの文字が現れてすぐ解読されてしまいますので、与えられたパスワードに応じてずらす文字数を変える、という方法を採用します。今回復元までのコードはありません。暗号化の逆の処理を行うことで復元されますので、時間のある方は挑戦してみてください。

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

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

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



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

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

コンポーネントの配置が済んだら、ヘッダーファイル Unit1.h のコーディングを行います。

#include などが記述してある下の行に、stdio.h をインクルードします。これは、sprintf 関数を使えるようにするためです。


#include <stdio.h> 

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


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

実際のコードを Unit1.cpp に書いていきます。

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


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

続く・・・。



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