⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecb_start.c

📁 一些封装好的加密函数的源代码
💻 C
字号:
/* LibTomCrypt, modular cryptographic library -- Tom St Denis * * LibTomCrypt is a library that provides various cryptographic * algorithms in a highly modular and flexible manner. * * The library is free for all purposes without any express * guarantee it works. * * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org */#include "tomcrypt.h"/**   @file ecb_start.c   ECB implementation, start chain, Tom St Denis*/#ifdef ECB/**   Initialize a ECB context   @param cipher      The index of the cipher desired   @param key         The secret key    @param keylen      The length of the secret key (octets)   @param num_rounds  Number of rounds in the cipher desired (0 for default)   @param ecb         The ECB state to initialize   @return CRYPT_OK if successful*/int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb){   int err;   LTC_ARGCHK(key != NULL);   LTC_ARGCHK(ecb != NULL);   if ((err = cipher_is_valid(cipher)) != CRYPT_OK) {      return err;   }   ecb->cipher = cipher;   ecb->blocklen = cipher_descriptor[cipher].block_length;   return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ecb->key);}
int  main(void) 
{ 
   unsigned   char  key[16],  buffer[512]; 
   symmetric_ECB  ecb; 
   int  x, err; 

   /*  register  twofish  first  */ 
   if  (register_cipher(&twofish_desc)     == -1)  { 
       printf("Error  registering   cipher.\n"); 
       return  -1; 
   } 

   /*  somehow  fill out  key and  IV */ 
   for(x=0;x<512;x++){
		buffer[x]=x+5;
		printf("%x,",buffer[x]);
   }
   /*  start  up ecb  mode */ 
   if  ((err  = ecb_start( 
         find_cipher("twofish"),    /* index  of desired   cipher */ 
                              key,  /* the  secret  key */ 
                                16,  /* length of  secret  key (16 bytes,  128  bits)  */ 
                                 0, /* 0  == default  # of  rounds  */ 
                            &ecb)   /*  where to  store initialized   ecb state  */ 
       ) != CRYPT_OK)   { 
       printf("ecb_start   error:  %s\n",  error_to_string(err)); 
       return  -1; 
   } 

   /*  somehow  fill buffer  than  encrypt  it */ 
   if  ((err  = ecb_encrypt(          buffer,  /*  plaintext  */ 
                                      buffer,  /*  ciphertext  */ 
                             sizeof(buffer),   /*  length  of data to  encrypt  */ 
                                       &ecb)   /*  previously  initialized  ecb  state  */ 
       ) != CRYPT_OK)   { 
       printf("ecb_encrypt   error:  %s\n",  error_to_string(err)); 
       return  -1; 
   } 
	printf("\n\n");

   for(x=0;x<512;x++){
		printf("%x,",buffer[x]);
   }
   /*  make use  of ciphertext...   */ 



   if  ((err  = ecb_decrypt(          buffer,  /*  ciphertext  */ 
                                      buffer,  /*  plaintext  */ 
                             sizeof(buffer),   /*  length  of data to  encrypt  */ 
                                       &ecb)   /*  previously  initialized  ecb  state  */ 

        ) != CRYPT_OK)    { 
       printf("ecb_decrypt       error:  %s\n",   error_to_string(err)); 
        return  -1; 
    } 

    /*  terminate   the  stream   */ 
    if  ((err  =  ecb_done(&ecb))     != CRYPT_OK)    { 
       printf("ecb_done      error:  %s\n",   error_to_string(err)); 
        return  -1; 
    } 

    /*  clear  up  and  return   */ 
    zeromem(key,    sizeof(key)); 
    zeromem(&ecb,    sizeof(ecb)); 
	printf("\n\n");
	for(x=0;x<512;x++){
		printf("%x,",buffer[x]);
   }
    return   0; 
} 
#endif/* $Source: /cvs/libtom/libtomcrypt/src/modes/ecb/ecb_start.c,v $ *//* $Revision: 1.3 $ *//* $Date: 2005/05/05 14:35:59 $ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -