⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 khazad.c

📁 该压缩包中包括 tom的加密函数库及pdf说明 ,以及Rinick s ECC:椭圆曲线非对称加密密钥生成器
💻 C
📖 第 1 页 / 共 5 页
字号:
    CONST64(0xbaafed84c6f8423e), CONST64(0x8728cad93b65e25e), CONST64(0xf54c25d2bb9c6927), CONST64(0xcfc00a894305ca46),    CONST64(0x247460283c30140c), CONST64(0x26a00f43ec89af65), CONST64(0x05df676dd5bdb868), CONST64(0x3a8c2f5bf899a361),    CONST64(0x091d180a0f0c0503), CONST64(0x7d1846bce2235ec1), CONST64(0xb87b82ef1641f957), CONST64(0x1899fecea97f67d6),    CONST64(0x35f086ec9a4376d9), CONST64(0x9512facd257de858), CONST64(0x32fb8eea9f4775d8), CONST64(0x2fbd1749e385aa66),    CONST64(0x1f92f6c8ac7b64d7), CONST64(0xa683cd9cd2e84e3a), CONST64(0x424b0e8acf0745c8), CONST64(0xb4b9fd88ccf0443c),    CONST64(0xdc90832635cf13fa), CONST64(0xc563c453f462a796), CONST64(0x52a551f501a6f4a7), CONST64(0xef01b477c25ab598),    CONST64(0xbe1a33527b9729ec), CONST64(0x0f7ca9b762dad5b8), CONST64(0x6f2276a8fc3b54c7), CONST64(0x6df619c32c82efae),    CONST64(0x02d46f6bd0b9bb69), CONST64(0xecbf62a77a31dd4b), CONST64(0x76d131dd3d96e0ab), CONST64(0x78c721d1379ee6a9),    CONST64(0x28b61f4fe681a967), CONST64(0x364e503c22281e0a), CONST64(0xc8cb028f4601c947), CONST64(0xe4c8c3161def0bf2),    CONST64(0x2c03c1995beec2b5), CONST64(0xee6b0dccaa886622), CONST64(0x81497b6456b332e5), CONST64(0xb00c235e719f2fee),    CONST64(0x1d4699a37cc2dfbe), CONST64(0xd13845fa87ac7d2b), CONST64(0xa0e27c21bf3e9e81), CONST64(0x7ea6906c5a483612),    CONST64(0xaef46c2db5369883), CONST64(0x41f5d85a776c2d1b), CONST64(0x2a6270243638120e), CONST64(0xe96005caaf8c6523),    CONST64(0xf1f9fb0406f302f5), CONST64(0xc6dd12834c09cf45), CONST64(0xe77615c6a5846321), CONST64(0x50713e9ed11f4fce),    CONST64(0xe2a972ab7039db49), CONST64(0xc4097de89cb0742c), CONST64(0xd58d9b2c3ac316f9), CONST64(0x8854636e59bf37e6),    CONST64(0x251ed99354e2c7b6), CONST64(0xd8255df088a07828), CONST64(0x6581b8724b5c3917), CONST64(0xa9ff642bb0329b82),    CONST64(0x46fed05c72682e1a), CONST64(0x96ac2c1d9d16808b), CONST64(0xc0bca33e21df1ffe), CONST64(0x91a7241b9812838a),    CONST64(0x3f5348362d241b09), CONST64(0x4540068cca0346c9), CONST64(0xb2d84c35a1269487), CONST64(0xf7984ab96b25d24e),    CONST64(0x9d655b7c42a33ee1), CONST64(0xca1f6de496b8722e), CONST64(0x8642736253b731e4), CONST64(0x9a6e537a47a73de0),    CONST64(0xab2b0b40608b20eb), CONST64(0xd759f447ea7aad90), CONST64(0x5bb849ff0eaaf1a4), CONST64(0x5ad2f0446678221e),    CONST64(0xbcce5c39ab2e9285), CONST64(0x3d87275dfd9da060), CONST64(0x0000000000000000), CONST64(0xfb5a35deb1946f25),    CONST64(0xf6f2f30203f701f4), CONST64(0xedd5db1c12e30ef1), CONST64(0xcb75d45ffe6aa194), CONST64(0x3145583a272c1d0b),    CONST64(0x8f5f6b685cbb34e7), CONST64(0x56108f23bcc99f75), CONST64(0xb7072b58749b2cef), CONST64(0x8ce1bdb8e4d05c34),    CONST64(0x97c695a6f5c45331), CONST64(0x168feec2a37761d4), CONST64(0x0aa3cedab7676dd0), CONST64(0xb5d34433a4229786),    CONST64(0x6755d7199be5827e), CONST64(0x64eb01c9238eeaad), CONST64(0xc9a1bb342ed31afd), CONST64(0xdf2e55f68da47b29),    CONST64(0x90cd9da0f0c05030), CONST64(0xa188c59ad7ec4d3b), CONST64(0xfa308c65d946bc9f), CONST64(0xd286932a3fc715f8),    CONST64(0x68297eaef93f57c6), CONST64(0x79ad986a5f4c3513), CONST64(0x123a30141e180a06), CONST64(0x1b27281e11140f05),    CONST64(0x613466a4f63352c5), CONST64(0x77bb886655443311), CONST64(0x58069f2fb6c19977), CONST64(0x6943c71591ed847c),    CONST64(0x7b79f7018ff58e7a), CONST64(0x756fe70d85fd8878), CONST64(0x82f7adb4eed85a36), CONST64(0x54c4e0486c70241c),    CONST64(0xaf9ed596dde44b39), CONST64(0x9219f2cb2079eb59), CONST64(0x48e8c05078602818), CONST64(0xbf708ae91345fa56),    CONST64(0x3e39f18d45f6c8b3), CONST64(0x3724e9874afacdb0), CONST64(0xfc513dd8b4906c24), CONST64(0xe07d1dc0a0806020),    CONST64(0x3932f98b40f2cbb2), CONST64(0xd94fe44be072ab92), CONST64(0x4e8971ed15b6f8a3), CONST64(0x7a134ebae7275dc0),    CONST64(0xc1d61a85490dcc44), CONST64(0x33913751f795a662), CONST64(0x70b0806050403010), CONST64(0x2b08c99f5eeac1b4),    CONST64(0xbbc5543fae2a9184), CONST64(0xd4e722975211c543), CONST64(0xde44ec4de576a893), CONST64(0x74055eb6ed2f5bc2),    CONST64(0xebb46aa17f35de4a), CONST64(0x145b81a973cedabd), CONST64(0x8a800c0589068c8f), CONST64(0xc30275ee99b4772d),    CONST64(0x135089af76cad9bc), CONST64(0xf32d946fd64ab99c), CONST64(0x0bc97761dfb5be6a), CONST64(0xddfa3a9d5d1dc040),    CONST64(0x577a3698d41b4ccf), CONST64(0x498279eb10b2fba2), CONST64(0xa7e97427ba3a9d80), CONST64(0xf09342bf6e21d14f),    CONST64(0x5dd9f842637c211f), CONST64(0x4c5d1e86c50f43ca), CONST64(0x71da39db3892e3aa), CONST64(0xd3ec2a915715c642),};static const ulong64 c[R + 1] = {    CONST64(0xba542f7453d3d24d),    CONST64(0x50ac8dbf70529a4c),    CONST64(0xead597d133515ba6),    CONST64(0xde48a899db32b7fc),    CONST64(0xe39e919be2bb416e),    CONST64(0xa5cb6b95a1f3b102),    CONST64(0xccc41d14c363da5d),    CONST64(0x5fdc7dcd7f5a6c5c),    CONST64(0xf726ffede89d6f8e),}; /**    Initialize the Khazad block cipher    @param key The symmetric key you wish to pass    @param keylen The key length in bytes    @param num_rounds The number of rounds desired (0 for default)    @param skey The key in as scheduled by this function.    @return CRYPT_OK if successful */int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey){   int               r;   const ulong64    *S;   ulong64           K2, K1;   LTC_ARGCHK(key  != NULL);   LTC_ARGCHK(skey != NULL);   if (keylen != 16) {      return CRYPT_INVALID_KEYSIZE;   }   if (num_rounds != 8 && num_rounds != 0) {      return CRYPT_INVALID_ROUNDS;   }   /* use 7th table */   S = T7;    /*    * map unsigned char array cipher key to initial key state (mu):    */   K2 =      ((ulong64)key[ 0] << 56) ^      ((ulong64)key[ 1] << 48) ^      ((ulong64)key[ 2] << 40) ^      ((ulong64)key[ 3] << 32) ^      ((ulong64)key[ 4] << 24) ^      ((ulong64)key[ 5] << 16) ^      ((ulong64)key[ 6] <<  8) ^      ((ulong64)key[ 7]      );   K1 =      ((ulong64)key[ 8] << 56) ^      ((ulong64)key[ 9] << 48) ^      ((ulong64)key[10] << 40) ^      ((ulong64)key[11] << 32) ^      ((ulong64)key[12] << 24) ^      ((ulong64)key[13] << 16) ^      ((ulong64)key[14] <<  8) ^      ((ulong64)key[15]      );   /*    * compute the round keys:    */   for (r = 0; r <= R; r++) {      /*       * K[r] = rho(c[r], K1) ^ K2;       */      skey->khazad.roundKeyEnc[r] =         T0[(int)(K1 >> 56)       ] ^         T1[(int)(K1 >> 48) & 0xff] ^         T2[(int)(K1 >> 40) & 0xff] ^         T3[(int)(K1 >> 32) & 0xff] ^         T4[(int)(K1 >> 24) & 0xff] ^         T5[(int)(K1 >> 16) & 0xff] ^         T6[(int)(K1 >>  8) & 0xff] ^         T7[(int)(K1      ) & 0xff] ^         c[r] ^ K2;      K2 = K1; K1 = skey->khazad.roundKeyEnc[r];   }   /*    * compute the inverse key schedule:    * K'^0 = K^R, K'^R = K^0, K'^r = theta(K^{R-r})    */   skey->khazad.roundKeyDec[0] = skey->khazad.roundKeyEnc[R];   for (r = 1; r < R; r++) {      K1 = skey->khazad.roundKeyEnc[R - r];      skey->khazad.roundKeyDec[r] =         T0[(int)S[(int)(K1 >> 56)       ] & 0xff] ^         T1[(int)S[(int)(K1 >> 48) & 0xff] & 0xff] ^         T2[(int)S[(int)(K1 >> 40) & 0xff] & 0xff] ^         T3[(int)S[(int)(K1 >> 32) & 0xff] & 0xff] ^         T4[(int)S[(int)(K1 >> 24) & 0xff] & 0xff] ^         T5[(int)S[(int)(K1 >> 16) & 0xff] & 0xff] ^         T6[(int)S[(int)(K1 >>  8) & 0xff] & 0xff] ^         T7[(int)S[(int)(K1   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -