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

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

?? aes.c

?? LINUX 2.6.17.4的源碼
?? C
字號:
/* * Cryptographic API. * * AES Cipher Algorithm. * * Based on Brian Gladman's code. * * Linux developers: *  Alexander Kjeldaas <astor@fast.no> *  Herbert Valerio Riedel <hvr@hvrlab.org> *  Kyle McMartin <kyle@debian.org> *  Adam J. Richter <adam@yggdrasil.com> (conversion to 2.5 API). *  Andreas Steinmetz <ast@domdv.de> (adapted to x86_64 assembler) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * --------------------------------------------------------------------------- * Copyright (c) 2002, Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK. * All rights reserved. * * LICENSE TERMS * * The free distribution and use of this software in both source and binary * form is allowed (with or without changes) provided that: * *   1. distributions of this source code include the above copyright *      notice, this list of conditions and the following disclaimer; * *   2. distributions in binary form include the above copyright *      notice, this list of conditions and the following disclaimer *      in the documentation and/or other associated materials; * *   3. the copyright holder's name is not used to endorse products *      built using this software without specific written permission. * * ALTERNATIVELY, provided that this notice is retained in full, this product * may be distributed under the terms of the GNU General Public License (GPL), * in which case the provisions of the GPL apply INSTEAD OF those given above. * * DISCLAIMER * * This software is provided 'as is' with no explicit or implied warranties * in respect of its properties, including, but not limited to, correctness * and/or fitness for purpose. * --------------------------------------------------------------------------- *//* Some changes from the Gladman version:    s/RIJNDAEL(e_key)/E_KEY/g    s/RIJNDAEL(d_key)/D_KEY/g*/#include <asm/byteorder.h>#include <linux/bitops.h>#include <linux/crypto.h>#include <linux/errno.h>#include <linux/init.h>#include <linux/module.h>#include <linux/types.h>#define AES_MIN_KEY_SIZE	16#define AES_MAX_KEY_SIZE	32#define AES_BLOCK_SIZE		16/* * #define byte(x, nr) ((unsigned char)((x) >> (nr*8))) */static inline u8 byte(const u32 x, const unsigned n){	return x >> (n << 3);}struct aes_ctx{	u32 key_length;	u32 buf[120];};#define E_KEY (&ctx->buf[0])#define D_KEY (&ctx->buf[60])static u8 pow_tab[256] __initdata;static u8 log_tab[256] __initdata;static u8 sbx_tab[256] __initdata;static u8 isb_tab[256] __initdata;static u32 rco_tab[10];u32 aes_ft_tab[4][256];u32 aes_it_tab[4][256];u32 aes_fl_tab[4][256];u32 aes_il_tab[4][256];static inline u8 f_mult(u8 a, u8 b){	u8 aa = log_tab[a], cc = aa + log_tab[b];	return pow_tab[cc + (cc < aa ? 1 : 0)];}#define ff_mult(a, b) (a && b ? f_mult(a, b) : 0)#define ls_box(x)				\	(aes_fl_tab[0][byte(x, 0)] ^		\	 aes_fl_tab[1][byte(x, 1)] ^		\	 aes_fl_tab[2][byte(x, 2)] ^		\	 aes_fl_tab[3][byte(x, 3)])static void __init gen_tabs(void){	u32 i, t;	u8 p, q;	/* log and power tables for GF(2**8) finite field with	   0x011b as modular polynomial - the simplest primitive	   root is 0x03, used here to generate the tables */	for (i = 0, p = 1; i < 256; ++i) {		pow_tab[i] = (u8)p;		log_tab[p] = (u8)i;		p ^= (p << 1) ^ (p & 0x80 ? 0x01b : 0);	}	log_tab[1] = 0;	for (i = 0, p = 1; i < 10; ++i) {		rco_tab[i] = p;		p = (p << 1) ^ (p & 0x80 ? 0x01b : 0);	}	for (i = 0; i < 256; ++i) {		p = (i ? pow_tab[255 - log_tab[i]] : 0);		q = ((p >> 7) | (p << 1)) ^ ((p >> 6) | (p << 2));		p ^= 0x63 ^ q ^ ((q >> 6) | (q << 2));		sbx_tab[i] = p;		isb_tab[p] = (u8)i;	}	for (i = 0; i < 256; ++i) {		p = sbx_tab[i];		t = p;		aes_fl_tab[0][i] = t;		aes_fl_tab[1][i] = rol32(t, 8);		aes_fl_tab[2][i] = rol32(t, 16);		aes_fl_tab[3][i] = rol32(t, 24);		t = ((u32)ff_mult(2, p)) |		    ((u32)p << 8) |		    ((u32)p << 16) | ((u32)ff_mult(3, p) << 24);		aes_ft_tab[0][i] = t;		aes_ft_tab[1][i] = rol32(t, 8);		aes_ft_tab[2][i] = rol32(t, 16);		aes_ft_tab[3][i] = rol32(t, 24);		p = isb_tab[i];		t = p;		aes_il_tab[0][i] = t;		aes_il_tab[1][i] = rol32(t, 8);		aes_il_tab[2][i] = rol32(t, 16);		aes_il_tab[3][i] = rol32(t, 24);		t = ((u32)ff_mult(14, p)) |		    ((u32)ff_mult(9, p) << 8) |		    ((u32)ff_mult(13, p) << 16) |		    ((u32)ff_mult(11, p) << 24);		aes_it_tab[0][i] = t;		aes_it_tab[1][i] = rol32(t, 8);		aes_it_tab[2][i] = rol32(t, 16);		aes_it_tab[3][i] = rol32(t, 24);	}}#define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)#define imix_col(y, x)			\	u    = star_x(x);		\	v    = star_x(u);		\	w    = star_x(v);		\	t    = w ^ (x);			\	(y)  = u ^ v ^ w;		\	(y) ^= ror32(u ^ t,  8) ^	\	       ror32(v ^ t, 16) ^	\	       ror32(t, 24)/* initialise the key schedule from the user supplied key */#define loop4(i)					\{							\	t = ror32(t,  8); t = ls_box(t) ^ rco_tab[i];	\	t ^= E_KEY[4 * i];     E_KEY[4 * i + 4] = t;	\	t ^= E_KEY[4 * i + 1]; E_KEY[4 * i + 5] = t;	\	t ^= E_KEY[4 * i + 2]; E_KEY[4 * i + 6] = t;	\	t ^= E_KEY[4 * i + 3]; E_KEY[4 * i + 7] = t;	\}#define loop6(i)					\{							\	t = ror32(t,  8); t = ls_box(t) ^ rco_tab[i];	\	t ^= E_KEY[6 * i];     E_KEY[6 * i + 6] = t;	\	t ^= E_KEY[6 * i + 1]; E_KEY[6 * i + 7] = t;	\	t ^= E_KEY[6 * i + 2]; E_KEY[6 * i + 8] = t;	\	t ^= E_KEY[6 * i + 3]; E_KEY[6 * i + 9] = t;	\	t ^= E_KEY[6 * i + 4]; E_KEY[6 * i + 10] = t;	\	t ^= E_KEY[6 * i + 5]; E_KEY[6 * i + 11] = t;	\}#define loop8(i)					\{							\	t = ror32(t,  8); ; t = ls_box(t) ^ rco_tab[i];	\	t ^= E_KEY[8 * i];     E_KEY[8 * i + 8] = t;	\	t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t;	\	t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t;	\	t ^= E_KEY[8 * i + 3]; E_KEY[8 * i + 11] = t;	\	t  = E_KEY[8 * i + 4] ^ ls_box(t);		\	E_KEY[8 * i + 12] = t;				\	t ^= E_KEY[8 * i + 5]; E_KEY[8 * i + 13] = t;	\	t ^= E_KEY[8 * i + 6]; E_KEY[8 * i + 14] = t;	\	t ^= E_KEY[8 * i + 7]; E_KEY[8 * i + 15] = t;	\}static int aes_set_key(void *ctx_arg, const u8 *in_key, unsigned int key_len,		       u32 *flags){	struct aes_ctx *ctx = ctx_arg;	const __le32 *key = (const __le32 *)in_key;	u32 i, j, t, u, v, w;	if (key_len != 16 && key_len != 24 && key_len != 32) {		*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;		return -EINVAL;	}	ctx->key_length = key_len;	D_KEY[key_len + 24] = E_KEY[0] = le32_to_cpu(key[0]);	D_KEY[key_len + 25] = E_KEY[1] = le32_to_cpu(key[1]);	D_KEY[key_len + 26] = E_KEY[2] = le32_to_cpu(key[2]);	D_KEY[key_len + 27] = E_KEY[3] = le32_to_cpu(key[3]);	switch (key_len) {	case 16:		t = E_KEY[3];		for (i = 0; i < 10; ++i)			loop4(i);		break;	case 24:		E_KEY[4] = le32_to_cpu(key[4]);		t = E_KEY[5] = le32_to_cpu(key[5]);		for (i = 0; i < 8; ++i)			loop6 (i);		break;	case 32:		E_KEY[4] = le32_to_cpu(key[4]);		E_KEY[5] = le32_to_cpu(key[5]);		E_KEY[6] = le32_to_cpu(key[6]);		t = E_KEY[7] = le32_to_cpu(key[7]);		for (i = 0; i < 7; ++i)			loop8(i);		break;	}	D_KEY[0] = E_KEY[key_len + 24];	D_KEY[1] = E_KEY[key_len + 25];	D_KEY[2] = E_KEY[key_len + 26];	D_KEY[3] = E_KEY[key_len + 27];	for (i = 4; i < key_len + 24; ++i) {		j = key_len + 24 - (i & ~3) + (i & 3);		imix_col(D_KEY[j], E_KEY[i]);	}	return 0;}extern void aes_encrypt(void *ctx_arg, u8 *out, const u8 *in);extern void aes_decrypt(void *ctx_arg, u8 *out, const u8 *in);static struct crypto_alg aes_alg = {	.cra_name		=	"aes",	.cra_driver_name	=	"aes-x86_64",	.cra_priority		=	200,	.cra_flags		=	CRYPTO_ALG_TYPE_CIPHER,	.cra_blocksize		=	AES_BLOCK_SIZE,	.cra_ctxsize		=	sizeof(struct aes_ctx),	.cra_module		=	THIS_MODULE,	.cra_list		=	LIST_HEAD_INIT(aes_alg.cra_list),	.cra_u			=	{		.cipher = {			.cia_min_keysize	=	AES_MIN_KEY_SIZE,			.cia_max_keysize	=	AES_MAX_KEY_SIZE,			.cia_setkey	   	= 	aes_set_key,			.cia_encrypt	 	=	aes_encrypt,			.cia_decrypt	  	=	aes_decrypt		}	}};static int __init aes_init(void){	gen_tabs();	return crypto_register_alg(&aes_alg);}static void __exit aes_fini(void){	crypto_unregister_alg(&aes_alg);}module_init(aes_init);module_exit(aes_fini);MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");MODULE_LICENSE("GPL");MODULE_ALIAS("aes");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99免费| 日韩精品亚洲专区| 久久99这里只有精品| 欧美三级日韩在线| 日产国产高清一区二区三区| 欧美成人精品3d动漫h| 麻豆精品国产91久久久久久| 欧美精品一二三区| 另类小说一区二区三区| 日韩午夜激情视频| 国产麻豆精品视频| 中文字幕国产一区二区| 99精品视频在线观看| 亚洲三级电影网站| 日韩午夜激情电影| 国产91在线|亚洲| 亚洲国产一区视频| 2022国产精品视频| 欧美在线影院一区二区| 日本欧美久久久久免费播放网| 日韩一区二区三区电影| 黄色资源网久久资源365| 中文字幕av资源一区| 欧美三级视频在线观看| 国产一区在线观看麻豆| 中文字幕日本乱码精品影院| 欧美亚洲国产一卡| 国产精品亚洲一区二区三区在线 | 欧美在线不卡视频| 韩国v欧美v日本v亚洲v| 午夜精品久久久久久久| 亚洲成人av电影在线| 午夜精品久久久久久久久久| 国产精品成人免费精品自在线观看 | 欧美一区二区美女| 在线视频你懂得一区| 波多野结衣精品在线| 懂色av一区二区三区蜜臀| 国产成人综合亚洲网站| 久久精品国产澳门| 午夜欧美2019年伦理| 艳妇臀荡乳欲伦亚洲一区| 中文字幕一区二区日韩精品绯色| 国产亚洲一区二区三区| 国产精品久久久久久久久久久免费看| 久久影视一区二区| 中文字幕va一区二区三区| 欧美国产日本韩| 中文字幕永久在线不卡| 亚洲日韩欧美一区二区在线| 日韩毛片精品高清免费| 一区二区三区免费| 一区二区三区免费网站| 日韩和欧美一区二区三区| 一区二区三区不卡视频在线观看| 亚洲一区二区三区中文字幕| 亚洲精品五月天| 五月天精品一区二区三区| 国产一区视频网站| 99国产欧美久久久精品| 欧美日韩在线综合| 日韩三级在线免费观看| 中文字幕精品一区二区三区精品| 亚洲码国产岛国毛片在线| 日本午夜一区二区| 成人黄色电影在线 | 欧美日韩一区在线观看| 在线欧美日韩国产| 精品国产一区二区在线观看| 一区二区三区在线影院| 欧美日韩精品久久久| 欧洲一区在线电影| 中文字幕一区二区在线播放| 国产精品888| 国产亚洲成aⅴ人片在线观看| 极品瑜伽女神91| 精品国产一区二区在线观看| 日本欧美加勒比视频| 欧美一区二区三区日韩| 婷婷夜色潮精品综合在线| 综合亚洲深深色噜噜狠狠网站| 日韩综合在线视频| 91在线一区二区| 成人欧美一区二区三区白人| 国内外成人在线| 日韩欧美一卡二卡| 免费成人在线影院| 欧美午夜精品久久久久久孕妇| 国产精品午夜电影| 高清国产一区二区三区| 久久久国际精品| 国产91露脸合集magnet| 国产欧美日韩综合精品一区二区| 精品在线观看免费| 欧美国产日韩精品免费观看| 蜜臀av一区二区在线观看 | 99视频热这里只有精品免费| 国产精品你懂的在线欣赏| 国产91富婆露脸刺激对白| 久久久精品免费网站| 国产精品亚洲专一区二区三区| 久久综合九色综合久久久精品综合| 久久黄色级2电影| 欧美激情在线一区二区三区| 91小视频免费观看| 午夜精品久久久久久| 日韩一区二区三区四区| 福利电影一区二区| 中文字幕欧美日韩一区| 国产日韩精品视频一区| 粉嫩av一区二区三区在线播放| 亚洲欧洲精品天堂一级| 91精品久久久久久蜜臀| 天天色天天爱天天射综合| 久久九九久久九九| 91精品91久久久中77777| 精品亚洲国内自在自线福利| 一区二区视频在线看| 日韩欧美在线123| 一本大道久久a久久精二百| 日韩电影一二三区| 欧美激情一区不卡| 91.xcao| 美女爽到高潮91| 首页亚洲欧美制服丝腿| 亚洲电影激情视频网站| 在线观看www91| 欧美国产综合一区二区| 欧美群妇大交群中文字幕| 欧美日韩不卡在线| 日韩一卡二卡三卡四卡| 亚洲欧美日韩国产另类专区| 国内欧美视频一区二区 | 91丝袜呻吟高潮美腿白嫩在线观看| 国产一区二区三区四| 91网站视频在线观看| 欧美日韩黄色影视| 国产亚洲一二三区| 亚洲一区二区三区精品在线| 国产一区二区三区在线观看精品 | 国产欧美日韩在线| 国产日韩三级在线| 日本一区二区综合亚洲| 综合在线观看色| 亚洲动漫第一页| 久久国产夜色精品鲁鲁99| 国内外成人在线| 99国产精品99久久久久久| 欧美日本一区二区| 欧美xxxxx牲另类人与| 久久免费美女视频| 亚洲少妇中出一区| 丝袜脚交一区二区| 九九**精品视频免费播放| 久久99精品国产麻豆不卡| 国产酒店精品激情| 色丁香久综合在线久综合在线观看| 欧美日韩情趣电影| 国产日韩精品一区二区三区在线| ●精品国产综合乱码久久久久| 一区二区三区 在线观看视频| 毛片av中文字幕一区二区| 色欲综合视频天天天| 久久综合成人精品亚洲另类欧美 | 欧美日韩一区高清| 国产精品国产三级国产a| 午夜精品国产更新| av网站一区二区三区| 日韩欧美中文字幕公布| 一区二区不卡在线视频 午夜欧美不卡在| 麻豆国产精品官网| 91精品国产综合久久久蜜臀图片| 亚洲欧美视频在线观看| 丁香五精品蜜臀久久久久99网站 | 亚洲综合小说图片| 豆国产96在线|亚洲| 久久影院电视剧免费观看| 日本视频在线一区| 91精品在线免费| 亚洲一区影音先锋| 欧美日韩一区二区三区免费看| 国产精品麻豆久久久| 国产suv精品一区二区三区| xnxx国产精品| 成人av片在线观看| 亚洲欧洲日产国产综合网| av电影在线观看一区| 国产精品视频在线看| 一本一本久久a久久精品综合麻豆| 国产午夜精品一区二区三区嫩草 | 国产麻豆精品theporn| 国产精品视频第一区| 丰满放荡岳乱妇91ww| 一区二区三区中文字幕电影 | 国产在线乱码一区二区三区| 国产精品女同一区二区三区| 在线91免费看| www..com久久爱| 免费一级片91| 综合在线观看色|