Обновилась библиотека cryptohash.lib

Тема в разделе "WASM.CRYPTO", создана пользователем R4iN, 4 сен 2007.

  1. R4iN

    R4iN New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2007
    Сообщения:
    2
    Обновилась библиотека cryptohash.lib от 22.12.06 by drizz <1of00@gmx.net> http://drizz.t35.com/
    Добавился twofish, реверс CRC32, расширился набор инструментов для работы со строками, оптимизировались CRC16, CRC32 и появилась папка examples с тестами библиотеки на масме и на c. Однако, тест на с <chtest2.c> не сравнить с тестом на масме ((, поэтому написал свой тест на c - по образу и подобию масмовского, вроде бы прошёлся по всем хэшам, чексумам и сипхерсам. Сырец в аттаче.

    Код (Text):
    1. // R4iN test for cryptohash.lib updated 22.12.06 by drizz <1of00@gmx.net>
    2. // http://drizz.t35.com/
    3. // M$VC compile: cl r4intest.c
    4.  
    5. #include "cryptohash.h"
    6. #pragma comment(lib,"cryptohash.lib")
    7.  
    8. void main() {
    9.  
    10.   unsigned char Key[] = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F";
    11.   unsigned char InBuffer[255], OutBuffer[255], TempBuffer[255];
    12.   unsigned int InBufferSize, Passes, DigestSizeBits;
    13.  
    14.   printf("Enter string to hash: ");
    15.   gets(InBuffer);
    16.   InBufferSize = strlen(InBuffer);
    17.   printf("hashing '%s' lenght: %d\n\n", InBuffer, InBufferSize);
    18.  
    19.   // checksums CRC16, CRC32, ADLER32
    20.  
    21.   printf("CRC16: \t%X\n", CRC16(&InBuffer[0], InBufferSize, INIT_CRC16));
    22.   printf("CRC32: \t%X\n", CRC32(&InBuffer[0], InBufferSize, INIT_CRC32));
    23.   printf("ADLER32: %X\n", Adler32(&InBuffer[0], InBufferSize, INIT_ADLER32));
    24.  
    25.   // hashes MD2, MD4, MD5, RMD128, RMD160, RMD256, RMD320, SHA0, SHA1, SHA256, SHA384, SHA512, Tiger, Whirlpool, Haval
    26.  
    27.   MD2Init();
    28.   MD2Update(&InBuffer[0],InBufferSize);
    29.   HexEncode(MD2Final(),MD2_DIGESTSIZE,&OutBuffer[0]);
    30.   printf("MD2: \t%s\n", OutBuffer);
    31.  
    32.   MD4Init();
    33.   MD4Update(&InBuffer[0],InBufferSize);
    34.   HexEncode(MD4Final(),MD4_DIGESTSIZE,&OutBuffer[0]);
    35.   printf("MD4: \t%s\n", OutBuffer);
    36.  
    37.   MD5Init();
    38.   MD5Update(&InBuffer[0],InBufferSize);
    39.   HexEncode(MD5Final(),MD5_DIGESTSIZE,&OutBuffer[0]);
    40.   printf("MD5: \t%s\n", OutBuffer);
    41.  
    42.   RMD128Init();
    43.   RMD128Update(&InBuffer[0],InBufferSize);
    44.   HexEncode(RMD128Final(),RMD128_DIGESTSIZE,&OutBuffer[0]);
    45.   printf("RMD128: %s\n", OutBuffer);
    46.  
    47.   RMD160Init();
    48.   RMD160Update(&InBuffer[0],InBufferSize);
    49.   HexEncode(RMD160Final(),RMD160_DIGESTSIZE,&OutBuffer[0]);
    50.   printf("RMD160: %s\n", OutBuffer);
    51.  
    52.   RMD256Init();
    53.   RMD256Update(&InBuffer[0],InBufferSize);
    54.   HexEncode(RMD256Final(),RMD256_DIGESTSIZE,&OutBuffer[0]);
    55.   printf("RMD256: %s\n", OutBuffer);
    56.  
    57.   RMD320Init();
    58.   RMD320Update(&InBuffer[0],InBufferSize);
    59.   HexEncode(RMD320Final(),RMD320_DIGESTSIZE,&OutBuffer[0]);
    60.   printf("RMD320: %s\n", OutBuffer);
    61.  
    62.   SHA0Init();
    63.   SHA0Update(&InBuffer[0],InBufferSize);
    64.   HexEncode(SHA0Final(),SHA0_DIGESTSIZE,&OutBuffer[0]);
    65.   printf("SHA0: %s\n", OutBuffer);
    66.  
    67.   SHA1Init();
    68.   SHA1Update(&InBuffer[0],InBufferSize);
    69.   HexEncode(SHA1Final(),SHA1_DIGESTSIZE,&OutBuffer[0]);
    70.   printf("SHA1: %s\n", OutBuffer);
    71.  
    72.   SHA256Init();
    73.   SHA256Update(&InBuffer[0],InBufferSize);
    74.   HexEncode(SHA256Final(),SHA256_DIGESTSIZE,&OutBuffer[0]);
    75.   printf("SHA256: %s\n", OutBuffer);
    76.  
    77.   SHA384Init();
    78.   SHA384Update(&InBuffer[0],InBufferSize);
    79.   HexEncode(SHA384Final(),SHA384_DIGESTSIZE,&OutBuffer[0]);
    80.   printf("SHA384: %s\n", OutBuffer);
    81.  
    82.   SHA512Init();
    83.   SHA512Update(&InBuffer[0],InBufferSize);
    84.   HexEncode(SHA512Final(),SHA512_DIGESTSIZE,&OutBuffer[0]);
    85.   printf("SHA512: %s\n", OutBuffer);
    86.  
    87.   TigerInit();
    88.   TigerUpdate(&InBuffer[0],InBufferSize);
    89.   HexEncode(TigerFinal(),TIGER_DIGESTSIZE,&OutBuffer[0]);
    90.   printf("Tiger: %s\n", OutBuffer);
    91.  
    92.   WhirlpoolInit();
    93.   WhirlpoolUpdate(&InBuffer[0],InBufferSize);
    94.   HexEncode(WhirlpoolFinal(),WHIRLPOOL_DIGESTSIZE,&OutBuffer[0]);
    95.   printf("Whirlpool: %s\n", OutBuffer);
    96.  
    97.   for(DigestSizeBits = 128; DigestSizeBits <= 256; DigestSizeBits +=32) {
    98.     for(Passes = 3; Passes <= 5; Passes++) {
    99.       HavalInit(DigestSizeBits,Passes);
    100.       HavalUpdate(&InBuffer[0],InBufferSize);
    101.       HexEncode(HavalFinal(),DigestSizeBits/8,&OutBuffer[0]);
    102.       printf("Haval(%d,%d): %s\n", DigestSizeBits, Passes, OutBuffer);  
    103.   } }
    104.  
    105.   // ciphers DES, RC2, RC4, RC5, RC6, TEA, XTEA, Rijndael, ThreeWay, Blowfish, Twofish
    106.  
    107.   DESSetKey(&Key[0]);
    108.   DESSetKeyEnc(&Key[0]);
    109.   DESEncrypt (&InBuffer[0],&TempBuffer[0]);
    110.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    111.   printf("DES: %.16s\n", OutBuffer);
    112.  
    113.   RC2Init(&Key[0],sizeof(Key) - 1);
    114.   RC2Encrypt(&InBuffer[0],&TempBuffer[0]);
    115.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    116.   printf("RC2: %.16s\n", OutBuffer);
    117.  
    118.   RC4Init(&Key[0],sizeof(Key) - 1);
    119.   memcpy(&TempBuffer,&InBuffer,8); // like drizz recommended to do
    120.   RC4Encrypt(&TempBuffer[0],8);
    121.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    122.   printf("RC4: %.16s\n", OutBuffer);
    123.  
    124.   RC5Init(&Key[0]);
    125.   RC5Encrypt(&InBuffer[0],&TempBuffer[0]);
    126.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    127.   printf("RC5: %.16s\n", OutBuffer);
    128.  
    129.   RC6Init(&Key[0],sizeof(Key) - 1);
    130.   RC6Encrypt(&InBuffer[0],&TempBuffer[0]);
    131.   HexEncode(&TempBuffer[0],16,&OutBuffer[0]);
    132.   printf("RC6: %.32s\n", OutBuffer);
    133.  
    134.   TEAInit(&Key[0]);
    135.   TEAEncrypt(&InBuffer[0],&TempBuffer[0]);
    136.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    137.   printf("TEA: %.16s\n", OutBuffer);
    138.  
    139.   XTEAInit(&Key[0],32);
    140.   XTEAEncrypt(&InBuffer[0],&TempBuffer[0]);
    141.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    142.   printf("XTEA: %.16s\n", OutBuffer);
    143.  
    144.   RijndaelInit(&Key[0],sizeof(Key) - 1);
    145.   RijndaelEncrypt(&InBuffer[0],&TempBuffer[0]);
    146.   HexEncode(&TempBuffer[0],16,&OutBuffer[0]);
    147.   printf("Rijndael: %.32s\n", OutBuffer);
    148.  
    149.   ThreeWayInit(&Key[0]);
    150.   ThreeWayEncrypt(&InBuffer[0],&TempBuffer[0]);
    151.   HexEncode(&TempBuffer[0],12,&OutBuffer[0]);
    152.   printf("ThreeWay: %.24s\n", OutBuffer);
    153.  
    154.   BlowfishInit(&Key[0],sizeof(Key) - 1);
    155.   BlowfishEncrypt(&InBuffer[0],&TempBuffer[0]);
    156.   HexEncode(&TempBuffer[0],8,&OutBuffer[0]);
    157.   printf("Blowfish: %.16s\n", OutBuffer);
    158.  
    159.   TwofishInit(&Key[0],sizeof(Key) - 1);
    160.   TwofishEncrypt(&InBuffer[0],&TempBuffer[0]);
    161.   HexEncode(&TempBuffer[0],16,&OutBuffer[0]);
    162.   printf("Twofish: %.32s\n", OutBuffer);
    163.  
    164.   getchar();
    165. }