Hi Martin,
          Thanks for the speedy response.  I have been attempting to use the 
EVP interface, but the cipher text produced is wrong (and I am fairly new to 
this). As a simple test, I have hard-coded an 8 byte block for the key (in 
hexadecimal), and also an 8 byte block (also in hex) for the plaintext. Can you 
kindly take a look and provide feedback? 

int main()
{

   EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX*)malloc(sizeof(EVP_CIPHER_CTX));
   EVP_CIPHER_CTX_init(ctx);
 
   unsigned char key[]={0x01, 0x91, 0xd0, 0xad, 0x79, 0x4c, 0xae, 0x9b};  
//64-bit KEY
   unsigned char plaintext[]={0x61, 0x62, 0x63, 0x64, 0x61, 0x62, 0x63, 0x64}; 
//64-bit Plaintext to be encrypted

   int ret;
   ret = EVP_EncryptInit_ex(ctx, EVP_des_ecb(), NULL, key, NULL); //USE DES ECB 
mode
   assert(ret == 1);

   ret = EVP_CIPHER_CTX_set_padding(ctx, 0); //No padding
   assert(ret == 1);

   int val, num_bytes_in(8),num_bytes_out(8); //8 bytes of plaintext, 8 bytes 
of ciphertext

   unsigned char out[8]; //Store ciphertext in "out"
   val=EVP_EncryptUpdate(ctx, out, &num_bytes_out, plaintext, num_bytes_in ); 
//Encrypt plaintext
  
    for (int i=0; i<8; i++) //Print ciphertext
    {
        printf("%02x",out[i]);
    }
    cout<<endl;

}

Best Regards,
- Ali


----- Original Message -----
From: "Martin Kaiser" <li...@kaiser.cx>
To: openssl-users@openssl.org
Sent: Friday, April 9, 2010 10:52:07 AM GMT -06:00 US/Canada Central
Subject: Re: How to configure DES ECB encryption without the "no padding" mode?

Hi Ali,

Thus wrote Ali Sydney (asyd...@k-state.edu):

>    I am attempting to implement DES (in C++ with the OpenSSL
>    libraries) in ECB mode without padding.  I am using the following
>    function for encryption:

>  void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
>         DES_key_schedule *ks, int enc);

> However, this function does not have any parameters to specify the "no
> padding" option.  How do I configure "no padding"? Thank you.

you should use the EVP interface instead of the low-level functions

   ret = EVP_DecryptInit_ex(&ctx, EVP_des_ecb(), NULL, myKey, NULL);
   assert(ret == 1);

   ret = EVP_CIPHER_CTX_set_padding(&ctx, 0);
   assert(ret == 1);

and then EVP_Decrypt_Update(), EVP_DecryptFinal(). Similar for
encryption.

Hope this helps,

   Martin
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to