暗号DLLマニュアル


は じ め に

商品に含まれるもの

  1. CD-ROM
  2. 使用許諾契約書

 


動作環境について

■対応OS

暗号DLLは、以下に示すOSで動作確認を行っております。

Microsoft Windows 95、Microsoft Windows 98、
Microsoft WindowsNT 4.0、Microsoft Windows 2000、
Microsoft Windows XP、Microsoft Windows 2003、
Active Server Pages(ASP)

暗号DLLを使用するにはMicrosoft RSA Base Providerが必要です。
Microsoft RSA Base Providerは、Windows 95(OSR2以降またはIE3.02以降)、
Windows 98、Windows NT 4.0、Windows 2000、Windows XPで動作します。

 

■開発に必要なソフトウェア

暗号DLLをご使用いただくには、以下のいずれかのソフトウェアが必要です。

Microsoft Visual Basic Ver 5.0
Microsoft Visual Basic Ver 6.0
Microsoft Office 2000 (Access、Excel)
Microsoft Visual Basic Scriting Edition (VB Script) Ver3 以上

 

■参照設定

暗号DLLを利用する際に参照設定が必要になる場合があります。
その場合はプロジェクトの参照設定でWILL CRYPT DLLにチェックしてください。

暗号DLLは、Microsoft Visual C++ Ver 5.0で作成しています。サンプルは、Microsoft Visual Basic Ver 5.0 で作成しています。
※ 本製品は日本語環境のみの対応となります。

 


インストール

暗号OCXのインストールは、開発環境と実行環境によって、利用するセットアップファイルが異なります。

 

■開発環境へのインストール

Willware.exeを利用してインストールを行います。
WILLWARE Components全製品及びそれに付随するマニュアルやサンプルがインストールされます。

 

■実行環境へのインストール

Cryptdll.exeを利用してインストールします。
暗号DLLのマニュアル及びサンプルはインストールされません。


■インストールの手順

画面にしたがって、インストールを進めて下さい。

1.インストールを始めます。「次へ」をクリックして下さい。

2.使用許諾契約書です。内容に同意される場合は「次へ」をクリックして下さい。

3.インストール先のフォルダを指定します。
初期設定でよろしければ「次へ」をクリックして下さい。
別のフォルダを指定したい場合は「参照」をクリックし、フォルダを指定して下さい。

4.インストール中に置換されるファイルのバックアップを作成できます。
そのバックアップファイルの保存先フォルダを指定します。
初期設定でよろしければ「次へ」をクリックして下さい。

5.WILLWARE Componentsを登録するスタートメニュー又はプログラムマネージャのグループフォルダを指定します。
初期設定では、新規に「WILLWARE Components」の名前でフォルダを作成します。
特に指定する必要がなければ、初期設定をお勧めします。

6.プログラムのコピーを開始します。「次へ」をクリックして下さい。

7.プログラムのコピーをしています。中断する場合は、「キャンセル」をクリックして下さい。

8.インストールが完了しました。「完了」をクリックし、インストールを終了して下さい。

 


ライセンスの登録

ライセンスを登録します。
スタートメニューより、「プログラム」→「WILLWARE Components」→「ライセンス登録について」→「暗号DLL専用ライセンス登録」を起動してください。

以下の「WILL LICENSE REGISTRATION」画面が起動しますので、ソフトウェア使用許諾契約書に明記されている
「ユーザー名」、「シリアル番号」、「キーコード」を入力してください。
トライアルライセンスから正規ライセンスへ移行する場合も、こちらの画面で登録を行ってください。

 

■ライセンス入力時のご注意

※ライセンスが入力できない!?

入力したライセンスにスペースが含まれていないか確認して下さい。
(ライセンスに、スペースは使用していません。)

 


サンプルを見る

インストールが完了すると、スタートメニューに「WILLWALE Components」が追加されます。

「WILLWALE Components」の「サンプル」を起動すると「WILLWARE Components サンプル」画面が表示されます。
サンプルの起動、またはそれぞれのソースを開くことができます。
但し、ソースを開くにはライセンスが必要です。トライアルライセンス又は、正規ライセンスを登録してご利用下さい。
(ライセンスの登録方法は前項の「ライセンスの登録」をご覧下さい。)

 


サポートについて(無償)

サポートは基本的に電子メールで受け付けております。サポートは無償でご利用いただけます。

 

■お問い合わせの前に

サポート作業を円滑に行うために、お問い合わせの際には以下の情報をご用意下さい。

  1. 製品名及びバージョン
  2. 開発環境(OSの種類及びバージョン、サービスパッケージの種類)
  3. 開発ツール及びバージョン
  4. サーバーの種類
  5. 問題点

 

