📄 tean.c
字号:
/********************************************************** TEA - Tiny Encryption Algorithm Feistel cipher by David Wheeler & Roger M. Needham (extended version) **********************************************************/#define ROUNDS 32#define DELTA 0x9e3779b9 /* sqr(5)-1 * 2^31 */#include "ctypes.h"/********************************************************** Input values: k[4] 128-bit key v[2] 64-bit plaintext block Output values: v[2] 64-bit ciphertext block **********************************************************/void tean(word32 *k, word32 *v, long N) { word32 y=v[0], z=v[1]; word32 limit,sum=0; if(N>0) { /* ENCRYPT */ limit=DELTA*N; while(sum!=limit) { y+=((z<<4)^(z>>5)) + (z^sum) + k[sum&3]; sum+=DELTA; z+=((y<<4)^(y>>5)) + (y^sum) + k[(sum>>11)&3]; } } else { /* DECRYPT */ sum=DELTA*(-N); while(sum) { z-=((y<<4)^(y>>5)) + (y^sum) + k[(sum>>11)&3]; sum-=DELTA; y-=((z<<4)^(z>>5)) + (z^sum) + k[sum&3]; } } v[0]=y; v[1]=z;}void cl_enc_block(word32 *k, word32 *v) { tean(k,v,ROUNDS);}void cl_dec_block(word32 *k, word32 *v) { tean(k,v,-ROUNDS);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -