저는 대학 프로젝트로 sha1 크래커를 구현하려고합니다. 해시 값에 대한 루프가 다른 값을 시도하고 있습니다.루프에 이전에 선언 된 변수가 없습니다.
for(int a=0; a<26; a++)
{
for(int b=0; b<26; b++)
{
for(int c=0; c<26; c++)
{
for(int d=0; d<26; d++)
{
for(int e=0; e<26; e++)
{
for(int f=0; f<26; f++)
{
result[0]=alphabet[a];
result[1]=alphabet[b];
result[2]=alphabet[c];
result[3]=alphabet[d];
result[4]=alphabet[e];
result[5]=alphabet[f];
//printf("result : %s\n candidate %x %x %x %x %x",result,candidate.a,candidate.b,candidate.c,candidate.d,candidate.e);
// Declarations
uint32_t a,b,c,d,e,temp;
uint32_t w[80]= {0};
a=h0;
b=h1;
c=h2;
d=h3;
e=h4;
아래의 코드는 계속 진행중인 SHA-1 코드입니다. 외부의 루프는 모든 옵션에서 6 자 단어를 테스트 할 수 있도록 만들어졌습니다.
첫 번째 for 루프 앞에 선언 선을 이동하려고 시도하지만 (동일한 함수 내에있는 경우에도 C 컴파일러는 변수가 사용되지 않고 해당 변수가 루프 내에서 손실 된 것처럼 프로그램이 충돌 함을 경고합니다. 하지만 성능상의 이유로 매번 새로운 선언을하고 싶지 않습니다. 전역 선언을 시도하면 동일한 문제가 발생하지만 마지막 루프 내에서 선언 된 경우 모든 것이 제대로 작동합니다.
루프 제어 변수는'a' ..'f' ('for (int i = 0; ...)'와 같은 루프에서 정의 됨)입니다. 왜 당신은 내부 상황에서 그것들을 모두 재정의하고 있습니까?또는 루프 외부에서 내부 선언을 이동할 때 내부 루프에 해당 변수가 숨겨져 있으며 가장 바깥 쪽 선언은 모두 사용되지 않습니다. –
변수를 두 번 선언하고 있습니다. 각'for (int x')는 변수를 선언합니다. 루프에서 'uint32_t a, b, c ...'를 이동할 수 있어야하고 첫 번째 'for'AND 앞에 'int'를 제거해야합니다. 각'for '문 – HeatfanJohn
글쎄, 나는 이것을 나중에 정리할 것이다 @JonathanLeffler.Michael walz : 이것은 내 설명의 오타이며 코드에서 올바르게 선언되었다 – chenino