■FAQ

弊社ホームページの「サポート」のページで、キーワードを入力してFAQを検索できます。
休業日などサポートの対応が遅れる場合もありますので、まずはこちらをご確認下さい。

 

■お問合せ先

info@will-ltd.co.jp

 


バージョンアップについて(無償)

製品のバージョンアップは、すべて無償です。

 

■バージョンアップ情報の入手方法

バーションアップの情報は、弊社ホームページの新着情報で通知し、各商品のページの更新履歴で更新内容を掲示致します。

 

■最新バージョンの入手方法

最新バージョンのプログラムは、弊社ホームページ(http://www.will-ltd.co.jp/)のダウンロードのページよりダウンロードすることが出来ます。ダウンロードするファイルは、以下のバージョンアップの目的により異なりますのでご注意下さい。

開発環境でのバージョンアップ

  • WILLWARE Components(全製品)のバージョンアップ

    ダウンロードファイル名:「Willware.exe」

    「Willware.exe」は全ての製品の最新版をインストールするためのものです。そのため本製品以外の製品及びサンプル、マニュアルも同時にバージョンアップされます。

  • 暗号DLL単体のバージョンアップ

    ダウンロードファイル名:「Cryptdll.exe」

    「Cryptdll.exe」は暗号DLLのdllファイル及び依存ファイルのみの最新版をインストールするためのものです。サンプル及びマニュアルはバージョンアップされませんのでご注意下さい。

実行環境でのバージョンアップ

  • 暗号DLL単体のバージョンアップ

    ダウンロードファイル名:「Cryptdll.exe」

    暗号DLLのdllファイル及び、依存ファイルがバージョンアップされます。

 

■バージョンアップをする前に

各セットアップキットを利用してバーションアップをする前に、以下のことにご注意下さい。

  • 「Willware.exe」を利用してバージョンアップする場合は、古いバージョンをアンインストールしてから、最新バージョンをインストールすることをお勧めいたします。

    ※アンインストールの方法は、スタートメニューから「設定」→「コントロールパネル」→「アプリケーションの追加と削除」の画面で、「WILLWARE Components」を選択し、画面の指示に従って行って下さい。

  • 「Cryptdll.exe」を利用してバージョンアップする場合は、最新バージョンをそのままインストールして下さい。古いファイルは上書きされます。

    ※弊社製品を複数ご利用いただいている場合、いずれか1つをバーションアップしても他の製品に影響はありません。

 

■バージョンアップの方法

セットアップキットをダブルクリックし、画面の指示に従ってインストールを進めて下さい。

 


実行時に必要なファイル

暗号DLLはATLを用いて作成していますので、暗号.dll以外に必要なファイルはありません。

 


再配布について

■作成したアプリケーションの配布時

作成したアプリケーションに本プログラムを組み込んで再配布した場合、
実行するマシン毎にライセンスが必要になります。

 

■著作権

 


製 品 概 要

特 徴

暗号DLLは、データの暗号と復号、およびデータの要約値の計算を行うためのインプロセスActive X オートメーションサーバーです。VBやVC++はもとよりASPなどのスクリプト環境からも利用できます。

暗号DLLの暗号方式は米RSA社のRC4と呼ばれる暗号方式です。RC4はSSLでも採用されていて、高速であること、バイト単位のデータの暗号化ができること、40ビットから128ビットまでの暗号強度を選択できることなどが特徴です。RC4の鍵は秘密鍵(共通鍵)方式で、いわゆるパスワードを用いて暗号を行います。

暗号DLLは、Microsoft Cryptographic Providerを利用しています。

暗号DLLは暗号OCXと暗号データに互換性があります。暗号OCXで暗号化したデータを暗号DLLで復号化することやその逆を行うことができます。

要約値の計算は、MD5およびSHA-1の2つの方法から選択できます。要約値は、データに固有な値を表現しますので、データの同一性を保証するためやデータの改竄(かいざん)を検出するために利用されます。

 


プログラミング概要

宣 言

VBにおける宣言の方法は4種類あります。

その1

Dim Crypt1 As New WILLCRPT

その2

Dim Crypt1 As WILLCRPT
Set Crypt1 = New WILLCRPT

その3

Dim Crypt1 As WILLCRPT
Set Crypt1 = CreateObject("WILLCRPT")

その4

Dim Crypt1 As Object
Set Crypt1 = CreateObject("WILLCRPT")

VBScript(ASP)の場合の宣言の方法

Dim Crypt1
Set Crypt1 = Server.CreateObject("WILLCRPT")

 


暗号化および復号化

暗号化する手順は

  1. OpenRC4メソッド
  2. Encryptメソッド(必要に応じて繰り返し呼び出す)
  3. CloseRC4メソッド

です。
暗号結果はEncryptメソッドに渡した変数に戻されます。

OpenRC4メソッドでパスワード、パスワードのハッシュ方法、暗号強度、文字データを暗号化した場合の出力フォーマットを指定します。
パスワードは、Unicodeで指定してください。
このパスワードのハッシュ値(要約値またはダイジェスト値とも呼ぶ)を用いて暗号化します。

ハッシュ方法は、MD5とSHA-1のいづれかを選択できます。
MD5を利用するときは、0を、SHA-1を利用するときは、1をパスワードのハッシュ方法として指定してください。

暗号強度は、40から128までの値を指定できますが、利用できる暗号プロバイダ(Cryptographic Provider)によって指定できる値に制限があることがあります。


暗号プロバイダー名

利用できる強度(ビット数)

Microsoft Base Cryptographic Provider v1.0

40,128

Microsoft Base Cryptographic Provider v1.0

40-56,128

Microsoft Enhanced Cryptographic Provider

40-128

Microsoft Strong Cryptographic Provider

40-128


「Microsoft Base Cryptographic Provider v1.0」は2種類あり、初期のもの(IE4.0以前に附属のもの)は40または128ビットしか指定できません。
強度と互換性を考えると、128ビットを選択するのが良いでしょう。暗号プロバイダを確認するには、GetCPSNameメソッドを呼び出してください。
GetCPSメソッドはいつでも呼び出すことができます。

暗号化するデータが文字列の場合、そのまま暗号化すると、暗号結果が文字列としては正しくなくなる場合があります。
暗号後も文字列として扱いたい場合は、出力フォーマットに0を指定することで、16進文字列として暗号結果を格納することができます。(デフォルト)
ただし、この場合、出力される文字列の長さは暗号前の長さの2倍になるので、格納するエリアの大きさに注意してください。

逆に、暗号結果をバイナリ文字列として扱いたい場合は1を指定してください。
この場合、暗号前の文字列の長さと暗号後の文字列の長さは同じになります。

データを暗号化するには、Encryptメソッドを呼び出します。
引数は、ユーザー定義型、オブジェクト型を除くすべての型とその一次元配列(ただしバリアントおよび文字列の配列は除く)を指定できます。
暗号化した結果はもとの変数に格納されます。
大きなファイルを暗号化する場合や、ネットワークで転送しながら暗号化する場合には、
データを小分けにして複数回Encryptメソッドを呼び出してください。分ける最小単位はバイトです。
効率を考えてある程度の大きさでわけると良いでしょう。

暗号化が終了したらCloseRC4メソッドを呼び出してください。
このメソッドを呼び出さないと再度OpenRC4メソッドを呼び出すことができません。

復号化する手順は

  1. OpenRC4メソッド
  2. Decryptメソッド(必要に応じて繰り返し呼び出す)
  3. CloseRC4メソッド

です。

復号結果はDecryptメソッドに渡した変数に戻されます。

復号化では暗号化を行ったパラメータを使ってOpenRC4メソッドを呼び出してください。
ことなるパラメータを使うとエラーにならずに異なる結果を生み出します。

ただしく復号されたかどうかを知るには、暗号するデータにチェック用のデータを忍ばせておくのが良いでしょう。
正しく復号化できたときだけ正しいチェック用のデータが得られます。

 


要約値の計算

要約値は、データに依存する16バイトまたは20バイトの値です。

要約値を計算する手順はOpenDigestメソッド

  1. AddDigestメソッド(必要に応じて繰り返し呼び出す)
  2. GetDigestValueメソッドまたはGetDigestHexStringメソッド
  3. CloseDigestメソッド

です。

要約値の計算方法は2つあります。MD5とSHA-1です。
AddDigestで要約計算対象となるデータを渡します。
大きなファイルの要約値を計算する場合はデータを小分けにして複数回AddDigestメソッドを呼び出してください。
分ける最小単位はバイトです。効率を考えてある程度の大きさでわけると良いでしょう。

要約値を取り出すには、GetDigestValueメソッドまたはGetDigestHexStringメソッドを使います。
GetDigestValueメソッドはバイナリ文字列、GetDigestHexStringメソッドは16進文字列を返します。

 


エラー処理

暗号DLLはトラップ可能なエラーを発生しません。
そのかわり、各メソッドの戻り値でエラーかどうかを判定できるようにしています。
エラーが発生した場合は、戻り値、Errorプロパティの値、ErrorMessageプロパティの値を確認してください。

 


プロパティ

Errorプロパティ

■機 能

エラーコードが格納されています。

■構 文

Object.Error
Errorプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■データ型

長整数(Long)

 

ErrorMessageプロパティ

■機 能

エラーの説明が格納されています。

■構 文

Object.ErrorMessage
ErrorMessageプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■データ型

文字列(String)

 

Copyrightプロパティ

■機 能

暗号DLLのバージョン番号が格納されています。

■構 文

Object.Copyright
Copyrightプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■データ型

文字列(String)

 


メソッド

OpenRC4メソッド

■機 能

RC4暗号及び復号を行う為の準備を行います。

■構 文

Object.OpenRC4(PassWord As String, HashAlgorithm As Long, Bits As Long, [Format])
OpenRC4メソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。
PassWord パスワードです。
HashAlgorithm ハッシュアルゴリズムです。
0:MD5
1:SHA
Bits 暗号強度(40から128の間の数値)です。
Format 変換フォーマットです。
0:HEX
1:なし

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

■解 説

Encrypt,Decryptをおこなう前にかならず実行します。暗号強度は、40から128までの間の数値を指定できますが、57から127までの値を設定する場合は、Windowsの暗号強度を128ビットにしておく必要があります。サポートしていない強度を選択するとエラーになります。CRYPTOCXと互換を取るには、40または128を指定してください。(40の時はCreateSaltをFalseに、128のときは、CreateSaltをTrueに設定したものに対応します。)変換フォーマットは、文字列の暗号化にのみ有効です。EncryptとDecryptは同じフォーマットを選択する必要があります。

 

Encryptメソッド

■機 能

データを暗号化します。

■構 文

Object.Encrypt(Data)
Encryptメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。
Data 暗号化する任意の変数です。

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

■解 説

Dataには、任意の変数(1次元配列も含む)を指定できます。(Object型、ユーザー指定型、文字列型の配列、VARIANT型の配列は除きます。)Dataに文字列を指定した場合、OpenRC4で指定したFormatに従った変換を行います。暗号結果は元の変数に格納します。

 

Decryptメソッド

■機 能

データを復号化します。

■構 文

Object.Decrypt(Data)
Decryptメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。
Data 復号化する任意の変数です。

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

■解 説

Dataには、任意の変数(1次元配列も含む)を指定できます。(Object型、ユーザー指定型、文字列型の配列、VARIANT型の配列は除く)Dataに文字列を指定した場合、OpenRC4で指定したFormatに従った変換を行います。復号結果は元の変数に格納します。

 

CloseRC4メソッド

■機 能

暗号・復号処理を終了します。

■構 文

Object.CloseRC4()
CloseRC4メソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

■解 説

RC4暗号処理のための資源を解放します。

 

GetCSPNameメソッド

■機 能

CSP(CryptographicServiceProviders)名を取得します。

■構 文

Object.GetCSPName
GetCSPNameメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■戻り値

文字列(String)

 

OpenDigestメソッド

■機 能

要約を得るための準備を行います。

■構 文

Object.OpenDigest(HashAlgorithm As Long)
OpenDigestメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。
HashAlgorithm ハッシュアルゴリズム
0:MD5
1:SHA

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

 

AddDigestメソッド

■機 能

データの要約値を計算します。

■構 文

Object.AddDigest(Data)
AddDigestメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。
Data ダイジェスト値を計算する任意の変数です。

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(値) (説 明)
0 正常
0以外 エラー

■解 説

Dataには、任意の変数(1次元配列も含む)を指定できます。
(Object型、ユーザー指定型、文字列型の配列、VARIANT型の配列は除きます。)

 

GetDigestValueメソッド

■機 能

ダイジェスト値をバイナリとして取り出します。

■構 文

Object.GetDigestValue()
GetDigestValueメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■戻り値

Variant。戻り値が示す値は以下の通りです。
(値) (説 明)
"" エラー
""以外 正常。バイナリ文字列が格納されます。

■解 説

MD5の場合は16バイト、SHAの場合は20バイトになります。

 

GetDigestHexStringメソッド

■機 能

要約値を16進文字列として取り出します。

■構 文

Object.GetDigestHexString
GetDigestHexStringメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■戻り値

文字列(String)。戻り値が示す値は以下の通りです。
(値) (説 明)
"" エラー
""以外 正常

■解 説

MD5の場合は32文字、SHAの場合は40文字になります。

 

CloseDigestメソッド

■機 能

要約処理を終了します。

■構 文

Object.CloseDigest()
CloseDigestメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object 暗号DLLオブジェクトです。

■戻り値

長整数(Long)。戻り値が示す値は以下の通りです。
(指定項目) (内 容)
0 正常
0以外 エラー

■解 説

ダイジェスト値計算処理のための資源を解放します。

 


エラーコード

発生しうるエラーコード

メソッド名 戻値 ErrorMessage
OpenRC4 -1 すでにオープンしています
-2 HashAlgorithmの値が範囲外です
-3 Bitsの値が範囲外です。
-4 ライセンスが正しくありません
-10 APIエラー
-11 APIエラー
AddDigest -2 オープンしていません
-3 文字列の配列は扱うことができません
-4 バリアントの配列は扱うことができません
-5 一次元配列以外は扱うことができません
-6 取り扱えない変数です
-7 取り扱えない変数です
-8 APIエラー
-9 APIエラー
-10 APIエラー
GetDigestHexString "" オープンしていません
"" APIエラー
GetDigestValue "" オープンしていません
"" APIエラー
Encrypt -2 オープンしていません
-3 文字列の配列は扱うことができません
-4 バリアントの配列は扱うことができません
-5 一次元配列以外は扱うことができません
-6 取り扱えない変数です
-7 取り扱えない変数です
-8 APIエラー
-9 APIエラー
-10 APIエラー
-11 APIエラー
-12 APIエラー
Decrypt -2 オープンしていません
-3 文字列の配列は扱うことができません
-4 バリアントの配列は扱うことができません
-5 一次元配列以外は扱うことができません
-6 取り扱えない変数です
-7 取り扱えない変数です
-8 APIエラー
-9 APIエラー
-10 APIエラー
-11 APIエラー
-12 APIエラー

 


サンプル

WillCrypt

(Ver1.00)

WillCryptは、RC4(データ)の暗号化と復号化するサンプルです。

■使い方

  1. 暗号したい文を「平文」に入力して下さい。
  2. パスワードを指定して下さい。
  3. 128ビットを指定する場合は、チェックボックスにチェックをつけてください。
  4. 「暗号化」ボタンを押すと。入力した文が暗号化されます。
  5. 「複合化」ボタンを押すと暗号化された文が複合化されます。

 


暗号DLL for VB Script(ASP)サンプル

(Ver1.00)

暗号DLLをVB Scriptでコーディングする為のサンプルです。

■ サンプル表示画面

 

■ サンプルソースコード

<HTML>
<HEAD><TITLE>WILL 暗号DLL TEST</TITLE></HEAD>
<BODY>
<%     
       Dim CSP,ORG,ENC,DEC,ERRNUM,ERRMSG
       Dim pass,hash,bits,obj
       pass = "password"
       hash =   0 'MD5
       bits = 128 '暗号強度
       ORG = "このデータを暗号化します" '平文

       '暗号DLLのインスタンスを得る
       Set obj = Server.CreateObject("WILLCRPT")
       'プロバイダー名を得る
       CSP = obj.GetCSPName
       DO
               '暗号化する
               ERRNUM = obj.OpenRC4(pass,hash,bits)
               If ERRNUM <> 0 Then Exit Do
               ENC= ORG
               ERRNUM = obj.Encrypt(ENC) 'ENCに暗号結果が格納される
               If ERRNUM <> 0 Then Exit Do
               obj.CloseRC4
               '復号化する
               ERRNUM = obj.OpenRC4(pass,hash,bits)
               If ERRNUM <> 0 Then Exit Do
               DEC = ENC
               ERRNUM = obj.Decrypt(DEC) 'DECに復号結果が格納される
               If ERRNUM <> 0 Then Exit Do
               obj.CloseRC4
       Loop While(0)
       'エラーメッセージを得る
       If ERRNUM <> 0 Then
               ERRMSG = obj.ErrorMessage
       End If
%>
       <p>プロバイダー名 </p>
       <blockquote>
         <p><% = CSP %></p>
       </blockquote>
<%
       If ERRNUM = 0 Then
%>
       <p> 元のデータ</p>
       <blockquote>
         <p>[<% = ORG %>]</p>
       </blockquote>
       <p> 暗号化されたデータ</p>
       <blockquote>
         <p>[<% = ENC %>]</p>
       </blockquote>
       <p> 復号化されたデータ</p>
       <blockquote>
         <p>[<% = DEC %>]</p>
       </blockquote>
<%
       Else
%>
       <p><BR>
         エラーが発生しました。 </p>
       <blockquote>
         <p> <% = ERRMSG %>(<% = ERRNUM %>) </p>
       </blockquote>
<%
       End If
%>
</BODY>
</HTML>

 


株式会社ウィル

(C) Copyright 2002 WILL Corporation. All rights reserved