亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? twofish.c

?? 最新版本的加密解密算法庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
#elseint twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey)#endif{#ifndef TWOFISH_SMALL   unsigned char S[4*4], tmpx0, tmpx1;#endif   int k, x, y;   unsigned char tmp[4], tmp2[4], M[8*4];   ulong32 A, B;   _ARGCHK(key  != NULL);   _ARGCHK(skey != NULL);   /* invalid arguments? */   if (num_rounds != 16 && num_rounds != 0) {      return CRYPT_INVALID_ROUNDS;   }   if (keylen != 16 && keylen != 24 && keylen != 32) {      return CRYPT_INVALID_KEYSIZE;   }   /* k = keysize/64 [but since our keysize is in bytes...] */   k = keylen / 8;   /* copy the key into M */   for (x = 0; x < keylen; x++) {       M[x] = key[x] & 255;   }   /* create the S[..] words */#ifndef TWOFISH_SMALL   for (x = 0; x < k; x++) {       rs_mult(M+(x*8), S+(x*4));   }#else   for (x = 0; x < k; x++) {       rs_mult(M+(x*8), skey->twofish.S+(x*4));   }#endif   /* make subkeys */   for (x = 0; x < 20; x++) {       /* A = h(p * 2x, Me) */       for (y = 0; y < 4; y++) {           tmp[y] = x+x;       }       h_func(tmp, tmp2, M, k, 0);       LOAD32L(A, tmp2);       /* B = ROL(h(p * (2x + 1), Mo), 8) */       for (y = 0; y < 4; y++) {           tmp[y] = (unsigned char)(x+x+1);       }       h_func(tmp, tmp2, M, k, 1);       LOAD32L(B, tmp2);       B = ROL(B, 8);       /* K[2i]   = A + B */       skey->twofish.K[x+x] = (A + B) & 0xFFFFFFFFUL;       /* K[2i+1] = (A + 2B) <<< 9 */       skey->twofish.K[x+x+1] = ROL(B + B + A, 9);   }#ifndef TWOFISH_SMALL   /* make the sboxes (large ram variant) */   if (k == 2) {        for (x = 0; x < 256; x++) {           tmpx0 = sbox(0, x);           tmpx1 = sbox(1, x);           skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, tmpx0 ^ S[0]) ^ S[4])),0);           skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, tmpx1 ^ S[1]) ^ S[5])),1);           skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, tmpx0 ^ S[2]) ^ S[6])),2);           skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, tmpx1 ^ S[3]) ^ S[7])),3);        }   } else if (k == 3) {        for (x = 0; x < 256; x++) {           tmpx0 = sbox(0, x);           tmpx1 = sbox(1, x);           skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, tmpx1 ^ S[0]) ^ S[4]) ^ S[8])),0);           skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, tmpx1 ^ S[1]) ^ S[5]) ^ S[9])),1);           skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10])),2);           skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, tmpx0 ^ S[3]) ^ S[7]) ^ S[11])),3);        }   } else {        for (x = 0; x < 256; x++) {           tmpx0 = sbox(0, x);           tmpx1 = sbox(1, x);           skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, sbox(1, tmpx1 ^ S[0]) ^ S[4]) ^ S[8]) ^ S[12])),0);           skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, sbox(1, tmpx0 ^ S[1]) ^ S[5]) ^ S[9]) ^ S[13])),1);           skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10]) ^ S[14])),2);           skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, sbox(0, tmpx1 ^ S[3]) ^ S[7]) ^ S[11]) ^ S[15])),3);        }   }#else   /* where to start in the sbox layers */   /* small ram variant */   switch (k) {         case 4 : skey->twofish.start = 0; break;         case 3 : skey->twofish.start = 1; break;          default: skey->twofish.start = 2; break;   }#endif   return CRYPT_OK;}#ifdef CLEAN_STACKint twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey){   int x;   x = _twofish_setup(key, keylen, num_rounds, skey);   burn_stack(sizeof(int) * 7 + sizeof(unsigned char) * 56 + sizeof(ulong32) * 2);   return x;}#endif#ifdef CLEAN_STACKstatic void _twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key)#elsevoid twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key)#endif{    ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k;    int r;#if !defined(TWOFISH_SMALL) && !defined(__GNUC__)    ulong32 *S1, *S2, *S3, *S4;#endif        _ARGCHK(pt  != NULL);    _ARGCHK(ct  != NULL);    _ARGCHK(key != NULL);    #if !defined(TWOFISH_SMALL) && !defined(__GNUC__)    S1 = key->twofish.S[0];    S2 = key->twofish.S[1];    S3 = key->twofish.S[2];    S4 = key->twofish.S[3];#endif        LOAD32L(a,&pt[0]); LOAD32L(b,&pt[4]);    LOAD32L(c,&pt[8]); LOAD32L(d,&pt[12]);    a ^= key->twofish.K[0];    b ^= key->twofish.K[1];    c ^= key->twofish.K[2];    d ^= key->twofish.K[3];        k  = key->twofish.K + 8;    for (r = 8; r != 0; --r) {        t2 = g1_func(b, key);        t1 = g_func(a, key) + t2;        c  = ROR(c ^ (t1 + k[0]), 1);        d  = ROL(d, 1) ^ (t2 + t1 + k[1]);                t2 = g1_func(d, key);        t1 = g_func(c, key) + t2;        a  = ROR(a ^ (t1 + k[2]), 1);        b  = ROL(b, 1) ^ (t2 + t1 + k[3]);        k += 4;   }    /* output with "undo last swap" */    ta = c ^ key->twofish.K[4];    tb = d ^ key->twofish.K[5];    tc = a ^ key->twofish.K[6];    td = b ^ key->twofish.K[7];    /* store output */    STORE32L(ta,&ct[0]); STORE32L(tb,&ct[4]);    STORE32L(tc,&ct[8]); STORE32L(td,&ct[12]);}#ifdef CLEAN_STACKvoid twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key){   _twofish_ecb_encrypt(pt, ct, key);   burn_stack(sizeof(ulong32) * 10 + sizeof(int));}#endif#ifdef CLEAN_STACKstatic void _twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key)#elsevoid twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key)#endif{    ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k;    int r;#if !defined(TWOFISH_SMALL) && !defined(__GNUC__)    ulong32 *S1, *S2, *S3, *S4;#endif        _ARGCHK(pt != NULL);    _ARGCHK(ct != NULL);    _ARGCHK(key != NULL);    #if !defined(TWOFISH_SMALL) && !defined(__GNUC__)    S1 = key->twofish.S[0];    S2 = key->twofish.S[1];    S3 = key->twofish.S[2];    S4 = key->twofish.S[3];#endif        /* load input */    LOAD32L(ta,&ct[0]); LOAD32L(tb,&ct[4]);    LOAD32L(tc,&ct[8]); LOAD32L(td,&ct[12]);    /* undo undo final swap */    a = tc ^ key->twofish.K[6];    b = td ^ key->twofish.K[7];    c = ta ^ key->twofish.K[4];    d = tb ^ key->twofish.K[5];    k = key->twofish.K + 36;    for (r = 8; r != 0; --r) {        t2 = g1_func(d, key);        t1 = g_func(c, key) + t2;        a = ROL(a, 1) ^ (t1 + k[2]);        b = ROR(b ^ (t2 + t1 + k[3]), 1);        t2 = g1_func(b, key);        t1 = g_func(a, key) + t2;        c = ROL(c, 1) ^ (t1 + k[0]);        d = ROR(d ^ (t2 +  t1 + k[1]), 1);        k -= 4;    }    /* pre-white */    a ^= key->twofish.K[0];    b ^= key->twofish.K[1];    c ^= key->twofish.K[2];    d ^= key->twofish.K[3];        /* store */    STORE32L(a, &pt[0]); STORE32L(b, &pt[4]);    STORE32L(c, &pt[8]); STORE32L(d, &pt[12]);}#ifdef CLEAN_STACKvoid twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key){   _twofish_ecb_decrypt(ct, pt, key);   burn_stack(sizeof(ulong32) * 10 + sizeof(int));}#endifint twofish_test(void){ #ifndef LTC_TEST    return CRYPT_NOP; #else     static const struct {      int keylen;     unsigned char key[32], pt[16], ct[16]; } tests[] = {   { 16,     { 0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32,       0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A },     { 0xD4, 0x91, 0xDB, 0x16, 0xE7, 0xB1, 0xC3, 0x9E,       0x86, 0xCB, 0x08, 0x6B, 0x78, 0x9F, 0x54, 0x19 },     { 0x01, 0x9F, 0x98, 0x09, 0xDE, 0x17, 0x11, 0x85,       0x8F, 0xAA, 0xC3, 0xA3, 0xBA, 0x20, 0xFB, 0xC3 }   }, {     24,     { 0x88, 0xB2, 0xB2, 0x70, 0x6B, 0x10, 0x5E, 0x36,       0xB4, 0x46, 0xBB, 0x6D, 0x73, 0x1A, 0x1E, 0x88,       0xEF, 0xA7, 0x1F, 0x78, 0x89, 0x65, 0xBD, 0x44 },     { 0x39, 0xDA, 0x69, 0xD6, 0xBA, 0x49, 0x97, 0xD5,       0x85, 0xB6, 0xDC, 0x07, 0x3C, 0xA3, 0x41, 0xB2 },     { 0x18, 0x2B, 0x02, 0xD8, 0x14, 0x97, 0xEA, 0x45,       0xF9, 0xDA, 0xAC, 0xDC, 0x29, 0x19, 0x3A, 0x65 }   }, {      32,     { 0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46,       0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D,       0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B,       0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F },     { 0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F,       0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6 },     { 0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97,       0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA }   }}; symmetric_key key; unsigned char tmp[2][16]; int err, i, y;  for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) {    if ((err = twofish_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) {       return err;    }    twofish_ecb_encrypt(tests[i].pt, tmp[0], &key);    twofish_ecb_decrypt(tmp[0], tmp[1], &key);    if (memcmp(tmp[0], tests[i].ct, 16) != 0 || memcmp(tmp[1], tests[i].pt, 16) != 0) {       return CRYPT_FAIL_TESTVECTOR;    }      /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */      for (y = 0; y < 16; y++) tmp[0][y] = 0;      for (y = 0; y < 1000; y++) twofish_ecb_encrypt(tmp[0], tmp[0], &key);      for (y = 0; y < 1000; y++) twofish_ecb_decrypt(tmp[0], tmp[0], &key);      for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; }     return CRYPT_OK;#endif }int twofish_keysize(int *desired_keysize){   _ARGCHK(desired_keysize);   if (*desired_keysize < 16)      return CRYPT_INVALID_KEYSIZE;   if (*desired_keysize < 24) {      *desired_keysize = 16;      return CRYPT_OK;   } else if (*desired_keysize < 32) {      *desired_keysize = 24;      return CRYPT_OK;   } else {      *desired_keysize = 32;      return CRYPT_OK;   }}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
盗摄精品av一区二区三区| 国产白丝精品91爽爽久久| 亚洲天堂a在线| 国产精品久久久久毛片软件| 国产精品久久久久毛片软件| 国产精品每日更新在线播放网址| 国产色产综合产在线视频| 久久久91精品国产一区二区三区| 国产亚洲婷婷免费| 中文字幕不卡在线观看| 国产精品美女一区二区三区| 中文字幕av一区二区三区免费看| 国产精品动漫网站| 亚洲妇熟xx妇色黄| 激情小说亚洲一区| 成人精品国产福利| 欧洲激情一区二区| 欧美电影免费观看高清完整版在线| 日韩欧美国产综合一区| 国产三级三级三级精品8ⅰ区| 中文字幕日本不卡| 亚洲1区2区3区4区| 国产一区二区三区观看| 国产日产欧产精品推荐色| 免费观看30秒视频久久| 99精品久久免费看蜜臀剧情介绍| 2023国产精华国产精品| 麻豆精品精品国产自在97香蕉| 欧美日韩高清一区| 一区二区三区视频在线看| 91一区二区在线| 亚洲乱码国产乱码精品精的特点| 国产91露脸合集magnet| 国产精品无码永久免费888| 国模套图日韩精品一区二区 | 欧美视频在线观看一区二区| 国产精品国产三级国产aⅴ中文| 成人精品视频一区二区三区尤物| 国产天堂亚洲国产碰碰| 国产成人99久久亚洲综合精品| 久久久亚洲精品一区二区三区| 国内久久精品视频| 日本一区二区三区久久久久久久久不 | 国产一区二区不卡在线| 国产色爱av资源综合区| 成人av在线网| 亚洲综合男人的天堂| 精品婷婷伊人一区三区三| 亚洲成人综合网站| 91精品国产一区二区三区 | 亚洲国产综合在线| 6080午夜不卡| 国产剧情在线观看一区二区| 国产精品网站导航| 欧美色精品在线视频| 日本va欧美va精品| 久久精品视频免费| 色噜噜狠狠色综合欧洲selulu| 午夜一区二区三区在线观看| 精品国精品自拍自在线| 成人性生交大片免费看视频在线 | 日本中文在线一区| 国产肉丝袜一区二区| 日本久久一区二区三区| 麻豆精品久久精品色综合| 国产精品午夜免费| 欧美图区在线视频| 精品无码三级在线观看视频 | 91在线小视频| 视频一区在线播放| 中文在线免费一区三区高中清不卡| 97se亚洲国产综合自在线不卡| 日韩激情一二三区| 中文在线资源观看网站视频免费不卡| 欧美在线不卡一区| 国模娜娜一区二区三区| 亚洲一区二区三区小说| 久久久久久久综合| 欧美日韩日日骚| 大美女一区二区三区| 日韩av网站在线观看| 1区2区3区国产精品| 欧美成人三级在线| 在线亚洲欧美专区二区| 国产99精品国产| 日本亚洲视频在线| 一区二区三区波多野结衣在线观看| 久久一区二区三区四区| 51久久夜色精品国产麻豆| 欧美精品欧美精品系列| 成人污视频在线观看| 久久激情五月激情| 亚洲动漫第一页| 国产精品久久久久久一区二区三区| 日韩一区二区三区免费观看| 在线一区二区三区四区五区 | 国产目拍亚洲精品99久久精品| 欧美日韩一区二区三区在线看| 成人网男人的天堂| 国产精品一区在线观看你懂的| 蜜臀av一区二区| 午夜精品成人在线视频| 亚洲一区二区三区中文字幕在线 | 91免费国产视频网站| 成人午夜在线免费| 国产91对白在线观看九色| 久久97超碰色| 麻豆91免费看| 久久精品久久99精品久久| 日韩精品免费专区| 日韩在线卡一卡二| 三级久久三级久久久| 天天av天天翘天天综合网 | 91精品国产综合久久久久久久久久| 欧美午夜精品免费| 精品视频资源站| 91精品国产美女浴室洗澡无遮挡| 欧美日本在线播放| 欧美久久久一区| 日韩欧美国产wwwww| 欧美成人乱码一区二区三区| 日韩精品一区在线| 亚洲精品一区在线观看| 久久久久国色av免费看影院| 中文字幕免费不卡| 亚洲天堂成人网| 亚洲综合网站在线观看| 五月婷婷另类国产| 免费高清视频精品| 国产酒店精品激情| 国产精品白丝jk黑袜喷水| 菠萝蜜视频在线观看一区| 99精品国产91久久久久久| 在线日韩国产精品| 日韩一区二区免费高清| 久久久99精品免费观看| 亚洲欧美日韩小说| 天堂成人国产精品一区| 久久精品国产精品青草| 国产不卡免费视频| 色婷婷综合久久久中文一区二区 | 欧美激情在线看| 亚洲色图另类专区| 午夜久久久久久久久| 精品一区二区三区蜜桃| 成人午夜激情影院| 欧美色成人综合| 日韩精品一区在线观看| 一区视频在线播放| 丝袜美腿亚洲色图| 成人美女视频在线观看18| 在线中文字幕一区| 亚洲精品一区二区三区四区高清| 国产精品电影院| 美国十次综合导航| 色综合天天性综合| 91精品国产品国语在线不卡| 国产精品情趣视频| 高清不卡在线观看av| 欧美一区二区黄| 一区二区中文视频| 极品销魂美女一区二区三区| 欧美在线一区二区| 日本一区二区三区国色天香 | 精品国产免费一区二区三区四区| 亚洲视频香蕉人妖| 精品一区二区三区在线观看| 色吊一区二区三区| 国产色91在线| 久久精品国产**网站演员| 91久久精品一区二区| 久久久高清一区二区三区| 婷婷一区二区三区| 色一情一伦一子一伦一区| 久久久久久一级片| 日本不卡在线视频| 欧美亚洲一区二区三区四区| 欧美国产日韩亚洲一区| 美日韩一区二区三区| 欧美日韩一区高清| 一区二区三区在线播| 不卡一二三区首页| 国产欧美精品一区aⅴ影院 | 91一区二区在线| 国产亚洲欧美日韩日本| 久久99精品国产.久久久久久| 欧美视频在线观看一区二区| 亚洲日本护士毛茸茸| a在线播放不卡| 国产精品网友自拍| 国产.精品.日韩.另类.中文.在线.播放| 3d成人动漫网站| 五月天精品一区二区三区| 欧美三级电影在线看| 亚洲一区二区视频在线| 欧美午夜在线观看| 天天综合天天综合色| 欧美顶级少妇做爰| 视频一区二区三区中文字幕| 欧美剧情电影在线观看完整版免费励志电影 |