| ホーム > プログラミング > Windows プログラミング > HTTP通信のリクエスト送信とレスポンス確認 |
文字列の暗号化、および、復号化の方法をまとめます。
ここでは、Win32API の Cryptography Functions を利用した、文字列の暗号化、および、複合化の方法をまとめます。
準備
- ・windows.h および wincrypt.h のインクルード
- #include <windows.h>
#include <Wincrypt.h>
をファイルヘッダー部に追加します。
これにより、Win32API の Cryptography Functions が使えるようになります。
暗号化装置の準備処理の手続き
文字列の暗号化、複合化の処理に先立って、暗号化装置の準備をする必要があります。
- 1.暗号化プロバイダの準備
- CryptAcquireContext 関数を利用し、暗号化プロバイダの取得もしくは作成をおこないます。
- 2.署名用キーの準備
- CryptGetUserKey 関数を利用し、署名用キーの取得します。署名用キーが存在しなければ、CryptGenKey 関数を利用し、署名用キーを作成します。
- 3.鍵交換用キーの準備
- 「署名用キーの準備」と同様の手続きで、鍵交換用キーの準備をします。
文字列の暗号化処理の手続き
暗号化したい文字列とキー文字列をインプットとし、暗号化結果バイト列とバイト列のサイズをアウトプットします。
- 1.暗号化プロバイダの取得
- CryptAcquireContext 関数を利用し、暗号化プロバイダ(HCRYPTPROV型オブジェクト)の取得をおこないます。
- 2.ハッシュオブジェクトの作成
- CryptCreateHash 関数を利用し、ハッシュオブジェクト(HCRYPTHASH型オブジェクト)の作成をおこないます。
- 3.ハッシュオブジェクトに、ハッシュ値を求める元となるデータの追加
- CryptHashData 関数を利用し、ハッシュオブジェクトに、ハッシュ値を求める元となるデータ(キー文字列)の追加をおこないます。
- 4.ハッシュオブジェクトから暗号キーの取得
- CryptDeriveKey 関数を利用し、ハッシュオブジェクトから暗号キー(HCRYPTKEYオブジェクト)の取得をおこないます。
- 5.暗号化
- CryptEncrypt 関数を利用し、暗号化したい文字列の暗号化をおこないます。
- 6.オブジェクトの破棄、開放
- CryptDestroyKey 関数を利用し暗号キーの破棄、CryptDestroyHash 関数を利用しハッシュオブジェクトの破棄、CryptReleaseContext 関数を利用し暗号化プロバイダの開放、をおこないます。
暗号化されたデータの複合化処理
複合化したい暗号化されたバイト列とバイト列のサイズとキー文字列をインプットとし、複合化結果文字列をアウトプットします。
- 1.暗号化プロバイダの取得
- 「文字列の暗号化処理の手続き」の同じ項と同じ処理。
- 2.ハッシュオブジェクトの作成
- 「文字列の暗号化処理の手続き」の同じ項と同じ処理。
- 3.ハッシュオブジェクトに、ハッシュ値を求める元となるデータの追加
- 「文字列の暗号化処理の手続き」の同じ項と同じ処理。
- 4.ハッシュオブジェクトから暗号キーの取得
- 「文字列の暗号化処理の手続き」の同じ項と同じ処理。
- 5.複合化
- CryptDecrypt 関数を利用し、複合化したい暗号化されたバイト列の複合化をおこないます。
- 6.オブジェクトの破棄、開放
- 「文字列の暗号化処理の手続き」の同じ項と同じ処理。
サンプルプロジェクト
コメント
ご意見、ご感想、ご質問、ご要望等は、「コメントを投稿する」もしくは「ホーム
> コンタクト」よりお願いいたします。
内容の誤り、誤字脱字、リンクミスなどの問題点を発見された場合には「コメントを投稿する」もしくは「ホーム
> コンタクト」より連絡していただけると幸いです。
Copyright (c) 2004-2010 Nobuki HIRAMINE All rights reserved.