Windowsで暗号プログラムを書いてみる(RSA編 おまけ2) | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

Windowsで暗号プログラムを書いてみる(RSA編 その2)で掲載した関数を実行するサンプルコード(main)です。

クラスの使い方等の参考になれば。

 

rsa_test.cpp

#include "pch.h"
#include <iostream>
#include "CryptRSA.h"


int main()
{
    DataContainer objPrivateKey;
    DataContainer objPublicKey;
    DataContainer objPrivateKeyStr;
    DataContainer objPublicKeyStr;

    char strTestData[] = "Test data";
    DataContainer objTestData;

    // 鍵の生成
    CryptRSA::CreateRSAKey(&objPrivateKey, &objPublicKey);

    // Blobから文字列へ変換
    CryptRSA::ConvertBinToString(&objPrivateKey, &objPrivateKeyStr, CRYPTRSA_FLAG_PRIVATE);
    objPrivateKeyStr.OutputToFile("TestPrivateKey.pem");

    CryptRSA::ConvertBinToString(&objPublicKey, &objPublicKeyStr, CRYPTRSA_FLAG_PUBLIC);
    objPublicKeyStr.OutputToFile("TestPublicKey.pem");


    // 文字列からBlobへ変換
    objPrivateKey.ClearDataObject();
    objPublicKey.ClearDataObject();
    objPrivateKeyStr.ClearDataObject();
    objPublicKeyStr.ClearDataObject();

    objPrivateKeyStr.InputFromFile("TestPrivateKey.pem");
    CryptRSA::ConvertStringToBin(&objPrivateKeyStr, &objPrivateKey, CRYPTRSA_FLAG_PRIVATE);

    objPublicKeyStr.InputFromFile("TestPublicKey.pem");
    CryptRSA::ConvertStringToBin(&objPublicKeyStr, &objPublicKey, CRYPTRSA_FLAG_PUBLIC);


    // 暗号化
    objTestData.CreateDataObject(strlen(strTestData)+1);
    memcpy(objTestData.GetDataPointer(), strTestData, strlen(strTestData));
    objTestData.SetCurrentDataSize(strlen(strTestData)+1);
    CryptRSA::Encrypt(&objPublicKey, &objTestData);

    // 復号化
    CryptRSA::Decrypt(&objPrivateKey, &objTestData);

    return 0;
}