如题,向兄弟们求一个可用的3Des加解密类,Ecb模式的,我搞定了,Cbc模式的搞不定,谁又,帮忙发一个,
[email protected]
或我去下也行,万分感谢...

解决方案 »

  1.   

    过程如下
    //
    3des_encode_cbc ( 5555aaaa5555aaaa , random ( 80 ) , 0102030405060708090a0b0c0d0e0f10 ) 
    //----
    random generate random data
    //----
      random = A4 52 4A CD B5 9A 42 B5 C6 41 F8 CF 0B FF 59 1F 02 A9 EF D6 A5 9E B6 D7 E4 61 2C 74 52 87 A8 78 1F D4 EC 6B 46 A1 FD 11 07 80 33 34 98 23 8C A3 18 7A 45 7B C4 1C AC A5 6D E8 30 A0 2A EC BA 81 4A 86 40 38 8C C8 97 14 93 21 88 8A 94 3A 27 32 52 1F 60 12 4C 9F D3 1F 34 F5 E2 01 A4 A8 07 17 0D AF 6B BB F0 D9 B5 C7 50 6C 20 57 67 0C D1 D1 98 DF 67 23 A5 EF D3 4C 22 D0 6A 1E 29 82 38 42 
    //

    //--
    triple des cbc encrypt
    //--
    key = 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 
    //--
    icv = 55 55 AA AA 55 55 AA AA plain = A4 52 4A CD B5 9A 42 B5 
    //--
    xor = F1 07 E0 67 E0 CF E8 1F   cipher = 2A 26 DF 94 EC 07 63 09 
    //--
    icv = 2A 26 DF 94 EC 07 63 09 plain = C6 41 F8 CF 0B FF 59 1F 
    //--
    xor = EC 67 27 5B E7 F8 3A 16   cipher = 16 68 F6 0C CC DD 59 47 
    //--
    icv = 16 68 F6 0C CC DD 59 47 plain = 02 A9 EF D6 A5 9E B6 D7 
    //--
    xor = 14 C1 19 DA 69 43 EF 90   cipher = 84 11 0E C2 F1 DD 3E B3 
    //--
    icv = 84 11 0E C2 F1 DD 3E B3 plain = E4 61 2C 74 52 87 A8 78 
    //--
    xor = 60 70 22 B6 A3 5A 96 CB   cipher = 40 5C 8C F5 8A 5C A2 D5 
    //--
    icv = 40 5C 8C F5 8A 5C A2 D5 plain = 1F D4 EC 6B 46 A1 FD 11 
    //--
    xor = 5F 88 60 9E CC FD 5F C4   cipher = 11 1A 25 E1 82 DC 53 9F 
    //--
    icv = 11 1A 25 E1 82 DC 53 9F plain = 07 80 33 34 98 23 8C A3 
    //--
    xor = 16 9A 16 D5 1A FF DF 3C   cipher = AA C7 4D E0 16 42 33 99 
    //--
    icv = AA C7 4D E0 16 42 33 99 plain = 18 7A 45 7B C4 1C AC A5 
    //--
    xor = B2 BD 08 9B D2 5E 9F 3C   cipher = 18 8B 16 47 9E C3 5F 04 
    //--
    icv = 18 8B 16 47 9E C3 5F 04 plain = 6D E8 30 A0 2A EC BA 81 
    //--
    xor = 75 63 26 E7 B4 2F E5 85   cipher = 85 8B 76 64 50 44 74 5D 
    //--
    icv = 85 8B 76 64 50 44 74 5D plain = 4A 86 40 38 8C C8 97 14 
    //--
    xor = CF 0D 36 5C DC 8C E3 49   cipher = 90 59 34 EB D7 CA B1 19 
    //--
    icv = 90 59 34 EB D7 CA B1 19 plain = 93 21 88 8A 94 3A 27 32 
    //--
    xor = 03 78 BC 61 43 F0 96 2B   cipher = 40 E9 FC 22 50 D2 C2 30 
    //--
    icv = 40 E9 FC 22 50 D2 C2 30 plain = 52 1F 60 12 4C 9F D3 1F 
    //--
    xor = 12 F6 9C 30 1C 4D 11 2F   cipher = F7 DF B0 FA 17 CE F2 5E 
    //--
    icv = F7 DF B0 FA 17 CE F2 5E plain = 34 F5 E2 01 A4 A8 07 17 
    //--
    xor = C3 2A 52 FB B3 66 F5 49   cipher = 85 0E DD 4B B9 47 61 7A 
    //--
    icv = 85 0E DD 4B B9 47 61 7A plain = 0D AF 6B BB F0 D9 B5 C7 
    //--
    xor = 88 A1 B6 F0 49 9E D4 BD   cipher = 82 D1 AC 5E 03 B7 A4 53 
    //--
    icv = 82 D1 AC 5E 03 B7 A4 53 plain = 50 6C 20 57 67 0C D1 D1 
    //--
    xor = D2 BD 8C 09 64 BB 75 82   cipher = 7B 02 4A 9D 3C A0 62 0F 
    //--
    icv = 7B 02 4A 9D 3C A0 62 0F plain = 98 DF 67 23 A5 EF D3 4C 
    //--
    xor = E3 DD 2D BE 99 4F B1 43   cipher = 80 22 87 EB 0C B9 EB C1 
    //--
    icv = 80 22 87 EB 0C B9 EB C1 plain = 22 D0 6A 1E 29 82 38 42 
    //--
    xor = A2 F2 ED F5 25 3B D3 83   cipher = AC C9 A0 24 D2 0A BC 56 
    //

      

  2.   


    //
    3des_decode_cbc ( 5555aaaa5555aaaa , 2A26DF94EC0763091668F60CCCDD594784110EC2F1DD3EB3405C8CF58A5CA2D5111A25E182DC539FAAC74DE016423399188B16479EC35F04858B76645044745D905934EBD7CAB11940E9FC2250D2C230F7DFB0FA17CEF25E850EDD4BB947617A82D1AC5E03B7A4537B024A9D3CA0620F802287EB0CB9EBC1ACC9A024D20ABC56 , 0102030405060708090a0b0c0d0e0f10 ) 
    //--
    triple des cbc decrypt
    //--
    key = 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 
    //--
    icv = 55 55 AA AA 55 55 AA AA cipher = 2A 26 DF 94 EC 07 63 09 
    //--
      plain = F1 07 E0 67 E0 CF E8 1F xor = A4 52 4A CD B5 9A 42 B5 
    //--
    icv = 2A 26 DF 94 EC 07 63 09 cipher = 16 68 F6 0C CC DD 59 47 
    //--
      plain = EC 67 27 5B E7 F8 3A 16 xor = C6 41 F8 CF 0B FF 59 1F 
    //--
    icv = 16 68 F6 0C CC DD 59 47 cipher = 84 11 0E C2 F1 DD 3E B3 
    //--
      plain = 14 C1 19 DA 69 43 EF 90 xor = 02 A9 EF D6 A5 9E B6 D7 
    //--
    icv = 84 11 0E C2 F1 DD 3E B3 cipher = 40 5C 8C F5 8A 5C A2 D5 
    //--
      plain = 60 70 22 B6 A3 5A 96 CB xor = E4 61 2C 74 52 87 A8 78 
    //--
    icv = 40 5C 8C F5 8A 5C A2 D5 cipher = 11 1A 25 E1 82 DC 53 9F 
    //--
      plain = 5F 88 60 9E CC FD 5F C4 xor = 1F D4 EC 6B 46 A1 FD 11 
    //--
    icv = 11 1A 25 E1 82 DC 53 9F cipher = AA C7 4D E0 16 42 33 99 
    //--
      plain = 16 9A 16 D5 1A FF DF 3C xor = 07 80 33 34 98 23 8C A3 
    //--
    icv = AA C7 4D E0 16 42 33 99 cipher = 18 8B 16 47 9E C3 5F 04 
    //--
      plain = B2 BD 08 9B D2 5E 9F 3C xor = 18 7A 45 7B C4 1C AC A5 
    //--
    icv = 18 8B 16 47 9E C3 5F 04 cipher = 85 8B 76 64 50 44 74 5D 
    //--
      plain = 75 63 26 E7 B4 2F E5 85 xor = 6D E8 30 A0 2A EC BA 81 
    //--
    icv = 85 8B 76 64 50 44 74 5D cipher = 90 59 34 EB D7 CA B1 19 
    //--
      plain = CF 0D 36 5C DC 8C E3 49 xor = 4A 86 40 38 8C C8 97 14 
    //--
    icv = 90 59 34 EB D7 CA B1 19 cipher = 40 E9 FC 22 50 D2 C2 30 
    //--
      plain = 03 78 BC 61 43 F0 96 2B xor = 93 21 88 8A 94 3A 27 32 
    //--
    icv = 40 E9 FC 22 50 D2 C2 30 cipher = F7 DF B0 FA 17 CE F2 5E 
    //--
      plain = 12 F6 9C 30 1C 4D 11 2F xor = 52 1F 60 12 4C 9F D3 1F 
    //--
    icv = F7 DF B0 FA 17 CE F2 5E cipher = 85 0E DD 4B B9 47 61 7A 
    //--
      plain = C3 2A 52 FB B3 66 F5 49 xor = 34 F5 E2 01 A4 A8 07 17 
    //--
    icv = 85 0E DD 4B B9 47 61 7A cipher = 82 D1 AC 5E 03 B7 A4 53 
    //--
      plain = 88 A1 B6 F0 49 9E D4 BD xor = 0D AF 6B BB F0 D9 B5 C7 
    //--
    icv = 82 D1 AC 5E 03 B7 A4 53 cipher = 7B 02 4A 9D 3C A0 62 0F 
    //--
      plain = D2 BD 8C 09 64 BB 75 82 xor = 50 6C 20 57 67 0C D1 D1 
    //--
    icv = 7B 02 4A 9D 3C A0 62 0F cipher = 80 22 87 EB 0C B9 EB C1 
    //--
      plain = E3 DD 2D BE 99 4F B1 43 xor = 98 DF 67 23 A5 EF D3 4C 
    //--
    icv = 80 22 87 EB 0C B9 EB C1 cipher = AC C9 A0 24 D2 0A BC 56 
    //--
      plain = A2 F2 ED F5 25 3B D3 83 xor = 22 D0 6A 1E 29 82 38 42 
    //
      

  3.   

    来个简单点的
    //
    3des_encode_cbc ( 5555aaaa5555aaaa , 1122334455667788 8877665544332211 , 0102030405060708090a0b0c0d0e0f10 ) 
    //--
    triple des cbc encrypt
    //--
    key = 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 
    //--
    icv = 55 55 AA AA 55 55 AA AA plain = 11 22 33 44 55 66 77 88 
    //--
    xor = 44 77 99 EE 00 33 DD 22   cipher = 90 38 BC 2A 2C 54 8B 47 
    //--
    icv = 90 38 BC 2A 2C 54 8B 47 plain = 88 77 66 55 44 33 22 11 
    //--
    xor = 18 4F DA 7F 68 67 A9 56   cipher = 1F 47 F4 5D 91 31 86 6E 
    //

    //
    3des_decode_cbc ( 5555aaaa5555aaaa , 90 38 BC 2A 2C 54 8B 47 1F 47 F4 5D 91 31 86 6E , 0102030405060708090a0b0c0d0e0f10 ) 
    //--
    triple des cbc decrypt
    //--
    key = 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 
    //--
    icv = 55 55 AA AA 55 55 AA AA cipher = 90 38 BC 2A 2C 54 8B 47 
    //--
      plain = 44 77 99 EE 00 33 DD 22 xor = 11 22 33 44 55 66 77 88 
    //--
    icv = 90 38 BC 2A 2C 54 8B 47 cipher = 1F 47 F4 5D 91 31 86 6E 
    //--
      plain = 18 4F DA 7F 68 67 A9 56 xor = 88 77 66 55 44 33 22 11 
    //

      

  4.   

    过程我知道了,CBC加解密只要加解密的字符串里不包含“00”,加解密结果就正确,包含的话,加解密的结果字符串就从“00”的地方开始,后面都是000...了,急着用,想先找个用着,没时间耗时间调试了
      

  5.   

    麻老师的snooper里面有3Des的功能,不知道能不能把3Des-CBC的函数发给我参考下,有点唐突了...
      

  6.   

    先说那个0的问题,你没弄好长度,des算法针对的是二进制数据,而不是字符串数据。
      

  7.   

    for( i = 0; i < inlen; i += 8 )
    { for( j = 0; j < 8; j++ )
    {
    icv[ j ] ^= input[ i + j ];
    }
    SingleDES( icv, result + i, key, TRUE );
    memcpy( icv, result + i, 8 ); }
    des或3des,加密 for( i = 0; i < inlen; i += 8 )
    {
    if( i > 0 )
    {
    memcpy( icv, input + i - 8, 8 );
    } SingleDES( input + i, result + i, key, FALSE ); for( j = 0; j < 8; j++ )
    {
    result[ i + j ] ^= icv[ j ];
    }
    }
    des/3des解密,这算法、过程都是公开的。
      

  8.   

    我是谁啊?呵呵,我可是久闻麻老师大名,去年公司就不让上网了,不能经常来csdn了,郁闷中