Blowfish 암호화 알고리즘을 이해하려고합니다. 내가 자세한 내용하게 설명하는 몇 가지 문제가 오전 : 여기C에서 Blowfish 암호화 함수 (BF_encrypt)
이다 기능 :
: 여기
#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;
내 질문 있습니다 : 여기
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 기능입니다 BF_ENC의 모든 결말 라인에서 "\"는 무엇을 의미합니까?
R >> 24L, 나는 그것이 오른쪽으로 이동하고 있다는 것을 알 수 있습니다. L은 여기에 오래 있지만 여기에 그 존재를 얻지는 않습니다. L이 데이터에 미치는 영향은 무엇입니까?
마지막 질문은 BF_ENC 기능이 무엇보다 중요하다는 것입니다.
더 많은 정보가 필요하면 여기에 있습니다. 감사합니다.
암호화에 올바른 용어를 사용하지 않도록주의하십시오. 블로우 피쉬는 * 암호화 알고리즘 *이 아닌 * 블록 암호 *입니다. CBC와 같은 [조작 모드] (http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)에서 복어를 사용하여 암호화 알고리즘을 만들 수 있습니다. –