On Tuesday, 24 February 2015 02:56:26 UTC+10:30, Jean-Pierre Münch wrote:
>
> Hey Fil,
>
> if you want to use Crypto++ there're some issues with this code, I'll come 
> back to them after answering your initial question.
>
> #include <aes.h>
> #include <modes.h>
> #include <string>
>
> using namespace CryptoPP;
> using namespace std;
>
> void EncryptAES(const string& In,const string& Key,string* Out)
> {
>    ECB_Mode<AES>::Encryption Encryptor(Key);
>    // resize Out to be a multiple of the blocksize
>    Encryptor.ProcessData(*Out,In,In.size());
> }
>
> void DecryptAES(const string& In,const string& Key,string* Out)
> {
>    ECB_Mode<AES>::Decryption Decryptor(Key);
>    // resize Out to be a multiple of the blocksize
>    Decryptor.ProcessData(*Out,In,In.size());
> }
>
> This will work and encrypt you some data with AES.
>
> However it is not secure.
>
>    1. You may not want to encrypt each block seperately but rather 
>    combine them somehow. You should consider using CTR mode if not 
>    authentication is required and GCM mode if authentication is required. 
>    You'll then also need an unique IV for each message.
>    2. You may not want to use std::string s to hold sensitive data (such 
>    as keys and plaintext), so you should consider using SecByteBlock and 
>    FixedSizeSecBlock<byte,X> to transmit data. (as otherwise secret data may 
>    be leaked to hard-drive or other porgrams after de-allocation)
>    3. You may not wanto to call an encryption routine with a high-level 
>    object. In my opinion the parameters should be (const byte* In, const 
> byte* 
>    Key, byte* Out, const byte* IV), to reach maximal portability or at least 
>    use something like SecByteBlock (passed by reference)
>
> BR
>
> JPM
>
> Am Montag, 23. Februar 2015 14:16:06 UTC+1 schrieb Fil Nick:
>>
>> How would it be possible to encrypt and decrypt strings in AES. 
>> Or in short how can one replicate the functionality of the code below in 
>> AES.
>> http://pastebin.com/Gw0RLBNR
>> I've tried to do this for a very long time.I have also done more than 
>> more fair share of looking around. None of my attempts seem to work 
>> correctly and they will not compiler under vs2012 or code blocks. So all I 
>> ask is this does someone have an example anything?
>>
>

N:\code\Aes\aes3>cl aes.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

aes.cpp
F:\VISUALCPP\VC\INCLUDE\xlocale(336) : warning C4530: C++ exception handler 
used
, but unwind semantics are not enabled. Specify /EHsc
aes.cpp(10) : error C2664: 
'CryptoPP::CipherModeFinalTemplate_CipherHolder<CIPHE
R,BASE>::CipherModeFinalTemplate_CipherHolder(const 
CryptoPP::CipherModeFinalTem
plate_CipherHolder<CIPHER,BASE> &)' : cannot convert parameter 1 from 'const 
std
::string' to 'const 
CryptoPP::CipherModeFinalTemplate_CipherHolder<CIPHER,BASE>
&'
        with
        [
            CIPHER=CryptoPP::Rijndael::Encryption,
            BASE=CryptoPP::ECB_OneWay
        ]
        Reason: cannot convert from 'const std::string' to 'const 
CryptoPP::Ciph
erModeFinalTemplate_CipherHolder<CIPHER,BASE>'
        with
        [
            CIPHER=CryptoPP::Rijndael::Encryption,
            BASE=CryptoPP::ECB_OneWay
        ]
        No user-defined-conversion operator available that can perform this 
conv
ersion, or the operator cannot be called
aes.cpp(12) : error C2664: 'CryptoPP::ECB_OneWay::ProcessData' : cannot 
convert
parameter 1 from 'std::string' to 'byte *'
        No user-defined-conversion operator available that can perform this 
conv
ersion, or the operator cannot be called
aes.cpp(17) : error C2664: 
'CryptoPP::CipherModeFinalTemplate_CipherHolder<CIPHE
R,BASE>::CipherModeFinalTemplate_CipherHolder(const 
CryptoPP::CipherModeFinalTem
plate_CipherHolder<CIPHER,BASE> &)' : cannot convert parameter 1 from 'const 
std
::string' to 'const 
CryptoPP::CipherModeFinalTemplate_CipherHolder<CIPHER,BASE>
&'
        with
        [
            CIPHER=CryptoPP::Rijndael::Decryption,
            BASE=CryptoPP::ECB_OneWay
        ]
        Reason: cannot convert from 'const std::string' to 'const 
CryptoPP::Ciph
erModeFinalTemplate_CipherHolder<CIPHER,BASE>'
        with
        [
            CIPHER=CryptoPP::Rijndael::Decryption,
            BASE=CryptoPP::ECB_OneWay
        ]
        No user-defined-conversion operator available that can perform this 
conv
ersion, or the operator cannot be called
aes.cpp(19) : error C2664: 'CryptoPP::ECB_OneWay::ProcessData' : cannot 
convert
parameter 1 from 'std::string' to 'byte *'
        No user-defined-conversion operator available that can perform this 
conv
ersion, or the operator cannot be called

N:\code\Aes\aes3>

 
 

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to