Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Szyfrowanie RSA w C++

Z8 21 Sty 2007 13:34 4418 0
  • #1 21 Sty 2007 13:34
    Z8
    Poziom 12  

    Witam

    Z kryptograii dostałem zadanie by zrobic program szyfrujacy asymetrycznie.

    Program ma szyfrować i deszyfrować oraz generować parę kluczy (publiczny i prywatny) do pliku. Do szyfrowania należy wykorzystać odpowiednie biblioteki kryptograficzne.

    Znalazłem bibliotekę Crypto++ http://www.cryptopp.com/ tylko nie wiem w jaki sposób ją wykorzystać w projekcie.
    Używam Dev-C++ oraz Visual C++ 2005 Expres Edition

    Znalazłem na necie gotowy program z wykorzystaniem Crypto++

    Code:


    Przyklad szyfrowania kluczem publicznym i
    deszyfrowania kluczem prywatnym RSA
    (zastosowanie: ustalanie symetrycznych kluczy sesyjnych)

    Biblioteka Crypto++ v.5.1
    */

    #include "stdafx.h"

    #include <iostream>

    #include "cryptopp/rsa.h"
    #include "cryptopp/filters.h"
    #include "cryptopp/osrng.h"
    #include "cryptopp/base64.h"
    #include "cryptopp/files.h"
    #include "cryptopp/sha.h"

    using namespace CryptoPP;
    using namespace std;

    int main(int argc, char* argv[])
    {
          //jakas informacja (domyslnie losowy klucz sesyjny)
       string shortMessage =
          "Wiadomosc musi byc krotsza niz rozmiar klucza RSA minus zalacznik OAEP";
     
       string file;
       
       cout << "Szyfrowanie wiadomosci" << endl;
       cout << "Klucz publiczny: ";
       getline(cin, file);
       RSAES_OAEP_SHA_Encryptor pubkey( FileSource(file.c_str(), true,
          new Base64Decoder()));

       //ustalamy potrzebny rozmiar bloku korzystajac z metody pubkey.CiphertextLength(),
       //po podaniu rozmiaru bloku niezaszyfrowanego, zwraca ona rozmiar jaki zajmie kryptogram
       SecByteBlock sbbCipherText(pubkey.CiphertextLength(shortMessage.size()));

       AutoSeededRandomPool rng;

       pubkey.Encrypt(rng, (byte const*)shortMessage.data(), shortMessage.size(),
          sbbCipherText.begin());

       FileSink(".\\encrypted.dat").Put(sbbCipherText.begin(), sbbCipherText.size());
       cout << "Kryptogram umieszczono w pliku \'encrypted.dat\'" << endl;

       cout << "Deszyfrowanie" << endl;
       cout << "Klucz prywatny: ";
       getline(cin, file);
       RSAES_OAEP_SHA_Decryptor privkey( FileSource(file.c_str(), true, new Base64Decoder()));

       //ustalamy wymagany rozmiar bloku korzystajac z metody privkey.MaxPlaintextLength(),
       //po podaniu rozmiaru kryptogramu, zwraca ona maksymalny rozmiar jaki moze przyjac
       //odszyfrowana wiadomosc
       SecByteBlock sbbPlainText(privkey.MaxPlaintextLength(sbbCipherText.size()));

       FileSource(".\\encrypted.dat", true, new ArraySink(sbbPlainText.begin(), sbbPlainText.size() ));

       DecodingResult dec = privkey.Decrypt(rng, sbbCipherText.begin(), sbbCipherText.size(),
          sbbPlainText.begin());
       
       FileSink(".\\decrypted.dat").Put(sbbPlainText.begin(), dec.messageLength);
       cout << "Odszyfrowana wiadomosc zostala umieszczona w pliku \'decrypted.dat\'" << endl;

       return 0;
    }


    Przy kompilacji wywala mi pełno różnych blędów związanych pewnie z tą biblioteką.

    Proszę o wytłumaczenie mi w jaki sposób mam dodać tą bibliotekę do Visuala c++ lub do Dev C++ żeby ten program mógł skompilować.

    0 0
  Szukaj w 5mln produktów