ホーム > プログラミング > 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.