Ejemplo n.º 1
0
string AES::crypt(string plaintext, string key){
string ciphertext;


CryptoPP::AES::Encryption aesEncryption((byte*)key.c_str(), CryptoPP::AES::DEFAULT_KEYLENGTH);
CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );

CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink( ciphertext ) );
stfEncryptor.Put( reinterpret_cast<const unsigned char*>( plaintext.c_str() ), plaintext.length() + 1 );
stfEncryptor.MessageEnd();

return ciphertext;
}
Ejemplo n.º 2
0
void cryptos::_sha_encrypt(const bybuff& key, const bybuff& data, bybuff& out)const
{

    //Key and IV setup
    //AES encryption uses a secret key of a variable length (128-bit, 196-bit or 256-
    //bit). This key is secretly exchanged between two parties before communication
    //begins. DEFAULT_KEYLENGTH= 16 bytes
    //uint8_t iv[ CryptoPP::AES::BLOCKSIZE ] = {0};
    std::string encoded;
    try{
#if 0
        CryptoPP::AES::Encryption                       aesEncryption(key.buffer(), key.length());
        CryptoPP::CBC_Mode_ExternalCipher::Encryption   cbcEncryption( aesEncryption, iv );
        CryptoPP::StreamTransformationFilter            stfEncryptor(cbcEncryption, new CryptoPP::StringSink( encoded ) );
        stfEncryptor.Put( data.buffer(), (size_t)data.length() );
        stfEncryptor.MessageEnd();
        out = encoded;
        _TRACE("_sha_e(" << key.to_string() <<","<< data.to_string() <<")=" << out.to_string());
        bybuff r;
        _sha_decrypt(key, out, r);
#endif //0

        CryptoPP::ECB_Mode< CryptoPP::AES >::Encryption aes_128_ecb;//(key.buffer(), key.length(), iv);
        aes_128_ecb.SetKey( key.buffer(), key.length() );
        CryptoPP::StreamTransformationFilter encryptor(aes_128_ecb, 0, CryptoPP::BlockPaddingSchemeDef::NO_PADDING);

        for(size_t j = 0; j < data.length(); j++)
        {
            encryptor.Put((byte)data[j]);
        }
        encryptor.MessageEnd();

        size_t ready = encryptor.MaxRetrievable();
        byte  outa[32] = {0};
        encryptor.Get((byte*) outa, ready);
        out.append(outa, ready);
    }
    catch( CryptoPP::Exception& e )
    {
        ERROR( e.what());
        assert(0);
    }
   // bybuff r;
    //_sha_decrypt(key, out, r);
}
Ejemplo n.º 3
0
int main(int argc, char* argv[]) {

    //Key and IV setup
    //AES encryption uses a secret key of a variable length (128-bit, 196-bit or 256-   
    //bit). This key is secretly exchanged between two parties before communication   
    //begins. DEFAULT_KEYLENGTH= 16 bytes
    byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE ];
    memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH );
    memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE );

    //
    // String and Sink setup
    //
    std::string plaintext = "Now is the time for all good men to come to the aide...";
    std::string ciphertext;
    std::string decryptedtext;

    //
    // Dump Plain Text
    //
    std::cout << "Plain Text (" << plaintext.size() << " bytes)" << std::endl;
    std::cout << plaintext;
    std::cout << std::endl << std::endl;

    //
    // Create Cipher Text
    //
    CryptoPP::AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );

    CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink( ciphertext ) );
    stfEncryptor.Put( reinterpret_cast<const unsigned char*>( plaintext.c_str() ), plaintext.length() + 1 );
    stfEncryptor.MessageEnd();

    //
    // Dump Cipher Text
    //
    std::cout << "Cipher Text (" << ciphertext.size() << " bytes)" << std::endl;

    for( int i = 0; i < ciphertext.size(); i++ ) {

        std::cout << "0x" << std::hex << (0xFF & static_cast<byte>(ciphertext[i])) << " ";
    }

    std::cout << std::endl << std::endl;

    //
    // Decrypt
    //
    CryptoPP::AES::Decryption aesDecryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( aesDecryption, iv );

    CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, new CryptoPP::StringSink( decryptedtext ) );
    stfDecryptor.Put( reinterpret_cast<const unsigned char*>( ciphertext.c_str() ), ciphertext.size() );
    stfDecryptor.MessageEnd();

    //
    // Dump Decrypted Text
    //
    std::cout << "Decrypted Text: " << std::endl;
    std::cout << decryptedtext;
    std::cout << std::endl << std::endl;

    return 0;
}