On 9/24/05, Saber Zrelli <[EMAIL PROTECTED]> wrote:
I found where is the mistake ,
I forgot to initialize n to 0 in

DES_cfb64_encrypt(Msg, Res,20, &schedule, &Key2, &n, DES_ENCRYPT);


Thanks any way,
Saber.

* On 05:35, Sat 24 Sep 05, Saber Zrelli wrote:
> Hi ,
>
> Thanks Nils for the tip,
>
> I could make my code run, but the results are not what I expect :S
> The encryption works fine, after trying to decrypt using the same
> key. I dont find the initial string. I dont see where is my mistake.
>
> I attached  a compilable source file.
>
> Regards,
> Saber.
>
>
>
>
> * On 20:33, Fri 23 Sep 05, Nils Larsch wrote:
> > Saber Zrelli wrote:
> > > Hi ,
> > >
> > > I am trying to use openssl's crypto library to encrypt packets
> > > before transmitting them into a TCP connection.
> > >
> > > I have some difficulties on using DES funcions.
> > >
> > > below is the code I wrote, it compiles but core-dump occurs at line 48.
> > >
> > >
> > >         char           *
> > >      35 Encrypt(int Etype, char *Key, void *Msg)
> > >      36 {
> > >      37
> > >      38 >_______char           *CypherText;
> > >      39 >_______char           *dec;
> > >      40 >_______int            *n;
> > >      41
> > >      42 >_______DES_cblock>_____Key2;
> > >      43 >_______DES_key_schedule *schedule;
> > >      44
> > >      45
> > >      46 >_______memcpy(Key2, Key, 8);
> > >      47 >_______DES_set_odd_parity(&Key2);
> > >      48 >_______DES_set_key_checked(&Key2, schedule);
> >
> > the schedule pointer is uninitialzed => core dump, as schedule
> > is used in DES_set_key_unchecked (called by DES_set_key_checked).
> > Try to do something like:
> >     DES_key_schedule schedule;
> >     ...
> >     DES_set_key_checked(&Key2, &schedule);
> >
> > >      49 >_______DES_cfb64_encrypt((char *)Msg, CypherText, strlen(Msg), schedule, &Key2, n, 1);
> > >      50 >_______printf("Encrypted message : %s\n", CypherText);
> > >      51 >_______DES_cfb64_encrypt(CypherText, dec, strlen(Msg), schedule, &Key2, n, 0);
> > >      52 >_______printf("decrypted message : %s\n", dec);
> > >
> > >
> > > Any help links to sample code is appreciated.
> >
> > perhaps crypto/des/destest.c
> >
> > Cheers,
> > Nils
> > ______________________________________________________________________
> > OpenSSL Project                                 http://www.openssl.org
> > User Support Mailing List                    openssl-users@openssl.org
> > Automated List Manager                           [EMAIL PROTECTED]
>
> --
> Saber ZRELLI <[EMAIL PROTECTED]>
> Japan Advanced Institute of Science and Technology
> Center of Information Science
> Shinoda Laboratory
> url     : http://www.jaist.ac.jp/~zrelli
> gpg-id  : 0x7119EA78

> #include <time.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <openssl/des.h>
>
>
> char           *
> Decrypt(char *Key, void *Msg)
> {
>
>
>       static char     dec [30];
>       int             n;
>
>       DES_cblock      Key2;
>       DES_key_schedule schedule;
>
>       memcpy(Key2, Key, 8);
>       DES_set_odd_parity(&Key2);
>       DES_set_key_checked(&Key2, &schedule);
>       n = 0;
>       DES_cfb64_encrypt((char *)Msg, dec, strlen((char *)Msg), &schedule, &Key2,
>                         &n, DES_DECRYPT);
>       printf("decrypted message : %s\n", dec);
>
>       return (dec);
>
>
> }
>
> char           *
> Encrypt(char *Key, void *Msg)
> {
>
>       char           *Res;

you are not allocating memory for res; so it will result in seg fault.
either chage it to a staic array or malloc. :-),

>       int             n;
>
>       DES_cblock      Key2;
>       DES_key_schedule schedule;
>
>       memcpy(Key2, Key, 8);
>       DES_set_odd_parity(&Key2);
>       DES_set_key_checked(&Key2, &schedule);
>       DES_cfb64_encrypt((char *)Msg, Res, strlen((char *)Msg),
>                         &schedule, &Key2, &n, DES_ENCRYPT);
>       printf("Encrypted message : %s\n", Res);
>
>
>       return (Res);
> }
>
>
> int
> main()
> {
>
>       char            Msg       [20];
>       char           *res;
>
>       strcpy(Msg, "KKKKKKBB");
>       res = Encrypt("123456789778", Msg);
>       Decrypt("123456789778", res);
>
>       return (0);
>
> }



Reply via email to