コード例 #1
0
int main(int argc, char** argv)
{

    static const uint8_t Key[3][16]={{0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9a},
        {0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,0x23,0x45},
        {0x01,0x23,0x45,0x67,0x12}};
    static const uint8_t rpt[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
    static const uint8_t rct[3][8]={{0x23,0x8b,0x4f,0xe5,0x84,0x7e,0x44,0xb2},
        {0xeb,0x6a,0x71,0x1a,0x2c,0x02,0x27,0x1b},
        {0x7a,0xc8,0x16,0xd1,0x6e,0x9b,0x30,0x2e}};
    static const uint8_t rct2[2][16]={{0xee,0xa9,0xd0,0xa2,0x49,0xfd,0x3b,0xa6,0xb3,0x43,0x6f,0xb8,0x9d,0x6d,0xca,0x92},
        {0xb2,0xc9,0x5e,0xb0,0x0c,0x31,0xad,0x71,0x80,0xac,0x05,0xb8,0xe8,0x3d,0x69,0x6e}};
    static uint8_t rpt2[2][16];
    int i,j,err=0;
    static int key_bits[3]={128,80,40};
    uint8_t temp[8];
    AVCAST5 *cs;
    cs=av_cast5_alloc();
    if (!cs)
        return 1;
    for (j=0;j<3;j++){

        av_cast5_init(cs,Key[j],key_bits[j]);
        av_cast5_crypt(cs,temp,rpt,1,0);
        for (i=0;i<8;i++){
            if (rct[j][i]!=temp[i]){
                av_log(NULL,AV_LOG_ERROR,"%d %02x %02x\n",i,rct[j][i],temp[i]);
                err=1;
            }
        }

        av_cast5_crypt(cs,temp,rct[j],1,1);
        for (i=0;i<8;i++){
            if (rpt[i]!=temp[i]){
                av_log(NULL,AV_LOG_ERROR,"%d %02x %02x\n",i,rpt[i],temp[i]);
                err=1;
            }
        }
    }
    memcpy(rpt2[0],Key[0],16);
    memcpy(rpt2[1],Key[0],16);
    for (i=0;i<1000000;i++){
        av_cast5_init(cs,rpt2[1],128);
        av_cast5_crypt(cs,rpt2[0],rpt2[0],2,0);
        av_cast5_init(cs,rpt2[0],128);
        av_cast5_crypt(cs,rpt2[1],rpt2[1],2,0);
    }
    for (j=0;j<2;j++){
        for (i=0;i<16;i++){
            if (rct2[j][i]!=rpt2[j][i]){
                av_log(NULL,AV_LOG_ERROR,"%d %02x %02x\n",i,rct2[j][i],rpt2[j][i]);
                err=1;
            }
        }
    }
    return err;
}
コード例 #2
0
ファイル: crypto_bench.c プロジェクト: Acidburn0zzz/FFmpeg
static void run_lavu_cast128(uint8_t *output,
                             const uint8_t *input, unsigned size)
{
    static struct AVCAST5 *cast;
    if (!cast && !(cast = av_cast5_alloc()))
        fatal_error("out of memory");
    av_cast5_init(cast, hardcoded_key, 128);
    av_cast5_crypt(cast, output, input, size >> 3, 0);
}