오류 체크좀 해주세요 ㅠㅠ
가장
밑에 소스가 DES프로그램중의 가장 기본 쏘스 인대요...소스 내용은 8문자를 입력해서 4문자4문자를 분리 햇다가 다시 붙이는 과정입니다. 근데 글자 8자를 입력하면 마지막에 출력값이 이상한 특수문자 값이 나오는데 어디가 잘못된걸까요?
예security 를 입력하면 마지막에 출력값도 똑같은 값이 나와야합니다. 왜그런지 아시겠는분 답글좀 ㅠㅠ
#includestdio.h
#includestring.h
#define DWORD unsigned long
void main()
{
char plain_data[8] = {0,}, temp[8]={0,};
DWORD New[2] = {0, 0};
DWORD data[2] = {0, 0};
int SHIFT, num;
printf(DES 프로그램\n);
printf(8문자 이하의 문자를 입력하세요 :);
gets(plain_data);
for(num = 0 ;num 4 ;num++)
{
SHIFT = ((3-num)*8);
New[1] ^= ((DWORD)plain_data[num]) SHIFT;
New[1] ^= ((DWORD)plain_data[num+4]) SHIFT;
}
// Initialpermutation(New);
// InverseInitialpermutation(New);
for(num=0; num4; num++)
{
temp[num] = (char)((New[1] (24-(8*num))) & 0x000000ff);
temp[num+4] = (char)((New[0] (24-(8*num))) & 0x000000ff);
}
printf(\n복구화 문장 : );
for(num=0; num8; num++)
printf(%c, temp[num]);
printf(\n);
}
-
누리알찬
와 내 글씨체 왜 저딴식으로 바꼈데냐 ㅎ
-
앵겨쭈
훗...다들 감사;;;
-
냐하
New[1] ^= ((DWORD)plain_data[num]) SHIFT;
New[1] ^= ((DWORD)plain_data[num+4]) SHIFT;
윗 님들의 말씀처럼 첫번째에 NEW[0]으로 바꾸면 될것 같군요... -
돋되다
New[1] ^= ((DWORD)plain_data[num]) SHIFT;
New[1] ^= ((DWORD)plain_data[num+4]) SHIFT;
이렇게 하셨는데요, 첫번째를 \New[1]\ 에서 \New[0]\ 으로 수정해야합니다.
이우석님 글씨체 짱드셈 -
달달한캔디
New[1] ^= ((DWORD)plain_data[num]) SHIFT;
New[1] ^= ((DWORD)plain_data[num+4]) SHIFT;
이렇게 하셨는데요, 첫번째를 \New[1]\ 에서 \New[0]\ 으로 수정해야합니다.