我想了解BlowFish加密算法。我有一些問題,這些問題在全部細節如下:Blowfish加密函數(BF_encrypt)C
下面是功能:
void BF_encrypt (data, encrypt)
BF_LONG *data; //data is array of two members i.e ti[0] and ti[1]
//and BF_LONG is defined as unsigned long in header file
int encrypt; //encrypt is defined as 1
{
register BF_LONG l, r, *p, *s; //BF_LONG is defined as unsigned long in header file
p = key_P; //key_P is declared as BF_LONG key_P[16 + 2];
s = &(key_S[0]); //key_S is declared as BF_LONG key_S[4 * 256];
l = data[0]; //data[0]=ti[0]
r = data[1]; //data[1]=ti[1]
l ^= p[0]; //Bitwise ex-or of l with p[0];
BF_ENC (r, l, s, p[1]);
}
這裏是BF_ENC功能:
#define BF_ENC(LL,R,S,P) \
LL^=P; \
LL^=(((S[ (R>>24L) ] + \
S[0x0100+((R>>16L)&0xff)])^ \
S[0x0200+((R>> 8L)&0xff)])+ \
S[0x0300+((R )&0xff)])&0xffffffff;
這裏是我的問題:
「\」在BF_ENC的每個結束行中是什麼意思?
R >> 24L,我可以知道它正在向右移動。 L在這裏很長,但我在這裏沒有得到它的存在。 L對數據有什麼影響?
最後一個問題是,什麼是BF_ENC函數做了所有,只是一個概述不深入。
如果您需要更多信息,我在這裏。 謝謝!
請注意在密碼術中使用正確的術語。 Blowfish是*塊密碼*而不是加密算法*。您可以在[操作模式](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)(如CBC)中使用blowfish來創建加密算法。 –