OpenCores
URL https://opencores.org/ocsvn/csa/csa/trunk

Subversion Repositories csa

[/] [csa/] [trunk/] [sw_sim/] [csa.c] - Diff between revs 20 and 22

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 20 Rev 22
Line 291... Line 291...
                kb[6-i][1+j] |= newbit[j*8+k] << (7-k);
                kb[6-i][1+j] |= newbit[j*8+k] << (7-k);
            }
            }
        }
        }
    }
    }
 
 
#ifdef DEBUG 
 
{
 
        int i;
 
        int *p=(int*)kb;
 
        for(i=65*8-1;i>=8;i--)
 
        {
 
                if(p[i/8]&(1<<(i%8)))
 
                        printf("1");
 
                else
 
                        printf("0");
 
        }
 
        printf("\n");
 
}
 
#endif
 
    /*  xor to give kk */
    /*  xor to give kk */
    for(i=0; i<7; i++) {
    for(i=0; i<7; i++) {
        for(j=0; j<8; j++) {
        for(j=0; j<8; j++) {
            kk[1+i*8+j] = kb[1+i][1+j] ^ i;
            kk[1+i*8+j] = kb[1+i][1+j] ^ i;
        }
        }
    }
    }
 
 
}
}
 
 
void block_decypher(int *kk, unsigned char *ib, unsigned char *bd) {
void block_decypher(int *kk, unsigned char *ib, unsigned char *bd) {
    int i;
    int i;
    int sbox_in;
    int sbox_in;
Line 393... Line 378...
    N = (188 - offset) / 8;
    N = (188 - offset) / 8;
    residue = (188 - offset) % 8;
    residue = (188 - offset) % 8;
 
 
    /*  1st 8 bytes of initialisation */
    /*  1st 8 bytes of initialisation */
    stream_cypher(1, ck, &encrypted[offset], ib);
    stream_cypher(1, ck, &encrypted[offset], ib);
 
    DEBUG_OUTPUT_ARR(ib,8);
 
 
    for(j=1; j<(N+1); j++) {
    for(j=1; j<(N+1); j++) {
                block_decypher(kk, ib, block);
                block_decypher(kk, ib, block);
 
 
        if (j != N) {
        if (j != N) {
Line 412... Line 398...
        }
        }
 
 
        /*  xor ib x block */
        /*  xor ib x block */
        for(i=0; i<8; i++)
        for(i=0; i<8; i++)
                 decrypted[offset+8*(j-1)+i] = ib[i] ^ block[i];
                 decrypted[offset+8*(j-1)+i] = ib[i] ^ block[i];
 
        DEBUG_OUTPUT_ARR(ib,8);
 
        DEBUG_OUTPUT_ARR(block,8);
 
        DEBUG_OUTPUT_ARR(&decrypted[offset+8*(j-1)+0],8);
    } /* for(j=1; j<(N+1); j++) */
    } /* for(j=1; j<(N+1); j++) */
 
 
    if (residue) {
    if (residue) {
       stream_cypher(0, ck, NULL, stream);
       stream_cypher(0, ck, NULL, stream);
       for (i=0;i<residue;i++)
       for (i=0;i<residue;i++)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.