当前位置:编程学习 > 网站相关 >>

[C语言]mac下3DES ECB加密

Des.h文件


[cpp]
#ifndef Des_h  
#define Des_h  
 
#ifdef __cplusplus  
extern "C" 

#endif /* __cplusplus */  
 
void  DesEncrypt(unsigned char *key, unsigned char *data); 
void  DesDecrypt(unsigned char *key, unsigned char *data); 
 
#ifdef __cplusplus  
}; 
#endif /* __cplusplus */  
 
#endif /* DesAlgo_h */ 

#ifndef Des_h
#define Des_h

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

void  DesEncrypt(unsigned char *key, unsigned char *data);
void  DesDecrypt(unsigned char *key, unsigned char *data);

#ifdef __cplusplus
};
#endif /* __cplusplus */

#endif /* DesAlgo_h */
Des.cpp文件


[cpp] view plaincopyprint?#include <stdio.h>  
#include <memory.h>  
#include "Des.h"  
 
/************************************************************************
*        Tables defined in the Data Encryption Standard documents       *
************************************************************************/ 
static const char ip[] =                     /* Initial permutation IP */ 

   58, 50, 42, 34, 26, 18, 10,  2, 
   60, 52, 44, 36, 28, 20, 12,  4, 
   62, 54, 46, 38, 30, 22, 14,  6, 
   64, 56, 48, 40, 32, 24, 16,  8, 
   57, 49, 41, 33, 25, 17,  9,  1, 
   59, 51, 43, 35, 27, 19, 11,  3, 
   61, 53, 45, 37, 29, 21, 13,  5, 
   63, 55, 47, 39, 31, 23, 15,  7 
}; /* ip[] */ 
 
static const char fp[] =                     /* Final permutation IP^-1 */ 

   40,  8, 48, 16, 56, 24, 64, 32, 
   39,  7, 47, 15, 55, 23, 63, 31, 
   38,  6, 46, 14, 54, 22, 62, 30, 
   37,  5, 45, 13, 53, 21, 61, 29, 
   36,  4, 44, 12, 52, 20, 60, 28, 
   35,  3, 43, 11, 51, 19, 59, 27, 
   34,  2, 42, 10, 50, 18, 58, 26, 
   33,  1, 41,  9, 49, 17, 57, 25 
}; /* fp[] */ 
 
/*
   Expansion operation matrix
   This is for reference only; it is unused in the code
   as the F() function performs it implicitly for speed
*/ 
#ifdef notdef  
static const char ei[] = 

   32,  1,  2,  3,  4,  5, 
    4,  5,  6,  7,  8,  9, 
    8,  9, 10, 11, 12, 13, 
   12, 13, 14, 15, 16, 17, 
   16, 17, 18, 19, 20, 21, 
   20, 21, 22, 23, 24, 25, 
   24, 25, 26, 27, 28, 29, 
   28, 29, 30, 31, 32,  1 
}; 
#endif /* notdef */  
 
static const char pc1[] =              /* Permuted choice table (key)  */ 

   57, 49, 41, 33, 25, 17,  9, 
    1, 58, 50, 42, 34, 26, 18, 
   10,  2, 59, 51, 43, 35, 27, 
   19, 11,  3, 60, 52, 44, 36, 
 
   63, 55, 47, 39, 31, 23, 15, 
    7, 62, 54, 46, 38, 30, 22, 
   14,  6, 61, 53, 45, 37, 29, 
   21, 13,  5, 28, 20, 12,  4 
}; 
 
static const char totRot[] =           /* Number left rotations of pc1  */ 

   1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28 
}; /* totRot[] */ 
 
static const char pc2[] =              /* Permuted choice key (table)   */ 

   14, 17, 11, 24,  1,  5, 
    3, 28, 15,  6, 21, 10, 
   23, 19, 12,  4, 26,  8, 
   16,  7, 27, 20, 13,  2, 
   41, 52, 31, 37, 47, 55, 
   30, 40, 51, 45, 33, 48, 
   44, 49, 39, 56, 34, 53, 
   46, 42, 50, 36, 29, 32 
}; /* pc2[] */ 
 
static const char si[8][64] =          /* The (in)famous S-boxes        */ 

   /* S1 */ 
   14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7, 
    0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8, 
    4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0, 
   15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13, 
 
   /* S2 */ 
   15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10, 
    3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5, 
    0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15, 
   13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9, 
 
   /* S3 */ 
   10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8, 
   13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1, 
   13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7, 
    1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12, 
 
   /* S4 */ 
    7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15, 
   13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9, 
   10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4, 
    3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14, 
 
   /* S5 */ 
    2,

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,