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

📄 modrijndaelalgorithm.bas

📁 Rjindeal加密算法
💻 BAS
📖 第 1 页 / 共 5 页
字号:
Attribute VB_Name = "modRijnDaelAlgorithm"
Option Explicit
Option Base 0
' Please read the Readme.rtf file which should have been
' included in the zip file.

' note on C bitwise operators here and VB equivalents
' & = Bitwise AND = And
' | = Bitwise Inclusive OR = Or
' ^ = Bitwise Exclusive OR = Xor
' << = Left Shift = {No equivalent}
' >> = Right Shift = {No equivalent}
' ~ = One's complement = Not
'
' I am reliably informed that in VB 7 new operators will be
' introduced for the above operations:
' & = BitAnd
' | = BitOr
' ^ = BitXor
'
' etc.
' Please bear this in mind if compiling using VB7 (or it won't work)!
' Additionally, if those lovely people at Microsoft ever
' allow VB to do bit shifting, please change all the calls
' to the LshL and LshR functions.  Sigh.
'   - Jonathan Daniel.   bigcalm@hotmail.com

Private Initialised As Boolean
Private Te0(256) As Long
Private Te1(256) As Long
Private Te2(256) As Long
Private Te3(256) As Long
Private Te4(256) As Long
Private Td0(256) As Long
Private Td1(256) As Long
Private Td2(256) As Long
Private Td3(256) As Long
Private Td4(256) As Long
Private Rcon(10) As Long

' Original C Source for header...
'
'/**
' * rijndael-alg-fst.c
' *
' * @version 3.0 (December 2000)
' *
' * Optimised ANSI C code for the Rijndael cipher (now AES)
' *
' * @author Vincent Rijmen
' * @author Antoon Bosselaers
' * @author Paulo Barreto
' *
' * 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.
' */
'#include <assert.h>
'#include <stdlib.h>
'
'#include "rijndael-alg-fst.h"
'
'/*
'Te0[x] = S [x].[02, 01, 01, 03];
'Te1[x] = S [x].[03, 02, 01, 01];
'Te2[x] = S [x].[01, 03, 02, 01];
'Te3[x] = S [x].[01, 01, 03, 02];
'Te4[x] = S [x].[01, 01, 01, 01];
'
'Td0[x] = Si[x].[0e, 09, 0d, 0b];
'Td1[x] = Si[x].[0b, 0e, 09, 0d];
'Td2[x] = Si[x].[0d, 0b, 0e, 09];
'Td3[x] = Si[x].[09, 0d, 0b, 0e];
'Td4[x] = Si[x].[01, 01, 01, 01];
'*/
'
'
'#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
'
'#ifdef _MSC_VER
'#define GETU32(p) SWAP(*((u32 *)(p)))
'#define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
'#Else
'#define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] <<  8) ^ ((u32)(pt)[3]))
'#define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >>  8); (ct)[3] = (u8)(st); }
'#End If
'
'/**
' * Expand the cipher key into the encryption key schedule.
' *
' * @return  the number of rounds for the given cipher key size.
' */


Public Sub InitialiseRijnDaelArrays()
If Initialised = True Then
    Exit Sub
End If
Initialised = True
Te0(0) = &HC66363A5
Te0(1) = &HF87C7C84
Te0(2) = &HEE777799
Te0(3) = &HF67B7B8D
Te0(4) = &HFFF2F20D
Te0(5) = &HD66B6BBD
Te0(6) = &HDE6F6FB1
Te0(7) = &H91C5C554
Te0(8) = &H60303050
Te0(9) = &H2010103
Te0(10) = &HCE6767A9
Te0(11) = &H562B2B7D
Te0(12) = &HE7FEFE19
Te0(13) = &HB5D7D762
Te0(14) = &H4DABABE6
Te0(15) = &HEC76769A
Te0(16) = &H8FCACA45
Te0(17) = &H1F82829D
Te0(18) = &H89C9C940
Te0(19) = &HFA7D7D87
Te0(20) = &HEFFAFA15
Te0(21) = &HB25959EB
Te0(22) = &H8E4747C9
Te0(23) = &HFBF0F00B
Te0(24) = &H41ADADEC
Te0(25) = &HB3D4D467
Te0(26) = &H5FA2A2FD
Te0(27) = &H45AFAFEA
Te0(28) = &H239C9CBF
Te0(29) = &H53A4A4F7
Te0(30) = &HE4727296
Te0(31) = &H9BC0C05B
Te0(32) = &H75B7B7C2
Te0(33) = &HE1FDFD1C
Te0(34) = &H3D9393AE
Te0(35) = &H4C26266A
Te0(36) = &H6C36365A
Te0(37) = &H7E3F3F41
Te0(38) = &HF5F7F702
Te0(39) = &H83CCCC4F
Te0(40) = &H6834345C
Te0(41) = &H51A5A5F4
Te0(42) = &HD1E5E534
Te0(43) = &HF9F1F108
Te0(44) = &HE2717193
Te0(45) = &HABD8D873
Te0(46) = &H62313153
Te0(47) = &H2A15153F
Te0(48) = &H804040C
Te0(49) = &H95C7C752
Te0(50) = &H46232365
Te0(51) = &H9DC3C35E
Te0(52) = &H30181828
Te0(53) = &H379696A1
Te0(54) = &HA05050F
Te0(55) = &H2F9A9AB5
Te0(56) = &HE070709
Te0(57) = &H24121236
Te0(58) = &H1B80809B
Te0(59) = &HDFE2E23D
Te0(60) = &HCDEBEB26
Te0(61) = &H4E272769
Te0(62) = &H7FB2B2CD
Te0(63) = &HEA75759F
Te0(64) = &H1209091B
Te0(65) = &H1D83839E
Te0(66) = &H582C2C74
Te0(67) = &H341A1A2E
Te0(68) = &H361B1B2D
Te0(69) = &HDC6E6EB2
Te0(70) = &HB45A5AEE
Te0(71) = &H5BA0A0FB
Te0(72) = &HA45252F6
Te0(73) = &H763B3B4D
Te0(74) = &HB7D6D661
Te0(75) = &H7DB3B3CE
Te0(76) = &H5229297B
Te0(77) = &HDDE3E33E
Te0(78) = &H5E2F2F71
Te0(79) = &H13848497
Te0(80) = &HA65353F5
Te0(81) = &HB9D1D168
Te0(82) = &H0
Te0(83) = &HC1EDED2C
Te0(84) = &H40202060
Te0(85) = &HE3FCFC1F
Te0(86) = &H79B1B1C8
Te0(87) = &HB65B5BED
Te0(88) = &HD46A6ABE
Te0(89) = &H8DCBCB46
Te0(90) = &H67BEBED9
Te0(91) = &H7239394B
Te0(92) = &H944A4ADE
Te0(93) = &H984C4CD4
Te0(94) = &HB05858E8
Te0(95) = &H85CFCF4A
Te0(96) = &HBBD0D06B
Te0(97) = &HC5EFEF2A
Te0(98) = &H4FAAAAE5
Te0(99) = &HEDFBFB16
Te0(100) = &H864343C5
Te0(101) = &H9A4D4DD7
Te0(102) = &H66333355
Te0(103) = &H11858594
Te0(104) = &H8A4545CF
Te0(105) = &HE9F9F910
Te0(106) = &H4020206
Te0(107) = &HFE7F7F81
Te0(108) = &HA05050F0
Te0(109) = &H783C3C44
Te0(110) = &H259F9FBA
Te0(111) = &H4BA8A8E3
Te0(112) = &HA25151F3
Te0(113) = &H5DA3A3FE
Te0(114) = &H804040C0
Te0(115) = &H58F8F8A
Te0(116) = &H3F9292AD
Te0(117) = &H219D9DBC
Te0(118) = &H70383848
Te0(119) = &HF1F5F504
Te0(120) = &H63BCBCDF
Te0(121) = &H77B6B6C1
Te0(122) = &HAFDADA75
Te0(123) = &H42212163
Te0(124) = &H20101030
Te0(125) = &HE5FFFF1A
Te0(126) = &HFDF3F30E
Te0(127) = &HBFD2D26D
Te0(128) = &H81CDCD4C
Te0(129) = &H180C0C14
Te0(130) = &H26131335
Te0(131) = &HC3ECEC2F
Te0(132) = &HBE5F5FE1
Te0(133) = &H359797A2
Te0(134) = &H884444CC
Te0(135) = &H2E171739
Te0(136) = &H93C4C457
Te0(137) = &H55A7A7F2
Te0(138) = &HFC7E7E82
Te0(139) = &H7A3D3D47
Te0(140) = &HC86464AC
Te0(141) = &HBA5D5DE7
Te0(142) = &H3219192B
Te0(143) = &HE6737395
Te0(144) = &HC06060A0
Te0(145) = &H19818198
Te0(146) = &H9E4F4FD1
Te0(147) = &HA3DCDC7F
Te0(148) = &H44222266
Te0(149) = &H542A2A7E
Te0(150) = &H3B9090AB
Te0(151) = &HB888883
Te0(152) = &H8C4646CA
Te0(153) = &HC7EEEE29
Te0(154) = &H6BB8B8D3
Te0(155) = &H2814143C
Te0(156) = &HA7DEDE79
Te0(157) = &HBC5E5EE2
Te0(158) = &H160B0B1D
Te0(159) = &HADDBDB76
Te0(160) = &HDBE0E03B
Te0(161) = &H64323256
Te0(162) = &H743A3A4E
Te0(163) = &H140A0A1E
Te0(164) = &H924949DB
Te0(165) = &HC06060A
Te0(166) = &H4824246C
Te0(167) = &HB85C5CE4
Te0(168) = &H9FC2C25D
Te0(169) = &HBDD3D36E
Te0(170) = &H43ACACEF
Te0(171) = &HC46262A6
Te0(172) = &H399191A8
Te0(173) = &H319595A4
Te0(174) = &HD3E4E437
Te0(175) = &HF279798B
Te0(176) = &HD5E7E732
Te0(177) = &H8BC8C843
Te0(178) = &H6E373759
Te0(179) = &HDA6D6DB7
Te0(180) = &H18D8D8C
Te0(181) = &HB1D5D564
Te0(182) = &H9C4E4ED2
Te0(183) = &H49A9A9E0
Te0(184) = &HD86C6CB4
Te0(185) = &HAC5656FA
Te0(186) = &HF3F4F407
Te0(187) = &HCFEAEA25
Te0(188) = &HCA6565AF
Te0(189) = &HF47A7A8E
Te0(190) = &H47AEAEE9
Te0(191) = &H10080818
Te0(192) = &H6FBABAD5
Te0(193) = &HF0787888
Te0(194) = &H4A25256F
Te0(195) = &H5C2E2E72
Te0(196) = &H381C1C24
Te0(197) = &H57A6A6F1
Te0(198) = &H73B4B4C7
Te0(199) = &H97C6C651
Te0(200) = &HCBE8E823
Te0(201) = &HA1DDDD7C
Te0(202) = &HE874749C
Te0(203) = &H3E1F1F21
Te0(204) = &H964B4BDD
Te0(205) = &H61BDBDDC
Te0(206) = &HD8B8B86
Te0(207) = &HF8A8A85
Te0(208) = &HE0707090
Te0(209) = &H7C3E3E42
Te0(210) = &H71B5B5C4
Te0(211) = &HCC6666AA
Te0(212) = &H904848D8
Te0(213) = &H6030305
Te0(214) = &HF7F6F601
Te0(215) = &H1C0E0E12
Te0(216) = &HC26161A3
Te0(217) = &H6A35355F
Te0(218) = &HAE5757F9
Te0(219) = &H69B9B9D0
Te0(220) = &H17868691
Te0(221) = &H99C1C158
Te0(222) = &H3A1D1D27
Te0(223) = &H279E9EB9
Te0(224) = &HD9E1E138
Te0(225) = &HEBF8F813
Te0(226) = &H2B9898B3
Te0(227) = &H22111133
Te0(228) = &HD26969BB
Te0(229) = &HA9D9D970
Te0(230) = &H78E8E89
Te0(231) = &H339494A7
Te0(232) = &H2D9B9BB6
Te0(233) = &H3C1E1E22
Te0(234) = &H15878792
Te0(235) = &HC9E9E920
Te0(236) = &H87CECE49
Te0(237) = &HAA5555FF
Te0(238) = &H50282878
Te0(239) = &HA5DFDF7A
Te0(240) = &H38C8C8F
Te0(241) = &H59A1A1F8
Te0(242) = &H9898980
Te0(243) = &H1A0D0D17
Te0(244) = &H65BFBFDA
Te0(245) = &HD7E6E631
Te0(246) = &H844242C6
Te0(247) = &HD06868B8
Te0(248) = &H824141C3
Te0(249) = &H299999B0
Te0(250) = &H5A2D2D77
Te0(251) = &H1E0F0F11
Te0(252) = &H7BB0B0CB
Te0(253) = &HA85454FC
Te0(254) = &H6DBBBBD6
Te0(255) = &H2C16163A
Te1(0) = &HA5C66363
Te1(1) = &H84F87C7C
Te1(2) = &H99EE7777
Te1(3) = &H8DF67B7B
Te1(4) = &HDFFF2F2
Te1(5) = &HBDD66B6B
Te1(6) = &HB1DE6F6F
Te1(7) = &H5491C5C5
Te1(8) = &H50603030
Te1(9) = &H3020101
Te1(10) = &HA9CE6767
Te1(11) = &H7D562B2B
Te1(12) = &H19E7FEFE
Te1(13) = &H62B5D7D7
Te1(14) = &HE64DABAB
Te1(15) = &H9AEC7676
Te1(16) = &H458FCACA
Te1(17) = &H9D1F8282
Te1(18) = &H4089C9C9
Te1(19) = &H87FA7D7D
Te1(20) = &H15EFFAFA
Te1(21) = &HEBB25959
Te1(22) = &HC98E4747
Te1(23) = &HBFBF0F0
Te1(24) = &HEC41ADAD
Te1(25) = &H67B3D4D4
Te1(26) = &HFD5FA2A2
Te1(27) = &HEA45AFAF
Te1(28) = &HBF239C9C
Te1(29) = &HF753A4A4
Te1(30) = &H96E47272
Te1(31) = &H5B9BC0C0
Te1(32) = &HC275B7B7
Te1(33) = &H1CE1FDFD
Te1(34) = &HAE3D9393
Te1(35) = &H6A4C2626
Te1(36) = &H5A6C3636
Te1(37) = &H417E3F3F
Te1(38) = &H2F5F7F7
Te1(39) = &H4F83CCCC
Te1(40) = &H5C683434
Te1(41) = &HF451A5A5
Te1(42) = &H34D1E5E5
Te1(43) = &H8F9F1F1
Te1(44) = &H93E27171
Te1(45) = &H73ABD8D8
Te1(46) = &H53623131
Te1(47) = &H3F2A1515
Te1(48) = &HC080404
Te1(49) = &H5295C7C7
Te1(50) = &H65462323
Te1(51) = &H5E9DC3C3
Te1(52) = &H28301818
Te1(53) = &HA1379696
Te1(54) = &HF0A0505
Te1(55) = &HB52F9A9A
Te1(56) = &H90E0707
Te1(57) = &H36241212
Te1(58) = &H9B1B8080
Te1(59) = &H3DDFE2E2
Te1(60) = &H26CDEBEB
Te1(61) = &H694E2727
Te1(62) = &HCD7FB2B2
Te1(63) = &H9FEA7575
Te1(64) = &H1B120909
Te1(65) = &H9E1D8383
Te1(66) = &H74582C2C
Te1(67) = &H2E341A1A
Te1(68) = &H2D361B1B
Te1(69) = &HB2DC6E6E
Te1(70) = &HEEB45A5A
Te1(71) = &HFB5BA0A0
Te1(72) = &HF6A45252
Te1(73) = &H4D763B3B
Te1(74) = &H61B7D6D6
Te1(75) = &HCE7DB3B3
Te1(76) = &H7B522929
Te1(77) = &H3EDDE3E3
Te1(78) = &H715E2F2F
Te1(79) = &H97138484
Te1(80) = &HF5A65353
Te1(81) = &H68B9D1D1
Te1(82) = &H0
Te1(83) = &H2CC1EDED
Te1(84) = &H60402020
Te1(85) = &H1FE3FCFC
Te1(86) = &HC879B1B1
Te1(87) = &HEDB65B5B
Te1(88) = &HBED46A6A
Te1(89) = &H468DCBCB
Te1(90) = &HD967BEBE
Te1(91) = &H4B723939
Te1(92) = &HDE944A4A
Te1(93) = &HD4984C4C
Te1(94) = &HE8B05858
Te1(95) = &H4A85CFCF
Te1(96) = &H6BBBD0D0
Te1(97) = &H2AC5EFEF
Te1(98) = &HE54FAAAA
Te1(99) = &H16EDFBFB
Te1(100) = &HC5864343
Te1(101) = &HD79A4D4D
Te1(102) = &H55663333
Te1(103) = &H94118585
Te1(104) = &HCF8A4545
Te1(105) = &H10E9F9F9
Te1(106) = &H6040202
Te1(107) = &H81FE7F7F
Te1(108) = &HF0A05050
Te1(109) = &H44783C3C
Te1(110) = &HBA259F9F
Te1(111) = &HE34BA8A8
Te1(112) = &HF3A25151
Te1(113) = &HFE5DA3A3
Te1(114) = &HC0804040
Te1(115) = &H8A058F8F
Te1(116) = &HAD3F9292
Te1(117) = &HBC219D9D
Te1(118) = &H48703838
Te1(119) = &H4F1F5F5
Te1(120) = &HDF63BCBC
Te1(121) = &HC177B6B6
Te1(122) = &H75AFDADA
Te1(123) = &H63422121
Te1(124) = &H30201010
Te1(125) = &H1AE5FFFF
Te1(126) = &HEFDF3F3
Te1(127) = &H6DBFD2D2
Te1(128) = &H4C81CDCD
Te1(129) = &H14180C0C
Te1(130) = &H35261313
Te1(131) = &H2FC3ECEC
Te1(132) = &HE1BE5F5F
Te1(133) = &HA2359797
Te1(134) = &HCC884444
Te1(135) = &H392E1717
Te1(136) = &H5793C4C4
Te1(137) = &HF255A7A7
Te1(138) = &H82FC7E7E
Te1(139) = &H477A3D3D
Te1(140) = &HACC86464
Te1(141) = &HE7BA5D5D
Te1(142) = &H2B321919
Te1(143) = &H95E67373
Te1(144) = &HA0C06060
Te1(145) = &H98198181
Te1(146) = &HD19E4F4F
Te1(147) = &H7FA3DCDC
Te1(148) = &H66442222
Te1(149) = &H7E542A2A
Te1(150) = &HAB3B9090
Te1(151) = &H830B8888
Te1(152) = &HCA8C4646
Te1(153) = &H29C7EEEE
Te1(154) = &HD36BB8B8
Te1(155) = &H3C281414
Te1(156) = &H79A7DEDE
Te1(157) = &HE2BC5E5E
Te1(158) = &H1D160B0B
Te1(159) = &H76ADDBDB
Te1(160) = &H3BDBE0E0
Te1(161) = &H56643232
Te1(162) = &H4E743A3A
Te1(163) = &H1E140A0A
Te1(164) = &HDB924949
Te1(165) = &HA0C0606
Te1(166) = &H6C482424
Te1(167) = &HE4B85C5C
Te1(168) = &H5D9FC2C2
Te1(169) = &H6EBDD3D3
Te1(170) = &HEF43ACAC
Te1(171) = &HA6C46262
Te1(172) = &HA8399191
Te1(173) = &HA4319595
Te1(174) = &H37D3E4E4
Te1(175) = &H8BF27979
Te1(176) = &H32D5E7E7
Te1(177) = &H438BC8C8
Te1(178) = &H596E3737
Te1(179) = &HB7DA6D6D
Te1(180) = &H8C018D8D
Te1(181) = &H64B1D5D5
Te1(182) = &HD29C4E4E
Te1(183) = &HE049A9A9
Te1(184) = &HB4D86C6C
Te1(185) = &HFAAC5656
Te1(186) = &H7F3F4F4

⌨️ 快捷键说明

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