/* Rijndael (AES) for GnuPG
* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
* GnuPG 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.
*
* GnuPG is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*******************************************************************
* The code here is based on the optimized implementation taken from
* http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ on Oct 2, 2000,
* which carries this notice:
*------------------------------------------
* rijndael-alg-fst.c v2.3 April '2000
*
* Optimised ANSI C code
*
* authors: v1.0: Antoon Bosselaers
* v2.0: Vincent Rijmen
* v2.3: Paulo Barreto
*
* This code is placed in the public domain.
*------------------------------------------
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /* for memcmp() */
#include "types.h" /* for byte and u32 typedefs */
#include "util.h"
#include "errors.h"
#include "algorithms.h"
#define MAXKC (256/32)
#define MAXROUNDS 14
static const char *selftest(void);
typedef struct {
int ROUNDS; /* key-length-dependent number of rounds */
int decryption_prepared;
byte keySched[MAXROUNDS+1][4][4]; /* key schedule */
byte keySched2[MAXROUNDS+1][4][4]; /* key schedule */
} RIJNDAEL_context;
static const byte S[256] = {
99, 124, 119, 123, 242, 107, 111, 197,
48, 1, 103, 43, 254, 215, 171, 118,
202, 130, 201, 125, 250, 89, 71, 240,
173, 212, 162, 175, 156, 164, 114, 192,
183, 253, 147, 38, 54, 63, 247, 204,
52, 165, 229, 241, 113, 216, 49, 21,
4, 199, 35, 195, 24, 150, 5, 154,
7, 18, 128, 226, 235, 39, 178, 117,
9, 131, 44, 26, 27, 110, 90, 160,
82, 59, 214, 179, 41, 227, 47, 132,
83, 209, 0, 237, 32, 252, 177, 91,
106, 203, 190, 57, 74, 76, 88, 207,
208, 239, 170, 251, 67, 77, 51, 133,
69, 249, 2, 127, 80, 60, 159, 168,
81, 163, 64, 143, 146, 157, 56, 245,
188, 182, 218, 33, 16, 255, 243, 210,
205, 12, 19, 236, 95, 151, 68, 23,
196, 167, 126, 61, 100, 93, 25, 115,
96, 129, 79, 220, 34, 42, 144, 136,
70, 238, 184, 20, 222, 94, 11, 219,
224, 50, 58, 10, 73, 6, 36, 92,
194, 211, 172, 98, 145, 149, 228, 121,
231, 200, 55, 109, 141, 213, 78, 169,
108, 86, 244, 234, 101, 122, 174, 8,
186, 120, 37, 46, 28, 166, 180, 198,
232, 221, 116, 31, 75, 189, 139, 138,
112, 62, 181, 102, 72, 3, 246, 14,
97, 53, 87, 185, 134, 193, 29, 158,
225, 248, 152, 17, 105, 217, 142, 148,
155, 30, 135, 233, 206, 85, 40, 223,
140, 161, 137, 13, 191, 230, 66, 104,
65, 153, 45, 15, 176, 84, 187, 22
};
static const byte T1[256][4] = {
{ 0xc6,0x63,0x63,0xa5 }, { 0xf8,0x7c,0x7c,0x84 },
{ 0xee,0x77,0x77,0x99 }, { 0xf6,0x7b,0x7b,0x8d },
{ 0xff,0xf2,0xf2,0x0d }, { 0xd6,0x6b,0x6b,0xbd },
{ 0xde,0x6f,0x6f,0xb1 }, { 0x91,0xc5,0xc5,0x54 },
{ 0x60,0x30,0x30,0x50 }, { 0x02,0x01,0x01,0x03 },
{ 0xce,0x67,0x67,0xa9 }, { 0x56,0x2b,0x2b,0x7d },
{ 0xe7,0xfe,0xfe,0x19 }, { 0xb5,0xd7,0xd7,0x62 },
{ 0x4d,0xab,0xab,0xe6 }, { 0xec,0x76,0x76,0x9a },
{ 0x8f,0xca,0xca,0x45 }, { 0x1f,0x82,0x82,0x9d },
{ 0x89,0xc9,0xc9,0x40 }, { 0xfa,0x7d,0x7d,0x87 },
{ 0xef,0xfa,0xfa,0x15 }, { 0xb2,0x59,0x59,0xeb },
{ 0x8e,0x47,0x47,0xc9 }, { 0xfb,0xf0,0xf0,0x0b },
{ 0x41,0xad,0xad,0xec }, { 0xb3,0xd4,0xd4,0x67 },
{ 0x5f,0xa2,0xa2,0xfd }, { 0x45,0xaf,0xaf,0xea },
{ 0x23,0x9c,0x9c,0xbf }, { 0x53,0xa4,0xa4,0xf7 },
{ 0xe4,0x72,0x72,0x96 }, { 0x9b,0xc0,0xc0,0x5b },
{ 0x75,0xb7,0xb7,0xc2 }, { 0xe1,0xfd,0xfd,0x1c },
{ 0x3d,0x93,0x93,0xae }, { 0x4c,0x26,0x26,0x6a },
{ 0x6c,0x36,0x36,0x5a }, { 0x7e,0x3f,0x3f,0x41 },
{ 0xf5,0xf7,0xf7,0x02 }, { 0x83,0xcc,0xcc,0x4f },
{ 0x68,0x34,0x34,0x5c }, { 0x51,0xa5,0xa5,0xf4 },
{ 0xd1,0xe5,0xe5,0x34 }, { 0xf9,0xf1,0xf1,0x08 },
{ 0xe2,0x71,0x71,0x93 }, { 0xab,0xd8,0xd8,0x73 },
{ 0x62,0x31,0x31,0x53 }, { 0x2a,0x15,0x15,0x3f },
{ 0x08,0x04,0x04,0x0c }, { 0x95,0xc7,0xc7,0x52 },
{ 0x46,0x23,0x23,0x65 }, { 0x9d,0xc3,0xc3,0x5e },
{ 0x30,0x18,0x18,0x28 }, { 0x37,0x96,0x96,0xa1 },
{ 0x0a,0x05,0x05,0x0f }, { 0x2f,0x9a,0x9a,0xb5 },
{ 0x0e,0x07,0x07,0x09 }, { 0x24,0x12,0x12,0x36 },
{ 0x1b,0x80,0x80,0x9b }, { 0xdf,0xe2,0xe2,0x3d },
{ 0xcd,0xeb,0xeb,0x26 }, { 0x4e,0x27,0x27,0x69 },
{ 0x7f,0xb2,0xb2,0xcd }, { 0xea,0x75,0x75,0x9f },
{ 0x12,0x09,0x09,0x1b }, { 0x1d,0x83,0x83,0x9e },
{ 0x58,0x2c,0x2c,0x74 }, { 0x34,0x1a,0x1a,0x2e },
{ 0x36,0x1b,0x1b,0x2d }, { 0xdc,0x6e,0x6e,0xb2 },
{ 0xb4,0x5a,0x5a,0xee }, { 0x5b,0xa0,0xa0,0xfb },
{ 0xa4,0x52,0x52,0xf6 }, { 0x76,0x3b,0x3b,0x4d },
{ 0xb7,0xd6,0xd6,0x61 }, { 0x7d,0xb3,0xb3,0xce },
{ 0x52,0x29,0x29,0x7b }, { 0xdd,0xe3,0xe3,0x3e },
{ 0x5e,0x2f,0x2f,0x71 }, { 0x13,0x84,0x84,0x97 },
{ 0xa6,0x53,0x53,0xf5 }, { 0xb9,0xd1,0xd1,0x68 },
{ 0x00,0x00,0x00,0x00 }, { 0xc1,0xed,0xed,0x2c },
{ 0x40,0x20,0x20,0x60 }, { 0xe3,0xfc,0xfc,0x1f },
{ 0x79,0xb1,0xb1,0xc8 }, { 0xb6,0x5b,0x5b,0xed },
{ 0xd4,0x6a,0x6a,0xbe }, { 0x8d,0xcb,0xcb,0x46 },
{ 0x67,0xbe,0xbe,0xd9 }, { 0x72,0x39,0x39,0x4b },
{ 0x94,0x4a,0x4a,0xde }, { 0x98,0x4c,0x4c,0xd4 },
{ 0xb0,0x58,0x58,0xe8 }, { 0x85,0xcf,0xcf,0x4a },
{ 0xbb,0xd0,0xd0,0x6b }, { 0xc5,0xef,0xef,0x2a },
{ 0x4f,0xaa,0xaa,0xe5 }, { 0xed,0xfb,0xfb,0x16 },
{ 0x86,0x43,0x43,0xc5 }, { 0x9a,0x4d,0x4d,0xd7 },
{ 0x66,0x33,0x33,0x55 }, { 0x11,0x85,0x85,0x94 },
{ 0x8a,0x45,0x45,0xcf }, { 0xe9,0xf9,0xf9,0x10 },
{ 0x04,0x02,0x02,0x06 }, { 0xfe,0x7f,0x7f,0x81 },
{ 0xa0,0x50,0x50,0xf0 }, { 0x78,0x3c,0x3c,0x44 },
{ 0x25,0x9f,0x9f,0xba }, { 0x4b,0xa8,0xa8,0xe3 },
{ 0xa2,0x51,0x51,0xf3 }, { 0x5d,0xa3,0xa3,0xfe },
{ 0x80,0x40,0x40,0xc0 }, { 0x05,0x8f,0x8f,0x8a },
{ 0x3f,0x92,0x92,0xad }, { 0x21,0x9d,0x9d,0xbc },
{ 0x70,0x38,0x38,0x48 }, { 0xf1,0xf5,0xf5,0x04 },
{ 0x63,0xbc,0xbc,0xdf }, { 0x77,0xb6,0xb6,0xc1 },
{ 0xaf,0xda,0xda,0x75 }, { 0x42,0x21,0x21,0x63 },
{ 0x20,0x10,0x10,0x30 }, { 0xe5,0xff,0xff,0x1a },
{ 0xfd,0xf3,0xf3,0x0e }, { 0xbf,0xd2,0xd2,0x6d },
{ 0x81,0xcd,0xcd,0x4c }, { 0x18,0x0c,0x0c,0x14 },
{ 0x26,0x13,0x13,0x35 }, { 0xc3,0xec,0xec,0x2f },
{ 0xbe,0x5f,0x5f,0xe1 }, { 0x35,0x97,0x97,0xa2 },
{ 0x88,0x44,0x44,0xcc }, { 0x2e,0x17,0x17,0x39 },
{ 0x93,0xc4,0xc4,0x57 }, { 0x55,0xa7,0xa7,0xf2 },
{ 0xfc,0x7e,0x7e,0x82 }, { 0x7a,0x3d,0x3d,0x47 },
{ 0xc8,0x64,0x64,0xac }, { 0xba,0x5d,0x5d,0xe7 },
{ 0x32,0x19,0x19,0x2b }, { 0xe6,0x73,0x73,0x95 },
{ 0xc0,0x60,0x60,0xa0 }, { 0x19,0x81,0x81,0x98 },
{ 0x9e,0x4f,0x4f,0xd1 }, { 0xa3,0xdc,0xdc,0x7f },
{ 0x44,0x22,0x22,0x66 }, { 0x54,0x2a,0x2a,0x7e },
{ 0x3b,0x90,0x90,0xab }, { 0x0b,0x88,0x88,0x83 },
{ 0x8c,0x46,0x46,0xca }, { 0xc7,0xee,0xee,0x29 },
{ 0x6b,0xb8,0xb8,0xd3 }, { 0x28,0x14,0x14,0x3c },
{ 0xa7,0xde,0xde,0x79 }, { 0xbc,0x5e,0x5e,0xe2 },
{ 0x16,0x0b,0x0b,0x1d }, { 0xad,0xdb,0xdb,0x76 },
{ 0xdb,0xe0,0xe0,0x3b }, { 0x64,0x32,0x32,0x56 },
{ 0x74,0x3a,0x3a,0x4e }, { 0x14,0x0a,0x0a,0x1e },
{ 0x92,0x49,0x49,0xdb }, { 0x0c,0x06,0x06,0x0a },
{ 0x48,0x24,0x24,0x6c }, { 0xb8,0x5c,0x5c,0xe4 }
没有合适的资源?快使用搜索试试~ 我知道了~
GnuPG PGP加密程序源代码
4星 · 超过85%的资源 需积分: 9 91 下载量 120 浏览量
2009-05-10
23:58:15
上传
评论 4
收藏 3.04MB GZ 举报
温馨提示
共507个文件
c:158个
s:76个
h:60个
GnuPG PGP加密程序源代码,for Unix/DOS/Windows。
资源推荐
资源详情
资源评论
收起资源包目录
GnuPG PGP加密程序源代码 (507个子文件)
gpg.1 62KB
gpgv.1 4KB
gnupg.7 531B
ABOUT-NLS 18KB
configure.ac 29KB
locale.alias 3KB
Makefile.am 3KB
Makefile.am 3KB
Makefile.am 3KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 1KB
Makefile.am 1KB
Makefile.am 842B
samplekeys.asc 71KB
pubring.asc 46KB
secdemo.asc 46KB
pubdemo.asc 35KB
secring.asc 4KB
plain-2.asc 3KB
plain-2o.asc 2KB
plain-1.asc 2KB
plain-1o.asc 2KB
plain-1-pgp.asc 1KB
pubring.pkr.asc 1KB
secring.skr.asc 1KB
plain-3.asc 575B
plain-3o.asc 306B
AUTHORS 4KB
BUGS 499B
build-w32 50B
rijndael.c 103KB
keyedit.c 97KB
g10.c 87KB
getkey.c 75KB
keygen.c 63KB
parse-packet.c 60KB
iobuf.c 54KB
import.c 52KB
twofish.c 52KB
mainproc.c 50KB
deflate.c 48KB
trustdb.c 46KB
tiger.c 45KB
trees.c 43KB
keyring.c 42KB
tdbio.c 39KB
pkclist.c 37KB
sign.c 36KB
cast5.c 36KB
des.c 36KB
armor.c 34KB
dcigettext.c 33KB
plural.c 32KB
passphrase.c 32KB
keylist.c 30KB
rndunix.c 29KB
build-packet.c 29KB
argparse.c 26KB
rndw32.c 25KB
keyserver.c 25KB
encode.c 23KB
blowfish.c 22KB
gpgkeys_ldap.c 21KB
strgutil.c 21KB
gpgkeys_hkp.c 19KB
http.c 19KB
gpgsplit.c 19KB
status.c 19KB
rmd160.c 19KB
random.c 18KB
revoke.c 18KB
sig-check.c 18KB
cipher.c 17KB
elgamal.c 17KB
keydb.c 16KB
inftrees.c 16KB
simple-gettext.c 15KB
mpih-mul.c 15KB
memory.c 15KB
loadmsgcat.c 15KB
pubkey.c 15KB
hkp.c 14KB
mpih-div.c 14KB
primegen.c 14KB
exec.c 13KB
seckey-cert.c 13KB
rsa.c 12KB
infblock.c 12KB
md.c 12KB
sha512.c 11KB
dsa.c 11KB
keyid.c 11KB
ttyio.c 11KB
free-packet.c 11KB
misc.c 11KB
secmem.c 11KB
mpicoder.c 10KB
共 507 条
- 1
- 2
- 3
- 4
- 5
- 6
findee
- 粉丝: 263
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页