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

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

?? loki97.c

?? LOKI97加密解密算法,可以參考其中的思想方法
?? C
?? 第 1 頁 / 共 3 頁
字號:
    if (cipher == NULL) return BAD_CIPHER_STATE;    if (key == NULL) return BAD_KEY_INSTANCE;    if (key->direction != DIR_ENCRYPT) return BAD_KEY_DIR;    /* now call appropriate mode encrypt routine */    if (cipher->mode == MODE_ECB)	return enECB(cipher, key, input, inputLen, outBuffer);    else if (cipher->mode == MODE_CBC)	return enCBC(cipher, key, input, inputLen, outBuffer);    else if (cipher->mode == MODE_CFB1)	return enCFB1(cipher, key, input, inputLen, outBuffer);    else        return BAD_CIPHER_MODE;}/* * encrypt blocks in ECB mode */static int enECB(cipherInstance *cipher, keyInstance *key, BYTE *input, 		int inputLen, BYTE *outBuffer){    int i,j,k;			/* assorted loop counters */    int blocks = inputLen / (BLOCK_SIZE*8);	/* compute # input blocks */    ULONG64 L, R;		/* left and right data blocks */    ULONG64 nR, f_out;    /*  do some basic sanity checks on params */    if (inputLen % (BLOCK_SIZE*8) != 0) return BAD_CIPHER_INPUT;    /* now loop over all blocks of input */    for (j = 0; j < blocks; j++) {        /*  pack input block into L and R */        L = byteToULONG64(input); input += 8;        R = byteToULONG64(input); input += 8;        if (debuglevel) fprintf(stderr,"%s: enECB(%08X%08X%08X%08X) ", NAME, L.l, L.r, R.l, R.r);        if (debuglevel > 1) fprintf(stderr,"\n");        /*  compute all rounds for this 1 block */        k = 0;        for (i = 0; i < ROUNDS; i++) {            nR = add64(R, key->SK[k++]);		/* nR = R+SK(k) */            f_out = f(nR, key->SK[k++]);		/* f = f(nR,SK(k+1)) */            nR = add64(nR, key->SK[k++]);		/* nR = nR+SK(k+2) */            R.l = L.l ^ f_out.l; R.r = L.r ^ f_out.r;	/* R = L XOR f */            L = nR;					/* L = nR */            if (debuglevel > 1) fprintf(stderr," L[%02d]=%08X%08X; R[%02d]=%08X%08X; f(SK(%02d))=%08X%08X\n", i+1, L.l, L.r, i+1, R.l, R.r, k-2, f_out.l, f_out.r);        }        if (debuglevel > 0) fprintf(stderr,"= %08X%08X%08X%08X\n", R.l, R.r, L.l, L.r);        /*  unpack resulting L & R into output - undoing last swap */	ULONG64ToBYTE(outBuffer, R); outBuffer += 8;	ULONG64ToBYTE(outBuffer, L); outBuffer += 8;    }    return TRUE;}/* * encrypt blocks in CBC mode */static int enCBC(cipherInstance *cipher, keyInstance *key, BYTE *input, 		int inputLen, BYTE *outBuffer){    int i,j,k;			/* assorted loop counters */    int blocks = inputLen / (BLOCK_SIZE*8);	/* compute # input blocks */    ULONG64 L, R;		/* left and right data blocks */    ULONG64 nR, f_out;    /*  do some basic sanity checks on params */    if (inputLen % (BLOCK_SIZE*8) != 0) return BAD_CIPHER_INPUT;    /* now loop over all blocks of input */    for (j = 0; j < blocks; j++) {        /*  pack input block into L and R */        L = byteToULONG64(input); input += 8;        R = byteToULONG64(input); input += 8;        /* XOR with IV value */	L.l ^= cipher->IVL.l; L.r ^= cipher->IVL.r;	R.l ^= cipher->IVR.l; R.r ^= cipher->IVR.r;        if (debuglevel) fprintf(stderr,"%s: enCBC(%08X%08X%08X%08X) ", NAME, L.l, L.r, R.l, R.r);        if (debuglevel > 1) fprintf(stderr,"\n");        /*  compute all rounds for this 1 block */        k = 0;        for (i = 0; i < ROUNDS; i++) {            nR = add64(R, key->SK[k++]);		/* nR = R+SK(k) */            f_out = f(nR, key->SK[k++]);		/* f = f(nR,SK(k+1)) */            nR = add64(nR, key->SK[k++]);		/* nR = nR+SK(k+2) */            R.l = L.l ^ f_out.l; R.r = L.r ^ f_out.r;	/* R = L XOR f */            L = nR;					/* L = nR */            if (debuglevel > 1) fprintf(stderr," L[%02d]=%08X%08X; R[%02d]=%08X%08X; f(SK(%02d))=%08X%08X\n", i+1, L.l, L.r, i+1, R.l, R.r, k-2, f_out.l, f_out.r);        }        /* save new IV value (nb. undo last swap, as per output transform */	cipher->IVL = R; cipher->IVR = L;        if (debuglevel > 0) fprintf(stderr,"= %08X%08X%08X%08X\n", R.l, R.r, L.l, L.r);        /*  unpack resulting L & R into output - undoing last swap */	ULONG64ToBYTE(outBuffer, R); outBuffer += 8;	ULONG64ToBYTE(outBuffer, L); outBuffer += 8;    }    return TRUE;}/* * encrypt blocks in CFB1 mode */static int enCFB1(cipherInstance *cipher, keyInstance *key, BYTE *input, 		int inputLen, BYTE *outBuffer){    int i,j,k;			/* assorted loop counters */    int b;			/* bit number being processed in byte */    BYTE msgbit, keybit;	/* current message and stream key bits */    ULONG64 L, R;		/* left and right data blocks */    ULONG64 nR, f_out;    /* get CFB1 input buffer from IV */    L = cipher->IVL; R = cipher->IVR;    /* get ready to process first byte */    b = 7;			/* start with top bit in byte */    *outBuffer = 0;		/* and zero byte in outBuffer */    /* now loop over all bits of input */    for (j = 0; j < inputLen; j++) {        msgbit = (*input >> b) & 01;			/* get next msg bit */        if (debuglevel) fprintf(stderr,"%s: enCFB1(%01X,%08X%08X%08X%08X) ", NAME, msgbit, L.l, L.r, R.l, R.r);        if (debuglevel > 1) fprintf(stderr,"\n");        /*  compute all rounds to encrypt current CFB1 buffer */        k = 0;        for (i = 0; i < ROUNDS; i++) {            nR = add64(R, key->SK[k++]);		/* nR = R+SK(k) */            f_out = f(nR, key->SK[k++]);		/* f = f(nR,SK(k+1)) */            nR = add64(nR, key->SK[k++]);		/* nR = nR+SK(k+2) */            R.l = L.l ^ f_out.l; R.r = L.r ^ f_out.r;	/* R = L XOR f */            L = nR;					/* L = nR */            if (debuglevel > 1) fprintf(stderr," L[%02d]=%08X%08X; R[%02d]=%08X%08X; f(SK(%02d))=%08X%08X\n", i+1, L.l, L.r, i+1, R.l, R.r, k-2, f_out.l, f_out.r);        }	/* undo last swap */	L = R; R = nR;	/* now process msgbit by getting stream key bit, XOR in and or to out */	keybit = L.l >> 31;	msgbit ^= keybit;	*outBuffer |= (msgbit << b);        if (debuglevel > 0) fprintf(stderr,"= %01X,%08X%08X%08X%08X\n", msgbit, L.l, L.r, R.l, R.r);	/* and update the CFB1 shift register (input buffer L,R) */	L.l = (L.l << 1) | (L.r >> 31); L.r = (L.r << 1) | (R.l >> 31);	R.l = (R.l << 1) | (R.r >> 31); R.r = (R.r << 1) | msgbit;	/* and update bit position counter */	b--;	/* and move to next input/output byte if necessary */	if (b<0) { b = 7; input++; outBuffer++; *outBuffer = 0; }    }    /* save new IV value */    cipher->IVL = L; cipher->IVR = R;    return TRUE;}/* ....................................................................... *//* * blockDecrypt(cipher,key,input,inputLen,outBuffer) - *     decrypt blocks of plaintext from input to outBuffer using cipher & key. */int blockDecrypt(cipherInstance *cipher, keyInstance *key, BYTE *input,		int inputLen, BYTE *outBuffer){    /*  do some basic sanity checks on params */    if (!init_done) return BAD_CIPHER_STATE;    if (cipher == NULL) return BAD_CIPHER_STATE;    if (key == NULL) return BAD_KEY_INSTANCE;    if (key->direction != DIR_DECRYPT) return BAD_KEY_DIR;    /* now call appropriate mode decrypt routine */    if (cipher->mode == MODE_ECB)	return deECB(cipher, key, input, inputLen, outBuffer);    else if (cipher->mode == MODE_CBC)	return deCBC(cipher, key, input, inputLen, outBuffer);    else if (cipher->mode == MODE_CFB1)	return deCFB1(cipher, key, input, inputLen, outBuffer);    else        return BAD_CIPHER_MODE;}/* * decrypt blocks in ECB mode */static int deECB(cipherInstance *cipher, keyInstance *key, BYTE *input,		int inputLen, BYTE *outBuffer){    int i,j,k;			/* assorted loop counters */    int blocks = inputLen / (BLOCK_SIZE*8);	/* compute # input blocks */    ULONG64 L, R;		/* left and right data blocks */    ULONG64 nR, f_out;    /*  do some basic sanity checks on params */    if (inputLen % (BLOCK_SIZE*8) != 0) return BAD_CIPHER_INPUT;    /* now loop over all blocks of input */    for (j = 0; j < blocks; j++) {        /*  pack input block into L and R */        L = byteToULONG64(input); input += 8;        R = byteToULONG64(input); input += 8;        if (debuglevel) fprintf(stderr,"%s: deECB(%08X%08X%08X%08X) ", NAME, L.l, L.r, R.l, R.r);        if (debuglevel > 1) fprintf(stderr,"\n");        /*  compute all rounds for this 1 block */        k = NUM_SUBKEYS - 1;        for (i = 0; i < ROUNDS; i++) {            nR = sub64(R, key->SK[k--]);		/* nR = R+SK(k) */            f_out = f(nR, key->SK[k--]);		/* f = f(nR,SK(k+1)) */            nR = sub64(nR, key->SK[k--]);		/* nR = nR+SK(k+2) */            R.l = L.l ^ f_out.l; R.r = L.r ^ f_out.r;	/* R = L XOR f */            L = nR;					/* L = nR */            if (debuglevel > 1) fprintf(stderr," L[%02d]=%08X%08X; R[%02d]=%08X%08X; f(SK(%02d))=%08X%08X\n", i+1, L.l, L.r, i+1, R.l, R.r, k+2, f_out.l, f_out.r);        }        if (debuglevel > 0) fprintf(stderr,"= %08X%08X%08X%08X\n", R.l, R.r, L.l, L.r);        /*  unpack resulting L & R into output - undoing last swap */	ULONG64ToBYTE(outBuffer, R); outBuffer += 8;	ULONG64ToBYTE(outBuffer, L); outBuffer += 8;    }    return TRUE;} /* * Dncrypt blocks in CBC mode */static int deCBC(cipherInstance *cipher, keyInstance *key, BYTE *input,		int inputLen, BYTE *outBuffer){    int i,j,k;			/* assorted loop counters */    int blocks = inputLen / (BLOCK_SIZE*8);	/* compute # input blocks */    ULONG64 L, R;		/* left and right data blocks */    ULONG64 newIVL, newIVR;	/* next IV L & R halves */    ULONG64 nR, f_out;    /*  do some basic sanity checks on params */    if (inputLen % (BLOCK_SIZE*8) != 0) return BAD_CIPHER_INPUT;    /* now loop over all blocks of input */    for (j = 0; j < blocks; j++) {        /*  pack input block into L and R */        L = byteToULONG64(input); input += 8;        R = byteToULONG64(input); input += 8;        /* save new IV value */	newIVL = L; newIVR = R;        if (debuglevel) fprintf(stderr,"%s: deCBC(%08X%08X%08X%08X) ", NAME, L.l, L.r, R.l, R.r);        if (debuglevel > 1) fprintf(stderr,"\n");        /*  compute all rounds for this 1 block */        k = NUM_SUBKEYS - 1;        for (i = 0; i < ROUNDS; i++) {            nR = sub64(R, key->SK[k--]);		/* nR = R+SK(k) */            f_out = f(nR, key->SK[k--]);		/* f = f(nR,SK(k+1)) */            nR = sub64(nR, key->SK[k--]);		/* nR = nR+SK(k+2) */            R.l = L.l ^ f_out.l; R.r = L.r ^ f_out.r;	/* R = L XOR f */            L = nR;					/* L = nR */            if (debuglevel > 1) fprintf(stderr," L[%02d]=%08X%08X; R[%02d]=%08X%08X; f(SK(%02d))=%08X%08X\n", i+1, L.l, L.r, i+1, R.l, R.r, k+2, f_out.l, f_out.r);        }        /* XOR with IV value (undoing last swap) */	R.l ^= cipher->IVL.l; R.r ^= cipher->IVL.r;	L.l ^= cipher->IVR.l; L.r ^= cipher->IVR.r;        /* save IV value */	cipher->IVL = newIVL; cipher->IVR = newIVR;        if (debuglevel > 0) fprintf(stderr,"= %08X%08X%08X%08X\n", R.l, R.r, L.l, L.r);        /*  unpack resulting L & R into output - undoing last swap */	ULONG64ToBYTE(outBuffer, R); outBuffer += 8;	ULONG64ToBYTE(outBuffer, L); outBuffer += 8;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女爱视频在线| 亚洲欧美国产77777| 色天使色偷偷av一区二区| 捆绑调教一区二区三区| 亚洲特级片在线| 亚洲精品在线一区二区| 欧美最新大片在线看| 国产美女视频91| 日本女优在线视频一区二区| 亚洲靠逼com| 中文字幕av资源一区| 日韩色视频在线观看| 欧美色精品天天在线观看视频| 国产大片一区二区| 美国毛片一区二区三区| 亚洲激情综合网| 中文字幕一区二区三区视频| xnxx国产精品| 日韩视频123| 91精品免费在线观看| 欧洲视频一区二区| 91麻豆国产香蕉久久精品| av一区二区三区四区| 成人激情电影免费在线观看| 国产精品羞羞答答xxdd| 极品美女销魂一区二区三区 | www成人在线观看| 欧美精选一区二区| 欧美日韩在线播放三区| 色欧美乱欧美15图片| 91天堂素人约啪| 91在线观看美女| 91香蕉视频黄| 在线观看视频91| 欧美在线你懂的| 欧美精品久久一区二区三区| 欧美另类高清zo欧美| 欧美日韩色一区| 欧美一区中文字幕| 日韩午夜在线观看视频| 日韩你懂的电影在线观看| 日韩精品一区二区三区在线| 欧美成人r级一区二区三区| 精品国产免费久久| 国产亚洲欧美色| 中文字幕永久在线不卡| 一区在线观看免费| 一区二区成人在线| 亚洲成人7777| 久久精品999| 国产成人免费视频网站 | 99re6这里只有精品视频在线观看| 成人精品视频.| 一本大道综合伊人精品热热| 在线视频国内一区二区| 555夜色666亚洲国产免| 日韩美女一区二区三区四区| 久久伊人蜜桃av一区二区| 中文字幕av一区二区三区高| 亚洲乱码国产乱码精品精可以看 | 国产毛片一区二区| 成人动漫在线一区| 在线免费精品视频| 精品捆绑美女sm三区| 亚洲欧美综合网| 性感美女极品91精品| 激情五月播播久久久精品| 成人丝袜高跟foot| 欧美老人xxxx18| 久久久精品免费网站| 亚洲美女视频一区| 裸体一区二区三区| 99re成人精品视频| 欧美一区二区三区爱爱| 国产精品毛片a∨一区二区三区| 亚洲精品国产精华液| 精品一区二区三区的国产在线播放 | 国产在线播放一区二区三区 | 日韩精品一区二区在线| 中文字幕第一页久久| 亚洲成人免费影院| 国产激情一区二区三区四区| 日本高清成人免费播放| 精品国产一区二区三区四区四| 国产女人aaa级久久久级| 亚洲成人777| 成人18视频日本| 欧美一区二区在线视频| 国产精品久久久久久户外露出 | 亚洲欧美aⅴ...| 久久精品久久精品| 在线精品视频小说1| 国产夜色精品一区二区av| 亚洲一二三区视频在线观看| 国产成人亚洲综合a∨婷婷| 制服.丝袜.亚洲.另类.中文| 中文字幕在线不卡视频| 激情小说亚洲一区| 欧美一区二区网站| 亚洲午夜一区二区| 成人av综合在线| 精品久久久久久亚洲综合网| 午夜视频一区二区| 91精品办公室少妇高潮对白| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲国产一区在线观看| 99久久99久久精品免费看蜜桃 | 日本中文字幕不卡| 日本韩国一区二区三区视频| 久久影院午夜论| 久久99国产乱子伦精品免费| 欧美色图12p| 亚洲综合色区另类av| 91在线精品秘密一区二区| 国产欧美一区二区精品婷婷| 极品尤物av久久免费看| 日韩一级在线观看| 五月天视频一区| 欧美丝袜丝nylons| 一区二区高清在线| 日本乱人伦一区| 亚洲色图在线视频| 91在线视频播放地址| 中文字幕综合网| 97久久久精品综合88久久| 国产精品久久久久久久久免费丝袜 | 国产欧美日韩在线视频| 久久99精品久久久久久国产越南| 91精品国产一区二区三区| 日韩精品一二三| 欧美久久久久中文字幕| 午夜精品久久久久影视| 欧美精品久久99久久在免费线 | 久久超碰97中文字幕| 欧美一级理论性理论a| 日本在线不卡视频一二三区| 日韩一级片网站| 奇米影视一区二区三区| 日韩欧美一级二级| 精品在线观看免费| 欧美国产一区二区| eeuss影院一区二区三区| 亚洲色欲色欲www| 欧美午夜精品一区| 日韩国产欧美在线观看| 日韩三级精品电影久久久| 久久99最新地址| 国产亚洲欧美一区在线观看| 99久久伊人精品| 亚洲一区av在线| 日韩午夜在线播放| 懂色av一区二区三区免费观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日本精品一区二区三区高清| 一个色在线综合| 91精品福利在线一区二区三区 | 欧美日韩成人在线一区| 另类专区欧美蜜桃臀第一页| 国产欧美一区二区精品性色超碰| 99久久婷婷国产精品综合| 亚洲国产日韩精品| 日韩精品一区二区三区swag| 国产乱码精品一区二区三 | 九九视频精品免费| 国产精品天天看| 欧美日韩精品一区视频| 国产自产视频一区二区三区| 国产精品久久久久久久第一福利| 在线亚洲+欧美+日本专区| 美国毛片一区二区三区| 中文字幕在线不卡一区二区三区| 欧美日韩精品一区二区三区蜜桃| 韩国成人在线视频| 一区二区三区四区亚洲| 精品欧美黑人一区二区三区| 91在线小视频| 精久久久久久久久久久| 亚洲精品大片www| 久久午夜羞羞影院免费观看| 色综合久久99| 国产一区二区h| 日韩福利电影在线观看| 国产精品久久午夜| 日韩午夜激情免费电影| 91麻豆文化传媒在线观看| 美腿丝袜亚洲一区| 亚洲欧美激情插| 久久精品免视看| 欧美一级国产精品| 91国在线观看| 夫妻av一区二区| 日本最新不卡在线| 一区二区视频在线看| 国产亚洲污的网站| 91精品国产色综合久久久蜜香臀| 91蝌蚪国产九色| 丁香亚洲综合激情啪啪综合| 日韩影院免费视频| 亚洲夂夂婷婷色拍ww47| 国产精品国产精品国产专区不蜜|