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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rc5.c

?? 該壓縮包中包括 tom的加密函數(shù)庫及pdf說明 ,以及Rinick s ECC:橢圓曲線非對稱加密密鑰生成器
?? C
字號:
/* LibTomCrypt, modular cryptographic library -- Tom St Denis * * LibTomCrypt is a library that provides various cryptographic * algorithms in a highly modular and flexible manner. * * The library is free for all purposes without any express * guarantee it works. * * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org *//**   @file rc5.c   RC5 code by Tom St Denis */#include "tomcrypt.h"#ifdef RC5const struct ltc_cipher_descriptor rc5_desc ={    "rc5",    2,    8, 128, 8, 12,    &rc5_setup,    &rc5_ecb_encrypt,    &rc5_ecb_decrypt,    &rc5_test,    &rc5_done,    &rc5_keysize,    NULL, NULL, NULL, NULL, NULL, NULL, NULL};static const ulong32 stab[50] = {0xb7e15163UL, 0x5618cb1cUL, 0xf45044d5UL, 0x9287be8eUL, 0x30bf3847UL, 0xcef6b200UL, 0x6d2e2bb9UL, 0x0b65a572UL,0xa99d1f2bUL, 0x47d498e4UL, 0xe60c129dUL, 0x84438c56UL, 0x227b060fUL, 0xc0b27fc8UL, 0x5ee9f981UL, 0xfd21733aUL,0x9b58ecf3UL, 0x399066acUL, 0xd7c7e065UL, 0x75ff5a1eUL, 0x1436d3d7UL, 0xb26e4d90UL, 0x50a5c749UL, 0xeedd4102UL,0x8d14babbUL, 0x2b4c3474UL, 0xc983ae2dUL, 0x67bb27e6UL, 0x05f2a19fUL, 0xa42a1b58UL, 0x42619511UL, 0xe0990ecaUL,0x7ed08883UL, 0x1d08023cUL, 0xbb3f7bf5UL, 0x5976f5aeUL, 0xf7ae6f67UL, 0x95e5e920UL, 0x341d62d9UL, 0xd254dc92UL,0x708c564bUL, 0x0ec3d004UL, 0xacfb49bdUL, 0x4b32c376UL, 0xe96a3d2fUL, 0x87a1b6e8UL, 0x25d930a1UL, 0xc410aa5aUL,0x62482413UL, 0x007f9dccUL}; /**    Initialize the RC5 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 */#ifdef LTC_CLEAN_STACKstatic int _rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey)#elseint rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey)#endif{    ulong32 L[64], *S, A, B, i, j, v, s, t, l;    LTC_ARGCHK(skey != NULL);    LTC_ARGCHK(key  != NULL);        /* test parameters */    if (num_rounds == 0) {        num_rounds = rc5_desc.default_rounds;    }    if (num_rounds < 12 || num_rounds > 24) {        return CRYPT_INVALID_ROUNDS;    }    /* key must be between 64 and 1024 bits */    if (keylen < 8 || keylen > 128) {       return CRYPT_INVALID_KEYSIZE;    }        skey->rc5.rounds = num_rounds;    S = skey->rc5.K;    /* copy the key into the L array */    for (A = i = j = 0; i < (ulong32)keylen; ) {         A = (A << 8) | ((ulong32)(key[i++] & 255));        if ((i & 3) == 0) {           L[j++] = BSWAP(A);           A = 0;        }    }    if ((keylen & 3) != 0) {        A <<= (ulong32)((8 * (4 - (keylen&3))));        L[j++] = BSWAP(A);    }    /* setup the S array */    t = (ulong32)(2 * (num_rounds + 1));    XMEMCPY(S, stab, t * sizeof(*S));    /* mix buffer */    s = 3 * MAX(t, j);    l = j;    for (A = B = i = j = v = 0; v < s; v++) {         A = S[i] = ROLc(S[i] + A + B, 3);        B = L[j] = ROL(L[j] + A + B, (A+B));        if (++i == t) { i = 0; }        if (++j == l) { j = 0; }    }    return CRYPT_OK;}#ifdef LTC_CLEAN_STACKint rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey){   int x;   x = _rc5_setup(key, keylen, num_rounds, skey);   burn_stack(sizeof(ulong32) * 122 + sizeof(int));   return x;}#endif/**  Encrypts a block of text with RC5  @param pt The input plaintext (8 bytes)  @param ct The output ciphertext (8 bytes)  @param skey The key as scheduled*/#ifdef LTC_CLEAN_STACKstatic void _rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey)#elsevoid rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey)#endif{   ulong32 A, B, *K;   int r;   LTC_ARGCHK(skey != NULL);   LTC_ARGCHK(pt   != NULL);   LTC_ARGCHK(ct   != NULL);   LOAD32L(A, &pt[0]);   LOAD32L(B, &pt[4]);   A += skey->rc5.K[0];   B += skey->rc5.K[1];   K  = skey->rc5.K + 2;      if ((skey->rc5.rounds & 1) == 0) {      for (r = 0; r < skey->rc5.rounds; r += 2) {          A = ROL(A ^ B, B) + K[0];          B = ROL(B ^ A, A) + K[1];          A = ROL(A ^ B, B) + K[2];          B = ROL(B ^ A, A) + K[3];          K += 4;      }   } else {      for (r = 0; r < skey->rc5.rounds; r++) {          A = ROL(A ^ B, B) + K[0];          B = ROL(B ^ A, A) + K[1];          K += 2;      }   }   STORE32L(A, &ct[0]);   STORE32L(B, &ct[4]);}#ifdef LTC_CLEAN_STACKvoid rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey){   _rc5_ecb_encrypt(pt, ct, skey);   burn_stack(sizeof(ulong32) * 2 + sizeof(int));}#endif/**  Decrypts a block of text with RC5  @param ct The input ciphertext (8 bytes)  @param pt The output plaintext (8 bytes)  @param skey The key as scheduled */#ifdef LTC_CLEAN_STACKstatic void _rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey)#elsevoid rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey)#endif{   ulong32 A, B, *K;   int r;   LTC_ARGCHK(skey != NULL);   LTC_ARGCHK(pt   != NULL);   LTC_ARGCHK(ct   != NULL);   LOAD32L(A, &ct[0]);   LOAD32L(B, &ct[4]);   K = skey->rc5.K + (skey->rc5.rounds << 1);      if ((skey->rc5.rounds & 1) == 0) {       K -= 2;       for (r = skey->rc5.rounds - 1; r >= 0; r -= 2) {          B = ROR(B - K[3], A) ^ A;          A = ROR(A - K[2], B) ^ B;          B = ROR(B - K[1], A) ^ A;          A = ROR(A - K[0], B) ^ B;          K -= 4;        }   } else {      for (r = skey->rc5.rounds - 1; r >= 0; r--) {          B = ROR(B - K[1], A) ^ A;          A = ROR(A - K[0], B) ^ B;          K -= 2;      }   }   A -= skey->rc5.K[0];   B -= skey->rc5.K[1];   STORE32L(A, &pt[0]);   STORE32L(B, &pt[4]);}#ifdef LTC_CLEAN_STACKvoid rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey){   _rc5_ecb_decrypt(ct, pt, skey);   burn_stack(sizeof(ulong32) * 2 + sizeof(int));}#endif/**  Performs a self-test of the RC5 block cipher  @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled*/int rc5_test(void){ #ifndef LTC_TEST    return CRYPT_NOP; #else       static const struct {       unsigned char key[16], pt[8], ct[8];   } tests[] = {   {       { 0x91, 0x5f, 0x46, 0x19, 0xbe, 0x41, 0xb2, 0x51,         0x63, 0x55, 0xa5, 0x01, 0x10, 0xa9, 0xce, 0x91 },       { 0x21, 0xa5, 0xdb, 0xee, 0x15, 0x4b, 0x8f, 0x6d },       { 0xf7, 0xc0, 0x13, 0xac, 0x5b, 0x2b, 0x89, 0x52 }   },   {       { 0x78, 0x33, 0x48, 0xe7, 0x5a, 0xeb, 0x0f, 0x2f,         0xd7, 0xb1, 0x69, 0xbb, 0x8d, 0xc1, 0x67, 0x87 },       { 0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52 },       { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 }   },   {       { 0xDC, 0x49, 0xdb, 0x13, 0x75, 0xa5, 0x58, 0x4f,         0x64, 0x85, 0xb4, 0x13, 0xb5, 0xf1, 0x2b, 0xaf },       { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 },       { 0x65, 0xc1, 0x78, 0xb2, 0x84, 0xd1, 0x97, 0xcc }   }   };   unsigned char tmp[2][8];   int x, y, err;   symmetric_key key;   for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) {      /* setup key */      if ((err = rc5_setup(tests[x].key, 16, 12, &key)) != CRYPT_OK) {         return err;      }      /* encrypt and decrypt */      rc5_ecb_encrypt(tests[x].pt, tmp[0], &key);      rc5_ecb_decrypt(tmp[0], tmp[1], &key);      /* compare */      if (memcmp(tmp[0], tests[x].ct, 8) != 0 || memcmp(tmp[1], tests[x].pt, 8) != 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 < 8; y++) tmp[0][y] = 0;      for (y = 0; y < 1000; y++) rc5_ecb_encrypt(tmp[0], tmp[0], &key);      for (y = 0; y < 1000; y++) rc5_ecb_decrypt(tmp[0], tmp[0], &key);      for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR;   }   return CRYPT_OK;  #endif}/** Terminate the context    @param skey    The scheduled key*/void rc5_done(symmetric_key *skey){}/**  Gets suitable key size  @param keysize [in/out] The length of the recommended key (in bytes).  This function will store the suitable size back in this variable.  @return CRYPT_OK if the input key size is acceptable.*/int rc5_keysize(int *keysize){   LTC_ARGCHK(keysize != NULL);   if (*keysize < 8) {      return CRYPT_INVALID_KEYSIZE;   } else if (*keysize > 128) {      *keysize = 128;   }   return CRYPT_OK;}#endif/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/rc5.c,v $ *//* $Revision: 1.7 $ *//* $Date: 2005/05/05 14:35:58 $ */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲高清一区二区三区不卡| 激情久久久久久久久久久久久久久久| www.欧美色图| 亚洲日本在线天堂| 在线观看免费成人| 亚洲成a人在线观看| 欧美一卡2卡三卡4卡5免费| 麻豆高清免费国产一区| 久久久无码精品亚洲日韩按摩| 国产99精品在线观看| 亚洲裸体在线观看| 欧美伦理视频网站| 国产精品中文字幕日韩精品 | 国产亚洲精品超碰| 白白色亚洲国产精品| 亚洲视频一二三区| 91精品久久久久久久99蜜桃 | 欧美日韩成人一区| 国产一区二区三区在线观看精品| 国产拍揄自揄精品视频麻豆| 一道本成人在线| 日韩不卡在线观看日韩不卡视频| 国产亚洲精品bt天堂精选| 色综合久久久网| 青青草国产成人99久久| 国产精品久久久久久久久久久免费看| 色综合天天做天天爱| 久久国产综合精品| 亚洲精品第一国产综合野| 欧美一区二区三区免费| av影院午夜一区| 日本成人中文字幕在线视频| 国产精品卡一卡二卡三| 日韩视频在线观看一区二区| 99视频有精品| 看电视剧不卡顿的网站| 亚洲理论在线观看| 国产清纯白嫩初高生在线观看91| 欧美三级日韩在线| av网站一区二区三区| 蜜臀av国产精品久久久久| 18欧美亚洲精品| 久久久影视传媒| 日韩欧美高清dvd碟片| 91麻豆.com| 成人手机电影网| 免费看欧美美女黄的网站| 一区二区三区欧美日| 日本一区二区三区国色天香 | 免费高清在线视频一区·| 国产精品成人一区二区三区夜夜夜 | 26uuu精品一区二区在线观看| 色先锋资源久久综合| 高清成人免费视频| 国产做a爰片久久毛片| 青娱乐精品视频| 亚洲成人精品一区二区| 亚洲男人的天堂一区二区| 国产精品久久久久影视| 国产婷婷一区二区| 久久久久久久一区| 精品成人在线观看| 精品久久久久久最新网址| 在线综合+亚洲+欧美中文字幕| 色综合亚洲欧洲| 91免费看视频| 色综合天天综合| 91丝袜国产在线播放| www.久久久久久久久| 国产高清精品久久久久| 国产麻豆91精品| 国产美女精品在线| 韩国欧美国产1区| 国产一区二区三区| 久久99国内精品| 国产一区二区三区黄视频 | 日韩欧美激情四射| 日韩精品一区二区三区在线| 日韩一区二区免费视频| 日韩一区二区在线观看视频 | 香蕉久久夜色精品国产使用方法| 亚洲一区二区三区免费视频| 亚洲一区二区在线视频| 亚洲国产成人精品视频| 天堂成人国产精品一区| 日韩二区三区四区| 国精产品一区一区三区mba视频| 国产在线一区二区综合免费视频| 国产成人无遮挡在线视频| 成人av在线资源网站| 色嗨嗨av一区二区三区| 欧美日韩一卡二卡三卡 | 亚洲福利国产精品| 首页亚洲欧美制服丝腿| 乱一区二区av| 成人激情动漫在线观看| 91啦中文在线观看| 91精品国产综合久久香蕉的特点| 欧美成人精精品一区二区频| 国产日本欧美一区二区| 亚洲精品视频在线看| 日本一区中文字幕| 国产a精品视频| 欧美色成人综合| 久久久国产精品不卡| 亚洲视频精选在线| 日本成人超碰在线观看| 国产传媒久久文化传媒| 欧美最猛性xxxxx直播| 精品91自产拍在线观看一区| 中文字幕一区二区三区四区不卡| 亚洲成在人线在线播放| 国内不卡的二区三区中文字幕| 91丝袜高跟美女视频| 日韩一区二区在线免费观看| 中文字幕中文乱码欧美一区二区| 亚洲成av人片观看| 国产高清一区日本| 欧美精品少妇一区二区三区| 国产亚洲污的网站| 婷婷一区二区三区| 丰满亚洲少妇av| 日韩欧美一区二区免费| 亚洲美女在线一区| 国产电影精品久久禁18| 欧美顶级少妇做爰| 亚洲人成电影网站色mp4| 蜜乳av一区二区三区| 99vv1com这只有精品| 精品久久久久久综合日本欧美| 伊人色综合久久天天| 国产精品99久久久久久宅男| 欧美久久久久中文字幕| 亚洲欧美一区二区久久| 韩国成人在线视频| 欧美电影在线免费观看| 亚洲欧美色一区| 国产成人精品午夜视频免费| 欧美一区永久视频免费观看| 自拍偷拍欧美精品| 国产+成+人+亚洲欧洲自线| 欧美一卡2卡三卡4卡5免费| 亚洲宅男天堂在线观看无病毒| 国产99久久久国产精品免费看 | 欧美日韩精品久久久| 国产精品久久久久天堂| 国产综合久久久久久鬼色| 欧美一区二区三区公司| 午夜精品久久久久久久久久久| 色婷婷综合在线| 亚洲另类中文字| 91麻豆国产香蕉久久精品| 最新欧美精品一区二区三区| 国产69精品久久久久777| 久久麻豆一区二区| 国产美女一区二区| 久久综合九色综合欧美就去吻 | 国产v综合v亚洲欧| 国产亚洲va综合人人澡精品| 经典三级在线一区| 精品国产一区二区三区忘忧草| 日韩有码一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 久久精品国产精品亚洲红杏| 欧美一级高清片| 麻豆一区二区三区| 26uuu成人网一区二区三区| 国内精品久久久久影院薰衣草| 欧美zozozo| 国产成人在线观看免费网站| 久久久精品蜜桃| 风间由美一区二区三区在线观看 | 日韩一区精品视频| 555www色欧美视频| 久久99精品国产.久久久久久| 精品免费日韩av| 国产a精品视频| 中文字幕五月欧美| 色狠狠综合天天综合综合| 伊人色综合久久天天| 在线综合视频播放| 韩国精品久久久| 国产精品久久久久久妇女6080 | 日韩欧美一级二级三级久久久| 极品瑜伽女神91| 中文字幕乱码久久午夜不卡 | 白白色 亚洲乱淫| 亚洲国产视频一区| 日韩情涩欧美日韩视频| 国产精品综合av一区二区国产馆| 国产欧美日韩久久| 色老综合老女人久久久| 三级久久三级久久久| 久久久综合激的五月天| 色久优优欧美色久优优| 久久国产视频网| 成人免费在线视频观看| 欧美高清视频一二三区| 风流少妇一区二区| 日韩专区一卡二卡|