Hi,

I have tried your code and replaced the length param with bit length
(*8) instead.
It worked. It  seems that there are inconsistent with the usage of API.

- re.est

On Sun, Oct 30, 2011 at 4:55 PM, Ananthasayanan Kandiah
<ananthasaya...@obtino.com> wrote:
> Hi,
>
> I'm trying to use AES-CFB1 through the "low-level" calls. Here's the example
> program I have come up with:
>
> #include <stdio.h>
> #include <string.h>
> #include <openssl/aes.h>
> #include <openssl/bio.h>
>
> #define  KEY_SIZE 16
>
> int main(void)
> {
>     int            i;
>     AES_KEY        key;
>     BIO*        bio_out;
>
>     unsigned char key_data[KEY_SIZE] = {
>         0xfe, 0xec, 0x82, 0x17, 0xb5, 0x1, 0x98, 0x6b,
>         0x5e, 0xf1, 0xb8, 0x6, 0x52, 0x74, 0x2e, 0x52
>     };
>
>     unsigned char iv[AES_BLOCK_SIZE];
>
>     unsigned char const iv_data[AES_BLOCK_SIZE] = {
>         0x10, 0x8a, 0xc9, 0x30, 0xb7, 0xf2, 0x35, 0x21,
>         0xfb, 0xac, 0x6b, 0xdf, 0x80, 0x95, 0xeb, 0x1e
>     };
>
>     char*   data    = "Internet is a wonderful mechanism for making a fool "
>                       "of yourself in front of a very large audience";
>
>
>     int     length  = (int) strlen(data);
>
>     int     num = 0;
>
>     /* Allocate some space for the ciphertext and plaintext */
>     char*    ciphertext = (char*) malloc(sizeof(char) * length);
>     char*    plaintext  = (char*) malloc(sizeof(char) * length);
>
>     /* Copy the IV data to the IV array */
>     memcpy(iv, iv_data, AES_BLOCK_SIZE);
>
>     /* Set the encrypt key structure using the predefined key */
>     AES_set_encrypt_key(key_data, KEY_SIZE * 8, &key);
>
>     /* Carry out the encryption */
>     AES_cfb1_encrypt(data, ciphertext, length, &key, iv, &num, AES_ENCRYPT);
>
>     /* Setup output */
>     bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
>
>     BIO_printf(bio_out, "Original plaintext: %s\n\n", data);
>
>     BIO_printf(bio_out, "Ciphertext: ");
>
>     /* Print out the ciphertext */
>     for (i = 0; i < length; i++)
>         BIO_printf(bio_out, "%02x", ((unsigned char*)ciphertext)[i]);
>
>     BIO_printf(bio_out, "\n\n");
>
>     /* Start the decryption process */
>
>     /* First, copy the original IV data back to the IV array - as it was
> overwritten
>      * during the encryption process
>      */
>     memcpy(iv, iv_data, AES_BLOCK_SIZE);
>
>     /* Reset how far we've gone through the IV */
>     num = 0;
>
>     /* Carry out the decryption */
>     AES_cfb1_encrypt(ciphertext, plaintext, length, &key, iv, &num,
> AES_DECRYPT);
>
>     BIO_printf(bio_out, "Recovered plaintext: ");
>
>     /* print out the plaintext */
>     for (i = 0; i < length; i++)
>         BIO_printf(bio_out, "%c", ((unsigned char*)plaintext)[i]);
>
>     BIO_printf(bio_out, "\n\n");
>
>     BIO_free(bio_out);
>
>     free(ciphertext);
>     free(plaintext);
>
>
>     return 0;
> }
>
> When I run it, the output which I receive is:
>
> Original plaintext: Internet is a wonderful mechanism for making a foolof
> yourself in front of a very large audience
>
> Ciphertext:
> 92c0883c54eb8df072b43278000000000000000000000000000000000000000000000000000000000000000000000000000000000000
> 000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>
> Recovered plaintext: Internet is
>
>
> d:\ananthasayanan\stuff\projects\programming\openssl\openssl-1.0.0d\demos\crypto\low_level\ciphers\symmetric\aes\aes_cfb
> 1_128\x64\Release>aes_cfb1_128.exe
> Original plaintext: Internet is a wonderful mechanism for making a fool of
> yourself in front of a very large audience
>
> Ciphertext:
> 92c0883c54eb8df072b43278000000000000000000000000000000000000000000000000000000000000000000000000000000000000
> 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>
> Recovered plaintext: Internet is
>
> As you can see, the ciphertext that is produced is only 12 bytes in length.
> Hence, the recovered plaintext has only 12 characters. I have had a look at
> the source-code for AES_cfb1_encrypt and the comment says that the input
> should be "packed". What does this mean? Am I doing something wrong or is
> there a bug with AES-CFB1?
>
>
> Thanks,
> Anantha
>
>
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to