J. Duke | 319a3b9 | 2007-12-01 00:00:00 +0000 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. |
| 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| 4 | * |
| 5 | * This code is free software; you can redistribute it and/or modify it |
| 6 | * under the terms of the GNU General Public License version 2 only, as |
| 7 | * published by the Free Software Foundation. |
| 8 | * |
| 9 | * This code is distributed in the hope that it will be useful, but WITHOUT |
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| 12 | * version 2 for more details (a copy is included in the LICENSE file that |
| 13 | * accompanied this code). |
| 14 | * |
| 15 | * You should have received a copy of the GNU General Public License version |
| 16 | * 2 along with this work; if not, write to the Free Software Foundation, |
| 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | * |
| 19 | * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
| 20 | * CA 95054 USA or visit www.sun.com if you need additional information or |
| 21 | * have any questions. |
| 22 | */ |
| 23 | |
| 24 | /* |
| 25 | * @test |
| 26 | * @bug 4635086 |
| 27 | * @library ../UTIL |
| 28 | * @build TestUtil |
| 29 | * @run main TestKATForECB_VK |
| 30 | * @summary Known Answer Test for AES cipher with ECB mode |
| 31 | * @author Valerie Peng |
| 32 | */ |
| 33 | import java.security.*; |
| 34 | import javax.crypto.*; |
| 35 | import javax.crypto.spec.*; |
| 36 | import java.math.*; |
| 37 | import com.sun.crypto.provider.*; |
| 38 | |
| 39 | import java.util.*; |
| 40 | |
| 41 | public class TestKATForECB_VK |
| 42 | { |
| 43 | private static final String ALGO = "AES"; |
| 44 | private static final String MODE = "ECB"; |
| 45 | private static final String PADDING = "NoPadding"; |
| 46 | |
| 47 | //ecb-vk.txt |
| 48 | private static byte[] PT = new byte[16]; |
| 49 | |
| 50 | private static String[][] CTS = { |
| 51 | // Cipher Texts for 128-bit key |
| 52 | { |
| 53 | "0EDD33D3C621E546455BD8BA1418BEC8", |
| 54 | "C0CC0C5DA5BD63ACD44A80774FAD5222", |
| 55 | "2F0B4B71BC77851B9CA56D42EB8FF080", |
| 56 | "6B1E2FFFE8A114009D8FE22F6DB5F876", |
| 57 | "9AA042C315F94CBB97B62202F83358F5", |
| 58 | "DBE01DE67E346A800C4C4B4880311DE4", |
| 59 | "C117D2238D53836ACD92DDCDB85D6A21", |
| 60 | "DC0ED85DF9611ABB7249CDD168C5467E", |
| 61 | "807D678FFF1F56FA92DE3381904842F2", |
| 62 | "0E53B3FCAD8E4B130EF73AEB957FB402", |
| 63 | "969FFD3B7C35439417E7BDE923035D65", |
| 64 | "A99B512C19CA56070491166A1503BF15", |
| 65 | "6E9985252126EE344D26AE369D2327E3", |
| 66 | "B85F4809F904C275491FCDCD1610387E", |
| 67 | "ED365B8D7D20C1F5D53FB94DD211DF7B", |
| 68 | "B3A575E86A8DB4A7135D604C43304896", |
| 69 | "89704BCB8E69F846259EB0ACCBC7F8A2", |
| 70 | "C56EE7C92197861F10D7A92B90882055", |
| 71 | "92F296F6846E0EAF9422A5A24A08B069", |
| 72 | "E67E32BB8F11DEB8699318BEE9E91A60", |
| 73 | "B08EEF85EAF626DD91B65C4C3A97D92B", |
| 74 | "661083A6ADDCE79BB4E0859AB5538013", |
| 75 | "55DFE2941E0EB10AFC0B333BD34DE1FE", |
| 76 | "6BFE5945E715C9662609770F8846087A", |
| 77 | "79848E9C30C2F8CDA8B325F7FED2B139", |
| 78 | "7A713A53B99FEF34AC04DEEF80965BD0", |
| 79 | "18144A2B46620D32C3C32CE52D49257F", |
| 80 | "872E827C70887C80749F7B8BB1847C7E", |
| 81 | "6B86C6A4FE6A60C59B1A3102F8DE49F3", |
| 82 | "9848BB3DFDF6F532F094679A4C231A20", |
| 83 | "925AD528E852E329B2091CD3F1C2BCEE", |
| 84 | "80DF436544B0DD596722E46792A40CD8", |
| 85 | "525DAF18F93E83E1E74BBBDDE4263BBA", |
| 86 | "F65C9D2EE485D24701FFA3313B9D5BE6", |
| 87 | "E4FC8D8BCA06425BDF94AFA40FCC14BA", |
| 88 | "A53F0A5CA1E4E6440BB975FF320DE6F8", |
| 89 | "D55313B9394080462E87E02899B553F0", |
| 90 | "34A71D761F71BCD344384C7F97D27906", |
| 91 | "233F3D819599612EBC89580245C996A8", |
| 92 | "B4F1374E5268DBCB676E447529E53F89", |
| 93 | "0816BD27861D2BA891D1044E39951E96", |
| 94 | "F3BE9EA3F10C73CA64FDE5DB13A951D1", |
| 95 | "2448086A8106FBD03048DDF857D3F1C8", |
| 96 | "670756E65BEC8B68F03D77CDCDCE7B91", |
| 97 | "EF968CF0D36FD6C6EFFD225F6FB44CA9", |
| 98 | "2E8767157922E3826DDCEC1B0CC1E105", |
| 99 | "78CE7EEC670E45A967BAB17E26A1AD36", |
| 100 | "3C5CEE825655F098F6E81A2F417DA3FB", |
| 101 | "67BFDB431DCE1292200BC6F5207ADB12", |
| 102 | "7540FD38E447C0779228548747843A6F", |
| 103 | "B85E513301F8A936EA9EC8A21A85B5E6", |
| 104 | "04C67DBF16C11427D507A455DE2C9BC5", |
| 105 | "03F75EB8959E55079CFFB4FF149A37B6", |
| 106 | "74550287F666C63BB9BC7838433434B0", |
| 107 | "7D537200195EBC3AEFD1EAAB1C385221", |
| 108 | "CE24E4D40C68A82B535CBD3C8E21652A", |
| 109 | "AB20072405AA8FC40265C6F1F3DC8BC0", |
| 110 | "6CFD2CF688F566B093F67B9B3839E80A", |
| 111 | "BD95977E6B7239D407A012C5544BF584", |
| 112 | "DF9C0130AC77E7C72C997F587B46DBE0", |
| 113 | "E7F1B82CADC53A648798945B34EFEFF2", |
| 114 | "932C6DBF69255CF13EDCDB72233ACEA3", |
| 115 | "5C76002BC7206560EFE550C80B8F12CC", |
| 116 | "F6B7BDD1CAEEBAB574683893C4475484", |
| 117 | "A920E37CC6DC6B31DA8C0169569F5034", |
| 118 | "919380ECD9C778BC513148B0C28D65FD", |
| 119 | "EE67308DD3F2D9E6C2170755E5784BE1", |
| 120 | "3CC73E53B85609023A05E149B223AE09", |
| 121 | "983E8AF7CF05EBB28D71EB841C9406E6", |
| 122 | "0F3099B2D31FA5299EE5BF43193287FC", |
| 123 | "B763D84F38C27FE6931DCEB6715D4DB6", |
| 124 | "5AE3C9B0E3CC29C0C61565CD01F8A248", |
| 125 | "F58083572CD90981958565D48D2DEE25", |
| 126 | "7E6255EEF8F70C0EF10337AAB1CCCEF8", |
| 127 | "AAD4BAC34DB22821841CE2F631961902", |
| 128 | "D7431C0409BB1441BA9C6858DC7D4E81", |
| 129 | "EF9298C65E339F6E801A59C626456993", |
| 130 | "53FE29F68FF541ABC3F0EF3350B72F7E", |
| 131 | "F6BBA5C10DB02529E2C2DA3FB582CC14", |
| 132 | "E4239AA37FC531A386DAD1126FC0E9CD", |
| 133 | "8F7758F857D15BBE7BFD0E416404C365", |
| 134 | "D273EB57C687BCD1B4EA7218A509E7B8", |
| 135 | "65D64F8D76E8B3423FA25C4EB58A210A", |
| 136 | "623D802B4EC450D66A16625702FCDBE0", |
| 137 | "7496460CB28E5791BAEAF9B68FB00022", |
| 138 | "34EA600F18BB0694B41681A49D510C1D", |
| 139 | "5F8FF0D47D5766D29B5D6E8F46423BD8", |
| 140 | "225F9286C5928BF09F84D3F93F541959", |
| 141 | "B21E90D25DF383416A5F072CEBEB1FFB", |
| 142 | "4AEFCDA089318125453EB9E8EB5E492E", |
| 143 | "4D3E75C6CD40EC4869BC85158591ADB8", |
| 144 | "63A8B904405436A1B99D7751866771B7", |
| 145 | "64F0DAAE47529199792EAE172BA53293", |
| 146 | "C3EEF84BEA18225D515A8C852A9047EE", |
| 147 | "A44AC422B47D47B81AF73B3E9AC9596E", |
| 148 | "D16E04A8FBC435094F8D53ADF25F5084", |
| 149 | "EF13DC34BAB03E124EEAD8B6BF44B532", |
| 150 | "D94799075C24DCC067AF0D392049250D", |
| 151 | "14F431771EDDCE4764C21A2254B5E3C8", |
| 152 | "7039329F36F2ED682B02991F28D64679", |
| 153 | "124EE24EDE5551639DB8B8B941F6141D", |
| 154 | "C2852879A34D5184E478EC918B993FEE", |
| 155 | "86A806A3525B93E432053C9AB5ABBEDF", |
| 156 | "C1609BF5A4F07E37C17A36366EC23ECC", |
| 157 | "7E81E7CB92159A51FFCEA331B1E8EA53", |
| 158 | "37A7BE002856C5A59A6E03EAFCE7729A", |
| 159 | "BDF98A5A4F91E890C9A1D1E5FAAB138F", |
| 160 | "4E96ACB66E051F2BC739CC3D3E34A26B", |
| 161 | "EE996CDD120EB86E21ECFA49E8E1FCF1", |
| 162 | "61B9E6B579DBF6070C351A1440DD85FF", |
| 163 | "AC369E484316440B40DFC83AA96E28E7", |
| 164 | "0A2D16DE985C76D45C579C1159413BBE", |
| 165 | "DA3FDC38DA1D374FA4802CDA1A1C6B0F", |
| 166 | "B842523D4C41C2211AFE43A5800ADCE3", |
| 167 | "9E2CDA90D8E992DBA6C73D8229567192", |
| 168 | "D49583B781D9E20F5BE101415957FC49", |
| 169 | "EF09DA5C12B376E458B9B8670032498E", |
| 170 | "A96BE0463DA774461A5E1D5A9DD1AC10", |
| 171 | "32CEE3341060790D2D4B1362EF397090", |
| 172 | "21CEA416A3D3359D2C4D58FB6A035F06", |
| 173 | "172AEAB3D507678ECAF455C12587ADB7", |
| 174 | "B6F897941EF8EBFF9FE80A567EF38478", |
| 175 | "A9723259D94A7DC662FB0C782CA3F1DD", |
| 176 | "2F91C984B9A4839F30001B9F430493B4", |
| 177 | "0472406345A610B048CB99EE0EF3FA0F", |
| 178 | "F5F39086646F8C05ED16EFA4B617957C", |
| 179 | "26D50F485A30408D5AF47A5736292450", |
| 180 | "0545AAD56DA2A97C3663D1432A3D1C84" |
| 181 | }, |
| 182 | // Cipher Texts for 192-bit key |
| 183 | { |
| 184 | "DE885DC87F5A92594082D02CC1E1B42C", |
| 185 | "C749194F94673F9DD2AA1932849630C1", |
| 186 | "0CEF643313912934D310297B90F56ECC", |
| 187 | "C4495D39D4A553B225FBA02A7B1B87E1", |
| 188 | "636D10B1A0BCAB541D680A7970ADC830", |
| 189 | "07CF045786BD6AFCC147D99E45A901A7", |
| 190 | "6A8E3F425A7599348F95398448827976", |
| 191 | "5518276836148A00D91089A20D8BFF57", |
| 192 | "F267E07B5E87E3BC20B969C61D4FCB06", |
| 193 | "5A1CDE69571D401BFCD20DEBADA2212C", |
| 194 | "70A9057263254701D12ADD7D74CD509E", |
| 195 | "35713A7E108031279388A33A0FE2E190", |
| 196 | "E74EDE82B1254714F0C7B4B243108655", |
| 197 | "39272E3100FAA37B55B862320D1B3EB3", |
| 198 | "6D6E24C659FC5AEF712F77BCA19C9DD0", |
| 199 | "76D18212F972370D3CC2C6C372C6CF2F", |
| 200 | "B21A1F0BAE39E55C7594ED570A7783EA", |
| 201 | "77DE202111895AC48DD1C974B358B458", |
| 202 | "67810B311969012AAF7B504FFAF39FD1", |
| 203 | "C22EA2344D3E9417A6BA07843E713AEA", |
| 204 | "C79CAF4B97BEE0BD0630AB354539D653", |
| 205 | "135FD1AF761D9AE23DF4AA6B86760DB4", |
| 206 | "D4659D0B06ACD4D56AB8D11A16FD83B9", |
| 207 | "F7D270028FC188E4E4F35A4AAA25D4D4", |
| 208 | "345CAE5A8C9620A9913D5473985852FF", |
| 209 | "4E8980ADDE60B0E42C0B287FEA41E729", |
| 210 | "F11B6D74E1F15155633DC39743C1A527", |
| 211 | "9C87916C0180064F9D3179C6F5DD8C35", |
| 212 | "71AB186BCAEA518E461D4F7FAD230E6A", |
| 213 | "C4A31BBC3DAAF742F9141C2A5001A49C", |
| 214 | "E7C47B7B1D40F182A8928C8A55671D07", |
| 215 | "8E17F294B28FA373C6249538868A7EEF", |
| 216 | "754404096A5CBC08AF09491BE249141A", |
| 217 | "101CB56E55F05D86369B6D1069204F0A", |
| 218 | "73F19BB6604205C6EE227B9759791E41", |
| 219 | "6270C0028F0D136C37A56B2CB64D24D6", |
| 220 | "A3BF7C2C38D1114A087ECF212E694346", |
| 221 | "49CABFF2CEF7D9F95F5EFB1F7A1A7DDE", |
| 222 | "EC7F8A47CC59B849469255AD49F62752", |
| 223 | "68FAE55A13EFAF9B07B3552A8A0DC9D1", |
| 224 | "211E6B19C69FAEF481F64F24099CDA65", |
| 225 | "DBB918C75BC5732416F79FB0C8EE4C5C", |
| 226 | "98D494E5D963A6C8B92536D3EC35E3FD", |
| 227 | "C9A873404D403D6F074190851D67781A", |
| 228 | "073AEF4A7C77D921928CB0DD9D27CAE7", |
| 229 | "89BDE25CEE36FDE769A10E52298CF90F", |
| 230 | "26D0842D37EAD38557C65E0A5E5F122E", |
| 231 | "F8294BA375AF46B3F22905BBAFFAB107", |
| 232 | "2AD63EB4D0D43813B979CF72B35BDB94", |
| 233 | "7710C171EE0F4EFA39BE4C995180181D", |
| 234 | "C0CB2B40DBA7BE8C0698FAE1E4B80FF8", |
| 235 | "97970E505194622FD955CA1B80B784E9", |
| 236 | "7CB1824B29F850900DF2CAD9CF04C1CF", |
| 237 | "FDF4F036BB988E42F2F62DE63FE19A64", |
| 238 | "08908CFE2C82606B2C15DF61B75CF3E2", |
| 239 | "B3AA689EF2D07FF365ACB9ADBA2AF07A", |
| 240 | "F2672CD8EAA3B98776660D0263656F5C", |
| 241 | "5BDEAC00E986687B9E1D94A0DA7BF452", |
| 242 | "E6D57BD66EA1627363EE0C4B711B0B21", |
| 243 | "03730DD6ACB4AD9996A63BE7765EC06F", |
| 244 | "A470E361AA5437B2BE8586D2F78DE582", |
| 245 | "7567FEEFA559911FD479670246B484E3", |
| 246 | "29829DEA15A4E7A4C049045E7B106E29", |
| 247 | "A407834C3D89D48A2CB7A152208FA4ED", |
| 248 | "68F948053F78FEF0D8F9FE7EF3A89819", |
| 249 | "B605174CAB13AD8FE3B20DA3AE7B0234", |
| 250 | "CCAB8F0AEBFF032893996D383CBFDBFA", |
| 251 | "AF14BB8428C9730B7DC17B6C1CBEBCC8", |
| 252 | "5A41A21332040877EB7B89E8E80D19FE", |
| 253 | "AC1BA52EFCDDE368B1596F2F0AD893A0", |
| 254 | "41B890E31B9045E6ECDC1BC3F2DB9BCC", |
| 255 | "4D54A549728E55B19A23660424A0F146", |
| 256 | "A917581F41C47C7DDCFFD5285E2D6A61", |
| 257 | "604DF24BA6099B93A7405A524D764FCB", |
| 258 | "78D9D156F28B190E232D1B7AE7FC730A", |
| 259 | "5A12C39E442CD7F27B3CD77F5D029582", |
| 260 | "FF2BF2F47CF7B0F28EE25AF95DBF790D", |
| 261 | "1863BB7D193BDA39DF090659EB8AE48B", |
| 262 | "38178F2FB4CFCF31E87E1ABCDC023EB5", |
| 263 | "F5B13DC690CC0D541C6BA533023DC8C9", |
| 264 | "48EC05238D7375D126DC9D08884D4827", |
| 265 | "ACD0D81139691B310B92A6E377BACC87", |
| 266 | "9A4AA43578B55CE9CC178F0D2E162C79", |
| 267 | "08AD94BC737DB3C87D49B9E01B720D81", |
| 268 | "3BCFB2D5D210E8332900C5991D551A2A", |
| 269 | "C5F0C6B9397ACB29635CE1A0DA2D8D96", |
| 270 | "844A29EFC693E2FA9900F87FBF5DCD5F", |
| 271 | "5126A1C41051FEA158BE41200E1EA59D", |
| 272 | "302123CA7B4F46D667FFFB0EB6AA7703", |
| 273 | "A9D16BCE7DB5C024277709EE2A88D91A", |
| 274 | "F013C5EC123A26CFC34B598C992A996B", |
| 275 | "E38A825CD971A1D2E56FB1DBA248F2A8", |
| 276 | "6E701773C0311E0BD4C5A097406D22B3", |
| 277 | "754262CEF0C64BE4C3E67C35ABE439F7", |
| 278 | "C9C2D4C47DF7D55CFA0EE5F1FE5070F4", |
| 279 | "6AB4BEA85B172573D8BD2D5F4329F13D", |
| 280 | "11F03EF28E2CC9AE5165C587F7396C8C", |
| 281 | "0682F2EB1A68BAC7949922C630DD27FA", |
| 282 | "ABB0FEC0413D659AFE8E3DCF6BA873BB", |
| 283 | "FE86A32E19F805D6569B2EFADD9C92AA", |
| 284 | "E434E472275D1837D3D717F2EECC88C3", |
| 285 | "74E57DCD12A21D26EF8ADAFA5E60469A", |
| 286 | "C275429D6DAD45DDD423FA63C816A9C1", |
| 287 | "7F6EC1A9AE729E86F7744AED4B8F4F07", |
| 288 | "48B5A71AB9292BD4F9E608EF102636B2", |
| 289 | "076FB95D5F536C78CBED3181BCCF3CF1", |
| 290 | "BFA76BEA1E684FD3BF9256119EE0BC0F", |
| 291 | "7D395923D56577F3FF8670998F8C4A71", |
| 292 | "BA02C986E529AC18A882C34BA389625F", |
| 293 | "3DFCF2D882AFE75D3A191193013A84B5", |
| 294 | "FAD1FDE1D0241784B63080D2C74D236C", |
| 295 | "7D6C80D39E41F007A14FB9CD2B2C15CD", |
| 296 | "7975F401FC10637BB33EA2DB058FF6EC", |
| 297 | "657983865C55A818F02B7FCD52ED7E99", |
| 298 | "B32BEB1776F9827FF4C3AC9997E84B20", |
| 299 | "2AE2C7C374F0A41E3D46DBC3E66BB59F", |
| 300 | "4D835E4ABDD4BDC6B88316A6E931A07F", |
| 301 | "E07EFABFF1C353F7384EBB87B435A3F3", |
| 302 | "ED3088DC3FAF89AD87B4356FF1BB09C2", |
| 303 | "4324D01140C156FC898C2E32BA03FB05", |
| 304 | "BE15D016FACB5BAFBC24FA9289132166", |
| 305 | "AC9B7048EDB1ACF4D97A5B0B3F50884B", |
| 306 | "448BECE1F86C7845DFA9A4BB2A016FB3", |
| 307 | "10DD445E87686EB46EA9B1ABC49257F0", |
| 308 | "B7FCCF7659FA756D4B7303EEA6C07458", |
| 309 | "289117115CA3513BAA7640B1004872C2", |
| 310 | "57CB42F7EE7186051F50B93FFA7B35BF", |
| 311 | "F2741BFBFB81663B9136802FB9C3126A", |
| 312 | "E32DDDC5C7398C096E3BD535B31DB5CE", |
| 313 | "81D3C204E608AF9CC713EAEBCB72433F", |
| 314 | "D4DEEF4BFC36AAA579496E6935F8F98E", |
| 315 | "C356DB082B97802B038571C392C5C8F6", |
| 316 | "A3919ECD4861845F2527B77F06AC6A4E", |
| 317 | "A53858E17A2F802A20E40D44494FFDA0", |
| 318 | "5D989E122B78C758921EDBEEB827F0C0", |
| 319 | "4B1C0C8F9E7830CC3C4BE7BD226FA8DE", |
| 320 | "82C40C5FD897FBCA7B899C70713573A1", |
| 321 | "ED13EE2D45E00F75CCDB51EA8E3E36AD", |
| 322 | "F121799EEFE8432423176A3CCF6462BB", |
| 323 | "4FA0C06F07997E98271DD86F7B355C50", |
| 324 | "849EB364B4E81D058649DC5B1BF029B9", |
| 325 | "F48F9E0DE8DE7AD944A207809335D9B1", |
| 326 | "E59E9205B5A81A4FD26DFCF308966022", |
| 327 | "3A91A1BE14AAE9ED700BDF9D70018804", |
| 328 | "8ABAD78DCB79A48D79070E7DA89664EC", |
| 329 | "B68377D98AAE6044938A7457F6C649D9", |
| 330 | "E4E1275C42F5F1B63D662C099D6CE33D", |
| 331 | "7DEF32A34C6BE668F17DA1BB193B06EF", |
| 332 | "78B6000CC3D30CB3A74B68D0EDBD2B53", |
| 333 | "0A47531DE88DD8AE5C23EAE4F7D1F2D5", |
| 334 | "667B24E8000CF68231EC484581D922E5", |
| 335 | "39DAA5EBD4AACAE130E9C33236C52024", |
| 336 | "E3C88760B3CB21360668A63E55BB45D1", |
| 337 | "F131EE903C1CDB49D416866FD5D8DE51", |
| 338 | "7A1916135B0447CF4033FC13047A583A", |
| 339 | "F7D55FB27991143DCDFA90DDF0424FCB", |
| 340 | "EA93E7D1CA1111DBD8F7EC111A848C0C", |
| 341 | "2A689E39DFD3CBCBE221326E95888779", |
| 342 | "C1CE399CA762318AC2C40D1928B4C57D", |
| 343 | "D43FB6F2B2879C8BFAF0092DA2CA63ED", |
| 344 | "224563E617158DF97650AF5D130E78A5", |
| 345 | "6562FDF6833B7C4F7484AE6EBCC243DD", |
| 346 | "93D58BA7BED22615D661D002885A7457", |
| 347 | "9A0EF559003AD9E52D3E09ED3C1D3320", |
| 348 | "96BAF5A7DC6F3DD27EB4C717A85D261C", |
| 349 | "B8762E06884900E8452293190E19CCDB", |
| 350 | "785416A22BD63CBABF4B1789355197D3", |
| 351 | "A0D20CE1489BAA69A3612DCE90F7ABF6", |
| 352 | "700244E93DC94230CC607FFBA0E48F32", |
| 353 | "85329E476829F872A2B4A7E59F91FF2D", |
| 354 | "E4219B4935D988DB719B8B8B2B53D247", |
| 355 | "6ACDD04FD13D4DB4409FE8DD13FD737B", |
| 356 | "9EB7A670AB59E15BE582378701C1EC14", |
| 357 | "29DF2D6935FE657763BC7A9F22D3D492", |
| 358 | "99303359D4A13AFDBE6C784028CE533A", |
| 359 | "FF5C70A6334545F33B9DBF7BEA0417CA", |
| 360 | "289F58A17E4C50EDA4269EFB3DF55815", |
| 361 | "EA35DCB416E9E1C2861D1682F062B5EB", |
| 362 | "3A47BF354BE775383C50B0C0A83E3A58", |
| 363 | "BF6C1DC069FB95D05D43B01D8206D66B", |
| 364 | "046D1D580D5898DA6595F32FD1F0C33D", |
| 365 | "5F57803B7B82A110F7E9855D6A546082", |
| 366 | "25336ECF34E7BE97862CDFF715FF05A8", |
| 367 | "ACBAA2A943D8078022D693890E8C4FEF", |
| 368 | "3947597879F6B58E4E2F0DF825A83A38", |
| 369 | "4EB8CC3335496130655BF3CA570A4FC0", |
| 370 | "BBDA7769AD1FDA425E18332D97868824", |
| 371 | "5E7532D22DDB0829A29C868198397154", |
| 372 | "E66DA67B630AB7AE3E682855E1A1698E", |
| 373 | "4D93800F671B48559A64D1EA030A590A", |
| 374 | "F33159FCC7D9AE30C062CD3B322AC764", |
| 375 | "8BAE4EFB70D33A9792EEA9BE70889D72" |
| 376 | }, |
| 377 | // Cipher Texts for 256-bit key |
| 378 | { |
| 379 | "E35A6DCB19B201A01EBCFA8AA22B5759", |
| 380 | "5075C2405B76F22F553488CAE47CE90B", |
| 381 | "49DF95D844A0145A7DE01C91793302D3", |
| 382 | "E7396D778E940B8418A86120E5F421FE", |
| 383 | "05F535C36FCEDE4657BE37F4087DB1EF", |
| 384 | "D0C1DDDD10DA777C68AB36AF51F2C204", |
| 385 | "1C55FB811B5C6464C4E5DE1535A75514", |
| 386 | "52917F3AE957D5230D3A2AF57C7B5A71", |
| 387 | "C6E3D5501752DD5E9AEF086D6B45D705", |
| 388 | "A24A9C7AF1D9B1E17E1C9A3E711B3FA7", |
| 389 | "B881ECA724A6D43DBC6B96F6F59A0D20", |
| 390 | "EC524D9A24DFFF2A9639879B83B8E137", |
| 391 | "34C4F345F5466215A037F443635D6F75", |
| 392 | "5BA5055BEDB8895F672E29F2EB5A355D", |
| 393 | "B3F692AA3A435259EBBEF9B51AD1E08D", |
| 394 | "414FEB4376F2C64A5D2FBB2ED531BA7D", |
| 395 | "A20D519E3BCA3303F07E81719F61605E", |
| 396 | "A08D10E520AF811F45BD60A2DC0DC4B1", |
| 397 | "B06893A8C563C430E6F3858826EFBBE4", |
| 398 | "0FFEE26AE2D3929C6BD9C6BEDFF84409", |
| 399 | "4D0F5E906ED77801FC0EF53EDC5F9E2B", |
| 400 | "8B6EC00119AD8B026DCE56EA7DEFE930", |
| 401 | "69026591D43363EE9D83B5007F0B484E", |
| 402 | "27135D86950C6A2F86872706279A4761", |
| 403 | "35E6DB8723F281DA410C3AC8535ED77C", |
| 404 | "57427CF214B8C28E4BBF487CCB8D0E09", |
| 405 | "6DF01BF56E5131AC87F96E99CAB86367", |
| 406 | "3856C5B55790B768BBF7D43031579BCF", |
| 407 | "1E6ED8FB7C15BC4D2F63BA7037ED44D0", |
| 408 | "E1B2ED6CD8D93D455534E401156D4BCF", |
| 409 | "EFBCCA5BDFDAD10E875F02336212CE36", |
| 410 | "0B777F02FD18DCE2646DCFE868DFAFAD", |
| 411 | "C8A104B5693D1B14F5BF1F10100BF508", |
| 412 | "4CCE6615244AFCB38408FECE219962EA", |
| 413 | "F99E7845D3A255B394C9C050CBA258B1", |
| 414 | "B4AFBB787F9BCFB7B55FDF447F611295", |
| 415 | "AE1C426A697FAF2808B7EF6ADDB5C020", |
| 416 | "7572F92811A85B9BDD38DEAD9945BCAE", |
| 417 | "71BC7AA46E43FB95A181527D9F6A360F", |
| 418 | "5542EF2923066F1EC8F546DD0D8E7CA8", |
| 419 | "6B92317C7D623790B748FDD7EFC42422", |
| 420 | "0FE7C097E899C71EF045360F8D6C25CF", |
| 421 | "4ECE7EE107D0264D04693151C25B9DF6", |
| 422 | "FD6AE687CBFCA9E301045888D3BB9605", |
| 423 | "476B579C8556C7254424902CC1D6D36E", |
| 424 | "4133CBCDFDD6B8860A1FC18665D6D71B", |
| 425 | "3B36EC2664798C108B816812C65DFDC7", |
| 426 | "364E20A234FEA385D48DC5A09C9E70CF", |
| 427 | "4A4BA25969DE3F5EE5642C71AAD0EFD1", |
| 428 | "E42CBAAE43297F67A76C1C501BB79E36", |
| 429 | "23CEDEDA4C15B4C037E8C61492217937", |
| 430 | "A1719147A1F4A1A1180BD16E8593DCDE", |
| 431 | "AB82337E9FB0EC60D1F25A1D0014192C", |
| 432 | "74BF2D8FC5A8388DF1A3A4D7D33FC164", |
| 433 | "D5B493317E6FBC6FFFD664B3C491368A", |
| 434 | "BA767381586DA56A2A8D503D5F7ADA0B", |
| 435 | "E8E6BC57DFE9CCADB0DECABF4E5CF91F", |
| 436 | "3C8E5A5CDC9CEED90815D1F84BB2998C", |
| 437 | "283843020BA38F056001B2FD585F7CC9", |
| 438 | "D8ADC7426F623ECE8741A70621D28870", |
| 439 | "D7C5C215592D06F00E6A80DA69A28EA9", |
| 440 | "52CF6FA433C3C870CAC70190358F7F16", |
| 441 | "F63D442A584DA71786ADEC9F3346DF75", |
| 442 | "549078F4B0CA7079B45F9A5ADAFAFD99", |
| 443 | "F2A5986EE4E9984BE2BAFB79EA8152FA", |
| 444 | "8A74535017B4DB2776668A1FAE64384C", |
| 445 | "E613342F57A97FD95DC088711A5D0ECD", |
| 446 | "3FFAEBF6B22CF1DC82AE17CD48175B01", |
| 447 | "BAFD52EFA15C248CCBF9757735E6B1CE", |
| 448 | "7AF94BC018D9DDD4539D2DD1C6F4000F", |
| 449 | "FE177AD61CA0FDB281086FBA8FE76803", |
| 450 | "74DBEA15E2E9285BAD163D7D534251B6", |
| 451 | "23DD21331B3A92F200FE56FF050FFE74", |
| 452 | "A69C5AA34AB20A858CAFA766EACED6D8", |
| 453 | "3F72BB4DF2A4F941A4A09CB78F04B97A", |
| 454 | "72CC43577E1FD5FD14622D24D97FCDCC", |
| 455 | "D83AF8EBE93E0B6B99CAFADE224937D1", |
| 456 | "44042329128D56CAA8D084C8BD769D1E", |
| 457 | "14102D72290DE4F2C430ADD1ED64BA1D", |
| 458 | "449124097B1ECD0AE7065206DF06F03C", |
| 459 | "D060A99F8CC153A42E11E5F97BD7584A", |
| 460 | "65605B3EA9261488D53E48602ADEA299", |
| 461 | "C5E5CAD7A208DE8EA6BE049EFE5C7346", |
| 462 | "4C280C46D2181646048DD5BC0C0831A5", |
| 463 | "5DD65CF37F2A0929559AABAFDA08E730", |
| 464 | "31F2335CAAF264172F69A693225E6D22", |
| 465 | "3E28B35F99A72662590DA96426DD377F", |
| 466 | "570F40F5D7B20441486578ED344343BE", |
| 467 | "C54308AD1C9E3B19F8B7417873045A8C", |
| 468 | "CBF335E39CE13ADE2B696179E8FD0CE1", |
| 469 | "9C2FBF422355D8293083D51F4A3C18A9", |
| 470 | "5ED8B5A31ECEFAB16C9AA6986DA67BCE", |
| 471 | "627815DCFC814ABC75900041B1DD7B59", |
| 472 | "9EF3E82A50A59F166260494F7A7F2CC3", |
| 473 | "878CD0D8D920888B5935D6C351128737", |
| 474 | "E44429474D6FC3084EB2A6B8B46AF754", |
| 475 | "EBAACF9641D54E1FB18D0A2BE4F19BE5", |
| 476 | "13B3BF497CEE780E123C7E193DEA3A01", |
| 477 | "6E8F381DE00A41161F0DF03B4155BFD4", |
| 478 | "35E4F29BBA2BAE01144910783C3FEF49", |
| 479 | "55B17BD66788CEAC366398A31F289FFB", |
| 480 | "11341F56C0D6D1008D28741DAA7679CE", |
| 481 | "4DF7253DF421D83358BDBE924745D98C", |
| 482 | "BAE2EE651116D93EDC8E83B5F3347BE1", |
| 483 | "F9721ABD06709157183AF3965A659D9D", |
| 484 | "19A1C252A613FE2860A4AE6D75CE6FA3", |
| 485 | "B5DDB2F5D9752C949FBDE3FFF5556C6E", |
| 486 | "81B044FCFFC78ECCFCD171AAD0405C66", |
| 487 | "C640566D3C06020EB2C42F1D62E56A9B", |
| 488 | "EA6C4BCF425291679FDFFD26A424FBCC", |
| 489 | "57F6901465D9440D9F15EE2CBA5A4090", |
| 490 | "FBCFA74CADC7406260F63D96C8AAB6B1", |
| 491 | "DFF4F096CEA211D4BBDACA033D0EC7D1", |
| 492 | "1EE5190D551F0F42F675227A381296A9", |
| 493 | "F98E1905012E580F097623C10B93054F", |
| 494 | "E7D43743D21DD3C9F168C86856558B9A", |
| 495 | "632A9DDA730DAB67593C5D08D8AC1059", |
| 496 | "E084317000715B9057BC9DE9F3AB6124", |
| 497 | "61F9EF33A0BB4E666C2ED99101919FAB", |
| 498 | "6DC1D68A11834657D46703C22578D59A", |
| 499 | "53AC1548863D3D16F1D4DC7242E05F2C", |
| 500 | "E82CD587A408306AD78CEAE0916B9F8C", |
| 501 | "0FD2D40EA6AD17A3A767F0A8600D6295", |
| 502 | "AD84CC8255ADB39DFCA23F92761AE7E9", |
| 503 | "F4F20CF7D51BEE7DA024A2B11A7ECA0B", |
| 504 | "5057691B85D9CE93A193214DB0A016B6", |
| 505 | "0F58C960876390BDEF4BB6BE95CAA1EE", |
| 506 | "9A3E66EEBC21BC0BD9430B341EF465FA", |
| 507 | "20415035F34B8BCBCB28ABF07F78F0D4", |
| 508 | "AC89FC7BA10479EBF10DE65BCEF89B3C", |
| 509 | "068FA75A30BE443171AF3F6FEB1A20D2", |
| 510 | "50E02F213246C525A8C27700CA34B502", |
| 511 | "227DA47D5A0906DB3AB042BB0A695FB6", |
| 512 | "8663AC30ED12514F1DE46777F4514BFC", |
| 513 | "A987D4BC12E1DE9F4B6DF43567C34A8B", |
| 514 | "6D5A0370F599ACA605F63B04E5143D0C", |
| 515 | "9809266E378B07B7AFDB3BAA97B7E442", |
| 516 | "8F753252B30CCCACE12D9A301F4D5090", |
| 517 | "032465F6C0CE34D41962F561692A1AFF", |
| 518 | "C50E9AD5BEB8F3B00821DD47FF8AC093", |
| 519 | "9C6FEA3D46268D54A6829B2AD25BB276", |
| 520 | "0FD8575E87706F561343D7B3A41E044A", |
| 521 | "BEE9BEB3739540D88CBCE77925F0A114", |
| 522 | "D24EAEE7FFFBAC3D6F26C2DCE0DCDE28", |
| 523 | "47771A90398FF0F7FA821C2F8F5E1398", |
| 524 | "4639741B6F84B135AD118C8249B64ED0", |
| 525 | "8EE5505EC85567697A3306F250A27720", |
| 526 | "7C8A19AC1AEFBC5E0119D91A5F05D4C2", |
| 527 | "5141B9B672E54773B672E3A6C424887B", |
| 528 | "B5A2D3CD206653C6402F34FB0AE3613D", |
| 529 | "0F5BD9408738231D114B0A82753279A3", |
| 530 | "FEF033FF4268EA487FC74C5E43A45338", |
| 531 | "A3EDC09DCD529B113910D904AD855581", |
| 532 | "AB8FBB6F27A0AC7C55B59FDD36B72F1C", |
| 533 | "EEA44D5ED4D769CC930CD83D8999EC46", |
| 534 | "6972276803AE9AA7C6F431AB10979C34", |
| 535 | "86DEAA9F39244101818178474D7DBDE9", |
| 536 | "88C6B466EA361D662D8D08CBF181F4FE", |
| 537 | "91AB2C6B7C63FF59F7CBEEBF91B20B95", |
| 538 | "2DFE6C146AD5B3D8C3C1718F13B48E01", |
| 539 | "C7CFF1623451711391A302EEC3584AAA", |
| 540 | "089FE845CC05011686C66019D18BE050", |
| 541 | "08C8410B9B427211A67124B0DCCEAD48", |
| 542 | "8D91592F5566085254784606334D7629", |
| 543 | "3298FEAAF2E1201D6299FF8846639C97", |
| 544 | "C497CB9F0BDFE0EFC8C2F3F90760AA72", |
| 545 | "2788AFD046E0309CBE4424690DA2AB89", |
| 546 | "E9891707F25EF29FEE372890D4258982", |
| 547 | "DB041D94A23D45D4D4DCED5A030CAF61", |
| 548 | "FFAFDBF0ECB18DF9EA02C27077448E6D", |
| 549 | "2DAAA42A7D0A1D3B0E4761D99CF2150A", |
| 550 | "3B7A54CB7CF30ABE263DD6ED5BFE8D63", |
| 551 | "EEFA090174C590C448A55D43648F534A", |
| 552 | "9E15798731ED42F43EA2740A691DA872", |
| 553 | "31FBD661540A5DEAAD1017CFD3909EC8", |
| 554 | "CDA9AE05F224140E28CB951721B44D6A", |
| 555 | "0C5BC512C60A1EAC3434EFB1A8FBB182", |
| 556 | "AA863610DEEEEB62D045E87EA30B59B5", |
| 557 | "6AC2448DE568D279C7EEBE1DF403920C", |
| 558 | "E2011E3D292B26888AE801215FD0CB40", |
| 559 | "E06F3E15EE3A61672D1C99BADE5B9DBE", |
| 560 | "BB7027F0548CF6712CEB4C7A4B28E178", |
| 561 | "061EC21FB70FADBDF87C3BD2AE23825B", |
| 562 | "4C21F26FE94ABBAC381352375314C3EB", |
| 563 | "F7CEE6DD99909C2B569EEDA61ED8942E", |
| 564 | "CE98C4A876C65E4CCB261EBB1D9DF7F5", |
| 565 | "A5491881CF833C3604ABC08044F402AC", |
| 566 | "A1BA16E64CCCB3087D57A768507B0BFC", |
| 567 | "D55951E202D2949EBD3BE43120C738BF", |
| 568 | "EBB8E43069E69F450EFEC65DCD52B7FD", |
| 569 | "2B292135663B4AA5ABFE9423D57E7EE9", |
| 570 | "E91BF974B3BE3AD966249D8655292A85", |
| 571 | "384365998EAA9562236CC58F6ADF9610", |
| 572 | "C2E997012AA3D4D8D359C9A947CBE69F", |
| 573 | "F49421204148BA213BE87E2D5C22B0BF", |
| 574 | "82ED0ED9953AA92E4DF30929CA65C00F", |
| 575 | "291EB1D11653C8479437C74A977F5106", |
| 576 | "BCB997B1939B8983ABD550D6025683E3", |
| 577 | "1FBA2592C6F489775CAADA71F9B983E9", |
| 578 | "969F66F217AF1A3DB9E41C1B29039824", |
| 579 | "A54BB7D6B17E423AC0A7744C19073CB8", |
| 580 | "B0AC6E6578D1021F47DCF9748A32EAD5", |
| 581 | "B87B361C3B7B194C77A4358D4669153E", |
| 582 | "46A133847F96EAA8282A799DC8899D58", |
| 583 | "2265EC3A9F2D5C9547A091CC8CFB18EA", |
| 584 | "54CBF3A6FC4FE56D426117AA1FFD1DDE", |
| 585 | "5312877CCEAB6CFB0905394A370A8003", |
| 586 | "7190BD6EC613FE38B84ECFE28F702FE4", |
| 587 | "D1FA5B9CA89A43B04C05F0EF29EF68CD", |
| 588 | "808285751548ED934FD1056D2D9AE8BA", |
| 589 | "2758DEF3E7B95A9AE89777BE64D5A6CF", |
| 590 | "07D81F87DB3E0ACC82B01E08FB22F3C1", |
| 591 | "8DA250E5553D650711A75EE1CB4FD1C7", |
| 592 | "A93D946BD0E87F32719DF5F158CEE669", |
| 593 | "03945236EC2A4D4EAF30B8ABEB54330D", |
| 594 | "11CC35301F24B79DDE31AEA2D1354F88", |
| 595 | "E73715B3E8D9A290F44AE6FFBF247E5D", |
| 596 | "7345E07732B71CB158BBF64CCA5C5B96", |
| 597 | "6E128F296D24705A1924FD9B70C4ED04", |
| 598 | "95A789776F036783FBD330947083F54F", |
| 599 | "360DEC2533EA4AA2E3E54FD3DE2906EB", |
| 600 | "E68EFD7FECF4D601EA22727BD764965B", |
| 601 | "9065C64A8BFF44AC33EDBB611CF83D7B", |
| 602 | "8F33C8DF2A7A51CE8090E8F123BC3723", |
| 603 | "807F391FFBA8291BA625623210F99018", |
| 604 | "5E8B3F3A701522CE5CAA761C929D6292", |
| 605 | "3BA404DC38735A78289E3809E8364835", |
| 606 | "D23BEDBAD229F8305DC425B6B759DCC9", |
| 607 | "44880F21CF5913040AE376AEE2A10AD8", |
| 608 | "9BC98E29D057C0E828C3B5CCE69256C1", |
| 609 | "B293CC7A975DA141A68279368057CC41", |
| 610 | "8D60FB87ACD91385B313BE5F1D7BD30F", |
| 611 | "2C8E56132D70291B303C48FDF75543CD", |
| 612 | "D1F80035B826791F6CE4E59B7DB1BB0D", |
| 613 | "42CE6224FC36469339A133DD08173BD4", |
| 614 | "61817155EA41BCBA2AF7F06AE7CBF585", |
| 615 | "D1923A9866068D2EF5FB77D57C3315B6", |
| 616 | "B37CBDB5D719F49691CA968EF2E84140", |
| 617 | "EC974E653A055D7F8F22171030F68E1D", |
| 618 | "DDE5D3B9AAD9C32213BB3675A822499C", |
| 619 | "D3B6E9216EA1AE57EB1C628A3C38AB78", |
| 620 | "82C99ECC69472B7E96324B042AE8B87A", |
| 621 | "97144DC5338C43600F84439C0AA0D147", |
| 622 | "400AC4A0BBADA1DB2121EB144C7E5209", |
| 623 | "EFD9D550EB419ED278F4885A490AB54C", |
| 624 | "2AB7816E149B7C0404C88A8857793670", |
| 625 | "5B591DFF9E8DEE15BAD24C025DBCA481", |
| 626 | "0C06633E30721C3749F49AD8CBF2B754", |
| 627 | "96D6D31A41B5123B2035FD91A921D4CA", |
| 628 | "E7F6C34D86668BC2805CA7793C5E86AD", |
| 629 | "F46DFF5FF500D6879C4D3E45CF0CF0F3", |
| 630 | "60D842D9C61DA7495C116197B7CECBBE", |
| 631 | "D45B24EDB673353EBDF248B8FA06B67A", |
| 632 | "119EAEBCC165D0BD02C0D35DC82EF992", |
| 633 | "E673143680414ADA301D0ED34626B9FE", |
| 634 | "6B6CFE160A6263631B292F879EEFF926" |
| 635 | } |
| 636 | }; |
| 637 | |
| 638 | private static int[] KEY_SIZES = { |
| 639 | 16, 24, 32 |
| 640 | }; |
| 641 | |
| 642 | /** |
| 643 | * Constructs an AES Key according to the specified key size and |
| 644 | * round number. |
| 645 | * @param len key size in bytes, i.e. 16, 24, or 32 |
| 646 | * @param rounds round number starting from 0, i.e. valid from 0 to len-1. |
| 647 | */ |
| 648 | private static SecretKey constructAESKey(int len, int rounds) |
| 649 | throws IllegalArgumentException { |
| 650 | if ((len != 16) && (len != 24) && (len != 32)) { |
| 651 | throw new IllegalArgumentException("Wrong Key Length: " + len); |
| 652 | } |
| 653 | byte[] rawKeyValue = constructKeyValue(len, rounds); |
| 654 | SecretKeySpec key = new SecretKeySpec(rawKeyValue, "AES"); |
| 655 | return key; |
| 656 | } |
| 657 | |
| 658 | private static byte[] constructKeyValue(int keysize, int rounds) { |
| 659 | byte[] tempKeyValue = new byte[keysize]; |
| 660 | Arrays.fill(tempKeyValue, (byte)0); |
| 661 | |
| 662 | int whichByte = rounds/8; |
| 663 | int whichDigit = rounds % 8; |
| 664 | if ((whichByte >= keysize) || (whichDigit < 0) || |
| 665 | (whichDigit > 8)) { |
| 666 | throw new IllegalArgumentException("Invalid keysize/rounds " + |
| 667 | "combination :" + keysize + |
| 668 | "/" + rounds); |
| 669 | } |
| 670 | switch (whichDigit) { |
| 671 | case 0: |
| 672 | tempKeyValue[whichByte] = (byte)0x80; |
| 673 | break; |
| 674 | case 1: |
| 675 | tempKeyValue[whichByte] = (byte)0x40; |
| 676 | break; |
| 677 | case 2: |
| 678 | tempKeyValue[whichByte] = (byte)0x20; |
| 679 | break; |
| 680 | case 3: |
| 681 | tempKeyValue[whichByte] = (byte)0x10; |
| 682 | break; |
| 683 | case 4: |
| 684 | tempKeyValue[whichByte] = (byte)0x08; |
| 685 | break; |
| 686 | case 5: |
| 687 | tempKeyValue[whichByte] = (byte)0x04; |
| 688 | break; |
| 689 | case 6: |
| 690 | tempKeyValue[whichByte] = (byte)0x02; |
| 691 | break; |
| 692 | case 7: |
| 693 | tempKeyValue[whichByte] = (byte)0x01; |
| 694 | break; |
| 695 | } |
| 696 | return tempKeyValue; |
| 697 | } |
| 698 | |
| 699 | private static byte[] constructByteArray(String s) { |
| 700 | int len = s.length()/2; |
| 701 | byte[] tempValue = new byte[len]; |
| 702 | for (int i = 0; i < len; i++) { |
| 703 | tempValue[i] = Integer.valueOf(s.substring(2*i, 2*i+2), |
| 704 | 16).byteValue(); |
| 705 | } |
| 706 | return tempValue; |
| 707 | } |
| 708 | |
| 709 | public boolean execute() throws Exception { |
| 710 | String transformation = ALGO+"/"+MODE+"/"+PADDING; |
| 711 | Cipher c = Cipher.getInstance(transformation, "SunJCE"); |
| 712 | |
| 713 | for (int i=0; i<KEY_SIZES.length; i++) { |
| 714 | if (KEY_SIZES[i]*8 > |
| 715 | Cipher.getMaxAllowedKeyLength(transformation)) { |
| 716 | // skip if this key length is larger than what's |
| 717 | // configured in the jce jurisdiction policy files |
| 718 | continue; |
| 719 | } |
| 720 | int rounds = KEY_SIZES[i] * 8; |
| 721 | byte[] plainText = PT; |
| 722 | byte[] cipherText = null; |
| 723 | try { |
| 724 | for (int j=0; j < rounds; j++) { |
| 725 | SecretKey aesKey = constructAESKey(KEY_SIZES[i], j); |
| 726 | c.init(Cipher.ENCRYPT_MODE, aesKey); |
| 727 | cipherText = c.doFinal(plainText); |
| 728 | byte[] answer = constructByteArray(CTS[i][j]); |
| 729 | if (!Arrays.equals(cipherText, answer)) { |
| 730 | throw new Exception((i+1) + "th known answer test failed for encryption"); |
| 731 | } |
| 732 | c.init(Cipher.DECRYPT_MODE, aesKey); |
| 733 | byte[] restored = c.doFinal(cipherText); |
| 734 | if (!Arrays.equals(plainText, restored)) { |
| 735 | throw new Exception((i+1) + "th known answer test failed for decryption"); |
| 736 | } |
| 737 | } |
| 738 | System.out.println("Finished KAT for " + KEY_SIZES[i] + "-byte key"); |
| 739 | } catch (SecurityException se) { |
| 740 | TestUtil.handleSE(se); |
| 741 | } |
| 742 | } |
| 743 | |
| 744 | // passed all tests...hooray! |
| 745 | return true; |
| 746 | } |
| 747 | |
| 748 | public static void main (String[] args) throws Exception { |
| 749 | Security.addProvider(new com.sun.crypto.provider.SunJCE()); |
| 750 | |
| 751 | TestKATForECB_VK test = new TestKATForECB_VK(); |
| 752 | String testName = test.getClass().getName() + "[" + ALGO + |
| 753 | "/" + MODE + "/" + PADDING + "]"; |
| 754 | if (test.execute()) { |
| 755 | System.out.println(testName + ": Passed!"); |
| 756 | } |
| 757 | } |
| 758 | } |