📄 des3.cpp
字号:
#include "des3.h"
int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct,const unsigned char *key,int keylen)
{
_ARGCHK(pt != NULL);
_ARGCHK(ct != NULL);
_ARGCHK(key != NULL);
if(keylen != 16)
{
printf("Error in 3DES key length");
return 1;
}
unsigned char key1[8],key2[8];
symmetric_key skey1,skey2;
int num_rounds = 0;
int i;
for(i=0;i<7;i++)
{
key1[i] = key[i];
key2[i] = key[i+8];
}
if(des_setup(key1, 8, num_rounds, &skey1))
{
printf("Set up error!\n");
return 1;
}
if(des_setup(key2, 8, num_rounds, &skey2))
{
printf("Set up error!\n");
return 1;
}
int length = 0 ;
while(pt[length]!='\0')
length++;
unsigned char * pp;
pp = new unsigned char(length);
des_ecb_encrypt(pt,ct,&skey1);
des_ecb_decrypt(ct,pp,&skey2);
des_ecb_encrypt(pp,ct,&skey1);
return 0;
}
int des3_ecb_decrypt(const unsigned char *pt, unsigned char *ct,const unsigned char *key,int keylen)
{
_ARGCHK(pt != NULL);
_ARGCHK(ct != NULL);
_ARGCHK(key != NULL);
if(keylen != 16)
{
printf("Error in 3DES key length");
return 1;
}
unsigned char key1[8],key2[8];
symmetric_key skey1,skey2;
int num_rounds = 0;
int i;
for(i=0;i<7;i++)
{
key1[i] = key[i];
key2[i] = key[i+8];
}
if(des_setup(key1, 8, num_rounds, &skey1))
{
printf("Set up error!\n");
return 1;
}
if(des_setup(key2, 8, num_rounds, &skey2))
{
printf("Set up error!\n");
return 1;
}
int length = 0 ;
while(pt[length]!='\0')
length++;
unsigned char * pp;
pp = new unsigned char(length);
des_ecb_decrypt(pt,ct,&skey1);
des_ecb_encrypt(ct,pp,&skey2);
des_ecb_decrypt(pp,ct,&skey1);
return 0;
}
/*
void main()
{
unsigned char pt[8]={"0123456"};
unsigned char ct[8];
unsigned char ppt[8];
unsigned char key[16]="012345678901234";
pt[7]=ct[7]=ppt[7]='\0';
key[7]=key[15]='\0';
des3_ecb_encrypt(pt,ct,key,16);
des3_ecb_decrypt(ct,ppt,key,16);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -