⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rijndael.pas

📁 AES Source Code in Pascal
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{** * Rijndael.pas * * Optimised Pascal implementation of the Rijndael cipher (now AES). * For Advanced Encryption Standard (AES) see http://www.nist.gov/aes/ * * Assumes SIZEOF(LONGINT) = 4. * Developed with Turbo Pascal 7, later FreePascal. * * @version 1.0 (February 2001) * @author Tom Verhoeff <T.Verhoeff@tue.nl> * * Based on * version 1.0 (January 2001) of Rijndael.mod (in Oberon-2) * @author Paulo Barreto <paulo.barreto@terra.com.br> * * and * * version 3.0 (December 2000) of rijndael-alg-fst.c * Optimised ANSI C code for the Rijndael cipher (now AES) * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> * @author Paulo Barreto <paulo.barreto@terra.com.br> * This code is hereby placed in the public domain. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *}unit Rijndael;interface    CONST MAXNR = 14;    CONST MAXRK = 4*(MAXNR + 1);    CONST MAXKS = 256 DIV 8;    TYPE  SET32 = LongInt;  { TYPE  Block       = ARRAY [ 0..31 ] OF BYTE;  only needed conceptually }    TYPE  ExpandedKey = ARRAY [ 0..MAXRK-1 ] OF SET32;    FUNCTION KeySetupEnc (VAR rk: ExpandedKey;            CONST cipherKey: ARRAY OF BYTE {Block}; keyBits: LONGINT): LONGINT;    FUNCTION KeySetupDec (VAR rk: ExpandedKey;            CONST cipherKey: ARRAY OF BYTE {Block}; keyBits: LONGINT): LONGINT;    PROCEDURE Encrypt (CONST rk: ExpandedKey; Nr: LONGINT;            CONST pt: ARRAY OF BYTE {Block}; p0: LONGINT;            VAR ct: ARRAY OF BYTE {Block}; c0: LONGINT);    PROCEDURE Decrypt (CONST rk: ExpandedKey; Nr: LONGINT;            CONST ct: ARRAY OF BYTE {Block}; c0: LONGINT;            VAR pt: ARRAY OF BYTE {Block}; p0: LONGINT);implementation{$B-,Q-,R-,S-}    (*        Te0[x] = Sbox[x].[02, 01, 01, 03];        Te1[x] = Sbox[x].[03, 02, 01, 01];        Te2[x] = Sbox[x].[01, 03, 02, 01];        Te3[x] = Sbox[x].[01, 01, 03, 02];        Te4[x] = Sbox[x].[01, 01, 01, 01];        Td0[x] = Ibox[x].[0e, 09, 0d, 0b];        Td1[x] = Ibox[x].[0b, 0e, 09, 0d];        Td2[x] = Ibox[x].[0d, 0b, 0e, 09];        Td3[x] = Ibox[x].[09, 0d, 0b, 0e];        Td4[x] = Ibox[x].[01, 01, 01, 01];    *)const Te0: ARRAY [0..255] OF SET32 = (    $c66363a5, $f87c7c84, $ee777799, $f67b7b8d,    $fff2f20d, $d66b6bbd, $de6f6fb1, $91c5c554,    $60303050, $02010103, $ce6767a9, $562b2b7d,    $e7fefe19, $b5d7d762, $4dababe6, $ec76769a,    $8fcaca45, $1f82829d, $89c9c940, $fa7d7d87,    $effafa15, $b25959eb, $8e4747c9, $fbf0f00b,    $41adadec, $b3d4d467, $5fa2a2fd, $45afafea,    $239c9cbf, $53a4a4f7, $e4727296, $9bc0c05b,    $75b7b7c2, $e1fdfd1c, $3d9393ae, $4c26266a,    $6c36365a, $7e3f3f41, $f5f7f702, $83cccc4f,    $6834345c, $51a5a5f4, $d1e5e534, $f9f1f108,    $e2717193, $abd8d873, $62313153, $2a15153f,    $0804040c, $95c7c752, $46232365, $9dc3c35e,    $30181828, $379696a1, $0a05050f, $2f9a9ab5,    $0e070709, $24121236, $1b80809b, $dfe2e23d,    $cdebeb26, $4e272769, $7fb2b2cd, $ea75759f,    $1209091b, $1d83839e, $582c2c74, $341a1a2e,    $361b1b2d, $dc6e6eb2, $b45a5aee, $5ba0a0fb,    $a45252f6, $763b3b4d, $b7d6d661, $7db3b3ce,    $5229297b, $dde3e33e, $5e2f2f71, $13848497,    $a65353f5, $b9d1d168, $00000000, $c1eded2c,    $40202060, $e3fcfc1f, $79b1b1c8, $b65b5bed,    $d46a6abe, $8dcbcb46, $67bebed9, $7239394b,    $944a4ade, $984c4cd4, $b05858e8, $85cfcf4a,    $bbd0d06b, $c5efef2a, $4faaaae5, $edfbfb16,    $864343c5, $9a4d4dd7, $66333355, $11858594,    $8a4545cf, $e9f9f910, $04020206, $fe7f7f81,    $a05050f0, $783c3c44, $259f9fba, $4ba8a8e3,    $a25151f3, $5da3a3fe, $804040c0, $058f8f8a,    $3f9292ad, $219d9dbc, $70383848, $f1f5f504,    $63bcbcdf, $77b6b6c1, $afdada75, $42212163,    $20101030, $e5ffff1a, $fdf3f30e, $bfd2d26d,    $81cdcd4c, $180c0c14, $26131335, $c3ecec2f,    $be5f5fe1, $359797a2, $884444cc, $2e171739,    $93c4c457, $55a7a7f2, $fc7e7e82, $7a3d3d47,    $c86464ac, $ba5d5de7, $3219192b, $e6737395,    $c06060a0, $19818198, $9e4f4fd1, $a3dcdc7f,    $44222266, $542a2a7e, $3b9090ab, $0b888883,    $8c4646ca, $c7eeee29, $6bb8b8d3, $2814143c,    $a7dede79, $bc5e5ee2, $160b0b1d, $addbdb76,    $dbe0e03b, $64323256, $743a3a4e, $140a0a1e,    $924949db, $0c06060a, $4824246c, $b85c5ce4,    $9fc2c25d, $bdd3d36e, $43acacef, $c46262a6,    $399191a8, $319595a4, $d3e4e437, $f279798b,    $d5e7e732, $8bc8c843, $6e373759, $da6d6db7,    $018d8d8c, $b1d5d564, $9c4e4ed2, $49a9a9e0,    $d86c6cb4, $ac5656fa, $f3f4f407, $cfeaea25,    $ca6565af, $f47a7a8e, $47aeaee9, $10080818,    $6fbabad5, $f0787888, $4a25256f, $5c2e2e72,    $381c1c24, $57a6a6f1, $73b4b4c7, $97c6c651,    $cbe8e823, $a1dddd7c, $e874749c, $3e1f1f21,    $964b4bdd, $61bdbddc, $0d8b8b86, $0f8a8a85,    $e0707090, $7c3e3e42, $71b5b5c4, $cc6666aa,    $904848d8, $06030305, $f7f6f601, $1c0e0e12,    $c26161a3, $6a35355f, $ae5757f9, $69b9b9d0,    $17868691, $99c1c158, $3a1d1d27, $279e9eb9,    $d9e1e138, $ebf8f813, $2b9898b3, $22111133,    $d26969bb, $a9d9d970, $078e8e89, $339494a7,    $2d9b9bb6, $3c1e1e22, $15878792, $c9e9e920,    $87cece49, $aa5555ff, $50282878, $a5dfdf7a,    $038c8c8f, $59a1a1f8, $09898980, $1a0d0d17,    $65bfbfda, $d7e6e631, $844242c6, $d06868b8,    $824141c3, $299999b0, $5a2d2d77, $1e0f0f11,    $7bb0b0cb, $a85454fc, $6dbbbbd6, $2c16163a);const Te1: ARRAY [0..255] OF SET32 = (    $a5c66363, $84f87c7c, $99ee7777, $8df67b7b,    $0dfff2f2, $bdd66b6b, $b1de6f6f, $5491c5c5,    $50603030, $03020101, $a9ce6767, $7d562b2b,    $19e7fefe, $62b5d7d7, $e64dabab, $9aec7676,    $458fcaca, $9d1f8282, $4089c9c9, $87fa7d7d,    $15effafa, $ebb25959, $c98e4747, $0bfbf0f0,    $ec41adad, $67b3d4d4, $fd5fa2a2, $ea45afaf,    $bf239c9c, $f753a4a4, $96e47272, $5b9bc0c0,    $c275b7b7, $1ce1fdfd, $ae3d9393, $6a4c2626,    $5a6c3636, $417e3f3f, $02f5f7f7, $4f83cccc,    $5c683434, $f451a5a5, $34d1e5e5, $08f9f1f1,    $93e27171, $73abd8d8, $53623131, $3f2a1515,    $0c080404, $5295c7c7, $65462323, $5e9dc3c3,    $28301818, $a1379696, $0f0a0505, $b52f9a9a,    $090e0707, $36241212, $9b1b8080, $3ddfe2e2,    $26cdebeb, $694e2727, $cd7fb2b2, $9fea7575,    $1b120909, $9e1d8383, $74582c2c, $2e341a1a,    $2d361b1b, $b2dc6e6e, $eeb45a5a, $fb5ba0a0,    $f6a45252, $4d763b3b, $61b7d6d6, $ce7db3b3,    $7b522929, $3edde3e3, $715e2f2f, $97138484,    $f5a65353, $68b9d1d1, $00000000, $2cc1eded,    $60402020, $1fe3fcfc, $c879b1b1, $edb65b5b,    $bed46a6a, $468dcbcb, $d967bebe, $4b723939,    $de944a4a, $d4984c4c, $e8b05858, $4a85cfcf,    $6bbbd0d0, $2ac5efef, $e54faaaa, $16edfbfb,    $c5864343, $d79a4d4d, $55663333, $94118585,    $cf8a4545, $10e9f9f9, $06040202, $81fe7f7f,    $f0a05050, $44783c3c, $ba259f9f, $e34ba8a8,    $f3a25151, $fe5da3a3, $c0804040, $8a058f8f,    $ad3f9292, $bc219d9d, $48703838, $04f1f5f5,    $df63bcbc, $c177b6b6, $75afdada, $63422121,    $30201010, $1ae5ffff, $0efdf3f3, $6dbfd2d2,    $4c81cdcd, $14180c0c, $35261313, $2fc3ecec,    $e1be5f5f, $a2359797, $cc884444, $392e1717,    $5793c4c4, $f255a7a7, $82fc7e7e, $477a3d3d,    $acc86464, $e7ba5d5d, $2b321919, $95e67373,    $a0c06060, $98198181, $d19e4f4f, $7fa3dcdc,    $66442222, $7e542a2a, $ab3b9090, $830b8888,    $ca8c4646, $29c7eeee, $d36bb8b8, $3c281414,    $79a7dede, $e2bc5e5e, $1d160b0b, $76addbdb,    $3bdbe0e0, $56643232, $4e743a3a, $1e140a0a,    $db924949, $0a0c0606, $6c482424, $e4b85c5c,    $5d9fc2c2, $6ebdd3d3, $ef43acac, $a6c46262,    $a8399191, $a4319595, $37d3e4e4, $8bf27979,    $32d5e7e7, $438bc8c8, $596e3737, $b7da6d6d,    $8c018d8d, $64b1d5d5, $d29c4e4e, $e049a9a9,    $b4d86c6c, $faac5656, $07f3f4f4, $25cfeaea,    $afca6565, $8ef47a7a, $e947aeae, $18100808,    $d56fbaba, $88f07878, $6f4a2525, $725c2e2e,    $24381c1c, $f157a6a6, $c773b4b4, $5197c6c6,    $23cbe8e8, $7ca1dddd, $9ce87474, $213e1f1f,    $dd964b4b, $dc61bdbd, $860d8b8b, $850f8a8a,    $90e07070, $427c3e3e, $c471b5b5, $aacc6666,    $d8904848, $05060303, $01f7f6f6, $121c0e0e,    $a3c26161, $5f6a3535, $f9ae5757, $d069b9b9,    $91178686, $5899c1c1, $273a1d1d, $b9279e9e,    $38d9e1e1, $13ebf8f8, $b32b9898, $33221111,    $bbd26969, $70a9d9d9, $89078e8e, $a7339494,    $b62d9b9b, $223c1e1e, $92158787, $20c9e9e9,    $4987cece, $ffaa5555, $78502828, $7aa5dfdf,    $8f038c8c, $f859a1a1, $80098989, $171a0d0d,    $da65bfbf, $31d7e6e6, $c6844242, $b8d06868,    $c3824141, $b0299999, $775a2d2d, $111e0f0f,    $cb7bb0b0, $fca85454, $d66dbbbb, $3a2c1616);const Te2: ARRAY [0..255] OF SET32 = (    $63a5c663, $7c84f87c, $7799ee77, $7b8df67b,    $f20dfff2, $6bbdd66b, $6fb1de6f, $c55491c5,    $30506030, $01030201, $67a9ce67, $2b7d562b,    $fe19e7fe, $d762b5d7, $abe64dab, $769aec76,    $ca458fca, $829d1f82, $c94089c9, $7d87fa7d,    $fa15effa, $59ebb259, $47c98e47, $f00bfbf0,    $adec41ad, $d467b3d4, $a2fd5fa2, $afea45af,    $9cbf239c, $a4f753a4, $7296e472, $c05b9bc0,    $b7c275b7, $fd1ce1fd, $93ae3d93, $266a4c26,    $365a6c36, $3f417e3f, $f702f5f7, $cc4f83cc,    $345c6834, $a5f451a5, $e534d1e5, $f108f9f1,    $7193e271, $d873abd8, $31536231, $153f2a15,    $040c0804, $c75295c7, $23654623, $c35e9dc3,    $18283018, $96a13796, $050f0a05, $9ab52f9a,    $07090e07, $12362412, $809b1b80, $e23ddfe2,    $eb26cdeb, $27694e27, $b2cd7fb2, $759fea75,    $091b1209, $839e1d83, $2c74582c, $1a2e341a,    $1b2d361b, $6eb2dc6e, $5aeeb45a, $a0fb5ba0,    $52f6a452, $3b4d763b, $d661b7d6, $b3ce7db3,    $297b5229, $e33edde3, $2f715e2f, $84971384,    $53f5a653, $d168b9d1, $00000000, $ed2cc1ed,    $20604020, $fc1fe3fc, $b1c879b1, $5bedb65b,    $6abed46a, $cb468dcb, $bed967be, $394b7239,    $4ade944a, $4cd4984c, $58e8b058, $cf4a85cf,    $d06bbbd0, $ef2ac5ef, $aae54faa, $fb16edfb,    $43c58643, $4dd79a4d, $33556633, $85941185,    $45cf8a45, $f910e9f9, $02060402, $7f81fe7f,    $50f0a050, $3c44783c, $9fba259f, $a8e34ba8,    $51f3a251, $a3fe5da3, $40c08040, $8f8a058f,    $92ad3f92, $9dbc219d, $38487038, $f504f1f5,    $bcdf63bc, $b6c177b6, $da75afda, $21634221,    $10302010, $ff1ae5ff, $f30efdf3, $d26dbfd2,    $cd4c81cd, $0c14180c, $13352613, $ec2fc3ec,    $5fe1be5f, $97a23597, $44cc8844, $17392e17,    $c45793c4, $a7f255a7, $7e82fc7e, $3d477a3d,    $64acc864, $5de7ba5d, $192b3219, $7395e673,    $60a0c060, $81981981, $4fd19e4f, $dc7fa3dc,    $22664422, $2a7e542a, $90ab3b90, $88830b88,    $46ca8c46, $ee29c7ee, $b8d36bb8, $143c2814,    $de79a7de, $5ee2bc5e, $0b1d160b, $db76addb,    $e03bdbe0, $32566432, $3a4e743a, $0a1e140a,    $49db9249, $060a0c06, $246c4824, $5ce4b85c,    $c25d9fc2, $d36ebdd3, $acef43ac, $62a6c462,    $91a83991, $95a43195, $e437d3e4, $798bf279,    $e732d5e7, $c8438bc8, $37596e37, $6db7da6d,    $8d8c018d, $d564b1d5, $4ed29c4e, $a9e049a9,    $6cb4d86c, $56faac56, $f407f3f4, $ea25cfea,    $65afca65, $7a8ef47a, $aee947ae, $08181008,    $bad56fba, $7888f078, $256f4a25, $2e725c2e,    $1c24381c, $a6f157a6, $b4c773b4, $c65197c6,    $e823cbe8, $dd7ca1dd, $749ce874, $1f213e1f,    $4bdd964b, $bddc61bd, $8b860d8b, $8a850f8a,    $7090e070, $3e427c3e, $b5c471b5, $66aacc66,    $48d89048, $03050603, $f601f7f6, $0e121c0e,    $61a3c261, $355f6a35, $57f9ae57, $b9d069b9,    $86911786, $c15899c1, $1d273a1d, $9eb9279e,    $e138d9e1, $f813ebf8, $98b32b98, $11332211,    $69bbd269, $d970a9d9, $8e89078e, $94a73394,    $9bb62d9b, $1e223c1e, $87921587, $e920c9e9,    $ce4987ce, $55ffaa55, $28785028, $df7aa5df,    $8c8f038c, $a1f859a1, $89800989, $0d171a0d,    $bfda65bf, $e631d7e6, $42c68442, $68b8d068,    $41c38241, $99b02999, $2d775a2d, $0f111e0f,    $b0cb7bb0, $54fca854, $bbd66dbb, $163a2c16);const Te3: ARRAY [0..255] OF SET32 = (    $6363a5c6, $7c7c84f8, $777799ee, $7b7b8df6,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -