From 66c008e2259188352d8e6ae9a7c842928aa3de6e Mon Sep 17 00:00:00 2001 From: Apress Date: Tue, 11 Oct 2016 06:49:51 +0100 Subject: [PATCH] First commit --- 2154.pdf | Bin 0 -> 90285 bytes 9781590595022.jpg | Bin 0 -> 10018 bytes LICENSE.txt | 27 + README.md | 15 + contributing.md | 14 + flint/lib/dll/dllmain.c | 32 + flint/lib/dll/flint.def | 178 + flint/lib/dll/flint.dll | Bin 0 -> 94208 bytes flint/lib/dll/flint.lib | Bin 0 -> 29628 bytes flint/lib/dll/makedll.bat | 16 + flint/lib/flinta.lib | Bin 0 -> 4129 bytes flint/lib/flintavc.lib | Bin 0 -> 4082 bytes flint/lib/libflint.a | Bin 0 -> 8036 bytes flint/rsa/Makefile | 94 + flint/rsa/Makefile.asm | 99 + flint/rsa/rsademo.cpp | 246 ++ flint/rsa/rsakey.cpp | 683 +++ flint/rsa/rsakey.h | 142 + flint/src/_assert.h | 7 + flint/src/aes.c | 3102 ++++++++++++++ flint/src/aes.h | 248 ++ flint/src/asm/cygwin/div.s | 607 +++ flint/src/asm/cygwin/mult.s | 273 ++ flint/src/asm/cygwin/sqr.s | 311 ++ flint/src/asm/cygwin/umul.s | 235 + flint/src/asm/div.asm | 600 +++ flint/src/asm/linux/div.s | 607 +++ flint/src/asm/linux/mult.s | 273 ++ flint/src/asm/linux/sqr.s | 311 ++ flint/src/asm/linux/umul.s | 235 + flint/src/asm/mult.asm | 274 ++ flint/src/asm/sqr.asm | 304 ++ flint/src/asm/umul.asm | 233 + flint/src/entropy.c | 309 ++ flint/src/entropy.h | 71 + flint/src/flint.c | 7150 +++++++++++++++++++++++++++++++ flint/src/flint.h | 704 +++ flint/src/flintpp.cpp | 3399 +++++++++++++++ flint/src/flintpp.h | 715 ++++ flint/src/kmul.c | 381 ++ flint/src/kmul.h | 111 + flint/src/random.c | 1182 +++++ flint/src/random.h | 292 ++ flint/src/randompp.cpp | 555 +++ flint/src/ripemd.c | 867 ++++ flint/src/ripemd.h | 157 + flint/src/sha1.c | 555 +++ flint/src/sha1.h | 128 + flint/src/sha256.c | 802 ++++ flint/src/sha256.h | 157 + flint/test/Makefile | 193 + flint/test/Makefile.asm | 191 + flint/test/testadd.c | 398 ++ flint/test/testaes.c | 832 ++++ flint/test/testari.cpp | 563 +++ flint/test/testbas.c | 1213 ++++++ flint/test/testbbs.c | 202 + flint/test/testbool.c | 343 ++ flint/test/testchin.cpp | 217 + flint/test/testcnst.cpp | 785 ++++ flint/test/testdiv.c | 733 ++++ flint/test/testdll.bat | 238 + flint/test/testgcc.bat | 243 ++ flint/test/testgcca.bat | 246 ++ flint/test/testgcd.c | 338 ++ flint/test/testiroo.c | 311 ++ flint/test/testkar.c | 463 ++ flint/test/testmadd.c | 354 ++ flint/test/testmexp.c | 1326 ++++++ flint/test/testmmul.c | 536 +++ flint/test/testmsqr.c | 416 ++ flint/test/testmsub.c | 375 ++ flint/test/testmul.c | 521 +++ flint/test/testprrt.cpp | 368 ++ flint/test/testrand.c | 197 + flint/test/testrandk2.c | 851 ++++ flint/test/testreg.c | 203 + flint/test/testripe.c | 294 ++ flint/test/testroot.cpp | 487 +++ flint/test/testset.c | 298 ++ flint/test/testsha1.c | 127 + flint/test/testsha256.c | 157 + flint/test/testshft.c | 342 ++ flint/test/testsqr.c | 295 ++ flint/test/testsub.c | 416 ++ flint/test/testvals/cbcmd44.txt | 2010 +++++++++ flint/test/testvals/cbcmd46.txt | 2010 +++++++++ flint/test/testvals/cbcmd48.txt | 2010 +++++++++ flint/test/testvals/cbcmd64.txt | 2010 +++++++++ flint/test/testvals/cbcmd66.txt | 2010 +++++++++ flint/test/testvals/cbcmd68.txt | 2010 +++++++++ flint/test/testvals/cbcmd84.txt | 2010 +++++++++ flint/test/testvals/cbcmd86.txt | 2010 +++++++++ flint/test/testvals/cbcmd88.txt | 2010 +++++++++ flint/test/testvals/cbcme44.txt | 2010 +++++++++ flint/test/testvals/cbcme46.txt | 2010 +++++++++ flint/test/testvals/cbcme48.txt | 2010 +++++++++ flint/test/testvals/cbcme64.txt | 2010 +++++++++ flint/test/testvals/cbcme66.txt | 2010 +++++++++ flint/test/testvals/cbcme68.txt | 2010 +++++++++ flint/test/testvals/cbcme84.txt | 2010 +++++++++ flint/test/testvals/cbcme86.txt | 2010 +++++++++ flint/test/testvals/cbcme88.txt | 2010 +++++++++ flint/test/testvals/ecbmd44.txt | 1610 +++++++ flint/test/testvals/ecbmd46.txt | 1610 +++++++ flint/test/testvals/ecbmd48.txt | 1610 +++++++ flint/test/testvals/ecbmd64.txt | 1610 +++++++ flint/test/testvals/ecbmd66.txt | 1610 +++++++ flint/test/testvals/ecbmd68.txt | 1610 +++++++ flint/test/testvals/ecbmd84.txt | 1610 +++++++ flint/test/testvals/ecbmd86.txt | 1610 +++++++ flint/test/testvals/ecbmd88.txt | 1610 +++++++ flint/test/testvals/ecbme44.txt | 1610 +++++++ flint/test/testvals/ecbme46.txt | 1610 +++++++ flint/test/testvals/ecbme48.txt | 1610 +++++++ flint/test/testvals/ecbme64.txt | 1610 +++++++ flint/test/testvals/ecbme66.txt | 1610 +++++++ flint/test/testvals/ecbme68.txt | 1610 +++++++ flint/test/testvals/ecbme84.txt | 1610 +++++++ flint/test/testvals/ecbme86.txt | 1610 +++++++ flint/test/testvals/ecbme88.txt | 1610 +++++++ flint/test/testvals/ecbnk44.txt | 779 ++++ flint/test/testvals/ecbnk46.txt | 1163 +++++ flint/test/testvals/ecbnk48.txt | 1547 +++++++ flint/test/testvals/ecbnk64.txt | 779 ++++ flint/test/testvals/ecbnk66.txt | 1163 +++++ flint/test/testvals/ecbnk68.txt | 1547 +++++++ flint/test/testvals/ecbnk84.txt | 779 ++++ flint/test/testvals/ecbnk86.txt | 1163 +++++ flint/test/testvals/ecbnk88.txt | 1547 +++++++ flint/test/testvals/ecbnt44.txt | 779 ++++ flint/test/testvals/ecbnt46.txt | 779 ++++ flint/test/testvals/ecbnt48.txt | 779 ++++ flint/test/testvals/ecbnt64.txt | 1163 +++++ flint/test/testvals/ecbnt66.txt | 1163 +++++ flint/test/testvals/ecbnt68.txt | 1163 +++++ flint/test/testvals/ecbnt84.txt | 1547 +++++++ flint/test/testvals/ecbnt86.txt | 1547 +++++++ flint/test/testvals/ecbnt88.txt | 1547 +++++++ flint/test/testvals/ecbvk44.txt | 398 ++ flint/test/testvals/ecbvk46.txt | 590 +++ flint/test/testvals/ecbvk48.txt | 782 ++++ flint/test/testvals/ecbvk64.txt | 398 ++ flint/test/testvals/ecbvk66.txt | 590 +++ flint/test/testvals/ecbvk68.txt | 782 ++++ flint/test/testvals/ecbvk84.txt | 398 ++ flint/test/testvals/ecbvk86.txt | 590 +++ flint/test/testvals/ecbvk88.txt | 782 ++++ flint/test/testvals/ecbvt44.txt | 398 ++ flint/test/testvals/ecbvt46.txt | 398 ++ flint/test/testvals/ecbvt48.txt | 398 ++ flint/test/testvals/ecbvt64.txt | 590 +++ flint/test/testvals/ecbvt66.txt | 590 +++ flint/test/testvals/ecbvt68.txt | 590 +++ flint/test/testvals/ecbvt84.txt | 782 ++++ flint/test/testvals/ecbvt86.txt | 782 ++++ flint/test/testvals/ecbvt88.txt | 782 ++++ flint/test/testvals/test1.bin | Bin 0 -> 153533 bytes flint/test/testvals/test2.bin | Bin 0 -> 255477 bytes flint/test/testvals/test3.bin | Bin 0 -> 869492 bytes flint/test/testvc.bat | 243 ++ flint/test/testvca.bat | 242 ++ flint/test/testxgcd.cpp | 178 + 163 files changed, 139150 insertions(+) create mode 100644 2154.pdf create mode 100644 9781590595022.jpg create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 contributing.md create mode 100644 flint/lib/dll/dllmain.c create mode 100644 flint/lib/dll/flint.def create mode 100644 flint/lib/dll/flint.dll create mode 100644 flint/lib/dll/flint.lib create mode 100644 flint/lib/dll/makedll.bat create mode 100644 flint/lib/flinta.lib create mode 100644 flint/lib/flintavc.lib create mode 100644 flint/lib/libflint.a create mode 100644 flint/rsa/Makefile create mode 100644 flint/rsa/Makefile.asm create mode 100644 flint/rsa/rsademo.cpp create mode 100644 flint/rsa/rsakey.cpp create mode 100644 flint/rsa/rsakey.h create mode 100644 flint/src/_assert.h create mode 100644 flint/src/aes.c create mode 100644 flint/src/aes.h create mode 100644 flint/src/asm/cygwin/div.s create mode 100644 flint/src/asm/cygwin/mult.s create mode 100644 flint/src/asm/cygwin/sqr.s create mode 100644 flint/src/asm/cygwin/umul.s create mode 100644 flint/src/asm/div.asm create mode 100644 flint/src/asm/linux/div.s create mode 100644 flint/src/asm/linux/mult.s create mode 100644 flint/src/asm/linux/sqr.s create mode 100644 flint/src/asm/linux/umul.s create mode 100644 flint/src/asm/mult.asm create mode 100644 flint/src/asm/sqr.asm create mode 100644 flint/src/asm/umul.asm create mode 100644 flint/src/entropy.c create mode 100644 flint/src/entropy.h create mode 100644 flint/src/flint.c create mode 100644 flint/src/flint.h create mode 100644 flint/src/flintpp.cpp create mode 100644 flint/src/flintpp.h create mode 100644 flint/src/kmul.c create mode 100644 flint/src/kmul.h create mode 100644 flint/src/random.c create mode 100644 flint/src/random.h create mode 100644 flint/src/randompp.cpp create mode 100644 flint/src/ripemd.c create mode 100644 flint/src/ripemd.h create mode 100644 flint/src/sha1.c create mode 100644 flint/src/sha1.h create mode 100644 flint/src/sha256.c create mode 100644 flint/src/sha256.h create mode 100644 flint/test/Makefile create mode 100644 flint/test/Makefile.asm create mode 100644 flint/test/testadd.c create mode 100644 flint/test/testaes.c create mode 100644 flint/test/testari.cpp create mode 100644 flint/test/testbas.c create mode 100644 flint/test/testbbs.c create mode 100644 flint/test/testbool.c create mode 100644 flint/test/testchin.cpp create mode 100644 flint/test/testcnst.cpp create mode 100644 flint/test/testdiv.c create mode 100644 flint/test/testdll.bat create mode 100644 flint/test/testgcc.bat create mode 100644 flint/test/testgcca.bat create mode 100644 flint/test/testgcd.c create mode 100644 flint/test/testiroo.c create mode 100644 flint/test/testkar.c create mode 100644 flint/test/testmadd.c create mode 100644 flint/test/testmexp.c create mode 100644 flint/test/testmmul.c create mode 100644 flint/test/testmsqr.c create mode 100644 flint/test/testmsub.c create mode 100644 flint/test/testmul.c create mode 100644 flint/test/testprrt.cpp create mode 100644 flint/test/testrand.c create mode 100644 flint/test/testrandk2.c create mode 100644 flint/test/testreg.c create mode 100644 flint/test/testripe.c create mode 100644 flint/test/testroot.cpp create mode 100644 flint/test/testset.c create mode 100644 flint/test/testsha1.c create mode 100644 flint/test/testsha256.c create mode 100644 flint/test/testshft.c create mode 100644 flint/test/testsqr.c create mode 100644 flint/test/testsub.c create mode 100644 flint/test/testvals/cbcmd44.txt create mode 100644 flint/test/testvals/cbcmd46.txt create mode 100644 flint/test/testvals/cbcmd48.txt create mode 100644 flint/test/testvals/cbcmd64.txt create mode 100644 flint/test/testvals/cbcmd66.txt create mode 100644 flint/test/testvals/cbcmd68.txt create mode 100644 flint/test/testvals/cbcmd84.txt create mode 100644 flint/test/testvals/cbcmd86.txt create mode 100644 flint/test/testvals/cbcmd88.txt create mode 100644 flint/test/testvals/cbcme44.txt create mode 100644 flint/test/testvals/cbcme46.txt create mode 100644 flint/test/testvals/cbcme48.txt create mode 100644 flint/test/testvals/cbcme64.txt create mode 100644 flint/test/testvals/cbcme66.txt create mode 100644 flint/test/testvals/cbcme68.txt create mode 100644 flint/test/testvals/cbcme84.txt create mode 100644 flint/test/testvals/cbcme86.txt create mode 100644 flint/test/testvals/cbcme88.txt create mode 100644 flint/test/testvals/ecbmd44.txt create mode 100644 flint/test/testvals/ecbmd46.txt create mode 100644 flint/test/testvals/ecbmd48.txt create mode 100644 flint/test/testvals/ecbmd64.txt create mode 100644 flint/test/testvals/ecbmd66.txt create mode 100644 flint/test/testvals/ecbmd68.txt create mode 100644 flint/test/testvals/ecbmd84.txt create mode 100644 flint/test/testvals/ecbmd86.txt create mode 100644 flint/test/testvals/ecbmd88.txt create mode 100644 flint/test/testvals/ecbme44.txt create mode 100644 flint/test/testvals/ecbme46.txt create mode 100644 flint/test/testvals/ecbme48.txt create mode 100644 flint/test/testvals/ecbme64.txt create mode 100644 flint/test/testvals/ecbme66.txt create mode 100644 flint/test/testvals/ecbme68.txt create mode 100644 flint/test/testvals/ecbme84.txt create mode 100644 flint/test/testvals/ecbme86.txt create mode 100644 flint/test/testvals/ecbme88.txt create mode 100644 flint/test/testvals/ecbnk44.txt create mode 100644 flint/test/testvals/ecbnk46.txt create mode 100644 flint/test/testvals/ecbnk48.txt create mode 100644 flint/test/testvals/ecbnk64.txt create mode 100644 flint/test/testvals/ecbnk66.txt create mode 100644 flint/test/testvals/ecbnk68.txt create mode 100644 flint/test/testvals/ecbnk84.txt create mode 100644 flint/test/testvals/ecbnk86.txt create mode 100644 flint/test/testvals/ecbnk88.txt create mode 100644 flint/test/testvals/ecbnt44.txt create mode 100644 flint/test/testvals/ecbnt46.txt create mode 100644 flint/test/testvals/ecbnt48.txt create mode 100644 flint/test/testvals/ecbnt64.txt create mode 100644 flint/test/testvals/ecbnt66.txt create mode 100644 flint/test/testvals/ecbnt68.txt create mode 100644 flint/test/testvals/ecbnt84.txt create mode 100644 flint/test/testvals/ecbnt86.txt create mode 100644 flint/test/testvals/ecbnt88.txt create mode 100644 flint/test/testvals/ecbvk44.txt create mode 100644 flint/test/testvals/ecbvk46.txt create mode 100644 flint/test/testvals/ecbvk48.txt create mode 100644 flint/test/testvals/ecbvk64.txt create mode 100644 flint/test/testvals/ecbvk66.txt create mode 100644 flint/test/testvals/ecbvk68.txt create mode 100644 flint/test/testvals/ecbvk84.txt create mode 100644 flint/test/testvals/ecbvk86.txt create mode 100644 flint/test/testvals/ecbvk88.txt create mode 100644 flint/test/testvals/ecbvt44.txt create mode 100644 flint/test/testvals/ecbvt46.txt create mode 100644 flint/test/testvals/ecbvt48.txt create mode 100644 flint/test/testvals/ecbvt64.txt create mode 100644 flint/test/testvals/ecbvt66.txt create mode 100644 flint/test/testvals/ecbvt68.txt create mode 100644 flint/test/testvals/ecbvt84.txt create mode 100644 flint/test/testvals/ecbvt86.txt create mode 100644 flint/test/testvals/ecbvt88.txt create mode 100644 flint/test/testvals/test1.bin create mode 100644 flint/test/testvals/test2.bin create mode 100644 flint/test/testvals/test3.bin create mode 100644 flint/test/testvc.bat create mode 100644 flint/test/testvca.bat create mode 100644 flint/test/testxgcd.cpp diff --git a/2154.pdf b/2154.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dc6dbd80d220a679f05b63bc038a6f054791bf36 GIT binary patch literal 90285 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 literal 0 HcmV?d00001 diff --git a/9781590595022.jpg b/9781590595022.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0226f597c332fe8755338971fce06a1d67f73a19 GIT binary patch literal 10018 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 z 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 literal 0 HcmV?d00001 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a4eab1f --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +Freeware License, some rights reserved + +Copyright (c) 2005 Michael Welschenbach + +Permission is hereby granted, free of charge, to anyone obtaining a copy +of this software and associated documentation files (the "Software"), +to work with the Software within the limits of freeware distribution and fair use. +This includes the rights to use, copy, and modify the Software for personal use. +Users are also allowed and encouraged to submit corrections and modifications +to the Software for the benefit of other users. + +It is not allowed to reuse, modify, or redistribute the Software for +commercial use in any way, or for a user’s educational materials such as books +or blog articles without prior permission from the copyright holder. + +The above copyright notice and this permission notice need to be included +in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d0e6e3d --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +#Apress Source Code + +This repository accompanies [*Cryptography in C and C++*](http://www.apress.com/9781590595022) by Michael Welschenbach (Apress, 2005). + +![Cover image](9781590595022.jpg) + +Download the files as a zip using the green button, or clone the repository to your machine using Git. + +##Releases + +Release v1.0 corresponds to the code in the published book, without corrections or updates. + +##Contributions + +See the file Contributing.md for more information on how you can contribute to this repository. diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..f6005ad --- /dev/null +++ b/contributing.md @@ -0,0 +1,14 @@ +# Contributing to Apress Source Code + +Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers. + +## How to Contribute + +1. Make sure you have a GitHub account. +2. Fork the repository for the relevant book. +3. Create a new branch on which to make your change, e.g. +`git checkout -b my_code_contribution` +4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted. +5. Submit a pull request. + +Thank you for your contribution! \ No newline at end of file diff --git a/flint/lib/dll/dllmain.c b/flint/lib/dll/dllmain.c new file mode 100644 index 0000000..736711a --- /dev/null +++ b/flint/lib/dll/dllmain.c @@ -0,0 +1,32 @@ +/* dllmain.c : Defines the entry point for the DLL application. */ + +#include +#include "flint.h" + +BOOL APIENTRY DllMain( HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + int error = 0; + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + error = FLINTInit_l(); + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + break; + case DLL_PROCESS_DETACH: + FLINTExit_l(); + } + +if (!error) + return TRUE; +else + return FALSE; +} + + + diff --git a/flint/lib/dll/flint.def b/flint/lib/dll/flint.def new file mode 100644 index 0000000..a4e6f8d --- /dev/null +++ b/flint/lib/dll/flint.def @@ -0,0 +1,178 @@ +LIBRARY flint.dll + +EXPORTS + DllMain + add + add_l + and_l + byte2clint_l + chinrem_l + clearbit_l + clint2byte_l + cmp_l + cpy_l + create_l + create_reg_l + dec_l + div_l + equ_l + fbinstr_l + fdecstr_l + fhexstr_l + foctstr_l + free_l + free_reg_l + fswap_l + genprimes + get_reg_l + gcd_l + inc_l + inv_l + invmon_l + iroot_l + issqr_l + jacobi_l + lcm_l + ld_l + madd_l + mequ_l + mexp2_l + mexp5_l + mexp5m_l + mexp_l + mexpk_l + mexpkm_l + mmul_l + mod2_l + mod_l + msqr_l + msub_l + mul_l + mulmon_l + mult + or_l + prime_l + primroot_l + proot_l + purge_l + purge_reg_l + purgeall_reg_l + purged_l + purgeq_l + rand64_l + rand_l + root_l + sadd + seed64_l + set_noofregs_l + setbit_l + setmax_l + shift_l + shl_l + shr_l + sieve_l + smod + sqr + sqr_l + sqrmon_l + ssub + str2clint_l + strlwr_l + strrev_l + strupr_l + sub + sub_l + testbit_l + tolower_l + toupper_l + u2clint_l + uadd_l + ucrand64_l + udiv_l + ul2clint_l + ulrand64_l + ulseed64_l + ultoa_l + umadd_l + umexp_l + umexpm_l + ummul_l + umod_l + umsub_l + umul + umul_l + usrand64_l + usub_l + vcheck_l + version_l + verstr_l + wmexp_l + wmexpm_l + xclint2str_l + xgcd_l + xor_l + twofact_l + nul_l DATA + one_l DATA + two_l DATA + smallprimes DATA + + InitRand64_l + InitRandAES_l + SwitchRandAES_l + RandAES_l + PurgeRandAES_l + InitRandRMDSHA1_l + SwitchRandRMDSHA1_l + RandRMDSHA1_l + PurgeRandRMDSHA1_l + InitRandBBS_l + SwitchRandBBS_l + SeedBBS_l + RandBBS_l + bRandBBS_l + sRandBBS_l + lRandBBS_l + PurgeRandBBS_l + + InitRand_l + PurgeRand_l + Rand_l + bRand_l + sRand_l + lRand_l + FindPrime_l + FindPrimeGcd_l + FindPrimeMinMaxGcd_l + RandMinMax_l + + GetEntropy_l + + ripemd128_l + ripeinit128_l + ripehash128_l + ripefinish128_l + ripemd160_l + ripeinit_l + ripehash_l + ripefinish_l + + sha1_l + sha1init_l + sha1hash_l + sha1finish_l + + sha256_l + sha256init_l + sha256hash_l + sha256finish_l + + AESInit_l + AESKeySched_l + AESCrypt_l + AESKeyExpansion_l + AESInvKeyExpansion_l + AESEncBlock_l + AESDecBlock_l + AESPurge_l + diff --git a/flint/lib/dll/flint.dll b/flint/lib/dll/flint.dll new file mode 100644 index 0000000000000000000000000000000000000000..54af6f0539f5955146e1020bc639f217dd8a026b GIT binary patch literal 94208 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�`uko`26}0ICwV@I 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 Zd*HVRetY1z2Y!3tw+DWE;QxaM{x92HmUaLD literal 0 HcmV?d00001 diff --git a/flint/lib/dll/flint.lib b/flint/lib/dll/flint.lib new file mode 100644 index 0000000000000000000000000000000000000000..0fe222090bbdf5a60a6168a4ee1763349161620b GIT binary patch literal 29628 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 literal 0 HcmV?d00001 diff --git a/flint/lib/dll/makedll.bat b/flint/lib/dll/makedll.bat new file mode 100644 index 0000000..f18f4fd --- /dev/null +++ b/flint/lib/dll/makedll.bat @@ -0,0 +1,16 @@ +REM Generation of a DLL under Microsoft Visual C/C++, providing the C functions +REM of the FLINT/C package. Deployment of the DLL is accomplished by linking +REM the import library flint.lib to an application. The file flint.def contains +REM a list of the exported symbols. + +REM On loading the DLL the run time system automatically calls the function +REM DllMain(). This function is responsible for initializing the randomnumber +REM generators and the bank of CLINT registers. Any application is free to +REM initialize the random number generators on their own with any suitable value +REM (in any case this is recommended for security-critical applications). +REM A reinitialization of the bank of registers by an application is without +REM effect, though the application has to free the allocated registers in its +REM own responsibility. + +cl -O2 -DFLINT_ASM -I..\..\src -LD -MD -DFLINT_INITRAND ..\..\flint.c ..\..\aes.c ..\..\ripemd.c ..\..\sha1.c ..\..\sha256.c ..\..\random.c ..\..\entropy.c dllmain.c ..\flintavc.lib advapi32.lib flint.def + diff --git a/flint/lib/flinta.lib b/flint/lib/flinta.lib new file mode 100644 index 0000000000000000000000000000000000000000..899fbb6fec5cb1911cf78c31931e8108f9cc1d75 GIT binary patch literal 4129 zcmeHJZ)j6j6u)`zC2g}<{8Q?msasiPld=~^Ka3HD7OkZ)EuC#+Q5!bKMTdS^lcxw4 zDzAaQT^?-E4jC5QoEw`T_GN`RwX--H=Lfe}5v6XJc1)MWHE~fAXV>hUdtcI|R;V8Z zZ|TcD_nv$1x##yg=icNZLOg^>#BM!qQo3K;7gFC2?%&u~O2`QX#gdQL5Ta~(v%b|C z*j(RQ?+mmy>}XZ6t88lC+%SB!gnTvRP+X2Q_6U)kj&DAZi1f~f9^!B~184-c*wCjC z@|nXre%j$6q>bG)Le&xdN#TpW_q`jmo4#Z4i0aMXB`UAAJ>FmcEn!Y})6H|t(Z^#>%Rh`_Ojr`LfK z)75gdQP1Wuzqdeiy=bst;1= zgbb3l5cHf9p!daG^qzxkR{~%Ij{J2FyfO(~;>j+++wN~?*Ev#^Hgw~KNX?VMPlS{S z#%$2@NCCqgP(L1mTO2eF2V|s(^qh?3tGXoG)WT*Uy=s4=EN`e?AC*R?q?*f}99Fhk zeKa#&NQYuXamdchujO>4SH%Hr&~@A0VPG~9n_2zbvn|jjQ)2fC$XoPwmPiF&L6tkk z6g3^CgG+k7sJ5iv>wzD740x$WN+&1iV0;y8kkU~jj2jvQ9m;fQ*02#PYHGwhhof>*&it36UrxjHMl@mXZ~Y0kRvoy3 zIa3Q0JZFk$S#so-#P3gc*Q;S&g6VJf+^P%^wRo_HD>){U5Wo)tjs;N zwaQQnbrL}KrGS(%=*Dlj9KJLQF@%5H7Z8M-IY%Oj3R~r-MIehcW`iPbTlQe&wxlN{ zf6YuI`*|cLb?OP(ug{csseV?Wvd!u=+ofjMVf9`MW!xdob&qw;x&nTV(WdxRM<8BZ zpj@Qr&Z{LmjBq7C&?@*cek|X3XlXiSgk3O#7uMR?RrEg#O$@RDTp|x(47z-5Jbe=5 z;Jec0Jy_}sqoD)qvL-HcjJ*Xf zi_bZP>lH7Qt{vj15gM;SH`iBqgRckt$mBvh+(HImN83vjZ+^j@pqy2_!nr_a2k;8^ zGkU#lsBwBifu~7R$Qk=+CYufD5lKMm6VqBrbF-c$T7q4({-VYJE-B<6W@eOS&LG&0 zjm^#Ujn&?XObDJ?)YwYceYh0ckBs6fc-b5}?sPcr$#W{!G>1{biq*-wEA-J^zT`?; zfdbze>Y4%NayoU&E@@)4y8_=uMhP`s@n1P`@vGbcd{g0zH2&%1I45q8K`azZ@d6F< zv6)Qd*RZ?REeh#^hoSmIsK?v3HKFeszT$AyXoHH>0PlCmeuZeuP;j6iK`B6ikXRC; zeBUm-cj3KX+?MCX=U;&COL;NhS@yC51+{7qAx?b8S2>6R7kpJ6$oNdFswU!n4<+_l zd+H*vY>vmPXXO=k_eJ|g1qSf9T^%4FKH11s~EhPsAqR=z}nu_h&0C%mF(V7zUdJCG+ z1hTyko5_AKX%j!t4<$g7RS*Uf~fY3-wc-_223?osjZELOQ|ggJQ$61KbNl zBpILFk;OBFA{}|_-K^{E+G;avF#apO-kKWlS6N+EZAe<(yBq@f>kDyfi;IvYut;bQ zDSYUIu<_2H_aU%$OCMj$iMLg1Zwt5O$aA~fi1$JhyL+5*FeKeUc4R6;xOR?Q+evhUQrb zC06aYp`F!~3l79S6meEJ=s~9iI$z-iP_~;;pN0myT(SKime;T$eN2;yb`GWDl$iQw znx3A4;jL)G^soO0E8hlTIABkzVBkx`oZ-_LWm7}91-=A#=w)__hsk;*0nD;qX*LtX z$wx5tM3;wdPw6B25Bk;kA9iIPsj0ODwNNKPRc#rZl-lpcXQTw4Gz}XBKQk8S*aL|= zC5-YvLY>*JFx!T4H>vQ5#QRhw#2Bg^@MR>70;W%)+K%aYS-qyQv<4f%!G zHH<$E%@DFaoFew&9)x^sG&z9#;JX^~94qog(9qF!X$_}~++b)$1>Y%U6qVe^em0bj z-E3_3L;M_C=F0nV)_DQ^eT|#;I=h(slpo=Gr$-qfZyJAf&~`$bxV65_)3qt+MB&yG+a;!*9wWG5papOR{?s0iy8zaja4M6|`mihZ(QG;$RHA}$W-z6h?ZYY7Lq%qevD6uiyRNRGfo@*y8Bc|Qs#M)g*nRfXf##FLIE!_c znnzxeVJSa90Vy3|-DS#fhA59w;6B--uTYBoP&J+Rk0u-^hpz?`HAfLY#mzp_oDaT2SrS zR9j^hmATr{0k-C=9WEGa=dR`+3$7i{Bc`&ogR4sF3(Iuy%?Cw{!g3x zF$F;O*1%X62PSOc#{cAnq5D?!1R7RsC1g3)NmWeU7my0Try!)A$j2b$)k?`sU zb!_Khb9hDEP4r$K8P6QkhWBxREk?@&{RXF4qN=(;Pcf&I9Hae9dpxMNwAWJ%fAkdi zRH8)_B)s(mFm9F3r|lYjxnUs+1OLzT1K29SoPxzqS9Z4eb9GeE&N zw<*JTo)JV|<$>%G*!>y4$63ZRxtK;_aq+RI;SvJ*NnAoO+S?+zgttDkS-6DPKr5M^ zbPubp-JHjz(_n8tF1-q4{}Y$|&3oAmxFC&C)>Le=X*rmOs~O(QkP@z#3j|quU3x}( z;n{K!TJXou+e)WAfZn8Rlrv@yzqzzQfaTDJi-rXNBW@}BLDO-ETKsQ;BNdvSO^j~dGoXSO0YE_ z5(mN8Gb8ciBFySpB-+0UH~>$88xx!|y!y2>cy?wUu>vxn`QVEnAE7)q*>Ck|;c>Tm zlrOMijDsbroHHy!1<|2zLOk5$qy6{z{X1@}?duvUjYKk|;R2)YYZH_496>Sy``E3M)1qGpERv7e; z3(Lw13Q9{Cm9S;DasTogR#=vWW=yiw6g5gpg>y}QnLb^mrlL!0oPX_p?<#c9>AJOQ zt@ENApXTnIZo7H5dx@R+NX2t|D$wz&ia4r=gUN3a!2oY=@(}T-k}!DmEw8<#gDImXK2M{6udcF|1;N zbZ@HHIb}QWaobq4cD=&59u6@_dZ&$d#xtI`q31hOc-2n$0qOwHv31+MQQ3==tRR}( zQ;+QU<<3i~u4G&#pJ%SsX?1)uU_Um5;uWmIYd`f4?tLk`VPRO7px{|kooUmQIvq#e z3g}zNk6i8U*WGkmLjhFl?hOt5ec1gmF5MMfU|)ASbu{&-)UovYW1V$RJ+E`gCTS&RfLPPHQ&}p|N^g*TV>Mq%d4^?b>>b2A{^z^8`D&4!TCOubr zkMYdU_?=qkv|X(4=~5hBeP`vzViyb!IBj{z!TS-P({r46FoI+<-F>`d%03Q5WU+H> z@F0hx{CH%+wrPvoSkczGBS~I9MOPTPWWFA(#Bn<1Z~KRF+IFIHZ53`nzg_0u-2=Sp zg#g<7HHYmM=Wl~Q(NA&SvI>(|hzY z{0~+?#sI(WYIo;Fi4OmZ8OK34>b&`!gRvSKc%r)IPUpQ1FX~)e>c(f<&Q#mUOTVt4 zTlz1$Wi+Y9BK_z@FP$EB_W;Gh#Tel=$P7z&Z{{NB)zn)yz8Kzyo%mSA&$;QQRqTAc z2j2*Doi&i9u`=m%(=n0V)ff&swi9= zt5rpH(I^LXQt2{yQG3x5ov67vp8hfecc)V!j`V{r=yZ+nVTSK_CG2VVoy~8S@PVmV z-&bgO$)68+<~#1E7Id@#zU*%$er$Ipe&^ulw+U12KUb;m`;~x&$>MR-*jb46$(G64 z9{nS1lb?-A{UaO}K2@JNjqscCnI^@+=ks7t5`5;pP&s|R00t$*=Zj%bHhjJm2B$@z z3t{jXm}IHBFv6MsS?X%=BCnLA5`PUg@DkXr;H9t+2ws-OH-P^t%5Q=FjNrAf z{~-8|EUp80i*g%wpWu67SBm@D0?x}kTuW^Oe@m3Nfai+x1h`Z%@9kQ_KLqa(*Z&Ay zDas!KyMliT-Y)nF@RNdn3I4I*r@_A!OcgmUxE=hi;NO8i5&SavbD7uDQV7u0e8ES- zHG*FQuM+$^_)ftm!L5Sd0Y?SD4^9aFH~8m*2f@D=JOq9q^C4PFhk1f?aW5x?e?EAY zC_f)uDEK09Lh$Fo>jlpNGhi~wQeOn`6nrK4QNi=UKNDOGJ|wsd+$H!L@cV+7fcph6 z1D`M6msQ}|f^P<2CU_0FSnwU-a>2FWrGgv4djxL+9}pY^KPh+z_^{yn!N&x*fj<$v z2kfVrRLNRZrr%2xqlu z!)ASMDh4zKQPddJCTk0_KTWKnsgxHXFI=JxOq5~fGrKXUeSyv4+Kmm&U}uA9uC9rl z45F9erbZleKKdIjV=YZl95!tvvOab%#1?r|LEK50o;>r8qOr}9dKLhhF$SBF7eNJ$ zCFpKMXW-@{_2#B{3(*Ev7HwefN{q=aM`K)Jd8;nD&^p^XD_FL$9E&WZv#+yed*9(1 z>#T<`gF9VSYj1U4#Pa9p*tHhI+}xf7-V|@yMfIyn9-4;AOw{8X85+Q%>!7#Tx=&%9 zC35td3M&;}Fm|QHobgsl+Hpxaqj4%&%}kTp_%v`5*<0+ zALw!~a!cw)O{iV@8+J^u#!Lo=WPgYb)^MehLf{>)P}WO`xvkdF4Ayp3B|39Z=eq7U zoxM71-mu1}tYO5=cH*#Z6(fliSo)OHpJFt~jwGMv5uq;wP%c$+%+Mizor?yCbf*WN zxU;&3K`evUPDC5&uFonqd{*cMI;vA4j?DID@jc-~2j4F{Hk`;WJ2s@>WMac&bl?F3PWm&3MKnORa#R-#49Msjp`-W4l*$84s3XY{&S* zBug>2OZ$lOTG*!qH^AonZjz-o!;rBWW4U5c{%vr*;0M5Q!MwKz1^)p2kl@j=;+g>k zoa?q^CN^$x6+?n~#>Au%vh2@oDB*OMHMc>mIqT_MYB=Tx&UgA^bMk8BrKp%Q6VJF# zpFHH8!znV(xq$^LAG>T)__3d6cJU_KVGEW77fn|AANNM(4CSAlH%9qwcg=K9<{5Zl zBH)f2B{sKb8ZxlkHjd_d3O~s`Gf%Ktj}d6@dKsP7FQ3z@rB*BS8A5!*c8)QGHkaz+ zGZdMhV3s25td0P6Sbv~nb(mSnr+FM#hZ#amsKcM#D*bETGvwX-qEZN(*}f9D2p{Q} zt;7@gWh*iLCZojd7`t8Y#oMGV!H@kLPl=bJU^hGFrL6Ay*<;SxYw*de(joXtKWJT3 z{|I*r_^O-KKf=C!$w!RfMX(v^n`Egkz%btmbIhum>SU6oReOVvC|>}ZYG#t9N?}M| z3{H5ZtnaI^x$-p0QY&GMs+FZygP-zB>3=)ymjvGhdqD8ru&0RrH-oPb90z|{a7*S| zPZ{lvF|{QU&S)cpe(wEK814o={J<6FE^ivLvi+A=frS$0nIGeMdLG^=h8ueq5 z%I8ta-&xgfVacS`uK{l-(*)}0|9`=DFZQ(W1cqu<>c$CX|39hwE~@jw%#73_*5hXV zN9dMTJuQV&`ebmbuZjfhRh7;l0!{AcW-3~n=m;F?4b1DW*1Cx8@A0D4JPbjWCNj&5 zQXjX5JFy$=4HL|K&wPR3jA<^lS4*efSspO$pF|AHuS|FK45@D4kL`Fh*mYo5YX!Y# z?X8%O(|!nhqH|hz_kr}K?()E3m(#}9oP9HJv^(`OAx8zg{a>yYcB>6#dz$_oy08tlmp70y6n3pRL{#`DLp& z{U)Q{yD)tez?ToZ5Wk7k`w_^h-oE!bnGqD(=`8!xQg8OtBumYPF_h_yr3%2ZoZ~k- z4o1Dh$TP|8i89vpnR}w^eT4d!XYqC5EuwrC>|KIygw1_MlPt9c246#;Idkmu5%t%@ zenxN;Z0`G+WMO+oslWRO|9fEvMSZ)#a!>OC@b#j654cwF_rPJn4}u>S{4ls(@MB;~ zqDhwGp65RWKM8(I@UJ{io^;%uJ-Z;(E#@{3&YK|qJQs6TnQ)GQ17`^xde_h!`z +#if !defined __WATCOMC__ +using namespace std; +#endif // #!defined __WATCOMC__ +#else +#include +#endif // #defined FLINT_ANSI + +#include "rsakey.h" + +#define GENERATOR FLINT_RNDRMDSHA1 + +static void svkey (RSAkey&, RSApub&); +static void rdkey (RSAkey&, RSApub&); +static UCHAR* rndmess (const int, STATEPRNG&); +static void cout_bytes (const char*, const int, const char* const); + +// Keylength in bits +#define KEYLENGTH 4096 + +// Length of test message for signing in bytes +#define MESSLNGTH 1000 + +// Length of test message for encryption in bytes, maximum blocklength +// in bytes for PKCS#1-Format +#define BLCKLNGTH (((KEYLENGTH + 7) >> 3) - 11) + +int main() +{ + int dlen; + + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + // Initialize PRNG + STATEPRNG xrstate; + + if (InitRand (xrstate, "", 0, 200, GENERATOR)) + { + cout << "Info: Requested entropy could not be generated." << endl; + cout << " Please check what strategies for the generation of " << endl; + cout << " entropy are available with respect to the platform " << endl; + cout << " and development environment in use. A platform " << endl; + cout << " specific implementation of an entropy generation " << endl; + cout << " process can be integrated into the module entropy.c. " << endl; + } + + // RSA keygeneration + + cout << "Generate RSA key of "<< KEYLENGTH << " bit ..." << flush; + RSAkey my_key (KEYLENGTH, xrstate); + cout << endl << " done." << endl; + + // Extract public key from RSAkey object + RSApub my_public_key (my_key); + cout << "RSA public key extracted." << endl; + + // Generate Messageblock Message_1 + const UCHAR* const mess1 = rndmess (BLCKLNGTH, xrstate); + cout << "Random message generated." << endl; + cout_bytes ((const char*)mess1, BLCKLNGTH, "Message_1"); + cout << endl; + + // Encrypt Message_1 + LINT cipher = my_public_key.crypt (mess1, BLCKLNGTH, xrstate); + cout << "Message_1 encrypted." << endl; + cout << "Ciphertext = " << cipher << endl; + + // Generate Messageblock Message_2 + const UCHAR* const mess2 = rndmess (MESSLNGTH, xrstate); + cout << "Random Message generated." << endl; + cout_bytes ((const char*)mess2, MESSLNGTH, "Message_2"); + cout << endl; + + // Hashing and signing of Message_2 + LINT signature = my_key.sign (mess2, MESSLNGTH); + cout << "Message_2 signed." << endl; + UCHAR HashRes[RMDVER>>3]; + ripemd160 (HashRes, (UCHAR*)mess2, MESSLNGTH); + cout_bytes ((char *)HashRes, RMDVER >> 3, "Hashvalue of Message_2"); + cout << "Signatur = " << signature << endl; + + // Decryption and checking of ciphertext + UCHAR* decrypted_mess = my_key.decrypt (cipher, &dlen); + if (decrypted_mess == NULL) + cout << "Error in encryption/decryption operation!" << endl; + else + { + if (dlen == BLCKLNGTH && !memcmp (mess1, decrypted_mess, BLCKLNGTH)) + cout << "Encryption/decryption operation O.K." << endl; + else + cout << "Error in encryption/decryption operation!" << endl; + } + + // Checking of signature + if (my_public_key.verify (mess2, MESSLNGTH, signature)) + cout << "Verification O.K." << endl; + else + cout << "Error in Signature!" << endl; + + + // Write-/Read-Test + + RSAkey testk1; // RSA key, not initialized + RSApub testk2; // RSA public key, not initialized + + // Store RSA key on mass storage + svkey (my_key, my_public_key); + + // Read RSA key from mass storage + rdkey (testk1, testk2); + + // Compare original and duplicate + if (testk1 == my_key) + cout << "Write-/Read-Test RSAkey O.K." << endl; + else + cout << "Error in Write-/Read-Test RSAkey!" << endl; + + if (testk2 == my_public_key) + cout << "Write-/Read-Test RSApub O.K." << endl; + else + cout << "Error in Write-/Read-Test RSApub!" << endl; + + delete [] (UCHAR*)mess1; + delete [] (UCHAR*)mess2; + + return 0; +} + + +// Auxiliary functions + +// Writing to mass storage +static void svkey (RSAkey &prvk, RSApub &pubk) +{ + fstream fout1 ("rsakey.prv",ios::out | ios::binary); + fout1 << prvk; + fout1.close (); + + fstream fout2 ("rsakey.pub",ios::out | ios::binary); + fout2 << pubk; + fout2.close (); +} + + +// Reading from mass storage +static void rdkey (RSAkey &prvk, RSApub &pubk) +{ + fstream fin1 ("rsakey.prv",ios::in | ios::binary); + fin1 >> prvk; + fin1.close (); + + fstream fin2 ("rsakey.pub",ios::in | ios::binary); + fin2 >> pubk; + fin2.close (); +} + + +// Generation of random messages of len bytes +static UCHAR* rndmess (const int len, STATEPRNG& xrstate) +{ + UCHAR* mess = new UCHAR[sizeof(UCHAR) * (len + 1)]; + if (NULL == mess) + { + return NULL; + } + + UCHAR* tmp = mess; + for (int i = 0; i < len; i++) + { + *tmp++ = bRand_l (&xrstate); + } + *tmp = '\0'; + + return mess; +} + + +// Output of messages as Hex-values +static void cout_bytes (const char* mess, const int len, const char* const titel) +{ + cout << titel << " = " << hex + << setfill ('0') << resetiosflags (ios::showbase); + + for (int i = 0; i < len; i++) + { + cout << setw (2) << (((unsigned)*mess++) & 0xff); + } + + cout << setfill (' ') << resetiosflags (ios::hex) << endl; +} + + + diff --git a/flint/rsa/rsakey.cpp b/flint/rsa/rsakey.cpp new file mode 100644 index 0000000..d31c9f4 --- /dev/null +++ b/flint/rsa/rsakey.cpp @@ -0,0 +1,683 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module rsakey.cpp Revision: 19.04.2005 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include +#include "rsakey.h" + +#ifdef FLINT_TEST +static void cout_mess (const char*, int, const char*); +#endif + + +// Member functions of class RSAkey + +// Constructor 1 +RSAkey::RSAkey (int bitlen) +{ + STATEPRNG xrstate; + int done; + InitRand (xrstate, "", 0, 200, FLINT_RNDRMDSHA1); + + do + { + done = RSAkey::makekey (bitlen, xrstate); + } + while (!done); + + PurgeRand (xrstate); +} + + +// Constructor 2 with optional public exponent PubExp. +// The constructor generates RSA keys of distinct binary length and optional +// given public exponent (must be odd). In case that PubExp == 1 or omitted, +// a random exponent is created. If the given exponent is even, an error +// condition is generated, that can be handled by try() and catch() if +// exceptions are enabled. + +RSAkey::RSAkey (int bitlen, STATEPRNG& xrstate, const LINT& PubExp) +{ + int done; + + do + { + done = RSAkey::makekey (bitlen, xrstate, PubExp); + } + while (!done); +} + + +// Export public key +PKEYSTRUCT RSAkey::export_public (void) const +{ + PKEYSTRUCT pktmp; + + pktmp.pubexp = key.pubexp; + pktmp.mod = key.mod; + pktmp.bitlen_mod = key.bitlen_mod; + pktmp.bytelen_mod = key.bytelen_mod; + + return pktmp; +} + + +// Decryption +UCHAR* RSAkey::decrypt (const LINT& Ciph, int* LenEB) +{ + UCHAR* EB = lint2byte (fastdecrypt (Ciph), LenEB); + UCHAR* Mess = NULL; + +#ifdef FLINT_TEST + cout_mess ((const char*)EB, key.bytelen_mod - 1, "Encryption Block after decryption"); +#endif + + // Parsing decrypted Encryption Block, PKCS#1-formatted + if (2 != parse_pkcs1 (Mess, LenEB, EB, key.bytelen_mod)) + { + return (UCHAR*)NULL; // False block type or format of encryption block + } + else + { + return Mess; // Return pointer to decrypted message + } +} + + +// Sign +// Returns 0 if message too long +LINT RSAkey::sign (const UCHAR* Mess, int LenMess) +{ + + STATEPRNG junk; + +#ifdef FLINT_TEST + cout << "Length of modulus = " << key.bytelen_mod << " byte." << endl; +#endif + int LenEncryptionBlock = key.bytelen_mod; + UCHAR HashRes[RMDVER>>3]; + UCHAR* EncryptionBlock = new UCHAR[LenEncryptionBlock]; + + sha1_l (HashRes, (UCHAR*)Mess, (ULONG)LenMess); + if (NULL == format_pkcs1 (EncryptionBlock, LenEncryptionBlock, + BLOCKTYPE_SIGN, HashRes, RMDVER >> 3, junk)) + { + delete [] EncryptionBlock; + return LINT (0); // Error: Message too long + } + +#ifdef FLINT_TEST + cout_mess ((const char*)EncryptionBlock, LenEncryptionBlock, "Encryption Block"); +#endif + + // Convert Encryption Block into LINT value (Constructor 3) + LINT m = LINT (EncryptionBlock, LenEncryptionBlock); + delete [] EncryptionBlock; + + return fastdecrypt (m); +} + + +// Key deletion +void RSAkey::purge (void) +{ + key.pubexp.purge (); + key.prvexp.purge (); + key.mod.purge (); + key.p.purge (); + key.q.purge (); + key.ep.purge (); + key.eq.purge (); + key.r.purge (); + key.bitlen_mod = 0; + key.bytelen_mod = 0; +} + + + +// RSAkey auxiliary functions + + +// Generation of RSA keys acc. to IEEE P1363, Annex A. +// A public exponent may be given in PubExp. If PubExp is omitted or +// PubExp == 1 a public exponent of half the modulus length +// is choosen at random. + +int RSAkey::makekey (int length, STATEPRNG& xrstate, const LINT& PubExp) +{ + // Generate prime p + // 2^(m - r - 1) <= p < 2^(m - r), with + // m = floor((length + 1)/2) and r randomly chosen from intervall 2 <= r < 15 + const USHORT m = (((const USHORT)length + 1) >> 1) - 2 - sRand_l (&xrstate) % 13; + + key.p = FindPrime (m, PubExp, xrstate); + + // Determine intervall qmin and qmax for prime q + // Set qmin = floor ((2^(length - 1))/p + 1) + LINT qmin = LINT(0).setbit (length - 1)/key.p + 1; + // Set qmax = floor ((2^length - 1)/p) + LINT qmax = (((LINT(0).setbit (length - 1) - 1) << 1) + 1)/key.p; + + // Generate prime q > p + // qmin <= q <= qmax + key.q = FindPrime (qmin, qmax, PubExp, xrstate); + + // Generate modulus p*q + // 2^(length - 1) <= p*q < 2^length + key.mod = key.p * key.q; + + // Calculate Euler's Phi-function + LINT phi_n = key.mod - key.p - key.q + 1; + + // Generate public key, if not defined in PubExp, of half the number of + // the modulus digits + if (1 == PubExp) + { + key.pubexp = RandLINT (length/2, xrstate) | 1; + while (gcd (key.pubexp, phi_n) != 1) + { + ++key.pubexp; + ++key.pubexp; + } + } + else + { + key.pubexp = PubExp; + } + + // Generate secret key + key.prvexp = key.pubexp.inv (phi_n); + + // Generate secret key components for fast decryption + // acc. to Chinese Remainder Theorem + key.ep = key.prvexp % (key.p - 1); + key.eq = key.prvexp % (key.q - 1); + key.r = inv (key.p, key.q); // r = p^(-1) mod q, as an alternative + // r = q^(-1) mod p is possible + + // Store keylength + key.bitlen_mod = ld (key.mod); + key.bytelen_mod = key.bitlen_mod >> 3; + if ((key.bitlen_mod % 8) > 0) + { + ++key.bytelen_mod; + } + +#ifdef FLINT_TEST + cout << "Modulus = " << key.mod << endl; + cout << "Public exponent e = " << key.pubexp << endl; + cout << "Private exponent d = " << key.prvexp << endl; + cout << "p = " << key.p << endl; + cout << "q = " << key.q << endl; + cout << "d mod p-1 = " << key.ep << endl; + cout << "d mod q-1 = " << key.eq << endl; + cout << "Inverse of p mod q = " << key.r << endl; +#endif // FLINT_TEST + + return testkey (xrstate); +} + + +// Test keys +int RSAkey::testkey (STATEPRNG& xrstate) +{ + LINT mess = RandLINT (ld (key.mod) >> 1, xrstate); + return (mess == fastdecrypt (mexpkm (mess, key.pubexp, key.mod))); +} + + +// Fast RSA-decryption acc. to Chinese Remainder Theorem (CRT) +LINT RSAkey::fastdecrypt (const LINT& mess) +{ + LINT m, w; // If alternative CRT key component + m = mexpkm (mess, key.ep, key.p); // r = q^(-1) mod p + w = mexpkm (mess, key.eq, key.q); // is in use: + w.msub (m, key.q); // m.msub (w, key.p); + w = w.mmul (key.r, key.q) * key.p; // m = m.mmul (key.r, key.p) * key.q; + return (w + m); +} + + +// Operators =, ==, != in class RSAkey + +RSAkey& RSAkey::operator= (const RSAkey &k) +{ + if ((&k != this)) // Don't copy object into itself + { + key.pubexp = k.key.pubexp; + key.prvexp = k.key.prvexp; + key.mod = k.key.mod; + key.p = k.key.p; + key.q = k.key.q; + key.ep = k.key.ep; + key.eq = k.key.eq; + key.r = k.key.r; + key.bitlen_mod = k.key.bitlen_mod; + key.bytelen_mod = k.key.bytelen_mod; + } + return *this; +} + + +int operator== (const RSAkey& k1, const RSAkey& k2) +{ + if (&k1 == &k2) //lint !e506 + { + return 1; + } + + return (k1.key.pubexp == k2.key.pubexp && + k1.key.prvexp == k2.key.prvexp && + k1.key.mod == k2.key.mod && + k1.key.p == k2.key.p && + k1.key.q == k2.key.q && + k1.key.ep == k2.key.ep && + k1.key.eq == k2.key.eq && + k1.key.r == k2.key.r && + k1.key.bitlen_mod == k2.key.bitlen_mod && + k1.key.bytelen_mod == k2.key.bytelen_mod); + + // Operator == returns 1 if k1 == k2, 0 else +} + + +int operator!= (const RSAkey& k1, const RSAkey& k2) +{ + if (&k1 == &k2) //lint !e506 + { + return 0; + } + + return (k1.key.pubexp != k2.key.pubexp || + k1.key.prvexp != k2.key.prvexp || + k1.key.mod != k2.key.mod || + k1.key.p != k2.key.p || + k1.key.q != k2.key.q || + k1.key.ep != k2.key.ep || + k1.key.eq != k2.key.eq || + k1.key.r != k2.key.r || + k1.key.bitlen_mod != k2.key.bitlen_mod || + k1.key.bytelen_mod != k2.key.bytelen_mod); + + // Operator != returns 1 if k1 != k2, 0 else +} + + +fstream& operator<< (fstream& s, const RSAkey& k) +{ + s << k.key.pubexp << k.key.prvexp << k.key.mod << k.key.p << k.key.q + << k.key.ep << k.key.eq << k.key.r; + + write_ind_ushort (s, k.key.bitlen_mod); + write_ind_ushort (s, k.key.bytelen_mod); + + return s; +} + + +fstream& operator>> (fstream& s, RSAkey& k) +{ + s >> k.key.pubexp >> k.key.prvexp >> k.key.mod >> k.key.p >> k.key.q + >> k.key.ep >> k.key.eq >> k.key.r; + + read_ind_ushort (s, &k.key.bitlen_mod); + read_ind_ushort (s, &k.key.bytelen_mod); + + return s; +} + + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +// Member functions of class RSApub + +// Constructor +RSApub::RSApub (const RSAkey& k) +{ + pkey = k.export_public (); +} + + +// RSA-encryption +LINT RSApub::crypt (const UCHAR* Mess, int LenMess, STATEPRNG& xrstate) +{ + int LenEncryptionBlock = pkey.bytelen_mod; + UCHAR* EncryptionBlock = new UCHAR[LenEncryptionBlock]; + + // Format Encryption Block acc. to PKCS#1 + if (NULL == format_pkcs1 (EncryptionBlock, + LenEncryptionBlock, + BLOCKTYPE_ENCR, + Mess, + (ULONG)LenMess, + xrstate)) + { + delete [] EncryptionBlock; + return LINT (0); // Error: Message too long + } + +#ifdef FLINT_TEST + cout_mess ((const char*)EncryptionBlock, LenEncryptionBlock, "Encryption Block before encryption"); +#endif + + // Convert Encryption Block into LINT-value (Constructor 3) + LINT m = LINT (EncryptionBlock, LenEncryptionBlock); + delete [] EncryptionBlock; + + return (mexpkm (m, pkey.pubexp, pkey.mod)); +} + + +// Verify RSA-signature +int RSApub::verify (const UCHAR* Mess, int LenMess, const LINT& Signature) +{ + int length, BlockType, verification = 0; + UCHAR H1[RMDVER>>3]; + UCHAR* H2 = NULL; + UCHAR* EB = lint2byte (mexpkm (Signature, pkey.pubexp, pkey.mod), &length); + + sha1_l (H1, (UCHAR*)Mess, (ULONG)LenMess); + +#ifdef FLINT_TEST + cout_mess ((const char*)H2, pkey.bytelen_mod - 1, "Encryption Block when signature is being verified"); +#endif + + // Read data from decrypted Encryption Block, PKCS#1-formatted + BlockType = parse_pkcs1 (H2, &length, EB, pkey.bytelen_mod); + + if ((BlockType == 0 || BlockType == 1) && + (H2 != NULL) && (length == (RMDVER >> 3))) + { + verification = !memcmp ((char *)H1, (char*)H2, RMDVER >> 3); + } + +#ifdef FLINT_TEST + cout_mess ((const char*)H2, length, "Hash-Wert when signature is being verified"); + cout << "Verification = " << verification << endl; +#endif + + return verification; +} + + +// Delete public key +void RSApub::purge (void) +{ + pkey.pubexp.purge (); + pkey.mod.purge (); + pkey.bitlen_mod = 0; + pkey.bytelen_mod = 0; +} + + +// Operators =, ==, != of class RSApub + +RSApub& RSApub::operator= (const RSApub &k) +{ + if ((&k != this)) // Don't copy object into itself + { + pkey.pubexp = k.pkey.pubexp; + pkey.mod = k.pkey.mod; + pkey.bitlen_mod = k.pkey.bitlen_mod; + pkey.bytelen_mod = k.pkey.bytelen_mod; + } + return *this; +} + + +int operator== (const RSApub& k1, const RSApub& k2) +{ + if (&k1 == &k2) //lint !e506 + { + return 1; + } + + return (k1.pkey.pubexp == k2.pkey.pubexp && + k1.pkey.mod == k2.pkey.mod && + k1.pkey.bitlen_mod == k2.pkey.bitlen_mod && + k1.pkey.bytelen_mod == k2.pkey.bytelen_mod); + + // Operator == returns 1 if k1 == k2, 0 else +} + + +int operator!= (const RSApub& k1, const RSApub& k2) +{ + if (&k1 == &k2) //lint !e506 + { + return 0; + } + + return (k1.pkey.pubexp != k2.pkey.pubexp || + k1.pkey.mod != k2.pkey.mod || + k1.pkey.bitlen_mod != k2.pkey.bitlen_mod || + k1.pkey.bytelen_mod != k2.pkey.bytelen_mod); + + // Operator != returns 1 if k1 != k2, 0 else +} + + +fstream& operator<< (fstream& s, const RSApub& k) +{ + s << k.pkey.pubexp << k.pkey.mod; + + write_ind_ushort (s, k.pkey.bitlen_mod); + write_ind_ushort (s, k.pkey.bytelen_mod); + + return s; +} + + +fstream& operator>> (fstream& s, RSApub& k) +{ + s >> k.pkey.pubexp >> k.pkey.mod; + + read_ind_ushort (s, &k.pkey.bitlen_mod); + read_ind_ushort (s, &k.pkey.bytelen_mod); + +//s >> k.pkey.bitlen_mod >> k.pkey.bytelen_mod; + + return s; +} + + +// Format Encryption Blocks (EB) acc. to PKCS#1 +// EB = 00||BT||PS1...PSl||00||DATA1...DATAk +// BT = Block Type public key operation: +// 01 private key operation (signing) +// 02 public key operation (encryption) +// PSi = BT 01: Value FF (hex), 8 Byte at least +// BT 02: Random values, not zero, 8 bytes at least +// DATAi = Data bytes, k <= (byte length of modulus) - 11, pointed to by +// parameter data, length k in parameter LenData +// Length of modulus in bytes is passed in LenMod +// Parameter EB points to buffer for Encryption Block +// buffer must be allocated by calling function, length of buffer at least +// byte length of modulus + +UCHAR* format_pkcs1 (UCHAR* EB, int LenMod, UCHAR BlockType, const UCHAR* data, int LenData, STATEPRNG& xrstate) +{ + // Calculate length lps of padding block + int lps = LenMod - 3 - LenData; + + if (lps < 8) // PKCS#1: Length padding block >= 8 + { + return NULL; // NULL pointer indicates error status + } + + UCHAR* hlp = EB; + *hlp++ = 0x00; // Leading octet 0x00 + + switch (BlockType) + { + case BLOCKTYPE_SIGN: + *hlp++ = 0x01; // Block Type 01: Private Key Operation + while (lps-- > 0) + { + *hlp++ = 0xff; // 8 <= lps bytes 0xFF + } + break; + case BLOCKTYPE_ENCR: + *hlp++ = 0x02; // Block Type 02: Public Key Operation + while (lps-- > 0) + { + do + { + *hlp = bRand_l (&xrstate); + } // 8 <= lps random bytes not zero + while (*hlp == 0); + ++hlp; + } + break; + default: + return NULL; // Error: Undefined Block Type in BlockType + } + + *hlp++ = 0x00; // Separating octet + + for (int l = 1; l <= LenData; l++) + { + *hlp++ = *data++; + } + + return (UCHAR*)EB; +} + + +// Parser for decrypted Encryption Block, PKCS#1-formatted +// Pointer to data is stored in PayLoad +// Length of data (number of bytes) is stored in LenData +// Returns determined Block Type +// -1 is returned to indicate format error status + +int parse_pkcs1 (UCHAR*& PayLoad, int* LenData, UCHAR* EB, int LenMod) +{ + PayLoad = EB; + UCHAR BlockType; + int error = 0, noofpadc = 0; + + // Check implicitly for the leading 0x00-octet. The leading 0x00-octet as + // leading zero is not reconstructed. However, would the octet be different + // from 0x00, it would be reconstructed resulting in a length of the + // reconstructed encryption block equal to the length of the modulus. This + // error condition is checked here. + + // Check Block Type explicitly: 00, 01, 02 are valid + if ((*LenData != LenMod - 1) || (BlockType = *EB) > 2) + { + return -1; + } + + ++PayLoad; + --*LenData; + switch (BlockType) + { + case 0: + case 1: // Block Type 00 or 01: Private Key Operation + while (*PayLoad != 0 && *LenData > 0) // Analyze padding string PS + { + if (*PayLoad != 0xff) + { + error = 1; // Check padding == 0xFF for Block Type 01 + break; // Set errorflag error to 1 if byte != 0xFF + } + ++PayLoad; + --*LenData; + ++noofpadc; + }; + break; + case 2: // Block Type 02: Public Key Operation + while (*PayLoad != 0 && *LenData > 0) // Search end of padding string PS + { + ++PayLoad; + --*LenData; + ++noofpadc; + }; + break; + default: + PayLoad = (UCHAR*)NULL; + return -1; // Invalid Block Type + } + + if (noofpadc < 8 || error || *LenData == 0) + { + PayLoad = (UCHAR*)NULL; // Summarize result of padding check + return -1; // Error status indicated by -1 + } + else + { + ++PayLoad; // Skip separation byte 00 + --*LenData; // Byte length of payload in LenData + } + + return BlockType; //Return Block Type +} + + +#ifdef FLINT_TEST +// Output of message as Hex-value +static void cout_mess (const char* mess, int len, const char* titel) +{ + cout << titel << " = " << hex + << setfill ('0') << resetiosflags (ios::showbase); + + if (mess > NULL) + { + for (int i = 0; i < len; i++) + { + cout << setw (2) << (((unsigned)*mess++) & 0xff); + } + } + + cout << setfill (' ') << resetiosflags (ios::hex) << endl; +} +#endif + diff --git a/flint/rsa/rsakey.h b/flint/rsa/rsakey.h new file mode 100644 index 0000000..9423f9f --- /dev/null +++ b/flint/rsa/rsakey.h @@ -0,0 +1,142 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module rsakey.h Revision: 09.12.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#ifndef __RSAKEYH__ +#define __RSAKEYH__ // rsakey.h is #included + +#include "flintpp.h" +#include "ripemd.h" +#include "sha1.h" + +#define BLOCKTYPE_SIGN 01 +#define BLOCKTYPE_ENCR 02 + + +typedef struct +{ + LINT pubexp, prvexp, mod, p, q, ep, eq, r; + USHORT bitlen_mod; // Binary length of modulus + USHORT bytelen_mod; // Length of modulus in bytes +} KEYSTRUCT; + + +typedef struct +{ + LINT pubexp, mod; + USHORT bitlen_mod; // Binary length of modulus + USHORT bytelen_mod; // Length of modulus in bytes +} PKEYSTRUCT; + + +class RSAkey +{ + public: + inline RSAkey (void) {}; + RSAkey (int); + RSAkey (int, STATEPRNG&, const LINT& = 1); + PKEYSTRUCT export_public (void) const; + UCHAR* decrypt (const LINT&, int*); + LINT sign (const UCHAR* ,int); + void purge (void); + RSAkey& operator= (const RSAkey&); + + friend int operator== (const RSAkey&, const RSAkey&); + friend int operator!= (const RSAkey&, const RSAkey&); + friend fstream& operator<< (fstream&, const RSAkey&); + friend fstream& operator>> (fstream&, RSAkey&); + + private: + KEYSTRUCT key; + + // Auxiliary functions + int makekey (int, STATEPRNG&, const LINT& = 1); + int testkey (STATEPRNG&); + LINT fastdecrypt (const LINT&); +}; + + +class RSApub +{ + public: + inline RSApub (void) {}; + RSApub (const RSAkey&); + LINT crypt (const UCHAR*, int, STATEPRNG&); + int verify (const UCHAR*, int, const LINT&); + void purge (void); + RSApub& operator= (const RSApub&); + + friend int operator== (const RSApub&, const RSApub&); + friend int operator!= (const RSApub&, const RSApub&); + friend fstream& operator<< (fstream&, const RSApub&); + friend fstream& operator>> (fstream&, RSApub&); + + private: + PKEYSTRUCT pkey; +}; + + +/////////////////////////////////////////////////////////////////////////////// +// Auxiliary functions external to RSA-classes + +// Function for PKCS#1 formatting of encryption blocks +UCHAR* format_pkcs1 (UCHAR*, int, UCHAR, const UCHAR*, int, STATEPRNG&); + + +// Parser for decrypted Encryption Block, PKCS#1-formatted +int parse_pkcs1 (UCHAR*&, int*, UCHAR*, int LenKeyBytes); + +#endif // __RSAKEYH__ + + + + + + + diff --git a/flint/src/_assert.h b/flint/src/_assert.h new file mode 100644 index 0000000..948dfd8 --- /dev/null +++ b/flint/src/_assert.h @@ -0,0 +1,7 @@ +/* Dummy-Assertions */ + +#define Assert(a) (void)0 +#define AssertMsg(a, b) (void)0 +#define AssertAction(a, b) (void)0 +#define AssertMsgAction(a, b, c) (void)0 + diff --git a/flint/src/aes.c b/flint/src/aes.c new file mode 100644 index 0000000..90b2b51 --- /dev/null +++ b/flint/src/aes.c @@ -0,0 +1,3102 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module aes.c Revision: 17.11.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "aes.h" + + +/* Macros */ + +#ifndef inline +#if (_MSC_VER >= 1100) || defined __GNUC__ +#define inline __inline +#else +#define inline /**/ +#endif +#endif + +/* Macro SubWord used in function AESKeyExpansion() */ +#define SubWord(X)\ + {(X) = SBox[(X) & 0xff]\ + | (SBox[((X) >> 8) & 0xff] << 8)\ + | (SBox[((X) >> 16) & 0xff] << 16)\ + | (SBox[((X) >> 24) & 0xff] << 24);} + +#define ROR(X, N) (((X) >> (N)) | ((X) << (32-(N)))) +#define ROL(X, N) (((X) << (N)) | ((X) >> (32-(N)))) + +/* Variables */ + +/* int Nk := Length of cipher key as in 4-byte words {128/32, 192/32, 256/32} */ +/* int Nb := Blocklength as in 4-byte words {128/32, 192/32, 256/32} */ +/* int Nr := Number of rounds {10, 12, 14} */ + +/* Arrays */ + +/* AESKEY CipherKey := Cipher key provided by the user */ +/* AESKEYSCHED ExpandedKey := Key schedule */ +/* AESROUNDKEY RoundKey := Portion of the key schedule for one round */ +/* AESSTATE State := Data representing the cipher text in each round */ +/* UCHAR RC[31] := Constants rc(j), j = 1,...,30*/ +/* UCHAR shifts[3][3] := Constants for rotations in ShiftRows */ + +/* Constants */ + +/* Number of Rounds as functions of Nb and NK */ + +UCHAR NR[3][3] = {{10, 12, 14}, {12, 12, 14}, {14, 14, 14}}; + +/* Notice: rc[0] is wasted, counting of rc() starts with 1 */ +UCHAR rc[] = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36, + 0x6C, 0xD8, 0xAB, 0x4D, 0x9A, 0x2F, 0x5E, 0xBC, 0x63, 0xC6, 0x97, + 0x35, 0x6A, 0xD4, 0xB3, 0x7D, 0xFA, 0xEF, 0xC5, 0x91}; + + +/* Shift distances */ +int Shift[3][3] = {{1, 2, 3}, {1, 2, 3}, {1, 3, 4}}; + + +/* S-Box */ +static const UCHAR SBox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 +}; + + +static const UCHAR InvSBox[256] = { + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, + 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, + 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, + 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, + 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, + 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, + 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, + 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, + 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, + 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, + 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, + 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, + 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, + 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, + 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, + 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, + 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, + 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, + 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, + 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, + 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, + 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, + 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, + 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, + 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, + 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d +}; + + +/* Map Function values of g(x) = x + 1 to Exponents, */ +/* e.g. (x + 1)^25 mod irred. Poly. = x = 2, hence 2 is mapped to 25 */ +static const UCHAR LogTable[] = { + 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x1a, 0xc6, + 0x4b, 0xc7, 0x1b, 0x68, 0x33, 0xee, 0xdf, 0x03, + 0x64, 0x04, 0xe0, 0x0e, 0x34, 0x8d, 0x81, 0xef, + 0x4c, 0x71, 0x08, 0xc8, 0xf8, 0x69, 0x1c, 0xc1, + 0x7d, 0xc2, 0x1d, 0xb5, 0xf9, 0xb9, 0x27, 0x6a, + 0x4d, 0xe4, 0xa6, 0x72, 0x9a, 0xc9, 0x09, 0x78, + 0x65, 0x2f, 0x8a, 0x05, 0x21, 0x0f, 0xe1, 0x24, + 0x12, 0xf0, 0x82, 0x45, 0x35, 0x93, 0xda, 0x8e, + 0x96, 0x8f, 0xdb, 0xbd, 0x36, 0xd0, 0xce, 0x94, + 0x13, 0x5c, 0xd2, 0xf1, 0x40, 0x46, 0x83, 0x38, + 0x66, 0xdd, 0xfd, 0x30, 0xbf, 0x06, 0x8b, 0x62, + 0xb3, 0x25, 0xe2, 0x98, 0x22, 0x88, 0x91, 0x10, + 0x7e, 0x6e, 0x48, 0xc3, 0xa3, 0xb6, 0x1e, 0x42, + 0x3a, 0x6b, 0x28, 0x54, 0xfa, 0x85, 0x3d, 0xba, + 0x2b, 0x79, 0x0a, 0x15, 0x9b, 0x9f, 0x5e, 0xca, + 0x4e, 0xd4, 0xac, 0xe5, 0xf3, 0x73, 0xa7, 0x57, + 0xaf, 0x58, 0xa8, 0x50, 0xf4, 0xea, 0xd6, 0x74, + 0x4f, 0xae, 0xe9, 0xd5, 0xe7, 0xe6, 0xad, 0xe8, + 0x2c, 0xd7, 0x75, 0x7a, 0xeb, 0x16, 0x0b, 0xf5, + 0x59, 0xcb, 0x5f, 0xb0, 0x9c, 0xa9, 0x51, 0xa0, + 0x7f, 0x0c, 0xf6, 0x6f, 0x17, 0xc4, 0x49, 0xec, + 0xd8, 0x43, 0x1f, 0x2d, 0xa4, 0x76, 0x7b, 0xb7, + 0xcc, 0xbb, 0x3e, 0x5a, 0xfb, 0x60, 0xb1, 0x86, + 0x3b, 0x52, 0xa1, 0x6c, 0xaa, 0x55, 0x29, 0x9d, + 0x97, 0xb2, 0x87, 0x90, 0x61, 0xbe, 0xdc, 0xfc, + 0xbc, 0x95, 0xcf, 0xcd, 0x37, 0x3f, 0x5b, 0xd1, + 0x53, 0x39, 0x84, 0x3c, 0x41, 0xa2, 0x6d, 0x47, + 0x14, 0x2a, 0x9e, 0x5d, 0x56, 0xf2, 0xd3, 0xab, + 0x44, 0x11, 0x92, 0xd9, 0x23, 0x20, 0x2e, 0x89, + 0xb4, 0x7c, 0xb8, 0x26, 0x77, 0x99, 0xe3, 0xa5, + 0x67, 0x4a, 0xed, 0xde, 0xc5, 0x31, 0xfe, 0x18, + 0x0d, 0x63, 0x8c, 0x80, 0xc0, 0xf7, 0x70, 0x07 +}; + + +/* Map Exponents to Powers of Generator f(x) = x + 1 of GF(2^8) */ +static const UCHAR AntiLogTable[] = { + 0x01, 0x03, 0x05, 0x0f, 0x11, 0x33, 0x55, 0xff, + 0x1a, 0x2e, 0x72, 0x96, 0xa1, 0xf8, 0x13, 0x35, + 0x5f, 0xe1, 0x38, 0x48, 0xd8, 0x73, 0x95, 0xa4, + 0xf7, 0x02, 0x06, 0x0a, 0x1e, 0x22, 0x66, 0xaa, + 0xe5, 0x34, 0x5c, 0xe4, 0x37, 0x59, 0xeb, 0x26, + 0x6a, 0xbe, 0xd9, 0x70, 0x90, 0xab, 0xe6, 0x31, + 0x53, 0xf5, 0x04, 0x0c, 0x14, 0x3c, 0x44, 0xcc, + 0x4f, 0xd1, 0x68, 0xb8, 0xd3, 0x6e, 0xb2, 0xcd, + 0x4c, 0xd4, 0x67, 0xa9, 0xe0, 0x3b, 0x4d, 0xd7, + 0x62, 0xa6, 0xf1, 0x08, 0x18, 0x28, 0x78, 0x88, + 0x83, 0x9e, 0xb9, 0xd0, 0x6b, 0xbd, 0xdc, 0x7f, + 0x81, 0x98, 0xb3, 0xce, 0x49, 0xdb, 0x76, 0x9a, + 0xb5, 0xc4, 0x57, 0xf9, 0x10, 0x30, 0x50, 0xf0, + 0x0b, 0x1d, 0x27, 0x69, 0xbb, 0xd6, 0x61, 0xa3, + 0xfe, 0x19, 0x2b, 0x7d, 0x87, 0x92, 0xad, 0xec, + 0x2f, 0x71, 0x93, 0xae, 0xe9, 0x20, 0x60, 0xa0, + 0xfb, 0x16, 0x3a, 0x4e, 0xd2, 0x6d, 0xb7, 0xc2, + 0x5d, 0xe7, 0x32, 0x56, 0xfa, 0x15, 0x3f, 0x41, + 0xc3, 0x5e, 0xe2, 0x3d, 0x47, 0xc9, 0x40, 0xc0, + 0x5b, 0xed, 0x2c, 0x74, 0x9c, 0xbf, 0xda, 0x75, + 0x9f, 0xba, 0xd5, 0x64, 0xac, 0xef, 0x2a, 0x7e, + 0x82, 0x9d, 0xbc, 0xdf, 0x7a, 0x8e, 0x89, 0x80, + 0x9b, 0xb6, 0xc1, 0x58, 0xe8, 0x23, 0x65, 0xaf, + 0xea, 0x25, 0x6f, 0xb1, 0xc8, 0x43, 0xc5, 0x54, + 0xfc, 0x1f, 0x21, 0x63, 0xa5, 0xf4, 0x07, 0x09, + 0x1b, 0x2d, 0x77, 0x99, 0xb0, 0xcb, 0x46, 0xca, + 0x45, 0xcf, 0x4a, 0xde, 0x79, 0x8b, 0x86, 0x91, + 0xa8, 0xe3, 0x3e, 0x42, 0xc6, 0x51, 0xf3, 0x0e, + 0x12, 0x36, 0x5a, 0xee, 0x29, 0x7b, 0x8d, 0x8c, + 0x8f, 0x8a, 0x85, 0x94, 0xa7, 0xf2, 0x0d, 0x17, + 0x39, 0x4b, 0xdd, 0x7c, 0x84, 0x97, 0xa2, 0xfd, + 0x1c, 0x24, 0x6c, 0xb4, 0xc7, 0x52, 0xf6, 0x01, + + 0x03, 0x05, 0x0f, 0x11, 0x33, 0x55, 0xff, 0x1a, + 0x2e, 0x72, 0x96, 0xa1, 0xf8, 0x13, 0x35, 0x5f, + 0xe1, 0x38, 0x48, 0xd8, 0x73, 0x95, 0xa4, 0xf7, + 0x02, 0x06, 0x0a, 0x1e, 0x22, 0x66, 0xaa, 0xe5, + 0x34, 0x5c, 0xe4, 0x37, 0x59, 0xeb, 0x26, 0x6a, + 0xbe, 0xd9, 0x70, 0x90, 0xab, 0xe6, 0x31, 0x53, + 0xf5, 0x04, 0x0c, 0x14, 0x3c, 0x44, 0xcc, 0x4f, + 0xd1, 0x68, 0xb8, 0xd3, 0x6e, 0xb2, 0xcd, 0x4c, + 0xd4, 0x67, 0xa9, 0xe0, 0x3b, 0x4d, 0xd7, 0x62, + 0xa6, 0xf1, 0x08, 0x18, 0x28, 0x78, 0x88, 0x83, + 0x9e, 0xb9, 0xd0, 0x6b, 0xbd, 0xdc, 0x7f, 0x81, + 0x98, 0xb3, 0xce, 0x49, 0xdb, 0x76, 0x9a, 0xb5, + 0xc4, 0x57, 0xf9, 0x10, 0x30, 0x50, 0xf0, 0x0b, + 0x1d, 0x27, 0x69, 0xbb, 0xd6, 0x61, 0xa3, 0xfe, + 0x19, 0x2b, 0x7d, 0x87, 0x92, 0xad, 0xec, 0x2f, + 0x71, 0x93, 0xae, 0xe9, 0x20, 0x60, 0xa0, 0xfb, + 0x16, 0x3a, 0x4e, 0xd2, 0x6d, 0xb7, 0xc2, 0x5d, + 0xe7, 0x32, 0x56, 0xfa, 0x15, 0x3f, 0x41, 0xc3, + 0x5e, 0xe2, 0x3d, 0x47, 0xc9, 0x40, 0xc0, 0x5b, + 0xed, 0x2c, 0x74, 0x9c, 0xbf, 0xda, 0x75, 0x9f, + 0xba, 0xd5, 0x64, 0xac, 0xef, 0x2a, 0x7e, 0x82, + 0x9d, 0xbc, 0xdf, 0x7a, 0x8e, 0x89, 0x80, 0x9b, + 0xb6, 0xc1, 0x58, 0xe8, 0x23, 0x65, 0xaf, 0xea, + 0x25, 0x6f, 0xb1, 0xc8, 0x43, 0xc5, 0x54, 0xfc, + 0x1f, 0x21, 0x63, 0xa5, 0xf4, 0x07, 0x09, 0x1b, + 0x2d, 0x77, 0x99, 0xb0, 0xcb, 0x46, 0xca, 0x45, + 0xcf, 0x4a, 0xde, 0x79, 0x8b, 0x86, 0x91, 0xa8, + 0xe3, 0x3e, 0x42, 0xc6, 0x51, 0xf3, 0x0e, 0x12, + 0x36, 0x5a, 0xee, 0x29, 0x7b, 0x8d, 0x8c, 0x8f, + 0x8a, 0x85, 0x94, 0xa7, 0xf2, 0x0d, 0x17, 0x39, + 0x4b, 0xdd, 0x7c, 0x84, 0x97, 0xa2, 0xfd, 0x1c, + 0x24, 0x6c, 0xb4, 0xc7, 0x52, 0xf6 +}; + + +#ifndef AES_COMPACT +static const ULONG Table0[256] = { +0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, +0xb16f6fde, 0x54c5c591, 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, +0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x45caca8f, 0x9d82821f, +0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, +0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, +0x967272e4, 0x5bc0c09b, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, +0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 0x5c343468, 0xf4a5a551, +0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, +0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, +0x0f05050a, 0xb59a9a2f, 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, +0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x1b090912, 0x9e83831d, +0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, +0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, +0x712f2f5e, 0x97848413, 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, +0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xbe6a6ad4, 0x46cbcb8d, +0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, +0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, +0x55333366, 0x94858511, 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, +0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xf35151a2, 0xfea3a35d, +0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, +0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, +0x0ef3f3fd, 0x6dd2d2bf, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, +0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x57c4c493, 0xf2a7a755, +0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, +0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, +0xab90903b, 0x8388880b, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, +0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0x3be0e0db, 0x56323264, +0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, +0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, +0x37e4e4d3, 0x8b7979f2, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, +0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0xb46c6cd8, 0xfa5656ac, +0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, +0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, +0xc7b4b473, 0x51c6c697, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, +0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x907070e0, 0x423e3e7c, +0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, +0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, +0x271d1d3a, 0xb99e9e27, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, +0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0xb69b9b2d, 0x221e1e3c, +0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, +0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, +0xc6424284, 0xb86868d0, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, +0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c}; + +static const ULONG Table1[256] = { +0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, +0x6f6fdeb1, 0xc5c59154, 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d, +0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, 0xcaca8f45, 0x82821f9d, +0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, +0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, +0x7272e496, 0xc0c09b5b, 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, +0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, 0x3434685c, 0xa5a551f4, +0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, +0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, +0x05050a0f, 0x9a9a2fb5, 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, +0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, 0x0909121b, 0x83831d9e, +0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, +0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, +0x2f2f5e71, 0x84841397, 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, +0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, 0x6a6ad4be, 0xcbcb8d46, +0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, +0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, +0x33336655, 0x85851194, 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81, +0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, 0x5151a2f3, 0xa3a35dfe, +0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, +0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, +0xf3f3fd0e, 0xd2d2bf6d, 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f, +0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, 0xc4c49357, 0xa7a755f2, +0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, +0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, +0x90903bab, 0x88880b83, 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, +0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, 0xe0e0db3b, 0x32326456, +0x3a3a744e, 0x0a0a141e, 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4, +0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, +0xe4e4d337, 0x7979f28b, 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, +0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, 0x6c6cd8b4, 0x5656acfa, +0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018, +0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, +0xb4b473c7, 0xc6c69751, 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, +0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, 0x7070e090, 0x3e3e7c42, +0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12, +0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, +0x1d1d3a27, 0x9e9e27b9, 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, +0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, 0x9b9b2db6, 0x1e1e3c22, +0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, +0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 0xbfbf65da, 0xe6e6d731, +0x424284c6, 0x6868d0b8, 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11, +0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a}; + +static const ULONG Table2[256] = { +0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, +0x6fdeb16f, 0xc59154c5, 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b, +0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, 0xca8f45ca, 0x821f9d82, +0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, +0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, +0x72e49672, 0xc09b5bc0, 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, +0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, 0x34685c34, 0xa551f4a5, +0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, +0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, +0x050a0f05, 0x9a2fb59a, 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, +0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, 0x09121b09, 0x831d9e83, +0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, +0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, +0x2f5e712f, 0x84139784, 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced, +0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, 0x6ad4be6a, 0xcb8d46cb, +0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, +0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, +0x33665533, 0x85119485, 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f, +0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, 0x51a2f351, 0xa35dfea3, +0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, +0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, +0xf3fd0ef3, 0xd2bf6dd2, 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec, +0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, 0xc49357c4, 0xa755f2a7, +0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, +0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, +0x903bab90, 0x880b8388, 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, +0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, 0xe0db3be0, 0x32645632, +0x3a744e3a, 0x0a141e0a, 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c, +0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, +0xe4d337e4, 0x79f28b79, 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, +0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, 0x6cd8b46c, 0x56acfa56, +0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808, +0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, +0xb473c7b4, 0xc69751c6, 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, +0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, 0x70e09070, 0x3e7c423e, +0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e, +0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, +0x1d3a271d, 0x9e27b99e, 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, +0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, 0x9b2db69b, 0x1e3c221e, +0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, +0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 0xbf65dabf, 0xe6d731e6, +0x4284c642, 0x68d0b868, 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f, +0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16}; + +static const ULONG Table3[256] = { +0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, +0xdeb16f6f, 0x9154c5c5, 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b, +0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, 0x8f45caca, 0x1f9d8282, +0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, +0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, +0xe4967272, 0x9b5bc0c0, 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, +0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, 0x685c3434, 0x51f4a5a5, +0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, +0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, +0x0a0f0505, 0x2fb59a9a, 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, +0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, 0x121b0909, 0x1d9e8383, +0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, +0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, +0x5e712f2f, 0x13978484, 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded, +0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, 0xd4be6a6a, 0x8d46cbcb, +0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, +0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, +0x66553333, 0x11948585, 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f, +0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, 0xa2f35151, 0x5dfea3a3, +0x80c04040, 0x058a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, +0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, +0xfd0ef3f3, 0xbf6dd2d2, 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, +0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, 0x9357c4c4, 0x55f2a7a7, +0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, +0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, +0x3bab9090, 0x0b838888, 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, +0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, 0xdb3be0e0, 0x64563232, +0x744e3a3a, 0x141e0a0a, 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c, +0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, +0xd337e4e4, 0xf28b7979, 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, +0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, 0xd8b46c6c, 0xacfa5656, +0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, +0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, +0x73c7b4b4, 0x9751c6c6, 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, +0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, 0xe0907070, 0x7c423e3e, +0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e, +0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, +0x3a271d1d, 0x27b99e9e, 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, +0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, 0x2db69b9b, 0x3c221e1e, +0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, +0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, +0x84c64242, 0xd0b86868, 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, +0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616}; + +static const ULONG InvTable0[256] = { +0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 0xcb6bab3b, 0xf1459d1f, +0xab58faac, 0x9303e34b, 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, +0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5, 0x495ab1de, 0x671bba25, +0x980eea45, 0xe1c0fe5d, 0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b, +0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, 0x2d83bed4, 0xd3217458, +0x2969e049, 0x44c8c98e, 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, +0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d, 0x184adf63, 0x82311ae5, +0x60335197, 0x457f5362, 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9, +0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, 0x23d373ab, 0xe2024b72, +0x578f1fe3, 0x2aab5566, 0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3, +0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed, 0x2b1ccf8a, 0x92b479a7, +0xf0f207f3, 0xa1e2694e, 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4, +0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, 0x39ec830b, 0xaaef6040, +0x069f715e, 0x51106ebd, 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, +0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060, 0x24fb9819, 0x97e9bdd6, +0xcc434089, 0x779ed967, 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879, +0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000, 0x83868009, 0x48ed2b32, +0xac70111e, 0x4e725a6c, 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, +0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624, 0xb1670a0c, 0x0fe75793, +0xd296eeb4, 0x9e919b1b, 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c, +0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, 0x0b0d090e, 0xadc78bf2, +0xb9a8b62d, 0xc8a91e14, 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, +0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b, 0x7629438b, 0xdcc623cb, +0x68fcedb6, 0x63f1e4b8, 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684, +0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, 0x4b2f9e1d, 0xf330b2dc, +0xec52860d, 0xd0e3c177, 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, +0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322, 0xc74e4987, 0xc1d138d9, +0xfea2ca8c, 0x360bd498, 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f, +0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54, 0xc2138df6, 0xe8b8d890, +0x5ef7392e, 0xf5afc382, 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, +0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb, 0x097826cd, 0xf418596e, +0x01b79aec, 0xa89a4f83, 0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef, +0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, 0xafb2a431, 0x31233f2a, +0x3094a5c6, 0xc066a235, 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, +0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117, 0x8dd64d76, 0x4db0ef43, +0x544daacc, 0xdf0496e4, 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546, +0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, 0x5a1d67b3, 0x52d2db92, +0x335610e9, 0x1347d66d, 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, +0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a, 0x59dfd29c, 0x3f73f255, +0x79ce1418, 0xbf37c773, 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478, +0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, 0x72c31d16, 0x0c25e2bc, +0x8b493c28, 0x41950dff, 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, +0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0}; + +static const ULONG InvTable1[256] = { +0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, 0x6bab3bcb, 0x459d1ff1, +0x58faacab, 0x03e34b93, 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, +0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f, 0x5ab1de49, 0x1bba2567, +0x0eea4598, 0xc0fe5de1, 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6, +0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, 0x83bed42d, 0x217458d3, +0x69e04929, 0xc8c98e44, 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, +0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4, 0x4adf6318, 0x311ae582, +0x33519760, 0x7f536245, 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994, +0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, 0xd373ab23, 0x024b72e2, +0x8f1fe357, 0xab55662a, 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5, +0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, 0x1ccf8a2b, 0xb479a792, +0xf207f3f0, 0xe2694ea1, 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a, +0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, 0xec830b39, 0xef6040aa, +0x9f715e06, 0x106ebd51, 0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46, +0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff, 0xfb981924, 0xe9bdd697, +0x434089cc, 0x9ed96777, 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db, +0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000, 0x86800983, 0xed2b3248, +0x70111eac, 0x725a6c4e, 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, +0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a, 0x670a0cb1, 0xe757930f, +0x96eeb4d2, 0x919b1b9e, 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16, +0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, 0x0d090e0b, 0xc78bf2ad, +0xa8b62db9, 0xa91e14c8, 0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd, +0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34, 0x29438b76, 0xc623cbdc, +0xfcedb668, 0xf1e4b863, 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420, +0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, 0x2f9e1d4b, 0x30b2dcf3, +0x52860dec, 0xe3c177d0, 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, +0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef, 0x4e4987c7, 0xd138d9c1, +0xa2ca8cfe, 0x0bd49836, 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4, +0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, 0x138df6c2, 0xb8d890e8, +0xf7392e5e, 0xafc382f5, 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, +0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b, 0x7826cd09, 0x18596ef4, +0xb79aec01, 0x9a4f83a8, 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6, +0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6, 0xb2a431af, 0x233f2a31, +0x94a5c630, 0x66a235c0, 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, +0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f, 0xd64d768d, 0xb0ef434d, +0x4daacc54, 0x0496e4df, 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f, +0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, 0x1d67b35a, 0xd2db9252, +0x5610e933, 0x47d66d13, 0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89, +0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c, 0xdfd29c59, 0x73f2553f, +0xce141879, 0x37c773bf, 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886, +0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, 0xc31d1672, 0x25e2bc0c, +0x493c288b, 0x950dff41, 0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, +0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042}; + +static const ULONG InvTable2[256] = { +0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 0xab3bcb6b, 0x9d1ff145, +0xfaacab58, 0xe34b9303, 0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c, +0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3, 0xb1de495a, 0xba25671b, +0xea45980e, 0xfe5de1c0, 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, +0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, 0xbed42d83, 0x7458d321, +0xe0492969, 0xc98e44c8, 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, +0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a, 0xdf63184a, 0x1ae58231, +0x51976033, 0x5362457f, 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b, +0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, 0x73ab23d3, 0x4b72e202, +0x1fe3578f, 0x55662aab, 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, +0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82, 0xcf8a2b1c, 0x79a792b4, +0x07f3f0f2, 0x694ea1e2, 0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe, +0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, 0x830b39ec, 0x6040aaef, +0x715e069f, 0x6ebd5110, 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, +0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15, 0x981924fb, 0xbdd697e9, +0x4089cc43, 0xd967779e, 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee, +0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000, 0x80098386, 0x2b3248ed, +0x111eac70, 0x5a6c4e72, 0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, +0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e, 0x0a0cb167, 0x57930fe7, +0xeeb4d296, 0x9b1b9e91, 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a, +0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 0x090e0b0d, 0x8bf2adc7, +0xb62db9a8, 0x1e14c8a9, 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, +0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e, 0x438b7629, 0x23cbdcc6, +0xedb668fc, 0xe4b863f1, 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, +0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 0x9e1d4b2f, 0xb2dcf330, +0x860dec52, 0xc177d0e3, 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, +0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90, 0x4987c74e, 0x38d9c1d1, +0xca8cfea2, 0xd498360b, 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf, +0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, 0x8df6c213, 0xd890e8b8, +0x392e5ef7, 0xc382f5af, 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, +0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, 0x26cd0978, 0x596ef418, +0x9aec01b7, 0x4f83a89a, 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8, +0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, 0xa431afb2, 0x3f2a3123, +0xa5c63094, 0xa235c066, 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, +0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6, 0x4d768dd6, 0xef434db0, +0xaacc544d, 0x96e4df04, 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51, +0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41, 0x67b35a1d, 0xdb9252d2, +0x10e93356, 0xd66d1347, 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, +0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1, 0xd29c59df, 0xf2553f73, +0x141879ce, 0xc773bf37, 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db, +0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 0x1d1672c3, 0xe2bc0c25, +0x3c288b49, 0x0dff4195, 0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1, +0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257}; + +static const ULONG InvTable3[256] = { +0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 0x3bcb6bab, 0x1ff1459d, +0xacab58fa, 0x4b9303e3, 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, +0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362, 0xde495ab1, 0x25671bba, +0x45980eea, 0x5de1c0fe, 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, +0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, 0xd42d83be, 0x58d32174, +0x492969e0, 0x8e44c8c9, 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, +0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace, 0x63184adf, 0xe582311a, +0x97603351, 0x62457f53, 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08, +0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, 0xab23d373, 0x72e2024b, +0xe3578f1f, 0x662aab55, 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, +0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216, 0x8a2b1ccf, 0xa792b479, +0xf3f0f207, 0x4ea1e269, 0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6, +0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6, 0x0b39ec83, 0x40aaef60, +0x5e069f71, 0xbd51106e, 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, +0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550, 0x1924fb98, 0xd697e9bd, +0x89cc4340, 0x67779ed9, 0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8, +0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000, 0x09838680, 0x3248ed2b, +0x1eac7011, 0x6c4e725a, 0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d, +0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36, 0x0cb1670a, 0x930fe757, +0xb4d296ee, 0x1b9e919b, 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12, +0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 0x0e0b0d09, 0xf2adc78b, +0x2db9a8b6, 0x14c8a91e, 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, +0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb, 0x8b762943, 0xcbdcc623, +0xb668fced, 0xb863f1e4, 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, +0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, 0x1d4b2f9e, 0xdcf330b2, +0x0dec5286, 0x77d0e3c1, 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, +0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033, 0x87c74e49, 0xd9c1d138, +0x8cfea2ca, 0x98360bd4, 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad, +0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, 0xf6c2138d, 0x90e8b8d8, +0x2e5ef739, 0x82f5afc3, 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, +0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, 0xcd097826, 0x6ef41859, +0xec01b79a, 0x83a89a4f, 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815, +0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, 0x31afb2a4, 0x2a31233f, +0xc63094a5, 0x35c066a2, 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, +0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691, 0x768dd64d, 0x434db0ef, +0xcc544daa, 0xe4df0496, 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165, +0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b, 0xb35a1d67, 0x9252d2db, +0xe9335610, 0x6d1347d6, 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, +0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147, 0x9c59dfd2, 0x553f73f2, +0x1879ce14, 0x73bf37c7, 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44, +0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 0x1672c31d, 0xbc0c25e2, +0x288b493c, 0xff41950d, 0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156, +0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8}; +#endif /* AES_COMPACT */ + +int IsBigEndian; + +#ifdef AES_VERBOSE +int ROUND; +#endif + + +/******************************************************************************/ +/* AES Private Kernel Functions */ + +inline UCHAR xtime (unsigned int f); +static inline UCHAR xplus1time (unsigned int f); +inline UCHAR polymul (unsigned int f, unsigned int g); +inline void MixColumns (AESSTATE State, int Nb); +inline void InvMixColumns (AESSTATE State, int Nb); +static inline void ShiftRows (AESSTATE State, int Nb); +static inline void InvShiftRows (AESSTATE State, int Nb); +inline void SubBytes (AESSTATE State, int Nb); +inline void InvSubBytes (AESSTATE State, int Nb); +inline void AddRoundKey (AESSTATE State, AESROUNDKEY RoundKey, int Nb); +static inline void Round (AESSTATE State, AESROUNDKEY RoundKey, int Nb); +static inline void FinalRound (AESSTATE State, AESROUNDKEY RoundKey, int Nb); +static inline void InvRound (AESSTATE State, AESROUNDKEY RoundKey, int Nb); +static inline void InvFinalRound (AESSTATE State, AESROUNDKEY RoundKey, int Nb); + +/* Functions for purging security critical data */ +static inline void ZeroUchar (UCHAR *a); +static inline void Zero2Uchar (UCHAR *a, UCHAR *b); +static inline void Zero4Uchar (UCHAR *a, UCHAR *b, UCHAR *c, UCHAR *d); +static inline void ZeroUlong (ULONG *a); +static inline void Zero2Ulong (ULONG *a, ULONG *b); +static inline void Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d); +static inline void ZeroUcharArray (UCHAR *a, int Len); + +/* Test of Endianness */ +static void TestEndian(int *IsBigEndian); + +#ifdef AES_VERBOSE +static inline void PrintState (char * step, AESSTATE State, int Nb); +#endif /* AES_VERBOSE? */ + + +/******************************************************************************/ +/* */ +/* Function: Key Schedule */ +/* Syntax: int */ +/* AESKeySched_l (AESKEYSCHED *CookedKey, AESKEY RawKey, */ +/* int KeyLength, int BlkLength, int DFlag, int mode); */ +/* Input: AESKEY RawKey (Key vector provided by user) */ +/* int KeyLength (Length of user key in bit: 128, 192, 256) */ +/* int BlkLength (Length of plaintext/cipherblocks in bit) */ +/* int DFlag (Encipher/decipher mode AES_ENC, AES_DEC) */ +/* int mode (Mode of operation AES_ECB, AES_CBC) */ +/* Output: AESKEYSCHED *CookedKey (Keyschedule) */ +/* Returns: E_AES_OK if everything is O.K. */ +/* E_AES_DIRECTION if DFlag != AES_ENC or AES_DEC */ +/* E_AES_MODE if mode != AES_ECB or AES_CBC */ +/* E_AES_KEYLENGTH if KeyLength != 128, 192 or 256 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESKeySched_l (AESKEYSCHED *CookedKey, AESKEY RawKey, int KeyLength, + int BlkLength, int DFlag, int mode) +{ + if ((DFlag != AES_ENC) && (DFlag != AES_DEC)) + { +#if defined AES_VERBOSE + fprintf (stderr, "AES_ERR_DIRECTION in line %d\n", __LINE__); +#endif + return AES_ERR_DIRECTION; + } + + if ((KeyLength != 128) && (KeyLength != 192) && (KeyLength != 256)) + { +#if defined AES_VERBOSE + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + if ((BlkLength != 128) && (BlkLength != 192) && (BlkLength != 256)) + { +#ifdef AES_VERBOSE + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + switch (DFlag) + { + case AES_ENC: + AESKeyExpansion (CookedKey->ExpandedKey, RawKey, KeyLength, BlkLength); + break; + case AES_DEC: + AESInvKeyExpansion (CookedKey->ExpandedKey, RawKey, KeyLength, BlkLength); + break; + default: + return AES_ERR_MODE; + } + + CookedKey->mode = mode; + CookedKey->KeyLength = KeyLength; + CookedKey->BlkLength = BlkLength; + CookedKey->DFlag = DFlag; + return AES_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Initialization of AES routines */ +/* Syntax: int */ +/* AESInit_l (AESWORKSPACE *ws, int mode, int BlkLength, */ +/* AESBLOCK IV, AESKEYSCHED *CookedKey, AESKEY RawKey, */ +/* int KeyLength, int DFlag); */ +/* Input: int mode (Mode of operation AES_ECB, AES_CBC) */ +/* int BlkLength (Length of plaintext/cipherblocks in bit) */ +/* AESBLOCK IV (Initialization vector for CBC mode operation, */ +/* IV may be NULL for ECB mode) */ +/* AESKEY RawKey (Key vector provided by user) */ +/* int KeyLength (Length of user key in bit: 128, 192, 256) */ +/* int DFlag (Encipher/decipher mode AES_ENC, AES_DEC) */ +/* Output: AESWORKSPACE *ws (Initialized buffer) */ +/* AESKEYSCHED *CookedKey (Keyschedule) */ +/* Returns: E_AES_OK if everything is O.K. */ +/* E_AES_DIRECTION if DFlag != AES_ENC or AES_DEC */ +/* E_AES_MODE if mode != AES_ECB or AES_CBC */ +/* E_AES_KEYLENGTH if KeyLength != 128, 192 or 256 */ +/* E_AES_BLKLENGTH if BlkLength != 128, 192 or 256 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESInit_l (AESWORKSPACE *ws, int mode, int BlkLength, AESBLOCK IV, + AESKEYSCHED *CookedKey, AESKEY RawKey, int KeyLength, int DFlag) +{ + int col, col4, Nb; + if ((mode != AES_CBC) && (mode != AES_ECB)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_MODE in line %d\n", __LINE__); +#endif + return AES_ERR_MODE; + } + + if ((BlkLength != 128) && (BlkLength != 192) && (BlkLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + if ((KeyLength != 128) && (KeyLength != 192) && (KeyLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + if ((DFlag != AES_ENC) && (DFlag != AES_DEC)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_DIRECTION in line %d\n", __LINE__); +#endif + return AES_ERR_DIRECTION; + } + + TestEndian (&IsBigEndian); + + ws->mode = mode; + ws->BlkLength = BlkLength; + Nb = BlkLength/32; + + AESKeySched (CookedKey, RawKey, KeyLength, BlkLength, DFlag, mode); + + if (ws->mode == AES_CBC) + { + switch (CookedKey->DFlag) + { + case AES_ENC: + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + ws->State[col] = UC2UL(&IV[col4]); + } + break; + case AES_DEC: + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + ws->Block[col] = UC2UL(&IV[col4]); + } + break; + } + } + + return AES_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: AES encryption and decryption with support for ECB/CBC modes */ +/* Processing of several portions of text by subsequent calls to */ +/* AESCrypt_l is supported for ECB and CBC mode */ +/* If not #defined AES_COMPACT fast table lookup is performed */ +/* Syntax: int */ +/* AESCrypt_l (AESBLOCK OutBlock, AESWORKSPACE *ws, */ +/* AESKEYSCHED *ks, AESBLOCK InBlock, int InLength); */ +/* Input: AESWORKSPACE *ws (Initialized buffer) */ +/* AESKEYSCHED *ks (Initialized Keyschedule) */ +/* AESBLOCK InBlock (Plaintext/Ciphertext) */ +/* int InLength (Length of InBlock in bytes */ +/* InLength = 0 mod BlkLength/8 given in AESInit_l */ +/* Output: AESBLOCK OutBlock (Ciphertext/Plaintext) */ +/* Returns: E_AES_OK if everything is O.K. */ +/* E_AES_DIRECTION if DFlag differs in ws and ks */ +/* E_AES_MODE if mode differs in ws and ks */ +/* E_AES_KEYLENGTH if KeyLength given in ks != 128, 192 or 256 */ +/* E_AES_BLKLENGTH if BlkLength differs in ws and ks */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESCrypt_l (AESBLOCK OutBlock, AESWORKSPACE *ws, AESKEYSCHED *ks, + AESBLOCK InBlock, int InLength) +{ + int indx, blck, block, col, Nbc, Nbw, Nk, noofblocks; + + if (ws == NULL || ks == NULL || InBlock == NULL) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_INIT in line %d\n", __LINE__); +#endif + return AES_ERR_INIT; + } + + if (ws->mode != ks->mode) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_MODE in line %d\n", __LINE__); +#endif + return AES_ERR_MODE; + } + + if (ws->BlkLength != ks->BlkLength) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + if ((ks->KeyLength != 128) && + (ks->KeyLength != 192) && + (ks->KeyLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + Nbc = ws->BlkLength/8; + Nbw = ws->BlkLength/32; + Nk = ks->KeyLength/32; + noofblocks = InLength/Nbc; + + if (InLength % Nbc) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + switch (ws->mode) + { + case AES_ECB: + switch (ks->DFlag) + { + case AES_ENC: /* ECB-Mode */ + for (block = 0; block < noofblocks; block++) + { + blck = Nbc*block; + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + ws->State[col] = UC2UL(&InBlock[indx]); + } + + AESEncState (ws->State, ks->ExpandedKey, Nk, Nbw); + + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + OutBlock[indx] = (UCHAR)(ws->State[col] ); + OutBlock[indx + 1] = (UCHAR)(ws->State[col] >> 8); + OutBlock[indx + 2] = (UCHAR)(ws->State[col] >> 16); + OutBlock[indx + 3] = (UCHAR)(ws->State[col] >> 24); + } + } + break; + + case AES_DEC: /* ECB-Mode */ + for (block = 0; block < noofblocks; block++) + { + blck = Nbc*block; + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + ws->State[col] = UC2UL(&InBlock[indx]); + } + + AESDecState (ws->State, ks->ExpandedKey, Nk, Nbw); + + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + OutBlock[indx] = (UCHAR)(ws->State[col] ); + OutBlock[indx + 1] = (UCHAR)(ws->State[col] >> 8); + OutBlock[indx + 2] = (UCHAR)(ws->State[col] >> 16); + OutBlock[indx + 3] = (UCHAR)(ws->State[col] >> 24); + } + } + break; + default: + return AES_ERR_DIRECTION; + } + break; + + case AES_CBC: + switch (ks->DFlag) + { + case AES_ENC: /* CBC-Mode */ + for (block = 0; block < noofblocks; block++) + { + blck = Nbc*block; + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + ws->State[col] ^= UC2UL(&InBlock[indx]); + } + + AESEncState (ws->State, ks->ExpandedKey, Nk, Nbw); + + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + OutBlock[indx] = (UCHAR)(ws->State[col] ); + OutBlock[indx + 1] = (UCHAR)(ws->State[col] >> 8); + OutBlock[indx + 2] = (UCHAR)(ws->State[col] >> 16); + OutBlock[indx + 3] = (UCHAR)(ws->State[col] >> 24); + } + } + + break; + case AES_DEC: /* CBC-Mode */ + for (block = 0; block < noofblocks; block++) + { + blck = Nbc*block; + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + ws->State[col] = UC2UL(&InBlock[indx]); + } + + AESDecState (ws->State, ks->ExpandedKey, Nk, Nbw); + + for (col = 0; col < Nbw; col++) + { + indx = blck + ((unsigned)col<<2); + + ws->State[col] ^= ws->Block[col]; + + ws->Block[col] = UC2UL(&InBlock[indx]); + + OutBlock[indx] = (UCHAR)(ws->State[col] ); + OutBlock[indx + 1] = (UCHAR)(ws->State[col] >> 8); + OutBlock[indx + 2] = (UCHAR)(ws->State[col] >> 16); + OutBlock[indx + 3] = (UCHAR)(ws->State[col] >> 24); + } + } + + break; + default: + return AES_ERR_DIRECTION; + } + break; + default: + return AES_ERR_MODE; + } + + return AES_OK; +} + + +/******************************************************************************/ +/* AES Public Kernel Functions */ + + +/******************************************************************************/ +/* */ +/* Function: AES key expansion to key schedule for encryption */ +/* Syntax: int */ +/* AESKeyExpansion_l (AESXPKEY ExpandedKey, AESKEY RawKey, */ +/* int KeyLength, int BlockLength); */ +/* Input: AESKEY RawKey (User Key as byte array) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESEXPKEY ExpandedKey (Key schedule) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESKeyExpansion_l (AESXPKEY ExpandedKey, AESKEY RawKey, + int KeyLength, int BlockLength) +{ + int col, col4, Nb, Nk, Nr; + ULONG *keyptr, *keyptr1, *keyptr2, tmp; + + Nb = BlockLength/32; + Nk = KeyLength/32; + Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + + if ((BlockLength != 128) && (BlockLength != 192) && (BlockLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + if ((KeyLength != 128) && (KeyLength != 192) && (KeyLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + for (col = col4 = 0; col < Nk - 1; col++, col4+=4) + { + keyptr = &ExpandedKey[col]; + *keyptr = UC2UL(&RawKey[col4]); + } + + keyptr = &ExpandedKey[Nk-1]; + tmp = (*keyptr = UC2UL(&RawKey[(unsigned)(Nk-1)<<2])); + + for (col = Nk; col < Nb*(Nr + 1); col++) + { + keyptr1 = &ExpandedKey[col]; + keyptr2 = &ExpandedKey[col-Nk]; + + if (col % Nk == 0) + { + tmp = ROR (tmp, 8); + SubWord (tmp); + tmp ^= rc[col/Nk]; + } + + else if ((Nk == 8) && (col % Nk == 4)) + { + SubWord (tmp); /*lint !e771 At this point tmp is initialized! */ + } + + tmp = (*keyptr1 = *keyptr2 ^ tmp); + } + +#ifdef AES_SECURE + ZeroUlong (&tmp); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES key expansion to inverse key schedule for decryption */ +/* Syntax: int */ +/* AESInvKeyExpansion_l (AESXPKEY InvExpandedKey, AESKEY RawKey, */ +/* int KeyLength, int BlockLength); */ +/* Input: AESKEY RawKey (User Key as byte array) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESEXPKEY InvExpandedKey (Invers key schedule) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESInvKeyExpansion_l (AESXPKEY InvExpandedKey, AESKEY RawKey, + int KeyLength, int BlockLength) +{ + int round, Nb, Nk, Nr, error; + + Nb = BlockLength/32; + Nk = KeyLength/32; + Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + + if (0 != (error = AESKeyExpansion (InvExpandedKey, RawKey, KeyLength, BlockLength))) + { + return error; + } + + for (round = 1; round < Nr; round++) + { + InvMixColumns (&InvExpandedKey[round*Nb], Nb); + } + + return 0; +} + + +#ifndef AES_COMPACT + +/******************************************************************************/ +/* */ +/* Function: AES processing of state variable (encryption) */ +/* Fast table lookup */ +/* Syntax: int */ +/* AESEncState_l (AESSTATE State, AESXPKEY ExpandedKey, */ +/* int Nk, int Nb); */ +/* Input: AESSTATE State (State variable to process) */ +/* AESEXPKEY ExpandedKey (Key schedule) */ +/* int Nk (Keylength in 4-byte-words 4, 6, 8) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESEncState_l (AESSTATE State, AESXPKEY ExpandedKey, int Nk, int Nb) +{ + int round, Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + ULONG *keyptr; + ULONG a0, a1, a2, a3, a4, a5, a6, a7; + ULONG b0, b1, b2, b3, b4, b5, b6; + + switch (Nb) + { + case 8: + a7 = State[7] ^ ExpandedKey[7]; + a6 = State[6] ^ ExpandedKey[6]; + case 6: + a5 = State[5] ^ ExpandedKey[5]; + a4 = State[4] ^ ExpandedKey[4]; + case 4: + a3 = State[3] ^ ExpandedKey[3]; + a2 = State[2] ^ ExpandedKey[2]; + a1 = State[1] ^ ExpandedKey[1]; + a0 = State[0] ^ ExpandedKey[0]; + } + + for (keyptr = &ExpandedKey[Nb], round = 1; round < Nr; round++) + { + switch (Nb) + { + case 4: + b0 = Table0[(a0 ) & 0xff] + ^ Table1[(a1 >> 8) & 0xff] + ^ Table2[(a2 >> 16) & 0xff] + ^ Table3[(a3 >> 24) ]; + + b1 = Table0[(a1 ) & 0xff] + ^ Table1[(a2 >> 8) & 0xff] + ^ Table2[(a3 >> 16) & 0xff] + ^ Table3[(a0 >> 24) ]; + + b2 = Table0[(a2 ) & 0xff] + ^ Table1[(a3 >> 8) & 0xff] + ^ Table2[(a0 >> 16) & 0xff] + ^ Table3[(a1 >> 24) ]; + + a3 = Table0[(a3 ) & 0xff] + ^ Table1[(a0 >> 8) & 0xff] + ^ Table2[(a1 >> 16) & 0xff] + ^ Table3[(a2 >> 24) ] + ^ keyptr[3]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + break; + + case 6: + b0 = Table0[(a0 ) & 0xff] + ^ Table1[(a1 >> 8) & 0xff] + ^ Table2[(a2 >> 16) & 0xff] + ^ Table3[(a3 >> 24) ]; + + b1 = Table0[(a1 ) & 0xff] + ^ Table1[(a2 >> 8) & 0xff] + ^ Table2[(a3 >> 16) & 0xff] + ^ Table3[(a4 >> 24) ]; + + b2 = Table0[(a2 ) & 0xff] + ^ Table1[(a3 >> 8) & 0xff] + ^ Table2[(a4 >> 16) & 0xff] + ^ Table3[(a5 >> 24) ]; + + b3 = Table0[(a3 ) & 0xff] + ^ Table1[(a4 >> 8) & 0xff] + ^ Table2[(a5 >> 16) & 0xff] + ^ Table3[(a0 >> 24) ]; + + b4 = Table0[(a4 ) & 0xff] + ^ Table1[(a5 >> 8) & 0xff] + ^ Table2[(a0 >> 16) & 0xff] + ^ Table3[(a1 >> 24) ]; + + a5 = Table0[(a5 ) & 0xff] + ^ Table1[(a0 >> 8) & 0xff] + ^ Table2[(a1 >> 16) & 0xff] + ^ Table3[(a2 >> 24) ] + ^ keyptr[5]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + a3 = b3 ^ keyptr[3]; + a4 = b4 ^ keyptr[4]; + break; + + case 8: + /* col 0 */ + b0 = Table0[(a0 ) & 0xff] + ^ Table1[(a1 >> 8) & 0xff] + ^ Table2[(a3 >> 16) & 0xff] + ^ Table3[(a4 >> 24) ]; + + /* col 1 */ + b1 = Table0[(a1 ) & 0xff] + ^ Table1[(a2 >> 8) & 0xff] + ^ Table2[(a4 >> 16) & 0xff] + ^ Table3[(a5 >> 24) ]; + + /* col 2 */ + b2 = Table0[(a2 ) & 0xff] + ^ Table1[(a3 >> 8) & 0xff] + ^ Table2[(a5 >> 16) & 0xff] + ^ Table3[(a6 >> 24) ]; + + /* col 3 */ + b3 = Table0[(a3 ) & 0xff] + ^ Table1[(a4 >> 8) & 0xff] + ^ Table2[(a6 >> 16) & 0xff] + ^ Table3[(a7 >> 24) ]; + + /* col 4 */ + b4 = Table0[(a4 ) & 0xff] + ^ Table1[(a5 >> 8) & 0xff] + ^ Table2[(a7 >> 16) & 0xff] + ^ Table3[(a0 >> 24) ]; + + /* col 5 */ + b5 = Table0[(a5 ) & 0xff] + ^ Table1[(a6 >> 8) & 0xff] + ^ Table2[(a0 >> 16) & 0xff] + ^ Table3[(a1 >> 24) ]; + + /* col 6 */ + b6 = Table0[(a6 ) & 0xff] + ^ Table1[(a7 >> 8) & 0xff] + ^ Table2[(a1 >> 16) & 0xff] + ^ Table3[(a2 >> 24) ]; + + /* col 7 */ + a7 = Table0[(a7 ) & 0xff] + ^ Table1[(a0 >> 8) & 0xff] + ^ Table2[(a2 >> 16) & 0xff] + ^ Table3[(a3 >> 24) ] + ^ keyptr[7]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + a3 = b3 ^ keyptr[3]; + a4 = b4 ^ keyptr[4]; + a5 = b5 ^ keyptr[5]; + a6 = b6 ^ keyptr[6]; + break; + } + + keyptr += Nb; + } + + /* Final round */ + switch (Nb) + { + case 4: + State[0] = (SBox[(a0 ) & 0xff] ) + ^ (SBox[(a1 >> 8) & 0xff] << 8) + ^ (SBox[(a2 >> 16) & 0xff] << 16) + ^ (SBox[(a3 >> 24) ] << 24) + ^ keyptr[0]; + + State[1] = (SBox[(a1 ) & 0xff] ) + ^ (SBox[(a2 >> 8) & 0xff] << 8) + ^ (SBox[(a3 >> 16) & 0xff] << 16) + ^ (SBox[(a0 >> 24) ] << 24) + ^ keyptr[1]; + + State[2] = (SBox[(a2 ) & 0xff] ) + ^ (SBox[(a3 >> 8) & 0xff] << 8) + ^ (SBox[(a0 >> 16) & 0xff] << 16) + ^ (SBox[(a1 >> 24) ] << 24) + ^ keyptr[2]; + + State[3] = (SBox[(a3 ) & 0xff] ) + ^ (SBox[(a0 >> 8) & 0xff] << 8) + ^ (SBox[(a1 >> 16) & 0xff] << 16) + ^ (SBox[(a2 >> 24) ] << 24) + ^ keyptr[3]; + break; + + case 6: + State[0] = (SBox[(a0 ) & 0xff] ) + ^ (SBox[(a1 >> 8) & 0xff] << 8) + ^ (SBox[(a2 >> 16) & 0xff] << 16) + ^ (SBox[(a3 >> 24) ] << 24) + ^ keyptr[0]; + + State[1] = (SBox[(a1 ) & 0xff] ) + ^ (SBox[(a2 >> 8) & 0xff] << 8) + ^ (SBox[(a3 >> 16) & 0xff] << 16) + ^ (SBox[(a4 >> 24) ] << 24) + ^ keyptr[1]; + + State[2] = (SBox[(a2 ) & 0xff] ) + ^ (SBox[(a3 >> 8) & 0xff] << 8) + ^ (SBox[(a4 >> 16) & 0xff] << 16) + ^ (SBox[(a5 >> 24) ] << 24) + ^ keyptr[2]; + + State[3] = (SBox[(a3 ) & 0xff] ) + ^ (SBox[(a4 >> 8) & 0xff] << 8) + ^ (SBox[(a5 >> 16) & 0xff] << 16) + ^ (SBox[(a0 >> 24) ] << 24) + ^ keyptr[3]; + + State[4] = (SBox[(a4 ) & 0xff] ) + ^ (SBox[(a5 >> 8) & 0xff] << 8) + ^ (SBox[(a0 >> 16) & 0xff] << 16) + ^ (SBox[(a1 >> 24) ] << 24) + ^ keyptr[4]; + + State[5] = (SBox[(a5 ) & 0xff] ) + ^ (SBox[(a0 >> 8) & 0xff] << 8) + ^ (SBox[(a1 >> 16) & 0xff] << 16) + ^ (SBox[(a2 >> 24) ] << 24) + ^ keyptr[5]; + break; + + case 8: + /* col 0 */ + State[0] = (SBox[(a0 ) & 0xff] ) + ^ (SBox[(a1 >> 8) & 0xff] << 8) + ^ (SBox[(a3 >> 16) & 0xff] << 16) + ^ (SBox[(a4 >> 24) ] << 24) + ^ keyptr[0]; + + + /* col 1 */ + State[1] = (SBox[(a1 ) & 0xff] ) + ^ (SBox[(a2 >> 8) & 0xff] << 8) + ^ (SBox[(a4 >> 16) & 0xff] << 16) + ^ (SBox[(a5 >> 24) ] << 24) + ^ keyptr[1]; + + /* col 2 */ + State[2] = (SBox[(a2 ) & 0xff] ) + ^ (SBox[(a3 >> 8) & 0xff] << 8) + ^ (SBox[(a5 >> 16) & 0xff] << 16) + ^ (SBox[(a6 >> 24) ] << 24) + ^ keyptr[2]; + + /* col 3 */ + State[3] = (SBox[(a3 ) & 0xff] ) + ^ (SBox[(a4 >> 8) & 0xff] << 8) + ^ (SBox[(a6 >> 16) & 0xff] << 16) + ^ (SBox[(a7 >> 24) ] << 24) + ^ keyptr[3]; + + /* col 4 */ + State[4] = (SBox[(a4 ) & 0xff] ) + ^ (SBox[(a5 >> 8) & 0xff] << 8) + ^ (SBox[(a7 >> 16) & 0xff] << 16) + ^ (SBox[(a0 >> 24) ] << 24) + ^ keyptr[4]; + + /* col 5 */ + State[5] = (SBox[(a5 ) & 0xff] ) + ^ (SBox[(a6 >> 8) & 0xff] << 8) + ^ (SBox[(a0 >> 16) & 0xff] << 16) + ^ (SBox[(a1 >> 24) ] << 24) + ^ keyptr[5]; + + /* col 6 */ + State[6] = (SBox[(a6 ) & 0xff] ) + ^ (SBox[(a7 >> 8) & 0xff] << 8) + ^ (SBox[(a1 >> 16) & 0xff] << 16) + ^ (SBox[(a2 >> 24) ] << 24) + ^ keyptr[6]; + + /* col 7 */ + State[7] = (SBox[(a7 ) & 0xff] ) + ^ (SBox[(a0 >> 8) & 0xff] << 8) + ^ (SBox[(a2 >> 16) & 0xff] << 16) + ^ (SBox[(a3 >> 24) ] << 24) + ^ keyptr[7]; + break; + } + + +#ifdef AES_SECURE + switch (Nb) + { + case 8: + Zero2Ulong (&a7, &a6); + ZeroUlong (&b6); + case 6: + Zero2Ulong (&a5, &a4); + Zero2Ulong (&b5, &b4); + case 4: + Zero4Ulong (&a3, &a2, &a1, &a0); + Zero4Ulong (&b3, &b2, &b1, &b0); + } +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES processing of state variable (decryption) */ +/* Fast table lookup */ +/* Syntax: int */ +/* AESDecState_l (AESSTATE State, AESXPKEY InvExpandedKey, */ +/* int Nk, int Nb); */ +/* Input: AESSTATE State (State variable to process) */ +/* AESEXPKEY InvExpandedKey (Key schedule) */ +/* int Nk (Keylength in 4-byte-words 4, 6, 8) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESDecState_l (AESSTATE State, AESXPKEY InvExpandedKey, int Nk, int Nb) +{ + int round, Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + ULONG *keyptr; + ULONG a0, a1, a2, a3, a4, a5, a6, a7; + ULONG b0, b1, b2, b3, b4, b5, b6; + + keyptr = &InvExpandedKey[Nr*Nb]; + + switch (Nb) + { + case 8: + a7 = State[7] ^ keyptr[7]; + a6 = State[6] ^ keyptr[6]; + case 6: + a5 = State[5] ^ keyptr[5]; + a4 = State[4] ^ keyptr[4]; + case 4: + a3 = State[3] ^ keyptr[3]; + a2 = State[2] ^ keyptr[2]; + a1 = State[1] ^ keyptr[1]; + a0 = State[0] ^ keyptr[0]; + } + + for (keyptr = &InvExpandedKey[(Nr-1)*Nb], round = Nr-1; round > 0; round--) + { + switch (Nb) + { + case 4: + b0 = InvTable0[(a0 ) & 0xff] + ^ InvTable1[(a3 >> 8) & 0xff] + ^ InvTable2[(a2 >> 16) & 0xff] + ^ InvTable3[(a1 >> 24) ]; + + b1 = InvTable0[(a1 ) & 0xff] + ^ InvTable1[(a0 >> 8) & 0xff] + ^ InvTable2[(a3 >> 16) & 0xff] + ^ InvTable3[(a2 >> 24) ]; + + b2 = InvTable0[(a2 ) & 0xff] + ^ InvTable1[(a1 >> 8) & 0xff] + ^ InvTable2[(a0 >> 16) & 0xff] + ^ InvTable3[(a3 >> 24) ]; + + a3 = InvTable0[(a3 ) & 0xff] + ^ InvTable1[(a2 >> 8) & 0xff] + ^ InvTable2[(a1 >> 16) & 0xff] + ^ InvTable3[(a0 >> 24) ] + ^ keyptr[3]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + + break; + + case 6: + b0 = InvTable0[(a0 ) & 0xff] + ^ InvTable1[(a5 >> 8) & 0xff] + ^ InvTable2[(a4 >> 16) & 0xff] + ^ InvTable3[(a3 >> 24) ]; + + b1 = InvTable0[(a1 ) & 0xff] + ^ InvTable1[(a0 >> 8) & 0xff] + ^ InvTable2[(a5 >> 16) & 0xff] + ^ InvTable3[(a4 >> 24) ]; + + b2 = InvTable0[(a2 ) & 0xff] + ^ InvTable1[(a1 >> 8) & 0xff] + ^ InvTable2[(a0 >> 16) & 0xff] + ^ InvTable3[(a5 >> 24) ]; + + b3 = InvTable0[(a3 ) & 0xff] + ^ InvTable1[(a2 >> 8) & 0xff] + ^ InvTable2[(a1 >> 16) & 0xff] + ^ InvTable3[(a0 >> 24) ]; + + b4 = InvTable0[(a4 ) & 0xff] + ^ InvTable1[(a3 >> 8) & 0xff] + ^ InvTable2[(a2 >> 16) & 0xff] + ^ InvTable3[(a1 >> 24) ]; + + a5 = InvTable0[(a5 ) & 0xff] + ^ InvTable1[(a4 >> 8) & 0xff] + ^ InvTable2[(a3 >> 16) & 0xff] + ^ InvTable3[(a2 >> 24) ] + ^ keyptr[5]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + a3 = b3 ^ keyptr[3]; + a4 = b4 ^ keyptr[4]; + break; + + case 8: + /* col 0 */ + b0 = InvTable0[(a0 ) & 0xff] + ^ InvTable1[(a7 >> 8) & 0xff] + ^ InvTable2[(a5 >> 16) & 0xff] + ^ InvTable3[(a4 >> 24) ]; + + /* col 1 */ + b1 = InvTable0[(a1 ) & 0xff] + ^ InvTable1[(a0 >> 8) & 0xff] + ^ InvTable2[(a6 >> 16) & 0xff] + ^ InvTable3[(a5 >> 24) ]; + + /* col 2 */ + b2 = InvTable0[(a2 ) & 0xff] + ^ InvTable1[(a1 >> 8) & 0xff] + ^ InvTable2[(a7 >> 16) & 0xff] + ^ InvTable3[(a6 >> 24) ]; + + /* col 3 */ + b3 = InvTable0[(a3 ) & 0xff] + ^ InvTable1[(a2 >> 8) & 0xff] + ^ InvTable2[(a0 >> 16) & 0xff] + ^ InvTable3[(a7 >> 24) ]; + + /* col 4 */ + b4 = InvTable0[(a4 ) & 0xff] + ^ InvTable1[(a3 >> 8) & 0xff] + ^ InvTable2[(a1 >> 16) & 0xff] + ^ InvTable3[(a0 >> 24) ]; + + /* col 5 */ + b5 = InvTable0[(a5 ) & 0xff] + ^ InvTable1[(a4 >> 8) & 0xff] + ^ InvTable2[(a2 >> 16) & 0xff] + ^ InvTable3[(a1 >> 24) ]; + + /* col 6 */ + b6 = InvTable0[(a6 ) & 0xff] + ^ InvTable1[(a5 >> 8) & 0xff] + ^ InvTable2[(a3 >> 16) & 0xff] + ^ InvTable3[(a2 >> 24) ]; + + /* col 7 */ + a7 = InvTable0[(a7 ) & 0xff] + ^ InvTable1[(a6 >> 8) & 0xff] + ^ InvTable2[(a4 >> 16) & 0xff] + ^ InvTable3[(a3 >> 24) ] + ^ keyptr[7]; + + a0 = b0 ^ keyptr[0]; + a1 = b1 ^ keyptr[1]; + a2 = b2 ^ keyptr[2]; + a3 = b3 ^ keyptr[3]; + a4 = b4 ^ keyptr[4]; + a5 = b5 ^ keyptr[5]; + a6 = b6 ^ keyptr[6]; + break; + } + + keyptr -= Nb; + } + + /* Final Round */ + switch (Nb) + { + case 4: + State[0] = (InvSBox[(a0 ) & 0xff] ) + ^ (InvSBox[(a3 >> 8) & 0xff] << 8) + ^ (InvSBox[(a2 >> 16) & 0xff] << 16) + ^ (InvSBox[(a1 >> 24) ] << 24) + ^ keyptr[0]; + + State[1] = (InvSBox[(a1 ) & 0xff] ) + ^ (InvSBox[(a0 >> 8) & 0xff] << 8) + ^ (InvSBox[(a3 >> 16) & 0xff] << 16) + ^ (InvSBox[(a2 >> 24) ] << 24) + ^ keyptr[1]; + + State[2] = (InvSBox[(a2 ) & 0xff] ) + ^ (InvSBox[(a1 >> 8) & 0xff] << 8) + ^ (InvSBox[(a0 >> 16) & 0xff] << 16) + ^ (InvSBox[(a3 >> 24) ] << 24) + ^ keyptr[2]; + + State[3] = (InvSBox[(a3 ) & 0xff] ) + ^ (InvSBox[(a2 >> 8) & 0xff] << 8) + ^ (InvSBox[(a1 >> 16) & 0xff] << 16) + ^ (InvSBox[(a0 >> 24) ] << 24) + ^ keyptr[3]; + break; + + case 6: + State[0] = (InvSBox[(a0 ) & 0xff] ) + ^ (InvSBox[(a5 >> 8) & 0xff] << 8) + ^ (InvSBox[(a4 >> 16) & 0xff] << 16) + ^ (InvSBox[(a3 >> 24) ] << 24) + ^ keyptr[0]; + + State[1] = (InvSBox[(a1 ) & 0xff] ) + ^ (InvSBox[(a0 >> 8) & 0xff] << 8) + ^ (InvSBox[(a5 >> 16) & 0xff] << 16) + ^ (InvSBox[(a4 >> 24) ] << 24) + ^ keyptr[1]; + + State[2] = (InvSBox[(a2 ) & 0xff] ) + ^ (InvSBox[(a1 >> 8) & 0xff] << 8) + ^ (InvSBox[(a0 >> 16) & 0xff] << 16) + ^ (InvSBox[(a5 >> 24) ] << 24) + ^ keyptr[2]; + + State[3] = (InvSBox[(a3 ) & 0xff] ) + ^ (InvSBox[(a2 >> 8) & 0xff] << 8) + ^ (InvSBox[(a1 >> 16) & 0xff] << 16) + ^ (InvSBox[(a0 >> 24) ] << 24) + ^ keyptr[3]; + + State[4] = (InvSBox[(a4 ) & 0xff] ) + ^ (InvSBox[(a3 >> 8) & 0xff] << 8) + ^ (InvSBox[(a2 >> 16) & 0xff] << 16) + ^ (InvSBox[(a1 >> 24) ] << 24) + ^ keyptr[4]; + + State[5] = (InvSBox[(a5 ) & 0xff] ) + ^ (InvSBox[(a4 >> 8) & 0xff] << 8) + ^ (InvSBox[(a3 >> 16) & 0xff] << 16) + ^ (InvSBox[(a2 >> 24) ] << 24) + ^ keyptr[5]; + break; + + case 8: + /* col 0 */ + State[0] = (InvSBox[(a0 ) & 0xff] ) + ^ (InvSBox[(a7 >> 8) & 0xff] << 8) + ^ (InvSBox[(a5 >> 16) & 0xff] << 16) + ^ (InvSBox[(a4 >> 24) ] << 24) + ^ keyptr[0]; + + /* col 1 */ + State[1] = (InvSBox[(a1 ) & 0xff] ) + ^ (InvSBox[(a0 >> 8) & 0xff] << 8) + ^ (InvSBox[(a6 >> 16) & 0xff] << 16) + ^ (InvSBox[(a5 >> 24) ] << 24) + ^ keyptr[1]; + + /* col 2 */ + State[2] = (InvSBox[(a2 ) & 0xff] ) + ^ (InvSBox[(a1 >> 8) & 0xff] << 8) + ^ (InvSBox[(a7 >> 16) & 0xff] << 16) + ^ (InvSBox[(a6 >> 24) ] << 24) + ^ keyptr[2]; + + /* col 3 */ + State[3] = (InvSBox[(a3 ) & 0xff] ) + ^ (InvSBox[(a2 >> 8) & 0xff] << 8) + ^ (InvSBox[(a0 >> 16) & 0xff] << 16) + ^ (InvSBox[(a7 >> 24) ] << 24) + ^ keyptr[3]; + + /* col 4 */ + State[4] = (InvSBox[(a4 ) & 0xff] ) + ^ (InvSBox[(a3 >> 8) & 0xff] << 8) + ^ (InvSBox[(a1 >> 16) & 0xff] << 16) + ^ (InvSBox[(a0 >> 24) ] << 24) + ^ keyptr[4]; + + /* col 5 */ + State[5] = (InvSBox[(a5 ) & 0xff] ) + ^ (InvSBox[(a4 >> 8) & 0xff] << 8) + ^ (InvSBox[(a2 >> 16) & 0xff] << 16) + ^ (InvSBox[(a1 >> 24) ] << 24) + ^ keyptr[5]; + + /* col 6 */ + State[6] = (InvSBox[(a6 ) & 0xff] ) + ^ (InvSBox[(a5 >> 8) & 0xff] << 8) + ^ (InvSBox[(a3 >> 16) & 0xff] << 16) + ^ (InvSBox[(a2 >> 24) ] << 24) + ^ keyptr[6]; + + /* col 7 */ + State[7] = (InvSBox[(a7 ) & 0xff] ) + ^ (InvSBox[(a6 >> 8) & 0xff] << 8) + ^ (InvSBox[(a4 >> 16) & 0xff] << 16) + ^ (InvSBox[(a3 >> 24) ] << 24) + ^ keyptr[7]; + break; + } + +#ifdef AES_SECURE + switch (Nb) + { + case 8: + Zero2Ulong (&a7, &a6); + ZeroUlong (&b6); + case 6: + Zero2Ulong (&a5, &a4); + Zero2Ulong (&b5, &b4); + case 4: + Zero4Ulong (&a3, &a2, &a1, &a0); + Zero4Ulong (&b3, &b2, &b1, &b0); + } +#endif + + return 0; +} + +#else /* AES_COMPACT */ + + +/******************************************************************************/ +/* */ +/* Function: AES processing of state variable (encryption) */ +/* Syntax: int */ +/* AESEncState_l (AESSTATE State, AESXPKEY ExpandedKey, */ +/* int Nk, int Nb); */ +/* Input: AESSTATE (State variable to process) */ +/* AESEXPKEY ExpandedKey (Key schedule) */ +/* int Nk (Keylength in 4-byte-words 4, 6, 8) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESEncState_l (AESSTATE State, AESXPKEY ExpandedKey, int Nk, int Nb) +{ + int round, Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + +#if defined AES_VERBOSE + ROUND = 0; + PrintState ("input", State, Nb); + PrintState ("k_sch", ExpandedKey, Nb); +#endif + + AddRoundKey (State, ExpandedKey, Nb); + + for (round = 1; round < Nr; round++) + { + +#ifdef AES_VERBOSE + ROUND = round; +#endif + + Round (State, &ExpandedKey[round*Nb], Nb); + } + +#ifdef AES_VERBOSE + ROUND = round; +#endif + + FinalRound (State, &ExpandedKey[round*Nb], Nb); + +#ifdef AES_VERBOSE + ROUND = 0; + PrintState ("output", State, Nb); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES processing of state variable (decryption) */ +/* Syntax: int */ +/* AESDecState_l (AESSTATE State, AESXPKEY InvExpandedKey, */ +/* int Nk, int Nb); */ +/* Input: AESSTATE (State variable to process) */ +/* AESEXPKEY InvExpandedKey (Key schedule) */ +/* int Nk (Keylength in 4-byte-words 4, 6, 8) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESDecState_l (AESSTATE State, AESXPKEY InvExpandedKey, int Nk, int Nb) +{ + int round, Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + +#ifdef AES_VERBOSE + ROUND = 0; + PrintState ("iinput", State, Nb); + PrintState ("ik_sch", &InvExpandedKey[Nr*Nb], Nb); +#endif + + AddRoundKey (State, &InvExpandedKey[Nr*Nb], Nb); + + for (round = Nr - 1; round > 0; round--) + { + +#ifdef AES_VERBOSE + ROUND++; +#endif + + InvRound (State, &InvExpandedKey[round*Nb], Nb); + } + +#ifdef AES_VERBOSE + ROUND++; +#endif + + InvFinalRound (State, InvExpandedKey, Nb); + +#ifdef AES_VERBOSE + PrintState ("ioutput", State, Nb); +#endif + + return 0; +} + +#endif /* !AES_COMPACT? */ + + +/******************************************************************************/ +/* */ +/* Function: AES encryption of one single block of text w/o key expansion */ +/* Syntax: int */ +/* AESEncBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, */ +/* AESXPKEY ExpandedKey, int KeyLength, int BlockLength); */ +/* Input: AESBLOCK MessBlock (Message block to encrypt) */ +/* AESEXPKEY ExpandedKey (Key schedule) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESBLOCK CipherBlock (Ciphertext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESEncBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESXPKEY ExpandedKey, + int KeyLength, int BlockLength) +{ + int i, j, col, col4, Nb; + AESSTATE State; + + if ((BlockLength != 128) && (BlockLength != 192) && (BlockLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + if ((KeyLength != 128) && (KeyLength != 192) && (KeyLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + Nb = BlockLength/32; + + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + State[col] = UC2UL(&MessBlock[col4]); + } + + AESEncState_l (State, ExpandedKey, KeyLength/32, Nb); + + for (i = j = 0; j < Nb; i+=4, j++) + { + CipherBlock[i] = (UCHAR)(State[j] ); + CipherBlock[i + 1] = (UCHAR)(State[j] >> 8); + CipherBlock[i + 2] = (UCHAR)(State[j] >> 16); + CipherBlock[i + 3] = (UCHAR)(State[j] >> 24); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)State, sizeof (State)); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES decryption of one single block of text w/o key expansion */ +/* Syntax: int */ +/* AESDecBlock_l (AESBLOCK MessBlock, AESBLOCK CipherBlock */ +/* AESXPKEY InvExpandedKey, int KeyLength, */ +/* int BlockLength); */ +/* Input: AESBLOCK CipherBlock (Message block to decrypt) */ +/* AESEXPKEY InvExpandedKey (Key schedule) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESBLOCK MessBlock (Plaintext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESDecBlock_l (AESBLOCK MessBlock, AESBLOCK CipherBlock, + AESXPKEY InvExpandedKey, int KeyLength, int BlockLength) +{ + int i, j, col, col4, Nb; + AESSTATE State; + + if ((BlockLength != 128) && (BlockLength != 192) && (BlockLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_BLKLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_BLKLENGTH; + } + + if ((KeyLength != 128) && (KeyLength != 192) && (KeyLength != 256)) + { +#ifdef AES_TEST + fprintf (stderr, "AES_ERR_KEYLENGTH in line %d\n", __LINE__); +#endif + return AES_ERR_KEYLENGTH; + } + + Nb = BlockLength/32; + + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + State[col] = UC2UL(&CipherBlock[col4]); + } + + AESDecState_l (State, InvExpandedKey, KeyLength/32, Nb); + + for (i = j = 0; j < Nb; i+=4, j++) + { + MessBlock[i] = (UCHAR)(State[j] ); + MessBlock[i + 1] = (UCHAR)(State[j] >> 8); + MessBlock[i + 2] = (UCHAR)(State[j] >> 16); + MessBlock[i + 3] = (UCHAR)(State[j] >> 24); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)State, sizeof (State)); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES encryption of one single block of text w/ key expansion */ +/* Syntax: AESEncryptBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, */ +/* AESKEY RawKey, int KeyLength, int BlockLength); */ +/* Input: AESBLOCK MessBlock (Message block to encrypt) */ +/* AESKEY RawKey (Key provided by user as byte array) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESBLOCK CipherBlock (Ciphertext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESEncryptBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESKEY RawKey, + int KeyLength, int BlockLength) +{ + int error; + AESXPKEY ExpandedKey; + + error = AESKeyExpansion_l (ExpandedKey, RawKey, KeyLength, BlockLength); + if (!error) + { + error = AESEncBlock_l (CipherBlock, MessBlock, ExpandedKey, + KeyLength, BlockLength); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)ExpandedKey, sizeof (ExpandedKey)); +#endif + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: AES decryption of one single block of text w/ key expansion */ +/* Syntax: int */ +/* AESDecryptBlock_l (AESBLOCK MessBlock, AESBLOCK Cipherblock */ +/* AESKEY RawKey, int KeyLength, int BlockLength); */ +/* Input: AESBLOCK CipherBlock (Message block to decrypt) */ +/* UCHAR CipherKey (User key) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* Output: AESBLOCK MessBlock (Plaintext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESDecryptBlock_l (AESBLOCK MessBlock, AESBLOCK CipherBlock, AESKEY RawKey, + int KeyLength, int BlockLength) +{ + AESXPKEY InvExpandedKey; + int error; + + error = AESInvKeyExpansion_l (InvExpandedKey, RawKey, KeyLength, BlockLength); + if (!error) + { + error = AESDecBlock_l (MessBlock, CipherBlock, InvExpandedKey, + KeyLength, BlockLength); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)InvExpandedKey, sizeof (InvExpandedKey)); +#endif + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: AES encryption of one single block of text with variable */ +/* number of rounds */ +/* Syntax: int */ +/* AESEncBlockRounds_l (AESBLOCK MessBlock, AESBLOCK CipherBlock,*/ +/* AESXPKEY ExpandedKey, int KeyLength, */ +/* int BlockLength, int Rounds); */ +/* Input: AESBLOCK MessBlock (Message block to encrypt) */ +/* AESEXPKEY ExpandedKey (Key schedule) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* int Rounds (Number of rounds to perform) */ +/* Output: AESBLOCK CipherBlock (Ciphertext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESEncBlockRounds_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, + AESXPKEY ExpandedKey, int KeyLength, + int BlockLength, int Rounds) +{ + int i, j, col, col4, round, Nb, Nk, Nr; + AESSTATE State; + + Nb = BlockLength/32; + Nk = KeyLength/32; + Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + State[col] = UC2UL(&MessBlock[col4]); + } + + AddRoundKey (State, ExpandedKey, Nb); + + for (round = 1; (round <= Rounds) && (round < Nr) ; round++) + { + Round (State, &ExpandedKey[round*Nb], Nb); + } + + if (Rounds == Nr) + { + FinalRound (State, &ExpandedKey[round*Nb], Nb); + } + + for (i = j = 0; j < Nb; i+=4, j++) + { + CipherBlock[i] = (UCHAR)(State[j] ); + CipherBlock[i + 1] = (UCHAR)(State[j] >> 8); + CipherBlock[i + 2] = (UCHAR)(State[j] >> 16); + CipherBlock[i + 3] = (UCHAR)(State[j] >> 24); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)State, sizeof (State)); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: AES decryption of one single block of text with variable */ +/* number of rounds */ +/* Syntax: int */ +/* AESDecBlockRounds_l (AESBLOCK MessBlock, */ +/* AESBLOCK CipherBlock, */ +/* AESXPKEY InvExpandedKey, */ +/* int KeyLength, int BlockLength, */ +/* int Rounds); */ +/* Input: AESBLOCK CipherBlock (Message block to decrypt) */ +/* AESEXPKEY InvExpandedKey (Key schedule) */ +/* int KeyLength (Length of user key 128, 192 or 256 bit) */ +/* int BlockLength (Length of Message block 128, 192 or 256 bit) */ +/* int Rounds (Number of rounds to perform) */ +/* Output: AESBLOCK MessBlock (Plaintext) */ +/* Returns: 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +AESDecBlockRounds_l (AESBLOCK MessBlock, AESBLOCK CipherBlock, + AESXPKEY InvExpandedKey, int KeyLength, + int BlockLength, int Rounds) +{ + int i, j, col, col4, round, Nb, Nk, Nr; + AESSTATE State; + + Nb = BlockLength/32; + Nk = KeyLength/32; + Nr = NR[(Nk - 4)/2][(Nb - 4)/2]; + + if (Rounds > Nr) Rounds = Nr; + + for (col = col4 = 0; col < Nb; col++, col4+=4) + { + State[col] = UC2UL(&CipherBlock[col4]); + } + + AddRoundKey (State, &InvExpandedKey[Nr*Nb], Nb); + InvShiftRows (State, Nb); + InvSubBytes (State, Nb); + + for (round = Nr - 1; round > Rounds; round--) + { + AddRoundKey (State, &InvExpandedKey[round*Nb], Nb); + InvMixColumns (State, Nb); + InvShiftRows (State, Nb); + InvSubBytes (State, Nb); + } + + if (Rounds == 0) + { + AddRoundKey (State, InvExpandedKey, Nb); + } + + for (i = j = 0; j < Nb; i+=4, j++) + { + MessBlock[i] = (UCHAR)(State[j] ); + MessBlock[i + 1] = (UCHAR)(State[j] >> 8); + MessBlock[i + 2] = (UCHAR)(State[j] >> 16); + MessBlock[i + 3] = (UCHAR)(State[j] >> 24); + } + +#ifdef AES_SECURE + ZeroUcharArray ((UCHAR *)State, sizeof (State)); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication of a polynomial with x in GF(2^8) */ +/* Syntax: xtime (unsigned int f); */ +/* Input: unsigned int f (value representing a polynomial in GF(2^8)) */ +/* Output: - */ +/* Returns: UCHAR (product f*x in GF(2^8)) */ +/* */ +/******************************************************************************/ +inline UCHAR +xtime (unsigned int f) +{ + f <<= 1; + if (f & 0x100) f ^= 0x11B; + return f; +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication of a polynomial with x + 1 in GF(2^8) */ +/* Syntax: xplus1time (unsigned int f); */ +/* Input: unsigned int f (value representing a polynomial in GF(2^8)) */ +/* Output: - */ +/* Returns: UCHAR (product f*(x + 1) in GF(2^8)) */ +/* */ +/******************************************************************************/ +static inline UCHAR +xplus1time (unsigned int f) +{ + f ^= f << 1; + if (f & 0x100) f ^= 0x11B; + return f; +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication of two polynomials in GF(2^8) */ +/* Syntax: polymul (unsigned int f, unsigned int g); */ +/* Input: unsigned int f (value representing a polynomial in GF(2^8)) */ +/* unsigned int g (value representing a polynomial in GF(2^8)) */ +/* Output: - */ +/* Returns: UCHAR (product f*g in GF(2^8)) */ +/* */ +/******************************************************************************/ +inline UCHAR +polymul (unsigned int f, unsigned int g) +{ + if ((f != 0) && (g != 0)) + { + /* Note that AntiLogTable[255...509] = AntiLogTable[0...254] */ + /* Thus AntiLogTable[LogTable[f] + LogTable[g]] instead of */ + /* AntiLogTable[LogTable[f] + LogTable[g] % 255]] can be used */ + return (AntiLogTable[LogTable[f] + LogTable[g]]); + } + else + { + return 0; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Application of S-Box to State variable */ +/* Syntax: SubBytes (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +inline void +SubBytes (AESSTATE State, int Nb) +{ + int col; + for (col = 0; col < Nb; col++) + { + State[col] = (SBox[(State[col] ) & 0xff] ) + | (SBox[(State[col] >> 8) & 0xff] << 8) + | (SBox[(State[col] >> 16) & 0xff] << 16) + | (SBox[(State[col] >> 24) & 0xff] << 24); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Application of inverted S-Box to State variable */ +/* Syntax: InvSubBytes (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +inline void +InvSubBytes (AESSTATE State, int Nb) +{ + int col; + for (col = 0; col < Nb; col++) + { + State[col] = (InvSBox[(State[col] ) & 0xff] ) + | (InvSBox[(State[col] >> 8) & 0xff] << 8) + | (InvSBox[(State[col] >> 16) & 0xff] << 16) + | (InvSBox[(State[col] >> 24) & 0xff] << 24); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Application of MixColumns operation to State variable */ +/* Syntax: MixColumns (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +inline void +MixColumns (AESSTATE State, int Nb) +{ + int col; + UCHAR b0, b1, b2, b3, b4; + + for (col = 0; col < Nb; col++) + { + b0 = (UCHAR)(State[col] ); + b1 = (UCHAR)(State[col] >> 8); + b2 = (UCHAR)(State[col] >> 16); + b3 = (UCHAR)(State[col] >> 24); + b4 = b0 ^ b1 ^ b2 ^ b3; + + State[col] ^= ((b4 ^ xtime (b0 ^ b1)) | + ((b4 ^ xtime (b1 ^ b2)) << 8) | + ((b4 ^ xtime (b2 ^ b3)) << 16) | + ((b4 ^ xtime (b3 ^ b0)) << 24)); + } + +#ifdef AES_SECURE + Zero4Uchar (&b0, &b1, &b2, &b3); + ZeroUchar (&b4); +#endif +} + + +/******************************************************************************/ +/* */ +/* Function: Application of inverse MixColumns operation to State variable */ +/* Syntax: InvMixColumns (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +inline void +InvMixColumns (AESSTATE State, int Nb) +{ + int col; + UCHAR a0, a1, a2, a3; + UCHAR b0, b1, b2, b3; + for (col = 0; col < Nb; col++) + { + a0 = (UCHAR)(State[col] ); + a1 = (UCHAR)(State[col] >> 8); + a2 = (UCHAR)(State[col] >> 16); + a3 = (UCHAR)(State[col] >> 24); + + b0 = polymul (a0, 0x0E) ^ + polymul (a1, 0x0B) ^ + polymul (a2, 0x0D) ^ + polymul (a3, 0x09); + + b1 = polymul (a0, 0x09) ^ + polymul (a1, 0x0E) ^ + polymul (a2, 0x0B) ^ + polymul (a3, 0x0D); + + b2 = polymul (a0, 0x0D) ^ + polymul (a1, 0x09) ^ + polymul (a2, 0x0E) ^ + polymul (a3, 0x0B); + + b3 = polymul (a0, 0x0B) ^ + polymul (a1, 0x0D) ^ + polymul (a2, 0x09) ^ + polymul (a3, 0x0E); + + State[col] = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + } + +#ifdef AES_SECURE + Zero4Uchar (&a0, &a1, &a2, &a3); + Zero4Uchar (&b0, &b1, &b2, &b3); +#endif +} + + +/******************************************************************************/ +/* */ +/* Function: Application of ShiftRows operation to State variable */ +/* Syntax: ShiftRows (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ShiftRows (AESSTATE State, int Nb) +{ + int col; + ULONG tmpNbMin1, tmpNbMin2, tmpNbMin3, tmpNbMin4; + + switch (Nb) + { + case 4: + case 6: + tmpNbMin3 = ((State[Nb - 3] & 0xff) | + (State[Nb - 2] & 0xff00) | + (State[Nb - 1] & 0xff0000) | + (State[0] & 0xff000000)); + + tmpNbMin2 = ((State[Nb - 2] & 0xff) | + (State[Nb - 1] & 0xff00) | + (State[0] & 0xff0000) | + (State[1] & 0xff000000)); + + tmpNbMin1 = ((State[Nb - 1] & 0xff) | + (State[0] & 0xff00) | + (State[1] & 0xff0000) | + (State[2] & 0xff000000)); + + for (col = 0; col < Nb - 3; col++) + { + State[col] = ((State[col] & 0xff) | + (State[col + 1] & 0xff00) | + (State[col + 2] & 0xff0000) | + (State[col + 3] & 0xff000000)); + } + + State[Nb-3] = tmpNbMin3; + State[Nb-2] = tmpNbMin2; + State[Nb-1] = tmpNbMin1; + break; + + case 8: + tmpNbMin4 = ((State[Nb - 4] & 0xff) | + (State[Nb - 3] & 0xff00) | + (State[Nb - 1] & 0xff0000) | + (State[0] & 0xff000000)); + + tmpNbMin3 = ((State[Nb - 3] & 0xff) | + (State[Nb - 2] & 0xff00) | + (State[0] & 0xff0000) | + (State[1] & 0xff000000)); + + tmpNbMin2 = ((State[Nb - 2] & 0xff) | + (State[Nb - 1] & 0xff00) | + (State[1] & 0xff0000) | + (State[2] & 0xff000000)); + + tmpNbMin1 = ((State[Nb - 1] & 0xff) | + (State[0] & 0xff00) | + (State[2] & 0xff0000) | + (State[3] & 0xff000000)); + + for (col = 0; col < Nb - 4; col++) + { + State[col] = ((State[col] & 0xff) | + (State[col + 1] & 0xff00) | + (State[col + 3] & 0xff0000) | + (State[col + 4] & 0xff000000)); + } + + State[Nb-4] = tmpNbMin4; + State[Nb-3] = tmpNbMin3; + State[Nb-2] = tmpNbMin2; + State[Nb-1] = tmpNbMin1; + break; + } + +#ifdef AES_SECURE + Zero4Ulong (&tmpNbMin1, &tmpNbMin2, &tmpNbMin3, &tmpNbMin4); +#endif +} + + +/******************************************************************************/ +/* */ +/* Function: Application of inverse ShiftRows operation to State variable */ +/* Syntax: InvShiftRows (AESSTATE State, int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +InvShiftRows (AESSTATE State, int Nb) +{ + int col; + ULONG tmp0, tmp1, tmp2, tmp3; + + switch (Nb) + { + case 4: + case 6: + tmp2 = ((State[2] & 0xff) | + (State[1] & 0xff00) | + (State[0] & 0xff0000) | + (State[Nb - 1] & 0xff000000)); + + tmp1 = ((State[1] & 0xff) | + (State[0] & 0xff00) | + (State[Nb - 1] & 0xff0000) | + (State[Nb - 2] & 0xff000000)); + + tmp0 = ((State[0] & 0xff) | + (State[Nb - 1] & 0xff00) | + (State[Nb - 2] & 0xff0000) | + (State[Nb - 3] & 0xff000000)); + + for (col = Nb - 1; col > 2; col--) + { + State[col] = ((State[col] & 0xff) | + (State[col - 1] & 0xff00) | + (State[col - 2] & 0xff0000) | + (State[col - 3] & 0xff000000)); + } + + State[2] = tmp2; + State[1] = tmp1; + State[0] = tmp0; + break; + + case 8: + tmp3 = ((State[3] & 0xff) | + (State[2] & 0xff00) | + (State[0] & 0xff0000) | + (State[Nb - 1] & 0xff000000)); + + tmp2 = ((State[2] & 0xff) | + (State[1] & 0xff00) | + (State[Nb - 1] & 0xff0000) | + (State[Nb - 2] & 0xff000000)); + + tmp1 = ((State[1] & 0xff) | + (State[0] & 0xff00) | + (State[Nb - 2] & 0xff0000) | + (State[Nb - 3] & 0xff000000)); + + tmp0 = ((State[0] & 0xff) | + (State[Nb - 1] & 0xff00) | + (State[Nb - 3] & 0xff0000) | + (State[Nb - 4] & 0xff000000)); + + for (col = Nb - 1; col > 3; col--) + { + State[col] = ((State[col] & 0xff) | + (State[col - 1] & 0xff00) | + (State[col - 3] & 0xff0000) | + (State[col - 4] & 0xff000000)); + } + + State[3] = tmp3; + State[2] = tmp2; + State[1] = tmp1; + State[0] = tmp0; + break; + } + +#ifdef AES_SECURE + Zero4Ulong (&tmp0, &tmp1, &tmp2, &tmp3); +#endif +} + + +/******************************************************************************/ +/* */ +/* Function: Addition of AddRoundKey to State variable */ +/* Syntax: AddRoundKey (AESSTATE State, AESROUNDKEY RoundKey int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* AESROUNDKEY RoundKey (Roundkey as portion of the keyschedule) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +inline void +AddRoundKey (AESSTATE State, AESROUNDKEY RoundKey, int Nb) +{ + int col; + + for (col = 0; col < Nb; col++) + { + State[col] ^= RoundKey[col]; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Application of one round to state variable */ +/* Syntax: Round (AESSTATE State, AESROUNDKEY RoundKey int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* AESROUNDKEY RoundKey (Roundkey as portion of the keyschedule) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Round (AESSTATE State, AESROUNDKEY RoundKey, int Nb) +{ +#ifdef AES_VERBOSE + PrintState ("start", State, Nb); +#endif + + SubBytes (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("s_box", State, Nb); +#endif + + ShiftRows (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("s_row", State, Nb); +#endif + + MixColumns (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("m_col", State, Nb); + PrintState ("k_sch", RoundKey, Nb); +#endif + + AddRoundKey (State, RoundKey, Nb); +} + + +/******************************************************************************/ +/* */ +/* Function: Application of final round to state variable */ +/* Syntax: FinalRound (AESSTATE State, AESROUNDKEY RoundKey int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* AESROUNDKEY RoundKey (Roundkey as portion of the keyschedule) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +FinalRound (AESSTATE State, AESROUNDKEY RoundKey, int Nb) +{ +#ifdef AES_VERBOSE + PrintState ("start", State, Nb); +#endif + + SubBytes (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("s_box", State, Nb); +#endif + + ShiftRows (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("s_row", State, Nb); + PrintState ("k_sch", RoundKey, Nb); +#endif + + AddRoundKey (State, RoundKey, Nb); +} + + +/******************************************************************************/ +/* */ +/* Function: Application of one inverse round to state variable */ +/* Syntax: Round (AESSTATE State, AESROUNDKEY InvRoundKey int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* AESROUNDKEY InvRoundKey (Inverse Roundkey) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +InvRound (AESSTATE State, AESROUNDKEY InvRoundKey, int Nb) +{ +#ifdef AES_VERBOSE + PrintState ("istart", State, Nb); +#endif + + InvSubBytes (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("is_box", State, Nb); +#endif + + InvShiftRows (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("is_row", State, Nb); +#endif + + InvMixColumns (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("im_col", State, Nb); + PrintState ("ik_sch", InvRoundKey, Nb); +#endif + + AddRoundKey (State, InvRoundKey, Nb); +} + + +/******************************************************************************/ +/* */ +/* Function: Application of final round to state variable */ +/* Syntax: Round (AESSTATE State, AESROUNDKEY RoundKey int Nb); */ +/* Input: AESSTATE State (state variable to be processed) */ +/* AESROUNDKEY InvRoundKey (Inverse Roundkey) */ +/* int Nb (Blocklength in 4-byte-words 4, 6, 8) */ +/* Output: AESSTATE State (processed state variable) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +InvFinalRound (AESSTATE State, AESROUNDKEY InvRoundKey, int Nb) +{ +#ifdef AES_VERBOSE + PrintState ("istart", State, Nb); +#endif + + InvSubBytes (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("is_box", State, Nb); +#endif + + InvShiftRows (State, Nb); + +#ifdef AES_VERBOSE + PrintState ("is_row", State, Nb); + PrintState ("ik_sch", InvRoundKey, Nb); +#endif + + AddRoundKey (State, InvRoundKey, Nb); +} + +/***************** Purging of Variables ***************************************/ + +/******************************************************************************/ +/* */ +/* Function: Purging of AES workspace and keyschedule */ +/* Syntax: int */ +/* AESPurge_l (AESWORKSPACE ws, AESKEYSCHEDULE ks); */ +/* Input: AESWORKSPACE ws (Internal workspace initialized by AESInit_l) */ +/* AESKEYSCHEDULE ks (Key schedule initialized by AESInit_l); */ +/* Output: ws and ks overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +AESPurge_l (AESWORKSPACE *ws, AESKEYSCHED *ks) +{ + memset((char *)ws, 0, sizeof(AESWORKSPACE)); + memset((char *)ks, 0, sizeof(AESKEYSCHED)); +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: ZeroUchar (UCHAR *a); */ +/* Input: UCHAR *a (Pointer to UCHAR variable to be purged) */ +/* Output: *a overwitten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUchar (UCHAR *a) +{ + *a = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero2Uchar (UCHAR *a, UCHAR *b); */ +/* Input: UCHAR *a (Pointer to UCHAR variable to be purged) */ +/* Input: UCHAR *b (Pointer to UCHAR variable to be purged) */ +/* Output: *a and *b overwitten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero2Uchar (UCHAR *a, UCHAR *b) +{ + *a = *b = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero4Uchar (UCHAR *a, UCHAR *b, UCHAR *c, UCHAR *d); */ +/* Input: UCHAR *a (Pointer to UCHAR variable to be purged) */ +/* UCHAR *b (Pointer to UCHAR variable to be purged) */ +/* UCHAR *c (Pointer to UCHAR variable to be purged) */ +/* UCHAR *d (Pointer to UCHAR variable to be purged) */ +/* Output: *a, *b, *c and *d overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero4Uchar (UCHAR *a, UCHAR *b, UCHAR *c, UCHAR *d) +{ + *a = *b = *c = *d = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: ZeroUlong (ULONG *a); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* Output: *a overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUlong (ULONG *a) +{ + *a = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero2Ulong (ULONG *a, ULONG *b); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero2Ulong (ULONG *a, ULONG *b) +{ + *a = *b = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* ULONG *c (Pointer to ULONG variable to be purged) */ +/* ULONG *d (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b, *c and *d overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d) +{ + *a = *b = *c = *d = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of Array */ +/* Syntax: ZeroUcharArray (UCHAR *a, int Len); */ +/* Input: UCHAR *a (Pointer to array of UCHARs) */ +/* int Len (Length of array in byte) */ +/* Output: Array overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUcharArray (UCHAR *a, int Len) +{ + memset (a, 0, (size_t)Len); +} + + +/******************************************************************************/ +/* */ +/* Function: Test of endianness */ +/* Syntax: TestEndian (int *endian_ness); */ +/* Input: - */ +/* Output: int *endian_ness = !(0) on big endian machines (ALPHA, Sparc) */ +/* int *endian_ness = 0 on little endian machines (Intel) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void +TestEndian(int *endian_ness) +{ + if((*(unsigned short *) ("#S") >> 8) == '#') /*lint !e927 Ignore cast */ + { + /* printf("Big endian = no change\n"); */ + *endian_ness = !(0); /*lint !e506 Ignore const value Boolean */ + } + else + { + /* printf("Little endian = swap\n"); */ + *endian_ness = 0; + } +} + + +/****************** Test interface **************************/ + +#ifdef AES_TEST + +#include +#include + +UCHAR PT[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +UCHAR KEY[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f}; + +main () +{ + /* Performance test */ + /* Keylength 128 bit */ + + ULONG i, j; + clock_t t0, t1; + float t, p; + AESWORKSPACE ws; + AESKEYSCHED ks; + + /* Keylength 128 bit */ + printf ("Test performance keylength 128:\n"); + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 128, AES_ENC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES128-Throughput (Encryption): %.2f sec, %.2f Mbit/s,\n", t, p); + + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 128, AES_DEC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES128-Throughput (Decryption): %.2f sec, %.2f Mbit/s,\n", t, p); + + + /* Keylength 192 bit */ + printf ("Test performance keylength 192:\n"); + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 192, AES_ENC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES192-Throughput (Encryption): %.2f sec, %.2f Mbit/s,\n", t, p); + + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 192, AES_DEC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES192-Throughput (Decryption): %.2f sec, %.2f Mbit/s,\n", t, p); + + + /* Keylength 256 bit */ + printf ("Test performance keylength 256:\n"); + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 256, AES_ENC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES256-Throughput (Encryption): %.2f sec, %.2f Mbit/s,\n", t, p); + + AESInit_l (&ws, AES_ECB, 128, NULL, &ks, KEY, 256, AES_DEC); + t0 = clock(); + /* process data */ + for (i = 0; i < 10000000; i++) + { + AESCrypt_l (PT, &ws, &ks, PT, 16); + } + + /* stop timer, get time difference */ + t1 = clock(); + t = (t1-t0)/CLOCKS_PER_SEC; + p = i*128/(t*1000000); + printf("AES256-Throughput (Decryption): %.2f sec, %.2f Mbit/s,\n", t, p); +} + +#endif /* TEST? */ + + +#ifdef AES_VERBOSE + +static inline void +PrintState (char * step, AESSTATE State, int Nb) +{ + int col; + printf ("round[%2.2d].%-10.10s", ROUND, step); + + for (col = 0; col < Nb; col++) + { + printf ("%2.2x ", State[col] & 0xff); + printf ("%2.2x ", (State[col] >> 8) & 0xff); + printf ("%2.2x ", (State[col] >> 16) & 0xff); + printf ("%2.2x ", (State[col] >> 24) & 0xff); + } + printf ("\n"); +} + +#endif /* AES_VERBOSE? */ + + + diff --git a/flint/src/aes.h b/flint/src/aes.h new file mode 100644 index 0000000..d90afbb --- /dev/null +++ b/flint/src/aes.h @@ -0,0 +1,248 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module aes.h Revision: 10.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __AESH__ +#define __AESH__ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Macros */ + +#define MAXCKEY 8 /* Maximum length of user key in 4-byte words */ +#define MAXNCOL 8 /* Maximum blocklength in 4-byte words */ +#define MAXNRND 14 /* Maximum number of rounds */ +#define BITSPERBLOCK 128 /* Default number of bits in a cipher block */ + +#define AES_ENC 0 +#define AES_DEC 1 +#define AES_ECB 10 +#define AES_CBC 11 + +#define AES_OK 0 +#define AES_ERR_INIT -1 +#define AES_ERR_MODE -2 +#define AES_ERR_BLKLENGTH -4 +#define AES_ERR_KEYLENGTH -8 +#define AES_ERR_DIRECTION -16 + +#if !(defined AES_SECURE || defined AES_UNSECURE) +#define AES_SECURE +#endif + +/* Macros maintaining FLINT/C namespace */ + +#define AESInit AESInit_l +#define AESKeySched AESKeySched_l +#define AESCrypt AESCrypt_l +#define AESPurge AESPurge_l +#define AESKeyExpansion AESKeyExpansion_l +#define AESInvKeyExpansion AESInvKeyExpansion_l +#define AESEncryptBlock AESEncryptBlock_l +#define AESDecryptBlock AESDecryptBlock_l +#define AESEncBlock AESEncBlock_l +#define AESDecBlock AESDecBlock_l +#define AESEncState AESEncState_l +#define AESDecState AESDecState_l +#define AESEncBlockRounds AESEncBlockRounds_l +#define AESDecBlockRounds AESDecBlockRounds_l + +/* Conversion of a vector of type UCHAR into ULONG word */ + +#if !defined AES_BIGENDIAN +#define UC2UL(ucptr) *(unsigned long *)((ucptr)) +#else +#define UC2UL(ucptr) \ + (((unsigned long) *((ucptr)+3) << 24) | \ + ((unsigned long) *((ucptr)+2) << 16) | \ + ((unsigned long) *((ucptr)+1) << 8) | \ + ((unsigned long) *(ucptr))) +#endif + +/* AES specific types */ +typedef unsigned long AESXPKEY[(MAXNRND+1)*MAXNCOL]; +typedef unsigned long AESSTATE[MAXNCOL]; +typedef unsigned long AESROUNDKEY[MAXNCOL]; +typedef unsigned char AESBLOCK[4*MAXNCOL]; +typedef unsigned char AESKEY[4*MAXCKEY]; + +typedef struct +{ + AESXPKEY ExpandedKey; + int mode; /* Mode of Operation: AES_ECB, AES_CBC */ + int KeyLength; /* 128, 192, 256 */ + int BlkLength; /* 128, 192, 256 */ + int DFlag; /* AES_ENC, AES_DEC */ +} AESKEYSCHED; + + +typedef struct +{ + int mode; /* Mode of Operation: AES_ECB, AES_CBC */ + int BlkLength; /* 128, 192, 256 */ + AESBLOCK IV; /* Initialization Vector for CBC Mode */ + AESSTATE State; /* State Buffer */ + AESSTATE Block; /* Previous State Buffer for CBC Decryption */ +} AESWORKSPACE; + + +/******************************************************************************/ +/* AES API: Public Functions */ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +int __FLINT_API +AESInit_l (AESWORKSPACE * ws, + int mode, + int BlkLength, + AESBLOCK IV, + AESKEYSCHED * AESKey, + AESKEY RawKey, + int KeyLength, + int DFlag); + +int __FLINT_API +AESCrypt_l (AESBLOCK OutBlock, + AESWORKSPACE * ws, + AESKEYSCHED * ks, + AESBLOCK Inblock, + int InLength); + +int __FLINT_API +AESKeySched_l (AESKEYSCHED *AESKey, + AESKEY RawKey, + int KeyLength, + int BlkLength, + int DFlag, + int mode); + +void __FLINT_API +AESPurge_l (AESWORKSPACE * ws, + AESKEYSCHED * ks); + + +/******************************************************************************/ +/* AES public kernel functions */ + +/* Key expansion for encryption / decryption */ +int __FLINT_API +AESKeyExpansion_l (AESXPKEY ExpandedKey, AESKEY RawKey, int KeyLength, int BlockLength); + +int __FLINT_API +AESInvKeyExpansion_l (AESXPKEY InvExpandedKey, AESKEY RawKey, int KeyLength, int BlockLength); + +/* Encryption of a single block w/ KeyExpansion */ +int __FLINT_API +AESEncryptBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESKEY RawKey, int KeyLength, int BlockLength); + +/* decryption of a single block w/ InvKeyExpansion */ +int __FLINT_API +AESDecryptBlock_l (AESBLOCK MessBlock, AESBLOCK CipherBlock, AESKEY RawKey, int KeyLength, int BlockLength); + +/* Encryption of a single block w/o KeyExpansion */ +int __FLINT_API +AESEncBlock_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESXPKEY ExpandedKey, int KeyLength, int BlockLength); + +/* Decryption of a single block w/o InvKeyExpansion */ +int __FLINT_API +AESDecBlock_l (AESBLOCK MessBlock, AESBLOCK CipherBlock, AESXPKEY ExpandedKey, int KeyLength, int BlockLength); + +/* State encryption */ +int __FLINT_API +AESEncState_l (AESSTATE State, AESXPKEY ExpandedKey, int Nk, int Nb); + +/* State decryption */ +int __FLINT_API +AESDecState_l (AESSTATE State, AESXPKEY InvExpandedKey, int Nk, int Nb); + +/* Block encryption w/ variable number of rounds */ +int __FLINT_API +AESEncBlockRounds_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESXPKEY ExpandedKey, int KeyLength, int BlockLength, int Rounds); + +/* Block decryption w/ variable number of rounds */ +int __FLINT_API +AESDecBlockRounds_l (AESBLOCK CipherBlock, AESBLOCK MessBlock, AESXPKEY ExpandedKey, int KeyLength, int BlockLength, int Rounds); + +#ifdef __cplusplus +} +#endif + +#endif /* __AESH__ */ diff --git a/flint/src/asm/cygwin/div.s b/flint/src/asm/cygwin/div.s new file mode 100644 index 0000000..5676a8d --- /dev/null +++ b/flint/src/asm/cygwin/div.s @@ -0,0 +1,607 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module div.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Division, interface compatible with C-function div_l() * +#* * +#* Quotient := Dividend div Divisor * +#* Remainder := Dividend mod Divisor * +#* * +#* Stack on calling of div_l: SP+16 ---> Offset remainder * +#* SP+12 ---> Offset quotient * +#* SP+ 8 ---> Offset divisor * +#* SP+ 4 ---> Offset dividend * +#* SP ---> Return address * +#* * +#* Return Value: ax = -1 if divisor = 0 * +#* ax = 0 else * +#* * +#****************************************************************************** +# +.equ a, 0 # Dividend (working copy) +.equ b, 1030 # Divisor (working copy) +.equ q, 1546 # Quotient qhat (working memory) +.equ q1, 2566 # High-order digit of divisor (normalized) +.equ v1, 2570 # 2nd digit of divisor (normalized) +.equ v2, 2574 +.equ d, 2578 # Exponent for normalization +.equ uj1, 2582 # uj+1 (normalized) +.equ uj2, 2586 # uj+2 (normalized) +# +.equ WORKSP, 2600 # Working memory in stack area +# +.text +.globl _div_l + +_div_l: pushl %ebp # Store value for calling procedure + movl %esp,%ebp + subl $WORKSP,%esp # lokal working memory + movl %esp,%eax + pushl %ebx + pushl %edi + pushl %esi + movl %eax,%ebx # Store start address of working memory +# + movl 8(%ebp),%esi # Offset of variable a + movl 12(%ebp),%edi # Offset of variable b + movw (%esi),%ax # l(a) + movw (%edi),%dx # l(b) + cmpw $0,%dx # b = 0 ? + jne .l1 + jmp .divbyz # Division by zero! +# +#>>>>>> Lade Operanden +# +.l1: pushl %edi # Store offset b + leal a(%ebx),%edi # Destination offset is a[bx] + xorl %ecx,%ecx + movw %ax,%cx # l(a) in cx + shrw $1,%cx + jnc .l2 + incw %cx +.l2: cld + rep + movsl # Load a as ULONG + movsw # plus one USHORT + movw %ax,%cx + shlw $1,%cx + leal a+2(%ebx,%ecx),%edi + movw $0,(%edi) +# + popl %esi # Hole Seg:Offs von b + leal b(%ebx),%edi # Zieloffset ist b[bx] + xorl %ecx,%ecx + movw %dx,%cx # l(b) in cx + shrw $1,%cx + jnc .l3 + incw %cx +.l3: cld + rep + movsl # Load b as ULONG + movsw # plus one USHORT + movw %dx,%cx + shlw $1,%cx + leal b+2(%ebx,%ecx),%edi + movl $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # Store ebp + movl %ebx,%ebp # Indexed addressing based on ss +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + xorl %ecx,%ecx + movw a(%ebp),%ax # #USHORTs into ax + cmpw $0,%ax + je .next1 + shll $1,%eax # Index to low-order byte + # of high-order digit + movl %eax,%esi +.l4: cmpw $0,a(%ebp,%esi) # USHORT = 0 ? + jne .l5 # If not we're done + subl $2,%esi # Else: Step back one digit + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l4 # Next comparison +.l5: # Length determined +.mazer1: + shrl $1,%esi # #Digits + movl %esi,%eax # Basisadresse des Operanden holen + movw %ax,a(%ebp) # Store number of digits + +#Operand2 +.next1: movw b(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll $1,%eax # #Bytes, index to low-order byte + # of high-order digit + movl %eax,%esi +.l6: cmpw $0,b(%ebp,%esi) # Digit = 0 ? + jne .l7 # If not we're done + subl $2,%esi # Else: Step back one digit + cmpl $0,%esi # Index = 0? + je .mazer2 # Then argument = 0 + jmp .l6 # Next comparison +.l7: # Length found +.mazer2: + shrl $1,%esi # Number of digits + movl %esi,%eax # Store number of digits + movw %ax,b(%ebp) + +.end1: cmpw $0,%ax + jne .l8 + popl %ebp + jmp .divbyz +.l8: cmpw $0,a(%ebp) + jne .l9 + popl %ebp + jmp .divz +# +#>>>>>> Test a < b ? +# +.l9: movl $0,%ecx + movw a(%ebp),%cx + cmpw b(%ebp),%cx # l(a) - l(b) + jnc .div03 + jmp .dra +.div03: jne .div05 # If lengths are equal compare digits + movl %ecx,%eax # cl = l(a) = l(b) + shll $1,%eax + leal a(%ebp),%esi + leal b(%ebp),%edi + addl %eax,%edi # si points to high-order digit of a + addl %eax,%esi # di points to high-order digit of b + std + repe + cmpsw +# xchg %esi,%edi + cld + jnc .div05 # If no carry occurs, q is positive + jmp .dra # Else q := 0 and r := a +.div05: movw b(%ebp),%ax + shrw $1,%ax + jnc .div05a + incw %ax +.div05a: + cmpw $1,%ax # Test if length l(b) = 1 + jne .dstart + jmp .dshort # If so go to short division +# +#>>>>>> Start division +# +.dstart: + movl $0,%eax + movw b(%ebp),%ax + shrw $1,%ax + jnc .dm0 + incw %ax +.dm0: movl %eax,%esi + shll $2,%esi + subl $2,%esi # Pointer to low byte of b[l(b)] + # (pointer to high-order ULONG) + cmpl $10,%esi # Does divisor have 3 or more digits? + jb .dm1a # Two digits are present at mininum! + + movl b(%ebp,%esi),%ebx # b[l(b)] in bx + movl b-4(%ebp,%esi),%eax + movl b-8(%ebp,%esi),%edx +# + movl $0,%ecx # Prepare counter +# +.l10: cmpl $0x080000000,%ebx # v1 >= 2^31 ? + jae .dm2 # If not ... + incw %cx + clc + rcll $1,%edx + rcll $1,%eax + rcll $1,%ebx # v1 = v1 * 2 + jmp .l10 # until v1 >= 2^31 + +.dm1a: movl b(%ebp,%esi),%ebx # b[l(b)] in bx + movl b-4(%ebp,%esi),%eax +# + movl $0,%ecx # Prepare counter +# +.l11: cmpl $0x080000000,%ebx # v1 >= 2^31 ? + jae .dm2 # If not ... + incw %cx + clc + rcll $1,%eax + rcll $1,%ebx # v1 = v1 * 2 + jmp .l11 # until v1 >= 2^31 +# +.dm2: movw %cx,d(%ebp) # Store exponent + movl %ebx,v1(%ebp) # v1 + movl %eax,v2(%ebp) # v2 + +.dm3: incw a(%ebp) # l(a) = l(a) + 2 + incw a(%ebp) + movl $0,%eax + movw a(%ebp),%ax + shrw $1,%ax + jnc .dm3a + incw %ax +.dm3a: movl %eax,%esi + shll $2,%esi + subl $2,%esi + movl $0,a(%ebp,%esi) # a[l(a)] = 0 +# +.d2: movl $0,%eax + movw b(%ebp),%ax + shrw $1,%ax + jnc .d2a + incw %ax +.d2a: movl %eax,%esi + shll $2,%esi + subl $2,%esi # si points to loByte of b[l(b)] +# + movl $0,%ecx + movw a(%ebp),%cx + shrw $1,%cx + jnc .d2b + incw %cx +.d2b: movl %ecx,%edi + shll $2,%edi + subl $2,%edi # di points to loByte of a[l(a)] + pushl %edi + subl %esi,%edi + incl %edi # di points to hiByte of a[l(a)-l(b)] + movl %edi,%ecx + shrl $2,%ecx # Counter in cx + popl %esi # si points to loByte of a[l(a)] (j+l(b)) + subl $3,%edi # di points to loByte of a[l(a)-l(b)] (j) + pushl %edi # Possible length of q +# +#-----> Main loop of division +# +.d3: cmpl $14,%esi + jb .d3a + pushl %edi + movl a(%ebp,%esi),%edx # uj unshifed in dx (hiWord) + movl a-4(%ebp,%esi),%eax # uj+1 unshifted + movl a-8(%ebp,%esi),%ebx # uj+2 unshifted + movl a-12(%ebp,%esi),%edi # uj+3 unshifted + pushl %ecx + movw d(%ebp),%cx +.l12: cmpw $0,%cx + je .l13 + rcll $1,%edi + rcll $1,%ebx + rcll $1,%eax + rcll $1,%edx + decw %cx + jmp .l12 +.l13: popl %ecx + popl %edi + jmp .qhat +# +.d3a: movl a(%ebp,%esi),%edx # uj unshifted + movl a-4(%ebp,%esi),%eax # uj+1 unshifted + movl a-8(%ebp,%esi),%ebx # uj+2 unshifted + pushl %ecx + movw d(%ebp),%cx +.l14: cmpw $0,%cx + je .l15 + rcll $1,%ebx + rcll $1,%eax + rcll $1,%edx + decw %cx + jmp .l14 +.l15: popl %ecx +# +#-----> Calculate and test qhat +# +.qhat: movl %eax,uj1(%ebp) # Store shifted uj+1 + movl %ebx,uj2(%ebp) # Store shifted uj+2 + movl v1(%ebp),%ebx # v1 in bx + cmpl %edx,%ebx + je .bm1 # If v1 = uj q = b - 1 +# + divl %ebx # eax <- qhat +# edx <- rhat: = uj*b + uj+1 -qhat*v1 = (uj*b + uj+1) mod v1 + movl %eax,q1(%ebp) # Store qhat + cmpl $0,%eax + jne .l16 + jmp .dml # If q = 0 process next digit +# +.bm1: movl $0x0ffffffff,%eax # eax <- qhat + movl %eax,q1(%ebp) # Store qhat + movl uj1(%ebp),%edx # edx <- uj+1 + addl v1(%ebp),%edx # edx <- uj+1 + v1 =: rhat + jc .d4 # rhat >= b => v2 * qhat < rhat * b +# +.l16: movl %edx,%ebx # ebx <- rhat + mull v2(%ebp) # eax <- low(qhat * v2), edx <- high(qhat * v2) + cmpl %ebx,%edx # rhat >= high(qhat * v2) ? + jb .d4 # CF == 1? Then we're done + ja .l17 # rhat < high(qhat * v2) => decrement qhat + cmpl uj2(%ebp),%eax # uj+2 >= low(qhat * v2) ? + jbe .d4 # CF == 1 OR ZF == 1? Then we're done +# +.l17: decl q1(%ebp) # Correct qhat-- + addl v1(%ebp),%ebx # ebx <- rhat + v1 + jc .d4 # rhat >= b => v2 * qhat < rhat * b + subl v2(%ebp),%eax # (qhat * v2) - v2 + sbb $0,%edx +# + cmpl %ebx,%edx # rhat >= high(qhat * v2) ? + jb .d4 # CF == 1? Then we're done + ja .l17 # rhat < high(qhat * v2) => decrement qhat + cmpl uj2(%ebp),%eax # uj+2 >= low(qhat * v2) ? + ja .l17 # CF==0 + ZF==0? => Repeat decrement of qhat +# +.d4: pushl %ecx # Store main counter + pushl %esi # Store j + l(b) + pushl %edi # Store j + movw b(%ebp),%cx # Load counter with l(b) + shrw $1,%cx + jnc .d4a + incw %cx +.d4a: movl q1(%ebp),%ebx # q in bx + movl $2,%esi + movl $0,%edx # Dummy carry +# +#-----> Multiplication and subtraction +# +.dms: push %edx + movl %ebx,%eax # q in ax + mull b(%ebp,%esi) # hi:dx lo:ax + subl %eax,a(%ebp,%edi) + adcl $0,%edx # Carry to next subtrahend + popl %eax + subl %eax,a(%ebp,%edi) + adcl $0,%edx # Carry to next subtrahend + incl %edi + incl %edi + incl %edi + incl %edi + incl %esi + incl %esi + incl %esi + incl %esi + loop .dms + subl %edx,a(%ebp,%edi) + jnc .dnc # No correction necessary if carry = 0 +# +#-----> Correction +# + popl %edi + pushl %edi + xorl %ecx,%ecx + movw b(%ebp),%cx # Load counter with l(b) + shrw $1,%cx + jnc .d4b + incw %cx +.d4b: movl $2,%esi + clc +.d5: movl b(%ebp,%esi),%eax # b[i] + adcl %eax,a(%ebp,%edi) # a[j+i] + b[i] + incl %edi + incl %edi + incl %edi + incl %edi + incl %esi + incl %esi + incl %esi + incl %esi + loop .d5 # Outer loop + jnc .d51 + incl a(%ebp,%edi) +.d51: decl q1(%ebp) # q = q - 1 +# +# +.dnc: popl %edi # Get pointers and counters + popl %esi + popl %ecx +.dml: movl q1(%ebp),%eax # Get q + movl %eax,q(%ebp,%edi) # q[j] = q + subl $4,%edi + subl $4,%esi + decl %ecx # Inner loop + jz .d6 + jmp .d3 +# +.d6: popl %edi # Load length l(a)-l(b)-1 in ULONGs + addl $2,%edi # di points to loByte of last USHORT + movl $0,%eax +.l18: cmpw q(%ebp,%edi),%ax # q[l(a)-l(b)]=0 ? + jne .d7 # If so ... + decl %edi + decl %edi # ... l(q) = l(a) - l(b) - 1 + cmpl $0,%edi + jne .l18 +.d7: movl %edi,%edx + shrl $1,%edx # l(q) (#USHORTs) in dx + movw %dx,q(%ebp) # Store l(q) +# +#-----> Determine length of remainder +# + movl $0,%eax + movw b(%ebp),%ax + movl %eax,%ecx + shlw $1,%ax + movl %eax,%edi + movl $0,%ebx + incl %edi + incl %edi +.d8: decl %edi + decl %edi # di points to loByte of a[l(b)] + cmpw %bx,a(%ebp,%edi) + loope .d8 + jz .d9 # If a[bp][di]!= 0 ... + incw %cx # ... l has to be incremented +.d9: movw %cx,a(%ebp) # Store l(r) +# +#-----> Store results +# +.dstore: + movl %ebp,%esi + movl %ebp,%ebx + popl %ebp + pushl %esi + addl $q,%esi + movl 16(%ebp),%edi # Offset of quotient + movl $0,%ecx + movw (%esi),%cx + shrw $1,%cx + jnc .l19 + incw %cx +.l19: cld + cmpw $0,%cx + je .qzero + rep + movsl +.qzero: movsw +# +#-----> Store remainder +# + popl %esi +.drs: + movl 20(%ebp),%edi + addl $a,%esi + movl $0,%ecx + movw (%esi),%cx + shrw $1,%cx + jnc .l20 + incw %cx +.l20: cld + cmpw $0,%cx + je .rzero + rep + movsl +.rzero: movsw + movl $0,%eax # Return-Value = 0: OK +# +#******************************************************************************* +# Security: Purge stack + +divret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + rep + stosl # Overwrite with 0 or -1 +#******************************************************************************* +# + popl %esi + popl %edi + popl %ebx + movl %ebp,%esp + popl %ebp + ret +# +# +.divz: movl $0,%eax # Return-Value = 0: Everything OK + movl 20(%ebp),%edi # Destination Offset of remainder + movl 16(%ebp),%esi # Destination offset of quotient + movw %ax,(%edi) # Remainder = 0 + movw %ax,(%esi) # Quotient = 0 + jmp divret +# +.divbyz: + movl $-1,%eax + jmp divret # Return-Value = -1: Division by zero +# +#-----> Case q = 0 and r = a +# +.dra: movl %ebp,%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + movw $0,(%edi) # q = 0 + jmp .drs # Store remainder +# +# +#>>>>>> Short Division +# +# +.dshort: + movl $0,%ecx + movw a(%ebp),%cx + shrw $1,%cx + jnc .dsh0 + incw %cx +.dsh0: movl %ecx,%edi + shll $2,%edi + subl $2,%edi + movl $0,%edx + movl b+2(%ebp),%ebx +.dsh1: movl a(%ebp,%edi),%eax + divl %ebx + movl %eax,q(%ebp,%edi) + subl $4,%edi + loop .dsh1 +.dsh2: movl $0,%ecx + movw a(%ebp),%cx + movl %ecx,%esi + shll $1,%esi +.l21: movw q(%ebp,%esi),%bx + cmpw $0,%bx + jne .dsh3 + decl %esi + decl %esi + decl %ecx + cmpw $0,%cx + jne .l21 +.dsh3: movw %cx,q(%ebp) + movl %edx,a+2(%ebp) + movw $2,a(%ebp) + cmpw $0,a+4(%ebp) + jne .dst + movw $1,a(%ebp) + cmpw $0,a+2(%ebp) + jne .dst + movw $0,a(%ebp) +.dst: jmp .dstore +# + + + diff --git a/flint/src/asm/cygwin/mult.s b/flint/src/asm/cygwin/mult.s new file mode 100644 index 0000000..15710ad --- /dev/null +++ b/flint/src/asm/cygwin/mult.s @@ -0,0 +1,273 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module mult.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Multiplication, interface compatible with C function mul_l() * +#* * +#* Product := f1 * f2 * +#* * +#* Stack on calling of mul: SP+12 ---> Offset product * +#* SP+ 8 ---> Offset f2 * +#* SP+ 4 ---> Offset f1 * +#* SP ---> Return address * +#* * +#* Return Value : ax = 0 * +#* * +#****************************************************************************** +# +.equ a, 0 # CLINT factor 1 (working copy) +.equ b, 520 # CLINT factor 2 (working copy) +.equ p, 1040 # Product (storage space for result) +# +.equ WORKSP, 2200 # Working memory in stack area +# +.text +.globl _mult + +_mult: pushl %ebp # Store base ptr for caller + movl %esp,%ebp + subl $WORKSP,%esp # Local memory + movl %esp,%eax # Store starting address + pushl %edi + pushl %esi + pushl %ebx + movl %eax,%ebx +# + xorl %eax,%eax + xorl %edx,%edx + movl 8(%ebp),%esi # Parameter f1 + movl 12(%ebp),%edi # Parameter f2 + movw (%esi),%ax + movw (%edi),%dx + + cmpw $0,%ax # a = 0 ? + jne .mult01 + jmp .multz +.mult01: + cmpw $0,%dx # b = 0 ? + jne .mult02 # Then we're done! + jmp .multz +# +#>>>>>> Load operands +# +.mult02: + pushl %edi # Store Seg:Offs f2 + leal b(%ebx),%edi # Destination offset is b[ebx] + movl $0,%ecx + movw %ax,%cx # l(a) (length of a) in ecx + cld +rep movsw # Load a in chunks of USHORT + movsw # plus one USHORT + movw $0,(%edi) + popl %esi # Get offset of b + leal a(%ebx),%edi # Destination offset is a[ebx] + movw %dx,%cx # l(b) in cx + cld +rep movsw # Load b in chunks of USHORT + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # BP retten + movl %ebx,%ebp # Basisind. Adr. in SS +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + movw b(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .next1 + shll %eax + movl %eax,%esi # Index to high-order digit +.l1: cmpw $0,b(%ebp,%esi) # USHORT = 0 ? + jne .l2 # If not, then finished + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0 ? + je .mazer1 # Then argument = 0 + jmp .l1 # Compare next +.l2: +.mazer1: + shrl %esi # #USHORTs + movl %esi,%eax # Store number of digits + movw %ax,b(%ebp) + +#Operand2 +.next1: movw a(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll %eax # Index to high-order digit + movl %eax,%esi +.l3: cmpw $0,a(%ebp,%esi) # Digit = 0 ? + jne .l4 # If not, then finished + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0 ? + je .mazer2 # Then argument = 0 + jmp .l3 # Compare next +.l4: +.mazer2: + shrl %esi # #Digits + movl %esi,%eax # ... store number of digits + movw %ax,a(%ebp) + +.end1: cmpw $0,%ax + jne .l5 + popl %ebp + jmp .multz +.l5: cmpw $0,b(%ebp) + jne .l6 + popl %ebp + jmp .multz +# +#>>>>>> Start multiplication +# +#-----> Initialize working memory +# +.l6: movl $2,%esi # Prepare index i + movw %dx,%cx # l(b) + shrw %cx + jnc .mult0 + incw %cx +.mult0: movl $0,%eax +.mult1: movl %eax,p(%ebp,%esi) + addl $4,%esi + loop .mult1 +# +#-----> Outer loop +# + movl $2,%esi # Index i + movl $0,%ecx + movw b(%ebp),%cx # Prepare counter for outer loop + shrw %cx + jnc .mult2 + incw %cx +.mult2: pushl %ecx # Store counter +# +#-----> Inner loop +# + movl $2,%edi # Index j + movw a(%ebp),%cx # Prepare counter for inner loop + shrw %cx + jnc .mult2a + incw %cx +.mult2a: + xorl %edx,%edx # Dummy-carry + movl b(%ebp,%esi),%ebx # Load b[i] + addl %edi,%esi # Product index i+j +.mult3: pushl %ecx # Store counter + movl %edx,%ecx # carry u in dx + movl %ebx,%eax + mull a(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax,p-2(%ebp,%esi) # p[i+j-1]= ax + p[i+j-1] + adcl $0,%edx # New carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter for inner loop + loop .mult3 +# +#-----> End inner loop +# + movl %edx,p-2(%ebp,%esi) # p[i+j-1]=u + subl %edi,%esi # Restore i + addl $4,%esi # i=i+4 + popl %ecx # Get counter for outer loop + loop .mult2 +# +#-----> End outer loop +# + addl %edi,%esi + subl $4,%esi +.mult3a: + cmpw $0,p(%ebp,%esi) + jne .mult4 + subl $2,%esi + jmp .mult3a +.mult4: movl %esi,%ecx + shrl %ecx + movw %cx,p(%ebp) +# +#-----> Store product +# + leal p(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + cmpw $0,%cx + je .l7 + cld # l(p) is still in counter cx +rep movsw +.l7: movsw +# +#******************************************************************************* +# Security: Purge stack + +.muret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + movl $0,%eax # Return-Value = 0: OK +rep stosl # Overwrite with 0 +#******************************************************************************* +# + popl %ebx + popl %esi # Restore registers for caller + popl %edi + movl %ebp,%esp + popl %ebp + ret +# +.multz: movl 16(%ebp),%esi # Product is 0 + movw $0,(%esi) + jmp .muret +# + + + diff --git a/flint/src/asm/cygwin/sqr.s b/flint/src/asm/cygwin/sqr.s new file mode 100644 index 0000000..ab8811b --- /dev/null +++ b/flint/src/asm/cygwin/sqr.s @@ -0,0 +1,311 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module sqr.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Squaring, interface compatible with C function sqr_l() * +#* * +#* Q := a * a mod M * +#* * +#* Stack on calling of sqr: SP+ 8 ---> Offset q * +#* SP+ 4 ---> Offset a * +#* SP ---> Return address * +#* * +#* Return Value : ax = 0 * +#* * +#****************************************************************************** +# +.equ fct, 0 # Factor (working memory) +.equ prd, 520 # Square (working memory) +# +.equ WORKSP, 1560 # Working memory in stack area +# +.text +.globl _sqr + +_sqr: pushl %ebp # Store base ptr for caller + movl %esp,%ebp + subl $WORKSP, %esp # Local memory + movl %esp,%eax + pushl %ebx + pushl %edi + pushl %esi + movl %eax,%ebx # Store starting address +# + movl 8(%ebp),%esi # Offset of variable a + movw (%esi),%dx # Length l(a) + cmpw $0,%dx + jnz .sqr011 + jmp .sqrnul +.sqr011: +# +#>>>>>> Lade Operanden +# +.sqr02: leal fct(%ebx),%edi # Destination offset is a[bx] + movl $0,%ecx + movw %dx,%cx # l(a) into cx +.l1: cld +rep movsw # Load a in chunks of USHORT into a[bx] + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare addressing of local working memory +# + pushl %ebp # Store bp + movl %ebx,%ebp # Indexed addressing based on ss +# +#>>>>>> Remove leading zeros from operand +# + xorl %eax,%eax + movw fct(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll %eax # #Bytes, index to high-order digit + movl %eax,%esi +.l2: cmpw $0,fct(%ebp,%esi) # digit = 0 ? + jne .l3 # If not, then we're done + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l2 # Compare next digit +.l3: +.mazer1: + shrl %esi # #USHORTS + movl %esi,%eax # Get base address of oeperand + movw %ax,fct(%ebp) # Store number of digits + +.end1: cmpw $0,%ax + jne .sqrmul + popl %ebp + jmp .sqrnul +# +# +#>>>>>> Beginn der Quadrierung +# +#-----> Arbeitsfeld initialisieren +# +.sqrmul: + movl $0,%ecx + movw fct(%ebp),%cx # l(f) + shrw %cx + jnc .l4 + incw %cx +.l4: cmpw $1,%cx + jne ._sqr09 + jmp ._xrgsq # If l(f)=1 do squaring in registers +._sqr09: + movl $0,%eax + movl $2,%esi # Prepare index i +._sqr10: + movl %eax,prd(%ebp,%esi) + addl $4,%esi + loop ._sqr10 +# +#-----> Outer loop +# + movl $2,%esi # Prepare index i + movl $0,%ecx + movw fct(%ebp),%cx # Counter outer loop + shrw %cx + jc ._sqr11 + decw %cx # in cx = l(a)-1 +._sqr11: + pushl %ecx # Store counter +# +#-----> Innere Schleife +# + movl %esi,%edi # index j=i+4 + addl $4,%edi + xorl %ecx,%ecx + movw fct(%ebp),%cx # Counter inner loop + shrw %cx + jnc .l5 + incw %cx +.l5: pushl %esi + addl $2,%esi + shrl $2,%esi + subl %esi,%ecx + popl %esi # cx = l(a)-i + movl $0,%edx # Dummy carry + movl fct(%ebp,%esi),%ebx # Load a[i] + addl %edi,%esi # Product index i+j +._sqr12: + pushl %ecx # Store counter + movl %edx,%ecx # Carry u in edx + movl %ebx,%eax + mull fct(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax, prd-2(%ebp,%esi) # q[i+j-1]= ax + q[i+j-1] + adcl $0,%edx # new carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter inner loop + loop ._sqr12 +# +#-----> End inner loop +# + movl %edx,prd-2(%ebp,%esi) # q[i+j-1]=u + subl %edi,%esi # Restore i + addl $4,%esi # i=i+4 + popl %ecx # Get counter outer loop + loop ._sqr11 +# +#-----> End outer loop +# + addl %edi,%esi + movl $0,prd-2(%ebp,%esi) + movl $0,prd+2(%ebp,%esi) +# +#-----> Multiply intermediate result by 2 +# + movl $6,%esi # First word is zero + xorl %ecx,%ecx + movw fct(%ebp),%cx +._xsll: + rcll $1,prd(%ebp,%esi) # Shift q in chunks of ULONG + incl %esi + incl %esi + incl %esi + incl %esi + loop ._xsll +# +#-----> Add squares to intermediate result q +# +.xsle: movw fct(%ebp),%cx +.l6: shlw %cx + movw %cx,prd(%ebp) + movl $2,%esi + movl $2,%edi + movw fct(%ebp),%cx # l(a) is counter + shrw %cx + jnc .l7 + incw %cx +.l7: xorl %eax,%eax + pushf # Dummy carry +._sqr20: + movl fct(%ebp,%esi),%eax + mull %eax # ax = lo, dx = hi + popf + adcl %eax, prd(%ebp,%edi) + adcl %edx, prd+4(%ebp,%edi) + pushf + addl $4,%esi + addl $8,%edi + loop ._sqr20 + popf # Adjust stack pointer + jmp ._sqr20a +# +#-----> Squaring in registers in case of l(a) = 1 +# +._xrgsq: + movl fct+2(%ebp),%eax + mull %eax + movl %eax, prd+2(%ebp) + movl %edx, prd+6(%ebp) + movw $4,prd(%ebp) +# +#-----> Determine length of remainder +# +._sqr20a: + xorl %eax,%eax + movw prd(%ebp),%ax + movl %eax,%edi + shll %edi + cmpw $0,prd(%ebp,%edi) + jnz ._sqr60 + decw prd(%ebp) + jmp ._sqr20a +# +#-----> Store square +# +._sqr60: + leal prd(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 12(%ebp), %edi + movl $0,%ecx + movw (%esi),%cx + shrw %cx + jnc .l8 + incw %cx +.l8: cmpw $0,%cx + je .l9 + cld +rep movsl +.l9: movsw +# +#******************************************************************************* +# Security: Purge stack + +.sqrret: + movl %ebx,%edi + movl $(WORKSP-4)/4, %ecx + cld + movl $0,%eax # Return-Value = 0: OK +rep stosl # Overwrite with 0 +#******************************************************************************* +# + popl %esi + popl %edi + popl %ebx + movl %ebp,%esp + popl %ebp + ret +# +.sqrnul: + movl 12(%ebp), %esi + movw $0,(%esi) + jmp .sqrret +# + + + + + diff --git a/flint/src/asm/cygwin/umul.s b/flint/src/asm/cygwin/umul.s new file mode 100644 index 0000000..2e6e5b2 --- /dev/null +++ b/flint/src/asm/cygwin/umul.s @@ -0,0 +1,235 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module umul.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Multiplication, interface compatible with C function umul_l() * +#* * +#* Product := a * u * +#* * +#* Stack on calling of umul: SP+12 ---> Offset product * +#* SP+ 8 ---> Offset a (CLINT) * +#* SP+ 4 ---> Offset u (USHORT) * +#* SP ---> Return address * +#* * +#* Return Value: ax = 0 * +#* * +#****************************************************************************** +# +.equ fct, 0 # CLINT factor (working copy) +.equ prd, 520 # Product (working copy) +# +.equ WORKSP, 1560 # Working memory in stack area +# +.text +.globl _umul + +_umul: pushl %ebp # Store value for calling procedue + movl %esp,%ebp + subl $WORKSP,%esp # Local memory + movl %esp,%eax # Store starting address + pushl %edi + pushl %esi + pushl %ebx + movl %eax,%ebx +# + xorl %eax,%eax + xorl %edx,%edx + + movw 12(%ebp),%dx # USHORT factor in dx + cmpw $0,%dx + jne .l1 + jmp .umultz + +.l1: movl 8(%ebp),%esi # Offset of variable a + movw (%esi),%ax + cmpw $0,%ax # a = 0 ? + jne .umult01 + jmp .umultz +# +#>>>>>> Lade Operanden +# +.umult01: + leal fct(%ebx),%edi # Destination offset is a[ebx] + movl $0,%ecx + movw %ax,%cx # l(a) in ecx + cld + rep + movsw # Load a in chunks of USHORT into a + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # BP retten + movl %ebx,%ebp # Basisind. Adr. in SS +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + movw fct(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll $1,%eax # #Bytes + movl %eax,%esi +.l2: cmpw $0,fct(%ebp,%esi) # USHORT = 0 ? + jne .l3 # If not, we're done + subl $2,%esi # Else: Step back one USHORT + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l2 # Compare next digit +.l3: +.mazer1: + shrl %esi # #USHORTs + movl %esi,%eax # Store number of digits + movw %ax,fct(%ebp) +# +.end1: cmpw $0,%ax + jne .l4 + popl %ebp + jmp .umultz +# +#>>>>>> Start multiplication +# +#-----> Initialize working memory +# +.l4: movl $2,%esi # Prepare index i + movw fct(%ebp),%cx # l(a) + shrw $1,%cx + jnc .umult0 + incw %cx +.umult0: + movl $0,%eax +.umult1: + movl %eax,prd(%ebp,%esi) + addl $4,%esi + loop .umult1 +# +#-----> Innere Schleife +# + movl $2,%edi # Index j + movw fct(%ebp),%cx # Prepare counter inner loop + shrw $1,%cx + jnc .umult2a + incw %cx +.umult2a: + xorl %ebx,%ebx + movw %dx,%bx # Kepp USHORT factor in bx + movl $0,%edx # Dummy carry + movl $2,%esi + movl $2,%edi +.umult3: + pushl %ecx # Store counter + movl %edx,%ecx # Carry u in dx + movl %ebx,%eax # Load USHORT factor in ax + mull fct(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax,prd(%ebp,%esi) # p[i+j-1]= ax + p[i+j-1] + adcl $0,%edx # New carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter inner loop + loop .umult3 +# +#-----> End inner loop +# + movl %edx,prd(%ebp,%esi) # p[i+j-1]=u + addl $2,%esi +.umult3a: + cmpw $0,prd(%ebp,%esi) + jne .umult4 + subl $2,%esi + jmp .umult3a +.umult4: + movl %esi,%ecx + shrl $1,%ecx + movw %cx,prd(%ebp) +# +#-----> Store product +# + leal prd(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + + cmpw $0,%cx + je .l5 + cld # Length l(p) is still in counter cx + rep + movsw +.l5: movsw +# +#******************************************************************************* +# Security: Purge stack + +.muret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + movl $0,%eax # Return-Value = 0: OK + rep + stosl # Overwrite with 0 +#******************************************************************************* +# + popl %ebx + popl %esi # Restore registers + popl %edi + movl %ebp,%esp + popl %ebp + ret +# +.umultz: # Product is 0 + movl 16(%ebp),%esi + movw $0,(%esi) + jmp .muret +# + + + + diff --git a/flint/src/asm/div.asm b/flint/src/asm/div.asm new file mode 100644 index 0000000..6248932 --- /dev/null +++ b/flint/src/asm/div.asm @@ -0,0 +1,600 @@ +;****************************************************************************** +;* * +;* Functions for arithmetic and number theory with large integers in C * +;* Software supplement to the book "Cryptography in C and C++" * +;* by Michael Welschenbach * +;* * +;* Module div.asm Revision: 18.12.2000 * +;* * +;* Copyright (C) 1998-2005 by Michael Welschenbach * +;* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +;* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +;* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +;* Copyright (C) 2002-2005 by PHEI, P.R.China * +;* Copyright (C) 2002-2005 by InfoBook, Korea * +;* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +;* * +;* All Rights Reserved * +;* * +;* The software may be used for noncommercial purposes and may be altered, * +;* as long as the following conditions are accepted without any * +;* qualification: * +;* * +;* (1) All changes to the sources must be identified in such a way that the * +;* changed software cannot be misinterpreted as the original software. * +;* * +;* (2) The statements of copyright may not be removed or altered. * +;* * +;* (3) The following DISCLAIMER is accepted: * +;* * +;* DISCLAIMER: * +;* * +;* There is no warranty for the software contained in this distribution, to * +;* the extent permitted by applicable law. The copyright holders provide the * +;* software `as is' without warranty of any kind, either expressed or * +;* implied, including, but not limited to, the implied warranty of fitness * +;* for a particular purpose. The entire risk as to the quality and * +;* performance of the program is with you. * +;* * +;* In no event unless required by applicable law or agreed to in writing * +;* will the copyright holders, or any of the individual authors named in * +;* the source files, be liable to you for damages, including any general, * +;* special, incidental or consequential damages arising out of any use of * +;* the software or out of inability to use the software (including but not * +;* limited to any financial losses, loss of data or data being rendered * +;* inaccurate or losses sustained by you or by third parties as a result of * +;* a failure of the software to operate with any other programs), even if * +;* such holder or other party has been advised of the possibility of such * +;* damages. * +;* * +;****************************************************************************** +;* * +;* Division, interface compatible with C-function div_l() * +;* * +;* Quotient := Dividend div Divisor * +;* Remainder := Dividend mod Divisor * +;* * +;* Stack on calling of div_l: SP+16 ---> Offset remainder * +;* SP+12 ---> Offset quotient * +;* SP+ 8 ---> Offset divisor * +;* SP+ 4 ---> Offset dividend * +;* SP ---> Return address * +;* * +;* Return Value: ax = -1 if divisor = 0 * +;* ax = 0 else * +;* * +;****************************************************************************** +PUBLIC div_l +.386 +.MODEL FLAT +.CODE +div_l proc near +; +a equ 0 ; Dividend (working copy) +b equ 1030 ; Divisor (working copy) +q equ 1546 ; Quotient qhat (working memory) +q1 equ 2566 ; High-order digit of divisor (normalized) +v1 equ 2570 ; 2nd digit of divisor (normalized) +v2 equ 2574 ; Exponent for normalization +d equ 2578 ; uj+1 (normalized) +uj1 equ 2582 ; uj+2 (normalized) +uj2 equ 2586 +; +_dvd equ [ebp+8] ; Dividend (parameter) +_dvs equ [ebp+12] ; Divisor (parameter) +_qot equ [ebp+16] ; Quotient (parameter) +_rst equ [ebp+20] ; Remainder (parameter) +; +WORKSP equ 2600 ; Working memory in stack area +; +divs: push ebp ; Store value for calling procedure + mov ebp,esp + sub esp,WORKSP ; Local memory + mov eax,esp + push ebx + push edi + push esi + mov ebx,eax ; Store start address of local memory +; + mov esi,_dvd ; Offset of variable a + mov edi,_dvs ; Offset of variable b + mov ax,[esi] ; length(a) + mov dx,[edi] ; length(b) + cmp dx,0 ; b = 0 ? + jne @F + jmp divbyz ; Division by zero! +; +;>>>>>> Load Operands +; +@@: push edi ; Store Seg:Offs b + lea edi,a[ebx] ; destination offset is a[bx] + xor ecx,ecx + mov cx,ax ; l(a) in cx + shr cx,1 + jnc @F + inc cx +@@: cld +rep movsd ; Load a as ULONG + movsw ; plus one USHORT + mov cx,ax + shl cx,1 + lea edi,a[ebx+ecx+2] + mov word ptr [edi],0 +; + pop esi ; Get Seg:Offs of b + lea edi,b[ebx] ; Destination offset is b[bx] + xor ecx,ecx + mov cx,dx ; l(b) in cx + shr cx,1 + jnc @F + inc cx +@@: cld +rep movsd ; Load b as ULONG + movsw ; plus one USHORT + mov cx,dx + shl cx,1 + lea edi,b[ebx+ecx+2] + mov word ptr [edi],0 +; +;>>>>>> Prepare access to local memory +; + push ebp ; Save bp + mov ebp,ebx ; Indexed addressing based on ss +; +;>>>>>> Remove leading zeros from operands +; + xor eax,eax + xor ecx,ecx + mov ax,a[ebp] ; #USHORTs into ax + cmp ax,0 + je next1 + shl eax,1 ; Index to low-order byte + ; of high-order digit + mov esi,eax +@@: cmp word ptr a[ebp][esi],0 ; Digit = 0 ? + jne @F ; No, then we're done + sub esi,2 ; Else: step back one digit + cmp esi,0 ; Index = 0? + je mazer1 ; Then argument = 0 + jmp @B ; Next comparison +@@: ; Length found +mazer1: shr esi,1 ; #Digits + mov eax,esi ; Store number of digits + mov word ptr a[ebp],ax + +;Operand2 +next1: mov ax,b[ebp] ; #USHORTs in ax + cmp ax,0 + je end1 + shl eax,1 ; #Bytes, index to low-order byte + ; of high-order digit + mov esi,eax +@@: cmp word ptr b[ebp][esi],0 ; Digit = 0 ? + jne @F ; If not, we're done + sub esi,2 ; Else: step back one digit + cmp esi,0 ; Index = 0? + je mazer2 ; Then argument = 0 + jmp @B ; Next comparison +@@: ; Length found +mazer2: shr esi,1 ; #Digits + mov eax,esi ; Store number of digits + mov b[ebp],ax + +end1: cmp ax,0 + jne @F + pop ebp + jmp divbyz +@@: cmp word ptr a[ebp],0 + jne @F + pop ebp + jmp divz +; +;>>>>>> Test a < b ? +; +@@: mov ecx,0 + mov cx,a[ebp] + cmp cx,b[ebp] ; l(a) - l(b) + jnc div03 + jmp dra +div03: jne div05 ; Compare digits + mov eax,ecx ; cl = l(a) = l(b) + shl eax,1 + lea esi,a[ebp] + lea edi,b[ebp] + add esi,eax ; si points to high-order digit of a + add edi,eax ; di points to high-order digit of b + std +repe cmpsw + cld + jnc div05 ; If no carry occurs, q is positive + jmp dra ; Else q := 0 and r := a +div05: mov ax,b[ebp] + shr ax,1 + jnc div05a + inc ax +div05a: cmp ax,1 ; Test if length l(b) = 1 + jne dstart + jmp dshort ; Then go to short division +; +;>>>>>> Beginn der Division +; +dstart: mov eax,0 + mov ax,b[ebp] + shr ax,1 + jnc dm0 + inc ax +dm0: mov esi,eax + shl esi,2 + sub esi,2 ; Pointer to low byte of b[l(b)] + ; (pointer to high-order ULONG) + cmp esi,10 ; Does divisor have 3 or more digits? + jb dm1a ; Two digits are present at mininum! + + mov ebx,b[ebp][esi] ; b[l(b)] in bx + mov eax,b[ebp][esi-4] + mov edx,b[ebp][esi-8] +; + mov ecx,0 ; Prepare counter +; +@@: cmp ebx,080000000h ; v1 >= 2^31 ? + jae dm2 ; If not... + inc cx + clc + rcl edx,1 + rcl eax,1 + rcl ebx,1 ; v1 = v1 * 2 + jmp short @B ; until v1 >= 2^31 + +dm1a: mov ebx,b[ebp][esi] ; b[l(b)] in bx + mov eax,b[ebp][esi-4] +; + mov ecx,0 ; Prepare counter +; +@@: cmp ebx,080000000h ; v1 >= 2^31 ? + jae dm2 ; If not... + inc cx + clc + rcl eax,1 + rcl ebx,1 ; v1 = v1 * 2 + jmp short @B ; until v1 >= 2^31 +; +dm2: mov d[ebp],cx ; Store exponent + mov v1[ebp],ebx ; v1 + mov v2[ebp],eax ; v2 + +dm3: inc word ptr a[ebp] ; l(a) = l(a) + 2 + inc word ptr a[ebp] + mov eax,0 + mov ax,a[ebp] + shr ax,1 + jnc dm3a + inc ax +dm3a: mov esi,eax + shl esi,2 + sub esi,2 + mov dword ptr a[ebp][esi],0 ; a[l(a)] = 0 +; +d2: mov eax,0 + mov ax,b[ebp] + shr ax,1 + jnc d2a + inc ax +d2a: mov esi,eax + shl esi,2 + sub esi,2 ; si points to low-order byte of b[l(b)] +; + mov ecx,0 + mov cx,a[ebp] + shr cx,1 + jnc d2b + inc cx +d2b: mov edi,ecx + shl edi,2 + sub edi,2 ; di points to low-order byte of a[l(a)] + push edi + sub edi,esi + inc edi ; di points to high-order byte of a[l(a)-l(b)] + mov ecx,edi + shr ecx,2 ; Counter in cx + pop esi ; si points to low-order byte of a[l(a)] (j+l(b)) + sub edi,3 ; di points to low-order byte of a[l(a)-l(b)] (j) + push edi ; Possible length of q +; +;-----> Division loop +; +d3: cmp esi,14 + jb d3a + push edi + mov edx,a[ebp][esi] ; uj unshifet in dx (hiWord) + mov eax,a[ebp][esi-4] ; uj+1 unshifted + mov ebx,a[ebp][esi-8] ; uj+2 unshifted + mov edi,a[ebp][esi-12] ; uj+3 unshifted + push ecx + mov cx,d[ebp] +@@: cmp cx,0 + je @F + rcl edi,1 + rcl ebx,1 + rcl eax,1 + rcl edx,1 + dec cx + jmp @B +@@: pop ecx + pop edi + jmp qhat +; +d3a: mov edx,a[ebp][esi] ; uj unshifted + mov eax,a[ebp][esi-4] ; uj+1 unshifted + mov ebx,a[ebp][esi-8] ; uj+2 unshifted + push ecx + mov cx,d[ebp] +@@: cmp cx,0 + je @F + rcl ebx,1 + rcl eax,1 + rcl edx,1 + dec cx + jmp @B +@@: pop ecx +; +;-----> Calculate and test qhat +; +qhat: mov uj1[ebp],eax ; Store shifted uj+1 + mov uj2[ebp],ebx ; Store shifted uj+2 + mov ebx,v1[ebp] ; v1 in bx + cmp ebx,edx + je bm1 ; If v1 = uj then q = b - 1 +; + div ebx ; eax <- qhat +; ; edx <- rhat: = uj*b + uj+1 -qhat*v1 = (uj*b + uj+1) mod v1 + mov q1[ebp],eax ; store qhat intermediately + cmp eax,0 + jne @F + jmp dml ; If q=0 process next digit +; +bm1: mov eax,0ffffffffh ; eax <- qhat + mov q1[ebp],eax ; Store qhat intermediately + mov edx,uj1[ebp] ; edx <- uj+1 + add edx,v1[ebp] ; edx <- uj+1 + v1 =: rhat + jc d4 ; rhat >= b => v2 * qhat < rhat * b +; +@@: mov ebx,edx ; ebx <- rhat + mul dword ptr v2[ebp] ; eax <- low(qhat * v2), edx <- high(qhat * v2) + cmp edx,ebx ; rhat >= high(qhat * v2) ? + jb d4 ; CF == 1? Then finished + ja @F ; rhat < high(qhat * v2) => reduce qhat + cmp eax,uj2[ebp] ; uj+2 >= low(qhat * v2) ? + jbe d4 ; CF == 1 OR ZF == 1? Then finished +; +@@: dec dword ptr q1[ebp] ; Correcting qhat by decrementing + add ebx,v1[ebp] ; ebx <- rhat + v1 + jc d4 ; rhat >= b => v2 * qhat < rhat * b + sub eax,v2[ebp] ; (qhat * v2) - v2 + sbb edx,0 +; + cmp edx,ebx ; rhat >= high(qhat * v2) ? + jb d4 ; CF == 1? Then finished + ja @B ; rhat < high(qhat * v2) => reduce qhat + cmp eax,uj2[ebp] ; uj+2 >= low(qhat * v2) ? + ja @B ; CF==0 + ZF==0? => repeat decrement of qhat +; +d4: push ecx ; Store main counter + push esi ; Store j + l(b) + push edi ; Store j + mov cx,b[ebp] ; Load counter with l(b) + shr cx,1 + jnc d4a + inc cx +d4a: mov ebx,q1[ebp] ; q in bx + mov esi,2 + mov edx,0 ; Dummy carry +; +;-----> Multiplication and subtraction +; +dms: push edx + mov eax,ebx ; q in ax + mul dword ptr b[ebp][esi] ; hi:dx lo:ax + sub a[ebp][edi],eax + adc edx,0 ; Carry to next subtrahend + pop eax + sub a[ebp][edi],eax + adc edx,0 ; Carry to next subtrahend + inc edi + inc edi + inc edi + inc edi + inc esi + inc esi + inc esi + inc esi + loop dms + sub a[ebp][edi],edx + jnc dnc ; No correction necessary if carry = 0 +; +;-----> Correction +; + pop edi + push edi + xor ecx,ecx + mov cx,b[ebp] ; Load counter with l(b) + shr cx,1 + jnc d4b + inc cx +d4b: mov esi,2 + clc +d5: mov eax,b[ebp][esi] ; b[i] + adc a[ebp][edi],eax ; a[j+i] + b[i] + inc edi + inc edi + inc edi + inc edi + inc esi + inc esi + inc esi + inc esi + loop d5 ; Outer loop + jnc d51 + inc dword ptr a[ebp][edi] +d51: dec dword ptr q1[ebp] ; q = q - 1 +; +; +dnc: pop edi ; Get pointers and counters + pop esi + pop ecx +dml: mov eax,q1[ebp] ; Get q + mov q[ebp][edi],eax ; q[j] = q + sub edi,4 + sub esi,4 + dec ecx ; Inner loop + jz d6 + jmp d3 +; +d6: pop edi ; Get l(a)-l(b)-1 (ULONG digits) + add edi,2 ; di points to low-order byte of last USHORT + mov eax,0 +@@: cmp ax,q[ebp][edi] ; q[l(a)-l(b)]=0 ? + jne d7 ; If so... + dec edi + dec edi ; ...l(q) = l(a) - l(b) - 1 + cmp edi,0 + jne short @B +d7: mov edx,edi + shr edx,1 ; l(q) (#USHORTs) in dx + mov q[ebp],dx ; Store l(q) +; +;-----> Calculate length of remainder +; + mov eax,0 + mov ax,b[ebp] + mov ecx,eax + shl ax,1 + mov edi,eax + mov ebx,0 + inc edi + inc edi +d8: dec edi + dec edi ; di points to low-order byte of a[l(b)] + cmp a[ebp][edi],bx + loope d8 + jz d9 ; If a[bp][di]!= 0... + inc cx ; ...l(r) has to be incremented +d9: mov a[ebp],cx ; Store l(r) +; +;-----> Store results +; +dstore: mov esi,ebp + mov ebx,ebp + pop ebp + push esi + add esi,q + mov edi,_qot ; Destination offset of quotient + mov ecx,0 + mov cx,[esi] + shr cx,1 + jnc @F + inc cx +@@: cld + cmp cx,0 + je qzero +rep movsd +qzero: movsw +; +;-----> Store remainder +; + pop esi +drs: + mov edi,_rst + add esi,a + mov ecx,0 + mov cx,[esi] + shr cx,1 + jnc @F + inc cx +@@: cld + cmp cx,0 + je rzero +rep movsd +rzero: movsw + mov eax,0 ; Return-Value = 0: Everything OK +; +;******************************************************************************* +; Security: Purge stack memory + +divret: mov edi,ebx + mov ecx,(WORKSP-4)/4 + cld +rep stosd ; Overwrite with 0 or -1 +;******************************************************************************* +; + pop esi + pop edi + pop ebx + mov esp,ebp + pop ebp + ret +; +; +divz: mov eax,0 ; Return-Value = 0: Everything OK + mov edi,_rst ; Destination Offset of remainder + mov esi,_qot ; Destination offset of quotient + mov [edi],ax ; Remainder = 0 + mov [esi],ax ; Quotient = 0 + jmp short divret +; +divbyz: mov eax,-1 + jmp short divret ; Return-Value = -1: Division by zero +; +;-----> Case q = 0 and r = a +; +dra: mov esi,ebp + mov ebx,ebp + pop ebp + mov edi,_qot + mov word ptr [edi],0 ; q = 0 + jmp short drs ; Store remainder +; +; +;>>>>>> Short Division +; +; +dshort: mov ecx,0 + mov cx,a[ebp] + shr cx,1 + jnc dsh0 + inc cx +dsh0: mov edi,ecx + shl edi,2 + sub edi,2 + mov edx,0 + mov ebx,b[ebp+2] +dsh1: mov eax,a[ebp][edi] + div ebx + mov q[ebp][edi],eax + sub edi,4 + loop dsh1 +dsh2: mov ecx,0 + mov cx,a[ebp] + mov esi,ecx + shl esi,1 +@@: mov bx,q[ebp][esi] + cmp bx,0 + jne dsh3 + dec esi + dec esi + dec ecx + cmp cx,0 + jne short @B +dsh3: mov q[ebp],cx + mov a[ebp+2],edx + mov word ptr a[ebp],2 + cmp word ptr a[ebp+4],0 + jne dst + mov word ptr a[ebp],1 + cmp word ptr a[ebp+2],0 + jne dst + mov word ptr a[ebp],0 +dst: jmp dstore +; +div_l endp +END + diff --git a/flint/src/asm/linux/div.s b/flint/src/asm/linux/div.s new file mode 100644 index 0000000..1067643 --- /dev/null +++ b/flint/src/asm/linux/div.s @@ -0,0 +1,607 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module div.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Division, interface compatible with C-function div_l() * +#* * +#* Quotient := Dividend div Divisor * +#* Remainder := Dividend mod Divisor * +#* * +#* Stack on calling of div_l: SP+16 ---> Offset remainder * +#* SP+12 ---> Offset quotient * +#* SP+ 8 ---> Offset divisor * +#* SP+ 4 ---> Offset dividend * +#* SP ---> Return address * +#* * +#* Return Value: ax = -1 if divisor = 0 * +#* ax = 0 else * +#* * +#****************************************************************************** +# +.equ a, 0 # Dividend (working copy) +.equ b, 1030 # Divisor (working copy) +.equ q, 1546 # Quotient qhat (working memory) +.equ q1, 2566 # High-order digit of divisor (normalized) +.equ v1, 2570 # 2nd digit of divisor (normalized) +.equ v2, 2574 +.equ d, 2578 # Exponent for normalization +.equ uj1, 2582 # uj+1 (normalized) +.equ uj2, 2586 # uj+2 (normalized) +# +.equ WORKSP, 2600 # Working memory in stack area +# +.text +.globl div_l + +div_l: pushl %ebp # Store value for calling procedure + movl %esp,%ebp + subl $WORKSP,%esp # lokal working memory + movl %esp,%eax + pushl %ebx + pushl %edi + pushl %esi + movl %eax,%ebx # Store start address of working memory +# + movl 8(%ebp),%esi # Offset of variable a + movl 12(%ebp),%edi # Offset of variable b + movw (%esi),%ax # l(a) + movw (%edi),%dx # l(b) + cmpw $0,%dx # b = 0 ? + jne .l1 + jmp .divbyz # Division by zero! +# +#>>>>>> Lade Operanden +# +.l1: pushl %edi # Store offset b + leal a(%ebx),%edi # Destination offset is a[bx] + xorl %ecx,%ecx + movw %ax,%cx # l(a) in cx + shrw $1,%cx + jnc .l2 + incw %cx +.l2: cld + rep + movsl # Load a as ULONG + movsw # plus one USHORT + movw %ax,%cx + shlw $1,%cx + leal a+2(%ebx,%ecx),%edi + movw $0,(%edi) +# + popl %esi # Hole Seg:Offs von b + leal b(%ebx),%edi # Zieloffset ist b[bx] + xorl %ecx,%ecx + movw %dx,%cx # l(b) in cx + shrw $1,%cx + jnc .l3 + incw %cx +.l3: cld + rep + movsl # Load b as ULONG + movsw # plus one USHORT + movw %dx,%cx + shlw $1,%cx + leal b+2(%ebx,%ecx),%edi + movl $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # Store ebp + movl %ebx,%ebp # Indexed addressing based on ss +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + xorl %ecx,%ecx + movw a(%ebp),%ax # #USHORTs into ax + cmpw $0,%ax + je .next1 + shll $1,%eax # Index to low-order byte + # of high-order digit + movl %eax,%esi +.l4: cmpw $0,a(%ebp,%esi) # USHORT = 0 ? + jne .l5 # If not we're done + subl $2,%esi # Else: Step back one digit + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l4 # Next comparison +.l5: # Length determined +.mazer1: + shrl $1,%esi # #Digits + movl %esi,%eax # Basisadresse des Operanden holen + movw %ax,a(%ebp) # Store number of digits + +#Operand2 +.next1: movw b(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll $1,%eax # #Bytes, index to low-order byte + # of high-order digit + movl %eax,%esi +.l6: cmpw $0,b(%ebp,%esi) # Digit = 0 ? + jne .l7 # If not we're done + subl $2,%esi # Else: Step back one digit + cmpl $0,%esi # Index = 0? + je .mazer2 # Then argument = 0 + jmp .l6 # Next comparison +.l7: # Length found +.mazer2: + shrl $1,%esi # Number of digits + movl %esi,%eax # Store number of digits + movw %ax,b(%ebp) + +.end1: cmpw $0,%ax + jne .l8 + popl %ebp + jmp .divbyz +.l8: cmpw $0,a(%ebp) + jne .l9 + popl %ebp + jmp .divz +# +#>>>>>> Test a < b ? +# +.l9: movl $0,%ecx + movw a(%ebp),%cx + cmpw b(%ebp),%cx # l(a) - l(b) + jnc .div03 + jmp .dra +.div03: jne .div05 # If lengths are equal compare digits + movl %ecx,%eax # cl = l(a) = l(b) + shll $1,%eax + leal a(%ebp),%esi + leal b(%ebp),%edi + addl %eax,%edi # si points to high-order digit of a + addl %eax,%esi # di points to high-order digit of b + std + repe + cmpsw +# xchg %esi,%edi + cld + jnc .div05 # If no carry occurs, q is positive + jmp .dra # Else q := 0 and r := a +.div05: movw b(%ebp),%ax + shrw $1,%ax + jnc .div05a + incw %ax +.div05a: + cmpw $1,%ax # Test if length l(b) = 1 + jne .dstart + jmp .dshort # If so go to short division +# +#>>>>>> Start division +# +.dstart: + movl $0,%eax + movw b(%ebp),%ax + shrw $1,%ax + jnc .dm0 + incw %ax +.dm0: movl %eax,%esi + shll $2,%esi + subl $2,%esi # Pointer to low byte of b[l(b)] + # (pointer to high-order ULONG) + cmpl $10,%esi # Does divisor have 3 or more digits? + jb .dm1a # Two digits are present at mininum! + + movl b(%ebp,%esi),%ebx # b[l(b)] in bx + movl b-4(%ebp,%esi),%eax + movl b-8(%ebp,%esi),%edx +# + movl $0,%ecx # Prepare counter +# +.l10: cmpl $0x080000000,%ebx # v1 >= 2^31 ? + jae .dm2 # If not ... + incw %cx + clc + rcll $1,%edx + rcll $1,%eax + rcll $1,%ebx # v1 = v1 * 2 + jmp .l10 # until v1 >= 2^31 + +.dm1a: movl b(%ebp,%esi),%ebx # b[l(b)] in bx + movl b-4(%ebp,%esi),%eax +# + movl $0,%ecx # Prepare counter +# +.l11: cmpl $0x080000000,%ebx # v1 >= 2^31 ? + jae .dm2 # If not ... + incw %cx + clc + rcll $1,%eax + rcll $1,%ebx # v1 = v1 * 2 + jmp .l11 # until v1 >= 2^31 +# +.dm2: movw %cx,d(%ebp) # Store exponent + movl %ebx,v1(%ebp) # v1 + movl %eax,v2(%ebp) # v2 + +.dm3: incw a(%ebp) # l(a) = l(a) + 2 + incw a(%ebp) + movl $0,%eax + movw a(%ebp),%ax + shrw $1,%ax + jnc .dm3a + incw %ax +.dm3a: movl %eax,%esi + shll $2,%esi + subl $2,%esi + movl $0,a(%ebp,%esi) # a[l(a)] = 0 +# +.d2: movl $0,%eax + movw b(%ebp),%ax + shrw $1,%ax + jnc .d2a + incw %ax +.d2a: movl %eax,%esi + shll $2,%esi + subl $2,%esi # si points to loByte of b[l(b)] +# + movl $0,%ecx + movw a(%ebp),%cx + shrw $1,%cx + jnc .d2b + incw %cx +.d2b: movl %ecx,%edi + shll $2,%edi + subl $2,%edi # di points to loByte of a[l(a)] + pushl %edi + subl %esi,%edi + incl %edi # di points to hiByte of a[l(a)-l(b)] + movl %edi,%ecx + shrl $2,%ecx # Counter in cx + popl %esi # si points to loByte of a[l(a)] (j+l(b)) + subl $3,%edi # di points to loByte of a[l(a)-l(b)] (j) + pushl %edi # Possible length of q +# +#-----> Main loop of division +# +.d3: cmpl $14,%esi + jb .d3a + pushl %edi + movl a(%ebp,%esi),%edx # uj unshifed in dx (hiWord) + movl a-4(%ebp,%esi),%eax # uj+1 unshifted + movl a-8(%ebp,%esi),%ebx # uj+2 unshifted + movl a-12(%ebp,%esi),%edi # uj+3 unshifted + pushl %ecx + movw d(%ebp),%cx +.l12: cmpw $0,%cx + je .l13 + rcll $1,%edi + rcll $1,%ebx + rcll $1,%eax + rcll $1,%edx + decw %cx + jmp .l12 +.l13: popl %ecx + popl %edi + jmp .qhat +# +.d3a: movl a(%ebp,%esi),%edx # uj unshifted + movl a-4(%ebp,%esi),%eax # uj+1 unshifted + movl a-8(%ebp,%esi),%ebx # uj+2 unshifted + pushl %ecx + movw d(%ebp),%cx +.l14: cmpw $0,%cx + je .l15 + rcll $1,%ebx + rcll $1,%eax + rcll $1,%edx + decw %cx + jmp .l14 +.l15: popl %ecx +# +#-----> Calculate and test qhat +# +.qhat: movl %eax,uj1(%ebp) # Store shifted uj+1 + movl %ebx,uj2(%ebp) # Store shifted uj+2 + movl v1(%ebp),%ebx # v1 in bx + cmpl %edx,%ebx + je .bm1 # If v1 = uj q = b - 1 +# + divl %ebx # eax <- qhat +# edx <- rhat: = uj*b + uj+1 -qhat*v1 = (uj*b + uj+1) mod v1 + movl %eax,q1(%ebp) # Store qhat + cmpl $0,%eax + jne .l16 + jmp .dml # If q = 0 process next digit +# +.bm1: movl $0x0ffffffff,%eax # eax <- qhat + movl %eax,q1(%ebp) # Store qhat + movl uj1(%ebp),%edx # edx <- uj+1 + addl v1(%ebp),%edx # edx <- uj+1 + v1 =: rhat + jc .d4 # rhat >= b => v2 * qhat < rhat * b +# +.l16: movl %edx,%ebx # ebx <- rhat + mull v2(%ebp) # eax <- low(qhat * v2), edx <- high(qhat * v2) + cmpl %ebx,%edx # rhat >= high(qhat * v2) ? + jb .d4 # CF == 1? Then we're done + ja .l17 # rhat < high(qhat * v2) => decrement qhat + cmpl uj2(%ebp),%eax # uj+2 >= low(qhat * v2) ? + jbe .d4 # CF == 1 OR ZF == 1? Then we're done +# +.l17: decl q1(%ebp) # Correct qhat-- + addl v1(%ebp),%ebx # ebx <- rhat + v1 + jc .d4 # rhat >= b => v2 * qhat < rhat * b + subl v2(%ebp),%eax # (qhat * v2) - v2 + sbb $0,%edx +# + cmpl %ebx,%edx # rhat >= high(qhat * v2) ? + jb .d4 # CF == 1? Then we're done + ja .l17 # rhat < high(qhat * v2) => decrement qhat + cmpl uj2(%ebp),%eax # uj+2 >= low(qhat * v2) ? + ja .l17 # CF==0 + ZF==0? => Repeat decrement of qhat +# +.d4: pushl %ecx # Store main counter + pushl %esi # Store j + l(b) + pushl %edi # Store j + movw b(%ebp),%cx # Load counter with l(b) + shrw $1,%cx + jnc .d4a + incw %cx +.d4a: movl q1(%ebp),%ebx # q in bx + movl $2,%esi + movl $0,%edx # Dummy carry +# +#-----> Multiplication and subtraction +# +.dms: push %edx + movl %ebx,%eax # q in ax + mull b(%ebp,%esi) # hi:dx lo:ax + subl %eax,a(%ebp,%edi) + adcl $0,%edx # Carry to next subtrahend + popl %eax + subl %eax,a(%ebp,%edi) + adcl $0,%edx # Carry to next subtrahend + incl %edi + incl %edi + incl %edi + incl %edi + incl %esi + incl %esi + incl %esi + incl %esi + loop .dms + subl %edx,a(%ebp,%edi) + jnc .dnc # No correction necessary if carry = 0 +# +#-----> Correction +# + popl %edi + pushl %edi + xorl %ecx,%ecx + movw b(%ebp),%cx # Load counter with l(b) + shrw $1,%cx + jnc .d4b + incw %cx +.d4b: movl $2,%esi + clc +.d5: movl b(%ebp,%esi),%eax # b[i] + adcl %eax,a(%ebp,%edi) # a[j+i] + b[i] + incl %edi + incl %edi + incl %edi + incl %edi + incl %esi + incl %esi + incl %esi + incl %esi + loop .d5 # Outer loop + jnc .d51 + incl a(%ebp,%edi) +.d51: decl q1(%ebp) # q = q - 1 +# +# +.dnc: popl %edi # Get pointers and counters + popl %esi + popl %ecx +.dml: movl q1(%ebp),%eax # Get q + movl %eax,q(%ebp,%edi) # q[j] = q + subl $4,%edi + subl $4,%esi + decl %ecx # Inner loop + jz .d6 + jmp .d3 +# +.d6: popl %edi # Load length l(a)-l(b)-1 in ULONGs + addl $2,%edi # di points to loByte of last USHORT + movl $0,%eax +.l18: cmpw q(%ebp,%edi),%ax # q[l(a)-l(b)]=0 ? + jne .d7 # If so ... + decl %edi + decl %edi # ... l(q) = l(a) - l(b) - 1 + cmpl $0,%edi + jne .l18 +.d7: movl %edi,%edx + shrl $1,%edx # l(q) (#USHORTs) in dx + movw %dx,q(%ebp) # Store l(q) +# +#-----> Determine length of remainder +# + movl $0,%eax + movw b(%ebp),%ax + movl %eax,%ecx + shlw $1,%ax + movl %eax,%edi + movl $0,%ebx + incl %edi + incl %edi +.d8: decl %edi + decl %edi # di points to loByte of a[l(b)] + cmpw %bx,a(%ebp,%edi) + loope .d8 + jz .d9 # If a[bp][di]!= 0 ... + incw %cx # ... l has to be incremented +.d9: movw %cx,a(%ebp) # Store l(r) +# +#-----> Store results +# +.dstore: + movl %ebp,%esi + movl %ebp,%ebx + popl %ebp + pushl %esi + addl $q,%esi + movl 16(%ebp),%edi # Offset of quotient + movl $0,%ecx + movw (%esi),%cx + shrw $1,%cx + jnc .l19 + incw %cx +.l19: cld + cmpw $0,%cx + je .qzero + rep + movsl +.qzero: movsw +# +#-----> Store remainder +# + popl %esi +.drs: + movl 20(%ebp),%edi + addl $a,%esi + movl $0,%ecx + movw (%esi),%cx + shrw $1,%cx + jnc .l20 + incw %cx +.l20: cld + cmpw $0,%cx + je .rzero + rep + movsl +.rzero: movsw + movl $0,%eax # Return-Value = 0: OK +# +#******************************************************************************* +# Security: Purge stack + +divret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + rep + stosl # Overwrite with 0 or -1 +#******************************************************************************* +# + popl %esi + popl %edi + popl %ebx + movl %ebp,%esp + popl %ebp + ret +# +# +.divz: movl $0,%eax # Return-Value = 0: Everything OK + movl 20(%ebp),%edi # Destination Offset of remainder + movl 16(%ebp),%esi # Destination offset of quotient + movw %ax,(%edi) # Remainder = 0 + movw %ax,(%esi) # Quotient = 0 + jmp divret +# +.divbyz: + movl $-1,%eax + jmp divret # Return-Value = -1: Division by zero +# +#-----> Case q = 0 and r = a +# +.dra: movl %ebp,%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + movw $0,(%edi) # q = 0 + jmp .drs # Store remainder +# +# +#>>>>>> Short Division +# +# +.dshort: + movl $0,%ecx + movw a(%ebp),%cx + shrw $1,%cx + jnc .dsh0 + incw %cx +.dsh0: movl %ecx,%edi + shll $2,%edi + subl $2,%edi + movl $0,%edx + movl b+2(%ebp),%ebx +.dsh1: movl a(%ebp,%edi),%eax + divl %ebx + movl %eax,q(%ebp,%edi) + subl $4,%edi + loop .dsh1 +.dsh2: movl $0,%ecx + movw a(%ebp),%cx + movl %ecx,%esi + shll $1,%esi +.l21: movw q(%ebp,%esi),%bx + cmpw $0,%bx + jne .dsh3 + decl %esi + decl %esi + decl %ecx + cmpw $0,%cx + jne .l21 +.dsh3: movw %cx,q(%ebp) + movl %edx,a+2(%ebp) + movw $2,a(%ebp) + cmpw $0,a+4(%ebp) + jne .dst + movw $1,a(%ebp) + cmpw $0,a+2(%ebp) + jne .dst + movw $0,a(%ebp) +.dst: jmp .dstore +# + + + diff --git a/flint/src/asm/linux/mult.s b/flint/src/asm/linux/mult.s new file mode 100644 index 0000000..d3603ee --- /dev/null +++ b/flint/src/asm/linux/mult.s @@ -0,0 +1,273 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module mult.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Multiplication, interface compatible with C function mul_l() * +#* * +#* Product := f1 * f2 * +#* * +#* Stack on calling of mul: SP+12 ---> Offset product * +#* SP+ 8 ---> Offset f2 * +#* SP+ 4 ---> Offset f1 * +#* SP ---> Return address * +#* * +#* Return Value : ax = 0 * +#* * +#****************************************************************************** +# +.equ a, 0 # CLINT factor 1 (working copy) +.equ b, 520 # CLINT factor 2 (working copy) +.equ p, 1040 # Product (storage space for result) +# +.equ WORKSP, 2200 # Working memory in stack area +# +.text +.globl mult + +mult: pushl %ebp # Store base ptr for caller + movl %esp,%ebp + subl $WORKSP,%esp # Local memory + movl %esp,%eax # Store starting address + pushl %edi + pushl %esi + pushl %ebx + movl %eax,%ebx +# + xorl %eax,%eax + xorl %edx,%edx + movl 8(%ebp),%esi # Parameter f1 + movl 12(%ebp),%edi # Parameter f2 + movw (%esi),%ax + movw (%edi),%dx + + cmpw $0,%ax # a = 0 ? + jne .mult01 + jmp .multz +.mult01: + cmpw $0,%dx # b = 0 ? + jne .mult02 # Then we're done! + jmp .multz +# +#>>>>>> Load operands +# +.mult02: + pushl %edi # Store Seg:Offs f2 + leal b(%ebx),%edi # Destination offset is b[ebx] + movl $0,%ecx + movw %ax,%cx # l(a) (length of a) in ecx + cld +rep movsw # Load a in chunks of USHORT + movsw # plus one USHORT + movw $0,(%edi) + popl %esi # Get offset of b + leal a(%ebx),%edi # Destination offset is a[ebx] + movw %dx,%cx # l(b) in cx + cld +rep movsw # Load b in chunks of USHORT + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # BP retten + movl %ebx,%ebp # Basisind. Adr. in SS +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + movw b(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .next1 + shll %eax + movl %eax,%esi # Index to high-order digit +.l1: cmpw $0,b(%ebp,%esi) # USHORT = 0 ? + jne .l2 # If not, then finished + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0 ? + je .mazer1 # Then argument = 0 + jmp .l1 # Compare next +.l2: +.mazer1: + shrl %esi # #USHORTs + movl %esi,%eax # Store number of digits + movw %ax,b(%ebp) + +#Operand2 +.next1: movw a(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll %eax # Index to high-order digit + movl %eax,%esi +.l3: cmpw $0,a(%ebp,%esi) # Digit = 0 ? + jne .l4 # If not, then finished + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0 ? + je .mazer2 # Then argument = 0 + jmp .l3 # Compare next +.l4: +.mazer2: + shrl %esi # #Digits + movl %esi,%eax # ... store number of digits + movw %ax,a(%ebp) + +.end1: cmpw $0,%ax + jne .l5 + popl %ebp + jmp .multz +.l5: cmpw $0,b(%ebp) + jne .l6 + popl %ebp + jmp .multz +# +#>>>>>> Start multiplication +# +#-----> Initialize working memory +# +.l6: movl $2,%esi # Prepare index i + movw %dx,%cx # l(b) + shrw %cx + jnc .mult0 + incw %cx +.mult0: movl $0,%eax +.mult1: movl %eax,p(%ebp,%esi) + addl $4,%esi + loop .mult1 +# +#-----> Outer loop +# + movl $2,%esi # Index i + movl $0,%ecx + movw b(%ebp),%cx # Prepare counter for outer loop + shrw %cx + jnc .mult2 + incw %cx +.mult2: pushl %ecx # Store counter +# +#-----> Inner loop +# + movl $2,%edi # Index j + movw a(%ebp),%cx # Prepare counter for inner loop + shrw %cx + jnc .mult2a + incw %cx +.mult2a: + xorl %edx,%edx # Dummy-carry + movl b(%ebp,%esi),%ebx # Load b[i] + addl %edi,%esi # Product index i+j +.mult3: pushl %ecx # Store counter + movl %edx,%ecx # carry u in dx + movl %ebx,%eax + mull a(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax,p-2(%ebp,%esi) # p[i+j-1]= ax + p[i+j-1] + adcl $0,%edx # New carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter for inner loop + loop .mult3 +# +#-----> End inner loop +# + movl %edx,p-2(%ebp,%esi) # p[i+j-1]=u + subl %edi,%esi # Restore i + addl $4,%esi # i=i+4 + popl %ecx # Get counter for outer loop + loop .mult2 +# +#-----> End outer loop +# + addl %edi,%esi + subl $4,%esi +.mult3a: + cmpw $0,p(%ebp,%esi) + jne .mult4 + subl $2,%esi + jmp .mult3a +.mult4: movl %esi,%ecx + shrl %ecx + movw %cx,p(%ebp) +# +#-----> Store product +# + leal p(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + cmpw $0,%cx + je .l7 + cld # l(p) is still in counter cx +rep movsw +.l7: movsw +# +#******************************************************************************* +# Security: Purge stack + +.muret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + movl $0,%eax # Return-Value = 0: OK +rep stosl # Overwrite with 0 +#******************************************************************************* +# + popl %ebx + popl %esi # Restore registers for caller + popl %edi + movl %ebp,%esp + popl %ebp + ret +# +.multz: movl 16(%ebp),%esi # Product is 0 + movw $0,(%esi) + jmp .muret +# + + + diff --git a/flint/src/asm/linux/sqr.s b/flint/src/asm/linux/sqr.s new file mode 100644 index 0000000..49da238 --- /dev/null +++ b/flint/src/asm/linux/sqr.s @@ -0,0 +1,311 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module sqr.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Squaring, interface compatible with C function sqr_l() * +#* * +#* Q := a * a mod M * +#* * +#* Stack on calling of sqr: SP+ 8 ---> Offset q * +#* SP+ 4 ---> Offset a * +#* SP ---> Return address * +#* * +#* Return Value : ax = 0 * +#* * +#****************************************************************************** +# +.equ fct, 0 # Factor (working memory) +.equ prd, 520 # Square (working memory) +# +.equ WORKSP, 1560 # Working memory in stack area +# +.text +.globl sqr + +sqr: pushl %ebp # Store base ptr for caller + movl %esp,%ebp + subl $WORKSP, %esp # Local memory + movl %esp,%eax + pushl %ebx + pushl %edi + pushl %esi + movl %eax,%ebx # Store starting address +# + movl 8(%ebp),%esi # Offset of variable a + movw (%esi),%dx # Length l(a) + cmpw $0,%dx + jnz .sqr011 + jmp .sqrnul +.sqr011: +# +#>>>>>> Lade Operanden +# +.sqr02: leal fct(%ebx),%edi # Destination offset is a[bx] + movl $0,%ecx + movw %dx,%cx # l(a) into cx +.l1: cld +rep movsw # Load a in chunks of USHORT into a[bx] + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare addressing of local working memory +# + pushl %ebp # Store bp + movl %ebx,%ebp # Indexed addressing based on ss +# +#>>>>>> Remove leading zeros from operand +# + xorl %eax,%eax + movw fct(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll %eax # #Bytes, index to high-order digit + movl %eax,%esi +.l2: cmpw $0,fct(%ebp,%esi) # digit = 0 ? + jne .l3 # If not, then we're done + subl $2,%esi # Else: step back one USHORT + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l2 # Compare next digit +.l3: +.mazer1: + shrl %esi # #USHORTS + movl %esi,%eax # Get base address of oeperand + movw %ax,fct(%ebp) # Store number of digits + +.end1: cmpw $0,%ax + jne .sqrmul + popl %ebp + jmp .sqrnul +# +# +#>>>>>> Beginn der Quadrierung +# +#-----> Arbeitsfeld initialisieren +# +.sqrmul: + movl $0,%ecx + movw fct(%ebp),%cx # l(f) + shrw %cx + jnc .l4 + incw %cx +.l4: cmpw $1,%cx + jne ._sqr09 + jmp ._xrgsq # If l(f)=1 do squaring in registers +._sqr09: + movl $0,%eax + movl $2,%esi # Prepare index i +._sqr10: + movl %eax,prd(%ebp,%esi) + addl $4,%esi + loop ._sqr10 +# +#-----> Outer loop +# + movl $2,%esi # Prepare index i + movl $0,%ecx + movw fct(%ebp),%cx # Counter outer loop + shrw %cx + jc ._sqr11 + decw %cx # in cx = l(a)-1 +._sqr11: + pushl %ecx # Store counter +# +#-----> Innere Schleife +# + movl %esi,%edi # index j=i+4 + addl $4,%edi + xorl %ecx,%ecx + movw fct(%ebp),%cx # Counter inner loop + shrw %cx + jnc .l5 + incw %cx +.l5: pushl %esi + addl $2,%esi + shrl $2,%esi + subl %esi,%ecx + popl %esi # cx = l(a)-i + movl $0,%edx # Dummy carry + movl fct(%ebp,%esi),%ebx # Load a[i] + addl %edi,%esi # Product index i+j +._sqr12: + pushl %ecx # Store counter + movl %edx,%ecx # Carry u in edx + movl %ebx,%eax + mull fct(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax, prd-2(%ebp,%esi) # q[i+j-1]= ax + q[i+j-1] + adcl $0,%edx # new carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter inner loop + loop ._sqr12 +# +#-----> End inner loop +# + movl %edx,prd-2(%ebp,%esi) # q[i+j-1]=u + subl %edi,%esi # Restore i + addl $4,%esi # i=i+4 + popl %ecx # Get counter outer loop + loop ._sqr11 +# +#-----> End outer loop +# + addl %edi,%esi + movl $0,prd-2(%ebp,%esi) + movl $0,prd+2(%ebp,%esi) +# +#-----> Multiply intermediate result by 2 +# + movl $6,%esi # First word is zero + xorl %ecx,%ecx + movw fct(%ebp),%cx +._xsll: + rcll $1,prd(%ebp,%esi) # Shift q in chunks of ULONG + incl %esi + incl %esi + incl %esi + incl %esi + loop ._xsll +# +#-----> Add squares to intermediate result q +# +.xsle: movw fct(%ebp),%cx +.l6: shlw %cx + movw %cx,prd(%ebp) + movl $2,%esi + movl $2,%edi + movw fct(%ebp),%cx # l(a) is counter + shrw %cx + jnc .l7 + incw %cx +.l7: xorl %eax,%eax + pushf # Dummy carry +._sqr20: + movl fct(%ebp,%esi),%eax + mull %eax # ax = lo, dx = hi + popf + adcl %eax, prd(%ebp,%edi) + adcl %edx, prd+4(%ebp,%edi) + pushf + addl $4,%esi + addl $8,%edi + loop ._sqr20 + popf # Adjust stack pointer + jmp ._sqr20a +# +#-----> Squaring in registers in case of l(a) = 1 +# +._xrgsq: + movl fct+2(%ebp),%eax + mull %eax + movl %eax, prd+2(%ebp) + movl %edx, prd+6(%ebp) + movw $4,prd(%ebp) +# +#-----> Determine length of remainder +# +._sqr20a: + xorl %eax,%eax + movw prd(%ebp),%ax + movl %eax,%edi + shll %edi + cmpw $0,prd(%ebp,%edi) + jnz ._sqr60 + decw prd(%ebp) + jmp ._sqr20a +# +#-----> Store square +# +._sqr60: + leal prd(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 12(%ebp), %edi + movl $0,%ecx + movw (%esi),%cx + shrw %cx + jnc .l8 + incw %cx +.l8: cmpw $0,%cx + je .l9 + cld +rep movsl +.l9: movsw +# +#******************************************************************************* +# Security: Purge stack + +.sqrret: + movl %ebx,%edi + movl $(WORKSP-4)/4, %ecx + cld + movl $0,%eax # Return-Value = 0: OK +rep stosl # Overwrite with 0 +#******************************************************************************* +# + popl %esi + popl %edi + popl %ebx + movl %ebp,%esp + popl %ebp + ret +# +.sqrnul: + movl 12(%ebp), %esi + movw $0,(%esi) + jmp .sqrret +# + + + + + diff --git a/flint/src/asm/linux/umul.s b/flint/src/asm/linux/umul.s new file mode 100644 index 0000000..47401db --- /dev/null +++ b/flint/src/asm/linux/umul.s @@ -0,0 +1,235 @@ +#****************************************************************************** +#* * +#* Functions for arithmetic and number theory with large integers in C * +#* Software supplement to the book "Cryptography in C and C++" * +#* by Michael Welschenbach * +#* * +#* Module umul.s Revision: 15.06.2002 * +#* * +#* Copyright (C) 1998-2005 by Michael Welschenbach * +#* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +#* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +#* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +#* Copyright (C) 2002-2005 by PHEI, P.R.China * +#* Copyright (C) 2002-2005 by InfoBook, Korea * +#* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +#* * +#* All Rights Reserved * +#* * +#* The software may be used for noncommercial purposes and may be altered, * +#* as long as the following conditions are accepted without any * +#* qualification: * +#* * +#* (1) All changes to the sources must be identified in such a way that the * +#* changed software cannot be misinterpreted as the original software. * +#* * +#* (2) The statements of copyright may not be removed or altered. * +#* * +#* (3) The following DISCLAIMER is accepted: * +#* * +#* DISCLAIMER: * +#* * +#* There is no warranty for the software contained in this distribution, to * +#* the extent permitted by applicable law. The copyright holders provide the * +#* software `as is' without warranty of any kind, either expressed or * +#* implied, including, but not limited to, the implied warranty of fitness * +#* for a particular purpose. The entire risk as to the quality and * +#* performance of the program is with you. * +#* * +#* In no event unless required by applicable law or agreed to in writing * +#* will the copyright holders, or any of the individual authors named in * +#* the source files, be liable to you for damages, including any general, * +#* special, incidental or consequential damages arising out of any use of * +#* the software or out of inability to use the software (including but not * +#* limited to any financial losses, loss of data or data being rendered * +#* inaccurate or losses sustained by you or by third parties as a result of * +#* a failure of the software to operate with any other programs), even if * +#* such holder or other party has been advised of the possibility of such * +#* damages. * +#* * +#****************************************************************************** +#* * +#* Multiplication, interface compatible with C function umul_l() * +#* * +#* Product := a * u * +#* * +#* Stack on calling of umul: SP+12 ---> Offset product * +#* SP+ 8 ---> Offset a (CLINT) * +#* SP+ 4 ---> Offset u (USHORT) * +#* SP ---> Return address * +#* * +#* Return Value: ax = 0 * +#* * +#****************************************************************************** +# +.equ fct, 0 # CLINT factor (working copy) +.equ prd, 520 # Product (working copy) +# +.equ WORKSP, 1560 # Working memory in stack area +# +.text +.globl umul + +umul: pushl %ebp # Store value for calling procedue + movl %esp,%ebp + subl $WORKSP,%esp # Local memory + movl %esp,%eax # Store starting address + pushl %edi + pushl %esi + pushl %ebx + movl %eax,%ebx +# + xorl %eax,%eax + xorl %edx,%edx + + movw 12(%ebp),%dx # USHORT factor in dx + cmpw $0,%dx + jne .l1 + jmp .umultz + +.l1: movl 8(%ebp),%esi # Offset of variable a + movw (%esi),%ax + cmpw $0,%ax # a = 0 ? + jne .umult01 + jmp .umultz +# +#>>>>>> Lade Operanden +# +.umult01: + leal fct(%ebx),%edi # Destination offset is a[ebx] + movl $0,%ecx + movw %ax,%cx # l(a) in ecx + cld + rep + movsw # Load a in chunks of USHORT into a + movsw # plus one USHORT + movw $0,(%edi) +# +#>>>>>> Prepare access to local memory +# + pushl %ebp # BP retten + movl %ebx,%ebp # Basisind. Adr. in SS +# +#>>>>>> Remove leading zeros from operands +# + xorl %eax,%eax + movw fct(%ebp),%ax # #USHORTs in ax + cmpw $0,%ax + je .end1 + shll $1,%eax # #Bytes + movl %eax,%esi +.l2: cmpw $0,fct(%ebp,%esi) # USHORT = 0 ? + jne .l3 # If not, we're done + subl $2,%esi # Else: Step back one USHORT + cmpl $0,%esi # Index = 0? + je .mazer1 # Then argument = 0 + jmp .l2 # Compare next digit +.l3: +.mazer1: + shrl %esi # #USHORTs + movl %esi,%eax # Store number of digits + movw %ax,fct(%ebp) +# +.end1: cmpw $0,%ax + jne .l4 + popl %ebp + jmp .umultz +# +#>>>>>> Start multiplication +# +#-----> Initialize working memory +# +.l4: movl $2,%esi # Prepare index i + movw fct(%ebp),%cx # l(a) + shrw $1,%cx + jnc .umult0 + incw %cx +.umult0: + movl $0,%eax +.umult1: + movl %eax,prd(%ebp,%esi) + addl $4,%esi + loop .umult1 +# +#-----> Innere Schleife +# + movl $2,%edi # Index j + movw fct(%ebp),%cx # Prepare counter inner loop + shrw $1,%cx + jnc .umult2a + incw %cx +.umult2a: + xorl %ebx,%ebx + movw %dx,%bx # Kepp USHORT factor in bx + movl $0,%edx # Dummy carry + movl $2,%esi + movl $2,%edi +.umult3: + pushl %ecx # Store counter + movl %edx,%ecx # Carry u in dx + movl %ebx,%eax # Load USHORT factor in ax + mull fct(%ebp,%edi) + addl %ecx,%eax # ax + u + adcl $0,%edx + addl %eax,prd(%ebp,%esi) # p[i+j-1]= ax + p[i+j-1] + adcl $0,%edx # New carry u in dx + addl $4,%edi # j=j+4 + addl $4,%esi # i+j=i+j+4 + popl %ecx # Get counter inner loop + loop .umult3 +# +#-----> End inner loop +# + movl %edx,prd(%ebp,%esi) # p[i+j-1]=u + addl $2,%esi +.umult3a: + cmpw $0,prd(%ebp,%esi) + jne .umult4 + subl $2,%esi + jmp .umult3a +.umult4: + movl %esi,%ecx + shrl $1,%ecx + movw %cx,prd(%ebp) +# +#-----> Store product +# + leal prd(%ebp),%esi + movl %ebp,%ebx + popl %ebp + movl 16(%ebp),%edi + + cmpw $0,%cx + je .l5 + cld # Length l(p) is still in counter cx + rep + movsw +.l5: movsw +# +#******************************************************************************* +# Security: Purge stack + +.muret: movl %ebx,%edi + movl $(WORKSP-4)/4,%ecx + cld + movl $0,%eax # Return-Value = 0: OK + rep + stosl # Overwrite with 0 +#******************************************************************************* +# + popl %ebx + popl %esi # Restore registers + popl %edi + movl %ebp,%esp + popl %ebp + ret +# +.umultz: # Product is 0 + movl 16(%ebp),%esi + movw $0,(%esi) + jmp .muret +# + + + + diff --git a/flint/src/asm/mult.asm b/flint/src/asm/mult.asm new file mode 100644 index 0000000..562af87 --- /dev/null +++ b/flint/src/asm/mult.asm @@ -0,0 +1,274 @@ +;****************************************************************************** +;* * +;* Functions for arithmetic and number theory with large integers in C * +;* Software supplement to the book "Cryptography in C and C++" * +;* by Michael Welschenbach * +;* * +;* Module mult.asm Revision: 18.12.2000 * +;* * +;* Copyright (C) 1998-2005 by Michael Welschenbach * +;* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +;* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +;* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +;* Copyright (C) 2002-2005 by PHEI, P.R.China * +;* Copyright (C) 2002-2005 by InfoBook, Korea * +;* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +;* * +;* All Rights Reserved * +;* * +;* The software may be used for noncommercial purposes and may be altered, * +;* as long as the following conditions are accepted without any * +;* qualification: * +;* * +;* (1) All changes to the sources must be identified in such a way that the * +;* changed software cannot be misinterpreted as the original software. * +;* * +;* (2) The statements of copyright may not be removed or altered. * +;* * +;* (3) The following DISCLAIMER is accepted: * +;* * +;* DISCLAIMER: * +;* * +;* There is no warranty for the software contained in this distribution, to * +;* the extent permitted by applicable law. The copyright holders provide the * +;* software `as is' without warranty of any kind, either expressed or * +;* implied, including, but not limited to, the implied warranty of fitness * +;* for a particular purpose. The entire risk as to the quality and * +;* performance of the program is with you. * +;* * +;* In no event unless required by applicable law or agreed to in writing * +;* will the copyright holders, or any of the individual authors named in * +;* the source files, be liable to you for damages, including any general, * +;* special, incidental or consequential damages arising out of any use of * +;* the software or out of inability to use the software (including but not * +;* limited to any financial losses, loss of data or data being rendered * +;* inaccurate or losses sustained by you or by third parties as a result of * +;* a failure of the software to operate with any other programs), even if * +;* such holder or other party has been advised of the possibility of such * +;* damages. * +;* * +;****************************************************************************** +;* * +;* Multiplication, interface compatible with C function mul_l() * +;* * +;* Product := f1 * f2 * +;* * +;* Stack on calling of mul: SP+12 ---> Offset product * +;* SP+ 8 ---> Offset f2 * +;* SP+ 4 ---> Offset f1 * +;* SP ---> Return address * +;* * +;* Return Value : ax = 0 * +;* * +;****************************************************************************** +PUBLIC mult +.386 +.MODEL FLAT +.CODE +mult proc near +; +a equ 0 ; CLINT factor 1 (working copy) +b equ 520 ; CLINT factor 2 (working copy) +p equ 1040 ; Product (storage space for result) +; +_a equ [ebp+8] ; Factor 1 (parameter) +_b equ [ebp+12] ; Factor 2 (parameter) +_p equ [ebp+16] ; Product (parameter) +; +WORKSP equ 2200 ; Working memory in stack area +; +start: push ebp ; Store base ptr for caller + mov ebp,esp + sub esp,WORKSP ; Local memory + mov eax,esp ; Store starting address + push edi + push esi + push ebx + mov ebx,eax +; + xor eax,eax + xor edx,edx + mov esi,_a ; Parameter f1 + mov edi,_b ; Parameter f2 + mov ax,[esi] + mov dx,[edi] + + cmp ax,0 ; a = 0 ? + jne mult01 + jmp multz +mult01: cmp dx,0 ; b = 0 ? + jne mult02 ; Then we're done + jmp multz +; +;>>>>>> Load operands +; +mult02: push edi ; Store Seg:Offs f2 + lea edi,b[ebx] ; Destination offset is b[ebx] + mov ecx,0 + mov cx,ax ; l(a) (length of a) in ecx + cld +rep movsw ; Load a in chunks of USHORT + movsw ; plus one word + mov word ptr [edi],0 ; +; + pop esi ; Get offset of b + lea edi,a[ebx] ; Destination offset is a[ebx] + mov cx,dx ; l(b) in CX + cld +rep movsw ; Load b in chunks of USHORT + movsw ; plus one word + mov word ptr [edi],0 +; +;>>>>>> Prepare access to local memory +; + push ebp ; Store bp + mov ebp,ebx ; Indexed addressing based on ss +; +;>>>>>> Remove leading zeros from operands +; + xor eax,eax + mov ax,b[ebp] ; #USHORTs in ax + cmp ax,0 + je next1 + shl eax,1 + mov esi,eax ; Index to high-order digit +@@: cmp word ptr b[ebp][esi],0 ; USHORT = 0 ? + jne @F ; If not, then finished + sub esi,2 ; Else: step back one USHORT + cmp esi,0 ; Index = 0 ? + je mazer1 ; Then argument = 0 + jmp @B ; Compare next +@@: +mazer1: shr esi,1 ; #USHORTs + mov eax,esi ; Store number of digits + mov b[ebp],ax + +;Operand2 +next1: mov ax,a[ebp] ; #USHORTs in ax + cmp ax,0 + je end1 + shl eax,1 ; Index to high-order digit + mov esi,eax +@@: cmp word ptr a[ebp][esi],0 ; Digit = 0 ? + jne @F ; If not, then finished + sub esi,2 ; Else: step back one USHORT + cmp esi,0 ; Index = 0 ? + je mazer2 ; Then argument = 0 + jmp @B ; Compare next +@@: +mazer2: shr esi,1 ; #Digits + mov eax,esi ; Store number of digits + mov a[ebp],ax + +end1: cmp ax,0 + jne @F + pop ebp + jmp multz +@@: cmp word ptr b[ebp],0 + jne @F + pop ebp + jmp multz +; +;>>>>>> Start of multiplication +; +;-----> Initialization +; +@@: mov esi,2 ; Initialization of index i + mov cx,dx ; Length l(b) + shr cx,1 + jnc mult0 + inc cx +mult0: mov eax,0 +mult1: mov p[ebp][esi],eax + add esi,4 + loop mult1 +; +;-----> Outer loop +; + mov esi,2 ; Index i + mov ecx,0 + mov cx,b[ebp] ; Initialize counter for outer loop + shr cx,1 + jnc mult2 + inc cx +mult2: push ecx ; Store counter +; +;-----> Inner loop +; + mov edi,2 ; Index j + mov cx,a[ebp] ; Initialize counter for inner loop + shr cx,1 + jnc mult2a + inc cx +mult2a: xor edx,edx ; Dummy carry + mov ebx,b[ebp][esi] ; Load b[i] + add esi,edi ; Index i+j to the product +mult3: push ecx ; Store counter + mov ecx,edx ; Carry into dx + mov eax,ebx + mul dword ptr a[ebp][edi] ; ax=lo, dx=hi + add eax,ecx ; ax + u + adc edx,0 + add p[ebp][esi]-2,eax ; p[i+j-1]= ax + p[i+j-1] + adc edx,0 ; New carry u into dx + add edi,4 ; j=j+4 + add esi,4 ; i+j=i+j+4 + pop ecx ; Get counter for inner loop + loop mult3 +; +;-----> End of inner loop +; + mov p[ebp][esi]-2,edx ; p[i+j-1]=u + sub esi,edi ; Restore i + add esi,4 ; i=i+4 + pop ecx ; Get counter for outer loop + loop mult2 +; +;-----> Ende of outer loop +; + add esi,edi + sub esi,4 +mult3a: cmp word ptr p[ebp][esi],0 ; Determine the length of the product + jne short mult4 + sub esi,2 + jmp mult3a +mult4: mov ecx,esi + shr ecx,1 + mov p[ebp],cx +; +;-----> Store product +; + lea esi,p[ebp] + mov ebx,ebp + pop ebp + mov edi,_p + cmp cx,0 + je @F + cld ; Length l(p) is still in cx +rep movsw +@@: movsw +; +;******************************************************************************* +; Security: Purge stack + +muret: mov edi,ebx + mov ecx,(WORKSP-4)/4 + cld + mov eax,0 ; Return-Value = 0: Everything OK +rep stosd ; Overwrite with 0 +;******************************************************************************* +; + pop ebx + pop esi ; Restore registers + pop edi + mov esp,ebp + pop ebp + ret +; +multz: mov esi,_p + mov word ptr [esi],0 + jmp short muret +; +mult endp +END + diff --git a/flint/src/asm/sqr.asm b/flint/src/asm/sqr.asm new file mode 100644 index 0000000..6764c7a --- /dev/null +++ b/flint/src/asm/sqr.asm @@ -0,0 +1,304 @@ +;****************************************************************************** +;* * +;* Functions for arithmetic and number theory with large integers in C * +;* Software supplement to the book "Cryptography in C and C++" * +;* by Michael Welschenbach * +;* * +;* Module sqr.asm Revision: 18.12.2000 * +;* * +;* Copyright (C) 1998-2005 by Michael Welschenbach * +;* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +;* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +;* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +;* Copyright (C) 2002-2005 by PHEI, P.R.China * +;* Copyright (C) 2002-2005 by InfoBook, Korea * +;* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +;* * +;* All Rights Reserved * +;* * +;* The software may be used for noncommercial purposes and may be altered, * +;* as long as the following conditions are accepted without any * +;* qualification: * +;* * +;* (1) All changes to the sources must be identified in such a way that the * +;* changed software cannot be misinterpreted as the original software. * +;* * +;* (2) The statements of copyright may not be removed or altered. * +;* * +;* (3) The following DISCLAIMER is accepted: * +;* * +;* DISCLAIMER: * +;* * +;* There is no warranty for the software contained in this distribution, to * +;* the extent permitted by applicable law. The copyright holders provide the * +;* software `as is' without warranty of any kind, either expressed or * +;* implied, including, but not limited to, the implied warranty of fitness * +;* for a particular purpose. The entire risk as to the quality and * +;* performance of the program is with you. * +;* * +;* In no event unless required by applicable law or agreed to in writing * +;* will the copyright holders, or any of the individual authors named in * +;* the source files, be liable to you for damages, including any general, * +;* special, incidental or consequential damages arising out of any use of * +;* the software or out of inability to use the software (including but not * +;* limited to any financial losses, loss of data or data being rendered * +;* inaccurate or losses sustained by you or by third parties as a result of * +;* a failure of the software to operate with any other programs), even if * +;* such holder or other party has been advised of the possibility of such * +;* damages. * +;* * +;****************************************************************************** +;* * +;* Squaring, interface compatible with C function sqr_l() * +;* * +;* Q := a * a mod M * +;* * +;* Stack on calling of sqr: SP+ 8 ---> Offset q * +;* SP+ 4 ---> Offset a * +;* SP ---> Return address * +;* * +;* Return Value : ax = 0 * +;* * +;****************************************************************************** +PUBLIC sqr +.386 +.MODEL FLAT +.CODE +sqr proc near +; +a equ 0 ; Factor (working memory) +q equ 520 ; Square (working memory) +; +_a equ [ebp+8] ; Factor (parameter) +_q equ [ebp+12] ; Square (parameter) +; +WORKSP equ 1560 ; Working memory in stack area +; +square: push ebp ; Store base ptr for caller + mov ebp,esp + sub esp,WORKSP ; Local memory + mov eax,esp + push ebx + push edi + push esi + mov ebx,eax ; Store starting address +; + mov esi,_a ; Offset of variable a + mov dx,[esi] ; Length l(a) + cmp dx,0 + jnz sqr011 + jmp sqrnul +sqr011: +; +;>>>>>> Load operands +; +sqr02: lea edi,a[ebx] ; Destination offset is a[bx] + mov ecx,0 + mov cx,dx ; l(a) into cx +@@: cld +rep movsw ; Load a in chunks of USHORT into a[bx] + movsw ; plus one USHORT + mov word ptr [edi],0 ; +; +; +;>>>>>> Prepare addressing of local working memory +; + push ebp ; Store bp + mov ebp,ebx ; Indexed addressing based on ss +; +;>>>>>> Remove leading zeros from operands +; + xor eax,eax + mov ax,a[ebp] ; #USHORTs into ax + cmp ax,0 + je end1 + shl eax,1 ; #Bytes, index to high-order digit + mov esi,eax +@@: cmp word ptr a[ebp][esi],0 ; digit = 0 ? + jne @F ; If not, then we're done + sub esi,2 ; Else: step back one USHORT + cmp esi,0 ; Index = 0? + je mazer1 ; Then argument = 0 + jmp @B ; Compare next digit +@@: +mazer1: shr esi,1 ; #USHORTS + mov eax,esi ; Store number of digits + mov a[ebp],ax + +end1: cmp ax,0 + jne sqrmul + pop ebp + jmp sqrnul +; +; +;>>>>>> Start squaring +; +;-----> Initialize working environment +; +sqrmul: mov ecx,0 + mov cx,a[ebp] ; Get length l(f) + shr cx,1 + jnc @F + inc cx +@@: cmp cx,1 + jne _sqr09 + jmp _xrgsq ; If l(f)=1 then squaring in registers +_sqr09: mov eax,0 + mov esi,2 ; Initialization of index i +_sqr10: mov q[ebp][esi],eax + add esi,4 + loop _sqr10 +; +;-----> Outer loop +; + mov esi,2 ; Index i + mov ecx,0 + mov cx,a[ebp] ; Counter for outer loop + shr cx,1 + jc _sqr11 + dec cx ; in cx = l(a)-1 +_sqr11: push ecx ; Store counter +; +;-----> Inner loop +; + mov edi,esi ; Index j=i+4 + add edi,4 + xor ecx,ecx + mov cx,a[ebp] ; Counter for inner loop + shr cx,1 + jnc @F + inc cx +@@: push esi + add esi,2 + shr esi,2 + sub ecx,esi + pop esi ; cx = l(a)-i + mov edx,0 ; Dummy carry + mov ebx,a[ebp][esi] ; Load a[i] + add esi,edi ; Index i+j to product +_sqr12: push ecx ; Store counter + mov ecx,edx ; Carry from dx into cx + mov eax,ebx + mul dword ptr a[ebp][edi] ; After mul: eax=low, edx=high-order + add eax,ecx ; ax + u + adc edx,0 + add q[ebp+esi]-2,eax ; q[i+j-1]= ax + q[i+j-1] + adc edx,0 ; New carry u in dx + add edi,4 ; j=j+4 + add esi,4 ; i+j=i+j+4 + pop ecx ; Get counter for inner loop + loop _sqr12 +; +;-----> End of inner loop +; + mov q[ebp+esi]-2,edx ; q[i+j-1]=u + sub esi,edi ; Restore index i + add esi,4 ; i=i+4 + pop ecx ; Get counter for outer loop + loop _sqr11 +; +;-----> End of outer loop +; + add esi,edi + mov dword ptr q[ebp][esi]-2,0 + mov dword ptr q[ebp][esi]+2,0 +; +;-----> Multiply intermediate result by 2 +; + mov esi,6 ; First word is zero + xor ecx,ecx + mov cx,a[ebp] +_xsll: + rcl dword ptr q[ebp][esi],1 ; Shift q in chunks of ULONG + inc esi + inc esi + inc esi + inc esi + loop _xsll +; +;-----> Add squares to intermediate result q +; +_xsle: mov cx,a[ebp] +@@: shl cx,1 + mov q[ebp],cx + mov esi,2 + mov edi,2 + mov cx,a[ebp] ; l(a) is counter + shr cx,1 + jnc @F + inc cx +@@: xor eax,eax + pushf ; Dummy carry +_sqr20: mov eax,a[ebp][esi] + mul eax ; ax = lo, dx = hi + popf + adc q[ebp][edi],eax + adc q[ebp][edi+4],edx + pushf + add esi,4 + add edi,8 + loop _sqr20 + popf ; Adjust stack pointer + jmp _sqr20a +; +;-----> Squaring in registers in case of l(a) = 1 +; +_xrgsq: mov eax,a[ebp+2] + mul eax + mov q[ebp+2],eax + mov q[ebp+6],edx + mov word ptr q[ebp],4 +; +;-----> Calculate length of remainder +; +_sqr20a: + xor eax,eax + mov ax,q[ebp] + mov edi,eax + shl edi,1 + cmp word ptr q[ebp][edi],0 + jnz _sqr60 + dec word ptr q[ebp] + jmp _sqr20a +; +;-----> Store result +; +_sqr60: lea esi,q[ebp] + mov ebx,ebp + pop ebp + mov edi,_q + mov ecx,0 + mov cx,[esi] + shr cx,1 + jnc @F + inc cx +@@: cmp cx,0 + je @F + cld +rep movsd +@@: movsw +; +;******************************************************************************* +; Security: Purge stack + +sqrret: mov edi,ebx + mov ecx,(WORKSP-4)/4 + cld + mov eax,0 ; Return-Value = 0: Everything is OK +rep stosd ; Overwrite with 0 +;******************************************************************************* +; + pop esi + pop edi + pop ebx + mov esp,ebp + pop ebp + ret +; +sqrnul: mov esi,_q + mov word ptr [esi], 0 + jmp short sqrret +; +sqr endp +END + diff --git a/flint/src/asm/umul.asm b/flint/src/asm/umul.asm new file mode 100644 index 0000000..5c41570 --- /dev/null +++ b/flint/src/asm/umul.asm @@ -0,0 +1,233 @@ +;****************************************************************************** +;* * +;* Functions for arithmetic and number theory with large integers in C * +;* Software supplement to the book "Cryptography in C and C++" * +;* by Michael Welschenbach * +;* * +;* Module umul.asm Revision: 18.12.2000 * +;* * +;* Copyright (C) 1998-2005 by Michael Welschenbach * +;* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg * +;* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA * +;* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland * +;* Copyright (C) 2002-2005 by PHEI, P.R.China * +;* Copyright (C) 2002-2005 by InfoBook, Korea * +;* Copyright (C) 2002-2005 by Triumph Publishing, Russia * +;* * +;* All Rights Reserved * +;* * +;* The software may be used for noncommercial purposes and may be altered, * +;* as long as the following conditions are accepted without any * +;* qualification: * +;* * +;* (1) All changes to the sources must be identified in such a way that the * +;* changed software cannot be misinterpreted as the original software. * +;* * +;* (2) The statements of copyright may not be removed or altered. * +;* * +;* (3) The following DISCLAIMER is accepted: * +;* * +;* DISCLAIMER: * +;* * +;* There is no warranty for the software contained in this distribution, to * +;* the extent permitted by applicable law. The copyright holders provide the * +;* software `as is' without warranty of any kind, either expressed or * +;* implied, including, but not limited to, the implied warranty of fitness * +;* for a particular purpose. The entire risk as to the quality and * +;* performance of the program is with you. * +;* * +;* In no event unless required by applicable law or agreed to in writing * +;* will the copyright holders, or any of the individual authors named in * +;* the source files, be liable to you for damages, including any general, * +;* special, incidental or consequential damages arising out of any use of * +;* the software or out of inability to use the software (including but not * +;* limited to any financial losses, loss of data or data being rendered * +;* inaccurate or losses sustained by you or by third parties as a result of * +;* a failure of the software to operate with any other programs), even if * +;* such holder or other party has been advised of the possibility of such * +;* damages. * +;* * +;****************************************************************************** +;* * +;* Multiplication, interface compatible with C function umul_l() * +;* * +;* Product := a * u * +;* * +;* Stack on calling of umul: SP+12 ---> Offset product * +;* SP+ 8 ---> Offset a (CLINT) * +;* SP+ 4 ---> Offset u (USHORT) * +;* SP ---> Return address * +;* * +;* Return Value: ax = 0 * +;* * +;****************************************************************************** +PUBLIC umul + +.386 +.MODEL FLAT +.CODE +umul proc near +; +a equ 0000 ; CLINT factor (working copy) +p equ 0520 ; Product (working copy) +; +_a equ [ebp+8] ; CLINT factor (parameter) +_u equ [ebp+12] ; USHORT factor (parameter) +_p equ [ebp+16] ; Product (storage space for result) +; +WORKSP equ 1560 ; Working memory in stack area +; +umult: push ebp ; Store value for calling procdure + mov ebp,esp + sub esp,WORKSP ; Local memory + mov eax,esp ; Store starting address + push edi + push esi + push ebx + mov ebx,eax +; + xor eax,eax + xor edx,edx + + mov dx,_u ; USHORT factor into dx + cmp dx,0 + jne @F + jmp umultz + +@@: mov esi,_a ; Segment:Offset of variable a + mov ax,[esi] + cmp ax,0 ; a = 0 ? + jne umult01 + jmp umultz +; +;>>>>>> Load operands +; +umult01: + lea edi,a[ebx] ; Destination offset is a[ebx] + mov ecx,0 + mov cx,ax ; l(a) into ecx + cld +rep movsw ; Load a as chunks of USHORT into a + movsw ; plus one word + mov word ptr [edi],0 +; +;>>>>>> Prepare access to local memory +; + push ebp ; Store base pointer bp + mov ebp,ebx ; Indexed addressing based on ss +; +;>>>>>>> Remove leading zeros from operands +; + xor eax,eax + mov ax,a[ebp] ; #USHORTs into ax + cmp ax,0 + je end1 + shl eax,1 ; #Bytes + mov esi,eax +@@: cmp word ptr a[ebp][esi],0 ; USHORT = 0 ? + jne @F ; If not, we're done + sub esi,2 ; Else: Step back one USHORT + cmp esi,0 ; Index = 0? + je mazer1 ; Then argument = 0 + jmp @B ; Compare next digit +@@: +mazer1: shr esi,1 ; #USHORTs + mov eax,esi ; Store number of digits + mov a[ebp],ax +; +@@: +end1: cmp ax,0 + jne @F + pop ebp + jmp umultz +; +;>>>>>> Start of multiplication +; +;-----> Initialize working memory +; +@@: mov esi,2 ; Initialization of index i + mov cx,a[ebp] ; Length l(a) + shr cx,1 + jnc umult0 + inc cx +umult0: mov eax,0 +umult1: mov p[ebp][esi],eax + add esi,4 + loop umult1 +; +;-----> Inner loop +; + mov edi,2 ; Index j + mov cx,a[ebp] ; Initialize counter inner loop + shr cx,1 + jnc umult2a + inc cx +umult2a: + xor ebx,ebx + mov bx,dx ; Load USHORT-Faktor into bx + mov edx,0 ; Dummy carry + mov esi,2 + mov edi,2 +umult3: push ecx ; Store counter + mov ecx,edx ; Store carry in dx + mov eax,ebx ; Load USHORT factor into ax + mul dword ptr a[ebp][edi] ; ax=lo, dx=hi + add eax,ecx ; ax + u + adc edx,0 + add p[ebp][esi],eax ; p[i+j-1]= ax + p[i+j-1] + adc edx,0 ; New carry u into dx + add edi,4 ; j=j+4 + add esi,4 ; i+j=i+j+4 + pop ecx ; Get counter for inner loop + loop umult3 +; +;-----> End of inner loop +; + mov p[ebp][esi],edx ; p[i+j-1]=u + add esi,2 +umult3a: + cmp word ptr p[ebp][esi],0 + jne short umult4 + sub esi,2 + jmp umult3a +umult4: mov ecx,esi + shr ecx,1 + mov p[ebp],cx +; +;-----> Store product +; + lea esi,p[ebp] + mov ebx,ebp + pop ebp + mov edi,_p + + cmp cx,0 + je @F + cld ; Length l(p) is still in cx +rep movsw +@@: movsw +; +;******************************************************************************* +; Security: Purge stack + +muret: mov edi,ebx + mov ecx,(WORKSP-4)/4 + cld + mov eax,0 ; Return-Value = 0: Everything is OK +rep stosd ; Overwrite with 0 +;******************************************************************************* +; + pop ebx + pop esi ; Restore registers + pop edi + mov esp,ebp + pop ebp + ret +; +umultz: mov esi,_p + mov word ptr [esi],0 + jmp short muret +; +umul endp +END + diff --git a/flint/src/entropy.c b/flint/src/entropy.c new file mode 100644 index 0000000..3fb4639 --- /dev/null +++ b/flint/src/entropy.c @@ -0,0 +1,309 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module entropy.c Revision: 01.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#if defined _WIN32 && defined _MSC_VER +#include +#include +#include +#endif /* _WIN32 */ + +#include +#include +#include +#include +#include + +#include "ripemd.h" +#include "flint.h" +#include "entropy.h" + +static void * local_memset (void *ptr, int val, size_t len); + + +/******************************************************************************/ +/* */ +/* Function: Generation of entropy for initialization of Pseudo- */ +/* randomnumber generators. In addition to a user defined byte */ +/* vector (optional) entropy bytes are read from system specific */ +/* sources: */ +/* - For Win32: Value from QueryPerformanceCounter (64 bytes), */ +/* Values from CryptGenRandom */ +/* - For Unix/Linux systems: */ +/* Entropy is read from virtual device /dev/urandom */ +/* if this source is available. */ +/* Altogether a number of LenRndStr+AddEntropy bytes are fed */ +/* into the result, which is returned as CLINT-value and in */ +/* addition as Ripemd-160 hashvalue. */ +/* */ +/* Usage with Windows 9x/ME/NT/2K/XP: */ +/* ----------------------------------------- */ +/* Usage of Win32-function GenRandom() requires linking with */ +/* advapi32.lib and accessibility of DLL advapi32.dll at runtime */ +/* (available under Windows 95 OSR2 and higher, Windows NT 4.x */ +/* Windows 2000, XP). */ +/* */ +/* Syntax: GetEntropy_l (CLINT Seed_l, char *Hashres, int AddEntropy, */ +/* char *RndStr, int LenRndStr); */ +/* Input: AddEntropy (Number of entropy btes to be generated) */ +/* RndStr (User defined byte vector, NULL-pointer accepted) */ +/* LenRndStr (Laenge von RndStr in Bytes) */ +/* Output: Seed_l (Entropie as CLINT-value. If Seed_l == NULL-pointer */ +/* no output is given) */ +/* Hashres (Entropy as Ripemd-160-hashvalue, length of 20 bytes */ +/* If Hashres == NULL-pointer no Output is given) */ +/* Returns: 0 if everything is OK */ +/* n > 0 if n bytes less than the requested number of entropy */ +/* bytes could be generated */ +/* E_CLINT_MAL error in allocation of memory */ +/* */ +/******************************************************************************/ +int __FLINT_API +GetEntropy_l (CLINT Seed_l, UCHAR *Hashres, int AddEntropy, char *RndStr, int LenRndStr) +{ + unsigned nextfree = 0, MissingEntropy = MAX(AddEntropy, sizeof (time_t)); + unsigned i, j; + UCHAR *Seedbytes; + int BytesRead; + int LenSeedbytes = LenRndStr + MissingEntropy + + sizeof (time_t) + 2*sizeof (ULONG); + RMDSTAT hws; + time_t SeedTime; + FILE *fp; + +#if defined _WIN32 && defined _MSC_VER + LARGE_INTEGER PCountBuff; + HCRYPTPROV hProvider = 0; +#endif /*defined _WIN32 && defined _MSC_VER? */ + + if ((Seedbytes = (UCHAR*)malloc(LenSeedbytes)) == NULL) + { + return E_CLINT_MAL; + } + + if (RndStr != NULL && LenRndStr > 0) + { + memcpy (Seedbytes, RndStr, LenRndStr); + +#ifdef FLINT_TEST + printf("\nRndStr in Seedbytes = "); + for (i = 0 ; i < LenRndStr; i++) + printf("%.2x ",(unsigned char)Seedbytes[nextfree+i]); +#endif /* FLINT_TEST */ + + nextfree = LenRndStr; + } + + SeedTime = (time_t)time(NULL); + + /* System time in Seed */ + for (i = 0; i < sizeof(time_t); i++) + { + j = i << 3; + /* right shift of signed SeedTime doesn't matter, turn lint off */ + Seedbytes[nextfree+i] = (UCHAR)((SeedTime >> j) & (time_t)0xff); /*lint !e704, !e713 */ + } + +#ifdef FLINT_TEST + printf("\nWert Time in Seedbytes = "); + for (i = 0 ; i < sizeof (time_t); i++) + printf("%.2x ",(unsigned char)Seedbytes[nextfree+i]); +#endif /* FLINT_TEST */ + + nextfree += sizeof (time_t); + MissingEntropy -= sizeof (time_t); + +#if defined _WIN32 && defined _MSC_VER /* Get Win32-generated Entropy */ + if (MissingEntropy) + { + /* Chaining with 64-bit-value QueryPerformanceCounter() (Win32-Function) */ + QueryPerformanceCounter (&PCountBuff); + for (i = 0; i < sizeof (DWORD); i++) + { + j = i << 3; + Seedbytes[nextfree + i] = + (char)((PCountBuff.HighPart >> j) & (DWORD)0xff); + Seedbytes[nextfree + sizeof (DWORD) + i] = + (char)((PCountBuff.LowPart >> j) & (DWORD)0xff); + } + +#ifdef FLINT_TEST + printf("\nWert PerformanceCounter in Seedbytes = "); + for (i = 0; i < 2*sizeof (DWORD); i++) + printf("%.2x ",(unsigned char)Seedbytes[nextfree+i]); +#endif + + nextfree += 2*sizeof (DWORD); + MissingEntropy -= 2*sizeof (DWORD); + } + + /* Chaining with output from CryptGenRandom() (Win32-Function) */ + if (CryptAcquireContext(&hProvider, + NULL, + NULL, + PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT)) + { + if (CryptGenRandom (hProvider, + MissingEntropy, + &Seedbytes[nextfree])) + { +#ifdef FLINT_TEST + printf("\nWert CryptGenRandom in Seedbytes = "); + for (i = 0 ; i < MissingEntropy; i++) + printf("%.2x ",(unsigned char)Seedbytes[nextfree+i]); + printf("\n"); +#endif /* FLINT_TEST */ + + nextfree += MissingEntropy; + MissingEntropy = 0; + } + } + + if (hProvider) + { + CryptReleaseContext (hProvider, 0); + } +#endif /* defined _WIN32 && _MSC_VER */ + +/* Get entropy from /dev/urandom if available */ + if ((fp = fopen("/dev/urandom", "r")) != NULL) + { + BytesRead = fread(&Seedbytes[nextfree], sizeof (UCHAR), MissingEntropy, fp); + +#ifdef FLINT_TEST + printf("\nWert aus /dev/urandom in Seedbytes = "); + for (i = 0; i < BytesRead; i++) + printf("%.2x ",(unsigned char)Seedbytes[nextfree+i]); + printf("\n"); +#endif /* FLINT_TEST */ + + nextfree += BytesRead; + MissingEntropy -= BytesRead; + fclose (fp); + } + + /* Hashing of chained entropy-values */ + if (Hashres != NULL) + { + ripeinit (&hws); + ripefinish (Hashres, &hws, Seedbytes, nextfree); + +#ifdef FLINT_TEST + printf("\nHashwert in Hashres = "); + for (i = 0; i < 20; i++) printf("%.2x ", (unsigned char)Hashres[i]); + printf("\n"); +#endif /* FLINT_TEST */ + } + + /* Seed as CLINT-values */ + if (Seed_l != NULL) + { + byte2clint_l (Seed_l, Seedbytes, nextfree); +#ifdef FLINT_TEST + disp_l ("Random Seed in Seed_l = ", Seed_l); +#endif /* FLINT_TEST */ + } + + /* Security: Purge Seed by overwriting with 0 */ + SeedTime = 0; + local_memset (Seedbytes, 0, LenSeedbytes); + local_memset (&hws, 0, sizeof (hws)); + + free (Seedbytes); + + return MissingEntropy; +} + + +/******************************************************************************/ +/* */ +/* Function: Calculation of the entropy of a password from the */ +/* number of characters of the underlying alphabet and number */ +/* of characters of the password itself, using the formular */ +/* Entropie = log2 (n^m) */ +/* with n the size of the alphabet and m the size of the */ +/* password in characters. */ +/* This value is important for the calculation of a */ +/* cryptographic key from a password. If all printable ASCII- */ +/* characters can be used for a password (93 characters), then */ +/* the password should have */ +/* - 20 characters for generating a key of 128-bit length */ +/* - 30 characters for generating a key of 192-bit length */ +/* - 40 characters for generating a key of 256-bit length. */ +/* Syntax: int PWDQual_l (char *pwd, int len_pwd, int len_alpha); */ +/* Input: char *PWD (Password, RFU, not beeing evaluated here) */ +/* int LenPWD (Length of the password in characters) */ +/* int LenAlpha (Size of the alphabet in characters) */ +/* Output: - */ +/* Returns: Entropy of password */ +/* */ +/******************************************************************************/ +int __FLINT_API +PWDQual_l (char *PWD, int LenPWD, int LenAlpha) +{ + return (int)((double)LenAlpha * log10 (LenPWD) / log10 (2)); +} + + +/******************************************************************************/ +/* */ +/* Local memset-Function, does the same as memset() */ +/* Needed to make compiler purge variables in spite of optimization. */ +/* */ +/******************************************************************************/ +static void * +local_memset (void *ptr, int val, size_t len) +{ + return memset (ptr, val, len); +} + + + diff --git a/flint/src/entropy.h b/flint/src/entropy.h new file mode 100644 index 0000000..f1d408d --- /dev/null +++ b/flint/src/entropy.h @@ -0,0 +1,71 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module entropy.h Revision: 01.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __ENTROPYH__ +#define __ENTROPYH__ + +#ifdef __cplusplus +extern "C" { +#endif + +int __FLINT_API +GetEntropy_l (CLINT Seed_l, UCHAR *Hashres, int AddEntropy, char *RndStr, int LenRndStr); + +int __FLINT_API +PWDQual_l (char *PWD, int LenPWD, int LenAlpha); + + +#ifdef __cplusplus +} +#endif + +#endif /* defined __ENTROPYH__ */ + diff --git a/flint/src/flint.c b/flint/src/flint.c new file mode 100644 index 0000000..a6bb913 --- /dev/null +++ b/flint/src/flint.c @@ -0,0 +1,7150 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module flint.c Revision: 19.05.2005 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* Requirements: */ +/* */ +/* sizeof (ULONG) == 4 */ +/* sizeof (USHORT) == 2 */ +/* */ +/******************************************************************************/ + +#ifndef FLINT_ANSI +#define FLINT_ANSI +#endif + +#include +#include +#include +#include + +#include "flint.h" + +#define NO_ASSERTS 1 + +#define FLINTCVMAJ 3 +#define FLINTCVMIN 0 + +#if ((FLINTCVMIN != FLINT_VERMIN) || (FLINTCVMAJ != FLINT_VERMAJ)) +#error Error: Incomaptible versions of FLINT.C and FLINT.H +#endif + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_assert.h" +#include "_alloc.h" +#ifdef COVERAGE +#include "utclog.h" +#endif +#endif + +#ifdef NO_ASSERTS +#define Assert(a) (void)0 +#endif + + +/* Mute wrap up error messages of PC-lint */ +/*lint -esym(14,add,sub,mul,umul,sqr) */ +/*lint -esym(15,add,sub,mul,umul,sqr) */ +/*lint -esym(515,add,sub,mul,umul,sqr) */ +/*lint -esym(516,add,sub,mul,umul,sqr) */ +/*lint -esym(532,add,sub,mul,umul,sqr) */ +/*lint -esym(533,add,sub,mul,umul,sqr) */ +/*lint -esym(1066,add,sub,mul,umul,sqr) */ +/*lint -esym(534,add_l,sub_l,mul_l,sqr_l,div_l,mmul_l,msub_l,dec_l,madd_l) */ +/*lint -esym(534,msqr_l,mexp_l,mexp5_l,mexpk_l,mod_l,mod2_l,mexp2_l) */ + + +/*********** Prototypes of local functions ***********************************/ + +/* Private register functions */ +static void +destroy_reg_l (void); +static int +allocate_reg_l (void); +/* Integer square roots from ULONG values */ +static ULONG +ul_iroot (unsigned long n); +/* Test and set bit w/o checking for overrun */ +static int +setbit (CLINT a_l, unsigned int pos); + +#ifdef FLINT_SECURE +#define PURGEVARS_L(X) purgevars_l X +/* Function to purge variables */ +static void purgevars_l (int noofvars, ...); +#ifdef FLINT_DEBUG +#define ISPURGED_L(X) Assert(ispurged_l X) +/* Function to check, whether variables have been purged */ +static int ispurged_l (int noofvars, ...); +#else +#define ISPURGED_L(X) (void)0 +#endif /* FLINT_DEBUG */ +#else +#define PURGEVARS_L(X) (void)0 +#define ISPURGED_L(X) (void)0 +#endif /* FLINT_SECURE */ +/******************************************************************************/ + +/* CLINT-Constant Values */ +clint __FLINT_API_DATA +nul_l[] = {0, 0, 0, 0, 0}; +clint __FLINT_API_DATA +one_l[] = {1, 1, 0, 0, 0}; +clint __FLINT_API_DATA +two_l[] = {1, 2, 0, 0, 0}; + +#ifdef FLINT_INITRAND +#include "random.h" +STATEPRNG xs; +#endif + + +/******************************************************************************/ +/* */ +/* Function: Initialization of FLINT/C-Library */ +/* If the FLINT/C functions are provided as DLL */ +/* the function initializing the DLL, e. g. DllMain(), */ +/* should call this function. */ +/* */ +/* Syntax: FLINTInit_l() (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* -1 else */ +/* */ +/******************************************************************************/ +int __FLINT_API +FLINTInit_l (void) +{ + int error; + initrand64_lt(); + +#ifdef FLINT_INITRAND + /* Initialization of all PRNGs in global state buffer xs */ + /* N. B.: For cryptographic purposes use individual state buffers */ + /* that are initialized and purged separetely */ + InitRand_l (&xs, "", 0, 200, 0); +#endif + + error = create_reg_l(); + + if (!error) + return E_CLINT_OK; + else + return -1; +} + + +/******************************************************************************/ +/* */ +/* Function: Exit the FLINT/C-Library */ +/* Syntax: FLINTExit_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* -1 else */ +/* */ +/******************************************************************************/ +int __FLINT_API +FLINTExit_l (void) +{ + free_reg_l(); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Copy CLINT to CLINT */ +/* Syntax: void cpy_l (CLINT dest_l, CLINT src_l); */ +/* Input: CLINT src_l */ +/* Output: CLINT dest_l */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +cpy_l (CLINT dest_l, CLINT src_l) +{ + clint *lastsrc_l = MSDPTR_L (src_l); + *dest_l = *src_l; + + while ((*lastsrc_l == 0) && (*dest_l > 0)) + { + --lastsrc_l; + --*dest_l; + } + + while (src_l < lastsrc_l) + { + *++dest_l = *++src_l; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Swap two CLINT operands */ +/* Syntax: void fswap_l (CLINT a_l, CLINT b_l); */ +/* Input: CLINT a_l, b_l */ +/* Output: Swapped CLINT operands b_l, a_l */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +fswap_l (CLINT a_l, CLINT b_l) +{ + CLINT tmp_l; + + cpy_l (tmp_l, a_l); + cpy_l (a_l, b_l); + cpy_l (b_l, tmp_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Test whether two CLINT operands are equal */ +/* Syntax: int equ_l (CLINT a_l, CLINT b_l); */ +/* Input: CLINT a_l, b_l */ +/* Output: - */ +/* Returns: 1 : a_l and b_l have equal values */ +/* 0 : otherwise */ +/* */ +/******************************************************************************/ +int __FLINT_API +equ_l (CLINT a_l, CLINT b_l) +{ + clint *msdptra_l, *msdptrb_l; + int la = (int)DIGITS_L (a_l); + int lb = (int)DIGITS_L (b_l); + + if (la == 0 && lb == 0) + { + return 1; + } + + while (a_l[la] == 0 && la > 0) + { + --la; + } + + while (b_l[lb] == 0 && lb > 0) + { + --lb; + } + + if (la == 0 && lb == 0) + { + return 1; + } + + if (la != lb) + { + return 0; + } + + msdptra_l = a_l + la; + msdptrb_l = b_l + lb; + + while ((*msdptra_l == *msdptrb_l) && (msdptra_l > a_l)) + { + msdptra_l--; + msdptrb_l--; + } + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + + ISPURGED_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + + return (msdptra_l > a_l ? 0 : 1); +} + + +/******************************************************************************/ +/* */ +/* Function: Test whether two CLINT operands are equal modulo m */ +/* Syntax: int mequ_l (CLINT a_l, CLINT b_l, CLINT m_l); */ +/* Input: CLINT a_l, b_l (values to compare), CLINT m_l (Modulus) */ +/* Output: - */ +/* Returns: 1 : a_l = b_l mod m_l */ +/* 0 : a_l != b_l mod m_l */ +/* E_CLINT_DBZ: division by 0 */ +/* */ +/******************************************************************************/ +int __FLINT_API +mequ_l (CLINT a_l, CLINT b_l, CLINT m_l) +{ + CLINT r_l; + int res; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero? */ + } + + msub_l (a_l, b_l, r_l, m_l); + + res = (0 == DIGITS_L (r_l))?1:0; + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (r_l), r_l)); + ISPURGED_L ((1, sizeof (r_l), r_l)); + + return res; +} + + +/******************************************************************************/ +/* */ +/* Function: Comparison of two CLINT operands */ +/* Syntax: int cmp_l (CLINT a_l, CLINT b_l); */ +/* Input: CLINT a_l, b_l (values to compare) */ +/* Output: - */ +/* Returns: -1: a_l < b_l, */ +/* 0: a_l == b_l, */ +/* 1: a_l > b_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +cmp_l (CLINT a_l, CLINT b_l) +{ + clint *msdptra_l, *msdptrb_l; + int la = (int)DIGITS_L (a_l); + int lb = (int)DIGITS_L (b_l); + + if (la == 0 && lb == 0) + { + return 0; + } + + while (a_l[la] == 0 && la > 0) + { + --la; + } + + while (b_l[lb] == 0 && lb > 0) + { + --lb; + } + + if (la == 0 && lb == 0) + { + return 0; + } + + if (la > lb) + { + PURGEVARS_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + ISPURGED_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + return 1; + } + + if (la < lb) + { + PURGEVARS_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + ISPURGED_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + return -1; + } + + msdptra_l = a_l + la; + msdptrb_l = b_l + lb; + + while ((*msdptra_l == *msdptrb_l) && (msdptra_l > a_l)) + { + msdptra_l--; + msdptrb_l--; + } + + PURGEVARS_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + ISPURGED_L ((2, sizeof (la), &la, + sizeof (lb), &lb)); + + if (msdptra_l == a_l) + { + return 0; + } + + if (*msdptra_l > *msdptrb_l) + { + return 1; + } + else + { + return -1; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of maximum CLINT value 2^CLINTMAXBIT - 1 */ +/* Syntax: clint * setmax_l (CLINT a_l); */ +/* Input: a_l CLINT variable */ +/* Output: a_l set to value of 2^CLINTMAXBIT - 1 = Nmax */ +/* Returns: Address of CLINT variable a_l */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +setmax_l (CLINT a_l) +{ + clint *aptr_l = a_l; + clint *msdptra_l = a_l + CLINTMAXDIGIT; + + while (++aptr_l <= msdptra_l) + { + *aptr_l = BASEMINONE; + } + + SETDIGITS_L (a_l, CLINTMAXDIGIT); + return (clint *)a_l; +} + + +/******************************************************************************/ +/* */ +/* Function: Addition of two CLINT operands */ +/* Syntax: int add_l (CLINT a_l, CLINT b_l, CLINT s_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: s_l (Sum) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +add_l (CLINT a_l, CLINT b_l, CLINT s_l) +{ + clint ss_l[CLINTMAXSHORT + 1]; + int OFL = 0; + + add (a_l, b_l, ss_l); + + if (DIGITS_L (ss_l) > (USHORT)CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (ss_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (s_l, ss_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (ss_l), ss_l)); + ISPURGED_L ((1, sizeof (ss_l), ss_l)); + + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Subtraction of one CLINT operand from another */ +/* Syntax: int sub_l (CLINT aa_l, CLINT bb_l, CLINT d_l); */ +/* Input: aa_l, bb_l (Operands) */ +/* Output: d_l (Value of a_l - b_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_UFL: Underflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +sub_l (CLINT aa_l, CLINT bb_l, CLINT d_l) +{ + CLINT b_l; + clint a_l[CLINTMAXSHORT + 1], t_l[CLINTMAXSHORT + 1], tmp_l[CLINTMAXSHORT + 1]; + int UFL = 0; + + cpy_l (b_l, bb_l); + + if (LT_L (aa_l, b_l)) /* Underflow ? */ + { + setmax_l (a_l); /* We calculate with Nmax */ + cpy_l (t_l, aa_l); /* aa_l will be needed once again, ...*/ + UFL = E_CLINT_UFL; /* ... will be corrected at the end */ + } + else + { + cpy_l (a_l, aa_l); + } + + sub (a_l, b_l, tmp_l); + + if (UFL) + { /* Underflow ? */ + add_l (tmp_l, t_l, d_l); /* Correction needed */ + inc_l (d_l); /* One is missing */ + } + else + { + cpy_l (d_l, tmp_l); + } + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (t_l), t_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((4, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (t_l), t_l, + sizeof (tmp_l), tmp_l)); + + return UFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Increment */ +/* Syntax: int inc_l (CLINT a_l); */ +/* Input: a_l (CLINT value) */ +/* Output: a_l, incremented by 1 */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +inc_l (CLINT a_l) +{ + clint *msdptra_l, *aptr_l = LSDPTR_L (a_l); + ULONG carry = BASE; + int OFL = 0; + + msdptra_l = MSDPTR_L (a_l); + while ((aptr_l <= msdptra_l) && (carry & BASE)) + { + *aptr_l = (USHORT)(carry = 1UL + (ULONG)(*aptr_l)); + aptr_l++; + } + + if ((aptr_l > msdptra_l) && (carry & BASE)) + { + *aptr_l = 1; + INCDIGITS_L (a_l); + if (DIGITS_L (a_l) > (USHORT)CLINTMAXDIGIT) /* Overflow ? */ + { + SETZERO_L (a_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + } + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); + + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Decrement */ +/* Syntax: int dec_l (CLINT a_l); */ +/* Input: a_l (CLINT value) */ +/* Output: a_l, decremented by 1 */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_UFL: Underflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +dec_l (CLINT a_l) +{ + clint *msdptra_l, *aptr_l = LSDPTR_L (a_l); + ULONG carry = DBASEMINONE; + + if (DIGITS_L (a_l) == 0) /* Underflow ? */ + { + setmax_l (a_l); /* Reduction modulo Nmax+1 */ + return E_CLINT_UFL; + } + + msdptra_l = MSDPTR_L (a_l); + while ((aptr_l <= msdptra_l) && (carry & (BASEMINONEL << BITPERDGT))) + { + *aptr_l = (USHORT)(carry = (ULONG)*aptr_l - 1L); + aptr_l++; + } + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); + + RMLDZRS_L (a_l); + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication */ +/* Syntax: int mul_l (CLINT f1_l, CLINT f2_l, CLINT pp_l); */ +/* Input: f1_l, f2_l (Factors) */ +/* Output: p_l (Product) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +mul_l (CLINT f1_l, CLINT f2_l, CLINT pp_l) +{ + CLINT a_l, b_l; + CLINTD p_l; + int OFL = 0; + + cpy_l (a_l, f1_l); + cpy_l (b_l, f2_l); + + mult (a_l, b_l, p_l); + + if (DIGITS_L (p_l) > (USHORT)CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (p_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (pp_l, p_l); + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (p_l), p_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (p_l), p_l)); + + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Squaring */ +/* Syntax: int sqr_l (CLINT f_l, CLINT pp_l); */ +/* Input: f_l (Factor) */ +/* Output: pp_l (Square) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +sqr_l (CLINT f_l, CLINT pp_l) +{ + CLINT a_l; + CLINTD p_l; + int OFL = 0; + + cpy_l (a_l, f_l); + + sqr (a_l, p_l); + + if (DIGITS_L (p_l) > (USHORT)CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (p_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (pp_l, p_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (p_l), p_l)); + + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (p_l), p_l)); + + return OFL; +} + + +#if !defined FLINT_ASM +/******************************************************************************/ +/* */ +/* Function: Integer Division */ +/* Syntax: int div_l (CLINT d1_l, CLINT d2_l, CLINT quot_l, CLINT rem_l); */ +/* Input: d1_l (Dividend), d2_l (Divisor) */ +/* Output: quot_l (Quotient), rem_l (Remainder) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* Remark: A double long dividend (type CLINTD) is supported as long as */ +/* calling function provides sufficient memory for the quotient. */ +/* */ +/******************************************************************************/ +int __FLINT_API +div_l (CLINT d1_l, CLINT d2_l, CLINT quot_l, CLINT rem_l) +{ + register clint *rptr_l, *bptr_l; + CLINT b_l; + clint r_l[2 + (CLINTMAXDIGIT << 1)]; /* Provide space for double long */ + /* dividend + 1 digit */ + clint *qptr_l, *msdptrb_l, *msdptrr_l, *lsdptrr_l; + USHORT bv, rv, qhat, ri, ri_1, ri_2, bn_1, bn_2; + ULONG right, left, rhat, borrow, carry, sbitsminusd; + unsigned int d = 0; + int i; + + cpy_l (r_l, d1_l); + cpy_l (b_l, d2_l); + + if (EQZ_L (b_l)) + { + PURGEVARS_L ((1, sizeof (r_l), r_l)); + ISPURGED_L ((1, sizeof (r_l), r_l)); + + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQZ_L (r_l)) + { + SETZERO_L (quot_l); + SETZERO_L (rem_l); + + PURGEVARS_L ((1, sizeof (b_l), b_l)); + ISPURGED_L ((1, sizeof (b_l), b_l)); + + return E_CLINT_OK; + } + + i = cmp_l (r_l, b_l); + + if (i == -1) + { + cpy_l (rem_l, r_l); + SETZERO_L (quot_l); + + PURGEVARS_L ((2, sizeof (b_l), b_l, + sizeof (r_l), r_l)); + ISPURGED_L ((2, sizeof (b_l), b_l, + sizeof (r_l), r_l)); + return E_CLINT_OK; + } + else if (i == 0) + { + SETONE_L (quot_l); + SETZERO_L (rem_l); + + PURGEVARS_L ((2, sizeof (b_l), b_l, + sizeof (r_l), r_l)); + ISPURGED_L ((2, sizeof (b_l), b_l, + sizeof (r_l), r_l)); + return E_CLINT_OK; + } + + if (DIGITS_L (b_l) == 1) + { + goto shortdiv; + } + + /* Step 1 */ + msdptrb_l = MSDPTR_L (b_l); + + bn_1 = *msdptrb_l; + while (bn_1 < BASEDIV2) + { + d++; + bn_1 <<= 1; + } + + sbitsminusd = (int)BITPERDGT - d; + + if (d > 0) + { + bn_1 += *(msdptrb_l - 1) >> sbitsminusd; + + if (DIGITS_L (b_l) > 2) + { + bn_2 = (USHORT)((*(msdptrb_l - 1) << d) + (*(msdptrb_l - 2) >> sbitsminusd)); + } + else + { + bn_2 = (USHORT)(*(msdptrb_l - 1) << d); + } + } + else + { + bn_2 = (USHORT)(*(msdptrb_l - 1)); + } + + /* Steps 2 and 3 */ + msdptrr_l = MSDPTR_L (r_l) + 1; + lsdptrr_l = MSDPTR_L (r_l) - DIGITS_L (b_l) + 1; + *msdptrr_l = 0; + + qptr_l = quot_l + DIGITS_L (r_l) - DIGITS_L (b_l) + 1; + + /* Step 4 */ + while (lsdptrr_l >= LSDPTR_L (r_l)) + { + ri = (USHORT)((*msdptrr_l << d) + (*(msdptrr_l - 1) >> sbitsminusd)); + + ri_1 = (USHORT)((*(msdptrr_l - 1) << d) + (*(msdptrr_l - 2) >> sbitsminusd)); + + if (msdptrr_l - 3 > r_l) + { + ri_2 = (USHORT)((*(msdptrr_l - 2) << d) + (*(msdptrr_l - 3) >> sbitsminusd)); + } + else + { + ri_2 = (USHORT)(*(msdptrr_l - 2) << d); + } + + if (ri != bn_1) /* almost always */ + { + qhat = (USHORT)((rhat = ((ULONG)ri << BITPERDGT) + (ULONG)ri_1) / bn_1); + right = ((rhat = (rhat - (ULONG)bn_1 * qhat)) << BITPERDGT) + ri_2; + + /* test qhat */ + + if ((left = (ULONG)bn_2 * qhat) > right) + { + qhat--; + if ((rhat + bn_1) < BASE) + /* else bn_2 * qhat < rhat * b_l */ + { + if ((left - bn_2) > (right + ((ULONG)bn_1 << BITPERDGT))) + { + qhat--; + } + } + } + } + else /* ri == bn_1, almost never */ + { + qhat = BASEMINONE; + right = ((ULONG)(rhat = (ULONG)bn_1 + (ULONG)ri_1) << BITPERDGT) + ri_2; + if (rhat < BASE) /* else bn_2 * qhat < rhat * b_l */ + { + /* test qhat */ + + if ((left = (ULONG)bn_2 * qhat) > right) + { + qhat--; + if ((rhat + bn_1) < BASE) + /* else bn_2 * qhat < rhat * b_l */ + { + if ((left - bn_2) > (right + ((ULONG)bn_1 << BITPERDGT))) + { + qhat--; + } + } + } + } + } + + /* Step 5 */ + borrow = BASE; + carry = 0; + for (bptr_l = LSDPTR_L (b_l), rptr_l = lsdptrr_l; bptr_l <= msdptrb_l; bptr_l++, rptr_l++) + { + if (borrow >= BASE) + { + *rptr_l = (USHORT)(borrow = ((ULONG)(*rptr_l) + BASE - + (ULONG)(USHORT)(carry = (ULONG)(*bptr_l) * + qhat + (ULONG)(USHORT)(carry >> BITPERDGT)))); + } + else + { + *rptr_l = (USHORT)(borrow = ((ULONG)(*rptr_l) + BASEMINONEL - + (ULONG)(USHORT)(carry = (ULONG)(*bptr_l) * + qhat + (ULONG)(USHORT)(carry >> BITPERDGT)))); + } + } + + if (borrow >= BASE) + { + *rptr_l = (USHORT)(borrow = ((ULONG)(*rptr_l) + BASE - + (ULONG)(USHORT)(carry >> BITPERDGT))); + } + else + { + *rptr_l = (USHORT)(borrow = ((ULONG)(*rptr_l) + BASEMINONEL - + (ULONG)(USHORT)(carry >> BITPERDGT))); + } + + /* Step 6 */ + *qptr_l = qhat; + + if (borrow < BASE) + { + carry = 0; + for (bptr_l = LSDPTR_L (b_l), rptr_l = lsdptrr_l; bptr_l <= msdptrb_l; bptr_l++, rptr_l++) + { + *rptr_l = (USHORT)(carry = ((ULONG)(*rptr_l) + (ULONG)(*bptr_l) + + (ULONG)(USHORT)(carry >> BITPERDGT))); + } + *rptr_l += (USHORT)(carry >> BITPERDGT); + (*qptr_l)--; + } + + /* Step 7 */ + msdptrr_l--; + lsdptrr_l--; + qptr_l--; + } + + /* Step 8 */ + SETDIGITS_L (quot_l, DIGITS_L (r_l) - DIGITS_L (b_l) + 1); + RMLDZRS_L (quot_l); + + SETDIGITS_L (r_l, DIGITS_L (b_l)); + cpy_l (rem_l, r_l); + + /* Purging of variables */ + PURGEVARS_L ((17, sizeof (bv), &bv, + sizeof (rv), &rv, + sizeof (qhat), &qhat, + sizeof (ri), &ri, + sizeof (ri_1), &ri_1, + sizeof (ri_2), &ri_2, + sizeof (bn_1), &bn_1, + sizeof (bn_2), &bn_2, + sizeof (right), &right, + sizeof (left), &left, + sizeof (rhat), &rhat, + sizeof (borrow), &borrow, + sizeof (carry), &carry, + sizeof (sbitsminusd), &sbitsminusd, + sizeof (d), &d, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((17, sizeof (bv), &bv, + sizeof (rv), &rv, + sizeof (qhat), &qhat, + sizeof (ri), &ri, + sizeof (ri_1), &ri_1, + sizeof (ri_2), &ri_2, + sizeof (bn_1), &bn_1, + sizeof (bn_2), &bn_2, + sizeof (right), &right, + sizeof (left), &left, + sizeof (rhat), &rhat, + sizeof (borrow), &borrow, + sizeof (carry), &carry, + sizeof (sbitsminusd), &sbitsminusd, + sizeof (d), &d, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + + return E_CLINT_OK; + + /* Division by divisor with one-digit */ + shortdiv: + + rv = 0; + bv = *LSDPTR_L (b_l); + for (rptr_l = MSDPTR_L (r_l), qptr_l = quot_l + DIGITS_L (r_l); rptr_l >= LSDPTR_L (r_l); rptr_l--, qptr_l--) + { + *qptr_l = (USHORT)((rhat = ((((ULONG)rv) << BITPERDGT) + + (ULONG)*rptr_l)) / bv); + rv = (USHORT)(rhat - (ULONG)bv * (ULONG)*qptr_l); + } + + SETDIGITS_L (quot_l, DIGITS_L (r_l)); + + RMLDZRS_L (quot_l); + u2clint_l (rem_l, rv); + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (rv), &rv, + sizeof (bv), &bv, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((4, sizeof (rv), &rv, + sizeof (bv), &bv, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + + return E_CLINT_OK; +} +#endif /* FLINT_ASM */ + + +/******************************************************************************/ +/* */ +/* Function: Binary rightshift by 1 bit */ +/* Syntax: int shr_l (CLINT a_l); */ +/* Input: a_l (Operand) */ +/* Output: a_l (Shifted value) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_UFL: Underflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +shr_l (CLINT a_l) +{ + clint *ap_l; + USHORT help, carry = 0; + + if (DIGITS_L (a_l) == 0) + { + return E_CLINT_UFL; /* Underflow */ + } + + for (ap_l = MSDPTR_L (a_l); ap_l > a_l; ap_l--) + { + help = (USHORT)((USHORT)(*ap_l >> 1) | (USHORT)(carry << (BITPERDGT - 1))); + carry = (USHORT)(*ap_l & 1U); + *ap_l = help; + } + + RMLDZRS_L (a_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (help), &help, + sizeof (carry), &carry)); + + ISPURGED_L ((2, sizeof (help), &help, + sizeof (carry), &carry)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Binary leftshift by 1 bit */ +/* Syntax: int shl_l (CLINT a_l); */ +/* Input: a_l (Operand) */ +/* Output: a_l (Shifted value) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +shl_l (CLINT a_l) +{ + clint *ap_l, *msdptra_l; + ULONG carry = 0L; + int error = E_CLINT_OK; + + RMLDZRS_L (a_l); + if (ld_l (a_l) >= (USHORT)CLINTMAXBIT) + { + SETDIGITS_L (a_l, CLINTMAXDIGIT); + error = E_CLINT_OFL; /* Overflow */ + } + + msdptra_l = MSDPTR_L (a_l); + for (ap_l = LSDPTR_L (a_l); ap_l <= msdptra_l; ap_l++) + { + *ap_l = (USHORT)(carry = ((ULONG)(*ap_l) << 1) | (carry >> BITPERDGT)); + } + + if (carry >> BITPERDGT) + { + if (DIGITS_L (a_l) < CLINTMAXDIGIT) + { + *ap_l = 1; + INCDIGITS_L (a_l); + error = E_CLINT_OK; + } + else + { + error = E_CLINT_OFL; + } + } + + RMLDZRS_L (a_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Binary left-/rightshift by n bits */ +/* Syntax: int shift_l (CLINT n_l, long int noofbits); */ +/* Input: n_l (Operand) */ +/* noofbits (Number of places to be shifted) */ +/* negative sign: Shift right */ +/* positive sign: Shift left */ +/* Output: a_l (Shifted value) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* E_CLINT_UFL: Underflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +shift_l (CLINT n_l, long int noofbits) +{ + USHORT shorts = (USHORT)((ULONG)(noofbits < 0 ? -noofbits : noofbits) / BITPERDGT); + USHORT bits = (USHORT)((ULONG)(noofbits < 0 ? -noofbits : noofbits) % BITPERDGT); + long int resl; + USHORT i; + int error = E_CLINT_OK; + + clint *nptr_l; + clint *msdptrn_l; + + RMLDZRS_L (n_l); + resl = (int)ld_l (n_l) + noofbits; + + if (DIGITS_L (n_l) == 0) + { + shorts = bits = 0; + return ((resl < 0) ? E_CLINT_UFL : E_CLINT_OK); + } + + if (noofbits == 0) + { + return E_CLINT_OK; + } + + if ((resl < 0) || (resl > (long)CLINTMAXBIT)) + { + error = ((resl < 0) ? E_CLINT_UFL : E_CLINT_OFL); /* Under-/Overflow */ + } + + SETDIGITS_L (n_l, MIN (DIGITS_L (n_l), CLINTMAXDIGIT)); + + if (noofbits < 0) + { + + /* Shift Right */ + + shorts = (USHORT)MIN (DIGITS_L (n_l), shorts); + msdptrn_l = MSDPTR_L (n_l) - shorts; + for (nptr_l = LSDPTR_L (n_l); nptr_l <= msdptrn_l; nptr_l++) + { + *nptr_l = *(nptr_l + shorts); + } + SETDIGITS_L (n_l, DIGITS_L (n_l) - shorts); + + for (i = 0; i < bits; i++) + { + shr_l (n_l); + } + } + else + { + + /* Shift Left */ + + if (shorts < CLINTMAXDIGIT) + { + SETDIGITS_L (n_l, MIN ((USHORT)(DIGITS_L (n_l) + shorts), CLINTMAXDIGIT)); + nptr_l = n_l + DIGITS_L (n_l); + msdptrn_l = n_l + shorts; + while (nptr_l > msdptrn_l) + { + *nptr_l = *(nptr_l - shorts); + --nptr_l; + } + + while (nptr_l > n_l) + { + *nptr_l-- = 0; + } + + RMLDZRS_L (n_l); + for (i = 0; i < bits; i++) + { + shl_l (n_l); + } + } + else + { + SETZERO_L (n_l); + } + } + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (resl), &resl, + sizeof (shorts), &shorts, + sizeof (bits), &bits)); + + ISPURGED_L ((3, sizeof (resl), &resl, + sizeof (shorts), &shorts, + sizeof (bits), &bits)); + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Reduction modulo m */ +/* Syntax: int mod_l (CLINT dv_l, CLINT ds_l, CLINT r_l); */ +/* Input: dv_l (Dividend), ds_l (Divisor) */ +/* Output: r_l (Remainder of dv_l mod ds_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* Remark: A double long dividend (type CLINTD) is supported as long as */ +/* calling function provides sufficient memory for the quotient. */ +/* */ +/******************************************************************************/ +int __FLINT_API +mod_l (CLINT dv_l, CLINT ds_l, CLINT r_l) +{ + CLINTD junk_l; + int err; + + err = div_l (dv_l, ds_l, junk_l, r_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (junk_l), junk_l)); + ISPURGED_L ((1, sizeof (junk_l), junk_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Reduction mod 2^k */ +/* Syntax: int mod2_l (CLINT d_l, ULONG k, CLINT r_l); */ +/* Input: d_l (Dividend), k (Exponent of 2^k) */ +/* Output: r_l (Remainder of d_l mod 2^k) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* Remark: A double long dividend (type CLINTD) is supported as long as */ +/* calling function provides sufficient memory for the quotient. */ +/* */ +/******************************************************************************/ +int __FLINT_API +mod2_l (CLINT d_l, ULONG k, CLINT r_l) +{ + int i; + + cpy_l (r_l, d_l); + + if (k > CLINTMAXBIT) + { + return E_CLINT_OK; + } + + i = 1 + (k >> LDBITPERDGT); + + if (i > (int)DIGITS_L (r_l)) + { + return E_CLINT_OK; + } + + r_l[i] &= (1U << (k & (BITPERDGT - 1UL))) - 1U; + SETDIGITS_L (r_l, i); /* r_l[i] = 2^(k mod BITPERDGT) - 1 */ + + RMLDZRS_L (r_l); + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular addition */ +/* Syntax: int madd_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l); */ +/* Input: aa_l, bb_l, m_l (Operands) */ +/* Output: c_l (Remainder of aa_l + bb_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +madd_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l) +{ + CLINT a_l, b_l; + clint tmp_l[CLINTMAXSHORT + 1]; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + cpy_l (a_l, aa_l); + cpy_l (b_l, bb_l); + + if (GE_L (a_l, m_l) || GE_L (b_l, m_l)) + { + add (a_l, b_l, tmp_l); + mod_l (tmp_l, m_l, c_l); + } + else + { + add (a_l, b_l, tmp_l); + if (GE_L (tmp_l, m_l)) + { + sub_l (tmp_l, m_l, tmp_l); /* Underflow prevented */ + } + cpy_l (c_l, tmp_l); + } + + Assert(DIGITS_L (c_l) <= CLINTMAXDIGIT); + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular subtraction */ +/* Syntax: int msub_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l); */ +/* Input: aa_l, bb_l, m_l (Operands) */ +/* Output: c_l (Remainder of aa_l - bb_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +msub_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l) +{ + CLINT a_l, b_l, tmp_l; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + cpy_l (a_l, aa_l); + cpy_l (b_l, bb_l); + + if (GE_L (a_l, b_l)) + { + sub (a_l, b_l, tmp_l); + mod_l (tmp_l, m_l, c_l); + } + else + { + sub (b_l, a_l, tmp_l); /* Sign tmp_l = -1 */ + mod_l (tmp_l, m_l, tmp_l); + if (GTZ_L (tmp_l)) + { + sub (m_l, tmp_l, c_l); + } + else + { + SETZERO_L (c_l); + } + } + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular Multiplication */ +/* Syntax: int mmul_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l); */ +/* Input: aa_l, bb_l, m_l (Operands) */ +/* Output: c_l (Remainder of aa_l * bb_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +mmul_l (CLINT aa_l, CLINT bb_l, CLINT c_l, CLINT m_l) +{ + CLINT a_l, b_l; + CLINTD tmp_l; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + cpy_l (a_l, aa_l); + cpy_l (b_l, bb_l); + + mult (a_l, b_l, tmp_l); + mod_l (tmp_l, m_l, c_l); + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular squaring */ +/* Syntax: int msqr_l (CLINT aa_l, CLINT c_l, CLINT m_l); */ +/* Input: aa_l, m_l (Operands) */ +/* Output: c_l (Remainder of aa_l * aa_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +msqr_l (CLINT aa_l, CLINT c_l, CLINT m_l) +{ + CLINT a_l; + CLINTD tmp_l; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + cpy_l (a_l, aa_l); + + sqr (a_l, tmp_l); + mod_l (tmp_l, m_l, c_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (tmp_l), tmp_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Montgomery multiplication */ +/* Syntax: void mulmon_l (CLINT a_l, CLINT b_l, CLINT n_l, USHORT nprime, */ +/* USHORT logB_r, CLINT p_l); */ +/* Input: a_l, b_l (Factors) */ +/* n_l (Modulus, odd, n_l > a_l, b_l) */ +/* nprime (-n_l^(-1) mod B) */ +/* logB_r (Integral part of logarithm of r to base B) */ +/* (For an explanation of the operands cf. Chap. 6) */ +/* Output: p_l (Remainder of a_l * b_l * r^(-1) mod n_l) */ +/* with r := B^logB_r, B^(logB_r-1) <= n_l < B^logB_r) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +mulmon_l(CLINT a_l, CLINT b_l, CLINT n_l, USHORT nprime, USHORT logB_r, CLINT p_l) +{ + clint t_l[2 + (CLINTMAXDIGIT << 1)]; + clint *tptr_l, *nptr_l, *tiptr_l, *lasttnptr, *lastnptr; + ULONG carry; + USHORT mi; + int i; + + mult (a_l, b_l, t_l); + Assert (DIGITS_L (t_l) <= (1 + (CLINTMAXDIGIT << 1))); + + lasttnptr = t_l + DIGITS_L (n_l); + lastnptr = MSDPTR_L (n_l); + + for (i = (int)DIGITS_L (t_l) + 1; i <= (int)(DIGITS_L (n_l) << 1); i++) + { + Assert (i < sizeof (t_l)); + t_l[i] = 0; + } + + SETDIGITS_L (t_l, MAX(DIGITS_L (t_l), DIGITS_L (n_l) << 1)); + + Assert (DIGITS_L (t_l) <= (CLINTMAXDIGIT << 1)); + + for (tptr_l = LSDPTR_L (t_l); tptr_l <= lasttnptr; tptr_l++) + { + carry = 0; + mi = (USHORT)((ULONG)nprime * (ULONG)*tptr_l); + for (nptr_l = LSDPTR_L (n_l), tiptr_l = tptr_l; nptr_l <= lastnptr; nptr_l++, tiptr_l++) + { + Assert (tiptr_l <= t_l + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry = (ULONG)mi * (ULONG)*nptr_l + + (ULONG)*tiptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + + for (; ((carry >> BITPERDGT) > 0) && tiptr_l <= MSDPTR_L (t_l); tiptr_l++) + { + Assert (tiptr_l <= t_l + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry = (ULONG)*tiptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + + if (((carry >> BITPERDGT) > 0)) + { + Assert (tiptr_l <= t_l + 1 + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry >> BITPERDGT); + INCDIGITS_L (t_l); + } + } + + tptr_l = t_l + logB_r; + SETDIGITS_L (tptr_l, DIGITS_L (t_l) - logB_r); + Assert (DIGITS_L (tptr_l) <= (CLINTMAXDIGIT + 1)); + + if (GE_L (tptr_l, n_l)) + { + sub_l (tptr_l, n_l, p_l); + } + else + { + cpy_l (p_l, tptr_l); + } + + Assert (DIGITS_L (p_l) <= CLINTMAXDIGIT); + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (mi), &mi, + sizeof (carry), &carry, + sizeof (t_l), t_l)); + + ISPURGED_L ((3, sizeof (mi), &mi, + sizeof (carry), &carry, + sizeof (t_l), t_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Montgomery squaring */ +/* Syntax: void sqrmon_l (CLINT a_l, CLINT n_l, USHORT nprime, */ +/* USHORT logB_r, CLINT p_l); */ +/* Input: a_l (factor), n_l (Modulus, odd) */ +/* nprime (n' mod B), */ +/* logB_r (Integral Part of Logarithm of r to base B) */ +/* (For an explanation of the operands cf. Chap. 6) */ +/* Output: p_l (Remainder a_l * a_l * r^(-1) mod n_l) */ +/* with r := B^logB_r, B^(logB_r-1) <= n_l < B^logB_r) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sqrmon_l(CLINT a_l, CLINT n_l, USHORT nprime, USHORT logB_r, CLINT p_l) +{ + clint t_l[2 + (CLINTMAXDIGIT << 1)]; + clint *tptr_l, *nptr_l, *tiptr_l, *lasttnptr, *lastnptr; + ULONG carry; + USHORT mi; + int i; + + sqr (a_l, t_l); + + lasttnptr = t_l + DIGITS_L (n_l); + lastnptr = MSDPTR_L (n_l); + + for (i = (int)DIGITS_L (t_l) + 1; i <= (int)(DIGITS_L (n_l) << 1); i++) + { + t_l[i] = 0; + } + + SETDIGITS_L (t_l, MAX(DIGITS_L (t_l), DIGITS_L (n_l) << 1)); + + for (tptr_l = LSDPTR_L (t_l); tptr_l <= lasttnptr; tptr_l++) + { + carry = 0; + mi = (USHORT)((ULONG)nprime * (ULONG)*tptr_l); + for (nptr_l = LSDPTR_L (n_l), tiptr_l = tptr_l; nptr_l <= lastnptr; nptr_l++, tiptr_l++) + { + Assert (tiptr_l <= t_l + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry = (ULONG)mi * (ULONG)*nptr_l + + (ULONG)*tiptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + + for (; ((carry >> BITPERDGT) > 0) && tiptr_l <= MSDPTR_L (t_l); tiptr_l++) + { + Assert (tiptr_l <= t_l + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry = (ULONG)*tiptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + + if (((carry >> BITPERDGT) > 0) && tiptr_l > MSDPTR_L (t_l)) + { + Assert (tiptr_l <= t_l + 1 + (CLINTMAXDIGIT << 1)); + *tiptr_l = (USHORT)(carry >> BITPERDGT); + INCDIGITS_L (t_l); + } + } + + tptr_l = t_l + logB_r; + SETDIGITS_L (tptr_l, DIGITS_L (t_l) - logB_r); + + if (GE_L (tptr_l, n_l)) + { + sub_l (tptr_l, n_l, p_l); + } + else + { + cpy_l (p_l, tptr_l); + } + + Assert (DIGITS_L (p_l) <= CLINTMAXDIGIT); + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (mi), &mi, + sizeof (carry), &carry, + sizeof (t_l), t_l)); + + ISPURGED_L ((3, sizeof (mi), &mi, + sizeof (carry), &carry, + sizeof (t_l), t_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Inverse -n^(-1) mod B for odd n */ +/* Syntax: USHORT invmon_l (CLINT n_l); */ +/* Input: n_l (Modulus) */ +/* Output: - */ +/* Returns: -n^(-1) mod B */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +invmon_l (CLINT n_l) +{ + unsigned int i; + ULONG x = 2, y = 1; + + if (ISEVEN_L (n_l)) + { + return (USHORT)E_CLINT_MOD; + } + + for (i = 2; i <= BITPERDGT; i++, x <<= 1) + { + if (x < (((ULONG)((ULONG)(*LSDPTR_L (n_l)) * (ULONG)y)) & ((x << 1) - 1))) + { + y += x; + } + } + + return (USHORT)(x - y); +} + + +/******************************************************************************/ + +static int twotab[] = +{0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0}; + + +static USHORT oddtab[] = +{0, 1, 1, 3, 1, 5, 3, 7, 1, 9, 5, 11, 3, 13, 7, 15, 1, 17, 9, 19, 5, 21, 11, 23, 3, 25, 13, 27, 7, 29, 15, 31, 1, + 33, 17, 35, 9, 37, 19, 39, 5, 41, 21, 43, 11, 45, 23, 47, 3, 49, 25, 51, 13, 53, 27, 55, 7, 57, 29, 59, 15, + 61, 31, 63, 1, 65, 33, 67, 17, 69, 35, 71, 9, 73, 37, 75, 19, 77, 39, 79, 5, 81, 41, 83, 21, 85, 43, 87, 11, + 89, 45, 91, 23, 93, 47, 95, 3, 97, 49, 99, 25, 101, 51, 103, 13, 105, 53, 107, 27, 109, 55, 111, 7, 113, + 57, 115, 29, 117, 59, 119, 15, 121, 61, 123, 31, 125, 63, 127, 1, 129, 65, 131, 33, 133, 67, 135, 17, + 137, 69, 139, 35, 141, 71, 143, 9, 145, 73, 147, 37, 149, 75, 151, 19, 153, 77, 155, 39, 157, 79, 159, + 5, 161, 81, 163, 41, 165, 83, 167, 21, 169, 85, 171, 43, 173, 87, 175, 11, 177, 89, 179, 45, 181, 91, + 183, 23, 185, 93, 187, 47, 189, 95, 191, 3, 193, 97, 195, 49, 197, 99, 199, 25, 201, 101, 203, 51, 205, + 103, 207, 13, 209, 105, 211, 53, 213, 107, 215, 27, 217, 109, 219, 55, 221, 111, 223, 7, 225, 113, + 227, 57, 229, 115, 231, 29, 233, 117, 235, 59, 237, 119, 239, 15, 241, 121, 243, 61, 245, 123, 247, 31, + 249, 125, 251, 63, 253, 127, 255}; + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation */ +/* Automatic application of Montgomery exponentiation mexpkm_l */ +/* if modulus is even, else mexpk_l is used */ +/* Syntax: int mexp_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l); */ +/* Input: bas_l (Base), exp_l (Exponent), m_l (Modulus) */ +/* Output: p_l (Remainder of bas_l^exp_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexp_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l) +{ + if (ISODD_L (m_l)) /* Montgomery exponentiation possible */ + { + return mexpkm_l (bas_l, exp_l, p_l, m_l); + } + else + { + return mexpk_l (bas_l, exp_l, p_l, m_l); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Modular Exponentiation */ +/* with representation of exponent to base 2^5 */ +/* Syntax: int mexp5_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l); */ +/* Input: bas_l (Base), exp_l (Exponent), m_l (Modulus) */ +/* Output: p_l (Remainder of bas_l^exp_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexp5_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l) +{ + CLINT a_l; + clint e_l[CLINTMAXSHORT + 1]; + CLINTD acc_l; + CLINT a2_l, a3_l, a5_l, a7_l, a9_l, a11_l, a13_l, a15_l, a17_l, a19_l, + a21_l, a23_l, a25_l, a27_l, a29_l, a31_l; + clint *aptr_l[32]; + int i, noofdigits, s, t; + unsigned int bit, digit, f5, word; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (p_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + cpy_l (a_l, bas_l); + cpy_l (e_l, exp_l); + + if (DIGITS_L (e_l) == 0) + { + SETONE_L (p_l); + + PURGEVARS_L ((1, sizeof (a_l), a_l)); + ISPURGED_L ((1, sizeof (a_l), a_l)); + + return E_CLINT_OK; + } + + if (DIGITS_L (a_l) == 0) + { + SETZERO_L (p_l); + + PURGEVARS_L ((1, sizeof (e_l), e_l)); + ISPURGED_L ((1, sizeof (e_l), e_l)); + + return E_CLINT_OK; + } + + mod_l (a_l, m_l, a_l); + + aptr_l[1] = a_l; + aptr_l[3] = a3_l; + aptr_l[5] = a5_l; + aptr_l[7] = a7_l; + aptr_l[9] = a9_l; + aptr_l[11] = a11_l; + aptr_l[13] = a13_l; + aptr_l[15] = a15_l; + aptr_l[17] = a17_l; + aptr_l[19] = a19_l; + aptr_l[21] = a21_l; + aptr_l[23] = a23_l; + aptr_l[25] = a25_l; + aptr_l[27] = a27_l; + aptr_l[29] = a29_l; + aptr_l[31] = a31_l; + + msqr_l (a_l, a2_l, m_l); + for (i = 3; i <= 31; i += 2) + { + mmul_l (a2_l, aptr_l[i - 2], aptr_l[i], m_l); + } + + *(MSDPTR_L (e_l) + 1) = 0; /* Zero follows most significant digit of e_l */ + + noofdigits = (ld_l (e_l) - 1)/5; /*lint !e713 */ + f5 = (unsigned int)(noofdigits * 5); /* >>loss of precision<< not critical */ + + word = (unsigned int)(f5 >> LDBITPERDGT); /* f5 div 16 */ + bit = (unsigned int)(f5 & (BITPERDGT - 1U)); /* f5 mod 16 */ + + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] << BITPERDGT)) >> bit) & 0x1f; + + if (digit != 0) /* 5-digit > 0 */ + { + cpy_l (acc_l, aptr_l[oddtab[digit]]); + + t = twotab[digit]; + for (; t > 0; t--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + else + { + SETONE_L (acc_l); + } + + for (noofdigits--, f5 -= 5; noofdigits >= 0; noofdigits--, f5 -= 5) + { + word = (unsigned int)f5 >> LDBITPERDGT; /* f5 div 16 */ + bit = f5 & (BITPERDGT - 1UL); /* f5 mod 16 */ + + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] << BITPERDGT)) >> bit) & 0x1f; + + if (digit != 0) /* 5-digit > 0 */ + { + t = twotab[digit]; + + for (s = 5 - t; s > 0; s--) + { + msqr_l (acc_l, acc_l, m_l); + } + + mmul_l (acc_l, aptr_l[oddtab[digit]], acc_l, m_l); + + for (; t > 0; t--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + else /* 5-digit > 0 */ + { + for (s = 5; s > 0; s--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + } + + cpy_l (p_l, acc_l); + + /* Purging of variables */ + PURGEVARS_L ((8, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (f5), &f5, + sizeof (word), &word)); + PURGEVARS_L ((19, sizeof (acc_l), acc_l, + sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (a2_l), a2_l, + sizeof (a3_l), a3_l, + sizeof (a5_l), a5_l, + sizeof (a7_l), a7_l, + sizeof (a9_l), a9_l, + sizeof (a11_l), a11_l, + sizeof (a13_l), a13_l, + sizeof (a15_l), a15_l, + sizeof (a17_l), a17_l, + sizeof (a19_l), a19_l, + sizeof (a21_l), a21_l, + sizeof (a23_l), a23_l, + sizeof (a25_l), a25_l, + sizeof (a27_l), a27_l, + sizeof (a29_l), a29_l, + sizeof (a31_l), a31_l)); + + ISPURGED_L ((8, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (f5), &f5, + sizeof (word), &word)); +ISPURGED_L ((19, sizeof (acc_l), acc_l, + sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (a2_l), a2_l, + sizeof (a3_l), a3_l, + sizeof (a5_l), a5_l, + sizeof (a7_l), a7_l, + sizeof (a9_l), a9_l, + sizeof (a11_l), a11_l, + sizeof (a13_l), a13_l, + sizeof (a15_l), a15_l, + sizeof (a17_l), a17_l, + sizeof (a19_l), a19_l, + sizeof (a21_l), a21_l, + sizeof (a23_l), a23_l, + sizeof (a25_l), a25_l, + sizeof (a27_l), a27_l, + sizeof (a29_l), a29_l, + sizeof (a31_l), a31_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular Exponentiation */ +/* with representation of exponent to base 2^k */ +/* Syntax: int mexpk_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l); */ +/* Input: bas_l (Base), exp_l (Exponent), m_l (Modulus) */ +/* Output: p_l (Remainder of bas_l^exp_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* E_CLINT_MAL: Error with malloc() */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexpk_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l) +{ + CLINT a_l, a2_l; + clint e_l[CLINTMAXSHORT + 1]; + CLINTD acc_l; + clint **aptr_l, *ptr_l = NULL; + int noofdigits, s, t, i; + unsigned int k, lge, bit, digit, fk, word, pow2k, k_mask; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (p_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + cpy_l (a_l, bas_l); + cpy_l (e_l, exp_l); + + if (DIGITS_L (e_l) == 0) + { + SETONE_L (p_l); + + PURGEVARS_L ((1, sizeof (a_l), a_l)); + ISPURGED_L ((1, sizeof (a_l), a_l)); + + return E_CLINT_OK; + } + + if (DIGITS_L (a_l) == 0) + { + SETZERO_L (p_l); + + PURGEVARS_L ((1, sizeof (e_l), e_l)); + ISPURGED_L ((1, sizeof (e_l), e_l)); + + return E_CLINT_OK; + } + + lge = ld_l (e_l); + + k = 8; + + while (k > 1 && ((k - 1) * (k << ((k - 1) << 1)) / ((1 << k) - k - 1)) >= lge - 1) + { + --k; + } + + pow2k = 1U << k; /*lint !e644*/ + +#if defined FLINT_DEBUG && defined FLINT_VERBOSE + printf ("ld(e) = %d, k = %ld, pow2k = %u\n", lge, k, pow2k); +#endif + + k_mask = pow2k - 1U; + + if ((aptr_l = (clint **)malloc (sizeof (clint *) * pow2k)) == NULL) + { + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (e_l), e_l)); + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (e_l), e_l)); + return E_CLINT_MAL; + } + + mod_l (a_l, m_l, a_l); + aptr_l[1] = a_l; + + if (k > 1) + { + if ((ptr_l = (clint *)malloc (sizeof (CLINT) * ((pow2k >> 1) - 1))) == NULL) + { + free (aptr_l); + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (e_l), e_l)); + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (e_l), e_l)); + return E_CLINT_MAL; + } + aptr_l[2] = a2_l; + msqr_l (a_l, aptr_l[2], m_l); + + for (aptr_l[3] = ptr_l, i = 5; i < (int)pow2k; i += 2) + { + aptr_l[i] = aptr_l[i - 2] + CLINTMAXSHORT; /*lint !e661 !e662 */ + } + + for (i = 3; i < (int)pow2k; i += 2) + { + mmul_l (aptr_l[2], aptr_l[i - 2], aptr_l[i], m_l); + } + } + + *(MSDPTR_L (e_l) + 1) = 0; /* 0 follows most significant digit of e_l */ + + noofdigits = (lge - 1)/k; /*lint !e713 */ + fk = noofdigits * k; /* >>loss of precision<< not critical */ + + word = (unsigned int)(fk >> LDBITPERDGT); /* fk div 16 */ + bit = (unsigned int)(fk & (BITPERDGT - 1UL)); /* fk mod 16 */ + + switch (k) + { + case 1: + case 2: + case 4: + case 8: + digit = ((ULONG)(e_l[word + 1]) >> bit) & k_mask; + break; + default: + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] + << BITPERDGT)) >> bit) & k_mask; + } + + if (digit != 0) /* k-digit > 0 */ + { + cpy_l (acc_l, aptr_l[oddtab[digit]]); + + t = twotab[digit]; + for (; t > 0; t--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + else + { + SETONE_L (acc_l); + } + + for (noofdigits--, fk -= k; noofdigits >= 0; noofdigits--, fk -= k) + { + word = (unsigned int)(fk >> LDBITPERDGT); /* fk div 16 */ + bit = (unsigned int)(fk & (BITPERDGT - 1UL)); /* fk mod 16 */ + + switch (k) + { + case 1: + case 2: + case 4: + case 8: + digit = ((ULONG)(e_l[word + 1]) >> bit) & k_mask; + break; + default: + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] + << BITPERDGT)) >> bit) & k_mask; + } + + if (digit != 0) /* k-digit > 0 */ + { + t = twotab[digit]; + + for (s = (int)(k - t); s > 0; s--) + { + msqr_l (acc_l, acc_l, m_l); + } + + mmul_l (acc_l, aptr_l[oddtab[digit]], acc_l, m_l); + + for (; t > 0; t--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + else /* k-digit == 0 */ + { + for (s = (int)k; s > 0; s--) + { + msqr_l (acc_l, acc_l, m_l); + } + } + } + + cpy_l (p_l, acc_l); + + free (aptr_l); + if (ptr_l != NULL) + { + +#ifdef FLINT_SECURE + memset (ptr_l, 0, sizeof (CLINT) * ((pow2k >> 1) - 1)); /*lint !e668*/ +#endif + + free (ptr_l); /*lint !e644 */ + } + + /* Purging of variables */ + PURGEVARS_L ((12, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (k), &k, + sizeof (lge), &lge, + sizeof (fk), &fk, + sizeof (word), &word, + sizeof (pow2k), &pow2k, + sizeof (k_mask), &k_mask)); + PURGEVARS_L ((4, sizeof (a_l), a_l, + sizeof (a2_l), a2_l, + sizeof (e_l), e_l, + sizeof (acc_l), acc_l)); + + ISPURGED_L ((16, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (k), &k, + sizeof (lge), &lge, + sizeof (fk), &fk, + sizeof (word), &word, + sizeof (pow2k), &pow2k, + sizeof (k_mask), &k_mask, + sizeof (a_l), a_l, + sizeof (a2_l), a2_l, + sizeof (e_l), e_l, + sizeof (acc_l), acc_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular Exponentiation */ +/* with representation of exponent to base 2^5 */ +/* for odd moduli, with Montgomery reduction */ +/* Syntax: int mexp5m_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l); */ +/* Input: bas_l (Base), exp_l (Exponent), m_l (Modulus) */ +/* Output: p_l (Remainder of bas_l^exp_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* E_CLINT_MOD: Modulus even */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexp5m_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l) +{ + CLINT a_l, md_l; + clint e_l[CLINTMAXSHORT + 1]; + clint r_l[CLINTMAXSHORT + 1]; + CLINTD acc_l; + CLINT a2_l, a3_l, a5_l, a7_l, a9_l, a11_l, a13_l, a15_l, a17_l, a19_l, + a21_l, a23_l, a25_l, a27_l, a29_l, a31_l; + clint *aptr_l[32]; + int i, noofdigits, s, t; + unsigned int bit, digit, f5, word; + USHORT logB_r, mprime; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (ISEVEN_L (m_l)) + { + return E_CLINT_MOD; /* Modulus is even */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (p_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + cpy_l (a_l, bas_l); + cpy_l (e_l, exp_l); + cpy_l (md_l, m_l); + + if (DIGITS_L (e_l) == 0) + { + SETONE_L (p_l); + + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (md_l), md_l)); + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (md_l), md_l)); + return E_CLINT_OK; + } + + if (DIGITS_L (a_l) == 0) + { + SETZERO_L (p_l); + + PURGEVARS_L ((2, sizeof (e_l), e_l, + sizeof (md_l), md_l)); + ISPURGED_L ((2, sizeof (e_l), e_l, + sizeof (md_l), md_l)); + return E_CLINT_OK; + } + + aptr_l[1] = a_l; + aptr_l[3] = a3_l; + aptr_l[5] = a5_l; + aptr_l[7] = a7_l; + aptr_l[9] = a9_l; + aptr_l[11] = a11_l; + aptr_l[13] = a13_l; + aptr_l[15] = a15_l; + aptr_l[17] = a17_l; + aptr_l[19] = a19_l; + aptr_l[21] = a21_l; + aptr_l[23] = a23_l; + aptr_l[25] = a25_l; + aptr_l[27] = a27_l; + aptr_l[29] = a29_l; + aptr_l[31] = a31_l; + + SETZERO_L (r_l); + logB_r = DIGITS_L (md_l); + setbit (r_l, logB_r << LDBITPERDGT); + if (DIGITS_L (r_l) > CLINTMAXDIGIT) + { + mod_l (r_l, md_l, r_l); + } + + mprime = invmon_l (md_l); + + mmul_l (a_l, r_l, a_l, md_l); + + sqrmon_l (a_l, md_l, mprime, logB_r, a2_l); + + for (i = 3; i <= 31; i += 2) + { + mulmon_l (a2_l, aptr_l[i - 2], md_l, mprime, logB_r, aptr_l[i]); + } + + *(MSDPTR_L (e_l) + 1) = 0; /* 0 follows most significant digit of e_l */ + + noofdigits = (ld_l (e_l) - 1)/5; /*lint !e713 */ + f5 = (unsigned int)(noofdigits * 5); /* >>loss of precision<< not critical */ + + word = (unsigned int)(f5 >> LDBITPERDGT); /* f5 div 16 */ + bit = (unsigned int)(f5 & (BITPERDGT - 1UL)); /* f5 mod 16 */ + + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] << BITPERDGT)) >> bit) & 0x1f; + + if (digit != 0) /* 5-digit > 0 */ + { + cpy_l (acc_l, aptr_l[oddtab[digit]]); + + t = twotab[digit]; + for (; t > 0; t--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + else + { + mod_l (r_l, md_l, acc_l); + } + + for (noofdigits--, f5 -= 5; noofdigits >= 0; noofdigits--, f5 -= 5) + { + word = (unsigned int)f5 >> LDBITPERDGT; /* f5 div 16 */ + bit = (unsigned int)f5 & (BITPERDGT - 1UL); /* f5 mod 16 */ + + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] << BITPERDGT)) >> bit) & 0x1f; + + if (digit != 0) /* 5-digit == 0 */ + { + t = twotab[digit]; + for (s = 5 - t; s > 0; s--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + + mulmon_l (acc_l, aptr_l[oddtab[digit]], md_l, mprime, logB_r, acc_l); + + for (; t > 0; t--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + else /* 5-digit == 0 */ + { + for (s = 5; s > 0; s--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + } + + mulmon_l (acc_l, one_l, md_l, mprime, logB_r, p_l); + + /* Purging of variables */ + PURGEVARS_L ((8, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (f5), &f5, + sizeof (word), &word)); + PURGEVARS_L ((21, sizeof (acc_l), acc_l, + sizeof (a_l), a_l, + sizeof (md_l), md_l, + sizeof (e_l), e_l, + sizeof (r_l), r_l, + sizeof (a2_l), a2_l, + sizeof (a3_l), a3_l, + sizeof (a5_l), a5_l, + sizeof (a7_l), a7_l, + sizeof (a9_l), a9_l, + sizeof (a11_l), a11_l, + sizeof (a13_l), a13_l, + sizeof (a15_l), a15_l, + sizeof (a17_l), a17_l, + sizeof (a19_l), a19_l, + sizeof (a21_l), a21_l, + sizeof (a23_l), a23_l, + sizeof (a25_l), a25_l, + sizeof (a27_l), a27_l, + sizeof (a29_l), a29_l, + sizeof (a31_l), a31_l)); + + ISPURGED_L ((8, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (f5), &f5, + sizeof (word), &word)); + ISPURGED_L ((21, sizeof (acc_l), acc_l, + sizeof (a_l), a_l, + sizeof (md_l), md_l, + sizeof (e_l), e_l, + sizeof (r_l), r_l, + sizeof (a2_l), a2_l, + sizeof (a3_l), a3_l, + sizeof (a5_l), a5_l, + sizeof (a7_l), a7_l, + sizeof (a9_l), a9_l, + sizeof (a11_l), a11_l, + sizeof (a13_l), a13_l, + sizeof (a15_l), a15_l, + sizeof (a17_l), a17_l, + sizeof (a19_l), a19_l, + sizeof (a21_l), a21_l, + sizeof (a23_l), a23_l, + sizeof (a25_l), a25_l, + sizeof (a27_l), a27_l, + sizeof (a29_l), a29_l, + sizeof (a31_l), a31_l)); + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular Exponentiation for odd moduli (Montgomery reduction) */ +/* Syntax: int mexpkm_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l); */ +/* Input: bas_l (Base), exp_l (Exponent), m_l (Modulus ) */ +/* Output: p_l (Remainder of bas_l ^ exp_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* E_CLINT_MAL: Error with malloc() */ +/* E_CLINT_MOD: Modulus even */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexpkm_l (CLINT bas_l, CLINT exp_l, CLINT p_l, CLINT m_l) +{ + CLINT a_l, a2_l, md_l; + clint e_l[CLINTMAXSHORT + 1]; + clint r_l[CLINTMAXSHORT + 1]; + CLINTD acc_l; + clint **aptr_l, *ptr_l = NULL; + int noofdigits, s, t, i; + unsigned int k, lge, bit, digit, fk, word, pow2k, k_mask; + USHORT logB_r, mprime; + +#ifdef FLINT_DEBUG + int sign_rmin1, sign_mprime; + CLINTD d_l, mprime_l, rmin1_l; +#endif + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (ISEVEN_L (m_l)) + { + return E_CLINT_MOD; /* Modulus even */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (p_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + cpy_l (a_l, bas_l); + cpy_l (e_l, exp_l); + cpy_l (md_l, m_l); + + if (DIGITS_L (e_l) == 0) + { + SETONE_L (p_l); + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (md_l), md_l)); + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (md_l), md_l)); + return E_CLINT_OK; + } + + if (DIGITS_L (a_l) == 0) + { + SETZERO_L (p_l); + + PURGEVARS_L ((2, sizeof (e_l), e_l, + sizeof (md_l), md_l)); + ISPURGED_L ((2, sizeof (e_l), e_l, + sizeof (md_l), md_l)); + return E_CLINT_OK; + } + + lge = ld_l (e_l); + + k = 8; + + while (k > 1 && ((k - 1) * (k << ((k - 1) << 1)) / ((1 << k) - k - 1)) >= lge - 1) + { + --k; + } + + pow2k = 1U << k; /*lint !e644 */ + +#if defined FLINT_DEBUG && defined FLINT_VERBOSE + printf ("ld(e) = %d, k = %ld, pow2k = %u\n", lge, k, pow2k); +#endif + + k_mask = pow2k - 1; + + if ((aptr_l = (clint **)malloc (sizeof (clint *) * pow2k)) == NULL) + { + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (md_l), md_l)); + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (md_l), md_l)); + return E_CLINT_MAL; + } + + aptr_l[1] = a_l; + SETZERO_L (r_l); + logB_r = DIGITS_L (md_l); + setbit (r_l, logB_r << LDBITPERDGT); + if (DIGITS_L (r_l) > CLINTMAXDIGIT) + { + mod_l (r_l, md_l, r_l); + } + + mprime = invmon_l (md_l); + +#ifdef FLINT_DEBUG + if (logB_r < CLINTMAXDIGIT) + { + xgcd_l (r_l, md_l, d_l, rmin1_l, &sign_rmin1, mprime_l, &sign_mprime); + if (sign_mprime > 0) + { + msub_l (r_l, mprime_l, mprime_l, r_l); + } + + Assert(EQONE_L (d_l)); + Assert(*LSDPTR_L (mprime_l) == mprime); + } +#endif /* FLINT_DEBUG */ + + mmul_l (a_l, r_l, a_l, md_l); + + if (k > 1) + { + if ((ptr_l = (clint *)malloc (sizeof (CLINT) * ((pow2k >> 1) - 1))) == NULL) + { + free (aptr_l); + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (md_l), md_l)); + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (e_l), e_l, + sizeof (md_l), md_l)); + return E_CLINT_MAL; + } + + aptr_l[2] = a2_l; + sqrmon_l (a_l, md_l, mprime, logB_r, aptr_l[2]); + + for (aptr_l[3] = ptr_l, i = 5; i < (int)pow2k; i += 2) + { + aptr_l[i] = aptr_l[i - 2] + CLINTMAXSHORT; /*lint !e661 !e662 */ + } + + for (i = 3; i < (int)pow2k; i += 2) + { + mulmon_l (aptr_l[2], aptr_l[i - 2], md_l, mprime, logB_r, aptr_l[i]); + } + } + + *(MSDPTR_L (e_l) + 1) = 0; /* 0 follows most significant digit of e_l */ + + noofdigits = (lge - 1)/k; /*lint !e713 */ + fk = noofdigits * k; /* >>loss of precision<< not critical */ + + word = (unsigned int)(fk >> LDBITPERDGT); /* fk div 16 */ + bit = (unsigned int)(fk & (BITPERDGT - 1UL)); /* fk mod 16 */ + + switch (k) + { + case 1: + case 2: + case 4: + case 8: + digit = ((ULONG)(e_l[word + 1]) >> bit) & k_mask; + break; + default: + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] + << BITPERDGT)) >> bit) & k_mask; + } + + if (digit != 0) /* k-digit > 0 */ + { + cpy_l (acc_l, aptr_l[oddtab[digit]]); + + t = twotab[digit]; + for (; t > 0; t--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + else + { + mod_l (r_l, md_l, acc_l); + } + + for (noofdigits--, fk -= k; noofdigits >= 0; noofdigits--, fk -= k) + { + word = (unsigned int)fk >> LDBITPERDGT; /* fk div 16 */ + bit = (unsigned int)fk & (BITPERDGT - 1UL); /* fk mod 16 */ + + switch (k) + { + case 1: + case 2: + case 4: + case 8: + digit = ((ULONG)(e_l[word + 1]) >> bit) & k_mask; + break; + default: + digit = ((ULONG)(e_l[word + 1] | ((ULONG)e_l[word + 2] + << BITPERDGT)) >> bit) & k_mask; + } + + if (digit != 0) /* k-digit > 0 */ + { + t = twotab[digit]; + + for (s = (int)(k - t); s > 0; s--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + + mulmon_l (acc_l, aptr_l[oddtab[digit]], md_l, mprime, logB_r, acc_l); + + for (; t > 0; t--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + else /* k-digit == 0 */ + { + for (s = (int)k; s > 0; s--) + { + sqrmon_l (acc_l, md_l, mprime, logB_r, acc_l); + } + } + } + + mulmon_l (acc_l, one_l, md_l, mprime, logB_r, p_l); + +#ifdef FLINT_SECURE + memset (aptr_l, 0, sizeof (clint *) * pow2k); +#endif + + free (aptr_l); + if (ptr_l != NULL) + { + +#ifdef FLINT_SECURE + memset (ptr_l, 0, sizeof (CLINT) * ((pow2k >> 1) - 1)); /*lint !e668*/ +#endif + + free (ptr_l); /*lint !e644 */ + } + + /* Purging of variables */ + PURGEVARS_L ((14, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (k), &k, + sizeof (lge), &lge, + sizeof (fk), &fk, + sizeof (word), &word, + sizeof (pow2k), &pow2k, + sizeof (k_mask), &k_mask, + sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime)); + PURGEVARS_L ((6, sizeof (a_l), a_l, + sizeof (a2_l), a2_l, + sizeof (e_l), e_l, + sizeof (r_l), r_l, + sizeof (acc_l), acc_l, + sizeof (md_l), md_l)); + + ISPURGED_L ((20, sizeof (i), &i, + sizeof (noofdigits), &noofdigits, + sizeof (s), &s, + sizeof (t), &t, + sizeof (bit), &bit, + sizeof (digit), &digit, + sizeof (k), &k, + sizeof (lge), &lge, + sizeof (fk), &fk, + sizeof (word), &word, + sizeof (pow2k), &pow2k, + sizeof (k_mask), &k_mask, + sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime, + sizeof (a_l), a_l, + sizeof (a2_l), a2_l, + sizeof (e_l), e_l, + sizeof (r_l), r_l, + sizeof (acc_l), acc_l, + sizeof (md_l), md_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation with exponent 2^k */ +/* Syntax: int mexp2_l (CLINT a_l, USHORT k, CLINT p_l, CLINT m_l); */ +/* Input: a_l (Basis), k (Exponent of exponent 2^k) */ +/* m_l (Modulus) */ +/* Output: p_l (Remainder of a_l ^(2^k) mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +mexp2_l (CLINT a_l, USHORT k, CLINT p_l, CLINT m_l) +{ + CLINT tmp_l; + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (p_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + if (k > 0) + { + cpy_l (tmp_l, a_l); + while (k-- > 0) + { + msqr_l (tmp_l, tmp_l, m_l); + } + cpy_l (p_l, tmp_l); + } + else + { + mod_l (a_l, m_l, p_l); + } + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Arithmetic interface with CLINT and USHORT types (mixed functions) */ +/* */ +/* Functions: */ +/* wmexp_l, wmexpm_l */ +/* */ +/* The first argument is of type USHORT */ +/* */ +/* Functions: */ +/* uadd_l, umadd_l, usub_l, umsub_l, umul_l, ummul_l, udiv_l, umod_l */ +/* umexp_l, umexpm_l */ +/* */ +/* The second argument is of type USHORT */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Function: Addition of CLINT and USHORT type */ +/* Syntax: int uadd_l (CLINT a_l, USHORT b, CLINT s_l); */ +/* Input: a_l, b (Operands) */ +/* Output: s_l (Sum) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +uadd_l (CLINT a_l, USHORT b, CLINT s_l) +{ + int err; + CLINT tmp_l; + + u2clint_l (tmp_l, b); + err = add_l (a_l, tmp_l, s_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular addition of CLINT and USHORT type */ +/* Syntax: int umadd_l (CLINT a_l, USHORT b, CLINT s_l, CLINT m_l); */ +/* Input: a_l, b, m_l (Operands) */ +/* Output: s_l (Remainder of a_l + b mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +umadd_l (CLINT a_l, USHORT b, CLINT s_l, CLINT m_l) +{ + int err; + CLINT tmp_l; + + u2clint_l (tmp_l, b); + err = madd_l (a_l, tmp_l, s_l, m_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Subtraction of CLINT and USHORT type */ +/* Syntax: int usub_l (CLINT a_l, USHORT b, CLINT d_l); */ +/* Input: a_l, b (Operands) */ +/* Output: d_l (Difference) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_UFL: Underflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +usub_l (CLINT a_l, USHORT b, CLINT d_l) +{ + int err; + CLINT tmp_l; + + u2clint_l (tmp_l, b); + err = sub_l (a_l, tmp_l, d_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular subtraction of CLINT and USHORT type */ +/* Syntax: int umsub_l (CLINT a_l, USHORT b, CLINT d_l, CLINT m_l); */ +/* Input: a_l, b, m_l (Operands) */ +/* Output: d_l (Remainder of a_l - b mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +umsub_l (CLINT a_l, USHORT b, CLINT d_l, CLINT m_l) +{ + int err; + CLINT tmp_l; + + u2clint_l (tmp_l, b); + err = msub_l (a_l, tmp_l, d_l, m_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication of CLINT and USHORT value */ +/* Syntax: int umul_l (CLINT aa_l, USHORT b, CLINT pp_l); */ +/* Input: aa_l, b (Factors) */ +/* Output: pp_l (Product) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +umul_l (CLINT aa_l, USHORT b, CLINT pp_l) +{ + CLINT a_l; + clint p_l[CLINTMAXSHORT + 1]; + int OFL = 0; + + cpy_l (a_l, aa_l); + + umul (a_l, b, p_l); + + if (DIGITS_L (p_l) > (USHORT)CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (p_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (pp_l, p_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (a_l), a_l, + sizeof (p_l), p_l)); + + ISPURGED_L ((2, sizeof (a_l), a_l, + sizeof (p_l), p_l)); + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular multiplication of CLINT and USHORT value */ +/* Syntax: int ummul_l (CLINT a_l, USHORT b, CLINT c_l, CLINT m_l); */ +/* Input: a_l, b, m_l (Operands) */ +/* Output: c_l (Remainder a_l * b mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +ummul_l (CLINT a_l, USHORT b, CLINT c_l, CLINT m_l) +{ + CLINTD tmp_l; + int err; + + umul (a_l, b, tmp_l); + err = mod_l (tmp_l, m_l, c_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (tmp_l), tmp_l)); + ISPURGED_L ((1, sizeof (tmp_l), tmp_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation with USHORT base */ +/* Syntax: int wmexp_l (USHORT bas, CLINT e_l, CLINT rem_l, CLINT m_l); */ +/* Input: bas (Base), e_l (Exponent), m_l (Modulus) */ +/* Output: rem_l (Remainder bas^e_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +wmexp_l (USHORT bas, CLINT e_l, CLINT rem_l, CLINT m_l) +{ + CLINT p_l, z_l; + USHORT k, b, w; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (rem_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + if (EQZ_L (e_l)) + { + SETONE_L (rem_l); + return E_CLINT_OK; + } + + if (0 == bas) + { + SETZERO_L (rem_l); + return E_CLINT_OK; + } + + cpy_l (z_l, e_l); + SETONE_L (p_l); + + b = 1 << ((ld_l (z_l) - 1) & (BITPERDGT - 1UL)); + w = *MSDPTR_L (z_l); + + for (; b > 0; b >>= 1) + { + msqr_l (p_l, p_l, m_l); + if ((w & b) > 0) + { + ummul_l (p_l, bas, p_l, m_l); + } + } + + for (k = DIGITS_L (z_l) - 1; k > 0; k--) + { + w = z_l[k]; + for (b = BASEDIV2; b > 0; b >>= 1) + { + msqr_l (p_l, p_l, m_l); + if ((w & b) > 0) + { + ummul_l (p_l, bas, p_l, m_l); + } + } + } + + cpy_l (rem_l, p_l); + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (b), &b, + sizeof (w), &w, + sizeof (p_l), p_l, + sizeof (z_l), z_l)); + + ISPURGED_L ((4, sizeof (b), &b, + sizeof (w), &w, + sizeof (p_l), p_l, + sizeof (z_l), z_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation with USHORT base and odd modulus */ +/* (Montgomery exponentiation) */ +/* Syntax: int wmexpm_l (USHORT bas, CLINT e_l, CLINT rem_l, CLINT m_l); */ +/* Input: bas (Base), e_l (Exponent), m_l (Modulus) */ +/* Output: rem_l (Remainder of bas^e_l mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_MOD: Modulus even */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +wmexpm_l (USHORT bas, CLINT e_l, CLINT rem_l, CLINT m_l) +{ + CLINT p_l, z_l, md_l; + clint r_l[CLINTMAXSHORT + 1]; + USHORT k, b, w, logB_r, mprime; + +#ifdef FLINT_DEBUG + int sign_rmin1, sign_mprime; + CLINTD d_l, mprime_l, rmin1_l; +#endif + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (ISEVEN_L (m_l)) + { + return E_CLINT_MOD; /* Modulus not odd */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (rem_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + if (EQZ_L (e_l)) + { + SETONE_L (rem_l); + return E_CLINT_OK; + } + + if (0 == bas) + { + SETZERO_L (rem_l); + return E_CLINT_OK; + } + + cpy_l (md_l, m_l); + cpy_l (z_l, e_l); + + SETZERO_L (r_l); + logB_r = DIGITS_L (md_l); + setbit (r_l, logB_r << LDBITPERDGT); + + mprime = invmon_l (md_l); + +#ifdef FLINT_DEBUG + if (logB_r < CLINTMAXDIGIT) + { + xgcd_l (r_l, md_l, d_l, rmin1_l, &sign_rmin1, mprime_l, &sign_mprime); + if (sign_mprime > 0) + { + msub_l (r_l, mprime_l, mprime_l, r_l); + } + + Assert(EQONE_L (d_l)); + Assert(*LSDPTR_L (mprime_l) == mprime); + } +#endif /* FLINT_DEBUG */ + + mod_l (r_l, md_l, p_l); + + b = 1 << ((ld_l (z_l) - 1) & (BITPERDGT - 1UL)); + w = *MSDPTR_L (z_l); + + for (; b > 0; b >>= 1) + { + sqrmon_l (p_l, md_l, mprime, logB_r, p_l); + + if ((w & b) > 0) + { + ummul_l (p_l, bas, p_l, md_l); + } + } + + for (k = DIGITS_L (z_l) - 1; k > 0; k--) + { + w = z_l[k]; + for (b = BASEDIV2; b > 0; b >>= 1) + { + sqrmon_l (p_l, md_l, mprime, logB_r, p_l); + if ((w & b) > 0) + { + ummul_l (p_l, bas, p_l, md_l); + } + } + } + + mulmon_l (p_l, one_l, md_l, mprime, logB_r, rem_l); + + /* Purging of variables */ + PURGEVARS_L ((8, sizeof (b), &b, + sizeof (w), &w, + sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime, + sizeof (p_l), p_l, + sizeof (z_l), z_l, + sizeof (r_l), r_l, + sizeof (md_l), md_l)); + + ISPURGED_L ((8, sizeof (b), &b, + sizeof (w), &w, + sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime, + sizeof (p_l), p_l, + sizeof (z_l), z_l, + sizeof (r_l), r_l, + sizeof (md_l), md_l)); + + return E_CLINT_OK; +} + + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation with USHORT exponent */ +/* Syntax: int umexp_l (CLINT bas_l, USHORT e, CLINT rem_l, CLINT m_l); */ +/* Input: bas_l (Base), e (Exponent), m_l (Modulus) */ +/* Output: rem_l (Remainder of bas_l^e mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +umexp_l (CLINT bas_l, USHORT e, CLINT rem_l, CLINT m_l) +{ + CLINT tmp_l, tmpbas_l; + USHORT k = BASEDIV2; + int err = E_CLINT_OK; + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (rem_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + if (e == 0) + { + SETONE_L (rem_l); + return E_CLINT_OK; + } + + if (EQZ_L (bas_l)) + { + SETZERO_L (rem_l); + return E_CLINT_OK; + } + + mod_l (bas_l, m_l, tmp_l); + cpy_l (tmpbas_l, tmp_l); + while ((e & k) == 0) + { + k >>= 1; + } + + k >>= 1; + + while (k != 0) + { + msqr_l (tmp_l, tmp_l, m_l); + if (e & k) + { + mmul_l (tmp_l, tmpbas_l, tmp_l, m_l); + } + k >>= 1; + } + + cpy_l (rem_l, tmp_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (tmp_l), tmp_l, + sizeof (tmpbas_l), tmpbas_l)); + + ISPURGED_L ((2, sizeof (tmp_l), tmp_l, + sizeof (tmpbas_l), tmpbas_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Modular exponentiation with USHORT exponent (Montgomery) */ +/* Syntax: int umexpm_l (CLINT bas_l, USHORT e, CLINT rem_l, CLINT m_l); */ +/* Input: bas_l (Base), e (Exponent), m_l (Modulus) */ +/* Output: rem_l (Remainder of bas_l^e mod m_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +umexpm_l (CLINT bas_l, USHORT e, CLINT rem_l, CLINT m_l) +{ + CLINT a_l, p_l, md_l; + clint r_l[CLINTMAXSHORT + 1]; + USHORT k, logB_r, mprime; + int err = E_CLINT_OK; + +#ifdef FLINT_DEBUG + int sign_rmin1, sign_mprime; + CLINTD d_l, mprime_l, rmin1_l; +#endif + + if (EQZ_L (m_l)) + { + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (ISEVEN_L (m_l)) + { + return E_CLINT_MOD; /* Modulus not odd */ + } + + if (EQONE_L (m_l)) + { + SETZERO_L (rem_l); /* Modulus = 1 ==> Remainder = 0 */ + return E_CLINT_OK; + } + + if (e == 0) + { + SETONE_L (rem_l); + return E_CLINT_OK; + } + + if (EQZ_L (bas_l)) + { + cpy_l (rem_l, bas_l); + return E_CLINT_OK; + } + + if (DIGITS_L (bas_l) > (USHORT)CLINTMAXDIGIT) + { + err = E_CLINT_OFL; + } + + cpy_l (md_l, m_l); + + SETZERO_L (r_l); + logB_r = DIGITS_L (md_l); + setbit (r_l, logB_r << LDBITPERDGT); + if (DIGITS_L (r_l) > CLINTMAXDIGIT) + { + mod_l (r_l, md_l, r_l); + } + + mprime = invmon_l (md_l); + +#ifdef FLINT_DEBUG + if (logB_r < CLINTMAXDIGIT) + { + xgcd_l (r_l, md_l, d_l, rmin1_l, &sign_rmin1, mprime_l, &sign_mprime); + if (sign_mprime > 0) + { + msub_l (r_l, mprime_l, mprime_l, r_l); + } + + Assert(EQONE_L (d_l)); + Assert(*LSDPTR_L (mprime_l) == mprime); + } +#endif /* FLINT_DEBUG */ + + mmul_l (bas_l, r_l, p_l, md_l); + cpy_l (a_l, p_l); + + k = BASEDIV2; + + while ((e & k) == 0) + { + k >>= 1; + } + + k >>= 1; + + while (k != 0) + { + sqrmon_l (p_l, md_l, mprime, logB_r, p_l); + + if (e & k) + { + mulmon_l (p_l, a_l, md_l, mprime, logB_r, p_l); + } + + k >>= 1; + } + + mulmon_l (p_l, one_l, md_l, mprime, logB_r, rem_l); + + /* Purging of variables */ + PURGEVARS_L ((5, sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime, + sizeof (a_l), a_l, + sizeof (p_l), p_l, + sizeof (md_l), md_l)); + + ISPURGED_L ((5, sizeof (logB_r), &logB_r, + sizeof (mprime), &mprime, + sizeof (a_l), a_l, + sizeof (p_l), p_l, + sizeof (md_l), md_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Division with USHORT divisor */ +/* Syntax: int udiv_l (CLINT dv_l, USHORT uds, CLINT q_l, CLINT r_l); */ +/* Input: dv_l (Dividend), uds (Divisor) */ +/* Output: q_l (Quotient), r_l (Remainder) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_DBZ: Division by Zero */ +/* */ +/******************************************************************************/ +int __FLINT_API +udiv_l (CLINT dv_l, USHORT uds, CLINT q_l, CLINT r_l) +{ + register clint *aptr_l; + CLINTD a_l; /* Allow for dividend of double length */ + clint *qptr_l, *msdptra_l; + ULONG rhat; + USHORT rv; + + cpy_l (a_l, dv_l); + + if (0 == uds) + { + PURGEVARS_L ((1, sizeof (a_l), a_l)); + ISPURGED_L ((1, sizeof (a_l), a_l)); + + return E_CLINT_DBZ; /* Division by Zero */ + } + + if (EQZ_L (a_l)) + { + SETZERO_L (q_l); + SETZERO_L (r_l); + return E_CLINT_OK; + } + + if (1 == DIGITS_L (a_l)) + { + if (*LSDPTR_L (a_l) < uds) + { + cpy_l (r_l, a_l); + SETZERO_L (q_l); + } + else if (*LSDPTR_L (a_l) == uds) + { + SETONE_L (q_l); + SETZERO_L (r_l); + } + else + { + u2clint_l (q_l, (USHORT)(*LSDPTR_L (a_l) / uds)); + u2clint_l (r_l, (USHORT)(*LSDPTR_L (a_l) % uds)); + } + + PURGEVARS_L ((1, sizeof (a_l), a_l)); + ISPURGED_L ((1, sizeof (a_l), a_l)); + + return E_CLINT_OK; + } + + msdptra_l = MSDPTR_L (a_l); + + rv = 0; + for (aptr_l = msdptra_l, qptr_l = q_l + DIGITS_L (a_l); aptr_l >= LSDPTR_L (a_l); aptr_l--, qptr_l--) + { + *qptr_l = (USHORT)((rhat = ((((ULONG)rv) << BITPERDGT) + + (ULONG)*aptr_l)) / uds); + rv = (USHORT)(rhat - (ULONG)uds * (ULONG)*qptr_l); + } + SETDIGITS_L (q_l, DIGITS_L (a_l)); + + RMLDZRS_L (q_l); + + if (rv == 0) + { + SETZERO_L (r_l); + } + else + { + u2clint_l (r_l, rv); + } + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (rhat), &rhat, + sizeof (rv), &rv, + sizeof (a_l), a_l)); + + ISPURGED_L ((3, sizeof (rhat), &rhat, + sizeof (rv), &rv, + sizeof (a_l), a_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Reduction modulo USHORT divisor */ +/* Syntax: USHORT umod_l (CLINT dv_l, USHORT uds); */ +/* Input: dv_l (Dividend), uds (Divisor) */ +/* Output: - */ +/* Returns: Remainder of dv_l mod uds (remainder < 0xffff) */ +/* 0xffff in case of division by Zero */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +umod_l (CLINT dv_l, USHORT uds) +{ + CLINT q_l, r_l; + USHORT rem; + + if (0 == uds) + { + return 0xffff; + } + + udiv_l (dv_l, uds, q_l, r_l); + switch (DIGITS_L (r_l)) + { + case 1: + rem = *LSDPTR_L (r_l); + break; + default: + rem = 0; + } + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (q_l), q_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((2, sizeof (q_l), q_l, + sizeof (r_l), r_l)); + + return rem; +} + +/*** Mixed functions finished here ********************************************/ + + +/******************************************************************************/ +/* */ +/* Function: Calculate number of bits of a CLINT operand */ +/* (Integral part of base-2-logarithm + 1) */ +/* Syntax: unsigned int ld_l (n_l); */ +/* Input: n_l (Argument) */ +/* Output: - */ +/* Returns: Number of relevant binary digits of n_l */ +/* */ +/******************************************************************************/ +unsigned int __FLINT_API +ld_l (CLINT n_l) +{ + unsigned int l; + USHORT test; + + l = (unsigned int)DIGITS_L (n_l); + while (n_l[l] == 0 && l > 0) + { + --l; + } + + if (l == 0) + { + return 0; + } + + test = n_l[l]; + l <<= LDBITPERDGT; + + while ((test & BASEDIV2) == 0) + { + test <<= 1; + --l; + } + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (test), &test)); + ISPURGED_L ((1, sizeof (test), &test)); + + return l; +} + + +/******************************************************************************/ +/* */ +/* Function: Testing and setting of a single bit */ +/* Syntax: int setbit_l (CLINT a_l, unsigned int pos); */ +/* Input: a_l (Argument), */ +/* pos (Position of the bit to be set in a_l, leftmost position */ +/* is 0) */ +/* Output: a_l, bit in position pos set to 1 */ +/* Returns: E_CLINT_OFL if pos >= CLINTMAXBIT */ +/* 1 if bit in position pos had value 1 before it was set, 0 else */ +/* */ +/******************************************************************************/ +int __FLINT_API +setbit_l (CLINT a_l, unsigned int pos) +{ + if (pos >= CLINTMAXBIT) + { + return E_CLINT_OFL; + } + + return setbit (a_l, pos); +} + + +/******************************************************************************/ +/* */ +/* Function: Testing a bit */ +/* Syntax: int testbit_l (CLINT a_l, unsigned int pos); */ +/* Input: a_l (Argument), */ +/* pos (Position of bit to be tested in a_l, leftmost */ +/* position is 0) */ +/* Output: - */ +/* Returns: Value 0 or 1 of bit in position pos */ +/* */ +/******************************************************************************/ +int __FLINT_API +testbit_l (CLINT a_l, unsigned int pos) +{ + int res = 0; + USHORT shortpos = (USHORT)(pos >> LDBITPERDGT); + USHORT bitpos = (USHORT)(pos & (BITPERDGT - 1)); + if (shortpos < DIGITS_L (a_l)) + { + if (a_l[shortpos + 1] & (USHORT)(1U << bitpos)) + { + res = 1; + } + } + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos)); + + ISPURGED_L ((2, sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos)); + + return res; +} + + +/******************************************************************************/ +/* */ +/* Function: Testing and clearing of a single bit */ +/* Syntax: int clearbit_l (CLINT a_l, unsigned int pos); */ +/* Input: a_l (Argument), */ +/* pos (Position of bit to be cleared in a_l, leftmost */ +/* position is 0) */ +/* Output: a_l, with bit in position pos cleared */ +/* Returns: Value of bit in position pos before the clearing */ +/* */ +/******************************************************************************/ +int __FLINT_API +clearbit_l (CLINT a_l, unsigned int pos) +{ + int res = 0; + USHORT shortpos = (USHORT)(pos >> LDBITPERDGT); + USHORT bitpos = (USHORT)(pos & (BITPERDGT - 1)); + USHORT m = (USHORT)(1U << bitpos); + + if (shortpos < DIGITS_L (a_l)) + { + if (a_l[shortpos + 1] & m) + { + res = 1; + } + a_l[shortpos + 1] &= (USHORT)(~m); + RMLDZRS_L (a_l); + } + + /* Purging of variables */ + PURGEVARS_L ((3, sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos, + sizeof (m), &m)); + + ISPURGED_L ((3, sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos, + sizeof (m), &m)); + + return res; +} + + +/******************************************************************************/ +/* */ +/* Function: XOR (Exclusive Or) of two CLINT operands */ +/* Syntax: void xor_l (CLINT a_l, CLINT b_l, CLINT c_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: c_l (XOR sum of a_l and b_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +xor_l (CLINT a_l, CLINT b_l, CLINT c_l) +{ + CLINT d_l; + clint *r_l, *s_l, *t_l; + clint *msdptrr_l; + clint *msdptrs_l; + + if (DIGITS_L (a_l) < DIGITS_L (b_l)) + { + r_l = LSDPTR_L (b_l); + s_l = LSDPTR_L (a_l); + msdptrr_l = MSDPTR_L (b_l); + msdptrs_l = MSDPTR_L (a_l); + } + else + { + r_l = LSDPTR_L (a_l); + s_l = LSDPTR_L (b_l); + msdptrr_l = MSDPTR_L (a_l); + msdptrs_l = MSDPTR_L (b_l); + } + + t_l = LSDPTR_L (d_l); + SETDIGITS_L (d_l, DIGITS_L (r_l - 1)); + + while (s_l <= msdptrs_l) + { + *t_l++ = *r_l++ ^ *s_l++; + } + + while (r_l <= msdptrr_l) + { + *t_l++ = *r_l++; + } + + cpy_l (c_l, d_l); + + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (d_l), d_l)); + ISPURGED_L ((1, sizeof (d_l), d_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: OR sum of two CLINT operands */ +/* Syntax: void or_l (CLINT a_l, CLINT b_l, CLINT c_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: c_l (OR sum of a_l and b_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +or_l (CLINT a_l, CLINT b_l, CLINT c_l) +{ + CLINT d_l; + clint *r_l, *s_l, *t_l; + clint *msdptrr_l; + clint *msdptrs_l; + + if (DIGITS_L (a_l) < DIGITS_L (b_l)) + { + r_l = LSDPTR_L (b_l); + s_l = LSDPTR_L (a_l); + msdptrr_l = MSDPTR_L (b_l); + msdptrs_l = MSDPTR_L (a_l); + } + else + { + r_l = LSDPTR_L (a_l); + s_l = LSDPTR_L (b_l); + msdptrr_l = MSDPTR_L (a_l); + msdptrs_l = MSDPTR_L (b_l); + } + + t_l = LSDPTR_L (d_l); + SETDIGITS_L (d_l, DIGITS_L (r_l - 1)); + + while (s_l <= msdptrs_l) + { + *t_l++ = *r_l++ | *s_l++; + } + + while (r_l <= msdptrr_l) + { + *t_l++ = *r_l++; + } + + cpy_l (c_l, d_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (d_l), d_l)); + ISPURGED_L ((1, sizeof (d_l), d_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: AND sum of two CLINT operands */ +/* Syntax: void and_l (CLINT a_l, CLINT b_l, CLINT c_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: c_l (AND-Sum of a_l and b_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +and_l (CLINT a_l, CLINT b_l, CLINT c_l) +{ + CLINT d_l; + clint *r_l, *s_l, *t_l; + clint *lastptr_l; + + if (DIGITS_L (a_l) < DIGITS_L (b_l)) + { + r_l = LSDPTR_L (b_l); + s_l = LSDPTR_L (a_l); + lastptr_l = MSDPTR_L (a_l); + } + else + { + r_l = LSDPTR_L (a_l); + s_l = LSDPTR_L (b_l); + lastptr_l = MSDPTR_L (b_l); + } + + t_l = LSDPTR_L (d_l); + SETDIGITS_L (d_l, DIGITS_L (s_l - 1)); + + while (s_l <= lastptr_l) + { + *t_l++ = *r_l++ & *s_l++; + } + + cpy_l (c_l, d_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (d_l), d_l)); + ISPURGED_L ((1, sizeof (d_l), d_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Greatest Common Divisor of two CLINT operands */ +/* Syntax: void gcd_l (CLINT aa_l, CLINT bb_l, CLINT cc_l); */ +/* Input: aa_l, bb_l (Operands) */ +/* Output: cc_l (GCD of a_l and b_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +gcd_l (CLINT aa_l, CLINT bb_l, CLINT cc_l) +{ + CLINT a_l, b_l, r_l, t_l; + unsigned int k = 0; + int sign_of_t; + + /* Step 1 */ + if (LT_L (aa_l, bb_l)) + { + cpy_l (a_l, bb_l); + cpy_l (b_l, aa_l); + } + else + { + cpy_l (a_l, aa_l); + cpy_l (b_l, bb_l); + } + + if (EQZ_L (b_l)) + { + cpy_l (cc_l, a_l); + + PURGEVARS_L ((1, sizeof (a_l), a_l)); + ISPURGED_L ((1, sizeof (a_l), a_l)); + + return; + } + + /* Step 2 */ + div_l (a_l, b_l, t_l, r_l); + cpy_l (a_l, b_l); + cpy_l (b_l, r_l); + + if (EQZ_L (b_l)) + { + cpy_l (cc_l, a_l); + + k = sign_of_t = 0; + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (t_l), t_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (t_l), t_l, + sizeof (r_l), r_l)); + return; + } + + while (ISEVEN_L (a_l) && ISEVEN_L (b_l)) + { + ++k; + shr_l (a_l); + shr_l (b_l); + } + + /* Step 3 */ + while (ISEVEN_L (a_l)) + { + shr_l (a_l); + } + while (ISEVEN_L (b_l)) + { + shr_l (b_l); + } + + /* Step 4 */ + do + { + if (GE_L (a_l, b_l)) + { + sub_l (a_l, b_l, t_l); + sign_of_t = 1; + } + else + { + sub_l (b_l, a_l, t_l); + sign_of_t = -1; + } + + if (EQZ_L (t_l)) + { /* finished */ + cpy_l (cc_l, a_l); /* cc_l <- a */ + shift_l (cc_l, (long int)k); /* cc_l <- cc_l*2**k */ + + PURGEVARS_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((3, sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (r_l), r_l)); + return; + } + + /* Step 5 */ + while (ISEVEN_L (t_l)) + { + shr_l (t_l); + } + + if (-1 == sign_of_t) + { + cpy_l (b_l, t_l); + } + else + { + cpy_l (a_l, t_l); + } + } + while (1); /*lint !e506 Don't complain about >>constant value boolean<< */ +} + + +/******************************************************************************/ +/* */ +/* Function: Extended Euclidean Algorithm */ +/* Greatest Common Divisor d = GCD(a, b) and linear combination */ +/* d = au + bv */ +/* Syntax: void xgcd_l (CLINT a_l, CLINT b_l, CLINT d_l, CLINT u_l, */ +/* int *sign_u, CLINT v_l, int *sign_v); */ +/* Input: a_l, b_l (Operands) */ +/* Output: d_l (GCD of a_l and b_l) */ +/* u_l, v_l (Factors of the linear combination d = au + bv */ +/* with signs in sign_u and sign_v) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +xgcd_l (CLINT a_l, CLINT b_l, CLINT d_l, CLINT u_l, int *sign_u, CLINT v_l, int *sign_v) +{ + CLINT v1_l, v3_l, t1_l, t3_l, q_l; + CLINTD tmp_l, tmpu_l, tmpv_l; + int sign_v1, sign_t1; + + cpy_l (d_l, a_l); + cpy_l (v3_l, b_l); + + if (EQZ_L (v3_l)) /* b_l == 0 ? */ + { + SETONE_L (u_l); + SETZERO_L (v_l); + *sign_u = 1; + *sign_v = 1; + return; + } + + SETONE_L (tmpu_l); + *sign_u = 1; + SETZERO_L (v1_l); + sign_v1 = 1; + + while (GTZ_L (v3_l)) + { + div_l (d_l, v3_l, q_l, t3_l); + mul_l (v1_l, q_l, q_l); + sign_t1 = ssub (tmpu_l, *sign_u, q_l, sign_v1, t1_l); + cpy_l (tmpu_l, v1_l); + *sign_u = sign_v1; + cpy_l (d_l, v3_l); + cpy_l (v1_l, t1_l); + sign_v1 = sign_t1; + cpy_l (v3_l, t3_l); + } + + mult (a_l, tmpu_l, tmp_l); + *sign_v = ssub (d_l, 1, tmp_l, *sign_u, tmp_l); + div_l (tmp_l, b_l, tmpv_l, tmp_l); + + Assert (EQZ_L (tmp_l)); + +#ifdef FLINT_DEBUG + { + CLINTD x_l, y_l, z_l; + mult (a_l, tmpu_l, x_l); + mult (b_l, tmpv_l, y_l); + sadd (x_l, *sign_u, y_l, *sign_v, z_l); + Assert (equ_l (z_l, d_l)); + } +#endif + + cpy_l (u_l, tmpu_l); + cpy_l (v_l, tmpv_l); + + /* Purging of variables */ + PURGEVARS_L ((10, sizeof (sign_v1), &sign_v1, + sizeof (sign_t1), &sign_t1, + sizeof (v1_l), v1_l, + sizeof (v3_l), v3_l, + sizeof (t1_l), t1_l, + sizeof (t3_l), t3_l, + sizeof (q_l), q_l, + sizeof (tmp_l), tmp_l, + sizeof (tmpu_l), tmpu_l, + sizeof (tmpv_l), tmpv_l)); + + ISPURGED_L ((10, sizeof (sign_v1), &sign_v1, + sizeof (sign_t1), &sign_t1, + sizeof (v1_l), v1_l, + sizeof (v3_l), v3_l, + sizeof (t1_l), t1_l, + sizeof (t3_l), t3_l, + sizeof (q_l), q_l, + sizeof (tmp_l), tmp_l, + sizeof (tmpu_l), tmpu_l, + sizeof (tmpv_l), tmpv_l)); + + return; +} + + +/******************************************************************************/ +/* */ +/* Function: Inverse of a modulo n */ +/* Syntax: void inv_l (CLINT a_l, CLINT n_l, CLINT g_l, CLINT i_l); */ +/* Input: a_l (Operand), n_l (Modulus) */ +/* Output: g_l (GCD of a_l and n_l), */ +/* i_l (Inverse of a_l mod n_l) */ +/* If gcd > 1 the inverse does not exist, i_l is set to zero then */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +inv_l (CLINT a_l, CLINT n_l, CLINT g_l, CLINT i_l) +{ + CLINT v1_l, v3_l, t1_l, t3_l, q_l; + + if (EQZ_L (a_l)) + { + if (EQZ_L (n_l)) + { + SETZERO_L (g_l); + SETZERO_L (i_l); + return; + } + else + { + cpy_l (g_l, n_l); + SETZERO_L (i_l); + return; + } + } + else + { + if (EQZ_L (n_l)) + { + cpy_l (g_l, a_l); + SETZERO_L (i_l); + return; + } + } + + cpy_l (g_l, a_l); + cpy_l (v3_l, n_l); + SETZERO_L (v1_l); + SETONE_L (t1_l); + + do + { + div_l (g_l, v3_l, q_l, t3_l); + + if (GTZ_L (t3_l)) + { + mmul_l (v1_l, q_l, q_l, n_l); + msub_l (t1_l, q_l, q_l, n_l); + cpy_l (t1_l, v1_l); + cpy_l (v1_l, q_l); + cpy_l (g_l, v3_l); + cpy_l (v3_l, t3_l); + } + } + + while (GTZ_L (t3_l)); + cpy_l (g_l, v3_l); + if (EQONE_L (g_l)) + { + cpy_l (i_l, v1_l); + } + else + { + SETZERO_L (i_l); + } + + /* Purging of variables */ + PURGEVARS_L ((5, sizeof (v1_l), v1_l, + sizeof (v3_l), v3_l, + sizeof (t1_l), t1_l, + sizeof (t3_l), t3_l, + sizeof (q_l), q_l)); + + ISPURGED_L ((5, sizeof (v1_l), v1_l, + sizeof (v3_l), v3_l, + sizeof (t1_l), t1_l, + sizeof (t3_l), t3_l, + sizeof (q_l), q_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Least Common Multiple (LCM) of two CLINT operands */ +/* Syntax: int lcm_l (CLINT a_l, CLINT b_l, CLINT c_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: c_l (LCM of a_l and b_l) */ +/* Returns: E_CLINT_OK : Everything is O.K. */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +lcm_l (CLINT a_l, CLINT b_l, CLINT c_l) +{ + CLINT g_l, junk_l; + int err; + + if (EQZ_L (a_l) || EQZ_L (b_l)) + { + SETZERO_L (c_l); + return E_CLINT_OK; + } + + gcd_l (a_l, b_l, g_l); + div_l (a_l, g_l, g_l, junk_l); + err = mul_l (g_l, b_l, c_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (g_l), g_l, + sizeof (junk_l), junk_l)); + + ISPURGED_L ((2, sizeof (g_l), g_l, + sizeof (junk_l), junk_l)); + + return err; +} + + +/******************************************************************************/ +/* */ +/* Function: Test for Squareness of a CLINT value (Cohen, ACCANT, p. 40) */ +/* Syntax: unsigned int issqr_l (CLINT n_l, CLINT r_l); */ +/* Input: n_l (argument) */ +/* Output: r_l (square root of n_l if n_l is square, 0 else) */ +/* Returns: 1: n_l is square */ +/* 0: else */ +/* */ +/******************************************************************************/ +static const UCHAR q11[11]= + {1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0}; + +static const UCHAR q63[63]= + {1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}; + +static const UCHAR q64[64]= + {1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}; + +static const UCHAR q65[65]= + {1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1}; + + +unsigned int __FLINT_API +issqr_l (CLINT n_l, CLINT r_l) +{ + CLINT q_l; + USHORT r; + + if (EQZ_L (n_l)) + { + SETZERO_L (r_l); + return 1; + } + + if (1 == q64[*LSDPTR_L (n_l) & 63]) /* q64[n_l mod 64] */ + { + r = umod_l (n_l, 45045); + + if ((1 == q63[r % 63]) && (1 == q65[r % 65]) && (1 == q11[r % 11])) + { + iroot_l (n_l, r_l); + sqr_l (r_l, q_l); + + if (equ_l (n_l, q_l)) + { + PURGEVARS_L ((1, sizeof (q_l), q_l)); + ISPURGED_L ((1, sizeof (q_l), q_l)); + + return 1; + } + } + } + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (r), &r, + sizeof (q_l), q_l)); + + ISPURGED_L ((2, sizeof (r), &r, + sizeof (q_l), q_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Integral part of square root of a CLINT operand */ +/* Syntax: void iroot_l (CLINT a_l, CLINT floor_l); */ +/* Input: a_l (Argument) */ +/* Output: floor_l (Integral part of square root of a_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +iroot_l (CLINT a_l, CLINT floor_l) +{ + CLINT x_l, y_l, r_l; + unsigned int l; + + if (EQZ_L (a_l)) + { + SETZERO_L (floor_l); + return; + } + + /* Step 1 */ + l = (ld_l (a_l) + 1) >> 1; /* (ld(a_l) + 2) div 2 */ + SETZERO_L (y_l); + setbit (y_l, l); + + do + { + cpy_l (x_l, y_l); + /* Step 2 */ + div_l (a_l, x_l, y_l, r_l); + add_l (y_l, x_l, y_l); + shr_l (y_l); + } + + /* Step 3 */ + while (LT_L (y_l, x_l)); + cpy_l (floor_l, x_l); + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (l), &l, + sizeof (x_l), x_l, + sizeof (y_l), y_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((4, sizeof (l), &l, + sizeof (x_l), x_l, + sizeof (y_l), y_l, + sizeof (r_l), r_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Square root modulo p, p prime */ +/* Syntax: int proot_l (CLINT a_l, CLINT p_l, CLINT x_l); */ +/* Input: a_l (Square), p_l (Prime number > 2) */ +/* Output: x_l (Square root of a_l mod p_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* -1 : a_l is not a residual square mod p_l or p_l is even */ +/* */ +/******************************************************************************/ +int __FLINT_API +proot_l (CLINT a_l, CLINT p_l, CLINT x_l) +{ + CLINT b_l, q_l, t_l, y_l, z_l; + int r, m; + + if (EQZ_L (p_l) || ISEVEN_L (p_l)) + { + return -1; + } + + if (EQZ_L (a_l)) + { + SETZERO_L (x_l); + return E_CLINT_OK; + } + + cpy_l (q_l, p_l); + dec_l (q_l); + r = twofact_l (q_l, q_l); + + /* Step 1: Search for residual nonsquare */ + cpy_l (z_l, two_l); + while (jacobi_l (z_l, p_l) == 1) + { + inc_l (z_l); + } + mexp_l (z_l, q_l, z_l, p_l); + + /* Step 2: Initialization */ + cpy_l (y_l, z_l); + dec_l (q_l); + shr_l (q_l); /* q_l = (q - 1)/2 */ + mexp_l (a_l, q_l, x_l, p_l); + msqr_l (x_l, b_l, p_l); + mmul_l (b_l, a_l, b_l, p_l); + mmul_l (x_l, a_l, x_l, p_l); + + /* Step 3: Search exponent */ + mod_l (b_l, p_l, q_l); + + while (!equ_l (q_l, one_l)) + { + m = 0; + do + { + ++m; + msqr_l (q_l, q_l, p_l); /* q_l = b^(2^m) */ + } + while (!equ_l (q_l, one_l)); /* m <= r */ + + if (m == r) + { + PURGEVARS_L ((5, sizeof (b_l), b_l, + sizeof (q_l), q_l, + sizeof (t_l), t_l, + sizeof (y_l), y_l, + sizeof (z_l), z_l)); + + ISPURGED_L ((5, sizeof (b_l), b_l, + sizeof (q_l), q_l, + sizeof (t_l), t_l, + sizeof (y_l), y_l, + sizeof (z_l), z_l)); + return -1; + } + + /* Step 4: Reduction of Exponent */ + + mexp2_l (y_l, (USHORT)(r - m - 1), t_l, p_l); /*lint !e732 */ + msqr_l (t_l, y_l, p_l); /* Don't complain about >>loss of sign<< */ + mmul_l (x_l, t_l, x_l, p_l); + mmul_l (b_l, y_l, b_l, p_l); + cpy_l (q_l, b_l); + r = m; + } + + /* Purging of variables */ + PURGEVARS_L ((7, sizeof (r), &r, + sizeof (m), &m, + sizeof (b_l), b_l, + sizeof (q_l), q_l, + sizeof (t_l), t_l, + sizeof (y_l), y_l, + sizeof (z_l), z_l)); + + ISPURGED_L ((7, sizeof (r), &r, + sizeof (m), &m, + sizeof (b_l), b_l, + sizeof (q_l), q_l, + sizeof (t_l), t_l, + sizeof (y_l), y_l, + sizeof (z_l), z_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Square root modulo pq; p, q prime numbers */ +/* Syntax: int root_l (CLINT a_l, CLINT p_l, CLINT q_l, CLINT x_l); */ +/* Input: a_l (Operand), p_l, q_l (Prime numbers) */ +/* Output: x_l (Square root a_l mod p_l * q_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* -1: a_l is not residual square mod p_l*q_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +root_l (CLINT a_l, CLINT p_l, CLINT q_l, CLINT x_l) +{ + CLINT x0_l, x1_l, x2_l, x3_l, xp_l, xq_l, n_l; + CLINTD u_l, v_l; + clint *xptr_l; + int sign_u, sign_v; + + if (0 != proot_l (a_l, p_l, xp_l) || 0 != proot_l (a_l, q_l, xq_l)) + { + return -1; + } + + if (EQZ_L (a_l)) + { + SETZERO_L (x_l); + return E_CLINT_OK; + } + + mul_l (p_l, q_l, n_l); + xgcd_l (p_l, q_l, x0_l, u_l, &sign_u, v_l, &sign_v); + mul_l (u_l, p_l, u_l); + mul_l (u_l, xq_l, u_l); + mul_l (v_l, q_l, v_l); + mul_l (v_l, xp_l, v_l); + sign_u = sadd (u_l, sign_u, v_l, sign_v, x0_l); + smod (x0_l, sign_u, n_l, x0_l); + + sub_l (n_l, x0_l, x1_l); + msub_l (u_l, v_l, x2_l, n_l); + sub_l (n_l, x2_l, x3_l); + + xptr_l = MIN_L (x0_l, x1_l); + xptr_l = MIN_L (xptr_l, x2_l); + xptr_l = MIN_L (xptr_l, x3_l); + cpy_l (x_l, xptr_l); + + /* Purging of variables */ + PURGEVARS_L ((11, sizeof (sign_u), &sign_u, + sizeof (sign_v), &sign_v, + sizeof (x0_l), x0_l, + sizeof (x1_l), x1_l, + sizeof (x2_l), x2_l, + sizeof (x3_l), x3_l, + sizeof (xp_l), xp_l, + sizeof (xq_l), xq_l, + sizeof (n_l), n_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l)); + + ISPURGED_L ((11, sizeof (sign_u), &sign_u, + sizeof (sign_v), &sign_v, + sizeof (x0_l), x0_l, + sizeof (x1_l), x1_l, + sizeof (x2_l), x2_l, + sizeof (x3_l), x3_l, + sizeof (xp_l), xp_l, + sizeof (xq_l), xq_l, + sizeof (n_l), n_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Ad hoc search for a primitive root modulo p, p prime number > 2*/ +/* Syntax: int primroot_l(CLINT a_l, unsigned int noofprimes, */ +/* clint *primes_l[]); */ +/* Input: noofprimes (Number of distinct prime factors pi of the group */ +/* order p - 1 of Z/pZ) */ +/* primes_l (Array of CLINT operands, starting with p-1, followed */ +/* by prime factors pi of p-1 = p1^e1*...*pk^ek, */ +/* k = noofprimes) */ +/* Output: a_l (Primitive root modulo p_l) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* -1: p - 1 is odd => p is not a prime */ +/* */ +/******************************************************************************/ +int __FLINT_API +primroot_l (CLINT a_l, unsigned int noofprimes, clint *primes_l[]) +{ + CLINT p_l, t_l, junk_l; + ULONG i; + + if (ISODD_L (primes_l[0])) + { + return -1; + } + + cpy_l (p_l, primes_l[0]); + inc_l (p_l); /* p_l = p (Modulus) */ + SETONE_L (a_l); + + do + { + inc_l (a_l); + + /* Test, whether a_l is a square. */ + /* If so, a_l can't be a primitive root and a_l is incremented */ + if (issqr_l (a_l, t_l)) + { + inc_l (a_l); + } + + i = 1; + + do + { + div_l (primes_l[0], primes_l[i++], t_l, junk_l); /* t_l <- n/pi */ + mexpkm_l (a_l, t_l, t_l, p_l); + } + + while ((i <= noofprimes) && !EQONE_L (t_l)); + + } + while (EQONE_L (t_l)); + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (i), &i, + sizeof (p_l), p_l, + sizeof (t_l), t_l, + sizeof (junk_l), junk_l)); + + ISPURGED_L ((4, sizeof (i), &i, + sizeof (p_l), p_l, + sizeof (t_l), t_l, + sizeof (junk_l), junk_l)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Solving systems of quadratic congruences */ +/* with application of the Chinese Remainder Theorem */ +/* Syntax: chinrem_l (unsigned int noofeq, clint** coeff_l, CLINT x_l); */ +/* Input: noofeq (Number of equations to solve) */ +/* coeff_l (Array of 2*noofeq pointers to CLINT-Arguments ai, mi, */ +/* mi coprime (cf. Chap. 10)) */ +/* Output: x_l (Solution of congruences) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* 1 : noofeq is 0 */ +/* 2 : mi not coprime */ +/* E_CLINT_OFL: Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +chinrem_l (unsigned int noofeq, clint** coeff_l, CLINT x_l) +{ + clint *ai_l, *mi_l; + + CLINT g_l, u_l, v_l, m_l; + unsigned int i; + int sign_u, sign_v, err, error = E_CLINT_OK; + if (0 == noofeq) + { + return 1; + } + + cpy_l (x_l, *(coeff_l++)); + cpy_l (m_l, *(coeff_l++)); + + for (i = 1; i < noofeq; i++) + { + ai_l = *(coeff_l++); + mi_l = *(coeff_l++); + + xgcd_l (m_l, mi_l, g_l, u_l, &sign_u, v_l, &sign_v); + + if (!EQONE_L (g_l)) + { + PURGEVARS_L ((4, sizeof (g_l), g_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l, + sizeof (m_l), m_l)); + + ISPURGED_L ((4, sizeof (g_l), g_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l, + sizeof (m_l), m_l)); + return 2; + } + + err = mul_l (u_l, m_l, u_l); + if (E_CLINT_OK == error) + { + error = err; + } + err = mul_l (u_l, ai_l, u_l); + if (E_CLINT_OK == error) + { + error = err; + } + err = mul_l (v_l, mi_l, v_l); + if (E_CLINT_OK == error) + { + error = err; + } + err = mul_l (v_l, x_l, v_l); + if (E_CLINT_OK == error) + { + error = err; + } + + sign_u = sadd (u_l, sign_u, v_l, sign_v, x_l); + + err = mul_l (m_l, mi_l, m_l); + if (E_CLINT_OK == error) + { + error = err; + } + + smod (x_l, sign_u, m_l, x_l); + } + + /* Purging of variables */ + PURGEVARS_L ((7, sizeof (i), &i, + sizeof (sign_u), &sign_u, + sizeof (sign_v), &sign_v, + sizeof (g_l), g_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l, + sizeof (m_l), m_l)); + + ISPURGED_L ((7, sizeof (i), &i, + sizeof (sign_u), &sign_u, + sizeof (sign_v), &sign_v, + sizeof (g_l), g_l, + sizeof (u_l), u_l, + sizeof (v_l), v_l, + sizeof (m_l), m_l)); + + return error; +} + + +/******************************************************************************/ + + +static int tab2[] = +{0, 1, 0, -1, 0, -1, 0, 1}; + + +/******************************************************************************/ +/* */ +/* Function: Legendre-/Jacobi symbol (a/b) */ +/* Syntax: int jacobi_l (CLINT aa_l, CLINT bb_l); */ +/* Input: aa_l, bb_l (Arguments) */ +/* Output: - */ +/* Returns: Value of Jacobi symbol aa_l over bb_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +jacobi_l (CLINT aa_l, CLINT bb_l) +{ + CLINT a_l, b_l, tmp_l; + long int k, v; + + /* Step 1 */ + if (EQZ_L (bb_l)) + { + if (EQONE_L (aa_l)) + { + return 1; + } + else + { + return 0; + } + } + + /* Step 2 */ + if (ISEVEN_L (aa_l) && ISEVEN_L (bb_l)) + { + return 0; + } + + cpy_l (a_l, aa_l); + cpy_l (b_l, bb_l); + + v = twofact_l (b_l, b_l); + if ((v & 1) == 0) + { + k = 1; + } + else + { + k = tab2[*LSDPTR_L (a_l) & 7]; /* *LSDPTR_L(a_l) & 7 == a_l % 8 */ + } + + /* Step 3 */ + while (GTZ_L (a_l)) + { + v = twofact_l (a_l, a_l); + if ((v & 1) != 0) + { + k *= tab2[*LSDPTR_L (b_l) & 7]; + } + + /* Step 4 */ + if (*LSDPTR_L (a_l) & *LSDPTR_L (b_l) & 2) + { + k = -k; + } + cpy_l (tmp_l, a_l); + mod_l (b_l, tmp_l, a_l); + cpy_l (b_l, tmp_l); + } + + if (GT_L (b_l, one_l)) + { + k = 0; + } + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (v), &v, + sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + ISPURGED_L ((4, sizeof (v), &v, + sizeof (a_l), a_l, + sizeof (b_l), b_l, + sizeof (tmp_l), tmp_l)); + + return (int)k; +} + + +/******************************************************************************/ +/* */ +/* Function: Sieving by dividing by small primes */ +/* Syntax: USHORT sieve_l (CLINT a_l, unsigned int no_of_smallprimes); */ +/* Input: a_l (Dividend), */ +/* no_of_smallprimes (Number of small primes to divide by) */ +/* Output: - */ +/* Returns: Prime factor of a_l, if found */ +/* 1 if a_l is prime */ +/* 0 if no prime factor was found */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +sieve_l (CLINT a_l, unsigned int no_of_smallprimes) +{ + clint *aptr_l; + USHORT bv, rv, qv; + ULONG rhat; + unsigned int i = 1; + + if (ISEVEN_L (a_l)) + { + if (equ_l (a_l, two_l)) + { + return 1; + } + else + { + return 2; + } + } + + no_of_smallprimes = MIN (no_of_smallprimes, NOOFSMALLPRIMES); + bv = 2; + do + { + rv = 0; + bv += smallprimes[i]; + + Assert (bv < 2000); + + for (aptr_l = MSDPTR_L (a_l); aptr_l >= LSDPTR_L (a_l); aptr_l--) + { + qv = (USHORT)((rhat = ((((ULONG)rv) << BITPERDGT) + + (ULONG)*aptr_l)) / bv); + rv = (USHORT)(rhat - (ULONG)bv * (ULONG)qv); + } + + } + while (rv != 0 && ++i <= no_of_smallprimes); + + if (0 == rv) + { + if (DIGITS_L (a_l) == 1 && *LSDPTR_L (a_l) == bv) + { + bv = 1; + } + /* else: result is bv */ + } + else + { + bv = 0; + } + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (rhat), &rhat, + sizeof (i), &i, + sizeof (rv), &rv, + sizeof (qv), &qv)); + + ISPURGED_L ((4, sizeof (rhat), &rhat, + sizeof (i), &i, + sizeof (rv), &rv, + sizeof (qv), &qv)); + + return bv; +} + + +/******************************************************************************/ +/* */ +/* Function: Probabilistic primality test acc. to Miller-Rabin (MR-Test) */ +/* Syntax: int prime_l (CLINT n_l, unsigned int no_of_smallprimes, */ +/* unsigned int iterations); */ +/* Input: n_l (Number to be tested), */ +/* no_of_smallprimes (Number of small primes for the sieve) */ +/* iterations (Number of rounds for the MR-Test. */ +/* If iterations == 0 the optimized number of rounds */ +/* for an error probability < 2^-80 is used.) */ +/* Output: - */ +/* Returns: 1: n_l probably prime */ +/* 0: n_l definitely not prime */ +/* */ +/******************************************************************************/ +int __FLINT_API +prime_l (CLINT n_l, unsigned int no_of_smallprimes, unsigned int iterations) +{ + CLINT d_l, x_l, q_l; + USHORT i, j, k, p; + int isprime; + + if (EQONE_L (n_l)) + { + return 0; + } + + no_of_smallprimes = MIN (no_of_smallprimes, NOOFSMALLPRIMES); + k = sieve_l (n_l, no_of_smallprimes); + if (1 == k) + { + return 1; + } + + if (1 < k) + { + return 0; + } + else + { + /* If iterations == 0 was given as a parameter optimize the number */ + /* of iterations for an error probability < 2^-80 (cf. Chap. 10.5) */ + if (0 == iterations) + { + k = ld_l (n_l); + if (k < 73) iterations = 37; + else if (k < 105) iterations = 32; + else if (k < 137) iterations = 25; + else if (k < 197) iterations = 19; + else if (k < 220) iterations = 15; + else if (k < 235) iterations = 13; + else if (k < 252) iterations = 12; + else if (k < 273) iterations = 11; + else if (k < 300) iterations = 10; + else if (k < 332) iterations = 9; + else if (k < 375) iterations = 8; + else if (k < 433) iterations = 7; + else if (k < 514) iterations = 6; + else if (k < 638) iterations = 5; + else if (k < 847) iterations = 4; + else if (k < 1275) iterations = 3; + else if (k < 2861) iterations = 2; + else iterations = 1; + } + + cpy_l (d_l, n_l); + dec_l (d_l); + k = (USHORT)twofact_l (d_l, q_l); + p = 0; /* Start with base a = 2 */ + i = 0; + isprime = 1; + + do + { + p += smallprimes[i++]; + +#ifdef FLINT_ASM + wmexp_l (p, q_l, x_l, n_l); +#else + wmexpm_l (p, q_l, x_l, n_l); +#endif /* FLINT_ASM */ + + if (!EQONE_L (x_l)) + { + + j = 0; + + while (!EQONE_L (x_l) && !equ_l (x_l, d_l) && ++j < k) + { + msqr_l (x_l, x_l, n_l); + } + + if (!equ_l (x_l, d_l)) + { + isprime = 0; + } + } + } + while ((--iterations > 0) && isprime); + + /* Purging of variables */ + PURGEVARS_L ((7, sizeof (i), &i, + sizeof (j), &j, + sizeof (k), &k, + sizeof (p), &p, + sizeof (d_l), d_l, + sizeof (x_l), x_l, + sizeof (q_l), q_l)); + + ISPURGED_L ((7, sizeof (i), &i, + sizeof (j), &j, + sizeof (k), &k, + sizeof (p), &p, + sizeof (d_l), d_l, + sizeof (x_l), x_l, + sizeof (q_l), q_l)); + + return isprime; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Factor 2^t of a CLINT operand n, such that n = 2^t * b, b odd */ +/* Syntax: int twofact_l (CLINT a_l, CLINT b_l); */ +/* Input: a_l (Argument) */ +/* Output: b_l (Odd factor of a_l) */ +/* Returns: Logarithm t of the factor 2^t of a_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +twofact_l (CLINT a_l, CLINT b_l) +{ + int k = 0; + if (EQZ_L (a_l)) + { + SETZERO_L (b_l); + return 0; + } + + cpy_l (b_l, a_l); + while (ISEVEN_L (b_l)) + { + shr_l (b_l); + ++k; + } + + return k; +} + + +/******************************************************************************/ + + +static char ntable[16] = +{ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', + 'd', 'e', 'f'}; + + +#ifndef isxdigit +#define isxdigit(__c) ((('0' <= (__c)) && ((__c) <= '9'))\ + ?1\ + :(('a' <= (__c)) && ((__c) <= 'f'))\ + ?1\ + :(('A' <= (__c)) && ((__c) <= 'F'))\ + ?1\ + :0) +#endif + + +/******************************************************************************/ +/* */ +/* Function: Representation of a CLINT operand as character string */ +/* Syntax: char *xclint2str_l (CLINT n_l, USHORT base, int showbase); */ +/* Input: n_l (Argument to be represented) */ +/* base (Base of representation) */ +/* showbase (==0: no prefix; */ +/* !=0: prefix 0b, 0 oder 0x for base 2, 8 oder 16) */ +/* Output: - */ +/* Returns: Pointer to character string */ +/* NULL if base < 2 or base > 16 */ +/* */ +/******************************************************************************/ +char * __FLINT_API +xclint2str_l (CLINT n_l, USHORT base, int showbase) +{ + CLINTD u_l, r_l; + int i = 0; + static char N[CLINTMAXBIT + 3]; + + if (2U > base || base > 16U) + { + return (char *)NULL; + } + + cpy_l (u_l, n_l); + do + { + (void)udiv_l (u_l, base, u_l, r_l); + if (EQZ_L (r_l)) + { + N[i++] = '0'; + } + else + { + N[i++] = (char)ntable[*LSDPTR_L (r_l) & 0xff]; + } + } + while (GTZ_L (u_l)); + + if (showbase) + { + switch (base) + { + case 2: + N[i++] = 'b'; + N[i++] = '0'; + break; + case 8: + N[i++] = '0'; + break; + case 16: + N[i++] = 'x'; + N[i++] = '0'; + break; + } /*lint !e744 default-statement pointless */ + } + N[i] = '\0'; + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (u_l), u_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((2, sizeof (u_l), u_l, + sizeof (r_l), r_l)); + + return strrev_l (N); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a character string into CLINT-number */ +/* Syntax: int str2clint_l (CLINT n_l, char *str, USHORT b); */ +/* Input: str (Pointer to character string), */ +/* base (Base to which number in str is represented) */ +/* Output: n_l (CLINT value converted from str) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_BOR: Basis invalid */ +/* E_CLINT_OFL: Overflow */ +/* E_CLINT_NPT: str is NULL-Pointer */ +/* */ +/******************************************************************************/ +int __FLINT_API +str2clint_l (CLINT n_l, char *str, USHORT base) +{ + USHORT n; + int error = E_CLINT_OK; + + if (str == NULL) + { + return E_CLINT_NPT; /* Error: Base invalid */ + } + + if (2 > base || base > 16) + { + return E_CLINT_BOR; /* Error: Base invalid */ + } + + SETZERO_L (n_l); + + if (*str == '0') + { + if ((tolower_l(*(str+1)) == 'x') || + (tolower_l(*(str+1)) == 'b')) /* Ignore prefixes */ + { + ++str; + ++str; + } + } + + while (isxdigit ((int)*str) || isspace ((int)*str)) + { + if (!isspace ((int)*str)) + { + n = (USHORT)tolower_l (*str); + switch (n) + { + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + n -= (USHORT)('a' - 10); + break; + default: + n -= (USHORT)'0'; + } + + if (n >= base) + { + error = E_CLINT_BOR; + break; + } + + if ((error = umul_l (n_l, base, n_l)) != E_CLINT_OK) + { + break; + } + if ((error = uadd_l (n_l, n, n_l)) != E_CLINT_OK) + { + break; + } + } + ++str; + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Representation of CLINT operand as array of bytes (IEEE P1363) */ +/* Syntax: UCHAR *clint2byte_l (CLINT n_l, int *len); */ +/* Input: n_l (Argument to be represented) */ +/* Output: len (Number of bytes in byte array) */ +/* Returns: Pointer to byte array with representation of n_l */ +/* Significance of digits increasing from right to left */ +/* NULL, if len is NULL-pointer */ +/* */ +/******************************************************************************/ +UCHAR * __FLINT_API +clint2byte_l (CLINT n_l, int *len) +{ + CLINTD u_l, r_l; + int i = 0, j; + UCHAR help; + static UCHAR bytes[CLINTMAXBYTE]; + + if (len == NULL) + { + return NULL; + } + + cpy_l (u_l, n_l); + do + { + (void)udiv_l (u_l, 0x100, u_l, r_l); + if (GTZ_L (r_l)) + { + bytes[i++] = (UCHAR)*LSDPTR_L (r_l); + } + else + { + bytes[i++] = 0; + } + } + while (GTZ_L (u_l)); + + *len = i; + + for (i = 0, j = *len - 1; i < j; i++, j--) + { + help = bytes[i]; + bytes[i] = bytes[j]; + bytes[j] = help; + } + + /* Purging of variables */ + PURGEVARS_L ((5, sizeof (i), &i, + sizeof (j), &j, + sizeof (help), &help, + sizeof (u_l), u_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((5, sizeof (i), &i, + sizeof (j), &j, + sizeof (help), &help, + sizeof (u_l), u_l, + sizeof (r_l), r_l)); + + return bytes; +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of an array of bytes to CLINT value (IEEE P1363) */ +/* Syntax: int byte2clint_l (CLINT n_l, UCHAR *bytestr, int len); */ +/* Input: bytestr (Pointer to array of UCHAR, significance of bytes */ +/* increasing from right to left) */ +/* len (Number of bytes in bytestr) */ +/* Output: n_l (CLINT value with converted from bytestr) */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_OFL: Overflow */ +/* E_CLINT_NPT: bytestr is NULL-Pointer */ +/* */ +/******************************************************************************/ +int __FLINT_API +byte2clint_l (CLINT n_l, UCHAR *bytestr, int len) +{ + int error = E_CLINT_OK, i; + + if (bytestr == NULL) + { + return E_CLINT_NPT; + } + + if ((unsigned int)len > CLINTMAXBYTE) + { + return E_CLINT_OFL; + } + + SETZERO_L (n_l); + + for (i = 0; i < len; i++, bytestr++) + { + if ((error = umul_l (n_l, 0x100, n_l)) != E_CLINT_OK) + { + break; + } + + if ((error = uadd_l (n_l, *bytestr, n_l)) != E_CLINT_OK) + { + break; + } + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of an USHORT value to CLINT format */ +/* Syntax: void u2clint_l (CLINT num_l, USHORT u); */ +/* Input: u (Value to be converted) */ +/* Output: num_l (CLINT variable with value u) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +u2clint_l (CLINT num_l, USHORT u) +{ + *LSDPTR_L (num_l) = u; + SETDIGITS_L (num_l, 1); + RMLDZRS_L (num_l); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of an ULONG value to CLINT format */ +/* Syntax: void ul2clint_l (CLINT num_l, USHORT u); */ +/* Input: ul (Value to be converted) */ +/* Output: num_l (CLINT variable with value ul) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ul2clint_l (CLINT num_l, ULONG ul) +{ + *LSDPTR_L (num_l) = (USHORT)(ul & 0xffff); + *(LSDPTR_L (num_l) + 1) = (USHORT)((ul >> 16) & 0xffff); + SETDIGITS_L (num_l, 2); + RMLDZRS_L (num_l); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a CLINT operand to a character string */ +/* with representation to basis 16 (hexadezimal representation) */ +/* Syntax: char *fhexstr_l (CLINT n_l); */ +/* Input: n_l (CLINT value to be represented) */ +/* Output: Pointer to a character string representing n_l to base 16 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +char * __FLINT_API +fhexstr_l (CLINT n_l) +{ + return xclint2str_l (n_l, 16, 0); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a CLINT operand to a character string */ +/* with representation to base 10 (Decimal representation) */ +/* Syntax: char *fdecstr_l (CLINT n_l); */ +/* Input: n_l (CLINT value to be represented) */ +/* Output: Pointer to a character string representing n_l to base 10 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +char * __FLINT_API +fdecstr_l (CLINT n_l) +{ + return xclint2str_l (n_l, 10, 0); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a CLINT operand to a character string */ +/* with represenation to base 8 (octal representation) */ +/* Syntax: char *foctstr_l (CLINT n_l); */ +/* Input: n_l (CLINT value to be represented) */ +/* Output: Pointer to a character string representing n_l to base 8 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +char * __FLINT_API +foctstr_l (CLINT n_l) +{ + return xclint2str_l (n_l, 8, 0); +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a CLINT operand to a character string */ +/* with represenation to base 2 (binary representation) */ +/* Syntax: char *fbinstr_l (CLINT n_l); */ +/* Input: n_l (CLINT value to be represented) */ +/* Output: Pointer to a character string representing n_l to base 2 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +char * __FLINT_API +fbinstr_l (CLINT n_l) +{ + return xclint2str_l (n_l, 2, 0); +} + + +/******************************************************************************/ +/* */ +/* Function: Show version of FLINT-Library */ +/* Syntax: unsigned long version_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Value representing the version of FLINT as defined in flint.h */ +/* in the most significant word. */ +/* If assembler functions are used, the high-order byte of the */ +/* least significant word shows the value 0x61 (ASCII 'a'), else */ +/* without assembler support the high-order byte has value 0. */ +/* If flint.c was compiled in security mode (default), the low- */ +/* order byte of the least significant word shows the value 0x73 */ +/* (ASCII 's'), else 0. */ +/* */ +/******************************************************************************/ +ULONG __FLINT_API +version_l (void) +{ + return (ULONG)((FLINT_VERSION << BITPERDGT) + + (_FLINT_ASM << 8) + _FLINT_SECMOD); +} + + +/******************************************************************************/ +/* */ +/* Function: Show version of FLINT-Library as character string */ +/* Syntax: unsigned long verstr_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pointer to character string with version */ +/* If assembler functions are used, the character 'a' is appended */ +/* to the version number. */ +/* If flint.c was compiled in security mode, the character 's' */ +/* is appended to the version string (default). */ +/* */ +/******************************************************************************/ +char * __FLINT_API +verstr_l (void) +{ + static char s[10]; + sprintf(s, "%d.%.2d", FLINT_VERMAJ, FLINT_VERMIN); + +#ifdef FLINT_ASM + strcat(s, "a"); +#endif + +#ifdef FLINT_SECURE + strcat(s, "s"); +#endif + + return (char *)s; +} + + +/******************************************************************************/ +/* Register-Handling */ +/* Protected Interface */ + +struct clint_registers +{ + unsigned int created; + unsigned int noofregs; + clint **reg_l; +}; + + +/******************************************************************************/ + +static struct clint_registers registers = +{0, 0, 0}; + +static USHORT NoofRegs = NOOFREGS; + +static int +allocate_reg_l (void) +{ + USHORT i, j; + + if ((registers.reg_l = (clint **)malloc (sizeof (clint *) * NoofRegs)) == NULL) + { + return E_CLINT_MAL; + } + + for (i = 0; i < NoofRegs; i++) + { + if ((registers.reg_l[i] = (clint *)malloc (CLINTMAXBYTE)) == NULL) + { + for (j = 0; j < i; j++) + { + free (registers.reg_l[j]); + } + return E_CLINT_MAL; /* Error: malloc */ + } + } + + return E_CLINT_OK; +} + + +/******************************************************************************/ + + +static void +destroy_reg_l (void) +{ + unsigned int i; + + for (i = 0; i < registers.noofregs; i++) + { + memset (registers.reg_l[i], 0, CLINTMAXBYTE); + free (registers.reg_l[i]); + registers.reg_l[i] = NULL; + } + free (registers.reg_l); +} + + +/******************************************************************************/ +/* Register-Handling Public Interface */ + + +/******************************************************************************/ +/* */ +/* Function: Creation of a register of CLINT type */ +/* Syntax: clint * create_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pointer to register */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +create_l (void) +{ + return (clint *)malloc (CLINTMAXBYTE); +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion of a register */ +/* Syntax: void purge_l (CLINT reg_l); */ +/* Input: reg_l (Register) */ +/* Output: All digits of reg_l are overwritten with 0, thus leaving reg_l */ +/* with value 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +purge_l (CLINT reg_l) +{ + if (reg_l != NULL) + { + memset (reg_l, 0, CLINTMAXBYTE); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion of a CLINT variable with double length */ +/* Syntax: void purged_l (CLINTD reg_l); */ +/* Input: reg_l (CLINT variable with double length) */ +/* Output: All digits of reg_l are overwritten with 0, thus leaving reg_l */ +/* with value 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +purged_l (CLINTD reg_l) +{ + if (reg_l != NULL) + { + memset (reg_l, 0, sizeof (CLINTD)); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion of a CLINT variable with quadruple length */ +/* Syntax: void purgeq_l (CLINTQ reg_l); */ +/* Input: reg_l (CLINT variable with quadruple length) */ +/* Output: All digits of reg_l are overwritten with 0, thus leaving reg_l */ +/* with value 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +purgeq_l (CLINTQ reg_l) +{ + if (reg_l != NULL) + { + memset (reg_l, 0, sizeof (CLINTQ)); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion and freeing a CLINT register created by create_l() */ +/* Syntax: void free_l (CLINT reg_l); */ +/* Input: reg_l (Register) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +free_l (CLINT reg_l) +{ + if (reg_l != NULL) + { + memset (reg_l, 0, CLINTMAXBYTE); + free (reg_l); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Adjusting the number of registers in a set */ +/* Syntax: void set_noofregs_l (unsigned int nregs); */ +/* Input: nregs (Number of registers in the set) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +set_noofregs_l (unsigned int nregs) +{ + NoofRegs = (USHORT)nregs; +} + + +/******************************************************************************/ +/* */ +/* Function: Creation of a set of CLINT registers, increment of a semaphore */ +/* Syntax: int create_reg_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_MAL: Error in malloc() */ +/* */ +/******************************************************************************/ +int __FLINT_API +create_reg_l (void) +{ + int error = E_CLINT_OK; + + if (registers.created == 0) + { + error = allocate_reg_l (); + registers.noofregs = NoofRegs; + } + + if (!error) + { + ++registers.created; + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Get a pointer to a register of the set of registers */ +/* Syntax: clint * get_reg_l (unsigned int reg); */ +/* Input: reg (Number of the requested register) */ +/* Output: - */ +/* Returns: Pointer to the requested register if it exists, else NULL */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +get_reg_l (unsigned int reg) +{ + if (!registers.created || (reg >= registers.noofregs)) + { + return (clint *)NULL; + } + + return registers.reg_l[reg]; +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion of a single register in a set of registers */ +/* Syntax: int purge_reg_l (unsigned int reg); */ +/* Input: reg (Number of the register to be deleted) */ +/* Output: All digits of the requested register are overwritten with 0, */ +/* thus leaving the register with value 0 */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_NOR: Registers not allocated */ +/* */ +/******************************************************************************/ +int __FLINT_API +purge_reg_l (unsigned int reg) +{ + if (!registers.created || (reg >= registers.noofregs)) + { + return E_CLINT_NOR; + } + + memset (registers.reg_l[reg], 0, CLINTMAXBYTE); + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion of a set of CLINT registers */ +/* Syntax: int purgeall_reg_l (void); */ +/* Input: - */ +/* Output: All digits of all registers of the set are overwritten */ +/* with 0, thus leaving the registers with value 0 */ +/* Returns: E_CLINT_OK : Everything O.K. */ +/* E_CLINT_NOR: Registers not allocated */ +/* */ +/******************************************************************************/ +int __FLINT_API +purgeall_reg_l (void) +{ + unsigned int i; + + if (registers.created) + { + for (i = 0; i < registers.noofregs; i++) + { + memset (registers.reg_l[i], 0, CLINTMAXBYTE); + } + return E_CLINT_OK; + } + + return E_CLINT_NOR; /* Error: Register not allocated */ +} + + +/******************************************************************************/ +/* */ +/* Function: Deletion and freeing a set of CLINT registers, */ +/* if semaphore == 1 */ +/* Syntax: void free_reg_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +free_reg_l (void) +{ + if (registers.created == 1) + { + destroy_reg_l (); + } + + if (registers.created) + { + --registers.created; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Check of validity of a variable as CLINT type */ +/* Syntax: int vcheck_l (CLINT n_l); */ +/* Input: n_l (CLINT variable to be checked) */ +/* Output: - */ +/* Returns: E_VCHECK_OK : Everything O.K. */ +/* E_VCHECK_MEM: n_l is NULL-Pointer */ +/* E_VCHECK_OFL: Value out of range */ +/* E_VCHECK_LDZ: n_l has leading zeros */ +/* */ +/******************************************************************************/ +int __FLINT_API +vcheck_l (CLINT n_l) +{ + int error = E_VCHECK_OK; + if (n_l == NULL) + { + error = E_VCHECK_MEM; /* n_l is NULL-pointer */ + } + else + { + if (((unsigned int)DIGITS_L (n_l)) > CLINTMAXDIGIT) + { + error = E_VCHECK_OFL; /* Overflow */ + } + else + { + if ((DIGITS_L (n_l) > 0) && (n_l[DIGITS_L (n_l)] == 0)) + { + error = E_VCHECK_LDZ; /* Leading zeros */ + } + } + } + + return error; +} + + +/******************************************************************************/ + + +static clint SEED64[10]; +static clint A64[] = +{0x0004, 0x7f2d, 0x4c95, 0xf42d, 0x5851}; + +static clint BUFF64[100]; + + +/******************************************************************************/ +/* */ +/* Function: Generation of a 64-bit pseudorandom number of CLINT type */ +/* Syntax: clint * rand64_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pointer to 64-bit pseudorandom number of CLINT type */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +rand64_l (void) +{ + mul_l (SEED64, A64, SEED64); + inc_l (SEED64); + + SEED64[0] = MIN (SEED64[0], 4); /* Reduction modulo 2^64 */ + return ((clint *)SEED64); +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type UCHAR */ +/* Syntax: UCHAR ucrand64_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pseudorandom number of type unsigned char */ +/* */ +/******************************************************************************/ +UCHAR __FLINT_API +ucrand64_l (void) +{ + rand64_l(); + return (UCHAR)(SEED64[SEED64[0]] >> (BITPERDGT - 8)); +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type USHORT */ +/* Syntax: USHORT usrand64_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pseudorandom number of type unsigned short */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +usrand64_l (void) +{ + rand64_l(); + return SEED64[SEED64[0]]; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type ULONG */ +/* Syntax: ULONG ulrand64_l (void); */ +/* Input: - */ +/* Output: - */ +/* Returns: Pseudorandom number of type unsigned long */ +/* */ +/******************************************************************************/ +ULONG __FLINT_API +ulrand64_l (void) +{ + ULONG val; + USHORT l; + rand64_l(); + + l = SEED64[0]; + switch (l) + { + case 4: + case 3: + case 2: + val = (ULONG)SEED64[l-1]; + val += ((ULONG)SEED64[l] << BITPERDGT); + break; + case 1: + val = (ULONG)SEED64[l]; + break; + default: + val = 0; + } + + return val; +} + + +/******************************************************************************/ +/* */ +/* Function: Initialization of the 64-bit pseudorandon number generator */ +/* Syntax: clint * seed64_l (CLINT seed_l); */ +/* Input: seed_l (Seed) */ +/* Output: - */ +/* Returns: Pointer to the internal buffer BUFF64, where the previously */ +/* generated value is stored */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +seed64_l (CLINT seed_l) +{ + int i; + cpy_l (BUFF64, SEED64); + for (i = 0; i <= MIN (DIGITS_L (seed_l), 4); i++) + { + SEED64[i] = seed_l[i]; + } + + return BUFF64; +} + + +/******************************************************************************/ +/* */ +/* Function: Initialization of the 64-bit pseudorandon number generator */ +/* with a value of type ULONG */ +/* Syntax: clint * seed64_l (ULONG seed_l); */ +/* Input: seed_l (Seed) */ +/* Output: - */ +/* Returns: Pointer to the internal buffer BUFF64, where the previously */ +/* generated value is stored */ +/* */ +/******************************************************************************/ +clint * __FLINT_API +ulseed64_l (ULONG seed) +{ + cpy_l (BUFF64, SEED64); + ul2clint_l (SEED64, seed); + + return BUFF64; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type CLINT */ +/* (Prior initialization by calling seed64_l() required) */ +/* Syntax: void rand_l (CLINT a_l, int l); */ +/* Input: l (Number of binary digits to be generated) */ +/* Output: a_l (Generated pseudorandom number) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +rand_l (CLINT a_l, int l) +{ + USHORT i, j; + USHORT ls, lr; + + l = MIN ((unsigned int)l, CLINTMAXBIT); + ls = (USHORT)l >> LDBITPERDGT; + lr = (USHORT)l & ((USHORT)BITPERDGT - 1); + + for (i = 1; i <= ls; i++) + { + a_l[i] = usrand64_l (); + } + + if (lr > 0) + { + ++ls; + a_l[ls] = usrand64_l (); + j = 1U << (lr - 1); /* j <- 2^(lr - 1) */ + a_l[ls] = (a_l[ls] | j) & ((j << 1) - 1); /* Set bit lr to 1, higher bits to 0 */ + } + else + { + a_l[ls] |= BASEDIV2; + } + + SETDIGITS_L (a_l, ls); + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (i), &i, + sizeof (j), &j, + sizeof (ls), &ls, + sizeof (lr), &lr)); + + ISPURGED_L ((4, sizeof (i), &i, + sizeof (j), &j, + sizeof (ls), &ls, + sizeof (lr), &lr)); +} +/******************************************************************************/ + + + +/****************************************************************************** + * Private arithmetic kernel functions * + ******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Function: Addition kernel function */ +/* w/o overflow detection, w/o checking for leading zeros */ +/* Syntax: void add (CLINT a_l, CLINT b_l, CLINT s_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: s_l (Sum) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +add (CLINT a_l, CLINT b_l, CLINT s_l) +{ + clint *msdptra_l, *msdptrb_l; + clint *aptr_l, *bptr_l, *sptr_l = LSDPTR_L (s_l); + ULONG carry = 0L; + + if (DIGITS_L (a_l) < DIGITS_L (b_l)) + { + aptr_l = LSDPTR_L (b_l); + bptr_l = LSDPTR_L (a_l); + msdptra_l = MSDPTR_L (b_l); + msdptrb_l = MSDPTR_L (a_l); + SETDIGITS_L (s_l, DIGITS_L (b_l)); + } + else + { + aptr_l = LSDPTR_L (a_l); + bptr_l = LSDPTR_L (b_l); + msdptra_l = MSDPTR_L (a_l); + msdptrb_l = MSDPTR_L (b_l); + SETDIGITS_L (s_l, DIGITS_L (a_l)); + } + + while (bptr_l <= msdptrb_l) + { + *sptr_l++ = (USHORT)(carry = (ULONG)*aptr_l++ + (ULONG)*bptr_l++ + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + while (aptr_l <= msdptra_l) + { + *sptr_l++ = (USHORT)(carry = (ULONG)*aptr_l++ + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + if (carry & BASE) + { + *sptr_l = 1; + INCDIGITS_L (s_l); + } + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); +} + + +/******************************************************************************/ +/* */ +/* Function: Subtraction kernel function */ +/* w/o overflow detection, w/o checking for leading zeros */ +/* Syntax: void sub (CLINT a_l, CLINT b_l, CLINT d_l); */ +/* Input: a_l, b_l (Operands) */ +/* Output: d_l (Difference) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sub (CLINT a_l, CLINT b_l, CLINT d_l) +{ + clint *msdptra_l, *msdptrb_l; + clint *aptr_l = LSDPTR_L (a_l), *bptr_l = LSDPTR_L (b_l), *dptr_l = LSDPTR_L (d_l); + ULONG carry = 0L; + + msdptra_l = MSDPTR_L (a_l); + msdptrb_l = MSDPTR_L (b_l); + + SETDIGITS_L (d_l, DIGITS_L (a_l)); + + while (bptr_l <= msdptrb_l) + { + *dptr_l++ = (USHORT)(carry = (ULONG)*aptr_l++ - (ULONG)*bptr_l++ + - ((carry & BASE) >> BITPERDGT)); + } + + while (aptr_l <= msdptra_l) + { + *dptr_l++ = (USHORT)(carry = (ULONG)*aptr_l++ + - ((carry & BASE) >> BITPERDGT)); + } + + RMLDZRS_L (d_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); +} + + +#if !defined FLINT_ASM +/******************************************************************************/ +/* */ +/* Function: Multiplication kernel function */ +/* w/o overflow detection, w/o checking for leading zeros */ +/* accumulator mode not supported */ +/* Syntax: void mult (CLINT aa_l, CLINT bb_l, CLINT p_l); */ +/* Input: aa_l, bb_l (Factors) */ +/* Output: p_l (Product) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +mult (CLINT aa_l, CLINT bb_l, CLINT p_l) /* Allow for double length result */ +{ + register clint *cptr_l, *bptr_l; + clint *a_l, *b_l, *aptr_l, *csptr_l, *msdptra_l, *msdptrb_l; + USHORT av; + ULONG carry; + + if (EQZ_L (aa_l) || EQZ_L (bb_l)) + { + SETZERO_L (p_l); + return; + } + + if (DIGITS_L (aa_l) < DIGITS_L (bb_l)) + { + a_l = bb_l; + b_l = aa_l; + } + else + { + a_l = aa_l; + b_l = bb_l; + } + + msdptra_l = MSDPTR_L (a_l); + msdptrb_l = MSDPTR_L (b_l); + + carry = 0; + av = *LSDPTR_L (a_l); + for (bptr_l = LSDPTR_L (b_l), cptr_l = LSDPTR_L (p_l); bptr_l <= msdptrb_l; bptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)av * (ULONG)*bptr_l + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + + for (csptr_l = LSDPTR_L (p_l) + 1, aptr_l = LSDPTR_L (a_l) + 1; aptr_l <= msdptra_l; csptr_l++, aptr_l++) + { + carry = 0; + av = *aptr_l; + for (bptr_l = LSDPTR_L (b_l), cptr_l = csptr_l; bptr_l <= msdptrb_l; bptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)av * (ULONG)*bptr_l + + (ULONG)*cptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + } + + SETDIGITS_L (p_l, DIGITS_L (a_l) + DIGITS_L (b_l)); + RMLDZRS_L (p_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (carry), &carry, + sizeof (av), &av)); + + ISPURGED_L ((2, sizeof (carry), &carry, + sizeof (av), &av)); +} + + +/******************************************************************************/ +/* */ +/* Function: Multiplication kernel function (CLINT type) * (USHORT type) */ +/* w/o overflow detection, w/o checking for leading zeros */ +/* accumulator mode not supported */ +/* Syntax: void umul (CLINT a_l, USHORT b, CLINT p_l); */ +/* Input: a_l, b (Factors) */ +/* Output: p_l (Product) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +umul (CLINT a_l, USHORT b, CLINT p_l) /* Allow for double length result */ +{ + register clint *aptr_l, *cptr_l; + clint *msdptra_l; + ULONG carry; + + if (EQZ_L (a_l) || 0 == b) + { + SETZERO_L (p_l); + return; + } + + msdptra_l = MSDPTR_L (a_l); + + carry = 0; + for (aptr_l = LSDPTR_L (a_l), cptr_l = LSDPTR_L (p_l); aptr_l <= msdptra_l; aptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)b * (ULONG)*aptr_l + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + + SETDIGITS_L (p_l, DIGITS_L (a_l) + 1); + RMLDZRS_L (p_l); + + /* Purging of variables */ + PURGEVARS_L ((1, sizeof (carry), &carry)); + ISPURGED_L ((1, sizeof (carry), &carry)); +} + + +/******************************************************************************/ +/* */ +/* Function: Squaring kernel function */ +/* w/o overflow detection, w/o checking for leading zeros */ +/* accumulator mode not supported */ +/* Syntax: void sqr (CLINT a_l, CLINT r_l); */ +/* Input: a_l (Factor) */ +/* Output: p_l (Square) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sqr (CLINT a_l, CLINT p_l) /* Allow for double length result */ +{ + register clint *cptr_l, *bptr_l; + clint *aptr_l, *csptr_l, *msdptra_l, *msdptrb_l, *msdptrc_l; + USHORT av; + ULONG carry; + + if (EQZ_L (a_l)) + { + SETZERO_L (p_l); + return; + } + + msdptrb_l = MSDPTR_L (a_l); + msdptra_l = msdptrb_l - 1; + *LSDPTR_L (p_l) = 0; + carry = 0; + av = *LSDPTR_L (a_l); + for (bptr_l = LSDPTR_L (a_l) + 1, cptr_l = LSDPTR_L (p_l) + 1; bptr_l <= msdptrb_l; bptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)av * (ULONG)*bptr_l + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + + for (aptr_l = LSDPTR_L (a_l) + 1, csptr_l = LSDPTR_L (p_l) + 3; aptr_l <= msdptra_l; aptr_l++, csptr_l += 2) + { + carry = 0; + av = *aptr_l; + for (bptr_l = aptr_l + 1, cptr_l = csptr_l; bptr_l <= msdptrb_l; bptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)av * (ULONG)*bptr_l + + (ULONG)*cptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + } + + msdptrc_l = cptr_l; + carry = 0; + for (cptr_l = LSDPTR_L (p_l); cptr_l <= msdptrc_l; cptr_l++) + { + *cptr_l = (USHORT)(carry = (((ULONG)*cptr_l) << 1) + + (ULONG)(USHORT)(carry >> BITPERDGT)); + } + *cptr_l = (USHORT)(carry >> BITPERDGT); + + carry = 0; + for (bptr_l = LSDPTR_L (a_l), cptr_l = LSDPTR_L (p_l); bptr_l <= msdptrb_l; bptr_l++, cptr_l++) + { + *cptr_l = (USHORT)(carry = (ULONG)*bptr_l * (ULONG)*bptr_l + + (ULONG)*cptr_l + (ULONG)(USHORT)(carry >> BITPERDGT)); + cptr_l++; + *cptr_l = (USHORT)(carry = (ULONG)*cptr_l + (carry >> BITPERDGT)); + } + + SETDIGITS_L (p_l, DIGITS_L (a_l) << 1); + RMLDZRS_L (p_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (carry), &carry, + sizeof (av), &av)); + + ISPURGED_L ((2, sizeof (carry), &carry, + sizeof (av), &av)); +} + +#endif /* FLINT_ASM */ + + +/******************************************************************************/ +/* */ +/* Function: Addition with sign */ +/* Syntax: int sadd (CLINT a_l, int sign_a, CLINT b_l, int sign_b, */ +/* CLINT c_l); */ +/* Input: a_l (Operand), sign_a (Sign a_l), b_l (Operand), */ +/* sign_b (Sign b_l) */ +/* Output: c_l (Sum) */ +/* Returns: Sign of sum c_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +sadd (CLINT a_l, int sign_a, CLINT b_l, int sign_b, CLINT c_l) +{ + int sign_c; + + Assert (sign_a == 1 || sign_a == -1); + Assert (sign_b == 1 || sign_b == -1); + + if (1 == sign_a) + { + if (1 == sign_b) /* a + b */ + { + add (a_l, b_l, c_l); + sign_c = 1; + } + else /* -1 == sign_b, a - b */ + { + if (LT_L (a_l, b_l)) + { + sub (b_l, a_l, c_l); + sign_c = -1; + } + else + { + sub (a_l, b_l, c_l); + sign_c = 1; + } + } + } + else /* -1 == sign_a */ + { + if (1 == sign_b) /* b - a */ + { + if (LT_L (b_l, a_l)) + { + sub (a_l, b_l, c_l); + sign_c = -1; + } + else + { + sub (b_l, a_l, c_l); + sign_c = 1; + } + } + else /* -1 == sign_b, -(a + b) */ + { + add (a_l, b_l, c_l); + sign_c = -1; + } + } + + return sign_c; +} + + +/******************************************************************************/ +/* */ +/* Function: Subtraction with sign */ +/* Syntax: int ssub (CLINT a_l, int sign_a, CLINT b_l, int sign_b, */ +/* CLINT c_l); */ +/* Input: a_l (Operand), sign_a (Sign a_l), b_l (Operand), */ +/* sign_b (Sign b_l) */ +/* Output: c_l (Difference) */ +/* Returns: Sign of difference c_l */ +/* */ +/******************************************************************************/ +int __FLINT_API +ssub (CLINT a_l, int sign_a, CLINT b_l, int sign_b, CLINT c_l) +{ + int sign_c; + + Assert (sign_a == 1 || sign_a == -1); + Assert (sign_b == 1 || sign_b == -1); + + if (1 == sign_a) + { + if (1 == sign_b) /* a - b */ + { + if (LT_L (a_l, b_l)) + { + sub (b_l, a_l, c_l); + sign_c = -1; + } + else + { + sub (a_l, b_l, c_l); + sign_c = 1; + } + } + else /* -1 == sign_b, a + b */ + { + add (a_l, b_l, c_l); + sign_c = 1; + } + } + else /* -1 == sign_a */ + { + if (1 == sign_b) /* -(a + b) */ + { + add (a_l, b_l, c_l); + sign_c = -1; + } + else /* -1 == sign_b, b - a) */ + { + if (LT_L (b_l, a_l)) + { + sub (a_l, b_l, c_l); + sign_c = -1; + } + else + { + sub (b_l, a_l, c_l); + sign_c = 1; + } + } + } + + return sign_c; +} + + +/******************************************************************************/ +/* */ +/* Function: Reduction a mod b, a signed */ +/* Syntax: int smod (CLINT a_l, int sign_a, CLINT b_l, CLINT c_l); */ +/* Input: a_l (Dividend), sign_a (sign a_l), b_l (Divisor) */ +/* Output: c_l (Remainder a_l mod b_l) */ +/* Returns: sign of remainder = 1 */ +/* */ +/******************************************************************************/ +int __FLINT_API +smod (CLINT a_l, int sign_a, CLINT b_l, CLINT c_l) +{ + CLINT q_l, r_l; + + if (EQZ_L (b_l)) + { + return E_CLINT_DBZ; + } + + div_l (a_l, b_l, q_l, r_l); + + if ((-1 == sign_a) && GTZ_L (r_l)) + { + sub_l (b_l, r_l, r_l); + } + + cpy_l (c_l, r_l); + + /* Purging of variables */ + PURGEVARS_L ((2, sizeof (q_l), q_l, + sizeof (r_l), r_l)); + + ISPURGED_L ((2, sizeof (q_l), q_l, + sizeof (r_l), r_l)); + + return 1; +} + + +/******************************************************************************/ +/* */ +/* Function: Sieve of Eratosthenes */ +/* Syntax: ULONG * genprimes (ULONG N); */ +/* Input: N (Upper bound for prime numbers to be generated) */ +/* Output: - */ +/* Returns: Pointer to array of type ULONG, containing prime numbers <= N */ +/* Array position 0 stores number of primes found */ +/* NULL: Memory allocation error */ +/* */ +/******************************************************************************/ +ULONG * __FLINT_API +genprimes (ULONG N) +{ + ULONG i, k, p, s, L, B, count; + char *f; + ULONG *primes; + + B = (1 + ul_iroot (N)) >> 1; + L = N >> 1; + if (((N&1) == 0) && (N > 0)) + { + --L; + } + + if ((f = (char *)malloc ((size_t)L+1)) == NULL) + { + return (ULONG *)NULL; + } + + for (i = 1; i <= L; i++) + { + f[i] = 1; + } + + p = 3; + s = 4; + for (i = 1; i <= B; i++) + { + if (f[i]) + { + for (k = s; k <= L; k += p) + { + f[k] = 0; + } + } + s += p + p + 2; + p += 2; + } + + for (count = i = 1; i <= L; i++) + { + count += f[i]; + } + + if ((primes = (ULONG*)malloc ((size_t)(count+1) * sizeof (ULONG))) == NULL) + { + free (f); + return (ULONG *)NULL; + } + + for (count = i = 1; i <= L; i++) + { + if (f[i]) + { + ++count; + primes[count] = (i << 1) + 1; /*lint !e796 !e797 */ + } + } + + if (N < 2) + { + primes[0] = 0; + } + else + { + primes[0] = count; + primes[1] = 2; /*lint !e796 */ + } + free (f); + + return primes; +} + + + +/******************************************************************************/ +/* */ +/* Auxiliary Functions */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Function: Integer square root of a number of type ULONG */ +/* Syntax: ULONG ul_iroot (ULONG n); */ +/* Input: n */ +/* Output: - */ +/* Returns: Integer square root of n */ +/* */ +/******************************************************************************/ +static ULONG +ul_iroot (ULONG n) +{ + ULONG x = 1, y = 0; + if (0 == n) + { + return 0; + } + + while (y <= n) + { + x = x << 1; + y = x * x; + } + do + { + y = x; + x = (x * x + n) / (2 * x); + } + while (x < y); + + y = 0; + return x; +} + + +/******************************************************************************/ +/* */ +/* Function: Testing and setting of a single bit */ +/* Syntax: int setbit (CLINT a_l, unsigned int pos); */ +/* Input: a_l (Argument), */ +/* pos (Position of the bit to be set in a_l, leftmost position */ +/* is 0) */ +/* Output: a_l, bit in position pos set to 1 */ +/* Returns: 1: bit in position pos had value 1 before it was set */ +/* 0: else */ +/* */ +/******************************************************************************/ +static int +setbit (CLINT a_l, unsigned int pos) +{ + int res = 0; + unsigned int i; + USHORT shortpos = (USHORT)(pos >> LDBITPERDGT); + USHORT bitpos = (USHORT)(pos & (BITPERDGT - 1)); + USHORT m = (USHORT)(1U << bitpos); + + if (shortpos >= DIGITS_L (a_l)) + { + /* Fill up with 0 to the requested bitposition */ + for (i = DIGITS_L (a_l) + 1; i <= shortpos + 1U; i++) + { + a_l[i] = 0; + } + + /* Set new length */ + SETDIGITS_L (a_l, shortpos + 1); + } + + /* Test bit */ + if (a_l[shortpos + 1] & m) + { + res = 1; + } + + /* Set bit */ + a_l[shortpos + 1] |= m; + + /* Purging of variables */ + PURGEVARS_L ((4, sizeof (i), &i, + sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos, + sizeof (m), &m)); + + ISPURGED_L ((4, sizeof (i), &i, + sizeof (shortpos), &shortpos, + sizeof (bitpos), &bitpos, + sizeof (m), &m)); + + return res; +} + + +/******************************************************************************/ +/* */ +/* Function: Reversal of a character string */ +/* Syntax: char *strrev_l (char *str); */ +/* Input: str (Pointer to character string) */ +/* Output: str (Reversed character string) */ +/* Returns: Pointer to reversed character string */ +/* */ +/******************************************************************************/ +char * __FLINT_API +strrev_l (char *str) +{ + char help; + char *anfang = str; + char *ende = str + strlen (str) - 1; /* '\0' bleibt am Platz */ + + for (; ende > anfang; ende--, anfang++) + { + help = *anfang; + *anfang = *ende; + *ende = help; + } + + return str; +} + + +/******************************************************************************/ +/* */ +/* Function: Safe tolower function */ +/* Syntax: int tolower_l (int c); */ +/* Input: c (ASCII character) */ +/* Output: - */ +/* Returns: Lowercase character, if c is uppercase */ +/* */ +/******************************************************************************/ +int __FLINT_API +tolower_l (int c) +{ + if (isupper (c)) + { + return tolower (c); + } + else + { + return c; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Safe toupper function */ +/* Syntax: int toupper_l (int c); */ +/* Input: c (ASCII character) */ +/* Output: - */ +/* Returns: Uppercase character if c is lowercase */ +/* */ +/******************************************************************************/ +int __FLINT_API +toupper_l (int c) +{ + if (islower (c)) + { + return toupper (c); + } + else + { + return c; + } +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a character string to lowercase */ +/* Syntax: int strupr_l (char *str); */ +/* Input: str (Pointer to ASCIIZ character string) */ +/* Output: Converted character string */ +/* Returns: Pointer to converted character string */ +/* */ +/******************************************************************************/ +char * __FLINT_API +strlwr_l (char *str) +{ + unsigned int i; + + for (i = 0 ; i < (unsigned int)strlen (str); i++) + { + str[i] = (char)tolower_l (str[i]); + } + + return str; +} + + +/******************************************************************************/ +/* */ +/* Function: Conversion of a character string to uppercase */ +/* Syntax: int strupr_l (char *str); */ +/* Input: str (Pointer to ASCIIZ character string) */ +/* Output: Converted character string */ +/* Returns: Pointer to converted character string */ +/* */ +/******************************************************************************/ +char * __FLINT_API +strupr_l (char *str) +{ + unsigned int i; + for (i = 0 ; i < (unsigned int)strlen (str) ; i++) + { + str[i] = (char)toupper_l (str[i]); + } + return str; +} + + +/******************************************************************************/ +/* */ +/* Function: Representation of a value of type ULONG as a character string */ +/* Syntax: char *ultoa_l (char *str, ULONG ul, int base); */ +/* Input: str (Pointer to buffer for character string) */ +/* ul (Value of type ULONG to be represented as string) */ +/* base (Base for the representation, 2 <= base <= 16) */ +/* Output: ASCIIZ string with character representation of ul to base */ +/* Returns: Pointer str to buffer */ +/* NULL, if base < 2 or base > 16 */ +/* */ +/******************************************************************************/ +char * __FLINT_API +ultoa_l (char *str, ULONG ul, int base) +{ + int i = 0, j; + + if ((base < 2) || (base > 16)) + { + return (char *)NULL; + } + + do + { + j = ul % (unsigned int)(base + '0'); + if (j > (int)'9') + { + j += (int)('a' - '9') - 1; + } + str[i++] = j; + } + while ((ul /= (unsigned int)base) != 0); + str[i] = '\0'; + return (strrev_l (str)); +} + + +#ifdef FLINT_SECURE +#include +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* This function can be called for purging variables by */ +/* overwriting with 0. This works even in cases where compiler */ +/* optimization is used, which typically causes assignments to */ +/* variables or calls to memset() for automatic CLINT variables */ +/* at the end of of a function to be ignored. */ +/* Syntax: static void purgevars_l (int noofvars, ...); */ +/* Input: noofvars (Number of following pairs of arguments) */ +/* ... (noofvars pairs of (sizeof (var), (type *)var)) */ +/* Output: purged variable *var */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void purgevars_l (int noofvars, ...) +{ + va_list ap; + size_t size; + va_start (ap, noofvars); + for (; noofvars > 0; --noofvars) + { + switch (size = va_arg (ap, size_t)) + { + case 1: *va_arg (ap, char *) = 0; + break; + case 2: *va_arg (ap, short *) = 0; + break; + case 4: *va_arg (ap, long *) = 0; + break; + default: Assert (size >= CLINTMAXBYTE); + memset (va_arg(ap, char *), 0, size); + } + } + va_end (ap); +} + +#ifdef FLINT_DEBUG +/******************************************************************************/ +/* */ +/* Function: Check whether variables are purged with 0 */ +/* Syntax: static int ispurged_l (int noofvars, ...); */ +/* Input: noofvars (Number of followign pairs of arguments) */ +/* ... (noofvars pairs of (sizeof (var), (typ *)var)) */ +/* Output: - */ +/* Returns: 1 if the arguments are purged with 0 */ +/* 0 else */ +/* */ +/******************************************************************************/ +static int ispurged_l (int noofvars, ...) +{ + va_list ap; + size_t size; + char *cptr; + va_start (ap, noofvars); + for (; noofvars > 0; --noofvars) + { + size = va_arg (ap, size_t); + cptr = va_arg(ap, char *); + for (; size > 0; size--) + { + if (0 != *cptr++) return 0; + } + } + va_end (ap); + return 1; +} +#endif /* FLINT_DEBUG */ +#endif /* FLINT_SECURE */ + +/******************************************************************************/ + +/* Differences of the first 6542 prime numbers */ +/* 2, 2 + 1 = 3, 3 + 2 = 5, 5 + 2 = 7, 7 + 4 = 11 etc until 65519 + 2 = 65521 */ + +USHORT __FLINT_API_DATA smallprimes[NOOFSMALLPRIMES] = +{ 2, 1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4, 6, 6, 2, 6, 4, 2, + 6, 4, 6, 8, 4, 2, 4, 2, 4, 14, 4, 6, 2, 10, 2, 6, 6, 4, 6, 6, + 2, 10, 2, 4, 2, 12, 12, 4, 2, 4, 6, 2, 10, 6, 6, 6, 2, 6, 4, 2, + 10, 14, 4, 2, 4, 14, 6, 10, 2, 4, 6, 8, 6, 6, 4, 6, 8, 4, 8, 10, + 2, 10, 2, 6, 4, 6, 8, 4, 2, 4, 12, 8, 4, 8, 4, 6, 12, 2, 18, 6, + 10, 6, 6, 2, 6, 10, 6, 6, 2, 6, 6, 4, 2, 12, 10, 2, 4, 6, 6, 2, + 12, 4, 6, 8, 10, 8, 10, 8, 6, 6, 4, 8, 6, 4, 8, 4, 14, 10, 12, 2, + 10, 2, 4, 2, 10, 14, 4, 2, 4, 14, 4, 2, 4, 20, 4, 8, 10, 8, 4, 6, + 6, 14, 4, 6, 6, 8, 6, 12, 4, 6, 2, 10, 2, 6, 10, 2, 10, 2, 6, 18, + 4, 2, 4, 6, 6, 8, 6, 6, 22, 2, 10, 8, 10, 6, 6, 8, 12, 4, 6, 6, + 2, 6, 12, 10, 18, 2, 4, 6, 2, 6, 4, 2, 4, 12, 2, 6, 34, 6, 6, 8, + 18, 10, 14, 4, 2, 4, 6, 8, 4, 2, 6, 12, 10, 2, 4, 2, 4, 6, 12, 12, + 8, 12, 6, 4, 6, 8, 4, 8, 4, 14, 4, 6, 2, 4, 6, 2, 6, 10, 20, 6, + 4, 2, 24, 4, 2, 10, 12, 2, 10, 8, 6, 6, 6, 18, 6, 4, 2, 12, 10, 12, + 8, 16, 14, 6, 4, 2, 4, 2, 10, 12, 6, 6, 18, 2, 16, 2, 22, 6, 8, 6, + 4, 2, 4, 8, 6, 10, 2, 10, 14, 10, 6, 12, 2, 4, 2, 10, 12, 2, 16, 2, + 6, 4, 2, 10, 8, 18, 24, 4, 6, 8, 16, 2, 4, 8, 16, 2, 4, 8, 6, 6, + 4, 12, 2, 22, 6, 2, 6, 4, 6, 14, 6, 4, 2, 6, 4, 6, 12, 6, 6, 14, + 4, 6, 12, 8, 6, 4, 26, 18, 10, 8, 4, 6, 2, 6, 22, 12, 2, 16, 8, 4, + 12, 14, 10, 2, 4, 8, 6, 6, 4, 2, 4, 6, 8, 4, 2, 6, 10, 2, 10, 8, + 4, 14, 10, 12, 2, 6, 4, 2, 16, 14, 4, 6, 8, 6, 4, 18, 8, 10, 6, 6, + 8, 10, 12, 14, 4, 6, 6, 2, 28, 2, 10, 8, 4, 14, 4, 8, 12, 6, 12, 4, + 6, 20, 10, 2, 16, 26, 4, 2, 12, 6, 4, 12, 6, 8, 4, 8, 22, 2, 4, 2, + 12, 28, 2, 6, 6, 6, 4, 6, 2, 12, 4, 12, 2, 10, 2, 16, 2, 16, 6, 20, + 16, 8, 4, 2, 4, 2, 22, 8, 12, 6, 10, 2, 4, 6, 2, 6, 10, 2, 12, 10, + 2, 10, 14, 6, 4, 6, 8, 6, 6, 16, 12, 2, 4, 14, 6, 4, 8, 10, 8, 6, + 6, 22, 6, 2, 10, 14, 4, 6, 18, 2, 10, 14, 4, 2, 10, 14, 4, 8, 18, 4, + 6, 2, 4, 6, 2, 12, 4, 20, 22, 12, 2, 4, 6, 6, 2, 6, 22, 2, 6, 16, + 6, 12, 2, 6, 12, 16, 2, 4, 6, 14, 4, 2, 18, 24, 10, 6, 2, 10, 2, 10, + 2, 10, 6, 2, 10, 2, 10, 6, 8, 30, 10, 2, 10, 8, 6, 10, 18, 6, 12, 12, + 2, 18, 6, 4, 6, 6, 18, 2, 10, 14, 6, 4, 2, 4, 24, 2, 12, 6, 16, 8, + 6, 6, 18, 16, 2, 4, 6, 2, 6, 6, 10, 6, 12, 12, 18, 2, 6, 4, 18, 8, + 24, 4, 2, 4, 6, 2, 12, 4, 14, 30, 10, 6, 12, 14, 6, 10, 12, 2, 4, 6, + 8, 6, 10, 2, 4, 14, 6, 6, 4, 6, 2, 10, 2, 16, 12, 8, 18, 4, 6, 12, + 2, 6, 6, 6, 28, 6, 14, 4, 8, 10, 8, 12, 18, 4, 2, 4, 24, 12, 6, 2, + 16, 6, 6, 14, 10, 14, 4, 30, 6, 6, 6, 8, 6, 4, 2, 12, 6, 4, 2, 6, + 22, 6, 2, 4, 18, 2, 4, 12, 2, 6, 4, 26, 6, 6, 4, 8, 10, 32, 16, 2, + 6, 4, 2, 4, 2, 10, 14, 6, 4, 8, 10, 6, 20, 4, 2, 6, 30, 4, 8, 10, + 6, 6, 8, 6, 12, 4, 6, 2, 6, 4, 6, 2, 10, 2, 16, 6, 20, 4, 12, 14, + 28, 6, 20, 4, 18, 8, 6, 4, 6, 14, 6, 6, 10, 2, 10, 12, 8, 10, 2, 10, + 8, 12, 10, 24, 2, 4, 8, 6, 4, 8, 18, 10, 6, 6, 2, 6, 10, 12, 2, 10, + 6, 6, 6, 8, 6, 10, 6, 2, 6, 6, 6, 10, 8, 24, 6, 22, 2, 18, 4, 8, + 10, 30, 8, 18, 4, 2, 10, 6, 2, 6, 4, 18, 8, 12, 18, 16, 6, 2, 12, 6, + 10, 2, 10, 2, 6, 10, 14, 4, 24, 2, 16, 2, 10, 2, 10, 20, 4, 2, 4, 8, + 16, 6, 6, 2, 12, 16, 8, 4, 6, 30, 2, 10, 2, 6, 4, 6, 6, 8, 6, 4, + 12, 6, 8, 12, 4, 14, 12, 10, 24, 6, 12, 6, 2, 22, 8, 18, 10, 6, 14, 4, + 2, 6, 10, 8, 6, 4, 6, 30, 14, 10, 2, 12, 10, 2, 16, 2, 18, 24, 18, 6, + 16, 18, 6, 2, 18, 4, 6, 2, 10, 8, 10, 6, 6, 8, 4, 6, 2, 10, 2, 12, + 4, 6, 6, 2, 12, 4, 14, 18, 4, 6, 20, 4, 8, 6, 4, 8, 4, 14, 6, 4, + 14, 12, 4, 2, 30, 4, 24, 6, 6, 12, 12, 14, 6, 4, 2, 4, 18, 6, 12, 8, + 6, 4, 12, 2, 12, 30, 16, 2, 6, 22, 14, 6, 10, 12, 6, 2, 4, 8, 10, 6, + 6, 24, 14, 6, 4, 8, 12, 18, 10, 2, 10, 2, 4, 6, 20, 6, 4, 14, 4, 2, + 4, 14, 6, 12, 24, 10, 6, 8, 10, 2, 30, 4, 6, 2, 12, 4, 14, 6, 34, 12, + 8, 6, 10, 2, 4, 20, 10, 8, 16, 2, 10, 14, 4, 2, 12, 6, 16, 6, 8, 4, + 8, 4, 6, 8, 6, 6, 12, 6, 4, 6, 6, 8, 18, 4, 20, 4, 12, 2, 10, 6, + 2, 10, 12, 2, 4, 20, 6, 30, 6, 4, 8, 10, 12, 6, 2, 28, 2, 6, 4, 2, + 16, 12, 2, 6, 10, 8, 24, 12, 6, 18, 6, 4, 14, 6, 4, 12, 8, 6, 12, 4, + 6, 12, 6, 12, 2, 16, 20, 4, 2, 10, 18, 8, 4, 14, 4, 2, 6, 22, 6, 14, + 6, 6, 10, 6, 2, 10, 2, 4, 2, 22, 2, 4, 6, 6, 12, 6, 14, 10, 12, 6, + 8, 4, 36, 14, 12, 6, 4, 6, 2, 12, 6, 12, 16, 2, 10, 8, 22, 2, 12, 6, + 4, 6, 18, 2, 12, 6, 4, 12, 8, 6, 12, 4, 6, 12, 6, 2, 12, 12, 4, 14, + 6, 16, 6, 2, 10, 8, 18, 6, 34, 2, 28, 2, 22, 6, 2, 10, 12, 2, 6, 4, + 8, 22, 6, 2, 10, 8, 4, 6, 8, 4, 12, 18, 12, 20, 4, 6, 6, 8, 4, 2, + 16, 12, 2, 10, 8, 10, 2, 4, 6, 14, 12, 22, 8, 28, 2, 4, 20, 4, 2, 4, + 14, 10, 12, 2, 12, 16, 2, 28, 8, 22, 8, 4, 6, 6, 14, 4, 8, 12, 6, 6, + 4, 20, 4, 18, 2, 12, 6, 4, 6, 14, 18, 10, 8, 10, 32, 6, 10, 6, 6, 2, + 6, 16, 6, 2, 12, 6, 28, 2, 10, 8, 16, 6, 8, 6, 10, 24, 20, 10, 2, 10, + 2, 12, 4, 6, 20, 4, 2, 12, 18, 10, 2, 10, 2, 4, 20, 16, 26, 4, 8, 6, + 4, 12, 6, 8, 12, 12, 6, 4, 8, 22, 2, 16, 14, 10, 6, 12, 12, 14, 6, 4, + 20, 4, 12, 6, 2, 6, 6, 16, 8, 22, 2, 28, 8, 6, 4, 20, 4, 12, 24, 20, + 4, 8, 10, 2, 16, 2, 12, 12, 34, 2, 4, 6, 12, 6, 6, 8, 6, 4, 2, 6, + 24, 4, 20, 10, 6, 6, 14, 4, 6, 6, 2, 12, 6, 10, 2, 10, 6, 20, 4, 26, + 4, 2, 6, 22, 2, 24, 4, 6, 2, 4, 6, 24, 6, 8, 4, 2, 34, 6, 8, 16, + 12, 2, 10, 2, 10, 6, 8, 4, 8, 12, 22, 6, 14, 4, 26, 4, 2, 12, 10, 8, + 4, 8, 12, 4, 14, 6, 16, 6, 8, 4, 6, 6, 8, 6, 10, 12, 2, 6, 6, 16, + 8, 6, 6, 12, 10, 2, 6, 18, 4, 6, 6, 6, 12, 18, 8, 6, 10, 8, 18, 4, + 14, 6, 18, 10, 8, 10, 12, 2, 6, 12, 12, 36, 4, 6, 8, 4, 6, 2, 4, 18, + 12, 6, 8, 6, 6, 4, 18, 2, 4, 2, 24, 4, 6, 6, 14, 30, 6, 4, 6, 12, + 6, 20, 4, 8, 4, 8, 6, 6, 4, 30, 2, 10, 12, 8, 10, 8, 24, 6, 12, 4, + 14, 4, 6, 2, 28, 14, 16, 2, 12, 6, 4, 20, 10, 6, 6, 6, 8, 10, 12, 14, + 10, 14, 16, 14, 10, 14, 6, 16, 6, 8, 6, 16, 20, 10, 2, 6, 4, 2, 4, 12, + 2, 10, 2, 6, 22, 6, 2, 4, 18, 8, 10, 8, 22, 2, 10, 18, 14, 4, 2, 4, + 18, 2, 4, 6, 8, 10, 2, 30, 4, 30, 2, 10, 2, 18, 4, 18, 6, 14, 10, 2, + 4, 20, 36, 6, 4, 6, 14, 4, 20, 10, 14, 22, 6, 2, 30, 12, 10, 18, 2, 4, + 14, 6, 22, 18, 2, 12, 6, 4, 8, 4, 8, 6, 10, 2, 12, 18, 10, 14, 16, 14, + 4, 6, 6, 2, 6, 4, 2, 28, 2, 28, 6, 2, 4, 6, 14, 4, 12, 14, 16, 14, + 4, 6, 8, 6, 4, 6, 6, 6, 8, 4, 8, 4, 14, 16, 8, 6, 4, 12, 8, 16, + 2, 10, 8, 4, 6, 26, 6, 10, 8, 4, 6, 12, 14, 30, 4, 14, 22, 8, 12, 4, + 6, 8, 10, 6, 14, 10, 6, 2, 10, 12, 12, 14, 6, 6, 18, 10, 6, 8, 18, 4, + 6, 2, 6, 10, 2, 10, 8, 6, 6, 10, 2, 18, 10, 2, 12, 4, 6, 8, 10, 12, + 14, 12, 4, 8, 10, 6, 6, 20, 4, 14, 16, 14, 10, 8, 10, 12, 2, 18, 6, 12, + 10, 12, 2, 4, 2, 12, 6, 4, 8, 4, 44, 4, 2, 4, 2, 10, 12, 6, 6, 14, + 4, 6, 6, 6, 8, 6, 36, 18, 4, 6, 2, 12, 6, 6, 6, 4, 14, 22, 12, 2, + 18, 10, 6, 26, 24, 4, 2, 4, 2, 4, 14, 4, 6, 6, 8, 16, 12, 2, 42, 4, + 2, 4, 24, 6, 6, 2, 18, 4, 14, 6, 28, 18, 14, 6, 10, 12, 2, 6, 12, 30, + 6, 4, 6, 6, 14, 4, 2, 24, 4, 6, 6, 26, 10, 18, 6, 8, 6, 6, 30, 4, + 12, 12, 2, 16, 2, 6, 4, 12, 18, 2, 6, 4, 26, 12, 6, 12, 4, 24, 24, 12, + 6, 2, 12, 28, 8, 4, 6, 12, 2, 18, 6, 4, 6, 6, 20, 16, 2, 6, 6, 18, + 10, 6, 2, 4, 8, 6, 6, 24, 16, 6, 8, 10, 6, 14, 22, 8, 16, 6, 2, 12, + 4, 2, 22, 8, 18, 34, 2, 6, 18, 4, 6, 6, 8, 10, 8, 18, 6, 4, 2, 4, + 8, 16, 2, 12, 12, 6, 18, 4, 6, 6, 6, 2, 6, 12, 10, 20, 12, 18, 4, 6, + 2, 16, 2, 10, 14, 4, 30, 2, 10, 12, 2, 24, 6, 16, 8, 10, 2, 12, 22, 6, + 2, 16, 20, 10, 2, 12, 12, 18, 10, 12, 6, 2, 10, 2, 6, 10, 18, 2, 12, 6, + 4, 6, 2, 24, 28, 2, 4, 2, 10, 2, 16, 12, 8, 22, 2, 6, 4, 2, 10, 6, + 20, 12, 10, 8, 12, 6, 6, 6, 4, 18, 2, 4, 12, 18, 2, 12, 6, 4, 2, 16, + 12, 12, 14, 4, 8, 18, 4, 12, 14, 6, 6, 4, 8, 6, 4, 20, 12, 10, 14, 4, + 2, 16, 2, 12, 30, 4, 6, 24, 20, 24, 10, 8, 12, 10, 12, 6, 12, 12, 6, 8, + 16, 14, 6, 4, 6, 36, 20, 10, 30, 12, 2, 4, 2, 28, 12, 14, 6, 22, 8, 4, + 18, 6, 14, 18, 4, 6, 2, 6, 34, 18, 2, 16, 6, 18, 2, 24, 4, 2, 6, 12, + 6, 12, 10, 8, 6, 16, 12, 8, 10, 14, 40, 6, 2, 6, 4, 12, 14, 4, 2, 4, + 2, 4, 8, 6, 10, 6, 6, 2, 6, 6, 6, 12, 6, 24, 10, 2, 10, 6, 12, 6, + 6, 14, 6, 6, 52, 20, 6, 10, 2, 10, 8, 10, 12, 12, 2, 6, 4, 14, 16, 8, + 12, 6, 22, 2, 10, 8, 6, 22, 2, 22, 6, 8, 10, 12, 12, 2, 10, 6, 12, 2, + 4, 14, 10, 2, 6, 18, 4, 12, 8, 18, 12, 6, 6, 4, 6, 6, 14, 4, 2, 12, + 12, 4, 6, 18, 18, 12, 2, 16, 12, 8, 18, 10, 26, 4, 6, 8, 6, 6, 4, 2, + 10, 20, 4, 6, 8, 4, 20, 10, 2, 34, 2, 4, 24, 2, 12, 12, 10, 6, 2, 12, + 30, 6, 12, 16, 12, 2, 22, 18, 12, 14, 10, 2, 12, 12, 4, 2, 4, 6, 12, 2, + 16, 18, 2, 40, 8, 16, 6, 8, 10, 2, 4, 18, 8, 10, 8, 12, 4, 18, 2, 18, + 10, 2, 4, 2, 4, 8, 28, 2, 6, 22, 12, 6, 14, 18, 4, 6, 8, 6, 6, 10, + 8, 4, 2, 18, 10, 6, 20, 22, 8, 6, 30, 4, 2, 4, 18, 6, 30, 2, 4, 8, + 6, 4, 6, 12, 14, 34, 14, 6, 4, 2, 6, 4, 14, 4, 2, 6, 28, 2, 4, 6, + 8, 10, 2, 10, 2, 10, 2, 4, 30, 2, 12, 12, 10, 18, 12, 14, 10, 2, 12, 6, + 10, 6, 14, 12, 4, 14, 4, 18, 2, 10, 8, 4, 8, 10, 12, 18, 18, 8, 6, 18, + 16, 14, 6, 6, 10, 14, 4, 6, 2, 12, 12, 4, 6, 6, 12, 2, 16, 2, 12, 6, + 4, 14, 6, 4, 2, 12, 18, 4, 36, 18, 12, 12, 2, 4, 2, 4, 8, 12, 4, 36, + 6, 18, 2, 12, 10, 6, 12, 24, 8, 6, 6, 16, 12, 2, 18, 10, 20, 10, 2, 6, + 18, 4, 2, 40, 6, 2, 16, 2, 4, 8, 18, 10, 12, 6, 2, 10, 8, 4, 6, 12, + 2, 10, 18, 8, 6, 4, 20, 4, 6, 36, 6, 2, 10, 6, 24, 6, 14, 16, 6, 18, + 2, 10, 20, 10, 8, 6, 4, 6, 2, 10, 2, 12, 4, 2, 4, 8, 10, 6, 12, 18, + 14, 12, 16, 8, 6, 16, 8, 4, 2, 6, 18, 24, 18, 10, 12, 2, 4, 14, 10, 6, + 6, 6, 18, 12, 2, 28, 18, 14, 16, 12, 14, 24, 12, 22, 6, 2, 10, 8, 4, 2, + 4, 14, 12, 6, 4, 6, 14, 4, 2, 4, 30, 6, 2, 6, 10, 2, 30, 22, 2, 4, + 6, 8, 6, 6, 16, 12, 12, 6, 8, 4, 2, 24, 12, 4, 6, 8, 6, 6, 10, 2, + 6, 12, 28, 14, 6, 4, 12, 8, 6, 12, 4, 6, 14, 6, 12, 10, 6, 6, 8, 6, + 6, 4, 2, 4, 8, 12, 4, 14, 18, 10, 2, 16, 6, 20, 6, 10, 8, 4, 30, 36, + 12, 8, 22, 12, 2, 6, 12, 16, 6, 6, 2, 18, 4, 26, 4, 8, 18, 10, 8, 10, + 6, 14, 4, 20, 22, 18, 12, 8, 28, 12, 6, 6, 8, 6, 12, 24, 16, 14, 4, 14, + 12, 6, 10, 12, 20, 6, 4, 8, 18, 12, 18, 10, 2, 4, 20, 10, 14, 4, 6, 2, + 10, 24, 18, 2, 4, 20, 16, 14, 10, 14, 6, 4, 6, 20, 6, 10, 6, 2, 12, 6, + 30, 10, 8, 6, 4, 6, 8, 40, 2, 4, 2, 12, 18, 4, 6, 8, 10, 6, 18, 18, + 2, 12, 16, 8, 6, 4, 6, 6, 2, 52, 14, 4, 20, 16, 2, 4, 6, 12, 2, 6, + 12, 12, 6, 4, 14, 10, 6, 6, 14, 10, 14, 16, 8, 6, 12, 4, 8, 22, 6, 2, + 18, 22, 6, 2, 18, 6, 16, 14, 10, 6, 12, 2, 6, 4, 8, 18, 12, 16, 2, 4, + 14, 4, 8, 12, 12, 30, 16, 8, 4, 2, 6, 22, 12, 8, 10, 6, 6, 6, 14, 6, + 18, 10, 12, 2, 10, 2, 4, 26, 4, 12, 8, 4, 18, 8, 10, 14, 16, 6, 6, 8, + 10, 6, 8, 6, 12, 10, 20, 10, 8, 4, 12, 26, 18, 4, 12, 18, 6, 30, 6, 8, + 6, 22, 12, 2, 4, 6, 6, 2, 10, 2, 4, 6, 6, 2, 6, 22, 18, 6, 18, 12, + 8, 12, 6, 10, 12, 2, 16, 2, 10, 2, 10, 18, 6, 20, 4, 2, 6, 22, 6, 6, + 18, 6, 14, 12, 16, 2, 6, 6, 4, 14, 12, 4, 2, 18, 16, 36, 12, 6, 14, 28, + 2, 12, 6, 12, 6, 4, 2, 16, 30, 8, 24, 6, 30, 10, 2, 18, 4, 6, 12, 8, + 22, 2, 6, 22, 18, 2, 10, 2, 10, 30, 2, 28, 6, 14, 16, 6, 20, 16, 2, 6, + 4, 32, 4, 2, 4, 6, 2, 12, 4, 6, 6, 12, 2, 6, 4, 6, 8, 6, 4, 20, + 4, 32, 10, 8, 16, 2, 22, 2, 4, 6, 8, 6, 16, 14, 4, 18, 8, 4, 20, 6, + 12, 12, 6, 10, 2, 10, 2, 12, 28, 12, 18, 2, 18, 10, 8, 10, 48, 2, 4, 6, + 8, 10, 2, 10, 30, 2, 36, 6, 10, 6, 2, 18, 4, 6, 8, 16, 14, 16, 6, 14, + 4, 20, 4, 6, 2, 10, 12, 2, 6, 12, 6, 6, 4, 12, 2, 6, 4, 12, 6, 8, + 4, 2, 6, 18, 10, 6, 8, 12, 6, 22, 2, 6, 12, 18, 4, 14, 6, 4, 20, 6, + 16, 8, 4, 8, 22, 8, 12, 6, 6, 16, 12, 18, 30, 8, 4, 2, 4, 6, 26, 4, + 14, 24, 22, 6, 2, 6, 10, 6, 14, 6, 6, 12, 10, 6, 2, 12, 10, 12, 8, 18, + 18, 10, 6, 8, 16, 6, 6, 8, 16, 20, 4, 2, 10, 2, 10, 12, 6, 8, 6, 10, + 20, 10, 18, 26, 4, 6, 30, 2, 4, 8, 6, 12, 12, 18, 4, 8, 22, 6, 2, 12, + 34, 6, 18, 12, 6, 2, 28, 14, 16, 14, 4, 14, 12, 4, 6, 6, 2, 36, 4, 6, + 20, 12, 24, 6, 22, 2, 16, 18, 12, 12, 18, 2, 6, 6, 6, 4, 6, 14, 4, 2, + 22, 8, 12, 6, 10, 6, 8, 12, 18, 12, 6, 10, 2, 22, 14, 6, 6, 4, 18, 6, + 20, 22, 2, 12, 24, 4, 18, 18, 2, 22, 2, 4, 12, 8, 12, 10, 14, 4, 2, 18, + 16, 38, 6, 6, 6, 12, 10, 6, 12, 8, 6, 4, 6, 14, 30, 6, 10, 8, 22, 6, + 8, 12, 10, 2, 10, 2, 6, 10, 2, 10, 12, 18, 20, 6, 4, 8, 22, 6, 6, 30, + 6, 14, 6, 12, 12, 6, 10, 2, 10, 30, 2, 16, 8, 4, 2, 6, 18, 4, 2, 6, + 4, 26, 4, 8, 6, 10, 2, 4, 6, 8, 4, 6, 30, 12, 2, 6, 6, 4, 20, 22, + 8, 4, 2, 4, 72, 8, 4, 8, 22, 2, 4, 14, 10, 2, 4, 20, 6, 10, 18, 6, + 20, 16, 6, 8, 6, 4, 20, 12, 22, 2, 4, 2, 12, 10, 18, 2, 22, 6, 18, 30, + 2, 10, 14, 10, 8, 16, 50, 6, 10, 8, 10, 12, 6, 18, 2, 22, 6, 2, 4, 6, + 8, 6, 6, 10, 18, 2, 22, 2, 16, 14, 10, 6, 2, 12, 10, 20, 4, 14, 6, 4, + 36, 2, 4, 6, 12, 2, 4, 14, 12, 6, 4, 6, 2, 6, 4, 20, 10, 2, 10, 6, + 12, 2, 24, 12, 12, 6, 6, 4, 24, 2, 4, 24, 2, 6, 4, 6, 8, 16, 6, 2, + 10, 12, 14, 6, 34, 6, 14, 6, 4, 2, 30, 22, 8, 4, 6, 8, 4, 2, 28, 2, + 6, 4, 26, 18, 22, 2, 6, 16, 6, 2, 16, 12, 2, 12, 4, 6, 6, 14, 10, 6, + 8, 12, 4, 18, 2, 10, 8, 16, 6, 6, 30, 2, 10, 18, 2, 10, 8, 4, 8, 12, + 24, 40, 2, 12, 10, 6, 12, 2, 12, 4, 2, 4, 6, 18, 14, 12, 6, 4, 14, 30, + 4, 8, 10, 8, 6, 10, 18, 8, 4, 14, 16, 6, 8, 4, 6, 2, 10, 2, 12, 4, + 2, 4, 6, 8, 4, 6, 32, 24, 10, 8, 18, 10, 2, 6, 10, 2, 4, 18, 6, 12, + 2, 16, 2, 22, 6, 6, 8, 18, 4, 18, 12, 8, 6, 4, 20, 6, 30, 22, 12, 2, + 6, 18, 4, 62, 4, 2, 12, 6, 10, 2, 12, 12, 28, 2, 4, 14, 22, 6, 2, 6, + 6, 10, 14, 4, 2, 10, 6, 8, 10, 14, 10, 6, 2, 12, 22, 18, 8, 10, 18, 12, + 2, 12, 4, 12, 2, 10, 2, 6, 18, 6, 6, 34, 6, 2, 12, 4, 6, 18, 18, 2, + 16, 6, 6, 8, 6, 10, 18, 8, 10, 8, 10, 2, 4, 18, 26, 12, 22, 2, 4, 2, + 22, 6, 6, 14, 16, 6, 20, 10, 12, 2, 18, 42, 4, 24, 2, 6, 10, 12, 2, 6, + 10, 8, 4, 6, 12, 12, 8, 4, 6, 12, 30, 20, 6, 24, 6, 10, 12, 2, 10, 20, + 6, 6, 4, 12, 14, 10, 18, 12, 8, 6, 12, 4, 14, 10, 2, 12, 30, 16, 2, 12, + 6, 4, 2, 4, 6, 26, 4, 18, 2, 4, 6, 14, 54, 6, 52, 2, 16, 6, 6, 12, + 26, 4, 2, 6, 22, 6, 2, 12, 12, 6, 10, 18, 2, 12, 12, 10, 18, 12, 6, 8, + 6, 10, 6, 8, 4, 2, 4, 20, 24, 6, 6, 10, 14, 10, 2, 22, 6, 14, 10, 26, + 4, 18, 8, 12, 12, 10, 12, 6, 8, 16, 6, 8, 6, 6, 22, 2, 10, 20, 10, 6, + 44, 18, 6, 10, 2, 4, 6, 14, 4, 26, 4, 2, 12, 10, 8, 4, 8, 12, 4, 12, + 8, 22, 8, 6, 10, 18, 6, 6, 8, 6, 12, 4, 8, 18, 10, 12, 6, 12, 2, 6, + 4, 2, 16, 12, 12, 14, 10, 14, 6, 10, 12, 2, 12, 6, 4, 6, 2, 12, 4, 26, + 6, 18, 6, 10, 6, 2, 18, 10, 8, 4, 26, 10, 20, 6, 16, 20, 12, 10, 8, 10, + 2, 16, 6, 20, 10, 20, 4, 30, 2, 4, 8, 16, 2, 18, 4, 2, 6, 10, 18, 12, + 14, 18, 6, 16, 20, 6, 4, 8, 6, 4, 6, 12, 8, 10, 2, 12, 6, 4, 2, 6, + 10, 2, 16, 12, 14, 10, 6, 8, 6, 28, 2, 6, 18, 30, 34, 2, 16, 12, 2, 18, + 16, 6, 8, 10, 8, 10, 8, 10, 44, 6, 6, 4, 20, 4, 2, 4, 14, 28, 8, 6, + 16, 14, 30, 6, 30, 4, 14, 10, 6, 6, 8, 4, 18, 12, 6, 2, 22, 12, 8, 6, + 12, 4, 14, 4, 6, 2, 4, 18, 20, 6, 16, 38, 16, 2, 4, 6, 2, 40, 42, 14, + 4, 6, 2, 24, 10, 6, 2, 18, 10, 12, 2, 16, 2, 6, 16, 6, 8, 4, 2, 10, + 6, 8, 10, 2, 18, 16, 8, 12, 18, 12, 6, 12, 10, 6, 6, 18, 12, 14, 4, 2, + 10, 20, 6, 12, 6, 16, 26, 4, 18, 2, 4, 32, 10, 8, 6, 4, 6, 6, 14, 6, + 18, 4, 2, 18, 10, 8, 10, 8, 10, 2, 4, 6, 2, 10, 42, 8, 12, 4, 6, 18, + 2, 16, 8, 4, 2, 10, 14, 12, 10, 20, 4, 8, 10, 38, 4, 6, 2, 10, 20, 10, + 12, 6, 12, 26, 12, 4, 8, 28, 8, 4, 8, 24, 6, 10, 8, 6, 16, 12, 8, 10, + 12, 8, 22, 6, 2, 10, 2, 6, 10, 6, 6, 8, 6, 4, 14, 28, 8, 16, 18, 8, + 4, 6, 20, 4, 18, 6, 2, 24, 24, 6, 6, 12, 12, 4, 2, 22, 2, 10, 6, 8, + 12, 4, 20, 18, 6, 4, 12, 24, 6, 6, 54, 8, 6, 4, 26, 36, 4, 2, 4, 26, + 12, 12, 4, 6, 6, 8, 12, 10, 2, 12, 16, 18, 6, 8, 6, 12, 18, 10, 2, 54, + 4, 2, 10, 30, 12, 8, 4, 8, 16, 14, 12, 6, 4, 6, 12, 6, 2, 4, 14, 12, + 4, 14, 6, 24, 6, 6, 10, 12, 12, 20, 18, 6, 6, 16, 8, 4, 6, 20, 4, 32, + 4, 14, 10, 2, 6, 12, 16, 2, 4, 6, 12, 2, 10, 8, 6, 4, 2, 10, 14, 6, + 6, 12, 18, 34, 8, 10, 6, 24, 6, 2, 10, 12, 2, 30, 10, 14, 12, 12, 16, 6, + 6, 2, 18, 4, 6, 30, 14, 4, 6, 6, 2, 6, 4, 6, 14, 6, 4, 8, 10, 12, + 6, 32, 10, 8, 22, 2, 10, 6, 24, 8, 4, 30, 6, 2, 12, 16, 8, 6, 4, 6, + 8, 16, 14, 6, 6, 4, 2, 10, 12, 2, 16, 14, 4, 2, 4, 20, 18, 10, 2, 10, + 6, 12, 30, 8, 18, 12, 10, 2, 6, 6, 4, 12, 12, 2, 4, 12, 18, 24, 2, 10, + 6, 8, 16, 8, 6, 12, 10, 14, 6, 12, 6, 6, 4, 2, 24, 4, 6, 8, 6, 4, + 2, 4, 6, 14, 4, 8, 10, 24, 24, 12, 2, 6, 12, 22, 30, 2, 6, 18, 10, 6, + 6, 8, 4, 2, 6, 10, 8, 10, 6, 8, 16, 6, 14, 6, 4, 24, 8, 10, 2, 12, + 6, 4, 36, 2, 22, 6, 8, 6, 10, 8, 6, 12, 10, 14, 10, 6, 18, 12, 2, 12, + 4, 26, 10, 14, 16, 18, 8, 18, 12, 12, 6, 16, 14, 24, 10, 12, 8, 22, 6, 2, + 10, 60, 6, 2, 4, 8, 16, 14, 10, 6, 24, 6, 12, 18, 24, 2, 30, 4, 2, 12, + 6, 10, 2, 4, 14, 6, 16, 2, 10, 8, 22, 20, 6, 4, 32, 6, 18, 4, 2, 4, + 2, 4, 8, 52, 14, 22, 2, 22, 20, 10, 8, 10, 2, 6, 4, 14, 4, 6, 20, 4, + 6, 2, 12, 12, 6, 12, 16, 2, 12, 10, 8, 4, 6, 2, 28, 12, 8, 10, 12, 2, + 4, 14, 28, 8, 6, 4, 2, 4, 6, 2, 12, 58, 6, 14, 10, 2, 6, 28, 32, 4, + 30, 8, 6, 4, 6, 12, 12, 2, 4, 6, 6, 14, 16, 8, 30, 4, 2, 10, 8, 6, + 4, 6, 26, 4, 12, 2, 10, 18, 12, 12, 18, 2, 4, 12, 8, 12, 10, 20, 4, 8, + 16, 12, 8, 6, 16, 8, 10, 12, 14, 6, 4, 8, 12, 4, 20, 6, 40, 8, 16, 6, + 36, 2, 6, 4, 6, 2, 22, 18, 2, 10, 6, 36, 14, 12, 4, 18, 8, 4, 14, 10, + 2, 10, 8, 4, 2, 18, 16, 12, 14, 10, 14, 6, 6, 42, 10, 6, 6, 20, 10, 8, + 12, 4, 12, 18, 2, 10, 14, 18, 10, 18, 8, 6, 4, 14, 6, 10, 30, 14, 6, 6, + 4, 12, 38, 4, 2, 4, 6, 8, 12, 10, 6, 18, 6, 50, 6, 4, 6, 12, 8, 10, + 32, 6, 22, 2, 10, 12, 18, 2, 6, 4, 30, 8, 6, 6, 18, 10, 2, 4, 12, 20, + 10, 8, 24, 10, 2, 6, 22, 6, 2, 18, 10, 12, 2, 30, 18, 12, 28, 2, 6, 4, + 6, 14, 6, 12, 10, 8, 4, 12, 26, 10, 8, 6, 16, 2, 10, 18, 14, 6, 4, 6, + 14, 16, 2, 6, 4, 12, 20, 4, 20, 4, 6, 12, 2, 36, 4, 6, 2, 10, 2, 22, + 8, 6, 10, 12, 12, 18, 14, 24, 36, 4, 20, 24, 10, 6, 2, 28, 6, 18, 8, 4, + 6, 8, 6, 4, 2, 12, 28, 18, 14, 16, 14, 18, 10, 8, 6, 4, 6, 6, 8, 22, + 12, 2, 10, 18, 6, 2, 18, 10, 2, 12, 10, 18, 32, 6, 4, 6, 6, 8, 6, 6, + 10, 20, 6, 12, 10, 8, 10, 14, 6, 10, 14, 4, 2, 22, 18, 2, 10, 2, 4, 20, + 4, 2, 34, 2, 12, 6, 10, 2, 10, 18, 6, 14, 12, 12, 22, 8, 6, 16, 6, 8, + 4, 12, 6, 8, 4, 36, 6, 6, 20, 24, 6, 12, 18, 10, 2, 10, 26, 6, 16, 8, + 6, 4, 24, 18, 8, 12, 12, 10, 18, 12, 2, 24, 4, 12, 18, 12, 14, 10, 2, 4, + 24, 12, 14, 10, 6, 2, 6, 4, 6, 26, 4, 6, 6, 2, 22, 8, 18, 4, 18, 8, + 4, 24, 2, 12, 12, 4, 2, 52, 2, 18, 6, 4, 6, 12, 2, 6, 12, 10, 8, 4, + 2, 24, 10, 2, 10, 2, 12, 6, 18, 40, 6, 20, 16, 2, 12, 6, 10, 12, 2, 4, + 6, 14, 12, 12, 22, 6, 8, 4, 2, 16, 18, 12, 2, 6, 16, 6, 2, 6, 4, 12, + 30, 8, 16, 2, 18, 10, 24, 2, 6, 24, 4, 2, 22, 2, 16, 2, 6, 12, 4, 18, + 8, 4, 14, 4, 18, 24, 6, 2, 6, 10, 2, 10, 38, 6, 10, 14, 6, 6, 24, 4, + 2, 12, 16, 14, 16, 12, 2, 6, 10, 26, 4, 2, 12, 6, 4, 12, 8, 12, 10, 18, + 6, 14, 28, 2, 6, 10, 2, 4, 14, 34, 2, 6, 22, 2, 10, 14, 4, 2, 16, 8, + 10, 6, 8, 10, 8, 4, 6, 2, 16, 6, 6, 18, 30, 14, 6, 4, 30, 2, 10, 14, + 4, 20, 10, 8, 4, 8, 18, 4, 14, 6, 4, 24, 6, 6, 18, 18, 2, 36, 6, 10, + 14, 12, 4, 6, 2, 30, 6, 4, 2, 6, 28, 20, 4, 20, 12, 24, 16, 18, 12, 14, + 6, 4, 12, 32, 12, 6, 10, 8, 10, 6, 18, 2, 16, 14, 6, 22, 6, 12, 2, 18, + 4, 8, 30, 12, 4, 12, 2, 10, 38, 22, 2, 4, 14, 6, 12, 24, 4, 2, 4, 14, + 12, 10, 2, 16, 6, 20, 4, 20, 22, 12, 2, 4, 2, 12, 22, 24, 6, 6, 2, 6, + 4, 6, 2, 10, 12, 12, 6, 2, 6, 16, 8, 6, 4, 18, 12, 12, 14, 4, 12, 6, + 8, 6, 18, 6, 10, 12, 14, 6, 4, 8, 22, 6, 2, 28, 18, 2, 18, 10, 6, 14, + 10, 2, 10, 14, 6, 10, 2, 22, 6, 8, 6, 16, 12, 8, 22, 2, 4, 14, 18, 12, + 6, 24, 6, 10, 2, 12, 22, 18, 6, 20, 6, 10, 14, 4, 2, 6, 12, 22, 14, 12, + 4, 6, 8, 22, 2, 10, 12, 8, 40, 2, 6, 10, 8, 4, 42, 20, 4, 32, 12, 10, + 6, 12, 12, 2, 10, 8, 6, 4, 8, 4, 26, 18, 4, 8, 28, 6, 18, 6, 12, 2, + 10, 6, 6, 14, 10, 12, 14, 24, 6, 4, 20, 22, 2, 18, 4, 6, 12, 2, 16, 18, + 14, 6, 6, 4, 6, 8, 18, 4, 14, 30, 4, 18, 8, 10, 2, 4, 8, 12, 4, 12, + 18, 2, 12, 10, 2, 16, 8, 4, 30, 2, 6, 28, 2, 10, 2, 18, 10, 14, 4, 26, + 6, 18, 4, 20, 6, 4, 8, 18, 4, 12, 26, 24, 4, 20, 22, 2, 18, 22, 2, 4, + 12, 2, 6, 6, 6, 4, 6, 14, 4, 24, 12, 6, 18, 2, 12, 28, 14, 4, 6, 8, + 22, 6, 12, 18, 8, 4, 20, 6, 4, 6, 2, 18, 6, 4, 12, 12, 8, 28, 6, 8, + 10, 2, 24, 12, 10, 24, 8, 10, 20, 12, 6, 12, 12, 4, 14, 12, 24, 34, 18, 8, + 10, 6, 18, 8, 4, 8, 16, 14, 6, 4, 6, 24, 2, 6, 4, 6, 2, 16, 6, 6, + 20, 24, 4, 2, 4, 14, 4, 18, 2, 6, 12, 4, 14, 4, 2, 18, 16, 6, 6, 2, + 16, 20, 6, 6, 30, 4, 8, 6, 24, 16, 6, 6, 8, 12, 30, 4, 18, 18, 8, 4, + 26, 10, 2, 22, 8, 10, 14, 6, 4, 18, 8, 12, 28, 2, 6, 4, 12, 6, 24, 6, + 8, 10, 20, 16, 8, 30, 6, 6, 4, 2, 10, 14, 6, 10, 32, 22, 18, 2, 4, 2, + 4, 8, 22, 8, 18, 12, 28, 2, 16, 12, 18, 14, 10, 18, 12, 6, 32, 10, 14, 6, + 10, 2, 10, 2, 6, 22, 2, 4, 6, 8, 10, 6, 14, 6, 4, 12, 30, 24, 6, 6, + 8, 6, 4, 2, 4, 6, 8, 6, 6, 22, 18, 8, 4, 2, 18, 6, 4, 2, 16, 18, + 20, 10, 6, 6, 30, 2, 12, 28, 6, 6, 6, 2, 12, 10, 8, 18, 18, 4, 8, 18, + 10, 2, 28, 2, 10, 14, 4, 2, 30, 12, 22, 26, 10, 8, 6, 10, 8, 16, 14, 6, + 6, 10, 14, 6, 4, 2, 10, 12, 2, 6, 10, 8, 4, 2, 10, 26, 22, 6, 2, 12, + 18, 4, 26, 4, 8, 10, 6, 14, 10, 2, 18, 6, 10, 20, 6, 6, 4, 24, 2, 4, + 8, 6, 16, 14, 16, 18, 2, 4, 12, 2, 10, 2, 6, 12, 10, 6, 6, 20, 6, 4, + 6, 38, 4, 6, 12, 14, 4, 12, 8, 10, 12, 12, 8, 4, 6, 14, 10, 6, 12, 2, + 10, 18, 2, 18, 10, 8, 10, 2, 12, 4, 14, 28, 2, 16, 2, 18, 6, 10, 6, 8, + 16, 14, 30, 10, 20, 6, 10, 24, 2, 28, 2, 12, 16, 6, 8, 36, 4, 8, 4, 14, + 12, 10, 8, 12, 4, 6, 8, 4, 6, 14, 22, 8, 6, 4, 2, 10, 6, 20, 10, 8, + 6, 6, 22, 18, 2, 16, 6, 20, 4, 26, 4, 14, 22, 14, 4, 12, 6, 8, 4, 6, + 6, 26, 10, 2, 18, 18, 4, 2, 16, 2, 18, 4, 6, 8, 4, 6, 12, 2, 6, 6, + 28, 38, 4, 8, 16, 26, 4, 2, 10, 12, 2, 10, 8, 6, 10, 12, 2, 10, 2, 24, + 4, 30, 26, 6, 6, 18, 6, 6, 22, 2, 10, 18, 26, 4, 18, 8, 6, 6, 12, 16, + 6, 8, 16, 6, 8, 16, 2, 42, 58, 8, 4, 6, 2, 4, 8, 16, 6, 20, 4, 12, + 12, 6, 12, 2, 10, 2, 6, 22, 2, 10, 6, 8, 6, 10, 14, 6, 6, 4, 18, 8, + 10, 8, 16, 14, 10, 2, 10, 2, 12, 6, 4, 20, 10, 8, 52, 8, 10, 6, 2, 10, + 8, 10, 6, 6, 8, 10, 2, 22, 2, 4, 6, 14, 4, 2, 24, 12, 4, 26, 18, 4, + 6, 14, 30, 6, 4, 6, 2, 22, 8, 4, 6, 2, 22, 6, 8, 16, 6, 14, 4, 6, + 18, 8, 12, 6, 12, 24, 30, 16, 8, 34, 8, 22, 6, 14, 10, 18, 14, 4, 12, 8, + 4, 36, 6, 6, 2, 10, 2, 4, 20, 6, 6, 10, 12, 6, 2, 40, 8, 6, 28, 6, + 2, 12, 18, 4, 24, 14, 6, 6, 10, 20, 10, 14, 16, 14, 16, 6, 8, 36, 4, 12, + 12, 6, 12, 50, 12, 6, 4, 6, 6, 8, 6, 10, 2, 10, 2, 18, 10, 14, 16, 8, + 6, 4, 20, 4, 2, 10, 6, 14, 18, 10, 38, 10, 18, 2, 10, 2, 12, 4, 2, 4, + 14, 6, 10, 8, 40, 6, 20, 4, 12, 8, 6, 34, 8, 22, 8, 12, 10, 2, 16, 42, + 12, 8, 22, 8, 22, 8, 6, 34, 2, 6, 4, 14, 6, 16, 2, 22, 6, 8, 24, 22, + 6, 2, 12, 4, 6, 14, 4, 8, 24, 4, 6, 6, 2, 22, 20, 6, 4, 14, 4, 6, + 6, 8, 6, 10, 6, 8, 6, 16, 14, 6, 6, 22, 6, 24, 32, 6, 18, 6, 18, 10, + 8, 30, 18, 6, 16, 12, 6, 12, 2, 6, 4, 12, 8, 6, 22, 8, 6, 4, 14, 10, + 18, 20, 10, 2, 6, 4, 2, 28, 18, 2, 10, 6, 6, 6, 14, 40, 24, 2, 4, 8, + 12, 4, 20, 4, 32, 18, 16, 6, 36, 8, 6, 4, 6, 14, 4, 6, 26, 6, 10, 14, + 18, 10, 6, 6, 14, 10, 6, 6, 14, 6, 24, 4, 14, 22, 8, 12, 10, 8, 12, 18, + 10, 18, 8, 24, 10, 8, 4, 24, 6, 18, 6, 2, 10, 30, 2, 10, 2, 4, 2, 40, + 2, 28, 8, 6, 6, 18, 6, 10, 14, 4, 18, 30, 18, 2, 12, 30, 6, 30, 4, 18, + 12, 2, 4, 14, 6, 10, 6, 8, 6, 10, 12, 2, 6, 12, 10, 2, 18, 4, 20, 4, + 6, 14, 6, 6, 22, 6, 6, 8, 18, 18, 10, 2, 10, 2, 6, 4, 6, 12, 18, 2, + 10, 8, 4, 18, 2, 6, 6, 6, 10, 8, 10, 6, 18, 12, 8, 12, 6, 4, 6, 14, + 16, 2, 12, 4, 6, 38, 6, 6, 16, 20, 28, 20, 10, 6, 6, 14, 4, 26, 4, 14, + 10, 18, 14, 28, 2, 4, 14, 16, 2, 28, 6, 8, 6, 34, 8, 4, 18, 2, 16, 8, + 6, 40, 8, 18, 4, 30, 6, 12, 2, 30, 6, 10, 14, 40, 14, 10, 2, 12, 10, 8, + 4, 8, 6, 6, 28, 2, 4, 12, 14, 16, 8, 30, 16, 18, 2, 10, 18, 6, 32, 4, + 18, 6, 2, 12, 10, 18, 2, 6, 10, 14, 18, 28, 6, 8, 16, 2, 4, 20, 10, 8, + 18, 10, 2, 10, 8, 4, 6, 12, 6, 20, 4, 2, 6, 4, 20, 10, 26, 18, 10, 2, + 18, 6, 16, 14, 4, 26, 4, 14, 10, 12, 14, 6, 6, 4, 14, 10, 2, 30, 18, 22, 2}; + + diff --git a/flint/src/flint.h b/flint/src/flint.h new file mode 100644 index 0000000..9ddada4 --- /dev/null +++ b/flint/src/flint.h @@ -0,0 +1,704 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module flint.h Revision: 07.05.2003 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +/* Read flint.h only once */ + +#ifndef __FLINTH__ +#define __FLINTH__ + +/* Turn FLINT secure mode on */ +#if !(defined FLINT_SECURE || defined FLINT_UNSECURE) +#define FLINT_SECURE +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + + +/******************************************************************************/ +/* Macros */ +/******************************************************************************/ +/* Simple makros */ +/* Errorcodes */ + +#define E_CLINT_OK 0 /* Everything O.K. */ +#define E_CLINT_DBZ -1 /* Division by zero */ +#define E_CLINT_OFL -2 /* Overflow */ +#define E_CLINT_UFL -3 /* Underflow */ +#define E_CLINT_MAL -4 /* Error in memory allocation */ +#define E_CLINT_NOR -5 /* Register not present */ +#define E_CLINT_BOR -6 /* Base in str2clint_l() not valid */ +#define E_CLINT_MOD -7 /* Modulus even in ?mexp?m_l() */ +#define E_CLINT_NPT -8 /* Null-Pointer received */ + +#define E_VCHECK_OK 0 /* CLINT-format O.K. */ +#define E_VCHECK_LDZ 1 /* vcheck_l-Warning: Leading zeros */ +#define E_VCHECK_MEM -1 /* vcheck_l-Error: Null-Pointer */ +#define E_VCHECK_OFL -2 /* vcheck_l-Error: Overflow */ + + +/**************************************************************/ +/* Constants referring to the internal CLINT-representation */ +/**************************************************************/ + +#define BASE 0x10000UL +#define BASEMINONE 0xffffU +#define BASEMINONEL 0xffffUL +#define DBASEMINONE 0xffffffffUL +#define BASEDIV2 0x8000U +#define DBASEDIV2 0x80000000U +#define BITPERDGT 16UL +#define LDBITPERDGT 4U + + +/*******************************************************/ +/* Number of digits of CLINT-ojects to base 0x10000 */ + +#define CLINTMAXDIGIT 256U +/*******************************************************/ + +#define CLINTMAXSHORT (CLINTMAXDIGIT + 1) +#define CLINTMAXLONG ((CLINTMAXDIGIT >> 1) + 1) +#define CLINTMAXBYTE (CLINTMAXSHORT << 1) +#define CLINTMAXBIT (CLINTMAXDIGIT << 4) + +/* Number of small prime numbers stored in smallprimes[] */ +#define NOOFSMALLPRIMES 6542 + +/* Default number of registers in register bank */ +#define NOOFREGS 16U + +/* FLINT/C-Version */ +#define FLINT_VERMAJ 3 /* Major-Version */ +#define FLINT_VERMIN 0 /* Minor-Version */ +/* FLINT/C-Version as USHORT-value 0xhhll, hh=FLINT_VERMAJ, ll=FLINT_VERMIN */ +#define FLINT_VERSION ((FLINT_VERMAJ << 8) + FLINT_VERMIN) + +#ifdef FLINT_COMPATIBILITY +/* Macros for Compatibility with version 1.xx */ +#define E_OK 0 /* Everything O.K. */ +#define E_DBZ -1 /* Division by zero */ +#define E_OFL -2 /* Overflow */ +#define E_UFL -3 /* Underflow */ +#define E_MAL -4 /* Error in memory allocation */ +#define E_NOR -5 /* Register not present */ +#define E_BOR -6 /* Base in str2clint_l() not valid */ +#define E_MOD -7 /* Modulus even in ?mexp?m_l() */ +#define E_NPT -8 /* Null-Pointer received */ +#endif /* FLINT_COMPATIBILITY */ + +/* Internationalization */ +#define ggT_l gcd_l +#define xggT_l xgcd_l +#define kgV_l lcm_l +#define zweiantei_l twofact_l +#define chinrest_l chinrem_l +#define primwurz_l primroot_l + + +/* LINT_ASM -> FLINT_ASM, LINT_ANSI -> FLINT_ANSI */ +#ifdef LINT_ASM +#ifndef FLINT_ASM +#define FLINT_ASM +#endif /* !FLINT_ASM */ +#endif /* LINT_ASM */ + +#ifdef LINT_ANSI +#ifndef FLINT_ANSI +#define FLINT_ANSI +#endif /* !LINT_ANSI */ +#endif /* LINT_ANSI */ + + +#ifdef FLINT_ASM +#define _FLINT_ASM 0x61 /* ASCII 'a': Symbol for */ +#else /* Assembler-support */ +#define _FLINT_ASM 0 +#endif + +#ifdef FLINT_SECURE +#define _FLINT_SECMOD 0x73 /* ASCII 's': Symbol for */ +#else /* security-mode, in which */ +#define _FLINT_SECMOD 0 /* all CLINT-Variables will */ +#endif /* be purged after use */ + + +/* Makros with parameters */ + +/* Definition of standard-CLINT-Registers */ + +#define r0_l get_reg_l(0) +#define r1_l get_reg_l(1) +#define r2_l get_reg_l(2) +#define r3_l get_reg_l(3) +#define r4_l get_reg_l(4) +#define r5_l get_reg_l(5) +#define r6_l get_reg_l(6) +#define r7_l get_reg_l(7) +#define r8_l get_reg_l(8) +#define r9_l get_reg_l(9) +#define r10_l get_reg_l(10) +#define r11_l get_reg_l(11) +#define r12_l get_reg_l(12) +#define r13_l get_reg_l(13) +#define r14_l get_reg_l(14) +#define r15_l get_reg_l(15) + + +/* MIN, MAX etc. */ + +#ifndef MIN +#define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + +#ifndef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) +#endif + +#define MIN_L(a,b) (lt_l ((a), (b)) ? (a) : (b)) +#define min_l(a,b) (lt_l ((a), (b)) ? (a) : (b)) + +#define MAX_L(a,b) (gt_l ((a), (b)) ? (a) : (b)) +#define max_l(a,b) (gt_l ((a), (b)) ? (a) : (b)) + + +#ifndef SWAP +#define SWAP(a,b) ((a) ^= (b), (b) ^= (a), (a) ^= (b)) +#endif +#ifndef swap +#define swap(a,b) ((a) ^= (b), (b) ^= (a), (a) ^= (b)) +#endif + +#define SWAP_L(a,b) (xor_l((a),(b),(a)),xor_l((b),(a),(b)),xor_l((a),(b),(a))) +#define swap_l(a,b) (xor_l((a),(b),(a)),xor_l((b),(a),(b)),xor_l((a),(b),(a))) + + +/* ReMoveLeaDingZeRoS from CLINT-variables */ +#define RMLDZRS_L(n_l) \ + while ((DIGITS_L (n_l) > 0) && (*MSDPTR_L (n_l) == 0)) {DECDIGITS_L (n_l);} + +#define rmldzrs_l(n_l) \ + while ((DIGITS_L (n_l) > 0) && (*MSDPTR_L (n_l) == 0)) {DECDIGITS_L (n_l);} + + +/* Copy CLINT types with removal of leading zeros */ +#define ZCPY_L(dest_l,src_l)\ + cpy_l ((dest_l), (src_l));\ + RMLDZRS_L ((dest_l)) + +#define zcpy_l(dest_l,src_l)\ + cpy_l ((dest_l), (src_l));\ + RMLDZRS_L ((dest_l)) + + +/* Reduction modulo Nmax + 1 */ +#define ANDMAX_L(a_l)\ + SETDIGITS_L ((a_l), MIN (DIGITS_L (a_l), (USHORT)CLINTMAXDIGIT));\ + RMLDZRS_L ((a_l)) + +#define andmax_l(a_l)\ + SETDIGITS_L ((a_l), MIN (DIGITS_L (a_l), (USHORT)CLINTMAXDIGIT));\ + RMLDZRS_L ((a_l)) + + +/* Set CLINT-variables to values 0, 1, 2 resp. */ +#define SETZERO_L(n_l)\ + (*(n_l) = 0) + +#define setzero_l(n_l)\ + (*(n_l) = 0) + +#define SETONE_L(n_l)\ + (u2clint_l ((n_l), 1U)) + +#define setone_l(n_l)\ + (u2clint_l ((n_l), 1U)) + +#define SETTWO_L(n_l)\ + (u2clint_l ((n_l), 2U)) + +#define settwo_l(n_l)\ + (u2clint_l ((n_l), 2U)) + + +/* Read the number of digits of a CLINT-variable */ +#define DIGITS_L(n_l)\ + ((unsigned short)*(n_l)) + +#define digits_l(n_l)\ + ((unsigned short)*(n_l)) + + +/* Set the number of digits of a CLINT-variable */ +#define SETDIGITS_L(n_l, l)\ + (*(n_l) = (unsigned short)(l)) + +#define setdigits_l(n_l, l)\ + (*(n_l) = (unsigned short)(l)) + + +/* Increment the number of digits of a CLINT-variable */ +#define INCDIGITS_L(n_l)\ + (++*(n_l)) + +#define incdigits_l(n_l)\ + (++*(n_l)) + + +/* Decrement the number of digits of a CLINT-variable */ +#define DECDIGITS_L(n_l)\ + Assert (DIGITS_L (n_l) > 0);\ + (--*(n_l)) + +#define decdigits_l(n_l)\ + Assert (DIGITS_L (n_l) > 0);\ + (--*(n_l)) + + +/* Pointer to the most significant digit of a CLINT variable */ +#define MSDPTR_L(n_l)\ + ((n_l) + DIGITS_L (n_l)) + +#define msdptr_l(n_l)\ + ((n_l) + DIGITS_L (n_l)) + + +/* Pointer to the least significant digit of a CLINT variable */ +#define LSDPTR_L(n_l)\ + ((n_l) + 1) + +#define lsdptr_l(n_l)\ + ((n_l) + 1) + + +/* Comparisons, setting, testing for evenness and oddness */ + +#define LT_L(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) == -1) /* a_l < b_l */ + +#define lt_l(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) == -1) /* a_l < b_l */ + + +#define LE_L(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) < 1) /* a_l <= b_l */ + +#define le_l(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) < 1) /* a_l <= b_l */ + + +#define GT_L(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) == 1) /* a_l > b_l */ + +#define gt_l(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) == 1) /* a_l > b_l */ + + +#define GE_L(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) > -1) /* a_l >= b_l */ + +#define ge_l(a_l,b_l) \ + (cmp_l ((a_l), (b_l)) > -1) /* a_l >= b_l */ + + +#define GTZ_L(a_l) \ + (cmp_l ((a_l), nul_l) == 1) /* a_l > 0 */ + +#define gtz_l(a_l) \ + (cmp_l ((a_l), nul_l) == 1) /* a_l > 0 */ + + +#define EQZ_L(a_l) \ + (equ_l ((a_l), nul_l) == 1) /* a_l == 0 */ + +#define eqz_l(a_l) \ + (equ_l ((a_l), nul_l) == 1) /* a_l == 0 */ + + +#define EQONE_L(a_l) \ + (equ_l ((a_l), one_l) == 1) /* a_l == 1 */ + +#define eqone_l(a_l) \ + (equ_l ((a_l), one_l) == 1) /* a_l == 1 */ + + +#define SET_L(a_l,ul)\ + ul2clint_l ((a_l), (ul)) /* a_l <-- unsigned long ul */ + +#define set_l(a_l,ul)\ + ul2clint_l ((a_l), (ul)) /* a_l <-- unsigned long ul */ + + +#define ASSIGN_L(dest_l,src_l)\ + cpy_l ((dest_l), (src_l)) /* src_l <-- dest_l */ + +#define assign_l(dest_l,src_l)\ + cpy_l ((dest_l), (src_l)) /* src_l <-- dest_l */ + + +#define ISEVEN_L(a_l)\ + (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0)) + /* true: a_l is even */ + +#define iseven_l(a_l)\ + (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0)) + /* true: a_l is even */ + +#define ISODD_L(a_l)\ + (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1) + /* true: a_l is odd */ + +#define isodd_l(a_l)\ + (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1) + /* true: a_l is odd */ + + + +/* Standard-Output of CLINT variables */ +#define DISP_L(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A)) +#define disp_l(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A)) + + +/* Initialization of pseudorandom number generators */ +/* with values derived from time */ +#define INITRAND_LT()\ + ulseed64_l ((unsigned long)time(NULL)) + +#define initrand_lt()\ + ulseed64_l ((unsigned long)time(NULL)) + + +#define INITRAND64_LT()\ + ulseed64_l ((unsigned long)time(NULL)) + +#define initrand64_lt()\ + ulseed64_l ((unsigned long)time(NULL)) + + +/* Compatibility with version 1.0 : Macro clint2str_l */ + +#define CLINT2STR_L(n_l,b) xclint2str_l ((n_l), (b), 0) +#define clint2str_l(n_l,b) xclint2str_l ((n_l), (b), 0) + + +/* Implementation of functions xxxstr_l as macros */ + +#define HEXSTR_L(n_l) xclint2str_l ((n_l), 16, 0) +#define hexstr_l(n_l) xclint2str_l ((n_l), 16, 0) + +#define DECSTR_L(n_l) xclint2str_l ((n_l), 10, 0) +#define decstr_l(n_l) xclint2str_l ((n_l), 10, 0) + +#define OCTSTR_L(n_l) xclint2str_l ((n_l), 8, 0) +#define octstr_l(n_l) xclint2str_l ((n_l), 8, 0) + +#define BINSTR_L(n_l) xclint2str_l ((n_l), 2, 0) +#define binstr_l(n_l) xclint2str_l ((n_l), 2, 0) + + +/* Simple factorization with sieve_l() */ + +#define SFACTOR_L(n_l) sieve_l ((n_l), NOOFSMALLPRIMES); +#define sfactor_l(n_l) sieve_l ((n_l), NOOFSMALLPRIMES); + + +/* Miller-Rabin primality test, parameters according to Lenstra and [MOV] */ + +#define ISPRIME_L(n) prime_l ((n), 302, 0) +#define isprime_l(n) prime_l ((n), 302, 0) + + +/* Choice of functions for exponentiation */ +/* Automatic choice of mexpk_l oder mexpkm_l is provided by */ +/* function mexp_l. */ + +/* + * define MEXP_L(a,e,p,n) mexp5_l ((a), (e), (p), (n)) + */ + +#define MEXP_L(a,e,p,n) mexpk_l ((a), (e), (p), (n)) + +/* + * #define MEXP_L(a,e,p,n) mexp5m_l ((a), (e), (p), (n)) + */ + +/* + * #define MEXP_L(a,e,p,n) mexpkm_l ((a), (e), (p), (n)) + */ + + +/* Purge of CLINT variables by overwriting the storage */ + +#ifdef FLINT_SECURE + #define ZEROCLINT_L(A) Assert (sizeof(A) >= CLINTMAXBYTE);\ + purge_l (A) + + #define ZEROCLINTD_L(A) Assert (sizeof(A) >= sizeof(CLINTD));\ + purged_l (A) + + #define ZEROCLINTQ_L(A) Assert (sizeof(A) >= sizeof(CLINTQ));\ + purgeq_l (A) +#else + #define ZEROCLINT_L(A) (void)0 + #define ZEROCLINTD_L(A) (void)0 + #define ZEROCLINTQ_L(A) (void)0 +#endif + + +/***********************************************************/ +/* Typedefs */ +/***********************************************************/ + +typedef unsigned short clint; +typedef unsigned long clintd; +typedef clint CLINT[CLINTMAXSHORT]; +typedef clint CLINTD[1 + (CLINTMAXDIGIT << 1)]; +typedef clint CLINTQ[1 + (CLINTMAXDIGIT << 2)]; +typedef clint *CLINTPTR; +#ifndef UCHAR +typedef unsigned char UCHAR; +#endif /* UCHAR */ +#ifndef USHORT +typedef unsigned short USHORT; +#endif /* USHORT */ +#ifndef ULONG +typedef unsigned long ULONG; +#endif /* ULONG */ + + +/***********************************************************/ +/* Function prototypes */ +/***********************************************************/ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +extern int __FLINT_API add_l (CLINT, CLINT, CLINT); +extern int __FLINT_API chinrem_l (unsigned int, clint**, CLINT); +extern int __FLINT_API cmp_l (CLINT, CLINT); +extern void __FLINT_API cpy_l (CLINT, CLINT); +extern clint * __FLINT_API create_l (void); +extern int __FLINT_API create_reg_l (void); +extern int __FLINT_API dec_l (CLINT); + +#if !defined FLINT_ASM +extern int __FLINT_API div_l (CLINT, CLINT, CLINT, CLINT); +#else +extern int __FLINT_API_A div_l (CLINT, CLINT, CLINT, CLINT); +#endif /* FLINT_ASM */ + + +extern void __FLINT_API and_l (CLINT, CLINT, CLINT); +extern int __FLINT_API byte2clint_l (CLINT, UCHAR *, int); +extern int __FLINT_API clearbit_l (CLINT, unsigned int); +extern UCHAR * __FLINT_API clint2byte_l (CLINT, int *); +extern char * __FLINT_API xclint2str_l (CLINT, USHORT, int); +extern int __FLINT_API equ_l (CLINT, CLINT); +extern char * __FLINT_API fbinstr_l (CLINT); +extern char * __FLINT_API fdecstr_l (CLINT); +extern char * __FLINT_API fhexstr_l (CLINT); +extern char * __FLINT_API foctstr_l (CLINT); +extern void __FLINT_API free_l (CLINT); +extern void __FLINT_API free_reg_l (void); +extern void __FLINT_API fswap_l (CLINT, CLINT); +extern ULONG * __FLINT_API genprimes (ULONG); +extern clint * __FLINT_API get_reg_l (unsigned int); +extern void __FLINT_API gcd_l (CLINT, CLINT, CLINT); +extern int __FLINT_API inc_l (CLINT); +extern void __FLINT_API inv_l (CLINT, CLINT, CLINT, CLINT); +extern USHORT __FLINT_API invmon_l (CLINT); +extern void __FLINT_API iroot_l (CLINT, CLINT); +extern unsigned __FLINT_API issqr_l (CLINT, CLINT); +extern int __FLINT_API jacobi_l (CLINT, CLINT); +extern int __FLINT_API lcm_l (CLINT, CLINT, CLINT); +extern unsigned __FLINT_API ld_l (CLINT); +extern int __FLINT_API madd_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mequ_l (CLINT, CLINT, CLINT); +extern int __FLINT_API mexp_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mexp2_l (CLINT, USHORT, CLINT, CLINT); +extern int __FLINT_API mexp5_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mexp5m_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mexpk_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mexpkm_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mmul_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mod2_l (CLINT, ULONG, CLINT); +extern int __FLINT_API mod_l (CLINT, CLINT, CLINT); +extern int __FLINT_API msqr_l (CLINT, CLINT, CLINT); +extern int __FLINT_API msub_l (CLINT, CLINT, CLINT, CLINT); +extern int __FLINT_API mul_l (CLINT, CLINT, CLINT); +extern void __FLINT_API mulmon_l (CLINT, CLINT, CLINT, USHORT, USHORT, CLINT); +extern void __FLINT_API or_l (CLINT, CLINT, CLINT); +extern int __FLINT_API prime_l (CLINT, unsigned int, unsigned int); +extern int __FLINT_API primroot_l (CLINT, unsigned int, clint*[]); +extern int __FLINT_API proot_l (CLINT, CLINT, CLINT); +extern void __FLINT_API purge_l (CLINT); +extern void __FLINT_API purged_l (CLINTD); +extern void __FLINT_API purgeq_l (CLINTQ); +extern int __FLINT_API purge_reg_l (unsigned int); +extern int __FLINT_API purgeall_reg_l(void); +extern clint * __FLINT_API rand64_l (void); +extern void __FLINT_API rand_l (CLINT, int); +extern int __FLINT_API randbit_l (void); +extern int __FLINT_API root_l (CLINT, CLINT, CLINT, CLINT); +extern clint * __FLINT_API seed64_l (CLINT); +extern void __FLINT_API set_noofregs_l(unsigned int); +extern int __FLINT_API setbit_l (CLINT, unsigned int); +extern clint * __FLINT_API setmax_l (CLINT); +extern int __FLINT_API shift_l (CLINT, long int); +extern int __FLINT_API shl_l (CLINT); +extern int __FLINT_API shr_l (CLINT); +extern USHORT __FLINT_API sieve_l (CLINT, unsigned int); +extern int __FLINT_API sqr_l (CLINT, CLINT); +extern void __FLINT_API sqrmon_l (CLINT, CLINT, USHORT, USHORT, CLINT); +extern int __FLINT_API str2clint_l (CLINT, char *, USHORT); +extern char * __FLINT_API strlwr_l (char *); +extern char * __FLINT_API strrev_l (char *); +extern char * __FLINT_API strupr_l (char *); +extern int __FLINT_API sub_l (CLINT, CLINT, CLINT); +extern int __FLINT_API testbit_l (CLINT, unsigned int); + +/* Test for GCC > 3.2.0 */ +#if !(__GNUC__ > 3 || \ + (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \ + (__GNUC_MINOR__ == 2 && \ + __GNUC_PATCHLEVEL__ > 0)))) +extern int __FLINT_API tolower_l (int); +extern int __FLINT_API toupper_l (int); +#endif + +extern void __FLINT_API u2clint_l (CLINT, USHORT); +extern int __FLINT_API uadd_l (CLINT, USHORT, CLINT); +extern UCHAR __FLINT_API ucrand64_l (void); +extern int __FLINT_API udiv_l (CLINT, USHORT, CLINT, CLINT); +extern void __FLINT_API ul2clint_l (CLINT, ULONG); +extern ULONG __FLINT_API ulrand64_l (void); +extern clint * __FLINT_API ulseed64_l (ULONG); +extern char * __FLINT_API ultoa_l (char *, ULONG, int); +extern int __FLINT_API umadd_l (CLINT, USHORT, CLINT, CLINT); +extern int __FLINT_API umexp_l (CLINT, USHORT, CLINT, CLINT); +extern int __FLINT_API umexpm_l (CLINT, USHORT, CLINT, CLINT); +extern int __FLINT_API ummul_l (CLINT, USHORT, CLINT, CLINT); +extern USHORT __FLINT_API umod_l (CLINT, USHORT); +extern int __FLINT_API umsub_l (CLINT, USHORT, CLINT, CLINT); +extern int __FLINT_API umul_l (CLINT, USHORT, CLINT); +extern USHORT __FLINT_API usrand64_l (void); +extern int __FLINT_API usub_l (CLINT, USHORT, CLINT); +extern int __FLINT_API vcheck_l (CLINT); +extern ULONG __FLINT_API version_l (void); +extern char * __FLINT_API verstr_l (void); +extern int __FLINT_API wmexp_l (USHORT, CLINT, CLINT, CLINT); +extern int __FLINT_API wmexpm_l (USHORT, CLINT, CLINT, CLINT); +extern void __FLINT_API xgcd_l (CLINT, CLINT, CLINT, CLINT, int *, CLINT, int *); +extern void __FLINT_API xor_l (CLINT, CLINT, CLINT); +extern int __FLINT_API twofact_l (CLINT, CLINT); + + +/* Kernel functions without Overflow-Detection */ +#if defined FLINT_ASM +extern void __FLINT_API_A mult (CLINT, CLINT, CLINT); +extern void __FLINT_API_A umul (CLINT, USHORT, CLINT); +extern void __FLINT_API_A sqr (CLINT, CLINT); +#else +extern void __FLINT_API mult (CLINT, CLINT, CLINT); +extern void __FLINT_API umul (CLINT, USHORT, CLINT); +extern void __FLINT_API sqr (CLINT, CLINT); +#endif +extern void __FLINT_API add (CLINT, CLINT, CLINT); +extern void __FLINT_API sub (CLINT, CLINT, CLINT); + + +/* Functions operating on signed CLINT-Values */ +extern int __FLINT_API sadd (CLINT, int, CLINT, int, CLINT); +extern int __FLINT_API ssub (CLINT, int, CLINT, int, CLINT); +extern int __FLINT_API smod (CLINT, int, CLINT, CLINT); + + +/* Constants */ +extern clint __FLINT_API_DATA nul_l[]; +extern clint __FLINT_API_DATA one_l[]; +extern clint __FLINT_API_DATA two_l[]; +extern USHORT __FLINT_API_DATA smallprimes[]; + +#ifdef __cplusplus +} +#endif + +#endif /* #defined __FLINTH__ */ diff --git a/flint/src/flintpp.cpp b/flint/src/flintpp.cpp new file mode 100644 index 0000000..826865d --- /dev/null +++ b/flint/src/flintpp.cpp @@ -0,0 +1,3399 @@ +//*****************************************************************************/ +// */ +// Functions for arithmetic and number theory with large integers in C */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module flintpp.cpp Revision: 14.06.2004 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//////////////////////////////////////////////////////////////////////////////// +// +// History +// +// 27.01.2002 +// Added member and friend functions lint2clint for export to type CLINT +// +// 29.06.2002 +// Moved BBS-PRNG and random prime generators to module randompp.cpp +// Added parameter file to function panic and to LINT_Error class +// and subclasses +// +// 01.12.2002 +// Removed const in all function declarations and definitions +// for parameters that are passed by value +// Removed const in all return types that are passed by value except +// for operators +// +// 03.05.2003 +// Added patch for compliance with gcc 3.2.x (use -DFLINTPP_ANSI) +// (kindly provided by Thomas Stibor) +// +// 14.06.2004 +// Corrected line +// if (seed.status != E_LINT_INV) seed64_l (seed.n_l); +// in function seedl() +// +//////////////////////////////////////////////////////////////////////////////// + +#include "flintpp.h" + +#if defined FLINTPP_ANSI +#define NOTHROW (nothrow) +#else +#define NOTHROW +#endif + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_assert.h" +#endif + +#ifdef NO_ASSERTS +#define Assert(a) (void)0 +#endif + +// Version control + +#define FLINTCPPVMAJ 3 +#define FLINTCPPVMIN 0 + +#if ((FLINTCPPVMIN != FLINTCPPHVMIN) || (FLINTCPPVMAJ != FLINTCPPHVMAJ)) +#error Version error: FLINTPP.CPP not compatible to FLINTPP.H +#endif + +//lint -wlib(0) +//lint -e537 (Don't complain about "repeated include files") + +#include +#include + +//lint -wlib(4) + + +//////////////////////////////////////////////////////////////////////////////// +// Constructors // +//////////////////////////////////////////////////////////////////////////////// + +// Constructor 1 +// Default-constructor without assigment +LINT::LINT (void) +{ + n_l = new NOTHROW CLINT; + + if (NULL == n_l) + { + panic (E_LINT_NHP, "Default constructor", 0, __LINE__); + } + + status = E_LINT_INV; +} + + +// Constructor 2 +// LINT is constructed from character string +LINT::LINT (const char* str, int base) +{ + int error; + + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 2", 0, __LINE__); + } + + error = str2clint_l (n_l , (char*)str, base); + + switch (error) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_NPT: + status = E_LINT_INV; + panic (E_LINT_NPT, "constructor 2", 1, __LINE__); + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + panic (E_LINT_OFL, "constructor 2", 1, __LINE__); + break; + case E_CLINT_BOR: + status = E_LINT_BOR; + panic (E_LINT_BOR, "constructor 2", 2, __LINE__); + break; + default: + status = E_LINT_INV; + panic (E_LINT_ERR, "constructor 2", error, __LINE__); + } +} //lint !e1541 + + +// Constructor 3 +// LINT is constructed from byte array with digits to base 2^8 +// according to IEEE P1363, significance of bytes increasing from left to right +LINT::LINT (const UCHAR* bytevector, int length) +{ + int error; + + if (NULL == bytevector) + { + panic (E_LINT_INV, "constructor 3", 1, __LINE__); + } + + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 3", 0, __LINE__); + } + + error = byte2clint_l (n_l , (UCHAR*)bytevector, length); + + switch (error) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_NPT: + status = E_LINT_INV; + panic (E_LINT_NPT, "constructor 3", 1, __LINE__); + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + panic (E_LINT_OFL, "constructor 3", 1, __LINE__); + break; + default: + status = E_LINT_INV; + panic (E_LINT_ERR, "constructor 3", error, __LINE__); + } +} //lint !e1541 + + +// Constructor 4 +// LINT is constructed from ASCII-string with C syntax. +// Syntax: +// "0[x|X]{0123456789abcdefABCDEF}" : HEX number +// "0[b|B]{01}" : Binary number +// "{0123456789}" : Characters are interpreted as decimal digits +LINT::LINT (const char* str) +{ + int error; + + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 5", 0, __LINE__); + } + + //lint -e668 -e613 (str is not NULL) + if (strncmp (str, "0x", 2) == 0 || strncmp (str, "0X", 2) == 0) + { + error = str2clint_l (n_l, (char*)str+2, 16); + } + else + { + if (strncmp (str, "0b", 2) == 0 || strncmp (str, "0B", 2) == 0) + { + error = str2clint_l (n_l, (char*)str+2, 2); + } + else + { + error = str2clint_l (n_l, (char*)str, 10); + } + } + + switch (error) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_NPT: + status = E_LINT_INV; + panic (E_LINT_NPT, "constructor 4", 1, __LINE__); + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + panic (E_LINT_OFL, "constructor 4", 1, __LINE__); + break; + default: + status = E_LINT_INV; + panic (E_LINT_ERR, "constructor 4", error, __LINE__); + } +} //lint !e1541 +e668 + + +// Constructor 5 +// LINT is constructed from LINT +LINT::LINT (const LINT& ln) +{ + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "constructor 5", 1, __LINE__); + + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 5", 0, __LINE__); + } + cpy_l (n_l, ln.n_l); + status = ln.status; +} //lint !e1541 + + +// Constructor 6 +// LINT is constructed from int (w/o sign extension) +LINT::LINT (signed int i) +{ + unsigned long ul; + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 8", 0, __LINE__); + } + status = E_LINT_OK; + ul = (unsigned)abs(i); + ul2clint_l (n_l, ul); +} + + +// Constructor 7 +// LINT is constructed from long (w/o sign extension) +LINT::LINT (signed long l) +{ + unsigned long ul; + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 9", 0, __LINE__); + } + status = E_LINT_OK; + ul = (ULONG)abs(l); + ul2clint_l (n_l, ul); +} + + +// Constructor 8 +// LINT is constructed from unsigned char +LINT::LINT (unsigned char uc) +{ + unsigned long ul; + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 10", 0, __LINE__); + } + status = E_LINT_OK; + ul = uc; + ul2clint_l (n_l, ul); +} + + +// Constructor 9 +// LINT is constructed from unsigned short +LINT::LINT (unsigned short us) +{ + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 11", 0, __LINE__); + } + status = E_LINT_OK; + u2clint_l (n_l, us); +} + + +// Constructor 10 +// LINT is constructed from unsigned int +LINT::LINT (unsigned int ui) +{ + unsigned long ul; + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 12", 0, __LINE__); + } + status = E_LINT_OK; + ul = ui; + ul2clint_l (n_l, ul); +} + + +// Constructor 11 +// LINT is constructed from unsigned long +LINT::LINT (unsigned long ul) +{ + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 13", 0, __LINE__); + } + status = E_LINT_OK; + ul2clint_l (n_l, ul); +} + + +// Constructor 12 +// LINT is constructed from type CLINT +LINT::LINT (const CLINT m_l) +{ + if (vcheck_l ((clint*)(m_l)) < 0) + { + panic (E_LINT_INV, "constructor 14", 1, __LINE__); + } + + n_l = new NOTHROW CLINT; + if (NULL == n_l) + { + panic (E_LINT_NHP, "constructor 14", 0, __LINE__); + } + + cpy_l (n_l, (clint*)m_l); //lint !e613 (m_l is not NULL) + status = E_LINT_OK; +} //lint !e1541 + + +//////////////////////////////////////////////////////////////////////////////// +// Overloaded operators // +//////////////////////////////////////////////////////////////////////////////// + +// Assignment + +const LINT& LINT::operator= (const LINT& ln) +{ + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "=", 1, __LINE__); + + if (&ln != this) // Don't copy object to itself + { + cpy_l (n_l, ln.n_l); + status = ln.status; + } + return *this; +} /*lint !e1539*/ + + +// Arithmetic + +const LINT operator+ (const LINT& lm, const LINT& ln) +{ + LINT sum; + int err; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "+", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "+", 2, __LINE__); + err = add_l (ln.n_l, lm.n_l, sum.n_l); + switch (err) + { + case E_CLINT_OK: + sum.status = E_LINT_OK; + break; + case E_CLINT_OFL: + sum.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "+", err, __LINE__); + } + return sum; +} + + +const LINT operator- (const LINT& lm, const LINT& ln) +{ + LINT diff; + int err; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "-", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "-", 2, __LINE__); + err = sub_l (lm.n_l, ln.n_l, diff.n_l); + switch (err) + { + case E_CLINT_OK: + diff.status = E_LINT_OK; + break; + case E_CLINT_UFL: + diff.status = E_LINT_UFL; + break; + default: + LINT::panic (E_LINT_ERR, "-", err, __LINE__); + } + + return diff; +} + + +const LINT operator* (const LINT& lm, const LINT& ln) +{ + LINT prd; + int err; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "*", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "*", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + err = sqr_l (lm.n_l, prd.n_l); // Use squaring function sqr_l for lm*lm + else + err = mul_l (lm.n_l, ln.n_l, prd.n_l); + + switch (err) + { + case E_CLINT_OK: + prd.status = E_LINT_OK; + break; + case E_CLINT_OFL: + prd.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "*", err, __LINE__); + } + + return prd; +} + + +const LINT operator/ (const LINT& lm, const LINT& ln) +{ + LINT quot; + CLINT junk_l; + int err; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "/", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "/", 2, __LINE__); + + err = div_l (lm.n_l, ln.n_l, quot.n_l, junk_l); + + switch (err) + { + case E_CLINT_OK: + quot.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "/", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "/", err, __LINE__); + } + + ZEROCLINT_L (junk_l); + return quot; +} + + +const LINT operator% (const LINT& lm, const LINT& ln) +{ + LINT rem; + CLINT junk_l; + int err; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "%", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "%", 2, __LINE__); + + err = div_l (lm.n_l, ln.n_l, junk_l, rem.n_l); + + switch (err) + { + case E_CLINT_OK: + rem.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "%", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "%", err, __LINE__); + } + + ZEROCLINT_L (junk_l); + return rem; +} + + +const LINT& LINT::operator++ (void) // Prefix operation +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "++", 0, __LINE__); + + err = inc_l (n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "++", err, __LINE__); + } + + return *this; +} + + +const LINT LINT::operator++ (int i) // Postfix operation +{ + LINT tmp = *this; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "++", 0, __LINE__); + + err = inc_l (n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "++", err, __LINE__); + } + + return tmp; +} //lint !e715 + + +const LINT& LINT::operator-- (void) // Prefix operation +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "--", 0, __LINE__); + + err = dec_l (n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "--", err, __LINE__); + } + + return *this; +} + + +const LINT LINT::operator-- (int i) // Postfix operation +{ + LINT tmp = *this; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "--", 0, __LINE__); + + err = dec_l (n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "--", err, __LINE__); + } + + return tmp; +} //lint !e715 + + +const LINT& LINT::operator+= (const LINT& ln) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "+=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "+=", 1, __LINE__); + + err = add_l (n_l, ln.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "+=", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::operator-= (const LINT& ln) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "-=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "-=", 1, __LINE__); + + err = sub_l (n_l, ln.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "-=", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::operator*= (const LINT& ln) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "*=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "*=", 1, __LINE__); + + if (&ln == this) + err = sqr_l (n_l, n_l); // Use squaring function sqr_l for ln*=ln + else + err = mul_l (n_l, ln.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "*=", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::operator/= (const LINT& ln) +{ + CLINT junk_l; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "/=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "/=", 1, __LINE__); + + err = div_l (n_l, ln.n_l, n_l, junk_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "/=", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "/=", err, __LINE__); + } + + ZEROCLINT_L (junk_l); + return *this; +} + + +const LINT& LINT::operator%= (const LINT& ln) +{ + CLINT junk_l; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "%=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "%=", 1, __LINE__); + + err = div_l (n_l, ln.n_l, junk_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "%=", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "%=", err, __LINE__); + } + + ZEROCLINT_L (junk_l); + return *this; +} + + +// Bitwise operators + + +const LINT operator<< (const LINT& ln, int times) +{ + int err; + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "<<", 1, __LINE__); + LINT shft = ln; + + err = shift_l (shft.n_l, times); + + switch (err) + { + case E_CLINT_OK: + shft.status = E_LINT_OK; // status = E_LINT_OK is set + break; // because shft = ln was executed in advance + case E_CLINT_OFL: + shft.status = E_LINT_OFL; + break; + case E_CLINT_UFL: + shft.status = E_LINT_UFL; + break; + default: + LINT::panic (E_LINT_ERR, "<<", err, __LINE__); + } + + return shft; +} + + +const LINT operator>> (const LINT& ln, int times) +{ + int err; + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, ">>", 1, __LINE__); + LINT shft = ln; + + err = shift_l (shft.n_l, -times); + + switch (err) + { + case E_CLINT_OK: + shft.status = E_LINT_OK; // status = E_LINT_OK is set + break; // because shft = ln was executed in advance + case E_CLINT_OFL: + shft.status = E_LINT_OFL; + break; + case E_CLINT_UFL: + shft.status = E_LINT_UFL; + break; + default: + LINT::panic (E_LINT_ERR, ">>", err, __LINE__); + } + + return shft; +} + + +const LINT& LINT::operator<<= (int times) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "<<=", 0, __LINE__); + + err = shift_l (n_l, times); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "<<=", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::operator>>= (int times) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, ">>=", 0, __LINE__); + + err = shift_l (n_l, -times); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, ">>=", err, __LINE__); + } + + return *this; +} + + +const LINT operator^ (const LINT& lm, const LINT& ln) +{ + LINT lr; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "^", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "^", 2, __LINE__); + + xor_l (lm.n_l, ln.n_l, lr.n_l); + + lr.status = E_LINT_OK; + return lr; +} + + +const LINT operator| (const LINT& lm, const LINT& ln) +{ + LINT lr; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "|", 0, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "|", 1, __LINE__); + + or_l (lm.n_l, ln.n_l, lr.n_l); + + lr.status = E_LINT_OK; + return lr; +} + + +const LINT operator& (const LINT& lm, const LINT& ln) +{ + LINT lr; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "&", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "&", 2, __LINE__); + + and_l (lm.n_l, ln.n_l, lr.n_l); + + lr.status = E_LINT_OK; + return lr; +} + + +const LINT& LINT::operator|= (const LINT& ln) +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "|=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "|=", 1, __LINE__); + + or_l (n_l, ln.n_l, n_l); + + status = E_LINT_OK; + return *this; +} + + +const LINT& LINT::operator&= (const LINT& ln) +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "&=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "&=", 1, __LINE__); + + and_l (n_l, ln.n_l, n_l); + + status = E_LINT_OK; + return *this; +} + + +const LINT& LINT::operator^= (const LINT& ln) +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "^=", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "^=", 1, __LINE__); + + xor_l (n_l, ln.n_l, n_l); + status = E_LINT_OK; + return *this; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Logical operators as friend functions // +//////////////////////////////////////////////////////////////////////////////// + +const int operator== (const LINT& lm, const LINT& ln) +{ + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "==", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "==", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 1; + } + + return equ_l (lm.n_l, ln.n_l); + // Operator == returns 1 if lm == ln, 0 else +} + + +const int operator!= (const LINT& lm, const LINT& ln) +{ + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "!=", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "!=", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 0; + } + + return (equ_l (lm.n_l, ln.n_l) == 0); + // Operator != returns 1 if lm != ln, 0 else +} + + +const int operator< (const LINT& lm, const LINT& ln) +{ + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "<", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "<", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 0; + } + + return (cmp_l (lm.n_l, ln.n_l) == -1); +} + + +const int operator> (const LINT& lm, const LINT& ln) +{ + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, ">", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, ">", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 0; + } + + return (cmp_l (lm.n_l, ln.n_l) == 1); +} + + +const int operator<= (const LINT& lm, const LINT& ln) +{ + int i; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, "<=", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "<=", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 1; + } + + i = cmp_l (lm.n_l, ln.n_l); + return ((i == -1) || (i == 0)); +} + + +const int operator>= (const LINT& lm, const LINT& ln) +{ + int i; + if (lm.status == E_LINT_INV) LINT::panic (E_LINT_INV, ">=", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, ">=", 2, __LINE__); + + if (&lm == &ln) //lint !e506 + { + return 1; + } + + i = cmp_l (lm.n_l, ln.n_l); + return ((i == 1) || (i == 0)); +} + + +//////////////////////////////////////////////////////////////////////////////// +// Bit access with member functions // +//////////////////////////////////////////////////////////////////////////////// + +const LINT& LINT::setbit (unsigned int pos) +{ + int err; + if (status == E_LINT_INV) + { // If not initialized, set *this to 0 ! + SETZERO_L (n_l); + status = E_LINT_OK; + } + + err = setbit_l (n_l, pos); + + switch (err) + { + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + break; // do nothing + } + + return *this; +} + + +const LINT& LINT::clearbit (unsigned int pos) +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "clearbit()", 0, __LINE__); + + clearbit_l (n_l, pos); + + status = E_LINT_OK; + return *this; +} + + +int LINT::testbit (unsigned int pos) const +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "testbit()", 0, __LINE__); + return (testbit_l (n_l, pos)); +} + + +//////////////////////////////////////////////////////////////////////////////// +// Swapping, purging // +//////////////////////////////////////////////////////////////////////////////// + +// member-swap + +LINT& LINT::fswap (LINT& b) +{ + LINT tmp; + if (status == E_LINT_INV) panic (E_LINT_INV, "fswap", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "fswap", 1, __LINE__); + tmp = *this; + *this = b; + b = tmp; + return *this; +} + + +// friend-swap + +void fswap (LINT& a, LINT& b) +{ + LINT tmp; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "fswap", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "fswap", 2, __LINE__); + tmp = a; + a = b; + b = tmp; +} + + +// Purging of LINT variables, overwriting with 0 + +void LINT::purge (void) +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "purge", 0, __LINE__); + purge_l (n_l); //lint !e613 + SETDIGITS_L (n_l, 0); //lint !e613 + status = E_LINT_INV; +} + + +// friend-purge + +void purge (LINT& a) +{ + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "purge", 1, __LINE__); + purge_l (a.n_l); //lint !e613 + SETDIGITS_L (a.n_l, 0); //lint !e613 + a.status = E_LINT_INV; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Arithmetic member functions // +// Accumulator mode // +//////////////////////////////////////////////////////////////////////////////// + +const LINT& LINT::add (const LINT& b) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "add", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "add", 1, __LINE__); + + err = add_l (n_l, b.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "add", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::sub (const LINT& b) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "sub", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "sub", 1, __LINE__); + + err = sub_l (n_l, b.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "sub", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mul (const LINT& b) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mul", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "mul", 1, __LINE__); + + if (&b == this) + err = sqr_l (n_l, n_l); + else + err = mul_l (n_l, b.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "mul", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::sqr (void) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "sqr", 0, __LINE__); + + err = sqr_l (n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + default: + panic (E_LINT_ERR, "sqr", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::divr (const LINT& d, LINT& r) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "divr", 0, __LINE__); + if (d.status == E_LINT_INV) panic (E_LINT_INV, "divr", 1, __LINE__); + + err = div_l (n_l, d.n_l, n_l, r.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + r.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "divr", 1, __LINE__); + break; + default: + panic (E_LINT_ERR, "divr", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mod (const LINT& d) +{ + LINT junk; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mod", 0, __LINE__); + if (d.status == E_LINT_INV) panic (E_LINT_INV, "mod", 1, __LINE__); + + err = div_l (n_l, d.n_l, junk.n_l, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mod", 1, __LINE__); + break; + default: + panic (E_LINT_ERR, "mod", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mod2 (USHORT m) // mod 2^m +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mod2", 0, __LINE__); + + err = mod2_l (n_l, m, n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + default: + panic (E_LINT_ERR, "mod2", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::madd (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "madd", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "madd", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "madd", 2, __LINE__); + + err = madd_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "madd", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "madd", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::msub (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "msub", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "msub", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "msub", 2, __LINE__); + + err = msub_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "msub", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "msub", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mmul (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mmul", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "mmul", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mmul", 2, __LINE__); + + if (&ln == this) + err = msqr_l (n_l, n_l, m.n_l); + else + err = mmul_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mmul", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mmul", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::msqr (const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "msqr", 0, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "msqr", 1, __LINE__); + + err = msqr_l (n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "msqr", 1, __LINE__); + break; + default: + panic (E_LINT_ERR, "msqr", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mexp (USHORT e, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mexp", 0, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mexp", 1, __LINE__); + + if (m.isodd ()) + { + err = umexpm_l (n_l, e, n_l, m.n_l); + } + else + { + err = umexp_l (n_l, e, n_l, m.n_l); + } + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mexp", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mexp", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mexp (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mexp", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "mexp", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mexp", 2, __LINE__); + + err = mexp_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mexp", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mexp", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mexp5m (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mexp5m", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "mexp5m", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mexp5m", 2, __LINE__); + + err = mexp5m_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_MOD: + panic (E_LINT_MOD, "mexp5m", 2, __LINE__); + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mexp5m", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mexp5m", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mexpkm (const LINT& ln, const LINT& m) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mexpkm", 0, __LINE__); + if (ln.status == E_LINT_INV) panic (E_LINT_INV, "mexpkm", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mexpkm", 2, __LINE__); + + err = mexpkm_l (n_l, ln.n_l, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_MOD: + panic (E_LINT_MOD, "mexpkm", 2, __LINE__); + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mexpkm", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mexpkm", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::mexp2 (USHORT e, const LINT& m) // *this^(2^e) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mexp2", 0, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mexp2", 1, __LINE__); + + err = mexp2_l (n_l, e, n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mexp2", 2, __LINE__); + break; + default: + panic (E_LINT_ERR, "mexp2", err, __LINE__); + } + + return *this; +} + + +const LINT& LINT::shift (int noofbits) +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "shift", 0, __LINE__); + + err = shift_l (n_l, noofbits); + + switch (err) + { + case E_CLINT_OK: + status = E_LINT_OK; + break; + case E_CLINT_OFL: + status = E_LINT_OFL; + break; + case E_CLINT_UFL: + status = E_LINT_UFL; + break; + default: + panic (E_LINT_ERR, "shift", err, __LINE__); + } + + return *this; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Number-theoretic member functions // +//////////////////////////////////////////////////////////////////////////////// + + +unsigned int LINT::ld (void) const +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "ld", 0, __LINE__); + return ld_l (n_l); +} + + +int LINT::iseven (void) const +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "iseven", 0, __LINE__); + return (ISEVEN_L (n_l)); //lint !e613 +} + + +int LINT::isodd (void) const +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "isodd", 0, __LINE__); + return (ISODD_L (n_l)); //lint !e613 +} + + +int LINT::isprime (int noofsmallprimes, int iterations) const +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "isprime", 0, __LINE__); + return (prime_l (n_l, noofsmallprimes, iterations)); +} + + +LINT LINT::issqr (void) const +{ + LINT sqroot; + if (status == E_LINT_INV) panic (E_LINT_INV, "issqr", 0, __LINE__); + + issqr_l (n_l, sqroot.n_l); + sqroot.status = E_LINT_OK; + + return sqroot; +} + + +LINT LINT::root (void) const +{ + LINT sqroot; + if (status == E_LINT_INV) panic (E_LINT_INV, "root", 0, __LINE__); + + iroot_l (n_l, sqroot.n_l); + sqroot.status = E_LINT_OK; + + return sqroot; +} + + +LINT LINT::gcd (const LINT& b) const +{ + LINT gcdiv; + if (status == E_LINT_INV) panic (E_LINT_INV, "gcd", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "gcd", 1, __LINE__); + + gcd_l (n_l, b.n_l, gcdiv.n_l); + gcdiv.status = E_LINT_OK; + + return gcdiv; +} + + +LINT LINT::lcm (const LINT& b) const +{ + LINT lcmult; + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "lcm", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "lcm", 1, __LINE__); + + err = lcm_l (n_l, b.n_l, lcmult.n_l); + + switch (err) + { + case E_CLINT_OK: + lcmult.status = E_LINT_OK; + break; + case E_CLINT_OFL: + lcmult.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "lcm", err, __LINE__); + } + + return lcmult; +} + + +LINT LINT::xgcd (const LINT& b , LINT& u, int& sign_u, LINT& v, int& sign_v) const +{ + LINT g, hlp; + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "xgcd", 0, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "xgcd", 1, __LINE__); + + xgcd_l (n_l, b.n_l, g.n_l, u.n_l, &sign_u, v.n_l, &sign_v); + g.status = E_LINT_OK; + u.status = E_LINT_OK; + v.status = E_LINT_OK; + + return g; +} + + +LINT LINT::inv (const LINT& b) const +{ + LINT invers, hlp; + if (status == E_LINT_INV) panic (E_LINT_INV, "inv", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "inv", 1, __LINE__); + + inv_l (n_l, b.n_l, hlp.n_l, invers.n_l); + invers.status = E_LINT_OK; + + return invers; +} + + +int LINT::jacobi (const LINT& q) const +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "jacobi", 0, __LINE__); + if (q.status == E_LINT_INV) panic (E_LINT_INV, "jacobi", 1, __LINE__); + + return (jacobi_l (n_l, q.n_l)); +} + + +LINT LINT::root (const LINT& p, const LINT& q) const +{ + LINT rt; + if (status == E_LINT_INV) panic (E_LINT_INV, "root", 0, __LINE__); + if (p.status == E_LINT_INV) panic (E_LINT_INV, "root", 1, __LINE__); + if (q.status == E_LINT_INV) panic (E_LINT_INV, "root", 2, __LINE__); + + if (root_l (n_l, p.n_l, q.n_l, rt.n_l) == 0) + { + rt.status = E_LINT_OK; + } + else + { + rt = 0; + rt.status = E_LINT_ERR; + } + return rt; +} + + +LINT LINT::root (const LINT& p) const +{ + LINT rt; + if (status == E_LINT_INV) panic (E_LINT_INV, "root", 0, __LINE__); + if (p.status == E_LINT_INV) panic (E_LINT_INV, "root", 1, __LINE__); + + if (proot_l (n_l, p.n_l, rt.n_l) == 0) + { + rt.status = E_LINT_OK; + } + else + { + rt = 0; + rt.status = E_LINT_ERR; + } + return rt; +} + + +int LINT::twofact (LINT& odd) const +{ + if (status == E_LINT_INV) panic (E_LINT_INV, "twofact", 0, __LINE__); + odd.status = E_LINT_OK; + return (twofact_l (n_l, odd.n_l)); +} + + +int LINT::mequ (const LINT& b, const LINT& m) const +{ + int err; + if (status == E_LINT_INV) panic (E_LINT_INV, "mequ", 0, __LINE__); + if (b.status == E_LINT_INV) panic (E_LINT_INV, "mequ", 1, __LINE__); + if (m.status == E_LINT_INV) panic (E_LINT_INV, "mequ", 2, __LINE__); + + err = mequ_l (n_l, b.n_l, m.n_l); + + switch (err) + { + case 0: + case 1: + break; + case E_CLINT_DBZ: + panic (E_LINT_DBZ, "mequ", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mequ", err, __LINE__); + } + + return err; +} + + +LINT LINT::chinrem (const LINT& m, const LINT& b, const LINT& u) const +{ + LINT x; + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "chinrem", 0, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "chinrem", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "chinrem", 2, __LINE__); + if (u.status == E_LINT_INV) LINT::panic (E_LINT_INV, "chinrem", 3, __LINE__); + + clint* coeff_l[4]; + coeff_l[0] = n_l; + coeff_l[1] = m.n_l; + coeff_l[2] = b.n_l; + coeff_l[3] = u.n_l; + + if (chinrem_l (2, coeff_l, x.n_l) == 0) + { + x.status = E_LINT_OK; + } + else + { + x = 0; + x.status = E_LINT_ERR; + } + return x; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Arithmetic friend functions // +//////////////////////////////////////////////////////////////////////////////// + +LINT add (const LINT& a, const LINT& b) +{ + LINT sum; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "add", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "add", 2, __LINE__); + + err = add_l (a.n_l, b.n_l, sum.n_l); + + switch (err) + { + case E_CLINT_OK: + sum.status = E_LINT_OK; + break; + case E_CLINT_OFL: + sum.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "add", err, __LINE__); + } + + return sum; +} + + +LINT sub (const LINT& a, const LINT& b) +{ + LINT dif; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "sub", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "sub", 2, __LINE__); + + err = sub_l (a.n_l, b.n_l, dif.n_l); + + switch (err) + { + case E_CLINT_OK: + dif.status = E_LINT_OK; + break; + case E_CLINT_UFL: + dif.status = E_LINT_UFL; + break; + default: + LINT::panic (E_LINT_ERR, "sub", err, __LINE__); + } + + return dif; +} + + +LINT mul (const LINT& a, const LINT& b) +{ + LINT p; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mul", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mul", 2, __LINE__); + + if (&a == &b) //lint !e506 + err = sqr_l (a.n_l, p.n_l); + else + err = mul_l (a.n_l, b.n_l, p.n_l); + + switch (err) + { + case E_CLINT_OK: + p.status = E_LINT_OK; + break; + case E_CLINT_OFL: + p.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "mul", err, __LINE__); + } + + return p; +} + + +LINT sqr (const LINT& a) +{ + LINT p; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "sqr", 1, __LINE__); + + err = sqr_l (a.n_l, p.n_l); + + switch (err) + { + case E_CLINT_OK: + p.status = E_LINT_OK; + break; + case E_CLINT_OFL: + p.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "sqr", err, __LINE__); + } + + return p; +} + + +LINT divr (const LINT& a, const LINT& b, LINT& r) +{ + LINT q; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "divr", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "divr", 2, __LINE__); + + err = div_l (a.n_l, b.n_l, q.n_l, r.n_l); + + switch (err) + { + case E_CLINT_OK: + q.status = E_LINT_OK; + r.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "divr", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "div", err, __LINE__); + } + + return q; +} + + +LINT mod (const LINT& a, const LINT& n) +{ + LINT r, junk; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mod", 1, __LINE__); + if (n.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mod", 2, __LINE__); + + err = div_l (a.n_l, n.n_l, junk.n_l, r.n_l); + + switch (err) + { + case E_CLINT_OK: + r.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mod", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mod", err, __LINE__); + } + + return r; +} + + +LINT mod2 (const LINT& a, USHORT k) +{ + LINT r; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mod2", 1, __LINE__); + + err = mod2_l (a.n_l, k, r.n_l); + + switch (err) + { + case E_CLINT_OK: + r.status = E_LINT_OK; + break; + default: + LINT::panic (E_LINT_ERR, "mod2", err, __LINE__); + } + + return r; +} + + +LINT madd (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT sum; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "madd", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "madd", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "madd", 3, __LINE__); + + err = madd_l (lr.n_l, ln.n_l, sum.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + sum.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "madd", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "madd", err, __LINE__); + } + + return sum; +} + + +LINT msub (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT dif; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "msub", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "msub", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "msub", 3, __LINE__); + + err = msub_l (lr.n_l, ln.n_l, dif.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + dif.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "msub", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "msub", err, __LINE__); + } + + return dif; +} + + +LINT mmul (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT p; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mmul", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mmul", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mmul", 3, __LINE__); + + if (&lr == &ln) //lint !e506 + { + err = msqr_l (lr.n_l, p.n_l, m.n_l); + } + else + { + err = mmul_l (lr.n_l, ln.n_l, p.n_l, m.n_l); + } + + switch (err) + { + case E_CLINT_OK: + p.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mmul", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mmul", err, __LINE__); + } + + return p; +} + + +LINT msqr (const LINT& lr, const LINT& m) +{ + LINT p; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "msqr", 1, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "msqr", 2, __LINE__); + + err = msqr_l (lr.n_l, p.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + p.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "msqr", 2, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "msqr", err, __LINE__); + } + + return p; +} + + +LINT mexp (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT pot; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 3, __LINE__); + + err = mexp_l (lr.n_l, ln.n_l, pot.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexp", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexp", err, __LINE__); + } + + return pot; +} + + +LINT mexp (USHORT b, const LINT& ln, const LINT& m) +{ + LINT pot; + int err; + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 3, __LINE__); + + if (m.isodd ()) + { + err = wmexpm_l (b, ln.n_l, pot.n_l, m.n_l); + } + else + { + err = wmexp_l (b, ln.n_l, pot.n_l, m.n_l); + } + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexp", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexp", err, __LINE__); + } + + return pot; +} + + +LINT mexp (const LINT& lr, USHORT e, const LINT& m) +{ + LINT pot; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 1, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 3, __LINE__); + + if (m.isodd()) + { + err = umexpm_l (lr.n_l, e, pot.n_l, m.n_l); + } + else + { + err = umexp_l (lr.n_l, e, pot.n_l, m.n_l); + } + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexp", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexp", err, __LINE__); + } + + return pot; +} + + +LINT mexp5m (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT pot; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp5m", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp5m", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp5m", 3, __LINE__); + + err = mexp5m_l (lr.n_l, ln.n_l, pot.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_MOD: + LINT::panic (E_LINT_MOD, "mexp5m", 3, __LINE__); + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexp5m", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexp5m", err, __LINE__); + } + + return pot; +} + + +LINT mexpkm (const LINT& lr, const LINT& ln, const LINT& m) +{ + LINT pot; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexpkm", 1, __LINE__); + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexpkm", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexpkm", 3, __LINE__); + + err = mexpkm_l (lr.n_l, ln.n_l, pot.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_MOD: + LINT::panic (E_LINT_MOD, "mexpkm", 3, __LINE__); + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexpkm", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexpkm", err, __LINE__); + } + + return pot; +} + + +LINT mexp2 (const LINT& lr, USHORT e, const LINT& m) +{ + LINT pot; + int err; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 1, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mexp", 3, __LINE__); + + err = mexp2_l (lr.n_l, e, pot.n_l, m.n_l); + + switch (err) + { + case E_CLINT_OK: + pot.status = E_LINT_OK; + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mexp2", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mexp2", err, __LINE__); + } + + return pot; +} + + +LINT shift (const LINT& a, int noofbits) +{ + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "shift", 1, __LINE__); + + LINT shft = a; + err = shift_l (shft.n_l, noofbits); + + switch (err) + { + case E_CLINT_OK: + shft.status = E_LINT_OK; + break; + case E_CLINT_OFL: + shft.status = E_LINT_OFL; + break; + case E_CLINT_UFL: + shft.status = E_LINT_UFL; + break; + default: + LINT::panic (E_LINT_ERR, ">>", err, __LINE__); + } + + return shft; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Number-theoretic friend functions // +//////////////////////////////////////////////////////////////////////////////// + + +unsigned int ld (const LINT& a) +{ + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "ld", 1, __LINE__); + return ld_l (a.n_l); +} + + +int isprime (const LINT& p, int noofsmallprimes, int iterations) +{ + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "isprime", 1, __LINE__); + return (prime_l (p.n_l, noofsmallprimes, iterations)); +} + + +int iseven (const LINT& p) +{ + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "iseven", 1, __LINE__); + return (ISEVEN_L (p.n_l)); +} + + +int isodd (const LINT& p) +{ + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "isodd", 1, __LINE__); + return (ISODD_L (p.n_l)); +} + + +LINT issqr (const LINT& lr) +{ + LINT sqroot; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "issqr", 1, __LINE__); + + issqr_l (lr.n_l, sqroot.n_l); + sqroot.status = E_LINT_OK; + + return sqroot; +} + + +LINT root (const LINT& lr) +{ + LINT sqroot; + if (lr.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 1, __LINE__); + + iroot_l (lr.n_l, sqroot.n_l); + sqroot.status = E_LINT_OK; + + return sqroot; +} + + +LINT gcd (const LINT& a, const LINT& b) +{ + LINT gcdiv, hlp; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "gcd", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "gcd", 2, __LINE__); + + gcd_l (a.n_l, b.n_l, gcdiv.n_l); + gcdiv.status = E_LINT_OK; + + return gcdiv; +} + + +LINT lcm (const LINT& a, const LINT& b) +{ + LINT lcmult, hlp; + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "lcm", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "lcm", 2, __LINE__); + + err = lcm_l (a.n_l, b.n_l, lcmult.n_l); + + switch (err) + { + case E_CLINT_OK: + lcmult.status = E_LINT_OK; + break; + case E_CLINT_OFL: + lcmult.status = E_LINT_OFL; + break; + default: + LINT::panic (E_LINT_ERR, "lcm", err, __LINE__); + } + + return lcmult; +} + + +LINT xgcd (const LINT& a, const LINT& b , LINT& u, int& sign_u, LINT& v, int& sign_v) +{ + LINT g, hlp; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "xgcd", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "xgcd", 2, __LINE__); + + xgcd_l (a.n_l, b.n_l, g.n_l, u.n_l, &sign_u, v.n_l, &sign_v); + + g.status = E_LINT_OK; + u.status = E_LINT_OK; + v.status = E_LINT_OK; + + return g; +} + + +LINT inv (const LINT& a, const LINT& b) +{ + LINT invers, hlp; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "inv", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "inv", 2, __LINE__); + + inv_l (a.n_l, b.n_l, hlp.n_l, invers.n_l); + invers.status = E_LINT_OK; + + return invers; +} + + +int jacobi (const LINT& p, const LINT& q) +{ + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "jacobi", 1, __LINE__); + if (q.status == E_LINT_INV) LINT::panic (E_LINT_INV, "jacobi", 2, __LINE__); + + return (jacobi_l (p.n_l, q.n_l)); +} + + +LINT root (const LINT& a, const LINT& p) +{ + LINT rt; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 1, __LINE__); + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 2, __LINE__); + + if (proot_l (a.n_l, p.n_l, rt.n_l) == 0) + { + rt.status = E_LINT_OK; + } + else + { + rt = 0; + rt.status = E_LINT_ERR; + } + return rt; +} + + +LINT root (const LINT& a, const LINT& p, const LINT& q) +{ + LINT rt; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 1, __LINE__); + if (p.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 2, __LINE__); + if (q.status == E_LINT_INV) LINT::panic (E_LINT_INV, "root", 3, __LINE__); + + if (root_l (a.n_l, p.n_l, q.n_l, rt.n_l) == 0) + { + rt.status = E_LINT_OK; + } + else + { + rt = 0; + rt.status = E_LINT_ERR; + } + return rt; +} + + +LINT chinrem (unsigned int noofeq, LINT** coeff) +{ + LINT x; + clint** coeff_l = new clint* [noofeq << 1]; + if (NULL == coeff_l) + { + return LINT(0); + } + clint** k_l = coeff_l; + + for (unsigned i = 0; i < (noofeq << 1); coeff_l++, coeff++, i++) + { + if ((*coeff)->status == E_LINT_INV) LINT::panic (E_LINT_INV, "chinrem", i, __LINE__); + *coeff_l = (*coeff)->n_l; + } + + if (chinrem_l (noofeq, k_l, x.n_l) == 0) + { + x.status = E_LINT_OK; + } + else + { + x = 0; + x.status = E_LINT_ERR; + } + + delete [] k_l; + return x; +} + + +LINT primroot (unsigned int noofprimes, LINT** primes) +{ + LINT x; + clint** primes_l = new clint* [noofprimes + 1]; + if (NULL == primes_l) + { + return LINT(0); + } + clint** pr_l = primes_l; + + for (unsigned int i = 0; i <= noofprimes; primes_l++, primes++, i++) + { + if ((*primes)->status == E_LINT_INV) LINT::panic (E_LINT_INV, "primroot", i, __LINE__); + *primes_l = (*primes)->n_l; + } + + if (primroot_l (x.n_l, noofprimes, pr_l) == 0) + { + x.status = E_LINT_OK; + } + else + { + x = 0UL; + x.status = E_LINT_ERR; + } + + delete [] pr_l; + return x; +} + + +int twofact (const LINT& even, LINT& odd) +{ + if (even.status == E_LINT_INV) LINT::panic (E_LINT_INV, "twofact", 1, __LINE__); + odd.status = E_LINT_OK; + return (twofact_l (even.n_l, odd.n_l)); +} + + +// Determination of smallest prime p >= a w/ gcd (p - 1, f) = 1 + +LINT nextprime (const LINT& a, const LINT& f) +{ + LINT p(a); + if (p.iseven ()) ++p; + while (!p.isprime () || (gcd (p - 1, f) != 1)) + { + ++p; + ++p; + } + return p; // Now p is the smallest prime >= a with gcd (p - 1, f) = 1 +} + + +int mequ (const LINT& a, const LINT& b, const LINT& m) +{ + int err; + if (a.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mequ", 1, __LINE__); + if (b.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mequ", 2, __LINE__); + if (m.status == E_LINT_INV) LINT::panic (E_LINT_INV, "mequ", 3, __LINE__); + + err = mequ_l (a.n_l, b.n_l, m.n_l); + + switch (err) + { + case 0: + case 1: + break; + case E_CLINT_DBZ: + LINT::panic (E_LINT_DBZ, "mequ", 3, __LINE__); + break; + default: + LINT::panic (E_LINT_ERR, "mequ", err, __LINE__); + } + + return err; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Pseudorandom number generators // +//////////////////////////////////////////////////////////////////////////////// + + +// Linear congruential generator + +void seedl (const LINT& seed) +{ + if (seed.status != E_LINT_INV) seed64_l (seed.n_l); + else LINT::panic (E_LINT_INV, "seed64", 0, __LINE__); +} + + +LINT randl (int l) +{ + LINT random; + rand_l (random.n_l, MIN (l, (int)CLINTMAXBIT)); + random.status = E_LINT_OK; + return random; +} + + +LINT randl (const LINT& rmin, const LINT& rmax) +{ + if (rmin.status == E_LINT_INV) LINT::panic (E_LINT_INV, "randl", 1, __LINE__); + if (rmax.status == E_LINT_INV) LINT::panic (E_LINT_INV, "randl", 2, __LINE__); + if (rmax < rmin) LINT::panic (E_LINT_INV, "randl", 1, __LINE__); + + LINT random; + LINT t = rmax - rmin; + USHORT l = (ld (rmin) + ld (rmax)) >> 1; + + rand_l (random.n_l, MIN (l, (int)CLINTMAXBIT)); + random.status = E_LINT_OK; + + if (random < rmin) + { + random += rmin; + } + + if (random > rmax) + { + random = rmin + random % (t + 1); + } + + Assert ((random >= rmin) && (random <= rmax)); + + return random; +} + + + +//////////////////////////////////////////////////////////////////////////////// +// Input/Output // +//////////////////////////////////////////////////////////////////////////////// + + +long LINT::flagsindex; + +// Initialization of class member setup (class LintStatus == E_LINT_INV) +// The initialization of LINT::setup causes a call to the constructor +// LintInit(), which in turn initializes the static member flagsindex as +// a pointer to ios-internal memory: + +LintInit LINT::setup; /*lint !e1502*/ + + +// Constructor LintInit() sets the ios-internal variable ios::iword (flagsindex) +// to the LINT default values: + +LintInit::LintInit (void) +{ + // Get index to status variable of type long in class ios + LINT::flagsindex = ios::xalloc (); + + // Set default status in cout and cerr + cout.iword (LINT::flagsindex) = cerr.iword (LINT::flagsindex) = + LINT::lintshowlength | LINT::linthex | LINT::lintshowbase; +} + + +// Read static LINT status variable in ios for standard output stream cout + +long LINT::flags (void) +{ + return cout.iword (flagsindex); +} + + +// Read static LINT status variable in ios for output stream ostream s + +long LINT::flags (ostream& s) +{ + return s.iword (flagsindex); +} + + +// Set static LINT status variable in ios for output stream ostream s + +long LINT::setf (ostream& s, long flag) +{ + long t = s.iword (flagsindex); + + // Flags lintdec, linthex, lintbin, lintoct are mutually exclusive: + if (flag & LINT::lintdec) + { + s.iword (flagsindex) = + (t & ~LINT::linthex & ~LINT::lintoct & ~LINT::lintbin) | LINT::lintdec; + flag ^= LINT::lintdec; + } + + if (flag & LINT::linthex) + { + s.iword (flagsindex) = + (t & ~LINT::lintdec & ~LINT::lintoct & ~LINT::lintbin) | LINT::linthex; + flag ^= LINT::linthex; + } + + if (flag & LINT::lintoct) + { + s.iword (flagsindex) = + (t & ~LINT::lintdec & ~LINT::linthex & ~LINT::lintbin) | LINT::lintoct; + flag ^= LINT::lintoct; + } + + if (flag & LINT::lintbin) + { + s.iword (flagsindex) = + (t & ~LINT::lintdec & ~LINT::lintoct & ~LINT::linthex) | LINT::lintbin; + flag ^= LINT::lintbin; + } + + // All remaining flags are mutually compatible: + s.iword (flagsindex) |= flag; + + return t; +} + + +// Set static LINT status variable in ios for standard output stream cout + +long LINT::setf (long flag) +{ + return LINT::setf (cout, flag); +} + + +// Switch off status bits in ostream s + +long LINT::unsetf (ostream& s, long flag) +{ + int t = s.iword (flagsindex); + s.iword (flagsindex) = (t | flag) ^ flag; + return t; +} + + +// Switch off status bits in stream cout + +long LINT::unsetf (long flag) +{ + return LINT::unsetf (cout, flag); +} + + +// Reset of LINT status variable for stream ostream s + +long LINT::restoref (ostream& s, long flag) +{ + int t = s.iword (flagsindex); + LINT::unsetf (s, t); + s.iword (flagsindex) = flag; + return t; +} + + +// Reset of LINT status variable for standard stream ostream cout + +long LINT::restoref (long flag) +{ + return LINT::restoref (cout, flag); +} + + +// Manipulators + +ostream& LintHex (ostream& s) +{ + LINT::setf (s, LINT::linthex); + return s; +} + +ostream& LintDec (ostream& s) +{ + LINT::setf (s, LINT::lintdec); + return s; +} + +ostream& LintOct (ostream& s) +{ + LINT::setf (s, LINT::lintoct); + return s; +} + +ostream& LintBin (ostream& s) +{ + LINT::setf (s, LINT::lintbin); + return s; +} + +ostream& LintUpr (ostream& s) +{ + LINT::setf (s, LINT::lintuppercase); + return s; +} + +ostream& LintLwr (ostream& s) +{ + LINT::unsetf (s, LINT::lintuppercase); + return s; +} + +ostream& LintShowbase (ostream& s) +{ + LINT::setf (s, LINT::lintshowbase); + return s; +} + +ostream& LintNobase (ostream& s) +{ + LINT::unsetf (s, LINT::lintshowbase); + return s; +} + +ostream& LintShowlength (ostream& s) +{ + LINT::setf (s, LINT::lintshowlength); + return s; +} + +ostream& LintNolength (ostream& s) +{ + LINT::unsetf (s, LINT::lintshowlength); + return s; +} + + +// Manipulators SetLintFlags, ResetLintFlags + +ostream& _SetLintFlags (ostream& s, int flag) +{ + LINT::setf (s, flag); + return s; +} + +ostream& _ResetLintFlags (ostream& s, int flag) +{ + LINT::unsetf (s, flag); + return s; +} + +LINT_omanip SetLintFlags (int flag) +{ + return LINT_omanip (&_SetLintFlags, flag); +} + +LINT_omanip ResetLintFlags (int flag) +{ + return LINT_omanip (&_ResetLintFlags, flag); +} + + +// Overloading of ostream operator << for ouput of LINT objects + +ostream& operator << (ostream& s, const LINT& ln) +{ + unsigned short base = 16; + long flags = LINT::flags (s); + char* formatted_lint; + + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "ostream operator<<", 0, __LINE__); + + if (flags & LINT::linthex) + { + base = 16; + } + else + { + if (flags & LINT::lintdec) + { + base = 10; + } + else + { + if (flags & LINT::lintoct) + { + base = 8; + } + else + { + if (flags & LINT::lintbin) + { + base = 2; + } + } + } + } + + if (flags & LINT::lintshowbase) + { + formatted_lint = lint2str (ln, base, 1); + } + else + { + formatted_lint = lint2str (ln, base, 0); + } + + if (flags & LINT::lintuppercase) + { + strupr_l (formatted_lint); + } + + s << formatted_lint << flush; + + if (flags & LINT::lintshowlength) + { + +#ifdef FLINTPP_ANSI + // works with gcc 3.2 + ios::fmtflags _flags = s.flags (); //get current flag settings +#else + + long _flags = s.flags (); //get current flag settings +#endif + + s.setf (ios::dec); //lint !e641 + s << endl << ld (ln) << " bit\n" << endl; + s.setf (_flags); //restore flags + } + + return s; +} + + +// Overloading of ifstream/ofstream operators >>/<< for file input/ouput +// of LINT objects + +ofstream& operator<< (ofstream& s, const LINT& ln) +{ + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "ofstream operator <<", 0, __LINE__); + for (int i = 0; i <= (int) DIGITS_L (ln.n_l); i++) + { + if (write_ind_ushort (s, ln.n_l[i])) + { + LINT::panic (E_LINT_EOF, "ofstream operator <<", 0, __LINE__); + } + } + return s; +} + + +fstream& operator<< (fstream& s, const LINT& ln) +{ + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "fstream operator <<", 0, __LINE__); + for (int i = 0; i <= (int) DIGITS_L (ln.n_l); i++) + { + if (write_ind_ushort (s, ln.n_l[i])) + { + LINT::panic (E_LINT_EOF, "fstream operator <<", 0, __LINE__); + } + } + return s; +} + + +ifstream& operator>> (ifstream& s, LINT& ln) +{ + if (read_ind_ushort (s, ln.n_l)) + { + LINT::panic (E_LINT_EOF, "ifstream operator >>", 0, __LINE__); + } + + if (DIGITS_L (ln.n_l) < CLINTMAXSHORT) + { + for (int i = 1; i <= (int) DIGITS_L (ln.n_l); i++) + { + if (read_ind_ushort (s, &ln.n_l[i])) + { + LINT::panic (E_LINT_EOF, "ifstream operator >>", 0, __LINE__); + } + } + } + if (vcheck_l (ln.n_l) == 0) // be paranoid - check imported values! + { + ln.status = E_LINT_OK; + } + else + { + ln.status = E_LINT_INV; + } + return s; +} + + +fstream& operator>> (fstream&s, LINT& ln) +{ + if (read_ind_ushort (s, ln.n_l)) + { + LINT::panic (E_LINT_EOF, "fstream operator >>", 0, __LINE__); + } + + if (DIGITS_L (ln.n_l) < CLINTMAXSHORT) + { + for (int i = 1; i <= (int) DIGITS_L (ln.n_l); i++) + { + if (read_ind_ushort (s, &ln.n_l[i])) + { + LINT::panic (E_LINT_EOF, "fstream operator >>", 0, __LINE__); + } + } + } + if (vcheck_l (ln.n_l) == 0) + { // Be paranoid ... + ln.status = E_LINT_OK; + } + else + { + ln.status = E_LINT_INV; + } + return s; +} + + +// Conversion of type LINT to character string by lint2str + +// lint2str as member function: + +char* LINT::lint2str (USHORT base, int showbase) const +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2str", 0, __LINE__); + return xclint2str_l (n_l, base, showbase); +} + + +// lint2str as friend function + +char* lint2str (const LINT& ln, USHORT base, int showbase) +{ + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2str", 0, __LINE__); + return xclint2str_l (ln.n_l, base, showbase); +} + + +// Conversion of type LINT to byte array by lint2byte + +// lint2byte as member function: + +UCHAR* LINT::lint2byte (int* len) const +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2byte", 0, __LINE__); + return clint2byte_l (n_l, len); +} + + +// lint2byte as friend function + +UCHAR* lint2byte (const LINT& ln, int* len) +{ + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2byte", 0, __LINE__); + return clint2byte_l (ln.n_l, len); +} + + +// LINT to CLINT export + +// lint2clint as member function: + +clint* LINT::lint2clint (void) const +{ + if (status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2clint", 0, __LINE__); + return n_l; +} + + +// lint2clint as friend function + +clint* lint2clint (const LINT& ln) +{ + if (ln.status == E_LINT_INV) LINT::panic (E_LINT_INV, "lint2clint", 0, __LINE__); + return ln.n_l; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Error-Handling // +//////////////////////////////////////////////////////////////////////////////// + +//Get error status + +LINT_ERRORS LINT::Get_Warning_Status (void) +{ + return status; +} + + +//Set user defined error handler + +static void (*LINT_User_Error_Handler)(LINT_ERRORS, const char*, int, int, const char*) = NULL; + +void LINT::Set_LINT_Error_Handler (void (*Error_Handler)(LINT_ERRORS, + const char*, int, int, const char*)) +{ + LINT_User_Error_Handler = Error_Handler; +} + + +// Set default error handler (member function) + +void LINT::panic (LINT_ERRORS error, const char* func, int arg, int line, const char* file) +{ + if (LINT_User_Error_Handler) + { + LINT_User_Error_Handler (error, func, arg, line, file); + } + else + { + cerr << "Critical runtime error detected by class LINT:\n"; + switch (error) + { + case E_LINT_OK: + // O.K., do nothing + break; + + case E_LINT_DBZ: + cerr << "Division by zero, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_DivByZero (func, line, file); +#endif + break; + + case E_LINT_EOF: + cerr << "Error in file I/O, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_File (func, line, file); +#endif + break; + + case E_LINT_OFL: + cerr << "Overflow, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_OFL (func, line, file); +#endif + break; + + case E_LINT_UFL: + cerr << "Underflow, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_UFL (func, line, file); +#endif + break; + + case E_LINT_NHP: + cerr << "Error in new, function/operator " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Heap (func, line, file); +#endif + break; + + case E_LINT_INV: + cerr << "Argument " << arg << " in operator/function " << func; + cerr << " uninitialized" << endl; + cerr << "or has invalid value, line "; + cerr << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Init (func, arg, line, file); +#endif + break; + + case E_LINT_BOR: + cerr << "Base invalid, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Base (func, line, file); +#endif + break; + + case E_LINT_MOD: + cerr << "Modulus is even, operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Emod (func, line, file); +#endif + break; + + case E_LINT_NPT: + cerr << "Argument " << arg << " is Null-pointer in operator/function" << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Nullptr (func, arg, line, file); +#endif + break; + + case E_LINT_RIN: + cerr << "Error on call to a random number generator "; + cerr << endl << "in operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Nonrand (func, arg, line, file); +#endif + break; + + case E_LINT_ERR: + default: + cerr << "Unexpected Error in operator/function " << func; + cerr << ", line " << line << ", module " << file << endl; +#ifdef LINT_EX + throw LINT_Mystic (func, arg, line, file); +#endif + } + abort (); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// Exception handling // +/////////////////////////////////////////////////////////////////////////////// + +LINT_DivByZero::LINT_DivByZero (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_DivByZero::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Division by zero in operator/function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_File::LINT_File (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_File::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Error in file I/O, operator " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Init::LINT_Init (const char* func, int arg, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = arg; +} + +void LINT_Init::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Argument " << argno << " in operator/function " + << function << " is not initialized" << endl; + cerr << "or has invalid value" << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Heap::LINT_Heap (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_Heap::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Error in new in operator/function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_OFL::LINT_OFL (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_OFL::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Overflow in operator/function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_UFL::LINT_UFL (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_UFL::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Underflow in operator/function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Base::LINT_Base (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_Base::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Base invalid in operator/function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Emod::LINT_Emod (const char* func, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = 0; +} + +void LINT_Emod::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Modulus even in Montgomery-function " << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Nullptr::LINT_Nullptr (const char* func, int arg, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = arg; +} + +void LINT_Nullptr::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Argument " << argno << " is Null-pointer in operator/Function "; + cerr << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Nonrand::LINT_Nonrand (const char* func, int arg, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = arg; +} + +void LINT_Nonrand::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Call to a non initialized PNRG "; + cerr << "in Operator/Function "; + cerr << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + + +LINT_Mystic::LINT_Mystic (const char* func, int errcode, int line, const char* file) +{ + function = func; + module = file; + lineno = line; + argno = errcode; +} + +void LINT_Mystic::debug_print (void) const +{ + cerr << "LINT-Exception:" << endl; + cerr << "Unexpected error " << argno << " in operator/function " + << function << endl; + cerr << "Module: " << module << ", Line: " << lineno << endl; +} + +////////////////////// End of flintpp.cpp ////////////////////////////////////// + + + + + + + diff --git a/flint/src/flintpp.h b/flint/src/flintpp.h new file mode 100644 index 0000000..b00ae0d --- /dev/null +++ b/flint/src/flintpp.h @@ -0,0 +1,715 @@ +//*****************************************************************************/ +// */ +// Functions for arithmetic and number theory with large integers in C */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module flintpp.h Revision: 19.05.2003 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ +// +// History +// +// 27.01.2002 +// Added member and friend functions lint2clint for export to type CLINT +// 29.06.2002 +// Added parameter file to function panic and to LINT_Error class +// and subclasses +// 01.12.2002 +// Removed const in all function declarations and definitions +// for parameters that are passed by value +// Removed const in all return types that are passed by value except +// for operators +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef __FLINTPPH__ +#define __FLINTPPH__ // flintpp.h is #included + +//lint -wlib(1) + +// Test for gcc 3.2.x +#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)) +#define FLINTPP_ANSI +#endif + +#if defined FLINTPP_ANSI +#include +#include +#include +#include +#include +#include +#if !defined __WATCOMC__ +using namespace std; +#endif // #!defined __WATCOMC__ +#else +#include +#include +#include +#include +#include +#endif // #defined FLINTPP_ANSI + +#ifndef __CPLUSPLUS__ +#define __CPLUSPLUS__ +#endif + +#ifndef __cplusplus +#define __cplusplus +#endif + +#define FLINTCPPHVMAJ 3 // Major version number of flintpp.cpp +#define FLINTCPPHVMIN 0 // Minor version number of flintpp.cpp +#define FLINTCOMPATMAJ 3 // Major version of flint.c required for flintpp.cpp +#define FLINTCOMPATMIN 0 // Minor version of flint.c required for flintpp.cpp + +//lint -wlib(4) + + +// Include FLINT/C C-Library + +#include "flint.h" +#include "random.h" + + +// Version control + +#if ((FLINTCOMPATMIN > FLINT_VERMIN) || (FLINTCOMPATMAJ > FLINT_VERMAJ)) +#error Versionsfehler: FLINTPP.H not compatibel to FLINT.H +#endif + + +// LINT-Errors + +enum LINT_ERRORS { + E_LINT_OK = 0, // Everything O.K. + E_LINT_EOF = 0x0010, // File-IO-Error + E_LINT_DBZ = 0x0020, // Division by zero + E_LINT_NHP = 0x0040, // Heap-Error: new returned NULL-pointer + E_LINT_OFL = 0x0080, // Overflow in function/operator + E_LINT_UFL = 0x0100, // Underflow in function/operator + E_LINT_VAL = 0x0200, // Argument of function/operator not initialized + E_LINT_INV = 0x0200, // Argument of function/operator not initialized + E_LINT_BOR = 0x0400, // Base invalid + E_LINT_MOD = 0x0800, // Modulus even in mexp?m + E_LINT_NPT = 0x1000, // Argument is Null-pointer + E_LINT_RIN = 0x2000, // Random number generator not initialized + E_LINT_ERR = 0x8000 // root or chinrem has no solution, + // else: unspecific error +}; + + +// LINT-Exceptions + +class LINT_Error // Abstract base class +{ + public: + const char* function, *module; + int argno, lineno; + virtual void debug_print (void) const = 0; // Pure virtual function + virtual ~LINT_Error() {function = 0; module = 0;}; +}; + +class LINT_DivByZero : public LINT_Error // Division by Zero +{ + public: + LINT_DivByZero (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_File : public LINT_Error // File-IO error +{ + public: + LINT_File (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Init : public LINT_Error // Argument not initialized +{ + public: + LINT_Init (const char*, int, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Heap : public LINT_Error // Heap-error in new +{ + public: + LINT_Heap (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_OFL : public LINT_Error // Overflow in function +{ + public: + LINT_OFL (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_UFL : public LINT_Error // Underflow in function +{ + public: + LINT_UFL (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Base : public LINT_Error // Base invalid +{ + public: + LINT_Base (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Emod : public LINT_Error // Modulus even in mexp?m +{ + public: + LINT_Emod (const char*, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Nullptr : public LINT_Error // Argument is NULL-pointer +{ + public: + LINT_Nullptr (const char*, int, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Nonrand : public LINT_Error // Call to non initialized PRNG +{ + public: + LINT_Nonrand (const char*, int, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + +class LINT_Mystic : public LINT_Error // Unknown error ;-) +{ + public: + LINT_Mystic (const char*, int, int, const char* = "flintpp.cpp"); + void debug_print (void) const; +}; + + +class LintInit +{ + public: + LintInit (void); +}; + +// The constructor LintInit() sets the ios-internal value +// ios::iword (flagsindex) (after initialization of LINT::flagsindex) to the +// default values of the LINT-package. Thus the default mode for stream +// output of LINT-objects is defined. A calling program can change the output +// mode by calling LINT manipulators (cf. manipulators like +// LINT::SetLintFlags (LINT::flags)). + + +// Macros for Internationalization of class LINT + +#define ggT gcd +#define xggT xgcd +#define kgV lcm +#define chinrest chinrem +#define zweianteil twofact + + +// Declaration of class LINT + +class LINT +{ + public: + + // LINT-FRIENDS + + friend LintInit::LintInit (void); + + // Overloaded operators, implemented as friend functions + + friend const LINT operator+ (const LINT&, const LINT&); + friend const LINT operator- (const LINT&, const LINT&); + friend const LINT operator* (const LINT&, const LINT&); + friend const LINT operator/ (const LINT&, const LINT&); + friend const LINT operator% (const LINT&, const LINT&); + friend const LINT operator<< (const LINT&, int); + friend const LINT operator>> (const LINT&, int); + + // Logical functions + + friend const int operator== (const LINT&, const LINT&); + friend const int operator!= (const LINT&, const LINT&); + friend const int operator> (const LINT&, const LINT&); + friend const int operator< (const LINT&, const LINT&); + friend const int operator<= (const LINT&, const LINT&); + friend const int operator>= (const LINT&, const LINT&); + + // Boolean functions + + friend const LINT operator^ (const LINT&, const LINT&); + friend const LINT operator| (const LINT&, const LINT&); + friend const LINT operator& (const LINT&, const LINT&); + + // Arithmetic + + friend LINT add (const LINT&, const LINT&); + friend LINT sub (const LINT&, const LINT&); + friend LINT mul (const LINT&, const LINT&); + friend LINT sqr (const LINT&); + friend LINT divr (const LINT&, const LINT&, LINT&); + friend LINT mod (const LINT&, const LINT&); + friend LINT mod2 (const LINT&, USHORT); + + // Swapping + + friend void fswap (LINT&, LINT&); + + // Purging of LINT, overwriting with 0 + + friend void purge (LINT&); + + // Modular arithmetic + + friend LINT madd (const LINT&, const LINT&, const LINT&); + friend LINT msub (const LINT&, const LINT&, const LINT&); + friend LINT mmul (const LINT&, const LINT&, const LINT&); + friend LINT msqr (const LINT&, const LINT&); + friend LINT mexp (const LINT&, const LINT&, const LINT&); + friend LINT mexp (USHORT, const LINT&, const LINT&); + friend LINT mexp (const LINT&, USHORT, const LINT&); + friend LINT mexp5m (const LINT&, const LINT&, const LINT&); + friend LINT mexpkm (const LINT&, const LINT&, const LINT&); + friend LINT mexp2 (const LINT&, USHORT, const LINT&); + friend LINT shift (const LINT&, int); + + // Number theoretic friend functions + + friend int isprime (const LINT&, int noofsmallprimes = 302, int iterations = 0); + friend LINT issqr (const LINT&); + friend unsigned int ld (const LINT&); + friend LINT gcd (const LINT&, const LINT&); + friend LINT xgcd (const LINT&, const LINT&, LINT&, int&, LINT&, int&); + friend LINT inv (const LINT&, const LINT&); + friend LINT lcm (const LINT&, const LINT&); + friend int jacobi (const LINT&, const LINT&); + friend LINT root (const LINT&); + friend LINT root (const LINT&, const LINT&); + friend LINT root (const LINT&, const LINT&, const LINT&); + friend LINT primroot (unsigned int, LINT**); + friend LINT chinrem (unsigned int, LINT**); + friend int twofact (const LINT&, LINT&); + friend int iseven (const LINT&); + friend int isodd (const LINT&); + friend LINT nextprime (const LINT&, const LINT&); + friend int mequ (const LINT&, const LINT&, const LINT&); + + // Pseudorandom number generators, generation of pseudorandom primes + // Functions in module randompp.cpp + + friend int InitRand (STATEPRNG& , const char*, int, int, int); + + friend void PurgeRand (STATEPRNG&); + friend LINT RandLINT (int, STATEPRNG&); + friend LINT RandLINT (const LINT&, const LINT&, STATEPRNG&); + + friend LINT FindPrime (USHORT, STATEPRNG&); + friend LINT FindPrime (USHORT, const LINT&, STATEPRNG&); + friend LINT FindPrime (const LINT&, const LINT&, const LINT&, STATEPRNG&); + friend LINT ExtendPrime (USHORT, const LINT&, const LINT&, const LINT&, STATEPRNG&); + friend LINT ExtendPrime (const LINT&, const LINT&, const LINT&, const LINT&, const LINT&, STATEPRNG&); + + friend LINT StrongPrime (USHORT, STATEPRNG&); + friend LINT StrongPrime (USHORT, const LINT&, STATEPRNG&); + friend LINT StrongPrime (USHORT, USHORT, USHORT, USHORT, const LINT&, STATEPRNG&); + friend LINT StrongPrime (const LINT&, const LINT&, const LINT&, STATEPRNG&); + friend LINT StrongPrime (const LINT& pmin, const LINT&, USHORT, USHORT, USHORT, const LINT&, STATEPRNG&); + + // Compatibility functions: Calls to Blum-Blum-Shub-Generator + friend LINT randBBS (int); + friend LINT randBBS (const LINT&, const LINT&); + friend int seedBBS (const LINT&); + + // Compatibility functions: Calls to 64 bit linear congruential generator + // Do not use this generator for cryptographical purposes! + friend LINT randl (int); + friend LINT randl (const LINT&, const LINT&); + friend void seedl (const LINT&); + + // Conversion + + friend char* lint2str (const LINT&, USHORT, int = 0); + friend UCHAR* lint2byte (const LINT&, int*); + + // Export as CLINT type + + friend clint* lint2clint (const LINT& ln); + + // Overloading of ostream insert operator << for LINT-objects + + friend ostream& operator<< (ostream& s, const LINT& ln); + + // Overloading of fstream/istream/ofstream insert operators >>,<< + // for file-IO of LINT objects + + friend fstream& operator<< (fstream& s, const LINT& ln); + friend ofstream& operator<< (ofstream& s, const LINT& ln); + + friend fstream& operator>> (fstream& s, LINT& ln); + friend ifstream& operator>> (ifstream& s, LINT& ln); + + + // LINT-MEMBERS + + // Constructors + + LINT (void); // Constructor 1 + LINT (const char*, int); // Constructor 2 + LINT (const UCHAR*, int); // Constructor 3 + LINT (const char*); // Constructor 4 + LINT (const LINT&); // Constructor 5 (Copy) + LINT (signed int); // Constructor 6 + LINT (signed long); // Constructor 7 + LINT (unsigned char); // Constructor 8 + LINT (unsigned short); // Constructor 9 + LINT (unsigned int); // Constructor 10 + LINT (unsigned long); // Constructor 11 + LINT (const CLINT); // Constructor 12 + + // Destructor + + ~LINT (void) + { +#ifdef FLINT_SECURE + purge_l (n_l); +#endif // FLINT_SECURE + delete [] n_l; + } + + + // Overloaded operators, implemented as member functions + // left (implicit) argument is always of type LINT + + // Assignment + + const LINT& operator= (const LINT&); + + // Arithmetic + + const LINT& operator++ (void); + const LINT operator++ (int); + const LINT& operator-- (void); + const LINT operator-- (int); + const LINT& operator+= (const LINT&); + const LINT& operator-= (const LINT&); + const LINT& operator*= (const LINT&); + const LINT& operator/= (const LINT&); + const LINT& operator%= (const LINT&); + + // Bitwise and Boolean functions + + const LINT& operator<<= (int); + const LINT& operator>>= (int); + const LINT& operator^= (const LINT&); + const LINT& operator|= (const LINT&); + const LINT& operator&= (const LINT&); + + // Member functions + // Arithmetic + + const LINT& add (const LINT&); + const LINT& sub (const LINT&); + const LINT& mul (const LINT&); + const LINT& sqr (void); + const LINT& divr (const LINT&, LINT&); + const LINT& mod (const LINT&); + const LINT& mod2 (USHORT); + + // Modular arithmetic + + const LINT& madd (const LINT&, const LINT&); + const LINT& msub (const LINT&, const LINT&); + const LINT& mmul (const LINT&, const LINT&); + const LINT& msqr (const LINT&); + const LINT& mexp (const LINT&, const LINT&); + const LINT& mexp (USHORT, const LINT&); + const LINT& mexp5m (const LINT&, const LINT&); + const LINT& mexpkm (const LINT&, const LINT&); + const LINT& mexp2 (USHORT, const LINT&); + const LINT& shift (int); + + // Number theoretic member Funktionen + + LINT gcd (const LINT&) const; + LINT xgcd (const LINT&, LINT&, int&, LINT&, int&) const; + LINT inv (const LINT&) const; + LINT lcm (const LINT&) const; + int jacobi (const LINT&) const; + LINT root (void) const; + LINT root (const LINT&) const; + LINT root (const LINT&, const LINT&) const; + int twofact (LINT&) const; + unsigned int ld (void) const; + int isprime (int noofsmallprimes = 302, int iterations = 0) const; + LINT issqr (void) const; + int mequ (const LINT&, const LINT&) const; + LINT chinrem (const LINT&, const LINT&, const LINT&) const; + int iseven (void) const; + int isodd (void) const; + + + // Bit-access + + const LINT& setbit (unsigned int); + const LINT& clearbit (unsigned int); + int testbit (unsigned int) const; + + // Swapping + + LINT& fswap (LINT&); + + // Purging of LINT-variables, overwriting with 0 + + void purge (void); + + + // Conversion & Input/Output + + enum { + lintdec = 0x010, + lintoct = 0x020, + linthex = 0x040, + lintshowbase = 0x080, + lintuppercase = 0x100, + lintbin = 0x200, + lintshowlength = 0x400 + }; + + static long flags (void); + static long flags (ostream&); + static long setf (long int); + static long setf (ostream&, long int); + static long unsetf (long int); + static long unsetf (ostream&, long int); + static long restoref (long int); + static long restoref (ostream&, long int); + + + // LINT-to-string conversion + + inline char* hexstr (void) const + { + return lint2str (16); + } + inline char* decstr (void) const + { + return lint2str (10); + } + inline char* octstr (void) const + { + return lint2str (8); + } + inline char* binstr (void) const + { + return lint2str (2); + } + + // Conversion to string and bytevector + + char* lint2str (USHORT, int = 0) const; + UCHAR* lint2byte (int*) const; + + // Export as CLINT type + + clint* lint2clint (void) const; + + // preformatted output + + inline void disp (char* str) + { + cout << str << lint2str (16) << endl << ld () << " bit\n"; + } + + + // Set user-defined error handler + + static void Set_LINT_Error_Handler (void (*)(LINT_ERRORS, const char*, int, int, const char*)); + + //Get Error/Warning-Status + + LINT_ERRORS Get_Warning_Status (void); + + private: + // Pointer to type CLINT + clint* n_l; + + // Status after an operation on a LINT object + LINT_ERRORS status; + + // LINT::Default-Error-Handler + static void panic (LINT_ERRORS, const char*, int, int, const char* = "flintpp.cpp"); + + // Dummy object of class LintInit + static LintInit setup; + + // Pointer to ios flag register to be allocated + static long flagsindex; +}; + +// CLASS LINT ends +/////////////////////////////////////////////////////////////////////////////// + + + + +// Some auxiliary functions for LINT manipulators + +// ostream format functions +ostream& _SetLintFlags (ostream& , int); +ostream& _ResetLintFlags (ostream& , int); + +// Container-class LINT_omanip +template +class LINT_omanip +{ + public: + LINT_omanip (ostream&(*g)(ostream&, T), T j): i(j), f(g) {} + friend ostream& operator <<(ostream& os, const LINT_omanip& m) + { + return (*m.f) (os, m.i); + } + + protected: + T i; + ostream& (*f)(ostream&, T); +}; //lint !e1712 Don't complain about missing default constructor + + +// Manipulators for output format of LINT objects + +LINT_omanip SetLintFlags (int); +LINT_omanip ResetLintFlags (int); + +ostream& LintHex (ostream&); +ostream& LintDec (ostream&); +ostream& LintOct (ostream&); +ostream& LintBin (ostream&); +ostream& LintUpr (ostream&); +ostream& LintLwr (ostream&); +ostream& LintShowbase (ostream&); +ostream& LintNobase (ostream&); +ostream& LintShowlength (ostream&); +ostream& LintNolength (ostream&); + + +// Templates for platform-independent writing and reading of USHORT values + +template +int read_ind_ushort (T& s, clint* dest) +{ + UCHAR buff[sizeof (clint)]; + unsigned i; + s.read ((char*)buff, sizeof (clint)); + + if (!s) + { + return -1; + } + else + { + *dest = 0; + for (i = 0; i < sizeof (clint); i++) + { + *dest |= ((clint)buff[i]) << (i << 3); + } + return 0; + } +} + + +template +int write_ind_ushort (T& s, clint src) +{ + UCHAR buff[sizeof (clint)]; + unsigned i, j; + for (i = 0, j = 0; i < sizeof (clint); i++, j = i << 3) + { + buff[i] = (UCHAR)((src & (0xff << j)) >> j); + } + s.write ((const char*)buff, sizeof (clint)); + if (!s) + { + return -1; + } + else + { + return 0; + } +} + + +// min, max as template-inline-functions +// (Acc. Scott Meyers,"Effective C++", 2nd. Ed. Addison-Wesley 1998) +// min und max should be present in C++-Standard Template Library, but... + +#if !defined FLINTPP_ANSI || (defined __IBMCPP__ && (__IBMCPP__ <=300)) || (defined _MSC_VER && (_MSC_VER <= 1200)) || defined __WATCOMC__ + +#ifndef min +template +inline const T& min (const T& a, const T& b) +{ return a < b ? a : b; } +#endif // min + +#ifndef max +template +inline const T& max (const T& a, const T& b) +{ return a > b ? a : b; } +#endif // max +#endif // !(defined __IBMCPP__ || defined FLINTPP_ANSI) + + +#endif // __FLINTPPH__ + + + + + + + diff --git a/flint/src/kmul.c b/flint/src/kmul.c new file mode 100644 index 0000000..06291bd --- /dev/null +++ b/flint/src/kmul.c @@ -0,0 +1,381 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach, published by Apress Berkeley CA, 2005 */ +/* */ +/* Module kmul.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include "flint.h" +#include "kmul.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_assert.h" +#include "_alloc.h" +#ifdef COVERAGE +#include "utclog.h" +#endif +#endif + +#ifdef NO_ASSERTS +#define Assert(a) (void)0 +#endif + + +static void kmul (clint *, clint *, int, int, CLINT); +static void ksqr (clint *, int, CLINT); + +static void shiftadd (CLINT a_l, CLINT b_l, int l, CLINT s_l); +static void addkar (clint *a_l, clint *b_l, int len_arg, CLINT s_l); + +#define MUL_THRESHOLD 40 +#define SQR_THRESHOLD 40 + +CLINTD tmp_l; + +/******************************************************************************/ +/* */ +/* Function: Interface to Karatsuba multiplication */ +/* Syntax: void kmul_l (CLINT a_l, CLINT b_l, CLINT c_l); */ +/* Input: aa_l, bb_l (Factors) */ +/* Output: p_l (Product) */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_OFL in case of Overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +kmul_l (CLINT a_l, CLINT b_l, CLINT p_l) +{ + CLINT aa_l, bb_l; + CLINTD pp_l; + int OFL = E_CLINT_OK; + + cpy_l (aa_l, a_l); + cpy_l (bb_l, b_l); + + kmul (LSDPTR_L(aa_l), LSDPTR_L(bb_l), DIGITS_L (aa_l), DIGITS_L (bb_l), pp_l); + + if (DIGITS_L (pp_l) > (USHORT) CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (pp_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (p_l, pp_l); + + ZEROCLINT_L (aa_l); + ZEROCLINT_L (bb_l); + ZEROCLINTD_L (pp_l); + ZEROCLINTD_L (tmp_l); + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Interface to Karatsuba squaring */ +/* Syntax: void ksqr_l (CLINT a_l, CLINT c_l); */ +/* Input: aa_l (Factor) */ +/* Output: p_l (Square) */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_OFL in case of overflow */ +/* */ +/******************************************************************************/ +int __FLINT_API +ksqr_l (CLINT a_l, CLINT p_l) +{ + CLINT aa_l; + CLINTD pp_l; + int OFL = E_CLINT_OK; + + cpy_l (aa_l, a_l); + + ksqr (LSDPTR_L(aa_l), DIGITS_L (aa_l), pp_l); + + if (DIGITS_L (pp_l) > (USHORT) CLINTMAXDIGIT) /* Overflow ? */ + { + ANDMAX_L (pp_l); /* Reduction modulo Nmax+1 */ + OFL = E_CLINT_OFL; + } + + cpy_l (p_l, pp_l); + + ZEROCLINT_L (aa_l); + ZEROCLINTD_L (pp_l); + ZEROCLINTD_L (tmp_l); + return OFL; +} + + +/******************************************************************************/ +/* */ +/* Function: Karatsuba multiplication of two factors a_l and b_l */ +/* with 2k digits to base B */ +/* Syntax: void kmul (clint *aptr_l, clint *bptr_l, */ +/* int len_a, int len_b, CLINT p_l); */ +/* Input: aptr_l (Pointer to least significant digit of a_l) */ +/* bptr_l (Pointer to least significant digit of b_l) */ +/* len_a (Number of digits of a_l) */ +/* len_b (Number of digits of b_l) */ +/* Output: p_l (Product) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void +kmul (clint *aptr_l, clint *bptr_l, int len_a, int len_b, CLINT p_l) +{ + CLINT c01_l, c10_l; + clint c0_l[CLINTMAXSHORT + 2], c1_l[CLINTMAXSHORT + 2], c2_l[CLINTMAXSHORT + 2]; + clint *a1ptr_l, *b1ptr_l; + int l2; + + if ((len_a == len_b) && (len_a >= MUL_THRESHOLD) && (0 == (len_a & 1))) + { + l2 = len_a/2; + a1ptr_l = aptr_l + l2; + b1ptr_l = bptr_l + l2; + + kmul (aptr_l, bptr_l, l2, l2, c0_l); + kmul (a1ptr_l, b1ptr_l, l2, l2, c1_l); + + addkar (a1ptr_l, aptr_l, l2, c01_l); + addkar (b1ptr_l, bptr_l, l2, c10_l); + + kmul (LSDPTR_L (c01_l), LSDPTR_L (c10_l), DIGITS_L (c01_l), DIGITS_L (c10_l), c2_l); + + sub (c2_l, c1_l, tmp_l); + sub (tmp_l, c0_l, c2_l); + + shiftadd (c1_l, c2_l, l2, tmp_l); + shiftadd (tmp_l, c0_l, l2, p_l); + } + + else /* Fallback to nonrecursive multiplication */ + { + memcpy (LSDPTR_L (c1_l), aptr_l, len_a * sizeof (clint)); + memcpy (LSDPTR_L (c2_l), bptr_l, len_b * sizeof (clint)); + SETDIGITS_L (c1_l, len_a); + SETDIGITS_L (c2_l, len_b); + mult (c1_l, c2_l, p_l); + } + + ZEROCLINT_L (c01_l); + ZEROCLINT_L (c10_l); + ZEROCLINT_L (c0_l); + ZEROCLINT_L (c1_l); + ZEROCLINT_L (c2_l); +} + + +/******************************************************************************/ +/* */ +/* Function: Karatsuba squaring of a factor a_l */ +/* with 2k digits to base B */ +/* Syntax: void kmul (clint *aptr_l, int len_a, CLINT p_l); */ +/* Input: aptr_l (Pointer to least significant digit of a_l) */ +/* len_a (Number of digits of a_l) */ +/* Output: p_l (Square) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void +ksqr (clint *aptr_l, int len_a, CLINT p_l) +{ + CLINT c01_l; + clint c0_l[CLINTMAXSHORT + 2], c1_l[CLINTMAXSHORT + 2], c2_l[CLINTMAXSHORT + 2]; + clint *a1ptr_l; + int l2; + + if ((len_a >= SQR_THRESHOLD) && (0 == (len_a & 1))) + { + l2 = len_a/2; + a1ptr_l = aptr_l + l2; + + ksqr (aptr_l, l2, c0_l); + ksqr (a1ptr_l, l2, c1_l); + + addkar (a1ptr_l, aptr_l, l2, c01_l); + + ksqr (LSDPTR_L (c01_l), DIGITS_L (c01_l), c2_l); + + sub (c2_l, c1_l, tmp_l); + sub (tmp_l, c0_l, c2_l); + + shiftadd (c1_l, c2_l, l2, tmp_l); + shiftadd (tmp_l, c0_l, l2, p_l); + } + + else /* Fallback to nonrecursive squaring */ + { + memcpy (LSDPTR_L (c1_l), aptr_l, len_a * sizeof (clint)); + SETDIGITS_L (c1_l, len_a); + sqr (c1_l, p_l); + } + + ZEROCLINT_L (c01_l); + ZEROCLINT_L (c0_l); + ZEROCLINT_L (c1_l); + ZEROCLINT_L (c2_l); +} + + +/******************************************************************************/ +/* */ +/* Function: Addition of two arguments */ +/* Parameters are pointers to LSD of arguments */ +/* Syntax: void addkar (clint *a_l, clint *b_l, int dgts, CLINT s_l); */ +/* Input: a_l, b_l (Arguments with equal number of digits) */ +/* Output: s_l (Sum) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void +addkar (clint *a_l, clint *b_l, int dgts, CLINT s_l) +{ + clint *msdptra_l; + clint *aptr_l, *bptr_l, *sptr_l = LSDPTR_L (s_l); + ULONG carry = 0L; + + aptr_l = a_l; + bptr_l = b_l; + msdptra_l = a_l + dgts - 1; + SETDIGITS_L (s_l, dgts); + + while (aptr_l <= msdptra_l) + { + *sptr_l++ = (USHORT) (carry = (ULONG) * aptr_l++ + (ULONG) * bptr_l++ + + (ULONG) (USHORT) (carry >> BITPERDGT)); + } + + if (carry & BASE) + { + *sptr_l = 1; + INCDIGITS_L (s_l); + } +} + + +/******************************************************************************/ +/* */ +/* Function: Addition of two arguments combined with shift of first */ +/* argument, w/o check for leading zeros */ +/* Syntax: void shiftadd (CLINT a_l, CLINT b_l, int dgts, CLINT s_l); */ +/* Input: a_l, b_l (arguments) */ +/* dgts (Exponent to base 2) */ +/* Assumption: DIGITS_L (a_l) + dgts >= DIGITS_L (b_l)) */ +/* Output: s_l (Sum = (2^dgts)*a_l + b_l) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static void +shiftadd (CLINT a_l, CLINT b_l, int dgts, CLINT s_l) +{ + clint *msdptra_l, *msdptrb_l; + clint *aptr_l, *bptr_l, *sptr_l = LSDPTR_L (s_l); + ULONG carry = 0L; + + aptr_l = LSDPTR_L (a_l); + bptr_l = LSDPTR_L (b_l); + msdptra_l = MSDPTR_L (a_l); + msdptrb_l = MSDPTR_L (b_l); + SETDIGITS_L (s_l, DIGITS_L (a_l) + dgts); + + while (bptr_l <= MIN (msdptrb_l, b_l + dgts)) + { + *sptr_l++ = *bptr_l++; + } + + while (sptr_l <= s_l + dgts) + { + *sptr_l++ = 0; + } + + while (bptr_l <= msdptrb_l) + { + *sptr_l++ = (USHORT) (carry = (ULONG) * aptr_l++ + (ULONG) * bptr_l++ + + (ULONG) (USHORT) (carry >> BITPERDGT)); + } + + while (aptr_l <= msdptra_l) + { + *sptr_l++ = (USHORT) (carry = (ULONG) * aptr_l++ + + (ULONG) (USHORT) (carry >> BITPERDGT)); + } + + if (carry & BASE) + { + *sptr_l = 1; + INCDIGITS_L (s_l); + } + + RMLDZRS_L (s_l); +} + + + + + + + + + + + + + + + + + + + + + diff --git a/flint/src/kmul.h b/flint/src/kmul.h new file mode 100644 index 0000000..b6375a4 --- /dev/null +++ b/flint/src/kmul.h @@ -0,0 +1,111 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach, published by Apress Berkeley CA, 2001 */ +/* */ +/* Module kmul.h Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +/* Include kmul.h only once */ +#ifndef __KMULH__ +#define __KMULH__ + +#ifdef __cplusplus +extern "C" { +#endif + + +/***********************************************************/ +/* Function-Prototypes */ +/***********************************************************/ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* he DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +extern int __FLINT_API ksqr_l (clint *, clint *); +extern int __FLINT_API kmul_l (clint *, clint *, clint *); + + +#ifdef __cplusplus +} +#endif + +#endif /* defined __KMULH__ */ + + + + + + + + diff --git a/flint/src/random.c b/flint/src/random.c new file mode 100644 index 0000000..0119343 --- /dev/null +++ b/flint/src/random.c @@ -0,0 +1,1182 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module random.c Revision: 17.04.2005 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include + +#include "flint.h" +#include "random.h" + +#define NO_ASSERTS 1 + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_assert.h" +#include "_alloc.h" +#ifdef COVERAGE +#include "utclog.h" +#endif +#endif + +#ifdef NO_ASSERTS +#define Assert(a) (void)0 +#endif + +static void * +local_memset (void *ptr, int val, size_t len); + + +static int Rand64Init = 0; + + +/******************************************************************************/ +/* */ +/* Function: Initialization of the linear congruential PRNG Rand64 */ +/* Do not use Rand64 for any cryptographic purposes! */ +/* Syntax: int InitRand64_l (char *UsrStr, int LenUsrStr, */ +/* int AddEntropy); */ +/* Input: UsrStr (User supplied byte vector for initialization of */ +/* Rand64) */ +/* LenUsrStr (Length of UsrString in byte) */ +/* AddEntropy (Number of additionally required entropy bytes) */ +/* Output: - */ +/* Returns: Number of requested entropy bytes missing */ +/* 0: OK */ +/* */ +/******************************************************************************/ +int __FLINT_API +InitRand64_l (char *UsrStr, int LenUsrStr, int AddEntropy) +{ + int MissingEntropy; + CLINT Seed_l; + + /* Get Required Entropy and Seed */ + MissingEntropy = GetEntropy_l (Seed_l, NULL, AddEntropy, UsrStr, LenUsrStr); + + /* Initialize internal state */ + seed64_l (Seed_l); + +#ifdef FLINT_SECURE + /* Security: Purge random variable Seed_l */ + local_memset (Seed_l, 0, sizeof (CLINT)); +#endif + + /* Set Flag: PRNG is initialized */ + Rand64Init = 1; + + return MissingEntropy; +} + + +/************************* RipeMD-160 / SHA-1 based PRNG **********************/ + +/******************************************************************************/ +/* */ +/* Function: Initialisation of the SHA-1/Ripemd-160 based Pseudorandom- */ +/* numbergenerator (RandRMDSHA1) */ +/* Syntax: int InitRandRMDSHA1_l (STATERMDSHA1 *rstate, char *UsrStr, */ +/* int LenUsrStr, int AddEntropy); */ +/* Input: UsrStr (User supplied byte vector for initialization of */ +/* RandRMDSHA1) */ +/* LenUsrStr (Length of UsrString in byte) */ +/* AddEntropy (Number of additionally required entropy bytes) */ +/* Output: rstate (Initialized internal state of PRNG) */ +/* Returns: Number of requested entropy bytes missing */ +/* 0: OK */ +/* */ +/******************************************************************************/ +int __FLINT_API +InitRandRMDSHA1_l (STATERMDSHA1 *rstate, char *UsrStr, int LenUsrStr, int AddEntropy) +{ + int MissingEntropy; + /* Get Required Entropy and Seed */ + MissingEntropy = GetEntropy_l (NULL, rstate->XRMDSHA1, AddEntropy, UsrStr, LenUsrStr); + + /* Switch internal state */ + ripemd160_l (rstate->XRMDSHA1, rstate->XRMDSHA1, 20); + + /* Initialize RoundRMDSHA1 for picking single bytes out of random stream */ + rstate->RoundRMDSHA1 = 1; + + /* Set Flag: PRNG is initialized */ + rstate->RandRMDSHA1Init = 1; + + return MissingEntropy; +} + + +/******************************************************************************/ +/* */ +/* Function: Switching of RandRMDSHA1 to next state, generating one */ +/* random byte */ +/* Syntax: UCHAR SwitchRandRMDSHA1_l (STATERMDSHA1 *rstate) */ +/* Input: rstate (Initialized State) */ +/* Output: rstate (Internal State) */ +/* Returns: One byte random value */ +/* */ +/******************************************************************************/ +UCHAR __FLINT_API +SwitchRandRMDSHA1_l (STATERMDSHA1 *rstate) +{ + UCHAR rbyte; + + /* Generate random value */ + sha1_l (rstate->SRMDSHA1, rstate->XRMDSHA1, 20); + rbyte = rstate->SRMDSHA1[(rstate->RoundRMDSHA1)++ & 15]; /* RoundRMDSHA1 mod 16 */ + + /* Switch internal state */ + ripemd160_l (rstate->XRMDSHA1, rstate->XRMDSHA1, 20); + +#ifdef FLINT_SECURE + /* Security: Purge random variable SRMDSHA1 */ + local_memset (rstate->SRMDSHA1, 0, sizeof (rstate->SRMDSHA1)); +#endif + + return rbyte; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of pseudorandom number of CLINT-Type */ +/* (Preceding Initialization by InitRandRMDSHA1() required) */ +/* Syntax: int RandRMDSHA1_l (STATERMDSHA1 *rstate, CLINT r_l, int l); */ +/* Input: rstate (Initialized state) */ +/* l (Number of binary digits of random number to generated) */ +/* Output: r_l (Pseudorandom number) */ +/* rstate (New internal state of PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RIN if generator is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +RandRMDSHA1_l (CLINT r_l, STATERMDSHA1 *rstate, int l) +{ + USHORT i, j; + USHORT ls, lr; + + if (!rstate->RandRMDSHA1Init) + { + return E_CLINT_RIN; + } + + l = MIN ((unsigned int)l, CLINTMAXBIT); + ls = (USHORT) l >> LDBITPERDGT; + lr = (USHORT) l & ((USHORT)BITPERDGT - 1); + + for (i = 1; i <= ls; i++) + { + r_l[i] = sRandRMDSHA1_l (rstate); + } + if (lr > 0) + { + r_l[++ls] = sRandRMDSHA1_l (rstate); + j = 1U << (lr - 1); /* j <- 2^(lr - 1) */ + r_l[ls] = (r_l[ls] | j) & ((j << 1) - 1); /* Bit lr set to 1, higher bits to 0 */ + } + else + { + r_l[ls] |= BASEDIV2; + } + + SETDIGITS_L (r_l, ls); + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of internat status of RandRMDSHA1 */ +/* Syntax: void PurgeRandRMDSHA1_l (STATERMDSHA1 *rstate); */ +/* Input: rstate (Initialized state) */ +/* Output: rstate (Purged internal state) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +PurgeRandRMDSHA1_l (STATERMDSHA1 *rstate) +{ + /* Purge status of RipeMD-160/Sha-1 based PRNG */ + memset (rstate->XRMDSHA1, 0, sizeof (rstate->XRMDSHA1)); + memset (rstate->SRMDSHA1, 0, sizeof (rstate->SRMDSHA1)); + rstate->RoundRMDSHA1 = 0; + + /* Reset initialization flag */ + rstate->RandRMDSHA1Init = 0; +} + + +/************************* AES based PRNG with key update *********************/ + +static const unsigned char RandAESKey[] = +{0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 0x78, + 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 0xf0, + 0x12, 0x23, 0x34, 0x45, 0x56, 0x78, 0x89, 0x9a, + 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0, 0x01, 0x12}; + +/******************************************************************************/ +/* */ +/* Function: Initialisation of the AES based Pseudorandom- */ +/* numbergenerator (RandAES) */ +/* Syntax: int InitRandRMDSHA1_l (STATEAES *rstate, char *UsrStr, */ +/* int LenUsrStr, int AddEntropy); */ +/* Input: UsrStr (User supplied byte vector for initialization of */ +/* RandAES) */ +/* LenUsrStr (Length of UsrString in byte) */ +/* AddEntropy (Number of additionally required entropy bytes) */ +/* update (Frequency AES-key-update by XORing with output value: */ +/* update = 0: Never update key, fastest */ +/* update = 1: Always update key, slowest, most secure */ +/* update = 1 < n: Update key every n'th call to RandAES */ +/* Output: rstate (Initialized internal state of PRNG) */ +/* Returns: Number of requested entropy bytes missing */ +/* 0: OK */ +/* */ +/******************************************************************************/ +int __FLINT_API +InitRandAES_l (STATEAES *rstate, char *UsrStr, int LenUsrStr, int AddEntropy, int update) +{ + int MissingEntropy, i; + /* Get Required Entropy and Seed */ + MissingEntropy = GetEntropy_l (NULL, rstate->XAES, AddEntropy, UsrStr, LenUsrStr); + + /* Initialize AES */ + for (i = 0; i < 32; i++) + { + rstate->RandAESKey[i] ^= RandAESKey[i]; + } + + AESInit_l (&rstate->RandAESWorksp, AES_ECB, 192, NULL, &rstate->RandAESSched, rstate->RandAESKey, 256, AES_ENC); + + /* Switch internal state */ + AESCrypt_l (rstate->XAES, &rstate->RandAESWorksp, &rstate->RandAESSched, rstate->XAES, 24); + + /* Set parameter for frequency of key update */ + rstate->UpdateKeyAES = update; + + /* Initialize RoundAES for picking single bytes out of random stream */ + rstate->RoundAES = 1; + + /* Set Flag: PRNG is initialized */ + rstate->RandAESInit = 1; + + return MissingEntropy; +} + + +/******************************************************************************/ +/* */ +/* Function: Switching of RandAES to the next state, generating one */ +/* random byte */ +/* Syntax: UCHAR SwitchRandAES_l (STATEAES *rstate) */ +/* Input: rstate (Initialized state of PRNG) */ +/* Output: rstate (New internal state of PRNG) */ +/* Returns: One byte random value */ +/* */ +/******************************************************************************/ +UCHAR __FLINT_API +SwitchRandAES_l (STATEAES *rstate) +{ + int i; + UCHAR rbyte; + + AESCrypt_l (rstate->XAES, &rstate->RandAESWorksp, &rstate->RandAESSched, rstate->XAES, 24); + + rbyte = rstate->XAES[(rstate->RoundAES)++ & 15]; /* RoundAES mod 16 */ + + if (rstate->UpdateKeyAES) + { + if (0 == (rstate->RoundAES % rstate->UpdateKeyAES)) + { + for (i = 0; i < 32; i++) + { + rstate->RandAESKey[i] ^= rstate->XAES[i]; + } + + AESInit_l (&rstate->RandAESWorksp, AES_ECB, 192, NULL, &rstate->RandAESSched, + rstate->RandAESKey, 256, AES_ENC); + } + } + + return rbyte; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of pseudorandom number of CLINT-Type */ +/* (Preceding Initialization by InitRandAES() required) */ +/* Syntax: int RandAES_l (CLINT r_l, STATEAES *rstate, int l); */ +/* Input: l (Number of binary digits of random number to generated) */ +/* Output: r_l (Pseudorandom number) */ +/* rstate (Internal state of PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RIN if generator is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +RandAES_l (CLINT r_l, STATEAES *rstate, int l) +{ + USHORT i, j; + USHORT ls, lr; + + if (!rstate->RandAESInit) + { + return E_CLINT_RIN; + } + + l = MIN ((unsigned int)l, CLINTMAXBIT); + ls = (USHORT) l >> LDBITPERDGT; + lr = (USHORT) l & ((USHORT)BITPERDGT - 1); + + for (i = 1; i <= ls; i++) + { + r_l[i] = sRandAES_l(rstate); + } + if (lr > 0) + { + r_l[++ls] = sRandAES_l(rstate); + j = 1U << (lr - 1); /* j <- 2^(lr - 1) */ + r_l[ls] = (r_l[ls] | j) & ((j << 1) - 1); /* Bit lr set to 1, higher bits to 0 */ + } + else + { + r_l[ls] |= BASEDIV2; + } + + SETDIGITS_L (r_l, ls); + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of internat status of RandAES */ +/* Syntax: void PurgeRandAES_l (STATEAES *rstate); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* Output: rstate (Purged state of PRNG) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +PurgeRandAES_l (STATEAES *rstate) +{ + /* Purge status of AES based PRNG */ + memset (rstate->RandAESKey, 0, sizeof (rstate->RandAESKey)); + memset (rstate->XAES, 0, sizeof (rstate->XAES)); + memset (&rstate->RandAESWorksp, 0, sizeof (rstate->RandAESWorksp)); + memset (&rstate->RandAESSched, 0, sizeof (rstate->RandAESSched)); + rstate->RoundAES = 0; + + /* Reset initialization flag */ + rstate->RandAESInit = 0; +} + + +/******************************************************************************/ + +#if (CLINTMAXDIGIT >= 128) +static const char *MODBBSSTR = +"81aa5c97200fb2504c08b92e2f8b7e0805775c72b139b455846028653793ba9d616cd01cef719" +"5b2f952e046ab62d063b048c8f62b21c7fc7fa4e71eef2588aa59b81f355b5539a471ee483b02" +"2bdab25b3fb41bc6224d60c17bbcb091294f76cb64c3b6da5504085a958b679d1f1147158189d" +"4fa76ab721c535a3ecfe4452cc61b9466e315ba4b4392db04f686dbb61084b21c9540f972718f" +"c96ed25a40a917a07c668048683ec116219621a301610bfba40e1ab11bd1e13aa8476aa6d37b2" +"61228df85c7df67043c51b37a250b27401aaf837101d2db1a55572dd7a79646ff6e5d20a24e4b" +"43c6d8ab5e9a77becd76d5f0355252f4318e2066d3f9c42f25"; +#elif (CLINTMAXDIGIT >= 64) +static const char *MODBBSSTR = +"a1c0a7edba2a2aee2cb3947c3d1c0468ee5a5791ec3ebb97238bd4c3bdad1a00280f0a7518d56" +"523003d5cee48a60d606d78b818d81b0ef963555b9b62fc3b5f796815946ed28987596f84ccc1" +"7f87b9ca5959fc9763bc43521aa467cdcec60cd9fa7548268169750adf746df899cc64b059b7c" +"194ab4ba492c04c3a6c630103"; +#elif (CLINTMAXDIGIT >= 48) +static const char *MODBBSSTR = +"c58d49cd9529aed21da56db12844522c04ace305362219478a99da74751213f8ccdfb52fb7a8b" +"fc2d5ce18c86c9e447f78b9013071d2fbb4be506f942cc45793e752733c71b07f40c3e54a9bdc" +"3d9bb18a2c9411e8f898b28d060ea0dc9b309b"; +#elif (CLINTMAXDIGIT >= 32) +static const char *MODBBSSTR = +"a3d46604762377bccd0ab8562b46132740b75feb0e3ca7a79022736c6a5ca0b17a03465222af1" +"a074e31224ea01fc48b3150579c06ef8f073673a5169e8ea021"; +#elif (CLINTMAXDIGIT >= 16) +static const char *MODBBSSTR = +"b2c31d33668afb5600be97e13b769fe4f558fc96bc46b8d174d94fb468ff31a5"; +#elif (CLINTMAXDIGIT >= 8) +static const char *MODBBSSTR = +"845196304e498ea78ff06d51bd58c9e3"; +#endif + + +/******************************************************************************/ +/* */ +/* Function: Initialisation of the Blum-Blum-Shub-PNRG (RandBBS) */ +/* with entropy generated by GetEntropy_l */ +/* Syntax: int InitRandBBS_l (STATEBBS *rstate, char *UsrStr, */ +/* int LenUsrStr, int AddEntropy); */ +/* Input: UsrStr (String for initialization optionally provided by user) */ +/* LenUsrStr (Length of UsrStr in bytes) */ +/* AddEntropy (Number of additionally requested entropy bytes */ +/* Output: rstate (Initialized internal state of PRNG) */ +/* Returns: 0: OK */ +/* n > 0: Number of requested but not generated entropy bytes */ +/* */ +/******************************************************************************/ +int __FLINT_API +InitRandBBS_l (STATEBBS *rstate, char *UsrStr, int LenUsrStr, int AddEntropy) +{ + CLINT Seed_l; + int MissingEntropy; + + /* Get Required Entropy and Seed */ + MissingEntropy = GetEntropy_l (Seed_l, NULL, AddEntropy, UsrStr, LenUsrStr); + + /* Switch internal state */ + SeedBBS_l (rstate, Seed_l); + + /* Security: Purge seed variable Seed_l */ + local_memset (Seed_l, 0, sizeof (CLINT)); + + return MissingEntropy; +} + + +/******************************************************************************/ +/* */ +/* Function: Initialization of BLUM-BLUM-SHUB-PRNG with seed of type CLINT */ +/* Syntax: int SeedBBS_l (STATEBBS *rstate, CLINT seed_l); */ +/* Input: seed_l (Seed) */ +/* Output: rstate (Internal state of PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RCP if seed and modulus are not coprime */ +/* */ +/******************************************************************************/ +int __FLINT_API +SeedBBS_l (STATEBBS *rstate, CLINT seed_l) +{ + CLINT g_l; + + str2clint_l (rstate->MODBBS, (char*)MODBBSSTR, 16); + gcd_l (rstate->MODBBS, seed_l, g_l); + + if (!EQONE_L (g_l)) + { + return E_CLINT_RCP; + } + + msqr_l (seed_l, rstate->XBBS, rstate->MODBBS); + + /* Set Flag: PRNG is initialized */ + rstate->RandBBSInit = 1; + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a random bit acc. to Blum-Blum-Shub */ +/* Syntax: int SwitchRandBBS_l (STATEBBS *rstate); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* Output: rstate (Internal state of PRNG) */ +/* Returns: Random bit 0 or 1 */ +/* */ +/******************************************************************************/ +int __FLINT_API +SwitchRandBBS_l (STATEBBS * rstate) +{ + msqr_l (rstate->XBBS, rstate->XBBS, rstate->MODBBS); + + /* Output least significant bit of rstate->XBBS */ + return (*LSDPTR_L (rstate->XBBS) & 1); +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type UCHAR */ +/* Syntax: UCHAR bRandBBS_l (STATEBBS *rstate); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* Output: rstate (Internal state of PRNG) */ +/* Returns: Pseudorandom number of type UCHAR */ +/* */ +/******************************************************************************/ +UCHAR __FLINT_API +bRandBBS_l (STATEBBS * rstate) +{ + int i; + UCHAR r = SwitchRandBBS_l(rstate); + for (i = 1; i < (sizeof (UCHAR) << 3); i++) + { + r = (r << 1) + SwitchRandBBS_l(rstate); + } + + return r; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type USHORT */ +/* Syntax: USHORT sRandBBS_l (STATEBBS *rstate); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* Output: rstate (Internal state of PRNG) */ +/* Returns: Pseudorandom number of type USHORT */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +sRandBBS_l (STATEBBS * rstate) +{ + int i; + USHORT r = SwitchRandBBS_l(rstate); + for (i = 1; i < (sizeof (USHORT) << 3); i++) + { + r = (r << 1) + SwitchRandBBS_l(rstate); + } + + return r; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type ULONG */ +/* Syntax: ULONG lRandBBS_l (STATEBBS *rstate); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* Output: rstate (Internal state of PRNG) */ +/* Returns: Pseudorandom number of type ULONG */ +/* */ +/******************************************************************************/ +ULONG __FLINT_API +lRandBBS_l (STATEBBS * rstate) +{ + int i; + ULONG r = SwitchRandBBS_l(rstate); + for (i = 1; i < (sizeof (ULONG) << 3); i++) + { + r = (r << 1) + SwitchRandBBS_l (rstate); + } + + return r; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type CLINT */ +/* (Preceding Initialization by InitRandBBS() required) */ +/* Syntax: int RandBBS_l (CLINT r_l, STATEBBS *rstate, int l); */ +/* Input: rstate (Initialized internal state of PRNG) */ +/* l (Number of binary digits of random number to generated) */ +/* Output: r_l (Pseudorandom number) */ +/* rstate (Internal state of PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RIN if generator is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +RandBBS_l (CLINT r_l, STATEBBS * rstate, int l) +{ + USHORT i, j; + USHORT ls, lr; + + if (!rstate->RandBBSInit) + { + return E_CLINT_RIN; + } + + l = (int)MIN ((unsigned int)l, CLINTMAXBIT); + ls = (USHORT)l >> LDBITPERDGT; + lr = (USHORT)l & ((USHORT)BITPERDGT - 1); + + for (i = 1; i <= ls; i++) + { + r_l[i] = sRandBBS_l (rstate); + } + + if (lr > 0) + { + ++ls; + r_l[ls] = sRandBBS_l (rstate); + j = 1U << (lr - 1); /* j <- 2^(lr - 1) */ + r_l[ls] = (r_l[ls] | j) & ((j << 1) - 1); /* bt lr to 1, higher bits to */ + } + else + { + r_l[ls] |= BASEDIV2; + } + + SETDIGITS_L (r_l, ls); + + /* Purging ov variables */ + local_memset (&i, 0, sizeof (i)); + local_memset (&j, 0, sizeof (j)); + local_memset (&ls, 0, sizeof (ls)); + local_memset (&lr, 0, sizeof (lr)); + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of the internal state of RandBBS */ +/* Syntax: void PurgeRandBBS_l (STATEBBS * rstate); */ +/* Input: rstate (Internal state of PRNG) */ +/* Output: rstate (Purged indernal state of PRNG) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +PurgeRandBBS_l (STATEBBS * rstate) +{ + /* Purge status of BBS-PRNG */ + memset (rstate->XBBS, 0, sizeof (CLINT)); + + /* Reset initialization flag */ + rstate->RandBBSInit = 0; +} + + +/*** Higher Level Functions for Generation of Random Numbers of Type CLINT ****/ + + +/******************************************************************************/ +/* */ +/* Function: Initialisation of a chosen PRNG */ +/* with entropy generated by GetEntropy_l */ +/* Syntax: int InitRand_l (STATEPRNG *xrstate, char *UsrStr, */ +/* int LenUsrStr, int AddEntropy, int Generator); */ +/* Input: UsrStr (String for initialization optionally provided by user) */ +/* LenUsrStr (Length of UsrStr in bytes) */ +/* AddEntropy (Number of additionally requested entropy bytes */ +/* Generator (PRNG to be initialized: one of FLINT_RND64 */ +/* FLINT_RNDRMDSHA1 */ +/* FLINT_RNDAES */ +/* FLINT_RNDBBS) */ +/* Output: xrstate (Initialized state of random number generator) */ +/* Output: - */ +/* Returns: 0: OK */ +/* n > 0: Number of requested but not generated entropy bytes */ +/* n < 0: Requested generator does not exist, RND64 initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +InitRand_l (STATEPRNG *xrstate, char *UsrStr, int LenUsrStr, int AddEntropy, int Generator) +{ + int error; + + switch (Generator) + { + case FLINT_RNDBBS: + error = InitRandBBS_l (&xrstate->StateBBS, (char*)UsrStr, LenUsrStr, AddEntropy); + xrstate->Generator = FLINT_RNDBBS; + break; + case FLINT_RNDRMDSHA1: + error = InitRandRMDSHA1_l (&xrstate->StateRMDSHA1, (char*)UsrStr, LenUsrStr, AddEntropy); + xrstate->Generator = FLINT_RNDRMDSHA1; + break; + case FLINT_RNDAES: + error = InitRandAES_l (&xrstate->StateAES, (char*)UsrStr, LenUsrStr, AddEntropy, 10); + xrstate->Generator = FLINT_RNDAES; + break; + case FLINT_RND64: + error = InitRand64_l ((char*)UsrStr, LenUsrStr, AddEntropy); + xrstate->Generator = FLINT_RND64; + break; + default: + InitRand64_l ((char*)UsrStr, LenUsrStr, AddEntropy); + xrstate->Generator = FLINT_RND64; + error = -AddEntropy; + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type UCHAR */ +/* Syntax: UCHAR bRand_l (STATEPRNG *xrstate) */ +/* Input: xrstate (Initialized state of chosen random number generator) */ +/* Output: - */ +/* Returns: Pseudorandom number of type UCHAR */ +/* */ +/******************************************************************************/ +UCHAR __FLINT_API +bRand_l (STATEPRNG *xrstate) +{ + UCHAR r; + + switch (xrstate->Generator) + { + case FLINT_RNDBBS: + r = bRandBBS_l (&xrstate->StateBBS); + break; + case FLINT_RNDRMDSHA1: + r = bRandRMDSHA1_l (&xrstate->StateRMDSHA1); + break; + case FLINT_RNDAES: + r = bRandAES_l (&xrstate->StateAES); + break; + case FLINT_RND64: + r = ucrand64_l (); + break; + default: + r = ucrand64_l (); + } + + return r; +} + + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type USHORT */ +/* Syntax: USHORT sRand_l (STATEPRNG *xrstate); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* Output: xrstate (State of chosen PRNG) */ +/* Returns: Pseudorandom number of type USHORT */ +/* */ +/******************************************************************************/ +USHORT __FLINT_API +sRand_l (STATEPRNG *xrstate) +{ + USHORT r; + + switch (xrstate->Generator) + { + case FLINT_RNDBBS: + r = sRandBBS_l (&xrstate->StateBBS); + break; + case FLINT_RNDRMDSHA1: + r = sRandRMDSHA1_l (&xrstate->StateRMDSHA1); + break; + case FLINT_RNDAES: + r = sRandAES_l (&xrstate->StateAES); + break; + case FLINT_RND64: + r = usrand64_l (); + break; + default: + r = usrand64_l (); + } + + return r; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type ULONG */ +/* Syntax: ULONG lRand_l (STATEPRNG *xrstate); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* Output: xrstate (State of chosen PRNG) */ +/* Returns: Pseudorandom number of type ULONG */ +/* */ +/******************************************************************************/ +ULONG __FLINT_API +lRand_l (STATEPRNG *xrstate) +{ + ULONG r; + + switch (xrstate->Generator) + { + case FLINT_RNDBBS: + r = lRandBBS_l (&xrstate->StateBBS); + break; + case FLINT_RNDRMDSHA1: + r = lRandRMDSHA1_l (&xrstate->StateRMDSHA1); + break; + case FLINT_RNDAES: + r = lRandAES_l (&xrstate->StateAES); + break; + case FLINT_RND64: + r = usrand64_l (); + break; + default: + r = usrand64_l (); + } + + return r; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type CLINT */ +/* (Preceding Initialization by InitRand_l() required) */ +/* Syntax: int Rand_l (CLINT r_l, STATEPRNG *xrstate, int l); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* l (Number of binary digits of random number to generated) */ +/* Output: r_l (Pseudorandom number) */ +/* xrstate (State of chosen PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RIN if requested generator is not initialized or */ +/* invalid choice */ +/* */ +/******************************************************************************/ +int __FLINT_API +Rand_l (CLINT r_l, STATEPRNG *xrstate, int l) +{ + int error = E_CLINT_OK; + + switch (xrstate->Generator) + { + case FLINT_RNDBBS: + error = RandBBS_l (r_l, &xrstate->StateBBS, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RNDAES: + error = RandAES_l (r_l, &xrstate->StateAES, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RNDRMDSHA1: + error = RandRMDSHA1_l (r_l, &xrstate->StateRMDSHA1, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RND64: + rand_l (r_l, MIN (l, (int)CLINTMAXBIT)); + break; + default: + rand_l (r_l, MIN (l, (int)CLINTMAXBIT)); + error = E_CLINT_RIN; + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of the internal state of a chosen PRNG */ +/* Syntax: int PurgeRand_l (STATEPRNG *xrstate); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* Output: xrstate (Purged internal state of PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RNG if choice of generator in xrstate is invalid */ +/* */ +/******************************************************************************/ +int __FLINT_API +PurgeRand_l (STATEPRNG *xrstate) +{ + int error = E_CLINT_OK; + + switch (xrstate->Generator) + { + case FLINT_RNDBBS: + PurgeRandBBS_l (&xrstate->StateBBS); + break; + case FLINT_RNDAES: + PurgeRandAES_l (&xrstate->StateAES); + break; + case FLINT_RNDRMDSHA1: + PurgeRandRMDSHA1_l (&xrstate->StateRMDSHA1); + break; + case FLINT_RND64: + break; + default: + error = E_CLINT_RNG; + } + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a pseudorandom number of type CLINT */ +/* w/ rmin_l <= r_l <= rmax_l, using one of the FLINT/C PRNG, */ +/* preceeding initialization required! */ +/* Syntax: int RandMinMax_l (CLINT r_l, STATEPRNG *xrstate, CLINT rmin_l, */ +/* CLINT rmax_l); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* rmin_l (lower bound for r_l) */ +/* rmax_l (upper bound for r_l) */ +/* Output: r_l (pseudorandom number) */ +/* xrstate (State of chosen PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RGE if rmin_l > rmax_l */ +/* E_CLINT_RNG if choice of generator in xrstate is invalid */ +/* E_CLINT_RIN if PRNG is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +RandMinMax_l (CLINT r_l, STATEPRNG *xrstate, CLINT rmin_l, CLINT rmax_l) +{ + CLINT t_l; + int error = E_CLINT_OK; + USHORT l = (ld_l (rmin_l) + ld_l (rmax_l)) >> 1; + + /* Plausibility: rmin_l <= rmax_l? */ + if (GT_L (rmin_l, rmax_l)) + { + return E_CLINT_RGE; + } + + sub_l (rmax_l, rmin_l, t_l); + inc_l (t_l); + + switch (xrstate->Generator) + { + case FLINT_RNDAES: + error = RandAES_l (r_l, &xrstate->StateAES, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RNDRMDSHA1: + error = RandRMDSHA1_l (r_l, &xrstate->StateRMDSHA1, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RNDBBS: + error = RandBBS_l (r_l, &xrstate->StateBBS, MIN (l, (int)CLINTMAXBIT)); + break; + case FLINT_RND64: + rand_l (r_l, MIN (l, (int)CLINTMAXBIT)); + /* error = rand_l (r_l, MIN (l, (int)CLINTMAXBIT)); */ + break; + default: + return E_CLINT_RNG; + } + + if (E_CLINT_OK != error) + { + return error; + } + + if (LT_L (r_l, rmin_l)) + { + add_l (r_l, rmin_l, r_l); + } + + if (GT_L (r_l, rmax_l)) + { + mod_l (r_l, t_l, r_l); + add_l (r_l, rmin_l, r_l); + } + + Assert (GE_L (r_l, rmin_l) && LE_L (r_l, rmax_l)); + +#ifdef FLINT_SECURE + /* Purging of variables */ + local_memset (t_l, 0, sizeof (t_l)); + local_memset (&l, 0, sizeof (l)); +#endif + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a random prime p_l of type CLINT */ +/* w/ 2^(l-1) <= p_l < 2^l, using one of the FLINT/C PRNG, */ +/* preceeding initialization required! */ +/* Syntax: int FindPrime_l (CLINT p_l, STATEPRNG *xrstate, USHORT l); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* l (number of binary digits of p_l) */ +/* Output: p_l (random prime, determined with probabilistic MR-Test) */ +/* xrstate (State of chosen PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RGE if l = 0 */ +/* E_CLINT_RNG if choice of generator in xrstate is invalid */ +/* E_CLINT_RIN if PRNG is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +FindPrime_l (CLINT p_l, STATEPRNG *xrstate, USHORT l) +{ + return (FindPrimeGcd_l (p_l, xrstate, l, one_l)); +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a random prime p_l of type CLINT */ +/* w/ 2^(l-1) <= p_l < 2^l and ggT (p_l - 1, f_l) = 1, using one */ +/* of the FLINT/C PRNG, preceeding initialization required! */ +/* Syntax: int FindPrimeGcd_l (CLINT p_l, STATEPRNG *xrstate, USHORT l, */ +/* CLINT f_l); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* l (number of binary digits of p_l) */ +/* f_l (number coprime to p_l - 1) */ +/* Output: p_l (random prime, determined with probabilistic MR-Test) */ +/* xrstate (State of chosen PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RGE if l = 0 or f_l is even */ +/* E_CLINT_RNG if choice of generator in xrstate is invalid */ +/* E_CLINT_RIN if PRNG is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +FindPrimeGcd_l (CLINT p_l, STATEPRNG *xrstate, USHORT l, CLINT f_l) +{ + CLINT rmin_l; + clint rmax_l[CLINTMAXSHORT + 1]; + int error; + if (0 == l) + { + return E_CLINT_RGE; + } + + SETZERO_L (rmin_l); + SETZERO_L (rmax_l); + setbit_l (rmin_l, l - 1); + setbit_l (rmax_l, l); + dec_l (rmax_l); + error = FindPrimeMinMaxGcd_l (p_l, xrstate, rmin_l, rmax_l, f_l); + +#ifdef FLINT_SECURE + /* Purging of variables */ + local_memset (rmin_l, 0, sizeof (rmin_l)); + local_memset (rmax_l, 0, sizeof (rmax_l)); +#endif + + return error; +} + + +/******************************************************************************/ +/* */ +/* Function: Generation of a random prime p_l of type CLINT */ +/* w/ rmin_l <= p_l <= rmax_l und ggT (p_l - 1, f_l) = 1, using */ +/* one of the FLINT/C PRNG, preceeding initialization required! */ +/* Syntax: int FindPrimeMinMaxGcd_l (CLINT p_l, STATEPRNG *xrstate, */ +/* CLINT rmin_l, CLINT rmax_l, CLINT f_l); */ +/* Input: xrstate (Choice and initialized state of PRNG) */ +/* rmin_l (lower bound for p_l) */ +/* rmax_l (upper bound for p_l) */ +/* f_l (number coprime to p_l - 1) */ +/* Output: p_l (random prime, determined with probabilistic MR-Test) */ +/* xrstate (State of chosen PRNG) */ +/* Returns: E_CLINT_OK if everything is OK */ +/* E_CLINT_RGE if rmin_l > rmax_l or f_l is even or prime that */ +/* meets the conditions can not be found */ +/* E_CLINT_RNG if choice of generator in xrstate is invalid */ +/* E_CLINT_RIN if PRNG is not initialized */ +/* */ +/******************************************************************************/ +int __FLINT_API +FindPrimeMinMaxGcd_l (CLINT p_l, STATEPRNG *xrstate, CLINT rmin_l, + CLINT rmax_l, CLINT f_l) +{ + CLINT t_l, rmin1_l, g_l; + CLINT Pi_rmin_l, Pi_rmax_l, NoofCandidates_l, junk_l; + int error; + + /* 0 < f_l has to be uneven */ + if (ISEVEN_L (f_l)) + { + return E_CLINT_RGE; + } + + udiv_l (rmin_l, (USHORT)ld_l (rmin_l), Pi_rmin_l, junk_l); + udiv_l (rmax_l, (USHORT)ld_l (rmax_l), Pi_rmax_l, junk_l); + sub_l (Pi_rmax_l, Pi_rmin_l, NoofCandidates_l); + + /* rmin_l <- ceil ((rmin_l - 1)/2) */ + dec_l (rmin_l); + div_l (rmin_l, two_l, rmin_l, junk_l); + if (GTZ_L (junk_l)) + { + inc_l (rmin_l); + } + + /* rmax_l <- floor ((rmax_l - 1)/2) */ + dec_l (rmax_l); + shr_l (rmax_l); + + do + { + /* Test if estimated number of candidates is counted back to zero */ + if (EQZ_L (NoofCandidates_l)) + { + return (E_CLINT_RGE); + } + + if (E_CLINT_OK != (error = RandMinMax_l (p_l, xrstate, rmin_l, rmax_l))) + { + return error; + } + + /* p_l <- 2*p_l + 1 hence p_l is odd */ + shl_l (p_l); + inc_l (p_l); + + cpy_l (rmin1_l, p_l); + dec_l (rmin1_l); + gcd_l (rmin1_l, f_l, g_l); + + dec_l (NoofCandidates_l); + } + while (!(EQONE_L (g_l) && ISPRIME_L (p_l))); + + +#ifdef FLINT_SECURE + /* Purging of variables */ + local_memset (t_l, 0, sizeof (t_l)); + local_memset (rmin1_l, 0, sizeof (rmin1_l)); + local_memset (g_l, 0, sizeof (g_l)); +#endif + + return error; +} + + +/******************************************************************************/ +/* */ +/* Local memset-Function, does the same as memset() */ +/* Needed to make compiler purge variables in spite of optimization. */ +/* */ +/******************************************************************************/ +static void * +local_memset (void *ptr, int val, size_t len) +{ + return memset (ptr, val, len); +} diff --git a/flint/src/random.h b/flint/src/random.h new file mode 100644 index 0000000..e54a3d2 --- /dev/null +++ b/flint/src/random.h @@ -0,0 +1,292 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module random.h Revision: 10.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __RANDOMH__ +#define __RANDOMH__ + +#include "entropy.h" +#include "ripemd.h" +#include "sha1.h" +#include "aes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Macros for selecting a PRNG */ + +#define FLINT_RNDAES 1 +#define FLINT_RNDRMDSHA1 2 +#define FLINT_RNDBBS 3 +#define FLINT_RND64 4 + + +/* Macros defining error codes */ + +#define E_CLINT_RIN -20 +#define E_CLINT_RNG -21 +#define E_CLINT_RGE -22 +#define E_CLINT_RCP -23 + + +/* Macros maintaining FLINT/C namespace */ + +#define InitRand64 InitRand64_l +#define InitRandRMDSHA1 InitRandRMDSHA1_l +#define SwitchRandRMDSHA1 SwitchRandRMDSHA1_l +#define PurgeRandRMDSHA1 PurgeRandRMDSHA1_l +#define InitRandAES InitRandAES_l +#define SwitchRandAES SwitchRandAES_l +#define PurgeRandAES PurgeRandAES_l +#define InitRandBBS InitRandBBS_l +#define SwitchRandBBS SwitchRandBBS_l +#define bRandBBS bRandBBS_l +#define sRandBBS sRandBBS_l +#define lRandBBS lRandBBS_l +#define PurgeRandBBS PurgeRandBBS_l +#define ulrandBBS_l lRandBBS_l +#define usrandBBS_l sRandBBS_l +#define ucrandBBS_l bRandBBS_l +#define randbit_l SwitchRandBBS_l +#define randBBS_l RandBBS_l +#define seedBBS_l SeedBBS_l +#define initrandBBS_lt() InitRandBBS_l("", 0, 0); + + +/* Macros that generate random numbers using RipeMD-160 SHA-1 based PRNG */ + +/* 8 bit unsigned */ +#define bRandRMDSHA1(S) ((UCHAR)SwitchRandRMDSHA1_l((S))) +#define bRandRMDSHA1_l(S) ((UCHAR)SwitchRandRMDSHA1_l((S))) + +/* 16 bit unsigned */ +#define sRandRMDSHA1(S) (((USHORT)SwitchRandRMDSHA1_l((S)) << 8) | \ + (USHORT)SwitchRandRMDSHA1_l((S))) +#define sRandRMDSHA1_l(S) (((USHORT)SwitchRandRMDSHA1_l((S)) << 8) | \ + (USHORT)SwitchRandRMDSHA1_l((S))) +/* 32 bit unsigned */ +#define lRandRMDSHA1(S) (((ULONG)SwitchRandRMDSHA1_l((S)) << 24) | \ + ((ULONG)SwitchRandRMDSHA1_l((S)) << 16) | \ + ((ULONG)SwitchRandRMDSHA1_l((S)) << 8) | \ + (ULONG)SwitchRandRMDSHA1_l((S)) ) + +#define lRandRMDSHA1_l(S) (((ULONG)SwitchRandRMDSHA1_l((S)) << 24) | \ + ((ULONG)SwitchRandRMDSHA1_l((S)) << 16) | \ + ((ULONG)SwitchRandRMDSHA1_l((S)) << 8) | \ + (ULONG)SwitchRandRMDSHA1_l((S)) ) + + +/* Macros that generate random numbers using AES based PRNG */ + +/* 8 bit unsigned */ +#define bRandAES(S) ((UCHAR)SwitchRandAES_l((S))) +#define bRandAES_l(S) ((UCHAR)SwitchRandAES_l((S))) + +/* 16 bit unsigned */ +#define sRandAES(S) (((USHORT)SwitchRandAES_l((S)) << 8) | \ + (USHORT)SwitchRandAES_l((S))) +#define sRandAES_l(S) (((USHORT)SwitchRandAES_l((S)) << 8) | \ + (USHORT)SwitchRandAES_l((S))) +/* 32 bit unsigned */ +#define lRandAES(S) (((ULONG)SwitchRandAES_l((S)) << 24) | \ + ((ULONG)SwitchRandAES_l((S)) << 16) | \ + ((ULONG)SwitchRandAES_l((S)) << 8) | \ + (ULONG)SwitchRandAES_l((S)) ) + +#define lRandAES_l(S) (((ULONG)SwitchRandAES_l((S)) << 24) | \ + ((ULONG)SwitchRandAES_l((S)) << 16) | \ + ((ULONG)SwitchRandAES_l((S)) << 8) | \ + (ULONG)SwitchRandAES_l((S)) ) + + +struct InternalStateRMDSHA1 +{ + UCHAR SRMDSHA1[20]; + UCHAR XRMDSHA1[20]; + unsigned RoundRMDSHA1; + int RandRMDSHA1Init; +}; + +struct InternalStateAES +{ + AESBLOCK XAES; + UCHAR RandAESKey[32]; + AESWORKSPACE RandAESWorksp; + AESKEYSCHED RandAESSched; + unsigned RoundAES; + unsigned RandAESInit; + unsigned UpdateKeyAES; +}; + +struct InternalStateBBS +{ + CLINT XBBS; + CLINT MODBBS; + int RandBBSInit; +}; + +typedef struct InternalStateRMDSHA1 STATERMDSHA1; +typedef struct InternalStateBBS STATEBBS; +typedef struct InternalStateAES STATEAES; + +struct InternalStatePRNG +{ + STATERMDSHA1 StateRMDSHA1; + STATEAES StateAES; + STATEBBS StateBBS; + int Generator; +}; + +typedef struct InternalStatePRNG STATEPRNG; + + +/* Prototypes for 64 bit linear congruential PRNG */ + +extern int __FLINT_API +InitRand64_l (char *UsrStr, int LenUsrStr, int AddEntropy); + + +/* Prototypes for RipeMD-160 SHA-1 based PRNG */ + +extern int __FLINT_API +InitRandRMDSHA1_l (STATERMDSHA1 *state, char *UsrStr, int LenUsrStr, int AddEntropy); + +extern UCHAR __FLINT_API +SwitchRandRMDSHA1_l (STATERMDSHA1 *state); + +extern int __FLINT_API +RandRMDSHA1_l (CLINT a_l, STATERMDSHA1 *state, int l); + +extern void __FLINT_API +PurgeRandRMDSHA1_l (STATERMDSHA1 *state); + + +/* Prototypes for AES based PRNG */ + +extern int __FLINT_API +InitRandAES_l (STATEAES *StateAES, char *UsrStr, int LenUsrStr, int AddEntropy, int update); + +extern UCHAR __FLINT_API +SwitchRandAES_l (STATEAES *StateAES); + +extern int __FLINT_API +RandAES_l (CLINT a_l, STATEAES *StateAES, int l); + +extern void __FLINT_API +PurgeRandAES_l (STATEAES *StateAES); + + +/* Prototypes for BBS PRNG */ + +extern int __FLINT_API +InitRandBBS_l (STATEBBS *state, char *UsrStr, int LenUsrStr, int AddEntropy); + +extern int __FLINT_API +SwitchRandBBS_l (STATEBBS *state); + +extern int __FLINT_API +SeedBBS_l (STATEBBS *, CLINT); + +extern int __FLINT_API +RandBBS_l (CLINT, STATEBBS * ws, int); + +extern UCHAR __FLINT_API +bRandBBS_l (STATEBBS *state); + +extern USHORT __FLINT_API +sRandBBS_l (STATEBBS *state); + +extern ULONG __FLINT_API +lRandBBS_l (STATEBBS *state); + +extern void __FLINT_API +PurgeRandBBS_l (STATEBBS *state); + + +/* Prototypes for higher level random number functions w/ choice of */ +/* FLINT/C random number generators */ + +int __FLINT_API +InitRand_l (STATEPRNG *, char *, int, int, int); + +UCHAR __FLINT_API +bRand_l (STATEPRNG *); + +USHORT __FLINT_API +sRand_l (STATEPRNG *); + +ULONG __FLINT_API +lRand_l (STATEPRNG *); + +int __FLINT_API +Rand_l (CLINT r_l, STATEPRNG *, int l); + +int __FLINT_API +PurgeRand_l (STATEPRNG *); + + +extern int __FLINT_API +FindPrime_l (CLINT, STATEPRNG *, USHORT); + +extern int __FLINT_API +FindPrimeGcd_l (CLINT, STATEPRNG *, USHORT, CLINT); + +extern int __FLINT_API +FindPrimeMinMaxGcd_l (CLINT, STATEPRNG *, CLINT, CLINT, CLINT); + +extern int __FLINT_API +RandMinMax_l (CLINT, STATEPRNG *, CLINT, CLINT); + +#ifdef __cplusplus +} +#endif + +#endif /* #defined __RANDOMHH__ */ diff --git a/flint/src/randompp.cpp b/flint/src/randompp.cpp new file mode 100644 index 0000000..fe75e6b --- /dev/null +++ b/flint/src/randompp.cpp @@ -0,0 +1,555 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach, published by Apress Berkeley CA, 2001,2005 */ +// */ +// Module randompp.cpp Revision: 19.05.2003 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include "flintpp.h" +#include "random.h" + +#if defined FLINTPP_ANSI +#define NOTHROW (nothrow) +#else +#define NOTHROW +#endif + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_assert.h" +#endif + +#ifdef NO_ASSERTS +#define Assert(a) (void)0 +#endif + + +// Initialize PRNG + +int InitRand (STATEPRNG& xrstate, const char* UsrStr, int LenUsrStr, int Entropy, int Generator) +{ + return InitRand_l (&xrstate, (char*)UsrStr, LenUsrStr, Entropy, Generator); +} + + +void PurgeRand (STATEPRNG& xrstate) +{ + PurgeRand_l (&xrstate); +} + + +// Generation of a random number r with 2^(l-1) <= r < 2^l + +LINT RandLINT (int l, STATEPRNG& xrstate) +{ + LINT random; + + int error = Rand_l (random.n_l, &xrstate, l); + + if (E_CLINT_OK != error) + { + LINT::panic (E_LINT_RIN, "RandLINT", 0, __LINE__, __FILE__); + } + else + { + random.status = E_LINT_OK; + } + + return random; +} + + +// Generation of a random number r rmin <= r <= rmax + +LINT RandLINT (const LINT& rmin, const LINT& rmax, STATEPRNG& xrstate) +{ + if (rmin.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "RandLINT", 1, __LINE__, __FILE__); + if (rmax.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "RandLINT", 2, __LINE__, __FILE__); + if (rmax < rmin) + LINT::panic (E_LINT_INV, "RandLINT", 1, __LINE__, __FILE__); + + LINT random; + + int error = RandMinMax_l (random.n_l, &xrstate, rmin.n_l, rmax.n_l); + + if (E_CLINT_OK != error) + { + LINT::panic (E_LINT_RIN, "RandLINT", 0, __LINE__, __FILE__); + } + else + { + random.status = E_LINT_OK; + } + + return random; +} + + +// Generation of a random prime p with 2^(l-1) <= p < 2^l + +LINT FindPrime (USHORT l, STATEPRNG& xrstate) +{ + int error; + LINT rndprime; + error = FindPrime_l (rndprime.n_l, &xrstate, l); + + if (E_CLINT_OK != error) + { + LINT::panic (E_LINT_RIN, "FindPrime", 0, __LINE__, __FILE__); + } + else + { + rndprime.status = E_LINT_OK; + } + + return rndprime; +} + + +// Generation of a random prime p with 2^(l-1) <= p < 2^l +// and gcd (p - 1, f) = 1 + +LINT FindPrime (USHORT l, const LINT& f, STATEPRNG& xrstate) +{ + if (0 == l || l > CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "FindPrime", 1, __LINE__, __FILE__); + if (f.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "FindPrime", 3, __LINE__, __FILE__); + + // 0 < f has to be odd + if (f.iseven ()) + LINT::panic (E_LINT_INV, "FindPrime", 3, __LINE__, __FILE__); + + LINT rndprime; + + LINT pmin (0); + pmin.setbit (l - 1); + LINT pmax = ((LINT(0).setbit (l - 1) - 1) << 1) + 1; // max number with l bit + + int error = + FindPrimeMinMaxGcd_l (rndprime.n_l, &xrstate, pmin.n_l, pmax.n_l, f.n_l); + + if (E_CLINT_OK != error) + { + LINT::panic (E_LINT_RIN, "FindPrime", 0, __LINE__, __FILE__); + } + else + { + rndprime.status = E_LINT_OK; + } + + return rndprime; +} + + +// Generation of a random prime number p pmin <= p <= pmax +// and gcd (p - 1, f) = 1 + +LINT FindPrime (const LINT& pmin, const LINT& pmax, const LINT& f, STATEPRNG& xrstate) +{ + if (pmin.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "FindPrime", 1, __LINE__, __FILE__); + if (pmax.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "FindPrime", 2, __LINE__, __FILE__); + if (f.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "FindPrime", 3, __LINE__, __FILE__); + + if (pmin > pmax) + LINT::panic (E_LINT_INV, "FindPrime", 1, __LINE__, __FILE__); + + // 0 < f has to be odd + if (f.iseven ()) + LINT::panic (E_LINT_INV, "FindPrime", 3, __LINE__, __FILE__); + + LINT rndprime; + + int error = + FindPrimeMinMaxGcd_l (rndprime.n_l, &xrstate, pmin.n_l, pmax.n_l, f.n_l); + + if (E_CLINT_OK != error) + { + LINT::panic (E_LINT_RIN, "FindPrime", 0, __LINE__, __FILE__); + } + else + { + rndprime.status = E_LINT_OK; + } + + return rndprime; +} + + +// Find random prime number p of length 2^(l-1) <= p <= 2^l - 1 +// with p = a mod q and gcd (p - 1, f) = 1. +// Input parameter: 2 < q prime, a mod q != 0, 0 < f odd + +LINT ExtendPrime (const LINT& pmin, + const LINT& pmax, + const LINT& a, + const LINT& q, + const LINT& f, + STATEPRNG& xrstate) +{ + if (pmin.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "ExtendPrime", 1, __LINE__, __FILE__); + if (pmax.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "ExtendPrime", 2, __LINE__, __FILE__); + if (a.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "ExtendPrime", 3, __LINE__, __FILE__); + if (q.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "ExtendPrime", 4, __LINE__, __FILE__); + if (f.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "ExtendPrime", 5, __LINE__, __FILE__); + + if (pmin > pmax) + LINT::panic (E_LINT_INV, "ExtendPrime", 1, __LINE__, __FILE__); + + // q has to be odd + if (q.iseven ()) + LINT::panic (E_LINT_INV, "ExtendPrime", 3, __LINE__, __FILE__); + + // a must not be divided by q + if (a.mequ (0,q)) + LINT::panic (E_LINT_INV, "ExtendPrime", 2, __LINE__, __FILE__); + + // 0 < f has to be odd + if (f.iseven ()) + LINT::panic (E_LINT_INV, "ExtendPrime", 4, __LINE__, __FILE__); + + LINT p = RandLINT (pmin, pmax, xrstate); + LINT twotimesq = q << 1; + LINT t = pmax - pmin; + + if (p < pmin) + { + p += pmin; + } + + LINT w = p % twotimesq; + + p += (twotimesq - w) + a; + + if (p.iseven ()) + { + p += q; + } + + while (p > pmax) + { + p = pmin + p % (t + 1); + w = p % twotimesq; + p += (twotimesq - w) + a; + if (p.iseven ()) + { + p += q; + } + } + + while (1 != gcd (p - 1, f) || !p.isprime ()) + { + + Assert (twotimesq < pmax); + + p += twotimesq; + + while (p > pmax) + { + p += sRand_l (&xrstate); + p = pmin + p % (t + 1); + + Assert (p < pmax); + + w = p % twotimesq; + p += (twotimesq - w) + a; + + Assert (p < pmax); + + if (p.iseven ()) + { + p += q; + } + + Assert (p < pmax); + + } + } + + Assert ((p - a) % q == 0); + + return p; // p is prime with p = a mod q, ggT (p - 1, f) = 1 +} + + +// Find random prime number p of length pmin <= p <= pmax +// with p = a mod q and gcd (p - 1, f) = 1. +// Input parameter: 2 < q prime, a mod q != 0, 0 < f odd + +LINT ExtendPrime (USHORT l, + const LINT& a, + const LINT& q, + const LINT& f, + STATEPRNG& xrstate) +{ + if (l > CLINTMAXBIT) + LINT::panic (E_LINT_INV, "ExtendPrime", 1, __LINE__, __FILE__); + + LINT pmin = LINT(0).setbit (l - 1); + LINT pmax = LINT(0).setbit (l); + --pmax; + + return (ExtendPrime (pmin, pmax, a, q, f, xrstate)); +} + + +// Find strong prime p of length 2^(l-1) <= p <= 2^l - 1 +// with primes r, s, t, such that +// r divides p - 1 +// t divides r - 1 +// s divides p + 1 +// +// Input parameter: Binary length l of p + +LINT StrongPrime (USHORT l, STATEPRNG& xrstate) +{ + if (l >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 1, __LINE__, __FILE__); + + LINT pmin = LINT(0).setbit (l - 1); + LINT pmax = LINT(0).setbit (l); + --pmax; + + return (StrongPrime (pmin, pmax, (l>>2)-8, (l>>1)-8, (l>>1)-8, 1, xrstate)); +} + + +// Find strong prime p of length 2^(l-1) <= p <= 2^l - 1 +// with gcd (p - 1, f) = 1 and primes r, s, t such that +// r divides p - 1 +// t divides r - 1 +// s divides p + 1 +// +// Input parameter: Binary length l of p, +// 0 < f odd + +LINT StrongPrime (USHORT l, const LINT& f, STATEPRNG& xrstate) +{ + if (l >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 1, __LINE__, __FILE__); + + LINT pmin = LINT(0).setbit (l - 1); + LINT pmax = LINT(0).setbit (l); + --pmax; + + return (StrongPrime (pmin, pmax, (l>>2)-8, (l>>1)-8, (l>>1)-8, f, xrstate)); +} + + +// Find strong prime p of length 2^(l-1) <= p <= 2^l - 1 +// with gcd (p - 1, f) = 1 and primes r, s, t such that +// r divides p - 1 +// t divides r - 1 +// s divides p + 1 +// +// Input parameter: Binary length l of p, +// Lengths lt, lr and ls of primes t, r and s resp. +// lt <~ l/4, lr ~ ls <~ l/2 of l +// <~ means: smaller than, close to +// 0 < f odd + +LINT StrongPrime (USHORT l, + USHORT lt, + USHORT lr, + USHORT ls, + const LINT& f, + STATEPRNG& xrstate) +{ + if (l >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 1, __LINE__, __FILE__); + if (lt >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 2, __LINE__, __FILE__); + if (lr >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 3, __LINE__, __FILE__); + if (ls >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 4, __LINE__, __FILE__); + + LINT pmin = LINT(0).setbit (l - 1); + LINT pmax = LINT(0).setbit (l); + --pmax; + + return (StrongPrime (pmin, pmax, lt, ls, lr, f, xrstate)); +} + + +// Find strong prime p with pmin <= p <= pmax +// with gcd (p - 1, f) = 1 and primes r, s, t such that +// r divides p - 1 +// t divides r - 1 +// s divides p + 1 +// +// Input parameter: pmin, pmax +// 0 < f odd + +LINT StrongPrime (const LINT& pmin, + const LINT& pmax, + const LINT& f, + STATEPRNG& xrstate) +{ + if (pmin.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 1, __LINE__, __FILE__); + if (pmax.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 2, __LINE__, __FILE__); + if (f.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 6, __LINE__, __FILE__); + + // 0 < f muss ungerade sein + if (f.iseven ()) + LINT::panic (E_LINT_INV, "StrongPrime", 5, __LINE__, __FILE__); + + int lt = (ld (pmin) >> 2) - 8; + int lr = (ld (pmin) >> 1) - 8; + int ls = lr; + + return StrongPrime (pmin, pmax, lt, ls, lr, f, xrstate); +} + + +// Find strong prime p with pmin <= p <= pmax +// with gcd (p - 1, f) = 1 and primes r, s, t such that +// r divides p - 1 +// t divides r - 1 +// s divides p + 1 +// +// Input parameters: pmin, pmax, +// Lengths lt, lr and ls of primes t, r and s resp. +// lt <~ l/4, lr ~ ls <~ l/2 of l +// <~ means: smaller than, close to +// 0 < f odd + +LINT StrongPrime (const LINT& pmin, + const LINT& pmax, + USHORT lt, + USHORT lr, + USHORT ls, + const LINT& f, + STATEPRNG& xrstate) +{ + if (pmin.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 1, __LINE__, __FILE__); + if (pmax.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 2, __LINE__, __FILE__); + if (lt >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 3, __LINE__, __FILE__); + if (lr >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 4, __LINE__, __FILE__); + if (ls >= CLINTMAXBIT) + LINT::panic (E_LINT_OFL, "StrongPrime", 5, __LINE__, __FILE__); + if (f.status == E_LINT_INV) + LINT::panic (E_LINT_INV, "StrongPrime", 6, __LINE__, __FILE__); + + // 0 < f muss ungerade sein + if (f.iseven ()) + LINT::panic (E_LINT_INV, "StrongPrime", 5, __LINE__, __FILE__); + + LINT t = FindPrime (lt, 1, xrstate); + LINT r = ExtendPrime (lr, 1, t, 1, xrstate); + LINT s = FindPrime (ls, 1, xrstate); + + LINT p = inv (r,s); // p := r^(-1) mod s + p *= r; // p := r^(-1) * r + p <<= 1; // p := 2*r^(-1) * r + LINT rs = r*s; + p = msub (1,p,rs); // p := 1 - 2*r^(-1) * r mod r*s = s*u - r*v mod r*s + // mit u := s^(-1) mod r und v := r^(-1) mod s + + Assert ((p - 1) % r == 0); + Assert ((p + 1) % s == 0); + + p = ExtendPrime (pmin, pmax, p, rs, f, xrstate); + + Assert ((p - 1) % r == 0); + Assert ((p + 1) % s == 0); + + return p; +} + + +// Compatibility functions for prior versions of Blum-Blum-Shub-Generator +// not thread-safe! + +static STATEPRNG xrstate_loc; + +int seedBBS (const LINT& seed) +{ + if (seed.status == E_LINT_INV) LINT::panic (E_LINT_INV, "seedBBS", 0, __LINE__); + xrstate_loc.Generator = FLINT_RNDBBS; + return (seedBBS_l (&xrstate_loc.StateBBS, seed.n_l)); +} + + +LINT randBBS (int l) +{ + return RandLINT (l, xrstate_loc); +} + + +LINT randBBS (const LINT& rmin, const LINT& rmax) +{ + return RandLINT (rmin, rmax, xrstate_loc); +} + + + + + + + + + diff --git a/flint/src/ripemd.c b/flint/src/ripemd.c new file mode 100644 index 0000000..a3044c6 --- /dev/null +++ b/flint/src/ripemd.c @@ -0,0 +1,867 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module ripemd.c Revision: 01.12.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include "flint.h" +#include "ripemd.h" + +#ifndef inline +#if (_MSC_VER >= 1100) || defined __GNUC__ +#define inline __inline +#else +#define inline /**/ +#endif +#endif + +/* Prototypes of local functions */ + +static void appetize (ULONG *); +static void swallow (ULONG *, ULONG *); +static void digest (ULONG *, UCHAR *, ULONG[]); + +static void appetize128 (ULONG *); +static void swallow128 (ULONG *, ULONG *); +static void digest128 (ULONG *, UCHAR *, ULONG[]); + +#ifdef FLINT_SECURE +static inline void ZeroUlong (ULONG *); +static inline void Zero2Ulong (ULONG *, ULONG *); +static inline void Zero4Ulong (ULONG *, ULONG *, ULONG *, ULONG *); +static inline void ZeroUcharArray (void *, size_t); +#endif + +/* Macros */ + +/* Rotation, simulation of assembler instruction for barrel shifting */ +#define ROL(X, N) (((X) << (N)) | ((X) >> (32-(N)))) + +/* RIPEMD specific chaining of intermediate values in rounds */ +#define CHAIN128(A, B, C, D, X, S) { \ + (A) = (D); (D) = (C); (C) = (B); \ + (B) = ROL((X), (S)); \ + } + +#define CHAIN160(A, B, C, D, E, X, S) { \ + (A) = (E); (E) = (D); (D) = ROL((C), 10); (C) = (B); \ + (B) = ROL((X), (S)) + (A); \ + } + +/* Conversion of an array of type UCHAR into a value of type ULONG */ +#if defined LITTLE_ENDIAN +#define UC2UL(ucptr) *(unsigned long *)((ucptr)) +#else +#define UC2UL(ucptr) \ + (((unsigned long) *((ucptr)+3) << 24) | \ + ((unsigned long) *((ucptr)+2) << 16) | \ + ((unsigned long) *((ucptr)+1) << 8) | \ + ((unsigned long) *(ucptr))) +#endif + + +/* Addition of a single-digit number b to a double-digit number represented */ +/* by an array (a[1],a[0]). A carry in a[0]+=b is handled by increasing a[1]. */ +#define ADDC(a, b) { \ + if (((a)[0] + (b)) < (a)[0]) {(a)[1]++;} \ + (a)[0] += (b); \ + } + +/* Constants */ +/* Choice of message words... */ +static const int +r1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13}; + +/* ... for parallel rounds */ +static const int +r2[] = { 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11}; + +/* Length of rotations... */ +static const int +s1[] = {11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6}; + +/* ... for parallel rounds */ +static const int +s2[] = { 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11}; + + +/*****************************************************************************/ +/* RIPEMD-160 API */ +/*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message of length byte in a single step */ +/* Syntax: void */ +/* ripemd160_l (UCHAR *HashRes, UCHAR *clear, ULONG length); */ +/* Input: UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block) */ +/* Output: UCHAR *HashRes (Hash Value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripemd160_l (UCHAR *HashRes, UCHAR *clear, ULONG length) +{ + RMDSTAT hws; + + ripeinit_l (&hws); + ripefinish_l (HashRes, &hws, clear, length); + +#ifdef FLINT_SECURE + ZeroUcharArray (&hws, sizeof (hws)); +#endif /* FLINT_SECURE */ + + return; +} + + +/******************************************************************************/ +/* Functions for blockwise hashing a message in several steps */ +/* Procedure: Initialization with ripeinit */ +/* Hashing of block1, block2,... ,blockn with function ripehash */ +/* Finish operation with function ripefinish */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Initialization of RIPEMD-160 function */ +/* Syntax: void ripeinit_l (RMDSTAT *hws); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripeinit_l (RMDSTAT *hws) +{ + appetize (hws->stomach); + hws->total[0] = 0; + hws->total[1] = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message block */ +/* Syntax: int ripehash_l (RMDSTAT *hws, UCHAR *clear, ULONG length); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block i bytes = 0 mod 64) */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_RMD if length != 0 mod 64 */ +/* */ +/******************************************************************************/ +int __FLINT_API +ripehash_l (RMDSTAT *hws, UCHAR *clear, ULONG length) +{ + ULONG ULBlock[16]; /* message block holding 16 values of type ULONG */ + ULONG noofblocks; /* Number of blocks of 16 ULONG-vyluse */ + ULONG i, j; /* Counter */ + + /* If incomplete 64 byte block exists... */ + if (length & 63) + { + return E_CLINT_RMD; /* ...return error code */ + } + + /* Number of 64 byte message blocks in clear */ + noofblocks = length >> 6; + + /* Process 64 byte message blocks in clear */ + for (i = 0; i < noofblocks; i++) + { + for (j = 0; j < 16; j++) + { + ULBlock[j] = UC2UL (clear); + clear += 4; + } + + swallow (hws->stomach, ULBlock); + } + + /* Add length of message in clear to hws->total */ + ADDC (hws->total, length); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return E_CLINT_OK; +} + + +/******************************************************************************/ +/* */ +/* Function: Finish hash function RIPEMD-160 */ +/* Syntax: void ripefinish_l (UCHAR *HashRes, RMDSTAT *hws, */ +/* UCHAR *clear, ULONG length); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* UCHAR *clear (Pointer to the last message block */ +/* ULONG length (Length of message block in bytes) */ +/* Output: UCHAR HashRes (20 byte hash value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripefinish_l (UCHAR *HashRes, RMDSTAT *hws, UCHAR *clear, ULONG length) +{ + unsigned i; + + /* Number of bytes in complete blocks */ + ULONG blength = (length >> 6) << 6; + + /* Process complete blocks in clear */ + ripehash_l (hws, clear, blength); + + /* Add length of message in clear to hws->total */ + ADDC (hws->total,length - blength); + + /* Process last incomplete block with padding and length of message */ + digest (hws->stomach, clear + blength, hws->total); + + for (i = 0; i < 20; i += 4) + { + *(HashRes+i) = (UCHAR)hws->stomach[i>>2]; + *(HashRes+i+1) = (UCHAR)(hws->stomach[i>>2] >> 8); /*lint !e661 !e662 */ + *(HashRes+i+2) = (UCHAR)(hws->stomach[i>>2] >> 16); /*lint !e661 !e662 */ + *(HashRes+i+3) = (UCHAR)(hws->stomach[i>>2] >> 24); /*lint !e661 !e662 */ + } + + return; +} + + +/*****************************************************************************/ +/* RIPEMD-128 API */ +/*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message of length byte in a single step */ +/* Syntax: void */ +/* ripemd128_l (UCHAR *HashRes, UCHAR *clear, ULONG length); */ +/* Input: UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block) */ +/* Output: UCHAR *HashRes (Hash Value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripemd128_l (UCHAR *HashRes, UCHAR *clear, ULONG length) +{ + RMDSTAT hws; + + ripeinit128_l (&hws); + ripefinish128_l (HashRes, &hws, clear, length); + +#ifdef FLINT_SECURE + ZeroUcharArray (&hws, sizeof (hws)); +#endif +} + + +/******************************************************************************/ +/* Functions for blockwise hashing a message in several steps */ +/* Procedure: Initialization with ripeinit */ +/* Hashing of block1, block2,... ,blockn with function ripehash */ +/* Finish operation with function ripefinish */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Initialization of RIPEMD-128 function */ +/* Syntax: void ripeinit128_l (RMDSTAT *hws); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripeinit128_l (RMDSTAT *hws) +{ + appetize128 (hws->stomach); + hws->total[0] = 0; + hws->total[1] = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message block */ +/* Syntax: int ripehash128_l (RMDSTAT *hws, UCHAR *clear, ULONG length); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block i bytes = 0 mod 64) */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_RMD if length != 0 mod 64 */ +/* */ +/******************************************************************************/ +int __FLINT_API +ripehash128_l (RMDSTAT *hws, UCHAR *clear, ULONG length) +{ + ULONG ULBlock[16]; /* aktueller 16-ULONG (512 Bit) Message-Block */ + ULONG noofblocks; /* Anzahl 16-ULONG- (512 Bit-) Bloecke */ + ULONG i, j; /* Zaehler */ + + /* If incomplete 64 byte block exists... */ + if (length & 63) + { + return E_CLINT_RMD; /* ...return error code */ + } + + /* Number of 64 byte message blocks in clear */ + noofblocks = length >> 6; + + /* Process 64 byte message blocks in clear */ + for (i = 0; i < noofblocks; i++) + { + for (j = 0; j < 16; j++) + { + ULBlock[j] = UC2UL (clear); + clear += 4; + } + + swallow128 (hws->stomach, ULBlock); + } + + /* Add length of message in clear to hws->total */ + ADDC (hws->total, length); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Finish hash function RIPEMD-128 */ +/* Syntax: void ripefinish128_l (UCHAR *HashRes, RMDSTAT *hws, */ +/* UCHAR *clear, ULONG length); */ +/* Input: RMDSTAT *hws (RIPEMD status buffer) */ +/* UCHAR *clear (Pointer to the last message block */ +/* ULONG length (Length of message block in bytes) */ +/* Output: UCHAR HashRes (16 byte hash value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +ripefinish128_l (UCHAR *HashRes, RMDSTAT *hws, UCHAR *clear, ULONG length) +{ + unsigned i; + + /* Number of bytes in complete blocks */ + ULONG blength = (length >> 6) << 6; + + /* Process complete blocks in clear */ + ripehash128_l (hws, clear, blength); + + /* Add length of message in clear to hws->total */ + ADDC (hws->total, length - blength); + + /* Process last incomplete block with padding and length of message */ + digest128 (hws->stomach, clear + blength, hws->total); + + for (i = 0; i < 16; i += 4) + { + *(HashRes+i) = (UCHAR)hws->stomach[i>>2]; + *(HashRes+i+1) = (UCHAR)(hws->stomach[i>>2] >> 8); /*lint !e661 !e662 */ + *(HashRes+i+2) = (UCHAR)(hws->stomach[i>>2] >> 16); /*lint !e661 !e662 */ + *(HashRes+i+3) = (UCHAR)(hws->stomach[i>>2] >> 24); /*lint !e661 !e662 */ + } + + return; +} + + +/******************************************************************************/ +/* RIPEMD-160 kernel functions */ +/******************************************************************************/ + +static void +appetize (ULONG *stomach) +{ + stomach[0] = 0x67452301UL; + stomach[1] = 0xefcdab89UL; + stomach[2] = 0x98badcfeUL; + stomach[3] = 0x10325476UL; + stomach[4] = 0xc3d2e1f0UL; + + return; +} + + +static void +swallow (ULONG *stomach, ULONG *ULBlock) +{ + int round, rol; + ULONG x; + + ULONG a1 = stomach[0]; + ULONG b1 = stomach[1]; + ULONG c1 = stomach[2]; + ULONG d1 = stomach[3]; + ULONG e1 = stomach[4]; + + ULONG a2 = stomach[0]; + ULONG b2 = stomach[1]; + ULONG c2 = stomach[2]; + ULONG d2 = stomach[3]; + ULONG e2 = stomach[4]; + + /*lint -e123 Don't complain about "Macros ... defined with arguments" */ + + /* Rounds and parallel rounds 0-15 */ + for (round = 0; round < 16; round++) + { + rol = s1[round]; + x = a1 + (b1 ^ c1 ^ d1) + ULBlock[round]; + CHAIN160 (a1, b1, c1, d1, e1, x, rol); + + rol = s2[round]; + x = a2 + (b2 ^ (c2 | ~d2)) + ULBlock[r2[round]] + 0x50a28BE6UL; + CHAIN160 (a2, b2, c2, d2, e2, x, rol); + } + + /* Rounds and parallel rounds 16-31 */ + for (round = 16; round < 32; round++) + { + rol = s1[round]; + x = a1 + (d1 ^ (b1 & (c1 ^ d1))) + ULBlock[r1[round]] + 0x5A827999UL; + CHAIN160 (a1, b1, c1, d1, e1, x, rol); + + rol = s2[round]; + x = a2 + (c2 ^ (d2 & (b2 ^ c2))) + ULBlock[r2[round]] + 0x5C4Dd124UL; + CHAIN160 (a2, b2, c2, d2, e2, x, rol); + } + + /* Rounds and parallel rounds 32-47 */ + for (round = 32; round < 48; round++) + { + rol = s1[round]; + x = a1 + ((b1 | ~c1) ^ d1) + ULBlock[r1[round]] + 0x6ED9EBA1UL; + CHAIN160 (a1, b1, c1, d1, e1, x, rol); + + rol = s2[round]; + x = a2 + ((b2 | ~c2) ^ d2) + ULBlock[r2[round]] + 0x6D703EF3UL; + CHAIN160 (a2, b2, c2, d2, e2, x, rol); + } + + /* Rounds and parallel rounds 48-63 */ + for (round = 48; round < 64; round++) + { + rol = s1[round]; + x = a1 + (c1 ^ (d1 & (b1 ^ c1))) + ULBlock[r1[round]] + 0x8F1BBCDCUL; + CHAIN160 (a1, b1, c1, d1, e1, x, rol); + + rol = s2[round]; + x = a2 + (d2 ^ (b2 & (c2 ^ d2))) + ULBlock[r2[round]] + 0x7A6D76E9UL; + CHAIN160 (a2, b2, c2, d2, e2, x, rol); + } + + /* Rounds and parallel rounds 64-79 */ + for (round = 64; round < 80; round++) + { + rol = s1[round]; + x = a1 + (b1 ^ (c1 | ~d1)) + ULBlock[r1[round]] + 0xA953FD4EUL; + CHAIN160 (a1, b1, c1, d1, e1, x, rol); + + rol = s2[round]; + x = a2 + (b2 ^ c2 ^ d2) + ULBlock[r2[round]]; + CHAIN160 (a2, b2, c2, d2, e2, x, rol); + } + + /* Result in stomach */ + d2 += c1 + stomach[1]; + stomach[1] = stomach[2] + d1 + e2; + stomach[2] = stomach[3] + e1 + a2; + stomach[3] = stomach[4] + a1 + b2; + stomach[4] = stomach[0] + b1 + c2; + stomach[0] = d2; + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&a1, &b1, &c1, &d1); + Zero4Ulong (&e1, &a2, &b2, &c2); + Zero4Ulong (&d2, &e2, &x, &a1); +#endif + + return; +} + + +static void +digest (ULONG *stomach, UCHAR *clear, ULONG total[]) +{ + ULONG i,j, rest; + ULONG ULBlock[16]; + + memset (ULBlock, 0, sizeof (ULONG) << 4); + + /* Padding to achieve block length of 512 Bit */ + /* by example of the message "abc" of length l = 24 bit: */ + /* 1. One bit "1" is appended to the end of the masseage. */ + /* 2. k "0"-bits are appended, with k the smallest non-negative */ + /* solution of l+1+k = 448 mod 512, in this example k = 448-1-24 */ + /* = 423, 7 bit following the single "1" plus additional */ + /* 13 ULONGs (i.e. 416 bit) in the positions ULBlock[1]...[13]. */ + /* 3. The length of the message is appended in 64 bit (2 ULONGs). */ + /* */ + /* 01100001 01100010 01100011 1 000...00 00...011000 */ + /* "a" "b" "c" 1+ 423Bit 64 bit (length) */ + + /* Message length modulo 64 ULONG-blocks (512 bit) */ + rest = total[0] & 0x3f; + + /* Insert ULONGs into ULBlock */ + for (i = 0; i < (rest >> 2); i++) + { + ULBlock[i] = UC2UL (clear); + clear += 4; + } + + /* Remaining UCHARs go into ULBLock. Invariant: 0 <= i <= 15 */ + for (j = i << 2; j < rest; j++) + { + ULBlock[i] |= (ULONG)*clear++ << ((j & 3) << 3); + } + + /* Append 0x80 to ULBlock: At least one byte is still free */ + ULBlock[i] |= (ULONG)0x80 << ((j & 3) << 3); + + if (rest > 55) /* No space left for appending the message length (8 Byte), */ + { /* therefore store length into the following block */ + swallow (stomach, ULBlock); + memset (ULBlock, 0, sizeof (ULONG) << 4); + } + + /* Append message length in bit */ + ULBlock[14] = total[0] << 3; + ULBlock[15] = (total[0] >> 29) | (total[1] << 3); + swallow (stomach, ULBlock); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return; +} + + +/******************************************************************************/ +/* RIPEMD-128 kernel functions */ +/******************************************************************************/ + + +static void +appetize128 (ULONG *stomach) +{ + stomach[0] = 0x67452301UL; + stomach[1] = 0xefcdab89UL; + stomach[2] = 0x98badcfeUL; + stomach[3] = 0x10325476UL; + + return; +} + + +static void +swallow128 (ULONG *stomach, ULONG *ULBlock) +{ + int round, rol; + ULONG x; + + ULONG a1 = stomach[0]; + ULONG b1 = stomach[1]; + ULONG c1 = stomach[2]; + ULONG d1 = stomach[3]; + + ULONG a2 = stomach[0]; + ULONG b2 = stomach[1]; + ULONG c2 = stomach[2]; + ULONG d2 = stomach[3]; + + /*lint -e123 Don't complain about "Macros ... defined with arguments" */ + + /* Rounds and parallel rounds 0-15 */ + for (round = 0; round < 16; round++) + { + rol = s1[round]; + x = a1 + (b1 ^ c1 ^ d1) + ULBlock[round]; + CHAIN128 (a1, b1, c1, d1, x, rol); + + rol = s2[round]; + x = a2 + (c2 ^ (d2 & (b2 ^ c2))) + ULBlock[r2[round]] + 0x50a28be6UL; + CHAIN128 (a2, b2, c2, d2, x, rol); + } + + /* Rounds and parallel rounds 16-31 */ + for (round = 16; round < 32; round++) + { + rol = s1[round]; + x = a1 + (d1 ^ (b1 & (c1 ^ d1))) + ULBlock[r1[round]] + 0x5A827999UL; + CHAIN128 (a1, b1, c1, d1, x, rol); + + rol = s2[round]; + x = a2 + ((b2 | ~c2) ^ d2) + ULBlock[r2[round]] + 0x5c4dd124UL; + CHAIN128 (a2, b2, c2, d2, x, rol); + } + + /* Rounds and parallel rounds 32-47 */ + for (round = 32; round < 48; round++) + { + rol = s1[round]; + x = a1 + ((b1 | ~c1) ^ d1) + ULBlock[r1[round]] + 0x6ed9eba1UL; + CHAIN128 (a1, b1, c1, d1, x, rol); + + rol = s2[round]; + x = a2 + (d2 ^ (b2 & (c2 ^ d2))) + ULBlock[r2[round]] + 0x6d703ef3UL; + CHAIN128 (a2, b2, c2, d2, x, rol); + } + + /* Rounds and parallel rounds 48-63 */ + for (round = 48; round < 64; round++) + { + rol = s1[round]; + x = a1 + (c1 ^ (d1 & (b1 ^ c1))) + ULBlock[r1[round]] + 0x8f1bbcdcUL; + CHAIN128 (a1, b1, c1, d1, x, rol); + + rol = s2[round]; + x = a2 + (b2 ^ c2 ^ d2) + ULBlock[r2[round]]; + CHAIN128 (a2, b2, c2, d2, x, rol); + } + + + /* Result in stomach */ + d2 += c1 + stomach[1]; + stomach[1] = stomach[2] + d1 + a2; + stomach[2] = stomach[3] + a1 + b2; + stomach[3] = stomach[0] + b1 + c2; + stomach[0] = d2; + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&a1, &b1, &c1, &d1); + Zero4Ulong (&a2, &b2, &c2, &d2); + ZeroUlong (&x); +#endif + + return; +} + + +static void +digest128 (ULONG *stomach, UCHAR *clear, ULONG total[]) +{ + ULONG i,j, rest; + ULONG ULBlock[16]; + + memset (ULBlock, 0, sizeof (ULONG) << 4); + + /* Padding as for RIPEMD-160 */ + + /* Message length modulo 64 ULONG-blocks (512 bit) */ + rest = total[0] & 0x3f; + + /* Insert ULONGs into ULBlock */ + for (i = 0; i < (rest >> 2); i++) + { + ULBlock[i] = UC2UL (clear); + clear += 4; + } + + /* Remaining UCHARs go into ULBLock. Invariant: 0 <= i <= 15 */ + for (j = i << 2; j < rest; j++) + { + ULBlock[i] |= (ULONG)*clear++ << ((j & 3) << 3); + } + + /* Append 0x80 to ULBlock: At least one byte is still free */ + ULBlock[i] |= (ULONG)0x80 << ((j & 3) << 3); + + if (rest > 55) /* No space left for appending the message length (8 Byte), */ + { /* therefore store length into the following block */ + swallow128 (stomach, ULBlock); + memset (ULBlock, 0, sizeof (ULONG) << 4); + } + + /* Append message length in bit */ + ULBlock[14] = total[0] << 3; + ULBlock[15] = (total[0] >> 29) | (total[1] << 3); + swallow128 (stomach, ULBlock); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return; +} + + +#ifdef FLINT_SECURE + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: ZeroUlong (ULONG *a); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* Output: *a overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUlong (ULONG *a) +{ + *a = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero2Ulong (ULONG *a, ULONG *b); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero2Ulong (ULONG *a, ULONG *b) +{ + *a = *b = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* ULONG *c (Pointer to ULONG variable to be purged) */ +/* ULONG *d (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b, *c and *d overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d) +{ + *a = *b = *c = *d = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of Array */ +/* Syntax: ZeroUcharArray (UCHAR *a, int Len); */ +/* Input: UCHAR *a (Pointer to array of UCHARs) */ +/* int Len (Length of array in byte) */ +/* Output: Array overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUcharArray (void *a, size_t Len) +{ + memset ((UCHAR*)a, 0, Len); +} + +#endif + + + + + + + + + + + + diff --git a/flint/src/ripemd.h b/flint/src/ripemd.h new file mode 100644 index 0000000..82cdb4e --- /dev/null +++ b/flint/src/ripemd.h @@ -0,0 +1,157 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module ripemd.h Revision: 01.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __RIPEMDH__ +#define __RIPEMDH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define RMDVER 160 +#define E_CLINT_RMD -20 + +/* Macros maintaining FLINT/C namespace */ + +#define ripeinit ripeinit_l +#define ripehash ripehash_l +#define ripefinish ripefinish_l +#define ripemd160 ripemd160_l +#define ripeinit128 ripeinit128_l +#define ripehash128 ripehash128_l +#define ripefinish128 ripefinish128_l +#define ripemd128 ripemd128_l + + +struct ripemd_stat { + unsigned long stomach[5]; + unsigned long total[2]; +}; + +typedef struct ripemd_stat RMDSTAT; + + +/***********************************************************/ +/* Function prototypes */ +/***********************************************************/ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +/* RIPEMD-160 */ +extern void __FLINT_API +ripeinit_l (RMDSTAT *); +extern int __FLINT_API +ripehash_l (RMDSTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +ripefinish_l (unsigned char *, RMDSTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +ripemd160_l (unsigned char *, unsigned char *, unsigned long); + +/* RIPEMD-128 */ +extern void __FLINT_API +ripeinit128_l (RMDSTAT *); +extern int __FLINT_API +ripehash128_l (RMDSTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +ripefinish128_l (unsigned char *, RMDSTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +ripemd128_l (unsigned char *, unsigned char *, unsigned long); + +#ifdef __cplusplus +} +#endif + +#endif /* __RIPEMDH__ */ + + + + + + + + + + + + + + + + + diff --git a/flint/src/sha1.c b/flint/src/sha1.c new file mode 100644 index 0000000..61426c4 --- /dev/null +++ b/flint/src/sha1.c @@ -0,0 +1,555 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach, published by Apress Berkeley CA, 2005 */ +/* */ +/* Module sha1.c Revision: 01.12.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include "flint.h" +#include "sha1.h" + + +#ifndef inline +#if (_MSC_VER >= 1100) || defined __GNUC__ +#define inline __inline +#else +#define inline /**/ +#endif +#endif + +/* Prototypes */ + +static void sha1_appetize (ULONG *); +static void sha1_swallow (ULONG *, ULONG *); +static void sha1_digest (ULONG *, UCHAR *, ULONG[]); + +#ifdef FLINT_SECURE +static inline void ZeroUlong (ULONG *); +static inline void Zero2Ulong (ULONG *, ULONG *); +static inline void Zero4Ulong (ULONG *, ULONG *, ULONG *, ULONG *); +static inline void ZeroUcharArray (void *, size_t); +#endif + +/* Macros */ + +/* Left rotation, simulation of assembler instruction for barrel shifting */ +#define ROL(X, N) (((X) << (N)) | ((X) >> (32-(N)))) + +/* SHA-1 specific expansion of input values */ +#define XPND(W, i) (W[i & 15] = \ + ROL((W[ i & 15] ^ W[(i - 14) & 15] ^ W[(i - 8) & 15] ^ W[(i - 3) & 15]), 1)) + +/* SHA-1 specific chaining of intermediate values in rounds */ +#define CHAIN(A, B, C, D, E, X) { \ + (E) = (D);\ + (D) = (C);\ + (C) = ROL ((B), 30);\ + (B) = (A);\ + (A) = (X);\ +} + +/* Conversion of an array of type UCHAR into a value of type ULONG */ +/* Conversion is defined such that byte-arrays are interpreted */ +/* as sequences of 4-byte-words stored in Big-Endian representation */ +/* Thus conversion macro UC2ULBE takes value of lowest memory address */ +/* of each 4-byte-group as most significant digit of an ULONG word. */ +#define UC2ULBE(ucptr) \ + (((unsigned long) *((ucptr)+3) ) | \ + ((unsigned long) *((ucptr)+2) << 8) | \ + ((unsigned long) *((ucptr)+1) << 16) | \ + ((unsigned long) *(ucptr) << 24)) + + +/* Addition of a single-digit number b to a double-digit number represented */ +/* by an array (a[1],a[0]). A carry in a[0]+=b is handled by increasing a[1]. */ +#define ADDC(a, b) { \ + if (((a)[0] + (b)) < (a)[0]) {(a)[1]++;} \ + (a)[0] += (b); \ +} + + +/*****************************************************************************/ +/* SHA-1 API */ +/*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message of length byte in a single step */ +/* Syntax: void sha1_l (UCHAR *HashRes, UCHAR *clear, ULONG length); */ +/* Input: UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block) */ +/* Output: UCHAR *HashRes (Hash Value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1_l (UCHAR *HashRes, UCHAR *clear, ULONG length) +{ + SHASTAT hws; + + sha1init (&hws); + sha1finish (HashRes, &hws, clear, length); + +#ifdef FLINT_SECURE + ZeroUcharArray (&hws, sizeof (hws)); +#endif +} + + +/******************************************************************************/ +/* Functions for blockwise hashing a message in several steps */ +/* Procedure: Initialization with ripeinit */ +/* Hashing of block1, block2,... ,blockn with function sha1hash */ +/* Finish operation with function sha1finish */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Initialization of SHA-1 function */ +/* Syntax: void sha1init_l (SHASTAT *hws); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1init_l (SHASTAT *hws) +{ + sha1_appetize (hws->stomach); + hws->total[0] = 0; + hws->total[1] = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message block */ +/* Syntax: int sha1hash_1 (SHASTAT *hws, UCHAR *clear, ULONG length); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block i bytes = 0 mod 64) */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_SHA if length != 0 mod 64 */ +/* */ +/******************************************************************************/ +int __FLINT_API +sha1hash_l (SHASTAT *hws, UCHAR *clear, ULONG length) +{ + ULONG ULBlock[16]; /* message block holding 16 values of type ULONG */ + ULONG noofblocks; /* Number of blocks of 16 ULONG-vyluse */ + ULONG i, j; /* Counter */ + + /* If incomplete 64 byte block exists... */ + if (length & 63) + { + return E_CLINT_SHA; /* ...return error code */ + } + + /* Number of 64 byte message blocks in clear */ + noofblocks = length >> 6; + + /* Process 64 byte message blocks in clear */ + for (i = 0; i < noofblocks; i++) + { + for (j = 0; j < 16; j++) + { + ULBlock[j] = UC2ULBE (clear); + clear += 4; + } + + sha1_swallow (hws->stomach, ULBlock); + } + + /* Add length of message in clear to hws->total */ + ADDC (hws->total, length); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Finish hash function SHA-1 */ +/* Syntax: void sha1finish_l (UCHAR *HashRes, SHASTAT *hws, */ +/* UCHAR *clear, ULONG length); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* UCHAR *clear (Pointer to the last message block */ +/* ULONG length (Length of message block in bytes) */ +/* Output: UCHAR HashRes (Hash value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1finish_l (UCHAR *HashRes, SHASTAT *hws, UCHAR *clear, ULONG length) +{ + unsigned i; + + /* Number of bytes in complete blocks */ + ULONG blength = (length >> 6) << 6; + + /* Process complete blocks in clear */ + sha1hash_l (hws, clear, blength); + + /* Add length of message in clear to hws->total */ + ADDC (hws->total,length - blength); + + /* Process last incomplete block with padding and length of message */ + sha1_digest (hws->stomach, clear + blength, hws->total); + + /* Note: Hash result is stored in Big-Endian representation. */ + for (i = 0; i < 20; i += 4) + { + *(HashRes+i) = (UCHAR)(hws->stomach[i>>2] >> 24); /*lint !e661 !e662 */ + *(HashRes+i+1) = (UCHAR)(hws->stomach[i>>2] >> 16); /*lint !e661 !e662 */ + *(HashRes+i+2) = (UCHAR)(hws->stomach[i>>2] >> 8); /*lint !e661 !e662 */ + *(HashRes+i+3) = (UCHAR)(hws->stomach[i>>2] ); + } + + return; +} + + +/******************************************************************************/ +/* SHA-1 kernel functions */ +/******************************************************************************/ + +static void +sha1_appetize (ULONG *stomach) +{ + stomach[0] = 0x67452301UL; + stomach[1] = 0xefcdab89UL; + stomach[2] = 0x98badcfeUL; + stomach[3] = 0x10325476UL; + stomach[4] = 0xc3d2e1f0UL; + + return; +} + + +static void +sha1_swallow (ULONG *stomach, ULONG *ULBlock) +{ + int round; + ULONG x; + + ULONG a = stomach[0]; + ULONG b = stomach[1]; + ULONG c = stomach[2]; + ULONG d = stomach[3]; + ULONG e = stomach[4]; + + /*lint -e123 Don't complain about "Macros ... defined with arguments" */ + + for (round = 0; round < 16; round++) + { + x = ROL((a), 5) + (d^(b&(c^d))) + e + ULBlock[round] + 0x5A827999L; + CHAIN (a, b, c, d, e, x); + } + + for (round = 16; round < 20; round++) + { + x = ROL((a), 5) + (d^(b&(c^d))) + e + XPND(ULBlock, round) + 0x5A827999L; + CHAIN (a, b, c, d, e, x); + } + + for (round = 20; round < 40; round++) + { + x = ROL((a), 5) + (b^c^d) + e + XPND(ULBlock, round) + 0x6ED9EBA1L; + CHAIN (a, b, c, d, e, x); + } + + + for (round = 40; round < 60; round++) + { + x = ROL((a), 5) + ((b&c)|(d&(b|c))) + e + XPND(ULBlock, round) + 0x8F1BBCDCL; + CHAIN (a, b, c, d, e, x); + } + + for (round = 60; round < 80; round++) + { + x = ROL((a), 5) + (b^c^d) + e + XPND(ULBlock, round) + 0xCA62C1D6L; + CHAIN (a, b, c, d, e, x); + } + + /* Result in stomach */ + stomach[0] += a; + stomach[1] += b; + stomach[2] += c; + stomach[3] += d; + stomach[4] += e; + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&a, &b, &c, &d); + ZeroUlong (&e); +#endif + + return; +} + + +static void +sha1_digest (ULONG *stomach, UCHAR *clear, ULONG total[]) +{ + ULONG i,j, k, rest; + ULONG ULBlock[16]; + + memset (ULBlock, 0, sizeof (ULONG) << 4); + + /* Padding to achieve block lengthe of 512 Bit */ + /* by example of the message "abc" of length l = 24 bit: */ + /* 1. One bit "1" is appended to the end of the masseage. */ + /* 2. k "0"-bits are appended, with k the smallest non-negative */ + /* solution of l+1+k = 448 mod 512, in this example k = 448-1-24 */ + /* = 423, 7 bit following the single "1" plus additional */ + /* 13 ULONGs (i.e. 416 bit) in the positions ULBlock[1]...[13]. */ + /* 3. The length of the message is appended in 64 bit (2 ULONGs). */ + /* Note: Opposite to MD4, MD5 and RIPEMD MSW is stored first and */ + /* LSW is preceding MSW. */ + /* */ + /* 01100001 01100010 01100011 1 000...00 00...011000 */ + /* "a" "b" "c" 1+ 423Bit 64 bit (length) */ + + /* Message length modulo 64 ULONG-blocks (512 bit) */ + rest = total[0] & 0x3f; + + /* Insert ULONGs into ULBlock */ + for (i = 0; i < (rest >> 2); i++) + { + ULBlock[i] = UC2ULBE (clear); + clear += 4; + } + + /* Remaining UCHARs go into ULBLock. Invariant: 0 <= i <= 15 */ + for (j = i << 2, k = 3; j < rest; j++, k--) + { + ULBlock[i] |= (ULONG)*clear++ << (k << 3); + } + + /* Append 0x80 to ULBlock: At least one byte is still free */ + ULBlock[i] |= (ULONG)0x80 << (k << 3); + + if (rest > 55) /* No space left for appending the message length (8 Byte), */ + { /* therefore store length into the following block */ + sha1_swallow (stomach, ULBlock); + memset (ULBlock, 0, sizeof (ULONG) << 4); + } + + /* Append message length in bit, MSW first, LSW preceding MSW */ + ULBlock[14] = (total[0] >> 29) | (total[1] << 3); + ULBlock[15] = total[0] << 3; + + sha1_swallow (stomach, ULBlock); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return; +} + + +#ifdef FLINT_SECURE + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: ZeroUlong (ULONG *a); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* Output: *a overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUlong (ULONG *a) +{ + *a = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero2Ulong (ULONG *a, ULONG *b); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero2Ulong (ULONG *a, ULONG *b) +{ + *a = *b = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* ULONG *c (Pointer to ULONG variable to be purged) */ +/* ULONG *d (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b, *c and *d overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d) +{ + *a = *b = *c = *d = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of Array */ +/* Syntax: ZeroUcharArray (UCHAR *a, int Len); */ +/* Input: UCHAR *a (Pointer to array of UCHARs) */ +/* int Len (Length of array in byte) */ +/* Output: Array overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUcharArray (void *a, size_t Len) +{ + memset ((UCHAR*)a, 0, Len); +} + +#endif + + + +#ifdef SHA1_TEST + +unsigned char digest[20]; +unsigned char message[3] = {'a', 'b', 'c' }; +unsigned char *mess56 = + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + +/* Correct solutions from FIPS PUB 180-1 */ +char *dig1 = "A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D"; +char *dig2 = "84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1"; +char *dig3 = "34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F"; + +/* Output should look like:- + a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d + A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D <= correct + 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1 + 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 <= correct + 34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f + 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F <= correct +*/ + +main() +{ + SHASTAT sha; + int i; + UCHAR big[1000]; + + sha1init (&sha); + sha1finish (digest, &sha, message, 3); + + for (i = 0; i < 20; i++) + { + if ((i % 4) == 0) printf(" "); + printf("%02x", digest[i]); + } + printf ("\n"); + printf (" %s <= correct\n", dig1); + + sha1init (&sha); + sha1finish (digest, &sha, mess56, 56); + + for (i = 0; i < 20; i++) + { + if ((i % 4) == 0) printf(" "); + printf ("%02x", digest[i]); + } + printf ("\n"); + printf (" %s <= correct\n", dig2); + + /* Fill up big array */ + for (i = 0; i < 1000; i++) + big[i] = 'a'; + + sha1init (&sha); + /* Digest 1 million x 'a' */ + for (i = 0; i < 1041; i++) + sha1hash (&sha, big, 960); + sha1finish (digest, &sha, big, 640); + + for (i = 0; i < 20; i++) + { + if ((i % 4) == 0) printf(" "); + printf("%02x", digest[i]); + } + printf("\n"); + printf(" %s <= correct\n", dig3); + + return 0; +} + +#endif /* SHA1_TEST? */ diff --git a/flint/src/sha1.h b/flint/src/sha1.h new file mode 100644 index 0000000..49e46df --- /dev/null +++ b/flint/src/sha1.h @@ -0,0 +1,128 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module sha1.h Revision: 01.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* There is no warranty for the software contained on this CD-ROM, to the */ +/* extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __SHA1H__ +#define __SHA1H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHALEN 160 +#define E_CLINT_SHA -20 + +/* Macros maintaining FLINT/C namespace */ + +#define sha1init sha1init_l +#define sha1hash sha1hash_l +#define sha1finish sha1finish_l +#define sha1 sha1_l + +struct sha1_stat +{ + unsigned long stomach[5]; + unsigned long total[2]; +}; + +typedef struct sha1_stat SHASTAT; + + +/***********************************************************/ +/* Function prototypes of SHA1- API */ +/***********************************************************/ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +extern void __FLINT_API +sha1init_l (SHASTAT *); +extern int __FLINT_API +sha1hash_l (SHASTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha1finish_l (unsigned char *, SHASTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha1_l (unsigned char *, unsigned char *, unsigned long); + +#ifdef __cplusplus +} +#endif + +#endif /* __SHA1H__ */ + diff --git a/flint/src/sha256.c b/flint/src/sha256.c new file mode 100644 index 0000000..4587b9b --- /dev/null +++ b/flint/src/sha256.c @@ -0,0 +1,802 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module sha256.c Revision: 03.06.2004 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include "flint.h" +#include "sha256.h" + + +#ifndef inline +#if (_MSC_VER >= 1100) || defined __GNUC__ +#define inline __inline +#else +#define inline /**/ +#endif +#endif + +/* Prototypes */ + +static void sha1_appetize (ULONG *); +static void sha1_swallow (ULONG *, ULONG *); +static void sha1_digest (ULONG *, UCHAR *, ULONG[]); + +static void sha256_appetize (ULONG *); +static void sha256_swallow (ULONG *, ULONG *); +static void sha256_digest (ULONG *, UCHAR *, ULONG[]); + +#ifdef FLINT_SECURE +static inline void ZeroUlong (ULONG *); +static inline void Zero2Ulong (ULONG *, ULONG *); +static inline void Zero4Ulong (ULONG *, ULONG *, ULONG *, ULONG *); +static inline void ZeroUcharArray (void *, size_t); +#endif + +/* Macros */ + +/* Right shift*/ +#define SHR(X, N) ((X) >> (N)) + +/* Rotation, simulating assembler instructions for barrel shifting */ +#define ROL(X, N) (((X) << (N)) | ((X) >> (32-(N)))) +#define ROR(X, N) (((X) >> (N)) | ((X) << (32-(N)))) + +/* SHA-1 specific expansion of input values */ +#define XPND(W, i) (W[i & 15] = \ + ROL((W[ i & 15] ^ W[(i - 14) & 15] ^ W[(i - 8) & 15] ^ W[(i - 3) & 15]), 1)) + +/* SHA-1 specific chaining of intermediate values in rounds */ +#define CHAIN(A, B, C, D, E, X) { \ + (E) = (D);\ + (D) = (C);\ + (C) = ROL ((B), 30);\ + (B) = (A);\ + (A) = (X);\ +} + +/* SHA-256 specific macros */ +#define Ch(X, Y, Z) ((Z)^((X)&((Y)^(Z)))) + +#define Maj(X, Y, Z) (((X)&(Y))|((Z)&((X)|(Y)))) + +#define SUM256_0(X) (ROR((X), 2) ^ ROR((X), 13) ^ ROR((X), 22)) + +#define SUM256_1(X) (ROR((X), 6) ^ ROR((X), 11) ^ ROR((X), 25)) + +#define SIG256_0(X) (ROR((X), 7) ^ ROR((X), 18) ^ SHR((X), 3)) + +#define SIG256_1(X) (ROR((X), 17) ^ ROR((X), 19) ^ SHR((X), 10)) + +/* Conversion of an array of type UCHAR into a value of type ULONG */ +/* Conversion is defined such that byte-arrays are interpreted */ +/* as sequences of 4-byte-words stored in Big-Endian representation */ +/* Thus conversion macro UC2ULBE takes value of lowest memory address */ +/* of each 4-byte-group as most significant digit of an ULONG word. */ +#define UC2ULBE(ucptr) \ + (((unsigned long) *((ucptr)+3) ) | \ + ((unsigned long) *((ucptr)+2) << 8) | \ + ((unsigned long) *((ucptr)+1) << 16) | \ + ((unsigned long) *(ucptr) << 24)) + + +/* Addition of a single-digit number b to a double-digit number represented */ +/* by an array (a[1],a[0]). A carry in a[0]+=b is handled by increasing a[1]. */ +#define ADDC(a, b) { \ + if (((a)[0] + (b)) < (a)[0]) {(a)[1]++;} \ + (a)[0] += (b); \ +} + +/* SHA-256 specific constants */ +static ULONG K256[]= + {0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; + +/*****************************************************************************/ +/* SHA-1 API */ +/*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message of length byte in a single step */ +/* Syntax: void sha1_l (UCHAR *HashRes, UCHAR *clear, ULONG length); */ +/* Input: UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block) */ +/* Output: UCHAR *HashRes (Hash Value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1_l (UCHAR *HashRes, UCHAR *clear, ULONG length) +{ + SHASTAT hws; + + sha1init (&hws); + sha1finish (HashRes, &hws, clear, length); + +#ifdef FLINT_SECURE + ZeroUcharArray (&hws, sizeof (hws)); +#endif +} + + +/******************************************************************************/ +/* Functions for blockwise hashing a message in several steps */ +/* Procedure: Initialization with sha1init_l */ +/* Hashing of block1,block2,...,blockn with function sha1hash_l */ +/* Finish operation with function sha1finish_l */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Initialization of SHA-1 function */ +/* Syntax: void sha1init_l (SHASTAT *hws); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1init_l (SHASTAT *hws) +{ + sha1_appetize (hws->stomach); + hws->total[0] = 0; + hws->total[1] = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message block */ +/* Syntax: int sha1hash_1 (SHASTAT *hws, UCHAR *clear, ULONG length); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block i bytes = 0 mod 64) */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_SHA if length != 0 mod 64 */ +/* */ +/******************************************************************************/ +int __FLINT_API +sha1hash_l (SHASTAT *hws, UCHAR *clear, ULONG length) +{ + ULONG ULBlock[16]; /* message block holding 16 values of type ULONG */ + ULONG noofblocks; /* Number of blocks of 16 ULONG-vyluse */ + ULONG i, j; /* Counter */ + + /* If incomplete 64 byte block exists... */ + if (length & 63) + { + return E_CLINT_SHA; /* ...return error code */ + } + + /* Number of 64 byte message blocks in clear */ + noofblocks = length >> 6; + + /* Process 64 byte message blocks in clear */ + for (i = 0; i < noofblocks; i++) + { + for (j = 0; j < 16; j++) + { + ULBlock[j] = UC2ULBE (clear); + clear += 4; + } + + sha1_swallow (hws->stomach, ULBlock); + } + + /* Add length of message in clear to hws->total */ + ADDC (hws->total, length); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Finish hash function SHA-1 */ +/* Syntax: void sha1finish_l (UCHAR *HashRes, SHASTAT *hws, */ +/* UCHAR *clear, ULONG length); */ +/* Input: SHASTAT *hws (SHA-1 status buffer) */ +/* UCHAR *clear (Pointer to the last message block */ +/* ULONG length (Length of message block in bytes) */ +/* Output: UCHAR HashRes (Hash value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha1finish_l (UCHAR *HashRes, SHASTAT *hws, UCHAR *clear, ULONG length) +{ + unsigned i; + + /* Number of bytes in complete blocks */ + ULONG blength = (length >> 6) << 6; + + /* Process complete blocks in clear */ + sha1hash_l (hws, clear, blength); + + /* Add length of message in clear to hws->total */ + ADDC (hws->total,length - blength); + + /* Process last incomplete block with padding and length of message */ + sha1_digest (hws->stomach, clear + blength, hws->total); + + /* Note: Hash result is stored in Big-Endian representation. */ + for (i = 0; i < 20; i += 4) + { + *(HashRes+i) = (UCHAR)(hws->stomach[i>>2] >> 24); /*lint !e661 !e662 */ + *(HashRes+i+1) = (UCHAR)(hws->stomach[i>>2] >> 16); /*lint !e661 !e662 */ + *(HashRes+i+2) = (UCHAR)(hws->stomach[i>>2] >> 8); /*lint !e661 !e662 */ + *(HashRes+i+3) = (UCHAR)(hws->stomach[i>>2] ); + } + + return; +} + + +/*****************************************************************************/ +/* SHA-256 API */ +/*****************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message of length byte in a single step */ +/* Syntax: void sha1_l (UCHAR *HashRes, UCHAR *clear, ULONG length); */ +/* Input: UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block) */ +/* Output: UCHAR *HashRes (Hash Value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha256_l (UCHAR *HashRes, UCHAR *clear, ULONG length) +{ + SHA256STAT hws; + + sha256init_l (&hws); + sha256finish_l (HashRes, &hws, clear, length); + +#ifdef FLINT_SECURE + ZeroUcharArray (&hws, sizeof (hws)); +#endif +} + + +/******************************************************************************/ +/* Functions for blockwise hashing a message in several steps */ +/* Procedure: Initialization with sha256init_l */ +/* Hashing of block1,block2,...,blockn with function sha256hash_l */ +/* Finish operation with function sha256finish_l */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Function: Initialization of SHA-256 function */ +/* Syntax: void sha256init_l (SHASTAT *hws); */ +/* Input: SHA256STAT *hws (SHA-256 status buffer) */ +/* Output: - */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha256init_l (SHA256STAT *hws) +{ + sha256_appetize (hws->stomach); + hws->total[0] = 0; + hws->total[1] = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Hashing of a message block */ +/* Syntax: int sha256hash_1 (SHA256STAT *hws, UCHAR *clear, */ +/* ULONG length); */ +/* Input: SHA256STAT *hws (SHA-256 status buffer) */ +/* UCHAR *clear (Pointer to message block) */ +/* ULONG length (Length of message block i bytes = 0 mod 64) */ +/* Output: - */ +/* Returns: E_CLINT_OK if everything is O.K. */ +/* E_CLINT_SHA if length != 0 mod 64 */ +/* */ +/******************************************************************************/ +int __FLINT_API +sha256hash_l (SHA256STAT *hws, UCHAR *clear, ULONG length) +{ + ULONG ULBlock[16]; /* message block holding 16 values of type ULONG */ + ULONG noofblocks; /* Number of blocks of 16 ULONG-vyluse */ + ULONG i, j; /* Counter */ + + /* If incomplete 64 byte block exists... */ + if (length & 63) + { + return E_CLINT_SHA; /* ...return error code */ + } + + /* Number of 64 byte message blocks in clear */ + noofblocks = length >> 6; + + /* Process 64 byte message blocks in clear */ + for (i = 0; i < noofblocks; i++) + { + for (j = 0; j < 16; j++) + { + ULBlock[j] = UC2ULBE (clear); + clear += 4; + } + + sha256_swallow (hws->stomach, ULBlock); + } + + /* Verarbeite 64-Byte-Bloecke von clear */ + ADDC (hws->total, length); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Finish hash function SHA-256 */ +/* Syntax: void sha256finish_l (UCHAR *HashRes, SHA256STAT *hws, */ +/* UCHAR *clear, ULONG length); */ +/* Input: SHA256STAT *hws (SHA-256 status buffer) */ +/* UCHAR *clear (Pointer to the last message block */ +/* ULONG length (Length of message block in bytes) */ +/* Output: UCHAR HashRes (Hash value) */ +/* Returns: - */ +/* */ +/******************************************************************************/ +void __FLINT_API +sha256finish_l (UCHAR *HashRes, SHA256STAT *hws, UCHAR *clear, ULONG length) +{ + unsigned i; + + /* Number of bytes in complete blocks */ + ULONG blength = (length >> 6) << 6; + + /* Process complete blocks in clear */ + sha256hash_l (hws, clear, blength); + + /* Add length of message in clear to hws->total */ + ADDC (hws->total,length - blength); + + /* Process last incomplete block with padding and length of message */ + sha256_digest (hws->stomach, clear + blength, hws->total); + + /* Note: Hash result is stored in Big-Endian representation. */ + for (i = 0; i < 32; i += 4) + { + *(HashRes+i) = (UCHAR)(hws->stomach[i>>2] >> 24); /*lint !e661 !e662 */ + *(HashRes+i+1) = (UCHAR)(hws->stomach[i>>2] >> 16); /*lint !e661 !e662 */ + *(HashRes+i+2) = (UCHAR)(hws->stomach[i>>2] >> 8); /*lint !e661 !e662 */ + *(HashRes+i+3) = (UCHAR)(hws->stomach[i>>2] ); + } + + return; +} + + +/******************************************************************************/ +/* SHA-1 kernel functions */ +/******************************************************************************/ + +static void +sha1_appetize (ULONG *stomach) +{ + stomach[0] = 0x67452301UL; + stomach[1] = 0xefcdab89UL; + stomach[2] = 0x98badcfeUL; + stomach[3] = 0x10325476UL; + stomach[4] = 0xc3d2e1f0UL; + + return; +} + + +static void +sha1_swallow (ULONG *stomach, ULONG *ULBlock) +{ + int round; + ULONG x; + + ULONG a = stomach[0]; + ULONG b = stomach[1]; + ULONG c = stomach[2]; + ULONG d = stomach[3]; + ULONG e = stomach[4]; + + /*lint -e123 Don't complain about "Macros ... defined with arguments" */ + + for (round = 0; round < 16; round++) + { + x = ROL((a), 5) + (d^(b&(c^d))) + e + ULBlock[round] + 0x5A827999L; + CHAIN (a, b, c, d, e, x); + } + + for (round = 16; round < 20; round++) + { + x = ROL((a), 5) + (d^(b&(c^d))) + e + XPND(ULBlock, round) + 0x5A827999L; + CHAIN (a, b, c, d, e, x); + } + + for (round = 20; round < 40; round++) + { + x = ROL((a), 5) + (b^c^d) + e + XPND(ULBlock, round) + 0x6ED9EBA1L; + CHAIN (a, b, c, d, e, x); + } + + + for (round = 40; round < 60; round++) + { + x = ROL((a), 5) + ((b&c)|(d&(b|c))) + e + XPND(ULBlock, round) + 0x8F1BBCDCL; + CHAIN (a, b, c, d, e, x); + } + + for (round = 60; round < 80; round++) + { + x = ROL((a), 5) + (b^c^d) + e + XPND(ULBlock, round) + 0xCA62C1D6L; + CHAIN (a, b, c, d, e, x); + } + + /* Result in stomach */ + stomach[0] += a; + stomach[1] += b; + stomach[2] += c; + stomach[3] += d; + stomach[4] += e; + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&a, &b, &c, &d); + ZeroUlong (&e); +#endif + + return; +} + + +static void +sha1_digest (ULONG *stomach, UCHAR *clear, ULONG total[]) +{ + ULONG i,j, k, rest; + ULONG ULBlock[16]; + + memset (ULBlock, 0, sizeof (ULONG) << 4); + + /* Padding to achieve block lengthe of 512 Bit */ + /* by example of the message "abc" of length l = 24 bit: */ + /* 1. One bit "1" is appended to the end of the masseage. */ + /* 2. k "0"-bits are appended, with k the smallest non-negative */ + /* solution of l+1+k = 448 mod 512, in this example k = 448-1-24 */ + /* = 423, 7 bit following the single "1" plus additional */ + /* 13 ULONGs (i.e. 416 bit) in the positions ULBlock[1]...[13]. */ + /* 3. The length of the message is appended in 64 bit (2 ULONGs). */ + /* Note: Opposite to MD4, MD5 and RIPEMD MSW is stored first and */ + /* LSW is preceding MSW. */ + /* */ + /* 01100001 01100010 01100011 1 000...00 00...011000 */ + /* "a" "b" "c" 1+ 423Bit 64 bit (length) */ + + /* Message length modulo 64 ULONG-blocks (512 bit) */ + rest = total[0] & 0x3f; + + /* Insert ULONGs into ULBlock */ + for (i = 0; i < (rest >> 2); i++) + { + ULBlock[i] = UC2ULBE (clear); + clear += 4; + } + + /* Remaining UCHARs go into ULBLock. Invariant: 0 <= i <= 15 */ + for (j = i << 2, k = 3; j < rest; j++, k--) + { + ULBlock[i] |= (ULONG)*clear++ << (k << 3); + } + + /* Append 0x80 to ULBlock: At least one byte is still free */ + ULBlock[i] |= (ULONG)0x80 << (k << 3); + + if (rest > 55) /* No space left for appending the message length (8 Byte), */ + { /* therefore store length into the following block */ + sha1_swallow (stomach, ULBlock); + memset (ULBlock, 0, sizeof (ULONG) << 4); + } + + /* Append message length in bit, MSW first, LSW preceding MSW */ + ULBlock[14] = (total[0] >> 29) | (total[1] << 3); + ULBlock[15] = total[0] << 3; + + sha1_swallow (stomach, ULBlock); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return; +} + + +/******************************************************************************/ +/* SHA-256 kernel functions */ +/******************************************************************************/ + +static void +sha256_appetize (ULONG *stomach) +{ + stomach[0] = 0x6a09e667UL; + stomach[1] = 0xbb67ae85UL; + stomach[2] = 0x3c6ef372UL; + stomach[3] = 0xa54ff53aUL; + stomach[4] = 0x510e527fUL; + stomach[5] = 0x9b05688cUL; + stomach[6] = 0x1f83d9abUL; + stomach[7] = 0x5be0cd19UL; + return; +} + + +static void +sha256_swallow (ULONG *stomach, ULONG *ULBlock) +{ + ULONG WW[64]; + int round; + ULONG T1, T2; + + ULONG a = stomach[0]; + ULONG b = stomach[1]; + ULONG c = stomach[2]; + ULONG d = stomach[3]; + ULONG e = stomach[4]; + ULONG f = stomach[5]; + ULONG g = stomach[6]; + ULONG h = stomach[7]; + + /*lint -e123 Don't complain about "Macros ... defined with arguments" */ + + for (round = 0; round < 16; round++) + { + WW[round] = *(ULBlock + round); + } + + for (round = 16; round < 64; round++) + { + WW[round] = SIG256_1(WW[round - 2]) + WW[round - 7] + + SIG256_0(WW[round - 15]) + WW[round - 16]; + } + + for (round = 0; round < 64; round++) + { + T1 = h + SUM256_1(e) + Ch(e, f, g) + K256[round] + WW[round]; + T2 = SUM256_0(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + } + + /* Result in stomach */ + stomach[0] += a; + stomach[1] += b; + stomach[2] += c; + stomach[3] += d; + stomach[4] += e; + stomach[5] += f; + stomach[6] += g; + stomach[7] += h; + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&a, &b, &c, &d); + Zero4Ulong (&e, &f, &g, &h); +#endif + + return; +} + + +static void +sha256_digest (ULONG *stomach, UCHAR *clear, ULONG total[]) +{ + ULONG i,j, k, rest; + ULONG ULBlock[16]; + + memset (ULBlock, 0, sizeof (ULONG) << 4); + + /* Padding to achieve block lengthe of 512 Bit is exactly as in SHA-1 */ + + /* Message length modulo 64 ULONG-blocks (512 bit) */ + rest = total[0] & 0x3f; + + /* Insert ULONGs into ULBlock */ + for (i = 0; i < (rest >> 2); i++) + { + ULBlock[i] = UC2ULBE (clear); + clear += 4; + } + + /* Remaining UCHARs go into ULBLock. Invariant: 0 <= i <= 15 */ + for (j = i << 2, k = 3; j < rest; j++, k--) + { + ULBlock[i] |= (ULONG)*clear++ << (k << 3); + } + + /* Append 10000000 = 0x80 to ULBlock: At least one byte is still free */ + ULBlock[i] |= (ULONG)0x80 << (k << 3); + + if (rest > 55) /* No space left for appending the message length (8 Byte), */ + { /* therefore store length into the following block */ + sha256_swallow (stomach, ULBlock); + memset (ULBlock, 0, sizeof (ULONG) << 4); + } + + /* Append message length in bit, MSW first, LSW preceding MSW */ + ULBlock[14] = (total[0] >> 29) | (total[1] << 3); + ULBlock[15] = total[0] << 3; + + sha256_swallow (stomach, ULBlock); + +#ifdef FLINT_SECURE + /* Overwrite temporary variables */ + Zero4Ulong (&ULBlock[0], &ULBlock[1], &ULBlock[2], &ULBlock[3]); + Zero4Ulong (&ULBlock[4], &ULBlock[5], &ULBlock[6], &ULBlock[7]); + Zero4Ulong (&ULBlock[8], &ULBlock[9], &ULBlock[10], &ULBlock[11]); + Zero4Ulong (&ULBlock[12], &ULBlock[13], &ULBlock[14], &ULBlock[15]); +#endif + + return; +} + + +#ifdef FLINT_SECURE + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: ZeroUlong (ULONG *a); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* Output: *a overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUlong (ULONG *a) +{ + *a = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero2Ulong (ULONG *a, ULONG *b); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero2Ulong (ULONG *a, ULONG *b) +{ + *a = *b = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of variables */ +/* Syntax: Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d); */ +/* Input: ULONG *a (Pointer to ULONG variable to be purged) */ +/* ULONG *b (Pointer to ULONG variable to be purged) */ +/* ULONG *c (Pointer to ULONG variable to be purged) */ +/* ULONG *d (Pointer to ULONG variable to be purged) */ +/* Output: *a, *b, *c and *d overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +Zero4Ulong (ULONG *a, ULONG *b, ULONG *c, ULONG *d) +{ + *a = *b = *c = *d = 0; +} + + +/******************************************************************************/ +/* */ +/* Function: Purging of Array */ +/* Syntax: ZeroUcharArray (UCHAR *a, int Len); */ +/* Input: UCHAR *a (Pointer to array of UCHARs) */ +/* int Len (Length of array in byte) */ +/* Output: Array overwritten by 0 */ +/* Returns: - */ +/* */ +/******************************************************************************/ +static inline void +ZeroUcharArray (void *a, size_t Len) +{ + memset ((UCHAR*)a, 0, Len); +} + +#endif + diff --git a/flint/src/sha256.h b/flint/src/sha256.h new file mode 100644 index 0000000..66d52b2 --- /dev/null +++ b/flint/src/sha256.h @@ -0,0 +1,157 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module sha256.h Revision: 03.06.2004 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#ifndef __SHA256H__ +#define __SHA256H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHALEN 160 +#define SHALEN256 256 +#define E_CLINT_SHA -20 + +/* Macros maintaining FLINT/C namespace */ + +#define sha1init sha1init_l +#define sha1hash sha1hash_l +#define sha1finish sha1finish_l +#define sha1 sha1_l + +#define sha256init sha256init_l +#define sha256hash sha256hash_l +#define sha256finish sha256finish_l +#define sha256 sha256_l + +struct sha1_stat +{ + unsigned long stomach[5]; + unsigned long total[2]; +}; + +typedef struct sha1_stat SHASTAT; + +struct sha256_stat +{ + unsigned long stomach[8]; + unsigned long total[2]; +}; + +typedef struct sha256_stat SHA256STAT; + + +/***********************************************************/ +/* Function prototypes */ +/***********************************************************/ + +#ifndef __FLINT_API +#ifdef FLINT_USEDLL +#define __FLINT_API __cdecl +#else +#define __FLINT_API /**/ +#endif /* FLINT_USEDLL */ +#endif /* !defined __FLINT_API */ + +#if !defined __FLINT_API_A +#if defined __GNUC__ && !defined __cdecl +#define __FLINT_API_A /**/ +#else +#define __FLINT_API_A __cdecl +#endif /* !defined __GNUC__ */ +#endif /* !defined __FLINT_API_A */ + + +/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */ +/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */ +/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */ + +#ifndef __FLINT_API_DATA +#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL +#define __FLINT_API_DATA __declspec(dllimport) +#else +#define __FLINT_API_DATA /**/ +#endif /* MSC_VER && FLINT_USEDLL */ +#endif /* !defined __FLINT_API_DATA */ + + +/***********************************************************/ +/* Function prototypes of SHA1 - API */ +/***********************************************************/ + +extern void __FLINT_API +sha1init_l (SHASTAT *); +extern int __FLINT_API +sha1hash_l (SHASTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha1finish_l (unsigned char *, SHASTAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha1_l (unsigned char *, unsigned char *, unsigned long); + +/***********************************************************/ +/* Function prototypes of SHA256 - API */ +/***********************************************************/ + +extern void __FLINT_API +sha256init_l (SHA256STAT *); +extern int __FLINT_API +sha256hash_l (SHA256STAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha256finish_l (unsigned char *, SHA256STAT *, unsigned char *, unsigned long); +extern void __FLINT_API +sha256_l (unsigned char *, unsigned char *, unsigned long); + +#ifdef __cplusplus +} +#endif + +#endif /* __SHA256H__ */ + diff --git a/flint/test/Makefile b/flint/test/Makefile new file mode 100644 index 0000000..f70f465 --- /dev/null +++ b/flint/test/Makefile @@ -0,0 +1,193 @@ +############################################################################## +# # +# Software supplement to the book "Cryptography in C and C++" # +# by Michael Welschenbach, published by Apress Berkeley CA, 2005 # +# # +# makefile for running the FLINT/C testsuite under Unix and Linux # +# Authors: Jan-Peter Wilhelms, Michael Welschenbach # +# # +# Copyright (C) 1998-2005 by Michael Welschenbach # +# Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg # +# Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA # +# Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland # +# Copyright (C) 2002-2005 by PHEI, P.R.China # +# Copyright (C) 2002-2005 by InfoBook, Korea # +# Copyright (C) 2002-2005 by Triumph Publishing, Russia # +# # +# All Rights Reserved # +# # +# The software may be used for noncommercial purposes and may be altered, # +# as long as the following conditions are accepted without any # +# qualification: # +# # +# (1) All changes to the sources must be identified in such a way that the # +# changed software cannot be misinterpreted as the original software. # +# # +# (2) The statements of copyright may not be removed or altered. # +# # +# (3) The following DISCLAIMER is accepted: # +# # +# DISCLAIMER: # +# # +# There is no warranty for the software contained in this distribution, to # +# the extent permitted by applicable law. The copyright holders provide the # +# software `as is' without warranty of any kind, either expressed or # +# implied, including, but not limited to, the implied warranty of fitness # +# for a particular purpose. The entire risk as to the quality and # +# performance of the program is with you. # +# # +# In no event unless required by applicable law or agreed to in writing # +# will the copyright holders, or any of the individual authors named in # +# the source files, be liable to you for damages, including any general, # +# special, incidental or consequential damages arising out of any use of # +# the software or out of inability to use the software (including but not # +# limited to any financial losses, loss of data or data being rendered # +# inaccurate or losses sustained by you or by third parties as a result of # +# a failure of the software to operate with any other programs), even if # +# such holder or other party has been advised of the possibility of such # +# damages. # +# # +#============================================================================# +# # +# Usage: # +# ------ # +# make w/o parameters runs the whole testsuite # +# make with one of the parameters # +# # +# rnd reg bas add sub mul kar sqr div madd msub mmul msqr shift # +# set bool iroot gcd mexp con ari chin xgcd root prrt ripe sha1 # +# # +# runs the single test program denoted by the parameter. # +# # +############################################################################## + +test: rnd reg bas add sub mul kar sqr div madd msub mmul msqr shift set bool iroot gcd mexp ripe sha1 sha256 con ari chin xgcd root prrt + +rnd: flint.o testrand + testrand 2> err + +reg: flint.o testreg + testreg 2>> err + +bas: flint.o testbas + testbas 2>> err + +add: flint.o testadd + testadd 2>> err + +sub: flint.o testsub + testsub 2>> err + +mul: flint.o testmul + testmul 2>> err + +kar: flint.o ../src/kmul.c testkar.c + gcc -Wall -ansi -O2 -I../src -o testkar testkar.c ../src/kmul.c flint.o + testkar 2>> err + +sqr: flint.o testsqr + testsqr 2>> err + +div: flint.o testdiv + testdiv 2>> err + +madd: flint.o testmadd + testmadd 2>> err + +msub: flint.o testmsub + testmsub 2>> err + +mmul: flint.o testmmul + testmmul 2>> err + +msqr: flint.o testmsqr + testmsqr 2>> err + +shift: flint.o testshft + testshft 2>> err + +set: flint.o testset + testset 2>> err + +bool: flint.o testbool + testbool 2>> err + +iroot: flint.o testiroo + testiroo 2>> err + +gcd: flint.o testgcd + testgcd 2>> err + +mexp: flint.o testmexp + testmexp 2>> err + +con: flintpp.o flint.o testcnst + testcnst 2>> err + +ari: flintpp.o flint.o testari + testari 2>> err + +chin: flintpp.o flint.o testchin + testchin 2>> err + +xgcd: flintpp.o flint.o testxgcd + testxgcd 2>> err + +root: flintpp.o random.o entropy.o aes.o ripemd.o sha1.o randompp.o flint.o + gcc -Wall -ansi -O2 -I../src -o testroot testroot.cpp random.o entropy.o aes.o ripemd.o sha1.o randompp.o flint.o flintpp.o -lstdc++ + testroot 2>> err + +prrt: flintpp.o flint.o testprrt + testprrt 2>> err + +ripe: ../src/ripemd.c testripe.c + gcc -Wall -ansi -O2 -I../src -o testripe testripe.c ../src/ripemd.c + testripe 2>> err + +sha1: ../src/sha1.c testsha1.c + gcc -Wall -ansi -O2 -I../src -o testsha1 testsha1.c ../src/sha1.c + testsha1 2>> err + +sha256: ../src/sha1.c testsha256.c + gcc -Wall -ansi -O2 -I../src -o testsha256 testsha256.c ../src/sha256.c + testsha256 2>> err + +flint.o: ../src/flint.c + gcc -c -O2 -Wall -ansi -I../src ../src/flint.c + +kmul.o: ../src/kmul.c + gcc -c -O2 -Wall -ansi -I../src ../src/kmul.c + +flintpp.o: ../src/flintpp.cpp + gcc -c -O2 -Wall -ansi -I../src ../src/flintpp.cpp + +random.o: ../src/random.c + gcc -c -O2 -Wall -ansi -I../src ../src/random.c + +entropy.o: ../src/entropy.c + gcc -c -O2 -Wall -ansi -I../src ../src/entropy.c + +aes.o: ../src/aes.c + gcc -c -O2 -Wall -ansi -I../src ../src/aes.c + +ripemd.o: ../src/ripemd.c + gcc -c -O2 -Wall -ansi -I../src ../src/ripemd.c + +sha1.o: ../src/sha1.c + gcc -c -O2 -Wall -ansi -I../src ../src/sha1.c + +sha256.o: ../src/sha256.c + gcc -c -O2 -Wall -ansi -I../src ../src/sha256.c + +randompp.o: ../src/randompp.cpp + gcc -c -O2 -Wall -ansi -I../src ../src/randompp.cpp + + +.SUFFIXES: .o .c .cpp + +.c: + gcc -O2 -Wall -ansi -I../src -o $@ $< flint.o + +.cpp: + gcc -O2 -Wall -ansi -I../src -o $@ $< flint.o flintpp.o -lstdc++ + diff --git a/flint/test/Makefile.asm b/flint/test/Makefile.asm new file mode 100644 index 0000000..238fa5a --- /dev/null +++ b/flint/test/Makefile.asm @@ -0,0 +1,191 @@ +############################################################################## +# # +# Software supplement to the book "Cryptography in C and C++" # +# by Michael Welschenbach # +# # +# makefile.asm for running the FLINT/C testsuite under Unix and Linux # +# with support of assembler functions # +# Authors: Jan-Peter Wilhelms, Michael Welschenbach # +# # +# Copyright (C) 1998-2005 by Michael Welschenbach # +# Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg # +# Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA # +# Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland # +# Copyright (C) 2002-2005 by PHEI, P.R.China # +# Copyright (C) 2002-2005 by InfoBook, Korea # +# Copyright (C) 2002-2005 by Triumph Publishing, Russia # +# # +# All Rights Reserved # +# # +# The software may be used for noncommercial purposes and may be altered, # +# as long as the following conditions are accepted without any # +# qualification: # +# # +# (1) All changes to the sources must be identified in such a way that the # +# changed software cannot be misinterpreted as the original software. # +# # +# (2) The statements of copyright may not be removed or altered. # +# # +# (3) The following DISCLAIMER is accepted: # +# # +# DISCLAIMER: # +# # +# There is no warranty for the software contained in this distribution, to # +# the extent permitted by applicable law. The copyright holders provide the # +# software `as is' without warranty of any kind, either expressed or # +# implied, including, but not limited to, the implied warranty of fitness # +# for a particular purpose. The entire risk as to the quality and # +# performance of the program is with you. # +# # +# In no event unless required by applicable law or agreed to in writing # +# will the copyright holders, or any of the individual authors named in # +# the source files, be liable to you for damages, including any general, # +# special, incidental or consequential damages arising out of any use of # +# the software or out of inability to use the software (including but not # +# limited to any financial losses, loss of data or data being rendered # +# inaccurate or losses sustained by you or by third parties as a result of # +# a failure of the software to operate with any other programs), even if # +# such holder or other party has been advised of the possibility of such # +# damages. # +# # +#============================================================================# +# # +# Usage: # +# ------ # +# make w/o parameters runs the whole testsuite # +# make with one of the parameters # +# # +# rnd reg bas add sub mul kar sqr div madd msub mmul msqr shift # +# set bool iroot gcd mexp con ari chin xgcd root proot ripe sha1 # +# # +# runs the single test program denoted by the parameter. # +# # +############################################################################## + +test: rnd reg bas add sub mul kar sqr div madd msub mmul msqr shift set bool iroot gcd mexp ripe sha1 sha256 ari chin xgcd root prrt + +rnd: flint.o testrand + testrand 2> err + +reg: flint.o testreg + testreg 2>> err + +bas: flint.o testbas + testbas 2>> err + +add: flint.o testadd + testadd 2>> err + +sub: flint.o testsub + testsub 2>> err + +mul: flint.o testmul + testmul 2>> err + +kar: flint.o ../src/kmul.c testkar.c + gcc -DFLINT_ASM -Wall -ansi -O2 -I../src -L../lib -o testkar testkar.c ../src/kmul.c flint.o -lflint + testkar 2>> err + +sqr: flint.o testsqr + testsqr 2>> err + +div: flint.o testdiv + testdiv 2>> err + +madd: flint.o testmadd + testmadd 2>> err + +msub: flint.o testmsub + testmsub 2>> err + +mmul: flint.o testmmul + testmmul 2>> err + +msqr: flint.o testmsqr + testmsqr 2>> err + +shift: flint.o testshft + testshft 2>> err + +set: flint.o testset + testset 2>> err + +bool: flint.o testbool + testbool 2>> err + +iroot: flint.o testiroo + testiroo 2>> err + +gcd: flint.o testgcd + testgcd 2>> err + +mexp: flint.o testmexp + testmexp 2>> err + +con: flintpp.o flint.o testcnst + testcnst 2>> err + +ari: flintpp.o flint.o testari + testari 2>> err + +chin: flintpp.o flint.o testchin + testchin 2>> err + +xgcd: flintpp.o flint.o testxgcd + testxgcd 2>> err + +root: flintpp.o flint.o random.o entropy.o aes.o ripemd.o sha1.o randompp.o + gcc -Wall -ansi -O2 -I../src -DFLINT_ASM -L../lib -o testroot testroot.cpp random.o entropy.o aes.o ripemd.o sha1.o randompp.o flint.o flintpp.o -lflint -lstdc++ + testroot 2>> err + +prrt: flintpp.o flint.o testprrt + testprrt 2>> err + +ripe: ../src/ripemd.c testripe.c + gcc -Wall -ansi -O2 -I../src -o testripe testripe.c ../src/ripemd.c + testripe 2>> err + +sha1: ../src/sha1.c testsha1.c + gcc -Wall -ansi -O2 -I../src -o testsha1 testsha1.c ../src/sha1.c + testsha1 2>> err + +sha256: ../src/sha256.c testsha256.c + gcc -Wall -ansi -O2 -I../src -o testsha256 testsha256.c ../src/sha256.c + testsha256 2>> err + +flint.o: ../src/flint.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/flint.c + +flintpp.o: ../src/flintpp.cpp + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/flintpp.cpp + +random.o: ../src/random.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/random.c + +entropy.o: ../src/entropy.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/entropy.c + +aes.o: ../src/aes.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/aes.c + +ripemd.o: ../src/ripemd.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/ripemd.c + +sha1.o: ../src/sha1.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/sha1.c + +sha256.o: ../src/sha256.c + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/sha256.c + +randompp.o: ../src/randompp.cpp + gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM ../src/randompp.cpp + + +.SUFFIXES: .o .c .cpp + +.c: + gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o $@ $< flint.o -lflint + +.cpp: + gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o $@ $< flint.o flintpp.o -lflint -lstdc++ + diff --git a/flint/test/testadd.c b/flint/test/testadd.c new file mode 100644 index 0000000..65fe1ca --- /dev/null +++ b/flint/test/testadd.c @@ -0,0 +1,398 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testadd.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int komm_test (unsigned int nooftests); +static int ass_test (unsigned int nooftests); +static int addsub_test (unsigned int nooftests); +static int uadd_test (unsigned int nooftests); +static int inc_test (unsigned int nooftests); +static int overflow_test (void); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + komm_test (1000); + ass_test (1000); + addsub_test (1000); + uadd_test (10000); + inc_test (1000); + overflow_test (); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int komm_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Tests with neutral element and commutative law...\n"); + + /* Test with 0 */ + + setzero_l (r1_l); + setzero_l (r2_l); + add_l (r1_l, r2_l, r3_l); + check (r3_l, nul_l, i++, __LINE__); + + setzero_l (r1_l); + setmax_l (r2_l); + add_l (r1_l, r2_l, r3_l); + add_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i++, __LINE__); + check (r4_l, r2_l, i++, __LINE__); + + setzero_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + add_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + add_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + add_l (r1_l, r1_l, r1_l); + add_l (r2_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r1_l); + add_l (r1_l, r2_l, r1_l); + add_l (r10_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r2_l); + add_l (r1_l, r2_l, r2_l); + add_l (r1_l, r10_l, r3_l); + check (r2_l, r3_l, i, __LINE__); + } + + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + add_l (r2_l, r1_l, r4_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Tests with associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + add_l (r1_l, r2_l, r4_l); + add_l (r3_l, r4_l, r5_l); + + add_l (r2_l, r3_l, r4_l); + add_l (r1_l, r4_l, r6_l); + + check (r5_l, r6_l, i, __LINE__); + } + return 0; +} + + +static int addsub_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Tests with addition and subtraction as inverse operations...\n"); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + sub_l (r3_l, r2_l, r4_l); + sub_l (r3_l, r1_l, r5_l); + check (r4_l, r1_l, i, __LINE__); + check (r5_l, r2_l, i, __LINE__); + } + return 0; +} + + +static int uadd_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT n; + CLINT n_l; + + printf ("Test uadd_l()...\n"); + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + n = 0; + uadd_l (r1_l, n, r3_l); + check (r3_l, r1_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + n = usrand64_l (); + u2clint_l (n_l, n); + uadd_l (r1_l, n, r1_l); + add_l (r2_l, n_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + n = usrand64_l (); + u2clint_l (n_l, n); + uadd_l (r1_l, n, r3_l); + add_l (r1_l, n_l, r4_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int inc_test (unsigned int nooftests) +{ + unsigned int i = 1, j, k; + CLINT k_l; + + printf ("Test inc_l()...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + inc_l (r1_l); + check (r1_l, one_l, i++, __LINE__); + + /* Test Overrun word boundary */ + + u2clint_l (r1_l, 0xffff); + cpy_l (r2_l, r1_l); + inc_l (r2_l); + if (ld_l (r2_l) != 17) + { + fprintf (stderr, "Error in inc_l(): ld_l(r1_l) != 17 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("++r1_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + add_l (r1_l, one_l, r1_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + cpy_l (r3_l, r1_l); + k = usrand64_l () % 1001; + u2clint_l (k_l, ( USHORT ) k); + for (j = 1; j <= k; j++) + { + inc_l (r1_l); + add_l (r2_l, one_l, r2_l); + } + add_l (r3_l, k_l, r3_l); + check (r1_l, r2_l, i, __LINE__); + check (r2_l, r3_l, i, __LINE__); + } + return 0; +} + + +static int overflow_test (void) +{ + printf ("Test Overflow in add_l()...\n"); + + setmax_l (r0_l); + sub_l (r0_l, one_l, r1_l); + + if (E_CLINT_OFL != add_l (r0_l, one_l, r2_l)) /* max_l + 1 = 0 */ + { + fprintf (stderr, "Error in add_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (nul_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + if (E_CLINT_OFL != add_l (r0_l, r0_l, r2_l)) /* max_l + max_l = max_l - 1 */ + { + fprintf (stderr, "Error in add_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); /*lint !e666*/ + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in add_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); /*lint !e666*/ + disperr_l ("b_l = ", b_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testaes.c b/flint/test/testaes.c new file mode 100644 index 0000000..7e9a0be --- /dev/null +++ b/flint/test/testaes.c @@ -0,0 +1,832 @@ +/******************************************************************************/ +/* */ +/* Functions for arithmetic and number theory with large integers in C */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testaes.c Revision: 20.08.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "aes.h" +#include "flint.h" + +#if defined __IBMC__ || defined _MSC_VER +#define MODE "r" +#else +#define MODE "rt" +#endif + +#ifndef _MAX_PATH +#define _MAX_PATH 80 +#endif + +static int testmc (char *fname); +static int testnkt_vkt (char *fname); +static void testcbc (void); +static int scan_bytes (char *Linep, char *buffer, int noofbytes); +static void TestCmp (char * test, char * aesres, char * ref, int Length); + +char *fnames[]={ + "cbcmd44.txt", + "cbcmd46.txt", + "cbcmd48.txt", + "cbcmd64.txt", + "cbcmd66.txt", + "cbcmd68.txt", + "cbcmd84.txt", + "cbcmd86.txt", + "cbcmd88.txt", + + "cbcme44.txt", + "cbcme46.txt", + "cbcme48.txt", + "cbcme64.txt", + "cbcme66.txt", + "cbcme68.txt", + "cbcme84.txt", + "cbcme86.txt", + "cbcme88.txt", + + "ecbmd44.txt", + "ecbmd46.txt", + "ecbmd48.txt", + "ecbmd64.txt", + "ecbmd66.txt", + "ecbmd68.txt", + "ecbmd84.txt", + "ecbmd86.txt", + "ecbmd88.txt", + + "ecbme44.txt", + "ecbme46.txt", + "ecbme48.txt", + "ecbme64.txt", + "ecbme66.txt", + "ecbme68.txt", + "ecbme84.txt", + "ecbme86.txt", + "ecbme88.txt", + + "ecbnk44.txt", + "ecbnk46.txt", + "ecbnk48.txt", + "ecbnk64.txt", + "ecbnk66.txt", + "ecbnk68.txt", + "ecbnk84.txt", + "ecbnk86.txt", + "ecbnk88.txt", + + "ecbnt44.txt", + "ecbnt46.txt", + "ecbnt48.txt", + "ecbnt64.txt", + "ecbnt66.txt", + "ecbnt68.txt", + "ecbnt84.txt", + "ecbnt86.txt", + "ecbnt88.txt", + + "ecbvk44.txt", + "ecbvk46.txt", + "ecbvk48.txt", + "ecbvk64.txt", + "ecbvk66.txt", + "ecbvk68.txt", + "ecbvk84.txt", + "ecbvk86.txt", + "ecbvk88.txt", + + "ecbvt44.txt", + "ecbvt46.txt", + "ecbvt48.txt", + "ecbvt64.txt", + "ecbvt66.txt", + "ecbvt68.txt", + "ecbvt84.txt", + "ecbvt86.txt", + "ecbvt88.txt", + "end-of-list" +}; + +UCHAR IV1[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +UCHAR PT1[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +UCHAR KEY1[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +UCHAR CT1[] = {0x66, 0xE9, 0x4B, 0xD4, 0xEF, 0x8A, 0x2C, 0x3B, + 0x88, 0x4C, 0xFA, 0x59, 0xCA, 0x34, 0x2B, 0x2E, + 0xF7, 0x95, 0xBD, 0x4A, 0x52, 0xE2, 0x9E, 0xD7, + 0x13, 0xD3, 0x13, 0xFA, 0x20, 0xE9, 0x8D, 0xBC, + 0xA1, 0x0C, 0xF6, 0x6D, 0x0F, 0xDD, 0xF3, 0x40, + 0x53, 0x70, 0xB4, 0xBF, 0x8D, 0xF5, 0xBF, 0xB3, + 0x47, 0xC7, 0x83, 0x95, 0xE0, 0xD8, 0xAE, 0x21, + 0x94, 0xDA, 0x0A, 0x90, 0xAB, 0xC9, 0x88, 0x8A}; + +UCHAR DCT1[] = {0x14, 0x0F, 0x0F, 0x10, 0x11, 0xB5, 0x22, 0x3D, + 0x79, 0x58, 0x77, 0x17, 0xFF, 0xD9, 0xEC, 0x3A, + 0x14, 0x0F, 0x0F, 0x10, 0x11, 0xB5, 0x22, 0x3D, + 0x79, 0x58, 0x77, 0x17, 0xFF, 0xD9, 0xEC, 0x3A, + 0x14, 0x0F, 0x0F, 0x10, 0x11, 0xB5, 0x22, 0x3D, + 0x79, 0x58, 0x77, 0x17, 0xFF, 0xD9, 0xEC, 0x3A, + 0x14, 0x0F, 0x0F, 0x10, 0x11, 0xB5, 0x22, 0x3D, + 0x79, 0x58, 0x77, 0x17, 0xFF, 0xD9, 0xEC, 0x3A}; + + +UCHAR IV2[] = {0x8A, 0x05, 0xFC, 0x5E, 0x09, 0x5A, 0xF4, 0x84, + 0x8A, 0x08, 0xD3, 0x28, 0xD3, 0x68, 0x8E, 0x3D}; + +UCHAR PT2[] = {0x20, 0x4F, 0x17, 0xE2, 0x44, 0x43, 0x81, 0xF6, + 0x11, 0x4F, 0xF5, 0x39, 0x34, 0xC0, 0xBC, 0xD3, + 0x20, 0x4F, 0x17, 0xE2, 0x44, 0x43, 0x81, 0xF6, + 0x11, 0x4F, 0xF5, 0x39, 0x34, 0xC0, 0xBC, 0xD3, + 0x20, 0x4F, 0x17, 0xE2, 0x44, 0x43, 0x81, 0xF6, + 0x11, 0x4F, 0xF5, 0x39, 0x34, 0xC0, 0xBC, 0xD3, + 0x20, 0x4F, 0x17, 0xE2, 0x44, 0x43, 0x81, 0xF6, + 0x11, 0x4F, 0xF5, 0x39, 0x34, 0xC0, 0xBC, 0xD3}; + +UCHAR KEY2[] = {0x8A, 0x05, 0xFC, 0x5E, 0x09, 0x5A, 0xF4, 0x84, + 0x8A, 0x08, 0xD3, 0x28, 0xD3, 0x68, 0x8E, 0x3D}; + +UCHAR CT2[] = {0xFA, 0x59, 0x05, 0x35, 0xBA, 0x55, 0xAC, 0x78, + 0x73, 0x56, 0x8A, 0xA5, 0x86, 0x80, 0xB0, 0x22, + 0x29, 0x89, 0x0C, 0x50, 0x3C, 0x63, 0x17, 0xF2, + 0xB5, 0x75, 0x0F, 0x52, 0x65, 0x15, 0xE8, 0xF5, + 0x3E, 0xB0, 0x3A, 0x59, 0x41, 0x15, 0x88, 0x04, + 0x3F, 0xE4, 0x04, 0x17, 0x96, 0x0E, 0xB1, 0x6A, + 0x52, 0x39, 0x48, 0x2D, 0x08, 0xE8, 0xC6, 0x1D, + 0x60, 0x09, 0x38, 0xA9, 0xC5, 0xE6, 0x8B, 0x06}; + +UCHAR DCT2[] = {0x25, 0xFE, 0x2D, 0xD1, 0xC8, 0xF8, 0xB9, 0xBA, + 0x0C, 0xAC, 0x3E, 0x0D, 0xD2, 0xF9, 0x9E, 0xB5, + 0x8F, 0xB4, 0xC6, 0x6D, 0x85, 0xE1, 0xCC, 0xC8, + 0x97, 0xEB, 0x18, 0x1C, 0x35, 0x51, 0xAC, 0x5B, + 0x8F, 0xB4, 0xC6, 0x6D, 0x85, 0xE1, 0xCC, 0xC8, + 0x97, 0xEB, 0x18, 0x1C, 0x35, 0x51, 0xAC, 0x5B, + 0x8F, 0xB4, 0xC6, 0x6D, 0x85, 0xE1, 0xCC, 0xC8, + 0x97, 0xEB, 0x18, 0x1C, 0x35, 0x51, 0xAC, 0x5B}; + +int TESTBLOCK = 0; + +int main (int argc, char *argv[]) +{ + char testfile[_MAX_PATH], testpath[_MAX_PATH], *lp; + int i = 0; + + printf ("Testmodule %s, compiled for aes.c as part of FLINT/C-Library\n", __FILE__); + + strcpy (testpath, "testvals/") ; + if (argc > 1) + { + while (--argc > 0 && (*++argv)[0] == '-' ) + { + lp = *argv+1; + switch (*lp) + { + case 'b': + TESTBLOCK = 1; + break; + + case 't': + if (++lp != NULL) + { + strcpy (testpath, lp); + strcat (testpath, "/"); + } + break; + + default: + printf ("Usage: testaes [-b][-t[drive:]path (path of testdata)]\n"); + exit (-1); + } + } + } + + if (TESTBLOCK) + { + printf ("Testing block functions\n"); + } + else + { + printf ("Testing state functions\n"); + } + + while (!strstr (fnames[i], "end-of-list")) + { + strcpy (testfile, testpath); + strcat (testfile, fnames[i]); + + if (strstr (fnames[i], "ecbm") != NULL || + strstr (fnames[i], "cbcm") != NULL) + { + testmc (testfile); + } + else + { + testnkt_vkt (testfile); + } + + ++i; + } + + testcbc (); +} + + +static int testmc (char *fname) +{ + FILE *filep; + AESWORKSPACE ws; + AESKEYSCHED ks; + AESXPKEY ExpandedKey, InvExpandedKey; + + char Line[200], *LinePtr; + UCHAR KeyBuff[32], InBuff[32], OutBuff[32], RefBuff[32]; + UCHAR IVBuff[32], *IVPtr; + int mode, direction, BlockLength, KeyLength, testno, i, j, error; + + + if (strstr (fname, "ecb")) + { + mode = AES_ECB; + } + else + { + mode = AES_CBC; + } + + filep = fopen (fname, MODE); + if (filep == NULL) + { + fprintf (stderr, "%s can not be opened for reading - aborting\n", fname); + exit (1); + } + + /* Read Blocklength */ + do + { + fgets (Line, 200, filep); + } + while (strstr (Line, "BLOCKSIZE") == NULL); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &BlockLength); +#ifdef TESTAES_TEST + printf ("BlockLength = %ld\n", BlockLength); +#endif + + /* Read Keylength */ + do + { + fgets (Line, 200, filep); + } + while (strstr (Line, "KEYSIZE") == NULL); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &KeyLength); +#ifdef TESTAES_TEST + printf ("KeyLength = %ld\n", KeyLength); +#endif + + /* Loop over file */ + while (!feof (filep)) + { + /* Read test number */ + do + { + fgets (Line, 200, filep); + } + while (!feof (filep) && (strstr (Line, "TEST") == NULL)); + + if (feof (filep)) + { + break; + } + + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &testno); +#ifdef TESTAES_TEST + printf ("Test = %ld\n", testno); +#endif + + /* Read key */ + do + { + fgets (Line, 200, filep); + } + while (strstr (Line, "KEY") == NULL); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + + scan_bytes (LinePtr, KeyBuff, KeyLength/8); + + /* Read IV if present */ + fgets (Line, 200, filep); + if (strstr (Line, "IV") != NULL) + { + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + + scan_bytes (LinePtr, IVBuff, BlockLength/8); + IVPtr = IVBuff; + } + else + { + if (mode == AES_CBC) + { + fprintf (stderr, "aestest: Missing IV for CBC mode in test no. %d of file %s\n", testno, fname); + exit (-1); + } + + IVPtr = NULL; + } + + /* Read PT or CT */ + /* Line already in buffer ? */ + if (IVPtr != NULL) + { + fgets (Line, 200, filep); + } + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + scan_bytes (LinePtr, InBuff, BlockLength/8); + if (strstr (Line, "PT") != NULL) + { + direction = AES_ENC; + } + else + { + if (strstr (Line, "CT") != NULL) + { + direction = AES_DEC; + } + else + { + fprintf (stderr, "Read error while searching for CT or PT in test %d of file %s\n", + testno, fname); + exit (-1); + } + } + + fgets (Line, 200, filep); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + scan_bytes (LinePtr, RefBuff, BlockLength/8); + if ((strstr (Line, "PT") == NULL) && (strstr (Line, "CT") == NULL)) + { + fprintf (stderr, "Read error while searching for CT or PT in test %d of file %s\n", + testno, fname); + exit (-1); + } + + switch (mode) + { + case AES_CBC: + if (direction == AES_ENC) + { + for (i = 0; i < 10000; i++) + { + for (j = 0; j < BlockLength/8; j++) + { + InBuff[j] ^= IVBuff[j]; + } + + if (TESTBLOCK) + { + AESEncryptBlock (OutBuff, InBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_ENC); + AESCrypt (OutBuff, &ws, &ks, InBuff, BlockLength/8); + } + + memcpy (InBuff, IVBuff, BlockLength/8); + memcpy (IVBuff, OutBuff, BlockLength/8); + } + } + else + { + for (i = 0; i < 10000; i++) + { + if (TESTBLOCK) + { + AESDecryptBlock (OutBuff, InBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_DEC); + AESCrypt (OutBuff, &ws, &ks, InBuff, BlockLength/8); + } + + for (j = 0; j < BlockLength/8; j++) + { + OutBuff[j] ^= IVBuff[j]; + } + memcpy (IVBuff, InBuff, BlockLength/8); + memcpy (InBuff, OutBuff, BlockLength/8); + } + } + break; + + case AES_ECB: + if (direction == AES_ENC) + { + for (i = 0; i < 10000; i++) + { + if (TESTBLOCK) + { + AESEncryptBlock (OutBuff, InBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_ENC); + AESCrypt (OutBuff, &ws, &ks, InBuff, BlockLength/8); + } + + memcpy (InBuff, OutBuff, BlockLength/8); + } + } + else + { + for (i = 0; i < 10000; i++) + { + if (TESTBLOCK) + { + AESDecryptBlock (OutBuff, InBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_DEC); + AESCrypt (OutBuff, &ws, &ks, InBuff, BlockLength/8); + } + + memcpy (InBuff, OutBuff, BlockLength/8); + } + } + break; + } + + if (!memcmp (OutBuff, RefBuff, BlockLength/8)) + { + printf ("Test %d of file %s OK\n", testno, fname); + } + else + { + printf ("aestest: error in test %d of file %s\n", testno, fname); + fprintf (stderr, "OutBuff = "); + for (i = 0; i < BlockLength/8; i++) + fprintf (stderr, "%.2X", OutBuff[i]); + fprintf (stderr, "\n"); + + fprintf (stderr, "RefBuff = "); + for (i = 0; i < BlockLength/8; i++) + fprintf (stderr, "%.2X", RefBuff[i]); + fprintf (stderr, "\n"); + + exit (-1); + } + } + + fclose (filep); + return 0; +} + + +static int testnkt_vkt (char *fname) +{ + FILE *filep; + AESWORKSPACE ws; + AESKEYSCHED ks; + AESXPKEY ExpandedKey, InvExpandedKey; + + char Line[200], *LinePtr; + UCHAR KeyBuff[32], InBuff[32], OutBuff[32], RefBuff[32]; + int direction, BlockLength, KeyLength, testno; + + filep = fopen (fname, MODE); + if (filep == NULL) + { + fprintf (stderr, "%s can not be opened for reading - aborting\n", fname); + exit (1); + } + + /* Read Blocklength */ + do + { + fgets (Line, 200, filep); + } + while (strstr (Line, "BLOCKSIZE") == NULL); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &BlockLength); +#ifdef TESTAES_TEST + printf ("BlockLength = %ld\n", BlockLength); +#endif + + /* Read Keylength */ + do + { + fgets (Line, 200, filep); + } + while (strstr (Line, "KEYSIZE") == NULL); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &KeyLength); +#ifdef TESTAES_TEST + printf ("KeyLength = %ld\n", KeyLength); +#endif + + /* Read Key or PT */ + do + { + fgets (Line, 200, filep); + } + while ((strstr (Line, "PT") == NULL) && (strstr (Line, "KEY") == NULL)); + + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + + if (strstr (Line, "PT") != NULL) + { + scan_bytes (LinePtr, InBuff, BlockLength/8); + } + else + { + if (strstr (Line, "KEY") != NULL) + { + scan_bytes (LinePtr, KeyBuff, KeyLength/8); + } + else + { + fprintf (stderr, "Read error while searching for PT or Key in file %s\n", fname); + exit (-1); + } + } + + /* Loop over test file */ + while (!feof (filep)) + { + /* Read test number */ + do + { + fgets (Line, 200, filep); + } + while (!feof (filep) && (strstr (Line, "TEST") == NULL)); + + if (feof (filep)) + { + break; + } + + if (strstr (Line, "TEST") != NULL) + { + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + sscanf (LinePtr, "%ld", &testno); + } + else + { + fprintf (stderr, "Read error while searching for test no. in file %s\n", fname); + exit (-1); + } + +#ifdef TESTAES_TEST + printf ("Test = %ld\n", testno); +#endif + + /* Read PT or Key */ + fgets (Line, 200, filep); + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + if (strstr (Line, "KEY") != NULL) + { + scan_bytes (LinePtr, KeyBuff, KeyLength/8); + } + else + { + if (strstr (Line, "PT") != NULL) + { + scan_bytes (LinePtr, InBuff, BlockLength/8); + } + else + { + fprintf (stderr, "Read error while searching for Key or PT in test %d of file %s\n", + testno, fname); + exit (-1); + } + } + + /* Read CT */ + fgets (Line, 200, filep); + if (strstr (Line, "CT") == NULL) + { + fprintf (stderr, "Read error while searching for CT in test %d of file %s\n", + testno, fname); + exit (-1); + } + + LinePtr = strchr (Line, '='); + while (!isxdigit (*(++LinePtr))) {}; + scan_bytes (LinePtr, RefBuff, BlockLength/8); + + if (TESTBLOCK) + { + AESEncryptBlock (OutBuff, InBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_ENC); + AESCrypt (OutBuff, &ws, &ks, InBuff, BlockLength/8); + } + + if (!memcmp (OutBuff, RefBuff, BlockLength/8)) + { + printf ("Test %d of file %s OK\n", testno, fname); + } + else + { + printf ("Error in test %d of file %s\n", testno, fname); + exit (-1); + } + + if (TESTBLOCK) + { + AESDecryptBlock (RefBuff, OutBuff, KeyBuff, KeyLength, BlockLength); + } + else + { + AESInit (&ws, AES_ECB, BlockLength, NULL, &ks, KeyBuff, KeyLength, AES_DEC); + AESCrypt (RefBuff, &ws, &ks, OutBuff, BlockLength/8); + } + + if (!memcmp (RefBuff, InBuff, BlockLength/8)) + { + printf ("Test %d of file %s OK\n", testno, fname); + } + else + { + printf ("Error in reverse test %d of file %s\n", testno, fname); + exit (-1); + } + } + + fclose (filep); + return 0; +} + + +static int scan_bytes (char *Linep, char *buffer, int noofbytes) +{ + int i, temp; + int fields_read; + + for (i = 0; i < noofbytes; i++) + { + fields_read = sscanf (Linep, "%2X", &temp); + Linep++; + Linep++; + if (fields_read != 1) + { + fprintf (stderr, "Read error in function scan_bytes\n"); + exit (1); + } + buffer[i] = temp; + } + + return (0); +} + + +static void testcbc (void) +{ + AESWORKSPACE ws; + AESKEYSCHED ks; + UCHAR cbuff[1024], tbuff[1024]; + + printf ("Testing CBC-Mode with multiple message blocks:\n"); + + AESInit (&ws, AES_CBC, 128, IV1, &ks, KEY1, 128, AES_ENC); + AESCrypt (cbuff, &ws, &ks, PT1, sizeof (PT1) - 32); + AESCrypt (cbuff+sizeof (PT1)-32, &ws, &ks, PT1+sizeof (PT1)-32, 32); + + TestCmp ("enccbc1 (CBC)", cbuff, CT1, sizeof (PT2)); + + AESInit (&ws, AES_CBC, 128, IV1, &ks, KEY1, 128, AES_DEC); + AESCrypt (tbuff, &ws, &ks, cbuff, 32); + AESCrypt (tbuff+32, &ws, &ks, cbuff+32, sizeof (PT1) - 32); + + TestCmp ("deccbc1 (CBC)", tbuff, PT1, sizeof (PT1)); + + AESInit (&ws, AES_CBC, 128, IV1, &ks, KEY1, 128, AES_DEC); + AESCrypt (cbuff, &ws, &ks, PT1, sizeof (PT1)); + + TestCmp ("deccbc2 (CBC)", cbuff, DCT1, sizeof (PT1)); + + AESInit (&ws, AES_CBC, 128, IV2, &ks, KEY2, 128, AES_ENC); + AESCrypt (cbuff, &ws, &ks, PT2, sizeof (PT2) - 32); + AESCrypt (cbuff+sizeof (PT2)-32, &ws, &ks, PT2+sizeof (PT2)-32, 32); + + TestCmp ("enccbc2 (CBC)", cbuff, CT2, sizeof (PT2)); + + AESInit (&ws, AES_CBC, 128, IV2, &ks, KEY2, 128, AES_DEC); + AESCrypt (tbuff, &ws, &ks, cbuff, 32); + AESCrypt (tbuff+32, &ws, &ks, cbuff+32, sizeof (PT2) - 32); + + TestCmp ("deccbc3 (CBC)", tbuff, PT2, sizeof (PT2)); + + AESInit (&ws, AES_CBC, 128, IV2, &ks, KEY2, 128, AES_DEC); + AESCrypt (cbuff, &ws, &ks, PT2, sizeof (PT2)); + TestCmp ("deccbc4 (CBC)", cbuff, DCT2, sizeof (PT2)); +} + + +static void +TestCmp (char * test, char * aesres, char * ref, int Length) +{ + int i; + + if (memcmp (aesres, ref, Length)) + { + printf ("AES %s: Error!\n", test); + printf ("Computed value: "); + for (i = 0 ; i < Length ; i++) + { + printf ("%2.2x", aesres[i] & 0x00ff); + } + + printf ("\nReference value: "); + for (i = 0 ; i < Length; i++) + { + printf ("%2.2x", ref[i] & 0x00ff); + } + printf ("\n"); + /* exit (-1); */ + } + else + { + printf ("AES %s OK\n", test); + } +} + + + + + + diff --git a/flint/test/testari.cpp b/flint/test/testari.cpp new file mode 100644 index 0000000..0735ca4 --- /dev/null +++ b/flint/test/testari.cpp @@ -0,0 +1,563 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module testari.cpp Revision: 10.07.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include "flintpp.h" + +static void report_error (LINT&, LINT&, LINT&, LINT&, int); +static void report_error (LINT&, LINT&, LINT&, int); +static void report_error (LINT&, LINT&, int); +static void testadd (int); +static void testsub (int); +static void testmul (int); +static void testsqr (int); +static void testdivr (int); +static void testmequ (int); +static void testmexp (int); +static void testfswap (int); +static int testset (int); +static int testshift (int); +static int testmax (void); + +#define MAXTESTLEN CLINTMAXBIT/2 +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) + +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +int main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + testadd (1000); + testsub (1000); + testmul (1000); + testsqr (1000); + testdivr (1000); + testmequ (1000); + testmexp (10); + testfswap (1000); + testset (1000); + testshift (1000); + testmax (); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static void testadd (int no_of_tests) +{ + LINT a, b, c, d, e, m; + int i; + + cout << "Testfunction testadd() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if ((( e = ( a + b )) != ( b + a )) || + ( e != c.add (b)) || + ( e != d.add (a)) || + ( e != add (a, b)) || + ( e != add (b, a))) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if (( a += b ) != ( c += d )) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + do + { + m = randl (CLINTRNDLN); + } while (0 == m); + + if ((( e = (( a + b ) % m )) != ( b + a ) % m ) || + ( e != c.madd (b, m)) || + ( e != d.madd (a, m)) || + ( e != madd (a, b, m)) || + ( e != madd (b, a, m))) + report_error (a, b, c, d, __LINE__); + } +} + + +static void testsub (int no_of_tests) +{ + LINT a, b, c, d, e, m; + int i; + + cout << "Testfunction testsub() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if ((( e = ( a - b )) != 0 - ( b - a )) || + ( e != c.sub (b)) || + ( e != sub (a, b))) + { + cerr << "a - b = " << a - b; + cerr << "0 - (b - a) = " << 0 - ( b - a ); + cerr << "sub(a,b) = " << sub (a, b); + cerr << "a.sub(b) = " << a.sub (b); + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if (a < b) + { + fswap (a, b); + fswap (c, d); + } + + if (( a -= b ) != ( c -= d )) + report_error (a, b, c, d, __LINE__); + + c = ( a = randl (CLINTRNDLN)); + d = ( b = randl (CLINTRNDLN)); + do + { + m = randl (CLINTRNDLN); + } while (0 == m); + + if (c.msub (b, m) != msub (a, b, m)) + report_error (a, b, c, d, __LINE__); + } + } +} + + +static void testmul (int no_of_tests) +{ + LINT a, b, c, d, e, m; + int i; + + cout << "Testfunction testmul() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if ((( e = ( a * b )) != ( b * a )) || + ( e != c.mul (b)) || + ( e != d.mul (a)) || + ( e != mul (a, b)) || + ( e != mul (b, a))) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + if (( a *= b ) != ( c *= d )) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + d = b = randl (CLINTRNDLN); + do + { + m = randl (CLINTRNDLN); + } while (0 == m); + + if ((( e = (( a * b ) % m )) != ( b * a ) % m ) || + ( e != c.mmul (b, m)) || + ( e != d.mmul (a, m)) || + ( e != mmul (a, b, m)) || + ( e != mmul (b, a, m))) + report_error (a, b, c, d, __LINE__); + } +} + + +static void testsqr (int no_of_tests) +{ + LINT a, b, c, d, e, m; + int i; + + cout << "Testfunction testsqr() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + a = randl (CLINTRNDLN); + b = a; + if (( b * b ) != a.sqr ()) + report_error (a, b, c, d, __LINE__); + + a = randl (CLINTRNDLN); + b = a; + do + { + m = randl (CLINTRNDLN); + } while (0 == m); + + if (( b = ( msqr (b, m))) != a.msqr (m)) + report_error (a, b, c, d, __LINE__); + } +} + + +static void testdivr (int no_of_tests) +{ + LINT a, b, c, d, e, r, r1, r2; + int i; + + cout << "Testfunction testdivr() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + c = a = randl (CLINTRNDLN); + do + { + d = b = randl (CLINTRNDLN); + } while (0 == b); + + if ((( e = ( a / b )) != divr (a, b, r)) || ( e != c.divr (b, r))) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + do + { + d = b = randl (CLINTRNDLN); + } while (0 == b); + if (( a /= b ) != ( c /= d )) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + do + { + d = b = randl (CLINTRNDLN); + } while (0 == b); + + divr (a, b, r1); + a.divr (b, r2); + if ((( e = ( c % d )) != r1 ) || ( e != r2 )) + report_error (a, b, c, d, __LINE__); + + c = a = randl (CLINTRNDLN); + do + { + d = b = randl (CLINTRNDLN); + } while (0 == b); + if (( a %= b ) != ( c %= d )) + report_error (a, b, c, d, __LINE__); + } +} + + +static void testmequ (int no_of_tests) +{ + LINT a, b, k, m; + int i; + + cout << "Testfunction testmequ() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + a = randl (CLINTRNDLN); + b = randl (CLINTRNDLN); + do + { + m = randl (CLINTRNDLN); + } + while (m == 0); + + if ((mequ (a, b, m) && !(a % m == b % m)) || (!mequ (a, b, m) && (a % m == b % m))) + report_error (a, b, m, __LINE__); + + if ((a.mequ (b, m) && !(a % m == b % m)) || (!a.mequ (b, m) && (a % m == b % m))) + report_error (a, b, m, __LINE__); + } + + for (i = 1; i < no_of_tests; i++) + { + + b = randl (CLINTRNDLN); + do + { + k = root (randl (CLINTRNDLN)); + m = root (randl (CLINTRNDLN)); + } + while (m == 0 || k == 0); + + a = k * m + b; + + if ((mequ (a, b, m) && !(a % m == b % m)) || (!mequ (a, b, m) && (a % m == b % m))) + report_error (a, b, m, __LINE__); + + if ((a.mequ (b, m) && !(a % m == b % m)) || (!a.mequ (b, m) && (a % m == b % m))) + report_error (a, b, m, __LINE__); + } +} + + +static void testmexp (int no_of_tests) +{ + LINT a, b, c, d, e, f, g, m; + USHORT u; + int i; + + cout << "Testfunction testmexp() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + c = a = randl (CLINTRNDLN); + e = b = randl (CLINTRNDLN); + m = randl (CLINTRNDLN) | 1; + + if ((( d = mexp (a, b, m)) != mexp5m (a, b, m)) || ( d != mexpkm (a, b, m))) + report_error (a, b, m, d, __LINE__); + + + f = g = c = a = randl (CLINTRNDLN); + b = randl (CLINTRNDLN); + m = randl (CLINTRNDLN) | 1; + + if ((( d = a.mexp (b, m)) != c.mexp (b, m)) || + (d != f.mexp5m (b, m)) || + (d != g.mexpkm (b, m))) + report_error (a, b, m, d, __LINE__); + + c = a = randl (CLINTRNDLN); + e = u = usrand64_l(); + if (a.mexp (u, m) != (d = mexp (c, e, m)) || + (d != mexp (c, u, m))) + report_error (a, b, m, d, __LINE__); + + a = randl (CLINTRNDLN); + e = u = usrand64_l(); + if (mexp (u, a, m) != (d = mexp (e, a, m))) + report_error (a, e, m, d, __LINE__); + + c = a = randl (CLINTRNDLN); + e = u = usrand64_l () % 512; + if (a.mexp2 (u, m) != (d = mexp2 (c, u, m))) + report_error (a, e, m, d, __LINE__); + } +} + + +static void testfswap (int no_of_tests) +{ + LINT a, b, c, d; + int i; + + cout << "Testfunction testfswap() ..." << endl; + + for (i = 1; i < no_of_tests; i++) + { + a = c = randl (CLINTRNDLN); + b = d = randl (CLINTRNDLN); + a.fswap (b); + if (( a != d ) || ( b != c )) + report_error (a, b, d, c, __LINE__); + fswap (a, b); + if (( a != c ) || ( b != d )) + report_error (a, b, c, d, __LINE__); + } +} + + +static int testset (int no_of_tests) +{ + LINT s = 0, t; + unsigned long pos; + + cout << "Testfunction testset() ..." << endl; + + for (int i = 0; i < no_of_tests; i++) + { + s = randl (ulrand64_l () % CLINTMAXBIT); + pos = ulrand64_l () % CLINTMAXBIT; + t = s; + s.setbit (pos); + + if (!s.testbit (pos)) + { + cerr << "Error in setbit, testbit:" << endl << s << endl << "Pos = " << pos << endl; + exit (1); + } + s.clearbit (pos); + + if (s.testbit (pos)) + { + cerr << "Error in clearbit, testbit:" << endl << s << endl << "Pos = " << pos << endl; + exit (1); + } + + if (t.testbit (pos)) + t.clearbit (pos); + + if (s != t) + { + cerr << "Error in setbit, clearbit:" << endl << s << endl << "Pos = " << pos << endl; + exit (1); + } + } + return 0; +} + + +static int testshift (int no_of_tests) +{ + LINT s = 0, t; + unsigned long pos, shft; + + cout << "Testfunction testshift() ..." << endl; + + s.setbit (CLINTMAXBIT - 1); + + t = s; + t >>= ( CLINTMAXBIT - 1 ); + if (t != 1 || t != ( s >> ( CLINTMAXBIT - 1 ))) + { + cerr << "Error in shift: t != 1 || t != s" << endl << "t = " << t << endl; + exit (1); + } + + if (t << ( CLINTMAXBIT - 1 ) != s || ( t <<= ( CLINTMAXBIT - 1 )) != s) + { + cerr << "Error in shift: t != s" << endl << "t = " << t << endl; + exit (1); + } + + + for (int i = 0; i < no_of_tests; i++) + { + s = 0; + pos = ulrand64_l () % CLINTMAXBIT; + shft = ulrand64_l () % ( CLINTMAXBIT - pos ); + + s.setbit (pos); + + t = s << shft; + s <<= shft; + if (!s.testbit (pos + shft) || s != t) + { + cerr << "Error in shift:" << endl << s << endl << "pos = " << pos << endl; + cerr << "pos + shft = " << pos + shft << endl; + exit (1); + } + + t = s >> shft; + s >>= shft; + + if (!s.testbit (pos) || s != t) + { + cerr << "Error in shift:" << endl << s << endl << "pos = " << pos << endl; + cerr << "pos + shft = " << pos + shft << endl; + exit (1); + } + } + return 0; +} + + +static int testmax (void) +{ + cout << "Testfunction testmax() ..." << endl; + + LINT a = randl (ulrand64_l () % CLINTMAXBIT); + LINT b = randl (ulrand64_l () % CLINTMAXBIT); + + if (a > b) + fswap (a, b); + + if (( min (a, b) != a ) || ( max (a, b) != b )) + { + cerr << "Error in min or max before line __LINE__" << endl; + exit (1); + } + + a = 1; + b = 2; + + if (( min (a, LINT (2)) != 1 ) || ( max (LINT (1), b) != 2 )) + { + cerr << "Error in min or max before line __LINE__" << endl; + exit (1); + } + return 0; +} + + + +static void report_error (LINT& a, LINT& b, LINT& c, LINT& d, int line) +{ + cerr << "Error in line " << line << endl; + cerr << "a = " << a << endl; + cerr << "b = " << b << endl; + cerr << "c = " << c << endl; + cerr << "d = " << d << endl; + abort (); +} + + +static void report_error (LINT& a, LINT& b, LINT& c, int line) +{ + cerr << "Error in line " << line << endl; + cerr << "a = " << a << endl; + cerr << "b = " << b << endl; + abort (); +} + + +static void report_error (LINT& a, LINT& b, int line) +{ + cerr << "Error in line " << line << endl; + cerr << "a = " << a << endl; + cerr << "b = " << b << endl; + abort (); +} + diff --git a/flint/test/testbas.c b/flint/test/testbas.c new file mode 100644 index 0000000..b27dd5b --- /dev/null +++ b/flint/test/testbas.c @@ -0,0 +1,1213 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testbas.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +static void ldzrand_l (CLINT n_l, int bits); + +static int vcheck_test (unsigned int nooftests); + +static int ld_test (unsigned int nooftests); + +static int cpy_test (unsigned int nooftests); +static int check_cpy (CLINT a_l, CLINT b_l, int test, int line); + +static int equ_test (unsigned int nooftests); +static int check_equ (CLINT a_l, CLINT b_l, int eq, int i, int line); + +static int mequ_test (unsigned int nooftests); +static int check_mequ (CLINT a_l, CLINT b_l, CLINT m_l, int eq, int i, int line); + +static int cmp_test (unsigned int nooftests); +static int check_cmp (CLINT a_l, CLINT b_l, int eq, int i, int line); + +static int str_test (unsigned int nooftests); +static int check_str (CLINT a_l, CLINT b_l, int i, int line); + +static int byte_test (unsigned int nooftests); +static int check_byte (CLINT a_l, CLINT b_l, int i, int line); + +static int ul2_test (unsigned int nooftests); +static int check_ul2 (CLINT a_l, clintd n, int islong, int line); + +static int setmax_test (void); + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + + Assert (sizeof (USHORT) == 2); + Assert (sizeof (ULONG) == 4); + Assert (sizeof (CLINT) == CLINTMAXBYTE); + Assert (sizeof (CLINTD) == 2 + (CLINTMAXDIGIT << 2)); + Assert (sizeof (CLINTQ) == 2 + (CLINTMAXDIGIT << 3)); + + initrand64_lt (); + create_reg_l (); + + vcheck_test (1000); + cpy_test (1000); + ld_test (1000); + equ_test (1000); + mequ_test (1000); + cmp_test (1000); + ul2_test (2000); + str_test (100); + byte_test (1000); + setmax_test (); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int vcheck_test (unsigned int nooftests) +{ + unsigned int i; + clint r_l[CLINTMAXDIGIT << 1 ]; + + printf ("Test vcheck_l()... \n"); + + ldzrand_l (r_l, CLINTMAXBIT); + setdigits_l (r_l, CLINTMAXDIGIT + 1); + r_l[digits_l (r_l)] = 1; + if (vcheck_l (r_l) != E_VCHECK_OFL) + { + fprintf (stderr, "Error in vcheck_l() in line %d\n", __LINE__); + fprintf (stderr, "vcheck_l(r_l)!= E_VCHECK_OFL, ld_l(r_l) = %d\n", ld_l (r_l)); + exit (-1); + } + + if (vcheck_l (NULL) != E_VCHECK_MEM) + { + fprintf (stderr, "Error in vcheck_l() in line %d\n", __LINE__); + fprintf (stderr, " vcheck_l(NULL) != E_VCHECK_MEM\n"); + exit (-1); + } + + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r_l, CLINTRNDLN / 2); + if (vcheck_l (r_l) != E_VCHECK_LDZ) + { + fprintf (stderr, "Error in vcheck_l() in test %d/line %d\n", i, __LINE__); + fprintf (stderr, " vcheck_l(r_l) != E_VCHECK_LDZ\n"); + disperr_l ("r_l = ", r_l); + exit (-1); + } + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r_l, CLINTRNDLN); + if (vcheck_l (r_l) != 0) + { + fprintf (stderr, "Error in vcheck_l() in line %d\n", __LINE__); + fprintf (stderr, " vcheck_l(r_l) != 0\n"); + disperr_l ("r_l = ", r_l); + exit (-1); + } + } + return 0; +} + + +static int cpy_test (unsigned int nooftests) +{ + unsigned int i = 1, j; + + printf ("Test cpy_l()...\n"); + + /* test with 0 */ + setzero_l (r1_l); + cpy_l (r2_l, r1_l); + check_cpy (r2_l, r1_l, i++, __LINE__); + + + /* test with max_l */ + setmax_l (r1_l); + cpy_l (r2_l, r1_l); + check_cpy (r2_l, r1_l, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + check_cpy (r2_l, r1_l, i++, __LINE__); + + + /* test with a single digit and leading zeros */ + rand_l (r1_l, ulrand64_l () % ( BITPERDGT + 1 )); + for (j = digits_l (r1_l) + 1; j <= CLINTMAXDIGIT; j++) + { + r1_l[j] = 0; + } + cpy_l (r2_l, r1_l); + check_cpy (r2_l, r1_l, i++, __LINE__); + + + /* Test copying an operand to itself */ + setzero_l (r1_l); + cpy_l (r1_l, r1_l); + check_cpy (r1_l, nul_l, i++, __LINE__); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + + for (j = 0; j <= digits_l (r1_l); j++) + { + r2_l[j] = r1_l[j]; + } + + cpy_l (r1_l, r1_l); + check_cpy (r1_l, r2_l, i, __LINE__); + } + + + /* General Tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + check_cpy (r2_l, r1_l, i, __LINE__); + } + return 0; +} + + +static int check_cpy (CLINT dest_l, CLINT src_l, int test, int line) +{ + unsigned int i; + if (vcheck_l (dest_l)) + { + fprintf (stderr, "Error in vcheck_l(dest_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(dest_l) == %d\n", vcheck_l (dest_l)); + disperr_l ("dest_l = ", dest_l); + exit (-1); + } + + + RMLDZRS_L (src_l); + if (vcheck_l (dest_l) > 0) + { + fprintf (stderr, "Error cpy_l: vcheck_l(dest_l) != 0 in line %d\n", line); + exit (-1); + } + + if (digits_l (src_l) != digits_l (dest_l)) + { + fprintf (stderr, "Error cpy_l: src_l and dest_l have different length in line %d\n", line); + exit (-1); + } + for (i = 1; i < digits_l (src_l); i++) + { + if (src_l[i] != dest_l[i]) + { + fprintf (stderr, "Error cpy_l: src_l != dest_l in Stelle %d in line %d\n", i, line); + exit (-1); + } + } + return 0; +} + + +static int ld_test (unsigned int nooftests) +{ + unsigned int i = 1, k, l; + + printf ("Test ld_l()...\n"); + + /* test with 0 */ + setzero_l (r1_l); + if (ld_l (r1_l) != 0) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " ld_l(r1_l) != 0\n"); + exit (-1); + } + + /* test with max_l */ + setmax_l (r1_l); + if (ld_l (r1_l) != CLINTMAXBIT) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " ld_l(r1_l) != %d\n", CLINTMAXBIT); + exit (-1); + } + + /* test with 0 and leading zeros */ + + for (i = 1; i < nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + l = ld_l (r1_l); + k = (( l % BITPERDGT ) > 0 ) ? 1 : 0; + + if ((( l >> LDBITPERDGT ) + k ) != digits_l (r2_l)) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " ld_l(r1_l)/%ld + 1 != digits_l(r2_l)\n", BITPERDGT); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + if (( l != 0 ) && ( r1_l[ ( l >> LDBITPERDGT ) + k] & ( 1 << (( l - 1 ) % BITPERDGT ))) == 0) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " requested bit in r1_l not set\n"); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + exit (-1); + } + if (( k > 0 ) && (( r1_l[ ( l >> LDBITPERDGT ) + k] >> ( l % BITPERDGT )) > 0 )) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, "ld_l(r1_l) < ld(r1_l) + 1\n"); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + exit (-1); + } + } + + + /* General tests */ + + for (i = 1; i < nooftests; i++) + { + nzrand_l (r1_l, CLINTRNDLN); /*lint !e666*/ + l = ld_l (r1_l); + k = (( l % BITPERDGT ) > 0 ) ? 1 : 0; + + if ((( l >> LDBITPERDGT ) + k ) != digits_l (r1_l)) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " ld_l(r1_l)/%ld + 1 != digits_l(r1_l)\n", BITPERDGT); + exit (-1); + } + if (( r1_l[ ( l >> LDBITPERDGT ) + k] & ( 1 << (( l - 1 ) % BITPERDGT ))) == 0) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, " requested bit in r1_l not set\n"); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + exit (-1); + } + if (( k > 0 ) && (( r1_l[ ( l >> LDBITPERDGT ) + k] >> ( l % BITPERDGT )) > 0 )) + { + fprintf (stderr, "Error in ld_l() in line %d\n", __LINE__); + fprintf (stderr, "ld_l(r1_l) < ld(r1_l) + 1\n"); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + exit (-1); + } + } + return 0; +} + + +static int equ_test (unsigned int nooftests) +{ + unsigned int i = 1, j; + + printf ("Test equ_l()...\n"); + + /* test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + check_equ (r1_l, r2_l, 1, i++, __LINE__); + + + /* Tests with max_l */ + setmax_l (r1_l); + setzero_l (r2_l); + check_equ (r1_l, r2_l, -1, i++, __LINE__); + + setzero_l (r1_l); + setmax_l (r2_l); + check_equ (r1_l, r2_l, -1, i++, __LINE__); + + setmax_l (r1_l); + setmax_l (r2_l); + check_equ (r1_l, r2_l, 1, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + ldzrand_l (r2_l, 0); + check_equ (r1_l, r2_l, 1, i++, __LINE__); + + + /* test with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + ZCPY_L (r2_l, r1_l); /*lint !e666 */ + for (j = digits_l (r2_l) + 1; j <= CLINTMAXDIGIT; j++) + { + r2_l[j] = 0; + } + j = digits_l (r2_l); + setdigits_l (r2_l, j + ( ulrand64_l () % ( CLINTMAXDIGIT - j + 1 ))); + check_equ (r1_l, r2_l, 1, i, __LINE__); + } + + + /* General tests: Equality */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + check_equ (r1_l, r2_l, 1, i, __LINE__); + } + + + /* General tests: Inequality */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + setbit_l (r2_l, usrand64_l() % CLINTMAXBIT); + xor_l (r1_l, r2_l, r2_l); + check_equ (r1_l, r2_l, -1, i, __LINE__); + } + return 0; +} + + +static int check_equ (CLINT a_l, CLINT b_l, int eq, int test, int line) +{ + switch (eq) + { + case 1: + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in equ_l(): r1_l != r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + break; + case -1: + if (equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in equ_l(): r1_l == r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + break; + default: + fprintf (stderr, "Error in test condition for equ_test() in line %d\n", line); + exit (-1); + } + return 0; +} + + +static int mequ_test (unsigned int nooftests) +{ + unsigned int i = 1, j; + + printf ("Test mequ_l()...\n"); + + /* test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + if (E_CLINT_DBZ != mequ_l (one_l, one_l, r1_l)) + { + fprintf (stderr, "Error: Reduction with 0 not detected by mod_l() in line %d\n", __LINE__); + exit (-1); + } + + /* Tests with max_l */ + setmax_l (r1_l); + setzero_l (r2_l); + do + { + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mod_l (r1_l, r10_l, r3_l); + } + while (EQZ_L (r3_l)); + + check_mequ (r1_l, r2_l, r10_l, -1, i++, __LINE__); + + setzero_l (r1_l); + setmax_l (r2_l); + do + { + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mod_l (r2_l, r10_l, r3_l); + } + while (EQZ_L (r3_l)); + + check_mequ (r1_l, r2_l, r10_l, -1, i++, __LINE__); + + setmax_l (r1_l); + setmax_l (r2_l); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + check_mequ (r1_l, r2_l, r10_l, 1, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + ldzrand_l (r2_l, 0); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + check_mequ (r1_l, r2_l, r10_l, 1, i++, __LINE__); + + + /* test with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r2_l, r1_l); + for (j = digits_l (r2_l) + 1; j <= CLINTMAXDIGIT; j++) + { + r2_l[j] = 0; + } + j = digits_l (r2_l); + setdigits_l (r2_l, j + ( ulrand64_l () % ( CLINTMAXDIGIT - j + 1 ))); + check_mequ (r1_l, r2_l, r10_l, 1, i, __LINE__); + } + + + /* Test Modulus = 1 */ + nzrand_l (r1_l, CLINTRNDLN); /*lint !e666*/ + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + check_mequ (r1_l, r2_l, one_l, 1, i, __LINE__); + + + /* General tests: Equality */ + for (i = 1; i <= nooftests; i++) + { + nzrand_l (r1_l, CLINTRNDLN); /*lint !e666*/ + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + add_l (r1_l, r2_l, r3_l); + check_mequ (r3_l, r2_l, r1_l, 1, i, __LINE__); + check_mequ (r3_l, r1_l, r2_l, 1, i, __LINE__); + } + + + /* General tests: Inequality */ + for (i = 1; i <= nooftests; i++) + { + do + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r3_l, CLINTRNDLN); /*lint !e666*/ + mod_l (r1_l, r3_l, r10_l); + mod_l (r2_l, r3_l, r11_l); + } + while (equ_l (r10_l, r11_l)); + check_mequ (r1_l, r2_l, r3_l, -1, i, __LINE__); + } + return 0; +} + + +static int check_mequ (CLINT a_l, CLINT b_l, CLINT m_l, int eq, int test, int line) +{ + switch (eq) + { + case 1: + if (!mequ_l (a_l, b_l, m_l)) + { + fprintf (stderr, "Error in mequ_l(): r1_l == r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + break; + + case -1: + if (mequ_l (a_l, b_l, m_l)) + { + fprintf (stderr, "Error in mequ_l(): r1_l != r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + break; + default: + fprintf (stderr, "Error in test condition for mequ_test() in line %d\n", line); + exit (-1); + } + return 0; +} + + +static int cmp_test (unsigned int nooftests) +{ + unsigned int i = 1, j; + + printf ("Test cmp_l()...\n"); + + /* test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + check_cmp (r1_l, r2_l, 1, i++, __LINE__); + + + /* Tests with max_l */ + setmax_l (r1_l); + setmax_l (r2_l); + check_cmp (r1_l, r2_l, 1, i++, __LINE__); + + setmax_l (r1_l); + setzero_l (r2_l); + check_cmp (r1_l, r2_l, -1, i++, __LINE__); + + setzero_l (r1_l); + setmax_l (r2_l); + check_cmp (r1_l, r2_l, -1, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + ldzrand_l (r2_l, 0); + check_cmp (r1_l, r2_l, 1, i++, __LINE__); + + + /* Test for Equality with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + ZCPY_L (r2_l, r1_l); /*lint !e666 */ + for (j = digits_l (r2_l) + 1; j <= CLINTMAXDIGIT; j++) + { + r2_l[j] = 0; + } + j = digits_l (r2_l); + setdigits_l (r2_l, j + ( ulrand64_l () % ( CLINTMAXDIGIT - j + 1 ))); + + check_cmp (r1_l, r2_l, 1, i, __LINE__); + } + + + /* Test for Inequality with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + do + { + ldzrand_l (r1_l, CLINTRNDLN); + ldzrand_l (r2_l, CLINTRNDLN); + } + while (equ_l (r1_l, r2_l)); + check_cmp (r1_l, r2_l, -1, i, __LINE__); + } + + setzero_l (r1_l); + setone_l (r2_l); + check_cmp (r1_l, r2_l, -1, i++, __LINE__); + + setzero_l (r2_l); + setone_l (r1_l); + check_cmp (r1_l, r2_l, -1, i++, __LINE__); + + + /* General tests: Equality */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + check_cmp (r1_l, r2_l, 1, i, __LINE__); + } + + + /* General tests: Inequality */ + for (i = 1; i <= nooftests; i++) + { + do + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + } + while (equ_l (r1_l, r2_l)); + check_cmp (r1_l, r2_l, -1, i, __LINE__); + } + return 0; +} + + +static int check_cmp (CLINT a_l, CLINT b_l, int eq, int test, int line) +{ + unsigned int i; + int v = 0; + switch (eq) + { + case 1: + if (cmp_l (a_l, b_l)) + { + fprintf (stderr, "Error in cmp_l(): r1_l != r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + break; + + case -1: + if (!cmp_l (a_l, b_l)) + { + fprintf (stderr, "Error in cmp_l(): r1_l == r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + else + { + ZCPY_L (r3_l, a_l); /*lint !e666*/ + ZCPY_L (r4_l, b_l); /*lint !e666*/ + if (( digits_l (r3_l) < digits_l (r4_l)) && ( 1 == cmp_l (a_l, b_l))) + { + fprintf (stderr, "Error in cmp_l(): r1_l > r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + else + { + if (( digits_l (r3_l) > digits_l (r4_l)) && ( -1 == cmp_l (a_l, b_l))) + { + fprintf (stderr, "Error in cmp_l(): r1_l < r2_l in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + else + { + if (digits_l (r3_l) == digits_l (r4_l)) + { + i = digits_l (r3_l); + while (a_l[i] == b_l[i] && i > 0) + { + --i; + } + if (a_l[i] > b_l[i]) + { + v = 1; + } + else + { + if (a_l[i] < b_l[i]) + { + v = -1; + } + } + if (v != cmp_l (a_l, b_l)) /*lint !e644*/ + { + fprintf (stderr, "Error in cmp_l(): cmp_l(r1_l, r2_l) != %d in line %d\n", v, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + } + } + } + } + break; + + default: + fprintf (stderr, "Error in test condition in cmp_test() in line %d\n", line); + exit (-1); + } + return 0; +} + + +static int ul2_test (unsigned int nooftests) +{ + unsigned long i; + clint n1; + clintd n2; + + printf ("Test u2clint_l(), ul2clint_l()...\n"); + + for (i = 1; i <= nooftests; i++) + { + n1 = usrand64_l (); + u2clint_l (r1_l, n1); + check_ul2 (r1_l, (clintd)n1, 0, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + n2 = ulrand64_l (); + ul2clint_l (r1_l, n2); + check_ul2 (r1_l, n2, 1, __LINE__); + } + return 0; +} + + +static int check_ul2 (CLINT n_l, clintd n, int islong, int line) +{ + if (vcheck_l (n_l)) + { + fprintf (stderr, "Error in vcheck_l(n_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(n_l) == %d\n", vcheck_l (n_l)); + disperr_l ("n_l = ", n_l); + exit (-1); + } + + switch (islong) + { + case 0: + if (( digits_l (n_l) > 0 ) && ( digits_l (n_l) != 1 || n_l[1] != n )) + { + fprintf (stderr, "Error in u2clint_l() in line %d\nn = %lu\n", line, n); + disperr_l ("n_l = ", n_l); + exit (-1); + } + break; + + case 1: + if ((( digits_l (n_l) == 1 ) && ( n_l[1] != ( n & BASEMINONE ))) || + (( digits_l (n_l) == 2 ) && (( n_l[1] != ( n & BASEMINONE )) || ( n_l[2] != ( n >> BITPERDGT ) )))) + { + fprintf (stderr, "Error in ul2clint_l() in line %d\nn = %lu\n", line, n); + disperr_l ("n_l = ", n_l); + exit (-1); + } + break; + + default: + break; + } + return 0; +} + + +static int str_test (unsigned int nooftests) +{ + unsigned int i = 1; + char *ofl; + + printf ("Test str2clint_l(), xclint2str_l()...\n"); + + /* test with integer > max_l */ + if ((ofl = (char*) malloc (sizeof (char) * (CLINTMAXDIGIT * 4 + 2))) == NULL) + { + fprintf (stderr, "Error in malloc"); + exit (-1); + } + +/* Generate string "1000...0" with CLINTMAXDIGIT*BITPERDGT/4 zeros */ + ofl[0] = '1'; + ofl[CLINTMAXDIGIT * BITPERDGT/4 + 1] = '\0'; + for (i = 1; i <= CLINTMAXDIGIT * BITPERDGT/4; i++) + { + ofl[i] = '0'; + } + + if (E_CLINT_OFL != str2clint_l (r2_l, ofl, 16)) + { + fprintf (stderr, "Error in str2clint_l near line %d: Overflow not detected.\n", __LINE__); + exit (-1); + } + + free (ofl); + + + /* test with 0 */ + setzero_l (r1_l); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i++, __LINE__); + + + /* test with max_l */ + setmax_l (r1_l); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i++, __LINE__); + + + /* test with 1 */ + setone_l (r1_l); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i++, __LINE__); + + + /* test with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i, __LINE__); + } + + + /* test with capitals */ + + str2clint_l (r1_l, "1234567890ABCDEF", 16); + str2clint_l (r2_l, "1234567890abcdef", 16); + check_str (r1_l, r2_l, i++, __LINE__); + + + /* test with binary digits */ + + str2clint_l (r1_l, "10101010", 2); + str2clint_l (r2_l, "aa", 16); + check_str (r1_l, r2_l, i++, __LINE__); + + + /* General tests with macro clint2str_l */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, CLINT2STR_L (r1_l, 2), 2); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, CLINT2STR_L (r1_l, 8), 8); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, CLINT2STR_L (r1_l, 10), 10); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, CLINT2STR_L (r1_l, 16), 16); + check_str (r2_l, r1_l, i, __LINE__); + } + + /* General tests with xclint2str */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 2, 0), 2); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 8, 0), 8); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 10, 0), 10); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 2, 1), 2); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 8, 1), 8); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 10, 1), 10); + check_str (r2_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 1), 16); + check_str (r2_l, r1_l, i, __LINE__); + } + + return 0; +} + + +static int check_str (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in str2clint_l() or xclint2str_l() in line %d\n", line); + fprintf (stderr, "xclint2str_l(a_l, 16, 0) = %s\n", xclint2str_l (a_l, 16, 0)); + exit (-1); + } + return 0; +} + + +static int byte_test (unsigned int nooftests) +{ + unsigned int i = 1; + UCHAR* ofl; + UCHAR* N; + int len; + + printf ("Test byte2clint_l(), clint2byte_l()...\n"); + + /* test with value > max_l */ + if (( ofl = (UCHAR*) malloc (sizeof (char) * (CLINTMAXBYTE + 2))) == NULL) + { + fprintf (stderr, "Error in malloc"); + exit (-1); + } + + ofl[0] = '1'; /* Generate byte vector "1000...0" with */ + for (i = 1; i <= CLINTMAXBYTE; i++) /* CLINTMAXBYTE zeros */ + { + ofl[i] = '0'; + } + + if (E_CLINT_OFL != byte2clint_l (r2_l, ofl, (int)CLINTMAXBYTE + 1)) + { + fprintf (stderr, "Error in byte2clint_l near line %d: Overflow not detected.\n", __LINE__); + exit (-1); + } + + + /* test with byte vector of length 0 */ + N = clint2byte_l (one_l, &len); + byte2clint_l (r2_l, N, 0); + check_byte (r2_l, nul_l, i++, __LINE__); + + + /* test with 0 */ + setzero_l (r1_l); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + + + /* Test constant 10945 */ + u2clint_l (r1_l, 10945); + N = clint2byte_l (r1_l, &len); + if ((len != 2) || (*N != 0x2A) || (*(N+1) != 0xC1)) + { + fprintf (stderr, "Error in byte2clint_l near line %d: Incorrect handling of Constant.\n", __LINE__); + exit (-1); + } + + ofl[0] = 0x00; + ofl[1] = 0x2A; + ofl[2] = 0xC1; + byte2clint_l (r2_l, ofl, 3); + check_byte (r2_l, r1_l, i++, __LINE__); + + + /* test with max_l */ + setmax_l (r1_l); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + + + /* test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + + + /* test with 1 */ + setone_l (r1_l); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + + str2clint_l (r2_l, xclint2str_l (r1_l, 16, 0), 16); + check_str (r2_l, r1_l, i++, __LINE__); + + + /* test with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + } + + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + N = clint2byte_l (r1_l, &len); + byte2clint_l (r2_l, N, len); + check_byte (r2_l, r1_l, i++, __LINE__); + } + + free (ofl); + return 0; +} + + +static int check_byte (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in byte2clint_l() or clint2byte_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static int setmax_test (void) +{ + unsigned int i; + + printf ("Test setmax_l()...\n"); + + /* Set r0_l to the maximum value */ + for (i = 1; i <= CLINTMAXDIGIT; i++) + { + r0_l[i] = BASEMINONE; + } + setdigits_l (r0_l, CLINTMAXDIGIT); + + setmax_l (r1_l); + + if (!equ_l (r0_l, r1_l)) + { + fprintf (stderr, "Error in setmax_l: r0_l != r1_l in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testbbs.c b/flint/test/testbbs.c new file mode 100644 index 0000000..28a025b --- /dev/null +++ b/flint/test/testbbs.c @@ -0,0 +1,202 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testbbs.c Revision: 07.07.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "random.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrandBBS_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + + +/*lint -esym(666,disperr_l)*/ + +static int chi_test (void); +static int rand_test (unsigned int nooftests); + +float chisquare (ULONG, STATEBBS *rndstate); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + + create_reg_l (); + + chi_test (); + rand_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int chi_test () +{ + ULONG i, errcount = 0; + float X; + STATEBBS rndstate; + + printf ("Chi-Square-Test of usrandBBS_l()...\n"); + + for (i = 0; i < 10; i++) + { + InitRandBBS_l (&rndstate, "", 0, 200); + + X = chisquare (0x50000, &rndstate); + if (X >= 66048) /* 2^16 + 2*sqrt(2^16) */ + { + fprintf (stderr, "Warning: Chisquare > r + 2*sqrt(r) :-|\n"); + ++errcount; + } + else + { + if (X <= 65024) /* 2^16 - 2*sqrt(2^16) */ + { + fprintf (stderr, "Warning: Chisquare < r - 2*sqrt(r) :-|\n"); + ++errcount; + } + else + { + fprintf (stderr, "Chi-Square-Test no. %ld O.K. ;-)\n", i + 1); + } + } + } + if (errcount > 3) + { + fprintf (stderr, "Mmm, too many errors in Chi-Square-Test... :-(\n"); + } + return errcount; +} + + +static int f[65536 ]; + +float chisquare (ULONG sample, STATEBBS *rndstate) +{ + ULONG i, t; + + for (i = 0; i < 65536; i++) + f[i] = 0; + + for (i = 0; i < sample; i++) + f[sRandBBS_l (rndstate)] ++; + + for (i = 0, t = 0; i < 65536; i++) + t += f[i] * f[i]; + + return (float) ((( float ) 65536 * ( float ) t / ( float ) sample ) - sample ); +} + + +static int rand_test (unsigned int nooftests) +{ + unsigned i; + unsigned r; + STATEBBS rndstate; + + printf ("Test RandBBS_l ...\n"); + InitRandBBS_l (&rndstate, "", 0, 200); + + RandBBS_l (r0_l, &rndstate, 0); + if (!eqz_l (r0_l)) + { + fprintf (stderr, "Error in RandBBS_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + exit (-1); + } + + RandBBS_l (r0_l, &rndstate, 1); + if (!equ_l (r0_l, one_l)) + { + fprintf (stderr, "Error in RandBBS_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + exit (-1); + } + + for (i = 0; i < nooftests; i++) + { + r = lRandBBS_l (&rndstate) % CLINTMAXDIGIT; + RandBBS_l (r0_l, &rndstate, r); + + if (ld_l (r0_l) != r) + { + fprintf (stderr, "Error in RandBBS_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + fprintf (stderr, "r = %d\n", r); + exit (-1); + } + } + return 0; +} + + diff --git a/flint/test/testbool.c b/flint/test/testbool.c new file mode 100644 index 0000000..d94b2e4 --- /dev/null +++ b/flint/test/testbool.c @@ -0,0 +1,343 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testbbs.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int and_test (unsigned int nooftests); +static int or_test (unsigned int nooftests); +static int xor_test (unsigned int nooftests); + +static int check (CLINT a_l, CLINT b_l, int test, int line); + +/*lint -esym(666,swap_l)*/ + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + and_test (1000); + or_test (1000); + xor_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int xor_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test xor_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + xor_l (nul_l, r1_l, r2_l); + check (r2_l, r1_l, i, __LINE__); + + xor_l (r1_l, nul_l, r2_l); + check (r2_l, r1_l, i, __LINE__); + + SETONE_L (r0_l); + rand_l (r1_l, CLINTRNDLN); + xor_l (r0_l, r1_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] ^= 1; + check (r2_l, r1_l, i, __LINE__); + } + else + { + check (r2_l, one_l, i, __LINE__); + } + + rand_l (r1_l, CLINTRNDLN); + xor_l (r1_l, r0_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] ^= 1; + check (r2_l, r1_l, i, __LINE__); + } + else + { + check (r2_l, one_l, i, __LINE__); + } + + + setmax_l (r0_l); + xor_l (r0_l, r0_l, r0_l); + check (r0_l, nul_l, i, __LINE__); + + + /* General tests */ + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + xor_l (r0_l, r0_l, r0_l); + check (r0_l, nul_l, i, __LINE__); + xor_l (r1_l, r0_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r0_l); + cpy_l (r3_l, r1_l); + swap_l (r0_l, r1_l); + check (r0_l, r3_l, i, __LINE__); + check (r1_l, r2_l, i, __LINE__); + } + return 0; +} + + +static int or_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test or_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + or_l (nul_l, r1_l, r2_l); + check (r2_l, r1_l, i, __LINE__); + + or_l (r1_l, nul_l, r2_l); + check (r2_l, r1_l, i, __LINE__); + + or_l (nul_l, nul_l, r2_l); + check (r2_l, nul_l, i, __LINE__); + + or_l (one_l, nul_l, r2_l); + check (r2_l, one_l, i, __LINE__); + + SETONE_L (r0_l); + rand_l (r1_l, CLINTRNDLN); + or_l (r0_l, r1_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] |= 1; + check (r2_l, r1_l, i, __LINE__); + } + else + { + check (r2_l, one_l, i, __LINE__); + } + + rand_l (r1_l, CLINTRNDLN); + or_l (r1_l, r0_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] |= 1; + check (r2_l, r1_l, i, __LINE__); + } + else + { + check (r2_l, one_l, i, __LINE__); + } + + setmax_l (r0_l); + setmax_l (r1_l); + or_l (r0_l, r0_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + + + /* General tests */ + + for (i = 1; i <= nooftests; i++) + { + setmax_l (r0_l); + rand_l (r1_l, CLINTRNDLN); + or_l (r0_l, r1_l, r1_l); + check (r1_l, r0_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + or_l (r0_l, r0_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + setzero_l (r2_l); + or_l (r0_l, r2_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + } + + return 0; +} + + +static int and_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test and_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + and_l (nul_l, r1_l, r2_l); + check (r2_l, nul_l, i, __LINE__); + + and_l (r1_l, nul_l, r2_l); + check (r2_l, nul_l, i, __LINE__); + + SETONE_L (r0_l); + rand_l (r1_l, CLINTRNDLN); + and_l (r0_l, r1_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] &= 1; + SETDIGITS_L (r1_l, 1); + } + check (r2_l, r1_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + and_l (r1_l, r0_l, r2_l); + if (GTZ_L (r1_l)) + { + r1_l[1] &= 1; + SETDIGITS_L (r1_l, 1); + } + check (r2_l, r1_l, i, __LINE__); + + + setmax_l (r0_l); + setmax_l (r1_l); + and_l (r0_l, r0_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + + + /* General tests */ + + for (i = 1; i <= nooftests; i++) + { + setmax_l (r0_l); + rand_l (r1_l, CLINTRNDLN); + and_l (r0_l, r1_l, r0_l); + check (r1_l, r0_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + and_l (r0_l, r0_l, r0_l); + check (r0_l, r1_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + setzero_l (r2_l); + and_l (r0_l, r2_l, r0_l); + check (r0_l, nul_l, i, __LINE__); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in test in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + + diff --git a/flint/test/testchin.cpp b/flint/test/testchin.cpp new file mode 100644 index 0000000..0e0f778 --- /dev/null +++ b/flint/test/testchin.cpp @@ -0,0 +1,217 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module testchin.cpp Revision: 10.07.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include "flintpp.h" + +#define MAXTESTLEN (CLINTMAXBIT/2) +#define CLINTRNDLN (1 + ulrand64_l() % (MAXTESTLEN/2)) + +static int simple_tests (void); +static int general_tests (int); + +int main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + simple_tests (); + general_tests (10000); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static int simple_tests () +{ + LINT a, b, c, m, n, o, x, y; + LINT **koeff = new LINT *[8]; + unsigned int l; + + cout << "Testfunction simple_tests() ..." << endl; + + koeff[0] = &a; + koeff[1] = &m; + koeff[2] = &b; + koeff[3] = &n; + + // Tests with n = 0 + + l = CLINTRNDLN; + a = randl (usrand64_l () % l / 4); + m = randl (l); + b = randl (usrand64_l () % l / 4); + n = 0; + + x = chinrem (2, koeff); + if (x.Get_Warning_Status () == E_LINT_OK) + cerr << "Error in friend function chinrem in line " << __LINE__ << endl; + + y = a.chinrem (m, b, n); + if (y.Get_Warning_Status () == E_LINT_OK) + cerr << "Error in member function chinrem in line " << __LINE__ << endl; + + + // Test with m = 1 + + do + { + l = CLINTRNDLN; + } + while (4 > l); + + a = randl (usrand64_l () % l / 4); + m = 1; + b = 0; + n = randl (l); + + x = chinrem (2, koeff); + if (x.Get_Warning_Status () == E_LINT_ERR) + cerr << "Error in friend function chinrem in line " << __LINE__ << endl; + + y = a.chinrem (m, b, n); + if (y.Get_Warning_Status () == E_LINT_ERR) + cerr << "Error in member function chinrem in line " << __LINE__ << endl; + + delete [] koeff; + return 0; +} + + +static int general_tests (int no_of_tests) +{ + LINT a, b, c, m, n, o, x, y; + LINT **koeff = new LINT *[8]; + unsigned int l; + + cout << "Testfunction general_tests() ..." << endl; + + koeff[0] = &a; + koeff[1] = &m; + koeff[2] = &b; + koeff[3] = &n; + koeff[4] = &c; + koeff[5] = &o; + + for (int i = 1; i < no_of_tests; i++) + { + do + { + l = CLINTRNDLN; + m = randl (l); + } + while (10 >= m); + + do + { + n = randl (usrand64_l () % l / 3); + } while (gcd (m, n) != 1); + + do + { + o = randl (usrand64_l () % l / 3); + } while (( gcd (m, o) != 1 ) || ( gcd (n, o) != 1 )); + + a = randl (usrand64_l () % l / 4); + b = randl (usrand64_l () % l / 4); + c = randl (usrand64_l () % l / 4); + + x = chinrem (3, koeff); + if (msub (x, a, m) != 0 || msub (x, b, n) != 0 || msub (x, c, o) != 0) + { + cerr << "Error in friend function chinrem" << endl; + cerr << "x = " << x << endl; + cerr << "a = " << a; + cerr << "b = " << b; + cerr << "c = " << c; + cerr << "x - a = " << x - a; + cerr << "x - b = " << x - b; + cerr << "x - c = " << x - c; + cerr << "x - a % m = " << ( x - a ) % m; + cerr << "x - b % n = " << ( x - b ) % n; + cerr << "x - c % o = " << ( x - c ) % o; + cerr << "x.status = " << (int) x.Get_Warning_Status () << endl; + exit (-1); + } + else + { + // cout << "Solution of congruence: " << x << endl; + } + + y = a.chinrem (m, b, n); + + if (msub (y, a, m) != 0 || msub (y, b, n) != 0) + { + cerr << "Error in member function chinrem" << endl; + cerr << "y = " << y; + cerr << "m = " << m; + cerr << "n = " << n; + cerr << "y.status = " << (int) y.Get_Warning_Status () << endl; + cerr << "a = " << a; + cerr << "b = " << b; + cerr << "y - a = " << y - a; + cerr << "y - b = " << y - b; + cerr << "y - a % m = " << ( y - a ) % m << endl; + cerr << "y - b % n = " << ( y - b ) % n << endl; + exit (-1); + } + else + { + // cout << "Solution of Congruence: " << y << endl; + } + } + + delete [] koeff; + return 0; +} + diff --git a/flint/test/testcnst.cpp b/flint/test/testcnst.cpp new file mode 100644 index 0000000..1fb3c83 --- /dev/null +++ b/flint/test/testcnst.cpp @@ -0,0 +1,785 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module testcnst.cpp Revision: 29.06.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include +#include "flintpp.h" + + +#define MAXTESTLEN (CLINTMAXBIT/2) +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) + +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int testconstr2 (int); +static int testconstr3 (int); +static int testconstr4 (int); +static int testconstr5 (int); +static int testconstr6a (int); +static int testconstr6b (int); +static int testconstr6c (int); +static int testconstr7 (int); +static int testconstr8 (int); +static int testconstr9 (int); +static int testconstr10 (int); +static int testconstr11 (int); +static int testconstr12 (int); + +static void check (LINT&, LINT&, int); +static void check (CLINT, LINT&, int); +static void ulcheck (ULONG, LINT&, int); + +void local_error_handler (LINT_ERRORS, const char*, int, int, const char*); + + +int main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + + LINT::Set_LINT_Error_Handler (local_error_handler); + + testconstr2 (1000); + testconstr3 (5000); + testconstr4 (1000); + testconstr5 (5000); + testconstr6a (5000); + testconstr6b (5000); + testconstr6c (5000); + testconstr7 (5000); + testconstr8 (5000); + testconstr9 (5000); + testconstr10 (5000); + testconstr11 (5000); + testconstr12 (5000); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static int +testconstr2 (int nooftests) +{ + cout << "Test of constructor 2 ..." << endl; + + char* ofl; + int i; + if ((ofl = new char[(sizeof (char) * ( CLINTMAXDIGIT * 4 + 2 ))]) == NULL) + { + cerr << "Error in operator new in testcnstr.cpp, line " + << __LINE__ << endl; + abort (); + } + + + // Testing constructor 2 with Zahl > max_l + // Generate string "1000...0" with CLINTMAXDIGIT*16/4 Hex-zeros + + ofl[0] = '1'; + ofl[CLINTMAXDIGIT * 4 + 1] = '\0'; + for (i = 1; (unsigned)i <= CLINTMAXDIGIT * 4; i++) + { + ofl[i] = '0'; + } + + LINT checkval; +#ifdef LINT_EX + try + { + checkval = LINT (ofl, 16); + } + + catch (LINT_OFL &error) + { + // Overflow erkannt, OK, tue nichts + } + + catch (LINT_Error &error) + { + cerr << "Error: Overflow not detected near line "; + cerr << __LINE__ << " in module " << __FILE__ << endl; + exit (-1); + } + + if (checkval.Get_Warning_Status () != E_LINT_VAL) + // Observe that chaeckval.status is checked against E_LINT_VAL. + // checkval here is not initialized because of overflow condition in + // constructor. If not successful try resets state of variable checkval. + { + cerr << "Error in constructor 2: Overflow not detected." << endl; + cerr << "checkval.Get_Warning_Status () = " + << (int)checkval.Get_Warning_Status () << endl; + exit (-1); + } +#else + checkval = LINT (ofl, 16); + + if (checkval.Get_Warning_Status () != E_LINT_OFL) + { + cerr << "Error in constructor 2: Overflow not detected." << endl; + cerr << "checkval.Get_Warning_Status () = " + << (int)checkval.Get_Warning_Status () << endl; + exit (-1); + } +#endif //LINT_EX? + + + // Testing constructor 2 with "0" + + ofl[0] = '0'; + ofl[1] = '\0'; + + LINT nul (0); + checkval = LINT (ofl, 16); + check (nul_l, checkval, __LINE__); + + + // Testing constructor 2 with "" + + ofl[0] = '\0'; + + checkval = LINT (ofl, 16); + check (nul_l, checkval, __LINE__); + + delete [] ofl; + + + // Tests with random values + + LINT test; + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + checkval = LINT (lint2str (test, 16), 16); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + checkval = LINT (lint2str (test, 2), 2); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + checkval = LINT (lint2str (test, 8), 8); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + checkval = LINT (lint2str (test, 10), 10); + check (test, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr3 (int nooftests) +{ + cout << "Test of constructor 3 ..." << endl; + + UCHAR* ofl; + int i, len; + + if ((ofl = new UCHAR[(sizeof (UCHAR) * ( CLINTMAXBYTE + 2 ))]) == NULL) + { + cerr << "Error in operator new in testcnstr.cpp, line " + << __LINE__ << endl; + abort (); + } + + + // Testing constructor 3 with value > max_l + // Generate byte array 0xff,0xff,...,0xff,0x01 with CLINTMAXBYTE+1 bytes + + for (i = 0; (unsigned)i < CLINTMAXBYTE; i++) + { + ofl[i] = 0xff; + } + ofl[CLINTMAXBYTE] = 0x01; + + LINT checkval (ofl, CLINTMAXBYTE+1); + if (checkval.Get_Warning_Status () != E_LINT_OFL) + { + cerr << "Error in constructor 3: Overflow not detected." << endl; + cerr << "checkval.Get_Warning_Status () = " + << (int)checkval.Get_Warning_Status () << endl; + exit (-1); + } + + + // Testing constructor 3 with 0x00 + + ofl[0] = 0x00; + + checkval = LINT (ofl, 1); + check (nul_l, checkval, __LINE__); + + + // Testing constructor 3 with byte array of length 0 + + checkval = LINT (ofl, 0); + check (nul_l, checkval, __LINE__); + + delete [] ofl; + + + // Tests with random values + + LINT test; + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); // LINT pseudo random value + ofl = lint2byte (test, &len); // transformed into byte array + checkval = LINT (ofl, len); // constructor 3 constructs LINT object + check (test, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr4 (int nooftests) +{ + cout << "Test of constructor 4 ..." << endl; + + char* ofl; + int i; + + if ((ofl = new char[CLINTMAXBIT + 3]) == NULL) + { + cerr << "Error in operator new in testcnstr.cpp, line " + << __LINE__ << endl; + abort (); + } + + + ofl[0] = '0'; // Generate string "0x1000...0" with + ofl[1] = 'x'; // CLINTMAXDIGIT*16/4 zeros + ofl[2] = '1'; + ofl[CLINTMAXDIGIT * 4 + 3] = '\0'; + for (i = 3; (unsigned)i <= CLINTMAXDIGIT * 4 + 2; i++) + { + ofl[i] = '0'; + } + + LINT checkval (ofl); + if (checkval.Get_Warning_Status () != E_LINT_OFL) + { + cerr << "Error in constructor 4: Overflow not detected." << endl; + cerr << "checkval.Get_Warning_Status () = " + << (int)checkval.Get_Warning_Status () << endl; + exit (-1); + } + + + // Testing constructor 4 with "0" + + ofl[0] = '0'; + ofl[1] = '\0'; + + checkval = LINT (ofl); + check (nul_l, checkval, __LINE__); + + + // Testing constructor 4 with "" + + ofl[0] = '\0'; + + checkval = LINT (ofl); + check (nul_l, checkval, __LINE__); + + + // Tests with random values + + LINT test; + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + checkval = LINT (lint2str (test, 10)); + check (test, checkval, __LINE__); + } + + char* N; + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + N = lint2str (test, 2); + strcpy (ofl, "0b"); + strcat (ofl, N); + checkval = LINT (ofl); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + N = lint2str (test, 2); + strcpy (ofl, "0B"); + strcat (ofl, N); + checkval = LINT (ofl); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + N = lint2str (test, 16); + strcpy (ofl, "0x"); + strcat (ofl, N); + checkval = LINT (ofl); + check (test, checkval, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + test = randl (CLINTRNDLN); + N = lint2str (test, 16); + strcpy (ofl, "0X"); + strcat (ofl, N); + checkval = LINT (ofl); + check (test, checkval, __LINE__); + } + + delete [] (ofl); + return 0; +} + + +static int +testconstr5 (int nooftests) +{ + cout << "Test of constructor 5 ..." << endl; + + + // Test with 0 + + LINT checkval (LINT (0)); + check (nul_l, checkval, __LINE__); + + + // Test with max + + CLINT nmax_l; + setmax_l (nmax_l); + LINT nmax (nmax_l); // Constructor 12 comes into play + checkval = LINT (nmax); + check (nmax, checkval, __LINE__); + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + LINT test = randl (CLINTRNDLN); + checkval = LINT (test); + check (test, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr6a (int nooftests) +{ + cout << "Test of constructor 6 with char ..." << endl; + + + // Test with 0 + + char t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); //lint !e732 Signed/unsigned mismatch + // is acceptable here + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = (ucrand64_l () % 0x80); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); //lint !e732 dito + } + + return 0; +} + + +static int +testconstr6b (int nooftests) +{ + cout << "Test of constructor 6 with short ..." << endl; + + + // Test with 0 + + short t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = (usrand64_l () % 0x8000); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + } + + return 0; +} + + +static int +testconstr6c (int nooftests) +{ + cout << "Test of constructor 6 with int ..." << endl; + + + // Test with 0 + + int t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = (ulrand64_l () % 0x80000000); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + } + + return 0; +} + + +static int +testconstr7 (int nooftests) +{ + cout << "Test of constructor 7 ..." << endl; + + + // Test with 0 + + long t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = (ulrand64_l () % 0x80000000); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); //lint !e732 s.o. + } + + return 0; +} + + +static int +testconstr8 (int nooftests) +{ + cout << "Test of constructor 8 ..." << endl; + + + // Test with 0 + + UCHAR t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = ucrand64_l (); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr9 (int nooftests) +{ + cout << "Test of constructor 9 ..." << endl; + + + // Test with 0 + + USHORT t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = usrand64_l (); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr10 (int nooftests) +{ + cout << "Test of constructor 10 ..." << endl; + + + // Test with 0 + + unsigned int t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = ulrand64_l (); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr11 (int nooftests) +{ + cout << "Test of constructor 11 ..." << endl; + + + // Test with 0 + + ULONG t = 0; + LINT checkval (t); + ulcheck (t, checkval, __LINE__); + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + t = ulrand64_l (); + checkval = LINT (t); + ulcheck (t, checkval, __LINE__); + } + + return 0; +} + + +static int +testconstr12 (int nooftests) +{ + cout << "Test of constructor 12 ..." << endl; + + CLINT test_l; + + + // Test with 0 + + LINT checkval (nul_l); + check (nul_l, checkval, __LINE__); + + + // Test with max_l in testconstr5 () + + + // Tests with random values + + for (int i = 1; i <= nooftests; i++) + { + rand_l (test_l, CLINTRNDLN); + checkval = LINT (test_l); + check (test_l, checkval, __LINE__); + } + + return 0; +} + + +static void +check (LINT &a, LINT& b, int line) +{ + if (!(b >= 0)) // Check value of of b.init implicitly + { + cerr << "Error in line " << line << endl; + cerr << "Object not initialized" << endl; + } + + if (b.Get_Warning_Status () != E_LINT_OK) + { + cerr << "Error in line " << line << endl; + cerr << "Object status not OK" << endl; + } + + if (a != b) + { + cerr << "Error in line " << line << endl; + cerr << "a = " << a << endl; + cerr << "b = " << b << endl; + exit (1); + } +} + + +static void +check (CLINT a_l, LINT& b, int line) +{ + if (!(b >= 0)) // Check value of of b.init implicitly + { + cerr << "Error in line " << line << endl; + cerr << "Object not initialized" << endl; + } + + if (b.Get_Warning_Status () != E_LINT_OK) + { + cerr << "Error in line " << line << endl; + cerr << "Object status not OK" << endl; + } + + UCHAR* N1,* N2; + int len1, len2; + + N1 = clint2byte_l (a_l, &len1); + N2 = lint2byte (b, &len2); + + if (len1 != len2) + { + cerr << "Error in line " << line << endl; + cerr << "a = " << hexstr_l (a_l) << endl; + cerr << "b = " << b << endl; + exit (1); + } + + if (strncmp ((const char*)N1, (const char*)N2, (unsigned)len1) != 0) + { + cerr << "Error in line " << line << endl; + cerr << "a = " << hexstr_l (a_l) << endl; + cerr << "b = " << b << endl; + exit (1); + } +} + + +static void +ulcheck (ULONG a, LINT& b, int line) +{ + if (!(b >= 0)) // Check value of of b.init implicitly + { + cerr << "Error in line " << line << endl; + cerr << "Object not initialized" << endl; + } + + if (b.Get_Warning_Status () != E_LINT_OK) + { + cerr << "Error in line " << line << endl; + cerr << "Object status not OK" << endl; + cerr << "Warning status = " << (int)b.Get_Warning_Status() << endl; + } + + if (LINT (a) != b) + { + cerr << "Error in line " << line << endl; + cerr << "a = " << a << endl; + cerr << "b = " << b << endl; + exit (1); + } +} + + +void local_error_handler (LINT_ERRORS err, const char* func, int arg, int line, const char* file) +{ + +#ifdef LINT_EX + if (err = E_LINT_OFL) + throw LINT_OFL (func, line, __FILE__); +#endif + + return; +} + + diff --git a/flint/test/testdiv.c b/flint/test/testdiv.c new file mode 100644 index 0000000..f42e5c7 --- /dev/null +++ b/flint/test/testdiv.c @@ -0,0 +1,733 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testdiv.c Revision: 07.05.2003 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 26.01.2002: */ +/* Added test with product and factors of Bonn-University-factorization */ +/* from January 2002 */ +/* 07.02.2003: */ +/* Added test with product and factors of Bonn-University-factorization */ +/* of RSA-160 from March 2003 */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int neu_test (unsigned int nooftests); +static int small_divisors_test (unsigned int nooftests); +static int divsub_test (unsigned int nooftests); +static int divrem_test (unsigned int nooftests); +static int rsaXXX_test (void); +static int S5_test (void); +static int mod_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); + +static void ldzrand_l (CLINT n_l, int bits); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + neu_test (1000); + small_divisors_test (1000); + rsaXXX_test (); + S5_test (); + divsub_test (1000); + divrem_test (10000); + mod_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int neu_test (unsigned int nooftests) +{ + unsigned long i = 1; + + /* Test division by 0 */ + + rand_l (r1_l, CLINTRNDLN); + setzero_l (r2_l); + if (0 == div_l (r1_l, r2_l, r3_l, r4_l)) + { + printf ("Error: Division by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + + /* Test division 0 by value > 0 */ + + setzero_l (r1_l); + rand_l (r2_l, CLINTRNDLN); + div_l (r1_l, r2_l, r3_l, r4_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + + + printf ("Test with 1 as neutral element...\n"); + + setone_l (r2_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + div_l (r1_l, r2_l, r3_l, r4_l); + check (r3_l, r1_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 1 and leading zeros */ + ldzrand_l (r2_l, 1); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + div_l (r1_l, r2_l, r3_l, r4_l); + check (r3_l, r1_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + return 0; +} + + +static int small_divisors_test (unsigned int nooftests) +{ + unsigned int i; + clint n; + + printf ("Test division by small divisors...\n"); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + do + { + u2clint_l (r2_l, usrand64_l ()); + } + while (eqz_l (r2_l)); + div_l (r1_l, r2_l, r3_l, r4_l); + mul_l (r2_l, r3_l, r5_l); + add_l (r5_l, r4_l, r6_l); + check (r6_l, r1_l, i, __LINE__); + } + + + /* Test udiv_l() in accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + cpy_l (r0_l, r1_l); + do + { + n = usrand64_l (); + } + while (0 == n); + u2clint_l (r3_l, n); + + udiv_l (r1_l, n, r1_l, r4_l); + mul_l (r3_l, r1_l, r5_l); + add_l (r5_l, r4_l, r5_l); + check (r5_l, r0_l, i, __LINE__); + + udiv_l (r2_l, n, r5_l, r2_l); + mul_l (r3_l, r5_l, r5_l); + add_l (r5_l, r2_l, r6_l); + check (r6_l, r0_l, i, __LINE__); + } + + + /* Euclidean Test a = b * q1 + r1, b = c * q2 + r2 */ + /* ==> a = c * q1 * q2 + r3 * q1 + r1 */ + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + do + { + u2clint_l (r2_l, usrand64_l ()); + } + while (eqz_l (r2_l)); + do + { + u2clint_l (r3_l, usrand64_l ()); + } + while (eqz_l (r3_l)); + + div_l (r1_l, r2_l, r4_l, r5_l); /* r1_l = r2_l * r4_l + r5_l */ + div_l (r2_l, r3_l, r6_l, r7_l); /* r2_l = r3_l * r6_l + r7_l */ + + mul_l (r3_l, r6_l, r8_l); + mul_l (r8_l, r4_l, r8_l); + mul_l (r7_l, r4_l, r9_l); + add_l (r8_l, r9_l, r9_l); + add_l (r9_l, r5_l, r9_l); /* r9_l = r3_l*r6_l*r4_l + r7_l*r4_l + r5_l */ + + check (r9_l, r1_l, i, __LINE__); + } + return 0; +} + + +static int divsub_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test division by repeated subtraction...\n"); + + for (i = 1; i <= nooftests; i++) + { + do + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, ( digits_l (r1_l) * BITPERDGT ) - ( ucrand64_l () % 11 )); + } + while (eqz_l (r2_l)); + + div_l (r1_l, r2_l, r3_l, r4_l); /* r1_l = r2_l*r3_l + r4_l */ + + setzero_l (r5_l); + while (ge_l (r1_l, r2_l)) + { + sub_l (r1_l, r2_l, r1_l); /* r1_l = r1_l - r2_l - ... - r2_l */ + /* ------ r5_l-times ------ */ + add_l (r5_l, one_l, r5_l); + } + + check (r3_l, r5_l, i, __LINE__); + check (r4_l, r1_l, i, __LINE__); + } + return 0; +} + + +static int rsaXXX_test (void) +{ + CLINT rsaXXX_l; + + printf ("Test with RSA-130 ...\n"); + + str2clint_l (rsaXXX_l, "18070820886874048059516561644059055662781025167694013" + "49170127021450056662540244048387341127590812303371781" + "887966563182013214880557", 10); + str2clint_l (r2_l, "39685999459597454290161126162883786067576449112810064" + "832555157243", 10); + str2clint_l (r3_l, "45534498646735972188403686897274408864356301263205069" + "600999044599", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 1, __LINE__); + check (r11_l, nul_l, 1, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 2, __LINE__); + check (r11_l, nul_l, 2, __LINE__); + + printf ("Test with RSA-140 ...\n"); + + str2clint_l (rsaXXX_l, "21290246318258757547497882016271517497806703963277216" + "27823338321538194998405649591136657385302191831678310" + "7387995317230889569230873441936471", 10); + str2clint_l (r2_l, "33987174230284385545301236276138758356339864959695974" + "23490929302771479", 10); + str2clint_l (r3_l, "62642001874012850961516549482644422193020371786235090" + "19111660653946049", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 3, __LINE__); + check (r11_l, nul_l, 3, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 4, __LINE__); + check (r11_l, nul_l, 4, __LINE__); + + printf ("Test with RSA-155 ...\n"); + + str2clint_l (rsaXXX_l, "10941738641570527421809707322040357612003732945449205" + "99091384213147634998428893478471799725789126733249762" + "5752899781833797076537244027146743531593354333897", 10); + str2clint_l (r2_l, "102639592829741105772054196573991675900716567808038066803" + "341933521790711307779", 10); + str2clint_l (r3_l, "106603488380168454820927220360012878679207958575989291522" + "270608237193062808643", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 3, __LINE__); + check (r11_l, nul_l, 3, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 4, __LINE__); + check (r11_l, nul_l, 4, __LINE__); + + printf ("Test with Singh-Challenge ...\n"); + + str2clint_l (rsaXXX_l, "10742788291266565907178411279942116612663921794753294" + "58887781721035546415098012187903383292623528109075067" + "2083504941996433143425558334401855808989426892463", 10); + str2clint_l (r2_l, "128442051653810314916622590289775531989649843239158643682" + "16177647043137765477", 10); + str2clint_l (r3_l, "836391832187606937820650856449710761904520026199724985596" + "729108812301394489219", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 3, __LINE__); + check (r11_l, nul_l, 3, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 4, __LINE__); + check (r11_l, nul_l, 4, __LINE__); + + printf ("Test with the Bonn University factorization 1/2002 ...\n"); + + str2clint_l (rsaXXX_l, "39505874583265144526419767800614481996020776460304936" + "45413937605157935562652945068360972784246821953509354" + "4305870490251995655335710209799226484977949442955603", 10); + str2clint_l (r2_l, "338849583746672139436839320467218152281583036860499304808" + "4925840555281177", 10); + + str2clint_l (r3_l, "116588234066712599031483765583832708181310122581463926004" + "39520994131344334162924536139", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 3, __LINE__); + check (r11_l, nul_l, 3, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 4, __LINE__); + check (r11_l, nul_l, 4, __LINE__); + + printf ("Test with RSA-160 ...\n"); + + str2clint_l (rsaXXX_l, "21527411027188897018960152013128254292577735888456759" + "80170497676778133145218859135673011059773491059602497" + "90711158521430207931466520284014061994699492757040775" + "3", 10); + + str2clint_l (r2_l, "45427892858481394071686190649738831" + "656137145778469793250959984709250004157335359", 10); + + str2clint_l (r3_l, "47388090603832016196633832303788951" + "973268922921040957944741354648812028493909367", 10); + + div_l (rsaXXX_l, r2_l, r10_l, r11_l); + check (r10_l, r3_l, 3, __LINE__); + check (r11_l, nul_l, 3, __LINE__); + + div_l (rsaXXX_l, r3_l, r10_l, r11_l); + check (r10_l, r2_l, 4, __LINE__); + check (r11_l, nul_l, 4, __LINE__); + + return 0; +} + + +static int S5_test (void) +{ + + printf ("Test of step 5 in division algorithm ...\n"); + + str2clint_l (r1_l, "e37d3abc904baba7a2ac4b6d8f782b2bf84919d2917347690d9e93d" + "cdd2b91cee9983c564cf1312206c91e74d80ba479064c8f42bd70aaaa689f80d435a" + "fc997ce853b465703c8edca", 16); + + str2clint_l (r2_l, "80b0987b72c1667c30c9156a6674c2e73e61a1fd527d4e78b3f1505" + "603c566658459b83ccfd587ba9b5fcbdc0ad09152e0ac265", 16); + + str2clint_l (r3_l, "1c48a1c798541ae0b9eb2c6327b1fffff4fe5c0e2723", 16); + + str2clint_l (r4_l, "ca2312fbb3f4c23add7655e94c3410b15c6064bd48a4e5fcc33ddf5" + "53e7cb829bf66fbfd61b4667f5ed6b387ec47c5272cf6fb", 16); + + div_l (r1_l, r2_l, r5_l, r6_l); + check (r5_l, r3_l, 1, __LINE__); + check (r6_l, r4_l, 1, __LINE__); + +#if !(CLINTMAXDIGIT < 256) + str2clint_l (r1_l, "100620a6461fc335d8d5be9d9c4039c9d6925da2f9aedea05185ead8" + "d039a84e5be1ee1858079d45afbdf46045c011b561555ac364d7706eb32a1c4d8f025" + "ab872ef4a3e6484bc35d114bf9907b7917aa5e4e3cd7adf283d672999460eddee6ca6" + "b303d534795858191cfd6a3437f1600283732ae7001d385167a951aa7affaed8f5fd8" + "e6460cf6b31fbb840494f1c1fbeda55cb4fbd78fbf467ee6da98b8e8d30bd59a87223" + "802740314567d98d6d4a1f67c6ed1b3fb2f6e77c6d14863854e857132c0863a5d3b22" + "d191b120141e1b0f7c3cd9679cdad3d19cc07b7baba609a8c0cf18af4f73fd9c8a691" + "cf942c2c3b5bea32d7f1bdfc9b40cb236b2c364ee923e4f2dafa24469b9a97d11919f" + "59b10dbb7130ddd8a68ea89f1a18e186dd9f09d06da60b14ee7fffbc1ac93d8111249" + "1c19574da97cffb4696e935d5ef9fb9896e8e51fe0405e97c485de8c53305f325b7d8" + "833effebd93e889dbefd29a847647dcf0d68ed219b92db7aa669dfa911b4c1eaf4796" + "b88c7ceec50960b14865ad5a3a0741ab4f76314888364e384c870659b51af1815ce81" + "a5685d6383a56cefc1e9296d5c0b", 16); + + str2clint_l (r2_l, "bc2adf0cec6fb67ee7b51f89c69e6ac4a8bc1493c15087b0c7b89558" + "1f6c9369bcd8ef94a5e7caf906da3949ce5a8cb04df692b293e400cc479128e5045e1" + "2d860ead1c634f2efe031", 16); + + str2clint_l (r3_l, "15cce78a7a83c62ea91adf7f4775543f5edb0cdf8f3efe09aed6073b" + "7e55178d7fc577c6582675fc939117e52293036e590beb42d2c10812eae3aa1c47afc" + "7b72aeacc157dd3bb8fc7210b60494c12afe4de4e4c2c08e5f9f9df408d387bac6103" + "7a9f213c607293675693cb6662103ba09aa629af48918dc8eaa0a351909962aa1a6c1" + "80021670a39eadc74988483e4b71d3c66affff99b0105495f00c87ffd13749da4bbb2" + "7cf864597bf2ea71b3fbc15649d35d066e515f60b664577760422d09546d9819b1cd4" + "289d6b6e706fcc511a8eb0a7e55cbd806d9f99d5959b79675183b878605031ca3bea4" + "665cca977b344174d4a9b8c00ec5b4a11796f52a8e8ea10373ba497947c0fa4576366" + "a3276d272895106436a7cbb607ae18115552c1e55cfebfc38b068324b67d9306e4f89" + "8ed9afc3c557f56f9efe71261a90fbc9fc27095f165c1107448a41cacd7e1831e73aa" + "2d08b6e239e313ec2301", 16); + + str2clint_l (r4_l, "48114bc17b6310f96a10965127fa5600ecd2f565e2389fe78f51a91f" + "4bf9e94128eafcc566f05322604ec7a6830b2a01ea9315da71b3e3e8c5a10c37aa8ee" + "a3557984c47441aaac8da", 16); + + div_l (r1_l, r2_l, r5_l, r6_l); + + check (r5_l, r3_l, 1, __LINE__); + check (r6_l, r4_l, 1, __LINE__); +#endif /* !(CLINTMAXDIGIT < 256) */ + + str2clint_l (r1_l, "7b952b50cba1bd5573a8e0d8ea33e3b7fa5322ece49a3663d72ef457" + "30dbaf36f1d36156c000c5614586e0debbf6cbf4913417e11f621a3845d6804c8db3b" + "2cc01b37f198016bf8f3540facf5cadc9059e969e813bf5d", 16); + + str2clint_l (r2_l, "288f8a2d3ccaf166904edea8f67aa27d540bb215d1ea0f50a7311fa7" + "d07db3b95b947fbc5e", 16); + + str2clint_l (r3_l, "30bfedf9dd29106a454370be597dd621e9d3c65731021de3ef135837" + "fb5aa548fffff09dc1cd172c95d26735eeb6e1ed9e08", 16); + + str2clint_l (r4_l, "1aa7fd2df02cafd036533325274e90705ea9249d24f121c92357853f" + "f579a38b426ccdd86d", 16); + + div_l (r1_l, r2_l, r5_l, r6_l); + + check (r5_l, r3_l, 1, __LINE__); + check (r6_l, r4_l, 1, __LINE__); + + + /* Special case: Step 5 will be executed in division with 32 bit words */ + + str2clint_l (r1_l, "1f1bf7045d135fbc248134dcb1bb953a548d16e3578b7300", 16); + + str2clint_l (r2_l, "07c6fdc11744d7ef09204d372c6ee54ed37552c7978d7131", 16); + + str2clint_l (r4_l, "7c6fdc11744d7ef09204d372c6ee54dda2d1e8c90e31f6d", 16); + + str2clint_l (r3_l, "3", 16); + + div_l (r1_l, r2_l, r5_l, r6_l); + + check (r5_l, r3_l, 1, __LINE__); + check (r6_l, r4_l, 1, __LINE__); + + return 0; +} + + +static int divrem_test (unsigned int nooftests) +{ + unsigned int i; + CLINTD d_l; + + printf ("Test of division vs. multiplication and addition...\n"); + + /* Test with max_l */ + setmax_l (r1_l); + rand_l (r2_l, CLINTMAXBIT); + div_l (r1_l, r2_l, r3_l, r4_l); + mul_l (r2_l, r3_l, r5_l); + add_l (r5_l, r4_l, r6_l); + check (r6_l, r1_l, 1, __LINE__); + + /* Test with double long dividend */ + rand_l (d_l, CLINTMAXBIT << 1); + rand_l (r2_l, CLINTMAXBIT); + div_l (d_l, r2_l, r3_l, r4_l); + mul_l (r2_l, r3_l, r5_l); + add_l (r5_l, r4_l, r6_l); + mod2_l (d_l, 4096, d_l); + check (r6_l, d_l, 1, __LINE__); + + /* General tests with leading zeros */ + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + div_l (r1_l, r2_l, r3_l, r4_l); + mul_l (r2_l, r3_l, r5_l); + add_l (r5_l, r4_l, r6_l); + check (r6_l, r1_l, i, __LINE__); + } + + /* General tests in accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r7_l, r1_l); + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r8_l, r2_l); + div_l (r1_l, r2_l, r1_l, r2_l); + mul_l (r8_l, r1_l, r5_l); + add_l (r5_l, r2_l, r6_l); + check (r6_l, r7_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + + div_l (r1_l, r2_l, r3_l, r4_l); + mul_l (r2_l, r3_l, r5_l); + add_l (r5_l, r4_l, r6_l); + check (r6_l, r1_l, i, __LINE__); + } + + + /* Euclidean Test a = b * q1 + r1, b = c * q2 + r2 */ + /* ==> a = c * q1 * q2 + r3 * q1 + r1 */ + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + nzrand_l (r3_l, CLINTRNDLN); /*lint !e666*/ + + div_l (r1_l, r2_l, r4_l, r5_l); /* r1_l = r2_l * r4_l + r5_l */ + div_l (r2_l, r3_l, r6_l, r7_l); /* r2_l = r3_l * r6_l + r7_l */ + + mul_l (r3_l, r6_l, r8_l); + mul_l (r8_l, r4_l, r8_l); + mul_l (r7_l, r4_l, r9_l); + add_l (r8_l, r9_l, r9_l); + add_l (r9_l, r5_l, r9_l); /* r9_l = r3_l*r6_l*r4_l + r7_l*r4_l + r5_l */ + + check (r9_l, r1_l, i, __LINE__); + } + return 0; +} + + +static int mod_test (unsigned int nooftests) +{ + unsigned int i, j; + clint n; + clintd k; + printf ("Test reduction with mod_l, mod2_l, and umod_l...\n"); + + + /* Test of mod_l */ + + if (0 == mod_l (one_l, nul_l, r1_l)) + { + fprintf (stderr, "Error: Reduction by 0 not detected by mod_l() in line %d\n", __LINE__); + exit (-1); + } + + /* Test with modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + mod_l (r1_l, one_l, r3_l); + check (r3_l, nul_l, 0, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r2_l, CLINTRNDLN); /*lint !e666*/ + + div_l (r1_l, r2_l, r3_l, r4_l); + mod_l (r1_l, r2_l, r5_l); + check (r5_l, r4_l, i, __LINE__); + } + + + /* Test of mod2_l */ + + /* Test of mod2_l with 0 */ + mod2_l (nul_l, 0, r0_l); + mod_l (nul_l, one_l, r4_l); + check (r0_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + + k = 0; + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, one_l); + mod2_l (r0_l, k, r0_l); + mod_l (r1_l, one_l, r4_l); + check (r0_l, r4_l, i, __LINE__); + + + /* Test of mod2_l in accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + k = ulrand64_l () % MAXTESTLEN; + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, one_l); + for (j = 1; j <= k; j++) + { + mul_l (r2_l, two_l, r2_l); + } + mod2_l (r0_l, k, r0_l); + mod_l (r1_l, r2_l, r4_l); + check (r0_l, r4_l, i, __LINE__); + } + + + /* Test of umod_l() */ + + /* Reduction by 0 */ + if (BASEMINONE != umod_l (one_l, 0)) + { + fprintf (stderr, "Error: Reduction by 0 not detected by umod_l() in line %d\n", __LINE__); + exit (-1); + } + + /* Modulus = 1 */ + if (0 != umod_l (two_l, 1)) + { + fprintf (stderr, "Error: Error in reduction mod 1 in umod_l() in line %d\n", __LINE__); + exit (-1); + } + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + n = usrand64_l (); + u2clint_l (r1_l, n); + + u2clint_l (r2_l, umod_l (r0_l, n)); + if (!mequ_l (r0_l, r2_l, r1_l)) + { + fprintf (stderr, "Error in umod_l() in test %d/line %d\n", i, __LINE__); + exit (-1); + } + } + + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in div_l() in test %d/line %d\n", test, line); + disperr_l ("Dividend = ", r1_l); /*lint !e666 */ + disperr_l ("Divisor = ", r2_l); /*lint !e666 */ + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testdll.bat b/flint/test/testdll.bat new file mode 100644 index 0000000..4f34041 --- /dev/null +++ b/flint/test/testdll.bat @@ -0,0 +1,238 @@ +@echo off +REM ************************************************************************** +REM Software supplement to the book "Cryptography in C and C++" +REM by Michael Welschenbach +REM +REM File testdll.bat +REM Batch file for running the FLINT/C testsuite under Windows +REM Usage: testdll [reg bas add sub mul sqr div madd msub mmul msqr shift set +REM bool iroot gcd mexp ripe sha1 con ari xgcd root chin prrt] +REM +REM Copyright (C) 1998-2005 by Michael Welschenbach +REM Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg +REM Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA +REM Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland +REM Copyright (C) 2002-2005 by PHEI, P.R.China +REM Copyright (C) 2002-2005 by InfoBook, Korea +REM Copyright (C) 2002-2005 by Triumph Publishing, Russia +REM +REM All Rights Reserved +REM +REM The software may be used for noncommercial purposes and may be altered, +REM as long as the following conditions are accepted without any +REM qualification: +REM +REM (1) All changes to the sources must be identified in such a way that the +REM changed software cannot be misinterpreted as the original software. +REM +REM (2) The statements of copyright may not be removed or altered. +REM +REM (3) The following DISCLAIMER is accepted: +REM +REM DISCLAIMER: +REM +REM There is no warranty for the software contained on this CD-ROM, to the +REM extent permitted by applicable law. The copyright holders provide the +REM software `as is' without warranty of any kind, either expressed or +REM implied, including, but not limited to, the implied warranty of fitness +REM for a particular purpose. The entire risk as to the quality and +REM performance of the program is with you. +REM +REM In no event unless required by applicable law or agreed to in writing +REM will the copyright holders, or any of the individual authors named in +REM the source files, be liable to you for damages, including any general, +REM special, incidental or consequential damages arising out of any use of +REM the software or out of inability to use the software (including but not +REM limited to any financial losses, loss of data or data being rendered +REM inaccurate or losses sustained by you or by third parties as a result of +REM a failure of the software to operate with any other programs), even if +REM such holder or other party has been advised of the possibility of such +REM damages. +REM ************************************************************************** + + +cl -c -O2 -W3 -DFLINT_USEDLL -nologo -I..\src ..\src\flintpp.cpp + +if not %1~ == ~ goto %1 + +REM Test of linear congruential generator +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testrand.c ..\lib\dll\flint.lib +testrand +if not errorlevel 0 goto err + +REM Test of BBS-Generator +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testbbs.c ..\lib\dll\flint.lib +REM testbbs takes a long time... +REM testbbs +if not errorlevel 0 goto err + +REM Test of registers +:reg +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testreg.c ..\lib\dll\flint.lib +testreg +if not errorlevel 0 goto err + +REM Test of base functions +:bas +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testbas.c ..\lib\dll\flint.lib +testbas +if not errorlevel 0 goto err + +REM Test of addition +:add +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testadd.c ..\lib\dll\flint.lib +testadd +if not errorlevel 0 goto err + +REM Test of subtraction +:sub +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testsub.c ..\lib\dll\flint.lib +testsub +if not errorlevel 0 goto err + +REM Test of multiplication +:mul +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmul.c ..\lib\dll\flint.lib +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testkar.c ..\src\kmul.c ..\lib\dll\flint.lib +testmul +if not errorlevel 0 goto err +testkar +if not errorlevel 0 goto err + +REM Test of Squaring +:sqr +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testsqr.c ..\lib\dll\flint.lib +testsqr +if not errorlevel 0 goto err + +REM Test of integer division +:div +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testdiv.c ..\lib\dll\flint.lib +testdiv +if not errorlevel 0 goto err + +REM Test of modular addition +:madd +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmadd.c ..\lib\dll\flint.lib +testmadd +if not errorlevel 0 goto err + +REM Test of modular subtraction +:msub +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmsub.c ..\lib\dll\flint.lib +testmsub +if not errorlevel 0 goto err + +REM Test of modular multiplication +:mmul +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmmul.c ..\lib\dll\flint.lib +testmmul +if not errorlevel 0 goto err + +REM Test of modular squaring +:msqr +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmsqr.c ..\lib\dll\flint.lib +testmsqr +if not errorlevel 0 goto err + +REM Test of shift operations +:shift +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testshft.c ..\lib\dll\flint.lib +testshft +if not errorlevel 0 goto err + +REM Test of functions for bit access +:set +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testset.c ..\lib\dll\flint.lib +testset +if not errorlevel 0 goto err + +REM Test of Boolean functions +:bool +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testbool.c ..\lib\dll\flint.lib +testbool +if not errorlevel 0 goto err + +REM Test of calculation of integer square roots +:iroot +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testiroo.c ..\lib\dll\flint.lib +testiroo +if not errorlevel 0 goto err + +REM Test of gcd, xgcd +:gcd +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testgcd.c ..\lib\dll\flint.lib +testgcd +if not errorlevel 0 goto err + +REM Test of modular exponentiation +:mexp +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testmexp.c ..\lib\dll\flint.lib +testmexp +if not errorlevel 0 goto err + +REM Test of RIPED160 +:ripe +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testripe.c ..\src\ripemd.c +testripe +if not errorlevel 0 goto err + +REM Test of SHA-1, SHA-256 +:sha1 +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testsha1.c ..\lib\dll\flint.lib +testsha1 +if not errorlevel 0 goto err +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testsha256.c ..\lib\dll\flint.lib +testsha256 +if not errorlevel 0 goto err + +REM Test of LINT constructors +:con +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testcnst.cpp ..\lib\dll\flint.lib flintpp.obj +testcnst +if not errorlevel 0 goto err + +REM Test of LINT arithmetic +:ari +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testari.cpp ..\lib\dll\flint.lib flintpp.obj +testari +if not errorlevel 0 goto err + +REM Test of calculation of eXtended Euclidean Algorithm +:xgcd +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testxgcd.cpp ..\lib\dll\flint.lib flintpp.obj +testxgcd +if not errorlevel 0 goto err + +REM Test of LINT-Functions isprime, gcd, jacobi and root +:root +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testroot.cpp randompp.obj flintpp.obj ..\lib\dll\flint.lib +testroot +if not errorlevel 0 goto err + +REM Test of LINT-Function chinrest +:chin +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testchin.cpp ..\lib\dll\flint.lib flintpp.obj +testchin +if not errorlevel 0 goto err + +REM Test of LINT-Function primroot +:prrt +cl -O2 -W3 -DFLINT_USEDLL -nologo -I..\src testprrt.cpp ..\lib\dll\flint.lib flintpp.obj +testprrt +if not errorlevel 0 goto err + + +goto exit + +:err +echo Error in test module +quit 255 + +:exit +echo All tests OK + + + + + diff --git a/flint/test/testgcc.bat b/flint/test/testgcc.bat new file mode 100644 index 0000000..fa66298 --- /dev/null +++ b/flint/test/testgcc.bat @@ -0,0 +1,243 @@ +@echo off +REM ************************************************************************** +REM Software supplement to the book "Cryptography in C and C++" +REM by Michael Welschenbach, published by Apress Berkeley CA, 2001 +REM +REM File testgcc.bat +REM Batch file for running the FLINT/C testsuite under DOS and Windows +REM Usage: testgcc [reg bas add sub mul sqr div madd msub mmul msqr shift set +REM bool iroot gcd mexp ripe sha1 con ari xgcd root chin prrt] +REM +REM Copyright (C) 1998-2005 by Michael Welschenbach +REM Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg +REM Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA +REM Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland +REM Copyright (C) 2002-2005 by PHEI, P.R.China +REM Copyright (C) 2002-2005 by InfoBook, Korea +REM Copyright (C) 2002-2005 by Triumph Publishing, Russia +REM +REM All Rights Reserved +REM +REM The software may be used for noncommercial purposes and may be altered, +REM as long as the following conditions are accepted without any +REM qualification: +REM +REM (1) All changes to the sources must be identified in such a way that the +REM changed software cannot be misinterpreted as the original software. +REM +REM (2) The statements of copyright may not be removed or altered. +REM +REM (3) The following DISCLAIMER is accepted: +REM +REM DISCLAIMER: +REM +REM There is no warranty for the software contained on this CD-ROM, to the +REM extent permitted by applicable law. The copyright holders provide the +REM software `as is' without warranty of any kind, either expressed or +REM implied, including, but not limited to, the implied warranty of fitness +REM for a particular purpose. The entire risk as to the quality and +REM performance of the program is with you. +REM +REM In no event unless required by applicable law or agreed to in writing +REM will the copyright holders, or any of the individual authors named in +REM the source files, be liable to you for damages, including any general, +REM special, incidental or consequential damages arising out of any use of +REM the software or out of inability to use the software (including but not +REM limited to any financial losses, loss of data or data being rendered +REM inaccurate or losses sustained by you or by third parties as a result of +REM a failure of the software to operate with any other programs), even if +REM such holder or other party has been advised of the possibility of such +REM damages. +REM ************************************************************************** + + +gcc -c -O2 -Wall -ansi -I../src -o flint.o ../src/flint.c +gcc -c -O2 -Wall -ansi -I../src -o flintpp.o ../src/flintpp.cpp +gcc -c -O2 -Wall -ansi -I../src -o aes.o ../src/aes.c +gcc -c -O2 -Wall -ansi -I../src -o random.o ../src/random.c +gcc -c -O2 -Wall -ansi -I../src -o entropy.o ../src/entropy.c +gcc -c -O2 -Wall -ansi -I../src -o ripemd.o ../src/ripemd.c +gcc -c -O2 -Wall -ansi -I../src -o sha1.o ../src/sha1.c +gcc -c -O2 -Wall -ansi -I../src -o sha1.o ../src/sha256.c +gcc -c -O2 -Wall -ansi -I../src -o randompp.o ../src/randompp.cpp + +if not %1~ == ~ goto %1 + +REM Test of linear congruential generator +gcc -O2 -Wall -ansi -I../src -o testrand.exe testrand.c flint.o +testrand +if not errorlevel 0 goto err + +REM Test of BBS-Generator +:bbs +gcc -O2 -Wall -ansi -I../src -o testbbs.exe testbbs.c aes.o random.o entropy.o ripemd.o sha1.o flint.o +REM testbbs takes a long time... +REM testbbs +if not errorlevel 0 goto err + +REM Test of registers +:reg +gcc -O2 -Wall -ansi -I../src -o testreg.exe testreg.c flint.o +testreg +if not errorlevel 0 goto err + +REM Test of base functions +:bas +gcc -O2 -Wall -ansi -I../src -o testbas.exe testbas.c flint.o +testbas +if not errorlevel 0 goto err + +REM Test of addition +:add +gcc -O2 -Wall -ansi -I../src -o testadd.exe testadd.c flint.o +testadd +if not errorlevel 0 goto err + +REM Test of subtraction +:sub +gcc -O2 -Wall -ansi -I../src -o testsub.exe testsub.c flint.o +testsub +if not errorlevel 0 goto err + +REM Test of multiplication +:mul +gcc -O2 -Wall -ansi -I../src -o testmul.exe testmul.c flint.o +gcc -O2 -Wall -ansi -I../src -o testkar.exe testkar.c ../src/kmul.c flint.o +testmul +if not errorlevel 0 goto err +testkar +if not errorlevel 0 goto err + +REM Test of Squaring +:sqr +gcc -O2 -Wall -ansi -I../src -o testsqr.exe testsqr.c flint.o +testsqr +if not errorlevel 0 goto err + +REM Test of integer division +:div +gcc -O2 -Wall -ansi -I../src -o testdiv.exe testdiv.c flint.o +testdiv +if not errorlevel 0 goto err + +REM Test of modular addition +:madd +gcc -O2 -Wall -ansi -I../src -o testmadd.exe testmadd.c flint.o +testmadd +if not errorlevel 0 goto err + +REM Test of modular subtraction +:msub +gcc -O2 -Wall -ansi -I../src -o testmsub.exe testmsub.c flint.o +testmsub +if not errorlevel 0 goto err + +REM Test of modular multiplication +:mmul +gcc -O2 -Wall -ansi -I../src -o testmmul.exe testmmul.c flint.o +testmmul +if not errorlevel 0 goto err + +REM Test of modular squaring +:msqr +gcc -O2 -Wall -ansi -I../src -o testmsqr.exe testmsqr.c flint.o +testmsqr +if not errorlevel 0 goto err + +REM Test of shift operations +:shift +gcc -O2 -Wall -ansi -I../src -o testshft.exe testshft.c flint.o +testshft +if not errorlevel 0 goto err + +REM Test of functions for bit access +:set +gcc -O2 -Wall -ansi -I../src -o testset.exe testset.c flint.o +testset +if not errorlevel 0 goto err + +REM Test of Boolean functions +:bool +gcc -O2 -Wall -ansi -I../src -o testbool.exe testbool.c flint.o +testbool +if not errorlevel 0 goto err + +REM Test of calculation of integer square roots +:iroot +gcc -O2 -Wall -ansi -I../src -o testiroo.exe testiroo.c flint.o +testiroo +if not errorlevel 0 goto err + +REM Test of gcd, xgcd +:gcd +gcc -O2 -Wall -ansi -I../src -o testgcd.exe testgcd.c flint.o +testgcd +if not errorlevel 0 goto err + +REM Test of modular exponentiation +:mexp +gcc -O2 -Wall -ansi -I../src -o testmexp.exe testmexp.c flint.o +testmexp +if not errorlevel 0 goto err + +REM Test of RIPEMD160 +:ripe +gcc -O2 -Wall -ansi -I../src -o testripe.exe testripe.c ../src/ripemd.c +testripe +if not errorlevel 0 goto err + +REM Test of SHA-1, SHA-256 +:sha1 +gcc -O2 -Wall -ansi -I../src -o testsha1.exe testsha1.c sha1.o +testsha1 +if not errorlevel 0 goto err +gcc -O2 -Wall -ansi -I../src -o testsha256.exe testsha256.c sha256.o +testsha256 +if not errorlevel 0 goto err + +REM Test of LINT constructors +:con +gcc -O2 -Wall -ansi -I../src -o testcnst.exe testcnst.cpp flint.o flintpp.o -lstdc++ +testcnst +if not errorlevel 0 goto err + +REM Test of LINT arithmetic +:ari +gcc -O2 -Wall -ansi -I../src -o testari.exe testari.cpp flint.o flintpp.o -lstdc++ +testari +if not errorlevel 0 goto err + +REM Test of calculation of eXtended Euclidean Algorithm +:xgcd +gcc -O2 -Wall -ansi -I../src -o testxgcd.exe testxgcd.cpp flint.o flintpp.o -lstdc++ +testxgcd +if not errorlevel 0 goto err + +REM Test of LINT-Functions isprime, gcd, jacobi and root +:root +gcc -O2 -Wall -ansi -I../src -o testroot.exe testroot.cpp aes.o random.o entropy.o ripemd.o sha1.o randompp.o flint.o flintpp.o -lstdc++ +testroot +if not errorlevel 0 goto err + +REM Test of LINT-Function chinrest +:chin +gcc -O2 -Wall -ansi -I../src -o testchin.exe testchin.cpp flint.o flintpp.o -lstdc++ +testchin +if not errorlevel 0 goto err + +REM Test of LINT-Function primroot +:prrt +gcc -O2 -Wall -ansi -I../src -o testprrt.exe testprrt.cpp flint.o flintpp.o -lstdc++ +testprrt +if not errorlevel 0 goto err + + +goto exit + +:err +echo Error in test module +quit 255 + +:exit +echo All tests O.K. + diff --git a/flint/test/testgcca.bat b/flint/test/testgcca.bat new file mode 100644 index 0000000..1f5a8c9 --- /dev/null +++ b/flint/test/testgcca.bat @@ -0,0 +1,246 @@ +@echo off +REM ************************************************************************** +REM Software supplement to the book "Cryptography in C and C++" +REM by Michael Welschenbach, published by Apress Berkeley CA, 2001 +REM +REM File testgcca.bat +REM Batch file for running the FLINT/C testsuite with gcc under Windows +REM with support of assembler functions. +REM Usage: testgcca [reg bas add sub mul sqr div madd msub mmul msqr shift set +REM bool iroot gcd mexp ripe sha1 con ari xgcd root chin prrt] +REM +REM Copyright (C) 1998-2005 by Michael Welschenbach +REM Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg +REM Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA +REM Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland +REM Copyright (C) 2002-2005 by PHEI, P.R.China +REM Copyright (C) 2002-2005 by InfoBook, Korea +REM Copyright (C) 2002-2005 by Triumph Publishing, Russia +REM +REM All Rights Reserved +REM +REM The software may be used for noncommercial purposes and may be altered, +REM as long as the following conditions are accepted without any +REM qualification: +REM +REM (1) All changes to the sources must be identified in such a way that the +REM changed software cannot be misinterpreted as the original software. +REM +REM (2) The statements of copyright may not be removed or altered. +REM +REM (3) The following DISCLAIMER is accepted: +REM +REM DISCLAIMER: +REM +REM There is no warranty for the software contained on this CD-ROM, to the +REM extent permitted by applicable law. The copyright holders provide the +REM software `as is' without warranty of any kind, either expressed or +REM implied, including, but not limited to, the implied warranty of fitness +REM for a particular purpose. The entire risk as to the quality and +REM performance of the program is with you. +REM +REM In no event unless required by applicable law or agreed to in writing +REM will the copyright holders, or any of the individual authors named in +REM the source files, be liable to you for damages, including any general, +REM special, incidental or consequential damages arising out of any use of +REM the software or out of inability to use the software (including but not +REM limited to any financial losses, loss of data or data being rendered +REM inaccurate or losses sustained by you or by third parties as a result of +REM a failure of the software to operate with any other programs), even if +REM such holder or other party has been advised of the possibility of such +REM damages. +REM ************************************************************************** + + +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o flint.o ../src/flint.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o flintpp.o ../src/flintpp.cpp +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o random.o ../src/random.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o entropy.o ../src/entropy.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o aes.o ../src/aes.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o ripemd.o ../src/ripemd.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o sha1.o ../src/sha1.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o sha1.o ../src/sha256.c +gcc -c -O2 -Wall -ansi -I../src -DFLINT_ASM -o randompp.o ../src/randompp.cpp +gcc -c ../src/asm/cygwin/*.s + +if not %1~ == ~ goto %1 + +REM Test of linear congruential generator +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testrand.exe testrand.c flint.o div.o mult.o umul.o sqr.o +testrand +if not errorlevel 0 goto err + +REM Test of BBS-Generator +:bbs +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testbbs.exe testbbs.c random.o entropy.o aes.o ripemd.o sha1.o flint.o div.o mult.o umul.o sqr.o +REM testbbs takes a long time... +REM testbbs +if not errorlevel 0 goto err + +REM Test of registers +:reg +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testreg.exe testreg.c flint.o div.o mult.o umul.o sqr.o +testreg +if not errorlevel 0 goto err + +REM Test of base functions +:bas +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testbas.exe testbas.c flint.o div.o mult.o umul.o sqr.o +testbas +if not errorlevel 0 goto err + +REM Test of addition +:add +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testadd.exe testadd.c flint.o div.o mult.o umul.o sqr.o +testadd +if not errorlevel 0 goto err + +REM Test of subtraction +:sub +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testsub.exe testsub.c flint.o div.o mult.o umul.o sqr.o +testsub +if not errorlevel 0 goto err + +REM Test of multiplication +:mul +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmul.exe testmul.c flint.o div.o mult.o umul.o sqr.o +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testkar.exe testkar.c ../src/kmul.c flint.o div.o mult.o umul.o sqr.o +testmul +if not errorlevel 0 goto err +testkar +if not errorlevel 0 goto err + +REM Test of Squaring +:sqr +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testsqr.exe testsqr.c flint.o div.o mult.o umul.o sqr.o +testsqr +if not errorlevel 0 goto err + +REM Test of integer division +:div +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testdiv.exe testdiv.c flint.o div.o mult.o umul.o sqr.o +testdiv +if not errorlevel 0 goto err + +REM Test of modular addition +:madd +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmadd.exe testmadd.c flint.o div.o mult.o umul.o sqr.o +testmadd +if not errorlevel 0 goto err + +REM Test of modular subtraction +:msub +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmsub.exe testmsub.c flint.o div.o mult.o umul.o sqr.o +testmsub +if not errorlevel 0 goto err + +REM Test of modular multiplication +:mmul +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmmul.exe testmmul.c flint.o div.o mult.o umul.o sqr.o +testmmul +if not errorlevel 0 goto err + +REM Test of modular squaring +:msqr +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmsqr.exe testmsqr.c flint.o div.o mult.o umul.o sqr.o +testmsqr +if not errorlevel 0 goto err + +REM Test of shift operations +:shift +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testshft.exe testshft.c flint.o div.o mult.o umul.o sqr.o +testshft +if not errorlevel 0 goto err + +REM Test of functions for bit access +:set +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testset.exe testset.c flint.o div.o mult.o umul.o sqr.o +testset +if not errorlevel 0 goto err + +REM Test of Boolean functions +:bool +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testbool.exe testbool.c flint.o div.o mult.o umul.o sqr.o +testbool +if not errorlevel 0 goto err + +REM Test of calculation of integer square roots +:iroot +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testiroo.exe testiroo.c flint.o div.o mult.o umul.o sqr.o +testiroo +if not errorlevel 0 goto err + +REM Test of gcd, xgcd +:gcd +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testgcd.exe testgcd.c flint.o div.o mult.o umul.o sqr.o +testgcd +if not errorlevel 0 goto err + +REM Test of modular exponentiation +:mexp +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testmexp.exe testmexp.c flint.o div.o mult.o umul.o sqr.o +testmexp +if not errorlevel 0 goto err + +REM Test of RIPEMD160 +:ripe +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testripe.exe testripe.c ../src/ripemd.c +testripe +if not errorlevel 0 goto err + +REM Test of SHA-1, SHA-256 +:sha1 +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testsha1.exe testsha1.c sha1.o +testsha1 +if not errorlevel 0 goto err +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testsha256.exe testsha256.c sha256.o +testsha256 +if not errorlevel 0 goto err + +REM Test of LINT constructors +:con +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testcnst.exe testcnst.cpp flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testcnst +if not errorlevel 0 goto err + +REM Test of LINT arithmetic +:ari +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testari.exe testari.cpp flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testari +if not errorlevel 0 goto err + +REM Test of calculation of eXtended Euclidean Algorithm +:xgcd +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testxgcd.exe testxgcd.cpp flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testxgcd +if not errorlevel 0 goto err + +REM Test of LINT-Functions isprime, gcd, jacobi and root +:root +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testroot.exe testroot.cpp random.o entropy.o aes.o ripemd.o sha1.o randompp.o flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testroot +if not errorlevel 0 goto err + +REM Test of LINT-Function chinrest +:chin +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testchin.exe testchin.cpp flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testchin +if not errorlevel 0 goto err + +REM Test of LINT-Function primroot +:prrt +gcc -O2 -Wall -ansi -I../src -L../lib -DFLINT_ASM -o testprrt.exe testprrt.cpp flint.o div.o mult.o umul.o sqr.o flintpp.o -lstdc++ +testprrt +if not errorlevel 0 goto err + + +goto exit + +:err +echo Error in test module +quit 255 + +:exit +*del *.o +echo All tests O.K. + diff --git a/flint/test/testgcd.c b/flint/test/testgcd.c new file mode 100644 index 0000000..5f36c6c --- /dev/null +++ b/flint/test/testgcd.c @@ -0,0 +1,338 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testgcd.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include + +#include "flint.h" + +#define MAXTESTLEN (CLINTMAXBIT) +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int trivial_tests (void); +static int three_integers_tests (int); +static int distributive_tests (int); +static int general_tests (int); +static int check (CLINT, CLINT, CLINT, CLINT, CLINT, int, CLINT, int, int, int); +static int check_inv (CLINT, CLINT, CLINT, CLINT, CLINT, int, int); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + + trivial_tests (); + three_integers_tests (1000); + distributive_tests (1000); + general_tests (1000); + + printf ("All tests in %s passed.\n", __FILE__); + + return 0; +} + + +static int +trivial_tests (void) +{ + CLINTD a_l, b_l, c1_l, c2_l, u_l, v_l; + int i = 1, su, sv; + + printf ("Trivial tests with small constants ...\n"); + + setzero_l (a_l); + setone_l (b_l); + gcd_l (a_l, b_l, c1_l); + xgcd_l (a_l, b_l, c2_l, u_l, &su, v_l, &sv); + check (a_l, b_l, c1_l, c2_l, u_l, su, v_l, sv, __LINE__, i++); + inv_l (a_l, b_l, u_l, v_l); + check_inv (a_l, b_l, c1_l, u_l, v_l, __LINE__, i++); + + setone_l (a_l); + setone_l (b_l); + gcd_l (a_l, b_l, c1_l); + xgcd_l (a_l, b_l, c2_l, u_l, &su, v_l, &sv); + check (a_l, b_l, c1_l, c2_l, u_l, su, v_l, sv, __LINE__, i++); + inv_l (a_l, b_l, u_l, v_l); + check_inv (a_l, b_l, c1_l, u_l, v_l, __LINE__, i++); + + setone_l (a_l); + setzero_l (b_l); + gcd_l (a_l, b_l, c1_l); + xgcd_l (a_l, b_l, c2_l, u_l, &su, v_l, &sv); + check (a_l, b_l, c1_l, c2_l, u_l, su, v_l, sv, __LINE__, i++); + inv_l (a_l, b_l, u_l, v_l); + check_inv (a_l, b_l, c1_l, u_l, v_l, __LINE__, i++); + + settwo_l (a_l); + settwo_l (b_l); + gcd_l (a_l, b_l, c1_l); + xgcd_l (a_l, b_l, c2_l, u_l, &su, v_l, &sv); + check (a_l, b_l, c1_l, c2_l, u_l, su, v_l, sv, __LINE__, i++); + inv_l (a_l, b_l, u_l, v_l); + check_inv (a_l, b_l, c1_l, u_l, v_l, __LINE__, i++); + + return 0; +} + + +static int +three_integers_tests (int nooftests) +{ + CLINT a_l, b_l, c_l, t1_l, t2_l, abc_l; + int i; + + printf ("Test gcd against lcm with three arguments...\n"); + + /* It is true that gcd (a, b, c) * lcm (ab, ac, bc) = a*b*c */ + + for (i = 1; i <= nooftests; i++) + { + nzrand_l (a_l, CLINTRNDLN/6); /* a */ + nzrand_l (b_l, CLINTRNDLN/6); /* b */ + nzrand_l (c_l, CLINTRNDLN/6); /* c */ + + mul_l (a_l, b_l, t1_l); /* a*b */ + + mul_l (t1_l, c_l, abc_l); /* a*b*c */ + + mul_l (a_l, c_l, t2_l); + lcm_l (t1_l, t2_l, t1_l); /* lcm (ab, ac) */ + + mul_l (b_l, c_l, t2_l); /* lcm (lcm (ab, ac), bc)) = */ + lcm_l (t1_l, t2_l, t1_l); /* lcm (ab, ac, bc) */ + + gcd_l (a_l, b_l, t2_l); /* gcd (a, b) */ + gcd_l (t2_l, c_l, t2_l); /* gcd (gcd (a, b), c) */ + + mul_l (t1_l, t2_l, t2_l); /* lcm (ab, ac, bc)*gcd (a, b, c) */ + + if (!equ_l (abc_l, t2_l)) /* = a*b*c */ + { + printf ("Error in test no. %d near line %d\n", i, __LINE__); + exit (-1); + } + } + + return 0; +} + + +static int +distributive_tests (int nooftests) +{ + CLINT a_l, b_l, c_l, t1_l, t2_l, t3_l; + int i; + + printf ("Test gcd against lcm with \"distributive laws\" ...\n"); + + /* distributive law: lcm(c, gcd(a, b)) = gcd(lcm(a, c), lcm(b, c)) */ + + for (i = 1; i <= nooftests; i++) + { + nzrand_l (a_l, CLINTRNDLN/3); /* a */ + nzrand_l (b_l, CLINTRNDLN/3); /* b */ + nzrand_l (c_l, CLINTRNDLN/3); /* c */ + + gcd_l (a_l, b_l, t1_l); /* gcd(a, b) */ + lcm_l (c_l, t1_l, t1_l); /* lcm(c, gcd(a, b)) */ + + lcm_l (a_l, c_l, t2_l); + lcm_l (b_l, c_l, t3_l); + + gcd_l (t2_l, t3_l, t2_l); /* gcd(lcm(a, c), lcm(b, c)) */ + + if (!equ_l (t1_l, t2_l)) + { + printf ("Error in Test #%d near line %d\n", i, __LINE__); + exit (-1); + } + } + + + /* distributive law: gcd(c, lcm(a, b)) = lcm(gcd(a, c), gcd(b, c)) */ + + for (i = 1; i <= nooftests; i++) + { + nzrand_l (a_l, CLINTRNDLN/3); /* a */ + nzrand_l (b_l, CLINTRNDLN/3); /* b */ + nzrand_l (c_l, CLINTRNDLN/3); /* c */ + + lcm_l (a_l, b_l, t1_l); /* lcm (a, b) */ + gcd_l (c_l, t1_l, t1_l); /* gcd(c, lcm(a, b)) */ + + gcd_l (a_l, c_l, t2_l); + gcd_l (b_l, c_l, t3_l); + + lcm_l (t2_l, t3_l, t2_l); /* lcm(gcd(a, c), gcd(b, c)) */ + + if (!equ_l (t1_l, t2_l)) + { + printf ("Error in test no. %d near line %d\n", i, __LINE__); + exit (-1); + } + } + + return 0; +} + + +static int +general_tests (int nooftests) +{ + CLINTD a_l, b_l, c1_l, c2_l, u_l, v_l; + int i, su, sv; + + printf ("General tests with random parameters ...\n"); + + for (i = 1; i <= nooftests; i++) + { + nzrand_l (a_l, CLINTRNDLN); + nzrand_l (b_l, CLINTRNDLN); + gcd_l (a_l, b_l, c1_l); + xgcd_l (a_l, b_l, c2_l, u_l, &su, v_l, &sv); + check (a_l, b_l, c1_l, c2_l, u_l, su, v_l, sv, __LINE__, i); + inv_l (a_l, b_l, u_l, v_l); + check_inv (a_l, b_l, c1_l, u_l, v_l, __LINE__, i++); + } + + return 0; +} + + +static int +check (CLINT a_l, + CLINT b_l, + CLINT c1_l, + CLINT c2_l, + CLINT u_l, int su, + CLINT v_l, int sv, + int line, + int test) +{ + int error = 0; + CLINT uu_l, vv_l; + + if (!equ_l (c1_l, c2_l)) + { + error = 1; + printf ("Error in calculation of gcd in test no. %d near line %d\n", test, line); + disp_l ("gcd:", c1_l); + disp_l ("\nxgcd:", c2_l); + } + + mul_l (u_l, a_l, uu_l); + mul_l (v_l, b_l, vv_l); + su = sadd (uu_l, su, vv_l, sv, uu_l); + if (( su != 1 ) || ( !equ_l (uu_l, c2_l))) + { + error = 1; + printf ("Error in calculation of factor u and v in test no. %d near line %d\n", test, line); + printf ("sign_u = %d, sign_v = %d\n", su, sv); + disp_l ("u = \n", u_l); + disp_l ("v = \n", v_l); + disp_l ("Linear combined gcd = \n", uu_l); + disp_l ("Reference-gcd = \n", c1_l); + } + + if (error) + exit (-1); + else + return 0; +} + + +static int +check_inv (CLINT a_l, + CLINT b_l, + CLINT c1_l, + CLINT g_l, + CLINT i_l, + int line, + int test) +{ + int error = 0; + CLINT n_l; + + if (!equ_l (c1_l, g_l)) + { + error = 1; + printf ("Error in calculation of gcd with inv_l() in test #%d near line %d\n", test, line); + disp_l ("a:", a_l); + disp_l ("\nb:", b_l); + disp_l ("\nggT:", c1_l); + disp_l ("\ninv_l:", g_l); + } + + if (EQONE_L (g_l) && GT_L (b_l, one_l) ) + { + mmul_l (a_l, i_l, n_l, b_l); + if (!EQONE_L (n_l)) + { + error = 1; + printf ("Error in calculation of multiplicative inverse with inv_l() in test #%d near line %d\n", test, line); + disp_l ("a:", a_l); + disp_l ("\nb:", b_l); + disp_l ("\ni:", i_l); + disp_l ("\na * i mod b:", n_l); + } + } + + if (error) + exit (-1); + else + return 0; +} diff --git a/flint/test/testiroo.c b/flint/test/testiroo.c new file mode 100644 index 0000000..775517c --- /dev/null +++ b/flint/test/testiroo.c @@ -0,0 +1,311 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testiroo.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int test_squares (unsigned int nooftests); +static int test_nonsquares (void); +static int test_iroot (unsigned int nooftests); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + test_squares (1000); + test_nonsquares (); + test_iroot (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int +test_squares (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test function issqr_l()...\n"); + printf ("Trivial tests with small constants\n"); + + u2clint_l (r0_l, 0); + u2clint_l (r1_l, 0); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected near line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root wrong near line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + u2clint_l (r0_l, 1); + u2clint_l (r1_l, 1); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected near line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root wrong near line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + u2clint_l (r0_l, 2); + u2clint_l (r1_l, 4); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected near line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root wrong near line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + u2clint_l (r0_l, 4); + u2clint_l (r1_l, 16); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected near line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root falsch near line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + u2clint_l (r0_l, 256); + ul2clint_l (r1_l, 65536); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected near line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root falsch near line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + printf ("Tests with squares...\n"); + + for (i = 1; i <= nooftests; i++) + { + nzrand_l (r0_l, CLINTRNDLN/2); + sqr_l (r0_l, r1_l); + + if (!issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square not detected in test %d near line %d\n", i, __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root falsch in test %d near line %d\n", i, __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + } + + return 0; +} + +static int +test_nonsquares (void) +{ + int i; + unsigned short p; + + printf ("Tests of issqr_l() with non-squares...\n"); + + i = 1; + p = 2; + do + { + ul2clint_l (r0_l, p); + + if (issqr_l (r0_l, r1_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square detected in test %d near line %d\n", i, __LINE__); + exit (-1); + } + + p += smallprimes[i]; + } + while (++i <= NOOFSMALLPRIMES); + + for (i = 1; i <= 5; i++) + { + nzrand_l (r0_l, 256); + + if (ISEVEN_L (r0_l)) + { + inc_l (r0_l); + } + + while (!isprime_l (r0_l)) + { + inc_l (r0_l); + inc_l (r0_l); + } + + if (issqr_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square detected in test %d near line %d\n", i, __LINE__); + exit (-1); + } + } + + return 0; +} + + +static int +test_iroot (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test function iroot_l()...\n"); + for (i = 1; i <= nooftests; i++) + { + nzrand_l (r0_l, CLINTRNDLN/2); + sqr_l (r0_l, r1_l); + + iroot_l (r1_l, r2_l); + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in issqr_l():\n"); + fprintf (stderr, "Square root wrong in line %d\n", __LINE__); + disperr_l ("Root = ", r0_l); /*lint !e666*/ + disperr_l ("Calculated value = ", r2_l); /*lint !e666*/ + exit (-1); + } + } + + return 0; +} diff --git a/flint/test/testkar.c b/flint/test/testkar.c new file mode 100644 index 0000000..4aa9b11 --- /dev/null +++ b/flint/test/testkar.c @@ -0,0 +1,463 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testkar.c Revision: 26.01.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 26.01.2002: */ +/* Added test with product and factors of Bonn-University-factorization */ +/* from January 2002 */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "kmul.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define oddrand_l(n_l,bits) do { rand_l((n_l),(bits)); n_l[1] |= 1; } while (eqz_l(n_l)) +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int rsaXXX_test (void); +static int simple_test (unsigned int nooftests); +static int overflow_test (void); +static int testkmul (int); +static int testksqr (int); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + rsaXXX_test (); + simple_test (1000); + overflow_test (); + testkmul (1000); + testksqr (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int rsaXXX_test (void) +{ + CLINT rsaXXX_l; + + printf ("Test factors of RSA-130 ...\n"); + + str2clint_l (rsaXXX_l, "18070820886874048059516561644059055662781025167694013" + "49170127021450056662540244048387341127590812303371781" + "887966563182013214880557", 10); + str2clint_l (r2_l, "39685999459597454290161126162883786067576449112810064" + "832555157243", 10); + str2clint_l (r3_l, "45534498646735972188403686897274408864356301263205069" + "600999044599", 10); + + kmul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + printf ("Test factors of RSA-140 ...\n"); + + str2clint_l (rsaXXX_l, "21290246318258757547497882016271517497806703963277216" + "27823338321538194998405649591136657385302191831678310" + "7387995317230889569230873441936471", 10); + str2clint_l (r2_l, "33987174230284385545301236276138758356339864959695974" + "23490929302771479", 10); + str2clint_l (r3_l, "62642001874012850961516549482644422193020371786235090" + "19111660653946049", 10); + + kmul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + printf ("Test factors of RSA-155 ...\n"); + + str2clint_l (rsaXXX_l, "10941738641570527421809707322040357612003732945449205" + "99091384213147634998428893478471799725789126733249762" + "5752899781833797076537244027146743531593354333897", 10); + str2clint_l (r2_l, "102639592829741105772054196573991675900716567808038066803" + "341933521790711307779", 10); + str2clint_l (r3_l, "106603488380168454820927220360012878679207958575989291522" + "270608237193062808643", 10); + + kmul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + printf ("Test factors of Singh-Challenge ...\n"); + + str2clint_l (rsaXXX_l, "10742788291266565907178411279942116612663921794753294" + "58887781721035546415098012187903383292623528109075067" + "2083504941996433143425558334401855808989426892463", 10); + str2clint_l (r2_l, "128442051653810314916622590289775531989649843239158643682" + "16177647043137765477", 10); + str2clint_l (r3_l, "836391832187606937820650856449710761904520026199724985596" + "729108812301394489219", 10); + + kmul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + printf ("Test with the Bonn University factorization 1/2002 ...\n"); + + str2clint_l (rsaXXX_l, "39505874583265144526419767800614481996020776460304936" + "45413937605157935562652945068360972784246821953509354" + "4305870490251995655335710209799226484977949442955603", 10); + str2clint_l (r2_l, "338849583746672139436839320467218152281583036860499304808" + "4925840555281177", 10); + + str2clint_l (r3_l, "116588234066712599031483765583832708181310122581463926004" + "39520994131344334162924536139", 10); + + kmul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + return 0; +} + + +static int simple_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Special cases in kmul()...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + kmul_l (r1_l, r2_l, r3_l); + check (r3_l, nul_l, i++, __LINE__); + + setzero_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + kmul_l (r1_l, r2_l, r3_l); + kmul_l (r2_l, r1_l, r4_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + kmul_l (r1_l, r2_l, r3_l); + kmul_l (r2_l, r1_l, r4_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 1 as neutral element */ + setone_l (r1_l); + setone_l (r2_l); + kmul_l (r1_l, r2_l, r3_l); + check (r3_l, one_l, i++, __LINE__); + + setone_l (r1_l); + setmax_l (r2_l); + kmul_l (r1_l, r2_l, r3_l); + kmul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i++, __LINE__); + check (r4_l, r2_l, i++, __LINE__); + + + setone_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + kmul_l (r1_l, r2_l, r3_l); + kmul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test with 1 and leading zeros in the second argument*/ + ldzrand_l (r1_l, 1); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + kmul_l (r1_l, r2_l, r3_l); + kmul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + kmul_l (r1_l, r1_l, r1_l); + kmul_l (r2_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r1_l); + kmul_l (r1_l, r2_l, r1_l); + kmul_l (r2_l, r10_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r2_l); + kmul_l (r1_l, r2_l, r2_l); + kmul_l (r1_l, r10_l, r3_l); + check (r2_l, r3_l, i, __LINE__); + } + + + /* Test ksqr_l() */ + + printf ("Special cases in ksqr()...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + ksqr_l (r1_l, r3_l); + check (r3_l, nul_l, i++, __LINE__); + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + ksqr_l (r1_l, r3_l); + check (r3_l, nul_l, i, __LINE__); + + + /* Test with 1 as neutral element */ + setone_l (r1_l); + ksqr_l (r1_l, r3_l); + check (r3_l, one_l, i++, __LINE__); + + setmax_l (r1_l); + ksqr_l (r1_l, r2_l); + sqr_l (r1_l, r3_l); + check (r2_l, r3_l, i++, __LINE__); + + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + ksqr_l (r1_l, r1_l); + sqr_l (r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + } + + return 0; +} + + +static int overflow_test (void) +{ + printf ("Test Overflow in kmul_l() and ksqr_l() ...\n"); + + setmax_l (r0_l); + sub_l (r0_l, one_l, r1_l); + + if (E_CLINT_OFL != kmul_l (r0_l, two_l, r2_l)) /* max_l * 2 = max_l - 1 */ + { + fprintf (stderr, "Error in kmul_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + if (E_CLINT_OFL != kmul_l (r0_l, r0_l, r2_l)) /* max_l * max_l = 1 */ + { + fprintf (stderr, "Error in kmul_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (one_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + if (E_CLINT_OFL != ksqr_l (r0_l, r2_l)) /* max_l * max_l = 1 */ + { + fprintf (stderr, "Error in ksqr_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (one_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in ksqr_l() in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + return 0; +} + + +/* General tests against mul_l() */ +static int testkmul (int nooftests) +{ + int i; + + printf ("Test kmul_l() against mul_l()...\n"); + + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, usrand64_l () % CLINTMAXBIT/2); + rand_l (r2_l, DIGITS_L (r0_l)*BITPERDGT); + + Assert (DIGITS_L (r0_l) == DIGITS_L (r2_l)); + + kmul_l (r0_l, r2_l, r10_l); + mul_l (r0_l, r2_l, r11_l); + check (r10_l, r11_l, i, __LINE__); + } + + return (0); +} + + +/* General tests against sqr_l() */ +static int testksqr (int nooftests) +{ + int i; + + printf ("Test ksqr_l() against sqr_l()...\n"); + + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, usrand64_l () % CLINTMAXBIT/2); + ksqr_l (r0_l, r10_l); + sqr_l (r0_l, r11_l); + check (r10_l, r11_l, i, __LINE__); + } + + return (0); +} + + +/* Auxiliary functions */ +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in test %d near line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testmadd.c b/flint/test/testmadd.c new file mode 100644 index 0000000..21542c3 --- /dev/null +++ b/flint/test/testmadd.c @@ -0,0 +1,354 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmadd.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + + +static int komm_test (unsigned int nooftests); +static int ass_test (unsigned int nooftests); +static int maddsub_test (unsigned int nooftests); +static int umadd_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); + +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + komm_test (1000); + ass_test (1000); + maddsub_test (1000); + umadd_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int komm_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Test commutative law...\n"); + + /* Test with 0 */ + + setzero_l (r1_l); + setzero_l (r2_l); + if (0 == madd_l (r1_l, r2_l, r3_l, r1_l)) + { + fprintf (stderr, "Error in madd_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + setzero_l (r1_l); + setmax_l (r2_l); + madd_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + setzero_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + + /* Test with Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + SETONE_L (r10_l); + madd_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, r0_l); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r3_l, r1_l, r10_l); + madd_l (r3_l, r0_l, r0_l, r10_l); + check (r1_l, r0_l, i, __LINE__); + madd_l (r2_l, r3_l, r10_l, r10_l); + check (r1_l, r10_l, i, __LINE__); + } + + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r4_l, r10_l); + madd_l (r3_l, r4_l, r5_l, r10_l); + + madd_l (r2_l, r3_l, r4_l, r10_l); + madd_l (r1_l, r4_l, r6_l, r10_l); + + check (r5_l, r6_l, i, __LINE__); + } + return 0; +} + + +static int maddsub_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Test with modular addition and subtraction as inverse operations...\n"); + + /* Tests with maximum number of digits */ + rand_l (r1_l, CLINTMAXBIT); + rand_l (r2_l, CLINTMAXBIT); + nzrand_l (r10_l, CLINTMAXBIT); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + msub_l (r3_l, r2_l, r4_l, r10_l); + msub_l (r3_l, r1_l, r5_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + mod_l (r2_l, r10_l, r2_l); + check (r4_l, r1_l, i, __LINE__); + check (r5_l, r2_l, i, __LINE__); + + + /* General tests with random number of digits */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + msub_l (r3_l, r2_l, r4_l, r10_l); + msub_l (r3_l, r1_l, r5_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + mod_l (r2_l, r10_l, r2_l); + check (r4_l, r1_l, i, __LINE__); + check (r5_l, r2_l, i, __LINE__); + } + + return 0; +} + + +static int umadd_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT n; + CLINT n_l; + + printf ("Test umadd_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + if (0 == umadd_l (r1_l, 2, r1_l, nul_l)) + { + fprintf (stderr, "Error in umadd_l(): reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = 0; + umadd_l (r1_l, n, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + n = usrand64_l (); + u2clint_l (n_l, n); + umadd_l (r1_l, n, r1_l, r10_l); + madd_l (r2_l, n_l, r3_l, r10_l); + check (r1_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = usrand64_l (); + u2clint_l (n_l, n); + umadd_l (r1_l, n, r3_l, r10_l); + madd_l (r1_l, n_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in madd_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + + + + + + + + diff --git a/flint/test/testmexp.c b/flint/test/testmexp.c new file mode 100644 index 0000000..a7362de --- /dev/null +++ b/flint/test/testmexp.c @@ -0,0 +1,1326 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmexp.c Revision: 20.01.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 20.01.2002: */ +/* Replaced lines */ +/* check (r3_l, one_l, i++, __LINE__); */ +/* by conditional tests */ +/* if (EQONE_L(r10_l)) */ +/* check (r3_l, nul_l, i++, __LINE__); */ +/* else */ +/* check (r3_l, one_l, i++, __LINE__); */ +/* to care for situations where power modulo 1 == zero */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNS (1 + ulrand64_l() % 512) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) +#define oddrand_l(n_l,bits) do { rand_l((n_l),(bits)); n_l[1] |= 1; } while (eqz_l(n_l)) + +/*lint -esym(666,nzrand_l,oddrand_l) */ + +static int trivial_test (void); +static int square_test (unsigned int); +static int explaw_test1 (unsigned int); +static int explaw_test2 (unsigned int); +static int accu_test (void); +static int mexp5m_test (unsigned int); +static int mexpkm_test (unsigned int); +static int wmexpm_test (unsigned int); +static int umexpm_test (unsigned int); +static int check (CLINT, CLINT, int, int); +static int check1 (CLINT, CLINT, USHORT, USHORT, USHORT, int, int); + +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + trivial_test (); + accu_test (); + square_test (100); + explaw_test1 (10); + explaw_test2 (10); + mexp5m_test (10); + mexpkm_test (10); + wmexpm_test (50); + umexpm_test (50); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int trivial_test (void) +{ + int i = 1; + USHORT k; + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, 0); + + printf ("Tests with small values: 0, 1, 2 etc....\n"); + + if (mexp5_l (r1_l, r2_l, r1_l, r10_l) == 0) + { + fprintf (stderr, "Error in mexp5_l: Reduction by zero not detected!\n"); + exit (1); + } + if (mexpk_l (r1_l, r2_l, r1_l, r10_l) == 0) + { + fprintf (stderr, "Error in mexpk_l: Reduction by zero not detected!\n"); + exit (1); + } + if (umexp_l (r1_l, usrand64_l (), r1_l, r10_l) == 0) + { + fprintf (stderr, "Error in umexp_l: Reduction by zero not detected!\n"); + exit (1); + } + if (wmexp_l (usrand64_l (), r2_l, r1_l, r10_l) == 0) + { + fprintf (stderr, "Error in wmexp_l: Reduction by zero not detected!\n"); + exit (1); + } + if (mexp2_l (r1_l, usrand64_l (), r1_l, r10_l) == 0) + { + fprintf (stderr, "Error in mexp2_l: Reduction by zero not detected!\n"); + exit (1); + } + + /* Special case: 0 with leading zeros */ + ldzrand_l (r1_l, 0); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, usrand64_l (), r3_l, r10_l); + check (r3_l, nul_l, 3, __LINE__); + wmexp_l (0, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexp2_l (r1_l, usrand64_l (), r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case leading zeros */ + ldzrand_l (r1_l, 1); + ldzrand_l (r2_l, 1); + nzrand_l (r10_l, CLINTRNDLN); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + umexp_l (r1_l, 1, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + wmexp_l (1, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexp2_l (r1_l, 0, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 0*/ + nzrand_l (r10_l, CLINTRNDLN); + mexp5_l (nul_l, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexpk_l (nul_l, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + umexp_l (nul_l, 0, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + wmexp_l (0, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexp2_l (nul_l, 0, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 2*/ + setzero_l (r1_l); + nzrand_l (r10_l, CLINTRNDLN); + mexp5_l (r1_l, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + wmexp_l (0, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexp2_l (r1_l, 1, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 0 */ + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); + setzero_l (r2_l); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + umexp_l (r1_l, 0, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + wmexp_l (usrand64_l (), r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + mexp2_l (r1_l, 0, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i++, __LINE__); + + /* Special case Base >= Modul, Exponent = 1 */ + do + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); + } + while (LT_L (r1_l, r10_l)); /* Base >= Modulus ==> Reduction required */ + setone_l (r2_l); + mod_l (r1_l, r10_l, r4_l); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + umexp_l (r1_l, 1, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + mexp2_l (r1_l, 0, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + do + { + k = usrand64_l (); + } + while (k < 3); + u2clint_l (r10_l, (USHORT)(k - 1)); /* Base > Modulus ==> Reduction */ + wmexp_l (k, r2_l, r3_l, r10_l); + u2clint_l (r4_l, k); + mod_l (r4_l, r10_l, r4_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Exponent = 0, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETZERO_L (r2_l); + u2clint_l (r10_l, 1); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 0, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + wmexp_l (2, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 1, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETONE_L (r2_l); + u2clint_l (r10_l, 1); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 1, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + wmexp_l (2, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexp2_l (r1_l, 0, r3_l, r10_l); /* Exponent is 2^0 = 1 */ + check (r3_l, nul_l, i++, __LINE__); + + /* Special case random exponent, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + u2clint_l (r10_l, 1); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 1, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + wmexp_l (2, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexp2_l (r1_l, 0, r3_l, r10_l); /* Exponent is 2^0 = 1 */ + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 1, Modulus = 3 */ + setone_l (r2_l); + u2clint_l (r10_l, 3); + mexp5_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + mexpk_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + umexp_l (two_l, 1, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + wmexp_l (2, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + mexp2_l (two_l, 0, r3_l, r10_l); /* Exponent is 2^0 = 1 */ + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3, Modulus = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r10_l, 3); + mexp5_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + mexpk_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + umexp_l (two_l, 3, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + wmexp_l (2, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 100, Exponent = 3, Modulus = 10 */ + u2clint_l (r1_l, 100); + u2clint_l (r2_l, 3); + u2clint_l (r10_l, 10); + mexp5_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + mexpk_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + umexp_l (r1_l, 3, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + wmexp_l (100, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + return 0; +} + + +static int square_test (unsigned int nooftests) +{ + unsigned i = 0; + USHORT k; + + printf ("Tests with squares...\n"); + + /* Tests against function msqr_l() */ + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); + msqr_l (r0_l, r6_l, r10_l); + mexp5_l (r0_l, two_l, r3_l, r10_l); + check (r3_l, r6_l, i, __LINE__); + mexpk_l (r0_l, two_l, r3_l, r10_l); + check (r3_l, r6_l, i, __LINE__); + umexp_l (r0_l, 2, r3_l, r10_l); + check (r3_l, r6_l, i, __LINE__); + mexp2_l (r0_l, 1, r3_l, r10_l); + check (r3_l, r6_l, i, __LINE__); + + k = usrand64_l (); + u2clint_l (r6_l, k); + msqr_l (r6_l, r6_l, r10_l); + wmexp_l (k, two_l, r3_l, r10_l); + check (r3_l, r6_l, i, __LINE__); + } + return 0; +} + + +static int explaw_test1 (unsigned int nooftests) +{ + unsigned i = 0; + USHORT k, l, n; + + printf ("Test 1 exponentiation law (this takes some time...)\n"); + + /* 1. Test exponentiation law: a^(b+c) = a^b * a^c */ + rand_l (r0_l, CLINTMAXBIT); + rand_l (r1_l, CLINTMAXBIT - 1); + rand_l (r2_l, CLINTMAXBIT - 1); + nzrand_l (r10_l, CLINTMAXBIT); + add_l (r1_l, r2_l, r3_l); + mexp5_l (r0_l, r1_l, r4_l, r10_l); /* a^b */ + mexpk_l (r0_l, r2_l, r5_l, r10_l); /* a^c */ + mmul_l (r4_l, r5_l, r5_l, r10_l); /* a^b * a^c */ + mexp5_l (r0_l, r3_l, r6_l, r10_l); /* a^(b+c) */ + check (r5_l, r6_l, i, __LINE__); + + + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + mexp5_l (r0_l, r1_l, r4_l, r10_l); /* a^b */ + mexpk_l (r0_l, r2_l, r5_l, r10_l); /* a^c */ + mmul_l (r4_l, r5_l, r5_l, r10_l); /* a^b * a^c */ + mexp5_l (r0_l, r3_l, r6_l, r10_l); /* a^(b+c) */ + check (r5_l, r6_l, i, __LINE__); + + do + { + n = 1 + (usrand64_l () % (CLINTMAXBIT - 1)); /* n > 0 */ + l = usrand64_l () % n; + k = n - l; /* n = k + l < CLINTMAXBIT */ + } + while (k == 0); + umexp_l (r0_l, k, r4_l, r10_l); /* a^b */ + umexp_l (r0_l, l, r5_l, r10_l); /* a^c */ + mmul_l (r4_l, r5_l, r5_l, r10_l); /* a^b * a^c */ + umexp_l (r0_l,n , r6_l, r10_l); /* a^(b+c) */ + check1 (r5_l, r6_l, n, k, l, i, __LINE__); + + wmexp_l (n, r1_l, r4_l, r10_l); /* a^b */ + wmexp_l (n, r2_l, r5_l, r10_l); /* a^c */ + mmul_l (r4_l, r5_l, r5_l, r10_l); /* a^b * a^c */ + wmexp_l (n, r3_l, r6_l, r10_l); /* a^(b+c) */ + check1 (r5_l, r6_l, n, k, l, i, __LINE__); + + /* Test of mexp2_l(): a^(2^k + 2^l) = (a^2^k)*a^(2^j) */ + mexp2_l (r0_l, k, r4_l, r10_l); /* a^(2^k) */ + mexp2_l (r0_l, l, r5_l, r10_l); /* a^(2^k) */ + mmul_l (r4_l, r5_l, r5_l, r10_l); /* a^b * a^c */ + setmax_l (r11_l); + umexp_l (two_l, k, r7_l, r11_l); /* r7_l = 2^k */ + umexp_l (two_l, l, r8_l, r11_l); /* r7_l = 2^l */ + add_l (r7_l, r8_l, r7_l); /* r7_l = 2^k + 2^l */ + mexpk_l (r0_l, r7_l, r6_l, r10_l); /* r6_l = a^(2^k + 2^l) */ + check1 (r5_l, r6_l, n, k, l, i, __LINE__); + } + return 0; +} + + +static int explaw_test2 (unsigned int nooftests) +{ + unsigned i = 0; + USHORT k, l, n; + + printf ("Test 2 exponentiation law (takes some time too...)\n"); + + /* 2. Test exponentiation law: a^(b*c) = (a^b)^c */ + rand_l (r0_l, CLINTMAXBIT); + rand_l (r1_l, CLINTMAXBIT / 2); + rand_l (r2_l, CLINTMAXBIT / 2); + nzrand_l (r10_l, CLINTMAXBIT); + mul_l (r1_l, r2_l, r3_l); /* r3_l = r1_l * r2_l */ + mexp5_l (r0_l, r1_l, r4_l, r10_l); /* a^b */ + mexpk_l (r4_l, r2_l, r5_l, r10_l); /* (a^b)^c */ + mexp5_l (r0_l, r3_l, r6_l, r10_l); /* a^(b*c) */ + check (r5_l, r6_l, i, __LINE__); + + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, usrand64_l () % CLINTMAXBIT / 2); + rand_l (r2_l, usrand64_l () % CLINTMAXBIT / 2); + nzrand_l (r10_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); /* r3_l = r1_l * r2_l */ + mexp5_l (r0_l, r1_l, r4_l, r10_l); /* a^b */ + mexpk_l (r4_l, r2_l, r5_l, r10_l); /* (a^b)^c */ + mexp5_l (r0_l, r3_l, r6_l, r10_l); /* a^(b*c) */ + check (r5_l, r6_l, i, __LINE__); + + mexpk_l (r0_l, r1_l, r4_l, r10_l); /* a^b */ + mexp5_l (r4_l, r2_l, r5_l, r10_l); /* (a^b)^c */ + mexpk_l (r0_l, r3_l, r6_l, r10_l); /* a^(b*c) */ + check (r5_l, r6_l, i, __LINE__); + + k = usrand64_l () % 256; + l = usrand64_l () % 256; /* k * l < 2^16 */ + umexp_l (r0_l, k, r4_l, r10_l); /* a^b */ + umexp_l (r4_l, l, r5_l, r10_l); /* (a^b)^c */ + umexp_l (r0_l, ( USHORT ) ( k * l ), r6_l, r10_l); /* a^(b*c) */ + check (r5_l, r6_l, i, __LINE__); + + n = k + l; + wmexp_l (n, r1_l, r4_l, r10_l); /* a^b */ + mexpk_l (r4_l, r2_l, r5_l, r10_l); /* (a^b)^c */ + wmexp_l (n, r3_l, r6_l, r10_l); /* a^(b*c) */ + check (r5_l, r6_l, i, __LINE__); + + k = usrand64_l () % CLINTMAXBIT / 2; + l = usrand64_l () % CLINTMAXBIT / 2; /* n = k + l < CLINTMAXBIT */ + mexp2_l (r0_l, k, r4_l, r10_l); /* a^(2^k) */ + mexp2_l (r4_l, l, r5_l, r10_l); /* (a^(2^k))^(2^l) */ + setmax_l (r11_l); + umexp_l (two_l, ( USHORT ) ( k + l ), r7_l, r11_l); /* r7_l = 2^(k+l) */ + mexpk_l (r0_l, r7_l, r6_l, r10_l); /* r6_l = a^((2^k)*(2^l)) */ + check (r5_l, r6_l, i, __LINE__); /* = a^(2^(k+l)) */ + + /* Test of mexp2_l(): e = (2^k)*u ==> a^e = (a^(2^k))^u */ + k = twofact_l (r1_l, r2_l); /* e = (2^k)*u */ + mexp2_l (r0_l, k, r3_l, r10_l); /* a^(2^k) */ + mexpk_l (r3_l, r2_l, r3_l, r10_l); /* (a^(2^k))^u */ + mexp5_l (r0_l, r1_l, r0_l, r10_l); /* a^e */ + check (r3_l, r0_l, i, __LINE__); + + } + return 0; +} + + +static int accu_test (void) +{ + USHORT k; + printf ("Test accumulator mode...\n"); + + rand_l (r0_l, 768); + nzrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, r0_l); + mexp5_l (r0_l, r0_l, r0_l, r10_l); + mexp5_l (r1_l, r1_l, r10_l, r10_l); + check (r0_l, r10_l, 1, __LINE__); + + rand_l (r0_l, 768); + nzrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, r0_l); + mexpk_l (r0_l, r0_l, r0_l, r10_l); + mexpk_l (r1_l, r1_l, r10_l, r10_l); + check (r0_l, r10_l, 2, __LINE__); + + rand_l (r0_l, 768); + nzrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + k = usrand64_l (); + umexp_l (r0_l, k, r0_l, r10_l); + umexp_l (r1_l, k, r10_l, r10_l); + check (r0_l, r10_l, 3, __LINE__); + + rand_l (r0_l, 768); + nzrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + k = usrand64_l (); + wmexp_l (k, r0_l, r0_l, r10_l); + wmexp_l (k, r1_l, r10_l, r10_l); + check (r0_l, r10_l, 4, __LINE__); + + rand_l (r0_l, 768); + nzrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + k = usrand64_l () % 768; + mexp2_l (r0_l, k, r0_l, r10_l); + mexp2_l (r1_l, k, r10_l, r10_l); + check (r0_l, r10_l, 5, __LINE__); + + return 0; +} + + +static int mexp5m_test (unsigned int nooftests) +{ + unsigned int i = 1; + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, 0); + + printf ("Tests of mexp5m_l() with small values: 0, 1, 2 etc....\n"); + + if (mexp5m_l (r1_l, r2_l, r1_l, r10_l) != E_CLINT_DBZ) + { + fprintf (stderr, "Error in mexp5m_l: Reduction by zero not detected!\n"); + exit (1); + } + + nzrand_l (r10_l, CLINTRNDLN); + r10_l[1] &= (BASEMINONE - 1); + + if (mexp5m_l (r1_l, r2_l, r1_l, r10_l) != E_CLINT_MOD) + { + fprintf (stderr, "Error in mexp5m_l: Reduction by even modulus not detected!\n"); + exit (1); + } + + + /* Special case 0 with leading zeros */ + ldzrand_l (r1_l, 0); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case leading zeros */ + ldzrand_l (r1_l, 1); + ldzrand_l (r2_l, 1); + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 0*/ + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (nul_l, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + wmexpm_l (0, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 2*/ + setzero_l (r1_l); + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (r1_l, two_l, r3_l, r10_l); + check (r3_l, nul_l, 3, __LINE__); + wmexpm_l (0, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 0 */ + rand_l (r1_l, CLINTRNDLN); + setzero_l (r2_l); + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base > Modulus, Exponent = 1 */ + do + { + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + } + while (LT_L (r1_l, r10_l)); /* Base >= Modulus ==> Reduction required */ + setone_l (r2_l); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r4_l, 8); + oddrand_l (r10_l, CLINTRNDLN); + mod_l (r4_l, r10_l, r4_l); + mexp5m_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Exponent = 0, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETZERO_L (r2_l); + u2clint_l (r10_l, 1); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 1, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETONE_L (r2_l); + u2clint_l (r10_l, 1); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case random exponent, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + u2clint_l (r10_l, 1); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 1, Modulus = 3 */ + u2clint_l (r10_l, 3); + mexp5m_l (two_l, one_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3, Modulus = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r10_l, 3); + mexp5m_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + printf ("Test accumulator mode of mexp5m_l()...\n"); + + rand_l (r0_l, 768); + oddrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + mexp5m_l (r0_l, r0_l, r0_l, r10_l); + mexp5m_l (r1_l, r1_l, r10_l, r10_l); + check (r0_l, r10_l, i++, __LINE__); + + printf ("Tests of mexp5m_l() against mexpk_l()...\n"); + + /* Modulus with maximum number of digits */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTMAXDIGIT); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + for (; i <= 500; i++) + { + rand_l (r1_l, CLINTRNDLNS); + rand_l (r2_l, CLINTRNDLNS); + oddrand_l (r10_l, CLINTRNDLNS); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + for (i = 1; i < nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + mexp5m_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + return 0; +} + + +static int mexpkm_test (unsigned int nooftests) +{ + unsigned int i = 1; + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, 0); + + printf ("Tests of mexpkm_l() with small values: 0, 1, 2 etc....\n"); + + if (mexpkm_l (r1_l, r2_l, r1_l, r10_l) != E_CLINT_DBZ) + { + fprintf (stderr, "Error in mexpkm_l: Reduction by zero not detected!\n"); + exit (1); + } + + nzrand_l (r10_l, CLINTRNDLN); + r10_l[1] &= (BASEMINONE - 1); + + if (mexpkm_l (r1_l, r2_l, r1_l, r10_l) != E_CLINT_MOD) + { + fprintf (stderr, "Error in mexpkm_l: Reduction by even modulus not detected!\n"); + exit (1); + } + + + /* Special case 0 with leading zeros */ + ldzrand_l (r1_l, 0); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case leading zeros */ + ldzrand_l (r1_l, 1); + ldzrand_l (r2_l, 1); + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 0*/ + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (nul_l, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 2*/ + setzero_l (r1_l); + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (r1_l, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 0 */ + rand_l (r1_l, CLINTRNDLN); + setzero_l (r2_l); + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base > Modulus, Exponent = 1 */ + do + { + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + } + while (LT_L (r1_l, r10_l)); /* Base >= Modulus ==> Reduction required */ + setone_l (r2_l); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r4_l, 8); + oddrand_l (r10_l, CLINTRNDLN); + mod_l (r4_l, r10_l, r4_l); + mexpkm_l (two_l, r2_l, r3_l, r10_l); + mod_l (r4_l, r10_l, r4_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Exponent = 0, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETZERO_L (r2_l); + u2clint_l (r10_l, 1); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 1, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETONE_L (r2_l); + u2clint_l (r10_l, 1); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case random exponent, Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + u2clint_l (r10_l, 1); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 1, Modulus = 3 */ + setone_l (r2_l); + u2clint_l (r10_l, 3); + mexpkm_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3, Modulus = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r10_l, 3); + mexpkm_l (two_l, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + + printf ("Akkumulator-Test of mexpkm_l()...\n"); + + rand_l (r0_l, 768); + oddrand_l (r10_l, 1024); + cpy_l (r1_l, r0_l); + mexpkm_l (r0_l, r0_l, r0_l, r10_l); + mexpkm_l (r1_l, r1_l, r10_l, r10_l); + check (r0_l, r10_l, i++, __LINE__); + + + printf ("Tests of mexpkm_l() against mexpk_l()...\n"); + + /* Modulus with maximum number of digits */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTMAXDIGIT); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + for (; i < 500; i++) + { + rand_l (r1_l, CLINTRNDLNS); + rand_l (r2_l, CLINTRNDLNS); + oddrand_l (r10_l, CLINTRNDLNS); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + for (i = 1; i < nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + mexpkm_l (r1_l, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + return 0; +} + + +static int wmexpm_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT k; + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, 0); + + printf ("Tests of wmexpm_l() with small values: 0, 1, 2 etc....\n"); + + if (wmexpm_l (1, r2_l, r1_l, r10_l) != E_CLINT_DBZ) + { + fprintf (stderr, "Error in wmexpm_l: Reduction by zero not detected!\n"); + exit (1); + } + + nzrand_l (r10_l, CLINTRNDLN); + r10_l[1] &= (BASEMINONE - 1); + + if (wmexpm_l (1, r2_l, r1_l, r10_l) != E_CLINT_MOD) + { + fprintf (stderr, "Error in wmexpm_l: Reduction by even modulus not detected!\n"); + exit (1); + } + + + /* Special case 0 with leading zeros */ + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (0, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case leading zeros */ + ldzrand_l (r2_l, 1); + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (1, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 0*/ + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (0, nul_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 2*/ + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (0, two_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 0 */ + setzero_l (r2_l); + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (1, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base > Modulus, Exponent = 1 */ + setone_l (r2_l); + do + { + k = usrand64_l (); + } + while (k < 3 || (k&1)); /* k is even */ + u2clint_l (r10_l, (USHORT)(k - 1)); /* Base > Modulus ==> Reduction */ + wmexpm_l (k, r2_l, r3_l, r10_l); + u2clint_l (r4_l, k); + mod_l (r4_l, r10_l, r4_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r4_l, 8); + oddrand_l (r10_l, CLINTRNDLN); + mod_l (r4_l, r10_l, r4_l); + wmexpm_l (2, r2_l, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Modulus = 1 */ + rand_l (r2_l, CLINTRNDLN); + u2clint_l (r10_l, 1); + wmexpm_l (2, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 1, Modulus = 3 */ + setone_l (r2_l); + u2clint_l (r10_l, 3); + wmexpm_l (2, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3, Modulus = 3 */ + u2clint_l (r2_l, 3); + u2clint_l (r10_l, 3); + wmexpm_l (2, r2_l, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + + printf ("Test accumulator mode of wmexpm_l()...\n"); + + k = usrand64_l (); + oddrand_l (r10_l, 1024); + rand_l (r0_l, 768); + cpy_l (r1_l, r0_l); + wmexpm_l (k, r0_l, r0_l, r10_l); + wmexpm_l (k, r1_l, r10_l, r10_l); + check (r0_l, r10_l, i++, __LINE__); + + + printf ("Tests of wmexpm_l() against mexpk_l()...\n"); + + /* Modulus with maximum number of digits */ + k = usrand64_l (); + u2clint_l (r1_l, k); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTMAXDIGIT); + wmexpm_l (k, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + for (; i <= 500; i++) + { + k = usrand64_l (); + u2clint_l (r1_l, k); + rand_l (r2_l, CLINTRNDLNS); + oddrand_l (r10_l, CLINTRNDLNS); + wmexpm_l (k, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + for (i = 0; i < nooftests; i++) + { + k = usrand64_l (); + u2clint_l (r1_l, k); + rand_l (r2_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + wmexpm_l (k, r2_l, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + return 0; +} + + +static int umexpm_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT e; + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, 0); + + printf ("Tests of umexpm_l() with small values: 0, 1, 2 etc....\n"); + + if (umexpm_l (r1_l, 1, r3_l, r10_l) != E_CLINT_DBZ) + { + fprintf (stderr, "Error in umexpm_l: Reduction by zero not detected!\n"); + exit (1); + } + + nzrand_l (r10_l, CLINTRNDLN); + r10_l[1] &= (BASEMINONE - 1); + + if (umexpm_l (r1_l, 1, r3_l, r10_l) != E_CLINT_MOD) + { + fprintf (stderr, "Error in umexpm_l: Reduction by even modulus not detected!\n"); + exit (1); + } + + + /* Special case 0 with leading zeros */ + do + { + e = usrand64_l (); + } + while (0 == e); + + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (nul_l, e, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case leading zeros */ + ldzrand_l (r1_l, 1); + e = usrand64_l (); + u2clint_l (r2_l, e); + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (r1_l, e, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 0*/ + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (nul_l, 0, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 0, Exponent = 2*/ + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (nul_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Exponent = 0 */ + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (r1_l, 0, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3 */ + u2clint_l (r4_l, 8); + oddrand_l (r10_l, CLINTRNDLN); + mod_l (r4_l, r10_l, r4_l); + umexpm_l (two_l, 3, r3_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Special case Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + u2clint_l (r10_l, 1); + umexpm_l (r1_l, 2, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 1, Modulus = 3 */ + u2clint_l (r10_l, 3); + umexpm_l (two_l, 1, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base = 2, Exponent = 3, Modulus = 3 */ + u2clint_l (r10_l, 3); + umexpm_l (two_l, 3, r3_l, r10_l); + check (r3_l, two_l, i++, __LINE__); + + /* Special case Base >= Modulus, Exponent = 1 */ + setone_l (r2_l); + do + { + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + } + while (LT_L (r1_l, r10_l)); + umexpm_l (r1_l, 1, r3_l, r10_l); + mod_l (r1_l, r10_l, r4_l); + check (r3_l, r4_l, i++, __LINE__); + + /* Test accumulator mode */ + printf ("Test accumulator mode of umexpm_l()...\n"); + + e = usrand64_l (); + oddrand_l (r10_l, 1024); + rand_l (r0_l, 768); + cpy_l (r1_l, r0_l); + umexpm_l (r0_l, e, r0_l, r10_l); + umexpm_l (r1_l, e, r10_l, r10_l); + check (r0_l, r10_l, i++, __LINE__); + + + printf ("Tests of umexpm_l() against mexpk_l()...\n"); + + /* Modulus with maximum number of digits */ + e = usrand64_l (); + u2clint_l (r2_l, e); + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTMAXDIGIT); + umexpm_l (r1_l, e, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i++, __LINE__); + + for (; i <= 500; i++) + { + e = usrand64_l (); + u2clint_l (r2_l, e); + rand_l (r1_l, CLINTRNDLNS); + oddrand_l (r10_l, CLINTRNDLNS); + umexpm_l (r1_l, e, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + for (i = 0; i < nooftests; i++) + { + e = usrand64_l (); + u2clint_l (r2_l, e); + rand_l (r1_l, CLINTRNDLN); + oddrand_l (r10_l, CLINTRNDLN); + umexpm_l (r1_l, e, r3_l, r10_l); + mexpk_l (r1_l, r2_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in ?mexp?_l() in test %d/line %d\n", test, line); + disperr_l ("a_l = ", r1_l); + disperr_l ("e_l = ", r2_l); + disperr_l ("m_l = ", r10_l); + disperr_l ("p1_l = ", a_l); + disperr_l ("p2_l = ", b_l); + exit (-1); + } + return 0; +} + + +static int check1 (CLINT a_l, CLINT b_l, USHORT n, USHORT k, USHORT l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in ?mexp?_l() in test %d/line %d\n", test, line); + disperr_l ("a_l = ", r0_l); + disperr_l ("m_l = ", r10_l); + disperr_l ("p1_l = ", a_l); + disperr_l ("p2_l = ", b_l); + printf ("n = %d, k = %d, l = %d\n", n, k, l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testmmul.c b/flint/test/testmmul.c new file mode 100644 index 0000000..218e6b1 --- /dev/null +++ b/flint/test/testmmul.c @@ -0,0 +1,536 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmmul.c Revision: 23.01.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 23.01.2002: */ +/* Replaced line */ +/* check (r3_l, one_l, i++, __LINE__); */ +/* by conditional test */ +/* if (EQONE_L(r10_l)) */ +/* check (r3_l, nul_l, i++, __LINE__); */ +/* else */ +/* check (r3_l, one_l, i++, __LINE__); */ +/* to care for the rare situations where product modulo 1 == 0 */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) +#define oddrand_l(n_l,bits) do { rand_l((n_l),(bits)); n_l[1] |= 1; } while (eqz_l(n_l)) + +static int komm_test (unsigned int nooftests); +static int ass_test (unsigned int nooftests); +static int dist_test (unsigned int nooftests); +static int muladd_test (unsigned int nooftests); +static int ummul_test (unsigned int nooftests); +static int mulmon_test (int); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + komm_test (1000); + muladd_test (100); + ass_test (1000); + dist_test (1000); + ummul_test (1000); + mulmon_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int komm_test (unsigned int nooftests) +{ + unsigned long i = 1; + + /* Test with 0 */ + + setzero_l (r1_l); + setzero_l (r2_l); + if (0 == mmul_l (r1_l, r2_l, r1_l, r1_l)) + { + fprintf (stderr, "Error in mmul_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + printf ("Test commutative law...\n"); + + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + setzero_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + ldzrand_l (r10_l, CLINTMAXBIT / 2); + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 1 , neutral element */ + + setone_l (r1_l); + setone_l (r2_l); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + if (EQONE_L(r10_l)) + check (r3_l, nul_l, i++, __LINE__); + else + check (r3_l, one_l, i++, __LINE__); + + setone_l (r1_l); + setmax_l (r2_l); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + mod_l (r2_l, r10_l, r2_l); + check (r3_l, r2_l, i++, __LINE__); + check (r4_l, r2_l, i++, __LINE__); + + + setone_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + mod_l (r2_l, r10_l, r2_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test with 1 and leading zeros in the second factor */ + ldzrand_l (r1_l, 1); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + mod_l (r2_l, r10_l, r2_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + cpy_l (r1_l, r0_l); + cpy_l (r2_l, r0_l); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r3_l, r1_l, r10_l); + mmul_l (r3_l, r0_l, r0_l, r10_l); + check (r1_l, r0_l, i, __LINE__); + mmul_l (r2_l, r3_l, r10_l, r10_l); + check (r1_l, r10_l, i, __LINE__); + } + + + /* Test with modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + SETONE_L (r10_l); + mmul_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r3_l, r10_l); + mmul_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + + return 0; +} + + +static int muladd_test (unsigned int nooftests) +{ + unsigned int i = 1, j, n; + + printf ("Test multiplication vs. repeated addition...\n"); + + /* Test with maximum number of digits */ + rand_l (r1_l, CLINTMAXBIT); + nzrand_l (r10_l, CLINTMAXBIT); /*lint !e666*/ + do + { + n = usrand64_l () % 1001; + } + while (n == 0); + u2clint_l (r2_l, ( USHORT ) n); + mmul_l (r1_l, r2_l, r3_l, r10_l); /* r3_l = r1_l*r2_l */ + mod_l (r1_l, r10_l, r4_l); + for (j = 1; j < n; j++) + { + madd_l (r4_l, r1_l, r4_l, r10_l); /* r2_l = r1_l + ... + r1_l */ + } /* ---- n-times ---- */ + check (r3_l, r4_l, i, __LINE__); + + /* Tests with random number of digits */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + do + { + n = usrand64_l () % 1001; + } + while (n == 0); + u2clint_l (r2_l, ( USHORT ) n); + mmul_l (r1_l, r2_l, r3_l, r10_l); /* r3_l = r1_l*r2_l */ + mod_l (r1_l, r10_l, r4_l); + for (j = 1; j < n; j++) + { + madd_l (r4_l, r1_l, r4_l, r10_l); /* r2_l = r1_l + ... + r1_l */ + } /* ---- n-times ---- */ + + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + mmul_l (r1_l, r2_l, r4_l, r10_l); + mmul_l (r3_l, r4_l, r5_l, r10_l); + + mmul_l (r2_l, r3_l, r4_l, r10_l); + mmul_l (r1_l, r4_l, r6_l, r10_l); + + check (r5_l, r6_l, i, __LINE__); + } + return 0; +} + + +static int ummul_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT n; + CLINT n_l; + + printf ("Test ummul_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + if (0 == ummul_l (r1_l, 2, r1_l, nul_l)) + { + fprintf (stderr, "Error in ummul_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = 0; + ummul_l (r1_l, n, r3_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r2_l, r1_l); + n = usrand64_l (); + u2clint_l (n_l, n); + ummul_l (r1_l, n, r1_l, r10_l); + mmul_l (r2_l, n_l, r3_l, r10_l); + check (r1_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = usrand64_l (); + u2clint_l (n_l, n); + ummul_l (r1_l, n, r3_l, r10_l); + mmul_l (r1_l, n_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int dist_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test distributive law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r0_l, r1_l, r2_l, r10_l); + mmul_l (r2_l, r3_l, r4_l, r10_l); + + mmul_l (r0_l, r3_l, r5_l, r10_l); + mmul_l (r1_l, r3_l, r6_l, r10_l); + madd_l (r5_l, r6_l, r7_l, r10_l); + check (r4_l, r7_l, i, __LINE__); + } + return 0; +} + + +/* Test of Montgomery-Multiplication */ +static int mulmon_test (int nooftests) +{ + USHORT logB_r, nprime, i = 0; + clint *rptr_l; + + printf ("Test mulmon_l()...\n"); + + if (( rptr_l = ( clint * ) malloc (2 + CLINTMAXBYTE)) == NULL) + { + fprintf (stderr, "Error in malloc in line %d\n", __LINE__); + exit (-1); + } + + rand_l (r0_l, CLINTMAXBIT); + rand_l (r2_l, CLINTMAXBIT); + + do + { + oddrand_l (r10_l, CLINTMAXBIT); /* n odd */ + } + while (GE_L (r2_l, r10_l)); /* n > b */ + + logB_r = DIGITS_L (r10_l); + SETZERO_L (rptr_l); + setbit_l (rptr_l, logB_r << LDBITPERDGT); + + Assert (DIGITS_L (rptr_l) <= 1 + CLINTMAXDIGIT); + + if (DIGITS_L (rptr_l) > CLINTMAXDIGIT) /* rptr_l < r10_l <= Nmax */ + { + mod_l (rptr_l, r10_l, rptr_l); + } + + Assert (DIGITS_L (rptr_l) <= CLINTMAXDIGIT); + + mmul_l (r0_l, rptr_l, r1_l, r10_l); /* a' = a*r mod n */ + nprime = invmon_l (r10_l); /* n^2 > a'*b */ + + mulmon_l (r1_l, r2_l, r10_l, nprime, logB_r, r3_l); /* a'x b */ + + mmul_l (r0_l, r2_l, r4_l, r10_l); /* a * b mod n */ + + check (r3_l, r4_l, i, __LINE__); + + + for (i = 1; i < nooftests; i++) + { + rand_l (r0_l, usrand64_l () % CLINTMAXBIT); + rand_l (r2_l, usrand64_l () % CLINTMAXBIT); + + do + { + oddrand_l (r10_l, usrand64_l () % CLINTMAXBIT); /* n odd */ + } + while (GE_L (r2_l, r10_l)); /* n > b */ + + logB_r = DIGITS_L (r10_l); + SETZERO_L (rptr_l); + setbit_l (rptr_l, logB_r << LDBITPERDGT); + + Assert (DIGITS_L (rptr_l) <= 1 + CLINTMAXDIGIT); + + if (DIGITS_L (rptr_l) > CLINTMAXDIGIT) /* rptr_l < r10_l <= MaxB */ + { + mod_l (rptr_l, r10_l, rptr_l); + } + + Assert (DIGITS_L (rptr_l) <= CLINTMAXDIGIT + 1); + + mmul_l (r0_l, rptr_l, r1_l, r10_l); /* a' = a*r mod n */ + nprime = invmon_l (r10_l); /* n^2 > a'*b */ + + mulmon_l (r1_l, r2_l, r10_l, nprime, logB_r, r3_l); /* a'x b */ + + mmul_l (r0_l, r2_l, r4_l, r10_l); /* a * b mod n */ + + check (r3_l, r4_l, i, __LINE__); + } + + free (rptr_l); + return (0); +} + + +/* Auxiliary functions */ + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in test%d/line %d\n", test, line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in mmul_l() in test %d/line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + disperr_l ("r10_l = ", r10_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + + i = digits_l (n_l); + + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + + diff --git a/flint/test/testmsqr.c b/flint/test/testmsqr.c new file mode 100644 index 0000000..78a6207 --- /dev/null +++ b/flint/test/testmsqr.c @@ -0,0 +1,416 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmsqr.c Revision: 23.01.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 23.01.2002: */ +/* Replaced line */ +/* check (r2_l, one_l, i++, __LINE__); */ +/* by conditional test */ +/* if (EQONE_L(r10_l)) */ +/* check (r2_l, nul_l, i++, __LINE__); */ +/* else */ +/* check (r2_l, one_l, i++, __LINE__); */ +/* to care for the rare situations where square modulo 1 == 0 */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) +#define oddrand_l(n_l,bits) do { rand_l((n_l),(bits)); n_l[1] |= 1; } while (eqz_l(n_l)) + +static int neu_test (void); +static int sqrmul_test (unsigned int nooftests); +static int pot_test (unsigned int nooftests); +static int dist_test (unsigned int nooftests); +static int binom_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static int sqrmon_test (int nooftests); +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + neu_test (); + sqrmul_test (1000); + pot_test (1000); + binom_test (1000); + dist_test (1000); + sqrmon_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int neu_test (void) +{ + unsigned long i = 1; + + /* Test with 0 */ + + setzero_l (r1_l); + if (0 == msqr_l (r1_l, r1_l, r1_l)) + { + fprintf (stderr, "Error in msqr_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msqr_l (r1_l, r2_l, r10_l); + check (r2_l, nul_l, i++, __LINE__); + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + msqr_l (r1_l, r2_l, r10_l); + check (r2_l, nul_l, i++, __LINE__); + + + printf ("Neutral element...\n"); + + /* Test with 1 as neutral element */ + setone_l (r1_l); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msqr_l (r1_l, r2_l, r10_l); + if (EQONE_L(r10_l)) + check (r2_l, nul_l, i++, __LINE__); + else + check (r2_l, one_l, i++, __LINE__); + + setmax_l (r1_l); + msqr_l (r1_l, r2_l, r10_l); + mmul_l (r1_l, r1_l, r3_l, r10_l); + check (r3_l, r2_l, i++, __LINE__); + + /* Test with modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + SETONE_L (r10_l); + msqr_l (r1_l, r3_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + + return 0; +} + + +static int sqrmul_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test against multiplication...\n"); + + /* Test vs. multiplication in accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r11_l, r10_l); + msqr_l (r1_l, r10_l, r10_l); + mmul_l (r1_l, r1_l, r3_l, r11_l); + check (r3_l, r10_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r11_l, r1_l); + msqr_l (r1_l, r1_l, r10_l); + mmul_l (r11_l, r11_l, r3_l, r10_l); + check (r3_l, r1_l, i, __LINE__); + } + return 0; +} + + + +static int pot_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test exponentiation rules...\n"); + + /* Test with maximal number of digits */ + rand_l (r1_l, CLINTMAXBIT); + rand_l (r2_l, CLINTMAXBIT); + nzrand_l (r10_l, CLINTMAXBIT); /*lint !e666*/ + msqr_l (r1_l, r3_l, r10_l); + msqr_l (r2_l, r4_l, r10_l); + mmul_l (r3_l, r4_l, r4_l, r10_l); /* r4_l = r1_l^2 * r2_l^2 */ + + mmul_l (r1_l, r2_l, r5_l, r10_l); + msqr_l (r5_l, r5_l, r10_l); /* r5_l = (r1_l * r2_l)^2 */ + + check (r5_l, r4_l, i, __LINE__); + + + /* Tests with random number of digits */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msqr_l (r1_l, r3_l, r10_l); + msqr_l (r2_l, r4_l, r10_l); + mmul_l (r3_l, r4_l, r4_l, r10_l); /* r4_l = r1_l^2 * r2_l^2 */ + + mmul_l (r1_l, r2_l, r5_l, r10_l); + msqr_l (r5_l, r5_l, r10_l); /* r5_l = (r1_l * r2_l)^2 */ + + check (r5_l, r4_l, i, __LINE__); + } + return 0; +} + + + +static int binom_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test binomial rules...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r1_l, r2_l, r3_l, r10_l); + msqr_l (r3_l, r3_l, r10_l); /* r3_l = (r1_l + r2_l)^2 */ + + msqr_l (r1_l, r4_l, r10_l); + msqr_l (r2_l, r5_l, r10_l); + mmul_l (r1_l, r2_l, r6_l, r10_l); + mmul_l (r6_l, two_l, r6_l, r10_l); + madd_l (r4_l, r5_l, r4_l, r10_l); + madd_l (r4_l, r6_l, r4_l, r10_l); /* r4_l = r1_l^2 + 2*r1_l*r2_l + r2_l^2 */ + + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int dist_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test distributive law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r0_l, r1_l, r2_l, r10_l); + mmul_l (r0_l, r2_l, r4_l, r10_l); + + msqr_l (r0_l, r5_l, r10_l); + mmul_l (r0_l, r1_l, r6_l, r10_l); + madd_l (r5_l, r6_l, r7_l, r10_l); + check (r4_l, r7_l, i, __LINE__); + } + return 0; +} + + +/* Test of Montgomery-Squaring */ +static int sqrmon_test (int nooftests) +{ + USHORT logB_r, nprime, i = 0; + clint *rptr_l; + + printf ("Test sqrmon_l()...\n"); + + if (( rptr_l = ( clint * ) malloc (2 + CLINTMAXBYTE)) == NULL) + { + fprintf (stderr, "Error in malloc in line %d\n", __LINE__); + exit (-1); + } + + rand_l (r0_l, CLINTMAXBIT); + do + { + oddrand_l (r10_l, CLINTMAXBIT); /* n odd */ + } + while (GE_L (r0_l, r10_l)); /* n > a */ + + logB_r = DIGITS_L (r10_l); + SETZERO_L (rptr_l); + setbit_l (rptr_l, logB_r << LDBITPERDGT); + + if (DIGITS_L (rptr_l) > CLINTMAXDIGIT) /* rptr_l < r10_l <= max_l */ + { + mod_l (rptr_l, r10_l, rptr_l); + } + + Assert (DIGITS_L (rptr_l) <= CLINTMAXDIGIT + 1); + + mmul_l (r0_l, rptr_l, r1_l, r10_l); /* a' = a*r mod n */ + nprime = invmon_l (r10_l); /* n^2 > a'*a' */ + + sqrmon_l (r1_l, r10_l, nprime, logB_r, r3_l); /* p' <- a'x a' */ + mulmon_l (r3_l, one_l, r10_l, nprime, logB_r, r3_l); /* p <- p'x 1 */ + + msqr_l (r0_l, r4_l, r10_l); /* a * a mod n */ + + check (r3_l, r4_l, i, __LINE__); + + + for ( i = 1; i < nooftests; i++) + { + rand_l (r0_l, usrand64_l () % CLINTMAXBIT); + do + { + oddrand_l (r10_l, usrand64_l () % CLINTMAXBIT); /* n odd */ + } + while (GE_L (r0_l, r10_l)); /* n > a */ + + logB_r = DIGITS_L (r10_l); + SETZERO_L (rptr_l); + setbit_l (rptr_l, logB_r << LDBITPERDGT); + + if (DIGITS_L (rptr_l) > CLINTMAXDIGIT) /* rptr_l < r10_l <= MaxB */ + { + mod_l (rptr_l, r10_l, rptr_l); + } + + Assert (DIGITS_L (rptr_l) <= CLINTMAXDIGIT + 1); + + mmul_l (r0_l, rptr_l, r1_l, r10_l); /* a' = a*r mod n */ + nprime = invmon_l (r10_l); /* n^2 > a'*a' */ + + sqrmon_l (r1_l, r10_l, nprime, logB_r, r3_l); /* p' <- a'x a' */ + mulmon_l (r3_l, one_l, r10_l, nprime, logB_r, r3_l); /* p <- p'x 1 */ + + msqr_l (r0_l, r4_l, r10_l); /* a * a mod n */ + + check (r3_l, r4_l, i, __LINE__); + } + + free (rptr_l); + return (0); +} + + +/* Auxiliary functions */ + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in test %d/line %d\n", test, line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in msqr_l() in test %d/line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + + diff --git a/flint/test/testmsub.c b/flint/test/testmsub.c new file mode 100644 index 0000000..58159a4 --- /dev/null +++ b/flint/test/testmsub.c @@ -0,0 +1,375 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmsub.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int neu_test (unsigned int nooftests); +static int msubadd_test (unsigned int nooftests); +static int ass_test (unsigned int nooftests); +static int umsub_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + neu_test (1000); + msubadd_test (1000); + ass_test (1000); + umsub_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int neu_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Test with 0 as neutral element...\n"); + + /* Test with 0 */ + + setzero_l (r1_l); + setzero_l (r2_l); + if (0 == msub_l (r1_l, r2_l, r1_l, r1_l)) + { + fprintf (stderr, "Error in msub_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r3_l, r10_l); + msub_l (r2_l, r1_l, r4_l, r10_l); + check (r3_l, nul_l, i++, __LINE__); + check (r4_l, nul_l, i++, __LINE__); + + setmax_l (r1_l); + setzero_l (r2_l); + msub_l (r1_l, r2_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i++, __LINE__); + + setzero_l (r2_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r2_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i, __LINE__); + } + + + /* Test with Modulus = 1 */ + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + SETONE_L (r10_l); + msub_l (r1_l, r2_l, r3_l, r10_l); + check (r3_l, nul_l, i, __LINE__); + + return 0; +} + + +static int msubadd_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test with addition and subtraction as inverse operations...\n"); + + /* General tests, accumulator mode */ + for (i = 1; i <= nooftests / 3; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r0_l, r1_l); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r1_l, r10_l); + madd_l (r1_l, r2_l, r3_l, r10_l); + mod_l (r0_l, r10_l, r1_l); + check (r1_l, r3_l, i, __LINE__); + } + + for (i = 1; i <= nooftests / 3; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r0_l, r2_l); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r2_l, r10_l); + madd_l (r2_l, r0_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r1_l, r3_l, i, __LINE__); + } + + + for (i = 1; i <= nooftests / 3; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r0_l, r10_l); + msub_l (r1_l, r2_l, r10_l, r10_l); + madd_l (r10_l, r2_l, r3_l, r0_l); + mod_l (r1_l, r0_l, r1_l); + check (r3_l, r1_l, i, __LINE__); + } + + /* Test with maximum number of digits */ + rand_l (r1_l, CLINTMAXBIT); + rand_l (r2_l, CLINTMAXBIT); + nzrand_l (r10_l, CLINTMAXBIT); /*lint !e666*/ + msub_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r3_l, r2_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i, __LINE__); + + /* General tests with random number of digits */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + msub_l (r1_l, r2_l, r3_l, r10_l); + madd_l (r3_l, r2_l, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i, __LINE__); + + } + return 0; +} + + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + madd_l (r2_l, r3_l, r4_l, r10_l); /* r4_l = r2_l + r3_l mod r10_l */ + madd_l (r4_l, r1_l, r5_l, r10_l); /* r5_l = r1_l + r2_l + r3_l mod r10_l */ + + msub_l (r5_l, r3_l, r6_l, r10_l); /* r6_l = r5_l - r3_l mod r10_l */ + + msub_l (r6_l, r2_l, r7_l, r10_l); /* r7_l = (r5_l - r3_l) - r2_l mod r10_l */ + + msub_l (r5_l, r4_l, r8_l, r10_l); /* r8_l = r5_l - (r3_l + r2_l) mod r10_l */ + + check (r7_l, r8_l, i, __LINE__); + } + return 0; +} + + +static int umsub_test (unsigned int nooftests) +{ + unsigned int i = 1, k; + USHORT n; + CLINT n_l; + + printf ("Test umsub_l()...\n"); + + rand_l (r1_l, CLINTRNDLN); + if (0 == umsub_l (r1_l, 2, r1_l, nul_l)) + { + fprintf (stderr, "Error in umsub_l(): Reduction by 0 not detected in line %d\n", __LINE__); + exit (-1); + } + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = 0; + umsub_l (r1_l, n, r3_l, r10_l); + mod_l (r1_l, r10_l, r1_l); + check (r3_l, r1_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests / 3; i++) + { + n = usrand64_l (); + u2clint_l (n_l, n); + + k = CLINTRNDLN; + rand_l (r1_l, MAX (( ld_l (n_l) + 1 ), k)); /*lint !e666*/ + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r2_l, r1_l); + umsub_l (r1_l, n, r1_l, r10_l); + msub_l (r2_l, n_l, r3_l, r10_l); + check (r1_l, r3_l, i, __LINE__); + } + + + /* Test accumulator mode */ + for (i = 1; i <= nooftests / 3; i++) + { + n = usrand64_l (); + u2clint_l (n_l, n); + + k = CLINTRNDLN; + rand_l (r1_l, MAX (( ld_l (n_l) + 1 ), k)); /*lint !e666*/ + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r0_l, r10_l); + umsub_l (r1_l, n, r10_l, r10_l); + msub_l (r1_l, n_l, r3_l, r0_l); + check (r10_l, r3_l, i, __LINE__); + } + + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + nzrand_l (r10_l, CLINTRNDLN); /*lint !e666*/ + n = usrand64_l (); + u2clint_l (n_l, n); + umsub_l (r1_l, n, r3_l, r10_l); + msub_l (r1_l, n_l, r4_l, r10_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in msub_l() in test no. %d/line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + + diff --git a/flint/test/testmul.c b/flint/test/testmul.c new file mode 100644 index 0000000..40a561e --- /dev/null +++ b/flint/test/testmul.c @@ -0,0 +1,521 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testmul.c Revision: 07.05.2003 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* History */ +/* */ +/* 26.01.2002: */ +/* Added test with product and factors of Bonn-University-factorization */ +/* from January 2002 */ +/* 07.02.2003: */ +/* Added test with product and factors of Bonn-University-factorization */ +/* of RSA-160 from March 2003 */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define oddrand_l(n_l,bits) do { rand_l((n_l),(bits)); n_l[1] |= 1; } while (eqz_l(n_l)) +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int rsaXXX_test (void); +static int komm_test (unsigned int); +static int ass_test (unsigned int); +static int dist_test (unsigned int); +static int muladd_test (unsigned int); +static int umul_test (unsigned int); +static int overflow_test (void); +static int check (CLINT, CLINT, int, int); +static void ldzrand_l (CLINT, int); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + rsaXXX_test (); + komm_test (1000); + muladd_test (1000); + ass_test (1000); + dist_test (1000); + umul_test (1000); + overflow_test (); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int rsaXXX_test (void) +{ + CLINT rsaXXX_l; + + printf ("Test with factors of RSA-130 ...\n"); + + str2clint_l (rsaXXX_l, "18070820886874048059516561644059055662781025167694013" + "49170127021450056662540244048387341127590812303371781" + "887966563182013214880557", 10); + str2clint_l (r2_l, "39685999459597454290161126162883786067576449112810064" + "832555157243", 10); + str2clint_l (r3_l, "45534498646735972188403686897274408864356301263205069" + "600999044599", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + + printf ("Test with factors of RSA-140 ...\n"); + + str2clint_l (rsaXXX_l, "21290246318258757547497882016271517497806703963277216" + "27823338321538194998405649591136657385302191831678310" + "7387995317230889569230873441936471", 10); + str2clint_l (r2_l, "33987174230284385545301236276138758356339864959695974" + "23490929302771479", 10); + str2clint_l (r3_l, "62642001874012850961516549482644422193020371786235090" + "19111660653946049", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + + printf ("Test with factors of RSA-155 ...\n"); + + str2clint_l (rsaXXX_l, "10941738641570527421809707322040357612003732945449205" + "99091384213147634998428893478471799725789126733249762" + "5752899781833797076537244027146743531593354333897", 10); + str2clint_l (r2_l, "102639592829741105772054196573991675900716567808038066803" + "341933521790711307779", 10); + str2clint_l (r3_l, "106603488380168454820927220360012878679207958575989291522" + "270608237193062808643", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + + printf ("Test with factors of Singh-Challenge ...\n"); + + str2clint_l (rsaXXX_l, "10742788291266565907178411279942116612663921794753294" + "58887781721035546415098012187903383292623528109075067" + "2083504941996433143425558334401855808989426892463", 10); + str2clint_l (r2_l, "128442051653810314916622590289775531989649843239158643682" + "16177647043137765477", 10); + str2clint_l (r3_l, "836391832187606937820650856449710761904520026199724985596" + "729108812301394489219", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + + printf ("Test with the Bonn University factorization 1/2002 ...\n"); + + str2clint_l (rsaXXX_l, "39505874583265144526419767800614481996020776460304936" + "45413937605157935562652945068360972784246821953509354" + "4305870490251995655335710209799226484977949442955603", 10); + str2clint_l (r2_l, "338849583746672139436839320467218152281583036860499304808" + "4925840555281177", 10); + + str2clint_l (r3_l, "116588234066712599031483765583832708181310122581463926004" + "39520994131344334162924536139", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + printf ("Test with factors of RSA-160 ...\n"); + + str2clint_l (rsaXXX_l, "21527411027188897018960152013128254292577735888456759" + "80170497676778133145218859135673011059773491059602497" + "90711158521430207931466520284014061994699492757040775" + "3", 10); + + str2clint_l (r2_l, "45427892858481394071686190649738831" + "656137145778469793250959984709250004157335359", 10); + + str2clint_l (r3_l, "47388090603832016196633832303788951" + "973268922921040957944741354648812028493909367", 10); + + mul_l (r2_l, r3_l, r1_l); + check (r1_l, rsaXXX_l, 1, __LINE__); + + return 0; +} + + +static int komm_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Test commutative law...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + mul_l (r1_l, r2_l, r3_l); + check (r3_l, nul_l, i++, __LINE__); + + setzero_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, nul_l, i, __LINE__); + check (r4_l, nul_l, i, __LINE__); + } + + + /* Test with 1 as neutral element */ + setone_l (r1_l); + setone_l (r2_l); + mul_l (r1_l, r2_l, r3_l); + check (r3_l, one_l, i++, __LINE__); + + setone_l (r1_l); + setmax_l (r2_l); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i++, __LINE__); + check (r4_l, r2_l, i++, __LINE__); + + + setone_l (r1_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r2_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + + /* Test with 1 and leading zeros attached to the other factor */ + ldzrand_l (r1_l, 1); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r2_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, r2_l, i, __LINE__); + check (r4_l, r2_l, i, __LINE__); + } + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + mul_l (r1_l, r1_l, r1_l); + mul_l (r2_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r1_l); + mul_l (r1_l, r2_l, r1_l); + mul_l (r10_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r2_l); + mul_l (r1_l, r2_l, r2_l); + mul_l (r1_l, r10_l, r3_l); + check (r2_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r3_l); + mul_l (r2_l, r1_l, r4_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int muladd_test (unsigned int nooftests) +{ + unsigned int i, j, n; + + printf ("Test multiplication by repeated addition...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + do + { + n = usrand64_l () % 1001; + } + while (n == 0); + u2clint_l (r2_l, ( USHORT ) n); + mul_l (r1_l, r2_l, r3_l); /* r3_l = r1_l*r2_l */ + cpy_l (r2_l, r1_l); + + for (j = 1; j < n; j++) + { + add_l (r2_l, r1_l, r2_l); /* r2_l = r1_l + ... + r1_l */ + } /* ---- n-times ---- */ + + check (r2_l, r3_l, i, __LINE__); + } + return 0; +} + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + mul_l (r1_l, r2_l, r4_l); + mul_l (r3_l, r4_l, r5_l); + + mul_l (r2_l, r3_l, r4_l); + mul_l (r1_l, r4_l, r6_l); + + check (r5_l, r6_l, i, __LINE__); + } + return 0; +} + + +static int umul_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT n; + CLINT n_l; + + printf ("Test umul_l()...\n"); + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + n = 0; + umul_l (r1_l, n, r3_l); + check (r3_l, nul_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + n = usrand64_l (); + u2clint_l (n_l, n); + umul_l (r1_l, n, r1_l); + mul_l (r2_l, n_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + n = usrand64_l (); + u2clint_l (n_l, n); + umul_l (r1_l, n, r3_l); + mul_l (r1_l, n_l, r4_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int dist_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test distributive law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + add_l (r0_l, r1_l, r2_l); + mul_l (r2_l, r3_l, r4_l); + + mul_l (r0_l, r3_l, r5_l); + mul_l (r1_l, r3_l, r6_l); + add_l (r5_l, r6_l, r7_l); + check (r4_l, r7_l, i, __LINE__); + } + return 0; +} + + +static int overflow_test (void) +{ + printf ("Test overflow in mul_l()...\n"); + + setmax_l (r0_l); + sub_l (r0_l, one_l, r1_l); + + if (E_CLINT_OFL != mul_l (r0_l, two_l, r2_l)) /* max_l * 2 = max_l - 1 */ + { + fprintf (stderr, "Error in mul_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r1_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + if (E_CLINT_OFL != mul_l (r0_l, r0_l, r2_l)) /* max_l * max_l = 1 */ + { + fprintf (stderr, "Error in mul_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (one_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + + +/* Auxiliary functions */ + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in mul_l() in test %d near line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testprrt.cpp b/flint/test/testprrt.cpp new file mode 100644 index 0000000..28a1de7 --- /dev/null +++ b/flint/test/testprrt.cpp @@ -0,0 +1,368 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module testprrt.cpp Revision: 10.07.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include "flintpp.h" + + +#define MAXTESTLEN (CLINTMAXBIT/2) +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) + +static int simple_tests (void); +static int testprimroot (int); + +// Some primitive roots modulo p +// +// p = 3: 2 +// p = 5: 2,3 +// p = 7: 3,5 +// p = 11: 2,6,7,8 +// p = 13: 2,6,7,11 +// p = 17: 3,5,6,7,10,11,12,14 +// p = 19: 2,3,10,13,14,15 +// p = 23: 5,7,10,11,14,15,17,19,20,21 +// p = 29: 2,3,8,10,11,14,15,118,19,21,26,27 +// p = 31: 3,11,12,13,17,21,22,24 +// p = 37: 2,5,13,15,17,18,19,20,22,24,32,35 +// p = 41: 6,7,11,12,13,15,17,19,22,24,26,28,29,30,34,35 +// p = 43: 3,5,12,18,19,20,26,28,29,30,33,34 +// p = 47: 5,10,11,13,15,19,20,22,23,26,29,30,31,33,35,38,39,40,41,43,44,45 + + +static int testdata[130][7] = { + +// Data structure: p, r, n, p1,...,pn +// p = Primenumber modulus +// r = Smallest primitive root modulo p (cf. above table) +// n = Number of prime divisors of the group order p - 1 in Z/pZ +// p1,...,pn: Prime divisors of the group order p - 1 + + { 3, 2, 1, 2}, + { 5, 2, 1, 2}, + { 7, 3, 2, 2 , 3}, + {11, 2, 2, 2, 5}, + {13, 2, 2, 2, 3}, + {17, 3, 1, 2}, + {19, 2, 2, 2, 3}, + {23, 5, 2, 2, 11}, + {29, 2, 2, 2, 7}, + {31, 3, 3, 2, 3, 5}, + {37, 2, 2, 2, 3}, + {41, 6, 2, 2, 5}, + {43, 3, 3, 2, 3, 7}, + {47, 5, 2, 2, 23}, + {53, 2, 2, 2, 13}, + {59, 2, 2, 2, 29}, + {61, 2, 3, 2, 3, 5}, + {67, 2, 3, 2, 3, 11}, + {71, 7, 3, 2, 5, 7}, + {73, 5, 2, 2, 3}, + {79, 3, 3, 2, 3, 13}, + {83, 2, 2, 2, 41}, + {89, 3, 2, 2, 11}, + {97, 5, 2, 2, 3}, + {101, 2, 2, 2, 5}, + {103, 5, 3, 2, 3, 17}, + {107, 2, 2, 2, 53}, + {109, 6, 2, 2, 3}, + {113, 3, 2, 2, 7}, + {127, 3, 3, 2, 3, 7}, + {131, 2, 3, 2, 5, 13}, + {137, 3, 2, 2, 17}, + {139, 2, 3, 2, 3, 23}, + {149, 2, 2, 2, 39}, + {151, 6, 3, 2, 3, 5}, + {157, 5, 3, 2, 3, 13}, + {163, 2, 2, 2, 3}, + {167, 5, 2, 2, 83}, + {173, 2, 2, 2, 43}, + {179, 2, 2, 2, 89}, + {181, 2, 3, 2, 3, 5}, + {191, 19, 3, 2, 5, 19}, + {193, 5, 2, 2, 3}, + {197, 2, 2, 2, 7}, + {199, 3, 3, 2, 3, 11}, + {211, 2, 4, 2, 3, 5, 7}, + {223, 3, 3, 2, 3, 37}, + {227, 2, 2, 2, 113}, + {229, 6, 3, 2, 3, 19}, + {233, 3, 2, 2, 29}, + {239, 7, 3, 2, 7, 17}, + {241, 7, 3, 2, 3, 5}, + {251, 6, 2, 2, 5}, + {257, 3, 1, 2}, + {263, 5, 2, 2, 131}, + {269, 2, 2, 2, 67}, + {271, 6, 3, 2, 3, 5}, + {277, 5, 3, 2, 3, 23}, + {281, 3, 3, 2, 5, 7}, + {283, 3, 3, 2, 3, 47}, + {293, 2, 2, 2, 73}, + {307, 5, 3, 2, 3, 17}, + {311, 17, 3, 2, 5, 31}, + {313, 10, 3, 2, 3, 13}, + {317, 2, 2, 2, 79}, + {331, 3, 4, 2, 3, 5, 11}, + {337, 10, 3, 2, 3, 7}, + {347, 2, 2, 2, 173}, + {349, 2, 3, 2, 3, 29}, + {353, 3, 2, 2, 11}, + {359, 7, 2, 2, 179}, + {367, 6, 3, 2, 3, 61}, + {373, 2, 3, 2, 3, 31}, + {379, 2, 3, 2, 3, 7}, + {383, 5, 2, 2, 191}, + {389, 2, 2, 2, 97}, + {397, 5, 3, 2, 3, 11}, + {401, 3, 2, 2, 5}, + {409, 21, 3, 2, 3, 17}, + {419, 2, 3, 2, 11, 19}, + {421, 2, 4, 2, 3, 5, 7}, + {431, 7, 3, 2, 5, 43}, + {433, 5, 2, 2, 3}, + {439, 15, 3, 2, 3, 73}, + {443, 2, 3, 2, 13, 17}, + {449, 3, 2, 2, 7}, + {457, 13, 3, 2, 3, 19}, + {461, 2, 3, 2, 5, 23}, + {463, 3, 4, 2, 3, 7, 11}, + {467, 2, 2, 2, 233}, + {479, 13, 2, 2, 239}, + {487, 3, 2, 2, 3}, + {491, 2, 3, 2, 5, 7}, + {499, 7, 3, 2, 3, 83}, + {503, 5, 2, 2, 251}, + {509, 2, 2, 2, 127}, + {521, 3, 3, 2, 5, 13}, + {523, 2, 2, 2, 29}, + {541, 2, 3, 2, 3, 5}, + {547, 2, 3, 2, 3, 7, 13}, + {557, 2, 2, 2, 139}, + {563, 2, 2, 2, 281}, + {569, 3, 2, 2, 71}, + {571, 3, 4, 2, 3, 5, 19}, + {577, 5, 2, 2, 3}, + {587, 2, 2, 2, 293}, + {593, 3, 2, 2, 37}, + {599, 7, 3, 2, 13, 23}, + {601, 7, 3, 2, 3, 5}, + {613, 2, 3, 2, 3, 17}, + {617, 3, 3, 2, 7, 11}, + {619, 2, 3, 2, 3, 103}, + {631, 3, 3, 2, 3, 5, 7}, + {641, 3, 2, 2, 5}, + {643, 11, 3, 2, 3, 107}, + {647, 5, 3, 2, 17, 19}, + {653, 2, 2, 2, 163}, + {659, 2, 3, 2, 7, 47}, + {661, 2, 4, 2, 3, 5, 11}, + {673, 5, 3, 2, 3, 7}, + {677, 2, 2, 2, 13}, + {683, 5, 3, 2, 11, 31}, + {691, 3, 4, 2, 3, 5, 23}, + {701, 2, 3, 2, 5, 7}, + {709, 2, 3, 2, 3, 59}, + {719, 11, 2, 2, 359}, + {727, 5, 3, 2, 3, 11}, + {733, 6, 3, 2, 3, 61}, + {739, 3, 3, 2, 3, 41}, + {743, 5, 3, 2, 7, 53} +}; + +// Parameter positions in testdata +#define MODULUS 0 // Primenumber modulus p in testdata[i][0] +#define PRIMROOT 1 // Smallest primitive root mod p in testdata[i][1] +#define NOOFFACT 2 // Number of prime divisors of p - 1 in testdata[i][4] + +int main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + simple_tests (); + testprimroot (100); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static int simple_tests (void) +{ + LINT a; + int test, j; + + cout << "Testfunction simple_tests() ..." << endl; + + for (test = 0; test < 130; test++) + { + LINT **primes = new LINT * [testdata[test][NOOFFACT] + 1]; + + // Set primes[0] to p - 1 + primes[0] = new LINT (testdata[test][MODULUS] - 1); + + for (j = 1; j <= testdata[test][NOOFFACT]; j++) + { + // Set primes[j] to prime divisor of p - 1 + primes[j] = new LINT (testdata[test][NOOFFACT+j]); + } + + // Calculate a = primitive root mod p + a = primroot (testdata[test][NOOFFACT], primes); + + if (a < 0) + { + cerr << "Error in primroot near line " << __LINE__ << "!" << endl; + cerr << "Returncode < 0 in test " << test << " ." << endl; + exit (-1); + } + + // Calculate u = a^(p - 1) and v = a^p + LINT u = mexpkm (a, *primes[0] - 1, *primes[0] + 1); + LINT v = mexpkm (a, *primes[0], *primes[0] + 1); + + if (!(u != 1 && v == 1)) + { + cerr << "Error in primroot() near line " << __LINE__ << "!" << endl; + cerr << "Unexpected value for primitive root in test " << test << ":" << endl; + cerr << "Calculated primitive root: " << LintDec << a << endl; + cerr << "Expected value: " << LINT (testdata[test][PRIMROOT]) << endl; + exit (-1); + } + + if (a != LINT (testdata[test][PRIMROOT])) + { + cerr << "Error in primroot() near line " << __LINE__ << "!" << endl; + cerr << "Unexpected value for primitive root in test " << test << ":" << endl; + cerr << "Calculated primitive root: " << LintDec << a << endl; + cerr << "Expected value: " << LINT (testdata[test][PRIMROOT]) << endl; + exit (-1); + } + + for (j = 0; j <= testdata[test][NOOFFACT]; j++) + { + delete primes[j]; + } + + delete [] primes; + } + + return 0; +} + + +static int testprimroot (int no_of_tests) +{ + LINT p, q, u, a, t; + LINT **primes = new LINT *[10]; + USHORT sp; + int i, j; + + cout << "Testfunction testprimroot() ..." << endl; + + initrand64_lt (); + + for (i = 1; i <= no_of_tests; i++) + { + p = randl (CLINTRNDLN % 256); + p = nextprime (p, 1); + + u = randl (CLINTRNDLN % 256); + u = nextprime (u, 1); + + t = p * u << 1; + + sp = 2; + j = 1; + + do + { + sp += smallprimes[j++]; + q = t * sp + 1; + } + while (!isprime (q)); + + // Now q = smallprime * u * p + 1 + // => q - 1 = smallprime * u * p + + q--; + primes[0] = &q; + primes[1] = &p; + primes[2] = &u; + LINT two (2); + primes[3] = &two; + LINT smallprime (sp); + primes[4] = &smallprime; + + a = primroot (4, primes); + + if (a < 0) + { + cerr << "Error in primroot()!"; + exit (-1); + } + + u = mexpkm (a, q - 1, q + 1); + t = mexpkm (a, q, q + 1); + + if (!(u != 1 && t == 1)) + { + cerr << "Error in primroot() near line " << __LINE__ << "!" << endl; + cerr << "Calculated primitive root: " << LintHex << a << endl; + exit (-1); + } + } + + delete [] primes; + return 0; +} + diff --git a/flint/test/testrand.c b/flint/test/testrand.c new file mode 100644 index 0000000..bf478e3 --- /dev/null +++ b/flint/test/testrand.c @@ -0,0 +1,197 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testrand.c Revision: 26.08.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + + +/*lint -esym(666,disperr_l)*/ + +static int chi_test (void); +static int rand_test (unsigned int nooftests); + +float chisquare (ULONG, ULONG); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + chi_test (); + rand_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int chi_test () +{ + ULONG seed, i, errcount = 0; + float X; + + printf ("Chi-Square-Test of usrand64_l()...\n"); + + for (i = 0; i < 10; i++) + { + seed = ulrand64_l (); + X = chisquare (0xa00000, seed); + if (X >= 66380) /* Err. Prob. 0.01 ~ 2^16 + 2*sqrt(2^16) */ + { + fprintf (stderr, "Warning: Chisquare > r + 2*sqrt(r) :-|\n"); + ++errcount; + } + else + { + if (X <= 64696) /* Err. Prob. 0.01 ~ 2^16 - 2*sqrt(2^16) */ + { + fprintf (stderr, "Warning: Chisquare < r - 2*sqrt(r) :-|\n"); + ++errcount; + } + else + { + fprintf (stderr, "Chi-Square-Test no. %ld O.K. ;-)\n", i + 1); + } + } + } + if (errcount > 3) + { + fprintf (stderr, "Mmm, too many errors in Chi-Square-Test... :-(\n"); + } + return errcount; +} + + +static int f[65536 ]; + +float chisquare (ULONG sample, ULONG seed) +{ + ULONG i, t; + + ulseed64_l (seed); + for (i = 0; i < 65536; i++) + f[i] = 0; + + for (i = 0; i < sample; i++) + f[usrand64_l ()] ++; + + for (i = 0, t = 0; i < 65536; i++) + t += f[i] * f[i]; + + return (float) ((( float ) 65536 * ( float ) t / ( float ) sample ) - sample ); +} + + +static int rand_test (unsigned int nooftests) +{ + unsigned i; + unsigned r; + + printf ("Test of rand_l ...\n"); + + rand_l (r0_l, 0); + if (!eqz_l (r0_l)) + { + fprintf (stderr, "Error in rand_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + exit (-1); + } + + rand_l (r0_l, 1); + if (!equ_l (r0_l, one_l)) + { + fprintf (stderr, "Error in rand_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + exit (-1); + } + + for (i = 0; i < nooftests; i++) + { + r = ulrand64_l () % CLINTMAXDIGIT; + rand_l (r0_l, r); + + if (ld_l (r0_l) != r) + { + fprintf (stderr, "Error in rand_l() in line %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + fprintf (stderr, "r = %d\n", r); + exit (-1); + } + } + return 0; +} + + diff --git a/flint/test/testrandk2.c b/flint/test/testrandk2.c new file mode 100644 index 0000000..fe09759 --- /dev/null +++ b/flint/test/testrandk2.c @@ -0,0 +1,851 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testrandk2.c Revision: 08.02.2003 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ +/* */ +/* Compile with */ +/* */ +/* gcc -O2 -o testrandk2{.exe} testrandk2.c */ +/* flint.c ripemd.c sha1.c aes.c random.c entropy.c */ +/* */ +/* Call by */ +/* */ +/******************************************************************************/ + +#define RUNS2MAX_AIS 1421 +#define RUNS3MIN_AIS 502 +#define RUNS3MAX_AIS 748 +#define RUNS4MIN_AIS 233 +#define RUNS4MAX_AIS 402 +#define RUNS5MIN_AIS 90 +#define RUNS5MAX_AIS 223 +#define RUNS6MIN_AIS 90 +#define RUNS6MAX_AIS 233 +#define LONGRUN_AIS 34 + + +static UCHAR mask[] = {1, 2, 4, 8, 16, 32, 64, 128}; + +static int SUMRUNS[8]; +static int SUMCONTI; +static int SUMAUTO; +static float SUMPOKER; +static int SUMMONO; + +static int AUTOMIN; +static int AUTOMAX; +static int RUNSMIN[8]; +static int RUNSMAX[8]; +static int LONGRUN; +static float POKERMIN; +static float POKERMAX; +static int MONOMIN; +static int MONOMAX; + +static int verbose = 0; + +int +main (int argc, char **argv) +{ + char fname[80]; + int i, j, k, strict = 0, testno = 1, error = 0; + UCHAR *buffer; + CLINT seed_l; + STATEPRNG state; + FILE *filep; + + char *lp; + strcpy (fname, "sample.bin"); + + state.Generator = 0; + + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + + if (argc > 1) + { + while (--argc > 0 && ( *++argv )[0] == '-') + { + lp = *argv + 1; + switch (*lp) + { + case 'f': + while (isspace (*(++lp))) { /* do nothing */ } + strcpy (fname, lp); + break; + case 's': /* strict' */ + strict = 1; + break; + case 'a': + InitRand_l (&state, "", 0, 200, FLINT_RNDAES); + printf ("Testing generator RANDAES\n"); + break; + case 'r': + InitRand_l (&state, "", 0, 200, FLINT_RNDRMDSHA1); + printf ("Testing generator RANDRMDSHA1\n"); + break; + case 'b': + InitRand_l (&state, "", 0, 200, FLINT_RNDBBS); + printf ("Testing generator RANDBBS\n"); + break; + case '6': + InitRand_l (&state, "", 0, 200, FLINT_RND64); + printf ("Testing generator RAND64\n"); + break; + case 'v': + verbose = 1; + break; + default: + printf ("testrandk2 [-arb6fsv]\n"); + exit (-1); + } + } + } + + if (!state.Generator) + { + InitRand_l (&state, "", 0, 200, FLINT_RNDRMDSHA1); + printf ("Testing generator RANDRMDSHA1\n"); + } + + create_reg_l (); + + if (strict) + { + printf ("Mode is strict: FIPS 140-2 thresholds apply\n"); + } + InitGlobals (strict); + + if (error) + { + fprintf (stderr, "Required entropy not generated\n"); + } + + if ((buffer = (UCHAR*)malloc(2500)) == NULL) + { + fprintf (stderr, "Can't allocate memory buffer - aborting\n"); + exit (-1); + } + + for (i = 1, testno = 0; i <= 257; i++) + { + for (j = 0; j < 2500; j++) + { + buffer[j] = bRand_l (&state); + } + + ++testno; + MonobitTest (buffer, 20000); + ContinuousTest (buffer, 20000); + PokerTest (buffer, 20000); + RunsTest (buffer, 20000); + AutocorrelationTest (buffer, 20000); + + if (verbose) + { + printf ("Test sequence %d passed.\n", testno); + } + + if (0 != CreateFile (fname, 20000, &state)) + { + fprintf (stderr,"Error in CreateFile() while creating file %s\n", fname); + exit (-1); + } + + if ((filep = fopen (fname, RMODE)) == NULL) + { + fprintf (stderr, "%s can not be opened for reading - aborting\n", fname); + exit (-1); + } + + for (k = 1; k <= RNDBITS; k++) + { + if (fread(buffer, 1, 2500, filep) < 2500) + { + fprintf (stderr, "Error while reading file %s - aborting\n", fname); + exit (-1); + } + + ++testno; + MonobitTest (buffer, 20000); + ContinuousTest (buffer, 20000); + PokerTest (buffer, 20000); + RunsTest (buffer, 20000); + AutocorrelationTest (buffer, 20000); + + if (verbose) + { + printf ("Test sequence %d passed.\n", testno); + } + } + + if (verbose) + { + printf ("Test:\t\tAverage value:\ttolerable interval:\n"); + + printf ("Monobit\t\t%.2f\t[%d,%d]\n", + (float)SUMMONO/(float)testno, MONOMIN, MONOMAX); + printf ("Continuous\t%f\n", + (float)SUMCONTI/testno); + printf ("Poker\t\t%.2f\t\t[%.2f,%.2f]\n", + (double)SUMPOKER/(double)testno, POKERMIN, POKERMAX); + printf ("Runs Length 1\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[1]/(testno*2), RUNSMIN[1], RUNSMAX[1]); + printf ("Runs Length 2\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[2]/(testno*2), RUNSMIN[2], RUNSMAX[2]); + printf ("Runs Length 3\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[3]/(testno*2), RUNSMIN[3], RUNSMAX[3]); + printf ("Runs Length 4\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[4]/(testno*2), RUNSMIN[4], RUNSMAX[4]); + printf ("Runs Length 5\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[5]/(testno*2), RUNSMIN[5], RUNSMAX[5]); + printf ("Runs Length 6\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[6]/(testno*2), RUNSMIN[6], RUNSMAX[6]); + printf ("Longruns\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[7]/(testno*2), RUNSMIN[7], RUNSMAX[7]); + printf ("Autocorrelation\t%.2f\t\t[%d,%d]\n", + (float)SUMAUTO/(float)testno, AUTOMIN, AUTOMAX); + } + } + + printf ("Test:\t\tAverage value:\ttolerable interval:\n"); + + printf ("Monobit\t\t%.2f\t[%d,%d]\n", + (float)SUMMONO/(float)testno, MONOMIN, MONOMAX); + printf ("Continuous\t%f\n", + (float)SUMCONTI/testno); + printf ("Poker\t\t%.2f\t\t[%.2f,%.2f]\n", + (double)SUMPOKER/(double)testno, POKERMIN, POKERMAX); + printf ("Runs Length 1\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[1]/(testno*2), RUNSMIN[1], RUNSMAX[1]); + printf ("Runs Length 2\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[2]/(testno*2), RUNSMIN[2], RUNSMAX[2]); + printf ("Runs Length 3\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[3]/(testno*2), RUNSMIN[3], RUNSMAX[3]); + printf ("Runs Length 4\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[4]/(testno*2), RUNSMIN[4], RUNSMAX[4]); + printf ("Runs Length 5\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[5]/(testno*2), RUNSMIN[5], RUNSMAX[5]); + printf ("Runs Length 6\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[6]/(testno*2), RUNSMIN[6], RUNSMAX[6]); + printf ("Longruns\t%.2f\t\t[%d,%d]\n", + (float)SUMRUNS[7]/(testno*2), RUNSMIN[7], RUNSMAX[7]); + printf ("Autocorrelation\t%.2f\t\t[%d,%d]\n", + (float)SUMAUTO/(float)testno, AUTOMIN, AUTOMAX); + + fclose (filep); + free (buffer); + + rand_test (100, &state); + + free_reg_l (); + +#ifdef DEBUG + MemDumpUnfreed (); +#endif + printf ("Alle Tests in %s fehlerfrei durchlaufen :-)\n", __FILE__); + + return 0; +} + + +static int CreateFile (char *fname, int noofbits, STATEPRNG *state) +{ + FILE *filep; + UCHAR byte; + int i, error = 0; + + filep = fopen (fname, WMODE); + if (filep == NULL) + { + fprintf (stderr, "%s can not be opened for writing - aborting\n", fname); + exit (-1); + } + + if (verbose) + { + printf ("creating file %s\n", fname); + } + + for (i = 0; i < noofbits; i++) + { + byte = bRand_l (state); + + if (fwrite (&byte, 1, 1, filep) < 1) + { + error = 1; + break; + } + } + + fclose (filep); + return error; +} + + +int +MonobitTest (UCHAR *buffer, int noofbits) +{ + unsigned j; + int i, noofones = 0; + +#ifdef VERBOSE + printf ("Entering Monobit Test\n"); +#endif + + for (i = 0; i < noofbits/8; i++) + { + for (j = 1; j < 256; j <<= 1) + { + if (*(buffer + i) & j) ++noofones; + } + } + + SUMMONO += noofones; + + if ((MONOMIN <= noofones) && (noofones <= MONOMAX)) + { +#ifdef VERBOSE + printf ("Monobit Test passed.\n"); +#endif + return 0; + } + else + { + printf ("Monobit Test: %d NOT passed.\n", noofones); + printf ("Tolerable interval: [%d, %d]\n", MONOMIN, MONOMAX); + exit (-1); + } +} + + +int +AutocorrelationTest (UCHAR *buffer, int noofbits) +{ + unsigned i, j; + int imod8, t, timod8, tmin, tmax, ac, automin = 10000, automax = 0; + +#ifdef VERBOSE + printf ("Entering Autocorrelation Test\n"); +#endif + + for (t = 1; t <= noofbits/4; t++) + { + ac = 0; + for (i = 0, j = t; i < noofbits/4; i++, j++) + { + imod8 = i & 7; + timod8 = j & 7; + + if ( ((*(buffer + (i >> 3)) & mask[imod8]) >> (imod8)) ^ + ((*(buffer + (j >> 3)) & mask[timod8]) >> (timod8)) ) + { + ++ac; + } + } + + if (ac > automax) + { + tmax = t; + automax = ac; + } + else + if (ac < automin) + { + tmin = t; + automin = ac; + } + } + + if (abs (2500 - automin) > abs (automax - 2500)) + { + t = tmin; /*lint !e644*/ + } + else + { + t = tmax; /*lint !e644*/ + } + + ac = 0; + for (i = noofbits/4, j = t + noofbits/4; i < noofbits/2; i++, j++) + { + imod8 = i & 7; + timod8 = j & 7; + + if ( ((*(buffer + (i >> 3)) & mask[imod8]) >> (imod8)) ^ + ((*(buffer + (j >> 3)) & mask[timod8]) >> (timod8)) ) + { + ++ac; + } + } + + SUMAUTO += ac; + + if ((ac < AUTOMIN) || (ac > AUTOMAX)) + { + printf ("Autocorrelation of sequence of %d bits, ", noofbits/2); + printf ("distance %d: %d\n", t, ac); + printf ("Autocorrelation Test NOT passed.\n"); + printf ("Tolerable interval: [%d,%d]\n", AUTOMIN, AUTOMAX); + exit (-1); + } + +#ifdef VERBOSE + printf ("Autocorrelation Test passed.\n"); +#endif + return 0; +} + + +int +ContinuousTest (UCHAR *buffer, int noofbits) +{ + int block, error = 0, continuous = 0; + +#ifdef VERBOSE + printf ("Entering Continuous Test\n"); +#endif + for (block = 1; block < noofbits/16; block+=2, buffer += 2) + { + +#ifdef DEBUG_TEST + printf("%d ", (USHORT)(*buffer << 8 | *(buffer + 1))); + printf("%d ", (USHORT)(*(buffer + 2) << 8 | *(buffer + 3))); + printf ("block = %d\n", block); +#endif /* DEBUG_TEST? */ + + if ((USHORT)(*buffer << 8 | *(buffer + 1)) == + (USHORT)(*(buffer + 2) << 8 | *(buffer + 3))) + { + continuous++; +#ifdef DEBUG_TEST + printf("%d ", (USHORT)(*buffer << 8 | *(buffer + 1))); + printf("%d ", (USHORT)(*(buffer + 2) << 8 | *(buffer + 3))); + printf ("block = %d\n", block); + printf ("Block: %d\n", block); +#endif /* DEBUG_TEST? */ + } + } + + SUMCONTI += continuous; + + if (verbose && continuous) + { + printf ("Continuous Test of sequence of 20.000 bits, "); + printf ("processing 1249 continuous blocks of 16 bits.\n"); + printf ("%d continuous blocks where duplicate", continuous*2); + printf (" where there should be 0.\n"); + error = -1; + } + else + { +#ifdef VERBOSE + printf ("Continuous Test passed.\n"); +#endif + } + + return error; +} + + +int +RunsTest (UCHAR *buffer, int noofbits) +{ + int run, i, bitpos, error = 0, runs[8]; + +#ifdef VERBOSE + printf ("Entering Runs Test\n"); +#endif + + for (i = 0; i < 8; i++) runs[i] = 0; + + for (bitpos = 0; bitpos < noofbits; bitpos++) + { + run = CollectRun (buffer, &bitpos, 0, noofbits); + + if (run >= LONGRUN) + { + ++runs[7]; /* Longrun */ + ++runs[6]; /* Run >= 6 */ + } + else + if (run >= 6) ++runs[6]; /* Run >= 6 but no Longrun */ + else + ++runs[run]; /* Run < 6 */ + } + + SUMRUNS[1] += runs[1]; + SUMRUNS[2] += runs[2]; + SUMRUNS[3] += runs[3]; + SUMRUNS[4] += runs[4]; + SUMRUNS[5] += runs[5]; + SUMRUNS[6] += runs[6]; + SUMRUNS[7] += runs[7]; + + if ((runs[1] >= RUNSMIN[1]) && (runs[1] <= RUNSMAX[1]) && + (runs[2] >= RUNSMIN[2]) && (runs[2] <= RUNSMAX[2]) && + (runs[3] >= RUNSMIN[3]) && (runs[3] <= RUNSMAX[3]) && + (runs[4] >= RUNSMIN[4]) && (runs[4] <= RUNSMAX[4]) && + (runs[5] >= RUNSMIN[5]) && (runs[5] <= RUNSMAX[5]) && + (runs[6] >= RUNSMIN[6]) && (runs[6] <= RUNSMAX[6])) + { +#ifdef VERBOSE + printf ("Runs Test for runs of type 0 passed.\n"); +#endif + } + else + { + printf ("Runs of length 1: %d\n", runs[1]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[1], RUNSMAX[1]); + printf ("Runs of length 2: %d\n", runs[2]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[2], RUNSMAX[2]); + printf ("Runs of length 3: %d\n", runs[3]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[3], RUNSMAX[3]); + printf ("Runs of length 4: %d\n", runs[4]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[4], RUNSMAX[4]); + printf ("Runs of length 5: %d\n", runs[5]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[5], RUNSMAX[5]); + printf ("Runs of length 6 or longer: %d\n", runs[6]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[6], RUNSMAX[6]); + printf ("Runs Test for runs of type 0 NOT passed.\n"); + error = -1; + } + + if (runs[7]) + { + printf ("Longruns Test for runs of type 0 NOT passed.\n"); + error = -1; + } + else + { +#ifdef VERBOSE + printf ("Longruns Test for runs of type 0 passed.\n"); +#endif + } + + for (i = 0; i < 8; i++) runs[i] = 0; + + for (bitpos = 0; bitpos < noofbits; bitpos++) + { + run = CollectRun (buffer, &bitpos, 1, noofbits); + + if (run >= LONGRUN) + { + ++runs[7]; /* Longrun */ + ++runs[6]; /* Run >= 6 */ + } + else + if (run >= 6) ++runs[6]; /* Run >= 6 but no Longrun */ + else + ++runs[run]; /* Run < 6 */ + } + + SUMRUNS[1] += runs[1]; + SUMRUNS[2] += runs[2]; + SUMRUNS[3] += runs[3]; + SUMRUNS[4] += runs[4]; + SUMRUNS[5] += runs[5]; + SUMRUNS[6] += runs[6]; + SUMRUNS[7] += runs[7]; + + if ((runs[1] >= RUNSMIN[1]) && (runs[1] <= RUNSMAX[1]) && + (runs[2] >= RUNSMIN[2]) && (runs[2] <= RUNSMAX[2]) && + (runs[3] >= RUNSMIN[3]) && (runs[3] <= RUNSMAX[3]) && + (runs[4] >= RUNSMIN[4]) && (runs[4] <= RUNSMAX[4]) && + (runs[5] >= RUNSMIN[5]) && (runs[5] <= RUNSMAX[5]) && + (runs[6] >= RUNSMIN[6]) && (runs[6] <= RUNSMAX[6])) + { +#ifdef VERBOSE + printf ("Runs Test for runs of type 1 passed.\n"); +#endif + } + else + { + printf ("Runs of length 1: %d\n", runs[1]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[1], RUNSMAX[1]); + printf ("Runs of length 2: %d\n", runs[2]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[2], RUNSMAX[2]); + printf ("Runs of length 3: %d\n", runs[3]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[3], RUNSMAX[3]); + printf ("Runs of length 4: %d\n", runs[4]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[4], RUNSMAX[4]); + printf ("Runs of length 5: %d\n", runs[5]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[5], RUNSMAX[5]); + printf ("Runs of length 6 or longer: %d\n", runs[6]); + printf ("Tolerable interval: [%d, %d]\n", RUNSMIN[6], RUNSMAX[6]); + printf ("Runs Test for runs of type 1 NOT passed.\n"); + error = -1; + } + + if (runs[7]) + { + printf ("Longruns Test for runs of type 1 NOT passed.\n"); + error = -1; + } + else + { +#ifdef VERBOSE + printf ("Longruns Test for runs of type 1 passed.\n"); +#endif + } + + if (error) exit (-1); + + return 0; +} + + +int +PokerTest (UCHAR *buffer, int noofbits) +{ + int i, t, n4 = noofbits/4, f[16]; + float poker; + +#ifdef VERBOSE + printf ("Entering Poker Test\n"); +#endif + + for (i = 0; i < 16; i++) + f[i] = 0; + + for (i = 0; i < noofbits/8; i++) + { + f[*buffer & 0x0f]++; + f[(*buffer & 0xf0) >> 4]++; + ++buffer; + } + + for (i = 0, t = 0; i < 16; i++) + t += f[i] * f[i]; + + poker = (float)((float)16.0 * (float)t / (float)(n4)) - n4; + + SUMPOKER += poker; + + if ((poker > POKERMIN) && (poker < POKERMAX)) + { +#ifdef VERBOSE + printf ("Poker Test passed.\n"); +#endif + } + else + { + printf ("Poker Test: %.2f NOT passed.\n", poker); + printf ("Tolerable interval: [%.2f, %.2f]\n", POKERMIN, POKERMAX); + exit (-1); + } + + return 0; +} + + +int +CollectRun (UCHAR *buffer, int *bitpos, int val, int noofbits) +{ + int run = 0; + while ((*bitpos < noofbits) && GetBit (buffer, *bitpos) == val) + { + run++; + (*bitpos)++; + } + + return run; +} + + +int +GetBit (UCHAR *buffer, int bitpos) /* bitpos from 0 to n -1 */ +{ + return ((*(buffer + (bitpos >> 3)) & mask[bitpos & 7]) >> (bitpos & 7)); +} + + + +void InitGlobals (int strict) +{ + if (strict) + { + AUTOMIN = AUTOMIN_FIPS; + AUTOMAX = AUTOMAX_FIPS; + RUNSMIN[1] = RUNS1MIN_FIPS; + RUNSMIN[2] = RUNS2MIN_FIPS; + RUNSMIN[3] = RUNS3MIN_FIPS; + RUNSMIN[4] = RUNS4MIN_FIPS; + RUNSMIN[5] = RUNS5MIN_FIPS; + RUNSMIN[6] = RUNS6MIN_FIPS; + RUNSMIN[7] = 0; /* No Longruns */ + RUNSMAX[1] = RUNS1MAX_FIPS; + RUNSMAX[2] = RUNS2MAX_FIPS; + RUNSMAX[3] = RUNS3MAX_FIPS; + RUNSMAX[4] = RUNS4MAX_FIPS; + RUNSMAX[5] = RUNS5MAX_FIPS; + RUNSMAX[6] = RUNS6MAX_FIPS; + RUNSMAX[7] = 0; /* No Longruns */ + LONGRUN = LONGRUN_FIPS; + POKERMIN = POKERMIN_FIPS; + POKERMAX = POKERMAX_FIPS; + MONOMIN = MONOMIN_FIPS; + MONOMAX = MONOMAX_FIPS; + } + else + { + AUTOMIN = AUTOMIN_AIS; + AUTOMAX = AUTOMAX_AIS; + RUNSMIN[1] = RUNS1MIN_AIS; + RUNSMIN[2] = RUNS2MIN_AIS; + RUNSMIN[3] = RUNS3MIN_AIS; + RUNSMIN[4] = RUNS4MIN_AIS; + RUNSMIN[5] = RUNS5MIN_AIS; + RUNSMIN[6] = RUNS6MIN_AIS; + RUNSMIN[7] = 0; /* No Longruns */ + RUNSMAX[1] = RUNS1MAX_AIS; + RUNSMAX[2] = RUNS2MAX_AIS; + RUNSMAX[3] = RUNS3MAX_AIS; + RUNSMAX[4] = RUNS4MAX_AIS; + RUNSMAX[5] = RUNS5MAX_AIS; + RUNSMAX[6] = RUNS6MAX_AIS; + RUNSMAX[7] = 0; /* No Longruns */ + LONGRUN = LONGRUN_AIS; + POKERMIN = POKERMIN_AIS; + POKERMAX = POKERMAX_AIS; + MONOMIN = MONOMIN_AIS; + MONOMAX = MONOMAX_AIS; + } + + SUMRUNS[1] = 0; + SUMRUNS[2] = 0; + SUMRUNS[3] = 0; + SUMRUNS[4] = 0; + SUMRUNS[5] = 0; + SUMRUNS[6] = 0; + SUMRUNS[7] = 0; + + SUMAUTO = 0; + SUMCONTI = 0; + SUMPOKER = 0.0; + SUMMONO = 0; +} + + +static int rand_test (unsigned int nooftests, STATEPRNG *state) +{ + unsigned i; + unsigned r; + INITRAND64_LT(); + + switch (state->Generator) + { + case FLINT_RNDAES: + printf ("Test RandAES_l ...\n"); + RandAES_l (r0_l, &state->StateAES, 0); + RandAES_l (r1_l, &state->StateAES, 1); + break; + case FLINT_RNDRMDSHA1: + printf ("Test RandRMDSHA1_l ...\n"); + RandRMDSHA1_l (r0_l, &state->StateRMDSHA1, 0); + RandRMDSHA1_l (r1_l, &state->StateRMDSHA1, 1); + break; + case FLINT_RNDBBS: + printf ("Test RandBBS_l ...\n"); + RandBBS_l (r0_l, &state->StateBBS, 0); + RandBBS_l (r1_l, &state->StateBBS, 1); + break; + case FLINT_RND64: + printf ("Test rand_l ...\n"); + rand_l (r0_l, 0); + rand_l (r1_l, 1); + break; + default: + ; + } + + if (!eqz_l (r0_l)) + { + fprintf (stderr, "Fehler bei RandXXX_l() bei Zeile %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + exit (-1); + } + + if (!equ_l (r1_l, one_l)) + { + fprintf (stderr, "Fehler bei RandXXX_l() bei Zeile %d\n", __LINE__); + disperr_l ("r1_l = ", r0_l); + exit (-1); + } + + for (i = 0; i < nooftests; i++) + { + r = ulrand64_l () % CLINTMAXDIGIT; + switch (state->Generator) + { + case FLINT_RNDAES: + RandAES_l (r0_l, &state->StateAES, r); + break; + case FLINT_RNDRMDSHA1: + RandRMDSHA1_l (r0_l, &state->StateRMDSHA1, r); + break; + case FLINT_RNDBBS: + RandBBS_l (r0_l, &state->StateBBS, r); + break; + case FLINT_RND64: + rand_l (r0_l, r); + break; + default: + ; + } + + if (ld_l (r0_l) != r) + { + fprintf (stderr, "Fehler bei RandXXX_l() in Zeile %d\n", __LINE__); + disperr_l ("r0_l = ", r0_l); + fprintf (stderr, "r = %d\n", r); + exit (-1); + } + } + + return 0; +} diff --git a/flint/test/testreg.c b/flint/test/testreg.c new file mode 100644 index 0000000..c97f975 --- /dev/null +++ b/flint/test/testreg.c @@ -0,0 +1,203 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testreg.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + +static int reg_test (void); +static int regs_test (void); + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + + reg_test (); + regs_test (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + + +static int reg_test () +{ + unsigned int i; + clint *r_l; + if (NULL == ( r_l = create_l ())) + { + fprintf (stderr, "Error in create_l(): NULL zurueck in line %d\n", __LINE__); + exit (-1); + } + rand_l (r_l, CLINTMAXDIGIT); + purge_l (r_l); + for (i = 0; i <= CLINTMAXDIGIT; i++) + { + if (r_l[i] != 0) + { + fprintf (stderr, "Error in purge_l(): r_l[%d] != 0 in line %d\n", i, __LINE__); + exit (-1); + } + } + free_l (r_l); + return 0; +} + + +static int regs_test () +{ + unsigned int i; + CLINT a_l; + +#ifndef FLINT_USEDLL + create_reg_l (); +#endif + + for (i = 0; i < NOOFREGS; i++) + { + if (NULL == get_reg_l (i)) + { + fprintf (stderr, "Error in create_reg_l(): get_reg_l(%d) == NULL in line %d\n", i, __LINE__); + exit (-1); + } + } + + rand_l (r0_l, CLINTMAXDIGIT); + cpy_l (a_l, r0_l); + create_reg_l (); + free_reg_l (); + if (NULL == r0_l) + { + fprintf (stderr, "Error in create_reg_l()/free_reg_l(): get_reg_l(0) == NULL in line %d\n", __LINE__); + exit (-1); + } + if (!equ_l (r0_l, a_l)) + { + fprintf (stderr, "Error in create_reg_l()/free_reg_l(): r_l != a_l in line %d\n", __LINE__); + disperr_l ("r0_l =", r0_l); /*lint !e666 */ + exit (-1); + } + + purge_reg_l (0); + for (i = 0; i <= CLINTMAXDIGIT; i++) + { + if (r0_l[i] != 0) + { + fprintf (stderr, "Error in purge_reg_l(): r0_l[%d] != 0 in line %d\n", i, __LINE__); + exit (-1); + } + } + + set_noofregs_l (100); + + purgeall_reg_l (); + free_reg_l (); + if (NULL != r0_l) + { + fprintf (stderr, "Error in create_reg_l()/free_reg_l(): get_reg_l(0) != NULL in line %d\n", __LINE__); + exit (-1); + } + + if (0 != create_reg_l ()) + { + fprintf (stderr, "Error: create_reg_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + + for (i = 0; i < 100; i++) + { + if (NULL == get_reg_l (i)) + { + fprintf (stderr, "Error in create_reg_l(): get_reg_l(%d) == NULL in line %d\n", i, __LINE__); + exit (-1); + } + } + + if (get_reg_l (100) != NULL) + { + fprintf (stderr, "Error in get_reg_l() get_reg_l(100) != NULL in line %d\n", __LINE__); + disperr_l ("r0_l =", r0_l); /*lint !e666 */ + exit (-1); + } + + purgeall_reg_l (); + +#ifndef FLINT_USEDLL + free_reg_l (); +#endif + + return 0; +} + diff --git a/flint/test/testripe.c b/flint/test/testripe.c new file mode 100644 index 0000000..9541b29 --- /dev/null +++ b/flint/test/testripe.c @@ -0,0 +1,294 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testripe.c Revision: 16.05.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "ripemd.h" + +#define TESTFILE1 "testvals/test1.bin" +#define TESTFILE2 "testvals/test2.bin" +#define TESTFILE3 "testvals/test3.bin" + +static int check (UCHAR *hashref, UCHAR *HashRes, int Len, int error, int test); + + +/* Reference values for RIPEMD-128 */ + +UCHAR clear128_[] = {0xcd,0xf2,0x62,0x13,0xa1,0x50,0xdc,0x3e,0xcb,0x61,0x0f,0x18,0xf6,0xb3,0x8b,0x46}; +UCHAR clear128_A_9[] = {0xd1,0xe9,0x59,0xeb,0x17,0x9c,0x91,0x1f,0xae,0xa4,0x62,0x4c,0x60,0xc5,0xc7,0x02}; +UCHAR clear128_a[] = {0x86,0xbe,0x7a,0xfa,0x33,0x9d,0x0f,0xc7,0xcf,0xc7,0x85,0xe7,0x2f,0x57,0x8d,0x33}; +UCHAR clear128_abc[] = {0xc1,0x4a,0x12,0x19,0x9c,0x66,0xe4,0xba,0x84,0x63,0x6b,0x0f,0x69,0x14,0x4c,0x77}; +UCHAR clear128_a_q[] = {0xa1,0xaa,0x06,0x89,0xd0,0xfa,0xfa,0x2d,0xdc,0x22,0xe8,0x8b,0x49,0x13,0x3a,0x06}; +UCHAR clear128_a_z[] = {0xfd,0x2a,0xa6,0x07,0xf7,0x1d,0xc8,0xf5,0x10,0x71,0x49,0x22,0xb3,0x71,0x83,0x4e}; +UCHAR clear128_1_0[] = {0x3f,0x45,0xef,0x19,0x47,0x32,0xc2,0xdb,0xb2,0xc4,0xa2,0xc7,0x69,0x79,0x5f,0xa3}; +UCHAR clear128_M_a[] = {0x4a,0x7f,0x57,0x23,0xf9,0x54,0xeb,0xa1,0x21,0x6c,0x9d,0x8f,0x63,0x20,0x43,0x1f}; + +/* Reference values for RIPEMD-160 */ + +UCHAR clear_[] = {0x9c,0x11,0x85,0xa5,0xc5,0xe9,0xfc,0x54,0x61,0x28,0x08,0x97,0x7e,0xe8,0xf5,0x48,0xb2,0x25,0x8d,0x31}; +UCHAR clear_A_9[] = {0xb0,0xe2,0x0b,0x6e,0x31,0x16,0x64,0x02,0x86,0xed,0x3a,0x87,0xa5,0x71,0x30,0x79,0xb2,0x1f,0x51,0x89}; +UCHAR clear_a[] = {0x0b,0xdc,0x9d,0x2d,0x25,0x6b,0x3e,0xe9,0xda,0xae,0x34,0x7b,0xe6,0xf4,0xdc,0x83,0x5a,0x46,0x7f,0xfe}; +UCHAR clear_abc[] = {0x8e,0xb2,0x08,0xf7,0xe0,0x5d,0x98,0x7a,0x9b,0x04,0x4a,0x8e,0x98,0xc6,0xb0,0x87,0xf1,0x5a,0x0b,0xfc}; +UCHAR clear160_a_q[] = {0x12,0xa0,0x53,0x38,0x4a,0x9c,0x0c,0x88,0xe4,0x05,0xa0,0x6c,0x27,0xdc,0xf4,0x9a,0xda,0x62,0xeb,0x2b}; +UCHAR clear_a_z[] = {0xf7,0x1c,0x27,0x10,0x9c,0x69,0x2c,0x1b,0x56,0xbb,0xdc,0xeb,0x5b,0x9d,0x28,0x65,0xb3,0x70,0x8d,0xbc}; +UCHAR clear_1_0[] = {0x9b,0x75,0x2e,0x45,0x57,0x3d,0x4b,0x39,0xf4,0xdb,0xd3,0x32,0x3c,0xab,0x82,0xbf,0x63,0x32,0x6b,0xfb}; +UCHAR clear_M_a[] = {0x52,0x78,0x32,0x43,0xc1,0x69,0x7b,0xdb,0xe1,0x6d,0x37,0xf9,0x7f,0x68,0xf0,0x83,0x25,0xdc,0x15,0x28}; +UCHAR clear_bin1[] = {0xea,0xe5,0xe8,0x49,0x85,0x03,0xe8,0x25,0xb2,0xa0,0xa7,0x4f,0x54,0xf2,0xad,0x6f,0x5f,0xb3,0xb1,0xd8}; +UCHAR clear_bin2[] = {0xe1,0x1f,0x59,0xa6,0x96,0x1d,0xde,0xa9,0xec,0x63,0xe7,0x65,0xbb,0x70,0xd3,0x7b,0x44,0x46,0x01,0x6f}; +UCHAR clear_bin3[] = {0x4c,0xb3,0x3d,0xb6,0x14,0x35,0x42,0xd9,0x2c,0x9b,0x6d,0xfc,0xfd,0xa8,0x1b,0x63,0xa9,0x23,0xb2,0x04}; + +int main () +{ + int error = 0; + unsigned i, nbytes; + RMDSTAT hws; + UCHAR HashRes[RMDVER>>3]; + UCHAR data[1024]; + FILE *mf; + + printf ("Testmodule %s, compiled for ripemd.c as part of FLINT/C-Library\n", __FILE__); + + /* Tests RIPEMD-128 */ + printf ("Testing RIPEMD-128\n"); + + /* Test #1: Empty String */ + ripemd128 (HashRes, ( UCHAR * ) "", 0); + check (clear128_, HashRes, 16, error, 1); + + /* Test #2: String "a" */ + ripemd128 (HashRes, ( UCHAR * ) "a", 1); + check (clear128_a, HashRes, 16, error, 2); + + /* Test #3: String "abc" */ + ripemd128 (HashRes, ( UCHAR * ) "abc", 3); + check (clear128_abc, HashRes, 16, error, 3); + + /* Test #4: String "a-q" */ + ripemd128 (HashRes, ( UCHAR * ) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); + check (clear128_a_q, HashRes, 16, error, 4); + + /* Test #5: String "a-z" */ + ripemd128 (HashRes, ( UCHAR * ) "abcdefghijklmnopqrstuvwxyz", 26); + check (clear128_a_z, HashRes, 16, error, 5); + + /* Test #6: String "A .. Za .. z0 .. 9" */ + ripemd128 (HashRes, ( UCHAR * ) "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62); + check (clear128_A_9, HashRes, 16, error, 6); + + /* Test #7: 8 times "1234567890" with ripehash() and ripefinish() */ + ripeinit128 (&hws); + ripehash128 (&hws, ( UCHAR * ) "1234567890123456789012345678901234567890123456789012345678901234", 64); + ripefinish128 (HashRes, &hws, ( UCHAR * ) "5678901234567890", 16); + check (clear128_1_0, HashRes, 16, error, 7); + + /* Test #8: 1 million times 'a' with ripehash() and ripefinish() */ + memset (data, 'a', 1024); + ripeinit128 (&hws); + for (i = 0; i < 976; i++) + { + error = ripehash128 (&hws, data, 1024); + } + ripefinish128 (HashRes, &hws, data, 576); + check (clear128_M_a, HashRes, 16, error, 8); + + + /* Tests RIPEMD-160 */ + printf ("Testing RIPEMD-160\n"); + + /* Test #1: Empty String */ + ripemd160 (HashRes, ( UCHAR * ) "", 0); + check (clear_, HashRes, 20, error, 1); + + /* Test #2: String "a" */ + ripemd160 (HashRes, ( UCHAR * ) "a", 1); + check (clear_a, HashRes, 20, error, 2); + + /* Test #3: String "abc" */ + ripemd160 (HashRes, ( UCHAR * ) "abc", 3); + check (clear_abc, HashRes, 20, error, 3); + + /* Test #4: String "a-q" */ + ripemd160 (HashRes, ( UCHAR * ) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); + check (clear160_a_q, HashRes, 16, error, 4); + + /* Test #5: String "a-z" */ + ripemd160 (HashRes, ( UCHAR * ) "abcdefghijklmnopqrstuvwxyz", 26); + check (clear_a_z, HashRes, 20, error, 5); + + /* Test #6: String "A .. Za .. z0 .. 9" */ + ripemd160 (HashRes, ( UCHAR * ) "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62); + check (clear_A_9, HashRes, 20, error, 6); + + /* Test #7: 8 times "1234567890" in ripehash() and ripefinish() */ + ripeinit (&hws); + ripehash (&hws, ( UCHAR * ) "1234567890123456789012345678901234567890123456789012345678901234", 64); + ripefinish (HashRes, &hws, ( UCHAR * ) "5678901234567890", 16); + check (clear_1_0, HashRes, 20, error, 7); + + /* Test #8: 1 million times 'a' in ripehash() and ripefinish() */ + memset (data, 'a', 1024); + ripeinit (&hws); + for (i = 0; i < 976; i++) + { + error = ripehash (&hws, data, 1024); + } + ripefinish (HashRes, &hws, data, 576); + check (clear_M_a, HashRes, 20, error, 8); + + /* Test #9: testfile 1 */ + printf ("Testfile %s ...\n", TESTFILE1); + ripeinit (&hws); + + if (( mf = fopen (TESTFILE1, "rb")) == NULL) + { + fprintf (stderr, "Error: %s cannot open file %s.\n", __FILE__, TESTFILE1); + exit (-1); + } + + while ((( nbytes = fread (data, 1, 1024, mf)) != 0 ) && ( nbytes % 64 == 0 )) + { + if (!error) + { + error = ripehash (&hws, data, nbytes); + } + else + { + ripehash (&hws, data, nbytes); + } + } + ripefinish (HashRes, &hws, data, nbytes); + check (clear_bin1, HashRes, 20, error, 9); + fclose (mf); + + /* testfile "test2.bin" */ + printf ("Testfile %s ...\n", TESTFILE2); + ripeinit (&hws); + + if (( mf = fopen (TESTFILE2, "rb")) == NULL) + { + fprintf (stderr, "Error: %s cannot open file %s.\n", __FILE__, TESTFILE2); + exit (1); + } + + while ((( nbytes = fread (data, 1, 1024, mf)) != 0 ) && ( nbytes % 64 == 0 )) + { + if (!error) + { + error = ripehash (&hws, data, nbytes); + } + else + { + ripehash (&hws, data, nbytes); + } + } + + ripefinish (HashRes, &hws, data, nbytes); + check (clear_bin2, HashRes, 20, error, 10); + fclose (mf); + + /* testfile "test3.bin" */ + printf ("Testfile %s ...\n", TESTFILE3); + ripeinit (&hws); + + if (( mf = fopen (TESTFILE3, "rb")) == NULL) + { + fprintf (stderr, "Error: %s cannot open file %s.\n", __FILE__, TESTFILE3); + exit (1); + } + + while ((( nbytes = fread (data, 1, 1024, mf)) != 0 ) && ( nbytes % 64 == 0 )) + { + if (!error) + { + error = ripehash (&hws, data, nbytes); + } + else + { + ripehash (&hws, data, nbytes); + } + } + + ripefinish (HashRes, &hws, data, nbytes); + check (clear_bin3, HashRes, 20, error, 11); + fclose (mf); + + printf ("All tests in %s passed.\n", __FILE__); + + return 0; +} + + +static int check (UCHAR *hashref, UCHAR *HashRes, int Len, int error, int test) +{ + int i; + if (error) + { + fprintf (stderr, "Error in RIPEMD in test %d: Error code %d\n", test, error); + } + + if (memcmp (hashref, HashRes, Len)) + { + fprintf (stderr, "Error in RIPEMD in test %d: Message Digest invalid\n", test); + for (i = 0; i < 20; i++) + { + fprintf (stderr, "%2x ", HashRes[i] & 0x00ff); + } + fprintf (stderr, "\n"); + exit (1); + } + + fprintf (stderr, "Test #%d O.K.\n", test); + + return 0; +} + + diff --git a/flint/test/testroot.cpp b/flint/test/testroot.cpp new file mode 100644 index 0000000..0d40010 --- /dev/null +++ b/flint/test/testroot.cpp @@ -0,0 +1,487 @@ +//*****************************************************************************/ +// */ +// Software supplement to the book "Cryptography in C and C++" */ +// by Michael Welschenbach */ +// */ +// Module testroot.cpp Revision: 10.07.2002 */ +// */ +// Copyright (C) 1998-2005 by Michael Welschenbach */ +// Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */ +// Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +// Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +// Copyright (C) 2002-2005 by PHEI, P.R.China */ +// Copyright (C) 2002-2005 by InfoBook, Korea */ +// Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +// */ +// All Rights Reserved */ +// */ +// The software may be used for noncommercial purposes and may be altered, */ +// as long as the following conditions are accepted without any */ +// qualification: */ +// */ +// (1) All changes to the sources must be identified in such a way that the */ +// changed software cannot be misinterpreted as the original software. */ +// */ +// (2) The statements of copyright may not be removed or altered. */ +// */ +// (3) The following DISCLAIMER is accepted: */ +// */ +// DISCLAIMER: */ +// */ +// There is no warranty for the software contained in this distribution, to */ +// the extent permitted by applicable law. The copyright holders provide the */ +// software `as is' without warranty of any kind, either expressed or */ +// implied, including, but not limited to, the implied warranty of fitness */ +// for a particular purpose. The entire risk as to the quality and */ +// performance of the program is with you. */ +// */ +// In no event unless required by applicable law or agreed to in writing */ +// will the copyright holders, or any of the individual authors named in */ +// the source files, be liable to you for damages, including any general, */ +// special, incidental or consequential damages arising out of any use of */ +// the software or out of inability to use the software (including but not */ +// limited to any financial losses, loss of data or data being rendered */ +// inaccurate or losses sustained by you or by third parties as a result of */ +// a failure of the software to operate with any other programs), even if */ +// such holder or other party has been advised of the possibility of such */ +// damages. */ +// */ +//*****************************************************************************/ + +#include +#include "flintpp.h" + +#define PRIMERESTMOD4 3 +#define GENERATOR FLINT_RNDRMDSHA1 + +#define MAXTESTLEN 64 +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN - 1) + + + +static int simple_tests (int); +static int general_tests (int); +static int general_large_tests (int); +static int test_iroot (int); + +STATEPRNG xrstate; + +main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + InitRand (xrstate, "", 0, 200, GENERATOR); + + simple_tests (1000); + general_tests (50); + general_large_tests (5); + test_iroot (1000); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static int simple_tests (int no_of_tests) +{ + LINT a, p, q, r; + int jp, jq; + + cout << "Testfunction simple_tests() with constants ..." << endl; + + if (jacobi (0, 3) != 0) + { + cerr << "Error: jacobi(0, 3) != 0" << endl; + exit (-1); + } + if (jacobi (3, 0) != 0) + { + cerr << "Error: jacobi(3, 0) != 0" << endl; + exit (-1); + } + if (jacobi (8, 2) != 0) + { + cerr << "Error: jacobi(8, 2) != 0" << endl; + exit (-1); + } + + a = RandLINT (CLINTRNDLN, xrstate); + r = root (a, 0); + if (r.Get_Warning_Status() != E_LINT_ERR) + { + cerr << "Error: root (a, 0) != -1" << endl; + exit (-1); + } + + r = root (a, 2); + if (r.Get_Warning_Status() != E_LINT_ERR) + { + cerr << "Error: root (a, 2) != -1" << endl; + exit (-1); + } + + r = a.root (0); + if (r.Get_Warning_Status() != E_LINT_ERR) + { + cerr << "Error: a.root (0) != -1" << endl; + exit (-1); + } + + r = a.root (2); + if (r.Get_Warning_Status() != E_LINT_ERR) + { + cerr << "Error: a.root (2) != -1" << endl; + exit (-1); + } + + cout << "Testfunction simple_tests() with small parameters ..." << endl; + + for (int i = 0; i < no_of_tests; i++) + { + p = FindPrime (MAXTESTLEN/2, xrstate); + do + { + q = FindPrime (MAXTESTLEN/2, xrstate); + } + while (q % 4 == p % 4); + + // cout << "p = " << p << endl; + // cout << "p mod 4 = " << p % 4 << endl; + + // cout << "q = " << q << endl; + // cout << "q mod 4 = " << q % 4 << endl; + + do + { + a = RandLINT (CLINTRNDLN, xrstate); + jp = a.jacobi (p); + r = mexp (a, ( p - 1 ) / 2, p); + if (jp < 0) r += -jp; + if (jp > 0) r -= jp; + if (r % p > 0) + { + cerr << "Error: a^(p-1)/2 = " << r << " != (a/p) mod p" << endl; + exit (-1); + } + + jq = a.jacobi (q); + r = mexp (a, ( q - 1 ) / 2, q); + if (jq < 0) r += -jq; + if (jq > 0) r -= jq; + if (r % q > 0) + { + cerr << "Error: a^(q-1)/2 = " << r << " != (a/q) mod q" << endl; + exit (-1); + } + } while (( a > p * q ) || (( a.jacobi (p) < 1 ) || ( a.jacobi (q) < 1 ))); + + // cout << "a = " << a << endl; + // cout << "jacobi(a,p) = " << jacobi(a,p) << ", "; + // cout << "jacobi(a,q) = " << jacobi(a,q) << endl; + + if (( r = root (a, p, q)) == 0U) + { + cerr << "Error in jacobi: root = NULL " << endl; + cerr << "a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + exit (-1); + } + + // cout << "Root of a mod pq = " << r << endl; + if (a == ( r * r ) % ( p * q )) + { + // cout << "a is quadratic residue mod pq." << endl; + } + else + { + cerr << "Error: a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + cerr << "r = " << r << endl; + exit (-1); + } + } + + return 0; +} + + +#undef MAXTESTLEN +#define MAXTESTLEN (CLINTMAXBIT >> 2) + +static int general_tests (int no_of_tests) +{ + LINT a, p, q, r; + int jp, jq; + + cout << "Testfunction general_tests() ..." << endl; + + for (int i = 0; i < no_of_tests; i++) + { + p = FindPrime (MAXTESTLEN/2, xrstate); + do + { + q = FindPrime (MAXTESTLEN/2, xrstate); + } while (p % 4 == q % 4); + + // cout << "p = " << p << endl; + // cout << "p mod 4 = " << p % 4 << endl; + + // cout << "q = " << q << endl; + // cout << "q mod 4 = " << q % 4 << endl; + + do + { + a = RandLINT (CLINTRNDLN, xrstate); + jp = a.jacobi (p); + r = mexp (a, ( p - 1 ) / 2, p); + if (jp < 0) r += -jp; + if (jp > 0) r -= jp; + if (r % p > 0) + { + cerr << "Error: a^(p-1)/2 = " << r << " != (a/p) mod p" << endl; + exit (-1); + } + + jq = a.jacobi (q); + r = mexp (a, ( q - 1 ) / 2, q); + if (jq < 0) r += -jq; + if (jq > 0) r -= jq; + if (r % q > 0) + { + cerr << "Error: a^(q-1)/2 = " << r << " != (a/q) mod q" << endl; + exit (-1); + } + } while (( a > p * q ) || ( a.jacobi (p) < 1 ) || ( a.jacobi (q) < 1 )); + + // cout << "a = " << a << endl; + // cout << "jacobi(a,p) = " << jacobi(a,p) << ", "; + // cout << "jacobi(a,q) = " << jacobi(a,q) << endl; + + if (( r = a.root (p, q)) == 0U) + { + cerr << "Error in jacobi: root = NULL " << endl; + cerr << "a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + exit (-1); + } + + // cout << "Root of a mod pq = " << r << endl; + if (a == ( r * r ) % ( p * q )) + { + // cout << "a is a quadratic residue mod pq." << endl; + } + else + { + cerr << "Error: a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + cerr << "r = " << r << endl; + exit (-1); + } + } + + return 0; +} + + +#undef MAXTESTLEN +#define MAXTESTLEN (CLINTMAXBIT >> 1) + +static int general_large_tests (int no_of_tests) +{ + LINT a, p, q, r; + int jp, jq; + + cout << "Testfunction general_large_tests() ..." << endl; + + for (int i = 0; i < no_of_tests; i++) + { + p = FindPrime (MAXTESTLEN/2, xrstate); + do + { + q = FindPrime (MAXTESTLEN/2, xrstate); + } while (p % 4 == q % 4); + + // cout << "p = " << p << endl; + // cout << "p mod 4 = " << p % 4 << endl; + + // cout << "q = " << q << endl; + // cout << "q mod 4 = " << q % 4 << endl; + + do + { + a = RandLINT (CLINTRNDLN, xrstate); + jp = a.jacobi (p); + r = mexp (a, ( p - 1 ) / 2, p); + if (jp < 0) r += -jp; + if (jp > 0) r -= jp; + if (r % p > 0) + { + cerr << "Error: a^(p-1)/2 = " << r << " != (a/p) mod p" << endl; + exit (-1); + } + + jq = a.jacobi (q); + r = mexp (a, ( q - 1 ) / 2, q); + if (jq < 0) r += -jq; + if (jq > 0) r -= jq; + if (r % q > 0) + { + cerr << "Error: a^(q-1)/2 = " << r << " != (a/q) mod q" << endl; + exit (-1); + } + } while (( a > p * q ) || ( a.jacobi (p) < 1 ) || ( a.jacobi (q) < 1 )); + + // cout << "a = " << a << endl; + // cout << "jacobi(a,p) = " << jacobi(a,p) << ", "; + // cout << "jacobi(a,q) = " << jacobi(a,q) << endl; + + if (( r = a.root (p, q)) == 0U) + { + cerr << "Error in jacobi: root = NULL " << endl; + cerr << "a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + exit (-1); + } + + // cout << "Root of a mod pq = " << r << endl; + if (a == r.msqr (p * q)) + { + // cout << "a is a quadratic residue mod pq." << endl; + } + else + { + cerr << "Error: a is not a quadratic residue mod pq." << endl; + cerr << "a = " << a << endl; + cerr << "jacobi(a,p) = " << jacobi (a, p) << ", "; + cerr << "jacobi(a,q) = " << jacobi (a, q) << endl; + cerr << "r = " << r << endl; + exit (-1); + } + } + + return 0; +} + + +#undef MAXTESTLEN +#define MAXTESTLEN CLINTMAXBIT + +static int test_iroot (int nooftests) +{ + LINT n, r, q; + int i; + + cout << "Test of functions issqr() for the detection of squares " << endl; + cout << "and root() for the calculation of integer square roots..." << endl; + + n = LINT(0); + q = n * n; + r = q.issqr(); + + if (r != n) + { + cerr << "Error: Root false in test " << 0 << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (q.root() != n) + { + cerr << "Error: Root false in test " << 0 << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + for (i = 1; i <= nooftests; i++) + { + n = RandLINT (CLINTRNDLN/2, xrstate); + q = n * n; + r = q.issqr(); + + if ((n > 0) && (0 == r)) + { + cerr << "Error: Square not detected in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (r != n) + { + cerr << "Error: Root false in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (q.root() != n) + { + cerr << "Error: Root false in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + } + + + n = LINT(0); + q = n * n; + r = issqr(q); + + if (r != n) + { + cerr << "Error: Root false in test " << 0 << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (root(q) != n) + { + cerr << "Error: Root false in test " << 0 << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + for (i = 1; i <= nooftests; i++) + { + n = RandLINT (CLINTRNDLN/2, xrstate); + q = n * n; + r = issqr(q); + + if ((n > 0) && (0 == r)) + { + cerr << "Error: Square not detected in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (r != n) + { + cerr << "Error: Root false in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + + if (root(q) != n) + { + cerr << "Error: Root false in test " << i << " near line " << __LINE__ << endl; + cerr << "n = " << n << endl << "r = " << r << endl; + exit (-1); + } + } + + return 0; +} + + + diff --git a/flint/test/testset.c b/flint/test/testset.c new file mode 100644 index 0000000..dea645e --- /dev/null +++ b/flint/test/testset.c @@ -0,0 +1,298 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testset.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) +#define nzrand_l(n_l,bits) do { rand_l((n_l),(bits)); } while (eqz_l(n_l)) + +static int setbit_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + setbit_test (10000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int setbit_test (unsigned int nooftests) +{ + unsigned int i = 1; + USHORT k, l; + + printf ("Test setbit_(), testbit_l(), clearbit_l()...\n"); + + setzero_l (r0_l); + k = CLINTMAXBIT - 1; /* most significant bit position of a CLINT-value */ + if (0 != setbit_l (r0_l, k)) + { + fprintf (stderr, "Error: setbit_l()!= 0 in line %d\n", __LINE__); + exit (-1); + } + + if (0 == setbit_l (r0_l, k)) + { + fprintf (stderr, "Error: setbit_l()== 0 in line %d\n", __LINE__); + exit (-1); + } + + if (!testbit_l (r0_l, k)) + { + fprintf (stderr, "Error in setbit_l(), testbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + + if (0 == clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() == 0 in line %d\n", __LINE__); + exit (-1); + } + if (gtz_l (r0_l)) + { + fprintf (stderr, "Error in clearbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + + setzero_l (r0_l); + k = 0; + setbit_l (r0_l, k); + if (!testbit_l (r0_l, k)) + { + fprintf (stderr, "Error in setbit_l(), testbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, one_l, i, __LINE__); + if (0 == clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() == 0 in line %d\n", __LINE__); + exit (-1); + } + + if (0 != clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + + if (gtz_l (r0_l)) + { + fprintf (stderr, "Error in clearbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + + setzero_l (r0_l); + k = 1; + setbit_l (r0_l, k); + if (!testbit_l (r0_l, k)) + { + fprintf (stderr, "Error in setbit_l(), testbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, two_l, i, __LINE__); + if (0 == clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() == 0 in line %d\n", __LINE__); + exit (-1); + } + if (0 != clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + if (gtz_l (r0_l)) + { + fprintf (stderr, "Error in clearbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + + + /* General tests */ + + for (i = 1; i <= nooftests; i++) + { + setzero_l (r0_l); + setone_l (r1_l); + k = usrand64_l () % CLINTMAXBIT; + setbit_l (r0_l, k); + if (0 == setbit_l (r0_l, k)) + { + fprintf (stderr, "Error setbit_l()== 0 in line %d\n", __LINE__); + exit (-1); + } + + if (0 < k) + { + shift_l (r1_l, k); + } + if (!testbit_l (r0_l, k)) + { + fprintf (stderr, "Error in setbit_l(), testbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r1_l, i, __LINE__); + if (0 == clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() == 0 in line %d\n", __LINE__); + exit (-1); + } + if (0 != clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + if (gtz_l (r0_l)) + { + fprintf (stderr, "Error in clearbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + } + + for (i = 1; i <= nooftests; i++) + { + do + { + nzrand_l (r0_l, CLINTRNDLN); /*lint !e666*/ + cpy_l (r1_l, r0_l); + l = ld_l (r0_l); + k = usrand64_l () % l; + } + while (testbit_l (r0_l, k)); + if (0 != setbit_l (r0_l, k)) + { + fprintf (stderr, "Error setbit_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + if (!testbit_l (r0_l, k)) + { + fprintf (stderr, "Error in setbit_l(), testbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + if (0 == clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() == 0 in line %d\n", __LINE__); + exit (-1); + } + if (0 != clearbit_l (r0_l, k)) + { + fprintf (stderr, "Error: clearbit_l() != 0 in line %d\n", __LINE__); + exit (-1); + } + if (!equ_l (r0_l, r1_l)) + { + fprintf (stderr, "Error in clearbit_l() in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, r0_l, i, __LINE__); + } + return 0; +} + + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in sh?_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + diff --git a/flint/test/testsha1.c b/flint/test/testsha1.c new file mode 100644 index 0000000..230ea9d --- /dev/null +++ b/flint/test/testsha1.c @@ -0,0 +1,127 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testsha1.c Revision: 16.05.2002 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "sha1.h" + + +static int check (UCHAR *HashRef, UCHAR *HashRes, int Len, int error, int test); + + +/* Reference values for SHA-1 */ + +UCHAR clear_abc[] = {0xa9,0x99,0x3e,0x36,0x47,0x06,0x81,0x6a,0xba,0x3e,0x25,0x71,0x78,0x50,0xc2,0x6c,0x9c,0xd0,0xd8,0x9d}; +UCHAR clear_a_q[] = {0x84,0x98,0x3e,0x44,0x1c,0x3b,0xd2,0x6e,0xba,0xae,0x4a,0xa1,0xf9,0x51,0x29,0xe5,0xe5,0x46,0x70,0xf1}; +UCHAR clear_M_a[] = {0x34,0xaa,0x97,0x3c,0xd4,0xc4,0xda,0xa4,0xf6,0x1e,0xeb,0x2b,0xdb,0xad,0x27,0x31,0x65,0x34,0x01,0x6f}; + +int main () +{ + int error = 0; + unsigned i; + SHASTAT hws; + UCHAR HashRes[SHALEN>>3]; + UCHAR data[1024]; + + printf ("Testmodule %s, compiled for sha1.c as part of FLINT/C-Library\n", __FILE__); + + printf ("Testing SHA-1\n"); + + /* Test #1: String "abc" */ + sha1 (HashRes, ( UCHAR * ) "abc", 3); + check (clear_abc, HashRes, 20, error, 1); + + /* Test #2: String "a-q */ + sha1 (HashRes, ( UCHAR * ) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); + check (clear_a_q, HashRes, 20, error, 2); + + /* Test #3: 1 million times 'a' in sha1hash() und sha1finish() */ + memset (data, 'a', 1024); + sha1init (&hws); + for (i = 0; i < 976; i++) + { + error = sha1hash (&hws, data, 1024); + } + sha1finish (HashRes, &hws, data, 576); + check (clear_M_a, HashRes, 20, error, 3); + + printf ("All tests in %s passed.\n", __FILE__); + + return 0; +} + + +static int check (UCHAR *HashRef, UCHAR *HashRes, int Len, int error, int test) +{ + int i; + if (error) + { + fprintf (stderr, "Error in SHA-1 in test %d: Error code %d\n", test, error); + } + + if (memcmp (HashRef, HashRes, Len)) + { + fprintf (stderr, "Error in SHA-1 in test %d: Message Digest invalid\n", test); + for (i = 0; i < Len; i++) + { + fprintf (stderr, "%2x ", HashRes[i] & 0x00ff); + } + fprintf (stderr, "\n"); + exit (1); + } + + fprintf (stderr, "Test #%d O.K.\n", test); + + return 0; +} + + diff --git a/flint/test/testsha256.c b/flint/test/testsha256.c new file mode 100644 index 0000000..5eed70b --- /dev/null +++ b/flint/test/testsha256.c @@ -0,0 +1,157 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testsha256.c Revision: 03.06.2004 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" +#include "sha256.h" + + +static int check (UCHAR *HashRef, UCHAR *HashRes, int Len, int error, UCHAR *shav, int test); + + +/* Reference values for SHA-1 */ + +UCHAR clear_abc[] = {0xa9,0x99,0x3e,0x36,0x47,0x06,0x81,0x6a,0xba,0x3e,0x25,0x71,0x78,0x50,0xc2,0x6c,0x9c,0xd0,0xd8,0x9d}; +UCHAR clear_a_q[] = {0x84,0x98,0x3e,0x44,0x1c,0x3b,0xd2,0x6e,0xba,0xae,0x4a,0xa1,0xf9,0x51,0x29,0xe5,0xe5,0x46,0x70,0xf1}; +UCHAR clear_M_a[] = {0x34,0xaa,0x97,0x3c,0xd4,0xc4,0xda,0xa4,0xf6,0x1e,0xeb,0x2b,0xdb,0xad,0x27,0x31,0x65,0x34,0x01,0x6f}; + +/* Reference values for SHA-256 */ + +UCHAR clear_abc_256[] = {0xba,0x78,0x16,0xbf,0x8f,0x01,0xcf,0xea,0x41,0x41,0x40,0xde,0x5d,0xae,0x22,0x23,0xb0,0x03,0x61,0xa3,0x96,0x17,0x7a,0x9c,0xb4,0x10,0xff,0x61,0xf2,0x00,0x15,0xad}; + +UCHAR clear_a_q_256[] = {0x24,0x8d,0x6a,0x61,0xd2,0x06,0x38,0xb8,0xe5,0xc0,0x26,0x93,0x0c,0x3e,0x60,0x39,0xa3,0x3c,0xe4,0x59,0x64,0xff,0x21,0x67,0xf6,0xec,0xed,0xd4,0x19,0xdb,0x06,0xc1}; + +UCHAR clear_M_a_256[] = {0xcd,0xc7,0x6e,0x5c,0x99,0x14,0xfb,0x92,0x81,0xa1,0xc7,0xe2,0x84,0xd7,0x3e,0x67,0xf1,0x80,0x9a,0x48,0xa4,0x97,0x20,0x0e,0x04,0x6d,0x39,0xcc,0xc7,0x11,0x2c,0xd0}; + + +int main () +{ + int error = 0; + unsigned i; + SHASTAT hws; + SHA256STAT hws256; + UCHAR HashRes[SHALEN256>>3]; + UCHAR data[1024]; + + printf ("Testmodule %s, compiled for sha1.c as part of FLINT/C-Library\n", __FILE__); + + printf ("Testing SHA-1\n"); + + /* Test #1: String "abc" */ + sha1 (HashRes, ( UCHAR * ) "abc", 3); + check (clear_abc, HashRes, 20, error, "1", 1); + + /* Test #2: String "a-q */ + sha1 (HashRes, ( UCHAR * ) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); + check (clear_a_q, HashRes, 20, error, "1", 2); + + /* Test #3: 1 million times 'a' in sha1hash() und sha1finish() */ + memset (data, 'a', 1024); + sha1init (&hws); + for (i = 0; i < 976; i++) + { + error = sha1hash (&hws, data, 1024); + } + sha1finish (HashRes, &hws, data, 576); + check (clear_M_a, HashRes, 20, error, "1", 3); + + printf ("Testing SHA-256\n"); + + /* Test #1: String "abc" */ + sha256_l (HashRes, ( UCHAR * ) "abc", 3); + check (clear_abc_256, HashRes, 32, error, "256", 1); + + /* Test #2: String "a-q */ + sha256_l (HashRes, ( UCHAR * ) "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); + check (clear_a_q_256, HashRes, 32, error, "256", 2); + + /* Test #3: 1 million times 'a' in sha1hash() und sha1finish() */ + memset (data, 'a', 1024); + sha256init_l (&hws256); + for (i = 0; i < 976; i++) + { + error = sha256hash_l (&hws256, data, 1024); + } + sha256finish_l (HashRes, &hws256, data, 576); + check (clear_M_a_256, HashRes, 32, error, "256", 3); + + printf ("All tests in %s passed.\n", __FILE__); + + return 0; +} + + +static int check (UCHAR *HashRef, UCHAR *HashRes, int Len, int error, UCHAR *shav, int test) +{ + int i; + if (error) + { + fprintf (stderr, "Error in SHA-%s in test %d: Error code %d\n", shav, test, error); + } + + if (memcmp (HashRef, HashRes, Len)) + { + fprintf (stderr, "Error in SHA-%s in test %d: Message Digest invalid\n", shav, test); + for (i = 0; i < Len; i++) + { + fprintf (stderr, "%2x ", HashRes[i] & 0x00ff); + } + fprintf (stderr, "\n"); + exit (1); + } + + fprintf (stderr, "Test #%d O.K.\n", test); + + return 0; +} + + diff --git a/flint/test/testshft.c b/flint/test/testshft.c new file mode 100644 index 0000000..534167c --- /dev/null +++ b/flint/test/testshft.c @@ -0,0 +1,342 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testshft.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int shl_test (unsigned int nooftests); +static int shr_test (unsigned int nooftests); +static int shift_test (unsigned int nooftests); +static int check (CLINT a_l, CLINT b_l, int test, int line); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + shl_test (1000); + shr_test (1000); + shift_test (1000); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int shl_test (unsigned int nooftests) +{ + unsigned int i = 1, j, k; + + printf ("Test shl_l()...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + shl_l (r1_l); + check (r1_l, nul_l, i++, __LINE__); + + /* Test with max_l */ + setmax_l (r0_l); + setmax_l (r1_l); + if (E_CLINT_OFL != shl_l (r0_l)) + { + fprintf (stderr, "Error in shl_l(): Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + umul_l (r1_l, 2, r1_l); + check (r0_l, r1_l, i++, __LINE__); + + /* Test overriding word boundary */ + u2clint_l (r1_l, BASEMINONE); + cpy_l (r2_l, r1_l); + shl_l (r2_l); + if (ld_l (r2_l) != 17) + { + fprintf (stderr, "Error in shl_l(): ld_l(r1_l) != 17 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("shl_l(r1_l) = ", r2_l); /*lint !e666*/ + exit (-1); + } + mul_l (r1_l, two_l, r1_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + k = usrand64_l () % MAX (1, ( CLINTMAXBIT - ( digits_l (r2_l) << 4 ))); /*lint !e666*/ + for (j = 1; j <= k; j++) + { + shl_l (r1_l); + mul_l (r2_l, two_l, r2_l); + } + check (r1_l, r2_l, i, __LINE__); + } + return 0; +} + + +static int shr_test (unsigned int nooftests) +{ + unsigned int i = 1, j, k; + + printf ("Test shr_l()...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + if (E_CLINT_UFL != shr_l (r1_l)) + { + fprintf (stderr, "Error in shr_l(): Underflow not detected in line %d\n", __LINE__); + exit (-1); + } + + /* Test with 1 */ + setone_l (r1_l); + shr_l (r1_l); + check (r1_l, nul_l, i++, __LINE__); + + /* Test cross word boundary */ + setdigits_l (r1_l, 2); + r1_l[1] = 0; + r1_l[2] = 1; + cpy_l (r2_l, r1_l); + shr_l (r2_l); + if (ld_l (r2_l) != 16 && digits_l (r2_l) != 1) + { + fprintf (stderr, "Error in shr_l(): ld_l(r1_l) != 16 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("shr_l(r1_l) = ", r2_l); /*lint !e666*/ + exit (-1); + } + udiv_l (r1_l, 2, r1_l, r0_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + k = usrand64_l () % MAX (1, ( CLINTMAXBIT - ( digits_l (r2_l) << 4 ))); /*lint !e666*/ + for (j = 1; j <= k; j++) + { + shr_l (r1_l); + udiv_l (r2_l, 2, r2_l, r0_l); + } + check (r1_l, r2_l, i, __LINE__); + } + return 0; + +} + + +static int shift_test (unsigned int nooftests) +{ + unsigned int i = 1, j, k; + int sk; + + printf ("Test shift_l to left ...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + shift_l (r1_l, 20); + check (r1_l, nul_l, i++, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + shift_l (r1_l, 0); + check (r1_l, r2_l, i++, __LINE__); + + /* Test with max_l */ + setmax_l (r0_l); + setmax_l (r1_l); + if (E_CLINT_OFL != shift_l (r0_l, 1)) + { + fprintf (stderr, "Error in shift_l(): Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + r1_l[1] &= (BASEMINONE - 1); + check (r0_l, r1_l, i++, __LINE__); + + if (E_CLINT_OFL != shift_l (r0_l, CLINTMAXBIT - 1)) + { + fprintf (stderr, "Error in shift_l(): Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + check (r0_l, nul_l, i++, __LINE__); + + /* Test cross word boundary */ + u2clint_l (r1_l, BASEMINONE); + cpy_l (r2_l, r1_l); + shift_l (r2_l, 1); + if (ld_l (r2_l) != 17) + { + fprintf (stderr, "Error in shift_l(): ld_l(r1_l) != 17 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("shift_l(r1_l, 1) = ", r2_l); /*lint !e666*/ + exit (-1); + } + mul_l (r1_l, two_l, r1_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + k = usrand64_l () % MAX (1, ( CLINTMAXBIT - ( digits_l (r2_l) << 4 ))); /*lint !e666*/ + shift_l (r1_l, k); + for (j = 1; j <= k; j++) + { + mul_l (r2_l, two_l, r2_l); + } + check (r1_l, r2_l, i, __LINE__); + } + + printf ("Test shift_l to right...\n"); + + /* Test with 1 */ + setone_l (r1_l); + shift_l (r1_l, -1); + check (r1_l, nul_l, i++, __LINE__); + + /* Test with max_l */ + setmax_l (r0_l); + setmax_l (r1_l); + shift_l (r0_l, -1); + r1_l[CLINTMAXDIGIT] &= (BASEMINONE - BASEDIV2); + check (r0_l, r1_l, i++, __LINE__); + + shift_l (r0_l, -((int)( CLINTMAXBIT - 1 ))); + r1_l[CLINTMAXDIGIT] &= (BASEMINONE - BASEDIV2); + check (r0_l, nul_l, i++, __LINE__); + + /* Test cross word boundary */ + setdigits_l (r1_l, 2); + r1_l[1] = 0; + r1_l[2] = 1; + cpy_l (r2_l, r1_l); + shift_l (r2_l, -1); + if (ld_l (r2_l) != 16 && digits_l (r2_l) != 1) + { + fprintf (stderr, "Error in shift_l(): ld_l(r1_l) != 16 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("shift_l(r1_l, -1) = ", r2_l); /*lint !e666*/ + exit (-1); + } + udiv_l (r1_l, 2, r1_l, r0_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r2_l, r1_l); + k = usrand64_l () % MAX (1, ( CLINTMAXBIT - ( digits_l (r2_l) << 4 ))); /*lint !e666*/ + sk = ( int ) ( 0 - k ); + shift_l (r1_l, sk); + for (j = 1; j <= k; j++) + { + div_l (r2_l, two_l, r2_l, r0_l); + } + check (r1_l, r2_l, i, __LINE__); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in sh?_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + diff --git a/flint/test/testsqr.c b/flint/test/testsqr.c new file mode 100644 index 0000000..c368654 --- /dev/null +++ b/flint/test/testsqr.c @@ -0,0 +1,295 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testsqr.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l() % CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int neu_test (void); +static int sqrmul_test (unsigned int nooftests); +static int pot_test (unsigned int nooftests); +static int binom_test (unsigned int nooftests); +static int dist_test (unsigned int nooftests); +static int overflow_test (void); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + initrand64_lt (); + create_reg_l (); + + neu_test (); + sqrmul_test (1000); + pot_test (1000); + binom_test (1000); + dist_test (1000); + overflow_test (); + + free_reg_l (); + + printf ("All tests in %s passed.\n", __FILE__); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int neu_test (void) +{ + /* Test with 0 */ + setzero_l (r1_l); + sqr_l (r1_l, r2_l); + check (r2_l, nul_l, 1, __LINE__); + + /* Test with 0 and leading zeros */ + ldzrand_l (r1_l, 0); + sqr_l (r1_l, r2_l); + check (r2_l, nul_l, 2, __LINE__); + + + printf ("Neutral element...\n"); + + /* Test with 1 as neutral element */ + setone_l (r1_l); + sqr_l (r1_l, r2_l); + check (r2_l, one_l, 3, __LINE__); + + return 0; +} + + +static int sqrmul_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test vs. multiplication...\n"); + + /* Test with max_l */ + setmax_l (r1_l); + sqr_l (r1_l, r2_l); + mul_l (r1_l, r1_l, r3_l); + check (r3_l, r2_l, 1, __LINE__); + + /* Test against multiplication in accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + cpy_l (r10_l, r1_l); + sqr_l (r1_l, r1_l); + mul_l (r10_l, r10_l, r3_l); + check (r3_l, r1_l, i, __LINE__); + } + return 0; +} + + + +static int pot_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Testing exponentiation laws...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + sqr_l (r1_l, r3_l); + sqr_l (r2_l, r4_l); + mul_l (r3_l, r4_l, r4_l); /* r4_l = r1_l^2 * r2_l^2 */ + + mul_l (r1_l, r2_l, r5_l); + sqr_l (r5_l, r5_l); /* r5_l = (r1_l * r2_l)^2 */ + + check (r5_l, r4_l, i, __LINE__); + } + return 0; +} + + + +static int binom_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Testing binomial laws...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + add_l (r1_l, r2_l, r3_l); + sqr_l (r3_l, r3_l); /* r3_l = (r1_l + r2_l)^2 */ + + sqr_l (r1_l, r4_l); + sqr_l (r2_l, r5_l); + mul_l (r1_l, r2_l, r6_l); + mul_l (r6_l, two_l, r6_l); + add_l (r4_l, r5_l, r4_l); + add_l (r4_l, r6_l, r4_l); /* r4_l = r1_l^2 + 2*r1_l*r2_l + r2_l^2 */ + + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int dist_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Testing distribution laws...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r0_l, CLINTRNDLN); + rand_l (r1_l, CLINTRNDLN); + add_l (r0_l, r1_l, r2_l); + mul_l (r0_l, r2_l, r4_l); + + sqr_l (r0_l, r5_l); + mul_l (r0_l, r1_l, r6_l); + add_l (r5_l, r6_l, r7_l); + check (r4_l, r7_l, i, __LINE__); + } + return 0; +} + + +static int overflow_test (void) +{ + printf ("Testing overflow in sqr_l()...\n"); + + setmax_l (r0_l); + + if (E_CLINT_OFL != sqr_l (r0_l, r2_l)) /* max_l * max_l = 1 */ + { + fprintf (stderr, "Error in sqr_l: Overflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (one_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in line %d\n", line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in sqr_l() in line %d\n", line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + + diff --git a/flint/test/testsub.c b/flint/test/testsub.c new file mode 100644 index 0000000..a30b8ed --- /dev/null +++ b/flint/test/testsub.c @@ -0,0 +1,416 @@ +/******************************************************************************/ +/* */ +/* Software supplement to the book "Cryptography in C and C++" */ +/* by Michael Welschenbach */ +/* */ +/* Module testsub.c Revision: 19.12.2000 */ +/* */ +/* Copyright (C) 1998-2005 by Michael Welschenbach */ +/* Copyright (C) 2001-2005 by Springer-Verlag Berlin, Heidelberg */ +/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */ +/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */ +/* Copyright (C) 2002-2005 by PHEI, P.R.China */ +/* Copyright (C) 2002-2005 by InfoBook, Korea */ +/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */ +/* */ +/* All Rights Reserved */ +/* */ +/* The software may be used for noncommercial purposes and may be altered, */ +/* as long as the following conditions are accepted without any */ +/* qualification: */ +/* */ +/* (1) All changes to the sources must be identified in such a way that the */ +/* changed software cannot be misinterpreted as the original software. */ +/* */ +/* (2) The statements of copyright may not be removed or altered. */ +/* */ +/* (3) The following DISCLAIMER is accepted: */ +/* */ +/* DISCLAIMER: */ +/* */ +/* There is no warranty for the software contained in this distribution, to */ +/* the extent permitted by applicable law. The copyright holders provide the */ +/* software `as is' without warranty of any kind, either expressed or */ +/* implied, including, but not limited to, the implied warranty of fitness */ +/* for a particular purpose. The entire risk as to the quality and */ +/* performance of the program is with you. */ +/* */ +/* In no event unless required by applicable law or agreed to in writing */ +/* will the copyright holders, or any of the individual authors named in */ +/* the source files, be liable to you for damages, including any general, */ +/* special, incidental or consequential damages arising out of any use of */ +/* the software or out of inability to use the software (including but not */ +/* limited to any financial losses, loss of data or data being rendered */ +/* inaccurate or losses sustained by you or by third parties as a result of */ +/* a failure of the software to operate with any other programs), even if */ +/* such holder or other party has been advised of the possibility of such */ +/* damages. */ +/* */ +/******************************************************************************/ + +#include +#include +#include +#include "flint.h" + +#define NO_ASSERTS + +#ifdef FLINT_DEBUG +#undef NO_ASSERTS +#define ASSERT_LOG_AND_QUIT +#include "_alloc.h" +#endif + +#include "_assert.h" + + +#define MAXTESTLEN CLINTMAXBIT +#define CLINTRNDLN (1 + ulrand64_l() % MAXTESTLEN) +#define CLINTRNDLNDIGIT (1 + ulrand64_l()% CLINTMAXDIGIT) + +#define disperr_l(S,A) fprintf(stderr,"%s%s\n%u bit\n\n",(S),hexstr_l(A),ld_l(A)) + +static int neu_test (unsigned int nooftests); +static int subadd_test (unsigned int nooftests); +static int ass_test (unsigned int nooftests); +static int usub_test (unsigned int nooftests); +static int dec_test (unsigned int nooftests); +static int underflow_test (void); +static int check (CLINT a_l, CLINT b_l, int test, int line); +static void ldzrand_l (CLINT n_l, int bits); + +int main () +{ + printf ("Testmodule %s, compiled for FLINT/C-Library Version %s\n", __FILE__, verstr_l ()); + + initrand64_lt (); + create_reg_l (); + + neu_test (1000); + subadd_test (1000); + ass_test (1000); + usub_test (1000); + underflow_test (); + dec_test (1000); + + printf ("All tests in %s passed.\n", __FILE__); + free_reg_l (); + +#ifdef FLINT_DEBUG + MemDumpUnfreed (); +#endif + + return 0; +} + + +static int neu_test (unsigned int nooftests) +{ + unsigned long i = 1; + + printf ("Test with 0 as neutral element...\n"); + + /* Test with 0 */ + setzero_l (r1_l); + setzero_l (r2_l); + sub_l (r1_l, r2_l, r3_l); + sub_l (r2_l, r1_l, r4_l); + check (r3_l, nul_l, i++, __LINE__); + check (r4_l, nul_l, i++, __LINE__); + + /* max_l - 0 = max_l */ + setmax_l (r1_l); + setzero_l (r2_l); + sub_l (r1_l, r2_l, r3_l); + check (r3_l, r1_l, i++, __LINE__); + + /* max_l - (max_l - 1) = 1 */ + setmax_l (r1_l); + sub_l (r1_l, one_l, r2_l); + sub_l (r1_l, r2_l, r3_l); + check (r3_l, one_l, i++, __LINE__); + + setzero_l (r2_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + sub_l (r1_l, r2_l, r3_l); + check (r3_l, r1_l, i, __LINE__); + } + + setzero_l (r2_l); + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + sub_l (r1_l, r2_l, r3_l); + check (r3_l, r1_l, i, __LINE__); + } + + + + /* Test with 0 and leading zeros */ + ldzrand_l (r2_l, 0); + for (i = 1; i <= nooftests; i++) + { + ldzrand_l (r1_l, CLINTRNDLN); + sub_l (r1_l, r2_l, r3_l); + check (r3_l, r1_l, i, __LINE__); + } + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + sub_l (r1_l, r1_l, r1_l); + check (r1_l, nul_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r1_l); + sub_l (r1_l, r2_l, r1_l); + sub_l (r10_l, r2_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + cpy_l (r10_l, r2_l); + sub_l (r1_l, r2_l, r2_l); + sub_l (r1_l, r10_l, r3_l); + check (r2_l, r3_l, i, __LINE__); + } + return 0; +} + + +static int subadd_test (unsigned int nooftests) +{ + unsigned int i; + + printf ("Test with addition and subtraction as inverse operations...\n"); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + if (ge_l (r1_l, r2_l)) + { + sub_l (r1_l, r2_l, r3_l); + add_l (r3_l, r2_l, r3_l); + check (r3_l, r1_l, i, __LINE__); + } + } + return 0; +} + + + +static int ass_test (unsigned int nooftests) +{ + unsigned int i = 1; + + printf ("Test for associative law...\n"); + + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + rand_l (r2_l, CLINTRNDLN); + rand_l (r3_l, CLINTRNDLN); + add_l (r2_l, r3_l, r4_l); /* r4_l = r2_l + r3_l */ + add_l (r4_l, r1_l, r5_l); /* r5_l = r1_l + r2_l + r3_l */ + + sub_l (r5_l, r3_l, r6_l); /* r6_l = r5_l - r3_l */ + + sub_l (r6_l, r2_l, r7_l); /* r7_l = (r5_l - r3_l) - r2_l */ + + sub_l (r5_l, r4_l, r8_l); /* r8_l = r5_l - (r3_l + r2_l) */ + + check (r7_l, r8_l, i, __LINE__); + } + return 0; +} + + +static int usub_test (unsigned int nooftests) +{ + unsigned int i = 1, k; + USHORT n; + CLINT n_l; + + printf ("Test usub_l()...\n"); + + /* Test with 0 */ + rand_l (r1_l, CLINTRNDLN); + n = 0; + usub_l (r1_l, n, r3_l); + check (r3_l, r1_l, i++, __LINE__); + + /* Test accumulator mode */ + for (i = 1; i <= nooftests; i++) + { + n = usrand64_l (); + u2clint_l (n_l, n); + + k = CLINTRNDLN; + rand_l (r1_l, MAX (( ld_l (n_l) + 1 ), k)); /*lint !e666*/ + cpy_l (r2_l, r1_l); + usub_l (r1_l, n, r1_l); + sub_l (r2_l, n_l, r3_l); + check (r1_l, r3_l, i, __LINE__); + } + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + rand_l (r1_l, CLINTRNDLN); + n = usrand64_l (); + u2clint_l (n_l, n); + usub_l (r1_l, n, r3_l); + sub_l (r1_l, n_l, r4_l); + check (r3_l, r4_l, i, __LINE__); + } + return 0; +} + + +static int dec_test (unsigned int nooftests) +{ + unsigned int i = 1, j, k; + CLINT k_l; + + printf ("Test dec_l()...\n"); + + /* Test with 1 */ + setone_l (r1_l); + dec_l (r1_l); + check (r1_l, nul_l, i++, __LINE__); + + /* Test underrun word boundary */ + setdigits_l (r1_l, 2); + r1_l[1] = 0; + r1_l[2] = 1; + cpy_l (r2_l, r1_l); + dec_l (r2_l); + if (ld_l (r2_l) != 16 && digits_l (r2_l) != 1) + { + fprintf (stderr, "Error in dec_l(): ld_l(r1_l) != 16 in line %d\n", __LINE__); + disperr_l ("r1_l = ", r1_l); /*lint !e666*/ + disperr_l ("--r1_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + sub_l (r1_l, one_l, r1_l); + check (r2_l, r1_l, i++, __LINE__); + + /* General tests */ + for (i = 1; i <= nooftests; i++) + { + k = usrand64_l () % 1001; + j = CLINTRNDLN; + rand_l (r1_l, MAX (k + 1, j)); + cpy_l (r2_l, r1_l); + cpy_l (r3_l, r1_l); + u2clint_l (k_l, ( USHORT ) k); + for (j = 1; j <= k; j++) + { + dec_l (r1_l); + sub_l (r2_l, one_l, r2_l); + } + sub_l (r3_l, k_l, r3_l); + check (r1_l, r2_l, i, __LINE__); + check (r2_l, r3_l, i, __LINE__); + } + return 0; +} + + +static int underflow_test (void) +{ + printf ("Test underflow in sub_l()...\n"); + + setmax_l (r0_l); + + if (E_CLINT_UFL != sub_l (nul_l, one_l, r2_l)) /* 0 - 1 = max_l */ + { + fprintf (stderr, "Error in sub_l: Underflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + if (E_CLINT_UFL != sub_l (one_l, two_l, r2_l)) /* 1 - 2 = max_l */ + { + fprintf (stderr, "Error in sub_l: Underflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (r0_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + + + if (E_CLINT_UFL != sub_l (nul_l, r0_l, r2_l)) /* 0 - max_l = 1 */ + { + fprintf (stderr, "Error in sub_l: Underflow not detected in line %d\n", __LINE__); + exit (-1); + } + + if (!equ_l (one_l, r2_l)) + { + fprintf (stderr, "Error in reduction mod 2^CLINTMAXBIT in line %d\n", __LINE__); + disperr_l ("r2_l = ", r2_l); /*lint !e666*/ + exit (-1); + } + return 0; +} + + +static int check (CLINT a_l, CLINT b_l, int test, int line) +{ + if (vcheck_l (a_l)) + { + fprintf (stderr, "Error in vcheck_l(a_l) in test %d/line %d\n", test, line); + fprintf (stderr, "vcheck_l(a_l) == %d\n", vcheck_l (a_l)); + disperr_l ("a_l = ", a_l); + exit (-1); + } + + if (!equ_l (a_l, b_l)) + { + fprintf (stderr, "Error in sub_l() in test %d/line %d\n", test, line); + disperr_l ("a_l = ", a_l); + disperr_l ("b_l = ", b_l); + exit (-1); + } + return 0; +} + + +static void ldzrand_l (CLINT n_l, int bits) +{ + unsigned int i; + rand_l (n_l, bits); + if (digits_l (n_l) == CLINTMAXDIGIT) + { + decdigits_l (n_l); + } + + for (i = digits_l (n_l) + 1; i <= CLINTMAXDIGIT; i++) + { + n_l[i] = 0; + } + i = digits_l (n_l); + do + { + setdigits_l (n_l, digits_l (n_l) + ( ulrand64_l () % ( CLINTMAXDIGIT - i + 1 ))); + } + while (vcheck_l (n_l) != E_VCHECK_LDZ); +} + diff --git a/flint/test/testvals/cbcmd44.txt b/flint/test/testvals/cbcmd44.txt new file mode 100644 index 0000000..b7c1c66 --- /dev/null +++ b/flint/test/testvals/cbcmd44.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 00000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= faca37e0b0c85373df706e73f7c9af86 +TEST= 1 +KEY= faca37e0b0c85373df706e73f7c9af86 +IV= 52d0c29ff8793a519bd6a8289fc80e6a +CT= faca37e0b0c85373df706e73f7c9af86 +PT= f5372f9735c5685f1da362af6ecb2940 +TEST= 2 +KEY= 0ffd1877850d3b2cc2d30cdc990286c6 +IV= dd74bb1ac6f0f866c7992c61f59d5594 +CT= f5372f9735c5685f1da362af6ecb2940 +PT= 5496a4c29c7670f61b5d5df6181f5947 +TEST= 3 +KEY= 5b6bbcb5197b4bdad98e512a811ddf81 +IV= 3795c88134f7c011433397d1443feb3a +CT= 5496a4c29c7670f61b5d5df6181f5947 +PT= 940cc5a2af4f1f8d1862b47bcf63e4ca +TEST= 4 +KEY= cf677917b6345457c1ece5514e7e3b4b +IV= 0fc1413900225b47af9e139e1650ea23 +CT= 940cc5a2af4f1f8d1862b47bcf63e4ca +PT= 08832415d97820de305a58a9ad111a9e +TEST= 5 +KEY= c7e45d026f4c7489f1b6bdf8e36f21d5 +IV= 3032f64674fa243d61df8c16313d81f3 +CT= 08832415d97820de305a58a9ad111a9e +PT= bd4089775fd1bdb0a6c4f36d1ddaa93e +TEST= 6 +KEY= 7aa4d475309dc93957724e95feb588eb +IV= 47d7f440b43888f173ae5a492f1a99f8 +CT= bd4089775fd1bdb0a6c4f36d1ddaa93e +PT= ab9955f74612859267d61fea85a75adc +TEST= 7 +KEY= d13d8182768f4cab30a4517f7b12d237 +IV= 6d9e57242195d27771d1c7a748378ab0 +CT= ab9955f74612859267d61fea85a75adc +PT= 168f213fb678d8a46d0e55efd1c49bb3 +TEST= 8 +KEY= c7b2a0bdc0f7940f5daa0490aad64984 +IV= 1b98968fb5abd95930525c1257deb364 +CT= 168f213fb678d8a46d0e55efd1c49bb3 +PT= 3c4ceecff9560501c5d8c901d87c8e7b +TEST= 9 +KEY= fbfe4e7239a1910e9872cd9172aac7ff +IV= 35eb7b6d3f63aae927c5346c9c2cb91d +CT= 3c4ceecff9560501c5d8c901d87c8e7b +PT= 9d206be0cc60296bf3a486a8c69778ef +TEST= 10 +KEY= 66de2592f5c1b8656bd64b39b43dbf10 +IV= 226646b36d8e9b9279f94378ccbf8fba +CT= 9d206be0cc60296bf3a486a8c69778ef +PT= 9da7b8094bd0f0bea26848c84b8e083c +TEST= 11 +KEY= fb799d9bbe1148dbc9be03f1ffb3b72c +IV= 3e3a2b0e1c70a19bcd7222708aa94f26 +CT= 9da7b8094bd0f0bea26848c84b8e083c +PT= 6a93b2f318c14c2d3e58455b86a4f5d7 +TEST= 12 +KEY= 91ea2f68a6d004f6f7e646aa791742fb +IV= 1f256942b3cd691858a20664bb24545e +CT= 6a93b2f318c14c2d3e58455b86a4f5d7 +PT= 4a19ac6c6feb654d3675a2be32e5a820 +TEST= 13 +KEY= dbf38304c93b61bbc193e4144bf2eadb +IV= 631f2ede05c1c950bce67df53ba53ed6 +CT= 4a19ac6c6feb654d3675a2be32e5a820 +PT= 799eab8e9c864a13490fd6b089f764c5 +TEST= 14 +KEY= a26d288a55bd2ba8889c32a4c2058e1e +IV= f6ad064e0dbf4af4aa5165e1fe0e86fa +CT= 799eab8e9c864a13490fd6b089f764c5 +PT= 2fa3f38ca1216c6d911c1779f333413e +TEST= 15 +KEY= 8dcedb06f49c47c5198025dd3136cf20 +IV= da039ac5f4edcd84472b23cfa1252ec3 +CT= 2fa3f38ca1216c6d911c1779f333413e +PT= 2fc703ad6a7daf8b0bddd8586c1d67d0 +TEST= 16 +KEY= a209d8ab9ee1e84e125dfd855d2ba8f0 +IV= 341b5fda8ab434461a7b7a87ef0c530c +CT= 2fc703ad6a7daf8b0bddd8586c1d67d0 +PT= 54723cabfbe32deedfebf4292a5710fa +TEST= 17 +KEY= f67be4006502c5a0cdb609ac777cb80a +IV= 2c42ad577b0be057555c3fcb6fc0089e +CT= 54723cabfbe32deedfebf4292a5710fa +PT= 6b1e2a8c1a9cbb95d1b34aafe15a78d3 +TEST= 18 +KEY= 9d65ce8c7f9e7e351c0543039626c0d9 +IV= e5e06583a834bf16118ed5fa401a2d6f +CT= 6b1e2a8c1a9cbb95d1b34aafe15a78d3 +PT= f4e57bfab65375b3ad49cd78814f0c16 +TEST= 19 +KEY= 6980b576c9cd0b86b14c8e7b1769cccf +IV= 71e59389ff6f992225b32960593f9362 +CT= f4e57bfab65375b3ad49cd78814f0c16 +PT= 90a31b5934fcf6822526c973114bd953 +TEST= 20 +KEY= f923ae2ffd31fd04946a47080622159c +IV= 2a4b31492b9baec402c255978bb96d40 +CT= 90a31b5934fcf6822526c973114bd953 +PT= 61f88ba8d438a0fd23f0101465c7fd4e +TEST= 21 +KEY= 98db258729095df9b79a571c63e5e8d2 +IV= 607640cea12dcf7f188b2b65c7f4153d +CT= 61f88ba8d438a0fd23f0101465c7fd4e +PT= f62d206df53f41ca898f3a8eb6a843ff +TEST= 22 +KEY= 6ef605eadc361c333e156d92d54dab2d +IV= d69c32e12303361b465be9a484bca723 +CT= f62d206df53f41ca898f3a8eb6a843ff +PT= 364bc3f9fda5fb1aeea7691550a58320 +TEST= 23 +KEY= 58bdc6132193e729d0b2048785e8280d +IV= c207b8347b8db8bc6845827bb6986b0e +CT= 364bc3f9fda5fb1aeea7691550a58320 +PT= daa6386a073cd1653e9a9db0a97970ba +TEST= 24 +KEY= 821bfe7926af364cee2899372c9158b7 +IV= 6c5d2b186393280253d6922a8421c3a9 +CT= daa6386a073cd1653e9a9db0a97970ba +PT= aaf74f0e0a0141a811853ae8b120bc00 +TEST= 25 +KEY= 28ecb1772cae77e4ffada3df9db1e4b7 +IV= 3cb62ef0e649027dddb76206d0f4d355 +CT= aaf74f0e0a0141a811853ae8b120bc00 +PT= 22a0f9611447c1a85f397dd79e3206f9 +TEST= 26 +KEY= 0a4c481638e9b64ca094de080383e24e +IV= c4320fa90686ae0f9e979cbf1391f6d6 +CT= 22a0f9611447c1a85f397dd79e3206f9 +PT= 1871abdeaa7e057e76d41ed9191fac39 +TEST= 27 +KEY= 123de3c89297b332d640c0d11a9c4e77 +IV= fbfd18aadf7c5e8e96eb976a535bf312 +CT= 1871abdeaa7e057e76d41ed9191fac39 +PT= bf52994f41b1def78c6a057642c52d89 +TEST= 28 +KEY= ad6f7a87d3266dc55a2ac5a7585963fe +IV= c195141578adf4c92113c8a9a63ff072 +CT= bf52994f41b1def78c6a057642c52d89 +PT= 3eafb00e3b4a0e6df74743a7edad0fe4 +TEST= 29 +KEY= 93c0ca89e86c63a8ad6d8600b5f46c1a +IV= d1c4e98c4a9ac79b7ccbc052acf78913 +CT= 3eafb00e3b4a0e6df74743a7edad0fe4 +PT= 4393544ab2387a93496d683c2b8970c7 +TEST= 30 +KEY= d0539ec35a54193be400ee3c9e7d1cdd +IV= 80517c6341daf4dcbccae452f3040147 +CT= 4393544ab2387a93496d683c2b8970c7 +PT= 51dac594293708a918e9efc04f7f2f1c +TEST= 31 +KEY= 81895b5773631192fce901fcd10233c1 +IV= 69de50406b4e3e8a94c1367e1e3d5464 +CT= 51dac594293708a918e9efc04f7f2f1c +PT= 035b64f06c8166000c82bf15cc88446d +TEST= 32 +KEY= 82d23fa71fe27792f06bbee91d8a77ac +IV= 8ea2e38145bbd79881b7eb31b8818a21 +CT= 035b64f06c8166000c82bf15cc88446d +PT= f3effa770a21741551f309e1967cc2e4 +TEST= 33 +KEY= 713dc5d015c30387a198b7088bf6b548 +IV= 0dcaa309668e11509828152553ff2306 +CT= f3effa770a21741551f309e1967cc2e4 +PT= 62ba0548e7ad136beb4e38aecd7942d9 +TEST= 34 +KEY= 1387c098f26e10ec4ad68fa6468ff791 +IV= d031fca5f3c88926cc3bddc448537b69 +CT= 62ba0548e7ad136beb4e38aecd7942d9 +PT= 38e3d4c7af0c3e494f1d580ac5430634 +TEST= 35 +KEY= 2b64145f5d622ea505cbd7ac83ccf1a5 +IV= 6ffa5a45eda60294b0224eeb8c36c455 +CT= 38e3d4c7af0c3e494f1d580ac5430634 +PT= 2231eb6a6588cbcb56b930b7f1cf9e04 +TEST= 36 +KEY= 0955ff3538eae56e5372e71b72036fa1 +IV= b5375674631ecc3334a318993cb81f9a +CT= 2231eb6a6588cbcb56b930b7f1cf9e04 +PT= 59692274c130d6820287ea10f7e64602 +TEST= 37 +KEY= 503cdd41f9da33ec51f50d0b85e529a3 +IV= a93d6e028b5c2bd17a29c6ca1617a0a2 +CT= 59692274c130d6820287ea10f7e64602 +PT= 5975a95327de7749ea8dedc580e5e8c7 +TEST= 38 +KEY= 09497412de0444a5bb78e0ce0500c164 +IV= 26e00cb161145fcd00c39bc4fb1e5cbb +CT= 5975a95327de7749ea8dedc580e5e8c7 +PT= d1f7e36bc8ff4439820cb617e745a9cc +TEST= 39 +KEY= d8be977916fb009c397456d9e24568a8 +IV= 72e78d9e15c8fba864c6c40cebb190b8 +CT= d1f7e36bc8ff4439820cb617e745a9cc +PT= 76fb4f20c902e9aa89854440631092b5 +TEST= 40 +KEY= ae45d859dff9e936b0f112998155fa1d +IV= 4b6c585fef52490ea62baad08faa3dcf +CT= 76fb4f20c902e9aa89854440631092b5 +PT= 6d7d4487dcd624b2fc5002dfe7d2d347 +TEST= 41 +KEY= c3389cde032fcd844ca110466687295a +IV= e94fd23a598dde077cd1daee97fdadd9 +CT= 6d7d4487dcd624b2fc5002dfe7d2d347 +PT= 7297f8f85b21e1a5cb902dcc5f6738f9 +TEST= 42 +KEY= b1af6426580e2c2187313d8a39e011a3 +IV= 86e495d31eefcbc30064414fbd78fae5 +CT= 7297f8f85b21e1a5cb902dcc5f6738f9 +PT= 4a6978aacc6968931fb1b83d53d31fef +TEST= 43 +KEY= fbc61c8c946744b2988085b76a330e4c +IV= 6ba7664ab5ed4f7956d6c3faa7c42961 +CT= 4a6978aacc6968931fb1b83d53d31fef +PT= 6b63faaf9db43a2b6025f29b1d6a331c +TEST= 44 +KEY= 90a5e62309d37e99f8a5772c77593d50 +IV= 37d17d1702ea34a3c75376aa0f9d24ad +CT= 6b63faaf9db43a2b6025f29b1d6a331c +PT= 8317a07bee0bf16b88d7d197884ac6cf +TEST= 45 +KEY= 13b24658e7d88ff27072a6bbff13fb9f +IV= 29b89b238062495c260af44c63aa809f +CT= 8317a07bee0bf16b88d7d197884ac6cf +PT= 0443bfebca7c85cbd0cb66ab9d75425d +TEST= 46 +KEY= 17f1f9b32da40a39a0b9c0106266b9c2 +IV= 08cf82854ae07429c4a866aa727cea2e +CT= 0443bfebca7c85cbd0cb66ab9d75425d +PT= 6b1eb033cb844f9bdd96ba2c67d139c7 +TEST= 47 +KEY= 7cef4980e62045a27d2f7a3c05b78005 +IV= 05579f3e0017ebf6083756dc0a50a2e9 +CT= 6b1eb033cb844f9bdd96ba2c67d139c7 +PT= e7904cbfb41ebe4178b4d633afc9b311 +TEST= 48 +KEY= 9b7f053f523efbe3059bac0faa7e3314 +IV= e6b2cb0ce57e02a230dcd16c08614823 +CT= e7904cbfb41ebe4178b4d633afc9b311 +PT= 96eaaa148f05fad1f0fc06e135ec5df8 +TEST= 49 +KEY= 0d95af2bdd3b0132f567aaee9f926eec +IV= 4268294b10ad58be9e570a9485963682 +CT= 96eaaa148f05fad1f0fc06e135ec5df8 +PT= 9f2f712f62de747ee479a0a74384b196 +TEST= 50 +KEY= 92bade04bfe5754c111e0a49dc16df7a +IV= a5c558f5d4658089cd9fb295edae64db +CT= 9f2f712f62de747ee479a0a74384b196 +PT= 9cf7f00094c4e2d96d752c2312fc135e +TEST= 51 +KEY= 0e4d2e042b2197957c6b266aceeacc24 +IV= 1ce301f294bdf4c906e5f0a6fa7c22bb +CT= 9cf7f00094c4e2d96d752c2312fc135e +PT= aba58d548db6e9be977fddc85e16c2de +TEST= 52 +KEY= a5e8a350a6977e2beb14fba290fc0efa +IV= 66c1ff1e4b52a3542b48306ec33f171d +CT= aba58d548db6e9be977fddc85e16c2de +PT= 802948e1a5177fbe97aba26b996fdf1b +TEST= 53 +KEY= 25c1ebb1038001957cbf59c90993d1e1 +IV= 197a546deb2e19e17507276b9ed95135 +CT= 802948e1a5177fbe97aba26b996fdf1b +PT= 67d931c0946ecdf2f8e41000726d1a56 +TEST= 54 +KEY= 4218da7197eecc67845b49c97bfecbb7 +IV= d11da3ce92ada0686f7bf12a4796d9f7 +CT= 67d931c0946ecdf2f8e41000726d1a56 +PT= 386c68821385e8cfcdd5678fe2aa89f8 +TEST= 55 +KEY= 7a74b2f3846b24a8498e2e469954424f +IV= 4dde413ebc3f30e2f3a9f48da1258daf +CT= 386c68821385e8cfcdd5678fe2aa89f8 +PT= 1638c741efe3b1cc45c7754783350825 +TEST= 56 +KEY= 6c4c75b26b8895640c495b011a614a6a +IV= 5b4f013b085e3a04a16a409e8c3bb270 +CT= 1638c741efe3b1cc45c7754783350825 +PT= 91ab00c3828d3df72bec487ef4652567 +TEST= 57 +KEY= fde77571e905a89327a5137fee046f0d +IV= 98074f522144682ff1498c61581f8b0e +CT= 91ab00c3828d3df72bec487ef4652567 +PT= bc5ba874d2f3039837528993fb275eba +TEST= 58 +KEY= 41bcdd053bf6ab0b10f79aec152331b7 +IV= b65c1a6f80ca024b92176d57061ecdfe +CT= bc5ba874d2f3039837528993fb275eba +PT= b7de1bee1867f4dc3f974e0d8b416db0 +TEST= 59 +KEY= f662c6eb23915fd72f60d4e19e625c07 +IV= 7268c08fa807d83c9830f54a59f32662 +CT= b7de1bee1867f4dc3f974e0d8b416db0 +PT= 19769b9eb30b8de5fd640ace78f01f0a +TEST= 60 +KEY= ef145d75909ad232d204de2fe692430d +IV= b260792bab22baab6ccf3ae1dd3a0f85 +CT= 19769b9eb30b8de5fd640ace78f01f0a +PT= 2079f2c0a0de164cd41fce29d8ce3178 +TEST= 61 +KEY= cf6dafb53044c47e061b10063e5c7275 +IV= 6abce7b41e112b91b8e6bc0dbe37600c +CT= 2079f2c0a0de164cd41fce29d8ce3178 +PT= 0d3a678fab06e743a9134c103b39b61d +TEST= 62 +KEY= c257c83a9b42233daf085c160565c468 +IV= ceb1e776dbef46bf8b949c0af0ebead2 +CT= 0d3a678fab06e743a9134c103b39b61d +PT= 80339adb34bcde3384d66170373aeeac +TEST= 63 +KEY= 426452e1affefd0e2bde3d66325f2ac4 +IV= eaac373fca05e610c1c5d4437afd5631 +CT= 80339adb34bcde3384d66170373aeeac +PT= 38d52d75e5783a08fbfe622633d6cf47 +TEST= 64 +KEY= 7ab17f944a86c706d0205f400189e583 +IV= 2a25ed6933caaa95569ada1ac7480942 +CT= 38d52d75e5783a08fbfe622633d6cf47 +PT= 3204f1eacbb520a69f0939f45bc82041 +TEST= 65 +KEY= 48b58e7e8133e7a04f2966b45a41c5c2 +IV= 9c6819799daf61111acc3c0eceb0f8bf +CT= 3204f1eacbb520a69f0939f45bc82041 +PT= 16bd33ee541798bee114e9d7f9141a9c +TEST= 66 +KEY= 5e08bd90d5247f1eae3d8f63a355df5e +IV= c181f4df1ee0e13bf76044a3da5e3bc4 +CT= 16bd33ee541798bee114e9d7f9141a9c +PT= a0a68cf016c6ad8dac4d5634eaadebe5 +TEST= 67 +KEY= feae3160c3e2d2930270d95749f834bb +IV= 2a4ee2cd011af421616789db790354fd +CT= a0a68cf016c6ad8dac4d5634eaadebe5 +PT= fce7d92fd0b3a1c7920558f653e1019b +TEST= 68 +KEY= 0249e84f13517354907581a11a193520 +IV= a7f7e2b701f34f308c0f28514dfaa15f +CT= fce7d92fd0b3a1c7920558f653e1019b +PT= f16a084b2de16d5e3e5405665de3c623 +TEST= 69 +KEY= f323e0043eb01e0aae2184c747faf303 +IV= 6d319828aaa75dfe99beedd21b983c7d +CT= f16a084b2de16d5e3e5405665de3c623 +PT= ce20ae629887df02064f2d9db092e1db +TEST= 70 +KEY= 3d034e66a637c108a86ea95af76812d8 +IV= 9484e76149f41901af8afd3152c56506 +CT= ce20ae629887df02064f2d9db092e1db +PT= b457a655282213c1b7c5c2a206c7fcb9 +TEST= 71 +KEY= 8954e8338e15d2c91fab6bf8f1afee61 +IV= 329e089dc915bd71b1f8d0713bfc4f97 +CT= b457a655282213c1b7c5c2a206c7fcb9 +PT= a89b8f7541fff719a3c7de1577ce1c3f +TEST= 72 +KEY= 21cf6746cfea25d0bc6cb5ed8661f25e +IV= fa381cac5777234e6df8a28a4e6671d8 +CT= a89b8f7541fff719a3c7de1577ce1c3f +PT= c4e73d25647350527c1f93f6c1d90296 +TEST= 73 +KEY= e5285a63ab997582c073261b47b8f0c8 +IV= 082acf3d2661514f0e00bdabc9015946 +CT= c4e73d25647350527c1f93f6c1d90296 +PT= 34bf6dececfe1c9ae3aa34b6db3741ef +TEST= 74 +KEY= d197378f4767691823d912ad9c8fb127 +IV= 3e56b658f899b6dbba4eaf6e629f3555 +CT= 34bf6dececfe1c9ae3aa34b6db3741ef +PT= fd86c78538176dc5d48be2ec6b89d581 +TEST= 75 +KEY= 2c11f00a7f7004ddf752f041f70664a6 +IV= 765b823193f2738e6cacbb0154c941b1 +CT= fd86c78538176dc5d48be2ec6b89d581 +PT= 524e035ab9deb29e467b9586a90f3a42 +TEST= 76 +KEY= 7e5ff350c6aeb643b12965c75e095ee4 +IV= de2b3ec0a3ff29ec67bbe1b124e9451a +CT= 524e035ab9deb29e467b9586a90f3a42 +PT= 83de1e768eed94ba09e623845a057834 +TEST= 77 +KEY= fd81ed26484322f9b8cf4643040c26d0 +IV= a5cf4d996d8460e71dda938461bb884b +CT= 83de1e768eed94ba09e623845a057834 +PT= d8381d17b9bcf942f408dbb2b7b2d6b7 +TEST= 78 +KEY= 25b9f031f1ffdbbb4cc79df1b3bef067 +IV= 899696b8edc4e8b60489742a2559c909 +CT= d8381d17b9bcf942f408dbb2b7b2d6b7 +PT= bf1d8175015d0a0341427de1f7dde379 +TEST= 79 +KEY= 9aa47144f0a2d1b80d85e0104463131e +IV= ad76d13b2f2a3f938f5c810a38a83d09 +CT= bf1d8175015d0a0341427de1f7dde379 +PT= 58114deff8cff10f06b390eb01b13394 +TEST= 80 +KEY= c2b53cab086d20b70b3670fb45d2208a +IV= 9ec540c144ab57d4e5a9185f55e71e50 +CT= 58114deff8cff10f06b390eb01b13394 +PT= 53e72b9603ce221f0160791df51f6b3e +TEST= 81 +KEY= 9152173d0ba302a80a5609e6b0cd4bb4 +IV= b780257238ca60fd998819b2d04ceb92 +CT= 53e72b9603ce221f0160791df51f6b3e +PT= af0238554aaffb0fb5dfac35e3ce8f4c +TEST= 82 +KEY= 3e502f68410cf9a7bf89a5d35303c4f8 +IV= 3509bc884089adeb90137a39aea75cfc +CT= af0238554aaffb0fb5dfac35e3ce8f4c +PT= 20844d3f4f637b974d38b7e5f1c84205 +TEST= 83 +KEY= 1ed462570e6f8230f2b11236a2cb86fd +IV= 52bab07eb72804630e4bd769f0172fda +CT= 20844d3f4f637b974d38b7e5f1c84205 +PT= 68404e006d2f16572edfae636a62c537 +TEST= 84 +KEY= 76942c5763409467dc6ebc55c8a943ca +IV= e4b417d85f36f3a25cf04ab05157f247 +CT= 68404e006d2f16572edfae636a62c537 +PT= 13c8df4117d4ea3645f1825700f8ffa5 +TEST= 85 +KEY= 655cf31674947e51999f3e02c851bc6f +IV= 3fe0683442b6b5df515209de16f8fd4b +CT= 13c8df4117d4ea3645f1825700f8ffa5 +PT= 42307d929439f2723202a5206d640431 +TEST= 86 +KEY= 276c8e84e0ad8c23ab9d9b22a535b85e +IV= 33fad11d9d4057e7ed989f1520450c32 +CT= 42307d929439f2723202a5206d640431 +PT= 5ed8af875acf37be8faac16d4ab8072b +TEST= 87 +KEY= 79b42103ba62bb9d24375a4fef8dbf75 +IV= 807852e5ad0eb5e0c3a2aaf18dfb14f9 +CT= 5ed8af875acf37be8faac16d4ab8072b +PT= 79c950a45ecdc8b676a5cff324a81da8 +TEST= 88 +KEY= 007d71a7e4af732b529295bccb25a2dd +IV= 516bc35b52c26c99e21c0147cb7dd99e +CT= 79c950a45ecdc8b676a5cff324a81da8 +PT= 595c3ddcfbd90661a3a70b94c470a26b +TEST= 89 +KEY= 59214c7b1f76754af1359e280f5500b6 +IV= fdabdd4bd60725f5e640629416f417d3 +CT= 595c3ddcfbd90661a3a70b94c470a26b +PT= 7957cf3989083d25b54c6890ec58db0c +TEST= 90 +KEY= 20768342967e486f4479f6b8e30ddbba +IV= cadfadf417898de3786d5df869396611 +CT= 7957cf3989083d25b54c6890ec58db0c +PT= 6c1e8df34fc80dd2eca00a1edc5fc239 +TEST= 91 +KEY= 4c680eb1d9b645bda8d9fca63f521983 +IV= a7df9fa44aa2b49b9e26c6148ccaf36f +CT= 6c1e8df34fc80dd2eca00a1edc5fc239 +PT= 72b5a426c9dc3b336756fb10b00626ce +TEST= 92 +KEY= 3eddaa97106a7e8ecf8f07b68f543f4d +IV= 50ff574915d407a97a74cc399de2d901 +CT= 72b5a426c9dc3b336756fb10b00626ce +PT= 194826159d7fab9166d64f1dd6f627b0 +TEST= 93 +KEY= 27958c828d15d51fa95948ab59a218fd +IV= a1e3bc848c019b6fc3f7072f9a866c52 +CT= 194826159d7fab9166d64f1dd6f627b0 +PT= 0186b2316fc29104d3549c49f92ae414 +TEST= 94 +KEY= 26133eb3e2d7441b7a0dd4e2a088fce9 +IV= 4dba42f1031ae32016524c7f86781528 +CT= 0186b2316fc29104d3549c49f92ae414 +PT= 373384db7383d3a4914c0141bb104b81 +TEST= 95 +KEY= 1120ba68915497bfeb41d5a31b98b768 +IV= ffcb87107ac596d71ba807902d524247 +CT= 373384db7383d3a4914c0141bb104b81 +PT= 25465ce5fa2ad65d75586064a18516a8 +TEST= 96 +KEY= 3466e68d6b7e41e29e19b5c7ba1da1c0 +IV= 55879596c3f0a295fa00cfef1b056248 +CT= 25465ce5fa2ad65d75586064a18516a8 +PT= 2311a52cec4a16b5f4fca613bc0bdb83 +TEST= 97 +KEY= 177743a1873457576ae513d406167a43 +IV= b1a7dabf3d2384bf8754b829659b3989 +CT= 2311a52cec4a16b5f4fca613bc0bdb83 +PT= 357f4bf62308cd5c48f34e9e644dd515 +TEST= 98 +KEY= 22080857a43c9a0b22165d4a625baf56 +IV= 72bf477fe8cf428cfa856323e18b3135 +CT= 357f4bf62308cd5c48f34e9e644dd515 +PT= 17758539d1896b92bfb811d30c9ba134 +TEST= 99 +KEY= 357d8d6e75b5f1999dae4c996ec00e62 +IV= 4cba048dfa50910ec94fe5d6aa5dd502 +CT= 17758539d1896b92bfb811d30c9ba134 +PT= 372b6dcee44d18d3791c4e8fb0a91971 +TEST= 100 +KEY= 0256e0a091f8e94ae4b20216de691713 +IV= 86f4f670ca3b191b860d6c8a9a35a872 +CT= 372b6dcee44d18d3791c4e8fb0a91971 +PT= 66d3fabc4885c1f4897d9160c152d570 +TEST= 101 +KEY= 64851a1cd97d28be6dcf93761f3bc263 +IV= 08490b2e8588fe564f0112d76d6108e9 +CT= 66d3fabc4885c1f4897d9160c152d570 +PT= 926278e71894f32b5e2a5a1f5fa695e7 +TEST= 102 +KEY= f6e762fbc1e9db9533e5c969409d5784 +IV= d3a2e4affdd8a7cc1498ef0e812087b7 +CT= 926278e71894f32b5e2a5a1f5fa695e7 +PT= a455f5d65d91563d9c15e6b745f29531 +TEST= 103 +KEY= 52b2972d9c788da8aff02fde056fc2b5 +IV= 6cb8822ea67c247a6a0cbad830b3562c +CT= a455f5d65d91563d9c15e6b745f29531 +PT= 4544371a5e3a8e7ad9885aecd3868af3 +TEST= 104 +KEY= 17f6a037c24203d276787532d6e94846 +IV= 93e3cad8be023f6451adaa525988a974 +CT= 4544371a5e3a8e7ad9885aecd3868af3 +PT= 8473f4f1d77ac1f46706ebd108cb48a5 +TEST= 105 +KEY= 938554c61538c226117e9ee3de2200e3 +IV= a7e7b354606ef4c1d00bf4f128cce966 +CT= 8473f4f1d77ac1f46706ebd108cb48a5 +PT= 787ade453dce2fa7f6f24cd33c9a5cdc +TEST= 106 +KEY= ebff8a8328f6ed81e78cd230e2b85c3f +IV= 97a2cf706c1871b502d15b028c5f0d80 +CT= 787ade453dce2fa7f6f24cd33c9a5cdc +PT= e6a7e5b65dc124fbe1c1fffe18a34d8a +TEST= 107 +KEY= 0d586f357537c97a064d2dcefa1b11b5 +IV= 9bbdcaf2a3cc7fc5bf6285631a4636fd +CT= e6a7e5b65dc124fbe1c1fffe18a34d8a +PT= 6a391e9f475546720836312bbeb0b3a9 +TEST= 108 +KEY= 676171aa32628f080e7b1ce544aba21c +IV= 603eede91f925a2228537e8bdd26c96b +CT= 6a391e9f475546720836312bbeb0b3a9 +PT= d75086ba446563aab1873fdebe611d67 +TEST= 109 +KEY= b031f7107607eca2bffc233bfacabf7b +IV= 546b8ca37aace2bc2c85014f2acd6315 +CT= d75086ba446563aab1873fdebe611d67 +PT= 63a4d826625cbd9f10083e62330bcfbc +TEST= 110 +KEY= d3952f36145b513daff41d59c9c170c7 +IV= bc2e6e9dd10152c8281b798f711a9334 +CT= 63a4d826625cbd9f10083e62330bcfbc +PT= 41275efdfc86b5bdcccdca2bbfa5b90d +TEST= 111 +KEY= 92b271cbe8dde4806339d7727664c9ca +IV= d940a8d1b3448aa9148c7f6dfc266b00 +CT= 41275efdfc86b5bdcccdca2bbfa5b90d +PT= 56ac1bcb285044710d26efc42a0aba56 +TEST= 112 +KEY= c41e6a00c08da0f16e1f38b65c6e739c +IV= 214238ff5f4d01f3a6694ec80e15bcf7 +CT= 56ac1bcb285044710d26efc42a0aba56 +PT= 5af2877973ab9787e42202ac0c6e7538 +TEST= 113 +KEY= 9eeced79b32637768a3d3a1a500006a4 +IV= 561b4934904e327f3b3639ced6c7a995 +CT= 5af2877973ab9787e42202ac0c6e7538 +PT= 787f52f6d9cd9085d782b95fd68f70f8 +TEST= 114 +KEY= e693bf8f6aeba7f35dbf8345868f765c +IV= 06b93fb1a99bd387a091509b8c6d3482 +CT= 787f52f6d9cd9085d782b95fd68f70f8 +PT= e7b1db917c92e488c6b02ac4c42afd79 +TEST= 115 +KEY= 0122641e1679437b9b0fa98142a58b25 +IV= 1d57a61fed51218bd8c1357ce58f21eb +CT= e7b1db917c92e488c6b02ac4c42afd79 +PT= 2fbab770d511eaca849f654de429de84 +TEST= 116 +KEY= 2e98d36ec368a9b11f90cccca68c55a1 +IV= cb311c43ec32d59941cef81bb9cf4e57 +CT= 2fbab770d511eaca849f654de429de84 +PT= a8fe17aea961c2a450dd5eaabaa19613 +TEST= 117 +KEY= 8666c4c06a096b154f4d92661c2dc3b2 +IV= b9d7b74d62dd89a01ee3093a5c2a0470 +CT= a8fe17aea961c2a450dd5eaabaa19613 +PT= d9e598a4dbaf82bdf9474be13b997ff5 +TEST= 118 +KEY= 5f835c64b1a6e9a8b60ad98727b4bc47 +IV= 6398d8a38c38a9b54dcf18c0d76758ba +CT= d9e598a4dbaf82bdf9474be13b997ff5 +PT= 291db2bc325cd7a94032e7c1208921a5 +TEST= 119 +KEY= 769eeed883fa3e01f6383e46073d9de2 +IV= 4774c7e1bb97117bca26a897b9302efa +CT= 291db2bc325cd7a94032e7c1208921a5 +PT= dfc55866f85055f06e752e04aac4c36a +TEST= 120 +KEY= a95bb6be7baa6bf1984d1042adf95e88 +IV= bda0616700cd2817fe4425f6f541e8c1 +CT= dfc55866f85055f06e752e04aac4c36a +PT= 7cacb3a88e7114f7737b05d0fb3af7f3 +TEST= 121 +KEY= d5f70516f5db7f06eb36159256c3a97b +IV= 1ef4836bd363b89ee73911b14ebe9262 +CT= 7cacb3a88e7114f7737b05d0fb3af7f3 +PT= 3282f1f6b3c04e325fb13e85d18cdbbc +TEST= 122 +KEY= e775f4e0461b3134b4872b17874f72c7 +IV= e35d47cedbd30701a64fe504c6bc4199 +CT= 3282f1f6b3c04e325fb13e85d18cdbbc +PT= bfb9748a3c825cda3ea5d001f6ad305f +TEST= 123 +KEY= 58cc806a7a996dee8a22fb1671e24298 +IV= 7a3676377e0b4f815b4b8c9a98dcab4d +CT= bfb9748a3c825cda3ea5d001f6ad305f +PT= b33787380a4c3bd5b32ec335916f9229 +TEST= 124 +KEY= ebfb075270d5563b390c3823e08dd0b1 +IV= b3e40b27dbf6d985d4f57bd4d2899dc8 +CT= b33787380a4c3bd5b32ec335916f9229 +PT= bcd5e40a3b4885aca82bec952ba8a973 +TEST= 125 +KEY= 572ee3584b9dd3979127d4b6cb2579c2 +IV= 897608fe3238f80cd24192cc64f4f695 +CT= bcd5e40a3b4885aca82bec952ba8a973 +PT= 793e22e0b01ffe63e89c84a0d0fe1216 +TEST= 126 +KEY= 2e10c1b8fb822df479bb50161bdb6bd4 +IV= d84401cf83566fea8fb859c446c22632 +CT= 793e22e0b01ffe63e89c84a0d0fe1216 +PT= 96858a96feb19712b10a44fbf8e633d9 +TEST= 127 +KEY= b8954b2e0533bae6c8b114ede33d580d +IV= 7210e127bfb706ef9cd24139c0927e01 +CT= 96858a96feb19712b10a44fbf8e633d9 +PT= 28a34cc75a215117331d6b88387e16f8 +TEST= 128 +KEY= 903607e95f12ebf1fbac7f65db434ef5 +IV= 744b8dd281919f79fc529da15aa0f18f +CT= 28a34cc75a215117331d6b88387e16f8 +PT= 43fe41dc9ffb88f93adc43d41ba3e4b2 +TEST= 129 +KEY= d3c84635c0e96308c1703cb1c0e0aa47 +IV= 5c7379a90f1e47f88c7424e8cd31e55d +CT= 43fe41dc9ffb88f93adc43d41ba3e4b2 +PT= 66d6d0e84ceb8672d38dde557cccfff6 +TEST= 130 +KEY= b51e96dd8c02e57a12fde2e4bc2c55b1 +IV= 529b92cd068415627c4be49874347f98 +CT= 66d6d0e84ceb8672d38dde557cccfff6 +PT= f817d013cb041ca41b6d611ed261fae9 +TEST= 131 +KEY= 4d0946ce4706f9de099083fa6e4daf58 +IV= 9b4452dd48c3eecefdb6a6cfae670117 +CT= f817d013cb041ca41b6d611ed261fae9 +PT= 56420c70cc459a131cd531edc39ed6e9 +TEST= 132 +KEY= 1b4b4abe8b4363cd1545b217add379b1 +IV= 264abbc30cc98da3c06b935b1364a317 +CT= 56420c70cc459a131cd531edc39ed6e9 +PT= 650da8c4cb11e4abfe8841d20443bb04 +TEST= 133 +KEY= 7e46e27a40528766ebcdf3c5a990c2b5 +IV= dbabf7b18568fed50c69da0c9aa5395d +CT= 650da8c4cb11e4abfe8841d20443bb04 +PT= 94e6ce02ae253f3be4a59775cab7b11b +TEST= 134 +KEY= eaa02c78ee77b85d0f6864b0632773ae +IV= f0d2e456ce063cb68988c1c397038480 +CT= 94e6ce02ae253f3be4a59775cab7b11b +PT= 124f09dac6a45e6077dcece971b24ed1 +TEST= 135 +KEY= f8ef25a228d3e63d78b4885912953d7f +IV= c19a6d2d35e606e552580b002023c966 +CT= 124f09dac6a45e6077dcece971b24ed1 +PT= aad649fd1168dfcb431a7216571ed4c1 +TEST= 136 +KEY= 52396c5f39bb39f63baefa4f458be9be +IV= df1a307b1d25bc2751ecdc791ec51b16 +CT= aad649fd1168dfcb431a7216571ed4c1 +PT= 992749c940cbbb0944f5248e8d65268c +TEST= 137 +KEY= cb1e2596797082ff7f5bdec1c8eecf32 +IV= d8b0466fc4344c6bf4e57584e5f48a36 +CT= 992749c940cbbb0944f5248e8d65268c +PT= ff16b9246c325a3b96250875a9d5c4be +TEST= 138 +KEY= 34089cb21542d8c4e97ed6b4613b0b8c +IV= b8c3e4ecf57631ce1eea74ad99545ba2 +CT= ff16b9246c325a3b96250875a9d5c4be +PT= 72edb906165fe6a19e02435ac6457c9a +TEST= 139 +KEY= 46e525b4031d3e65777c95eea77e7716 +IV= 9c4f78d05257c64d752c576b5bb16245 +CT= 72edb906165fe6a19e02435ac6457c9a +PT= 0c2f00362b8733d343dcaf884a6bfd46 +TEST= 140 +KEY= 4aca2582289a0db634a03a66ed158a50 +IV= c51122198d2fd566aca1bd07c28bcc7a +CT= 0c2f00362b8733d343dcaf884a6bfd46 +PT= c7f5c00f42695cf7870240da73d487f7 +TEST= 141 +KEY= 8d3fe58d6af35141b3a27abc9ec10da7 +IV= 14769b7962371925822c42f0411bdc65 +CT= c7f5c00f42695cf7870240da73d487f7 +PT= f4bc8a4310a4cd2f396f43b81bd060eb +TEST= 142 +KEY= 79836fce7a579c6e8acd390485116d4c +IV= cda4414df23427b937d586c1a8164479 +CT= f4bc8a4310a4cd2f396f43b81bd060eb +PT= 1b996a525174c35466103bcbd53ecb9c +TEST= 143 +KEY= 621a059c2b235f3aecdd02cf502fa6d0 +IV= 1da9e7c02be868e118e4b9bf5928bfcf +CT= 1b996a525174c35466103bcbd53ecb9c +PT= 2b4ec5cb9de50257b5901c6d49b5eb54 +TEST= 144 +KEY= 4954c057b6c65d6d594d1ea2199a4d84 +IV= 55433149aa93215bf53cb8fe66cd683a +CT= 2b4ec5cb9de50257b5901c6d49b5eb54 +PT= 5a5b9aca3bda951dc4c4dfb7dd15ad18 +TEST= 145 +KEY= 130f5a9d8d1cc8709d89c115c48fe09c +IV= 695c69ea8c4257d2758364aff6387da0 +CT= 5a5b9aca3bda951dc4c4dfb7dd15ad18 +PT= 5bb08593ba52e94f07cb14ff564af299 +TEST= 146 +KEY= 48bfdf0e374e213f9a42d5ea92c51205 +IV= 665463164601cd0045c684729cdd5e7d +CT= 5bb08593ba52e94f07cb14ff564af299 +PT= db1840467889551150026a90e3fc272f +TEST= 147 +KEY= 93a79f484fc7742eca40bf7a7139352a +IV= 355c4b87a682712460c80aba630f7be8 +CT= db1840467889551150026a90e3fc272f +PT= 9f7bd8ef96a1ecc75b4e3031e65fe8fc +TEST= 148 +KEY= 0cdc47a7d96698e9910e8f4b9766ddd6 +IV= fbf20fec0a9e9b530dd3745955a1960c +CT= 9f7bd8ef96a1ecc75b4e3031e65fe8fc +PT= dcf003e1ddd4b52f5b680568b42eeecf +TEST= 149 +KEY= d02c444604b22dc6ca668a2323483319 +IV= 04eadc638e309466b9500b1c3a308856 +CT= dcf003e1ddd4b52f5b680568b42eeecf +PT= ddd2f2aefef4a4641747699170df0129 +TEST= 150 +KEY= 0dfeb6e8fa4689a2dd21e3b253973230 +IV= fb521123e5bb45f1ac7083c382b95e10 +CT= ddd2f2aefef4a4641747699170df0129 +PT= 7d6c54e4369e965513de1e95e8a37433 +TEST= 151 +KEY= 7092e20cccd81ff7cefffd27bb344603 +IV= 0e71300101915aee97563493b4b2efb9 +CT= 7d6c54e4369e965513de1e95e8a37433 +PT= b7f5c4275ef7d3a23e8e9a4bc2bca700 +TEST= 152 +KEY= c767262b922fcc55f071676c7988e103 +IV= 8bbc970d4e24f6f1a92859bbae70b757 +CT= b7f5c4275ef7d3a23e8e9a4bc2bca700 +PT= 679fa9a8ab3ee2f0663d4dc95fec3847 +TEST= 153 +KEY= a0f88f8339112ea5964c2aa52664d944 +IV= b8d28b6903859465f996a0df491ddaaa +CT= 679fa9a8ab3ee2f0663d4dc95fec3847 +PT= 914dceac5b00940a415c2144daa1ef03 +TEST= 154 +KEY= 31b5412f6211baafd7100be1fcc53647 +IV= 06e1ff99e63e0edda1d95682b541d026 +CT= 914dceac5b00940a415c2144daa1ef03 +PT= a718031a531395da071b828a10a2b9dc +TEST= 155 +KEY= 96ad423531022f75d00b896bec678f9b +IV= f18546028693cc0a72e218460ac932e9 +CT= a718031a531395da071b828a10a2b9dc +PT= 19d996b9ff549029d800cf977c0e0a88 +TEST= 156 +KEY= 8f74d48cce56bf5c080b46fc90698513 +IV= 7e98dafa8de35537a0b0aa8fa32e01df +CT= 19d996b9ff549029d800cf977c0e0a88 +PT= 6a7d514fbe9963987e0ee5dd22fdc8bd +TEST= 157 +KEY= e50985c370cfdcc47605a321b2944dae +IV= 071f44277d12ad6e653fb747c11befb7 +CT= 6a7d514fbe9963987e0ee5dd22fdc8bd +PT= ab07c464df72df58411a7cbf906f43a6 +TEST= 158 +KEY= 4e0e41a7afbd039c371fdf9e22fb0e08 +IV= bda8979a0de78999ae0659d2744bc21b +CT= ab07c464df72df58411a7cbf906f43a6 +PT= a8abc34ff51fd998427a7837bb0f22bb +TEST= 159 +KEY= e6a582e85aa2da047565a7a999f42cb3 +IV= 3ca763c4375a6c70f072b52c42a02560 +CT= a8abc34ff51fd998427a7837bb0f22bb +PT= 9e82a41ab2a2748695663075c5bf1c09 +TEST= 160 +KEY= 782726f2e800ae82e00397dc5c4b30ba +IV= b1dd4dc8715ca0b8ba3426395b61aba4 +CT= 9e82a41ab2a2748695663075c5bf1c09 +PT= 3c891aefc6645f3c23a2e3a2e1a522ef +TEST= 161 +KEY= 44ae3c1d2e64f1bec3a1747ebdee1255 +IV= 932f28e3fc0f85a0e703ad6079a68cc0 +CT= 3c891aefc6645f3c23a2e3a2e1a522ef +PT= d4fdd9c3d36e80e0afa95abec2e62fb9 +TEST= 162 +KEY= 9053e5defd0a715e6c082ec07f083dec +IV= 1ad1530de6274bba3a097004d85df8fa +CT= d4fdd9c3d36e80e0afa95abec2e62fb9 +PT= 9facbb106fbf34d9b25a83ad4f45aa38 +TEST= 163 +KEY= 0fff5ece92b54587de52ad6d304d97d4 +IV= 8412eaa361ab8193ad529fa36944fe3d +CT= 9facbb106fbf34d9b25a83ad4f45aa38 +PT= e95628b6a14326ac153b228c0dd25063 +TEST= 164 +KEY= e6a9767833f6632bcb698fe13d9fc7b7 +IV= 9f1d906fd25ccca7565d82cda44b4a57 +CT= e95628b6a14326ac153b228c0dd25063 +PT= 7b1ecd07e452d593d00e326f8fd9f2b5 +TEST= 165 +KEY= 9db7bb7fd7a4b6b81b67bd8eb2463502 +IV= 9c91b12734a86451492400ee5759c190 +CT= 7b1ecd07e452d593d00e326f8fd9f2b5 +PT= a99874c1eca463d335b37179348aef4f +TEST= 166 +KEY= 342fcfbe3b00d56b2ed4ccf786ccda4d +IV= 9060c6e8e2b51e5f1000860ecb5a608c +CT= a99874c1eca463d335b37179348aef4f +PT= f9296e658c3048c58fe6404ab6e0186c +TEST= 167 +KEY= cd06a1dbb7309daea1328cbd302cc221 +IV= adcb427405edf8078622afc6c731d3ef +CT= f9296e658c3048c58fe6404ab6e0186c +PT= 8d3a4abfb8f57aebb1284b78bfdd240d +TEST= 168 +KEY= 403ceb640fc5e745101ac7c58ff1e62c +IV= 4ced30477756892a49fe6358700f5de7 +CT= 8d3a4abfb8f57aebb1284b78bfdd240d +PT= 7c71310d5241b8b461847fa7e2b4d506 +TEST= 169 +KEY= 3c4dda695d845ff1719eb8626d45332a +IV= 52a3b8e21588368aa3ad2131b283b34c +CT= 7c71310d5241b8b461847fa7e2b4d506 +PT= 380a1e2925fc8061fbc69b08b4c7c6c8 +TEST= 170 +KEY= 0447c4407878df908a58236ad982f5e2 +IV= b7ad265df50abd77c1d1d02baf06cebd +CT= 380a1e2925fc8061fbc69b08b4c7c6c8 +PT= 6931e262570f27732a75629a384492ca +TEST= 171 +KEY= 6d7626222f77f8e3a02d41f0e1c66728 +IV= dd7d3ca7f6ce54775836734b10685a99 +CT= 6931e262570f27732a75629a384492ca +PT= 336d0ab3f9a793469c544e98cfdc8ad6 +TEST= 172 +KEY= 5e1b2c91d6d06ba53c790f682e1aedfe +IV= 54087c05437049fbafc9bf6c56ad16cc +CT= 336d0ab3f9a793469c544e98cfdc8ad6 +PT= 0098a640f1d04e5557f748b80215082a +TEST= 173 +KEY= 5e838ad1270025f06b8e47d02c0fe5d4 +IV= dd13a93c7faef14820d6a168af9969db +CT= 0098a640f1d04e5557f748b80215082a +PT= 48660eddc3acac1a814ae088650de007 +TEST= 174 +KEY= 16e5840ce4ac89eaeac4a758490205d3 +IV= 589c43a680f7ae6e15de25fd50f18bed +CT= 48660eddc3acac1a814ae088650de007 +PT= 047740c48160a14563c0049316c7b78e +TEST= 175 +KEY= 1292c4c865cc28af8904a3cb5fc5b25d +IV= 22db095af8268d37ac536fda3a81b7c2 +CT= 047740c48160a14563c0049316c7b78e +PT= d9679abb1aed1524e8da2eca89172853 +TEST= 176 +KEY= cbf55e737f213d8b61de8d01d6d29a0e +IV= 77fdccc9bab3b7e81d7b9d14540ed3a7 +CT= d9679abb1aed1524e8da2eca89172853 +PT= c774ad9ef683a59747ab41da044471c4 +TEST= 177 +KEY= 0c81f3ed89a2981c2675ccdbd296ebca +IV= 2e266970512c0f6d404367978c70b5c6 +CT= c774ad9ef683a59747ab41da044471c4 +PT= 927c98afde6f108268a306a1a818ee89 +TEST= 178 +KEY= 9efd6b4257cd889e4ed6ca7a7a8e0543 +IV= e2b0a0f146e931136932d8188b7dc980 +CT= 927c98afde6f108268a306a1a818ee89 +PT= d3c11af1ef255d65eaaee5b5c5bf3cd9 +TEST= 179 +KEY= 4d3c71b3b8e8d5fba4782fcfbf31399a +IV= aba118a590a8a69d41d20ed13f7da4c9 +CT= d3c11af1ef255d65eaaee5b5c5bf3cd9 +PT= 760b1c47eb476a246ce41163b7425c7b +TEST= 180 +KEY= 3b376df453afbfdfc89c3eac087365e1 +IV= 8a395ffee93ff820fbc086932216324f +CT= 760b1c47eb476a246ce41163b7425c7b +PT= 4eeae25d1654a461d6a56896edffeab7 +TEST= 181 +KEY= 75dd8fa945fb1bbe1e39563ae58c8f56 +IV= 82d68de458d38127e2a17da736bc1651 +CT= 4eeae25d1654a461d6a56896edffeab7 +PT= bd7abd27f3515b9fd337adadba5e9ec9 +TEST= 182 +KEY= c8a7328eb6aa4021cd0efb975fd2119f +IV= 95757c38f4cb26c29df174fd8b1f35e8 +CT= bd7abd27f3515b9fd337adadba5e9ec9 +PT= e32ef56de91cc21c158822bdb841a02c +TEST= 183 +KEY= 2b89c7e35fb6823dd886d92ae793b1b3 +IV= affb434005e300e99e815a8e5b46e159 +CT= e32ef56de91cc21c158822bdb841a02c +PT= 578b7692d68bd4d65a159c9ccdc81f64 +TEST= 184 +KEY= 7c02b171893d56eb829345b62a5baed7 +IV= 15e783551969f275ef25a429f68ba0db +CT= 578b7692d68bd4d65a159c9ccdc81f64 +PT= 0f70d77f31de8f0010628377c8e4a1c3 +TEST= 185 +KEY= 7372660eb8e3d9eb92f1c6c1e2bf0f14 +IV= 078b6e3fc7c79d52a5c49847a7c5d0bb +CT= 0f70d77f31de8f0010628377c8e4a1c3 +PT= a4f29f6a50a4a15789d4647774c96997 +TEST= 186 +KEY= d780f964e84778bc1b25a2b696766683 +IV= c9b2c903f131856c0d8218146479513a +CT= a4f29f6a50a4a15789d4647774c96997 +PT= 7ad4f764911f8f1e8c9356f00b1468ee +TEST= 187 +KEY= ad540e007958f7a297b6f4469d620e6d +IV= 780dad9dba12ddc713ecf44057b8b56e +CT= 7ad4f764911f8f1e8c9356f00b1468ee +PT= a00eafd28a95c7f39137773f28f9a0d3 +TEST= 188 +KEY= 0d5aa1d2f3cd305106818379b59baebe +IV= 6643bf26488fb21bcdaa7d4fabaa5bc3 +CT= a00eafd28a95c7f39137773f28f9a0d3 +PT= fc884eeeb73b2f66c97d742a441b0463 +TEST= 189 +KEY= f1d2ef3c44f61f37cffcf753f180aadd +IV= 7b707442550bf1fa4c1b74f0dc3237fc +CT= fc884eeeb73b2f66c97d742a441b0463 +PT= 9c260aa82c6902b068495b4844507f7d +TEST= 190 +KEY= 6df4e594689f1d87a7b5ac1bb5d0d5a0 +IV= 8329e8de2980225da61158bf467b1d79 +CT= 9c260aa82c6902b068495b4844507f7d +PT= 1c12feaa35ad2dd21de6411c3a3bb6d5 +TEST= 191 +KEY= 71e61b3e5d323055ba53ed078feb6375 +IV= efd514d7cf3fac49dbb5bb3505b9b18f +CT= 1c12feaa35ad2dd21de6411c3a3bb6d5 +PT= 15f26d34e8e1037a5a2393cea5db396b +TEST= 192 +KEY= 6414760ab5d3332fe0707ec92a305a1e +IV= 9efc37c295552b965b29a23ac2788d8b +CT= 15f26d34e8e1037a5a2393cea5db396b +PT= 76f0c79955566a0a091aa46e0c59455e +TEST= 193 +KEY= 12e4b193e0855925e96adaa726691f40 +IV= 5ba54e33128a7526a9130e632be00d65 +CT= 76f0c79955566a0a091aa46e0c59455e +PT= 1ea06231ebeeb995e2f94b88a4004333 +TEST= 194 +KEY= 0c44d3a20b6be0b00b93912f82695c73 +IV= 9b1c6fa42510e530d2282bf8c5516dce +CT= 1ea06231ebeeb995e2f94b88a4004333 +PT= 16c36348884b32ac1cb1de2d3c158981 +TEST= 195 +KEY= 1a87b0ea8320d21c17224f02be7cd5f2 +IV= f755f641eed4c828dcbecc327d93f4af +CT= 16c36348884b32ac1cb1de2d3c158981 +PT= 6581a3fb5f61c6c1904f35e787bf552d +TEST= 196 +KEY= 7f061311dc4114dd876d7ae539c380df +IV= 5d799f356c1672707716c47da4384c01 +CT= 6581a3fb5f61c6c1904f35e787bf552d +PT= 0ba11f8ee845e03641928825b3344994 +TEST= 197 +KEY= 74a70c9f3404f4ebc6fff2c08af7c94b +IV= 89a5592031795ceaecf1c1f274813818 +CT= 0ba11f8ee845e03641928825b3344994 +PT= 1cf907a6c8a33c7806819eb97b854588 +TEST= 198 +KEY= 685e0b39fca7c893c07e6c79f1728cc3 +IV= bbe87558af456066b9ce3ebb8729d554 +CT= 1cf907a6c8a33c7806819eb97b854588 +PT= 722bb2e53ce7846f40b5ea18af1430b0 +TEST= 199 +KEY= 1a75b9dcc0404cfc80cb86615e66bc73 +IV= 2cc42e6da36883482acb5d9d92823186 +CT= 722bb2e53ce7846f40b5ea18af1430b0 +PT= e667d6a95e9c56bb56e4436cc1b69874 +TEST= 200 +KEY= fc126f759edc1a47d62fc50d9fd02407 +IV= f18dd0388bf5692b7394bafdc4854308 +CT= e667d6a95e9c56bb56e4436cc1b69874 +PT= 3c9a76798c468470eebc5f7b915879a3 +TEST= 201 +KEY= c088190c129a9e3738939a760e885da4 +IV= 8262d8603fe0f4ae8bf5795690992f1c +CT= 3c9a76798c468470eebc5f7b915879a3 +PT= 3cafb994bdef76370d8a5129b63becdb +TEST= 202 +KEY= fc27a098af75e8003519cb5fb8b3b17f +IV= ab090f7a86cfd9a7c1bd8869bbb4d27b +CT= 3cafb994bdef76370d8a5129b63becdb +PT= 50d037733d2c3242024bd322addf01cb +TEST= 203 +KEY= acf797eb9259da423752187d156cb0b4 +IV= 3581d6724722c3892c712b2aa1066824 +CT= 50d037733d2c3242024bd322addf01cb +PT= 0d7cb755305ef09692fced530ccc1336 +TEST= 204 +KEY= a18b20bea2072ad4a5aef52e19a0a382 +IV= 9d0dad6448895ecbe05f8dc73e014e3c +CT= 0d7cb755305ef09692fced530ccc1336 +PT= d66389e01f44c60b26bcf3f9b39dab55 +TEST= 205 +KEY= 77e8a95ebd43ecdf831206d7aa3d08d7 +IV= 7bdc3cd62cd79c7e6cb8fae104175de4 +CT= d66389e01f44c60b26bcf3f9b39dab55 +PT= cc9f59409d636be5c555ac2841650cd7 +TEST= 206 +KEY= bb77f01e2020873a4647aaffeb580400 +IV= a4fbe42983b236097e40c1e244b14748 +CT= cc9f59409d636be5c555ac2841650cd7 +PT= 34804672fcef79481269b1d254ddcaf9 +TEST= 207 +KEY= 8ff7b66cdccffe72542e1b2dbf85cef9 +IV= 700b37e771e88e5dcd9c81d6fd16b995 +CT= 34804672fcef79481269b1d254ddcaf9 +PT= 62fc00fdf1f6bf44ffbeb5bed5589a64 +TEST= 208 +KEY= ed0bb6912d394136ab90ae936add549d +IV= f3a9954079382acd97c3ec198522ae69 +CT= 62fc00fdf1f6bf44ffbeb5bed5589a64 +PT= f7901904a02544e064400a2625121c4c +TEST= 209 +KEY= 1a9baf958d1c05d6cfd0a4b54fcf48d1 +IV= 3799f5def76c56f8b0a69889b85760aa +CT= f7901904a02544e064400a2625121c4c +PT= a915d55ae8e14497f2693a55f83041f5 +TEST= 210 +KEY= b38e7acf65fd41413db99ee0b7ff0924 +IV= 5421f3f4cdd3c6f9bf38184bc61904aa +CT= a915d55ae8e14497f2693a55f83041f5 +PT= 66ea0d0968631f3bda46921078e495c1 +TEST= 211 +KEY= d56477c60d9e5e7ae7ff0cf0cf1b9ce5 +IV= 3b87243ee38bd474e4cbf34a7c592cfc +CT= 66ea0d0968631f3bda46921078e495c1 +PT= 283826367d00718849a6539ee8cad8bf +TEST= 212 +KEY= fd5c51f0709e2ff2ae595f6e27d1445a +IV= 0fb53077d2bc27c544cd400a28212291 +CT= 283826367d00718849a6539ee8cad8bf +PT= b15ea2718fb406d457c8b96530edc014 +TEST= 213 +KEY= 4c02f381ff2a2926f991e60b173c844e +IV= 8bfe654e422e9bcce7f1357053e1130c +CT= b15ea2718fb406d457c8b96530edc014 +PT= 44238ce0f1765c7983bf408d5ecfa2ba +TEST= 214 +KEY= 08217f610e5c755f7a2ea68649f326f4 +IV= 86841d597fa91f54cbad3c57fc1fc492 +CT= 44238ce0f1765c7983bf408d5ecfa2ba +PT= bb6408099ca64f1216d204865449e967 +TEST= 215 +KEY= b345776892fa3a4d6cfca2001dbacf93 +IV= 849198cea19f4ad76013d172867a0d20 +CT= bb6408099ca64f1216d204865449e967 +PT= b7e109c6813e686ada396ddb277ad960 +TEST= 216 +KEY= 04a47eae13c45227b6c5cfdb3ac016f3 +IV= 9c5e0182124701da958cf68e1b9f8cc1 +CT= b7e109c6813e686ada396ddb277ad960 +PT= 65c77cb822ca10ae1f95b91f0a3f6436 +TEST= 217 +KEY= 61630216310e4289a95076c430ff72c5 +IV= 2bb9026f793a64a325e02b922e3a51dd +CT= 65c77cb822ca10ae1f95b91f0a3f6436 +PT= 48e9db9fc3f883ad28a0299561444197 +TEST= 218 +KEY= 298ad989f2f6c12481f05f5151bb3352 +IV= 6be0b03639c858d8f2cae00efe8fecca +CT= 48e9db9fc3f883ad28a0299561444197 +PT= 02b277ab327bcb5c91831bd376dc5211 +TEST= 219 +KEY= 2b38ae22c08d0a781073448227676143 +IV= adc033e3eec3705031d2fb24205823a2 +CT= 02b277ab327bcb5c91831bd376dc5211 +PT= fe288d6703cf6ab1635483305a82f192 +TEST= 220 +KEY= d5102345c34260c97327c7b27de590d1 +IV= f637c38cb5df86458225143e157b9415 +CT= fe288d6703cf6ab1635483305a82f192 +PT= b07bf02f795d13d972d5d6e556e8ba37 +TEST= 221 +KEY= 656bd36aba1f731001f211572b0d2ae6 +IV= 824b7bbb3a339bf045c3cfea9fd842b9 +CT= b07bf02f795d13d972d5d6e556e8ba37 +PT= d4661c2e102c6644724da54be291215d +TEST= 222 +KEY= b10dcf44aa33155473bfb41cc99c0bbb +IV= 21fa242b2b9fff0c7dc6b712a38a333b +CT= d4661c2e102c6644724da54be291215d +PT= f7edee448559a6acd68815b6eeaf6e38 +TEST= 223 +KEY= 46e021002f6ab3f8a537a1aa27336583 +IV= 390906ece51c92800d620e1cd1fd3574 +CT= f7edee448559a6acd68815b6eeaf6e38 +PT= 07257c91424f65e6752470a6960df6d9 +TEST= 224 +KEY= 41c55d916d25d61ed013d10cb13e935a +IV= 918a010ec2b106de32a220315999df7d +CT= 07257c91424f65e6752470a6960df6d9 +PT= ccb4f3fcffdee9e93dd3ab4cc2db870e +TEST= 225 +KEY= 8d71ae6d92fb3ff7edc07a4073e51454 +IV= 7cf6b4948c4e04ed235f2cc96b0a6b49 +CT= ccb4f3fcffdee9e93dd3ab4cc2db870e +PT= c455220e8c8847ff2592074a53104105 +TEST= 226 +KEY= 49248c631e737808c8527d0a20f55551 +IV= 4839e74c868786d0a109603cf98f1100 +CT= c455220e8c8847ff2592074a53104105 +PT= b4d0f5b4c15d7ad556ed4964a94c898f +TEST= 227 +KEY= fdf479d7df2e02dd9ebf346e89b9dcde +IV= 5c6d9649e47faa8a2dcafb317b6bc0ea +CT= b4d0f5b4c15d7ad556ed4964a94c898f +PT= b515d2904555793ddc142618dcff8464 +TEST= 228 +KEY= 48e1ab479a7b7be042ab1276554658ba +IV= e3573b4137c13bba6cdd10d71042b8f6 +CT= b515d2904555793ddc142618dcff8464 +PT= 2c272d6589e2e6ee09067882795e9fb9 +TEST= 229 +KEY= 64c6862213999d0e4bad6af42c18c703 +IV= 08e335104fc5d18e2c11ef34b805f060 +CT= 2c272d6589e2e6ee09067882795e9fb9 +PT= b38e39322245c4a2e170ebf36d764ad5 +TEST= 230 +KEY= d748bf1031dc59acaadd8107416e8dd6 +IV= e134d0dea38a23983766da18dada70e0 +CT= b38e39322245c4a2e170ebf36d764ad5 +PT= e7556255602b48d7cac710a004fffd2e +TEST= 231 +KEY= 301ddd4551f7117b601a91a7459170f8 +IV= 301c2808833418f45d5f97fb09a99504 +CT= e7556255602b48d7cac710a004fffd2e +PT= d4356d51b1c486aac8bcf2f65312758c +TEST= 232 +KEY= e428b014e03397d1a8a6635116830574 +IV= 264d556fa9a9d73510f562bbf983a4f7 +CT= d4356d51b1c486aac8bcf2f65312758c +PT= b4d003d6c542b576a3eaec8f1b017f5b +TEST= 233 +KEY= 50f8b3c2257122a70b4c8fde0d827a2f +IV= 8821647ad3e9e529909e60d0f75da400 +CT= b4d003d6c542b576a3eaec8f1b017f5b +PT= 10056819f314ff21114be6209ab5508c +TEST= 234 +KEY= 40fddbdbd665dd861a0769fe97372aa3 +IV= cbd574f4db1efee4e2ec9485d1192e04 +CT= 10056819f314ff21114be6209ab5508c +PT= 6e7aa061fe85b6f8972cb0e793be0cb0 +TEST= 235 +KEY= 2e877bba28e06b7e8d2bd91904892613 +IV= 4f98ee1501681ec0e7834fe941df6c6b +CT= 6e7aa061fe85b6f8972cb0e793be0cb0 +PT= 45e0c0014219d77686e82e74e60608ca +TEST= 236 +KEY= 6b67bbbb6af9bc080bc3f76de28f2ed9 +IV= 1d34cab2ff836a7e6568823784519170 +CT= 45e0c0014219d77686e82e74e60608ca +PT= acf686f9d6723eafdbfe512ab3a8c6b1 +TEST= 237 +KEY= c7913d42bc8b82a7d03da6475127e868 +IV= bea74b4435f9f79d39b8cce1f090d4b8 +CT= acf686f9d6723eafdbfe512ab3a8c6b1 +PT= f11fe34d158d40dea10033bce0253f30 +TEST= 238 +KEY= 368ede0fa906c279713d95fbb102d758 +IV= df30ee5d8ca298be630dde4b6d8ad7aa +CT= f11fe34d158d40dea10033bce0253f30 +PT= 4e970acab8b19c942c85faa7825c5e67 +TEST= 239 +KEY= 7819d4c511b75eed5db86f5c335e893f +IV= dc3ccc928c02710ee91391032a3b557d +CT= 4e970acab8b19c942c85faa7825c5e67 +PT= 0ff6c292507cf135036e04a391210466 +TEST= 240 +KEY= 77ef165741cbafd85ed66bffa27f8d59 +IV= 7cc57a486e05e36f852278450c03d39f +CT= 0ff6c292507cf135036e04a391210466 +PT= bbef94c8179e7a124492a252507d58e7 +TEST= 241 +KEY= cc00829f5655d5ca1a44c9adf202d5be +IV= bbb92f65197f8d6b388191e78e90a858 +CT= bbef94c8179e7a124492a252507d58e7 +PT= baf11150dd418ed7c28072a718815954 +TEST= 242 +KEY= 76f193cf8b145b1dd8c4bb0aea838cea +IV= 99da5a29f934be23eb74b6de4e8cc740 +CT= baf11150dd418ed7c28072a718815954 +PT= a935099b91a35655c850939d2fed1569 +TEST= 243 +KEY= dfc49a541ab70d4810942897c56e9983 +IV= 92401b7e92a49fa5a6905e51e49d51c2 +CT= a935099b91a35655c850939d2fed1569 +PT= f60e1b5d10cda17fc762798b86b8708d +TEST= 244 +KEY= 29ca81090a7aac37d7f6511c43d6e90e +IV= c2a57521674eb0fb3e46de2cc1dcf419 +CT= f60e1b5d10cda17fc762798b86b8708d +PT= 0b976079b61f46e7f3cccd17e23d872f +TEST= 245 +KEY= 225de170bc65ead0243a9c0ba1eb6e21 +IV= 66970ae807fed1e3581496c9fbe5ff50 +CT= 0b976079b61f46e7f3cccd17e23d872f +PT= fb44f0094a5fc03bd0a27391e58d0aa3 +TEST= 246 +KEY= d9191179f63a2aebf498ef9a44666482 +IV= ed7b2ed1aff7db9b514d6e4dfaea484b +CT= fb44f0094a5fc03bd0a27391e58d0aa3 +PT= 41a534a69ad25feb39bb9f754f15d8fe +TEST= 247 +KEY= 98bc25df6ce87500cd2370ef0b73bc7c +IV= b7e8c7f08bce1cf1cc2568e18c18c92b +CT= 41a534a69ad25feb39bb9f754f15d8fe +PT= 022b28d4f7355e14f99f654b6c35bc16 +TEST= 248 +KEY= 9a970d0b9bdd2b1434bc15a46746006a +IV= f2ef32464fc7e5f3d397c259cb963b7f +CT= 022b28d4f7355e14f99f654b6c35bc16 +PT= 28f18ea03adeb36c40fd8fbc590ec6c8 +TEST= 249 +KEY= b26683aba103987874419a183e48c6a2 +IV= 687e822ccfc5800e88e59ed7dec1409d +CT= 28f18ea03adeb36c40fd8fbc590ec6c8 +PT= 661f9aea300100333d64fcdd1212c663 +TEST= 250 +KEY= d47919419102984b492566c52c5a00c1 +IV= 3922bb08ee1b4cc75881d1d6f66b8ee0 +CT= 661f9aea300100333d64fcdd1212c663 +PT= 11c4d360f585edf544d5479ae1abdbe6 +TEST= 251 +KEY= c5bdca21648775be0df0215fcdf1db27 +IV= 9b7c0d7d0ea8cad77b331f2e0ca1e639 +CT= 11c4d360f585edf544d5479ae1abdbe6 +PT= 2e4695733b01cc78993e6eb464784223 +TEST= 252 +KEY= ebfb5f525f86b9c694ce4feba9899904 +IV= a2bf273f12fe1f4b2f56a86cafd9c5bf +CT= 2e4695733b01cc78993e6eb464784223 +PT= 1cc514e9f4b13ffef3b076dac8c62877 +TEST= 253 +KEY= f73e4bbbab378638677e3931614fb173 +IV= 1d4960ebe667ac5de5ed767183838846 +CT= 1cc514e9f4b13ffef3b076dac8c62877 +PT= 3b1a7d179dded66a37f3053b8b231eea +TEST= 254 +KEY= cc2436ac36e95052508d3c0aea6caf99 +IV= 974643fdfdb695a44b7ef8676a2b87dd +CT= 3b1a7d179dded66a37f3053b8b231eea +PT= 620a4e7a25e8d05779c0fb8ceba55a74 +TEST= 255 +KEY= ae2e78d613018005294dc78601c9f5ed +IV= c9a1d92db7d553dcaeb3bb81b489257a +CT= 620a4e7a25e8d05779c0fb8ceba55a74 +PT= 93508503278ecece65d67b5f50962c4e +TEST= 256 +KEY= 3d7efdd5348f4ecb4c9bbcd9515fd9a3 +IV= 108e736f1dcd178a8648f6aa6d527732 +CT= 93508503278ecece65d67b5f50962c4e +PT= ea9e953d8b62ffaff9fafb97f614d65c +TEST= 257 +KEY= d7e068e8bfedb164b561474ea74b0fff +IV= b893a94302c0dafb19d7b6656085dca9 +CT= ea9e953d8b62ffaff9fafb97f614d65c +PT= 1452ed26e774029ef30d272f8548c2f8 +TEST= 258 +KEY= c3b285ce5899b3fa466c60612203cd07 +IV= 668ff6719e5a29a99876227eede5818f +CT= 1452ed26e774029ef30d272f8548c2f8 +PT= 4083167e5ed1a1a449c1825b84f321e1 +TEST= 259 +KEY= 833193b00648125e0fade23aa6f0ece6 +IV= 9f6375a022543ab8303368a235813f02 +CT= 4083167e5ed1a1a449c1825b84f321e1 +PT= 9206639d076685fd2078f9b984b7a03f +TEST= 260 +KEY= 1137f02d012e97a32fd51b8322474cd9 +IV= 1b95128e90b110aed9d543d2a996271f +CT= 9206639d076685fd2078f9b984b7a03f +PT= aaa3f2bd0126dfd5007dd2835ccb0109 +TEST= 261 +KEY= bb940290000848762fa8c9007e8c4dd0 +IV= bb2e26a9cdef9d1b2940effba1971a5d +CT= aaa3f2bd0126dfd5007dd2835ccb0109 +PT= b58bb3761519c1726d75ae96313fb7de +TEST= 262 +KEY= 0e1fb1e61511890442dd67964fb3fa0e +IV= 68d3ec37ee43e3f24072f69f2dfa768d +CT= b58bb3761519c1726d75ae96313fb7de +PT= 4558cd47c012b7293396d7edfe3cea85 +TEST= 263 +KEY= 4b477ca1d5033e2d714bb07bb18f108b +IV= f7e107dbf4ddbf7974b699536a4e2803 +CT= 4558cd47c012b7293396d7edfe3cea85 +PT= 6f43b6b28aef5dd1b66279acaab9a589 +TEST= 264 +KEY= 2404ca135fec63fcc729c9d71b36b502 +IV= b3e6da8de5ddf7ed6f832d1306a1c04a +CT= 6f43b6b28aef5dd1b66279acaab9a589 +PT= 1ba743e148bc164c4c8324d665b5a3bd +TEST= 265 +KEY= 3fa389f2175075b08baaed017e8316bf +IV= 8bbbb56b39893c8f286561ef6e47e66a +CT= 1ba743e148bc164c4c8324d665b5a3bd +PT= 49a40365092dd1360d916aaeafd03fc1 +TEST= 266 +KEY= 76078a971e7da486863b87afd153297e +IV= 48ba08703a306f772e78f660173a26b3 +CT= 49a40365092dd1360d916aaeafd03fc1 +PT= df7deb5968d683aaa274b0d5d3f9aa03 +TEST= 267 +KEY= a97a61ce76ab272c244f377a02aa837d +IV= 0c7832f9cdf65dada7fa809b8de709c3 +CT= df7deb5968d683aaa274b0d5d3f9aa03 +PT= 69689e97e9b166da53e25bdfbcaf4a97 +TEST= 268 +KEY= c012ff599f1a41f677ad6ca5be05c9ea +IV= 05bc03f59cd8c5fae4a7240e6168cf41 +CT= 69689e97e9b166da53e25bdfbcaf4a97 +PT= 5f87dc71ef2918f75a94e43007ff50e6 +TEST= 269 +KEY= 9f952328703359012d398895b9fa990c +IV= 4233e654802b55155e158b650b64718e +CT= 5f87dc71ef2918f75a94e43007ff50e6 +PT= 4f170790775a6a147e99d251c401969a +TEST= 270 +KEY= d08224b80769331553a05ac47dfb0f96 +IV= 4aeae53003d5085f5963cc36c4589941 +CT= 4f170790775a6a147e99d251c401969a +PT= e566d46360ef38e5cff0c2e7e7e0d679 +TEST= 271 +KEY= 35e4f0db67860bf09c5098239a1bd9ef +IV= f6cbff51f6e59b7aaa9eb1261707429a +CT= e566d46360ef38e5cff0c2e7e7e0d679 +PT= f7189c4b9e1048ed66d9b7ccd089c5f9 +TEST= 272 +KEY= c2fc6c90f996431dfa892fef4a921c16 +IV= 0a05a4bfbbcc8b3e218c123a95fff475 +CT= f7189c4b9e1048ed66d9b7ccd089c5f9 +PT= 68fb0909789dbfa672beef5df0017b63 +TEST= 273 +KEY= aa076599810bfcbb8837c0b2ba936775 +IV= df1a3af147e72c2ceae5d8713d52f572 +CT= 68fb0909789dbfa672beef5df0017b63 +PT= af2784590089186bed3a48adc1b68562 +TEST= 274 +KEY= 0520e1c08182e4d0650d881f7b25e217 +IV= bfdc5ecf596f5f3cffeaaf4b961209fa +CT= af2784590089186bed3a48adc1b68562 +PT= e8c29d3c129ab8fa797efdce4ce4d4f2 +TEST= 275 +KEY= ede27cfc93185c2a1c7375d137c136e5 +IV= 49195e71516d5117c26814f98fd94c31 +CT= e8c29d3c129ab8fa797efdce4ce4d4f2 +PT= 6acf2ae12c38db520f49e6c90d4b8f03 +TEST= 276 +KEY= 872d561dbf208778133a93183a8ab9e6 +IV= e4fa7788d6e7afbd08884bfcfa74d30c +CT= 6acf2ae12c38db520f49e6c90d4b8f03 +PT= 78fea3b57d6176c44ce753fb01416ca6 +TEST= 277 +KEY= ffd3f5a8c241f1bc5fddc0e33bcbd540 +IV= 08e333f43615229d95e7c425a04ea2b7 +CT= 78fea3b57d6176c44ce753fb01416ca6 +PT= 5030d7131abbd7ac323ba31b602b776e +TEST= 278 +KEY= afe322bbd8fa26106de663f85be0a22e +IV= 64bde35106d9a66a4216ea20f6c52d06 +CT= 5030d7131abbd7ac323ba31b602b776e +PT= 14b32e8bd3bd9d82613e32536e6a9f91 +TEST= 279 +KEY= bb500c300b47bb920cd851ab358a3dbf +IV= 8fb9e6bdcd50610e97cf731216cfe698 +CT= 14b32e8bd3bd9d82613e32536e6a9f91 +PT= 1f22542afce63aa92ccdaf45f8daeef0 +TEST= 280 +KEY= a472581af7a1813b2015feeecd50d34f +IV= e18b3c5eda8cda9e94a376ceef687d9f +CT= 1f22542afce63aa92ccdaf45f8daeef0 +PT= fc986510e3ed40994d1c33201d0edb27 +TEST= 281 +KEY= 58ea3d0a144cc1a26d09cdced05e0868 +IV= d1828c9ddb263064ad259a2360b3dfba +CT= fc986510e3ed40994d1c33201d0edb27 +PT= 06c1ce557c9ac5d40560cf2d40dcc47c +TEST= 282 +KEY= 5e2bf35f68d60476686902e39082cc14 +IV= 3454fd0698cc8cd949970509c23e50f6 +CT= 06c1ce557c9ac5d40560cf2d40dcc47c +PT= 4287fa420fd9afcab7e290273bdf4054 +TEST= 283 +KEY= 1cac091d670fabbcdf8b92c4ab5d8c40 +IV= c2f0c044a975adbd20de56858a074886 +CT= 4287fa420fd9afcab7e290273bdf4054 +PT= 447afdd3acf0deeb0385799789fbaff0 +TEST= 284 +KEY= 58d6f4cecbff7557dc0eeb5322a623b0 +IV= 299c337821b0779a7adc3a04316a6373 +CT= 447afdd3acf0deeb0385799789fbaff0 +PT= ba0bbc980827e87eea51e66c92c96b31 +TEST= 285 +KEY= e2dd4856c3d89d29365f0d3fb06f4881 +IV= 2368291ad179c3c143e636898eb3e104 +CT= ba0bbc980827e87eea51e66c92c96b31 +PT= 77a6131415b251049423fffb1f3a8a3a +TEST= 286 +KEY= 957b5b42d66acc2da27cf2c4af55c2bb +IV= 14300ea81b57e102aedd97ccd466e18a +CT= 77a6131415b251049423fffb1f3a8a3a +PT= a7aec0cc599d56347a72d934ddac7899 +TEST= 287 +KEY= 32d59b8e8ff79a19d80e2bf072f9ba22 +IV= fd62415c90daccd22ec364877db0cb24 +CT= a7aec0cc599d56347a72d934ddac7899 +PT= 1b1100fcb9f85d8ccfdec5865083b44d +TEST= 288 +KEY= 29c49b72360fc79517d0ee76227a0e6f +IV= 6cb24892d26e43e63819c372d5eb4f6d +CT= 1b1100fcb9f85d8ccfdec5865083b44d +PT= 33e9bbd018604f301c2543878fccca5c +TEST= 289 +KEY= 1a2d20a22e6f88a50bf5adf1adb6c433 +IV= 50d84a03998b897d1ae217fea9a955c4 +CT= 33e9bbd018604f301c2543878fccca5c +PT= 07163d652db035c091830042d6047df3 +TEST= 290 +KEY= 1d3b1dc703dfbd659a76adb37bb2b9c0 +IV= 092df26c855f07690836203e3e1790d0 +CT= 07163d652db035c091830042d6047df3 +PT= ad6647af8efcd4f3b2ecdb4d6fffc1eb +TEST= 291 +KEY= b05d5a688d236996289a76fe144d782b +IV= 68634c941957e3f58f71be37d7c5c78b +CT= ad6647af8efcd4f3b2ecdb4d6fffc1eb +PT= d2b51122154d10f67d2c07bd75d5e8e2 +TEST= 292 +KEY= 62e84b4a986e796055b67143619890c9 +IV= 3c85044f6438faa021bb7985a63a959d +CT= d2b51122154d10f67d2c07bd75d5e8e2 +PT= 4131e9296fecd2df35edfbf0cbd0e54b +TEST= 293 +KEY= 23d9a263f782abbf605b8ab3aa487582 +IV= 46d47f3f12b6add5580ce8ce7c7359cd +CT= 4131e9296fecd2df35edfbf0cbd0e54b +PT= 5aea3e73a6ec0d9d683a3526ac1c0e58 +TEST= 294 +KEY= 79339c10516ea6220861bf9506547bda +IV= d3c58b190fda0838c770c2185c553d97 +CT= 5aea3e73a6ec0d9d683a3526ac1c0e58 +PT= a21b17cb4588c30cad6df25a5e83e273 +TEST= 295 +KEY= db288bdb14e6652ea50c4dcf58d799a9 +IV= 870e7f0e3109712e84c58bec0e7032f6 +CT= a21b17cb4588c30cad6df25a5e83e273 +PT= 0021ff3bb8336e607b8de10117005230 +TEST= 296 +KEY= db0974e0acd50b4ede81acce4fd7cb99 +IV= 2fc82b298a60fc40da3efd4e800db063 +CT= 0021ff3bb8336e607b8de10117005230 +PT= 2efa32680ecd84891b447393f7c1ac88 +TEST= 297 +KEY= f5f34688a2188fc7c5c5df5db8166711 +IV= e1b86c9fc466b72be40f65973fc41fc4 +CT= 2efa32680ecd84891b447393f7c1ac88 +PT= 722117c1ee83fba840efee86a930579f +TEST= 298 +KEY= 87d251494c9b746f852a31db1126308e +IV= 48e347a705b6e322153bfe567931346f +CT= 722117c1ee83fba840efee86a930579f +PT= a684344231ec4c03726a0dc20eada36d +TEST= 299 +KEY= 2156650b7d77386cf7403c191f8b93e3 +IV= 4cd618e5f959fc4c66602263f6c5c652 +CT= a684344231ec4c03726a0dc20eada36d +PT= f40bfbeac1c1bd1621fbae1b605bd092 +TEST= 300 +KEY= d55d9ee1bcb6857ad6bb92027fd04371 +IV= 5a41e8952e6b1c551c4691de9c0a4b6d +CT= f40bfbeac1c1bd1621fbae1b605bd092 +PT= 6ecdbfb3947c7e81c7bd4be93b603728 +TEST= 301 +KEY= bb90215228cafbfb1106d9eb44b07459 +IV= 52e2726b0855f993e1075077b3ab1e77 +CT= 6ecdbfb3947c7e81c7bd4be93b603728 +PT= 71e051375a3b974fe523da47862e24ae +TEST= 302 +KEY= ca70706572f16cb4f42503acc29e50f7 +IV= 76b6637161fbe4760fce90e9868b441a +CT= 71e051375a3b974fe523da47862e24ae +PT= cc6cfbcf9a62a3ae55f6b040673b25b3 +TEST= 303 +KEY= 061c8baae893cf1aa1d3b3eca5a57544 +IV= 5563b0c2350a4ed76ee0c322480884fb +CT= cc6cfbcf9a62a3ae55f6b040673b25b3 +PT= da71b26c4ee3fb1fd413fd0757b379e6 +TEST= 304 +KEY= dc6d39c6a670340575c04eebf2160ca2 +IV= 45c1c5daf8de9170c01e554dd36c564e +CT= da71b26c4ee3fb1fd413fd0757b379e6 +PT= bcd4bc394ffb46207ef0a8ec9883bd55 +TEST= 305 +KEY= 60b985ffe98b72250b30e6076a95b1f7 +IV= 38e5b69e6d82a760bfd65cbaacc56f8a +CT= bcd4bc394ffb46207ef0a8ec9883bd55 +PT= fd997e7a7b77e5df637182399779af75 +TEST= 306 +KEY= 9d20fb8592fc97fa6841643efdec1e82 +IV= 8eb39b261910419e43b178dcd6803572 +CT= fd997e7a7b77e5df637182399779af75 +PT= 71749c51136457b604cd8b4c193928a8 +TEST= 307 +KEY= ec5467d48198c04c6c8cef72e4d5362a +IV= 6dfa447305215066a0b5671e5ab80951 +CT= 71749c51136457b604cd8b4c193928a8 +PT= df48d76e54b4264304b0ec036dfdadde +TEST= 308 +KEY= 331cb0bad52ce60f683c037189289bf4 +IV= 8c2b316eca96db57322853e07be47ab3 +CT= df48d76e54b4264304b0ec036dfdadde +PT= 5e2bd374b9856c573a4debf1b8f453ec +TEST= 309 +KEY= 6d3763ce6ca98a585271e88031dcc818 +IV= e541ac59cfdbea97d1ae5221f849838e +CT= 5e2bd374b9856c573a4debf1b8f453ec +PT= d7f97b76a8d3076d343a22459ec4765d +TEST= 310 +KEY= bace18b8c47a8d35664bcac5af18be45 +IV= b359889a22b9502571e4817c47bc5348 +CT= d7f97b76a8d3076d343a22459ec4765d +PT= e24f05eee812bd3389ac0aac4172f5c6 +TEST= 311 +KEY= 58811d562c683006efe7c069ee6a4b83 +IV= 33f8d881a783051987103096b6c734c3 +CT= e24f05eee812bd3389ac0aac4172f5c6 +PT= a2ab44cc9c41a8748201da6f9429ab39 +TEST= 312 +KEY= fa2a599ab02998726de61a067a43e0ba +IV= 2028704442ae252bcf1d081c5ee2d80b +CT= a2ab44cc9c41a8748201da6f9429ab39 +PT= e8fa100d1d28186196baf990a80109aa +TEST= 313 +KEY= 12d04997ad018013fb5ce396d242e910 +IV= 6384e3612062bc6850c94c3b14934a6f +CT= e8fa100d1d28186196baf990a80109aa +PT= 683aef47a8990e2f8aad8813789069b1 +TEST= 314 +KEY= 7aeaa6d005988e3c71f16b85aad280a1 +IV= 12f78728f3b0efac7d304257e47ed5c8 +CT= 683aef47a8990e2f8aad8813789069b1 +PT= f3121c95a5bacdeaefa87c4ee40b6c6d +TEST= 315 +KEY= 89f8ba45a02243d69e5917cb4ed9eccc +IV= fe654bc69677e13383c4206bfb7896a6 +CT= f3121c95a5bacdeaefa87c4ee40b6c6d +PT= ae9701378e128847a2669b516795d586 +TEST= 316 +KEY= 276fbb722e30cb913c3f8c9a294c394a +IV= e79d5c468bcba36a79b74f32f28fa635 +CT= ae9701378e128847a2669b516795d586 +PT= d97d988a40c5b323794f160fe8639262 +TEST= 317 +KEY= fe1223f86ef578b245709a95c12fab28 +IV= 4f3055450c627ad4712e042666ac0812 +CT= d97d988a40c5b323794f160fe8639262 +PT= 32381ba55d5c0c91d683d57593772496 +TEST= 318 +KEY= cc2a385d33a9742393f34fe052588fbe +IV= 172165b468b83b62b41a2b4310461193 +CT= 32381ba55d5c0c91d683d57593772496 +PT= 4d555f31a60f1007b96fbb458b06a619 +TEST= 319 +KEY= 817f676c95a664242a9cf4a5d95e29a7 +IV= 5d5eebea67dcd5f7851619f1baa6414e +CT= 4d555f31a60f1007b96fbb458b06a619 +PT= 23d1ac0f18c20fce7e5cc4619f8376d5 +TEST= 320 +KEY= a2aecb638d646bea54c030c446dd5f72 +IV= 54154b82b5820d5892dabd15b403345d +CT= 23d1ac0f18c20fce7e5cc4619f8376d5 +PT= 2e55905a38f818cc04d8a792d2007332 +TEST= 321 +KEY= 8cfb5b39b59c73265018975694dd2c40 +IV= ac47d7619a587dc8213b749918fcfea8 +CT= 2e55905a38f818cc04d8a792d2007332 +PT= 010f3396885f8f6bf15170b8e6d221bd +TEST= 322 +KEY= 8df468af3dc3fc4da149e7ee720f0dfd +IV= 6ce249d2e89c61acd029aa3c122427d1 +CT= 010f3396885f8f6bf15170b8e6d221bd +PT= 4db3972d9851b8a4b3150a43210d36f0 +TEST= 323 +KEY= c047ff82a59244e9125cedad53023b0d +IV= 07a578889914e113c1c4de01dc4b1de4 +CT= 4db3972d9851b8a4b3150a43210d36f0 +PT= 84f64cffd705e82704ff3da4fc074b34 +TEST= 324 +KEY= 44b1b37d7297acce16a3d009af057039 +IV= ce73adcd7bcf1807c084276edd765256 +CT= 84f64cffd705e82704ff3da4fc074b34 +PT= 5964df8e8d656846ee574635787f7b18 +TEST= 325 +KEY= 1dd56cf3fff2c488f8f4963cd77a0b21 +IV= 679903574013011e62cc5798b9633607 +CT= 5964df8e8d656846ee574635787f7b18 +PT= e28e7e3aa93802beefe258f38f5d2e5c +TEST= 326 +KEY= ff5b12c956cac6361716cecf5827257d +IV= 678d8583a022c60bce2c227627a548b2 +CT= e28e7e3aa93802beefe258f38f5d2e5c +PT= d297684a7c50765c413bfa37b5e1e256 +TEST= 327 +KEY= 2dcc7a832a9ab06a562d34f8edc6c72b +IV= 4ef9aacc21733b65b4dd0b1f105d4037 +CT= d297684a7c50765c413bfa37b5e1e256 +PT= 9ef5f9a2b14b090a201de74e4cf714c8 +TEST= 328 +KEY= b33983219bd1b9607630d3b6a131d3e3 +IV= 5cc41fcc9ec19619ba06d10bbc6e1f5f +CT= 9ef5f9a2b14b090a201de74e4cf714c8 +PT= 81ef000cf6ca737e0f449927e66f6392 +TEST= 329 +KEY= 32d6832d6d1bca1e79744a91475eb071 +IV= 6de60ce2986cf80c5d588fa1f9a8c3a0 +CT= 81ef000cf6ca737e0f449927e66f6392 +PT= 3be177ee9f8f7be3bce0faa70c0a5025 +TEST= 330 +KEY= 0937f4c3f294b1fdc594b0364b54e054 +IV= be2f86a52beed4497790d6134cf0d64e +CT= 3be177ee9f8f7be3bce0faa70c0a5025 +PT= dd313134db126529f349808b3e766795 +TEST= 331 +KEY= d406c5f72986d4d436dd30bd752287c1 +IV= a89e52478fdef91af151097ced84579c +CT= dd313134db126529f349808b3e766795 +PT= 330203ea36484c8e091f00cd2255e599 +TEST= 332 +KEY= e704c61d1fce985a3fc2307057776258 +IV= 1aef7ba63a3e3b6d2eb8eb1980d3e581 +CT= 330203ea36484c8e091f00cd2255e599 +PT= e28a47cdb7db0351006c1d9fb227fcef +TEST= 333 +KEY= 058e81d0a8159b0b3fae2defe5509eb7 +IV= f67c7fcf8c5aa1574a165d8cbe694bf4 +CT= e28a47cdb7db0351006c1d9fb227fcef +PT= acf869797690853be142bb7bac735fc8 +TEST= 334 +KEY= a976e8a9de851e30deec96944923c17f +IV= 636f181c4735e700897928bfc60a43eb +CT= acf869797690853be142bb7bac735fc8 +PT= 60ff9bf36809daeb94f823fc6458b26a +TEST= 335 +KEY= c989735ab68cc4db4a14b5682d7b7315 +IV= 0829c0ee6b170c490c7a73401761ceaa +CT= 60ff9bf36809daeb94f823fc6458b26a +PT= 17630cbeab904f7996301515f24a1f27 +TEST= 336 +KEY= deea7fe41d1c8ba2dc24a07ddf316c32 +IV= a4e0624d86f1098d2dd4d0408897aced +CT= 17630cbeab904f7996301515f24a1f27 +PT= a1e35c3e2fa1b1db11db96e7dd58ab37 +TEST= 337 +KEY= 7f0923da32bd3a79cdff369a0269c705 +IV= d3639a296ff168ed773785cfcacd1015 +CT= a1e35c3e2fa1b1db11db96e7dd58ab37 +PT= 14f5408460708a69a22a2023b01969ce +TEST= 338 +KEY= 6bfc635e52cdb0106fd516b9b270aecb +IV= 37cd0428a0c08cc6aabaaa05d8830557 +CT= 14f5408460708a69a22a2023b01969ce +PT= 516991ca6530d20ab121394f51288880 +TEST= 339 +KEY= 3a95f29437fd621adef42ff6e358264b +IV= fb52f5a95f2e3665d44f0aeacb88b108 +CT= 516991ca6530d20ab121394f51288880 +PT= fb0c32b66729736f8e5ec8c92d80fdc5 +TEST= 340 +KEY= c199c02250d4117550aae73fced8db8e +IV= 403b43c740215d94e8fbae22846d3b0a +CT= fb0c32b66729736f8e5ec8c92d80fdc5 +PT= c243054d022e7e9efc21f965c71d63eb +TEST= 341 +KEY= 03dac56f52fa6febac8b1e5a09c5b865 +IV= 663796b211e7f6e05b4a107b16a904b0 +CT= c243054d022e7e9efc21f965c71d63eb +PT= 6ca56f6792355b2a7a60a4467a85f71e +TEST= 342 +KEY= 6f7faa08c0cf34c1d6ebba1c73404f7b +IV= a23b73df1477ec98202135164c6ef1ab +CT= 6ca56f6792355b2a7a60a4467a85f71e +PT= bc590c8b427b013f873b2f5f8d66d5d1 +TEST= 343 +KEY= d326a68382b435fe51d09543fe269aaa +IV= e84df462c62d594aad94c33c446e18fc +CT= bc590c8b427b013f873b2f5f8d66d5d1 +PT= d37caa9bea300ff6219349dba25da0a6 +TEST= 344 +KEY= 005a0c1868843a087043dc985c7b3a0c +IV= 9aad322884ebe93d0fa084e144600174 +CT= d37caa9bea300ff6219349dba25da0a6 +PT= ae50c328affc39a103c767c1fd337449 +TEST= 345 +KEY= ae0acf30c77803a97384bb59a1484e45 +IV= 9cee91362fb0d50abceb58ef49ec3614 +CT= ae50c328affc39a103c767c1fd337449 +PT= 882939453c6e156cd023b468edd16c95 +TEST= 346 +KEY= 2623f675fb1616c5a3a70f314c9922d0 +IV= 5626126cc424bf26d92c822442e4221e +CT= 882939453c6e156cd023b468edd16c95 +PT= b9a97fe0def66604f6ce928aab532ec2 +TEST= 347 +KEY= 9f8a899525e070c155699dbbe7ca0c12 +IV= e5bb374c14e36fd0c2d5f9191c967ec7 +CT= b9a97fe0def66604f6ce928aab532ec2 +PT= 6ed0ff2fe8da900a33ae20f7c1c2e457 +TEST= 348 +KEY= f15a76bacd3ae0cb66c7bd4c2608e845 +IV= 4493b9f0ff63d392273302b6932c8f77 +CT= 6ed0ff2fe8da900a33ae20f7c1c2e457 +PT= b7583a56bed55067a520b4f5e5c1528f +TEST= 349 +KEY= 46024cec73efb0acc3e709b9c3c9baca +IV= 12e2bfd3eab69e5132e3cdf8bafbd45e +CT= b7583a56bed55067a520b4f5e5c1528f +PT= 28874485575e292b0c83e1b568019bf0 +TEST= 350 +KEY= 6e85086924b19987cf64e80cabc8213a +IV= 3cefdc726c919ca265cd6c28a05de542 +CT= 28874485575e292b0c83e1b568019bf0 +PT= a35d16bbb96bf3f9e06d96eda9bb44bb +TEST= 351 +KEY= cdd81ed29dda6a7e2f097ee102736581 +IV= 4ae79901700f018d1e5d95a9fad762f2 +CT= a35d16bbb96bf3f9e06d96eda9bb44bb +PT= 367e6880d369d482e7e64cfcd1bcc870 +TEST= 352 +KEY= fba676524eb3befcc8ef321dd3cfadf1 +IV= 52eedb058a8e1fe7c651d484f86f941f +CT= 367e6880d369d482e7e64cfcd1bcc870 +PT= 32b33e97c94953392a738a964db121fc +TEST= 353 +KEY= c91548c587faedc5e29cb88b9e7e8c0d +IV= b3704291187e9d55901dd237ec1e2f24 +CT= 32b33e97c94953392a738a964db121fc +PT= 965a9a0c0287ab8535436e95cc9bfb99 +TEST= 354 +KEY= 5f4fd2c9857d4640d7dfd61e52e57794 +IV= b3878fc256fa4f9ed0ba05ff51c0ce2a +CT= 965a9a0c0287ab8535436e95cc9bfb99 +PT= 367a5c93099acf72353dac320a3b766e +TEST= 355 +KEY= 69358e5a8ce78932e2e27a2c58de01fa +IV= 774ea78aecaf5a1d7cc1785de91cab01 +CT= 367a5c93099acf72353dac320a3b766e +PT= 116edeb1d0e6f8d1bb58af648429b792 +TEST= 356 +KEY= 785b50eb5c0171e359bad548dcf7b668 +IV= fb1ec4218c5f733a54dea7f753f45d68 +CT= 116edeb1d0e6f8d1bb58af648429b792 +PT= ef3c679822e3a906f380cd07ebe65f09 +TEST= 357 +KEY= 976737737ee2d8e5aa3a184f3711e961 +IV= 8bbe09afe41c5a78eba0524212ac570f +CT= ef3c679822e3a906f380cd07ebe65f09 +PT= 291b066a30a3b11681d414a4bb5311d5 +TEST= 358 +KEY= be7c31194e4169f32bee0ceb8c42f8b4 +IV= 4e8f651c06778a964aa7d43999e41fd6 +CT= 291b066a30a3b11681d414a4bb5311d5 +PT= 764f8fd22fe0bd98852f259ea6dc6f7c +TEST= 359 +KEY= c833becb61a1d46baec129752a9e97c8 +IV= e90a35007ee7f001d1f5982bf2477c82 +CT= 764f8fd22fe0bd98852f259ea6dc6f7c +PT= 66016373a6b1a3797a1b2d2b19b73126 +TEST= 360 +KEY= ae32ddb8c7107712d4da045e3329a6ee +IV= 46ff289808b1af6b290cb5af05747085 +CT= 66016373a6b1a3797a1b2d2b19b73126 +PT= 3367064ecf5ca978001887dbde40de5a +TEST= 361 +KEY= 9d55dbf6084cde6ad4c28385ed6978b4 +IV= 9bac8819e1ca613cfaa730fbc2034168 +CT= 3367064ecf5ca978001887dbde40de5a +PT= 5c4f01d47c9da94de95fc26763cc1146 +TEST= 362 +KEY= c11ada2274d177273d9d41e28ea569f2 +IV= a5ce34a846e1d0a737963c49fad6378e +CT= 5c4f01d47c9da94de95fc26763cc1146 +PT= d41d854e42863f161e76a2397020c321 +TEST= 363 +KEY= 15075f6c3657483123ebe3dbfe85aad3 +IV= 2cc823722dd3e8f15035875ed43513e2 +CT= d41d854e42863f161e76a2397020c321 +PT= 1c542dc0b54a053471af583c909ab3c4 +TEST= 364 +KEY= 095372ac831d4d055244bbe76e1f1917 +IV= 9799d03b6ad46becd981279b35df707c +CT= 1c542dc0b54a053471af583c909ab3c4 +PT= 958d0254d7afe1e678a9844df4f4d18d +TEST= 365 +KEY= 9cde70f854b2ace32aed3faa9aebc89a +IV= e0e401c7ba5e319f0d60ab765cbee176 +CT= 958d0254d7afe1e678a9844df4f4d18d +PT= c54888169b30587e732bd7213ee5b1a3 +TEST= 366 +KEY= 5996f8eecf82f49d59c6e88ba40e7939 +IV= 711da6521732e6868111dcc1c835f9df +CT= c54888169b30587e732bd7213ee5b1a3 +PT= 446f234fcada809a8b2e167a86c9eb36 +TEST= 367 +KEY= 1df9dba105587407d2e8fef122c7920f +IV= b7008bc907c546a56743c292185c2b02 +CT= 446f234fcada809a8b2e167a86c9eb36 +PT= 6ad93bc7e18b48810664cd1c528ba6c4 +TEST= 368 +KEY= 7720e066e4d33c86d48c33ed704c34cb +IV= 4d7dd98183e56f71d72db76187fc5f95 +CT= 6ad93bc7e18b48810664cd1c528ba6c4 +PT= 0d75bd2b8683fb819eb7f71e2e0836a7 +TEST= 369 +KEY= 7a555d4d6250c7074a3bc4f35e44026c +IV= f4dcfb73bbe7eb5348d56f81bcbc0971 +CT= 0d75bd2b8683fb819eb7f71e2e0836a7 +PT= 8cbe14862e93fe011a4f45518c7258fa +TEST= 370 +KEY= f6eb49cb4cc33906507481a2d2365a96 +IV= 5432fbf1480aa398f09ca5af375fa394 +CT= 8cbe14862e93fe011a4f45518c7258fa +PT= 4026d669905762f0790b6497646a2d4d +TEST= 371 +KEY= b6cd9fa2dc945bf6297fe535b65c77db +IV= ca462dc9f029a8311ca45a4116dadc1d +CT= 4026d669905762f0790b6497646a2d4d +PT= a8cd2e187cf274756e5736d420853435 +TEST= 372 +KEY= 1e00b1baa0662f834728d3e196d943ee +IV= 4fc9e7688352f4700c5f380bfd1f4fb2 +CT= a8cd2e187cf274756e5736d420853435 +PT= a99410b60322340e279c87d3d26793aa +TEST= 373 +KEY= b794a10ca3441b8d60b4543244bed044 +IV= 4d90b1a30eb7e957fae3dc8c132f4f42 +CT= a99410b60322340e279c87d3d26793aa +PT= d136f990196c667ec35e3a0492c39968 +TEST= 374 +KEY= 66a2589cba287df3a3ea6e36d67d492c +IV= 6fad87f358f0c702c5e9e599093219ed +CT= d136f990196c667ec35e3a0492c39968 +PT= 8ce49c1baacab69432dda2ff4250c7b2 +TEST= 375 +KEY= ea46c48710e2cb679137ccc9942d8e9e +IV= 2b6ff495b7e482360e31949c7c9b2e2b +CT= 8ce49c1baacab69432dda2ff4250c7b2 +PT= 7942b80f57ea24fa200451b37899f9e2 +TEST= 376 +KEY= 93047c884708ef9db1339d7aecb4777c +IV= 21fdc4c9b03a1a9a3f87ff9aac80faae +CT= 7942b80f57ea24fa200451b37899f9e2 +PT= de156d56e199fdbb2600dbf9fc254003 +TEST= 377 +KEY= 4d1111dea6911226973346831091377f +IV= 387612e399c62916b394a9fc6bc0f059 +CT= de156d56e199fdbb2600dbf9fc254003 +PT= c302c494d910640271695324e64b0992 +TEST= 378 +KEY= 8e13d54a7f817624e65a15a7f6da3eed +IV= 34bcabde4646bcc05caf7e61cbf1f8d2 +CT= c302c494d910640271695324e64b0992 +PT= 110ce84e5b81867ce4fccd1bbb5fd792 +TEST= 379 +KEY= 9f1f3d042400f05802a6d8bc4d85e97f +IV= c7898da9abf2a3d364c228a83525b04f +CT= 110ce84e5b81867ce4fccd1bbb5fd792 +PT= 7b94c0e4849ad65291f0f7bd464c544c +TEST= 380 +KEY= e48bfde0a09a260a93562f010bc9bd33 +IV= 00e079eebc47af3ed3796dbf4a2b55fc +CT= 7b94c0e4849ad65291f0f7bd464c544c +PT= d6518596bb53e44452393bd4440d805c +TEST= 381 +KEY= 32da78761bc9c24ec16f14d54fc43d6f +IV= 03e168f8af2303593e0f936648d253dc +CT= d6518596bb53e44452393bd4440d805c +PT= 0c4b51fb33380bb215f29f3fce7ca0da +TEST= 382 +KEY= 3e91298d28f1c9fcd49d8bea81b89db5 +IV= 15e1ecd59bc092c974fa4738c66d9604 +CT= 0c4b51fb33380bb215f29f3fce7ca0da +PT= 3fc98d86a558b711807930aaa391c9bf +TEST= 383 +KEY= 0158a40b8da97eed54e4bb402229540a +IV= 303bd4a407015a9e899816e0fabf288d +CT= 3fc98d86a558b711807930aaa391c9bf +PT= 85d77d90c312fe938f6c1983014bd572 +TEST= 384 +KEY= 848fd99b4ebb807edb88a2c323628178 +IV= e018fa96fd433cfd162e8e67d4f37015 +CT= 85d77d90c312fe938f6c1983014bd572 +PT= 4f49c1740ea88b5767ce36c95158dd63 +TEST= 385 +KEY= cbc618ef40130b29bc46940a723a5c1b +IV= 84013d3e2aa0c77650644cd6862096a7 +CT= 4f49c1740ea88b5767ce36c95158dd63 +PT= e6f1409aba890ac3a50fc4aad82e1872 +TEST= 386 +KEY= 2d375875fa9a01ea194950a0aa144469 +IV= 8bfd137593bff254414349f1147b9bff +CT= e6f1409aba890ac3a50fc4aad82e1872 +PT= 66f6e29696cfdc72ee905636614d2a72 +TEST= 387 +KEY= 4bc1bae36c55dd98f7d90696cb596e1b +IV= 8ec295602fb66c4a2dca65f66b07e010 +CT= 66f6e29696cfdc72ee905636614d2a72 +PT= 553b45792ae0625b357c4b68a4bb767f +TEST= 388 +KEY= 1efaff9a46b5bfc3c2a54dfe6fe21864 +IV= 5999e221475d06295451e52ff88f9f97 +CT= 553b45792ae0625b357c4b68a4bb767f +PT= fab6f53166bfdb89df68d46d423c243e +TEST= 389 +KEY= e44c0aab200a644a1dcd99932dde3c5a +IV= 49d1944cbd7be00c671b8e996f9a3eb9 +CT= fab6f53166bfdb89df68d46d423c243e +PT= 308ddb3fe0415c46ae450c78fc5f2558 +TEST= 390 +KEY= d4c1d194c04b380cb38895ebd1811902 +IV= 9785fee180794318514967b4199cfb93 +CT= 308ddb3fe0415c46ae450c78fc5f2558 +PT= 6659969d1bd493a3851e75981bacccb0 +TEST= 391 +KEY= b2984709db9fabaf3696e073ca2dd5b2 +IV= 4fd1dae14db75ac0e6c94388805ac3b5 +CT= 6659969d1bd493a3851e75981bacccb0 +PT= b56b950d84dca131fd8a5e2601037b36 +TEST= 392 +KEY= 07f3d2045f430a9ecb1cbe55cb2eae84 +IV= 3ed415e7dddadd2dc7f0376e6ca42efe +CT= b56b950d84dca131fd8a5e2601037b36 +PT= 8648f40fa13018563e6f1a799d9fcd91 +TEST= 393 +KEY= 81bb260bfe7312c8f573a42c56b16315 +IV= feaf76717c0905a601509bd68c6d08e5 +CT= 8648f40fa13018563e6f1a799d9fcd91 +PT= 66de6d7a74b36c7ee2737da526f5c8cd +TEST= 394 +KEY= e7654b718ac07eb61700d9897044abd8 +IV= 2b808c340320dd64ab9278a9d9a3e247 +CT= 66de6d7a74b36c7ee2737da526f5c8cd +PT= 9bb0d29cda21452f60b5897186f3fafb +TEST= 395 +KEY= 7cd599ed50e13b9977b550f8f6b75123 +IV= d2eb48117e2e9fb2058800de1a442799 +CT= 9bb0d29cda21452f60b5897186f3fafb +PT= 489cdc3a2c1ae7510e03ae36d5eab0e5 +TEST= 396 +KEY= 344945d77cfbdcc879b6fece235de1c6 +IV= 427765e0671aa6d32634447687e9b209 +CT= 489cdc3a2c1ae7510e03ae36d5eab0e5 +PT= 1d65d0e1235ae47dbcc2c65b59892c4c +TEST= 397 +KEY= 292c95365fa138b5c57438957ad4cd8a +IV= d75e9f074d965fe902287b3bb1483315 +CT= 1d65d0e1235ae47dbcc2c65b59892c4c +PT= e75b7ae5a8c3b93f15d0e3ebd04e1b4b +TEST= 398 +KEY= ce77efd3f762818ad0a4db7eaa9ad6c1 +IV= 5455fd9a01e04e48ca777cf8185697ed +CT= e75b7ae5a8c3b93f15d0e3ebd04e1b4b +PT= 11f4a35f6c225a9df1ca6baf92e11b07 +TEST= 399 +KEY= df834c8c9b40db17216eb0d1387bcdc6 +IV= 3c608f664492626b2208dc92e819411a +CT= 11f4a35f6c225a9df1ca6baf92e11b07 +PT= 9b8fb71e035ceff9cbfa1346e5acefe0 diff --git a/flint/test/testvals/cbcmd46.txt b/flint/test/testvals/cbcmd46.txt new file mode 100644 index 0000000..4d99310 --- /dev/null +++ b/flint/test/testvals/cbcmd46.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 00000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= 5df678dd17ba4e75b61768c6adef7c7b +TEST= 1 +KEY= 8ab601af30c47b225df678dd17ba4e75b61768c6adef7c7b +IV= 3b243f1a9ba094ee8ab601af30c47b22 +CT= 5df678dd17ba4e75b61768c6adef7c7b +PT= f9604074f8fa45ac71959888dd056f9f +TEST= 2 +KEY= d443b8e25a882d05a49638a9ef400bd9c782f04e70ea13e4 +IV= 467e32a79443b0735ef5b94d6a4c5627 +CT= f9604074f8fa45ac71959888dd056f9f +PT= 98a957ea6dbe623b7e08f919812a3898 +TEST= 3 +KEY= 5742dcd38c8fd46d3c3f6f4382fe69e2b98a0957f1c02b7c +IV= b9e1062eedd9a1ed83016431d607f968 +CT= 98a957ea6dbe623b7e08f919812a3898 +PT= ad6d29d6482764bb4bc27a87ae5cd877 +TEST= 4 +KEY= b33625f7872de4a191524695cad90d59f24873d05f9cf30b +IV= bd1aac94d2d39445e474f9240ba230cc +CT= ad6d29d6482764bb4bc27a87ae5cd877 +PT= da5eb591fdc48f0d9e4ebd373e5717a3 +TEST= 5 +KEY= 35da9f0a5db187964b0cf304371d82546c06cee761cbe4a8 +IV= 4782561ed717916986ecbafdda9c6337 +CT= da5eb591fdc48f0d9e4ebd373e5717a3 +PT= 3f6e771434e26d4fa5a57cef9dee05d6 +TEST= 6 +KEY= a8182e4f8fd8c7987462841003ffef1bc9a3b208fc25e17e +IV= 093273c6e96ea5399dc2b145d269400e +CT= 3f6e771434e26d4fa5a57cef9dee05d6 +PT= f8fbfc8cbdd4aa8e8da58dea7f2f344c +TEST= 7 +KEY= 71a581f408c35da48c99789cbe2b459544063fe2830ad532 +IV= 3900e8650ca62a25d9bdafbb871b9a3c +CT= f8fbfc8cbdd4aa8e8da58dea7f2f344c +PT= b969aa871d3b35c260d8b36c7e9e8913 +TEST= 8 +KEY= bcd0e4b5f0b7fb5035f0d21ba310705724de8c8efd945c21 +IV= 0e2bcf13c2a18ff5cd756541f874a6f4 +CT= b969aa871d3b35c260d8b36c7e9e8913 +PT= 6205eeccdd965d45339a2dfe85f52ad7 +TEST= 9 +KEY= a2796321044d9f5557f53cd77e862d121744a170786176f6 +IV= 8b935ab4c17d24d21ea98794f4fa6405 +CT= 6205eeccdd965d45339a2dfe85f52ad7 +PT= 6bc27204da1b9bc27e463d0e71557d99 +TEST= 10 +KEY= ad4506295d5309603c374ed3a49db6d069029c7e09340b6f +IV= a9af68ab4efdb7770f3c6508591e9635 +CT= 6bc27204da1b9bc27e463d0e71557d99 +PT= db1576a8f1bd88f73e6938e72f9c6dcd +TEST= 11 +KEY= 61ecb6c8660e5e20e722387b55203e27576ba49926a866a2 +IV= df83746d72419f65cca9b0e13b5d5740 +CT= db1576a8f1bd88f73e6938e72f9c6dcd +PT= 150d14977b15fd304890d7b9c4f8536e +TEST= 12 +KEY= 03679c91b6c57828f22f2cec2e35c3171ffb7320e25035cc +IV= 59d101131ea2fd7f628b2a59d0cb2608 +CT= 150d14977b15fd304890d7b9c4f8536e +PT= 7ae22b73b412a81d0bcf422c68da37f8 +TEST= 13 +KEY= 9a087b9dbc37b12988cd079f9a276b0a1434310c8a8a0234 +IV= f26f03a3c84a49f0996fe70c0af2c901 +CT= 7ae22b73b412a81d0bcf422c68da37f8 +PT= 2d1584ce9b85e7264228a8aff8faff01 +TEST= 14 +KEY= 07489932e5335b38a5d8835101a28c2c561c99a37270fd35 +IV= e76ab1c798119f5d9d40e2af5904ea11 +CT= 2d1584ce9b85e7264228a8aff8faff01 +PT= c1067030225453e808f1ff324c44be7f +TEST= 15 +KEY= dc3726e33013bc9964def36123f6dfc45eed66913e34434a +IV= 55010d6199e792e3db7fbfd1d520e7a1 +CT= c1067030225453e808f1ff324c44be7f +PT= 3ad7dbd96bb69d63be39b9a16574ac74 +TEST= 16 +KEY= edd4ec10b074a36c5e0928b8484042a7e0d4df305b40ef3e +IV= 18c6fe6d0a2fdd7e31e3caf380671ff5 +CT= 3ad7dbd96bb69d63be39b9a16574ac74 +PT= 3d5d82a4c06b9ddccc8a6b8bf228482f +TEST= 17 +KEY= 23824573bd3ce30d6354aa1c882bdf7b2c5eb4bba968a711 +IV= e1deaecbcfc06bccce56a9630d484061 +CT= 3d5d82a4c06b9ddccc8a6b8bf228482f +PT= c0e5f9618f2fab97ea82f8164dc89860 +TEST= 18 +KEY= aaa43bc528933502a3b1537d070474ecc6dc4cade4a03f71 +IV= 2ce22fdf7e87b7cc89267eb695afd60f +CT= c0e5f9618f2fab97ea82f8164dc89860 +PT= 6942155fc9ef8f7cfe37cd6fed03cecf +TEST= 19 +KEY= a2686c442d636d31caf34622ceebfb9038eb81c209a3f1be +IV= b7772cf7b44b856308cc578105f05833 +CT= 6942155fc9ef8f7cfe37cd6fed03cecf +PT= 6ba4c261f5173862a6789fb026099571 +TEST= 20 +KEY= 29f645a446d84eaca15784433bfcc3f29e931e722faa64cf +IV= 15ca23a60d99fff68b9e29e06bbb239d +CT= 6ba4c261f5173862a6789fb026099571 +PT= aa9e8c6497cac6b0c8cc92f8dfe7b455 +TEST= 21 +KEY= 5e9165527010387f0bc90827ac360542565f8c8af04dd09a +IV= 53193227307bbe49776720f636c876d3 +CT= aa9e8c6497cac6b0c8cc92f8dfe7b455 +PT= 7da426c712e7f2f35087d6aa31cf56ab +TEST= 22 +KEY= 92dc0eee09f5169e766d2ee0bed1f7b106d85a20c1828631 +IV= 85a3d20949963f95cc4d6bbc79e52ee1 +CT= 7da426c712e7f2f35087d6aa31cf56ab +PT= 09b9ff5e5833b6ce0010c3d0c4a84c19 +TEST= 23 +KEY= c45b938e7c18b4107fd4d1bee6e2417f06c899f0052aca28 +IV= 292a007187d730b956879d6075eda28e +CT= 09b9ff5e5833b6ce0010c3d0c4a84c19 +PT= 178f7ac0ff63c33683a001f5c4171316 +TEST= 24 +KEY= 03d99546e931b761685bab7e1981824985689805c13dd93e +IV= a8d8cd3b96215fcdc78206c895290371 +CT= 178f7ac0ff63c33683a001f5c4171316 +PT= c39b82763cf6901170902be6dc1b9305 +TEST= 25 +KEY= b52384cac0b230f5abc0290825771258f5f8b3e31d264a3b +IV= 451968c3aa8d0319b6fa118c29838794 +CT= c39b82763cf6901170902be6dc1b9305 +PT= 85d827f61ec17fd00b10356292c863e2 +TEST= 26 +KEY= dcf617a990ac4cbb2e180efe3bb66d88fee886818fee29d9 +IV= 575103daefd233e269d59363501e7c4e +CT= 85d827f61ec17fd00b10356292c863e2 +PT= 535bac956d5cab917e1a1bc28e82f28f +TEST= 27 +KEY= 14d0fcaffd961cfd7d43a26b56eac61980f29d43016cdb56 +IV= 7de780accf9f1896c826eb066d3a5046 +CT= 535bac956d5cab917e1a1bc28e82f28f +PT= 7e73e89f187ea6d5f5a3044a19c85941 +TEST= 28 +KEY= af5bfbc086f1392203304af44e9460cc7551990918a48217 +IV= 633f0251217decedbb8b076f7b6725df +CT= 7e73e89f187ea6d5f5a3044a19c85941 +PT= b0976dfd4f0620203ac4ed89d395baff +TEST= 29 +KEY= 79ffb93dcf243047b3a72709019240ec4f957480cb3138e8 +IV= c1aae3e35613daadd6a442fd49d50965 +CT= b0976dfd4f0620203ac4ed89d395baff +PT= 5ecb838ec7f9f2e7adbd719599f829b9 +TEST= 30 +KEY= 681f54ada7685555ed6ca487c66bb20be228051552c91151 +IV= 4f00d9cd31be1cc611e0ed90684c6512 +CT= 5ecb838ec7f9f2e7adbd719599f829b9 +PT= 8dda96bd88d3d756306d249abf99f5f9 +TEST= 31 +KEY= 8663bebf11817a3060b6323a4eb8655dd245218fed50e4a8 +IV= 7cc24dc4b003de90ee7cea12b6e92f65 +CT= 8dda96bd88d3d756306d249abf99f5f9 +PT= 479e96e558540b71508fef3173a6fc68 +TEST= 32 +KEY= 831519be48b0021a2728a4df16ec6e2c82cacebe9ef618c0 +IV= 59ffa792dc8618070576a7015931782a +CT= 479e96e558540b71508fef3173a6fc68 +PT= 080ea053745beebdbc5f7d964eebd2f7 +TEST= 33 +KEY= afc20af72699543a2f26048c62b780913e95b328d01dca37 +IV= 4e5bdd875324cac02cd713496e295620 +CT= 080ea053745beebdbc5f7d964eebd2f7 +PT= b5a58d345c0260a9e274e2e593b76c44 +TEST= 34 +KEY= 46aeaf002b9a297e9a8389b83eb5e038dce151cd43aaa673 +IV= c67419fda89e68b1e96ca5f70d037d44 +CT= b5a58d345c0260a9e274e2e593b76c44 +PT= 5200f2d475ca388841cb0dd02c7eb7f6 +TEST= 35 +KEY= 1598e4dd7da3d7b0c8837b6c4b7fd8b09d2a5c1d6fd41185 +IV= 9f5c74a1fe2dff2153364bdd5639fece +CT= 5200f2d475ca388841cb0dd02c7eb7f6 +PT= b2639c2d26bf2caf2371ca3a4f3d3476 +TEST= 36 +KEY= fe63aa4a158b41ae7ae0e7416dc0f41fbe5b962720e925f3 +IV= 2dc59704d531c890ebfb4e976828961e +CT= b2639c2d26bf2caf2371ca3a4f3d3476 +PT= c758adc41e334ccbf34c40e2aeaa3852 +TEST= 37 +KEY= 86b214fa7f89ce06bdb84a8573f3b8d44d17d6c58e431da1 +IV= d0982adeece45ccc78d1beb06a028fa8 +CT= c758adc41e334ccbf34c40e2aeaa3852 +PT= f8e0aa1e780f18a50371cbcb1b63e83f +TEST= 38 +KEY= c0c34a59dc653dce4558e09b0bfca0714e661d0e9520f59e +IV= a252b0f29766a24b46715ea3a3ecf3c8 +CT= f8e0aa1e780f18a50371cbcb1b63e83f +PT= 554b524391a7a1679210cfc0152a65ce +TEST= 39 +KEY= 3cf3d7ddfff704231013b2d89a5b0116dc76d2ce800a9050 +IV= 42ee716b821c18fcfc309d84239239ed +CT= 554b524391a7a1679210cfc0152a65ce +PT= 3273e6c51751407b7e4ecded7970746d +TEST= 40 +KEY= 7fcc684c43b958f02260541d8d0a416da2381f23f97ae43d +IV= a4fcb2b8ab7158b9433fbf91bc4e5cd3 +CT= 3273e6c51751407b7e4ecded7970746d +PT= d90b75848ac14aca3cad9af2a15f315f +TEST= 41 +KEY= 240724b451241314fb6b219907cb0ba79e9585d15825d562 +IV= 5c4fa1918b04d5f85bcb4cf8129d4be4 +CT= d90b75848ac14aca3cad9af2a15f315f +PT= 753c59b87c45b21d527527c6c2ddeb0d +TEST= 42 +KEY= f0beecc2db5d16f98e5778217b8eb9bacce0a2179af83e6f +IV= 4e41a4ab69aee73fd4b9c8768a7905ed +CT= 753c59b87c45b21d527527c6c2ddeb0d +PT= 156e851810adb0bf2d28b6150d32cac7 +TEST= 43 +KEY= c2fb954c95633b5b9b39fd396b230905e1c8140297caf4a8 +IV= 983906fa7f156cf33245798e4e3e2da2 +CT= 156e851810adb0bf2d28b6150d32cac7 +PT= 26e671dace32070a601796207bd045b5 +TEST= 44 +KEY= bf0bd4c6ddbe22dabddf8ce3a5110e0f81df8222ec1ab11d +IV= b3188d29356783af7df0418a48dd1981 +CT= 26e671dace32070a601796207bd045b5 +PT= adad9072859250a8590f6f54c24e5a77 +TEST= 45 +KEY= 2e4f07ad61768cc010721c9120835ea7d8d0ed762e54eb6a +IV= 639f27016a9d99b99144d36bbcc8ae1a +CT= adad9072859250a8590f6f54c24e5a77 +PT= ac8ad3933d51d5d71ca90fb73a53f6ad +TEST= 46 +KEY= 9963998a6f982462bcf8cf021dd28b70c479e2c114071dc7 +IV= b2a3acb0ce942f13b72c9e270eeea8a2 +CT= ac8ad3933d51d5d71ca90fb73a53f6ad +PT= 7319f2825648168f07d525618da9979a +TEST= 47 +KEY= 417fd42690aae310cfe13d804b9a9dffc3acc7a099ae8a5d +IV= ebb0ef7ce1acf152d81c4dacff32c772 +CT= 7319f2825648168f07d525618da9979a +PT= 4fc19392439d6cbe6699419355e0590b +TEST= 48 +KEY= 30cd3a2a0910c7268020ae120807f141a5358633cc4ed356 +IV= 4dcace79e4c3adfe71b2ee0c99ba2436 +CT= 4fc19392439d6cbe6699419355e0590b +PT= 047ff92a523900a3c46d906163927ddd +TEST= 49 +KEY= f13ee3acc9c19e4c845f57385a3ef1e261581652afdcae8b +IV= e260680204844e6fc1f3d986c0d1596a +CT= 047ff92a523900a3c46d906163927ddd +PT= 2dae78d178d069918ccc11d675e09655 +TEST= 50 +KEY= 91556c720dc982d5a9f12fe922ee9873ed940784da3c38de +IV= a4e4973e74b61315606b8fdec4081c99 +CT= 2dae78d178d069918ccc11d675e09655 +PT= 6315a6a029ed7fc5ab3cd38d8dae561a +TEST= 51 +KEY= 9120a23e63af3bc2cae489490b03e7b646a8d40957926ec4 +IV= c02da24531c794bd0075ce4c6e66b917 +CT= 6315a6a029ed7fc5ab3cd38d8dae561a +PT= 65a796c69b769e59d34ad19803f117c6 +TEST= 52 +KEY= 5c6847e25c66145daf431f8f907579ef95e2059154637902 +IV= 0d72a6b0f3959c89cd48e5dc3fc92f9f +CT= 65a796c69b769e59d34ad19803f117c6 +PT= 70770d19d03df488fb627f460a225f39 +TEST= 53 +KEY= f5eca4c905ff0ec2df34129640488d676e807ad75e41263b +IV= 2f60424b5062d978a984e32b59991a9f +CT= 70770d19d03df488fb627f460a225f39 +PT= c8a66a2cd18286d2148230bab7d81e11 +TEST= 54 +KEY= ff86e251c5ec6129179278ba91ca0bb57a024a6de999382a +IV= cc7330ae077936b10a6a4698c0136feb +CT= c8a66a2cd18286d2148230bab7d81e11 +PT= fc0b47ba3e51927a632f457a919818dc +TEST= 55 +KEY= 5c0a7344d6fd6983eb993f00af9b99cf192d0f17780120f6 +IV= ca119aee5576e06ea38c9115131108aa +CT= fc0b47ba3e51927a632f457a919818dc +PT= aeedb360c58c4cdc7ace87aa1a4b785b +TEST= 56 +KEY= 426948bd499e8a9845748c606a17d51363e388bd624a58ad +IV= 920c491de39d52501e633bf99f63e31b +CT= aeedb360c58c4cdc7ace87aa1a4b785b +PT= 737ecc4294ff69495dc37dc795ec13ce +TEST= 57 +KEY= f8ad0e545aa212e6360a4022fee8bc5a3e20f57af7a64b63 +IV= b975b70450a41a2dbac446e9133c987e +CT= 737ecc4294ff69495dc37dc795ec13ce +PT= 3e7cdc26ccc69e02d08248224a22961e +TEST= 58 +KEY= c2834233a26dcd8a08769c04322e2258eea2bd58bd84dd7d +IV= a88326dc57ab80fc3a2e4c67f8cfdf6c +CT= 3e7cdc26ccc69e02d08248224a22961e +PT= 88177b6502254344a364023bcad29e79 +TEST= 59 +KEY= 962d892d6cded6798061e761300b611c4dc6bf6377564304 +IV= d95cff470b1796d754aecb1eceb31bf3 +CT= 88177b6502254344a364023bcad29e79 +PT= a10fa825eb6da0e242d9a381f607472d +TEST= 60 +KEY= 3ada98c76065214a216e4f44db66c1fe0f1f1ce281510429 +IV= fbd25798351af35dacf711ea0cbbf733 +CT= a10fa825eb6da0e242d9a381f607472d +PT= 6b5ee3a222df46560a12e91c006d303f +TEST= 61 +KEY= c6ab975cf71b6ddf4a30ace6f9b987a8050df5fe813c3416 +IV= 6cdb3875008754dafc710f9b977e4c95 +CT= 6b5ee3a222df46560a12e91c006d303f +PT= a0047b92a93acf32138a818b6e32b3ee +TEST= 62 +KEY= ffd0e16a5c955ebaea34d7745083489a16877475ef0e87f8 +IV= f7061ca37b11e445397b7636ab8e3365 +CT= a0047b92a93acf32138a818b6e32b3ee +PT= 1707fc063700e98ff5fda98a07a8a1c7 +TEST= 63 +KEY= aa71ec7061fa246cfd332b726783a115e37addffe8a6263f +IV= 1853e27fc0689e6755a10d1a3d6f7ad6 +CT= 1707fc063700e98ff5fda98a07a8a1c7 +PT= 06320fa4c0e2f42b364b991243fa053d +TEST= 64 +KEY= d8685685696cbf5cfb0124d6a761553ed53144edab5c2302 +IV= e19a3bec7ebca3c87219baf508969b30 +CT= 06320fa4c0e2f42b364b991243fa053d +PT= bb70503e9715d653710c0630211755a7 +TEST= 65 +KEY= 28c2affa406ef763407174e83074836da43d42dd8a4b76a5 +IV= 5f3bca36562afa82f0aaf97f2902483f +CT= bb70503e9715d653710c0630211755a7 +PT= d632fef42560770df318c570afc85285 +TEST= 66 +KEY= 260b8e0723e9af3d96438a1c1514f460572587ad25832420 +IV= 328a42d3898a81c20ec921fd6387585e +CT= d632fef42560770df318c570afc85285 +PT= b1c847fff455d002e55fcfaf4a4f69a4 +TEST= 67 +KEY= f39d3cd6a68dc6bc278bcde3e1412462b27a48026fcc4d84 +IV= c89e7b4c1baed0fad596b2d185646981 +CT= b1c847fff455d002e55fcfaf4a4f69a4 +PT= 9c484252e1fe52cd2dfccaa3e0118f07 +TEST= 68 +KEY= 61a9714c87b94f27bbc38fb100bf76af9f8682a18fddc283 +IV= 56b7d716ec6f9a6d92344d9a2134899b +CT= 9c484252e1fe52cd2dfccaa3e0118f07 +PT= 85a142323b9877e86f3a5874ea613e87 +TEST= 69 +KEY= b504be17c673e81f3e62cd833b270147f0bcdad565bcfc04 +IV= bef2c82884510475d4adcf5b41caa738 +CT= 85a142323b9877e86f3a5874ea613e87 +PT= 53d0ef74268f55c1b6ca84415e5a2f6f +TEST= 70 +KEY= 1a63cc27be45c5106db222f71da8548646765e943be6d36b +IV= cc958cc3874510f0af67723078362d0f +CT= 53d0ef74268f55c1b6ca84415e5a2f6f +PT= 7b7db0f3efad244ffcc6991452001df6 +TEST= 71 +KEY= 4b17520c49f46eaf16cf9204f20570c9bab0c78069e6ce9d +IV= 48d7c0690532afcc51749e2bf7b1abbf +CT= 7b7db0f3efad244ffcc6991452001df6 +PT= dd0661dca2be8c20e95b3a84ccacdb10 +TEST= 72 +KEY= 1ade412393310021cbc9f3d850bbfce953ebfd04a54a158d +IV= 4b96b2d0ccadff7d51c9132fdac56e8e +CT= dd0661dca2be8c20e95b3a84ccacdb10 +PT= e505435777f3781121a4a374684e3268 +TEST= 73 +KEY= 493467065ae405b82eccb08f274884f8724f5e70cd0427e5 +IV= 1e8116eb95b94afc53ea2625c9d50599 +CT= e505435777f3781121a4a374684e3268 +PT= ef4b4e997da0dccbdbb36c020d03e8b5 +TEST= 74 +KEY= 4c94816df6ebdef5c187fe165ae85833a9fc3272c007cf50 +IV= 29094410f6017e5805a0e66bac0fdb4d +CT= ef4b4e997da0dccbdbb36c020d03e8b5 +PT= fa9bab377c654ed894024bebdced2fa0 +TEST= 75 +KEY= 697a0bc179c07a633b1c5521268d16eb3dfe79991ceae0f0 +IV= 83dd12597a405fb725ee8aac8f2ba496 +CT= fa9bab377c654ed894024bebdced2fa0 +PT= dd1fda63382552d007f6f8e995820640 +TEST= 76 +KEY= d40786ed2a6c15e8e6038f421ea8443b3a0881708968e6b0 +IV= 2f3ae5594d9ccedcbd7d8d2c53ac6f8b +CT= dd1fda63382552d007f6f8e995820640 +PT= c5ff0eb50ba651f436d0566385860ada +TEST= 77 +KEY= 9d47680c0159f69a23fc81f7150e15cf0cd8d7130ceeec6a +IV= 1bcfad6802c41b9a4940eee12b35e372 +CT= c5ff0eb50ba651f436d0566385860ada +PT= 67ae61a77d77cbfd48c080b21313bbab +TEST= 78 +KEY= 86e61e031542d2db4452e0506879de32441857a11ffd57c1 +IV= 3df4da1f65c739511ba1760f141b2441 +CT= 67ae61a77d77cbfd48c080b21313bbab +PT= 68c8512217cb9c3bbf28011fa5bed044 +TEST= 79 +KEY= 4f93757de614cb1d2c9ab1727fb24209fb3056beba438785 +IV= b2c15424ef4e4637c9756b7ef35619c6 +CT= 68c8512217cb9c3bbf28011fa5bed044 +PT= 233898c850826172965695499748a1b0 +TEST= 80 +KEY= c56e54bbb54b22cc0fa229ba2f30237b6d66c3f72d0b2635 +IV= dc2ff5992d9383ef8afd21c6535fe9d1 +CT= 233898c850826172965695499748a1b0 +PT= 70069f5e963a820d640b40697bd24716 +TEST= 81 +KEY= a1ef05cb5aae7a977fa4b6e4b90aa176096d839e56d96123 +IV= ee8cb982124a394c64815170efe5585b +CT= 70069f5e963a820d640b40697bd24716 +PT= b136ca2ef42a9cff53410554b28a8f65 +TEST= 82 +KEY= acec084a8ced2f4fce927cca4d203d895a2c86cae453ee46 +IV= 515d8b6c167ec8570d030d81d64355d8 +CT= b136ca2ef42a9cff53410554b28a8f65 +PT= 123600cd1b5a664430413021ddc8cbbe +TEST= 83 +KEY= 8325a9391b4e106adca47c07567a5bcd6a6db6eb399b25f8 +IV= 5a55a24ec8154e532fc9a17397a33f25 +CT= 123600cd1b5a664430413021ddc8cbbe +PT= 8ecca03e10d415557c4e7d92ddbfd791 +TEST= 84 +KEY= db877966be0e84575268dc3946ae4e981623cb79e424f269 +IV= 659705f3774e141758a2d05fa540943d +CT= 8ecca03e10d415557c4e7d92ddbfd791 +PT= cb70b675ac6bf92237f1c479516e7e6a +TEST= 85 +KEY= 59027658dec2b5de99186a4ceac5b7ba21d20f00b54a8c03 +IV= c9b803ce2d57d26f82850f3e60cc3189 +CT= cb70b675ac6bf92237f1c479516e7e6a +PT= 5d99d06e9beb82ab1ce22201e8467dbc +TEST= 86 +KEY= 652e430f984201e0c481ba22712e35113d302d015d0cf1bf +IV= 1838facbeac13cf73c2c35574680b43e +CT= 5d99d06e9beb82ab1ce22201e8467dbc +PT= 11d7aed0b552d62677deb874bf7cf8ed +TEST= 87 +KEY= 8377a2c11b73082dd55614f2c47ce3374aee9575e2700952 +IV= 068170c7e11427dfe659e1ce833109cd +CT= 11d7aed0b552d62677deb874bf7cf8ed +PT= 74b108d32abe8401d22f2c3fb008f670 +TEST= 88 +KEY= 7b89a5c45b0a22bba1e71c21eec2673698c1b94a5278ff22 +IV= 5283dad6fa2b605df8fe070540792a96 +CT= 74b108d32abe8401d22f2c3fb008f670 +PT= 7883bd8c4da81c21c4a5847ad801b7ae +TEST= 89 +KEY= 101261a4d23fda13d964a1ada36a7b175c643d308a79488c +IV= e2ed92de4829cb526b9bc4608935f8a8 +CT= 7883bd8c4da81c21c4a5847ad801b7ae +PT= c865b27c21f6f6e681759c318607d2b9 +TEST= 90 +KEY= e6a6a13b7a64eb51110113d1829c8df1dd11a1010c7e9a35 +IV= ab325ad4f1ff1c52f6b4c09fa85b3142 +CT= c865b27c21f6f6e681759c318607d2b9 +PT= e31d7ac0e8adb302bc6c23a0b1d693ed +TEST= 91 +KEY= 64d366c4f61e139bf21c69116a313ef3617d82a1bda809d8 +IV= a5201d1770a12a898275c7ff8c7af8ca +CT= e31d7ac0e8adb302bc6c23a0b1d693ed +PT= cae6a97ee64228eeef02e135944c5c62 +TEST= 92 +KEY= b006cef05093de2238fac06f8c73161d8e7f639429e455ba +IV= 62bd7e3ea22e26bad4d5a834a68dcdb9 +CT= cae6a97ee64228eeef02e135944c5c62 +PT= b7aef117099f799bb0752c7260a2dfb5 +TEST= 93 +KEY= 160aff18c06b6c4a8f54317885ec6f863e0a4fe649468a0f +IV= aebb967838133f64a60c31e890f8b268 +CT= b7aef117099f799bb0752c7260a2dfb5 +PT= 81ccc6edad41d9c7986d4e175c71551d +TEST= 94 +KEY= 21112cbe896259ce0e98f79528adb641a66701f11537df12 +IV= b695bbe7fa331039371bd3a649093584 +CT= 81ccc6edad41d9c7986d4e175c71551d +PT= 9039e01c6485040a2edaf4c27fe93870 +TEST= 95 +KEY= 60272333c1b4ccc39ea117894c28b24b88bdf5336adee762 +IV= 4ee830907337d60241360f8d48d6950d +CT= 9039e01c6485040a2edaf4c27fe93870 +PT= 44d359dbe4be436d5133cd81b72db5c7 +TEST= 96 +KEY= 25c676a781511a98da724e52a896f126d98e38b2ddf352a5 +IV= 38491c9fd517260445e1559440e5d65b +CT= 44d359dbe4be436d5133cd81b72db5c7 +PT= 7b47f95ed30563be218e40db4eaae836 +TEST= 97 +KEY= 59a7b7512b5dc429a135b70c7b939298f80078699359ba93 +IV= 1fd8b8ba8b0492e67c61c1f6aa0cdeb1 +CT= 7b47f95ed30563be218e40db4eaae836 +PT= c417f6a6824b165d4c26d631f77e45ac +TEST= 98 +KEY= 82e6cf234bc0aa10652241aaf9d884c5b426ae586427ff3f +IV= 5fb017b65fe4af34db417872609d6e39 +CT= c417f6a6824b165d4c26d631f77e45ac +PT= 41ec9a06b318a4d06636ed5403f46cb7 +TEST= 99 +KEY= 82d69a1d747cf6e024cedbac4ac02015d210430c67d39388 +IV= 1cc1f56321366f420030553e3fbc5cf0 +CT= 41ec9a06b318a4d06636ed5403f46cb7 +PT= 38e467f81d919f0a1704e9f5cdf4d5fc +TEST= 100 +KEY= 29efca26b9c67e141c2abc545751bf1fc514aaf9aa274674 +IV= a83bdbf4326ae806ab39503bcdba88f4 +CT= 38e467f81d919f0a1704e9f5cdf4d5fc +PT= a08359a20d6f405018f8180a3e8d0fd1 +TEST= 101 +KEY= ab20ac8c3c5da5bebca9e5f65a3eff4fddecb2f394aa49a5 +IV= a14b10e1a998b04e82cf66aa859bdbaa +CT= a08359a20d6f405018f8180a3e8d0fd1 +PT= a16c303138057144a3eca63e7398dc93 +TEST= 102 +KEY= 86c5e861b9ceaf041dc5d5c7623b8e0b7e0014cde7329536 +IV= 181d943ea950561d2de544ed85930aba +CT= a16c303138057144a3eca63e7398dc93 +PT= ea1a2e30d890d01979d2bce1ebe6c922 +TEST= 103 +KEY= 90321c401e4b6b30f7dffbf7baab5e1207d2a82c0cd45c14 +IV= 12bdb944d898bc5a16f7f421a785c434 +CT= ea1a2e30d890d01979d2bce1ebe6c922 +PT= c0d620fcf33031dad617adbe8f6d13ac +TEST= 104 +KEY= 84964c3b41fe8e4f3709db0b499b6fc8d1c5059283b94fb8 +IV= 0615ad27b29c55f814a4507b5fb5e57f +CT= c0d620fcf33031dad617adbe8f6d13ac +PT= ec4b9aedbe44c4b74b693d08aa1d175a +TEST= 105 +KEY= 6c6361f2c87bc168db4241e6f7dfab7f9aac389a29a458e2 +IV= e79f33ffcd79681ce8f52dc989854f27 +CT= ec4b9aedbe44c4b74b693d08aa1d175a +PT= f34d426225adec3bd2580bf21ef24b3e +TEST= 106 +KEY= fda3fb79f1a16865280f0384d272474448f43368375613dc +IV= 1dfe18b10032d35f91c09a8b39daa90d +CT= f34d426225adec3bd2580bf21ef24b3e +PT= e14841b0d0cc1e698de8053b9f1621e1 +TEST= 107 +KEY= 562d3bf792909255c947423402be592dc51c3653a840323d +IV= 247a46c43ae54f1fab8ec08e6331fa30 +CT= e14841b0d0cc1e698de8053b9f1621e1 +PT= d21381b5032426ec3582bbd23739e04e +TEST= 108 +KEY= 9d375e6e32c30a801b54c381019a7fc1f09e8d819f79d273 +IV= e05018c26dc38bbdcb1a6599a05398d5 +CT= d21381b5032426ec3582bbd23739e04e +PT= 82034ff505fe67b94373770348a934e5 +TEST= 109 +KEY= 7d1a900b515478db99578c7404641878b3edfa82d7d0e696 +IV= 498aea38ab55250ce02dce656397725b +CT= 82034ff505fe67b94373770348a934e5 +PT= 018b5b1787138d222f6b39c1291ecd2c +TEST= 110 +KEY= e74b55a39f67c54298dcd7638377955a9c86c343fece2bba +IV= dd89df396236f9a59a51c5a8ce33bd99 +CT= 018b5b1787138d222f6b39c1291ecd2c +PT= cabcb7ea14e821726602272a46ceb825 +TEST= 111 +KEY= d3fffe0f27d9200352606089979fb428fa84e469b800939f +IV= a707d154bac28bdc34b4abacb8bee541 +CT= cabcb7ea14e821726602272a46ceb825 +PT= 0840d09df2b14ed4b340d32101d68a54 +TEST= 112 +KEY= 485ec313821a37095a20b014652efafc49c43748b9d619cb +IV= adef6a8a49bf208b9ba13d1ca5c3170a +CT= 0840d09df2b14ed4b340d32101d68a54 +PT= 5eb0166fb04af38f9ea60929fd641844 +TEST= 113 +KEY= e841074638a154d90490a67bd5640973d7623e6144b2018f +IV= b1956d86a4f79e40a01fc455babb63d0 +CT= 5eb0166fb04af38f9ea60929fd641844 +PT= 2ecbdafbd0336a436d89fc12944750ec +TEST= 114 +KEY= 17e86798db7a64e42a5b7c8005576330baebc273d0f55163 +IV= 0affe19ca1425218ffa960dee3db303d +CT= 2ecbdafbd0336a436d89fc12944750ec +PT= a326d8c07ef7a21302a3c6a9c67c371a +TEST= 115 +KEY= d1a6f2ab7c130a60897da4407ba0c123b84804da16896679 +IV= 6f630069cd0333bdc64e9533a7696e84 +CT= a326d8c07ef7a21302a3c6a9c67c371a +PT= 6d06ddfb9b12a71298e32318f582ef72 +TEST= 116 +KEY= c7d58104581cb5c5e47b79bbe0b2663120ab27c2e30b890b +IV= 80e47ba8410247c5167373af240fbfa5 +CT= 6d06ddfb9b12a71298e32318f582ef72 +PT= e1391a50f140e255a9b2e628f25b9b1d +TEST= 117 +KEY= 00d8eec433f7d68e054263eb11f284648919c1ea11501216 +IV= 96f652822c5d4496c70d6fc06beb634b +CT= e1391a50f140e255a9b2e628f25b9b1d +PT= 1418a2dc8d6dba4942932d6944011d8a +TEST= 118 +KEY= 71d444358cccf986115ac1379c9f3e2dcb8aec8355510f9c +IV= 410374de0d8a79fa710caaf1bf3b2f08 +CT= 1418a2dc8d6dba4942932d6944011d8a +PT= a70a2c48cf5786868844274b8c493c56 +TEST= 119 +KEY= b9fd9626ec74a129b650ed7f53c8b8ab43cecbc8d91833ca +IV= 8362fae290801c25c829d21360b858af +CT= a70a2c48cf5786868844274b8c493c56 +PT= 3484ba42558b199e8477b8f8280cde91 +TEST= 120 +KEY= 94caee912a7b443582d4573d0643a135c7b97330f114ed5b +IV= f6abe3f0a7ffc9e02d3778b7c60fe51c +CT= 3484ba42558b199e8477b8f8280cde91 +PT= 5d79433f85c7d4c258487080e340f049 +TEST= 121 +KEY= 1d2f762cf08fae0adfad1402838475f79ff103b012541d12 +IV= a0c57652fbf9107c89e598bddaf4ea3f +CT= 5d79433f85c7d4c258487080e340f049 +PT= c51891ea2e68bc60e84912a91f470201 +TEST= 122 +KEY= 9e691d03a3aeb6491ab585e8adecc99777b811190d131f13 +IV= 8426c338234db9e183466b2f53211843 +CT= c51891ea2e68bc60e84912a91f470201 +PT= f946fd67dd7f92a7a6b93b4f71f70243 +TEST= 123 +KEY= 61ea6fd274c07adde3f3788f70935b30d1012a567ce41d50 +IV= 2c2af70b07e9e6f9ff8372d1d76ecc94 +CT= f946fd67dd7f92a7a6b93b4f71f70243 +PT= b4cb0eff14f8cdc693cc8e7dcee8e0b0 +TEST= 124 +KEY= 84f27e5bf8b55da657387670646b96f642cda42bb20cfde0 +IV= 693782638b439464e51811898c75277b +CT= b4cb0eff14f8cdc693cc8e7dcee8e0b0 +PT= ef6ddb56aae9cffe128fb3776dd94d20 +TEST= 125 +KEY= 5b1111eadaecdd73b855ad26ce8259085042175cdfd5b0c0 +IV= a14aaef7a1bf063bdfe36fb1225980d5 +CT= ef6ddb56aae9cffe128fb3776dd94d20 +PT= 4acc6af28293a647093ae788ba778835 +TEST= 126 +KEY= a924dc707fb16df1f299c7d44c11ff4f5978f0d465a238f5 +IV= 3f7e73bfa24b0c02f235cd9aa55db082 +CT= 4acc6af28293a647093ae788ba778835 +PT= 5a7989dc61ad6b66b3e83a29168bedb9 +TEST= 127 +KEY= 164fbef9ebaeef03a8e04e082dbc9429ea90cafd7329d54c +IV= 2fb4f1a000b78156bf6b6289941f82f2 +CT= 5a7989dc61ad6b66b3e83a29168bedb9 +PT= 246a94ab8488b39c52de68e8ca5ae0d2 +TEST= 128 +KEY= b1f4a368b64a78ec8c8adaa3a93427b5b84ea215b973359e +IV= 5d178ec8305b804fa7bb1d915de497ef +CT= 246a94ab8488b39c52de68e8ca5ae0d2 +PT= f7c758f8dc8fc0891907ebbf299f70b8 +TEST= 129 +KEY= 9161a39c256814aa7b4d825b75bbe73ca14949aa90ec4526 +IV= c87e61a9434eb29f209500f493226c46 +CT= f7c758f8dc8fc0891907ebbf299f70b8 +PT= e2d82c5506befa7d7bf032e4c72141cf +TEST= 130 +KEY= 0bfda1b2cf4b15199995ae0e73051d41dab97b4e57cd04e9 +IV= 5d00992780d9832b9a9c022eea2301b3 +CT= e2d82c5506befa7d7bf032e4c72141cf +PT= f3a0df1793fc88117e87478fd9e5a1a8 +TEST= 131 +KEY= f8f5f6016fecdcaf6a357119e0f99550a43e3cc18e28a541 +IV= 2800eeca83eb078cf30857b3a0a7c9b6 +CT= f3a0df1793fc88117e87478fd9e5a1a8 +PT= beb572c53e9985218ed9012bab4a9f5b +TEST= 132 +KEY= 84f3e0d153e140d6d48003dcde6010712ae73dea25623a1a +IV= e2beaf80f4a1dda27c0616d03c0d9c79 +CT= beb572c53e9985218ed9012bab4a9f5b +PT= 7f4b21c4b7466149cb890b77ac538752 +TEST= 133 +KEY= b69e5a72fe9b1b85abcb221869267138e16e369d8931bd48 +IV= fe0a667b9b2bdd29326dbaa3ad7a5b53 +CT= 7f4b21c4b7466149cb890b77ac538752 +PT= 4b239c8f83f0a10dc6a3497cc3cf9c8e +TEST= 134 +KEY= 0bcf87d2538e0eade0e8be97ead6d03527cd7fe14afe21c6 +IV= 878250c5ea7834cfbd51dda0ad151528 +CT= 4b239c8f83f0a10dc6a3497cc3cf9c8e +PT= 89f2b4b8c5ab2988cdea61f4d4a1bcd4 +TEST= 135 +KEY= 97a4fdcd2e0c993e691a0a2f2f7df9bdea271e159e5f9d12 +IV= 95e34d44c3e2fe319c6b7a1f7d829793 +CT= 89f2b4b8c5ab2988cdea61f4d4a1bcd4 +PT= c622e28004842564f193c0e58ab40fcb +TEST= 136 +KEY= 38f0a45980cef0b9af38e8af2bf9dcd91bb4def014eb92d9 +IV= 1bc195727d154539af545994aec26987 +CT= c622e28004842564f193c0e58ab40fcb +PT= df360fbc1607bcc1e6ee9088aee62ec7 +TEST= 137 +KEY= 6638e0333d7a6765700ee7133dfe6018fd5a4e78ba0dbc1e +IV= f0ab65a69aa4486a5ec8446abdb497dc +CT= df360fbc1607bcc1e6ee9088aee62ec7 +PT= 9a8e5bfe223fa9d747164fc1c98b9cdc +TEST= 138 +KEY= 5103611d32d7a1efea80bced1fc1c9cfba4c01b9738620c2 +IV= a6617b5da41b2a32373b812e0fadc68a +CT= 9a8e5bfe223fa9d747164fc1c98b9cdc +PT= f0143dd4ec3a85f9fa4d5579bd7268a1 +TEST= 139 +KEY= 64fd310af27cf98c1a948139f3fb4c36400154c0cef44863 +IV= ebcb744b477f25e635fe5017c0ab5863 +CT= f0143dd4ec3a85f9fa4d5579bd7268a1 +PT= c5c1fed629bf81ee343e4daee6bc4d44 +TEST= 140 +KEY= 9390b012fa7d48d9df557fefda44cdd8743f196e28480527 +IV= 7af352d33c08f3fef76d81180801b155 +CT= c5c1fed629bf81ee343e4daee6bc4d44 +PT= 26c4460f0b79e16263c38c240c276e5c +TEST= 141 +KEY= f578e5df6818cb58f99139e0d13d2cba17fc954a246f6b7b +IV= 05da148a4eb4d12966e855cd92658381 +CT= 26c4460f0b79e16263c38c240c276e5c +PT= e0e249adb3a39ee2bb48959426874123 +TEST= 142 +KEY= f23f67282bafe10e1973704d629eb258acb400de02e82a58 +IV= 7748b1652de54ef9074782f743b72a56 +CT= e0e249adb3a39ee2bb48959426874123 +PT= c2299aae24c941dc44e5d492bc492fed +TEST= 143 +KEY= 5cac16bd99ec5067db5aeae34657f384e851d44cbea105b5 +IV= 4f599b9c20378305ae937195b243b169 +CT= c2299aae24c941dc44e5d492bc492fed +PT= 780da1d6fd961da4756375a15b8ba620 +TEST= 144 +KEY= 9ff7c1766f7f6f9fa3574b35bbc1ee209d32a1ede52aa395 +IV= 044a8c7ffe220414c35bd7cbf6933ff8 +CT= 780da1d6fd961da4756375a15b8ba620 +PT= e63fe8be6566e9ecccdbec442bcccbd5 +TEST= 145 +KEY= 3ea408c4cd15e6f24568a38bdea707cc51e94da9cee66840 +IV= 05de81cd5892f1fea153c9b2a26a896d +CT= e63fe8be6566e9ecccdbec442bcccbd5 +PT= 19f5e5dddf0f6faba9b16b732c6058b8 +TEST= 146 +KEY= 29ff0dd567a810385c9d465601a86867f85826dae28630f8 +IV= 0a2a8bf3be53e2b5175b0511aabdf6ca +CT= 19f5e5dddf0f6faba9b16b732c6058b8 +PT= 41fcd9f8972431f43669863f37b4a18c +TEST= 147 +KEY= 842e4c2f46849e731d619fae968c5993ce31a0e5d5329174 +IV= 1eabd419ca4c0d0badd141fa212c8e4b +CT= 41fcd9f8972431f43669863f37b4a18c +PT= 9857cfe1cfe1046f88df3eb8ecc92e40 +TEST= 148 +KEY= 8ee3344ccb9de2038536504f596d5dfc46ee9e5d39fbbf34 +IV= fa266cf1af82a2250acd78638d197c70 +CT= 9857cfe1cfe1046f88df3eb8ecc92e40 +PT= de4c55865fb82bda1fc0d024791c1b22 +TEST= 149 +KEY= deeec86215a6098d5b7a05c906d57626592e4e7940e7a416 +IV= f9b4cfca36a1b0ab500dfc2ede3beb8e +CT= de4c55865fb82bda1fc0d024791c1b22 +PT= 077f866bf30097d12650855c71b7db9c +TEST= 150 +KEY= 50872d11a2e463d65c0583a2f5d5e1f77f7ecb2531507f8a +IV= 53d4e4ce2c06fcc38e69e573b7426a5b +CT= 077f866bf30097d12650855c71b7db9c +PT= 670bbcb81cde03b883d9b784124f5851 +TEST= 151 +KEY= 7de3af7c8550901c3b0e3f1ae90be24ffca77ca1231f27db +IV= c26330b1219c4b4a2d64826d27b4f3ca +CT= 670bbcb81cde03b883d9b784124f5851 +PT= d6141c300f5e5119e1b5f4bbf415a6dd +TEST= 152 +KEY= bb126d64220a8db9ed1a232ae655b3561d12881ad70a8106 +IV= 74d773d0f053239cc6f1c218a75a1da5 +CT= d6141c300f5e5119e1b5f4bbf415a6dd +PT= 8f742130206f1047fe9caae4f2c31b19 +TEST= 153 +KEY= 9845c3a02214a55d626e021ac63aa311e38e22fe25c99a1f +IV= 7ec0b4e8bd4bd3eb2357aec4001e28e4 +CT= 8f742130206f1047fe9caae4f2c31b19 +PT= 47d0d28af3164cc77fbab5c015cac1c9 +TEST= 154 +KEY= bbc47fab874e0ed425bed090352cefd69c34973e30035bd6 +IV= 833ec00d894bd8502381bc0ba55aab89 +CT= 47d0d28af3164cc77fbab5c015cac1c9 +PT= 3202b04cfc260747bf839ff754a01e26 +TEST= 155 +KEY= bcc028da5f286de017bc60dcc90ae89123b708c964a345f0 +IV= 8bcc8079d2175f4407045771d8666334 +CT= 3202b04cfc260747bf839ff754a01e26 +PT= 75e9fbadad8885fb2398427ee94c5899 +TEST= 156 +KEY= 352b0cd3e3ba0eb462559b7164826d6a002f4ab78def1d69 +IV= 0b159f18c1f33ea389eb2409bc926354 +CT= 75e9fbadad8885fb2398427ee94c5899 +PT= 90da906982058c84d2e75b5dae0ea756 +TEST= 157 +KEY= 6f32d4393b37ea77f28f0b18e687e1eed2c811ea23e1ba3f +IV= 2f5c35da76038e4f5a19d8ead88de4c3 +CT= 90da906982058c84d2e75b5dae0ea756 +PT= 705c22072fdfb807a49bae0fd4d254af +TEST= 158 +KEY= 5740616769ddf57482d3291fc95859e97653bfe5f733ee90 +IV= b276b0ce56828d683872b55e52ea1f03 +CT= 705c22072fdfb807a49bae0fd4d254af +PT= a966ee217cf2bdbc17a0bb55ae769feb +TEST= 159 +KEY= c9e379bdbc05cc402bb5c73eb5aae45561f304b05945717b +IV= e1f41ef2147cb5ce9ea318dad5d83934 +CT= a966ee217cf2bdbc17a0bb55ae769feb +PT= 239d761f1f0437935464c4959546b6bb +TEST= 160 +KEY= 7b2c4f503fcc91ae0828b121aaaed3c63597c025cc03c7c0 +IV= 6f90097c7822030db2cf36ed83c95dee +CT= 239d761f1f0437935464c4959546b6bb +PT= 499477b6476ba58caef81290abdd46c4 +TEST= 161 +KEY= 42bc1c4f29d1801d41bcc697edc5764a9b6fd2b567de8104 +IV= 1571ee53ae1acaef3990531f161d11b3 +CT= 499477b6476ba58caef81290abdd46c4 +PT= acc1fb947eb4c7f115871859cd254d96 +TEST= 162 +KEY= 9be24c041bf4deeced7d3d039371b1bb8ee8caecaafbcc92 +IV= e24f4dbef2122a73d95e504b32255ef1 +CT= acc1fb947eb4c7f115871859cd254d96 +PT= 85dc9d7adf342b0733cf9812cfd58f0a +TEST= 163 +KEY= 83bebeb5727649f268a1a0794c459abcbd2752fe652e4398 +IV= af0690e77b1f140b185cf2b16982971e +CT= 85dc9d7adf342b0733cf9812cfd58f0a +PT= 7ed8b4dcbd1d13bea5c819e99ecf75aa +TEST= 164 +KEY= 7020802d561d88ad167914a5f158890218ef4b17fbe13632 +IV= f0ac93d8ddd31d5bf39e3e98246bc15f +CT= 7ed8b4dcbd1d13bea5c819e99ecf75aa +PT= c81f0464c2de212229370c7a4ed2e890 +TEST= 165 +KEY= 39f8ea2d638410abde6610c13386a82031d8476db533dea2 +IV= fd6338fae6f6b00b49d86a0035999806 +CT= c81f0464c2de212229370c7a4ed2e890 +PT= 23a0fa99c632bcc62a035a09514c3eba +TEST= 166 +KEY= 52fa33f30efd8d0ffdc6ea58f5b414e61bdb1d64e47fe018 +IV= 04c6e0136d8e04c16b02d9de6d799da4 +CT= 23a0fa99c632bcc62a035a09514c3eba +PT= 9f7f1081ae4b6ad51d395d764d2d5b68 +TEST= 167 +KEY= 95c21bd9257b233a62b9fad95bff7e3306e24012a952bb70 +IV= 72410e03aae65889c738282a2b86ae35 +CT= 9f7f1081ae4b6ad51d395d764d2d5b68 +PT= 5f088092968bf4af04bf862a6721df2b +TEST= 168 +KEY= 058f749326ae1dd53db17a4bcd748a9c025dc638ce73645b +IV= d678325e266d12d7904d6f4a03d53eef +CT= 5f088092968bf4af04bf862a6721df2b +PT= 15670f60d1d70e129418ac14a425dd70 +TEST= 169 +KEY= 23d2d59c5ef4af3d28d6752b1ca3848e96456a2c6a56b92b +IV= bb7b672a91e9a61a265da10f785ab2e8 +CT= 15670f60d1d70e129418ac14a425dd70 +PT= 3273ac9d250f729ae790a941739c79bf +TEST= 170 +KEY= e11b1f94517914c81aa5d9b639acf61471d5c36d19cac094 +IV= ab84f623efa11728c2c9ca080f8dbbf5 +CT= 3273ac9d250f729ae790a941739c79bf +PT= 9b135880cb56a8e6cf3a364cc6e02175 +TEST= 171 +KEY= 66f867085dbe626581b68136f2fa5ef2beeff521df2ae1e1 +IV= 01ed899c8dc9c09e87e3789c0cc776ad +CT= 9b135880cb56a8e6cf3a364cc6e02175 +PT= 681d6fc5447ccfe1152156cff6172b6a +TEST= 172 +KEY= 98505fcd27dab39ee9abeef3b6869113abcea3ee293dca8b +IV= a58c8285c31035b1fea838c57a64d1fb +CT= 681d6fc5447ccfe1152156cff6172b6a +PT= 6e30df3fbd67a5fd491e315ef3a268a0 +TEST= 173 +KEY= 9f904a41c19b57a9879b31cc0be134eee2d092b0da9fa22b +IV= 6f46dcb3a84fd96907c0158ce641e437 +CT= 6e30df3fbd67a5fd491e315ef3a268a0 +PT= 5b4980e24d8f9cabe017991326fbbe95 +TEST= 174 +KEY= a330d5a6779731d6dcd2b12e466ea84502c70ba3fc641cbe +IV= c5bdab77e0ca95463ca09fe7b60c667f +CT= 5b4980e24d8f9cabe017991326fbbe95 +PT= 7324530bf94bd80d286c9be2fe4113d3 +TEST= 175 +KEY= 20f008de76d7968aaff6e225bf2570482aab904102250f6d +IV= 32f5ec4aebb997c583c0dd780140a75c +CT= 7324530bf94bd80d286c9be2fe4113d3 +PT= b163425ab21df6afbd2c7000e777e902 +TEST= 176 +KEY= 0f48153b232e71f41e95a07f0d3886e79787e041e552e66f +IV= 3d1854e0c481b28e2fb81de555f9e77e +CT= b163425ab21df6afbd2c7000e777e902 +PT= eb1a6c86c3811e3081325f35ba7f2dca +TEST= 177 +KEY= 96ee2134fd40ca34f58fccf9ceb998d716b5bf745f2dcba5 +IV= 8629366a8b8e266499a6340fde6ebbc0 +CT= eb1a6c86c3811e3081325f35ba7f2dca +PT= e9675af0035c3f8e9d5e58d0652bf5c7 +TEST= 178 +KEY= bf754c828bfe309b1ce89609cde5a7598bebe7a43a063e62 +IV= 566d5fcec3ff7d43299b6db676befaaf +CT= e9675af0035c3f8e9d5e58d0652bf5c7 +PT= 24b4da85eefaa123948c6b5e0e07eb08 +TEST= 179 +KEY= f0223b4af5c885b4385c4c8c231f067a1f678cfa3401d56a +IV= 67b98ec651b057104f5777c87e36b52f +CT= 24b4da85eefaa123948c6b5e0e07eb08 +PT= 753cfebbb9e623453b8bb2976b8d7bd4 +TEST= 180 +KEY= 04665169e091def74d60b2379af9253f24ec3e6d5f8caebe +IV= bc3806a9e56a1dacf4446a2315595b43 +CT= 753cfebbb9e623453b8bb2976b8d7bd4 +PT= 6949284723b4f795d530b366fae70876 +TEST= 181 +KEY= 9cabb1cfd4e46f8324299a70b94dd2aaf1dc8d0ba56ba6c8 +IV= 8c864563bb8d45a098cde0a63475b174 +CT= 6949284723b4f795d530b366fae70876 +PT= d43fed9a25c62349787f0336bffbbfeb +TEST= 182 +KEY= 4407065e88ae79d9f01677ea9c8bf1e389a38e3d1a901923 +IV= 539cc5888b34198fd8acb7915c4a165a +CT= d43fed9a25c62349787f0336bffbbfeb +PT= 030733e175916579f582a778b261da1c +TEST= 183 +KEY= 84d1ee80e8fa54def311440be91a949a7c212945a8f1c33f +IV= 78306f4f56def759c0d6e8de60542d07 +CT= 030733e175916579f582a778b261da1c +PT= f7b1abe4b4ae3cb726f9a88b06d4552a +TEST= 184 +KEY= e885bea6176a75d804a0efef5db4a82d5ad881ceae259615 +IV= 3ac80b78f744208a6c545026ff902106 +CT= f7b1abe4b4ae3cb726f9a88b06d4552a +PT= da984a2c346a4b758e066eb509079168 +TEST= 185 +KEY= 2e0317b2db3f9893de38a5c369dee358d4deef7ba722077d +IV= fc74e03b1068a6fec686a914cc55ed4b +CT= da984a2c346a4b758e066eb509079168 +PT= 21f473636ef27b91f29bb1ce67908763 +TEST= 186 +KEY= 850e1b37e1f7dd89ffccd6a0072c98c926455eb5c0b2801e +IV= 7dfd76ee7ef97796ab0d0c853ac8451a +CT= 21f473636ef27b91f29bb1ce67908763 +PT= 9eef6e211cc8edbd3c4fbe3e14b13c70 +TEST= 187 +KEY= 655d365d66caa5c36123b8811be475741a0ae08bd403bc6e +IV= 33318c04cc0b3cbde0532d6a873d784a +CT= 9eef6e211cc8edbd3c4fbe3e14b13c70 +PT= 8ab49333ca7b2e58e7b24536bb34dee7 +TEST= 188 +KEY= be3c315647f981dceb972bb2d19f5b2cfdb8a5bd6f376289 +IV= 79d06a0d66b5c2b1db61070b2133241f +CT= 8ab49333ca7b2e58e7b24536bb34dee7 +PT= 323d1e775fd729005da7a2853a855ed4 +TEST= 189 +KEY= 3126e544a65724c4d9aa35c58e48722ca01f073855b23c5d +IV= cc5c9d95685af1228f1ad412e1aea518 +CT= 323d1e775fd729005da7a2853a855ed4 +PT= e283016fedadeba2bec7adb5a8dea8b9 +TEST= 190 +KEY= bcf052afafa4852d3b2934aa63e5998e1ed8aa8dfd6c94e4 +IV= 2753144e0a26d9fe8dd6b7eb09f3a1e9 +CT= e283016fedadeba2bec7adb5a8dea8b9 +PT= 9a9bb977d53bbd47550dc60a49afa0fa +TEST= 191 +KEY= ecb724a85cbc7b58a1b28dddb6de24c94bd56c87b4c3341e +IV= 27f910046a94aa3b50477607f318fe75 +CT= 9a9bb977d53bbd47550dc60a49afa0fa +PT= af4c7ac3b02c1b077e8f97b59ae52a21 +TEST= 192 +KEY= bca9e9794f9004ab0efef71e06f23fce355afb322e261e3f +IV= 8af06705fe272571501ecdd1132c7ff3 +CT= af4c7ac3b02c1b077e8f97b59ae52a21 +PT= a97dee2a64dfa7c198b6a4f21e80f7df +TEST= 193 +KEY= 10dcc14b9a309e25a7831934622d980fadec5fc030a6e9e0 +IV= b04e1c6fc657b8aeac752832d5a09a8e +CT= a97dee2a64dfa7c198b6a4f21e80f7df +PT= 34e8228a24c7a16f9ed3f4b9a94aa70d +TEST= 194 +KEY= 9cb6ee6aaefafbed936b3bbe46ea3960333fab7999ec4eed +IV= 6a966ebb8f80a1608c6a2f2134ca65c8 +CT= 34e8228a24c7a16f9ed3f4b9a94aa70d +PT= 99e6ca896906cbaa9b8d01155d1db162 +TEST= 195 +KEY= 461916712e8bd6f10a8df1372fecf2caa8b2aa6cc4f1ff8f +IV= eaf849974783faa7daaff81b80712d1c +CT= 99e6ca896906cbaa9b8d01155d1db162 +PT= 6009b53eb4690c1f1f10639f1fd7640a +TEST= 196 +KEY= 5b9b91a966f9ce146a8444099b85fed5b7a2c9f3db269b85 +IV= 3fb045d182f781eb1d8287d8487218e5 +CT= 6009b53eb4690c1f1f10639f1fd7640a +PT= 88ed4bc34a27f4c4b480b99857ebf541 +TEST= 197 +KEY= 404f7d8b0e966f02e2690fcad1a20a110322706b8ccd6ec4 +IV= 49c0f4571baebe4c1bd4ec22686fa116 +CT= 88ed4bc34a27f4c4b480b99857ebf541 +PT= b88f0e3e01fedf97766ac6b762d2ebc3 +TEST= 198 +KEY= cb2ea99f330a3a865ae601f4d05cd5867548b6dcee1f8507 +IV= 2518da0d88c02ec38b61d4143d9c5584 +CT= b88f0e3e01fedf97766ac6b762d2ebc3 +PT= c1c167ff37e89937dcb8d79c9bc9ec74 +TEST= 199 +KEY= 913c795cf72cd1219b27660be7b44cb1a9f0614075d66973 +IV= 37769a59390261fb5a12d0c3c426eba7 +CT= c1c167ff37e89937dcb8d79c9bc9ec74 +PT= 64d912270a1e60192cdaad8168219e56 +TEST= 200 +KEY= 05f19df919e44144fffe742cedaa2ca8852accc11df7f725 +IV= 63e9d4d1bdd7fead94cde4a5eec89065 +CT= 64d912270a1e60192cdaad8168219e56 +PT= c9ad2dbb1c686a67a3e21a5659576a2b +TEST= 201 +KEY= 099d0dce5e4e194236535997f1c246cf26c8d69744a09d0e +IV= a01e3f917ef4652f0c6c903747aa5806 +CT= c9ad2dbb1c686a67a3e21a5659576a2b +PT= 244c740b4b136c6c480d0147163868d1 +TEST= 202 +KEY= ea1f242e9c75c712121f2d9cbad12aa36ec5d7d05298f5df +IV= c9d2288c473bcb3ee38229e0c23bde50 +CT= 244c740b4b136c6c480d0147163868d1 +PT= a6b125a9c570cc3ecbb5d302adb96e34 +TEST= 203 +KEY= cd5d7c91fbdc81a1b4ae08357fa1e69da57004d2ff219beb +IV= 871f525f8ed73b7f274258bf67a946b3 +CT= a6b125a9c570cc3ecbb5d302adb96e34 +PT= 0f9862a4a21e1fb365135c07577fb3ee +TEST= 204 +KEY= f7d9b8c22bdc8005bb366a91ddbff92ec06358d5a85e2805 +IV= 01bb0a9a8737c19d3a84c453d00001a4 +CT= 0f9862a4a21e1fb365135c07577fb3ee +PT= d833db436e1751b882d03fadf683690b +TEST= 205 +KEY= 83f81e3ced72f22f6305b1d2b3a8a89642b367785edd410e +IV= 80e0e7001cca60ca7421a6fec6ae722a +CT= d833db436e1751b882d03fadf683690b +PT= 0ae2c64d2c577c420f26f2f48aa58d62 +TEST= 206 +KEY= 63310e5f2f8f0e0769e7779f9fffd4d44d95958cd478cc6c +IV= 57e54995cdc9417de0c91063c2fdfc28 +CT= 0ae2c64d2c577c420f26f2f48aa58d62 +PT= b0e2976aa3891a2c71afeb063e3c4383 +TEST= 207 +KEY= f3ae2989b3980dc9d905e0f53c76cef83c3a7e8aea448fef +IV= 999dd6c2b1c528e2909f27d69c1703ce +CT= b0e2976aa3891a2c71afeb063e3c4383 +PT= 16f8a305177ecdba15403fe5d8eef60d +TEST= 208 +KEY= 52cf17d8dea4ce5acffd43f02b080342297a416f32aa79e2 +IV= c9f5bc961057f845a1613e516d3cc393 +CT= 16f8a305177ecdba15403fe5d8eef60d +PT= a607a3ee165e82711b30b44cf4e0c4cf +TEST= 209 +KEY= e22ade79e75fe58e69fae01e3d568133324af523c64abd2d +IV= e153f25dd207351ab0e5c9a139fb2bd4 +CT= a607a3ee165e82711b30b44cf4e0c4cf +PT= 5191cdd0d077ad6be956af8e8e39feca +TEST= 210 +KEY= 38c58ea4ea1e8d4c386b2dceed212c58db1c5aad487343e7 +IV= f55357187f06b142daef50dd0d4168c2 +CT= 5191cdd0d077ad6be956af8e8e39feca +PT= f63a42508522e5f09c31f160298e8e6f +TEST= 211 +KEY= 8c29cd4f1330ef25ce516f9e6803c9a8472dabcd61fdcd88 +IV= 2cbd520e6f6f89c7b4ec43ebf92e6269 +CT= f63a42508522e5f09c31f160298e8e6f +PT= e58ed2ea8671dc5d527cde01c6d9655d +TEST= 212 +KEY= 3650c9671f38cd752bdfbd74ee7215f5155175cca724a8d5 +IV= 73ca969aeca5574bba7904280c082250 +CT= e58ed2ea8671dc5d527cde01c6d9655d +PT= 5ffcacc68357b6709f5b10d48c65ea40 +TEST= 213 +KEY= 6f68a078a75ff5a1742311b26d25a3858a0a65182b414295 +IV= dea2d7d8f9fe3e7d5938691fb86738d4 +CT= 5ffcacc68357b6709f5b10d48c65ea40 +PT= 10bba695f25c1f9412db80f59f937f84 +TEST= 214 +KEY= 9e08e5f9eec5a7606498b7279f79bc1198d1e5edb4d23d11 +IV= 20e4de61513233e5f1604581499a52c1 +CT= 10bba695f25c1f9412db80f59f937f84 +PT= 36caf539734bcaf8250595e5e5db3e94 +TEST= 215 +KEY= f72a5636b3a2d23b5252421eec3276e9bdd4700851090385 +IV= 9debe05128a2a1a06922b3cf5d67755b +CT= 36caf539734bcaf8250595e5e5db3e94 +PT= c64074c9a34850c6fd1b12cd8ae9ef30 +TEST= 216 +KEY= d74fabf587ab10aa941236d74f7a262f40cf62c5dbe0ecb5 +IV= def3a637247b78c02065fdc33409c291 +CT= c64074c9a34850c6fd1b12cd8ae9ef30 +PT= df663ce4199bc64acb9b6f99d69ec679 +TEST= 217 +KEY= 8d12baea80612a284b740a3356e1e0658b540d5c0d7e2acc +IV= 7d9c0365e66f1a355a5d111f07ca3a82 +CT= df663ce4199bc64acb9b6f99d69ec679 +PT= cd1bcbdce7f8c008177e25b83604ee83 +TEST= 218 +KEY= 57b4196767474175866fc1efb119206d9c2a28e43b7ac44f +IV= 41846fa05fc28abcdaa6a38de7266b5d +CT= cd1bcbdce7f8c008177e25b83604ee83 +PT= cd7e96fe44368c4ad22e9d4f6be3c2c2 +TEST= 219 +KEY= cba15bf34d728f0e4b115711f52fac274e04b5ab5099068d +IV= 873a6522e20108c09c1542942a35ce7b +CT= cd7e96fe44368c4ad22e9d4f6be3c2c2 +PT= bcc88d6eaf2e41d9aa6e7c91dadcf92e +TEST= 220 +KEY= d3071140e7c7e244f7d9da7f5a01edfee46ac93a8a45ffa3 +IV= a50f782ea949c2a718a64ab3aab56d4a +CT= bcc88d6eaf2e41d9aa6e7c91dadcf92e +PT= 1ffd3ec8e0d0ad8f3d23961703c0c445 +TEST= 221 +KEY= 3f44ab6e12394d24e824e4b7bad14071d9495f2d89853be6 +IV= 501500dc8a97d00bec43ba2ef5feaf60 +CT= 1ffd3ec8e0d0ad8f3d23961703c0c445 +PT= 1d3d85a9a4bf101e12cc79640d716ac6 +TEST= 222 +KEY= d6b97a7d0cebea71f519611e1e6e506fcb85264984f45120 +IV= 84933d2d2f1f6c13e9fdd1131ed2a755 +CT= 1d3d85a9a4bf101e12cc79640d716ac6 +PT= a2228d0483f9cf74caa301fd30d7db68 +TEST= 223 +KEY= e86ccbf22baf7b31573bec1a9d979f1b012627b4b4238a48 +IV= 4ae5bfeb7168981e3ed5b18f27449140 +CT= a2228d0483f9cf74caa301fd30d7db68 +PT= d43e1d2c7447b7c08bca25f8371aeecf +TEST= 224 +KEY= 0279786975db97998305f136e9d028db8aec024c83396487 +IV= 2fc19d77503c0296ea15b39b5e74eca8 +CT= d43e1d2c7447b7c08bca25f8371aeecf +PT= 4f97b6c0b7d10763cd5ce3a45855fec0 +TEST= 225 +KEY= 7f842708b71ad43bcc9247f65e012fb847b0e1e8db6c9a47 +IV= bac3ed277430c4537dfd5f61c2c143a2 +CT= 4f97b6c0b7d10763cd5ce3a45855fec0 +PT= 067b1521895ae654ca0c20492a9714b8 +TEST= 226 +KEY= 2fa21f709793a1c7cae952d7d75bc9ec8dbcc1a1f1fb8eff +IV= 66014bdc0ad70abb50263878208975fc +CT= 067b1521895ae654ca0c20492a9714b8 +PT= e07e7a1d3f39e45e3a755a82ee3c2ebc +TEST= 227 +KEY= 671468bad93edbd32a9728cae8622db2b7c99b231fc7a043 +IV= 47bff88e3ec2e8dc48b677ca4ead7a14 +CT= e07e7a1d3f39e45e3a755a82ee3c2ebc +PT= 0933d51670e8918147a56816b838bc74 +TEST= 228 +KEY= 9749a2f6b448445023a4fddc988abc33f06cf335a7ff1c37 +IV= 58f8c33f4725eed2f05dca4c6d769f83 +CT= 0933d51670e8918147a56816b838bc74 +PT= e90570cdfc2cdcc99826780ca7cd7a1c +TEST= 229 +KEY= c43d753c2489b403caa18d1164a660fa684a8b390032662b +IV= c4027e5bf29e96a65374d7ca90c1f053 +CT= e90570cdfc2cdcc99826780ca7cd7a1c +PT= 65b6c303491459554cdda630aab36c12 +TEST= 230 +KEY= 32f2c804df89c908af174e122db239af24972d09aa810a39 +IV= 51de94724dce9b10f6cfbd38fb007d0b +CT= 65b6c303491459554cdda630aab36c12 +PT= a0b1694685785efbdd6db8e4fc312bc4 +TEST= 231 +KEY= 9431549183d690920fa62754a8ca6754f9fa95ed56b021fd +IV= 5cbdc9f06f45d2f5a6c39c955c5f599a +CT= a0b1694685785efbdd6db8e4fc312bc4 +PT= c271a8f639d1a293f4b8899428f618c2 +TEST= 232 +KEY= 0aa1211f2a2134dacdd78fa2911bc5c70d421c797e46393f +IV= e52d7acaf5dfaf799e90758ea9f7a448 +CT= c271a8f639d1a293f4b8899428f618c2 +PT= ab7968c2a1859d5aebfaeb201910b672 +TEST= 233 +KEY= 88bfbddc6d21fc0e66aee760309e589de6b8f75967568f4d +IV= 15af9c49191bf995821e9cc34700c8d4 +CT= ab7968c2a1859d5aebfaeb201910b672 +PT= 59d394bb9c41be21c050a9df2dd94c2b +TEST= 234 +KEY= 05ab922fa8b6f5ff3f7d73dbacdfe6bc26e85e864a8fc366 +IV= 0fb568270892e7a98d142ff3c59709f1 +CT= 59d394bb9c41be21c050a9df2dd94c2b +PT= 43f89bae0dccb0eaf30411e6239a753c +TEST= 235 +KEY= 7a7ed7932ded53767c85e875a1135656d5ec4f606915b65a +IV= 48f1e1daee9c16cd7fd545bc855ba689 +CT= 43f89bae0dccb0eaf30411e6239a753c +PT= 8196a2f49e2508443f86b294d71a5d5e +TEST= 236 +KEY= 8955f595c21bf3aafd134a813f365e12ea6afdf4be0feb04 +IV= b3deb1ed557cb477f32b2206eff6a0dc +CT= 8196a2f49e2508443f86b294d71a5d5e +PT= 5ed45f8741e7fc5c77caaca9d3dfa26d +TEST= 237 +KEY= 09205c9c2a528a5ba3c715067ed1a24e9da0515d6dd04969 +IV= 3742941bc0992aac8075a909e84979f1 +CT= 5ed45f8741e7fc5c77caaca9d3dfa26d +PT= f60c9f9616a03b40655cb733ee1c3b68 +TEST= 238 +KEY= 46daa0a9a034745355cb8a906871990ef8fce66e83cc7201 +IV= a3e1ea7d9e5ba6ce4ffafc358a66fe08 +CT= f60c9f9616a03b40655cb733ee1c3b68 +PT= e73f7e14a3a245b1e594f659d996ed06 +TEST= 239 +KEY= da145a69c9d459e1b2f4f484cbd3dcbf1d6810375a5a9f07 +IV= f5d4eb0eab3486d29ccefac069e02db2 +CT= e73f7e14a3a245b1e594f659d996ed06 +PT= 52651c2039168170765b235d85bf6cec +TEST= 240 +KEY= 61cd045e05969b9fe091e8a4f2c55dcf6b33336adfe5f3eb +IV= f7162437a85a186abbd95e37cc42c27e +CT= 52651c2039168170765b235d85bf6cec +PT= 665c920c4bb95b5c716d60ae9c30db1b +TEST= 241 +KEY= bdf9f289d095660d86cd7aa8b97c06931a5e53c443d528f0 +IV= add7416105db0cf0dc34f6d7d503fd92 +CT= 665c920c4bb95b5c716d60ae9c30db1b +PT= f6e1d36cf7d41f70885587a85b897ea2 +TEST= 242 +KEY= 4cbaf7692571d8c5702ca9c44ea819e3920bd46c185c5652 +IV= 9fbf3815905fcd9ff14305e0f5e4bec8 +CT= f6e1d36cf7d41f70885587a85b897ea2 +PT= 137db7f20f98671e37f55e401d0482e2 +TEST= 243 +KEY= cebf572bb09cc72963511e3641307efda5fe8a2c0558d4b0 +IV= 0c3951bdca9582ca8205a04295ed1fec +CT= 137db7f20f98671e37f55e401d0482e2 +PT= 72125c79a48573158496efcc5ca552d4 +TEST= 244 +KEY= 0d8978cf8179cbbf1143424fe5b50de8216865e059fd8664 +IV= 898422ab0db951b1c3362fe431e50c96 +CT= 72125c79a48573158496efcc5ca552d4 +PT= 6b12016832de435a963fffa857824cf7 +TEST= 245 +KEY= 180d2da794feaf777a514327d76b4eb2b7579a480e7fca93 +IV= 0b47a508ead8008015845568158764c8 +CT= 6b12016832de435a963fffa857824cf7 +PT= 18693a241fb5687cf3a793b9b7ee4b15 +TEST= 246 +KEY= 3d6c36453dca611462387903c8de26ce44f009f1b9918186 +IV= 857cc19c3e72c1ad25611be2a934ce63 +CT= 18693a241fb5687cf3a793b9b7ee4b15 +PT= 4e04bd363afc26bddd3d98892a7c705a +TEST= 247 +KEY= 8b626e8d8e075bce2c3cc435f222007399cd917893edf1dc +IV= 6e4fcd034f6e2af5b60e58c8b3cd3ada +CT= 4e04bd363afc26bddd3d98892a7c705a +PT= 06fb2c371c3f54518aa0a2766ce1ccf3 +TEST= 248 +KEY= a5eceb5bae22c2e72ac7e802ee1d5422136d330eff0c3d2f +IV= 4a23e1efbb43855e2e8e85d620259929 +CT= 06fb2c371c3f54518aa0a2766ce1ccf3 +PT= d7de2c298eb1ef273a6386986bdec555 +TEST= 249 +KEY= b25537eefd5bda7afd19c42b60acbb05290eb59694d2f87a +IV= 9034bbdbf74a369e17b9dcb55379189d +CT= d7de2c298eb1ef273a6386986bdec555 +PT= 0f4a1cea83da845dec063adff173f424 +TEST= 250 +KEY= 39fef1c45697dabcf253d8c1e3763f58c5088f4965a10c5e +IV= 2b5ef64e50a2cf5f8babc62aabcc00c6 +CT= 0f4a1cea83da845dec063adff173f424 +PT= ce27f8af55009d3658d166b960ca12d6 +TEST= 251 +KEY= 5657bba1106032f13c74206eb676a26e9dd9e9f0056b1e88 +IV= ce96953f749bbfd66fa94a6546f7e84d +CT= ce27f8af55009d3658d166b960ca12d6 +PT= bf1458e052637efc0eef352621606029 +TEST= 252 +KEY= a1bc53defd62921a8360788ee415dc929336dcd6240b7ea1 +IV= b944fc42142e4940f7ebe87fed02a0eb +CT= bf1458e052637efc0eef352621606029 +PT= e4d96706db5b0da8fa429bb65bfbe4d8 +TEST= 253 +KEY= dac8c0328ba4104167b91f883f4ed13a697447607ff09a79 +IV= a8d8e3a3bb687ecc7b7493ec76c6825b +CT= e4d96706db5b0da8fa429bb65bfbe4d8 +PT= 1b11ff1367fe94f7759d1bec40b8fdcc +TEST= 254 +KEY= 03ae3aa5e62ca4927ca8e09b58b045cd1ce95c8c3f4867b5 +IV= 35d7db1466e14e3ed966fa976d88b4d3 +CT= 1b11ff1367fe94f7759d1bec40b8fdcc +PT= 0989d688c947c616ac13b63892e35e74 +TEST= 255 +KEY= ead5a60bb601c1147521361391f783dbb0faeab4adab39c1 +IV= 59ba56cc11efa9a2e97b9cae502d6586 +CT= 0989d688c947c616ac13b63892e35e74 +PT= 978c150575871fb2c8847aa0cb092108 +TEST= 256 +KEY= c608ee8a971a0383e2ad2316e4709c69787e901466a218c9 +IV= 253a79448d79b0b72cdd4881211bc297 +CT= 978c150575871fb2c8847aa0cb092108 +PT= d08629cccf6b869b10768de9e2984b2e +TEST= 257 +KEY= d8eb4fc4230d3e39322b0ada2b1b1af268081dfd843a53e7 +IV= e9a7fdb26a37b6601ee3a14eb4173dba +CT= d08629cccf6b869b10768de9e2984b2e +PT= e320aecf3803401ab95e09eb50a6eda5 +TEST= 258 +KEY= e3f18e12233b5a30d10ba41513185ae8d1561416d49cbe42 +IV= 4c6b62e3e6658be73b1ac1d600366409 +CT= e320aecf3803401ab95e09eb50a6eda5 +PT= d29e97683c9989c75d5d73eaadc23ee2 +TEST= 259 +KEY= 7d9deaa58d97a2fc0395337d2f81d32f8c0b67fc795e80a0 +IV= 414a2961119ce4d79e6c64b7aeacf8cc +CT= d29e97683c9989c75d5d73eaadc23ee2 +PT= 8d859d878df32fdd26af4984d48a1bd2 +TEST= 260 +KEY= e4a19e3554e8d73b8e10aefaa272fcf2aaa42e78add49b72 +IV= 9df8066fcf854065993c7490d97f75c7 +CT= 8d859d878df32fdd26af4984d48a1bd2 +PT= 7b524b71439722f0555d4681f7eeaac9 +TEST= 261 +KEY= 0c93cdda4435e903f542e58be1e5de02fff968f95a3a31bb +IV= 9529bf1b1aceeda5e83253ef10dd3e38 +CT= 7b524b71439722f0555d4681f7eeaac9 +PT= 8c8ecc9829f06f73497ea90d48cd7fc5 +TEST= 262 +KEY= 637747c6ef7b72b579cc2913c815b171b687c1f412f74e7e +IV= adc9666d259469516fe48a1cab4e9bb6 +CT= 8c8ecc9829f06f73497ea90d48cd7fc5 +PT= 6e416c2563212821f0d8e7d75297b11f +TEST= 263 +KEY= 7e4bb22e1a7c4e25178d4536ab349950465f26234060ff61 +IV= c3be9a54fdda99731d3cf5e8f5073c90 +CT= 6e416c2563212821f0d8e7d75297b11f +PT= efc73dfa5fb87ea16284e25d22360c2f +TEST= 264 +KEY= 62b7d329dc5ea208f84a78ccf48ce7f124dbc47e6256f34e +IV= e2145312df24cbdb1cfc6107c622ec2d +CT= efc73dfa5fb87ea16284e25d22360c2f +PT= 1191fc5e2efa9f19004c7d00e1f4d8b1 +TEST= 265 +KEY= 039b0e1de399831ee9db8492da7678e82497b97e83a22bff +IV= 0931d0d100eeb87d612cdd343fc72116 +CT= 1191fc5e2efa9f19004c7d00e1f4d8b1 +PT= 717b1b902086b97296b7e97bc01c259e +TEST= 266 +KEY= cb02b3c8ca4a0c9498a09f02faf0c19ab220500543be0e61 +IV= 65d0c1dfc85c7fb9c899bdd529d38f8a +CT= 717b1b902086b97296b7e97bc01c259e +PT= 569097da8c43871cc5a55ac150abcd31 +TEST= 267 +KEY= 5ffaee959d35c247ce3008d876b3468677850ac41315c350 +IV= 7a4a448600aca08994f85d5d577fced3 +CT= 569097da8c43871cc5a55ac150abcd31 +PT= 4046f3df53dfc1b56400501f08200fe0 +TEST= 268 +KEY= 0ca33faaa4b25feb8e76fb07256c873313855adb1b35ccb0 +IV= c83e2121aa25a5295359d13f39879dac +CT= 4046f3df53dfc1b56400501f08200fe0 +PT= 87c5362aaf3f31b05c92189e38fd9c66 +TEST= 269 +KEY= 5b782b675ee9a8a509b3cd2d8a53b6834f17424523c850d6 +IV= 567e0cd5eafc699457db14cdfa5bf74e +CT= 87c5362aaf3f31b05c92189e38fd9c66 +PT= 03a5cd79734810f4d9559fdc97a4b1a1 +TEST= 270 +KEY= b069b5dcaada727f0a160054f91ba6779642dd99b46ce177 +IV= 5397ed8a6df7641eeb119ebbf433dada +CT= 03a5cd79734810f4d9559fdc97a4b1a1 +PT= 1b1ecddfd726c66594df7b050f6758ff +TEST= 271 +KEY= 52477de5efbae2621108cd8b2e3d6012029da69cbb0bb988 +IV= 52151355da4369c8e22ec8394560901d +CT= 1b1ecddfd726c66594df7b050f6758ff +PT= 26e9a7a560dd36d9767a51da06301bbd +TEST= 272 +KEY= 6e59ff11bed37f8837e16a2e4ee056cb74e7f746bd3ba235 +IV= fb1a5f8fa1c3d1f43c1e82f451699dea +CT= 26e9a7a560dd36d9767a51da06301bbd +PT= c2fab5cddb329f2ea1e1459251a3cb1b +TEST= 273 +KEY= 504de2ec58ce17bbf51bdfe395d2c9e5d506b2d4ec98692e +IV= 6bcd90c4d648ab783e141dfde61d6833 +CT= c2fab5cddb329f2ea1e1459251a3cb1b +PT= 4293d0a26e81dbe9fed6113b1954d59f +TEST= 274 +KEY= cc6c6c4150e763aab7880f41fb53120c2bd0a3eff5ccbcb1 +IV= 0f61daa62b7e95a79c218ead08297411 +CT= 4293d0a26e81dbe9fed6113b1954d59f +PT= 5dc81f054088db9b3d1f8ad4bacc2039 +TEST= 275 +KEY= bd3b4967a596578fea401044bbdbc99716cf293b4f009c88 +IV= 0c6435697122955071572526f5713425 +CT= 5dc81f054088db9b3d1f8ad4bacc2039 +PT= b6fb950586c671e968ffc709b79e8af8 +TEST= 276 +KEY= 9a08b753e07cd6535cbb85413d1db87e7e30ee32f89e1670 +IV= 377a670b7487b3eb2733fe3445ea81dc +CT= b6fb950586c671e968ffc709b79e8af8 +PT= ed69b1e52f5f095eff0ac73a76039b65 +TEST= 277 +KEY= e5faa83242346b4eb1d234a41242b120813a29088e9d8d15 +IV= dbeeed8784ad80b57ff21f61a248bd1d +CT= ed69b1e52f5f095eff0ac73a76039b65 +PT= fbc0c9a6fbc2ccd02bf5a009b43fe903 +TEST= 278 +KEY= 44770f6b1653e2754a12fd02e9807df0aacf89013aa26416 +IV= 7d9b061a6209e0faa18da7595467893b +CT= fbc0c9a6fbc2ccd02bf5a009b43fe903 +PT= adbe2b6c2c979c90e019991c5e81f69e +TEST= 279 +KEY= 89a3b49bbe885d34e7acd66ec517e1604ad6101d64239288 +IV= 5495c29e4dda4e26cdd4bbf0a8dbbf41 +CT= adbe2b6c2c979c90e019991c5e81f69e +PT= e382d6611c0b2591be9b7b6bc66d479d +TEST= 280 +KEY= 457d838277c2797b042e000fd91cc4f1f44d6b76a24ed515 +IV= 0303bb8a65cce419ccde3719c94a244f +CT= e382d6611c0b2591be9b7b6bc66d479d +PT= 7a39d5bfc7adb6b7539a1aa45a31a7e5 +TEST= 281 +KEY= 814ad70fbaf9d8aa7e17d5b01eb17246a7d771d2f87f72f0 +IV= 550bd125e57ade94c437548dcd3ba1d1 +CT= 7a39d5bfc7adb6b7539a1aa45a31a7e5 +PT= 3cb8ff426ff48fa93efaedc559833c86 +TEST= 282 +KEY= 89599f584b46337342af2af27145fdef992d9c17a1fc4e76 +IV= 45800de7659a8fd008134857f1bfebd9 +CT= 3cb8ff426ff48fa93efaedc559833c86 +PT= 2f5c7660310de65b1c5254e2176a15ca +TEST= 283 +KEY= 8ef84bde14c7412b6df35c9240481bb4857fc8f5b6965bbc +IV= 5142ffeadec300c107a1d4865f817258 +CT= 2f5c7660310de65b1c5254e2176a15ca +PT= 7a3056742cf8cfde9cbeae32607e8de3 +TEST= 284 +KEY= f076085ee3ea165617c30ae66cb0d46a19c166c7d6e8d65f +IV= 02fbb83edcb092957e8e4380f72d577d +CT= 7a3056742cf8cfde9cbeae32607e8de3 +PT= b2b7b7551b2a1d59601003c6edd70a78 +TEST= 285 +KEY= 7d74d286d9cec1c3a574bdb3779ac93379d165013b3fdc27 +IV= 890e42eaa4c59b078d02dad83a24d795 +CT= b2b7b7551b2a1d59601003c6edd70a78 +PT= 8b617ccd9b1289f485167dc13126795c +TEST= 286 +KEY= 8ba3aa3c04001b9d2e15c17eec8840c7fcc718c00a19a57b +IV= f96182d81751eccaf6d778baddceda5e +CT= 8b617ccd9b1289f485167dc13126795c +PT= d4800ee4a5e29a18c655ad5ce23063f9 +TEST= 287 +KEY= e51b3bf1df7b0d54fa95cf9a496adadf3a92b59ce829c682 +IV= 46297563d303df226eb891cddb7b16c9 +CT= d4800ee4a5e29a18c655ad5ce23063f9 +PT= 4a6008072dceb7602bf120f0984ff1d6 +TEST= 288 +KEY= 82091a039c558d36b0f5c79d64a46dbf1163956c70663754 +IV= 28e82d15bac860ea671221f2432e8062 +CT= 4a6008072dceb7602bf120f0984ff1d6 +PT= b05cd61bc646851726441b147fbb1ad3 +TEST= 289 +KEY= c503b4b113de349700a91186a2e2e8a837278e780fdd2d87 +IV= 342f9fdeeebe130a470aaeb28f8bb9a1 +CT= b05cd61bc646851726441b147fbb1ad3 +PT= 33e1834199ee6cd5c6f950d4823b2337 +TEST= 290 +KEY= 4b06065b748afb69334892c73b0c847df1dedeac8de60eb0 +IV= 02928c43c0ff24968e05b2ea6754cffe +CT= 33e1834199ee6cd5c6f950d4823b2337 +PT= ba0bd1ffa54258361d3a8bd9f3c689e4 +TEST= 291 +KEY= ad0b10216b5d496b894343389e4edc4bece455757e208754 +IV= 50dc56062e88c9cae60d167a1fd7b202 +CT= ba0bd1ffa54258361d3a8bd9f3c689e4 +PT= 4911046d8f1d2bcf54f22b5a83af5ae1 +TEST= 292 +KEY= af6cc229a2618121c05247551153f784b8167e2ffd8fddb5 +IV= a7cc6a2b280a9de80267d208c93cc84a +CT= 4911046d8f1d2bcf54f22b5a83af5ae1 +PT= 254ca1983d7b794911b455e857ce902b +TEST= 293 +KEY= 66413e8c7d11836fe51ee6cd2c288ecda9a22bc7aa414d9e +IV= d01066adc643a032c92dfca5df70024e +CT= 254ca1983d7b794911b455e857ce902b +PT= b0a100e60d0404d123d10ae78e9cffcb +TEST= 294 +KEY= d13af271f9c3337455bfe62b212c8a1c8a73212024ddb255 +IV= 20d00a218f07ecedb77bccfd84d2b01b +CT= b0a100e60d0404d123d10ae78e9cffcb +PT= d4cd0cc7d2ebab050108e94365d34faa +TEST= 295 +KEY= 8b3c7094c3ad8b018172eaecf3c721198b7bc863410efdff +IV= ec5f46869a00ffc25a0682e53a6eb875 +CT= d4cd0cc7d2ebab050108e94365d34faa +PT= df913cc34675469401cca41db50bfba4 +TEST= 296 +KEY= 7dcf9d4559c3ea3a5ee3d62fb5b2678d8ab76c7ef405065b +IV= 8718728b7105a417f6f3edd19a6e613b +CT= df913cc34675469401cca41db50bfba4 +PT= 5b09f0af91ea41851a232543e97a6ed4 +TEST= 297 +KEY= c3e6c2a9975117b605ea2680245826089094493d1d7f688f +IV= 21d001128a401ebfbe295fecce92fd8c +CT= 5b09f0af91ea41851a232543e97a6ed4 +PT= 8544dfd1e46d14ff1b0e9cf43a7e9eb6 +TEST= 298 +KEY= 54c6d7971066fdd380aef951c03532f78b9ad5c92701f639 +IV= f861e1c66c3f21779720153e8737ea65 +CT= 8544dfd1e46d14ff1b0e9cf43a7e9eb6 +PT= 586696a67e355ccdc41ad16d87786773 +TEST= 299 +KEY= b47a128050d1fc84d8c86ff7be006e3a4f8004a4a079914a +IV= 55a87d49d3640887e0bcc51740b70157 +CT= 586696a67e355ccdc41ad16d87786773 +PT= 6c7ff8d2f033b33c729c556e0731acff +TEST= 300 +KEY= c66ea18d75351d93b4b797254e33dd063d1c51caa7483db5 +IV= 7224a11a5d122a607214b30d25e4e117 +CT= 6c7ff8d2f033b33c729c556e0731acff +PT= bc031d9b497c64b15ee143cf4d2130b1 +TEST= 301 +KEY= 00432a82295b2c6708b48abe074fb9b763fd1205ea690d04 +IV= 61d8239be618cc39c62d8b0f5c6e31f4 +CT= bc031d9b497c64b15ee143cf4d2130b1 +PT= 325d14ccde09311a8069c5522fd050fd +TEST= 302 +KEY= e03b01935511fa7e3ae99e72d94688ade394d757c5b95df9 +IV= 339b83266b282a96e0782b117c4ad619 +CT= 325d14ccde09311a8069c5522fd050fd +PT= fa25d0913004a26a3232f743acc7677e +TEST= 303 +KEY= 47f79639f27d47e9c0cc4ee3e9422ac7d1a62014697e3a87 +IV= c5f60e2ec86a0971a7cc97aaa76cbd97 +CT= fa25d0913004a26a3232f743acc7677e +PT= 61aa67b567f1ce94326b4711f8115727 +TEST= 304 +KEY= ee86c028a3b01e7ea16629568eb3e453e3cd6705916f6da0 +IV= 4037462a5b08a27fa971561151cd5997 +CT= 61aa67b567f1ce94326b4711f8115727 +PT= 35d0fd8aff6cbdf34065ced4796d9d27 +TEST= 305 +KEY= ee88dbe9ccc930cb94b6d4dc71df59a0a3a8a9d1e802f087 +IV= 20cb619d26a05953000e1bc16f792eb5 +CT= 35d0fd8aff6cbdf34065ced4796d9d27 +PT= dd69b839eae7d0df79f5d06140d54325 +TEST= 306 +KEY= c77adb703861d01649df6ce59b38897fda5d79b0a8d7b3a2 +IV= 16cfcf6a4f3272ea29f20099f4a8e0dd +CT= dd69b839eae7d0df79f5d06140d54325 +PT= ca93e79e612893aa0d979abdf5ca788a +TEST= 307 +KEY= 3f486f048b5d9716834c8b7bfa101ad5d7cae30d5d1dcb28 +IV= 58332c3a8f187a96f832b474b33c4700 +CT= ca93e79e612893aa0d979abdf5ca788a +PT= 39974a1c62df12f62ec9f75704b0efa8 +TEST= 308 +KEY= b9022c8ea2c6fef4badbc16798cf0823f903145a59ad2480 +IV= 3c09d97efc480cd6864a438a299b69e2 +CT= 39974a1c62df12f62ec9f75704b0efa8 +PT= b840efc34bcd941bf551e437d633bb3a +TEST= 309 +KEY= d22317e3bb60b9fa029b2ea4d3029c380c52f06d8f9e9fba +IV= c755a4cf1fad90046b213b6d19a6470e +CT= b840efc34bcd941bf551e437d633bb3a +PT= 979f6217fd73cab73a1de1facf68542c +TEST= 310 +KEY= e196ebbfcda64f7095044cb32e71568f364f119740f6cb96 +IV= d342a7b4ef6cb49f33b5fc5c76c6f68a +CT= 979f6217fd73cab73a1de1facf68542c +PT= a290a25cfbcb1bee137afb860bb2cf29 +TEST= 311 +KEY= b756b878a99088b83794eeefd5ba4d612535ea114b4404bf +IV= d92c9835e799541056c053c76436c7c8 +CT= a290a25cfbcb1bee137afb860bb2cf29 +PT= 7e99249836ca5167c88bd3431c78c2e0 +TEST= 312 +KEY= 2515f524203b507e490dca77e3701c06edbe3952573cc65f +IV= fd7219f6c131c4bd92434d5c89abd8c6 +CT= 7e99249836ca5167c88bd3431c78c2e0 +PT= 5b7dab9c2148a2b7acce4723d1d63b3f +TEST= 313 +KEY= 28a33899811fe9b7127061ebc238beb141707e7186eafd60 +IV= f6b29a78141d8f8a0db6cdbda124b9c9 +CT= 5b7dab9c2148a2b7acce4723d1d63b3f +PT= 12bae3836257c52b88eceeaae8de3b80 +TEST= 314 +KEY= 85c6089fef19163500ca8268a06f7b9ac99c90db6e34c6e0 +IV= ae11e9be14b4ecb1ad6530066e06ff82 +CT= 12bae3836257c52b88eceeaae8de3b80 +PT= 71c5d9f8747d428de30736c4dd33e3e5 +TEST= 315 +KEY= 86665ed5da56fe90710f5b90d41239172a9ba61fb3072505 +IV= 2cbaa91201d1980b03a0564a354fe8a5 +CT= 71c5d9f8747d428de30736c4dd33e3e5 +PT= d824a3fb80554ccd519d730d25eed2af +TEST= 316 +KEY= f6d0840d75423d5ca92bf86b544775da7b06d51296e9f7aa +IV= 66aa086063c3768c70b6dad8af14c3cc +CT= d824a3fb80554ccd519d730d25eed2af +PT= c974bcbe88aca9d29312192be52885bd +TEST= 317 +KEY= 56f2fdaab52a8691605f44d5dcebdc08e814cc3973c17217 +IV= 14d16ccede70f435a02279a7c068bbcd +CT= c974bcbe88aca9d29312192be52885bd +PT= 23b74c4b5e661fa157f571f4c13aa3ae +TEST= 318 +KEY= 676109782f02525643e8089e828dc3a9bfe1bdcdb2fbd1b9 +IV= 46bb517768227d1d3193f4d29a28d4c7 +CT= 23b74c4b5e661fa157f571f4c13aa3ae +PT= bdf2a1a79d553c85f5867b2bd5259a82 +TEST= 319 +KEY= d21b20b085b317edfe1aa9391fd8ff2c4a67c6e667de4b3b +IV= 054b26f10a7f2d69b57a29c8aab145bb +CT= bdf2a1a79d553c85f5867b2bd5259a82 +PT= 1e02970be31fee63c9bccc79fb41f670 +TEST= 320 +KEY= 3cf3f93d44647fb7e0183e32fcc7114f83db0a9f9c9fbd4b +IV= c44342fc579f9083eee8d98dc1d7685a +CT= 1e02970be31fee63c9bccc79fb41f670 +PT= 70f71372f64174d7c8757f043812439f +TEST= 321 +KEY= 2c83cb76d99e054e90ef2d400a8665984bae759ba48dfed4 +IV= 884b46d9fbe7d99c1070324b9dfa7af9 +CT= 70f71372f64174d7c8757f043812439f +PT= 46b20e91579b5cc0ade9327478df25fa +TEST= 322 +KEY= 0adea18faa36e94bd65d23d15d1d3958e64747efdc52db2e +IV= f256bc3206e11e9c265d6af973a8ec05 +CT= 46b20e91579b5cc0ade9327478df25fa +PT= 51fe245369f67740615e159e28c2d56c +TEST= 323 +KEY= e0c00f8bfd4adcd087a3078234eb4e1887195271f4900e42 +IV= 836f6756b9ec572dea1eae04577c359b +CT= 51fe245369f67740615e159e28c2d56c +PT= 58a1b407358c1f9783a05c0a43d5b4fb +TEST= 324 +KEY= eea0b17e70a6fc53df02b3850167518f04b90e7bb745bab9 +IV= 0e584bf6d72f08310e60bef58dec2083 +CT= 58a1b407358c1f9783a05c0a43d5b4fb +PT= 6212dd8752996cc4d747790d5f2bc7e7 +TEST= 325 +KEY= b6e49eea07d03112bd106e0253fe3d4bd3fe7776e86e7d5e +IV= 2ba760fb0cc14d1858442f947776cd41 +CT= 6212dd8752996cc4d747790d5f2bc7e7 +PT= db16c25bde0b95f4ec7b34fa2096e6a6 +TEST= 326 +KEY= f64dceba5e71d73e6606ac598df5a8bf3f85438cc8f89bf8 +IV= 674aa4866ee9988e40a9505059a1e62c +CT= db16c25bde0b95f4ec7b34fa2096e6a6 +PT= bb98bbb3289f3b5a96c5d3da92f8cd0f +TEST= 327 +KEY= 23cbcca3d63dabb8dd9e17eaa56a93e5a94090565a0056f7 +IV= e3d676539cbd9676d5860219884c7c86 +CT= bb98bbb3289f3b5a96c5d3da92f8cd0f +PT= 324c1661b1e289ea3dac27af14e026c5 +TEST= 328 +KEY= d6f7c4a098c4e809efd2018b14881a0f94ecb7f94ee07032 +IV= e7fb3f340e160fb5f53c08034ef943b1 +CT= 324c1661b1e289ea3dac27af14e026c5 +PT= 6eda104789445c38f66ec2562f95fbdb +TEST= 329 +KEY= 4b795fab98879223810811cc9dcc4637628275af61758be9 +IV= c5e830814d72e9449d8e9b0b00437a2a +CT= 6eda104789445c38f66ec2562f95fbdb +PT= c834c54858181891c7d654a7502c0b60 +TEST= 330 +KEY= aa317465e376baf2493cd484c5d45ea6a554210831598089 +IV= 2388fccdb47cb5dbe1482bce7bf128d1 +CT= c834c54858181891c7d654a7502c0b60 +PT= 9c5f5599557d176050bbac4258b87f66 +TEST= 331 +KEY= b601c39c0e5f02ded563811d90a949c6f5ef8d4a69e1ffef +IV= 10c2528d377387311c30b7f9ed29b82c +CT= 9c5f5599557d176050bbac4258b87f66 +PT= ed5f51a6afa843d467e21f6c68992273 +TEST= 332 +KEY= 44a1fe3f8349d500383cd0bb3f010a12920d92260178dd9c +IV= 9e73d9fb1d2471e8f2a03da38d16d7de +CT= ed5f51a6afa843d467e21f6c68992273 +PT= d7a5f18382f892264008f75707254d95 +TEST= 333 +KEY= 568f031d75b9b48fef992138bdf99834d2056571065d9009 +IV= dec9b60fa5a91887122efd22f6f0618f +CT= d7a5f18382f892264008f75707254d95 +PT= d13a34d9f57884ecee2fa1a412584be4 +TEST= 334 +KEY= 72cfcce9fe5eb48a3ea315e148811cd83c2ac4d51405dbed +IV= 75c70261d0c49d692440cff48be70005 +CT= d13a34d9f57884ecee2fa1a412584be4 +PT= 064d550098f0813d145a2aa296064ccf +TEST= 335 +KEY= 58448186bd1ed1fc38ee40e1d0719de52870ee7782039722 +IV= 754a1b79a75bd3b32a8b4d6f43406576 +CT= 064d550098f0813d145a2aa296064ccf +PT= d7cd7d2b23e42f7a9808d48c28982743 +TEST= 336 +KEY= 6ff7bcc770079d57ef233dcaf395b29fb0783afbaa9bb061 +IV= 25ee1f4d8f257c6437b33d41cd194cab +CT= d7cd7d2b23e42f7a9808d48c28982743 +PT= 6f55d4c7a13f08a1d936c5f0177040ca +TEST= 337 +KEY= 7ecbb104aa3505e58076e90d52aaba3e694eff0bbdebf0ab +IV= e21f1527b69b89c8113c0dc3da3298b2 +CT= 6f55d4c7a13f08a1d936c5f0177040ca +PT= 7f061908571cddbc1f8f82a31a3af1f9 +TEST= 338 +KEY= 135d99b5f2482ffaff70f00505b6678276c17da8a7d10152 +IV= 5da54cdb26a0dc2d6d9628b1587d2a1f +CT= 7f061908571cddbc1f8f82a31a3af1f9 +PT= 30ab085953de3e8027de0c8a185a7d02 +TEST= 339 +KEY= 3c76458a987b66f0cfdbf85c56685902511f7122bf8b7c50 +IV= e0614e072d2563dd2f2bdc3f6a33490a +CT= 30ab085953de3e8027de0c8a185a7d02 +PT= 92c915e98aebf6265c43a66ac5b40787 +TEST= 340 +KEY= ebd41b4484ea67a05d12edb5dc83af240d5cd7487a3f7bd7 +IV= 6ea27df02fa0a9a9d7a25ece1c910150 +CT= 92c915e98aebf6265c43a66ac5b40787 +PT= e9ac0996f97ffba0f7c860a089cdf99f +TEST= 341 +KEY= 85b6bbbc8e2243d3b4bee42325fc5484fa94b7e8f3f28248 +IV= 46d915f802932c936e62a0f80ac82473 +CT= e9ac0996f97ffba0f7c860a089cdf99f +PT= ba1d082edb28e255cb37afedb497d43a +TEST= 342 +KEY= bda8736e56ddb34f0ea3ec0dfed4b6d131a3180547655672 +IV= 0a7b9bcbe89e4cde381ec8d2d8fff09c +CT= ba1d082edb28e255cb37afedb497d43a +PT= 63298fe15a14c4a4e582c57772a0581e +TEST= 343 +KEY= 9b5dc0c3b097b7ce6d8a63eca4c07275d421dd7235c50e6c +IV= 81f4666446cb470526f5b3ade64a0481 +CT= 63298fe15a14c4a4e582c57772a0581e +PT= ae79390c6789dfcf7110ba93281e9895 +TEST= 344 +KEY= e64ddc6a55048e35c3f35ae0c349adbaa53167e11ddb96f9 +IV= db4439803a1aca807d101ca9e59339fb +CT= ae79390c6789dfcf7110ba93281e9895 +PT= 2c9df2ed511595756e5cf6d33442d3a3 +TEST= 345 +KEY= 9c75ac9cba0918cdef6ea80d925c38cfcb6d91322999455a +IV= b73dbaca0c10ad0a7a3870f6ef0d96f8 +CT= 2c9df2ed511595756e5cf6d33442d3a3 +PT= 90fdaeaedc379128b73515cb2aac9b7a +TEST= 346 +KEY= a045744f6bb9205f7f9306a34e6ba9e77c5884f90335de20 +IV= 356bbcdd4ebda8f93c30d8d3d1b03892 +CT= 90fdaeaedc379128b73515cb2aac9b7a +PT= e66ea385e1f20791090ca24adb250afc +TEST= 347 +KEY= 48e94fac40cfc94b99fda526af99ae76755426b3d810d4dc +IV= abaf17ebe3658829e8ac3be32b76e914 +CT= e66ea385e1f20791090ca24adb250afc +PT= a17c6802f4322d97c6966b523b54cf88 +TEST= 348 +KEY= 3fc9cd7847ff49d73881cd245bab83e1b3c24de1e3441b54 +IV= 7d25f4ee8b874e2d772082d40730809c +CT= a17c6802f4322d97c6966b523b54cf88 +PT= cbec825d143bf30c58b608b58abfb618 +TEST= 349 +KEY= d4464b5cd3cfad06f36d4f794f9070edeb74455469fbad4c +IV= 93d0e88641960f8eeb8f86249430e4d1 +CT= cbec825d143bf30c58b608b58abfb618 +PT= d7a8e224daa4db7629790d3d4d5a8560 +TEST= 350 +KEY= 73dd2da38114d0bd24c5ad5d9534ab9bc20d486924a1282c +IV= 3e6b8f8084baa391a79b66ff52db7dbb +CT= d7a8e224daa4db7629790d3d4d5a8560 +PT= eb7ead5cf27ba091def8d7839efd7c90 +TEST= 351 +KEY= cda609eb23bb90ebcfbb0001674f0b0a1cf59feaba5c54bc +IV= 8eee61573b01f1e4be7b2448a2af4056 +CT= eb7ead5cf27ba091def8d7839efd7c90 +PT= 2efa41b666ecbbb1d699c1fb8ca9e175 +TEST= 352 +KEY= 768fcc098b8f48ffe14141b701a3b0bbca6c5e1136f5b5c9 +IV= 60bc671273707e17bb29c5e2a834d814 +CT= 2efa41b666ecbbb1d699c1fb8ca9e175 +PT= 44d7245914cf3bf73831d4225bd32fdd +TEST= 353 +KEY= 91f2ffa6bb520fd1a59665ee156c8b4cf25d8a336d269a14 +IV= 21187fbcfc5e01bee77d33af30dd472e +CT= 44d7245914cf3bf73831d4225bd32fdd +PT= e9fa049c77c326a4f03d2c9e740de4a1 +TEST= 354 +KEY= 2fc9c39b5dbc560e4c6c617262afade80260a6ad192b7eb5 +IV= 72912e59a0095846be3b3c3de6ee59df +CT= e9fa049c77c326a4f03d2c9e740de4a1 +PT= 9a62281465c72fdaa73e00e343a99bc3 +TEST= 355 +KEY= f401ed3768bc72d4d60e496607688232a55ea64e5a82e576 +IV= 88022668fe843060dbc82eac350024da +CT= 9a62281465c72fdaa73e00e343a99bc3 +PT= fad9ada4b98a4141a2857f93f6f71deb +TEST= 356 +KEY= 1ad741bdf8a18d8e2cd7e4c2bee2c37307dbd9ddac75f89d +IV= f98fecc470c84631eed6ac8a901dff5a +CT= fad9ada4b98a4141a2857f93f6f71deb +PT= 630453171fee434834490229830e1c1a +TEST= 357 +KEY= 24f7b99681335ead4fd3b7d5a10c803b3392dbf42f7be487 +IV= 5d69b4d81847dabd3e20f82b7992d323 +CT= 630453171fee434834490229830e1c1a +PT= de613189001598ba6ae67f259f9fd349 +TEST= 358 +KEY= 60e401e96083ff2291b2865ca11918815974a4d1b0e437ce +IV= aade84ad4127fcda4413b87fe1b0a18f +CT= de613189001598ba6ae67f259f9fd349 +PT= ca18925634072dec80f2f724a0f24235 +TEST= 359 +KEY= 66831e7f4fc51db95baa140a951e356dd98653f5101675fb +IV= 1c1e2f698c5dd62006671f962f46e29b +CT= ca18925634072dec80f2f724a0f24235 +PT= b289f06551c56b77f5cdf7b321e0e8e3 +TEST= 360 +KEY= 48fb1a5b41f634d5e923e46fc4db5e1a2c4ba44631f69d18 +IV= 6a872620ed13a14b2e7804240e33296c +CT= b289f06551c56b77f5cdf7b321e0e8e3 +PT= 13b1f93dd388a192d6fb836c90e0e022 +TEST= 361 +KEY= f13fa6e33170f596fa921d521753ff88fab0272aa1167d3a +IV= 40bf714207da180bb9c4bcb87086c143 +CT= 13b1f93dd388a192d6fb836c90e0e022 +PT= 298b7b19a27ea1be9574588a5885f64b +TEST= 362 +KEY= ce171639a4dda77dd319664bb52d5e366fc47fa0f9938b71 +IV= 8fb32729166e154f3f28b0da95ad52eb +CT= 298b7b19a27ea1be9574588a5885f64b +PT= 11fa000c73485654a8918360df3c1f5e +TEST= 363 +KEY= 9322b0e9ae4d6b20c2e36647c6650862c755fcc026af942f +IV= 809de75b169c56be5d35a6d00a90cc5d +CT= 11fa000c73485654a8918360df3c1f5e +PT= 05533e642958e2f6f29bb1848be225cb +TEST= 364 +KEY= 21b86d89874d627fc7b05823ef3dea9435ce4d44ad4db1e4 +IV= 81cf24c876471695b29add602900095f +CT= 05533e642958e2f6f29bb1848be225cb +PT= 613db485b9565b4889887282a3c8cfb5 +TEST= 365 +KEY= 6e5ad95bdda04d12a68deca6566bb1dcbc463fc60e857e51 +IV= 7e3ac16d28733bd84fe2b4d25aed2f6d +CT= 613db485b9565b4889887282a3c8cfb5 +PT= 0cddda3b3375430b601ba1ccbd567284 +TEST= 366 +KEY= 807937b80e55e814aa50369d651ef2d7dc5d9e0ab3d30cd5 +IV= c49324ee3a928684ee23eee3d3f5a506 +CT= 0cddda3b3375430b601ba1ccbd567284 +PT= c47a6e22a123ab6397f9c2affa6d45ab +TEST= 367 +KEY= 20b3595efe3d3da76e2a58bfc43d59b44ba45ca549be497e +IV= b188e4d3a2ac3f42a0ca6ee6f068d5b3 +CT= c47a6e22a123ab6397f9c2affa6d45ab +PT= 71592afca1feee8ab6d6cef22c14a21d +TEST= 368 +KEY= a97ead081edf66d11f73724365c3b73efd72925765aaeb63 +IV= 0dff90fa3722469289cdf456e0e25b76 +CT= 71592afca1feee8ab6d6cef22c14a21d +PT= f4e0c4bcf8b386cf1bd457bd1fb65646 +TEST= 369 +KEY= da90448d67d59e3ceb93b6ff9d7031f1e6a6c5ea7a1cbd25 +IV= 154db6488872217073eee985790af8ed +CT= f4e0c4bcf8b386cf1bd457bd1fb65646 +PT= 9ed1119909322c280fe92b7840792605 +TEST= 370 +KEY= cf62d3016c8507f17542a76694421dd9e94fee923a659b20 +IV= ed45f0a7d33fc08515f2978c0b5099cd +CT= 9ed1119909322c280fe92b7840792605 +PT= f812615f1be701e74fceefc288303c7c +TEST= 371 +KEY= c2681849c663e45a8d50c6398fa51c3ea6810150b255a75c +IV= 19e09027253115100d0acb48aae6e3ab +CT= f812615f1be701e74fceefc288303c7c +PT= 25897c51c5fedbfdc630bf8e9f3b2875 +TEST= 372 +KEY= f47c452077541ceea8d9ba684a5bc7c360b1bede2d6e8f29 +IV= 2c2ee28c518163df36145d69b137f8b4 +CT= 25897c51c5fedbfdc630bf8e9f3b2875 +PT= 9929e5e9f0ca00d0e02022e2fcfafc3f +TEST= 373 +KEY= f7bf8679c8d86e2c31f05f81ba91c71380919c3cd1947316 +IV= fcf0c5d85049463103c3c359bf8c72c2 +CT= 9929e5e9f0ca00d0e02022e2fcfafc3f +PT= 3b603a3fdaa669e7c965708c9789e329 +TEST= 374 +KEY= 9312eda0b14017910a9065be6037aef449f4ecb0461d903f +IV= 364cdacf5762b18864ad6bd9799879bd +CT= 3b603a3fdaa669e7c965708c9789e329 +PT= ac33f7b1a778c36617668c98e20b318a +TEST= 375 +KEY= d5bc989407d78d82a6a3920fc74f6d925e926028a416a1b5 +IV= 5fb00506c71711d046ae7534b6979a13 +CT= ac33f7b1a778c36617668c98e20b318a +PT= b408af5509ef45e0aedf12570fae3651 +TEST= 376 +KEY= 6bbb14591c12578112ab3d5acea02872f04d727fabb897e4 +IV= d41f58f192cf60d6be078ccd1bc5da03 +CT= b408af5509ef45e0aedf12570fae3651 +PT= 39eb055e027ac0dea5992b7ba3753ab5 +TEST= 377 +KEY= 3f71566ea7d07ebf2b403804ccdae8ac55d4590408cdad51 +IV= 7e495dec2224696554ca4237bbc2293e +CT= 39eb055e027ac0dea5992b7ba3753ab5 +PT= 832b01d2ad4f0ee077244cf9b6abe31c +TEST= 378 +KEY= 0bdc563ce47527d1a86b39d66195e64c22f015fdbe664e4d +IV= 4fe13e98163c3f7734ad005243a5596e +CT= 832b01d2ad4f0ee077244cf9b6abe31c +PT= 926eb7e17fa4262d1d390d83cdac6fb2 +TEST= 379 +KEY= 07d4d606747858b63a058e371e31c0613fc9187e73ca21ff +IV= 12d459160dcffefe0c08803a900d7f67 +CT= 926eb7e17fa4262d1d390d83cdac6fb2 +PT= dbfbc3313f86c26ba54b9f69ba93c665 +TEST= 380 +KEY= 84be014d4bfa8acce1fe4d0621b7020a9a828717c959e79a +IV= 179322b7d19f3a38836ad74b3f82d27a +CT= dbfbc3313f86c26ba54b9f69ba93c665 +PT= 39b00a1a655b298f56271b2bdba6b16b +TEST= 381 +KEY= a921f537f5f324cad84e471c44ec2b85cca59c3c12ff56f1 +IV= d4b03d3ab6ff79d22d9ff47abe09ae06 +CT= 39b00a1a655b298f56271b2bdba6b16b +PT= 7c5dabbf7c7951808dcd35db2617b763 +TEST= 382 +KEY= 3bb6aaceeec21a9fa413eca338957a054168a9e734e8e192 +IV= 5c92a3c4c3c8567792975ff91b313e55 +CT= 7c5dabbf7c7951808dcd35db2617b763 +PT= bd88fb3b815415503d4f9264afea7887 +TEST= 383 +KEY= 008f402c3524bca8199b1798b9c16f557c273b839b029915 +IV= 08360d06e31b3aa43b39eae2dbe6a637 +CT= bd88fb3b815415503d4f9264afea7887 +PT= b2813afbc477618f4c6a436c97aa26f2 +TEST= 384 +KEY= 8ab9f9fc4ee8b2d4ab1a2d637db60eda304d78ef0ca8bfe7 +IV= dcf7ef19f68916268a36b9d07bcc0e7c +CT= b2813afbc477618f4c6a436c97aa26f2 +PT= 1e96d52e46b1d73eb00778b203946f28 +TEST= 385 +KEY= ca9d4ce917399619b58cf84d3b07d9e4804a005d0f3cd0cf +IV= 63a112db63ddecb54024b51559d124cd +CT= 1e96d52e46b1d73eb00778b203946f28 +PT= c03d770fe4b1733c5e59dd68f0060d5a +TEST= 386 +KEY= 1d8268f833fc772575b18f42dfb6aad8de13dd35ff3add95 +IV= 8b7ac769f85ba650d71f241124c5e13c +CT= c03d770fe4b1733c5e59dd68f0060d5a +PT= 6495a8a3667dede2cab58ba3b2f7034e +TEST= 387 +KEY= cccee884786af28a112427e1b9cb473a14a656964dcddedb +IV= 280c5bd88e3b88acd14c807c4b9685af +CT= 6495a8a3667dede2cab58ba3b2f7034e +PT= 4cc3c2ac85ebd619e708988c9fec60c6 +TEST= 388 +KEY= 8b85284b2b06874d5de7e54d3c209123f3aece1ad221be1d +IV= 62e112946391fefb474bc0cf536c75c7 +CT= 4cc3c2ac85ebd619e708988c9fec60c6 +PT= 1522371fd5d53919f52cd97258cebda7 +TEST= 389 +KEY= b2ebbe81cf234a7e48c5d252e9f5a83a068217688aef03ba +IV= 8a936bae971c0c9f396e96cae425cd33 +CT= 1522371fd5d53919f52cd97258cebda7 +PT= 4aa882dcb39aa79e8439e9ece9f4f3bd +TEST= 390 +KEY= 043b9fddec299802026d508e5a6f0fa482bbfe84631bf007 +IV= 6fa7fcdba3b1bca5b6d0215c230ad27c +CT= 4aa882dcb39aa79e8439e9ece9f4f3bd +PT= 28c1e45d8d01ad148fa7d7c4f41ace04 +TEST= 391 +KEY= 1074f9bd3ffd4eaf2aacb4d3d76ea2b00d1c294097013e03 +IV= 1210baf1d69b23fe144f6660d3d4d6ad +CT= 28c1e45d8d01ad148fa7d7c4f41ace04 +PT= 3abe04fc59c3bdf9d7721902defcb439 +TEST= 392 +KEY= d97f3440e3684d291012b02f8ead1f49da6e304249fd8a3a +IV= c271800852e147d5c90bcdfddc950386 +CT= 3abe04fc59c3bdf9d7721902defcb439 +PT= 3a563a6a047e16123b289b047bb54c4e +TEST= 393 +KEY= 49a10e68a38b02f42a448a458ad3095be146ab463248c674 +IV= 9db6856c7e01cf3690de3a2840e34fdd +CT= 3a563a6a047e16123b289b047bb54c4e +PT= f8cb54b8d16274e9a20c0f026866e52f +TEST= 394 +KEY= 9dd96dcfd4a1b11fd28fdefd5bb17db2434aa4445a2e235b +IV= 233c069312d97a03d47863a7772ab3eb +CT= f8cb54b8d16274e9a20c0f026866e52f +PT= 0302d25c39bf21f67f1af2e1951d40f9 +TEST= 395 +KEY= 746e55928d7e549dd18d0ca1620e5c443c5056a5cf3363a2 +IV= b6086c5feee9a078e9b7385d59dfe582 +CT= 0302d25c39bf21f67f1af2e1951d40f9 +PT= 721192a3a5140dd63d93e0d6acc4a4b8 +TEST= 396 +KEY= 7e6fc505eaab07e4a39c9e02c71a519201c3b67363f7c71a +IV= 9828a03f0adce33e0a01909767d55379 +CT= 721192a3a5140dd63d93e0d6acc4a4b8 +PT= 1c0f7440ef41ff18e263392741ad9d8b +TEST= 397 +KEY= d13ad442cae026c3bf93ea42285bae8ae3a08f54225a5a91 +IV= 4fc707a846b4469aaf551147204b2127 +CT= 1c0f7440ef41ff18e263392741ad9d8b +PT= 442f978615ac3983aa5abea81ad1aca6 +TEST= 398 +KEY= 043a4effcd44eeb1fbbc7dc43df7970949fa31fc388bf637 +IV= 05d58b4a88a961afd5009abd07a4c872 +CT= 442f978615ac3983aa5abea81ad1aca6 +PT= e75c29413a33aa1210f36aadec02fcee +TEST= 399 +KEY= 81492e2c6296c9341ce0548507c43d1b59095b51d4890ad9 +IV= d89794eaa1791507857360d3afd22785 +CT= e75c29413a33aa1210f36aadec02fcee +PT= 6342bfddd2f6610350458b6695463484 diff --git a/flint/test/testvals/cbcmd48.txt b/flint/test/testvals/cbcmd48.txt new file mode 100644 index 0000000..a644a9d --- /dev/null +++ b/flint/test/testvals/cbcmd48.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 00000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= 4804e1818fe6297519a3e88c57310413 +TEST= 1 +KEY= 098e3797788ea3bcd5477bf1660373944804e1818fe6297519a3e88c57310413 +IV= 098e3797788ea3bcd5477bf166037394 +CT= 4804e1818fe6297519a3e88c57310413 +PT= d36c27ebb8fa0bc9fa368df850fd45fb +TEST= 2 +KEY= d949e143f98bde24bd40a256f9e369339b68c66a371c22bce395657407cc41e8 +IV= d0c7d6d481057d986807d9a79fe01aa7 +CT= d36c27ebb8fa0bc9fa368df850fd45fb +PT= ebcb4dc84155682856d94b442bc597ee +TEST= 3 +KEY= 296352da0158e197ebc80771ec1ecc7d70a38ba276494a94b54c2e302c09d606 +IV= f02ab399f8d33fb35688a52715fda54e +CT= ebcb4dc84155682856d94b442bc597ee +PT= 23aa6a6b4be8c04e19707ca330804c4e +TEST= 4 +KEY= 5d3e9e2ea4deddb65a58dadb5b9679bc5309e1c93da18adaac3c52931c899a48 +IV= 745dccf4a5863c21b190ddaab788b5c1 +CT= 23aa6a6b4be8c04e19707ca330804c4e +PT= 9b1aa0f33416484ba68740e821f95cd3 +TEST= 5 +KEY= e35024184cca14687db19e13093d2a31c813413a09b7c2910abb127b3d70c69b +IV= be6eba36e814c9de27e944c852ab538d +CT= 9b1aa0f33416484ba68740e821f95cd3 +PT= 8a8c6adf453cb7a2fc4f3690ff7c6f23 +TEST= 6 +KEY= fdc6eb83ff93ba06de2d09cb33f05406429f2be54c8b7533f6f424ebc20ca9b8 +IV= 1e96cf9bb359ae6ea39c97d83acd7e37 +CT= 8a8c6adf453cb7a2fc4f3690ff7c6f23 +PT= b104182a3d85b857fb342bd06063e989 +TEST= 7 +KEY= 7177668bac9407fb2835524d58f1311ef39b33cf710ecd640dc00f3ba26f4031 +IV= 8cb18d085307bdfdf6185b866b016518 +CT= b104182a3d85b857fb342bd06063e989 +PT= 68ad7eb507faee8ff54e5b7eb4314208 +TEST= 8 +KEY= 790ae8470b39a60e9f32f4025b2251849b364d7a76f423ebf88e5445165e0239 +IV= 087d8ecca7ada1f5b707a64f03d3609a +CT= 68ad7eb507faee8ff54e5b7eb4314208 +PT= 99736d55b2730fdbc4fcd9128a3e6f06 +TEST= 9 +KEY= 4eaf05ac15913059b6b0e43efa7adc1c0245202fc4872c303c728d579c606d3f +IV= 37a5edeb1ea896572982103ca1588d98 +CT= 99736d55b2730fdbc4fcd9128a3e6f06 +PT= df326cee98ee253c855d171d93aa9455 +TEST= 10 +KEY= 55ee1ccdba5a04040f4212dfbf6abc89dd774cc15c69090cb92f9a4a0fcaf96a +IV= 1b411961afcb345db9f2f6e145106095 +CT= df326cee98ee253c855d171d93aa9455 +PT= b4e41bd5257cd7af0a6f020bee5f4067 +TEST= 11 +KEY= 6190a91725b7d4e8dd42f3f3b4e42e14699357147915dea3b3409841e195b90d +IV= 347eb5da9fedd0ecd200e12c0b8e929d +CT= b4e41bd5257cd7af0a6f020bee5f4067 +PT= 3608f41ca4c677e74f48b113d9b336b0 +TEST= 12 +KEY= 0a93e973ccbac75c9c0aa05502a43e945f9ba308ddd3a944fc08295238268fbd +IV= 6b034064e90d13b4414853a6b6401080 +CT= 3608f41ca4c677e74f48b113d9b336b0 +PT= fb54dbb9c0c7176c4c9e1e4e6688b570 +TEST= 13 +KEY= 584ccaedd52f491a935d892ad132f75aa4cf78b11d14be28b096371c5eae3acd +IV= 52df239e19958e460f57297fd396c9ce +CT= fb54dbb9c0c7176c4c9e1e4e6688b570 +PT= f40a6a6ae95e9d163d88aae9a2d359bc +TEST= 14 +KEY= 0dd784e96cab96d702dd3972e95317fd50c512dbf44a233e8d1e9df5fc7d6371 +IV= 559b4e04b984dfcd9180b0583861e0a7 +CT= f40a6a6ae95e9d163d88aae9a2d359bc +PT= 0fe04b8bb249e49e24feb6ffe106121c +TEST= 15 +KEY= 2bc3a4ebd80215f0130ec1f76821bc515f2559504603c7a0a9e02b0a1d7b716d +IV= 26142002b4a9832711d3f8858172abac +CT= 0fe04b8bb249e49e24feb6ffe106121c +PT= eba4ef8d541919a0d0947359344d61c9 +TEST= 16 +KEY= 0b5856be9a78457868f7cf9c9c58ef7ab481b6dd121ade0079745853293610a4 +IV= 209bf255427a50887bf90e6bf479532b +CT= eba4ef8d541919a0d0947359344d61c9 +PT= 06484c36a29bd3ca7cbab7fbea47313b +TEST= 17 +KEY= c004f13c83aa1fd5c2a592d27b47c437b2c9faebb0810dca05ceefa8c371219f +IV= cb5ca78219d25aadaa525d4ee71f2b4d +CT= 06484c36a29bd3ca7cbab7fbea47313b +PT= 376157b7db3b027980c5ef0e88b3f9ef +TEST= 18 +KEY= ad89203cad17908c4f44f3fd2d61505385a8ad5c6bba0fb3850b00a64bc2d870 +IV= 6d8dd1002ebd8f598de1612f56269464 +CT= 376157b7db3b027980c5ef0e88b3f9ef +PT= 756783c2f0ee73bbd81b908f660aa6f7 +TEST= 19 +KEY= fbe990a6247eabc0cd5090df0c566e01f0cf2e9e9b547c085d1090292dc87e87 +IV= 5660b09a89693b4c8214632221373e52 +CT= 756783c2f0ee73bbd81b908f660aa6f7 +PT= 6cc64b773ecdfa9749db33197f7ea0ab +TEST= 20 +KEY= fec46ad20da3e667b26d79b11a82a40f9c0965e9a599869f14cba33052b6de2c +IV= 052dfa7429dd4da77f3de96e16d4ca0e +CT= 6cc64b773ecdfa9749db33197f7ea0ab +PT= 9230e4dca927e2f8e617a2ebc4f11477 +TEST= 21 +KEY= f4396b035e4e1bd914877124d1cd4b370e3981350cbe6467f2dc01db9647ca5b +IV= 0afd01d153edfdbea6ea0895cb4fef38 +CT= 9230e4dca927e2f8e617a2ebc4f11477 +PT= 6acd9f3939a86ee4236a3c060d2f5c3c +TEST= 22 +KEY= 49c90e620094d6a85e75bd886fafe79264f41e0c35160a83d1b63ddd9b689667 +IV= bdf065615edacd714af2ccacbe62aca5 +CT= 6acd9f3939a86ee4236a3c060d2f5c3c +PT= e5f4f050827f69b60b417063ac1060e4 +TEST= 23 +KEY= 1aed4d36938ab2d5d884ef2f106d2cef8100ee5cb7696335daf74dbe3778f683 +IV= 53244354931e647d86f152a77fc2cb7d +CT= e5f4f050827f69b60b417063ac1060e4 +PT= 5ce4b0b3c32700b6b887e05a88ee0239 +TEST= 24 +KEY= ef14b937f6e0f19ac8adbd208dd60ee5dde45eef744e63836270ade4bf96f4ba +IV= f5f9f401656a434f1029520f9dbb220a +CT= 5ce4b0b3c32700b6b887e05a88ee0239 +PT= 4794284e2bb56a47332e84ad7a2006a2 +TEST= 25 +KEY= 182581a233332ddcd43c25af9aa3ad7f9a7076a15ffb09c4515e2949c5b6f218 +IV= f7313895c5d3dc461c91988f1775a39a +CT= 4794284e2bb56a47332e84ad7a2006a2 +PT= c8ae2caa7c257508c3ab75be28d2602f +TEST= 26 +KEY= abe7fe236e28332ae7a74a9ea03b97a952de5a0b23de7ccc92f55cf7ed649237 +IV= b3c27f815d1b1ef6339b6f313a983ad6 +CT= c8ae2caa7c257508c3ab75be28d2602f +PT= a9fd4b9d4833b647ff60f8013c3b5b9d +TEST= 27 +KEY= 08248bdc5f9186dcd65da6344a10c57efb2311966bedca8b6d95a4f6d15fc9aa +IV= a3c375ff31b9b5f631faecaaea2b52d7 +CT= a9fd4b9d4833b647ff60f8013c3b5b9d +PT= c871d7b4c0167dcfdd79af1deac49d4f +TEST= 28 +KEY= bf29fb1b11aa7db8742ff06458c384853352c622abfbb744b0ec0beb3b9b54e5 +IV= b70d70c74e3bfb64a272565012d341fb +CT= c871d7b4c0167dcfdd79af1deac49d4f +PT= e2de7bac726c404fc7ba5099e39409ca +TEST= 29 +KEY= 1810253ddf0cc5ece2381fb4c2beedccd18cbd8ed997f70b77565b72d80f5d2f +IV= a739de26cea6b8549617efd09a7d6949 +CT= e2de7bac726c404fc7ba5099e39409ca +PT= d4a8257110ef7ffe2a1f026b28d7483a +TEST= 30 +KEY= f343d1ec9aeb200b65db4aa369f6a47e052498ffc97888f55d495919f0d81515 +IV= eb53f4d145e7e5e787e35517ab4849b2 +CT= d4a8257110ef7ffe2a1f026b28d7483a +PT= 9ea25895cfeaead224095c4687726d06 +TEST= 31 +KEY= 86a93b0f219e1ffebc0e4ba0334046aa9b86c06a069262277940055f77aa7813 +IV= 75eaeae3bb753ff5d9d501035ab6e2d4 +CT= 9ea25895cfeaead224095c4687726d06 +PT= 5c5dd66e7ad197da86844d53c8acea0e +TEST= 32 +KEY= 2278c61356cb0a951dae3b6dc76868c9c7db16047c43f5fdffc4480cbf06921d +IV= a4d1fd1c7755156ba1a070cdf4282e63 +CT= 5c5dd66e7ad197da86844d53c8acea0e +PT= 011959d35c8fe620e1c49d1804912f26 +TEST= 33 +KEY= e1972a31acf850a22cbc592af6caf6f0c6c24fd720cc13dd1e00d514bb97bd3b +IV= c3efec22fa335a373112624731a29e39 +CT= 011959d35c8fe620e1c49d1804912f26 +PT= 895dda7bb43dc3060b41da70cae4d2ed +TEST= 34 +KEY= bb4a76b5e8fd3820cc5d4a44f527e6704f9f95ac94f1d0db15410f6471736fd6 +IV= 5add5c8444056882e0e1136e03ed1080 +CT= 895dda7bb43dc3060b41da70cae4d2ed +PT= 94e8bbc942b4127a0a8ebec59319cf57 +TEST= 35 +KEY= 4d98c60f0fa316b2da3d11cfb3b9fe0cdb772e65d645c2a11fcfb1a1e26aa081 +IV= f6d2b0bae75e2e9216605b8b469e187c +CT= 94e8bbc942b4127a0a8ebec59319cf57 +PT= 274fe85e229321d4a6b2e9d4f0d3830f +TEST= 36 +KEY= a9fc5ac4a7b3550bc34e4ba94c0d328bfc38c63bf4d6e375b97d587512b9238e +IV= e4649ccba81043b919735a66ffb4cc87 +CT= 274fe85e229321d4a6b2e9d4f0d3830f +PT= 256ac08e72d79b0cb7457b26769ac226 +TEST= 37 +KEY= 1c44def03398188ac1b2ef6a6e91a33fd95206b5860178790e3823536423e1a8 +IV= b5b88434942b4d8102fca4c3229c91b4 +CT= 256ac08e72d79b0cb7457b26769ac226 +PT= 366d17a14ca0fc192dbb731c1c305874 +TEST= 38 +KEY= 3d80b92c01f9721032366b20d97dc097ef3f1114caa184602383504f7813b9dc +IV= 21c467dc32616a9af384844ab7ec63a8 +CT= 366d17a14ca0fc192dbb731c1c305874 +PT= 000b4a6054663874ecae310144ba9377 +TEST= 39 +KEY= 48dd38dc16a4ce76338c95a866c1c795ef345b749ec7bc14cf2d614e3ca92aab +IV= 755d81f0175dbc6601bafe88bfbc0702 +CT= 000b4a6054663874ecae310144ba9377 +PT= 32b32d65566626d794fb296ca816b0a8 +TEST= 40 +KEY= c62efa02f23fe796799bf9151fbfd8d7dd877611c8a19ac35bd6482294bf9a03 +IV= 8ef3c2dee49b29e04a176cbd797e1f42 +CT= 32b32d65566626d794fb296ca816b0a8 +PT= d743a090101b1baf5b83e8c06517e193 +TEST= 41 +KEY= 91400a96eeada906abd4c3f6863ce4750ac4d681d8ba816c0055a0e2f1a87b90 +IV= 576ef0941c924e90d24f3ae399833ca2 +CT= d743a090101b1baf5b83e8c06517e193 +PT= 2de61760bee8f811b3feb44d2c566db0 +TEST= 42 +KEY= 9983ead4bf987e39644d7d0963f93db62722c1e16652797db3ab14afddfe1620 +IV= 08c3e0425135d73fcf99beffe5c5d9c3 +CT= 2de61760bee8f811b3feb44d2c566db0 +PT= e97598effed4128dcccdd7a04d8405e1 +TEST= 43 +KEY= b72929d2d02a00d36e7c3bd11cdb9fa4ce57590e98866bf07f66c30f907a13c1 +IV= 2eaac3066fb27eea0a3146d87f22a212 +CT= e97598effed4128dcccdd7a04d8405e1 +PT= 5983276b92b95898302385f5156b6201 +TEST= 44 +KEY= cc9928e45f7885515986e0d431f3288e97d47e650a3f33684f4546fa851171c0 +IV= 7bb001368f52858237fadb052d28b72a +CT= 5983276b92b95898302385f5156b6201 +PT= abdeff06e04995fd2c5472d05056a0a3 +TEST= 45 +KEY= 59a2d8fced30176b73ff5642bce4a9163c0a8163ea76a6956311342ad547d163 +IV= 953bf018b248923a2a79b6968d178198 +CT= abdeff06e04995fd2c5472d05056a0a3 +PT= e4210d117b05f3eadc8af75d1a80b823 +TEST= 46 +KEY= ffcce373b679de040165054d9eeca460d82b8c729173557fbf9bc377cfc76940 +IV= a66e3b8f5b49c96f729a530f22080d76 +CT= e4210d117b05f3eadc8af75d1a80b823 +PT= 4786111e1b0f2ca78e43cc0d154bc1ea +TEST= 47 +KEY= 36e29d3c942dbc6a12b53088632260649fad9d6c8a7c79d831d80f7ada8ca8aa +IV= c92e7e4f2254626e13d035c5fdcec404 +CT= 4786111e1b0f2ca78e43cc0d154bc1ea +PT= 122dc3b40007ba36bc7e7ee808911dae +TEST= 48 +KEY= 3692660415e53226d2758e60fd6e3f5f8d805ed88a7bc3ee8da67192d21db504 +IV= 0070fb3881c88e4cc0c0bee89e4c5f3b +CT= 122dc3b40007ba36bc7e7ee808911dae +PT= 5e443ec882c1b938c2a4c412d3a92fdf +TEST= 49 +KEY= e3c167b38a29edfbdc37a50f434c7056d3c4601008ba7ad64f02b58001b49adb +IV= d55301b79fccdfdd0e422b6fbe224f09 +CT= 5e443ec882c1b938c2a4c412d3a92fdf +PT= 14a8f43ba8829b134d6bd110e6d43f92 +TEST= 50 +KEY= 8ad38a575e425d347c5b5bfb08a5173cc76c942ba038e1c502696490e760a549 +IV= 6912ede4d46bb0cfa06cfef44be9676a +CT= 14a8f43ba8829b134d6bd110e6d43f92 +PT= 025982911796c2fe34c89157bf2959bd +TEST= 51 +KEY= ae4aba37dd2c3c5109b13c3dd9fcb67ec53516bab7ae233b36a1f5c75849fcf4 +IV= 24993060836e616575ea67c6d159a142 +CT= 025982911796c2fe34c89157bf2959bd +PT= bc658642a8eebec6dbe2a76bcd70799b +TEST= 52 +KEY= 31ac934c58bf87ad1ee4357bbe315175795090f81f409dfded4352ac9539856f +IV= 9fe6297b8593bbfc1755094667cde70b +CT= bc658642a8eebec6dbe2a76bcd70799b +PT= 132ce1cc36efe58a4a53534b962d2d70 +TEST= 53 +KEY= 79f7c18ca600203d404363908749b22f6a7c713429af7877a71001e70314a81f +IV= 485b52c0febfa7905ea756eb3978e35a +CT= 132ce1cc36efe58a4a53534b962d2d70 +PT= 8d2ba39f08ed00beb51543c0fccfa57c +TEST= 54 +KEY= 162a4089a1e46eab5c9592bf1f98bcc2e757d2ab214278c912054227ffdb0d63 +IV= 6fdd810507e44e961cd6f12f98d10eed +CT= 8d2ba39f08ed00beb51543c0fccfa57c +PT= 2e8d05a8a3066094025fe07f3a53a94e +TEST= 55 +KEY= db5f33f93f2b795eda54095937b79e4cc9dad7038244185d105aa258c588a42d +IV= cd7573709ecf17f586c19be6282f228e +CT= 2e8d05a8a3066094025fe07f3a53a94e +PT= d39ec2261c53ad45f91627e1b1f62d22 +TEST= 56 +KEY= cca770427df8cf5350864d4e86e6d8891a4415259e17b518e94c85b9747e890f +IV= 17f843bb42d3b60d8ad24417b15146c5 +CT= d39ec2261c53ad45f91627e1b1f62d22 +PT= f517dc01890c3d300520b6ce343b7f94 +TEST= 57 +KEY= 25f53e7cc6590220e9426296568de496ef53c924171b8828ec6c33774045f69b +IV= e9524e3ebba1cd73b9c42fd8d06b3c1f +CT= f517dc01890c3d300520b6ce343b7f94 +PT= ecbccbb21ac2d07e3ecacd26d42e4444 +TEST= 58 +KEY= 6d4a92c82c6c3d44ced65d76bb33b23e03ef02960dd95856d2a6fe51946bb2df +IV= 48bfacb4ea353f6427943fe0edbe56a8 +CT= ecbccbb21ac2d07e3ecacd26d42e4444 +PT= 6ff7c241a5ff025faa8c4daf5e0950ae +TEST= 59 +KEY= a3d0ab0a0f8edf232d111458d3b8b1c66c18c0d7a8265a09782ab3feca62e271 +IV= ce9a39c223e2e267e3c7492e688b03f8 +CT= 6ff7c241a5ff025faa8c4daf5e0950ae +PT= 3b7e4b74f021f9e995627de42b03d7d8 +TEST= 60 +KEY= a8e2d59cf188cda75c80fa49889f7ee357668ba35807a3e0ed48ce1ae16135a9 +IV= 0b327e96fe0612847191ee115b27cf25 +CT= 3b7e4b74f021f9e995627de42b03d7d8 +PT= 6759c15ed1049a51953e814c2445f3c6 +TEST= 61 +KEY= 092010b28bd3c8e59d09ce85169190bb303f4afd890339b178764f56c524c66f +IV= a1c2c52e7a5b0542c18934cc9e0eee58 +CT= 6759c15ed1049a51953e814c2445f3c6 +PT= 05f681cb7984491e2ce5b1025f860beb +TEST= 62 +KEY= 538e3068e1059fe89c27d5f19405274835c9cb36f08770af5493fe549aa2cd84 +IV= 5aae20da6ad6570d012e1b748294b7f3 +CT= 05f681cb7984491e2ce5b1025f860beb +PT= e046f5b143ceeac44ef520f2c3bfa96e +TEST= 63 +KEY= 78b5d2551099875910844a17abbacd64d58f3e87b3499a6b1a66dea6591d64ea +IV= 2b3be23df19c18b18ca39fe63fbfea2c +CT= e046f5b143ceeac44ef520f2c3bfa96e +PT= 0f508dd1bcc6c520a81ae7ec75361179 +TEST= 64 +KEY= 8d6e7e66f496c358a369ef7c49d117a3dadfb3560f8f5f4bb27c394a2c2b7593 +IV= f5dbac33e40f4401b3eda56be26bdac7 +CT= 0f508dd1bcc6c520a81ae7ec75361179 +PT= bae114fff19fd11336d454bf0ff6954d +TEST= 65 +KEY= 781164dd6f90037e9896672fd24f1af6603ea7a9fe108e5884a86df523dde0de +IV= f57f1abb9b06c0263bff88539b9e0d55 +CT= bae114fff19fd11336d454bf0ff6954d +PT= fe73ce62c227459729e8fdc9116ec6bb +TEST= 66 +KEY= 9268d6c0e8de5afbcce137eade6293e49e4d69cb3c37cbcfad40903c32b32665 +IV= ea79b21d874e5985547750c50c2d8912 +CT= fe73ce62c227459729e8fdc9116ec6bb +PT= b13971219c12c12a8308213759196b0d +TEST= 67 +KEY= 701eb5aef8262d8634b53af1768ed68e2f7418eaa0250ae52e48b10b6baa4d68 +IV= e276636e10f8777df8540d1ba8ec456a +CT= b13971219c12c12a8308213759196b0d +PT= 4f5a36173c16ed45f5d36b9d1aed84ff +TEST= 68 +KEY= 40d027792516e1fe962f63b9c939677c602e2efd9c33e7a0db9bda967147c997 +IV= 30ce92d7dd30cc78a29a5948bfb7b1f2 +CT= 4f5a36173c16ed45f5d36b9d1aed84ff +PT= 9fb89d6fefe606058fe40b5492643596 +TEST= 69 +KEY= caafc0dd2e4fc86ac19b40bc34f14630ff96b39273d5e1a5547fd1c2e323fc01 +IV= 8a7fe7a40b59299457b42305fdc8214c +CT= 9fb89d6fefe606058fe40b5492643596 +PT= f6d0717f197cbae383b55117fcbe07ac +TEST= 70 +KEY= ce03d67b6dab9cfaa0c20129475620230946c2ed6aa95b46d7ca80d51f9dfbad +IV= 04ac16a643e454906159419573a76613 +CT= f6d0717f197cbae383b55117fcbe07ac +PT= 7747114ff82f8c7568be51912cfdb51a +TEST= 71 +KEY= ddcedd32e5f0d26f7707dae453288b537e01d3a29286d733bf74d14433604eb7 +IV= 13cd0b49885b4e95d7c5dbcd147eab70 +CT= 7747114ff82f8c7568be51912cfdb51a +PT= e75313a8dfa7eb0ad1664b14d2dbe284 +TEST= 72 +KEY= 6b032958c3379bd4bec22cd4271eb4589952c00a4d213c396e129a50e1bbac33 +IV= b6cdf46a26c749bbc9c5f63074363f0b +CT= e75313a8dfa7eb0ad1664b14d2dbe284 +PT= 42fedbdc4f0bd11da42163d76e952dc7 +TEST= 73 +KEY= 1710f6cf86edb5f1364f19ca676ed69bdbac1bd6022aed24ca33f9878f2e81f4 +IV= 7c13df9745da2e25888d351e407062c3 +CT= 42fedbdc4f0bd11da42163d76e952dc7 +PT= 6e0166ba404b3aefacca8e972f087ea5 +TEST= 74 +KEY= 9d9711f138d0c2d1003e2c99bb0f0447b5ad7d6c4261d7cb66f97710a026ff51 +IV= 8a87e73ebe3d772036713553dc61d2dc +CT= 6e0166ba404b3aefacca8e972f087ea5 +PT= 644a1dcfca2ec01c3e8911768837d99e +TEST= 75 +KEY= 1bd7e446fada5507ece26bbb635045e7d1e760a3884f17d758706666281126cf +IV= 8640f5b7c20a97d6ecdc4722d85f41a0 +CT= 644a1dcfca2ec01c3e8911768837d99e +PT= 4e69ae75bd37db8024dbd1a11d6d414e +TEST= 76 +KEY= 3454fd4b259fb4c086288adaff6464cd9f8eced63578cc577cabb7c7357c6781 +IV= 2f83190ddf45e1c76acae1619c34212a +CT= 4e69ae75bd37db8024dbd1a11d6d414e +PT= f63964784ad35374eafc933ac11a48b6 +TEST= 77 +KEY= 97efd593918fb16f2d6889c118c5ed4469b7aaae7fab9f23965724fdf4662f37 +IV= a3bb28d8b41005afab40031be7a18989 +CT= f63964784ad35374eafc933ac11a48b6 +PT= 51cbf7f67a22da909567d67f1919ecef +TEST= 78 +KEY= 481e90bc31903905c08d0e5aef79a514387c5d58058945b30330f282ed7fc3d8 +IV= dff1452fa01f886aede5879bf7bc4850 +CT= 51cbf7f67a22da909567d67f1919ecef +PT= 9ae181de8db65e7e242926091a17d0b1 +TEST= 79 +KEY= 35a4f86146ced63bdcb485b0ae4c205aa29ddc86883f1bcd2719d48bf7681369 +IV= 7dba68dd775eef3e1c398bea4135854e +CT= 9ae181de8db65e7e242926091a17d0b1 +PT= 47e15b5ac96a7fdb805f3b8862d9055f +TEST= 80 +KEY= 5ecf20c5884fdf95c2b7c17d40cd6923e57c87dc41556416a746ef0395b11636 +IV= 6b6bd8a4ce8109ae1e0344cdee814979 +CT= 47e15b5ac96a7fdb805f3b8862d9055f +PT= 1806c474a1ece5d8183e725804fb92c3 +TEST= 81 +KEY= ac473047adf97e75c100cbbd73fa0892fd7a43a8e0b981cebf789d5b914a84f5 +IV= f288108225b6a1e003b70ac0333761b1 +CT= 1806c474a1ece5d8183e725804fb92c3 +PT= 0a0615424dad4efc25ec43b13c672727 +TEST= 82 +KEY= 6620ae39484edd0ec21a3e3f659537ddf77c56eaad14cf329a94deeaad2da3d2 +IV= ca679e7ee5b7a37b031af582166f3f4f +CT= 0a0615424dad4efc25ec43b13c672727 +PT= 551639a520d0d043cad42cb02900d5ef +TEST= 83 +KEY= 04d696bb056cc59492b376cb3a0286eaa26a6f4f8dc41f715040f25a842d763d +IV= 62f638824d22189a50a948f45f97b137 +CT= 551639a520d0d043cad42cb02900d5ef +PT= df906b0e72feacc9b45381b992e23a5a +TEST= 84 +KEY= 0aed1f2a6660bdba660e00137e38c1c97dfa0441ff3ab3b8e41373e316cf4c67 +IV= 0e3b8991630c782ef4bd76d8443a4723 +CT= df906b0e72feacc9b45381b992e23a5a +PT= d477c6287d05c0f83b27b1fd91f5f908 +TEST= 85 +KEY= e0a51b848a913a860fd2c39941c8c3a1a98dc269823f7340df34c21e873ab56f +IV= ea4804aeecf1873c69dcc38a3ff00268 +CT= d477c6287d05c0f83b27b1fd91f5f908 +PT= 6ab7e109c085b0ba7c8a8b76482f9c80 +TEST= 86 +KEY= a8b0500ec0292ef668a03e8293e235bac33a236042bac3faa3be4968cf1529ef +IV= 48154b8a4ab814706772fd1bd22af61b +CT= 6ab7e109c085b0ba7c8a8b76482f9c80 +PT= 71a31000a5763a0c79b6353e39ffbe84 +TEST= 87 +KEY= 34c53c34901b693f4611f20f1dd5125eb2993360e7ccf9f6da087c56f6ea976b +IV= 9c756c3a503247c92eb1cc8d8e3727e4 +CT= 71a31000a5763a0c79b6353e39ffbe84 +PT= b5b377ebebc0b32a5a0c7e2a2504c32a +TEST= 88 +KEY= a13850b9164ef60eb77e06819605ac01072a448b0c0c4adc8004027cd3ee5441 +IV= 95fd6c8d86559f31f16ff48e8bd0be5f +CT= b5b377ebebc0b32a5a0c7e2a2504c32a +PT= b74459d1e7c5cf9106c362572fe9c917 +TEST= 89 +KEY= 37261f6d588ff9028a23319ce02dda71b06e1d5aebc9854d86c7602bfc079d56 +IV= 961e4fd44ec10f0c3d5d371d76287670 +CT= b74459d1e7c5cf9106c362572fe9c917 +PT= 5777a0854a6e00db0b6b199bdd35447a +TEST= 90 +KEY= 085a7b276e58b9175204a87d74b9e78ae719bddfa1a785968dac79b02132d92c +IV= 3f7c644a36d74015d82799e194943dfb +CT= 5777a0854a6e00db0b6b199bdd35447a +PT= 01cc73b6ee44403dfed2c91d6f0dc441 +TEST= 91 +KEY= 61dc99dd0c1470f511d79dcc2541002ae6d5ce694fe3c5ab737eb0ad4e3f1d6d +IV= 6986e2fa624cc9e243d335b151f8e7a0 +CT= 01cc73b6ee44403dfed2c91d6f0dc441 +PT= 8993161cf3e75de836bb2c1955581db6 +TEST= 92 +KEY= aeb68207f1e4395794ba7e28ce9bf7996f46d875bc04984345c59cb41b6700db +IV= cf6a1bdafdf049a2856de3e4ebdaf7b3 +CT= 8993161cf3e75de836bb2c1955581db6 +PT= 2a4d6929ed3a66e71efc40f1840cd649 +TEST= 93 +KEY= dbf8a8aed7b6d7bcfd1b5beec3f01ac0450bb15c513efea45b39dc459f6bd692 +IV= 754e2aa92652eeeb69a125c60d6bed59 +CT= 2a4d6929ed3a66e71efc40f1840cd649 +PT= 596ce09b1176a9fb5a9973086a0e4c12 +TEST= 94 +KEY= 1a61c7f2fb652e256190c0896f800cd61c6751c74048575f01a0af4df5659a80 +IV= c1996f5c2cd3f9999c8b9b67ac701616 +CT= 596ce09b1176a9fb5a9973086a0e4c12 +PT= b57ac41360c13f6831689c311bd0ed2c +TEST= 95 +KEY= fc3828e6a9487698231d11c10c353f2da91d95d42089683730c8337ceeb577ac +IV= e659ef14522d58bd428dd14863b533fb +CT= b57ac41360c13f6831689c311bd0ed2c +PT= f58aa69eebf25943c728fa26524de154 +TEST= 96 +KEY= 9d16cad42d19d1a3b9cb12566745b2765c97334acb7b3174f7e0c95abcf896f8 +IV= 612ee2328451a73b9ad603976b708d5b +CT= f58aa69eebf25943c728fa26524de154 +PT= 4a678fed6c5e5898a47f2dfe9df71df2 +TEST= 97 +KEY= d9a8554717435e69efd4a617ca70b0d216f0bca7a72569ec539fe4a4210f8b0a +IV= 44be9f933a5a8fca561fb441ad3502a4 +CT= 4a678fed6c5e5898a47f2dfe9df71df2 +PT= 38011537a04e6c4a81510899741f2ffc +TEST= 98 +KEY= aa9d9a7b4e187f8d78aaee11967a20a42ef1a990076b05a6d2ceec3d5510a4f6 +IV= 7335cf3c595b21e4977e48065c0a9076 +CT= 38011537a04e6c4a81510899741f2ffc +PT= 6472060f536bc5f83a3c247f63c3580e +TEST= 99 +KEY= 90a5d8cd93f0ae068e8dc72ca5dd6e184a83af9f5400c05ee8f2c84236d3fcf8 +IV= 3a3842b6dde8d18bf627293d33a74ebc +CT= 6472060f536bc5f83a3c247f63c3580e +PT= 08b99b59d0584dac0412796871fe3f27 +TEST= 100 +KEY= 489520777a18d5bf65b85aaea29db3d8423a34c684588df2ece0b12a472dc3df +IV= d830f8bae9e87bb9eb359d820740ddc0 +CT= 08b99b59d0584dac0412796871fe3f27 +PT= e8b8579df9e918b3d24c18e17068ad66 +TEST= 101 +KEY= 69542ee000aceefb5e0eb471f3cd0927aa82635b7db195413eaca9cb37456eb9 +IV= 21c10e977ab43b443bb6eedf5150baff +CT= e8b8579df9e918b3d24c18e17068ad66 +PT= 9b6c3234993f6900b3e572b5a43ca644 +TEST= 102 +KEY= e88c863186548f35df6efb48743b7c1831ee516fe48efc418d49db7e9379c8fd +IV= 81d8a8d186f861ce81604f3987f6753f +CT= 9b6c3234993f6900b3e572b5a43ca644 +PT= e0a2962a02698489813292d33d02d0ab +TEST= 103 +KEY= c9dd7904d060b79b83f97a1fc93e50ded14cc745e6e778c80c7b49adae7b1856 +IV= 2151ff35563438ae5c978157bd052cc6 +CT= e0a2962a02698489813292d33d02d0ab +PT= 10c80b22d8ec54b855e103d6b76c03bc +TEST= 104 +KEY= d208b7a87003a507561fa5c7422a85c5c184cc673e0b2c70599a4a7b19171bea +IV= 1bd5ceaca063129cd5e6dfd88b14d51b +CT= 10c80b22d8ec54b855e103d6b76c03bc +PT= ce88b76cc2223eb68ba9b5852c1921db +TEST= 105 +KEY= 27b0e1bf8ea57e8ad51bc3fa278369780f0c7b0bfc2912c6d233fffe350e3a31 +IV= f5b85617fea6db8d8304663d65a9ecbd +CT= ce88b76cc2223eb68ba9b5852c1921db +PT= 00401eee034a193c86a23152af4b767e +TEST= 106 +KEY= 45e37a710d9e754ee90b7c1dbb894dc20f4c65e5ff630bfa5491ceac9a454c4f +IV= 62539bce833b0bc43c10bfe79c0a24ba +CT= 00401eee034a193c86a23152af4b767e +PT= cef1dc8a618bf71c68720e6eede31eef +TEST= 107 +KEY= b432e78f49d50b045c8b598eea3d4142c1bdb96f9ee8fce63ce3c0c277a652a0 +IV= f1d19dfe444b7e4ab580259351b40c80 +CT= cef1dc8a618bf71c68720e6eede31eef +PT= ef8fb3790627f31e5cbf21b31ff942de +TEST= 108 +KEY= f5ce9c0af13da60d32912620673aee572e320a1698cf0ff8605ce171685f107e +IV= 41fc7b85b8e8ad096e1a7fae8d07af15 +CT= ef8fb3790627f31e5cbf21b31ff942de +PT= 2ef1c697d948d712aa177855b0d56650 +TEST= 109 +KEY= da14d71084f47d87385ef58128c7517f00c3cc814187d8eaca4b9924d88a762e +IV= 2fda4b1a75c9db8a0acfd3a14ffdbf28 +CT= 2ef1c697d948d712aa177855b0d56650 +PT= 0a20e82375680d134fe05ac74e3a0217 +TEST= 110 +KEY= b68f8c980984e2508e9706117256a4a70ae324a234efd5f985abc3e396b07439 +IV= 6c9b5b888d709fd7b6c9f3905a91f5d8 +CT= 0a20e82375680d134fe05ac74e3a0217 +PT= 46af886ab871a3dabdeb32f1738e180b +TEST= 111 +KEY= 078a8955ecb2f6acb249e2db36b660794c4cacc88c9e76233840f112e53e6c32 +IV= b10505cde53614fc3cdee4ca44e0c4de +CT= 46af886ab871a3dabdeb32f1738e180b +PT= 79949181e3d20a3042c1e7bdae73330b +TEST= 112 +KEY= 7cb2a8360ee65417a979d9b5d4a32d2935d83d496f4c7c137a8116af4b4d5f39 +IV= 7b382163e254a2bb1b303b6ee2154d50 +CT= 79949181e3d20a3042c1e7bdae73330b +PT= 12c5e55f6ea47bc44392ae9fb888c1fb +TEST= 113 +KEY= e5835f97c4ff1b007d695dd0e72324a9271dd81601e807d73913b830f3c59ec2 +IV= 9931f7a1ca194f17d410846533800980 +CT= 12c5e55f6ea47bc44392ae9fb888c1fb +PT= fca15ab64a01fa6e89fe41f72a67d9e8 +TEST= 114 +KEY= 50932ff04ccce411aa0541726c1c4cd7dbbc82a04be9fdb9b0edf9c7d9a2472a +IV= b51070678833ff11d76c1ca28b3f687e +CT= fca15ab64a01fa6e89fe41f72a67d9e8 +PT= 7b75ec39f707c3c90691be561ad5cac6 +TEST= 115 +KEY= ecaec5fd6af5f7df2587c1a40cb046ada0c96e99bcee3e70b67c4791c3778dec +IV= bc3dea0d263913ce8f8280d660ac0a7a +CT= 7b75ec39f707c3c90691be561ad5cac6 +PT= 1d3d15ffa0b69efa8e146301411dfa49 +TEST= 116 +KEY= 82f88c3850cc3d111c2125f34840a9a2bdf47b661c58a08a38682490826a77a5 +IV= 6e5649c53a39cace39a6e45744f0ef0f +CT= 1d3d15ffa0b69efa8e146301411dfa49 +PT= 34afb3d6f0bd9acb6954bb96b1067f9e +TEST= 117 +KEY= 702fec9e7f0d2369ff35d4b7a1269ad3895bc8b0ece53a41513c9f06336c083b +IV= f2d760a62fc11e78e314f144e9663371 +CT= 34afb3d6f0bd9acb6954bb96b1067f9e +PT= 899e4c8192661cca7c73cdfbc3dca2f3 +TEST= 118 +KEY= a1df98e4585c1a4c15c42ad0782c925000c584317e83268b2d4f52fdf0b0aac8 +IV= d1f0747a27513925eaf1fe67d90a0883 +CT= 899e4c8192661cca7c73cdfbc3dca2f3 +PT= 3097c0413291e217fb0e3a8a2d908c12 +TEST= 119 +KEY= 9f9082177bf33d8af6131018e1efd49f305244704c12c49cd6416877dd2026da +IV= 3e4f1af323af27c6e3d73ac899c346cf +CT= 3097c0413291e217fb0e3a8a2d908c12 +PT= 6c71968295905f881f95dc8ba481ca72 +TEST= 120 +KEY= b7e5b267edbffd4db4526ba2a1978c105c23d2f2d9829b14c9d4b4fc79a1eca8 +IV= 28753070964cc0c742417bba4078588f +CT= 6c71968295905f881f95dc8ba481ca72 +PT= 96d0ab98dbd0cb94a68fc41bef0b418d +TEST= 121 +KEY= 127faa6c94663fa9008a1fb7a419c036caf3796a025250806f5b70e796aaad25 +IV= a59a180b79d9c2e4b4d87415058e4c26 +CT= 96d0ab98dbd0cb94a68fc41bef0b418d +PT= 9e3e4428a911fb328a9f89d7d5e527db +TEST= 122 +KEY= 1b9493f07e7e5f07473e6997ae15ccdc54cd3d42ab43abb2e5c4f930434f8afe +IV= 09eb399cea1860ae47b476200a0c0cea +CT= 9e3e4428a911fb328a9f89d7d5e527db +PT= 0db5ef3481a9945baf2e499b5cde8ddc +TEST= 123 +KEY= 7b2b8201eef1601c44006a6d7e06ee355978d2762aea3fe94aeab0ab1f910722 +IV= 60bf11f1908f3f1b033e03fad01322e9 +CT= 0db5ef3481a9945baf2e499b5cde8ddc +PT= c0569dd7dcae99859d3987b04ffd8cf0 +TEST= 124 +KEY= b2d7fee25a564fa00cedc8e05bac7f7d992e4fa1f644a66cd7d3371b506c8bd2 +IV= c9fc7ce3b4a72fbc48eda28d25aa9148 +CT= c0569dd7dcae99859d3987b04ffd8cf0 +PT= d8af74b5bb8e632299d32e8dd4dda012 +TEST= 125 +KEY= 5a06c176a290538bc549caa8041539a941813b144dcac54e4e00199684b12bc0 +IV= e8d13f94f8c61c2bc9a402485fb946d4 +CT= d8af74b5bb8e632299d32e8dd4dda012 +PT= 0821fb911ede8cdcd97ddaedccdb7b1c +TEST= 126 +KEY= 1318d23a3a966d16fdeee300571f3a8549a0c08553144992977dc37b486a50dc +IV= 491e134c98063e9d38a729a8530a032c +CT= 0821fb911ede8cdcd97ddaedccdb7b1c +PT= bcb2831af3721c020fc1d683c19aebea +TEST= 127 +KEY= d6d24aa79b3ca4434cce2b1470b4fe18f512439fa066559098bc15f889f0bb36 +IV= c5ca989da1aac955b120c81427abc49d +CT= bcb2831af3721c020fc1d683c19aebea +PT= be869bb3c18eb622ccac81b6f5b62cc4 +TEST= 128 +KEY= 5f62348bcd9adb23a19e683400d968404b94d82c61e8e3b25410944e7c4697f2 +IV= 89b07e2c56a67f60ed504320706d9658 +CT= be869bb3c18eb622ccac81b6f5b62cc4 +PT= c8d3edd549fea614b4f2348f82de5531 +TEST= 129 +KEY= a64795e417b7c9344185f6b0c66c096b834735f9281645a6e0e2a0c1fe98c2c3 +IV= f925a16fda2d1217e01b9e84c6b5612b +CT= c8d3edd549fea614b4f2348f82de5531 +PT= 4049bdbd9c302d8f2e06f10d34317784 +TEST= 130 +KEY= cd1f9ab35436014b0cf7ece9ff98c2bdc30e8844b4266829cee451cccaa9b547 +IV= 6b580f574381c87f4d721a5939f4cbd6 +CT= 4049bdbd9c302d8f2e06f10d34317784 +PT= e1338ea5c5462e8c458e5546fa60324d +TEST= 131 +KEY= 78f7558c14bb5100ce93cd49c22be2d9223d06e1716046a58b6a048a30c9870a +IV= b5e8cf3f408d504bc26421a03db32064 +CT= e1338ea5c5462e8c458e5546fa60324d +PT= 055984aa929f4d45f5812dc719d4ef24 +TEST= 132 +KEY= 2dbc5092c4c7ab427576eba2855e00562764824be3ff0be07eeb294d291d682e +IV= 554b051ed07cfa42bbe526eb4775e28f +CT= 055984aa929f4d45f5812dc719d4ef24 +PT= abc519c4290c69d98bf7ac2a56767202 +TEST= 133 +KEY= 68fa1d8fe36fc5b48a7486fbb34a7b598ca19b8fcaf36239f51c85677f6b1a2c +IV= 45464d1d27a86ef6ff026d5936147b0f +CT= abc519c4290c69d98bf7ac2a56767202 +PT= c825e44799b1739a1f4cb406bbeabedd +TEST= 134 +KEY= a2302849850fd33d4048b898db6c7b0244847fc8534211a3ea503161c481a4f1 +IV= caca35c666601689ca3c3e636826005b +CT= c825e44799b1739a1f4cb406bbeabedd +PT= d24ee8d56ce09afe1061b4016add61f7 +TEST= 135 +KEY= 9b2e669ea4bb938072e6e97b0acf834e96ca971d3fa28b5dfa318560ae5cc506 +IV= 391e4ed721b440bd32ae51e3d1a3f84c +CT= d24ee8d56ce09afe1061b4016add61f7 +PT= 50fecb118eabf93bb97102e9212c883d +TEST= 136 +KEY= a07c5ebac9d0f862ad525c76460b4ba9c6345c0cb1097266434087898f704d3b +IV= 3b5238246d6b6be2dfb4b50d4cc4c8e7 +CT= 50fecb118eabf93bb97102e9212c883d +PT= c370c26bd3805211a4679399dfa4ddcb +TEST= 137 +KEY= 414c776222058d6285574741b2b4d11d05449e6762892077e727141050d490f0 +IV= e13029d8ebd5750028051b37f4bf9ab4 +CT= c370c26bd3805211a4679399dfa4ddcb +PT= 79715a04df9216268c77a152ca96c2f6 +TEST= 138 +KEY= 5e54a416470fe8ba263c0fc88fd884297c35c463bd1b36516b50b5429a425206 +IV= 1f18d374650a65d8a36b48893d6c5534 +CT= 79715a04df9216268c77a152ca96c2f6 +PT= 06df18b5faf35f03fe22e39cae430655 +TEST= 139 +KEY= 98c55cffb53fa72345ef936283f64bb17aeadcd647e86952957256de34015453 +IV= c691f8e9f2304f9963d39caa0c2ecf98 +CT= 06df18b5faf35f03fe22e39cae430655 +PT= 1aed42eb32c4baeaf9946818aa00c324 +TEST= 140 +KEY= b8332b1ee5d6a4e1bbfa20aeae22330560079e3d752cd3b86ce63ec69e019777 +IV= 20f677e150e903c2fe15b3cc2dd478b4 +CT= 1aed42eb32c4baeaf9946818aa00c324 +PT= d276b6a6d480165a944572ef76d4b3e8 +TEST= 141 +KEY= 6e50753a2a0814a778fa2bc773c6a7a2b271289ba1acc5e2f8a34c29e8d5249f +IV= d6635e24cfdeb046c3000b69dde494a7 +CT= d276b6a6d480165a944572ef76d4b3e8 +PT= ba46f59dfadc6ca2cbb7d80e33d7b24b +TEST= 142 +KEY= d8e1763ead728ab8aa2284964be586880837dd065b70a94033149427db0296d4 +IV= b6b10304877a9e1fd2d8af513823212a +CT= ba46f59dfadc6ca2cbb7d80e33d7b24b +PT= fc9b9f7b5120e1d8b2dd58d211eff053 +TEST= 143 +KEY= 458cb146c73342f9d5ee4364c400e8e5f4ac427d0a50489881c9ccf5caed6687 +IV= 9d6dc7786a41c8417fccc7f28fe56e6d +CT= fc9b9f7b5120e1d8b2dd58d211eff053 +PT= 6ad8bcaeff6f0bf9f360ff601c9b7a43 +TEST= 144 +KEY= f1fbe00da1f634acacb6e2f4f15c11179e74fed3f53f436172a93395d6761cc4 +IV= b477514b66c576557958a190355cf9f2 +CT= 6ad8bcaeff6f0bf9f360ff601c9b7a43 +PT= bb6e45d060e186323ac2b50cfb988856 +TEST= 145 +KEY= 3fbc35054fff43657936bb676a5c5d1f251abb0395dec553486b86992dee9492 +IV= ce47d508ee0977c9d58059939b004c08 +CT= bb6e45d060e186323ac2b50cfb988856 +PT= 31b6157397933ee35dee5b40fe7237bb +TEST= 146 +KEY= d49b4e96f8fc2d91fbed3985c53beb8314acae70024dfbb01585ddd9d39ca329 +IV= eb277b93b7036ef482db82e2af67b69c +CT= 31b6157397933ee35dee5b40fe7237bb +PT= efeb82ed91c5c60fb8f910542804b57b +TEST= 147 +KEY= 8d4abc926827f066b4391ff4b3d6ec99fb472c9d93883dbfad7ccd8dfb981652 +IV= 59d1f20490dbddf74fd4267176ed071a +CT= efeb82ed91c5c60fb8f910542804b57b +PT= e30d071737ab9991f000302502be84a6 +TEST= 148 +KEY= 086a14365f781b2faf533b1534f458d2184a2b8aa423a42e5d7cfda8f92692f4 +IV= 8520a8a4375feb491b6a24e18722b44b +CT= e30d071737ab9991f000302502be84a6 +PT= 856af9df9a9fe5038b75c98e0e1c720f +TEST= 149 +KEY= a64de8cf2df04adb60e88c769f7025bc9d20d2553ebc412dd6093426f73ae0fb +IV= ae27fcf9728851f4cfbbb763ab847d6e +CT= 856af9df9a9fe5038b75c98e0e1c720f +PT= d84910f298f91e081480a912b1af32d6 +TEST= 150 +KEY= c52575277a0bd189e2f746fc51ca77844569c2a7a6455f25c2899d344695d22d +IV= 63689de857fb9b52821fca8aceba5238 +CT= d84910f298f91e081480a912b1af32d6 +PT= 57e4a4a2d639d414ed7f82583b4ffa52 +TEST= 151 +KEY= cb9a5219490f7ee31b030ece521c589b128d6605707c8b312ff61f6c7dda287f +IV= 0ebf273e3304af6af9f4483203d62f1f +CT= 57e4a4a2d639d414ed7f82583b4ffa52 +PT= 1cecc8218392f2047c0b70bebfcc5846 +TEST= 152 +KEY= aa6412aac8fc309e6bcdffd1da01b6470e61ae24f3ee793553fd6fd2c2167039 +IV= 61fe40b381f34e7d70cef11f881deedc +CT= 1cecc8218392f2047c0b70bebfcc5846 +PT= ec2b86a04db2b4f41830e5ea035531e3 +TEST= 153 +KEY= eff5bc892e47f4c7ea859969255ac665e24a2884be5ccdc14bcd8a38c14341da +IV= 4591ae23e6bbc459814866b8ff5b7022 +CT= ec2b86a04db2b4f41830e5ea035531e3 +PT= 8a1a8ee6e08f61e99fc37ac177881c8a +TEST= 154 +KEY= d62e9405d7402765e30fdad7a29b2e716850a6625ed3ac28d40ef0f9b6cb5d50 +IV= 39db288cf907d3a2098a43be87c1e814 +CT= 8a1a8ee6e08f61e99fc37ac177881c8a +PT= f21583ac8c5f03c19a1a9b856c97d6e0 +TEST= 155 +KEY= d49f229b7db6973ede6bd14ab20234379a4525ced28cafe94e146b7cda5c8bb0 +IV= 02b1b69eaaf6b05b3d640b9d10991a46 +CT= f21583ac8c5f03c19a1a9b856c97d6e0 +PT= 323191d5997cf0424b7f5501cbd55b17 +TEST= 156 +KEY= 08b1021cd316864ef5b370cbf891fd27a874b41b4bf05fab056b3e7d1189d0a7 +IV= dc2e2087aea011702bd8a1814a93c910 +CT= 323191d5997cf0424b7f5501cbd55b17 +PT= b2bbcc6e54cb33319536a81174b0d73b +TEST= 157 +KEY= 786ae1d89ecc32c8883d984e7dc5fd0a1acf78751f3b6c9a905d966c6539079c +IV= 70dbe3c44ddab4867d8ee8858554002d +CT= b2bbcc6e54cb33319536a81174b0d73b +PT= 6e4adda6895734d891f328c6d0c71467 +TEST= 158 +KEY= e6c7441b75af8701e29376287a126cb07485a5d3966c584201aebeaab5fe13fb +IV= 9eada5c3eb63b5c96aaeee6607d791ba +CT= 6e4adda6895734d891f328c6d0c71467 +PT= 8bed3d2aab5271f90ee5335520e87aa2 +TEST= 159 +KEY= 22d515400072783951742acdf2fa6dc8ff6898f93d3e29bb0f4b8dff95166959 +IV= c412515b75ddff38b3e75ce588e80178 +CT= 8bed3d2aab5271f90ee5335520e87aa2 +PT= d3059ca1b293aa1f52d459643c5fab5c +TEST= 160 +KEY= d6e6a383af38a1cd2889a5f79a23ce512c6d04588fad83a45d9fd49ba949c205 +IV= f433b6c3af4ad9f479fd8f3a68d9a399 +CT= d3059ca1b293aa1f52d459643c5fab5c +PT= c20d8580aca043b0ed2f409eea42c0f0 +TEST= 161 +KEY= aa95a47adecb61aad1a05da0ce6b17bdee6081d8230dc014b0b09405430b02f5 +IV= 7c7307f971f3c067f929f8575448d9ec +CT= c20d8580aca043b0ed2f409eea42c0f0 +PT= 61c0d0081f176c53de83b70608201ee6 +TEST= 162 +KEY= 168a56a528a70354ad74c59a8af33a508fa051d03c1aac476e3323034b2b1c13 +IV= bc1ff2dff66c62fe7cd4983a44982ded +CT= 61c0d0081f176c53de83b70608201ee6 +PT= c016536fefc08b69867ab2946ffbe011 +TEST= 163 +KEY= 92157f38953622d8c0e191dac4179a6a4fb602bfd3da272ee849919724d0fc02 +IV= 849f299dbd91218c6d9554404ee4a03a +CT= c016536fefc08b69867ab2946ffbe011 +PT= 6923ff03c812710270438f67ef2f42d1 +TEST= 164 +KEY= ccb6779947d31df17182fb54555b49422695fdbc1bc8562c980a1ef0cbffbed3 +IV= 5ea308a1d2e53f29b1636a8e914cd328 +CT= 6923ff03c812710270438f67ef2f42d1 +PT= 0d1674014ad9dc2150e073e2fcf006a8 +TEST= 165 +KEY= 22aa52c07b42cfeb5e75687d395d86092b8389bd51118a0dc8ea6d12370fb87b +IV= ee1c25593c91d21a2ff793296c06cf4b +CT= 0d1674014ad9dc2150e073e2fcf006a8 +PT= 6399a65cc66e9318f2cee1103b8ffb90 +TEST= 166 +KEY= 527ef084271ac57f5d33f2e7c7be1ff1481a2fe1977f19153a248c020c8043eb +IV= 70d4a2445c580a9403469a9afee399f8 +CT= 6399a65cc66e9318f2cee1103b8ffb90 +PT= 511cbdd6cfa31788a43c765301d6baab +TEST= 167 +KEY= d826e762c9ea31b6f4415b3ae5ed888b1906923758dc0e9d9e18fa510d56f940 +IV= 8a5817e6eef0f4c9a972a9dd2253977a +CT= 511cbdd6cfa31788a43c765301d6baab +PT= b04e78ab18ae3f5b825087d9d5794bd7 +TEST= 168 +KEY= b4c2dee60a738c428b187ec3a3a4a982a948ea9c407231c61c487d88d82fb297 +IV= 6ce43984c399bdf47f5925f946492109 +CT= b04e78ab18ae3f5b825087d9d5794bd7 +PT= 6b013f9a972d82bd5a87da6c1dd5fd0f +TEST= 169 +KEY= c4a41f8c4b26391f6c0d629c6b052bd8c249d506d75fb37b46cfa7e4c5fa4f98 +IV= 7066c16a4155b55de7151c5fc8a1825a +CT= 6b013f9a972d82bd5a87da6c1dd5fd0f +PT= 9005f8243c6486f63590e7508503719c +TEST= 170 +KEY= 91a18f2681fcace1c80dc772bd0f2628524c2d22eb3b358d735f40b440f93e04 +IV= 550590aacada95fea400a5eed60a0df0 +CT= 9005f8243c6486f63590e7508503719c +PT= 39deeec3d3aeebbf4b573462b375b5e4 +TEST= 171 +KEY= e8ff0ee1269afdca213f69757c84704d6b92c3e13895de32380874d6f38c8be0 +IV= 795e81c7a766512be932ae07c18b5665 +CT= 39deeec3d3aeebbf4b573462b375b5e4 +PT= 1910f8e7c3d863784058cb35d674aeeb +TEST= 172 +KEY= f00751efcceca0eca3c252f396b4078e72823b06fb4dbd4a7850bfe325f8250b +IV= 18f85f0eea765d2682fd3b86ea3077c3 +CT= 1910f8e7c3d863784058cb35d674aeeb +PT= 4a71250e55629d3c5cc62b18b4b67653 +TEST= 173 +KEY= 383a1b81e82b8174a9b9f0af9ea498a338f31e08ae2f2076249694fb914e5358 +IV= c83d4a6e24c721980a7ba25c08109f2d +CT= 4a71250e55629d3c5cc62b18b4b67653 +PT= 19cbb63fbb92c7a10b676dbb5eb29060 +TEST= 174 +KEY= a6695341053bd5b1e15a6cd73def84e12138a83715bde7d72ff1f940cffcc338 +IV= 9e5348c0ed1054c548e39c78a34b1c42 +CT= 19cbb63fbb92c7a10b676dbb5eb29060 +PT= 18ba0a45e67d2cfec691203fc2509837 +TEST= 175 +KEY= 71b4c384ef619e5d6cadbfc7d53564913982a272f3c0cb29e960d97f0dac5b0f +IV= d7dd90c5ea5a4bec8df7d310e8dae070 +CT= 18ba0a45e67d2cfec691203fc2509837 +PT= 7699c8550933c30d630ac16d8da6f13d +TEST= 176 +KEY= 7d0527970fd45c35817091a317a2eab04f1b6a27faf308248a6a1812800aaa32 +IV= 0cb1e413e0b5c268eddd2e64c2978e21 +CT= 7699c8550933c30d630ac16d8da6f13d +PT= 78fe8eec14618ed34f63e8671434ada7 +TEST= 177 +KEY= 204ece43e91409c515077facc37c4df837e5e4cbee9286f7c509f075943e0795 +IV= 5d4be9d4e6c055f09477ee0fd4dea748 +CT= 78fe8eec14618ed34f63e8671434ada7 +PT= 0907f75149a74b49f302d2c08cf18af5 +TEST= 178 +KEY= 8e80dc69b6cc0f0d7f1f0be6e9f178ad3ee2139aa735cdbe360b22b518cf8d60 +IV= aece122a5fd806c86a18744a2a8d3555 +CT= 0907f75149a74b49f302d2c08cf18af5 +PT= fe24023bcabcd83e6212fa53e7320d92 +TEST= 179 +KEY= 5152cce87d9ccc930d7b376c4f1b334bc0c611a16d8915805419d8e6fffd80f2 +IV= dfd21081cb50c39e72643c8aa6ea4be6 +CT= fe24023bcabcd83e6212fa53e7320d92 +PT= 9526cded534cb3366306f8c731f87cd6 +TEST= 180 +KEY= 00c9d78f67f1b63181ade21a02675c6755e0dc4c3ec5a6b6371f2021ce05fc24 +IV= 519b1b671a6d7aa28cd6d5764d7c6f2c +CT= 9526cded534cb3366306f8c731f87cd6 +PT= 801f005ea2e9287ffd8d9b01be8e2205 +TEST= 181 +KEY= 442603cf6a012bdb23086bd7efd7396ed5ffdc129c2c8ec9ca92bb20708bde21 +IV= 44efd4400df09deaa2a589cdedb06509 +CT= 801f005ea2e9287ffd8d9b01be8e2205 +PT= 7558994ace0299e34eb586b832c98560 +TEST= 182 +KEY= b153c7c49983077fb0c79c30266a487aa0a74558522e172a84273d9842425b41 +IV= f575c40bf3822ca493cff7e7c9bd7114 +CT= 7558994ace0299e34eb586b832c98560 +PT= 324273a52ffbfbcac5401cfcd3075c98 +TEST= 183 +KEY= 0e038d82f7fad738824ef9feb6f6627692e536fd7dd5ece041672164914507d9 +IV= bf504a466e79d047328965ce909c2a0c +CT= 324273a52ffbfbcac5401cfcd3075c98 +PT= 509e651e053e85340a5b545aa0e40a71 +TEST= 184 +KEY= b2237d5d0e16b5f9a8fd7274f4ca1206c27b53e378eb69d44b3c753e31a10da8 +IV= bc20f0dff9ec62c12ab38b8a423c7070 +CT= 509e651e053e85340a5b545aa0e40a71 +PT= 1716ab4dcab205d62ef356e4c565ba70 +TEST= 185 +KEY= cbe25cf8f3cab9849f44f330ad8b17e1d56df8aeb2596c0265cf23daf4c4b7d8 +IV= 79c121a5fddc0c7d37b98144594105e7 +CT= 1716ab4dcab205d62ef356e4c565ba70 +PT= 093ca7764e7f6828ef210e89d3d01c73 +TEST= 186 +KEY= 2bf3c06b0cae728c8a6134634d5deaf1dc515fd8fc26042a8aee2d532714abab +IV= e0119c93ff64cb081525c753e0d6fd10 +CT= 093ca7764e7f6828ef210e89d3d01c73 +PT= 86f8b39db10eb8b3cfed4c98bbbffae1 +TEST= 187 +KEY= a2c742cff575ca98d3261be7da99e3935aa9ec454d28bc99450361cb9cab514a +IV= 893482a4f9dbb81459472f8497c40962 +CT= 86f8b39db10eb8b3cfed4c98bbbffae1 +PT= 8bf9c14617b3ce1511abbd484439d041 +TEST= 188 +KEY= f8ab8bad8f2c5a54ed4c80ad094a36d4d1502d035a9b728c54a8dc83d892810b +IV= 5a6cc9627a5990cc3e6a9b4ad3d3d547 +CT= 8bf9c14617b3ce1511abbd484439d041 +PT= c41b937b1d5e10d982c7850685997862 +TEST= 189 +KEY= 4dba6859c8d681253e8f6278be76d87d154bbe7847c56255d66f59855d0bf969 +IV= b511e3f447fadb71d3c3e2d5b73ceea9 +CT= c41b937b1d5e10d982c7850685997862 +PT= 467114f3f33c8ba65aa76c297e9da11c +TEST= 190 +KEY= 2738e652a9f41b48b443b487b2af6d7c533aaa8bb4f9e9f38cc835ac23965875 +IV= 6a828e0b61229a6d8accd6ff0cd9b501 +CT= 467114f3f33c8ba65aa76c297e9da11c +PT= cb9d772c72bc5bb3e18087cabadde5b2 +TEST= 191 +KEY= a1c138e8afaa19465ae9bd1968c19e8798a7dda7c645b2406d48b266994bbdc7 +IV= 86f9deba065e020eeeaa099eda6ef3fb +CT= cb9d772c72bc5bb3e18087cabadde5b2 +PT= 678837a26f65190f44107c19a01f97e6 +TEST= 192 +KEY= cd73af62c6130630324f71f35042bc9aff2fea05a920ab4f2958ce7f39542a21 +IV= 6cb2978a69b91f7668a6ccea3883221d +CT= 678837a26f65190f44107c19a01f97e6 +PT= e395804e9f2d61447b5207aa438f7d98 +TEST= 193 +KEY= f076eaf59dac3f3975e9cbed6697a21b1cba6a4b360dca0b520ac9d57adb57b9 +IV= 3d0545975bbf390947a6ba1e36d51e81 +CT= e395804e9f2d61447b5207aa438f7d98 +PT= ca6e3e780c170e950306fee08cab46d9 +TEST= 194 +KEY= 87dd7a9906e626e1ac55611a52ebc196d6d454333a1ac49e510c3735f6701160 +IV= 77ab906c9b4a19d8d9bcaaf7347c638d +CT= ca6e3e780c170e950306fee08cab46d9 +PT= 419b7c538e827e431b2c2ba5aeb95373 +TEST= 195 +KEY= c8d569c710030750fda3a48e748bed26974f2860b498badd4a201c9058c94213 +IV= 4f08135e16e521b151f6c59426602cb0 +CT= 419b7c538e827e431b2c2ba5aeb95373 +PT= 1d6607b51b0da629c62d00cb20870fea +TEST= 196 +KEY= a3a22e3ced89316bc747e3326cb53c448a292fd5af951cf48c0d1c5b784e4df9 +IV= 6b7747fbfd8a363b3ae447bc183ed162 +CT= 1d6607b51b0da629c62d00cb20870fea +PT= 58169d0006c9031c7cce502f086b0cd6 +TEST= 197 +KEY= ddb2f456cfe201d5e1dd9efc6593813fd23fb2d5a95c1fe8f0c34c747025412f +IV= 7e10da6a226b30be269a7dce0926bd7b +CT= 58169d0006c9031c7cce502f086b0cd6 +PT= 8001e1bdae24a2a9abe102c2beb4ad70 +TEST= 198 +KEY= a990048427c8e19babe1d0bb5d6a83ca523e53680778bd415b224eb6ce91ec5f +IV= 7422f0d2e82ae04e4a3c4e4738f902f5 +CT= 8001e1bdae24a2a9abe102c2beb4ad70 +PT= ea143e99846f5df1c1a2ad0565d3ae45 +TEST= 199 +KEY= 5074e20e5b70b571a7155a3aafe3af2ab82a6df18317e0b09a80e3b3ab42421a +IV= f9e4e68a7cb854ea0cf48a81f2892ce0 +CT= ea143e99846f5df1c1a2ad0565d3ae45 +PT= c1ebfe1b00d813bb5ac9e4b007977b19 +TEST= 200 +KEY= 50315f6bf520f26a044751215225348179c193ea83cff30bc0490703acd53903 +IV= 0045bd65ae50471ba3520b1bfdc69bab +CT= c1ebfe1b00d813bb5ac9e4b007977b19 +PT= 3476aa08cb11f13d8dd858cf10472d03 +TEST= 201 +KEY= 03d2536f9830d74a9b2aedd1508ce4764db739e248de02364d915fccbc921400 +IV= 53e30c046d1025209f6dbcf002a9d0f7 +CT= 3476aa08cb11f13d8dd858cf10472d03 +PT= c79bed3bb201f29b65cdf5709654317c +TEST= 202 +KEY= 4ac2173ad99e09eccb4a647af96c26f98a2cd4d9fadff0ad285caabc2ac6257c +IV= 4910445541aedea6506089aba9e0c28f +CT= c79bed3bb201f29b65cdf5709654317c +PT= e5e144d56a2ff95d644d51e73aeae922 +TEST= 203 +KEY= 9f46778ca9c15cb9978c0df359056f3d6fcd900c90f009f04c11fb5b102ccc5e +IV= d58460b6705f55555cc66989a06949c4 +CT= e5e144d56a2ff95d644d51e73aeae922 +PT= 38582f30fde74a162ccd85955c2e48fc +TEST= 204 +KEY= 63038f8ea2934d0c65f181be92b9664a5795bf3c6d1743e660dc7ece4c0284a2 +IV= fc45f8020b5211b5f27d8c4dcbbc0977 +CT= 38582f30fde74a162ccd85955c2e48fc +PT= 266e808d7e9206c9294f0349d1cef1da +TEST= 205 +KEY= d43cc15dcab5047b8c67d61f1735c6a471fb3fb11385452f49937d879dcc7578 +IV= b73f4ed368264977e99657a1858ca0ee +CT= 266e808d7e9206c9294f0349d1cef1da +PT= 8e3d1f7dc678c32352782d52e4cd44d5 +TEST= 206 +KEY= 9979232a388e0e6c766279cfe7e047b4ffc620ccd5fd860c1beb50d5790131ad +IV= 4d45e277f23b0a17fa05afd0f0d58110 +CT= 8e3d1f7dc678c32352782d52e4cd44d5 +PT= ddc8075418e2a649d4e78144528682f9 +TEST= 207 +KEY= 43479ea72bf3b417cf224b15749043c5220e2798cd1f2045cf0cd1912b87b354 +IV= da3ebd8d137dba7bb94032da93700471 +CT= ddc8075418e2a649d4e78144528682f9 +PT= 4096b4f51c77c8a00a5308d8c3175b6a +TEST= 208 +KEY= 7ae39630885c3acdcf915625141df45a6298936dd168e8e5c55fd949e890e83e +IV= 39a40897a3af8eda00b31d30608db79f +CT= 4096b4f51c77c8a00a5308d8c3175b6a +PT= 60d0385ece913bec6760baa0bccde853 +TEST= 209 +KEY= 82496adb8a91dae80c249d2bd8f00c990248ab331ff9d309a23f63e9545d006d +IV= f8aafceb02cde025c3b5cb0eccedf8c3 +CT= 60d0385ece913bec6760baa0bccde853 +PT= 79a86909141c27366744fc614808705b +TEST= 210 +KEY= ef7fee5e3fdac015e8016a7a9d3eb8677be0c23a0be5f43fc57b9f881c557036 +IV= 6d368485b54b1afde425f75145ceb4fe +CT= 79a86909141c27366744fc614808705b +PT= 9817ce82a9d821189878991b32360409 +TEST= 211 +KEY= a400d423453a59f64968e8b80140aaf6e3f70cb8a23dd5275d0306932e63743f +IV= 4b7f3a7d7ae099e3a16982c29c7e1291 +CT= 9817ce82a9d821189878991b32360409 +PT= c3259e5d4a3e82fdc862e862e4449da2 +TEST= 212 +KEY= b9280c8996c8bec6888cb4d9d1e76b0620d292e5e80357da9561eef1ca27e99d +IV= 1d28d8aad3f2e730c1e45c61d0a7c1f0 +CT= c3259e5d4a3e82fdc862e862e4449da2 +PT= f035078b9a3e45b4ed561f001db21e47 +TEST= 213 +KEY= 9686d9bb259cd14fa7d58c9789932385d0e7956e723d126e7837f1f1d795f7da +IV= 2faed532b3546f892f59384e58744883 +CT= f035078b9a3e45b4ed561f001db21e47 +PT= 596b9f7f2122a11c599626b16b6ac340 +TEST= 214 +KEY= 736e847ddc4c794a3aa2e22c1af85ef1898c0a11531fb37221a1d740bcff349a +IV= e5e85dc6f9d0a8059d776ebb936b7d74 +CT= 596b9f7f2122a11c599626b16b6ac340 +PT= 800fcc5ce3b08cffdd70fb5270ded220 +TEST= 215 +KEY= 728d3e35cd653621d41e591530770b370983c64db0af3f8dfcd12c12cc21e6ba +IV= 01e3ba4811294f6beebcbb392a8f55c6 +CT= 800fcc5ce3b08cffdd70fb5270ded220 +PT= 5515a58eb0013d2ee561bd2826761209 +TEST= 216 +KEY= 929f6fd8250bad33fae4ed108843a2645c9663c300ae02a319b0913aea57f4b3 +IV= e01251ede86e9b122efab405b834a953 +CT= 5515a58eb0013d2ee561bd2826761209 +PT= 8b7b3ab73287ceaaa0098d41f0b3a28b +TEST= 217 +KEY= 3f54c218b02f6097c3f31a05f5ccb8c4d7ed59743229cc09b9b91c7b1ae45638 +IV= adcbadc09524cda43917f7157d8f1aa0 +CT= 8b7b3ab73287ceaaa0098d41f0b3a28b +PT= 90cdcf132600f622d1339197b441a4c0 +TEST= 218 +KEY= 2f60aee4e6a6f7109193112bc756d7f24720966714293a2b688a8decaea5f2f8 +IV= 10346cfc5689978752600b2e329a6f36 +CT= 90cdcf132600f622d1339197b441a4c0 +PT= ea089bec0dee1305828522b8ad4f5a99 +TEST= 219 +KEY= 33623a9f86f3af456d92076b132e46a3ad280d8b19c7292eea0faf5403eaa861 +IV= 1c02947b60555855fc011640d4789151 +CT= ea089bec0dee1305828522b8ad4f5a99 +PT= 339c14562ae38f84be0fb1569c234287 +TEST= 220 +KEY= 6291ed0b63ed8c18a713ddcbfca054e19eb419dd3324a6aa54001e029fc9eae6 +IV= 51f3d794e51e235dca81daa0ef8e1242 +CT= 339c14562ae38f84be0fb1569c234287 +PT= 31050e95b1f08b9139ef7f8d42110978 +TEST= 221 +KEY= 7bef1be3e67aa478c5d9f50350d221ccafb1174882d42d3b6def618fddd8e39e +IV= 197ef6e88597286062ca28c8ac72752d +CT= 31050e95b1f08b9139ef7f8d42110978 +PT= 18de66e3b58c9abab99987826af0d0af +TEST= 222 +KEY= 3deb69283844069b400c2e7127b8cd2eb76f71ab3758b781d476e60db7283331 +IV= 460472cbde3ea2e385d5db72776aece2 +CT= 18de66e3b58c9abab99987826af0d0af +PT= b75d11e28c94db969fe009b984da956b +TEST= 223 +KEY= 754c5bec642540ec8bad0778773ca8e700326049bbcc6c174b96efb433f2a65a +IV= 48a732c45c614677cba12909508465c9 +CT= b75d11e28c94db969fe009b984da956b +PT= 7ceee835fc734108785b367a28c62058 +TEST= 224 +KEY= 01b0a659138dee7cf1efa11dd0a209247cdc887c47bf2d1f33cdd9ce1b348602 +IV= 74fcfdb577a8ae907a42a665a79ea1c3 +CT= 7ceee835fc734108785b367a28c62058 +PT= f1e848f6c257d6d56b4fbca36900614c +TEST= 225 +KEY= f9531cedc3c5c76a90195bf1e5fb5ed98d34c08a85e8fbca5882656d7234e74e +IV= f8e3bab4d048291661f6faec355957fd +CT= f1e848f6c257d6d56b4fbca36900614c +PT= 7b06a193c8b84977e56b382d424d2a78 +TEST= 226 +KEY= d409db9768430bca0e2b68ba1cfe93a5f63261194d50b2bdbde95d403079cd36 +IV= 2d5ac77aab86cca09e32334bf905cd7c +CT= 7b06a193c8b84977e56b382d424d2a78 +PT= 413356e3367acbdd88ada6df5e09ffc6 +TEST= 227 +KEY= 8425b50a014625ba114abac1585c3f68b70137fa7b2a79603544fb9f6e7032f0 +IV= 502c6e9d69052e701f61d27b44a2accd +CT= 413356e3367acbdd88ada6df5e09ffc6 +PT= 13b524e8aebfe32cc9559b500d9e9a82 +TEST= 228 +KEY= 3ed2eedff8c12697c9ceb18b8dc86798a4b41312d5959a4cfc1160cf63eea872 +IV= baf75bd5f987032dd8840b4ad59458f0 +CT= 13b524e8aebfe32cc9559b500d9e9a82 +PT= 91775d8df510277669bc11697965ae99 +TEST= 229 +KEY= b3c35ff0f6b2ddcf5522a35e75040bb135c34e9f2085bd3a95ad71a61a8b06eb +IV= 8d11b12f0e73fb589cec12d5f8cc6c29 +CT= 91775d8df510277669bc11697965ae99 +PT= 0aa5b5a593fed4ce1fd66736774649d2 +TEST= 230 +KEY= 5581eeed032a31d6f8077beed79abb1e3f66fb3ab37b69f48a7b16906dcd4f39 +IV= e642b11df598ec19ad25d8b0a29eb0af +CT= 0aa5b5a593fed4ce1fd66736774649d2 +PT= 3db595e23d32347092e5d94a8376db5d +TEST= 231 +KEY= 2337abb014ad70d3e290033bd6fc75d702d36ed88e495d84189ecfdaeebb9464 +IV= 76b6455d178741051a9778d50166cec9 +CT= 3db595e23d32347092e5d94a8376db5d +PT= 2af2dec9d2d4f0ba81d1fc88e421c034 +TEST= 232 +KEY= 7c8a43d8ca68e782bbd49c18477683052821b0115c9dad3e994f33520a9a5450 +IV= 5fbde868dec5975159449f23918af6d2 +CT= 2af2dec9d2d4f0ba81d1fc88e421c034 +PT= 8af90fccbedcdf709aee93fef45c03ec +TEST= 233 +KEY= 37fdc789e91f58f691931c86c4505926a2d8bfdde241724e03a1a0acfec657bc +IV= 4b7784512377bf742a47809e8326da23 +CT= 8af90fccbedcdf709aee93fef45c03ec +PT= 8e98df785a601df26465d9a0d163d650 +TEST= 234 +KEY= 57c30d92bd234be693f15534768970fc2c4060a5b8216fbc67c4790c2fa581ec +IV= 603eca1b543c1310026249b2b2d929da +CT= 8e98df785a601df26465d9a0d163d650 +PT= 21d3eac95a088a548e5c0e56001bd103 +TEST= 235 +KEY= 1f9a07e73db0530f84b6db88c5ea0afd0d938a6ce229e5e8e998775a2fbe50ef +IV= 48590a75809318e917478ebcb3637a01 +CT= 21d3eac95a088a548e5c0e56001bd103 +PT= 48a8853d9e4e4a6351e5f5734911d569 +TEST= 236 +KEY= 219e87740c05905a3dac677c78c5e6d4453b0f517c67af8bb87d822966af8586 +IV= 3e04809331b5c355b91abcf4bd2fec29 +CT= 48a8853d9e4e4a6351e5f5734911d569 +PT= c75ecb64a655dc6803fc976a1cae78a9 +TEST= 237 +KEY= d445b2cf4c6b8af073fcdff8907c4b278265c435da3273e3bb8115437a01fd2f +IV= f5db35bb406e1aaa4e50b884e8b9adf3 +CT= c75ecb64a655dc6803fc976a1cae78a9 +PT= f063e6c6a62d07b1ca90594cb9041de4 +TEST= 238 +KEY= 3decaa3153a9658a2caa5578af2c55cd720622f37c1f745271114c0fc305e0cb +IV= e9a918fe1fc2ef7a5f568a803f501eea +CT= f063e6c6a62d07b1ca90594cb9041de4 +PT= 45f375ddba20d20cb6c5eab28aa85d06 +TEST= 239 +KEY= 31766034845df8a1aedfc70ce3cd5b1d37f5572ec63fa65ec7d4a6bd49adbdcd +IV= 0c9aca05d7f49d2b827592744ce10ed0 +CT= 45f375ddba20d20cb6c5eab28aa85d06 +PT= 5d117aac285d5a6948390fdafbdacad5 +TEST= 240 +KEY= bf17727e1d5dca94c9cca8e11dfbf22a6ae42d82ee62fc378feda967b2777718 +IV= 8e61124a9900323567136fedfe36a937 +CT= 5d117aac285d5a6948390fdafbdacad5 +PT= c8b61b172d930641a88e9e13236e11f9 +TEST= 241 +KEY= b82db30f4271245293fc4cb6a0c10d4fa2523695c3f1fa7627633774911966e1 +IV= 073ac1715f2ceec65a30e457bd3aff65 +CT= c8b61b172d930641a88e9e13236e11f9 +PT= fe05708e08f8568bb55175ceef9e0433 +TEST= 242 +KEY= 28ae9bd5e181ac41cf2f9b4710dd160c5c57461bcb09acfd923242ba7e8762d2 +IV= 908328daa3f088135cd3d7f1b01c1b43 +CT= fe05708e08f8568bb55175ceef9e0433 +PT= d7db71eac2ef31ae105227e34134ad3c +TEST= 243 +KEY= 437d385b59b4ab247a5bcfc0c0f8596f8b8c37f109e69d53826065593fb3cfee +IV= 6bd3a38eb8350765b5745487d0254f63 +CT= d7db71eac2ef31ae105227e34134ad3c +PT= ecd51d08c870983992708fc1fdfa9d15 +TEST= 244 +KEY= 4ef45d9c1fca58d42d9e7e2e9c7d0b8f67592af9c196056a1010ea98c24952fb +IV= 0d8965c7467ef3f057c5b1ee5c8552e0 +CT= ecd51d08c870983992708fc1fdfa9d15 +PT= f436ba32e9d089248ac47e40aa6b4bac +TEST= 245 +KEY= d3f16d0cf75471a24f273b3e8ef0a3a0936f90cb28468c4e9ad494d868221957 +IV= 9d053090e89e297662b94510128da82f +CT= f436ba32e9d089248ac47e40aa6b4bac +PT= f43e89c3dbd391b5778b30a36a9e42f3 +TEST= 246 +KEY= 953e7ab7369425a4f396d764f3ea047f67511908f3951dfbed5fa47b02bc5ba4 +IV= 46cf17bbc1c05406bcb1ec5a7d1aa7df +CT= f43e89c3dbd391b5778b30a36a9e42f3 +PT= b12abb428a29703b929efdb0031694d1 +TEST= 247 +KEY= c8ddfefd3c72822b72c78757ee8ef856d67ba24a79bc6dc07fc159cb01aacf75 +IV= 5de3844a0ae6a78f815150331d64fc29 +CT= b12abb428a29703b929efdb0031694d1 +PT= 79f19d2bd0a025d2d9822a28f5304446 +TEST= 248 +KEY= 870a25e9511d3f1bcfa941da41fd00c0af8a3f61a91c4812a64373e3f49a8b33 +IV= 4fd7db146d6fbd30bd6ec68daf73f896 +CT= 79f19d2bd0a025d2d9822a28f5304446 +PT= c52d5ef8d7a1353f5c1ff7ba33f9ed97 +TEST= 249 +KEY= 178b86564949ae1a0ce50e61f4d3f8776aa761997ebd7d2dfa5c8459c76366a4 +IV= 9081a3bf18549101c34c4fbbb52ef8b7 +CT= c52d5ef8d7a1353f5c1ff7ba33f9ed97 +PT= 82fab7df4be409880b8f66210de8d2e5 +TEST= 250 +KEY= c3f845809e635052f94076e1f3026779e85dd646355974a5f1d3e278ca8bb441 +IV= d473c3d6d72afe48f5a5788007d19f0e +CT= 82fab7df4be409880b8f66210de8d2e5 +PT= 52c05722f125348666dfcf0f2d052530 +TEST= 251 +KEY= 34ae823e21f4c45784f2e125cf5039fcba9d8164c47c4023970c2d77e78e9171 +IV= f756c7bebf9794057db297c43c525e85 +CT= 52c05722f125348666dfcf0f2d052530 +PT= de7faaf4a10d4d5404847fa080c1dc1c +TEST= 252 +KEY= 9d1eefc6b62427f5a2cbb2047ab0e41b64e22b9065710d77938852d7674f4d6d +IV= a9b06df897d0e3a226395321b5e0dde7 +CT= de7faaf4a10d4d5404847fa080c1dc1c +PT= 49327927599012ee87ff64f45ac9a9ae +TEST= 253 +KEY= 2c7b21a79be0b5b0e4dcc427de8d91572dd052b73ce11f99147736233d86e4c3 +IV= b165ce612dc4924546177623a43d754c +CT= 49327927599012ee87ff64f45ac9a9ae +PT= 6e11b9f592dd99cd94f8999d9476f4cf +TEST= 254 +KEY= f4a72fb6d161b9e15a41576c5a7cbf3f43c1eb42ae3c8654808fafbea9f0100c +IV= d8dc0e114a810c51be9d934b84f12e68 +CT= 6e11b9f592dd99cd94f8999d9476f4cf +PT= 108ac1fe3e008d1c3058917157003e2c +TEST= 255 +KEY= 2e5fe97c58b060c9baca9e9cc14cfc89534b2abc903c0b48b0d73ecffef02e20 +IV= daf8c6ca89d1d928e08bc9f09b3043b6 +CT= 108ac1fe3e008d1c3058917157003e2c +PT= b315ef45a3bd77688ad0976ef5dca26b +TEST= 256 +KEY= 9d763a80b96b112e1daea50a98c0b6f7e05ec5f933817c203a07a9a10b2c8c4b +IV= b329d3fce1db71e7a7643b96598c4a7e +CT= b315ef45a3bd77688ad0976ef5dca26b +PT= 7bf8dabed803049df8d1f34ed00536f7 +TEST= 257 +KEY= df5f07523e7e305b48aad9c205ae826c9ba61f47eb8278bdc2d65aefdb29babc +IV= 42293dd28715217555047cc89d6e349b +CT= 7bf8dabed803049df8d1f34ed00536f7 +PT= e55fe84df3137d16e74dc01a1bfda4a7 +TEST= 258 +KEY= 80cf537ec8836add0fb72f35b2ef703d7ef9f70a189105ab259b9af5c0d41e1b +IV= 5f90542cf6fd5a86471df6f7b741f251 +CT= e55fe84df3137d16e74dc01a1bfda4a7 +PT= 6019f9da2dfdcdcb14c2c6ce5b34432d +TEST= 259 +KEY= 4469d3622a022cfb7614c9c9eb36e6031ee00ed0356cc86031595c3b9be05d36 +IV= c4a6801ce281462679a3e6fc59d9963e +CT= 6019f9da2dfdcdcb14c2c6ce5b34432d +PT= 6d2788861a8f9526d1ec8a6a8afba629 +TEST= 260 +KEY= ded804546fa6b0bcd8c9fd9119616f9873c786562fe35d46e0b5d651111bfb1f +IV= 9ab1d73645a49c47aedd3458f257899b +CT= 6d2788861a8f9526d1ec8a6a8afba629 +PT= 81d5cdea70e433a2a341ffb13eccec54 +TEST= 261 +KEY= 24fd3d900606eef8f31156d30ea094adf2124bbc5f076ee443f429e02fd7174b +IV= fa2539c469a05e442bd8ab4217c1fb35 +CT= 81d5cdea70e433a2a341ffb13eccec54 +PT= f74b4869e92f918a95b508e382a83fa6 +TEST= 262 +KEY= c24ca269eaaddfba060aaf15c2265de6055903d5b628ff6ed6412103ad7f28ed +IV= e6b19ff9ecab3142f51bf9c6cc86c94b +CT= f74b4869e92f918a95b508e382a83fa6 +PT= ef3293511a17d0e089a8f88e396b4f31 +TEST= 263 +KEY= 789c94e8d2b6d6fd022ed678f42e796cea6b9084ac3f2f8e5fe9d98d941467dc +IV= bad03681381b09470424796d3608248a +CT= ef3293511a17d0e089a8f88e396b4f31 +PT= 0d70fce243309d716d8fa672a11ebcb8 +TEST= 264 +KEY= b8dfb47d720c26ae22ad6c87785ccb97e71b6c66ef0fb2ff32667fff350adb64 +IV= c0432095a0baf0532083baff8c72b2fb +CT= 0d70fce243309d716d8fa672a11ebcb8 +PT= 831365ab30d062f2b1c051a9ea03aeeb +TEST= 265 +KEY= 938bceff0fd9aec61cf2b0509a645a19640809cddfdfd00d83a62e56df09758f +IV= 2b547a827dd588683e5fdcd7e238918e +CT= 831365ab30d062f2b1c051a9ea03aeeb +PT= efe7e9dc254ff4aa70abf327566a5448 +TEST= 266 +KEY= bbf0c86d05bf543ec3b9a9240833187f8befe011fa9024a7f30ddd71896321c7 +IV= 287b06920a66faf8df4b197492574266 +CT= efe7e9dc254ff4aa70abf327566a5448 +PT= 2d41bee483bd2bad16026ad7aa5aba07 +TEST= 267 +KEY= b744a9326ec1d56cbff51d969d075c7da6ae5ef5792d0f0ae50fb7a623399bc0 +IV= 0cb4615f6b7e81527c4cb4b295344402 +CT= 2d41bee483bd2bad16026ad7aa5aba07 +PT= 079460c9b745a53999932c5ecfe6a37b +TEST= 268 +KEY= ae49c59dd393e9ec9030aedad7fc61fea13a3e3cce68aa337c9c9bf8ecdf38bb +IV= 190d6cafbd523c802fc5b34c4afb3d83 +CT= 079460c9b745a53999932c5ecfe6a37b +PT= ce7c5851d0437368fedc7e39270a7430 +TEST= 269 +KEY= 8176855633b6fb2445bddc2fd8d299576f46666d1e2bd95b8240e5c1cbd54c8b +IV= 2f3f40cbe02512c8d58d72f50f2ef8a9 +CT= ce7c5851d0437368fedc7e39270a7430 +PT= a0c3f2d688e4370ad2f08c09b28dbcc1 +TEST= 270 +KEY= 050e71c47b278c5825de84513a732d11cf8594bb96cfee5150b069c87958f04a +IV= 8478f4924891777c6063587ee2a1b446 +CT= a0c3f2d688e4370ad2f08c09b28dbcc1 +PT= be472e609abb030b96739a959edbdd21 +TEST= 271 +KEY= 502e4bdcf449e96cb16d5b6c097d20cc71c2badb0c74ed5ac6c3f35de7832d6b +IV= 55203a188f6e653494b3df3d330e0ddd +CT= be472e609abb030b96739a959edbdd21 +PT= fe4227d6ac71519fa0f2078433df69ca +TEST= 272 +KEY= c3ddde6b2e80381010569bc093561f628f809d0da005bcc56631f4d9d45c44a1 +IV= 93f395b7dac9d17ca13bc0ac9a2b3fae +CT= fe4227d6ac71519fa0f2078433df69ca +PT= 3f8439c7648c5c2b5877643c536e14f9 +TEST= 273 +KEY= 1cc65cb104317d620d729edeb4c4b512b004a4cac489e0ee3e4690e587325058 +IV= df1b82da2ab145721d24051e2792aa70 +CT= 3f8439c7648c5c2b5877643c536e14f9 +PT= e189b969bf38c8a2f38bf3f12267b5b4 +TEST= 274 +KEY= d121c8556039f07e231f9e88de60572b518d1da37bb1284ccdcd6314a555e5ec +IV= cde794e464088d1c2e6d00566aa4e239 +CT= e189b969bf38c8a2f38bf3f12267b5b4 +PT= ef15ccec56dcd62681fc7564a1095ecd +TEST= 275 +KEY= c87070f4aa767be043b29fe3af258c91be98d14f2d6dfe6a4c311670045cbb21 +IV= 1951b8a1ca4f8b9e60ad016b7145dbba +CT= ef15ccec56dcd62681fc7564a1095ecd +PT= bd38cd579a7124dd0814db21fc0e7d96 +TEST= 276 +KEY= 08167c643ca7cad8729b17eb91918ac103a01c18b71cdab74425cd51f852c6b7 +IV= c0660c9096d1b138312988083eb40650 +CT= bd38cd579a7124dd0814db21fc0e7d96 +PT= 565f580b61e456544d8d553948ad95fd +TEST= 277 +KEY= 55bb77ed49c419eea418365f2750857355ff4413d6f88ce309a89868b0ff534a +IV= 5dad0b897563d336d68321b4b6c10fb2 +CT= 565f580b61e456544d8d553948ad95fd +PT= 1aa68eac78c2b5bff996f0b58c56432f +TEST= 278 +KEY= 8fec3c85819f24ee1da186ab212a19d44f59cabfae3a395cf03e68dd3ca91065 +IV= da574b68c85b3d00b9b9b0f4067a9ca7 +CT= 1aa68eac78c2b5bff996f0b58c56432f +PT= 65660fbf6c166604d9e717671488d734 +TEST= 279 +KEY= d1d19b25c23ea5923d45493905b867d12a3fc500c22c5f5829d97fba2821c751 +IV= 5e3da7a043a1817c20e4cf9224927e05 +CT= 65660fbf6c166604d9e717671488d734 +PT= 477cbd97b467aa1aab738e294092faa3 +TEST= 280 +KEY= e1972be045093ec4475dce6351cdedcb6d437897764bf54282aaf19368b33df2 +IV= 3046b0c587379b567a18875a54758a1a +CT= 477cbd97b467aa1aab738e294092faa3 +PT= c0ed90d90ae11390a275bd03be00e1d5 +TEST= 281 +KEY= 6f622a270d77ae65084e2070343e8c7fadaee84e7caae6d220df4c90d6b3dc27 +IV= 8ef501c7487e90a14f13ee1365f361b4 +CT= c0ed90d90ae11390a275bd03be00e1d5 +PT= 296fed9b8cf7c532721a2188ddb1a441 +TEST= 282 +KEY= ff7209ea94c0401544991fdb57f77f2084c105d5f05d23e052c56d180b027866 +IV= 901023cd99b7ee704cd73fab63c9f35f +CT= 296fed9b8cf7c532721a2188ddb1a441 +PT= 4ae1c2eb8d1ceb5804fa992708150590 +TEST= 283 +KEY= 73c6f94ad63de39c289ae20179fdddd7ce20c73e7d41c8b8563ff43f03177df6 +IV= 8cb4f0a042fda3896c03fdda2e0aa2f7 +CT= 4ae1c2eb8d1ceb5804fa992708150590 +PT= a4eac8940c12f9ceac78dfdc99df68b4 +TEST= 284 +KEY= a7369886016682f6075678509ffb86ed6aca0faa71533176fa472be39ac81542 +IV= d4f061ccd75b616a2fcc9a51e6065b3a +CT= a4eac8940c12f9ceac78dfdc99df68b4 +PT= 70b05a9959e7c4e4545bb3aeccd8b33d +TEST= 285 +KEY= f01b9ff32ce9ca699f69adbbc209bbd21a7a553328b4f592ae1c984d5610a67f +IV= 572d07752d8f489f983fd5eb5df23d3f +CT= 70b05a9959e7c4e4545bb3aeccd8b33d +PT= f4978960f1382713a5a7183b9694de85 +TEST= 286 +KEY= ff05a97961a5ca725cd2e1b2a9d58304eeeddc53d98cd2810bbb8076c08478fa +IV= 0f1e368a4d4c001bc3bb4c096bdc38d6 +CT= f4978960f1382713a5a7183b9694de85 +PT= edcc3b8d26928086f1c6727833405424 +TEST= 287 +KEY= aa4db35ccbd936d13d1b7db64638b99a0321e7deff1e5207fa7df20ef3c42cde +IV= 55481a25aa7cfca361c99c04efed3a9e +CT= edcc3b8d26928086f1c6727833405424 +PT= 12a36ac1da72345291cf206fa04f102f +TEST= 288 +KEY= 611e32bf030b7b377aec338c7fa6d88311828d1f256c66556bb2d261538b3cf1 +IV= cb5381e3c8d24de647f74e3a399e6119 +CT= 12a36ac1da72345291cf206fa04f102f +PT= 8da0003e090444453b932f0cdbbfa54e +TEST= 289 +KEY= 43e230241ef150ac761c1307c43c3e209c228d212c6822105021fd6d883499bf +IV= 22fc029b1dfa2b9b0cf0208bbb9ae6a3 +CT= 8da0003e090444453b932f0cdbbfa54e +PT= a3d9f2112895cea937a2b18abb589cc0 +TEST= 290 +KEY= 1fe38e9028dac8a1e65a04c78bd0e7523ffb7f3004fdecb967834ce7336c057f +IV= 5c01beb4362b980d904617c04fecd972 +CT= a3d9f2112895cea937a2b18abb589cc0 +PT= 191ee02b9fed198599b5bc2f36271abb +TEST= 291 +KEY= 5ffd20799d7a7e7a328bd57b13f6e52f26e59f1b9b10f53cfe36f0c8054b1fc4 +IV= 401eaee9b5a0b6dbd4d1d1bc9826027d +CT= 191ee02b9fed198599b5bc2f36271abb +PT= efc32006ae746d1e3f65e6c7adf32804 +TEST= 292 +KEY= efefd2a0f1917eb5bfd2337260e11023c926bf1d35649822c153160fa8b837c0 +IV= b012f2d96ceb00cf8d59e6097317f50c +CT= efc32006ae746d1e3f65e6c7adf32804 +PT= f9c49b0bffa354eebbe3de29bf9d2623 +TEST= 293 +KEY= 7676d792019d370a67526977ec5fdb5b30e22416cac7cccc7ab0c826172511e3 +IV= 99990532f00c49bfd8805a058cbecb78 +CT= f9c49b0bffa354eebbe3de29bf9d2623 +PT= eaeae4bff789e64d80d88ce5bc0e15cc +TEST= 294 +KEY= 69202b4eb33eb35987dd82026714f603da08c0a93d4e2a81fa6844c3ab2b042f +IV= 1f56fcdcb2a38453e08feb758b4b2d58 +CT= eaeae4bff789e64d80d88ce5bc0e15cc +PT= 96c362f59fd2457a5ed68a116b4aa682 +TEST= 295 +KEY= de8b4cc7995b3e061e126157b0c2af984ccba25ca29c6ffba4beced2c061a2ad +IV= b7ab67892a658d5f99cfe355d7d6599b +CT= 96c362f59fd2457a5ed68a116b4aa682 +PT= 5498be46dce840f7b593be2bc0d252cb +TEST= 296 +KEY= 1bfe119e1b63ba06e9a590709a2985d218531c1a7e742f0c112d70f900b3f066 +IV= c5755d5982388400f7b7f1272aeb2a4a +CT= 5498be46dce840f7b593be2bc0d252cb +PT= 697482966f491acb46e7171a4813d916 +TEST= 297 +KEY= 9e6361f9775a88faad09711e9691798c71279e8c113d35c757ca67e348a02970 +IV= 859d70676c3932fc44ace16e0cb8fc5e +CT= 697482966f491acb46e7171a4813d916 +PT= a799874dc7721d96deefab5fe1a01a8e +TEST= 298 +KEY= 7d1ef621d3adc4bd4ec1861167fa5b0cd6be19c1d64f28518925ccbca90033fe +IV= e37d97d8a4f74c47e3c8f70ff16b2280 +CT= a799874dc7721d96deefab5fe1a01a8e +PT= 2d19344625cf5e6de07ee960f4aec5cf +TEST= 299 +KEY= 7dfd0be692b47c022dc789ef5291d2f5fba72d87f380763c695b25dc5daef631 +IV= 00e3fdc74119b8bf63060ffe356b89f9 +CT= 2d19344625cf5e6de07ee960f4aec5cf +PT= f80c5143f173ae672da4ddc8272c13ef +TEST= 300 +KEY= a78c66d30475b93f0a87e6e4a8bfa3ae03ab7cc402f3d85b44fff8147a82e5de +IV= da716d3596c1c53d27406f0bfa2e715b +CT= f80c5143f173ae672da4ddc8272c13ef +PT= 76bdb7a63614a41c9d52718b3514e03c +TEST= 301 +KEY= 9542e4b9d92daf7b463c83da257422b37516cb6234e77c47d9ad899f4f9605e2 +IV= 32ce826add5816444cbb653e8dcb811d +CT= 76bdb7a63614a41c9d52718b3514e03c +PT= 93f65b7b961ee6b623a026576ff8890b +TEST= 302 +KEY= 6932cd66a25d1de274c7d5df540917bfe6e09019a2f99af1fa0dafc8206e8ce9 +IV= fc7029df7b70b29932fb5605717d350c +CT= 93f65b7b961ee6b623a026576ff8890b +PT= fa5beb508abcbcb1b1d56c0e207a032d +TEST= 303 +KEY= 595ccc3640445ff5bbf303ff7845ab821cbb7b49284526404bd8c3c600148fc4 +IV= 306e0150e2194217cf34d6202c4cbc3d +CT= fa5beb508abcbcb1b1d56c0e207a032d +PT= bfaea3eb7c617567eb302d571dbf2811 +TEST= 304 +KEY= bf5382311bf88fc9e32d5badc832be48a315d8a254245327a0e8ee911daba7d5 +IV= e60f4e075bbcd03c58de5852b07715ca +CT= bfaea3eb7c617567eb302d571dbf2811 +PT= 4b0e63933414184d43b0aa714aa31e02 +TEST= 305 +KEY= b50a2ff8fac6820638ccba3a0ca6519ce81bbb3160304b6ae35844e05708b9d7 +IV= 0a59adc9e13e0dcfdbe1e197c494efd4 +CT= 4b0e63933414184d43b0aa714aa31e02 +PT= 0073ca04b300003af3c1035c664e0646 +TEST= 306 +KEY= 1a32aa7ca8b5d83c47f56c5d24edbd38e8687135d3304b50109947bc3146bf91 +IV= af38858452735a3a7f39d667284beca4 +CT= 0073ca04b300003af3c1035c664e0646 +PT= 75cfe6d4a4f05d8ebb5c614ac7fb48c8 +TEST= 307 +KEY= c321c5381f5a334c8b82dd2f0e4c73ae9da797e177c016deabc526f6f6bdf759 +IV= d9136f44b7efeb70cc77b1722aa1ce96 +CT= 75cfe6d4a4f05d8ebb5c614ac7fb48c8 +PT= b0d8db37df5c3a87b9e5d562283e8fee +TEST= 308 +KEY= 40879ea19753f0f22b1c1bf438a446532d7f4cd6a89c2c591220f394de8378b7 +IV= 83a65b998809c3bea09ec6db36e835fd +CT= b0d8db37df5c3a87b9e5d562283e8fee +PT= 9c885637cc7666c04b424dd6ef1f3edb +TEST= 309 +KEY= b6824c9f800b1e7825135f250db99fc8b1f71ae164ea4a995962be42319c466c +IV= f605d23e1758ee8a0e0f44d1351dd99b +CT= 9c885637cc7666c04b424dd6ef1f3edb +PT= 3e7f4437656e63e0adc6c764b20fe92d +TEST= 310 +KEY= 7fa3cde5856b1f0d9ae33e9e6ed1532e8f885ed601842979f4a479268393af41 +IV= c921817a05600175bff061bb6368cce6 +CT= 3e7f4437656e63e0adc6c764b20fe92d +PT= b19ccfdaadec54c8dd5f4fd53d3c5824 +TEST= 311 +KEY= 3e3aba34db005d9ff2cef1321bcd018e3e14910cac687db129fb36f3beaff765 +IV= 419977d15e6b4292682dcfac751c52a0 +CT= b19ccfdaadec54c8dd5f4fd53d3c5824 +PT= 84f7d061322a4042913c0bd14f5f1391 +TEST= 312 +KEY= fb474d499955cb1f37fba309dd55e09dbae3416d9e423df3b8c73d22f1f0e4f4 +IV= c57df77d42559680c535523bc698e113 +CT= 84f7d061322a4042913c0bd14f5f1391 +PT= cbcd716da9c53d7afffe65b780926660 +TEST= 313 +KEY= 7c1d07031362a7439f9dd5272dad1d9b712e3000378700894739589571628294 +IV= 875a4a4a8a376c5ca866762ef0f8fd06 +CT= cbcd716da9c53d7afffe65b780926660 +PT= f605d205704496c5bfcee88130920cde +TEST= 314 +KEY= 7e9e72a6032523643f0965e8bfcb0793872be20547c3964cf8f7b01441f08e4a +IV= 028375a510478427a094b0cf92661a08 +CT= f605d205704496c5bfcee88130920cde +PT= cfa8b47deb5770925ea29484d82cdbb4 +TEST= 315 +KEY= 518ca0a8c81e9ddce1060410c69f0ace48835678ac94e6dea655249099dc55fe +IV= 2f12d20ecb3bbeb8de0f61f879540d5d +CT= cfa8b47deb5770925ea29484d82cdbb4 +PT= 1065ad49d2dd48eb9540f23a69469b92 +TEST= 316 +KEY= 45e6a5a17d8d1aea04cd8e184d0a1bf758e6fb317e49ae353315d6aaf09ace6c +IV= 146a0509b5938736e5cb8a088b951139 +CT= 1065ad49d2dd48eb9540f23a69469b92 +PT= db12ee00c65069cfea509ba5bd5bb6bc +TEST= 317 +KEY= fc8f8f7f8a440a6ceb920d4311851b3a83f41531b819c7fad9454d0f4dc178d0 +IV= b9692adef7c91086ef5f835b5c8f00cd +CT= db12ee00c65069cfea509ba5bd5bb6bc +PT= b66316fb3ccc9b262a34c205ae43f42b +TEST= 318 +KEY= 42d666df2c1575e3b346fcbcd208ad9f359703ca84d55cdcf3718f0ae3828cfb +IV= be59e9a0a6517f8f58d4f1ffc38db6a5 +CT= b66316fb3ccc9b262a34c205ae43f42b +PT= 4c851d9bdc164194a6d1fde274c06d1b +TEST= 319 +KEY= 786b9456901dfa9ff85c686deedca02079121e5158c31d4855a072e89742e1e0 +IV= 3abdf289bc088f7c4b1a94d13cd40dbf +CT= 4c851d9bdc164194a6d1fde274c06d1b +PT= 5507f1eb271bdbc0a6dd8bbaec843a05 +TEST= 320 +KEY= c79b5cd424e592d392fecd3233cea70b2c15efba7fd8c688f37df9527bc6dbe5 +IV= bff0c882b4f8684c6aa2a55fdd12072b +CT= 5507f1eb271bdbc0a6dd8bbaec843a05 +PT= bb10ef7c98de0255c836d5319b94b166 +TEST= 321 +KEY= 10abc5b835e6e6bd02e90b63d22ef9e7970500c6e706c4dd3b4b2c63e0526a83 +IV= d730996c1103746e9017c651e1e05eec +CT= bb10ef7c98de0255c836d5319b94b166 +PT= e8b797afdc378db47f172260963a6e2c +TEST= 322 +KEY= 75e05aaab4e6981a20e4177d214b81ea7fb297693b314969445c0e03766804af +IV= 654b9f1281007ea7220d1c1ef365780d +CT= e8b797afdc378db47f172260963a6e2c +PT= 58ed1cc5a208a0e7340167e79f5da7c2 +TEST= 323 +KEY= a69fecc296d12216128bd1d2c48b373d275f8bac9939e98e705d69e4e935a36d +IV= d37fb6682237ba0c326fc6afe5c0b6d7 +CT= 58ed1cc5a208a0e7340167e79f5da7c2 +PT= feda5fb215819b441be18b0aed27a1fd +TEST= 324 +KEY= 7eed1776e603dd6c20f08b4c6b121525d985d41e8cb872ca6bbce2ee04120290 +IV= d872fbb470d2ff7a327b5a9eaf992218 +CT= feda5fb215819b441be18b0aed27a1fd +PT= 7cd64e29a704f13688db206f7f337685 +TEST= 325 +KEY= d4479a0af29af7145ec3fb89fef8bba7a5539a372bbc83fce367c2817b217415 +IV= aaaa8d7c14992a787e3370c595eaae82 +CT= 7cd64e29a704f13688db206f7f337685 +PT= 25d6728244f28f79d1bc707be94eca13 +TEST= 326 +KEY= 7fb45d09003b25efeb5f68ccb7e09c008085e8b56f4e0c8532dbb2fa926fbe06 +IV= abf3c703f2a1d2fbb59c9345491827a7 +CT= 25d6728244f28f79d1bc707be94eca13 +PT= 47af03717893a10d7f40d5a3d9b82534 +TEST= 327 +KEY= 35ee9428d4ec49ec103edf32f4fbee16c72aebc417ddad884d9b67594bd79b32 +IV= 4a5ac921d4d76c03fb61b7fe431b7216 +CT= 47af03717893a10d7f40d5a3d9b82534 +PT= b6c25c0e4ca560707588321aaf41119c +TEST= 328 +KEY= b12c0149a6edd2dc3742d10822feddf771e8b7ca5b78cdf838135543e4968aae +IV= 84c2956172019b30277c0e3ad60533e1 +CT= b6c25c0e4ca560707588321aaf41119c +PT= 09137df5460434e863647b4b50e17a60 +TEST= 329 +KEY= cfec596ce216b14a955e7cbc095c198678fbca3f1d7cf9105b772e08b477f0ce +IV= 7ec0582544fb6396a21cadb42ba2c471 +CT= 09137df5460434e863647b4b50e17a60 +PT= 17a26688b271e9765f41c71cd8cf0c25 +TEST= 330 +KEY= 35903ff91cc199c048c6c031aa2f4fc96f59acb7af0d10660436e9146cb8fceb +IV= fa7c6695fed7288add98bc8da373564f +CT= 17a26688b271e9765f41c71cd8cf0c25 +PT= 62e3c4d53decb83fcd5f57d1971d58fb +TEST= 331 +KEY= f262476804b79c1f85feb875ccd5fc3e0dba686292e1a859c969bec5fba5a410 +IV= c7f27891187605dfcd38784466fab3f7 +CT= 62e3c4d53decb83fcd5f57d1971d58fb +PT= 3495c5855d819b6ff779fc7ac59beb53 +TEST= 332 +KEY= dc61e5cfc9bae6b23b894486ad478add392fade7cf6033363e1042bf3e3e4f43 +IV= 2e03a2a7cd0d7aadbe77fcf3619276e3 +CT= 3495c5855d819b6ff779fc7ac59beb53 +PT= 7440abe9e1374208cfbccc18adc6089f +TEST= 333 +KEY= c9d2e747a1a6d594ccae434b7605c8fb4d6f060e2e57713ef1ac8ea793f847dc +IV= 15b30288681c3326f72707cddb424226 +CT= 7440abe9e1374208cfbccc18adc6089f +PT= b6802f0f62a28af7326cdb2144e8de87 +TEST= 334 +KEY= 99fef610cfffacbe8c6ad0a2b0c8f8a7fbef29014cf5fbc9c3c05586d710995b +IV= 502c11576e59792a40c493e9c6cd305c +CT= b6802f0f62a28af7326cdb2144e8de87 +PT= b84d7d91e60c131f6f042d403d85c47b +TEST= 335 +KEY= 91eb2713a930b6a53993029d5a056b4143a25490aaf9e8d6acc478c6ea955d20 +IV= 0815d10366cf1a1bb5f9d23feacd93e6 +CT= b84d7d91e60c131f6f042d403d85c47b +PT= 4ddf64827a16f90b5e6b306e8f227db7 +TEST= 336 +KEY= c15019d3523304cc9231b33c53c7fe1e0e7d3012d0ef11ddf2af48a865b72097 +IV= 50bb3ec0fb03b269aba2b1a109c2955f +CT= 4ddf64827a16f90b5e6b306e8f227db7 +PT= fdf6e5b6486e11839eb3a7f5c3898f54 +TEST= 337 +KEY= e24b749901384f48b2e740c51175e311f38bd5a49881005e6c1cef5da63eafc3 +IV= 231b6d4a530b4b8420d6f3f942b21d0f +CT= fdf6e5b6486e11839eb3a7f5c3898f54 +PT= 841ef37b4af82cc5eb00e11775079d81 +TEST= 338 +KEY= 44b7fffa042dca1bf276d4911d4b0be2779526dfd2792c9b871c0e4ad3393242 +IV= a6fc8b6305158553409194540c3ee8f3 +CT= 841ef37b4af82cc5eb00e11775079d81 +PT= 1725af7f70b65fbb060d29b3bcdf0a31 +TEST= 339 +KEY= b724b2cd569e436b20594e10576934bf60b089a0a2cf7320811127f96fe63873 +IV= f3934d3752b38970d22f9a814a223f5d +CT= 1725af7f70b65fbb060d29b3bcdf0a31 +PT= 2ccc6d09954e5fe6c6a87e18950eed02 +TEST= 340 +KEY= e9eb02e31cabd14dff231f1f649294044c7ce4a937812cc647b959e1fae8d571 +IV= 5ecfb02e4a359226df7a510f33fba0bb +CT= 2ccc6d09954e5fe6c6a87e18950eed02 +PT= c82c82af68eace2af22c3266f898f573 +TEST= 341 +KEY= 90c8f71b05be122afe5d58a7a1aab666845066065f6be2ecb5956b8702702002 +IV= 7923f5f81915c367017e47b8c5382262 +CT= c82c82af68eace2af22c3266f898f573 +PT= 377f6966928959f2d68f3a2bd0ea3735 +TEST= 342 +KEY= 1be70b607cf9a9e35df916c4cc103febb32f0f60cde2bb1e631a51acd29a1737 +IV= 8b2ffc7b7947bbc9a3a44e636dba898d +CT= 377f6966928959f2d68f3a2bd0ea3735 +PT= 3a8ccf4943b9866a9abbec0ba46f25db +TEST= 343 +KEY= 631b2c30fea26433f0cbcd01b1ce974089a3c0298e5b3d74f9a1bda776f532ec +IV= 78fc2750825bcdd0ad32dbc57ddea8ab +CT= 3a8ccf4943b9866a9abbec0ba46f25db +PT= 3b767eab7f0c2d24bbe5565e93dc3e24 +TEST= 344 +KEY= 8785e70a8cd45a8fe1e4382dc62d563db2d5be82f15710504244ebf9e5290cc8 +IV= e49ecb3a72763ebc112ff52c77e3c17d +CT= 3b767eab7f0c2d24bbe5565e93dc3e24 +PT= 619610c6a4a8e9b196e65d2e5d463968 +TEST= 345 +KEY= b49bad1e8eb8b9cf7f32048a81e5bcd3d343ae4455fff9e1d4a2b6d7b86f35a0 +IV= 331e4a14026ce3409ed63ca747c8eaee +CT= 619610c6a4a8e9b196e65d2e5d463968 +PT= f12af66580b33c3113c45cf5efd52f4f +TEST= 346 +KEY= 3c92453c6342b6cdc18bfe05241eb5d922695821d54cc5d0c766ea2257ba1aef +IV= 8809e822edfa0f02beb9fa8fa5fb090a +CT= f12af66580b33c3113c45cf5efd52f4f +PT= a427e0b2cd34285167999a9f18295d26 +TEST= 347 +KEY= 24a1f21ca68cf23f1674bf5328219987864eb8931878ed81a0ff70bd4f9347c9 +IV= 1833b720c5ce44f2d7ff41560c3f2c5e +CT= a427e0b2cd34285167999a9f18295d26 +PT= 85f5855acb2741070e1c89f904cbdbea +TEST= 348 +KEY= b5479f4d4a0dbbffbf86c576009f241403bb3dc9d35fac86aee3f9444b589c23 +IV= 91e66d51ec8149c0a9f27a2528bebd93 +CT= 85f5855acb2741070e1c89f904cbdbea +PT= 295d7a02348a185f5c54113c734e9003 +TEST= 349 +KEY= aa9ce82b0b649063c874699c71e8a94e2ae647cbe7d5b4d9f2b7e87838160c20 +IV= 1fdb776641692b9c77f2acea71778d5a +CT= 295d7a02348a185f5c54113c734e9003 +PT= e466f369b840296aab1a24ed32a19f51 +TEST= 350 +KEY= a2ba72e2906e04c42c0047ef222fffe6ce80b4a25f959db359adcc950ab79371 +IV= 08269ac99b0a94a7e4742e7353c756a8 +CT= e466f369b840296aab1a24ed32a19f51 +PT= 099ceb8099dd025e4a57015168f75388 +TEST= 351 +KEY= ea9b425ccd937976eb04693f16c4dac4c71c5f22c6489fed13facdc46240c0f9 +IV= 482130be5dfd7db2c7042ed034eb2522 +CT= 099ceb8099dd025e4a57015168f75388 +PT= e40cd2c0a7e7cb35c64aeb396338a801 +TEST= 352 +KEY= d31bce56ba19a7cb6057c5f2ccb3786223108de261af54d8d5b026fd017868f8 +IV= 39808c0a778adebd8b53accdda77a2a6 +CT= e40cd2c0a7e7cb35c64aeb396338a801 +PT= 12e94732a52d15c624a8e554ab54c9a4 +TEST= 353 +KEY= f0cd039c509e0eff71b18ae3feeb186d31f9cad0c482411ef118c3a9aa2ca15c +IV= 23d6cdcaea87a93411e64f113258600f +CT= 12e94732a52d15c624a8e554ab54c9a4 +PT= 241c32c2c0c5c6cbe4bb354c054c68d7 +TEST= 354 +KEY= 0579beabf73dd177c1f1f0827da20ba115e5f812044787d515a3f6e5af60c98b +IV= f5b4bd37a7a3df88b0407a61834913cc +CT= 241c32c2c0c5c6cbe4bb354c054c68d7 +PT= e4ea5643cf19ef64820a1b591de1c378 +TEST= 355 +KEY= 99c7c61f7153ffa0f07380d052431667f10fae51cb5e68b197a9edbcb2810af3 +IV= 9cbe78b4866e2ed7318270522fe11dc6 +CT= e4ea5643cf19ef64820a1b591de1c378 +PT= bc86d5465171b667ce837f874d933ff4 +TEST= 356 +KEY= c2a65a0a2e71f6e7e2bd9fbb5049f7914d897b179a2fded6592a923bff123507 +IV= 5b619c155f22094712ce1f6b020ae1f6 +CT= bc86d5465171b667ce837f874d933ff4 +PT= eeb9dc4ebd27720ad3527a1323d85413 +TEST= 357 +KEY= b635e7efd987991cd29414b3ebab2ea4a330a7592708acdc8a78e828dcca6114 +IV= 7493bde5f7f66ffb30298b08bbe2d935 +CT= eeb9dc4ebd27720ad3527a1323d85413 +PT= 78591e006b877ac6880834e3f98fd6b0 +TEST= 358 +KEY= f5849125e52b6df3cd8144ddb64178dddb69b9594c8fd61a0270dccb2545b7a4 +IV= 43b176ca3cacf4ef1f15506e5dea5679 +CT= 78591e006b877ac6880834e3f98fd6b0 +PT= 8f9a67cf96f4608d56923cb267855f3f +TEST= 359 +KEY= 41885734a072249ade0091a0ad87f47854f3de96da7bb69754e2e07942c0e89b +IV= b40cc611455949691381d57d1bc68ca5 +CT= 8f9a67cf96f4608d56923cb267855f3f +PT= 1b0b8d9118cbecba2d5ad17a261f9d56 +TEST= 360 +KEY= ff1a5b86e3545d9cb01a1222ec99a81c4ff85307c2b05a2d79b8310364df75cd +IV= be920cb2432679066e1a8382411e5c64 +CT= 1b0b8d9118cbecba2d5ad17a261f9d56 +PT= 6225e63f0c1a5de00fd63032908a51f3 +TEST= 361 +KEY= 836fb4dc9c17e5ad70404b41cc4a043e2dddb538ceaa07cd766e0131f455243e +IV= 7c75ef5a7f43b831c05a596320d3ac22 +CT= 6225e63f0c1a5de00fd63032908a51f3 +PT= 7c66e540c016fb81a345e10331fcaff3 +TEST= 362 +KEY= 63ca7d0e2675e43626b5311a7ba7131b51bb50780ebcfc4cd52be032c5a98bcd +IV= e0a5c9d2ba62019b56f57a5bb7ed1725 +CT= 7c66e540c016fb81a345e10331fcaff3 +PT= 2f010053d3c59bb8acb5b13b197a4204 +TEST= 363 +KEY= 6b5c4a2dd70fff3023b2a775becf05607eba502bdd7967f4799e5109dcd3c9c9 +IV= 08963723f17a1b060507966fc568167b +CT= 2f010053d3c59bb8acb5b13b197a4204 +PT= 8918e06b8619b43e859171a345e246ae +TEST= 364 +KEY= 575661f811b8d8b50980a55848a48949f7a2b0405b60d3cafc0f20aa99318f67 +IV= 3c0a2bd5c6b727852a32022df66b8c29 +CT= 8918e06b8619b43e859171a345e246ae +PT= 60ff920a8495ad880459737525c109d6 +TEST= 365 +KEY= 5facbe49de8f64786918067e7e361681975d224adff57e42f85653dfbcf086b1 +IV= 08fadfb1cf37bccd6098a32636929fc8 +CT= 60ff920a8495ad880459737525c109d6 +PT= 03f09a2c18db8bae5ccc93b9165a1d16 +TEST= 366 +KEY= 9bfda5803ac1c3004f0b138885de59fe94adb866c72ef5eca49ac066aaaa9ba7 +IV= c4511bc9e44ea778261315f6fbe84f7f +CT= 03f09a2c18db8bae5ccc93b9165a1d16 +PT= 52cb3af36047f4d14c2eaee3c3f8af2a +TEST= 367 +KEY= 614239035d7ef489de2f88fdb6188ec3c6668295a769013de8b46e856952348d +IV= fabf9c8367bf378991249b7533c6d73d +CT= 52cb3af36047f4d14c2eaee3c3f8af2a +PT= 249794b3822bb06708b5d5777d297c40 +TEST= 368 +KEY= 20befe90ba9c7ee9cfb1e569fe354258e2f116262542b15ae001bbf2147b48cd +IV= 41fcc793e7e28a60119e6d94482dcc9b +CT= 249794b3822bb06708b5d5777d297c40 +PT= 1836ae59eae452dac108618decd666bd +TEST= 369 +KEY= e11e8bf6de253e4fbadedfd44b34be15fac7b87fcfa6e3802109da7ff8ad2e70 +IV= c1a0756664b940a6756f3abdb501fc4d +CT= 1836ae59eae452dac108618decd666bd +PT= 20ee84deb0e7b0c83d74ce251aa1615c +TEST= 370 +KEY= d519038d457b4bcd9dd50c8f64fe2f2ada293ca17f4153481c7d145ae20c4f2c +IV= 3407887b9b5e7582270bd35b2fca913f +CT= 20ee84deb0e7b0c83d74ce251aa1615c +PT= 6fa7d3584a2e4b803ac1ac07b09931a2 +TEST= 371 +KEY= 82f1611cfb9e7af9f9274c6bf1b96bebb58eeff9356f18c826bcb85d52957e8e +IV= 57e86291bee5313464f240e4954744c1 +CT= 6fa7d3584a2e4b803ac1ac07b09931a2 +PT= a7b8f8ac07bab843f4e7942a6e4a85d5 +TEST= 372 +KEY= dff5a6de8ade9ab78cf1e637f44fd3351236175532d5a08bd25b2c773cdffb5b +IV= 5d04c7c27140e04e75d6aa5c05f6b8de +CT= a7b8f8ac07bab843f4e7942a6e4a85d5 +PT= 7f3c3702404e6e013474a0aa0ef85527 +TEST= 373 +KEY= 9c6a11136f64f462e7c5cb30049cda056d0a2057729bce8ae62f8cdd3227ae7c +IV= 439fb7cde5ba6ed56b342d07f0d30930 +CT= 7f3c3702404e6e013474a0aa0ef85527 +PT= 7c0c44dc96872dee0bac71ddbdcc84e3 +TEST= 374 +KEY= 2c95624add9b1e09f13ae579333b22bb1106648be41ce364ed83fd008feb2a9f +IV= b0ff7359b2ffea6b16ff2e4937a7f8be +CT= 7c0c44dc96872dee0bac71ddbdcc84e3 +PT= b9e4597c562e9b5c0e6815e64f767ce9 +TEST= 375 +KEY= cbb3f14a21e49825990b89e7d07bc386a8e23df7b2327838e3ebe8e6c09d5676 +IV= e7269300fc7f862c68316c9ee340e13d +CT= b9e4597c562e9b5c0e6815e64f767ce9 +PT= 4b37a1fd978f50be9ea482cfbeacfa08 +TEST= 376 +KEY= 65b742ffd29d9b07f3956625aed7382ee3d59c0a25bd28867d4f6a297e31ac7e +IV= ae04b3b5f37903226a9eefc27eacfba8 +CT= 4b37a1fd978f50be9ea482cfbeacfa08 +PT= d3406b71ffc847c364199666a808c43a +TEST= 377 +KEY= 6c6a4de74af6c443b4f6a1c7dab4a28e3095f77bda756f451956fc4fd6396844 +IV= 09dd0f18986b5f444763c7e274639aa0 +CT= d3406b71ffc847c364199666a808c43a +PT= 94744ece39108cb8084df8a17c49cdcc +TEST= 378 +KEY= ad09e82afaa9f5168cd9b83f44c096a0a4e1b9b5e365e3fd111b04eeaa70a588 +IV= c163a5cdb05f3155382f19f89e74342e +CT= 94744ece39108cb8084df8a17c49cdcc +PT= 45ef43a20d7f174da1463dda678bbffb +TEST= 379 +KEY= dc29cbf4e8b92311a9aa788c437a8edde10efa17ee1af4b0b05d3934cdfb1a73 +IV= 712023de1210d6072573c0b307ba187d +CT= 45ef43a20d7f174da1463dda678bbffb +PT= 4480fb073aa197507e376c56b824c753 +TEST= 380 +KEY= 93308b36d3a2e1a952b96fe4687b2df9a58e0110d4bb63e0ce6a556275dfdd20 +IV= 4f1940c23b1bc2b8fb1317682b01a324 +CT= 4480fb073aa197507e376c56b824c753 +PT= c8bbb77d206ef37c7c40db175d105271 +TEST= 381 +KEY= 9682c995955d18471758c504201e93ac6d35b66df4d5909cb22a8e7528cf8f51 +IV= 05b242a346fff9ee45e1aae04865be55 +CT= c8bbb77d206ef37c7c40db175d105271 +PT= 50c0b9001c716d53470fc9b011191402 +TEST= 382 +KEY= 60854b33be79b0e631b1af9046c46d153df50f6de8a4fdcff52547c539d69b53 +IV= f60782a62b24a8a126e96a9466dafeb9 +CT= 50c0b9001c716d53470fc9b011191402 +PT= 8db5367a34c5e5b93486ab07ca8bb02e +TEST= 383 +KEY= 7ee74e63d01f31d44b3860471b0be50fb0403917dc611876c1a3ecc2f35d2b7d +IV= 1e6205506e6681327a89cfd75dcf881a +CT= 8db5367a34c5e5b93486ab07ca8bb02e +PT= 4f9b922c88c1750829d9088f16edb529 +TEST= 384 +KEY= a65ee6ce576182f487d2c21c4f8539f3ffdbab3b54a06d7ee87ae44de5b09e54 +IV= d8b9a8ad877eb320cceaa25b548edcfc +CT= 4f9b922c88c1750829d9088f16edb529 +PT= 05a705f6b55d3acf3e95e8264feffdcc +TEST= 385 +KEY= 64f9a7df5da898c968746f96692f1892fa7caecde1fd57b1d6ef0c6baa5f6398 +IV= c2a741110ac91a3defa6ad8a26aa2161 +CT= 05a705f6b55d3acf3e95e8264feffdcc +PT= d1fb7c1a698990ac81068d08be1ce91f +TEST= 386 +KEY= 019663655974433ad5731bc4388a067d2b87d2d78874c71d57e9816314438a87 +IV= 656fc4ba04dcdbf3bd07745251a51eef +CT= d1fb7c1a698990ac81068d08be1ce91f +PT= a1cd24aafcee3a60a025b983d10d8e54 +TEST= 387 +KEY= 16ef87a84f0627345ced6385a62374778a4af67d749afd7df7cc38e0c54e04d3 +IV= 1779e4cd1672640e899e78419ea9720a +CT= a1cd24aafcee3a60a025b983d10d8e54 +PT= b9064d063d2c8d8d935b53cbef3224e2 +TEST= 388 +KEY= 80931c61e23ba976ffc9288f74ad876d334cbb7b49b670f064976b2b2a7c2031 +IV= 967c9bc9ad3d8e42a3244b0ad28ef31a +CT= b9064d063d2c8d8d935b53cbef3224e2 +PT= 8ad3b2222d84a4b25dc1311378027207 +TEST= 389 +KEY= 227ace0315678dee433049d8cdfee2d8b99f09596432d44239565a38527e5236 +IV= a2e9d262f75c2498bcf96157b95365b5 +CT= 8ad3b2222d84a4b25dc1311378027207 +PT= 3a7fc9d43f1f997faf4931101c5b5fd4 +TEST= 390 +KEY= 11799a22d50c53a89edf396b7c7565ad83e0c08d5b2d4d3d961f6b284e250de2 +IV= 33035421c06bde46ddef70b3b18b8775 +CT= 3a7fc9d43f1f997faf4931101c5b5fd4 +PT= 930860056fe2fddc10059d09385c0415 +TEST= 391 +KEY= 58de85d9975d5f8a16c47c834568ef1d10e8a08834cfb0e1861af621767909f7 +IV= 49a71ffb42510c22881b45e8391d8ab0 +CT= 930860056fe2fddc10059d09385c0415 +PT= f41ccb823840ff7d16c6990a14e591d9 +TEST= 392 +KEY= 3c8567cd05af33761fe05fbdc2596ebfe4f46b0a0c8f4f9c90dc6f2b629c982e +IV= 645be21492f26cfc0924233e873181a2 +CT= f41ccb823840ff7d16c6990a14e591d9 +PT= 82899b698456363c175791b845d5736f +TEST= 393 +KEY= f50f05cbddfebe7a656ee5c08cc24ff5667df06388d979a0878bfe932749eb41 +IV= c98a6206d8518d0c7a8eba7d4e9b214a +CT= 82899b698456363c175791b845d5736f +PT= cf85bfda1dff5adffaf1b3e000b407f3 +TEST= 394 +KEY= b44aa91a374d1c5a7bd00557cbd24962a9f84fb99526237f7d7a4d7327fdecb2 +IV= 4145acd1eab3a2201ebee09747100697 +CT= cf85bfda1dff5adffaf1b3e000b407f3 +PT= 34eea75cc20c6edee9a5379c3b5cf01a +TEST= 395 +KEY= 4c401127c0afabbea4c93fd80ba009cc9d16e8e5572a4da194df7aef1ca11ca8 +IV= f80ab83df7e2b7e4df193a8fc07240ae +CT= 34eea75cc20c6edee9a5379c3b5cf01a +PT= 27c6392abe790b448cc9216b3fcf5454 +TEST= 396 +KEY= 44d59cb8ebcc91362462d1d8fe193270bad0d1cfe95346e518165b84236e48fc +IV= 08958d9f2b633a8880abee00f5b93bbc +CT= 27c6392abe790b448cc9216b3fcf5454 +PT= 2c39ac10c7d51b61d8f437d9baa24a55 +TEST= 397 +KEY= e42795da2bf8fa7a3b0e83923a5e243196e97ddf2e865d84c0e26c5d99cc02a9 +IV= a0f20962c0346b4c1f6c524ac4471641 +CT= 2c39ac10c7d51b61d8f437d9baa24a55 +PT= f828bc735827c106e61f8fffe9453a77 +TEST= 398 +KEY= 7f05dc0cd80178018d3a90e4a0ce63156ec1c1ac76a19c8226fde3a2708938de +IV= 9b2249d6f3f9827bb63413769a904724 +CT= f828bc735827c106e61f8fffe9453a77 +PT= df8129a79852fee2a8015a2379a7215b +TEST= 399 +KEY= 935560c6072d897477d71ac4c12188d0b140e80beef362608efcb981092e1985 +IV= ec50bccadf2cf175faed8a2061efebc5 +CT= df8129a79852fee2a8015a2379a7215b +PT= cd6429cf3f81f8b4f82bc627a8283096 diff --git a/flint/test/testvals/cbcmd64.txt b/flint/test/testvals/cbcmd64.txt new file mode 100644 index 0000000..e517ce6 --- /dev/null +++ b/flint/test/testvals/cbcmd64.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= f15b5ed731ac6f8ae9a59d5faf4abadbc844e15e7d94d7ac +TEST= 1 +KEY= e9a59d5faf4abadbc844e15e7d94d7ac +IV= c416e7f8a51f3ca0073c0ec262fb3791f0fa8db87918ec73 +CT= f15b5ed731ac6f8ae9a59d5faf4abadbc844e15e7d94d7ac +PT= b5f0eef6795359e506b9c734580adca69480ca518acb7b6a +TEST= 2 +KEY= ef1c5a6bf740667d5cc42b0ff75facc6 +IV= d07e8c641b3d98d1bfc370a409ddc80e9b4376b997719361 +CT= b5f0eef6795359e506b9c734580adca69480ca518acb7b6a +PT= 8ecf890ccece604ed6a1356340798208c278615c4b96be45 +TEST= 3 +KEY= 39bd6f08b739e4759ebc4a53bcc91283 +IV= 38f2d6dffcead072b8ce221cb12df06c23616dcdc0c346da +CT= 8ecf890ccece604ed6a1356340798208c278615c4b96be45 +PT= 50ed8c42dcbbbfbcd65e66b1f4c2eeb8448dbb8bb9810547 +TEST= 4 +KEY= efe309b943fb0acdda31f1d8054817c4 +IV= 008e1f08a6fffd0b04b65630a6a0c05b234cfc13cc38772b +CT= 50ed8c42dcbbbfbcd65e66b1f4c2eeb8448dbb8bb9810547 +PT= b131e454bcf3d87516589d8ff4a91a4a740aea47ce1c4bc5 +TEST= 5 +KEY= f9bb9436b7521087ae3b1b9fcb545c01 +IV= bf0da55c55f494ebe08c51d44bd151b75db69048493dd98b +CT= b131e454bcf3d87516589d8ff4a91a4a740aea47ce1c4bc5 +PT= 32605a94cf35afb297c06ca16587da5d6e6b8a00ee775cf2 +TEST= 6 +KEY= 6e7bf897d2d5cadac050919f252300f3 +IV= 5d8f74c94bfbe4f5f1f6a586459294197f88e6cb2955ad21 +CT= 32605a94cf35afb297c06ca16587da5d6e6b8a00ee775cf2 +PT= 670b494838a095a091b3fd60028403555a0fb7c1c7fce44c +TEST= 7 +KEY= ffc805f7d051c98f9a5f265ee2dfe4bf +IV= 001620023612f4189fbb55d3f0c7c36c5dd695c781cbc48f +CT= 670b494838a095a091b3fd60028403555a0fb7c1c7fce44c +PT= 998bfa583da264b5353eaa4f84c30ef8cfb5c271d4bb5805 +TEST= 8 +KEY= caf6afb85492c77755eae42f3664bcba +IV= 56ed6c4dca6d3121e20fff4bcdb6da0eb01e26755de5df19 +CT= 998bfa583da264b5353eaa4f84c30ef8cfb5c271d4bb5805 +PT= 64e04d3250233105bc3bdf58c123d7ee50655a1fee5abc2a +TEST= 9 +KEY= 76cd70e095b11099058fbe30d83e0090 +IV= 8574cf41214cc1bf278dd91263c35dfd29e0495dc9fdfa22 +CT= 64e04d3250233105bc3bdf58c123d7ee50655a1fee5abc2a +PT= bb2f225fc8e55473223e7ab932a858f1749b50673ab70293 +TEST= 10 +KEY= 54f30a59a71948687114ee57e2890203 +IV= c9bcdae104b074b3743a7d76a2dfe715d55203ea4a0ee16a +CT= bb2f225fc8e55473223e7ab932a858f1749b50673ab70293 +PT= edb0e32999778473c1b0288c2f29eb10259ec792715b04a9 +TEST= 11 +KEY= 954322d58830a378548a29c593d206aa +IV= 37968c16605d257a80fbcf57afdaac0800e99f80888fb2a0 +CT= edb0e32999778473c1b0288c2f29eb10259ec792715b04a9 +PT= 7d17af1596d1b351d9c4ec16e074ced518c2841a86ede260 +TEST= 12 +KEY= 4c87cec368446dad4c48addf153fe4ca +IV= ebc6cc63735265a3be288fa976331dcd0b00c3f9e351ff0c +CT= 7d17af1596d1b351d9c4ec16e074ced518c2841a86ede260 +PT= 5527bb79f3a67cb10303616b69887436580a2a7f5c4ad4bb +TEST= 13 +KEY= 4f84afa801cc199b144287a049753071 +IV= d6f779e2c7e4e067b1f442d1ab45803f2182c133bab84285 +CT= 5527bb79f3a67cb10303616b69887436580a2a7f5c4ad4bb +PT= 1bdf4045d1bbd06d63d685ecdd2b63a9c5ae623a96a5d3fc +TEST= 14 +KEY= 2c522a44dce77a32d1ece59adfd0e38d +IV= 656a8f53543bada61cacfd71d267fe74ccf79df98e043595 +CT= 1bdf4045d1bbd06d63d685ecdd2b63a9c5ae623a96a5d3fc +PT= c2962a64c19bfd01a119fea688770b8f42f4c82e70b91447 +TEST= 15 +KEY= 8d4bd4e2549071bd93182db4af69f7ca +IV= b1052eb24c3486c977d1e5ab451329821e7c82c42c335435 +CT= c2962a64c19bfd01a119fea688770b8f42f4c82e70b91447 +PT= bec21a2fbebc4306dfe2e59e6924fd6172ed2484d09e66d0 +TEST= 16 +KEY= 52a9317c3db48cdce1f509307ff7911a +IV= df4193f123a1a1508820d63f208b86c1c0e4d8d7f6d5e1b9 +CT= bec21a2fbebc4306dfe2e59e6924fd6172ed2484d09e66d0 +PT= 3dfba8476263fdff898289d0c7740c7eec285a3bdf0a6550 +TEST= 17 +KEY= db2bb8acfac080a20ddd530ba0fdf44a +IV= cb7be0be9eae23171fb2296e996c84457c264dd0f9b89a22 +CT= 3dfba8476263fdff898289d0c7740c7eec285a3bdf0a6550 +PT= 98ca459cd4af3661f09397ad7238f1fb259d5da30c98053d +TEST= 18 +KEY= 2bb82f0188f8715928400ea8ac65f177 +IV= 85c7e81ddf06af7f65b7c5e4ee9410a47249d94817e3c307 +CT= 98ca459cd4af3661f09397ad7238f1fb259d5da30c98053d +PT= 47b11e0d1a9b73ebecc2d09d38605a1afb2eb7386c08bb44 +TEST= 19 +KEY= c77aff9cb0982b43d36eb990c06d4a33 +IV= c528c57094031ab34b2cda2d462723269f3b49675e630c41 +CT= 47b11e0d1a9b73ebecc2d09d38605a1afb2eb7386c08bb44 +PT= 3ec4913e1e713675a84a2ee33d199dad4c1a20b3d1b5d782 +TEST= 20 +KEY= 6f30d17f8d81b6ee9f74992311d89db1 +IV= dfde9c502dc9b8db01da3af88d85ee144e60c201540cfca4 +CT= 3ec4913e1e713675a84a2ee33d199dad4c1a20b3d1b5d782 +PT= 982dd89cb1dc21370f5338b546840225d0f7645c58fe149a +TEST= 21 +KEY= 6063e9cacb05b4cb4f83fd7f4926892b +IV= ca27da6418fb453ef168f04799f153d39cc9e16ae783d0bd +CT= 982dd89cb1dc21370f5338b546840225d0f7645c58fe149a +PT= 41877428565ef6cb17abd4f008a57c6fbf1ac2466718d05e +TEST= 22 +KEY= 77c83d3ac3a0c8a4f0993f392e3e5975 +IV= aaf0059e59507b99be0e5c4a4a8212e1da2e6b02e9d601c9 +CT= 41877428565ef6cb17abd4f008a57c6fbf1ac2466718d05e +PT= 29165af3060554429bf776e4e88d2fcfc4c89aebd6f45b4b +TEST= 23 +KEY= ec3f4bde2b2de76b3451a5d2f8ca023e +IV= 3fd82a4f28addc0f10c189609c4dd0b4e0e101272dcb434f +CT= 29165af3060554429bf776e4e88d2fcfc4c89aebd6f45b4b +PT= 0e1571288c1b703eeefbf25b9fb964e83c7fc3b84c136013 +TEST= 24 +KEY= 02c4b985b4948383082e666ab4d9622d +IV= 8eda4e82baae6e20cdcfe0b4e3d6009246b6c1bed45cb527 +CT= 0e1571288c1b703eeefbf25b9fb964e83c7fc3b84c136013 +PT= fc4bd7ff8d6585e5c8d70b757c7f1f514ccc778ce34f1b9a +TEST= 25 +KEY= ca13b2f0c8eb9cd244e211e6579679b7 +IV= 1ffab9c699609becd5e9e3b6b4df2d5f5d794247cfa6fe4a +CT= fc4bd7ff8d6585e5c8d70b757c7f1f514ccc778ce34f1b9a +PT= f342642f267ea23835d7218cf70d0ed41fe0566769d5ac41 +TEST= 26 +KEY= ffc4937c3fe692065b0247813e43d5f6 +IV= a73726a73a9c6edea4fe32eb65c0e34874fde1d891851fb1 +CT= f342642f267ea23835d7218cf70d0ed41fe0566769d5ac41 +PT= 94c31b8b47633a11464422dfaf572393a6b79bf0f884d59e +TEST= 27 +KEY= b980b1a390b1b195fdb5dc71c6c70068 +IV= a86ee813c8746d2ef5d6374ec7cc85e9dcaa55f570c22976 +CT= 94c31b8b47633a11464422dfaf572393a6b79bf0f884d59e +PT= 5ff578466ad00f69cb49b14e6ffa5cd2e1b09c1ec3ef376d +TEST= 28 +KEY= 72c900edff4bed471c05406f05283705 +IV= 3b8dde2de4b03f817a3706534e8dc028f5aa21c43d617b81 +CT= 5ff578466ad00f69cb49b14e6ffa5cd2e1b09c1ec3ef376d +PT= 08b5d8b626ca6ce3a59418d306ff9cfc9e1bbde8bb20435b +TEST= 29 +KEY= d75d183ef9b471bb821efd87be08745e +IV= 53c35ba9f259e255c86adc55a4640ca1fa06534338c91db9 +CT= 08b5d8b626ca6ce3a59418d306ff9cfc9e1bbde8bb20435b +PT= 02829b4d9db0290ffe6f03e0a2169eeead3c49af3ac24935 +TEST= 30 +KEY= 29321bde5ba2ef552f22b42884ca3d6b +IV= 4386778ab0babd999a8a9a7e9804601a08cfc9e04c928c6d +CT= 02829b4d9db0290ffe6f03e0a2169eeead3c49af3ac24935 +PT= 8254dee3dbcc8e871e047795428b191939caf14d463ff3bb +TEST= 31 +KEY= 37366c4b1929f64c16e84565c2f5ced0 +IV= 741fd59c79686da9ca47b3ac8d42753ca381865865452666 +CT= 8254dee3dbcc8e871e047795428b191939caf14d463ff3bb +PT= 3ce1795b1175fd4eb1ff4ee3e992a107e740cc393149796f +TEST= 32 +KEY= 86c922a8f0bb574bf1a8895cf3bcb7bf +IV= d65aafbc922efb9658e91aa0122641d8040015b83b736291 +CT= 3ce1795b1175fd4eb1ff4ee3e992a107e740cc393149796f +PT= e142c3ae8cfae605aa64b1ac48063a5fae3d72453f833226 +TEST= 33 +KEY= 2cad9304b8bd6d145f95fb19cc3f8599 +IV= 716e821bcf6bd5fd95ef86a341fde7d007ecd6ce7440c21a +CT= e142c3ae8cfae605aa64b1ac48063a5fae3d72453f833226 +PT= 130c7ae62786c3effa9677fbb09de3f7a7df757ea6f65cd6 +TEST= 34 +KEY= d63be4ff08208ee3f84a8e676ac9d94f +IV= 2ff22a4647698e982dce26b0cf9b9258e6a9ec91ee638094 +CT= 130c7ae62786c3effa9677fbb09de3f7a7df757ea6f65cd6 +PT= 5675e626c15c2e1648ce989a28c156b5677e786fdfc81ec2 +TEST= 35 +KEY= 9ef57c6520e1d8569f34f608b501c78d +IV= c4277b2ffc00438199b1722d9915bef2a7ab9c041115f1a7 +CT= 5675e626c15c2e1648ce989a28c156b5677e786fdfc81ec2 +PT= 77e2eaee2dcdd553f7d9f64d04450fcaf5a7c2b99810e370 +TEST= 36 +KEY= 692c8a2824a4d79c6a9334b12d1124fd +IV= 0b7990f43e2ad2a0b35893a2d7d3dfacede59d9bdd74b882 +CT= 77e2eaee2dcdd553f7d9f64d04450fcaf5a7c2b99810e370 +PT= 315c78258c1c9e11ac8788332923a25c10233f0401fb3eb0 +TEST= 37 +KEY= c5ab021b0d8775c07ab00bb52cea1a4d +IV= d754b46e104d6f9f29077c59ce87b9c74660e0df1147075e +CT= 315c78258c1c9e11ac8788332923a25c10233f0401fb3eb0 +PT= fc454954a023cfba9b139ad1338b3c50c001ccc853640a16 +TEST= 38 +KEY= 5eb898ca3e0c4990bab1c77d7f8e105b +IV= c36926ef28753b9afeb51d97bc37652d8098f005d8ca6b70 +CT= fc454954a023cfba9b139ad1338b3c50c001ccc853640a16 +PT= 4f6f7e0db6ec71a6ada1ca1cda5cdedb1c93d20e102b75e8 +TEST= 39 +KEY= f31952d6e450974ba62215736fa565b3 +IV= e1ec00d844f88a9b4fed7c4da6309758fece09c9df558208 +CT= 4f6f7e0db6ec71a6ada1ca1cda5cdedb1c93d20e102b75e8 +PT= d701aee5284387a65897b7138d9340b99a19d43a16992e05 +TEST= 40 +KEY= ab8ee5c569c3d7f23c3bc149793c4bb6 +IV= 5fb0ef0257bb4b208874089c05f1cba6f6603dd96329167c +CT= d701aee5284387a65897b7138d9340b99a19d43a16992e05 +PT= 291f998a9ed0bb0476502b2326f81821bb092e7f6246ca2f +TEST= 41 +KEY= dddecee64f3bcfd38732ef361b7a8199 +IV= bb097a9b074bde6122550b4c9e3d43a21b91e927eca07cae +CT= 291f998a9ed0bb0476502b2326f81821bb092e7f6246ca2f +PT= 835dbeba77a83371339d80f97e7064846eb0fc3af6063f44 +TEST= 42 +KEY= ee434e1f314bab57e982130ced7cbedd +IV= c17377f69b0911b30383b2369ae1b60e37986eb1a64b2e38 +CT= 835dbeba77a83371339d80f97e7064846eb0fc3af6063f44 +PT= 72ac9c531148d12902a4fa4bbec0acde8bbabac5f4355fc7 +TEST= 43 +KEY= ece7b4548f8b07896238a9c91949e11a +IV= 37c80716ec31c8163cbe32f8f3f46711dbe1a41f1bd7e274 +CT= 72ac9c531148d12902a4fa4bbec0acde8bbabac5f4355fc7 +PT= 330e14db94dc9b0949239cf2b7a86173ffb0913bfc64b12c +TEST= 44 +KEY= a5c428a6382366fa9d8838f2e52d5036 +IV= 130fbdd489c4e9d4af733053ac20483921202f7894d77537 +CT= 330e14db94dc9b0949239cf2b7a86173ffb0913bfc64b12c +PT= 52753fe9571a3ff7154872f1c9e17f282fff4c418e43158a +TEST= 45 +KEY= b08c5a57f1c219d2b27774b36b6e45bc +IV= e4745f3d1666eb6f91f783520d5ad91b19900da66ce1f099 +CT= 52753fe9571a3ff7154872f1c9e17f282fff4c418e43158a +PT= c5fdeaba63899bb295d4a5b7697ef5b1e452bde2d1765531 +TEST= 46 +KEY= 2558ffe098bcec635625c951ba18108d +IV= 17be415fa753535f08996a3ce15749e2b5c9576060bb810a +CT= c5fdeaba63899bb295d4a5b7697ef5b1e452bde2d1765531 +PT= 1bc7125f029f1d1587650f7f5f228bedbc544fd887f5880b +TEST= 47 +KEY= a23df09fc79e678eea7186893ded9886 +IV= e5136c3225d4bc3c69a8955acfca337601b4d00e24f00634 +CT= 1bc7125f029f1d1587650f7f5f228bedbc544fd887f5880b +PT= d9a8683010c75c88a8c4b9756ca572c415402a095201ca5f +TEST= 48 +KEY= 0af949eaab3b154aff31ac806fec52d9 +IV= 4cdbb7b8ef4f6272ab8f10b42e62af84d14fe796dae92940 +CT= d9a8683010c75c88a8c4b9756ca572c415402a095201ca5f +PT= d6f15d931dcb425549506760f96c0359255183eba4818f9c +TEST= 49 +KEY= 43a92e8a52571613da602f6bcb6ddd45 +IV= 3f6cecaf7d4c1e43893f73acaa4a49a8e82b90875e7fcab9 +CT= d6f15d931dcb425549506760f96c0359255183eba4818f9c +PT= 351f5e3c2a86adb9f180347d5ba0a3a5829ff4f85a893c98 +TEST= 50 +KEY= b2291af709f7b5b658ffdb9391e4e1dd +IV= 4579cc7aa54b23c95c39c9e8605d15f4b903b905bed844f0 +CT= 351f5e3c2a86adb9f180347d5ba0a3a5829ff4f85a893c98 +PT= a0824f8cfcb0817e00bad61b69f38a76a9b3a4c48c308bad +TEST= 51 +KEY= b293ccec60043fc0f14c7f571dd46a70 +IV= 050e531bcfbe17dcee8dfcb318441b7ab0fdc902f1091963 +CT= a0824f8cfcb0817e00bad61b69f38a76a9b3a4c48c308bad +PT= 921a5d2cff99c45a6d3ff00abfad80cbfbf34918a4976ed9 +TEST= 52 +KEY= dfac3ce6dfa9bf0b0abf364fb94304a9 +IV= 580b5d296c08737c41a3ef4939e533e1881c63576cfdbfa0 +CT= 921a5d2cff99c45a6d3ff00abfad80cbfbf34918a4976ed9 +PT= 7421366a235e03d20bc80737357e467a5e0626479186d772 +TEST= 53 +KEY= d4643bd1ead7f97154b9100828c5d3db +IV= 97f2ff6fa69053c2eebda6d78c7d5cf8032aa6a27f65f8c9 +CT= 7421366a235e03d20bc80737357e467a5e0626479186d772 +PT= 63fd9cb5790f075ccaa1469a64772e67b4b002fda65a9748 +TEST= 54 +KEY= 1ec57d4b8ea0d716e00912f58e9f4493 +IV= 2f7ba73967f120130f3cbb56b9795afd9e0c558e7c8882c3 +CT= 63fd9cb5790f075ccaa1469a64772e67b4b002fda65a9748 +PT= 7caee980e9fb22ae0b308ca25e814afbed52cb8f41850e6c +TEST= 55 +KEY= 15f5f1e9d0219ded0d5bd97acf1a4aff +IV= 6ddbf1686eb1469a95829e890e735cd745486f2d7af95e1a +CT= 7caee980e9fb22ae0b308ca25e814afbed52cb8f41850e6c +PT= 38dd375ed5935671fb50b29121e4e098799e8ce26f24a5a6 +TEST= 56 +KEY= eea54378f1c57d7574c55598a03eef59 +IV= e2b6599cc5c6269db23b82d5d3521d3db73794bbff020adf +CT= 38dd375ed5935671fb50b29121e4e098799e8ce26f24a5a6 +PT= da4fd7d54c9424cfe3ee4fef0f17611a2f87e670887e0247 +TEST= 57 +KEY= 0d4b0c97fed21c6f5b42b3e82840ed1e +IV= 93e5f476cae1c540a52e45bd5ace4c300c246075f90f1e17 +CT= da4fd7d54c9424cfe3ee4fef0f17611a2f87e670887e0247 +PT= 474b6ab34c50963e3cada32e16fc3fb234701e135c1c68a3 +TEST= 58 +KEY= 31e6afb9e82e23dd6f32adfb745c85bd +IV= 895682ae55878a0b02a4c0096cf5e9150d345e6abe17bfa6 +CT= 474b6ab34c50963e3cada32e16fc3fb234701e135c1c68a3 +PT= e321cd071071c375a7142661fdc968ee0f8805850f91df57 +TEST= 59 +KEY= 96f289d815e74b3360baa87e7bcd5aea +IV= e9a6ae45d80bcacf53aa01bebafb88b2a2d9d603edbd1623 +CT= e321cd071071c375a7142661fdc968ee0f8805850f91df57 +PT= 62ee82185c06930ac9fc336bfe85dfef63988cf0372c340f +TEST= 60 +KEY= 5f0ebab3eb6294dc0322248e4ce16ee5 +IV= 4af172a633d185915a22a7514c54f53e0cf33e2e14d20369 +CT= 62ee82185c06930ac9fc336bfe85dfef63988cf0372c340f +PT= f579c0ab47cde201a8406034843ed7d154148c928934f0fc +TEST= 61 +KEY= f74eda876f5c430d5736a81cc5d59e19 +IV= a71b0411a793df4588ae185e77024a21e80d9b2bfbdfc51e +CT= f579c0ab47cde201a8406034843ed7d154148c928934f0fc +PT= a5a45d32d13055c7a303f9e01381a32c6c95cc6c4ef68731 +TEST= 62 +KEY= 544d23677cdde0213ba364708b231928 +IV= cd211254e66f6c0123ff8a95561580dbcbf8332e7fecc4dd +CT= a5a45d32d13055c7a303f9e01381a32c6c95cc6c4ef68731 +PT= 86b6bfce92f9f1eea1b7a7bc3c13b0d4c1e8f77f45329860 +TEST= 63 +KEY= f5fa84db40ce50f5fa4b930fce118148 +IV= 1ff587f5479123a1abc3e9d867ad94398f5cbf9a1813eec6 +CT= 86b6bfce92f9f1eea1b7a7bc3c13b0d4c1e8f77f45329860 +PT= 787b10660ae3916219e6bbd29bd2d4be7e836dae44b7d721 +TEST= 64 +KEY= ec1c3f09db1c844b84c8fea18aa65669 +IV= c654a38b505935ef06c8a34a8af806ab509f98efa0668bb0 +CT= 787b10660ae3916219e6bbd29bd2d4be7e836dae44b7d721 +PT= 6d8c673388255a486e7e32fde81fab8e26eace7aa80bebaf +TEST= 65 +KEY= 82620df433032fc5a22230db22adbdc6 +IV= 2e00c33fb95b04e53fbcf0544b00f009890161b9449e63bd +CT= 6d8c673388255a486e7e32fde81fab8e26eace7aa80bebaf +PT= 8353857588a07bc2e348abc7c377479e29a47e45df740e86 +TEST= 66 +KEY= 612aa633f074685b8b864e9efdd9b340 +IV= c94267952b252d48272d1484bbad2aa613723806c8140708 +CT= 8353857588a07bc2e348abc7c377479e29a47e45df740e86 +PT= e4de9d656b4f193392a7f4907c74ad6c178c266f1167e4de +TEST= 67 +KEY= f38d52a38c00c5379c0a68f1ecbe579e +IV= c9492486995d36e0e6d350385ac866ff0936a24cbbb4ce00 +CT= e4de9d656b4f193392a7f4907c74ad6c178c266f1167e4de +PT= eabe578aa55da5ccb1afc88decde51e9d60b41501863bd25 +TEST= 68 +KEY= 42229a2e60de94de4a0129a1f4ddeabb +IV= 09ab4ad00a7985370d1e0d001b989516c041e651ab28ff91 +CT= eabe578aa55da5ccb1afc88decde51e9d60b41501863bd25 +PT= 15297a3559ec70f2d0b73c98e2302e676a0bd7d88e14d629 +TEST= 69 +KEY= 9295a6b682eebab9200afe797ac93c92 +IV= 5ff1ab65056f0e6376e92b44473918b9198ec837d7742ea3 +CT= 15297a3559ec70f2d0b73c98e2302e676a0bd7d88e14d629 +PT= ae74a55e7b0b86e97dc4e29cb563a88c99b13296ae737a7d +TEST= 70 +KEY= ef51442a378d1235b9bbccefd4ba46ef +IV= 140f5315c15855242ba479b195921e6cdca8b8a9973d70e2 +CT= ae74a55e7b0b86e97dc4e29cb563a88c99b13296ae737a7d +PT= c1dd176f2262845e2817d1174d3b1c913cd7eb081dadaca4 +TEST= 71 +KEY= c746953d7ab60ea4856c27e7c917ea4b +IV= 535168661cc2d2a3c7e0cc493a260260037a742de5cc92df +CT= c1dd176f2262845e2817d1174d3b1c913cd7eb081dadaca4 +PT= 500e53fbf5fb67d25b8d71e54eafe7bda3292e4e9eba6efd +TEST= 72 +KEY= 9ccbe4d83419e919264509a957ad84b6 +IV= e41fcac258a42f019c8d18bb5b35a0b9e03d7fc62ed63399 +CT= 500e53fbf5fb67d25b8d71e54eafe7bda3292e4e9eba6efd +PT= a3992bfcf973148a2234c616a2efbda0b9e928cace1920f4 +TEST= 73 +KEY= beff22ce96f654b99fac216399b4a442 +IV= 0999a15108c4fc0a450b01a69bcdbc51fe044b55803cb80e +CT= a3992bfcf973148a2234c616a2efbda0b9e928cace1920f4 +PT= 9d9190d34649b678c023db18a081a294a00f730c7c27a65b +TEST= 74 +KEY= 7edcf9d63677f62d3fa3526fe5930219 +IV= 1ee2fc78f5b3ca8692a92f6083a3c83e944b6ba0866a58c9 +CT= 9d9190d34649b678c023db18a081a294a00f730c7c27a65b +PT= 5cc34c89f71c600d11daa75d591c63a31cc9d28a19c0c207 +TEST= 75 +KEY= 6f065e8b6f6b958e236a80e5fc53c01e +IV= 8c65708562626e9a71d9cfdebc248a6eba72da7b0844c411 +CT= 5cc34c89f71c600d11daa75d591c63a31cc9d28a19c0c207 +PT= 34e88045483068989ff210285bbe4dfed7d4e5a0b773967a +TEST= 76 +KEY= f0f44ea334d5d870f4be65454b205664 +IV= e06f8514a777ad3417af79ba83c001a68836898662f5a4f4 +CT= 34e88045483068989ff210285bbe4dfed7d4e5a0b773967a +PT= efd27fecae54a981ff5b814be3e3c3fde58a20e9aa6ade9c +TEST= 77 +KEY= 0fafcfe8d7361b8d113445ace14a88f8 +IV= 3d06737a069d172c3fca0216222c4364e91954eeae863d42 +CT= efd27fecae54a981ff5b814be3e3c3fde58a20e9aa6ade9c +PT= 273e5bb152ee3c21dd257a3fa1871ec7817acd152626118e +TEST= 78 +KEY= d28ab5d776b1054a904e88b9c76c9976 +IV= 9be8efe5089040858cf67925592c621d27e96533042fe0f2 +CT= 273e5bb152ee3c21dd257a3fa1871ec7817acd152626118e +PT= ce63cf2016b48403cf93c76df2fa903a66588c7ed6b9322b +TEST= 79 +KEY= 1d1972ba844b9570f61604c711d5ab5d +IV= 56ae4fa75fe658046145a738e22c79f59df15d612b11bd5e +CT= ce63cf2016b48403cf93c76df2fa903a66588c7ed6b9322b +PT= 83c366fcb04a071ff1914f9466e22c3e3ab713bdc5c38832 +TEST= 80 +KEY= ec883d2ee2a9b94ecca1177ad416236f +IV= 8c4d6a8e202498d0e49acc35bdd8588ee8fb3aad384f9a65 +CT= 83c366fcb04a071ff1914f9466e22c3e3ab713bdc5c38832 +PT= ff8d6e6770f5bfe13c5f04a6521a17aa8d0abb38ced6576b +TEST= 81 +KEY= d0d73988b0b3aee441abac421ac07404 +IV= c5f61da8daebd9c64a042800caf46f40a305a69fc0e1ee8b +CT= ff8d6e6770f5bfe13c5f04a6521a17aa8d0abb38ced6576b +PT= 496f67093841697d56efc9aee82e3b1862213535e289536c +TEST= 82 +KEY= 8638f026589d95fc238a9977f8492768 +IV= 67ec8c3000b16a8e8a1c130277724a11cc01097ddf31a81c +CT= 496f67093841697d56efc9aee82e3b1862213535e289536c +PT= dc67d47041a2fafe470922de00c2483c4c2ec57fb5f966d8 +TEST= 83 +KEY= c131d2f8585fddc06fa45c084db041b0 +IV= 053e8a2373e28e2623ca5bd2ca9036d1aa3c02a7b07aa007 +CT= dc67d47041a2fafe470922de00c2483c4c2ec57fb5f966d8 +PT= cebd9b5aedf0bd2a1fcdcf34818667a1664351a13266decf +TEST= 84 +KEY= defc1dccd9d9ba6109e70da97fd69f7f +IV= 68995dd0505a1657a79e3deb0223f98ccb0a381044a45928 +CT= cebd9b5aedf0bd2a1fcdcf34818667a1664351a13266decf +PT= 7bbd9a8452104dcef0c97fa270bebe5fed5458041a0a0652 +TEST= 85 +KEY= 2e35626ea967043ee4b355ad65dc992d +IV= 9b68385c457795af2f89de6d9d73d5e5d408640133bfef78 +CT= 7bbd9a8452104dcef0c97fa270bebe5fed5458041a0a0652 +PT= 248d1b76386df8d64e01ce9f8a4a7b4b9c367068512fabaa +TEST= 86 +KEY= 6034acf1232d7f75788525c534f33287 +IV= 68a94e3488ae7894fcb51c96d70cde18fe2f251d7276d10a +CT= 248d1b76386df8d64e01ce9f8a4a7b4b9c367068512fabaa +PT= 9dd47612dcbd4e3e2457ddccaf898ce1b1c6c902bd3f12b8 +TEST= 87 +KEY= 4463713d8ca4f394c943ecc789cc203f +IV= cf9cf0ee76576d27fbc95bcb5147af518c150d506699e58e +CT= 9dd47612dcbd4e3e2457ddccaf898ce1b1c6c902bd3f12b8 +PT= d20ece5f9cbf4081c8b0a19958c810813c70181ef174a181 +TEST= 88 +KEY= 8cd3d0a4d46ce315f533f4d978b881be +IV= 7518d2b63e7f3dc9d1c5afc3318b4ff1ba3d1312a741e831 +CT= d20ece5f9cbf4081c8b0a19958c810813c70181ef174a181 +PT= 13b63809634f357ffc064851c4cf41a9d75079fb904cd8c0 +TEST= 89 +KEY= 70d598f510a3a2bc22638d22e8f4597e +IV= 6cee78f002344bd0286f24888e36c4320cb16c450f095726 +CT= 13b63809634f357ffc064851c4cf41a9d75079fb904cd8c0 +PT= b9fc0a45a116d7f8d6a0a260571c174a09bbcecad4f89ea6 +TEST= 90 +KEY= a6753a9547bfb5f62bd843e83c0cc7d8 +IV= c77c1c97838eb5dbc3aea83b1eb5fa31f822c2fffcee17e3 +CT= b9fc0a45a116d7f8d6a0a260571c174a09bbcecad4f89ea6 +PT= 5f731e1665e8a8120e5b93abb9c0d220609a982cd15ffd06 +TEST= 91 +KEY= a82ea93efe7f67d64b42dbc4ed533ade +IV= c54af32834a07d3459e76aa779e3ce863eeedc570d486f7c +CT= 5f731e1665e8a8120e5b93abb9c0d220609a982cd15ffd06 +PT= bc025b35a2ed891173cbd3e354da383d158c74ac16882810 +TEST= 92 +KEY= dbe57addaaa55feb5eceaf68fbdb12ce +IV= c0959ab861cdbce4856efe22ef0dddaed558c783b1a4f7e8 +CT= bc025b35a2ed891173cbd3e354da383d158c74ac16882810 +PT= 7451501f84780df8bde3faa3ebce42f2bed56ba0e0070e1b +TEST= 93 +KEY= 6606807e416b1d19e01bc4c81bdc1cd5 +IV= b3d1174e73757d442b13ecbabba020c59594fce3c63f3182 +CT= 7451501f84780df8bde3faa3ebce42f2bed56ba0e0070e1b +PT= 5fb981a71b9bd6e983538e9d4cdc2e5df216b25ee0b14210 +TEST= 94 +KEY= e5550ee30db73344120d7696fb6d5ec5 +IV= a6d8243e8fbf47d3f55756d68c4f073d134eb354d51f0aba +CT= 5fb981a71b9bd6e983538e9d4cdc2e5df216b25ee0b14210 +PT= 06be8841cc6d0fced1a62b0d60c0765ad463b7bc48230af1 +TEST= 95 +KEY= 34f325ee6d77451ec66ec12ab34e5434 +IV= 18e7c11fce852ed6416c3f085bd88555570836b45bbaa7d5 +CT= 06be8841cc6d0fced1a62b0d60c0765ad463b7bc48230af1 +PT= 1e8e24cd9ce389ddd9c0d132fb70658aff727fda459129f4 +TEST= 96 +KEY= ed33f4dc96072094391cbef0f6df7dc0 +IV= db2b0f7dbbce8db9e85bb91a3920712d4a5c1935ab2412c9 +CT= 1e8e24cd9ce389ddd9c0d132fb70658aff727fda459129f4 +PT= 158d2ed4fe8901dcbe90535207095221dec2a20db214b010 +TEST= 97 +KEY= 53a3a78e910e72b5e7de1cfd44cbcdd0 +IV= 1a20ee8094b9fcf0b9977ae58c014dd10bf639821d70654b +CT= 158d2ed4fe8901dcbe90535207095221dec2a20db214b010 +PT= 46228ef4b5e3ace1a6d2fe8d46f2a2dcc9b98ef22f431c6b +TEST= 98 +KEY= f5715903d7fcd0692e67920f6b88d1bb +IV= 1879cae9f3849feb4e9a1d05847a9e6640751cef36ff802b +CT= 46228ef4b5e3ace1a6d2fe8d46f2a2dcc9b98ef22f431c6b +PT= ae15a62807eef309a9c8db9d915c5eeb0223bcbf8ac652ed +TEST= 99 +KEY= 5cb9829e46a08e822c442eb0e14e8356 +IV= 51e9f9e93b3878bc70e568355992a19d528b89c7fcca185f +CT= ae15a62807eef309a9c8db9d915c5eeb0223bcbf8ac652ed +PT= 5ad1da499818933911ce1ae250410efbb6bc548b3721eb58 +TEST= 100 +KEY= 4d77987c16e180799af87a3bd66f680e +IV= b41a7c3fe3d9189ebd2e7379d64e2a085ef7c76ff97d4449 +CT= 5ad1da499818933911ce1ae250410efbb6bc548b3721eb58 +PT= 534264e339f45d1c200fe9a9cc39c386d00deaa2e6638fbe +TEST= 101 +KEY= 6d7871d5dad843ff4af59099300ce7b0 +IV= feaacfbb630765905b250a97ce663b8e0e25cfbb65c2c7a0 +CT= 534264e339f45d1c200fe9a9cc39c386d00deaa2e6638fbe +PT= 34f9c74130e8efc175e31694d59432a8fbf20b7306607b29 +TEST= 102 +KEY= 189b67410f4c7157b1079bea366c9c99 +IV= 238dd92a5cf176fcb1642bde57e80440c0ca7379e5413619 +CT= 34f9c74130e8efc175e31694d59432a8fbf20b7306607b29 +PT= 0d48334cc1ec6d9e2e8da12d061a9e6acf88a9c01db5be21 +TEST= 103 +KEY= 3616c66c0956ef3d7e8f322a2bd922b8 +IV= c9b8735976b94f79ba24d643c3fcceddd9e14fc27a247366 +CT= 0d48334cc1ec6d9e2e8da12d061a9e6acf88a9c01db5be21 +PT= 3f4a879a0952e9092c36a0ff11520196a5116db8e6d846c5 +TEST= 104 +KEY= 1a2066931804eeabdb9e5f92cd01647d +IV= 1fd8d7ec9b8e0cb8411acb701ea1a9f27e8a7ed131f2aeee +CT= 3f4a879a0952e9092c36a0ff11520196a5116db8e6d846c5 +PT= 29290d23655f6ac419e83f5de23d36f1fc6f4f65a44aaf6e +TEST= 105 +KEY= 03c859cefa39d85a27f110f7694bcb13 +IV= 693ce0142aee35090b825e4939c1647580898f87da04e8d1 +CT= 29290d23655f6ac419e83f5de23d36f1fc6f4f65a44aaf6e +PT= da5f8498995472f597c76a2cb5e3b254156fe5980f3ca5df +TEST= 106 +KEY= 940f33e24fda6a0e329ef56f66776ecc +IV= ed47c2c46f63f7ba72f6f103af139cd6e1914098055b5c66 +CT= da5f8498995472f597c76a2cb5e3b254156fe5980f3ca5df +PT= 2fa8688dd7863aee49f47a66b64845b7329390ba00b5bd96 +TEST= 107 +KEY= ddfb4984f9922fb9000d65d566c2d35a +IV= 2adc0b4d20e9261d4583bede541786cb1e54d5f82ec6316a +CT= 2fa8688dd7863aee49f47a66b64845b7329390ba00b5bd96 +PT= 034ea49df7245926fdc59de10080d7d19dce53d828ec7f08 +TEST= 108 +KEY= 203ed465f912f8689dc3360d4e2eac52 +IV= 472ff6ca17767e08e457eb52bdbf570e9c8e642d7a65a574 +CT= 034ea49df7245926fdc59de10080d7d19dce53d828ec7f08 +PT= 92ae9caac6fcdeb8932f234e5b34823b92c646dfa0202a44 +TEST= 109 +KEY= b311f72ba2267a530f0570d2ee0e8616 +IV= 53d7871a8999ae2b4a5224bd223f52fed69ff6c20ee5ac79 +CT= 92ae9caac6fcdeb8932f234e5b34823b92c646dfa0202a44 +PT= b8d0222f1d3952eba49a4b9b7e58a7072cd0b187a4e081cc +TEST= 110 +KEY= 178bbcb0dc7edd5423d5c1554aee07da +IV= 95dc6d93cb63c9b2ca1c7e76b143b673b41777d3755147ae +CT= b8d0222f1d3952eba49a4b9b7e58a7072cd0b187a4e081cc +PT= 0760f3b72f06343b651447d69eecf0f47e90714a5558e40c +TEST= 111 +KEY= 729ffb6642922da05d45b01f1fb6e3d6 +IV= 6e6d328080befdc1153228e094df1826675a7a14b34d6013 +CT= 0760f3b72f06343b651447d69eecf0f47e90714a5558e40c +PT= bad6307551c377db8247e522b7abd7b2bf4c3e0a52c84b5d +TEST= 112 +KEY= f0d81e44f539fa12e2098e154d7ea88b +IV= beeaa9a9e8ae393be3adabdb40645e0a5a348d42bf8bacdf +CT= bad6307551c377db8247e522b7abd7b2bf4c3e0a52c84b5d +PT= ca18e83a6c87e5d105270250b7f78e583376f67b24036b67 +TEST= 113 +KEY= f5ff1c1442ce744ad17f786e697dc3ec +IV= fe09b81172f9f295d8db9cef9f353c0e5686bfc0e0de8a0e +CT= ca18e83a6c87e5d105270250b7f78e583376f67b24036b67 +PT= b6b2f2ecd76e18fe281084ca4e02b976c4885ab0357f6891 +TEST= 114 +KEY= ddef98de0ccccd3c15f722de5c02ab7d +IV= 894160ea927c608f563476fac25be5642668550e0365e651 +CT= b6b2f2ecd76e18fe281084ca4e02b976c4885ab0357f6891 +PT= 075201329313a886014329bba6324ca7312458c9f41fecb4 +TEST= 115 +KEY= dcacb165aafe819b24d37a17a81d47c9 +IV= 36c9d5e89cb59aceb7c21e76cf33decf04dd1c24922b161b +CT= 075201329313a886014329bba6324ca7312458c9f41fecb4 +PT= 365cf92fa82b1c743b084640b21f7439a491434a566c9e05 +TEST= 116 +KEY= e7a4f72518e1f5a28042395dfe71d9cc +IV= 0c39b8965d327769153617e36a728ec0097e5617281bead9 +CT= 365cf92fa82b1c743b084640b21f7439a491434a566c9e05 +PT= e606f8e8575cd2f852ae0158abd33f9ccdbd0af680b2d7dd +TEST= 117 +KEY= b50af67db332ca3e4dff33ab7ec30e11 +IV= e32a787537cb665a61539a013cfff8c34777a9a509d316f1 +CT= e606f8e8575cd2f852ae0158abd33f9ccdbd0af680b2d7dd +PT= 1f0e06971dd66633400013ed54596589d824c75f2835e48b +TEST= 118 +KEY= f50ae590e76bafb795dbf4f456f6ea9a +IV= 052b45927433157cf2c4a9345793eb0cca766e3390d858c2 +CT= 1f0e06971dd66633400013ed54596589d824c75f2835e48b +PT= ff8ffbba3eeffb611902e54bd4b46dc64121ccfbe6cdb4d3 +TEST= 119 +KEY= ec0800db33dfc271d4fa380fb03b5e49 +IV= 3749d6f218db660ea566bc6fefbf898cfd6e1b3bd633bc18 +CT= ff8ffbba3eeffb611902e54bd4b46dc64121ccfbe6cdb4d3 +PT= 8d99d47c42eefee3ea1d8efb70a9a408ad6c165bf5117505 +TEST= 120 +KEY= 06158e204376667979962e54452a2b4c +IV= ae6878d8ad68ff2b177e166697f2a1397738d744579f87c6 +CT= 8d99d47c42eefee3ea1d8efb70a9a408ad6c165bf5117505 +PT= 5556b8155e2881bbd68341fca7f84bc3a880e144cde4b53c +TEST= 121 +KEY= d096cfdce48e2dbad116cf1088ce9e70 +IV= a09d2d9b31c01286f4ace91f5757690af95bf6c816f5ad86 +CT= 5556b8155e2881bbd68341fca7f84bc3a880e144cde4b53c +PT= 548988ef04bd0c7d463aae20d13425ea38876d9e69327908 +TEST= 122 +KEY= 96ac61fc35ba0850e991a28ee1fce778 +IV= fce1072a9b3021e7fb5270498e16f359407fb148fcf8283e +CT= 548988ef04bd0c7d463aae20d13425ea38876d9e69327908 +PT= a8d27d08f1b81cf4fdb0cd229dff4e67d970f9502a21d5c5 +TEST= 123 +KEY= 6b1cacdea845463730e15bdecbdd32bd +IV= 74b487e1116eb59e9be0974f11f32bb32ef20baf9db64d46 +CT= a8d27d08f1b81cf4fdb0cd229dff4e67d970f9502a21d5c5 +PT= a4052d3156f6ff2b092c0c433e7b300d7a49d5cd74c1de65 +TEST= 124 +KEY= 6230a09d963e763a4aa88e13bf1cecd8 +IV= 4c3b17063e00f06421996cbef26114ec5d0f8ba6bbbb550f +CT= a4052d3156f6ff2b092c0c433e7b300d7a49d5cd74c1de65 +PT= eea82537804b1f2ef0b27f18e2be8f55c0a216ed5ab69441 +TEST= 125 +KEY= 9282df857480f96f8a0a98fee5aa7899 +IV= 9e7b3eda6d4664eb42da347acba2af0ee20ef523106a2096 +CT= eea82537804b1f2ef0b27f18e2be8f55c0a216ed5ab69441 +PT= ac4c6954ec26748bc622b4c9e4403505d12785edef92d5a7 +TEST= 126 +KEY= 54a06b4c90c0cc6a5b2d1d130a38ad3e +IV= 0293757560fab7128ba7a236b3a1038c69d3013ddb46f96e +CT= ac4c6954ec26748bc622b4c9e4403505d12785edef92d5a7 +PT= dbc458c9ff15fc3ab23c405afab254a13a316ba6861f4829 +TEST= 127 +KEY= e69c2b166a7298cb611c76b58c27e517 +IV= e470a6ad4f7b236a41ac2cca6794fa816d957bc2cc395fe8 +CT= dbc458c9ff15fc3ab23c405afab254a13a316ba6861f4829 +PT= 42abf67c8b1a171255aeb6635571c8d3fe584886d1670579 +TEST= 128 +KEY= b3329d753f0350189f443e335d40e06e +IV= 1577bdc6cbf8d058016d281d400e1bed856f68fa913a8ceb +CT= 42abf67c8b1a171255aeb6635571c8d3fe584886d1670579 +PT= 5714ff73729efc43d0f2c790130dd2f80e3ab8dfe2887875 +TEST= 129 +KEY= 63c05ae52c0e82e0917e86ecbfc8981b +IV= 44acb0d5eedf6a9a013fe45eb4dd11b65e83a398c2fb9ac7 +CT= 5714ff73729efc43d0f2c790130dd2f80e3ab8dfe2887875 +PT= 5b2fc98bc963b98141702cd6c58e5532b1c7867c817cdf40 +TEST= 130 +KEY= 22b07633e980d7d220b900903eb4475b +IV= 0f60a7c615b31ad3a9a2b446459230225fd7e9aebb2087fb +CT= 5b2fc98bc963b98141702cd6c58e5532b1c7867c817cdf40 +PT= 5beb7464778b30191a92c001ae47fd6355e8c6570547eacf +TEST= 131 +KEY= 3822b63247c72ab17551c6c73bf3ad94 +IV= f2061b53fe6e45e9fa1d6ad7df4b91d3fc8ad56f7e5a88b1 +CT= 5beb7464778b30191a92c001ae47fd6355e8c6570547eacf +PT= 65b0b97296b66e92a32ee3c3d7ba6c0835c1131509059fcb +TEST= 132 +KEY= 9b0c55f1907d46b94090d5d232f6325f +IV= b21076a564d8551ddbd2f63ff7e157d22437900a628e2eb6 +CT= 65b0b97296b66e92a32ee3c3d7ba6c0835c1131509059fcb +PT= 8eb25233050a51e1ba313859732a8acb67f8aea96b0d88dc +TEST= 133 +KEY= 213d6da8e357cc7227687b7b59fbba83 +IV= 52b9841c89117a1d028b36958b98fac14789cc3b6a9d713f +CT= 8eb25233050a51e1ba313859732a8acb67f8aea96b0d88dc +PT= 62471842e464de6b1d032d45459fda14fbc5a88ba33141d4 +TEST= 134 +KEY= 3c3e40eda6c81666dcadd3f0facafb57 +IV= 6efc993ea559b7d9f67328ed3ede82dccb1056a14eda8282 +CT= 62471842e464de6b1d032d45459fda14fbc5a88ba33141d4 +PT= 9d612dcb275ff6a3ea870d84b07de642afd7bc59eae2066a +TEST= 135 +KEY= d6b94d6916b5f024737a6fa91028fd3d +IV= 9d7dc0f0c149b9718b82c7ea0c280ccae5a8b47bff723163 +CT= 9d612dcb275ff6a3ea870d84b07de642afd7bc59eae2066a +PT= 61004e364e4240431a6c3daa0495d2e6b46de760866e4c7d +TEST= 136 +KEY= ccd570c3122022c2c71788c99646b140 +IV= b62ed3c9a08b343edb529d69d32c9c31bff51f9ecbf63d3c +CT= 61004e364e4240431a6c3daa0495d2e6b46de760866e4c7d +PT= 9b8e07fd2478c77ba11956670dda409f2ce3dfbebaeb1e6a +TEST= 137 +KEY= 6dcc26a41ffa625debf457772cadaf2a +IV= dfe7582a53eb84d918fe2ebfe669c3824b9411f1d51c15f8 +CT= 9b8e07fd2478c77ba11956670dda409f2ce3dfbebaeb1e6a +PT= 9952cf2ff412b5e9e8e617cc4c022138f7e0f45709fa4ab8 +TEST= 138 +KEY= 852a316853f843651c14a3202557e592 +IV= 5be8c7b2eb4fba2af4cd3045707f60d481c9b80de67d9ce4 +CT= 9952cf2ff412b5e9e8e617cc4c022138f7e0f45709fa4ab8 +PT= 03f678d6ad2559485775d05a1c6923a7bdf13c74f7f0a8a0 +TEST= 139 +KEY= d25fe1324f9160c2a1e59f54d2a74d32 +IV= b9a064cbb9f5d3e72936908649746f46b7c3f18460e32565 +CT= 03f678d6ad2559485775d05a1c6923a7bdf13c74f7f0a8a0 +PT= f587556f9872b9f6f887d91923ff30071adcf1072d413ede +TEST= 140 +KEY= 2ad8382b6c6e50c5bb396e53ffe673ec +IV= a1aa292424e9deacfa4ee2b074f9ab0c6ca29e854a7ad656 +CT= f587556f9872b9f6f887d91923ff30071adcf1072d413ede +PT= 7061631f793127a1ceab0c61596bebf56538e0af59f66b37 +TEST= 141 +KEY= e473344a3505bb30de018efca61018db +IV= 6316a8e7018d4507df8af6a7a404eeccf7f05892167236b5 +CT= 7061631f793127a1ceab0c61596bebf56538e0af59f66b37 +PT= e886dca220acd2b0903eb8ea802a8447a206d5da3d902a06 +TEST= 142 +KEY= 744d8ca0b52f3f777c075b269b8032dd +IV= 6456580cb9a670949ff5d2ee942b633c9188536174cf4df5 +CT= e886dca220acd2b0903eb8ea802a8447a206d5da3d902a06 +PT= 3c40842dfdd6a09eed9527af3a7c9380fe39b49a68955ce8 +TEST= 143 +KEY= 99d8ab0f8f53acf7823eefbcf3156e35 +IV= 9e33d62ba0ae2a66460e55276720d6b6c58b14569c05ac0f +CT= 3c40842dfdd6a09eed9527af3a7c9380fe39b49a68955ce8 +PT= 22384b2e6fea4eb54408097dc3511c770dba4662baa7c890 +TEST= 144 +KEY= ddd0a2724c02b0808f84a9de49b2a6a5 +IV= c4bac577373e45072da04b2a62149a6618b5fd5fc23fd3c3 +CT= 22384b2e6fea4eb54408097dc3511c770dba4662baa7c890 +PT= f5e0a0fd523f18ca92c0caac64b89ce2432ad62027e2024f +TEST= 145 +KEY= 4f1068de28ba2c62ccae7ffe6e50a4ea +IV= 246fc869721867db2594a4f952028f5f3b953e6f64676e82 +CT= f5e0a0fd523f18ca92c0caac64b89ce2432ad62027e2024f +PT= 319db556f941d2a44a103f1f5d162dbbece78db3bf9376a8 +TEST= 146 +KEY= 050057c175ac01d92049f24dd1c3d242 +IV= ff5b434c384e1460544ee5ef9cfa2a9d2be183b0cd9d3544 +CT= 319db556f941d2a44a103f1f5d162dbbece78db3bf9376a8 +PT= 23c942b99608a3e3a73aa947ab669375e2d5a037d3569b05 +TEST= 147 +KEY= a23afe86deca92acc29c527a02954947 +IV= 23727b935cbbd358316b0e30414086be8461813a386e9069 +CT= 23c942b99608a3e3a73aa947ab669375e2d5a037d3569b05 +PT= 2cea58be1db9ea4f47a0a5696c130c421d50ccad664aafe9 +TEST= 148 +KEY= e59a5befb2d99eeedfcc9ed764dfe6ae +IV= 407cf7386fdd042864fb35433058b3d82081caff1bf9eff4 +CT= 2cea58be1db9ea4f47a0a5696c130c421d50ccad664aafe9 +PT= 824a7c9b89718023ddf619c0acdb0e8885a36efe6c0eaa9c +TEST= 149 +KEY= 386c422f1e0290665a6ff02908d14c32 +IV= 858a2581a9680a2da50c5aa77ca8cc6c089b34d66eef866d +CT= 824a7c9b89718023ddf619c0acdb0e8885a36efe6c0eaa9c +PT= 79c69335f4e994bee6afa0e0266551dc6200b742fd5c4c92 +TEST= 150 +KEY= dec3e2cf3867c1ba386f476bf58d00a0 +IV= 113c7b2671d44b22537d5809c911f44177c9e264bc0c999e +CT= 79c69335f4e994bee6afa0e0266551dc6200b742fd5c4c92 +PT= 36d38d0821e5342a5a9856513c57f861b3b78b7e34ee10fc +TEST= 151 +KEY= 845bb49e043039db8bd8cc15c163105c +IV= 925dfd9dd810cf9e3f2d9391775c4631852fc37b99a2948f +CT= 36d38d0821e5342a5a9856513c57f861b3b78b7e34ee10fc +PT= 7a220137e3cd0732336ffad7f01bc2ba4dc7e0c682875787 +TEST= 152 +KEY= b7344e49f42bfb61c61f2cd343e447db +IV= c1818a17199c703b162f8bd468291fc83d6b26fab7f929c0 +CT= 7a220137e3cd0732336ffad7f01bc2ba4dc7e0c682875787 +PT= 1a1cbd54bcd383ebd1faf071be09cea697c44448e8da2957 +TEST= 153 +KEY= 66cebe384a2235c751db689bab3e6e8c +IV= db33cdedb8cb76354ee5b8c2aa503d8324b5b940a0d60f52 +CT= 1a1cbd54bcd383ebd1faf071be09cea697c44448e8da2957 +PT= e7d355c11c953a76b1050b5557c86b5dff46a57be095a177 +TEST= 154 +KEY= d7cbb56d1dea5e9aae9dcde04babcffb +IV= 62c07b4e9f0a23fa32ff55bfc0bc923aa28c4618ccfadeb3 +CT= e7d355c11c953a76b1050b5557c86b5dff46a57be095a177 +PT= 52787890f0bb3ebc260199ab0d20215d2d474aab213fa374 +TEST= 155 +KEY= f1ca2cc610ca7fc783da874b6a946c8f +IV= ff4cf9ae9d07f6839e374f4b4f5488d96f590acdff0f8fe9 +CT= 52787890f0bb3ebc260199ab0d20215d2d474aab213fa374 +PT= d4c1e3273f2ceaf7cd93327a1445df75998f52cb76a9f826 +TEST= 156 +KEY= 3c591ebc048fa0b21a55d5801c3d94a9 +IV= 943ae1d6f3dbf303b68c1c741b55a9723e344464b956f8b1 +CT= d4c1e3273f2ceaf7cd93327a1445df75998f52cb76a9f826 +PT= 6b2f537c1558719b5685b4ab5652f310b7be25a1d42354ed +TEST= 157 +KEY= 6adcaa1752dd53a2adebf021c81ec044 +IV= fbf5bc25888d3c3d9d46d5cbb9fa126e10b6a8747dfbabc5 +CT= 6b2f537c1558719b5685b4ab5652f310b7be25a1d42354ed +PT= b8562052b60c2f1a803a304e9b19ab768fabb2a550f1d1b8 +TEST= 158 +KEY= eae69a59c9c4f8d42240428498ef11fc +IV= 2be6a717850f6980311d1536f31302021624ba7580eb7edf +CT= b8562052b60c2f1a803a304e9b19ab768fabb2a550f1d1b8 +PT= 8197cc20555403862fd0d928c6c5cbe46f64416697a5bf0e +TEST= 159 +KEY= c53643710f0133304d2403e20f4aaef2 +IV= aa99272aec626b2afea13b3bb6fbc2b228ef99e5f9ef82fc +CT= 8197cc20555403862fd0d928c6c5cbe46f64416697a5bf0e +PT= 89d2eee3e288b4617b5ca6f0e2b10246685571959bb52471 +TEST= 160 +KEY= be6ae581edb031762571727794ff8a83 +IV= 2bc68d0e96f35228687f7a09a2655222cbc205d3c5de00b0 +CT= 89d2eee3e288b4617b5ca6f0e2b10246685571959bb52471 +PT= 81ed0dbd003302f34cc03cf7be94969e5748cb3aadf4eba4 +TEST= 161 +KEY= f2aad9765324a7e87239b94d390b6127 +IV= 42e3a72f3e6fbed144c0b73fd9f31b538f441a220104137f +CT= 81ed0dbd003302f34cc03cf7be94969e5748cb3aadf4eba4 +PT= f6fe7bd463d7dfbed0d5c64dd5b0730b5997d7e656accc52 +TEST= 162 +KEY= 227f1f3b8694d4e32bae6eab6fa7ad75 +IV= 939c4a0765d7de51aac77ea9b0f91736659db49b82af5a7b +CT= f6fe7bd463d7dfbed0d5c64dd5b0730b5997d7e656accc52 +PT= 369823d4ac6e5b180652d7067e767b8151ebb0582566c818 +TEST= 163 +KEY= 242dc83df8e2af627a45def34ac1656d +IV= f5e2a7e5f68ed31b4e566e453263df58a8ed3d867ee02a2c +CT= 369823d4ac6e5b180652d7067e767b8151ebb0582566c818 +PT= c2a78cb5acb4a0de051676094a9c2c2a06f308775fb25298 +TEST= 164 +KEY= 213bbe34b27e83487cb6d684157337f5 +IV= c0174cb8bc6eabe9a8b87c48747d03542c3a828e9601a541 +CT= c2a78cb5acb4a0de051676094a9c2c2a06f308775fb25298 +PT= 5819a57e573ac3e78b31fa18cd517d89d728b6b3f46e4bb8 +TEST= 165 +KEY= aa0a442c7f2ffec1ab9e6037e11d7c4d +IV= 3faec8146ae6c1c07daf0bee66f10a2a8b295b4c18261571 +CT= 5819a57e573ac3e78b31fa18cd517d89d728b6b3f46e4bb8 +PT= f4a4b57ccf6c9dddfa20813be7e6a099843e0315dcde0fff +TEST= 166 +KEY= 502ac51798c95e582fa063223dc373b2 +IV= 6bdfa7ddcff0ec7f96e7fbcd25fc30f69e97275e5deeff4b +CT= f4a4b57ccf6c9dddfa20813be7e6a099843e0315dcde0fff +PT= bbb1678d2bfd0fbe2c71064411657405089f30d41e21a690 +TEST= 167 +KEY= 7c5bc35389ac2a5d273f53f623e2d522 +IV= 7daf735ce87364041d2ec522cccbd23ff54cbc4aa3f120b8 +CT= bbb1678d2bfd0fbe2c71064411657405089f30d41e21a690 +PT= 4e1cdad9cae5da5bc549c5322176c37db7fbb44455c0ed5b +TEST= 168 +KEY= b9120661a8dae92090c4e7b276223879 +IV= 4418158669848a899179b0a580a9b81e6a5b120269e80442 +CT= 4e1cdad9cae5da5bc549c5322176c37db7fbb44455c0ed5b +PT= 77a0652cd9c64cdf10e82dd0c092dddb8134551ec222289a +TEST= 169 +KEY= a9fa2bb1684834fb11f0b2acb40010e3 +IV= 9ea6753350f71dbde13ce08cd0b676c7d9e897b56ca7f0d0 +CT= 77a0652cd9c64cdf10e82dd0c092dddb8134551ec222289a +PT= 35f59a16e86aa53b23ef5e91e5e9e05b3d57f70c3debb564 +TEST= 170 +KEY= 8a1575208da1d4a02ca745a089eba587 +IV= 3900804f51c32458eae94f50b144e6e0974f0b1490aa99de +CT= 35f59a16e86aa53b23ef5e91e5e9e05b3d57f70c3debb564 +PT= 2088c70ffe0fbec211474da4e8697abba745be786b0a2b3a +TEST= 171 +KEY= 9b52388465c8ae1b8be2fbd8e2e18ebd +IV= e44fd138299a7730efe647f4c549e7624a9d1b7fdc4aa8f3 +CT= 2088c70ffe0fbec211474da4e8697abba745be786b0a2b3a +PT= c257ab611d550ad8affce66ff7edb7ae4c07d86a02400a55 +TEST= 172 +KEY= 34aedeeb922519b5c7e523b2e0a184e8 +IV= b50ba80bff8f2e0bd81ae7cc75796591136e406e445a5285 +CT= c257ab611d550ad8affce66ff7edb7ae4c07d86a02400a55 +PT= bc803ca666f4422d43fd9d22961212e093ec262b3fd43566 +TEST= 173 +KEY= 775343c904370b5554090599df75b18e +IV= b78367b4ad1936b0dd9f438fea37c88cd17809ce7e7fd8f3 +CT= bc803ca666f4422d43fd9d22961212e093ec262b3fd43566 +PT= 9029404d0f6ee449a10bdcb2ed68ecea33a2c55afc1b00b6 +TEST= 174 +KEY= d6589f7be95fe7bf67abc0c3236eb138 +IV= dffc95be1785d99d96b0e1a042d1f2ce191636749016c3f8 +CT= 9029404d0f6ee449a10bdcb2ed68ecea33a2c55afc1b00b6 +PT= afe620c786752b1f1478aa0bbd581395beb33c4e73b2596c +TEST= 175 +KEY= c22035705407f42ad918fc8d50dce854 +IV= 5306c476b04c8844205b4cb49d20751a3a545dd1f7b53221 +CT= afe620c786752b1f1478aa0bbd581395beb33c4e73b2596c +PT= fc73996e9b8ad0fe96bf83186979e3109ecb2d321c6d37db +TEST= 176 +KEY= 549fb6683d7e173a47d3d1bf4cb1df8f +IV= df7fb9308fcf89bd852f3f8ae77356c3dd254ebd38a75a6e +CT= fc73996e9b8ad0fe96bf83186979e3109ecb2d321c6d37db +PT= 1cb4ab26d753943f57bdf005208a7a7ce5894b2e2bdb3f13 +TEST= 177 +KEY= 0322466d1df46d46a25a9a91676ae09c +IV= 957bf4f19ea408eb3ddba192c6ce3a78ec99837fe9f62417 +CT= 1cb4ab26d753943f57bdf005208a7a7ce5894b2e2bdb3f13 +PT= 31b2878a3807fdf756e979b78cdc8f20e4b96f0aa10e74e5 +TEST= 178 +KEY= 55cb3fda9128e26646e3f59bc6649479 +IV= 95fdecf875495507218c67509f26d2992138a328a6a58acf +CT= 31b2878a3807fdf756e979b78cdc8f20e4b96f0aa10e74e5 +PT= c3194de8192a1007acc28c3b74d5d1e5ecb252114d58a223 +TEST= 179 +KEY= f909b3e1e5fd3383aa51a78a8b3c365a +IV= 003409cb0c811c9f22716b8e422fe01685e9821f85ea17eb +CT= c3194de8192a1007acc28c3b74d5d1e5ecb252114d58a223 +PT= e70ccd15799621bbe9fa67390d746f74873404375682cf79 +TEST= 180 +KEY= 10f3d4d8e8895cf72d65a3bdddbef923 +IV= a006696c9d9fea339c2e5064f641d6aa6f4378b98600b29f +CT= e70ccd15799621bbe9fa67390d746f74873404375682cf79 +PT= ee08ecbc76446d7603ccf3350b3a02c7bf39f44399ac3259 +TEST= 181 +KEY= 133f27ede3b35e30925c57fe4412cb7a +IV= 50ace7a6abbe79f560ff7362ee5367caa471cf0ecaf1e471 +CT= ee08ecbc76446d7603ccf3350b3a02c7bf39f44399ac3259 +PT= 3786e701dadd33fd57892c1a8a5ebef3f200b3bee35fe43d +TEST= 182 +KEY= 44b60bf769ede0c3605ce440a74d2f47 +IV= 6e1569cfe54b41d0a0c9076ca0c06d844eed63bcb23733b8 +CT= 3786e701dadd33fd57892c1a8a5ebef3f200b3bee35fe43d +PT= 3f2014646405b11a134c375e01fb21754654331488fa4d86 +TEST= 183 +KEY= 57fa3ca96816c1b62608d7542fb762c1 +IV= 49f8398834f82d94cfa45e902bf287e5c6745e28138e1a6c +CT= 3f2014646405b11a134c375e01fb21754654331488fa4d86 +PT= 7420e11755c319460faa8bb779c246f1155d89bb0af51f8b +TEST= 184 +KEY= 5850b71e11d4874733555eef25427d4a +IV= 7b1a70151644a0ac8543dc99ab3b947f0224479de2878104 +CT= 7420e11755c319460faa8bb779c246f1155d89bb0af51f8b +PT= e56005a19e231bd5d0b0b4c500ac32bbce207da2ad7f751a +TEST= 185 +KEY= 88e003db1178b5fcfd75234d883d0850 +IV= 7d2bef2c4740cba3b6dddbfea3863f7695d8e7735c07687f +CT= e56005a19e231bd5d0b0b4c500ac32bbce207da2ad7f751a +PT= fc7f24329690801ae2071a205c930ead4a17e435c56d517f +TEST= 186 +KEY= 6ae719fb4debbb51b762c7784d50592f +IV= 8628ac269b1086a85100f9fcbfb113b501fa7ed7338c079b +CT= fc7f24329690801ae2071a205c930ead4a17e435c56d517f +PT= 7f6262a88117d62dcd1478f27abeac2553d184e820ddc7d6 +TEST= 187 +KEY= a7f3610937551774e4b343906d8d9ef9 +IV= 774ce4b8f2c419ed2b8c6e8c04836ef051717792909294c8 +CT= 7f6262a88117d62dcd1478f27abeac2553d184e820ddc7d6 +PT= a8cc7f38ebdcc0cc23b56c46e56e8b616cd17f16460ae43a +TEST= 188 +KEY= 84460d4fd23b9c1588623c862b877ac3 +IV= cf10fd4be5ca7db779a4b65a25dac86c270d18cc81e9c3b6 +CT= a8cc7f38ebdcc0cc23b56c46e56e8b616cd17f16460ae43a +PT= 95a90cee32575d4b87a1fa3498adb685dd81ba7eb44af532 +TEST= 189 +KEY= 03e7f77b4a962a9055e386f89fcd8ff1 +IV= a4396695d62d66c22dde3f8a56afa5960dc8b6275624229f +CT= 95a90cee32575d4b87a1fa3498adb685dd81ba7eb44af532 +PT= 723290e460aaf3f0b0f772361a95f3de9ebbfd330222be90 +TEST= 190 +KEY= b310854d5003d94ecb587bcb9def3161 +IV= 87bb7c02da3ab504d0a2babdf49f98d15af1e723cf7637ed +CT= 723290e460aaf3f0b0f772361a95f3de9ebbfd330222be90 +PT= 1c834fb7eb7e846ca90df24c19f1124bdf2d79019cef0b3f +TEST= 191 +KEY= 1a1d770149f2cb05147502ca01003a5e +IV= 5c4e3a5985f1a73833e3d8bc8c2f7006ba7dfc95a183f8ba +CT= 1c834fb7eb7e846ca90df24c19f1124bdf2d79019cef0b3f +PT= a9569964604a492f434096efb975f7e70066e5edeb6da4b9 +TEST= 192 +KEY= 595de1eef0873ce21413e727ea6d9ee7 +IV= 33661ddbc231684617445902ec7b16dea39d61b1af50cd36 +CT= a9569964604a492f434096efb975f7e70066e5edeb6da4b9 +PT= 969164ef78d9f853cc3be31c8aca57cc6c1ccd6f5837542e +TEST= 193 +KEY= 956602f27a4d6b2e780f2a48b25acac9 +IV= abeabe7bf73eaa5672be2a22d59db7fbea5dd5159842d2e0 +CT= 969164ef78d9f853cc3be31c8aca57cc6c1ccd6f5837542e +PT= 530fb27c919ef6e0fcbd901d2e952c734eb5935265815bcb +TEST= 194 +KEY= 69db92ef54d8475d36bab91ad7db9102 +IV= d82076c8bc1a9f116af6a7d4c008999ccb797a09e0126756 +CT= 530fb27c919ef6e0fcbd901d2e952c734eb5935265815bcb +PT= 62377679658aba67001f163d664db3dd00cbf7e2d7815da2 +TEST= 195 +KEY= 69c484d23295f48036714ef8005acca0 +IV= 81f1d4f0085c491695355cd682313a8f4b1ad1ab64e886ec +CT= 62377679658aba67001f163d664db3dd00cbf7e2d7815da2 +PT= 60299580cbb76eb4456f68834ff5f44e4d634bfc48967758 +TEST= 196 +KEY= 2cabec517d6000ce7b12050448ccbbf8 +IV= 7592e6933f9081587ed12f4a1b044b8d601a47194f6b7830 +CT= 60299580cbb76eb4456f68834ff5f44e4d634bfc48967758 +PT= d568fbf9e203ff249d54a64dba0eb0c4e1e67df749199ec9 +TEST= 197 +KEY= b1ff4a1cc76eb00a9af478f301d52531 +IV= c55b3b1fe7e7f45109793f65f0d78c0d4485e4ec98521cdc +CT= d568fbf9e203ff249d54a64dba0eb0c4e1e67df749199ec9 +PT= 259eefb8120d52ac987c21c324c87ff9b69f6c19056d895b +TEST= 198 +KEY= 29836bdfe3a6cff32c6b14ea04b8ac6a +IV= 18a7f41955e19bd95422d345c1d467374d1c9b276b574241 +CT= 259eefb8120d52ac987c21c324c87ff9b69f6c19056d895b +PT= bde37366131a90fcd44fa6fb920f316b4946bed6add876ee +TEST= 199 +KEY= fdcccd2471a9fe98652daa3ca960da84 +IV= 5a032db8a58f52484ae97293f3dcd8ed4e65b480476c5ae8 +CT= bde37366131a90fcd44fa6fb920f316b4946bed6add876ee +PT= 094cd05d18eac2de0668ece3c0d46fe8f67228a308a73076 +TEST= 200 +KEY= fba421c7b17d9170935f829fa1c7eaf2 +IV= a7fc94f16333bda4fcaba6b6f27e14b25c0e0404d429eabd +CT= 094cd05d18eac2de0668ece3c0d46fe8f67228a308a73076 +PT= 1a637811d6a66ce1c7d3b932970c524a51a83a5f9cc6c1ee +TEST= 201 +KEY= 3c7798f52671c33ac2f7b8c03d012b1c +IV= 9958d5a9bc5d7ab0a06ee94c5951e069d053e0fe8d8bcf7d +CT= 1a637811d6a66ce1c7d3b932970c524a51a83a5f9cc6c1ee +PT= 79c662636200f64aa170ac71192ca12ad918c6a88144edc3 +TEST= 202 +KEY= 9d0734843f5d62101bef7e68bc45c6df +IV= feb14103788640070ab62d817ba0a9f6d66e82c099eddf38 +CT= 79c662636200f64aa170ac71192ca12ad918c6a88144edc3 +PT= 3b2f7e438a9762b425816f079140dac73894b1672f244f99 +TEST= 203 +KEY= b8865b83ae1db8d7237bcf0f93618946 +IV= 62ebe91145e8f59d640ebf1e744ce9b2ce1a7c324f5993f7 +CT= 3b2f7e438a9762b425816f079140dac73894b1672f244f99 +PT= d01e56eb6ab215fea055d37c3e5f6bf60c0c87e864642bc9 +TEST= 204 +KEY= 18d388ff9042d3212f7748e7f705a28f +IV= de15965fe6122ca5b29ec1ad74a6ce41abf5be4cb3cddb08 +CT= d01e56eb6ab215fea055d37c3e5f6bf60c0c87e864642bc9 +PT= e688790fae44d6cbfe0c0e05b59dc5efa029aa3c0a1115b7 +TEST= 205 +KEY= e6df86fa25df16ce8f5ee2dbfd14b738 +IV= 686bff267987e12e145fd5b7eb278da311d9af87244afef4 +CT= e688790fae44d6cbfe0c0e05b59dc5efa029aa3c0a1115b7 +PT= 5dc8373cbd1a1b9ae194916d78b335fac100203c8ff11937 +TEST= 206 +KEY= 074b17975d6c23344e5ec2e772e5ae0f +IV= f4b6fd824fbb93bc007a908318cfd6fe6b2e7e86ddde3434 +CT= 5dc8373cbd1a1b9ae194916d78b335fac100203c8ff11937 +PT= 8afab961bc2f4ab5c3fd81ea4d7f696152d922c008ff2d54 +TEST= 207 +KEY= c4b6967d10134a551c87e0277a1a835b +IV= 276d65e6cf79363d8cb60617b4ea946ca2dc23f6fedeb4b5 +CT= 8afab961bc2f4ab5c3fd81ea4d7f696152d922c008ff2d54 +PT= d9d6e36b86950e829596666c510a4a893223a3bfa530b922 +TEST= 208 +KEY= 5120f011411900dc2ea44398df2a3a79 +IV= 59f5943e8f03164d0c3aa26fe643b7e2f3b06a4b26419066 +CT= d9d6e36b86950e829596666c510a4a893223a3bfa530b922 +PT= 5fd1357a6106ac6da3c9cc3b370be5684f08509b3cf2f54c +TEST= 209 +KEY= f2e93c2a7612e5b461ac1303e3d8cf35 +IV= 80ca4764e96beb4d8253cbecc56d77beceda1a754d88bb77 +CT= 5fd1357a6106ac6da3c9cc3b370be5684f08509b3cf2f54c +PT= edfa3933f5d86496741687bc69c3c50f5e58e07eadd9a5af +TEST= 210 +KEY= 86ffbb961fd120bb3ff4f37d4e016a9a +IV= 39bb29b036de76d6315e64dd9b2fc0d6e1b124057c0d8687 +CT= edfa3933f5d86496741687bc69c3c50f5e58e07eadd9a5af +PT= dab3c91e9cd592733f18cdb8fdfb704e06ac4f943b7db6d6 +TEST= 211 +KEY= b9e7762ee22a50f53958bce9757cdc4c +IV= 043b4f2d5aeabdfdb6d9f99451883aaf41817c6328384699 +CT= dab3c91e9cd592733f18cdb8fdfb704e06ac4f943b7db6d6 +PT= d7a623f8a08dd99d74d5777af518ea95c9704ac4edcdc63d +TEST= 212 +KEY= cd3201541732ba60f028f62d98b11a71 +IV= a03b99f234f83e217f63ae99e93192ac030c7e761e47183e +CT= d7a623f8a08dd99d74d5777af518ea95c9704ac4edcdc63d +PT= ad6309449062442c3d30258675103d106a89348a979e2a85 +TEST= 213 +KEY= f00224d2622287709aa1c2a70f2f30f4 +IV= be38693a3b47cd52c66840a9ccd48a0c1289ba66e509929b +CT= ad6309449062442c3d30258675103d106a89348a979e2a85 +PT= d3657a91588f39342eace1622a3bddf4b400412032757c8d +TEST= 214 +KEY= deaec5b048195a842ea183873d5a4c79 +IV= f04fce53ea7dd211b6fa02766f55d558402b31d24bef91ca +CT= d3657a91588f39342eace1622a3bddf4b400412032757c8d +PT= c5cd002f58133d23c2bc38ac6042a23c433b0cebb20f72fe +TEST= 215 +KEY= 1c12fd1c285bf8b86d9a8f6c8f553e87 +IV= b1d2b8e5dff0616b4acae5e5aa72a954574f02837f1536a8 +CT= c5cd002f58133d23c2bc38ac6042a23c433b0cebb20f72fe +PT= 17188ece7ab19468e5e3b9a24a66dd15d10eab3ae55f985b +TEST= 216 +KEY= f9f144be623d25adbc9424566a0aa6dc +IV= e9973a157c1bec4a5d94b3c6f5ebc99473c85d7786b4f51d +CT= 17188ece7ab19468e5e3b9a24a66dd15d10eab3ae55f985b +PT= 21f25f7c552a30097c5e0d568c9da42e8da553e81cc826ae +TEST= 217 +KEY= 85af49e8eea08183313177be76c28072 +IV= b0f9ee84db3b1c4d6520ab9d6c457c4cc5aa465ebf3f30de +CT= 21f25f7c552a30097c5e0d568c9da42e8da553e81cc826ae +PT= b3ac2c6611a828d2fa36f1dec17197453b2125624be5770e +TEST= 218 +KEY= 7f99b8362fd116c60a1052dc3d27f77c +IV= 4b94bf6152cafa53eec738054371cbcfe86ee4b9408d49c7 +CT= b3ac2c6611a828d2fa36f1dec17197453b2125624be5770e +PT= ed35ceaa629df3e7ccc4014fd54156e61a87c16b1e09ef25 +TEST= 219 +KEY= b35db979fa904020109793b7232e1859 +IV= e56c52d4988192a27c6ee90ba3021a32d4fb0ec0536b655a +CT= ed35ceaa629df3e7ccc4014fd54156e61a87c16b1e09ef25 +PT= 803a93777c8ea5e93c83b8ffdd08c854630a6854a231d0c8 +TEST= 220 +KEY= 8fde018627988874739dfbe3811fc891 +IV= 805163f778263703874d23fe390ac65fb76f31a376473424 +CT= 803a93777c8ea5e93c83b8ffdd08c854630a6854a231d0c8 +PT= 837c2548f57d983c7f13d0979edcc2789c8ddb4c1a5418b3 +TEST= 221 +KEY= f0cdd111b9444a0cef1020af9b4bd022 +IV= 60c6fd5ffe2c4ab0f2985d5540891bd1f0e3fbef2ff64385 +CT= 837c2548f57d983c7f13d0979edcc2789c8ddb4c1a5418b3 +PT= 75c29ec0a2657c2848485cdda8d46f6596898f1d04323164 +TEST= 222 +KEY= b8858dcc119025697999afb29f79e146 +IV= 04650aa20623c31c2f47c3896c448796d032c094678f85c6 +CT= 75c29ec0a2657c2848485cdda8d46f6596898f1d04323164 +PT= e7fdd5b1ea886e11c15f3e77d02241eae7dadebf170b2e6a +TEST= 223 +KEY= 79dab3bbc1b264839e43710d8872cf2c +IV= 17955e9f58fcee96d03db3567915206d9fda66a99fe76d48 +CT= e7fdd5b1ea886e11c15f3e77d02241eae7dadebf170b2e6a +PT= 6fd1d65ccd0015ff086803a4248777028918295e5a762db9 +TEST= 224 +KEY= 71b2b01fe5351381175b5853d204e295 +IV= 450acc1098e8e8350cbfe928e70c2f2850c4c8d7206c9142 +CT= 6fd1d65ccd0015ff086803a4248777028918295e5a762db9 +PT= e0516fd80caf3395cd2d63ac4027f2a49b37a3d62a43c5f1 +TEST= 225 +KEY= bc9fd3b3a512e1258c6cfb85f8472764 +IV= 95d457a9da66f58323c4f6f1bc6c33922084f653958fb094 +CT= e0516fd80caf3395cd2d63ac4027f2a49b37a3d62a43c5f1 +PT= 777438d06b3a41968eed4e335a8404104fae2d84d61f8257 +TEST= 226 +KEY= 32729d80ff96e535c3c2d6012e58a533 +IV= 4625c44f95cbbb3b0539145a97eeb09ba4c2f804db0f5807 +CT= 777438d06b3a41968eed4e335a8404104fae2d84d61f8257 +PT= 2a733717d99411591e321a43025963bc9fd73d2a9371860b +TEST= 227 +KEY= 2c4087c3fdcf86895c15eb2bbd292338 +IV= 3e09840882cee7482fa4b60aa39e608e907c7208df16920a +CT= 2a733717d99411591e321a43025963bc9fd73d2a9371860b +PT= ffb99f8eed321c58cd9f7877a3ecb71282c5a96589038f76 +TEST= 228 +KEY= e1dfffb45e23319bded0424e342aac4e +IV= 441154e49edb3dc7a94904004e0bbbcaba9eb1ca293bd34d +CT= ffb99f8eed321c58cd9f7877a3ecb71282c5a96589038f76 +PT= 901b1edab0a13a89f68fc03bf7be27275731e8d6e57f4a87 +TEST= 229 +KEY= 17503f8fa99d16bc89e1aa98d155e6c9 +IV= aff13acadff09108ed549c30c71d1ae5674a327f890fe69d +CT= 901b1edab0a13a89f68fc03bf7be27275731e8d6e57f4a87 +PT= 24abd7163274d69d821e6c948015e9e7ef9711dd85807f60 +TEST= 230 +KEY= 954e531b2988ff5b6676bb4554d599a9 +IV= c9d3f5080ac888254a6e7527500e08f1eeb329debf55f97d +CT= 24abd7163274d69d821e6c948015e9e7ef9711dd85807f60 +PT= 93890e8386f95c18cc8078c2f8e9c9464b72ea8d1f47ff1e +TEST= 231 +KEY= 59ce2bd9d161361d2d0451c84b9266b7 +IV= 862f1c87995e0c658f9cba9d7674ed7245937a647a495e18 +CT= 93890e8386f95c18cc8078c2f8e9c9464b72ea8d1f47ff1e +PT= acc6eaf1da7dc6a730b77a0ea52ae35472e806f3226024ff +TEST= 232 +KEY= 697951d7744bd5495fec573b69f24248 +IV= b87033339b803a42d6f6c7d9b6a54512455f4f4df84fa3b6 +CT= acc6eaf1da7dc6a730b77a0ea52ae35472e806f3226024ff +PT= d278ef34292277168234f513a81fb100edebb4cbb12f572e +TEST= 233 +KEY= eb4da4c4dc546449b207e3f0d8dd1566 +IV= ce5afc9681b210744f30a1be1a12707cc9c9b0ca502099bd +CT= d278ef34292277168234f513a81fb100edebb4cbb12f572e +PT= d7f99835cb5d6693da940f300fb3f41fd72616d4ad532744 +TEST= 234 +KEY= 31d9abf4d3e790566521f524758e3222 +IV= b44522196b5ed2c2ac5f446f4fa42edf52adbefbd6802f6e +CT= d7f99835cb5d6693da940f300fb3f41fd72616d4ad532744 +PT= def2b39df9e190d7087aa0b322e61242aa46f3127b3221f3 +TEST= 235 +KEY= 39a30b47f1018214cf6706360ebc13d1 +IV= 0ff1b8e994f45b38ec7ef23f292d5afcebdefa6fd9ed6a5b +CT= def2b39df9e190d7087aa0b322e61242aa46f3127b3221f3 +PT= cfa4a104c7d760599e019473a9f040c2d2799af3ef8ad120 +TEST= 236 +KEY= a7a29f3458f1c2d61d1e9cc5e136c2f1 +IV= e4d7d827ab978d8edd21219d693f24a44b0df680d95901e7 +CT= cfa4a104c7d760599e019473a9f040c2d2799af3ef8ad120 +PT= 73d35d3456720c7d336450e533c3ab9edb68e1f63e57ff7d +TEST= 237 +KEY= 94c6cfd16b326948c6767d33df613d8c +IV= b051fb7e466d25048bd091809650f47b147e3fedc70c5e5e +CT= 73d35d3456720c7d336450e533c3ab9edb68e1f63e57ff7d +PT= 3d3d499bbd92023c6ba9c1b3186b96208ab248a09875d9af +TEST= 238 +KEY= ff6f0e627359ff684cc435934714e423 +IV= 97b270a581739bec576a9228c749ca4720dcce9653c08bf8 +CT= 3d3d499bbd92023c6ba9c1b3186b96208ab248a09875d9af +PT= d6fe832efe02bd5176a52ded136caaf15588781940fe226e +TEST= 239 +KEY= 89ca238f60355599194c4d8a07eac64d +IV= 0dcfef9d3bd0715fffd327f7359742abe8935cbaaa45b4ed +CT= d6fe832efe02bd5176a52ded136caaf15588781940fe226e +PT= f3e6c8cc39097e04f5952d6ce18735fad5fb6f31ba319ae5 +TEST= 240 +KEY= 7c5f0ee381b26063ccb722bbbddb5ca8 +IV= 65098ffa6a952d6f49237ae4ff885bd8ef886208d6e6dbf4 +CT= f3e6c8cc39097e04f5952d6ce18735fad5fb6f31ba319ae5 +PT= 757cba87884cabdf685483c8ef3159618fa7755a03a198b7 +TEST= 241 +KEY= 140b8d2b6e833902431057e1be7ac41f +IV= 4e8a0b5b91c1c8d105607ecea0f40a5a5aa95b3b0760feb4 +CT= 757cba87884cabdf685483c8ef3159618fa7755a03a198b7 +PT= 09ec9e984a7d5b6ecb2c7c88b74e417324dedbf6f73279da +TEST= 242 +KEY= df27f1a3d9cd787167ce8c174948bdc5 +IV= 552abbdd794e5d203f525646096545c9805ad22e0b8bc23c +CT= 09ec9e984a7d5b6ecb2c7c88b74e417324dedbf6f73279da +PT= 065aaf9dac0c2741ce1291f71d7f52ca33e89c64e484d487 +TEST= 243 +KEY= 11356054c4b22abb54261073adcc6942 +IV= 58de20d7559df523e841461eefdb3e464f3fa687566c956e +CT= 065aaf9dac0c2741ce1291f71d7f52ca33e89c64e484d487 +PT= f0fd3032c69061b06df4f844e419a413005efa315ec1ff7e +TEST= 244 +KEY= 7cc1981020ab8ea85478ea42f30d963c +IV= 54528cc0258b5d427eaef2d8facbf90c172dc7c640117d7e +CT= f0fd3032c69061b06df4f844e419a413005efa315ec1ff7e +PT= 5c293157f2d3e8d6d63e8ee0caecda32b40d9fc2c6f89951 +TEST= 245 +KEY= aaff16f0ea47549ae075758035f50f6d +IV= 96fd87a663447f8814fc214396a3da78c866a0f4806c97fd +CT= 5c293157f2d3e8d6d63e8ee0caecda32b40d9fc2c6f89951 +PT= 7c7f1181d09a5530735bb198adc02b3f04103a93c0bdd13d +TEST= 246 +KEY= d9a4a76847877fa5e4654f13f548de50 +IV= e11f0dc2ee9329920472135fbf6e3d939a7e773b32bcb6fb +CT= 7c7f1181d09a5530735bb198adc02b3f04103a93c0bdd13d +PT= 6232bdcbee4aa6a2c3004f9d7334e36c60d6ab440bede964 +TEST= 247 +KEY= 1aa4e8f534b39cc984b3e457fea53734 +IV= f8da53c04ad3abfac0c28819f3f243d4445eb3f894e77864 +CT= 6232bdcbee4aa6a2c3004f9d7334e36c60d6ab440bede964 +PT= 5fb579523e8d4a3057ea2e9696d8318b7443117cb252614d +TEST= 248 +KEY= 4d4ec663a26bad42f0f0f52b4cf75679 +IV= f3819a1aad349d31525f9704f6a0411c803461052786d8f5 +CT= 5fb579523e8d4a3057ea2e9696d8318b7443117cb252614d +PT= 9580df6e51f2ec8e82eb646ba03c4f5195e3f2c6c8313564 +TEST= 249 +KEY= cfa5a2080257e213651307ed84c6631d +IV= b2dd8d3ad72738483f455630c39e9560be118cc57e048a9d +CT= 9580df6e51f2ec8e82eb646ba03c4f5195e3f2c6c8313564 +PT= 21008c4c808e6033bb2ae84b7add8b447e40e84857d7ca4e +TEST= 250 +KEY= 748f4a43788a69571b53efa5d311a953 +IV= aef64065b86f044007655bbaee9ba0b745b269ef0a24ffac +CT= 21008c4c808e6033bb2ae84b7add8b447e40e84857d7ca4e +PT= 2f4fc9fe4f076789cabeda49c72ea0267719c9298364b231 +TEST= 251 +KEY= be31900abfa4c9716c4a268c50751b62 +IV= 1369c1fb39b42eeb72b69679665985237a02423d83c912ea +CT= 2f4fc9fe4f076789cabeda49c72ea0267719c9298364b231 +PT= 741b8f6bb0936679edabb4b78c239deb53e7ee7d253a6762 +TEST= 252 +KEY= 539a24bd3387549a3fadc8f1754f7c00 +IV= 53c276755df13b386af2eddf57d9cf0d2e3c26f9ba0ac809 +CT= 741b8f6bb0936679edabb4b78c239deb53e7ee7d253a6762 +PT= e7c5aec5fcb91365e8e0723c8f3bd411992750bcfc914b29 +TEST= 253 +KEY= bb7a5681bcbc808ba68a984d89de3729 +IV= 638cef0920efd23ee9176ed7145204ea8c8c984acef259d5 +CT= e7c5aec5fcb91365e8e0723c8f3bd411992750bcfc914b29 +PT= 50e0fd4839a0cf62b120f211e910059ebb0b06313cbbe83c +TEST= 254 +KEY= 0a5aa49055ac85151d819e7cb565df15 +IV= 88d9a31fa972e2b45a334ea1bcdbb6ef8435af3fe3f66807 +CT= 50e0fd4839a0cf62b120f211e910059ebb0b06313cbbe83c +PT= 916d02ee8719fae6ba3cca12de6de95af706f08e9b2ea395 +TEST= 255 +KEY= b0666e828bc16c4fea876ef22e4b7c80 +IV= 7e664125553198df3ed962da13e0f374a986d177e81eb6a3 +CT= 916d02ee8719fae6ba3cca12de6de95af706f08e9b2ea395 +PT= e35acd48a16824915780186bc54a088ec93d605bd4bf3ed0 +TEST= 256 +KEY= e7e676e94e8b64c123ba0ea9faf44250 +IV= 758cc1440354dd43dd330e245d1525341d16089d5dfa364e +CT= e35acd48a16824915780186bc54a088ec93d605bd4bf3ed0 +PT= c312e1108e106a7860d8b686519bd5cd3551926f7f5b8950 +TEST= 257 +KEY= 873ec06f1f10b10c16eb9cc685afcb00 +IV= 6b5c887c9b9dafdd969e1266feac3662bfaf1ff13b9e88bd +CT= c312e1108e106a7860d8b686519bd5cd3551926f7f5b8950 +PT= f9dbeb4f10c08b127f5cd08b1e2e2d490d0be80241718dd3 +TEST= 258 +KEY= f86210e4013e9c451be074c4c4de46d3 +IV= f2b55f0683e9a9b3c8388c407dbf300b29205b69ae89e391 +CT= f9dbeb4f10c08b127f5cd08b1e2e2d490d0be80241718dd3 +PT= 175c582eda24b52e8758cc73a3e83d5d31531d4c88bd2411 +TEST= 259 +KEY= 7f3adc97a2d6a1182ab369884c6362c2 +IV= b50597f59f3b8cd2d8e9d9479aa79fa5e9d307e6afdebf30 +CT= 175c582eda24b52e8758cc73a3e83d5d31531d4c88bd2411 +PT= 196919a59041a147fd5a7a0810f73f9198bc7a630cd19cc3 +TEST= 260 +KEY= 8260a69fb2219e89b20f13eb40b2fe01 +IV= 530fcb768d9984bda2ddac8c4942db752a385d9109a9d92a +CT= 196919a59041a147fd5a7a0810f73f9198bc7a630cd19cc3 +PT= 7dc6e3648e6c7229af0563776d947423e379f25e0345e893 +TEST= 261 +KEY= 2d65c5e8dfb5eaaa5176e1b543f71692 +IV= 9dc68bd3690029d6f87a45eb4919e17695d0d0775149ccde +CT= 7dc6e3648e6c7229af0563776d947423e379f25e0345e893 +PT= 2ebc2b4ec1650a5d34ddf331bf0c64bfc48a20bc2260ea20 +TEST= 262 +KEY= 19b836d960b98e1595fcc1096197fcb2 +IV= dce9d684a320d23753ce5209910eef1947e83807c847888b +CT= 2ebc2b4ec1650a5d34ddf331bf0c64bfc48a20bc2260ea20 +PT= 9cb4bbddc98d986690c1576da6b2fe812690e568a4954c76 +TEST= 263 +KEY= 897961b4c60b7094b36c2461c502b0c4 +IV= 4a718f76b93e2e73058ae626ced909c1ab37a6787981fb87 +CT= 9cb4bbddc98d986690c1576da6b2fe812690e568a4954c76 +PT= 2ab40c1a74e33d07634eac5906d3e4df5b1b65866658d0bd +TEST= 264 +KEY= ea37cdedc0d8944be87741e7a35a6079 +IV= 14c7c935e62f332439963f8d5617e5b126b4893803754bef +CT= 2ab40c1a74e33d07634eac5906d3e4df5b1b65866658d0bd +PT= 1f45193efb4344c0a41169be4735a0f810e5545fd4a5d50a +TEST= 265 +KEY= 4e26a45387ed34b3f89215b877ffb573 +IV= bfb0145dd6dda73466e397e66a3a14a600725d086f2544e4 +CT= 1f45193efb4344c0a41169be4735a0f810e5545fd4a5d50a +PT= d0e435d1d71a98ef3bbaacb5cc23f77ca9ba373cf11e6921 +TEST= 266 +KEY= 759c08e64bcec3cf5128228486e1dc52 +IV= b6228f8bd7b8bfde01b61609d96c20a189a46bf60d4970d8 +CT= d0e435d1d71a98ef3bbaacb5cc23f77ca9ba373cf11e6921 +PT= fee64b17eff7a08798377ee4b6032ae2339c83c804bb9c82 +TEST= 267 +KEY= edab7602fdcde92d62b4a14c825a40d0 +IV= 86d5e8220bc2db2a95322fcb5caabc0bff267ce0d0cc819f +CT= fee64b17eff7a08798377ee4b6032ae2339c83c804bb9c82 +PT= ef24130215a04e09d0125974e0e0e0aaa91607b1583f9f04 +TEST= 268 +KEY= 3db92f761d2d0987cba2a6fdda65dfd4 +IV= 1afb301b9c5ce2df6b2fb4b41ede13b2ac52c177c9e0cd72 +CT= ef24130215a04e09d0125974e0e0e0aaa91607b1583f9f04 +PT= d217509eb6354a8d32241d214bbbe5e255f5483b3408c8ab +TEST= 269 +KEY= 0f9d32575696ec659e57eec6ee6d177f +IV= eebe361641658c19ff61bedbcf23ef0e699d46352bda26e6 +CT= d217509eb6354a8d32241d214bbbe5e255f5483b3408c8ab +PT= fd1b4728581a71ffae25cacf15a56a65bb42fbb3a0b53ec8 +TEST= 270 +KEY= a1b8f89843338600251515754ed829b7 +IV= 4a30f7cb936cb596c515ef6bee21185bf8724809288008da +CT= fd1b4728581a71ffae25cacf15a56a65bb42fbb3a0b53ec8 +PT= 899f81312c854260e437f1dae1eafc1f8e72c8a543960627 +TEST= 271 +KEY= 458f0942a2d97a1fab67ddd00d4e2f90 +IV= a335341cb5a6cd045e4631760d50f221f215c9dc8ae0568f +CT= 899f81312c854260e437f1dae1eafc1f8e72c8a543960627 +PT= cf3182113ec3e682480e42a1896910d21b6cfc9a3dcc935f +TEST= 272 +KEY= 0d814be32bb06acdb00b214a3082bccf +IV= ac276a82236ee9994d5e7d57bced550eeaefcf03394292de +CT= cf3182113ec3e682480e42a1896910d21b6cfc9a3dcc935f +PT= a536197801a9606b690867ff236c9623ffc7c63de2cc427e +TEST= 273 +KEY= 64892c1c08dcfcee4fcce777d24efeb1 +IV= a7e54f9307d02997d6adbfe690ab976c52e1d5e442d83492 +CT= a536197801a9606b690867ff236c9623ffc7c63de2cc427e +PT= 640b9c78fdb6fd37e068820de60c7f7556c88486a595398c +TEST= 274 +KEY= 84e1ae11eed0839b190463f177dbc73d +IV= bc4f2fb386e14e1b605eb54769c928ce5342c9e00d1d8618 +CT= 640b9c78fdb6fd37e068820de60c7f7556c88486a595398c +PT= dfd86046110f02e1ecf4d3f0bcd723f7d4b08b92d0324e89 +TEST= 275 +KEY= 68157de15207a06ccdb4e863a7e989b4 +IV= a27a66b64d71c1284a4d06208d32b1ca880dd16f6a02ba6e +CT= dfd86046110f02e1ecf4d3f0bcd723f7d4b08b92d0324e89 +PT= 1ccfa14c48540d42395678390467f826f0e8a60d3536fff9 +TEST= 276 +KEY= 514305d85660584a3d5c4e6e92df764d +IV= e27e43e117c9b6384a5d6531fafd75e6ad06717ba809626a +CT= 1ccfa14c48540d42395678390467f826f0e8a60d3536fff9 +PT= e9a2a94e5a2d050fddd76e4cbf4019b93a290ea6a0f04b63 +TEST= 277 +KEY= 8c946b94e92041f3077540c8322f3d2e +IV= 0af7c696b463a6a6f8f0f40997c6f5acaad44d8e4b1e572a +CT= e9a2a94e5a2d050fddd76e4cbf4019b93a290ea6a0f04b63 +PT= fc3d4b1f3fb253432da7aa61c955eb9ce168023cb3a1d0a5 +TEST= 278 +KEY= a133c1f52075aa6fe61d42f4818eed8b +IV= 30bad9b062cc12eff35de708598c9eb9b45e01edc69cff14 +CT= fc3d4b1f3fb253432da7aa61c955eb9ce168023cb3a1d0a5 +PT= 6bc2ff75d74244613070063562cb6b32db08184ab2c30061 +TEST= 279 +KEY= 9143c7c042bec15d3d155abe334dedea +IV= 94475f81ed390e7b1ad71f365fefb84724dfb8f47f4762ec +CT= 6bc2ff75d74244613070063562cb6b32db08184ab2c30061 +PT= eb07691b59d811419d8d09b73b07d42ac715e4c5f7217571 +TEST= 280 +KEY= 0ccece7779b91577fa00be7bc46c989b +IV= 7cbcb1f9e2078bc0f138d9916f334148705c9ef795320393 +CT= eb07691b59d811419d8d09b73b07d42ac715e4c5f7217571 +PT= f0ece23cc557f8eca1f456cfe1d2f639fb5b6533ec97ac4b +TEST= 281 +KEY= ad3a98b8986be34e015bdb4828fb34d0 +IV= 67c679a02b06476dd4d0630b68ae1addb1f220aab93bf6bc +CT= f0ece23cc557f8eca1f456cfe1d2f639fb5b6533ec97ac4b +PT= 400f680f9c0fee35482b7edfec1e59289a6993dc2ce0118b +TEST= 282 +KEY= e511e6677475ba669b324894041b255b +IV= 1f06a91bad5bc7b5bd285cc327539469e242bd9f39c3a029 +CT= 400f680f9c0fee35482b7edfec1e59289a6993dc2ce0118b +PT= e351eb6bf138d2bcc6418381ca7b2b33f54e1a24c47eb115 +TEST= 283 +KEY= 235065e6be0e91556e7c52b0c065944e +IV= 741557b75534ef781d387c80c74d028b824a624ccd3206c7 +CT= e351eb6bf138d2bcc6418381ca7b2b33f54e1a24c47eb115 +PT= 82ab36b4740b688ffadd75438236292051877f192bf27ebb +TEST= 284 +KEY= d98d10a53c38b8753ffb2da9eb97eaf5 +IV= bce4382b8cbe44ea84e0e510ccfe4563a70281427858ed1d +CT= 82ab36b4740b688ffadd75438236292051877f192bf27ebb +PT= 84b03c171668c711c3f53ba82119e18110d5bc45dd213984 +TEST= 285 +KEY= 1a782b0d1d2159f42f2e91ec36b6d371 +IV= 6454ecf4576af9b79c72b60b0f3780302519e9bed8280c2e +CT= 84b03c171668c711c3f53ba82119e18110d5bc45dd213984 +PT= 61015c6c4ffaa7cef813f559b65cf816bfdf12d4f121e5c3 +TEST= 286 +KEY= e26bde54ab7da1e290f18338c79736b2 +IV= 05572a59de611650db848397470a277a35e683b42f682dce +CT= 61015c6c4ffaa7cef813f559b65cf816bfdf12d4f121e5c3 +PT= 7f7afcdd38e9f30e855890c63697c2a3bfbf998cca3465b6 +TEST= 287 +KEY= 67334e929dea63412f4e1ab40da35304 +IV= 3ec744bcab4f1180fc0711fed43eba8dbbf373eda3cc9370 +CT= 7f7afcdd38e9f30e855890c63697c2a3bfbf998cca3465b6 +PT= 7182a8e42d9b36436b1bb775064af237c34c5d1806016467 +TEST= 288 +KEY= 0c28f9e79ba09176ec0247ac0ba23763 +IV= 76b7c9f62759934c0f2a11d37dd1d30d8bc09327e05fea7d +CT= 7182a8e42d9b36436b1bb775064af237c34c5d1806016467 +PT= 9d6603ad71dec5472e4767e2a9f5c2cb7116e43e62687df2 +TEST= 289 +KEY= 226f9e05325553bd9d14a39269ca4a91 +IV= 62c74f8b7dadbb0d7a7ea4c933ab9a814644d31726579d1f +CT= 9d6603ad71dec5472e4767e2a9f5c2cb7116e43e62687df2 +PT= 6500bbe47f2056d3a18b9837526b875975566e8f3b429909 +TEST= 290 +KEY= 83e40632603ed4e4e842cd1d5288d398 +IV= 5a6f76581044c6b4094eefe939ef05649b8b8945c84096e7 +CT= 6500bbe47f2056d3a18b9837526b875975566e8f3b429909 +PT= 476878b9d3f04eb3afa3b2e8ff1316f12b0292452c1705d1 +TEST= 291 +KEY= 2c47b4da9f2dc215c3405f587e9fd649 +IV= 8a6a231b7aa2f61a19b50c583519398ac3a380c9d1e38529 +CT= 476878b9d3f04eb3afa3b2e8ff1316f12b0292452c1705d1 +PT= 3a495020c98db4dbb8256f7b11236c04637f2585666e6b53 +TEST= 292 +KEY= 9462dba18e0eae11a03f7add18f1bd1a +IV= 6077786a6d59e63aaef2d0a8717e5f81d0f407eb31c3d7a9 +CT= 3a495020c98db4dbb8256f7b11236c04637f2585666e6b53 +PT= dcc0bdebf1494e6ef4ed488cc19c36afd2b6aaa9a2ae46c0 +TEST= 293 +KEY= 608f932d4f9298be7289d074ba5ffbda +IV= 8b0f6d7c95264beaa2e2524dcc7c6a83ad8f4a4cd3a6a4e5 +CT= dcc0bdebf1494e6ef4ed488cc19c36afd2b6aaa9a2ae46c0 +PT= 221c074be144560ed04962e6d118d750fd82d4df8ce9eb1c +TEST= 294 +KEY= b0c6f1cb9e8a4fee8f0b04ab36b610c6 +IV= a355da66a01bd7b26b61f94ffcc988a9e9853964a6a79b54 +CT= 221c074be144560ed04962e6d118d750fd82d4df8ce9eb1c +PT= ee81ef61cd1d8950ddd4e32ce9d213a014a50c2b7fab0a79 +TEST= 295 +KEY= 6d1212e777585c4e9bae0880491d1abf +IV= 596ba8d79c9934bcf402fe9009e33e2ae4fe00f3cabab9bd +CT= ee81ef61cd1d8950ddd4e32ce9d213a014a50c2b7fab0a79 +PT= 60a0a56fcde5175e419d08bdabb531555ef2d78608cfdc07 +TEST= 296 +KEY= 2c8f1a5adced6d1bc55cdf0641d2c6b8 +IV= fabfc373b21658e4d8a8be31e42a70e80d27084e9779d27d +CT= 60a0a56fcde5175e419d08bdabb531555ef2d78608cfdc07 +PT= cfaa27d06a245e4929d74c1b281bfea4ec515239fe6be658 +TEST= 297 +KEY= 05585641f4f693bf290d8d3fbfb920e0 +IV= b04fa460ff64a0bfe4b7b925c319b7e1ca4ccc1ed44883d9 +CT= cfaa27d06a245e4929d74c1b281bfea4ec515239fe6be658 +PT= cd871125f8c7703d1bce096e03438d652380dc128e86b78b +TEST= 298 +KEY= 1e965f2ff7b51eda0a8d512d313f976b +IV= 59023e1c397e0acf80a2b66e18e01b5d795a139efd551c5f +CT= cd871125f8c7703d1bce096e03438d652380dc128e86b78b +PT= 163a1fb2a0ea5a3e0cebe08c2f48f0a754b32bce4a8774ae +TEST= 299 +KEY= 127dbfa3d8fdee7d5e3e7ae37bb8e3c5 +IV= 3a345b987fcbc7aac726b66b65f65cf5f35ef767fcc6b1f0 +CT= 163a1fb2a0ea5a3e0cebe08c2f48f0a754b32bce4a8774ae +PT= 9ac59dd4afd3a2e7b5acd50fdafe139167de2e8f1fa7c65f +TEST= 300 +KEY= a7d16aac0203fdec39e0546c641f259a +IV= 3abe3093a04c92b9670ac26dd81f1d659281fbce5a0200a0 +CT= 9ac59dd4afd3a2e7b5acd50fdafe139167de2e8f1fa7c65f +PT= 32c954dd4cb754a369be21f506a020ddb6183d8f1411c0c9 +TEST= 301 +KEY= ce6f4b5904a3dd318ff869e3700ee553 +IV= 8009c314194895dacd2aebc141a3fbe1ef083aa218d45cba +CT= 32c954dd4cb754a369be21f506a020ddb6183d8f1411c0c9 +PT= 8401679681919eb4b89d559380cde349932916295ad330f8 +TEST= 302 +KEY= 76f21eca846e3e781cd17fca2addd5ab +IV= 6a3070669d99385601383d7049dbe1d01b222122a2d5be3f +CT= 8401679681919eb4b89d559380cde349932916295ad330f8 +PT= b285b9b0eb8e6490f95a0f351361cd65c11f0bf7d8867a6b +TEST= 303 +KEY= 8fa811ff970ff31dddce743df25bafc0 +IV= d295dcf7b0259a3aa6893fc09bc9c2f5aaae29c651ea525b +CT= b285b9b0eb8e6490f95a0f351361cd65c11f0bf7d8867a6b +PT= 90d7ca8ea59cce30a6f0bb43b5a4b5c7d2d15dcdca9d90a8 +TEST= 304 +KEY= 2958aabc22ab46da0f1f29f038c63f68 +IV= e6d00413220e950830d69f7071073d585bd48c33d811becd +CT= 90d7ca8ea59cce30a6f0bb43b5a4b5c7d2d15dcdca9d90a8 +PT= 0134e6c03e91b1074c1a911bd535b36aa8b6b52926b8af9b +TEST= 305 +KEY= 65423ba7f79ef5b0a7a99cd91e7e90f3 +IV= 37593f57dcdb6ed1e22dd82908bc01990345b439f4cecf86 +CT= 0134e6c03e91b1074c1a911bd535b36aa8b6b52926b8af9b +PT= 79b4629ecb9431b6a69fa72e315833b268a07d8f672488aa +TEST= 306 +KEY= c3dd9c89c6c6c602cf09e156795a1859 +IV= 07358cf89f51c89902841e5ea4bd69b40f31d6727529184d +CT= 79b4629ecb9431b6a69fa72e315833b268a07d8f672488aa +PT= 6ab0b5a48252f20550d1fb7cd762c213b11945eb3c034263 +TEST= 307 +KEY= 930c67f511a404117e10a4bd45595a3a +IV= 86b6bf1b51a4e4d5ebaca8aee20b6599c166d9e9d243a3d8 +CT= 6ab0b5a48252f20550d1fb7cd762c213b11945eb3c034263 +PT= ad55cba92c07d6834109b10e92d194cc2d1e5074dfb66af5 +TEST= 308 +KEY= d205d6fb837590dd530ef4c99aef30cf +IV= 0a819a6f434134d37fa2b41dd535cf9fd7d5b96e95b40211 +CT= ad55cba92c07d6834109b10e92d194cc2d1e5074dfb66af5 +PT= 28d6cfb370a34d625a58d319227f7a94299002083ba6697d +TEST= 309 +KEY= 885d05e2a10aea497a9ef6c1a14959b2 +IV= 1b9714c8706313ca0ad8d065d4b41b5549ee233a7394f2c1 +CT= 28d6cfb370a34d625a58d319227f7a94299002083ba6697d +PT= d872d8b5d8250ee6b002abfaf40dca11c8eb0fdd39d297de +TEST= 310 +KEY= 385fae1855072058b275f91c989bce6c +IV= a7945c6822582ce96ee355483616a342bba6254e5b9fb674 +CT= d872d8b5d8250ee6b002abfaf40dca11c8eb0fdd39d297de +PT= 7a4fba23f407b296a6c6eff32bcd94ce91d590c848e17efe +TEST= 311 +KEY= 9e9941eb7ecab49623a069d4d07ab092 +IV= 02be49d0f26018160d8d75e487d1f05469db09f187cb9cb5 +CT= 7a4fba23f407b296a6c6eff32bcd94ce91d590c848e17efe +PT= a5d3304972e1c3413e80e53ee292b6604a46410bbfe4a79e +TEST= 312 +KEY= a019a4d59c5802f669e628df6f9e170c +IV= 960ee1ad010596761f450fe1815d5b99ac270208e508bcc9 +CT= a5d3304972e1c3413e80e53ee292b6604a46410bbfe4a79e +PT= 8ddc37f308553196dfcadff0bba5a759cd2b7c32f1d205eb +TEST= 313 +KEY= 7fd37b2527fda5afa4cd54ed9e4c12e7 +IV= 0ce63eadcce4f71c9ecdbbc70e7d3ee035f51dd5541ce997 +CT= 8ddc37f308553196dfcadff0bba5a759cd2b7c32f1d205eb +PT= 1cbeea5cbfc3eff0232125ff4b21d347dc7a7958b1954c98 +TEST= 314 +KEY= 5cf25eda6cdc76e878b72db52fd95e7f +IV= 7b8990df084304d7037a7c787fa3c1311e2e337e5b4513a8 +CT= 1cbeea5cbfc3eff0232125ff4b21d347dc7a7958b1954c98 +PT= 1508db6030cddc8abd5217f382c69779a04b01032664c171 +TEST= 315 +KEY= e1a04929ee1ae191d8fc2cb609bd9f0e +IV= 84924d2697340843e1e2330eb07ca1af2e4e6761cb2d3eb5 +CT= 1508db6030cddc8abd5217f382c69779a04b01032664c171 +PT= c1f6114786658839c7c0b1d1466379fb44e03cdee2ad4ea7 +TEST= 316 +KEY= 2660f8f8a879986a9c1c1068eb10d1a9 +IV= 819e5e405776d2652110b3789c95c09112557b668732f5f3 +CT= c1f6114786658839c7c0b1d1466379fb44e03cdee2ad4ea7 +PT= 149210b328556346fdc53200d63630578f851e7fa6280e89 +TEST= 317 +KEY= dba5caf87e4fa83d13990e174d38df20 +IV= 0f849bea95f06768f8bed94efb185a104b691bc613c1beb8 +CT= 149210b328556346fdc53200d63630578f851e7fa6280e89 +PT= d5aefa67a96298e29da09dc33c310c9cd62e8422887f51e1 +TEST= 318 +KEY= 4605573b427ea4a1c5b78a35c5478ec1 +IV= 53e06f553fa768b6648ad951182cb6d097603d0c7f990c3d +CT= d5aefa67a96298e29da09dc33c310c9cd62e8422887f51e1 +PT= cbef8abe790c570e9d1c1b48cfaac8bcce7d576d05c9a6fc +TEST= 319 +KEY= db194c738dd46c1d0bcadd58c08e283d +IV= 78f19016de48b08a25b8099582e536ccc5809e4e7272f8ba +CT= cbef8abe790c570e9d1c1b48cfaac8bcce7d576d05c9a6fc +PT= 5e0d42f78f243278d50fcea0f00379827f697b9a02021675 +TEST= 320 +KEY= 0e1682d37dd7159f74a3a6c2c28c3e48 +IV= 75e982e4b1ff8a0d75281a668906cce832bd68bf69950cbb +CT= 5e0d42f78f243278d50fcea0f00379827f697b9a02021675 +PT= ae92f6a483875edb195bb3f4cc2e09f9610e42d09d206842 +TEST= 321 +KEY= 174d3127b1f91c6615ade4125fac560a +IV= c0a8d2bc1591cdf6f07c8d6a72fdf5538c8f5e67f2ab43eb +CT= ae92f6a483875edb195bb3f4cc2e09f9610e42d09d206842 +PT= 006947785ecdeacc096e476a283505e232d60f781900a007 +TEST= 322 +KEY= 1e23764d99cc1984277beb6a46acf60d +IV= 9a63269d935a7af284df8ab11061af2823368179ad02038c +CT= 006947785ecdeacc096e476a283505e232d60f781900a007 +PT= ff622e50f786f1b9e735ea0fc61d13bbfd38640c2863d5aa +TEST= 323 +KEY= f9169c425fd10a3fda438f666ecf23a7 +IV= 27de54d95fb0e5168ee4d622e69cfd9fced29f49f91e247d +CT= ff622e50f786f1b9e735ea0fc61d13bbfd38640c2863d5aa +PT= 0720ca65a11d2b468432252a78526d8d7913409cf9c62720 +TEST= 324 +KEY= 7d24b968278367b2a350cffa97090487 +IV= ab12fc03db1b42edd45e3a111d89b7239db8b420ee662394 +CT= 0720ca65a11d2b468432252a78526d8d7913409cf9c62720 +PT= 3d1e827aa53b0eb439d2243bb082ac1842380fbd532566ad +TEST= 325 +KEY= 44f69d539701cbaae168c047c42c622a +IV= 7d651b8fe565241c22dfd7d80e31c1b9521457283de7db9a +CT= 3d1e827aa53b0eb439d2243bb082ac1842380fbd532566ad +PT= 247dbcccdc1df41b58eb3596e0700a3e0bf13cbe5d2b5a66 +TEST= 326 +KEY= 1c1da8c57771c194ea99fcf99907384c +IV= bf48a3e45d693bd657647d21db229e807d446d64aefb6949 +CT= 247dbcccdc1df41b58eb3596e0700a3e0bf13cbe5d2b5a66 +PT= b185a613517cded225f70e34372797c6e3de85f8c7c70208 +TEST= 327 +KEY= 39eaa6f140565652094779015ec03a44 +IV= 0904dedd5edc93b94253f61521d52b69503b7c8f4d85e8bf +CT= b185a613517cded225f70e34372797c6e3de85f8c7c70208 +PT= b66a428cabe7d53162f1397f84178db779b577464e52a4fa +TEST= 328 +KEY= 5b1b9f8ec441dbe570f20e4710929ebe +IV= 8e6866afea7c591554432361c952a3fb4afa2afd5a85b47a +CT= b66a428cabe7d53162f1397f84178db779b577464e52a4fa +PT= 23261b13a2e9584b34562f111ee851f57691a6d4bd434359 +TEST= 329 +KEY= 6f4db09fdaa98a100663a893add1dde7 +IV= 6d5059b8fab87041d9d2b970c0fad8ea31b234c95abb8cf2 +CT= 23261b13a2e9584b34562f111ee851f57691a6d4bd434359 +PT= 66634177c61ecbe4aa59a25990b9111e6ec06466f50a8144 +TEST= 330 +KEY= c51412c64a109b0e68a3ccf558db5ca3 +IV= 628cb11345eaf4ae1022c330825e7de9f08608586d4a5abf +CT= 66634177c61ecbe4aa59a25990b9111e6ec06466f50a8144 +PT= 77de3643ed678df5c71533c53eadf300098dc709ba976e31 +TEST= 331 +KEY= 0201210374bd680e612e0bfce24c3292 +IV= 076ea40448f3183deb5830a19862026242866ab0dbe77a29 +CT= 77de3643ed678df5c71533c53eadf300098dc709ba976e31 +PT= 579d483712f48aa09c8c0eb06b544dd054958aa55baef7e5 +TEST= 332 +KEY= 9e8d2fb31fe925de35bb8159b9e2c577 +IV= bf3dfa568f6146375efc27a8f95e3095bd2c0a755dd4e425 +CT= 579d483712f48aa09c8c0eb06b544dd054958aa55baef7e5 +PT= 991af07938f68d73fb3d475d60d3dcbb75020f35f0c03e4c +TEST= 333 +KEY= 65b068ee7f3af96540b98e6c4922fb3b +IV= 5339e1ae4bf911f3bdc5099013977be00c1774ef926444c0 +CT= 991af07938f68d73fb3d475d60d3dcbb75020f35f0c03e4c +PT= aa3bc3f9870cacb2aa9b9b8ed634b96a2e938844509b9028 +TEST= 334 +KEY= cf2bf360a90e400f6e2a062819b96b13 +IV= d099c57168d5e516756eb41d17c1238e5d563f55a59b90eb +CT= aa3bc3f9870cacb2aa9b9b8ed634b96a2e938844509b9028 +PT= 16ffe0ff50cad271314ee5536a1e2ea1e1dbe57ac5f72595 +TEST= 335 +KEY= fe651633c3106eae8ff1e352dc4e4e86 +IV= 224b3e53195c32fce12ee77d9a8d077b4801a77f4d4e4e8b +CT= 16ffe0ff50cad271314ee5536a1e2ea1e1dbe57ac5f72595 +PT= a53d0a1fa86a4c372bf734c8c47c66835e2340692f9602a7 +TEST= 336 +KEY= d59222fb076c082dd1d2a33bf3d84c21 +IV= 3cc9a7d1e9c95db80e0ef56a337daa5f08e030e496c15610 +CT= a53d0a1fa86a4c372bf734c8c47c66835e2340692f9602a7 +PT= cc0049af0baea9a806fc7109a16afc8f6fce6bd82b571b27 +TEST= 337 +KEY= d36e53f2a606f4a2be1cc8e3d88f5706 +IV= 9c2ac20cd0d0f58879b86397ece3f339c3546bb46089bc84 +CT= cc0049af0baea9a806fc7109a16afc8f6fce6bd82b571b27 +PT= fc533929432014947b9e51671b4ff56d033b1e61bb5ec415 +TEST= 338 +KEY= a8f00295bd4901cfbd27d68263d19313 +IV= d6f82a173cd568e8ef2cdf7a912c1917a82e4f584ea5a935 +CT= fc533929432014947b9e51671b4ff56d033b1e61bb5ec415 +PT= 428ef414961aa1b149959aee3bf25dcda8d5771e7ef3a467 +TEST= 339 +KEY= e165987b86bb5c0215f2a19c1d223774 +IV= acc4fed8c69f07c94acdeb49b7c7e85fe547036570b0df50 +CT= 428ef414961aa1b149959aee3bf25dcda8d5771e7ef3a467 +PT= 9cd795b9c777fe33efb6e5faea5021a22566d605499ec727 +TEST= 340 +KEY= 0ed37d816ceb7da03094779954bcf053 +IV= 1ff6799d843ea7dbf919818636e5380272c50567340095e6 +CT= 9cd795b9c777fe33efb6e5faea5021a22566d605499ec727 +PT= ad8bddf8f4264fe64f37bedbae01cb568f2f763a3952ff24 +TEST= 341 +KEY= 41e4c35ac2eab6f6bfbb01a36dee0f77 +IV= 55daf7e0ba8efa010ee12acad2a39174546a6da9fd830c0c +CT= ad8bddf8f4264fe64f37bedbae01cb568f2f763a3952ff24 +PT= ec2612cc80351a99ca17e7d92965d21ef3292d7460e34fa4 +TEST= 342 +KEY= 8bf32483eb8f64e84c922cd70d0d40d3 +IV= 033aa524916898719354fa35ecffaeb84b0f64f80cfb56af +CT= ec2612cc80351a99ca17e7d92965d21ef3292d7460e34fa4 +PT= a43f9e781bd2b7f19526738f9851f8453a5857df5fd87e28 +TEST= 343 +KEY= 1ed5570c73de9cad76ca7b0852d53efb +IV= 5992823ea3302e83563879b6386771d8d845fed6697850b7 +CT= a43f9e781bd2b7f19526738f9851f8453a5857df5fd87e28 +PT= 64d42e3b580b6d80201aafa355f89ec341fb1b19461b2a63 +TEST= 344 +KEY= 3ecff8af2626026e3731601114ce1498 +IV= a6534b8d648ed66b15fcc790fd2cd031346210315549c254 +CT= 64d42e3b580b6d80201aafa355f89ec341fb1b19461b2a63 +PT= 1b586d8b239c6f9a01462dbe11d85c28d60a41f166af28db +TEST= 345 +KEY= 3f89d51137fe5e46e13b21e072613c43 +IV= 57dcced5bf827f97dd39308642263ae6bcf6e10953a2ea32 +CT= 1b586d8b239c6f9a01462dbe11d85c28d60a41f166af28db +PT= 2c6ef2b7b5db77cd4ab5766716b5e566fbf2b3ff55be193a +TEST= 346 +KEY= 753ca376214bbb201ac9921f27df2579 +IV= 3dc05efd039dabfb14b99d8865754ab16e18315c54dbbb8c +CT= 2c6ef2b7b5db77cd4ab5766716b5e566fbf2b3ff55be193a +PT= eda6f49a0e59ff7be7425f2581864c2c94af6c768593033f +TEST= 347 +KEY= 927efc53a0cdf70c8e66fe69a24c2646 +IV= 7fea2cf1c9e6416ae042ac91cca8200e1de9c9d2a8cf594b +CT= eda6f49a0e59ff7be7425f2581864c2c94af6c768593033f +PT= 4125e82081dd4015b336b618eff09dddae2045b9a8c47a0a +TEST= 348 +KEY= 21484a4b4f3d6ad12046bbd00a885c4c +IV= a81da77214fd17e4c9813abcdaabb112e5386a68b82164f7 +CT= 4125e82081dd4015b336b618eff09dddae2045b9a8c47a0a +PT= 03b8e22fff73bbdd0493f906c7623c44db65651a0de50bd9 +TEST= 349 +KEY= 25dbb34d885f5695fb23deca076d5795 +IV= 9ffcab4e082dae4d86c9d25753ee063ec0bb9f2a9a577f72 +CT= 03b8e22fff73bbdd0493f906c7623c44db65651a0de50bd9 +PT= d9a0c0cfe2cb5e020be5030603ff2cd79c821c2e5093821f +TEST= 350 +KEY= 2e3eb04b8ba07a4267a1c2e457fed58a +IV= 3e59825fa002fac2b95b4d54af970b899c02137fe3cb005b +CT= d9a0c0cfe2cb5e020be5030603ff2cd79c821c2e5093821f +PT= 493d58378bb81c861ebdd121543395126fd2bdf1e2db2628 +TEST= 351 +KEY= 3083616adf93ef5008737f15b525f3a2 +IV= e88b3104025284c3c551bb0df85a50fb97bb187b460530df +CT= 493d58378bb81c861ebdd121543395126fd2bdf1e2db2628 +PT= 433fdbdc028cb1ae2b4ca113e9c1039cdf4903be3422c46b +TEST= 352 +KEY= 1bcfc0793652ecccd73a7cab810737c9 +IV= dc88ed7d13e83d844a79d8aa172e242e0ac32c49ab2b1933 +CT= 433fdbdc028cb1ae2b4ca113e9c1039cdf4903be3422c46b +PT= edae752aaf29d1eb145f368048eda60e7d78a44d4a51666d +TEST= 353 +KEY= 0f90f6f97ebf4ac2aa42d8e6cb5651a4 +IV= 570810bbbb42debddc1804625f91dbea4c003184ad9f7985 +CT= edae752aaf29d1eb145f368048eda60e7d78a44d4a51666d +PT= 8fbffab7cec1f0de080e052c41d49f822f7af1a392953dba +TEST= 354 +KEY= 079ef3d53f6bd5408538294559c36c1e +IV= c2604e292ea6b3e2aa05ef079a506b1ee18b53ebfbd764ee +CT= 8fbffab7cec1f0de080e052c41d49f822f7af1a392953dba +PT= 658bf6bebcd72b0742e52f02852265fdbe3963db83a47c24 +TEST= 355 +KEY= 457bdcd7ba49b0bd3b014a9eda67103a +IV= f386bc172b19b220e2f592507e05a9a2ee8e37301dfc6bc5 +CT= 658bf6bebcd72b0742e52f02852265fdbe3963db83a47c24 +PT= df7c27918d2eddefa2450b2b1cabb71317b9581d8bb03dcd +TEST= 356 +KEY= e73ed7fca6e207ae2cb8128351d72df7 +IV= e71310deb2f6b75b24032d207cd0d0c986fe280d6b211732 +CT= df7c27918d2eddefa2450b2b1cabb71317b9581d8bb03dcd +PT= 98e0d79c55cbb619a0b938eb9e97111077dda40a436fccbb +TEST= 357 +KEY= 4787ef17387516be5b65b68912b8e14c +IV= fb7765b59b3ec763f59167380336066adcc2a47427932016 +CT= 98e0d79c55cbb619a0b938eb9e97111077dda40a436fccbb +PT= 63f482ef7bdf43a79fc24a704f0dc110b39e943c377c37b0 +TEST= 358 +KEY= d845a5677778d7aee8fb22b525c4d6fc +IV= 80839f66722770c6bb94d1c69552f2f92d7b8c1e4cfaf767 +CT= 63f482ef7bdf43a79fc24a704f0dc110b39e943c377c37b0 +PT= fa20fb3d548d2eae78412ab80aabb92ede680c6b9adf8abf +TEST= 359 +KEY= a0048fdf7dd36e8036932edebf1b5c43 +IV= 93abf693ad56a5ddc37e648cf80b98f6e56fe9dfe41173da +CT= fa20fb3d548d2eae78412ab80aabb92ede680c6b9adf8abf +PT= aac897daca09f701888cea9392c3d809cb412e7d1f95082f +TEST= 360 +KEY= 2888654cef10b689fdd200a3a08e546c +IV= 55e008e6feb9b2f62b59b547daa5b4aa5d9ebd6c4d210f3f +CT= aac897daca09f701888cea9392c3d809cb412e7d1f95082f +PT= 961b2da40ad97d7a1efb549e98f515802e581504d653680a +TEST= 361 +KEY= 367331d277e5a309d38a15a776dd3c66 +IV= 667ae0a568901673c39007121e09e421062d763636128593 +CT= 961b2da40ad97d7a1efb549e98f515802e581504d653680a +PT= c6f2b3fd7991af8747a87d1afc7924543b2674a907ab3449 +TEST= 362 +KEY= 71db4cc88b9c875de8ac610e7176082f +IV= 3e1428002f5c8fef47162c4d28e5ea10e1597d3ea801a193 +CT= c6f2b3fd7991af8747a87d1afc7924543b2674a907ab3449 +PT= a7c157fa6cc3098ac5b3c8bb7d7c1f5f55a3179e8c9e90b5 +TEST= 363 +KEY= b4688473f6e09802bd0f7690fde8989a +IV= 95a966b66aa1797cb3896bfdbb8b28f2673b6af9a3be2498 +CT= a7c157fa6cc3098ac5b3c8bb7d7c1f5f55a3179e8c9e90b5 +PT= 178b9f43d3914b4103c46446ba1b218d1fe0d46f831c2757 +TEST= 364 +KEY= b7ace0354cfbb98fa2efa2ff7ef4bfcd +IV= ab755b3a12961d2643e5e7c6811e3415833c6cbdbdd76c00 +CT= 178b9f43d3914b4103c46446ba1b218d1fe0d46f831c2757 +PT= 9ceb1d44bf2aa289a6e0528cc3210a4bbf96e74d652d7df4 +TEST= 365 +KEY= 114cb2b98fdab3c41d7945b21bd9c239 +IV= a7ce0ccfb969c1bb3fda8e77acf48d11b34fec20e8b57ad3 +CT= 9ceb1d44bf2aa289a6e0528cc3210a4bbf96e74d652d7df4 +PT= 36b6f5140a1751eb28193382f20351289840774b1218d2f2 +TEST= 366 +KEY= 3955813b7dd9e2ec853932f909c110cb +IV= 5ef36f62de6d5db66458dbd2bab4659d5ef185b017956335 +CT= 36b6f5140a1751eb28193382f20351289840774b1218d2f2 +PT= 45064007b27113739f40a76d368715cd1b0fab7f01d52825 +TEST= 367 +KEY= a61526564b5ef7219e369986081438ee +IV= afd6be488776d18976c02129ef723bcb7eb291357e5c2223 +CT= 45064007b27113739f40a76d368715cd1b0fab7f01d52825 +PT= 611fa2c0af9bbfb4a2a38d12219751e13896649eb8eea10b +TEST= 368 +KEY= 04b6ab446ac9a6c0a6a0fd18b0fa99e5 +IV= d0d85a0e9c1c23ed734c69c16cbcf5cd5fa2337a825bc841 +CT= 611fa2c0af9bbfb4a2a38d12219751e13896649eb8eea10b +PT= 58e3c3ce7d9a1fd8427be17745ac61c336465b190c16e182 +TEST= 369 +KEY= 46cd4a332f65c70390e6a601bcec7867 +IV= 69434ada73de4a69d148ff9895dda86bf1e89b4fc0f42eca +CT= 58e3c3ce7d9a1fd8427be17745ac61c336465b190c16e182 +PT= 72947cae5421cdd5665620b9b5752983d5afb144087618bc +TEST= 370 +KEY= 209b6a8a9a10ee8045491745b49a60db +IV= af4d2510ddcabd9463eff642697658dc171e3e75e519e170 +CT= 72947cae5421cdd5665620b9b5752983d5afb144087618bc +PT= 1ce8b29ac135e098c1f54c7b23219a3ed2f7fcc00962c32b +TEST= 371 +KEY= e16e26f1b93174be97beeb85bdf8a3f0 +IV= 9f62ad6167b6d5a274fffa4fe01a89b2dc7dd33bb35a8cc9 +CT= 1ce8b29ac135e098c1f54c7b23219a3ed2f7fcc00962c32b +PT= 707c6e91b5e4ec2f34808a2bde44998a800fd15f936c3375 +TEST= 372 +KEY= d5eeacda6775ed3417b13ada2e949085 +IV= 935808d160c69f0eaa8aa18f3fd7e0a3b2b0e186b7652d28 +CT= 707c6e91b5e4ec2f34808a2bde44998a800fd15f936c3375 +PT= 78fc1bcb8b79e9504b15c99714461d08784ccd4eb68df28e +TEST= 373 +KEY= 9efb654d7333f03c6ffdf7949819620b +IV= e6ddef2128d7c6e4feba684ad057341fb14119f738d95cd6 +CT= 78fc1bcb8b79e9504b15c99714461d08784ccd4eb68df28e +PT= 69c940ced15f744a9cc4df0650206b57b0d74def6620fc1d +TEST= 374 +KEY= 023fba4b23139b6bdf2aba7bfe399e16 +IV= 8edd440e631231a99e252fead4100ff5dd251c0d36321855 +CT= 69c940ced15f744a9cc4df0650206b57b0d74def6620fc1d +PT= 4d86b2a4b566db593a2946efde111902245919b79cacfb45 +TEST= 375 +KEY= 3816fca4fd028269fb73a3cc62956553 +IV= 6a5aa515918b94df6e43b6028458b5f1bf8ed9da8ae8c4eb +CT= 4d86b2a4b566db593a2946efde111902245919b79cacfb45 +PT= 62ab6ad5576f6c00339e723e7057fe8d734fee75a0108fa1 +TEST= 376 +KEY= 0b888e9a8d557ce4883c4db9c285eaf2 +IV= abde54a62edbf6c8b713602c92d909b1c2d08b7b16823e43 +CT= 62ab6ad5576f6c00339e723e7057fe8d734fee75a0108fa1 +PT= 38706a1ffe06daf1d192cf3dd60f9cbc7e2175a0f94fb8af +TEST= 377 +KEY= da1a41a75b5ae058f61d38193bca525d +IV= 6e47dbcc942bf59fcbfc25c2d6245df033b1ae127c38553b +CT= 38706a1ffe06daf1d192cf3dd60f9cbc7e2175a0f94fb8af +PT= 18be318fe95af36b3a59ad00a8f62a6fa6d2cf8057f9adc4 +TEST= 378 +KEY= e043eca7f3acca3750cff7996c33ff99 +IV= c12162e25584887a0081608f50f674c94880ca00d801951e +CT= 18be318fe95af36b3a59ad00a8f62a6fa6d2cf8057f9adc4 +PT= b3e5008ecc5f41bd8bba84cce934ebce81184d3c123ff306 +TEST= 379 +KEY= 6bf9686b1a9821f9d1d7baa57e0c0c9f +IV= f5a3d3a2014e5d72f034f8ed24ab71bb28558ab42db10c1a +CT= b3e5008ecc5f41bd8bba84cce934ebce81184d3c123ff306 +PT= c763f0f877b1f8106694272a0f97ffae4dcc16288ec91aed +TEST= 380 +KEY= 0d6d4f41150fde579c1bac8df0c51672 +IV= b325c0c86dd1fe82174b59ce248179d74d9af4c594970b7f +CT= c763f0f877b1f8106694272a0f97ffae4dcc16288ec91aed +PT= 79a8f32b99c38a252106e9a8f4bf65aa2fb200e3015503f3 +TEST= 381 +KEY= 2c6ba6e9e1b0bbfdb3a9ac6ef1901581 +IV= 412ca7868acd3f2cb092be8dffad8ea68181c3379ea40e37 +CT= 79a8f32b99c38a252106e9a8f4bf65aa2fb200e3015503f3 +PT= 11a430a74d033ac012a3e72b345081fcb0ae8175a9a62909 +TEST= 382 +KEY= 3ec841c2d5e03a0103072d1b58363c88 +IV= e9956edb06df54520bd491cea6ca3d04b440cf6f752be458 +CT= 11a430a74d033ac012a3e72b345081fcb0ae8175a9a62909 +PT= 80ee27dfa7d7b50912c14a55c22c0f71abab39b071afdccd +TEST= 383 +KEY= 2c090b9717cc3570a8ac14ab2999e045 +IV= cb6263476a41d6bff366c338c828f4e30837a07cd565f91c +CT= 80ee27dfa7d7b50912c14a55c22c0f71abab39b071afdccd +PT= ed0af8f1ce352bee64756cdcba2e96a1177d956bb24ce44e +TEST= 384 +KEY= 487c674bade2a3d1bfd181c09bd5040b +IV= d0ffc788ea29ba653cf58b9f5079eaaedcffe5f85d33260a +CT= ed0af8f1ce352bee64756cdcba2e96a1177d956bb24ce44e +PT= 23c8ee2ce0dffcd4bdecefb6683d15f9d7745553ccd3e956 +TEST= 385 +KEY= f59088fdc5dfb62868a5d4935706ed5d +IV= 9a5e3e9f764e9b2919b4be2fa55dde59ab2bbb9160d1a6a5 +CT= 23c8ee2ce0dffcd4bdecefb6683d15f9d7745553ccd3e956 +PT= 5a629c8aa8c6959abec98021c4ec3e39c3d67adbffa4698e +TEST= 386 +KEY= 4b5908dc01338811ab73ae48a8a284d3 +IV= 4b31f130719274060cf670a2bc86cc3b98f03fb8262b0e5a +CT= 5a629c8aa8c6959abec98021c4ec3e39c3d67adbffa4698e +PT= 7a75c62330d5ec72084eb4ab795a38199fe9799a76ed0ec4 +TEST= 387 +KEY= 4317bc777869b008349ad7d2de4f8a17 +IV= 7505a37776d47e0a37594082709482968240c4f3bb540be2 +CT= 7a75c62330d5ec72084eb4ab795a38199fe9799a76ed0ec4 +PT= e63ba1e2836a83ccf297b7f82edc8b48db25a90e490dd959 +TEST= 388 +KEY= b1800b8f56b53b40efbf7edc9742534e +IV= f44998bc8b2d18b3147fe28ebed4fa6c8195b4346679ed31 +CT= e63ba1e2836a83ccf297b7f82edc8b48db25a90e490dd959 +PT= 3de6bb4086b67a745112d1452cce47b3732915203f96e3a4 +TEST= 389 +KEY= e092daca7a7b7cf39c966bfca8d4b0ea +IV= 7db8694e1ad67d22d4283133685816ca0630fa0d161571a7 +CT= 3de6bb4086b67a745112d1452cce47b3732915203f96e3a4 +PT= b46a7b1920c55d1f9dacedfeae691f0daef919681ccba445 +TEST= 390 +KEY= 7d3e3734d41263fe326f7294b41f14af +IV= 46b7121d18a83f1c2fe89f45cfee77e7cb60cb0439f1b641 +CT= b46a7b1920c55d1f9dacedfeae691f0daef919681ccba445 +PT= ad9ba07ecf13fe74b26a70f164f24ebc87ab34f28e5ed518 +TEST= 391 +KEY= cf5447c5b0e02d42b5c446663a41c1b7 +IV= be1bb9a0c359c3b9602049027895788d82ea5e58b5eca007 +CT= ad9ba07ecf13fe74b26a70f164f24ebc87ab34f28e5ed518 +PT= 0cfc71d8311a89cf351924669ffa4d46e3278c98e26a1f5e +TEST= 392 +KEY= fa4d63a32f1a600456e3cafed82bdee9 +IV= 87f54af0ef8d413cd6f5e476801e10ad68c89d1f8d018632 +CT= 0cfc71d8311a89cf351924669ffa4d46e3278c98e26a1f5e +PT= c32fbef02cdf8c5e2d29e4ef7ecdab671590a39c6e6129fd +TEST= 393 +KEY= d764874c51d7cb6343736962b64af714 +IV= 83cbd97469e3ae39d919eab99aaaf9a0699f3c554ef14efb +CT= c32fbef02cdf8c5e2d29e4ef7ecdab671590a39c6e6129fd +PT= c86d8398aede0f274627cfe1354004343cb6931d22c866ec +TEST= 394 +KEY= 914348ad6497cf577fc5fa7f948291f8 +IV= 0cc824d1368454b79d3ea566ce57e85b655947f8e468fc12 +CT= c86d8398aede0f274627cfe1354004343cb6931d22c866ec +PT= 1fe95c5f957d3898c83ce0fffe658665f859ca654904bc13 +TEST= 395 +KEY= 597fa8529af24932879c301add862deb +IV= 1812d6c3fd2a0af986d75103d66ffd0d427b9b6c6d309cbc +CT= 1fe95c5f957d3898c83ce0fffe658665f859ca654904bc13 +PT= 6064bfc0508f54944a74da53c7badaa3f80ac4c095d8f62c +TEST= 396 +KEY= 130b72015d4893917f96f4da485edbc7 +IV= 6d2cd9e9b909087a1fb3c66b53a66454f6f21a006628c79f +CT= 6064bfc0508f54944a74da53c7badaa3f80ac4c095d8f62c +PT= 8a0a8247069243ee4dcc78cfd162f0923ec1bb481e0861bf +TEST= 397 +KEY= 5ec70ace8c2a630341574f925656ba78 +IV= 41a30bdd9140f98bd9d7f79da6427aa6e6fb6fd20ae483a4 +CT= 8a0a8247069243ee4dcc78cfd162f0923ec1bb481e0861bf +PT= dc61894909ca5eba906362834ac6e91dc1868815b25a901e +TEST= 398 +KEY= cea4684dc6ec8a1e80d1c787e40c2a66 +IV= 83a5913527ccb38d9f62fcc14ab299171f6478e4244ef342 +CT= dc61894909ca5eba906362834ac6e91dc1868815b25a901e +PT= b9fbec73b80ea7555c17738a7482ad3a23f77714474b314a +TEST= 399 +KEY= 92b31bc7b26e2724a326b093a3471b2c +IV= ccb5f3264f65fd8bcae314fbf8302c892f1b42b5d40b89c3 +CT= b9fbec73b80ea7555c17738a7482ad3a23f77714474b314a +PT= fa75e2bf6acdcef4ebe3da48cbd63417dedfab0f921419cd diff --git a/flint/test/testvals/cbcmd66.txt b/flint/test/testvals/cbcmd66.txt new file mode 100644 index 0000000..d933785 --- /dev/null +++ b/flint/test/testvals/cbcmd66.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= 48f87916b25efd0f239d74902dac44872d46419f90d6fa4c +TEST= 1 +KEY= 48f87916b25efd0f239d74902dac44872d46419f90d6fa4c +IV= ba4c6ad7e3d72be88779955b81fdeb50fe872d6dc566fc93 +CT= 48f87916b25efd0f239d74902dac44872d46419f90d6fa4c +PT= 86da0148abe59397e449cab7b39f98be397a85b8ab1a3137 +TEST= 2 +KEY= ce22785e19bb6e98c7d4be279e33dc39143cc4273bcccb7b +IV= d9c8687c7dbfe34d0348ce7a5486e8c66cb679d89e310dc1 +CT= 86da0148abe59397e449cab7b39f98be397a85b8ab1a3137 +PT= 17f75e984f35a1f70dbf5fcfd6c79cf3be2fc8acf82d3b36 +TEST= 3 +KEY= d9d526c6568ecf6fca6be1e848f440caaa130c8bc3e1f04d +IV= 3730440db6ac0a6b80cd886ee33fbe805904f799bb9a1585 +CT= 17f75e984f35a1f70dbf5fcfd6c79cf3be2fc8acf82d3b36 +PT= ad5b725b113e81e870ecb9d5641447676647455d423e1feb +TEST= 4 +KEY= 748e549d47b04e87ba87583d2ce007adcc5449d681dfefa6 +IV= 447add583fc07adc5755863524aab9ccbbb36567f22ad3f8 +CT= ad5b725b113e81e870ecb9d5641447676647455d423e1feb +PT= 1c4c54d727ae094114a4934a461119e8aca689674eebf330 +TEST= 5 +KEY= 68c2004a601e47c6ae23cb776af11e4560f2c0b1cf341c96 +IV= 19b0d3f19854b3e845f43a1db8783c935f7617abe3d1c3b7 +CT= 1c4c54d727ae094114a4934a461119e8aca689674eebf330 +PT= d77e4e0c3afdb68ada81c4293d4f2fa0495175698c4c7b55 +TEST= 6 +KEY= bfbc4e465ae3f14c74a20f5e57be31e529a3b5d8437867c3 +IV= c7f41ed209e9099ad3664f8dabb1a0b5fbd58d367e961fea +CT= d77e4e0c3afdb68ada81c4293d4f2fa0495175698c4c7b55 +PT= 3a8704df0efe1e035d3fceaa35b098121be4f16254c09983 +TEST= 7 +KEY= 853b4a99541def4f299dc1f4620ea9f7324744ba17b8fe40 +IV= 1c139b97882a1f28bcc514f4e7123c8778c5f12aa8e0a2e1 +CT= 3a8704df0efe1e035d3fceaa35b098121be4f16254c09983 +PT= b65303157c04678920abd27ff83170ec572150a26da30ac6 +TEST= 8 +KEY= 3368498c281988c60936138b9a3fd91b656614187a1bf486 +IV= 8a9736b4dfb70ba612be8f702acad2e358889e08033f51ed +CT= b65303157c04678920abd27ff83170ec572150a26da30ac6 +PT= 7bf63d5551e600c8e9ba1b15d6d2b8eeac64dc18c8738733 +TEST= 9 +KEY= 489e74d979ff880ee08c089e4ced61f5c902c800b26873b5 +IV= 30563000b5c506e692762bf9feeb74199bbff24db7658af9 +CT= 7bf63d5551e600c8e9ba1b15d6d2b8eeac64dc18c8738733 +PT= 053716b34cc934b3705f9cbfe87dceab1a74938aa7ef8498 +TEST= 10 +KEY= 4da9626a3536bcbd90d39421a490af5ed3765b8a1587f72d +IV= 7543adb5aae85fa0d1b534bfa055d48b677f3ae8ffec1db0 +CT= 053716b34cc934b3705f9cbfe87dceab1a74938aa7ef8498 +PT= d4adbe64feb29c7d3a35970899764535d72db8d03b745c98 +TEST= 11 +KEY= 9904dc0ecb8420c0aae603293de6ea6b045be35a2ef3abb5 +IV= 756e5c879b6c1a13f09654fedd655b7b59290379c17d2a71 +CT= d4adbe64feb29c7d3a35970899764535d72db8d03b745c98 +PT= 308e7e608122f6cc24d74bd01105f4a64b63381819f85992 +TEST= 12 +KEY= a98aa26e4aa6d60c8e3148f92ce31ecd4f38db42370bf227 +IV= c5a381de5baadcedf8b87ef64166ca18ea7f7e896faa9c9d +CT= 308e7e608122f6cc24d74bd01105f4a64b63381819f85992 +PT= 30eb106735de6eb339001b8ede353b0321a2e9a4ee69f497 +TEST= 13 +KEY= 9961b2097f78b8bfb7315377f2d625ce6e9a32e6d96206b0 +IV= d0854aeaaca23cc040188f523cc65b38d4a9bc9fbdd771a1 +CT= 30eb106735de6eb339001b8ede353b0321a2e9a4ee69f497 +PT= 8c81bf4fdeb887c6f554b1a6bbc5a19039aebd862830c903 +TEST= 14 +KEY= 15e00d46a1c03f794265e2d14913845e57348f60f152cfb3 +IV= 82db3360e6d5e851b6f1d5956accc453677881642793788c +CT= 8c81bf4fdeb887c6f554b1a6bbc5a19039aebd862830c903 +PT= 3434dbb58f00fc2c872e17a31fc521f34b981d7e647c6c7e +TEST= 15 +KEY= 21d4d6f32ec0c355c54bf57256d6a5ad1cac921e952ea3cd +IV= 4e35e17bb94e5d40bf22def5e929e28abfbbc7e480d01167 +CT= 3434dbb58f00fc2c872e17a31fc521f34b981d7e647c6c7e +PT= 7b7888aa65c471101e26005cccb3d7e86449bab4e538b6cb +TEST= 16 +KEY= 5aac5e594b04b245db6df52e9a65724578e528aa70161506 +IV= 08d87a4e9749acb028f31c18dd32f3479f83a4bce336541c +CT= 7b7888aa65c471101e26005cccb3d7e86449bab4e538b6cb +PT= 09a801262524e1bc42280537c5966ae5860570357bc57a12 +TEST= 17 +KEY= 53045f7f6e2053f99945f0195ff318a0fee0589f0bd36f14 +IV= 27afd84c4eb0209500ddf5725cb7f7c20c5afebf371d6977 +CT= 09a801262524e1bc42280537c5966ae5860570357bc57a12 +PT= 14b954c964ae99cb6b22d3cf1cd373d58dd425dcc338884f +TEST= 18 +KEY= 47bd0bb60a8eca32f26723d643206b7573347d43c8ebe75b +IV= 1b8fa8a0e8b425de27037656a8ed4665d13789e57c1f2d67 +CT= 14b954c964ae99cb6b22d3cf1cd373d58dd425dcc338884f +PT= 3385bf49569c177e2647ddaa2e0cf5a1f5a5b898349ee793 +TEST= 19 +KEY= 7438b4ff5c12dd4cd420fe7c6d2c9ed48691c5dbfc7500c8 +IV= e1a307ed730ae334af73026ecdf782a1b477994e8e5b2c2c +CT= 3385bf49569c177e2647ddaa2e0cf5a1f5a5b898349ee793 +PT= 9a13da5ef5c7573c19c17123aafeaa01eb779d3ab640aeb0 +TEST= 20 +KEY= ee2b6ea1a9d58a70cde18f5fc7d234d56de658e14a35ae78 +IV= bd75cbf0c9f6312be345d0c0d8d85b848b072d379464b008 +CT= 9a13da5ef5c7573c19c17123aafeaa01eb779d3ab640aeb0 +PT= fa7d454d64626af8e8c3460bdf82190c3cad936818c0ac74 +TEST= 21 +KEY= 14562beccdb7e0882522c95418502dd9514bcb8952f5020c +IV= 7ff48cfa55dab23a2656d3eea95e3dccde305061a9914394 +CT= fa7d454d64626af8e8c3460bdf82190c3cad936818c0ac74 +PT= b6b7f2bc2fee7cc895992bdc809a710f89672a61f2261a3b +TEST= 22 +KEY= a2e1d950e2599c40b0bbe28898ca5cd6d82ce1e8a0d31837 +IV= 7001ae1298e4fe46ba3672c8e330d1f80a48c12e44559c0f +CT= b6b7f2bc2fee7cc895992bdc809a710f89672a61f2261a3b +PT= 67e4f3a41a92278f68e031f78e314284033ffb6c919d74ec +TEST= 23 +KEY= c5052af4f8cbbbcfd85bd37f16fb1e52db131a84314e6cdb +IV= 685c998abeeca4427344576bc3f486a06ac18463a1af7da0 +CT= 67e4f3a41a92278f68e031f78e314284033ffb6c919d74ec +PT= c88c33fdf3933b8e9f201cd8cfe2d563e1a4f513e41d8969 +TEST= 24 +KEY= 0d8919090b588041477bcfa7d919cb313ab7ef97d553e5b2 +IV= 6a9f7d33976a9d185292bd066b9d3e6dbb7d878da81e66f5 +CT= c88c33fdf3933b8e9f201cd8cfe2d563e1a4f513e41d8969 +PT= 685a134a664cb3f409b39bc6520ca9ecc2c17dfaeb4bb497 +TEST= 25 +KEY= 65d30a436d1433b54ec854618b1562ddf876926d3e185125 +IV= 45c7c92b2e34032eacbf798469df9a48fd528cc8a106cc02 +CT= 685a134a664cb3f409b39bc6520ca9ecc2c17dfaeb4bb497 +PT= 108e0afc6e8e81d860a6f9040f2f399734c8842786e0004e +TEST= 26 +KEY= 755d00bf039ab26d2e6ead65843a5b4accbe164ab8f8516b +IV= 0b6e3264560417d8d45a014b9d89a587aed8e4503d7ed638 +CT= 108e0afc6e8e81d860a6f9040f2f399734c8842786e0004e +PT= d1bc64f2ef57c1b3a523aeb3de063254d1a5cb464a841f1c +TEST= 27 +KEY= a4e1644deccd73de8b4d03d65a3c691e1d1bdd0cf27c4e77 +IV= 93fef9025dba2a0022eea66d5cecb02a4c1132231b82541c +CT= d1bc64f2ef57c1b3a523aeb3de063254d1a5cb464a841f1c +PT= 8b1647bdb23e5a9502ff8bdb516349055d82d820ee743edc +TEST= 28 +KEY= 2ff723f05ef3294b89b2880d0b5f201b4099052c1c0870ab +IV= 422cc55910db904ea764a2bd6e5a4d1cdf7b87fb7516ba97 +CT= 8b1647bdb23e5a9502ff8bdb516349055d82d820ee743edc +PT= 954980dcd044b5cace00656b087b11872afa176586f337d8 +TEST= 29 +KEY= babea32c8eb79c8147b2ed660324319c6a6312499afb4773 +IV= 1938b3e0f18d982180f97505cd764030dc99a3ace31b8a4f +CT= 954980dcd044b5cace00656b087b11872afa176586f337d8 +PT= 67eb5e6f3e4d7b4add8b5c4a4d9dd38b20f466eab4ae57d6 +TEST= 30 +KEY= dd55fd43b0fae7cb9a39b12c4eb9e2174a9774a32e5510a5 +IV= d27c8fe10a1f5ce1ff815f7aaf57cd337c4d92c98220ccca +CT= 67eb5e6f3e4d7b4add8b5c4a4d9dd38b20f466eab4ae57d6 +PT= 25a821bbd3945c1834aa0b1c3c1dc0e3c1280ee5b16435b0 +TEST= 31 +KEY= f8fddcf8636ebbd3ae93ba3072a422f48bbf7a469f312515 +IV= d59b2e7793349f03e814ba0d3365830ecd625fc322d266b2 +CT= 25a821bbd3945c1834aa0b1c3c1dc0e3c1280ee5b16435b0 +PT= 610ed841c4dbabdde12c2ceb3ab1e13d4107ad748ec9a311 +TEST= 32 +KEY= 99f304b9a7b5100e4fbf96db4815c3c9cab8d73211f88604 +IV= df0edb85d7326771c2e9bf8b6bca692f54b09a55f49c06c3 +CT= 610ed841c4dbabdde12c2ceb3ab1e13d4107ad748ec9a311 +PT= 9b7502d480c4213b04ed9409535ecb4f7a098cba3092389a +TEST= 33 +KEY= 0286066d277131354b5202d21b4b0886b0b15b88216abe9e +IV= 3bae16e122b758d34f814ddf71d651fac6459eabbc5ce413 +CT= 9b7502d480c4213b04ed9409535ecb4f7a098cba3092389a +PT= 0b8ed3648294a1748c1dd6a5258e89b481f7142373de9d03 +TEST= 34 +KEY= 0908d509a5e59041c74fd4773ec5813231464fab52b4239d +IV= 11c6efc7004df31f3d9300a600b13771718f271264952922 +CT= 0b8ed3648294a1748c1dd6a5258e89b481f7142373de9d03 +PT= ac678e73898fa40f02373b579ab61437d2c2fc6a10a19e16 +TEST= 35 +KEY= a56f5b7a2c6a344ec578ef20a4739505e384b3c14215bd8b +IV= bc97296723fd0e690ef8acd3be3d4fc25512ab701f4e0f8f +CT= ac678e73898fa40f02373b579ab61437d2c2fc6a10a19e16 +PT= fff4e388fbf870dbb9824da1d693c30a5e6e5b01dbaafc54 +TEST= 36 +KEY= 5a9bb8f2d79244957cfaa28172e0560fbdeae8c099bf41df +IV= bef166cf7953114df439dc3263a4fb28f7bbf74b6894a9ee +CT= fff4e388fbf870dbb9824da1d693c30a5e6e5b01dbaafc54 +PT= 596e7164a01f397562f6dfed3d8dd9324713b7d4d0d00c5c +TEST= 37 +KEY= 03f5c996778d7de01e0c7d6c4f6d8f3dfaf95f14496f4d83 +IV= 43240710445e581ce1a6593d94ab8dca4913b3e405d7edce +CT= 596e7164a01f397562f6dfed3d8dd9324713b7d4d0d00c5c +PT= f78881e32b5b2ab910aaf91357e9d0bc16c4be9479b052d5 +TEST= 38 +KEY= f47d48755cd657590ea6847f18845f81ec3de18030df1f56 +IV= e3ef8e0945588248f01b85355d9b4d4ed13049a6a093b4d7 +CT= f78881e32b5b2ab910aaf91357e9d0bc16c4be9479b052d5 +PT= 651fb8a077e9e4a66f97b829fe5e5062381fb5233330229c +TEST= 39 +KEY= 9162f0d52b3fb3ff61313c56e6da0fe3d42254a303ef3dca +IV= 04b5e76785dc27a47d055599dd76012f95f4b3ded0532ec1 +CT= 651fb8a077e9e4a66f97b829fe5e5062381fb5233330229c +PT= 9f7b0f7ad24eb679e8189668bf5f93aba87b3255eefceb2f +TEST= 40 +KEY= 0e19ffaff97105868929aa3e59859c487c5966f6ed13d6e5 +IV= 5566fa4ca26e614399d5de609543f1d590501999026efa29 +CT= 9f7b0f7ad24eb679e8189668bf5f93aba87b3255eefceb2f +PT= b3b5d5ef6eee7b9ba3a266cccc4f263fd037f1374212e0fa +TEST= 41 +KEY= bdac2a40979f7e1d2a8bccf295caba77ac6e97c1af01361f +IV= 65fe3b57c69090875ebe9e2023a9c6fa188e7ef74463eb23 +CT= b3b5d5ef6eee7b9ba3a266cccc4f263fd037f1374212e0fa +PT= 35e79bb0a52224e9c57900dc583221a8a60dc4a7d2e25d31 +TEST= 42 +KEY= 884bb1f032bd5af4eff2cc2ecdf89bdf0a6353667de36b2e +IV= f8aeebab5a17737e8ae68cd34e72e199ee1433a7f4b79936 +CT= 35e79bb0a52224e9c57900dc583221a8a60dc4a7d2e25d31 +PT= df0b483d29e6f3f38b730e43bdb7203a7948ee61ad01f23b +TEST= 43 +KEY= 5740f9cd1b5ba9076481c26d704fbbe5732bbd07d0e29915 +IV= b60a706393b4c007e7aa92d8281ceff5fab03171bc510b2f +CT= df0b483d29e6f3f38b730e43bdb7203a7948ee61ad01f23b +PT= 3bea095fdcbf32ce70ee0a577524762244e3c16c01362d04 +TEST= 44 +KEY= 6caaf092c7e49bc9146fc83a056bcdc737c87c6bd1d4b411 +IV= 8d6d6a5c0d6f519119eef7b0dff2d85ea52d1a47fe657a59 +CT= 3bea095fdcbf32ce70ee0a577524762244e3c16c01362d04 +PT= e7db49836f730730e1a37d0bb1eec787933dc52a63854831 +TEST= 45 +KEY= 8b71b911a8979cf9f5ccb531b4850a40a4f5b941b251fc20 +IV= e435197fc298e842c3b462e178c3331ef8b32c295da89d3e +CT= e7db49836f730730e1a37d0bb1eec787933dc52a63854831 +PT= 6f33cf4b444234e4d6809e4f6977761b2d182fe1df49c5c9 +TEST= 46 +KEY= e442765aecd5a81d234c2b7eddf27c5b89ed96a06d1839e9 +IV= 1ec13b936b3bd43923942fcdaed2d5e18237f8d16bcb224b +CT= 6f33cf4b444234e4d6809e4f6977761b2d182fe1df49c5c9 +PT= 465cf7b6222a70daa906153eea8145270865226bb356c349 +TEST= 47 +KEY= a21e81ecceffd8c78a4a3e403773397c8188b4cbde4efaa0 +IV= 8351dee55403501a31ff8fa0b082ddb7564448f53b929dbd +CT= 465cf7b6222a70daa906153eea8145270865226bb356c349 +PT= 7c152058b2cdbffd0b2ac7c74b20b0320638d5611877f8d2 +TEST= 48 +KEY= de0ba1b47c32673a8160f9877c53894e87b061aac6390272 +IV= 07c7a61f852b8f11cbd66c5fa8368fd3e5a3e0a92c342c2c +CT= 7c152058b2cdbffd0b2ac7c74b20b0320638d5611877f8d2 +PT= ec797bed0d9756e41d73e4893e37e7008950c377944f4900 +TEST= 49 +KEY= 3272da5971a531de9c131d0e42646e4e0ee0a2dd52764b72 +IV= 8edeaa9b3d257f4f8b18391141a44151c547ab415556668c +CT= ec797bed0d9756e41d73e4893e37e7008950c377944f4900 +PT= 006a39148660fb5a99577e0800a4080f0133f16ac8ae5759 +TEST= 50 +KEY= 3218e34df7c5ca840544630642c066410fd353b79ad81c2b +IV= 45d7a79a4089128157c06990e28b4f3b17bc2af6046d1429 +CT= 006a39148660fb5a99577e0800a4080f0133f16ac8ae5759 +PT= 31a0ea45489c3c2d606ea9f047b5c214402afabfc5e1a3f2 +TEST= 51 +KEY= 03b80908bf59f6a9652acaf60575a4554ff9a9085f39bfd9 +IV= b70547c98a232e78277ed8b09582c436b66ed0c741782901 +CT= 31a0ea45489c3c2d606ea9f047b5c214402afabfc5e1a3f2 +PT= cead3edc17c99baacfd159358e671062a70422880f926c6a +TEST= 52 +KEY= cd1537d4a8906d03aafb93c38b12b437e8fd8b8050abd3b3 +IV= 0f0840df91e992cdf2a5f9f566b59d96d73c63752705c726 +CT= cead3edc17c99baacfd159358e671062a70422880f926c6a +PT= 881188b4682daf3b8f95252f14498b4dbd388761711a9f83 +TEST= 53 +KEY= 4504bf60c0bdc238256eb6ec9f5b3f7a55c50ce121b14c30 +IV= 845fddace3c84fdfa2228f1172c6d9f2712d1faa209bbb66 +CT= 881188b4682daf3b8f95252f14498b4dbd388761711a9f83 +PT= 6af5ed4e0a3afdf076358b464e8243865a918ba871f5e056 +TEST= 54 +KEY= 2ff1522eca873fc8535b3daad1d97cfc0f5487495044ac66 +IV= 978850c9acf521028ff7ca020feea4fa0e561c35e06d14b4 +CT= 6af5ed4e0a3afdf076358b464e8243865a918ba871f5e056 +PT= a19e4ef355ed8dbfb6be54eadf65f98d618453fbdfc7126b +TEST= 55 +KEY= 8e6f1cdd9f6ab277e5e569400ebc85716ed0d4b28f83be0d +IV= bbae35ea6d8dc51b229e82371684de2567bbb5501c02c3b0 +CT= a19e4ef355ed8dbfb6be54eadf65f98d618453fbdfc7126b +PT= 570b0bfa16132bd4794644d82ee904ec132172b1e3b2b872 +TEST= 56 +KEY= d9641727897999a39ca32d982055819d7df1a6036c31067f +IV= 5af3c39b6b0f423dddacd6db82e3c916f6d07f08f09741b3 +CT= 570b0bfa16132bd4794644d82ee904ec132172b1e3b2b872 +PT= 8b1203f218b6647948584b774ee3a62c55c5008abcb6bbe2 +TEST= 57 +KEY= 527614d591cffddad4fb66ef6eb627b12834a689d087bd9d +IV= cca9c995a015eb3455eca9a6bf33d5138ddd210912a570b2 +CT= 8b1203f218b6647948584b774ee3a62c55c5008abcb6bbe2 +PT= 36532e3d4e43eff26b8dab35c96fd8dfa5f3a2017c76b58c +TEST= 58 +KEY= 64253ae8df8c1228bf76cddaa7d9ff6e8dc70488acf10811 +IV= 3f40c039d7cb568ec675fc3a722f9ec37c18a8816f19c533 +CT= 36532e3d4e43eff26b8dab35c96fd8dfa5f3a2017c76b58c +PT= fd2ed5f06bf0eba92ca683384c9d39c3006dd2dac116d6f6 +TEST= 59 +KEY= 990bef18b47cf98193d04ee2eb44c6ad8daad6526de7dee7 +IV= 0a064418b03771a7f59e7162eeb90340ae311c1dac009836 +CT= fd2ed5f06bf0eba92ca683384c9d39c3006dd2dac116d6f6 +PT= 02d2e37a58c9ad4e042ecd63653cd54b49ea4bd2946eae89 +TEST= 60 +KEY= 9bd90c62ecb554cf97fe83818e7813e6c4409d80f989706e +IV= b7d2a1473a3e5166f64368b261f82ac97068ca489eaa58cf +CT= 02d2e37a58c9ad4e042ecd63653cd54b49ea4bd2946eae89 +PT= 5bc8a2f368ef4a87f9400cc57686943e448c36980521f6a9 +TEST= 61 +KEY= c011ae91845a1e486ebe8f44f8fe87d880ccab18fca886c7 +IV= bfed6690c7c22e79b05bb1c2a0c60d7d9c7bd422792002e4 +CT= 5bc8a2f368ef4a87f9400cc57686943e448c36980521f6a9 +PT= 4c06df859c57af80494a8b021205a373b1d51e82a0186bca +TEST= 62 +KEY= 8c177114180db1c827f40446eafb24ab3119b59a5cb0ed0d +IV= 52ebb16788c73f9f90d11f365c89fe5469a08d9005889137 +CT= 4c06df859c57af80494a8b021205a373b1d51e82a0186bca +PT= 3685e50938049610e620957877b9dbf27a544b83fbfb2da4 +TEST= 63 +KEY= ba92941d200927d8c1d4913e9d42ff594b4dfe19a74bc0a9 +IV= 2bdd017381a344cc6634b85c3cee8367e60c729687aafde7 +CT= 3685e50938049610e620957877b9dbf27a544b83fbfb2da4 +PT= aa065b195c6898b20cbb1482eed09c209900ec473f591ff3 +TEST= 64 +KEY= 1094cf047c61bf6acd6f85bc73926379d24d125e9812df5a +IV= d1d12752bcc29f86408c1d09bbd9985db9a2ce8e642381d5 +CT= aa065b195c6898b20cbb1482eed09c209900ec473f591ff3 +PT= c98dad5f3be9bf6640b8ee023357b991b32e97ec2ea1c56a +TEST= 65 +KEY= d919625b4788000c8dd76bbe40c5dae8616385b2b6b31a30 +IV= 4f6ebccc7498f4b291c267f42cb91d6cdf8249302d08a183 +CT= c98dad5f3be9bf6640b8ee023357b991b32e97ec2ea1c56a +PT= 2de6f8cae16859fea255ea932f7cc1ab08bb217c91040c4f +TEST= 66 +KEY= f4ff9a91a6e059f22f82812d6fb91b4369d8a4ce27b7167f +IV= 9819a42a25d39cae564cf3edea64feae2de45a23fac2e890 +CT= 2de6f8cae16859fea255ea932f7cc1ab08bb217c91040c4f +PT= 86c11eb4f89f568496f58c98b57794e371d0b7e64485e105 +TEST= 67 +KEY= 723e84255e7f0f76b9770db5dace8fa0180813286332f77a +IV= 720c90a3fcd00d33eec6dc28669fb701ef44303793003eb1 +CT= 86c11eb4f89f568496f58c98b57794e371d0b7e64485e105 +PT= 3951783e29bd25a2190afcc058986143d538ed91e7976645 +TEST= 68 +KEY= 4b6ffc1b77c22ad4a07df1758256eee3cd30feb984a5913f +IV= cff567d965dba9cdda3e9e1fdf7551957d932c195b268623 +CT= 3951783e29bd25a2190afcc058986143d538ed91e7976645 +PT= 923e517f97300ffbf774963f10fa6017d5da591c2df8d675 +TEST= 69 +KEY= d951ad64e0f2252f5709674a92ac8ef418eaa7a5a95d474a +IV= b17fa728f8772aeee13d3c61619032ee3ab63d311942b7ef +CT= 923e517f97300ffbf774963f10fa6017d5da591c2df8d675 +PT= a7c9b0d7d578b8d578750cec05f6a01ba9556eaf3e7db0dc +TEST= 70 +KEY= 7e981db3358a9dfa2f7c6ba6975a2eefb1bfc90a9720f796 +IV= cab2fef781553da02e2c925a9e0370d84b864f10c17e872b +CT= a7c9b0d7d578b8d578750cec05f6a01ba9556eaf3e7db0dc +PT= e6bc7278daa1a01dcf18670f705a5734e7e9128e3cb25733 +TEST= 71 +KEY= 98246fcbef2b3de7e0640ca9e70079db5656db84ab92a0a5 +IV= 1d142f29ff0860f362a329d987c2780cdd74a6f75119ba13 +CT= e6bc7278daa1a01dcf18670f705a5734e7e9128e3cb25733 +PT= 636fe0749180eab7087ac8b66add32b62cb84a32ab86810b +TEST= 72 +KEY= fb4b8fbf7eabd750e81ec41f8ddd4b6d7aee91b6001421ae +IV= c86bd25b04107ee1672d697c8e3519a2dfea5fa0c7faa27c +CT= 636fe0749180eab7087ac8b66add32b62cb84a32ab86810b +PT= d7bf0dcfb0187162d6f6c8d77254662bc9d72a260c9cb489 +TEST= 73 +KEY= 2cf48270ceb3a6323ee80cc8ff892d46b339bb900c889527 +IV= fad92d5e4ddef0fe90d4e321195efb3cee31ad04621bb286 +CT= d7bf0dcfb0187162d6f6c8d77254662bc9d72a260c9cb489 +PT= 3eb948d57a0f26bb1439d39e7782efed69af20d4fc35d1cb +TEST= 74 +KEY= 124dcaa5b4bc80892ad1df56880bc2abda969b44f0bd44ec +IV= 20e96b18817a437cf9911544df7e4a4d24fc1a2d5f928a07 +CT= 3eb948d57a0f26bb1439d39e7782efed69af20d4fc35d1cb +PT= bde3385fbd32310c325f6234e168a0e808075591921f1299 +TEST= 75 +KEY= afaef2fa098eb185188ebd6269636243d291ced562a25675 +IV= 689fee93c397c1a2f998818dc7c5b382e6f597d72fe1a6ce +CT= bde3385fbd32310c325f6234e168a0e808075591921f1299 +PT= 95d73df0af978eece010a17613a70e3a13513d2382f90205 +TEST= 76 +KEY= 3a79cf0aa6193f69f89e1c147ac46c79c1c0f3f6e05b5470 +IV= dec030aae157d46d6ecebb3c053dc6bbc319bcca406a655a +CT= 95d73df0af978eece010a17613a70e3a13513d2382f90205 +PT= fe690752d98d9982903143222032e1eaf407ab6f712d34b9 +TEST= 77 +KEY= c410c8587f94a6eb68af5f365af68d9335c75899917660c9 +IV= f6f124451d20de9f7bdbf63637972c9a0629454c3e251bac +CT= fe690752d98d9982903143222032e1eaf407ab6f712d34b9 +PT= 8904255d2b3aea69cd6c2c05e012ab0f947a69154a6ae554 +TEST= 78 +KEY= 4d14ed0554ae4c82a5c37333bae4269ca1bd318cdb1c859d +IV= 168ac87e9f5ba50050bbc0ece4af2defc30d6efa4352240d +CT= 8904255d2b3aea69cd6c2c05e012ab0f947a69154a6ae554 +PT= 2d0a8ef0b1f22f624faba4de3bc840bb0a039c2121add61e +TEST= 79 +KEY= 601e63f5e55c63e0ea68d7ed812c6627abbeadadfab15383 +IV= f01bd7f725c9443a43faba730fc28834b482538f3967e07e +CT= 2d0a8ef0b1f22f624faba4de3bc840bb0a039c2121add61e +PT= 512323e7fd63f4935e9f33e5564358dcdd6b41decdcff83b +TEST= 80 +KEY= 313d4012183f9773b4f7e408d76f3efb76d5ec73377eabb8 +IV= 0dc88ca290702a14472fd36cabc2cb96b6f44f443701e514 +CT= 512323e7fd63f4935e9f33e5564358dcdd6b41decdcff83b +PT= 6ff96729bebb8a08fdc57c07dd52437e842f8c0846b9da2e +TEST= 81 +KEY= 5ec4273ba6841d7b4932980f0a3d7d85f2fa607b71c77196 +IV= 13a5eb3c9e14c24df54252d4be1feac604590aa541203943 +CT= 6ff96729bebb8a08fdc57c07dd52437e842f8c0846b9da2e +PT= f5d9af71a7c85bf5f1f74dc1a3404a724f5c61801d481f1e +TEST= 82 +KEY= ab1d884a014c468eb8c5d5cea97d37f7bda601fb6c8f6e88 +IV= 26fe24541136a15119593fa9ef600ed6dd1e1be387c148b3 +CT= f5d9af71a7c85bf5f1f74dc1a3404a724f5c61801d481f1e +PT= d008f395e948393f8fddd9dde98352f13e84f23c9945d0f4 +TEST= 83 +KEY= 7b157bdfe8047fb137180c1340fe65068322f3c7f5cabe7c +IV= e4f180a1f63d74317ce7e6fa158570a8b8bb349df2757c6e +CT= d008f395e948393f8fddd9dde98352f13e84f23c9945d0f4 +PT= 715388c3214d6afd3717a272cd0be0627d23542c689e797e +TEST= 84 +KEY= 0a46f31cc949154c000fae618df58564fe01a7eb9d54c702 +IV= cb09c893e54cf9f2878022858935f7ed4be502df6f4be129 +CT= 715388c3214d6afd3717a272cd0be0627d23542c689e797e +PT= a273fc961973bb20476be9032caf5cb3e22b0ba4948eae41 +TEST= 85 +KEY= a8350f8ad03aae6c47644762a15ad9d71c2aac4f09da6943 +IV= 6539fb8e9a20881792d919c085aba4103a7f7fac92e9ba08 +CT= a273fc961973bb20476be9032caf5cb3e22b0ba4948eae41 +PT= 7c00fb5a160bf2c6c2df22743d2fd63cc7b4c323dc094768 +TEST= 86 +KEY= d435f4d0c6315caa85bb65169c750febdb9e6f6cd5d32e2b +IV= d19db6dcf90936f32af9a9ddd7c37fd422a3448c0ccd341f +CT= 7c00fb5a160bf2c6c2df22743d2fd63cc7b4c323dc094768 +PT= dbfc1e2dd8fe036f57fdae905e4ae50406792a0473d540db +TEST= 87 +KEY= 0fc9eafd1ecf5fc5d246cb86c23feaefdde74568a6066ef0 +IV= 9ce8a4e66b48a33b8f454ad702eec53951c2b1de51ca1c4d +CT= dbfc1e2dd8fe036f57fdae905e4ae50406792a0473d540db +PT= 79c13d7e97e0c41b60f73cdaf2b2a061bfce3e5dd1553363 +TEST= 88 +KEY= 7608d783892f9bdeb2b1f75c308d4a8e62297b3577535d93 +IV= 5ae909b1838b379619518269d96854ffdef772f01ff322bd +CT= 79c13d7e97e0c41b60f73cdaf2b2a061bfce3e5dd1553363 +PT= 0aee9123ce12785db9b86344a9e0ee1daf00124d4ce80a42 +TEST= 89 +KEY= 7ce646a0473de3830b099418996da493cd2969783bbb57d1 +IV= 5ce9c3e09b10ddfe00ca37d39b8299a54c01dca3a0482acb +CT= 0aee9123ce12785db9b86344a9e0ee1daf00124d4ce80a42 +PT= c3523fca4115fcebb84d76d47e605b4edc6f7eef343c557b +TEST= 90 +KEY= bfb4796a06281f68b344e2cce70dffdd114617970f8702aa +IV= f2061a6279ee4f97d644993f43c4f0f93a316c2f328b5483 +CT= c3523fca4115fcebb84d76d47e605b4edc6f7eef343c557b +PT= 39b6fb978703554df8250c995e9648368c5f4109cf2d2a0d +TEST= 91 +KEY= 860282fd812b4a254b61ee55b99bb7eb9d19569ec0aa28a7 +IV= 44da016adccd733a519388dbfb87b1efb798a2b5351e8486 +CT= 39b6fb978703554df8250c995e9648368c5f4109cf2d2a0d +PT= f9d1ce4d47e4a7a70798a68339d92a611910a50073bd2d89 +TEST= 92 +KEY= 7fd34cb0c6cfed824cf948d680429d8a8409f39eb317052e +IV= 390f260c23487280288a90c77f7d395ffd0c9ea7c13c2163 +CT= f9d1ce4d47e4a7a70798a68339d92a611910a50073bd2d89 +PT= 6f48a425261b31d862b0bee4dfcba1b5f111f6b06c4dc2b1 +TEST= 93 +KEY= 109be895e0d4dc5a2e49f6325f893c3f7518052edf5ac79f +IV= 477b6a17fdb0772f8e1ef0bb434defabc9917d16b5b4c6f7 +CT= 6f48a425261b31d862b0bee4dfcba1b5f111f6b06c4dc2b1 +PT= 02a0ebbd24dab34c667f485776892afe33d7f5b2c811b130 +TEST= 94 +KEY= 123b0328c40e6f164836be65290016c146cff09c174b76af +IV= 2e7fb8e214e397b1d96d8c165ca9aa6139e29e51777951a7 +CT= 02a0ebbd24dab34c667f485776892afe33d7f5b2c811b130 +PT= e02ca1315de881a762763aea0071c1def237424df74921c8 +TEST= 95 +KEY= f217a21999e6eeb12a40848f2971d71fb4f8b2d1e0025767 +IV= 34c1ca51262998e75bc78382ab31ef2bafd7f51b400d219e +CT= e02ca1315de881a762763aea0071c1def237424df74921c8 +PT= aff8d91c28cf7a9f5c9b0dcff63558ad868113c679fd753b +TEST= 96 +KEY= 5def7b05b129942e76db8940df448fb23279a11799ff225c +IV= 67f1558dce7a189cd7d9783d7d693f01a68697aa33b3a0ee +CT= aff8d91c28cf7a9f5c9b0dcff63558ad868113c679fd753b +PT= d79e34919db028447e7e8e1ee99baa8a23b64c6a376d30df +TEST= 97 +KEY= 8a714f942c99bc6a08a5075e36df253811cfed7dae921283 +IV= abb50d809c4cad417b3cc24ef8c6c3e42c2470e5d19d2b6e +CT= d79e34919db028447e7e8e1ee99baa8a23b64c6a376d30df +PT= 7c1d30c37607b87ff9ebf21af78b98210229fb907d73e3c8 +TEST= 98 +KEY= f66c7f575a9e0415f14ef544c154bd1913e616edd3e1f14b +IV= 0b767fbfa438df00c444dd5c4a13114112888d15c1c28a4a +CT= 7c1d30c37607b87ff9ebf21af78b98210229fb907d73e3c8 +PT= f8c0b4f1b5efc09e5c65701f838af67398a53dade776a8da +TEST= 99 +KEY= 0eaccba6ef71c48bad2b855b42de4b6a8b432b4034975991 +IV= 4c79be92a820f8e1f609882f3df68d413cbc36112689c667 +CT= f8c0b4f1b5efc09e5c65701f838af67398a53dade776a8da +PT= d85bf5ce35062a0fb7ccc70333abde7a5ad2458d58cecfe0 +TEST= 100 +KEY= d6f73e68da77ee841ae7425871759510d1916ecd6c599671 +IV= 0af0518eb4b2e5560db13fa43f3fa675326e3576049fe643 +CT= d85bf5ce35062a0fb7ccc70333abde7a5ad2458d58cecfe0 +PT= 772c868893cd69eb283d2084225d68e368f46e7130b5c8d5 +TEST= 101 +KEY= a1dbb8e049ba876f32da62dc5328fdf3b96500bc5cec5ea4 +IV= ded40f37b209e3819855ae48704a0bf250d02c359b95e856 +CT= 772c868893cd69eb283d2084225d68e368f46e7130b5c8d5 +PT= 55f46b087745559b326cf7eae92f3cfaab0f09758680ca5d +TEST= 102 +KEY= f42fd3e83effd2f400b69536ba07c109126a09c9da6c94f9 +IV= 9fbdfa86bfc47435e59731d992b6dc0cb7622f0d356de989 +CT= 55f46b087745559b326cf7eae92f3cfaab0f09758680ca5d +PT= acfa3809dac7f43ba41993ff3386f51d3ecb331eca04699b +TEST= 103 +KEY= 58d5ebe1e43826cfa4af06c9898134142ca13ad71068fd62 +IV= 39bf900af9ae6a5b833f9690a53adc3099105783a144804a +CT= acfa3809dac7f43ba41993ff3386f51d3ecb331eca04699b +PT= 3d1563f1589e109601abc49ff4dd1295d4889044f0c54b8b +TEST= 104 +KEY= 65c08810bca63659a504c2567d5c2681f829aa93e0adb6e9 +IV= 5229f9024bda458ccbaa6ec76499b4bd618707924e307725 +CT= 3d1563f1589e109601abc49ff4dd1295d4889044f0c54b8b +PT= 278345a99dbececb421806efe49b55a998dc5321ebf0a3ca +TEST= 105 +KEY= 4243cdb92118f892e71cc4b999c7732860f5f9b20b5d1523 +IV= 5f5403b5b527e18cb623b34c555a97e3f0ec57d02c8ac6f9 +CT= 278345a99dbececb421806efe49b55a998dc5321ebf0a3ca +PT= 37c7fd6dfe0b982203d519a8e836bf4d98c997b74cb7ed2b +TEST= 106 +KEY= 758430d4df1360b0e4c9dd1171f1cc65f83c6e0547eaf808 +IV= ea15ce22b5b46bfdbadf4c778697f6d0bbcfffd7fdeaa919 +CT= 37c7fd6dfe0b982203d519a8e836bf4d98c997b74cb7ed2b +PT= 5a65b40f2d4cfe247124fc8873730f972eabbea0b431aec9 +TEST= 107 +KEY= 2fe184dbf25f9e9495ed21990282c3f2d697d0a5f3db56c1 +IV= e0a2a4348d9f8941ed308f626d83a72108d1bfa47771f44d +CT= 5a65b40f2d4cfe247124fc8873730f972eabbea0b431aec9 +PT= 186fe7131fdaa73c6f606637c74362eb2e1467436e118af0 +TEST= 108 +KEY= 378e63c8ed8539a8fa8d47aec5c1a119f883b7e69dcadc31 +IV= 7b620c67cb29f1a03358f3aaa8bf4c33955f3fb577748c46 +CT= 186fe7131fdaa73c6f606637c74362eb2e1467436e118af0 +PT= eb936fff5abe8fbf49dae8f507c18766b8c7432dcde27abd +TEST= 109 +KEY= dc1d0c37b73bb617b357af5bc200267f4044f4cb5028a68c +IV= af799020ce0919860e8834bd7a80bf58baeb6d47b9da2e07 +CT= eb936fff5abe8fbf49dae8f507c18766b8c7432dcde27abd +PT= 7ecf5231ac2ea7432370cec0a23fb2f5f507fefbd71f732a +TEST= 110 +KEY= a2d25e061b1511549027619b603f948ab5430a308737d5a6 +IV= 1ee683451e23ef871f8ebad8bbaea2da23856de59ca13993 +CT= 7ecf5231ac2ea7432370cec0a23fb2f5f507fefbd71f732a +PT= 93a79cec9d5f50d6d1b29c527d47cc9fb93d9c38850ec88f +TEST= 111 +KEY= 3175c2ea864a41824195fdc91d7858150c7e960802391d29 +IV= 35cd8de2003445f1facee5d4097a2394166952b40c8a5350 +CT= 93a79cec9d5f50d6d1b29c527d47cc9fb93d9c38850ec88f +PT= 695b160c21ca929888887f4e20c9b56a05937d34b781a817 +TEST= 112 +KEY= 582ed4e6a780d31ac91d82873db1ed7f09edeb3cb5b8b53e +IV= 0cc5e6b17c8aa0e11bbeb6257ee2a2545759065e8698de8e +CT= 695b160c21ca929888887f4e20c9b56a05937d34b781a817 +PT= eec9efd48f189ced6e05a3e794c80c8ce6c7f223ac575e67 +TEST= 113 +KEY= b6e73b3228984ff7a7182160a979e1f3ef2a191f19efeb59 +IV= 0c3ee23add756c0c1de5db441f26f9df961c01b22ddea50e +CT= eec9efd48f189ced6e05a3e794c80c8ce6c7f223ac575e67 +PT= 4c822a94f24328410d5525bb5cb5c9c1f61cd6787ff10d1f +TEST= 114 +KEY= fa6511a6dadb67b6aa4d04dbf5cc28321936cf67661ee646 +IV= 64c7ced30e5ae11e1353d5ea2581ec6e0b713c7b98c17a25 +CT= 4c822a94f24328410d5525bb5cb5c9c1f61cd6787ff10d1f +PT= b6cfbe73c7ddcd41369656805ae3e5c1611a8675486e1ab1 +TEST= 115 +KEY= 4caaafd51d06aaf79cdb525baf2fcdf3782c49122e70fcf7 +IV= aff1e1169127b792d5df03c3f53f33a8fa9af35b7d198c50 +CT= b6cfbe73c7ddcd41369656805ae3e5c1611a8675486e1ab1 +PT= 318cdfea640911eff345d7d5c7d7d506873c4aebfca9c8af +TEST= 116 +KEY= 7d26703f790fbb186f9e858e68f818f5ff1003f9d2d93458 +IV= 80e576ea835d7db29742b0d045073f052d3cd339f8584200 +CT= 318cdfea640911eff345d7d5c7d7d506873c4aebfca9c8af +PT= 13958e9beb87dfacad2c2d40f16c79f561caf84247d70037 +TEST= 117 +KEY= 6eb3fea4928864b4c2b2a8ce999461009edafbbb950e346f +IV= 77fed5b971609a8550b3fbc94092d8d0b3bff93c9a8be13c +CT= 13958e9beb87dfacad2c2d40f16c79f561caf84247d70037 +PT= 00cf38bcde384177b9844ab93775bc7fb36162b91d225a66 +TEST= 118 +KEY= 6e7cc6184cb025c37b36e277aee1dd7f2dbb9902882c6e09 +IV= 5e880f8606c43a28f396390f9c3b18f176d8ed30da546584 +CT= 00cf38bcde384177b9844ab93775bc7fb36162b91d225a66 +PT= a7a1ad04aec5a31f454d8b3b1ef9ebfcd50dada343fb5756 +TEST= 119 +KEY= c9dd6b1ce27586dc3e7b694cb0183683f8b634a1cbd7395f +IV= 7181f2c4e6e30847d9d7e975fb837ca1aee77011f49ceda3 +CT= a7a1ad04aec5a31f454d8b3b1ef9ebfcd50dada343fb5756 +PT= a1f277dd321f1d5f6a8c5a2d70fa0e3b15b6f44b1aaa2e80 +TEST= 120 +KEY= 682f1cc1d06a9b8354f73361c0e238b8ed00c0ead17d17df +IV= 10b55a6f7a170141abbcc63e57afd491fa2eaf9ef3d0af2b +CT= a1f277dd321f1d5f6a8c5a2d70fa0e3b15b6f44b1aaa2e80 +PT= d6d3da18599625b5c5272069968dcab30d660c8224389d2d +TEST= 121 +KEY= befcc6d989fcbe3691d01308566ff20be066cc68f5458af2 +IV= 8bf2b628a5ba5ef372bf94ddd36837127a29c08c19a5295a +CT= d6d3da18599625b5c5272069968dcab30d660c8224389d2d +PT= 0dff6dce41107fae81e7ef6810609373efa3c56ff36a5ce1 +TEST= 122 +KEY= b303ab17c8ecc1981037fc60460f61780fc50907062fd613 +IV= 5af0642b0712c1a3ac1c06c2e03e5cb0112185fc63813915 +CT= 0dff6dce41107fae81e7ef6810609373efa3c56ff36a5ce1 +PT= b77c91f21ab08abac46d315f4e2e92d2f795cfd2c4d19834 +TEST= 123 +KEY= 047f3ae5d25c4b22d45acd3f0821f3aaf850c6d5c2fe4e27 +IV= fb601c09f8ac4ac5c4d32cb49e5efecdc45c38c3aedf082f +CT= b77c91f21ab08abac46d315f4e2e92d2f795cfd2c4d19834 +PT= 38eea4a8cb29e21a42a75f6b29288b4f90a1752943d6a682 +TEST= 124 +KEY= 3c919e4d1975a93896fd9254210978e568f1b3fc8128e8a5 +IV= b4039e8857153f7f147108f5861c99501bf8e81b924b820e +CT= 38eea4a8cb29e21a42a75f6b29288b4f90a1752943d6a682 +PT= c5cd743b0e62f829ba3f770b7e2b0b719bac587e16954aff +TEST= 125 +KEY= f95cea76171751112cc2e55f5f227394f35deb8297bda25a +IV= 6fb5f1775178bf4ce3f28f2039355e54ba2c713a6c7a2618 +CT= c5cd743b0e62f829ba3f770b7e2b0b719bac587e16954aff +PT= 1378cc430a399410accaab3901169c754bba4b53cd7a7e6f +TEST= 126 +KEY= ea2426351d2ec50180084e665e34efe1b8e7a0d15ac7dc35 +IV= 60b758cf450d817c74900ccfaf20bfb1d8978b9895aeaf4b +CT= 1378cc430a399410accaab3901169c754bba4b53cd7a7e6f +PT= 89daa8f945433b875c7231233fcfc6bdecaff44afbf88e87 +TEST= 127 +KEY= 63fe8ecc586dfe86dc7a7f4561fb295c5448549ba13f52b2 +IV= feeec4e39adcff62ac6578076bb0044855a1e7940b8467ae +CT= 89daa8f945433b875c7231233fcfc6bdecaff44afbf88e87 +PT= ea55d0b0baccf2d3cdd1493ca848101615b7ef4ecef6f985 +TEST= 128 +KEY= 89ab5e7ce2a10c5511ab3679c9b3394a41ffbbd56fc9ab37 +IV= 8b383a8dfe5ceafc24c2814afc6b07fd69c20b1c79927e9a +CT= ea55d0b0baccf2d3cdd1493ca848101615b7ef4ecef6f985 +PT= 5c3f821021e04f02932c1fdeb2f4de5f0fcd617474355883 +TEST= 129 +KEY= d594dc6cc3414357828729a77b47e7154e32daa11bfcf3b4 +IV= 12662ae6693a1746da47557a06a97b8dfa00e41a2d095d7b +CT= 5c3f821021e04f02932c1fdeb2f4de5f0fcd617474355883 +PT= bdf83ee514af86f49fbd73d39273a1a36d6f9468c66dd452 +TEST= 130 +KEY= 686ce289d7eec5a31d3a5a74e93446b6235d4ec9dd9127e6 +IV= dc85ecb4c5ec6cf340f5c2bf853a18b158d03ed32fb530b3 +CT= bdf83ee514af86f49fbd73d39273a1a36d6f9468c66dd452 +PT= 7f85c64cdd7236ef732338079aacaf1a64d4085d0bd97246 +TEST= 131 +KEY= 17e924c50a9cf34c6e1962737398e9ac47894694d64855a0 +IV= e0dc00a2165edde26f080ff6edec7a88474623d438fd5c34 +CT= 7f85c64cdd7236ef732338079aacaf1a64d4085d0bd97246 +PT= 159f28b9552915b82d8b829c27f39ed6df0388f0bcfc6cd4 +TEST= 132 +KEY= 02760c7c5fb5e6f44392e0ef546b777a988ace646ab43974 +IV= 5b2844a439e1cb39959d4db952fa9ebe46f9e9e79c441396 +CT= 159f28b9552915b82d8b829c27f39ed6df0388f0bcfc6cd4 +PT= 7306070e09f9afb623bba67bd82e1894af827da8b31eb338 +TEST= 133 +KEY= 71700b72564c4942602946948c456fee3708b3ccd9aa8a4c +IV= e1f146aa4031f20f6a6f95890af4befb580a555eeba3c873 +CT= 7306070e09f9afb623bba67bd82e1894af827da8b31eb338 +PT= 945ea95a587872aaae3b15c9b64c77b4f2901e309a60dba4 +TEST= 134 +KEY= e52ea2280e343be8ce12535d3a09185ac598adfc43ca51e8 +IV= 7779034d6286762576d2d9496109ef722e0fff17632f552c +CT= 945ea95a587872aaae3b15c9b64c77b4f2901e309a60dba4 +PT= 2269e6522a3a47a150c3da959648e152986bfd3698421558 +TEST= 135 +KEY= c747447a240e7c499ed189c8ac41f9085df350cadb8844b0 +IV= f1e3f84f3fd953b4f4c669aa1f403b0d7c0bfe72dc68ba60 +CT= 2269e6522a3a47a150c3da959648e152986bfd3698421558 +PT= 3760a505de3d9f0f08e95c4dbf00568e9f2329d84d8b0f28 +TEST= 136 +KEY= f027e17ffa33e3469638d5851341af86c2d0791296034b98 +IV= 09dbbfc4a141391a1a170daabdb5743d8d159a986e10d534 +CT= 3760a505de3d9f0f08e95c4dbf00568e9f2329d84d8b0f28 +PT= 64876993bcfd13febd124303022faeac7a64301b6f1ee7d0 +TEST= 137 +KEY= 94a088ec46cef0b82b2a9686116e012ab8b44909f91dac48 +IV= 1f89d9ff48a540e39d887129ae6255e776c39a75e7d34c46 +CT= 64876993bcfd13febd124303022faeac7a64301b6f1ee7d0 +PT= e783ed294bce062f46fde71573277f139eb6a94660afac83 +TEST= 138 +KEY= 732365c50d00f6976dd7719362497e392602e04f99b200cb +IV= b0b64c8e2e44ce1f2ec9145d9cca534c4709fae43377c869 +CT= e783ed294bce062f46fde71573277f139eb6a94660afac83 +PT= dc1b10fdc72b93b158891bf427f6c0cc5e16a6896c3cba14 +TEST= 139 +KEY= af387538ca2b6526355e6a6745bfbef5781446c6f58ebadf +IV= 0eb88e25817ee3becae1440011af63277f411e909c85dc4d +CT= dc1b10fdc72b93b158891bf427f6c0cc5e16a6896c3cba14 +PT= a0649d8e159292107d67aa01c7c57cee9c55419e2d8ca123 +TEST= 140 +KEY= 0f5ce8b6dfb9f7364839c066827ac21be4410758d8021bfc +IV= c0e3a0554e485e540b25964615a29b1b724e6159d9a5fb15 +CT= a0649d8e159292107d67aa01c7c57cee9c55419e2d8ca123 +PT= e87cdb5f637f62aa21d4ca5e2431d404f33d22a8efbbba91 +TEST= 141 +KEY= e72033e9bcc6959c69ed0a38a64b161f177c25f037b9a16d +IV= 42a0154a274f027d05250cc914bfa505760709cd60aa21e0 +CT= e87cdb5f637f62aa21d4ca5e2431d404f33d22a8efbbba91 +PT= ec1038856a65c380f1457fc543623563dccede7453421615 +TEST= 142 +KEY= 0b300b6cd6a3561c98a875fde529237ccbb2fb8464fbb778 +IV= 63e48ffa470107fed0eed45855af94ad48204a0a2f41afce +CT= ec1038856a65c380f1457fc543623563dccede7453421615 +PT= 28707e913a165ecad518ce6da40b06fd22e2146737339e6a +TEST= 143 +KEY= 234075fdecb508d64db0bb9041222581e950efe353c82912 +IV= 66957feb37e2d86d59534af2ae9996c120b3d8c764d5499e +CT= 28707e913a165ecad518ce6da40b06fd22e2146737339e6a +PT= ebc1aa4cf48d28016c1f4a8fbd00ecb9389b2b2c0dad7016 +TEST= 144 +KEY= c881dfb1183820d721aff11ffc22c938d1cbc4cf5e655904 +IV= a644e9738a4f5ce67c17ea31eabc23e281943e9ec46b6264 +CT= ebc1aa4cf48d28016c1f4a8fbd00ecb9389b2b2c0dad7016 +PT= f30ab67c689f2411c15b10ac61a7672f01c6877884a9ffee +TEST= 145 +KEY= 3b8b69cd70a704c6e0f4e1b39d85ae17d00d43b7dacca6ea +IV= 184062d4b2c7b3f615c538a7a59568610e7cb1c2ec5e42f6 +CT= f30ab67c689f2411c15b10ac61a7672f01c6877884a9ffee +PT= 372a7f0c9b2eaa13e7f68e10c9a32e3efbf7808c8f6b214f +TEST= 146 +KEY= 0ca116c1eb89aed507026fa3542680292bfac33b55a787a5 +IV= fe6682c6b23f56048beda5a2e51e6cb3ac4c0adb9f382087 +CT= 372a7f0c9b2eaa13e7f68e10c9a32e3efbf7808c8f6b214f +PT= 68d4752340ab4bc25a334fc78bef77760d01b4ae4803f03f +TEST= 147 +KEY= 647563e2ab22e5175d312064dfc9f75f26fb77951da4779a +IV= b8dee10364eb450662d68036e24298a295d8be9081e45593 +CT= 68d4752340ab4bc25a334fc78bef77760d01b4ae4803f03f +PT= c19fa73389c9788510708f840fe6c04573ee92a04a99fa0d +TEST= 148 +KEY= a5eac4d122eb9d924d41afe0d02f371a5515e535573d8d97 +IV= 4cdb4a56fc266d4023e087a8ebc24947c659f7a7bb823bda +CT= c19fa73389c9788510708f840fe6c04573ee92a04a99fa0d +PT= 656d14a0e6b568fdcd3c25c1501c7ea2068d9cbb70a0d5ca +TEST= 149 +KEY= c087d071c45ef56f807d8a21803349b85398798e279d585d +IV= 3e5424a11b87ace3e5d8b4f8d7b621ceca575b7d43e8d4aa +CT= 656d14a0e6b568fdcd3c25c1501c7ea2068d9cbb70a0d5ca +PT= ffd0a075618e9747389740c252fe52e4e56262b22ca9b9ab +TEST= 150 +KEY= 3f577004a5d06228b8eacae3d2cd1b5cb6fa1b3c0b34e1f6 +IV= d59b33d83b117c95a53044c08453d8c45750e214b9d7213b +CT= ffd0a075618e9747389740c252fe52e4e56262b22ca9b9ab +PT= 9cbed6bff9277110ef4648ae41fcb24ca5bc03406667cbfe +TEST= 151 +KEY= a3e9a6bb5cf7133857ac824d9331a9101346187c6d532a08 +IV= e04dea12c7b8385a060156db065bb36883d7e601d503524d +CT= 9cbed6bff9277110ef4648ae41fcb24ca5bc03406667cbfe +PT= 71758a308b8623eaaf4bc7bc1a39bf510368bd9e865bc8b5 +TEST= 152 +KEY= d29c2c8bd77130d2f8e745f189081641102ea5e2eb08e2bd +IV= 991cc71b67fc70db721eb4a5e90ab17829ed6dd83c608d81 +CT= 71758a308b8623eaaf4bc7bc1a39bf510368bd9e865bc8b5 +PT= 35eec541486d26cb020d65508f15d62e200f2f268393155b +TEST= 153 +KEY= e772e9ca9f1c1619faea20a1061dc06f30218ac4689bf7e6 +IV= 69faafa1ee92c84273520c77a5e193991baaa0c780768247 +CT= 35eec541486d26cb020d65508f15d62e200f2f268393155b +PT= 91f33d576653e59b14569974194b653760d177c10576f723 +TEST= 154 +KEY= 7681d49df94ff382eebcb9d51f56a55850f0fd056ded00c5 +IV= d83be640938fe09561620ce6d9fb8aa7e20e8b4f3ba1319d +CT= 91f33d576653e59b14569974194b653760d177c10576f723 +PT= 26caaa3baf3576b12ae7e29ce20f0ba9010b98ffa0508b9a +TEST= 155 +KEY= 504b7ea6567a8533c45b5b49fd59aef151fb65facdbd8b5f +IV= 0639b7612b7c7ac5bfff19e347f70f6491dfae1572dc67fd +CT= 26caaa3baf3576b12ae7e29ce20f0ba9010b98ffa0508b9a +PT= 764be65331dff46b5e38c4c218b457c31ea8a2b5a9b000ef +TEST= 156 +KEY= 260098f567a571589a639f8be5edf9324f53c74f640d8bb0 +IV= a001042a2817b9dfd6e49aa63b54d31bb59ff753b3ba6a1b +CT= 764be65331dff46b5e38c4c218b457c31ea8a2b5a9b000ef +PT= b78bb2bafc13f866b9c54a46f8085ce2e552ffb22ecc93b4 +TEST= 157 +KEY= 918b2a4f9bb6893e23a6d5cd1de5a5d0aa0138fd4ac11804 +IV= 2defbce0d1be9618d33aa3453d3da89924ca89b89eac9820 +CT= b78bb2bafc13f866b9c54a46f8085ce2e552ffb22ecc93b4 +PT= 1b282ad3077468155ca72c186e24833b75e93f0e3c83ae27 +TEST= 158 +KEY= 8aa3009c9cc2e12b7f01f9d573c126ebdfe807f37642b623 +IV= ed41d0a30a6b025c26e76be6473bc0901a0788e85baf71d7 +CT= 1b282ad3077468155ca72c186e24833b75e93f0e3c83ae27 +PT= 038b4cc271eab119693c4afd6e767f4518e284d15f446f5d +TEST= 159 +KEY= 89284c5eed285032163db3281db759aec70a83222906d97e +IV= e3d5ff750e60847362ebc4b8c7db6e2f3a648c46734db465 +CT= 038b4cc271eab119693c4afd6e767f4518e284d15f446f5d +PT= fd0cd0d1b71042e9f2ac4072124411e8e1f305390b766628 +TEST= 160 +KEY= 74249c8f5a3812dbe491f35a0ff3484626f9861b2270bf56 +IV= 8afb667dd42e002eda9928cbb1c08b486f0f396afe935cfd +CT= fd0cd0d1b71042e9f2ac4072124411e8e1f305390b766628 +PT= bd7fa7b5eb2ccdc311dbf1e33d003a98f6be59a2c6437430 +TEST= 161 +KEY= c95b3b3ab114df18f54a02b932f372ded047dfb9e433cb66 +IV= fb5ac99d31d73519b16c80a91acb81479b8527693a6aa1fa +CT= bd7fa7b5eb2ccdc311dbf1e33d003a98f6be59a2c6437430 +PT= 8c67ac875129e1233ce7c18ccb4a8b35c1c733cb3230ccea +TEST= 162 +KEY= 453c97bde03d3e3bc9adc335f9b9f9eb1180ec72d603078c +IV= 9040670a67a44b8aff6458ad8b2683d65d6bc420ed46c4bb +CT= 8c67ac875129e1233ce7c18ccb4a8b35c1c733cb3230ccea +PT= c042dd8778c1822e6285c5e44907101a476e9e858fdaa910 +TEST= 163 +KEY= 857e4a3a98fcbc15ab2806d1b0bee9f156ee72f759d9ae9c +IV= 1dcc3199c84a5d71e5f4408135c83709b5f4c1743dbd3a5d +CT= c042dd8778c1822e6285c5e44907101a476e9e858fdaa910 +PT= 4adb532d693076e4bdd794e51a659074747523f0f37f3d6a +TEST= 164 +KEY= cfa51917f1cccaf116ff9234aadb7985229b5107aaa693f6 +IV= b5dfd04f82a7d3d6dfb82761c4b5aa5edd48b4398ccfd7ba +CT= 4adb532d693076e4bdd794e51a659074747523f0f37f3d6a +PT= 15744e8e47ce679488f9eeeed74868d0267768e39b843f09 +TEST= 165 +KEY= dad15799b602ad659e067cda7d93115504ec39e43122acff +IV= 590e4a9d6bf3f6c0715b1a21e912a92330c0be6d04fa8506 +CT= 15744e8e47ce679488f9eeeed74868d0267768e39b843f09 +PT= 37b7f174bbba9f47c4c37cce07294779fbf4cc36d9b66cd6 +TEST= 166 +KEY= ed66a6ed0db832225ac500147aba562cff18f5d2e894c029 +IV= 8b041e77bbe3221cc4d3abb35ebbd7eb6e96a2980801d6df +CT= 37b7f174bbba9f47c4c37cce07294779fbf4cc36d9b66cd6 +PT= 447338e5a23a3f4eb68a58944368b9a10e7e7051e0868dfe +TEST= 167 +KEY= a9159e08af820d6cec4f588039d2ef8df166858308124dd7 +IV= 5fd0362d060f380d860cebc049fb869b11930bf99e5236aa +CT= 447338e5a23a3f4eb68a58944368b9a10e7e7051e0868dfe +PT= 856a7eb0bd976cf5be6e97b9de3dafcd9f777b4ce2bc417b +TEST= 168 +KEY= 2c7fe0b8121561995221cf39e7ef40406e11fecfeaae0cac +IV= 24da8d254f81411ee01147a6009f9a0cb1dc5480569b7f01 +CT= 856a7eb0bd976cf5be6e97b9de3dafcd9f777b4ce2bc417b +PT= 8bdba005df93594dbfc882bf68da52940177534c7c187e3e +TEST= 169 +KEY= a7a440bdcd8638d4ede94d868f3512d46f66ad8396b67292 +IV= c80b9aad56addd31afb7ef5dc9e14ff7e325cdc3b0035dcf +CT= 8bdba005df93594dbfc882bf68da52940177534c7c187e3e +PT= cb8c33ed85741d8c7bd5f8b61fae198bb6995bf1e29bee2d +TEST= 170 +KEY= 6c28735048f22558963cb530909b0b5fd9fff672742d9cbf +IV= 83e3da6a32dc9a1e1d65d8ae837a247122ffd06b6f369f0f +CT= cb8c33ed85741d8c7bd5f8b61fae198bb6995bf1e29bee2d +PT= 2bcb8ea69fd57eee8bc7e58c66e651897953e4c83bc7e885 +TEST= 171 +KEY= 47e3fdf6d7275bb61dfb50bcf67d5ad6a0ac12ba4fea743a +IV= d42bf0aa85593b2291502601b13ab76f102c878d1d9e871f +CT= 2bcb8ea69fd57eee8bc7e58c66e651897953e4c83bc7e885 +PT= 2a1a725b36408eadc92402b0e1f0b8fe23c5428009efc675 +TEST= 172 +KEY= 6df98fade167d51bd4df520c178de2288369503a4605b24f +IV= 76984177b51554ca7312cce35bf7a54d21ad9eea7f55a140 +CT= 2a1a725b36408eadc92402b0e1f0b8fe23c5428009efc675 +PT= 47d11328ea77683378555a730725d36a02237a15fcf18096 +TEST= 173 +KEY= 2a289c850b10bd28ac8a087f10a83142814a2a2fbaf432d9 +IV= 8ddb51831cef3fcbd9cdee39ad19bfb7831b9c696b1d3b26 +CT= 47d11328ea77683378555a730725d36a02237a15fcf18096 +PT= c3d5d290303b820e9e1b0025e9ac234132ca9d62149279b1 +TEST= 174 +KEY= e9fd4e153b2b3f263291085af9041203b380b74dae664b68 +IV= c9098fed2f134428eaafa86da78213e8743b40a93af048bf +CT= c3d5d290303b820e9e1b0025e9ac234132ca9d62149279b1 +PT= 0b22fe49f495b94b2e0b0f84ebf7ada1ef43dd2733da2815 +TEST= 175 +KEY= e2dfb05ccfbe866d1c9a07de12f3bfa25cc36a6a9dbc637d +IV= 4792a8c25c8c629d587db0ceb5bd4bd9f1c266b54346f8a5 +CT= 0b22fe49f495b94b2e0b0f84ebf7ada1ef43dd2733da2815 +PT= 37dee3ba96bd0a5f7bffa6601d249c32f4edcaca16ecee02 +TEST= 176 +KEY= d50153e659038c326765a1be0fd72390a82ea0a08b508d7f +IV= bb123f1c9e7665de32c0b2a442034f7abbfeefbb1d6ee332 +CT= 37dee3ba96bd0a5f7bffa6601d249c32f4edcaca16ecee02 +PT= 21dd843231093599bdad5f2e1e778de608cb231c327f0b29 +TEST= 177 +KEY= f4dcd7d4680ab9abdac8fe9011a0ae76a0e583bcb92f8656 +IV= b8249420ff2617b04d0a71c4ccf31944e37210dd9db553ee +CT= 21dd843231093599bdad5f2e1e778de608cb231c327f0b29 +PT= 142b24eaaf259a99ccf10248bdcefdc6eae88dbc5535533c +TEST= 178 +KEY= e0f7f33ec72f23321639fcd8ac6e53b04a0d0e00ec1ad56a +IV= 7c3564b547d8ebc7befe49095f28f99017c52ddc9b8f5584 +CT= 142b24eaaf259a99ccf10248bdcefdc6eae88dbc5535533c +PT= 94ee90c16f6740b3aefe9c0b743d2fcae30abc6a9e724a7d +TEST= 179 +KEY= 741963ffa8486381b8c760d3d8537c7aa907b26a72689f17 +IV= c3b8e4451040cf13a3647a195c39b465efbf2dff6af6eb68 +CT= 94ee90c16f6740b3aefe9c0b743d2fcae30abc6a9e724a7d +PT= 3259a41c6ed5243208cad731577085271c5a65fae3b056d3 +TEST= 180 +KEY= 4640c7e3c69d47b3b00db7e28f23f95db55dd79091d8c9c4 +IV= 9363830a3c096b503df1050acd704019895874eaac06ef29 +CT= 3259a41c6ed5243208cad731577085271c5a65fae3b056d3 +PT= 8adf316a9718c028c6064803f10a671c9861747c53d4ff94 +TEST= 181 +KEY= cc9ff6895185879b760bffe17e299e412d3ca3ecc20c3650 +IV= eaf135704ed4e2f6d3fe753ca260183e8652d5eda073570a +CT= 8adf316a9718c028c6064803f10a671c9861747c53d4ff94 +PT= 2f48e9f2d578373636fc895f3e52b67a8476931b568329d5 +TEST= 182 +KEY= e3d71f7b84fdb0ad40f776be407b283ba94a30f7948f1f85 +IV= 893f960b01371d45101c9ee130c010bb1fd8e16ac9fe0a81 +CT= 2f48e9f2d578373636fc895f3e52b67a8476931b568329d5 +PT= cdee065d76bf1b5b5253be342976e91fd940beb62edbe0a2 +TEST= 183 +KEY= 2e391926f242abf612a4c88a690dc124700a8e41ba54ff27 +IV= 837b8d0ffe99d5941d62ccea0d77a93b83f5bbfb05687b87 +CT= cdee065d76bf1b5b5253be342976e91fd940beb62edbe0a2 +PT= 25f11dd1b48691a528f80bccbbe74e6ec53f7bd2929eabcd +TEST= 184 +KEY= 0bc804f746c43a533a5cc346d2ea8f4ab535f59328ca54ea +IV= 6b24ca6f7e3343e37c59b49dd58876b3fac1e86865e1d985 +CT= 25f11dd1b48691a528f80bccbbe74e6ec53f7bd2929eabcd +PT= c0c8f6c6ffcff49abdbe50b4276e328a440931695ca2ab6a +TEST= 185 +KEY= cb00f231b90bcec987e293f2f584bdc0f13cc4fa7468ff80 +IV= c74c460d6f2ce28383d41e81145d21048ccb103f343e3e0e +CT= c0c8f6c6ffcff49abdbe50b4276e328a440931695ca2ab6a +PT= cc5ce6628c8ceac48c2be6cac684e5bfd3dda93e46251eef +TEST= 186 +KEY= 075c14533587240d0bc975383300587f22e16dc4324de16f +IV= e4e481cf09371cb7275b379c5636260f31b3b6b0ea96388b +CT= cc5ce6628c8ceac48c2be6cac684e5bfd3dda93e46251eef +PT= 951e651bec3e16234e80a9db93a220b7d9eb1ed58f3d1e58 +TEST= 187 +KEY= 92427148d9b9322e4549dce3a0a278c8fb0a7311bd70ff37 +IV= b169964ef8734ac9b41f5da58985de385461cee11d1b7f85 +CT= 951e651bec3e16234e80a9db93a220b7d9eb1ed58f3d1e58 +PT= 82afb6958e1231bd0548309e822cb9b18c735f046d10f753 +TEST= 188 +KEY= 10edc7dd57ab03934001ec7d228ec17977792c15d0600864 +IV= bd45d78a04a429898e0000435e71a81a630606263529dde2 +CT= 82afb6958e1231bd0548309e822cb9b18c735f046d10f753 +PT= df3f04899bf6203c9b8bbc9309ca971d50c99a7a8fc15349 +TEST= 189 +KEY= cfd2c354cc5d23afdb8a50ee2b44566427b0b66f5fa15b2d +IV= 09cc04025810e86e33010b8bd4d64802a7971de47b613eeb +CT= df3f04899bf6203c9b8bbc9309ca971d50c99a7a8fc15349 +PT= 6f145cc1703e4397d9ecc5f6e6093957244c3e8885d831c9 +TEST= 190 +KEY= a0c69f95bc63603802669518cd4d6f3303fc88e7da796ae4 +IV= e5b8660f47047c1bae24558d1abf50b485670b6c783477f5 +CT= 6f145cc1703e4397d9ecc5f6e6093957244c3e8885d831c9 +PT= c53cdca97d39b74cb13ead7bbac874a05e478b3271554078 +TEST= 191 +KEY= 65fa433cc15ad774b358386377851b935dbb03d5ab2c2a9c +IV= 732a24b7a6be5637c79b162bb1e88a3216ef7a04bf329b5a +CT= c53cdca97d39b74cb13ead7bbac874a05e478b3271554078 +PT= a405b97a3aa52c06c8dbb364877422c6fe47f568f7385e82 +TEST= 192 +KEY= c1fffa46fbfffb727b838b07f0f13955a3fcf6bd5c14741e +IV= cf72c00d14abaf54031e4ec8a9e8a7c39cc34ebe541144f2 +CT= a405b97a3aa52c06c8dbb364877422c6fe47f568f7385e82 +PT= f50f2ac0f5e1b4ffaaf1bf464e55ae530faf9c9b3983bed8 +TEST= 193 +KEY= 34f0d0860e1e4f8dd1723441bea49706ac536a266597cac6 +IV= 0889c9cfb06997a2cbf9a019fb2c42d34fa1746640ca32b2 +CT= f50f2ac0f5e1b4ffaaf1bf464e55ae530faf9c9b3983bed8 +PT= 93f7006f3441f78f8710fa6b30f7d8f6d2e1dc5caef7242e +TEST= 194 +KEY= a707d0e93a5fb8025662ce2a8e534ff07eb2b67acb60eee8 +IV= 1f43724678a5e5f6d45cec8d9ce532fa47a0f3b11ad19a70 +CT= 93f7006f3441f78f8710fa6b30f7d8f6d2e1dc5caef7242e +PT= 98f3ec12d6ea56f3224ced7a6a5ec75637fdd80fb067a2eb +TEST= 195 +KEY= 3ff43cfbecb5eef1742e2350e40d88a6494f6e757b074c03 +IV= 158b294431af00bf87d072855a4d23652ec35e09838bf441 +CT= 98f3ec12d6ea56f3224ced7a6a5ec75637fdd80fb067a2eb +PT= c74501bb74f2ca758aa6f3ea9e725cfa34ef42e545591696 +TEST= 196 +KEY= f8b13d4098472484fe88d0ba7a7fd45c7da02c903e5e5a95 +IV= 266a0b5feb91c7563f61fed061cc86becc3e59cd59e1ebed +CT= c74501bb74f2ca758aa6f3ea9e725cfa34ef42e545591696 +PT= 2fea9ef58a22017b8bdaead236db4ec4d7d252e652b7e30f +TEST= 197 +KEY= d75ba3b5126525ff75523a684ca49a98aa727e766ce9b99a +IV= c53bb48aed164e00a81ea62e48995e55338b3658379835da +CT= 2fea9ef58a22017b8bdaead236db4ec4d7d252e652b7e30f +PT= 90ff016407906c5fb856e3617db08f664ee12199a361034a +TEST= 198 +KEY= 47a4a2d115f549a0cd04d909311415fee4935fefcf88bad0 +IV= d19997d1b93f926132fe2917149b849c3de9dc4afbaf0032 +CT= 90ff016407906c5fb856e3617db08f664ee12199a361034a +PT= d8df5a92d90f87ec41ff8f308f7d35ce5c9758c97d299cb4 +TEST= 199 +KEY= 9f7bf843ccface4c8cfb5639be692030b8040726b2a12664 +IV= 0854a0bad13efa45b12a3035c08e48d141ab690d9b67fbe4 +CT= d8df5a92d90f87ec41ff8f308f7d35ce5c9758c97d299cb4 +PT= 4a287573201c50d958ec0deecbb9b9f0f789fa602932d64d +TEST= 200 +KEY= d5538d30ece69e95d4175bd775d099c04f8dfd469b93f029 +IV= bc148adc155068c1bbbfedc19e699b03c6b4c4a4030a4345 +CT= 4a287573201c50d958ec0deecbb9b9f0f789fa602932d64d +PT= 52ca63957f0b4e04f9047faa88137ebd25798dbd1205e7fc +TEST= 201 +KEY= 8799eea593edd0912d13247dfdc3e77d6af470fb899617d5 +IV= 8db6e138d8701cf71cddccf8611a1d9c2d25d90a1627456f +CT= 52ca63957f0b4e04f9047faa88137ebd25798dbd1205e7fc +PT= 657f60c8833da8c1a39b805c2f88b84be3774ba6322b8856 +TEST= 202 +KEY= e2e68e6d10d078508e88a421d24b5f3689833b5dbbbd9f83 +IV= f5abeb5a7bff88ad7c4b836cb5d318495e56670e401dd2db +CT= 657f60c8833da8c1a39b805c2f88b84be3774ba6322b8856 +PT= 0e6d36831bcaa59f167594c8f9de8a57f6d7f2a39628d9f0 +TEST= 203 +KEY= ec8bb8ee0b1addcf98fd30e92b95d5617f54c9fe2d954673 +IV= 55de8f55bc48f91dbc2f901bbbf7e9ea4953b0a0f8a29387 +CT= 0e6d36831bcaa59f167594c8f9de8a57f6d7f2a39628d9f0 +PT= 64b1dcc7aa473e0617f00e74cb7866b808b47d95624606f6 +TEST= 204 +KEY= 883a6429a15de3c98f0d3e9de0edb3d977e0b46b4fd34085 +IV= 73513fbe52ae957d10b7965cf2fe467c91295751d1d9a77b +CT= 64b1dcc7aa473e0617f00e74cb7866b808b47d95624606f6 +PT= 904a1e2798ec4f1d96869eb30dde771502b18b1f8b417b7d +TEST= 205 +KEY= 18707a0e39b1acd4198ba02eed33c4cc75513f74c4923bf8 +IV= c78d8b8ffaa97e713bc3afcb2c6974dec13d10f52633a932 +CT= 904a1e2798ec4f1d96869eb30dde771502b18b1f8b417b7d +PT= b08e61e8c8b2a0c2cec55f8d072b1fee13d96bd62d758622 +TEST= 206 +KEY= a8fe1be6f1030c16d74effa3ea18db22668854a2e9e7bdda +IV= 10d2c0b4b0d6cb3727076c94b17c563b967017d2f43bf14e +CT= b08e61e8c8b2a0c2cec55f8d072b1fee13d96bd62d758622 +PT= 7da6960f2ccab879e25bd9fac0ba799c883f40d400c6db30 +TEST= 207 +KEY= d5588de9ddc9b46f351526592aa2a2beeeb71476e92166ea +IV= 2e1f8571f539e30353f8c75832824e627334e79746f9400c +CT= 7da6960f2ccab879e25bd9fac0ba799c883f40d400c6db30 +PT= 068831129624d1e9149755a3f2fe5f85502a25a5000cbc41 +TEST= 208 +KEY= d3d0bcfb4bed6586218273fad85cfd3bbe9d31d3e92ddaab +IV= 1f96f0b81cb2f1e3a33d715ee1312cf82e024975215ad6f5 +CT= 068831129624d1e9149755a3f2fe5f85502a25a5000cbc41 +PT= d742bbd7e0535e75e6decbd088042555e9bd4b926b848718 +TEST= 209 +KEY= 0492072cabbe3bf3c75cb82a5058d86e57207a4182a95db3 +IV= 7ff66d66dddf1306a7a1833e89fcc147267b5ca47dc46d57 +CT= d742bbd7e0535e75e6decbd088042555e9bd4b926b848718 +PT= a5260f815636d0860ec0e5ed2fdd198086014362dc962aab +TEST= 210 +KEY= a1b408adfd88eb75c99c5dc77f85c1eed12139235e3f7718 +IV= ca216184c3827a8b3dfff038f198a6349d6d5e1e32d3ec34 +CT= a5260f815636d0860ec0e5ed2fdd198086014362dc962aab +PT= 6568cd3a4882c180790ee586eee0909c156c34b05cf84529 +TEST= 211 +KEY= c4dcc597b50a2af5b092b84191655172c44d0d9302c73231 +IV= edc8a5609b7dee0b47ca2b8af22a01236e4839c4052e1a04 +CT= 6568cd3a4882c180790ee586eee0909c156c34b05cf84529 +PT= 8f87485f8efb00f6c52a8d1ea4fd0c31e847ed63433910f1 +TEST= 212 +KEY= 4b5b8dc83bf12a0375b8355f35985d432c0ae0f041fe22c0 +IV= 5454c5b0edb3a27463eb9a3fd2e58ccede97f496ba10fe30 +CT= 8f87485f8efb00f6c52a8d1ea4fd0c31e847ed63433910f1 +PT= e58e4cc8e5bd37391d8420f80da0c2e5fb5d70ba58042ea9 +TEST= 213 +KEY= aed5c100de4c1d3a683c15a738389fa6d757904a19fa0c69 +IV= 3ac2755ac365188954493dc1a159f488734a9cd343aee6c5 +CT= e58e4cc8e5bd37391d8420f80da0c2e5fb5d70ba58042ea9 +PT= d4262c9733614b5efb4e24bba176f6908a13e77b584d96b9 +TEST= 214 +KEY= 7af3ed97ed2d56649372311c994e69365d44773141b79ad0 +IV= 083b7aa688dce50bff292392115bd9743db2fd3aa756038c +CT= d4262c9733614b5efb4e24bba176f6908a13e77b584d96b9 +PT= 988dec9fed11453f63a37cf6b8e03295c7c680180fc32002 +TEST= 215 +KEY= e27e0108003c135bf0d14dea21ae5ba39a82f7294e74bad2 +IV= e729ced04cb61d6c5a5fae66c0b8ef64c9897a275e373520 +CT= 988dec9fed11453f63a37cf6b8e03295c7c680180fc32002 +PT= e04c814cacf10ed43b953e264baa8f3122767d23846c915e +TEST= 216 +KEY= 02328044accd1d8fcb4473cc6a04d492b8f48a0aca182b8c +IV= d7669fbdd969e1af72d04b2ba057b1a12b7eac618951b59c +CT= e04c814cacf10ed43b953e264baa8f3122767d23846c915e +PT= 4a70974b1b97d6a6fbe5423bf3e28f401e160604cff43fd9 +TEST= 217 +KEY= 4842170fb75acb2930a131f799e65bd2a6e28c0e05ec1455 +IV= 994b79d245bbb9e96e01df432d1fdefb0a163bc08b5f846b +CT= 4a70974b1b97d6a6fbe5423bf3e28f401e160604cff43fd9 +PT= 44bf8edb139b794c25eb6dfdc7e05be2297a629fbcac64a4 +TEST= 218 +KEY= 0cfd99d4a4c1b265154a5c0a5e0600308f98ee91b94070f1 +IV= d5bc7a432b5121d656a4e1588a78a255534f45aae302e97b +CT= 44bf8edb139b794c25eb6dfdc7e05be2297a629fbcac64a4 +PT= 9dea202b0877ce0bc8214af3a7035f9cb2688538aea7be50 +TEST= 219 +KEY= 9117b9ffacb67c6edd6b16f9f9055fac3df06ba917e7cea1 +IV= 344e515720dd88fb20b03bf24854d48ea6e61bedfabf0eae +CT= 9dea202b0877ce0bc8214af3a7035f9cb2688538aea7be50 +PT= f42e62364387072d3bbfafaf5c4114308e4cb5589282262c +TEST= 220 +KEY= 6539dbc9ef317b43e6d4b956a5444b9cb3bcdef18565e88d +IV= e6db88e0acaa9d686d6938a53a476d287492cb47f6b1a234 +CT= f42e62364387072d3bbfafaf5c4114308e4cb5589282262c +PT= fb6d3bf9181116b0ac7cb850216284d98efbd3e9d4e7fce4 +TEST= 221 +KEY= 9e54e030f7206df34aa801068426cf453d470d1851821469 +IV= 656c36a5351a93be237db01047422e18816da9397852c2de +CT= fb6d3bf9181116b0ac7cb850216284d98efbd3e9d4e7fce4 +PT= c9d7bdf52e96c94c1339ec5af5aaaaf3b9893fedcfd8ebad +TEST= 222 +KEY= 57835dc5d9b6a4bf5991ed5c718c65b684ce32f59e5affc4 +IV= c91f264ed7d036a1414e37750be3457a671a531c72788fe9 +CT= c9d7bdf52e96c94c1339ec5af5aaaaf3b9893fedcfd8ebad +PT= 4466e35a44457bcdedcdb17dce13198be51ac30663ffc47d +TEST= 223 +KEY= 13e5be9f9df3df72b45c5c21bf9f7c3d61d4f1f3fda53bb9 +IV= be9e988aafceafae39f34e10c98898c268d303b19977b629 +CT= 4466e35a44457bcdedcdb17dce13198be51ac30663ffc47d +PT= 28a9a105d121e6dcce27b97e4c3f2c3c5ca67c6092d31562 +TEST= 224 +KEY= 3b4c1f9a4cd239ae7a7be55ff3a050013d728d936f762edb +IV= 50e0ff1939943822e6caae5b28082f7a3194ae38a552d411 +CT= 28a9a105d121e6dcce27b97e4c3f2c3c5ca67c6092d31562 +PT= f4fd3a053d32d1a94341cc133b178de6029793555f423f08 +TEST= 225 +KEY= cfb1259f71e0e807393a294cc8b7dde73fe51ec6303411d3 +IV= 5e258a97f9811e940509e7e27fa5e88b8bc164aaa954f575 +CT= f4fd3a053d32d1a94341cc133b178de6029793555f423f08 +PT= 15ba55e57639e158b4c3c621b2592df0d71ae97de58fa50d +TEST= 226 +KEY= da0b707a07d9095f8df9ef6d7aeef017e8fff7bbd5bbb4de +IV= 8c297e540bb1ef59e40a11ce9dcb6f0ca0d8ff954d2b8137 +CT= 15ba55e57639e158b4c3c621b2592df0d71ae97de58fa50d +PT= ac9c0ff0d088d3e8a9f024ba5fb5b61cf5b0085644c23e21 +TEST= 227 +KEY= 76977f8ad751dab72409cbd7255b460b1d4fffed91798aff +IV= ea5c41d3f8937af94f4dec50c44d9af76c8f0f96dd9ef29b +CT= ac9c0ff0d088d3e8a9f024ba5fb5b61cf5b0085644c23e21 +PT= 14a179077d51cbbd035fdf3f0862753e9aded04095e15975 +TEST= 228 +KEY= 6236068daa00110a275614e82d39333587912fad0498d38a +IV= d24e2ae33c5e933136dcf30166d748e22d1f27049db873c9 +CT= 14a179077d51cbbd035fdf3f0862753e9aded04095e15975 +PT= d0d1a1508ddc1f77fb4106ad86a76da079cd77fa3f683996 +TEST= 229 +KEY= b2e7a7dd27dc0e7ddc171245ab9e5e95fe5c58573bf0ea1c +IV= 63cbbb6e07b955cd8627d21f8ca248d7f8991bba9a0e2ded +CT= d0d1a1508ddc1f77fb4106ad86a76da079cd77fa3f683996 +PT= 28cbb81fddb4791f33c6b004dbb0270269e347139cfa1cb8 +TEST= 230 +KEY= 9a2c1fc2fa687762efd1a241702e799797bf1f44a70af6a4 +IV= 96c9bd428ac319e10bc13763c0e1f32b3ff26c1e183c65f6 +CT= 28cbb81fddb4791f33c6b004dbb0270269e347139cfa1cb8 +PT= 3de6bf3c283cc3b5f30927780e9a4265e1d702e0a7d359eb +TEST= 231 +KEY= a7caa0fed254b4d71cd885397eb43bf276681da400d9af4f +IV= 101bcc44756c16f08053e85ac2ce27b559b1a7d2372866ef +CT= 3de6bf3c283cc3b5f30927780e9a4265e1d702e0a7d359eb +PT= 623cda16ace167aa601a78bd00d203354f543ff9ac341f4e +TEST= 232 +KEY= c5f67ae87eb5d37d7cc2fd847e6638c7393c225dacedb001 +IV= 45162e6419214aa491a0c5d4009e627b1649b9866dfd921d +CT= 623cda16ace167aa601a78bd00d203354f543ff9ac341f4e +PT= 4d96b3c303879c97fa9d7b21e247237e858d223ce3d64215 +TEST= 233 +KEY= 8860c92b7d324fea865f86a59c211bb9bcb100614f3bf214 +IV= a3a6c53ce77fa9495bd58a6d3a0d46d9e75221beb84e7518 +CT= 4d96b3c303879c97fa9d7b21e247237e858d223ce3d64215 +PT= 4532475e4cc2d8b9519e5e4905573547c77e04fc65d632a1 +TEST= 234 +KEY= cd528e7531f09753d7c1d8ec99762efe7bcf049d2aedc0b5 +IV= 75cbb5f02a3e0626e8e191d97742745b97e92ae43ee1b044 +CT= 4532475e4cc2d8b9519e5e4905573547c77e04fc65d632a1 +PT= a6c7390171cda31dceb2a093465899591265443cb1349862 +TEST= 235 +KEY= 6b95b774403d344e1973787fdf2eb7a769aa40a19bd958d7 +IV= 284a592a9565a19e4f6b7a97ce4b79a79a84eae9cdae87ff +CT= a6c7390171cda31dceb2a093465899591265443cb1349862 +PT= a849a614b33f49c28b88dc9fed1486fd2b2cd1a3fce5b304 +TEST= 236 +KEY= c3dc1160f3027d8c92fba4e0323a315a42869102673cebd3 +IV= f9e533e02676b40ff640c9882c9c5ce92130ee6ec429492d +CT= a849a614b33f49c28b88dc9fed1486fd2b2cd1a3fce5b304 +PT= 33fa024dcddffac053f7641e477d63aac56cf56664fb214b +TEST= 237 +KEY= f026132d3edd874cc10cc0fe754752f087ea646403c7ca98 +IV= 8bd15fd42fada2d32e48a03a1141686245eddb152c7c0828 +CT= 33fa024dcddffac053f7641e477d63aac56cf56664fb214b +PT= bb97d76e44cf1829e3054370d388e15d04be9775c193a132 +TEST= 238 +KEY= 4bb1c4437a129f652209838ea6cfb3ad8354f311c2546baa +IV= 81f4250c3c3cf7792e0d332175c76c80be9f95ce72fc7688 +CT= bb97d76e44cf1829e3054370d388e15d04be9775c193a132 +PT= 7fc21e5a81aacb71f3e9d67a82e95631c5c8cca1bca45039 +TEST= 239 +KEY= 3473da19fbb85414d1e055f42426e59c469c3fb07ef03b93 +IV= dfec90ee6f51fa7d70efc2c923735d0bdd9162dd7880fe48 +CT= 7fc21e5a81aacb71f3e9d67a82e95631c5c8cca1bca45039 +PT= d7ab2a0a4ef1e7b9f69e580dd40f1f54e7bb6463b8707bc2 +TEST= 240 +KEY= e3d8f013b549b3ad277e0df9f029fac8a1275bd3c6804051 +IV= 7f70c1a9ca8f7f9d0b310f524dd9add83d13e593fb804aef +CT= d7ab2a0a4ef1e7b9f69e580dd40f1f54e7bb6463b8707bc2 +PT= 55ca5eb38bd299361fffd06e6994d2ef17c88792cccf6182 +TEST= 241 +KEY= b612aea03e9b2a9b3881dd9799bd2827b6efdc410a4f21d3 +IV= 0f36f3a454119fc0f94fa608d46f32d76db380e0a36d4eff +CT= 55ca5eb38bd299361fffd06e6994d2ef17c88792cccf6182 +PT= a625eed7777619088f54b260818f498c00d57f080be1eab0 +TEST= 242 +KEY= 1037407749ed3393b7d56ff7183261abb63aa34901aecb63 +IV= 4a4f41f910a1f054ce6f471867fa587fdffc6073da028f66 +CT= a625eed7777619088f54b260818f498c00d57f080be1eab0 +PT= e637d3e3c9b98bd65922f410c1a3712a5ba4f9d35df8307c +TEST= 243 +KEY= f60093948054b845eef79be7d9911081ed9e5a9a5c56fb1f +IV= 862eddcf6b52b97e11bdfc834c017b92c4a0f8cc9f2324e7 +CT= e637d3e3c9b98bd65922f410c1a3712a5ba4f9d35df8307c +PT= fc89573038772aee5942ec97b2902141bf7cee7f0beea08c +TEST= 244 +KEY= 0a89c4a4b82392abb7b577706b0131c052e2b4e557b85b93 +IV= ebda588adb38c75fe9c7ba31b83a7021ea0635d755de34a5 +CT= fc89573038772aee5942ec97b2902141bf7cee7f0beea08c +PT= 4e5107eccda74a049798fbf72649f3ed85f6acc3bd0f578d +TEST= 245 +KEY= 44d8c3487584d8af202d8c874d48c22dd7141826eab70c1e +IV= 6daac651aec47221b8f4348f33a02ce82fe5be2b662cde22 +CT= 4e5107eccda74a049798fbf72649f3ed85f6acc3bd0f578d +PT= c92e1109b066c6fb8ff649d9ac6a8530c6d7127c1d4de2c7 +TEST= 246 +KEY= 8df6d241c5e21e54afdbc55ee122471d11c30a5af7faeed9 +IV= 4ecc6a5ca42701718e0f25b494cb8a1deb080608bd947bb8 +CT= c92e1109b066c6fb8ff649d9ac6a8530c6d7127c1d4de2c7 +PT= 8680073985dfb72670a94d362e0ca62e1080ece40ee196ba +TEST= 247 +KEY= 0b76d578403da972df728868cf2ee1330143e6bef91b7863 +IV= f6e3274be7d0fd9c942f070b07223f9c9ecca5aafa2fcde0 +CT= 8680073985dfb72670a94d362e0ca62e1080ece40ee196ba +PT= dda1b970dc59fd1331db1cd4b48b4b684f2328da8ba3bbdd +TEST= 248 +KEY= d6d76c089c645461eea994bc7ba5aa5b4e60ce6472b8c3be +IV= d533b395b354ba197d58c5715396d80eb79cf5b51251896f +CT= dda1b970dc59fd1331db1cd4b48b4b684f2328da8ba3bbdd +PT= 1d115b01e8d1ff51de75165de5f9b74b39b14d7dc1aa83f3 +TEST= 249 +KEY= cbc6370974b5ab3030dc82e19e5c1d1077d18319b312404d +IV= 97343fdb024ebb412b6607b700251903e212b9ef91a2eb3a +CT= 1d115b01e8d1ff51de75165de5f9b74b39b14d7dc1aa83f3 +PT= e4714313d91ee0710dda517ad63d61a54569e0b4c61716d4 +TEST= 250 +KEY= 2fb7741aadab4b413d06d39b48617cb532b863ad75055699 +IV= 1d0ca10647ad57ea54d176dc152aa02ff4f7d691e2cf261b +CT= e4714313d91ee0710dda517ad63d61a54569e0b4c61716d4 +PT= 6e425292f2708144d5a7c64f1b74f7c3eeef524147ad07a1 +TEST= 251 +KEY= 41f526885fdbca05e8a115d453158b76dc5731ec32a85138 +IV= cad1b3edb3130e6c221abc25981f43093f4d08b73b0d8beb +CT= 6e425292f2708144d5a7c64f1b74f7c3eeef524147ad07a1 +PT= 2195fd15eee51ac722106c696885e9c0788858964cb766f0 +TEST= 252 +KEY= 6060db9db13ed0c2cab179bd3b9062b6a4df697a7e1f37c8 +IV= 90ff681337e177d5b5eb5a2aeb86f363d8da6d4e454a0aaf +CT= 2195fd15eee51ac722106c696885e9c0788858964cb766f0 +PT= 30c119f5873c8f270e7aef90a75ca9bd908fb3cc5d542db0 +TEST= 253 +KEY= 50a1c26836025fe5c4cb962d9ccccb0b3450dab6234b1a78 +IV= fc3b486d3cf6a8658f822785718bbb677009e0ef8783567a +CT= 30c119f5873c8f270e7aef90a75ca9bd908fb3cc5d542db0 +PT= 38ed955847b75bf60a0d407c2b32f3342cbba93eb88bd7ac +TEST= 254 +KEY= 684c573071b50413cec6d651b7fe383f18eb73889bc0cdd4 +IV= 0dd73a9f566664a381b9d2dee33a8098495cebedd9f9b1f7 +CT= 38ed955847b75bf60a0d407c2b32f3342cbba93eb88bd7ac +PT= a4a68dbf474dbfe9f116dbe1a1cf32df47b8bd49b77b7220 +TEST= 255 +KEY= cceada8f36f8bbfa3fd00db016310ae05f53cec12cbbbff4 +IV= ac99715b97b3393a4d82729171828b4327a0c94cbc0d3d06 +CT= a4a68dbf474dbfe9f116dbe1a1cf32df47b8bd49b77b7220 +PT= 61c1d59e8961faaed69f7417648c2722289e26eb5926dcd1 +TEST= 256 +KEY= ad2b0f11bf994154e94f79a772bd2dc277cde82a759d6325 +IV= 6a0aedbcc13807c395d9cecbcb521c2216158ba0d68373af +CT= 61c1d59e8961faaed69f7417648c2722289e26eb5926dcd1 +PT= 9eeafa906df63246a975394af703c8813e5b898d0aed5cb2 +TEST= 257 +KEY= 33c1f581d26f7312403a40ed85bee543499661a77f703f97 +IV= 9a3ab4238a3ed89c4955107433816547f9546cff4b667ddb +CT= 9eeafa906df63246a975394af703c8813e5b898d0aed5cb2 +PT= 7330c5047c683e546d9d7ffc9ad52f770562a6f3470e4ca6 +TEST= 258 +KEY= 40f13085ae074d462da73f111f6bca344cf4c754387e7331 +IV= e2dd6479f4b9755444908fcc544adb48218c4249fbc8b514 +CT= 7330c5047c683e546d9d7ffc9ad52f770562a6f3470e4ca6 +PT= 0ba80a2ad6fd315a0f7500f5a7e1f22cd740973e7e8983e6 +TEST= 259 +KEY= 4b593aaf78fa7c1c22d23fe4b88a38189bb4506a46f7f0d7 +IV= 7e84a73658723a32884ec8a8dd41335bcf387edfdae0db85 +CT= 0ba80a2ad6fd315a0f7500f5a7e1f22cd740973e7e8983e6 +PT= 22a2a0e14c89fe3b4374c76e7a9805a110e208db7805f79e +TEST= 260 +KEY= 69fb9a4e3473822761a6f88ac2123db98b5658b13ef20749 +IV= 7871abdc694c0605aa0bc4b9b707157d615e0a80c7b06a97 +CT= 22a2a0e14c89fe3b4374c76e7a9805a110e208db7805f79e +PT= a2e5bfb0294e247ed687f8ccb72575a92162ffc6f41e09f3 +TEST= 261 +KEY= cb1e25fe1d3da659b721004675374810aa34a777caec0eba +IV= 1ee425cb434216e1af64ef7cb8d874702e026fd45ec22ea5 +CT= a2e5bfb0294e247ed687f8ccb72575a92162ffc6f41e09f3 +PT= 0e080db2bf3e4ec64f7973ae6b415c457004fc784473739b +TEST= 262 +KEY= c516284ca203e89ff85873e81e761455da305b0f8e9f7d21 +IV= edec6ebaa61de8fa4487fa96c760368f5a35c784c5d72fb7 +CT= 0e080db2bf3e4ec64f7973ae6b415c457004fc784473739b +PT= a75b07fe3fc6c1ead6e07f79cf0b947118dcaba8612a701f +TEST= 263 +KEY= 624d2fb29dc529752eb80c91d17d8024c2ecf0a7efb50d3e +IV= 376c0dea3797c59c3fd45d255fbcdbd4b097ba93157f62c1 +CT= a75b07fe3fc6c1ead6e07f79cf0b947118dcaba8612a701f +PT= ae9b487530eea283c5704256a19aa4090bba4a9a4868ae66 +TEST= 264 +KEY= ccd667c7ad2b8bf6ebc84ec770e7242dc956ba3da7dda358 +IV= 3f5562208a235c8a23d2169712afbb0c32f3adbd415214c6 +CT= ae9b487530eea283c5704256a19aa4090bba4a9a4868ae66 +PT= 80ea7a8a72dfb07edfa72c477d839dda74b88218daf3ae6c +TEST= 265 +KEY= 4c3c1d4ddff43b88346f62800d64b9f7bdee38257d2e0d34 +IV= fd6f189926adeba60c9a22f847ab498b69f08a8c006c7925 +CT= 80ea7a8a72dfb07edfa72c477d839dda74b88218daf3ae6c +PT= 707006eb2ec17912b1fdac6dc02af4a24347a8db0b2a19e5 +TEST= 266 +KEY= 3c4c1ba6f135429a8592ceedcd4e4d55fea990fe760414d1 +IV= e2e65decff4e647e60e2bb098a8cb180e7c987100ac86e9e +CT= 707006eb2ec17912b1fdac6dc02af4a24347a8db0b2a19e5 +PT= 3eee9eebfe4d278f95dbbb853eb6d245e0f93cd1796c622a +TEST= 267 +KEY= 02a2854d0f78651510497568f3f89f101e50ac2f0f6876fb +IV= 48bb2d32aad299df85584a1dd068f24113ed3fed48b5a762 +CT= 3eee9eebfe4d278f95dbbb853eb6d245e0f93cd1796c622a +PT= 38045423cdd5f7c40c9e34e5d8e1b969d0173092ce6f975e +TEST= 268 +KEY= 3aa6d16ec2ad92d11cd7418d2b192679ce479cbdc107e1a5 +IV= c6573075a9f92663eb5c280e85e28150c2f077797f617104 +CT= 38045423cdd5f7c40c9e34e5d8e1b969d0173092ce6f975e +PT= 6f8b9748b57ceddd0791fbd9a608c360f38e555e4585675b +TEST= 269 +KEY= 552d462677d17f0c1b46ba548d11e5193dc9c9e3848286fe +IV= 73fef331dba173a4099d6181f2acf728e6b71d1a8d7a0f3a +CT= 6f8b9748b57ceddd0791fbd9a608c360f38e555e4585675b +PT= 59cc8f729c4525203b50e9597c2a34ae53b103ed120f70f9 +TEST= 270 +KEY= 0ce1c954eb945a2c2016530df13bd1b76e78ca0e968df607 +IV= 45f418e8071ef5f5ade47f6ef41e583984b0e8d7ab26c057 +CT= 59cc8f729c4525203b50e9597c2a34ae53b103ed120f70f9 +PT= cc64d1881b2bc2f3705ca4126672fa6ced118615bfd53857 +TEST= 271 +KEY= c08518dcf0bf98df504af71f97492bdb83694c1b2958ce50 +IV= a3f04fc4471c2aae98a0ed8b870a506b7b4a3080d0d610a2 +CT= cc64d1881b2bc2f3705ca4126672fa6ced118615bfd53857 +PT= 72234aa371d71b542b6b52cedd29bbe0b1e1df9bff67330f +TEST= 272 +KEY= b2a6527f8168838b7b21a5d14a60903b32889380d63ffd5f +IV= c33c7e81384f260bff0486eb7e3e6642cffd5eab956f8bd3 +CT= 72234aa371d71b542b6b52cedd29bbe0b1e1df9bff67330f +PT= 1647825050ac029d6b8c4a9a4c9708d44303f845df4a9791 +TEST= 273 +KEY= a4e1d02fd1c4811610adef4b06f798ef718b6bc509756ace +IV= 86ab0e5ffaa7dc49f955ab129b9a2d48aa8b22d6dc2d213d +CT= 1647825050ac029d6b8c4a9a4c9708d44303f845df4a9791 +PT= 07c18db9aea9dc007e2dc1a67867ae76f5b22e6a7307ee2e +TEST= 274 +KEY= a3205d967f6d5d166e802eed7e903699843945af7a7284e0 +IV= 9a97cb8e0dc8a492c94ce6abeea06302c095f1f9a47d333d +CT= 07c18db9aea9dc007e2dc1a67867ae76f5b22e6a7307ee2e +PT= 277becf145ff395749b3697b50381d70f8b2c5956bb169e0 +TEST= 275 +KEY= 845bb1673a926441273347962ea82be97c8b803a11c3ed00 +IV= 460628b1205e6c403c4f4a49446279d3210f437431c627b4 +CT= 277becf145ff395749b3697b50381d70f8b2c5956bb169e0 +PT= 3983a4eb8bd04fd8385abe4efdc9a3d0c7f1f0afbc64f0ae +TEST= 276 +KEY= bdd8158cb1422b991f69f9d8d3618839bb7a7095ada71dae +IV= 8af1b543a07ca8eb819083c6e861ad1e013e50773a16706f +CT= 3983a4eb8bd04fd8385abe4efdc9a3d0c7f1f0afbc64f0ae +PT= ab812fd0afaad73bcc08c8733f1880eb3358f5954ef3b9fb +TEST= 277 +KEY= 16593a5c1ee8fca2d36131abec7908d288228500e354a455 +IV= 1ac5623a6602edd9912fcbd4607054bb84daa9c7b6ad1cf1 +CT= ab812fd0afaad73bcc08c8733f1880eb3358f5954ef3b9fb +PT= d484dcfd94186743cc37029f3ceb5079a3cac82dbfe870ba +TEST= 278 +KEY= c2dde6a18af09be11f563334d09258ab2be84d2d5cbcd4ef +IV= 1ba6608655a04f171b360cb6e102f56952ae592c33f660ad +CT= d484dcfd94186743cc37029f3ceb5079a3cac82dbfe870ba +PT= 25c62d40897f120b24838da57e0632f9fdd49bd6eaf521e3 +TEST= 279 +KEY= e71bcbe1038f89ea3bd5be91ae946a52d63cd6fbb649f50c +IV= b8aebe84416dd0ba49f872760dd2cb2247bba09b3482fe89 +CT= 25c62d40897f120b24838da57e0632f9fdd49bd6eaf521e3 +PT= be0b5cc92a9a9b52677e810af6cc76a59afcfed7ea8633c0 +TEST= 280 +KEY= 59109728291512b85cab3f9b58581cf74cc0282c5ccfc6cc +IV= 16c54855b5cf108461a05453998aee7cb204a7523598902e +CT= be0b5cc92a9a9b52677e810af6cc76a59afcfed7ea8633c0 +PT= f3fbfe14a6ffaaaf68b85f7fc9496e1ce90dfcaac5a4d2a2 +TEST= 281 +KEY= aaeb693c8feab817341360e4911172eba5cdd486996b146e +IV= b48ee83b6bbeb8af64925d5d7691f52ada7bc1369aa55f49 +CT= f3fbfe14a6ffaaaf68b85f7fc9496e1ce90dfcaac5a4d2a2 +PT= 0faec6c344b385266c40730fa3dff2d263136b261fdb1014 +TEST= 282 +KEY= a545afffcb593d31585313eb32ce8039c6debfa086b0047a +IV= f7d3330a7fd2a6e6c83360f4fa5b996fc14175c8c71aef01 +CT= 0faec6c344b385266c40730fa3dff2d263136b261fdb1014 +PT= 65a91a1bbe95088b2fd0fe8368d57bf6a5a08c642d66ef97 +TEST= 283 +KEY= c0ecb5e475cc35ba7783ed685a1bfbcf637e33c4abd6ebed +IV= d13cbfa88e22c49be01deca44b4f3a317ed409d10ae45712 +CT= 65a91a1bbe95088b2fd0fe8368d57bf6a5a08c642d66ef97 +PT= 47da2667b8744b445a9b865caf32cd6cced2d21d3e6d4351 +TEST= 284 +KEY= 87369383cdb87efe2d186b34f52936a3adace1d995bba8bc +IV= 80f17af80a66b0b5bc90337745fe72ccb9fc9abbbdd6bb4d +CT= 47da2667b8744b445a9b865caf32cd6cced2d21d3e6d4351 +PT= c4368dd141ea3405c7bb0b423be9b3e755703e713dd620b4 +TEST= 285 +KEY= 43001e528c524afbeaa36076cec08544f8dcdfa8a86d8808 +IV= d7cf61de80d7172784d9802b5072c845e2894e092dd5b150 +CT= c4368dd141ea3405c7bb0b423be9b3e755703e713dd620b4 +PT= c4f7fa63cce1e5713e9939eab48a847302d3dcff918aed3d +TEST= 286 +KEY= 87f7e43140b3af8ad43a599c7a4a0137fa0f035739e76535 +IV= fb5208ebcec13200eea55e34e7b954cf59ea18d8b9b86125 +CT= c4f7fa63cce1e5713e9939eab48a847302d3dcff918aed3d +PT= 35119b97b78a8966e9a5e6d0ccc7722142e4fbc38c2b0c0e +TEST= 287 +KEY= b2e67fa6f73926ec3d9fbf4cb68d7316b8ebf894b5cc693b +IV= 6fcd462892426220a1e42ed3c93cad87663031092594cd36 +CT= 35119b97b78a8966e9a5e6d0ccc7722142e4fbc38c2b0c0e +PT= e5ed38e25ef92eabb4e763d2c14d44c8905dfa55d57ffa38 +TEST= 288 +KEY= 570b4744a9c008478978dc9e77c037de28b602c160b39303 +IV= 4bb63d2304b02be9838fd3beee4d669df83169d38883c7a4 +CT= e5ed38e25ef92eabb4e763d2c14d44c8905dfa55d57ffa38 +PT= 0242dc555dbe310d8958b432282974a7cbbfb95fa2e2cd6b +TEST= 289 +KEY= 55499b11f47e394a002068ac5fe94379e309bb9ec2515e68 +IV= 5307476920425059ac742bff75f3ead7a8a7d13e790a998d +CT= 0242dc555dbe310d8958b432282974a7cbbfb95fa2e2cd6b +PT= 1a48f71e44377f00a140609564b1e580221ee48f020c3096 +TEST= 290 +KEY= 4f016c0fb049464aa16008393b58a6f9c1175f11c05d6efe +IV= d9ff94b42a5c5cece353e918fddb230c912fcb91bf49ca00 +CT= 1a48f71e44377f00a140609564b1e580221ee48f020c3096 +PT= 76b648c8dcf74fc674bae3b19ffdaa88a0b01413c6463149 +TEST= 291 +KEY= 39b724c76cbe098cd5daeb88a4a50c7161a74b02061b5fb7 +IV= 072a1e770727f9158b57bad4935aee15b39f598a65ba081f +CT= 76b648c8dcf74fc674bae3b19ffdaa88a0b01413c6463149 +PT= 494f35f681b498e01f0cea1c4b82d731a60e3116d9ae893e +TEST= 292 +KEY= 70f81131ed0a916ccad60194ef27db40c7a97a14dfb5d689 +IV= 72fd3c28a6b6eff87f7e05ad1f024e6bfacbdf7ee65c598b +CT= 494f35f681b498e01f0cea1c4b82d731a60e3116d9ae893e +PT= 055522932c1ba86f3ce7ebe8edc444837aac09b05b78352b +TEST= 293 +KEY= 75ad33a2c1113903f631ea7c02e39fc3bd0573a484cde3a2 +IV= cfd64487acbcbf5c5a88b207ce183aaaab168061b57234c2 +CT= 055522932c1ba86f3ce7ebe8edc444837aac09b05b78352b +PT= e9fb09b69384a2fb0d1e72d866b5a69f5385846d84e868aa +TEST= 294 +KEY= 9c563a1452959bf8fb2f98a46456395cee80f7c900258b08 +IV= a8c23f4b2045e9b3405b085b74de00609fa2673984e1c3eb +CT= e9fb09b69384a2fb0d1e72d866b5a69f5385846d84e868aa +PT= 6fa4a148db4d3b352e100a0ea3de97c5947a9c8febb409ef +TEST= 295 +KEY= f3f29b5c89d8a0cdd53f92aac788ae997afa6b46eb9182e7 +IV= 7a1d52b0f2ba95e54ff8f35d34fe4b21d1c7b3d2823483d0 +CT= 6fa4a148db4d3b352e100a0ea3de97c5947a9c8febb409ef +PT= 00057fe167e8a031542183db0c8b0f862c9477cfa2712eba +TEST= 296 +KEY= f3f7e4bdee3000fc811e1171cb03a11f566e1c8949e0ac5d +IV= 174dc4e6d93bdfbd9302d2e5d04f60690613dfe0ba9c1775 +CT= 00057fe167e8a031542183db0c8b0f862c9477cfa2712eba +PT= 6bd69a8bab0c73b3f9267e09ab1dfaab4a9d4bf72e64c3a2 +TEST= 297 +KEY= 98217e36453c734f78386f78601e5bb41cf3577e67846fff +IV= d8165968a1002671f9181e68718124d19ac9721583519b45 +CT= 6bd69a8bab0c73b3f9267e09ab1dfaab4a9d4bf72e64c3a2 +PT= de728c4562c2a139dcbcccc03518c60a395e15da8e344463 +TEST= 298 +KEY= 4653f27327fed276a484a3b855069dbe25ad42a4e9b02b9c +IV= 6e304690850ec5c198c77f338fea9c48b1585bda2bd844ae +CT= de728c4562c2a139dcbcccc03518c60a395e15da8e344463 +PT= 61f9045cded204ead28b8c8af9f67c52f5a3b4f7c6ced252 +TEST= 299 +KEY= 27aaf62ff92cd69c760f2f32acf0e1ecd00ef6532f7ef9ce +IV= 513d76f3a0846df6cc97a794ed65316450fd31422092c7b4 +CT= 61f9045cded204ead28b8c8af9f67c52f5a3b4f7c6ced252 +PT= 00d79092136fd8894088412f222f46f03f4a25d60f5e23cd +TEST= 300 +KEY= 277d66bdea430e1536876e1d8edfa71cef44d3852020da03 +IV= 72e34ec7e69deae7485f5163cf1630b747bd2e1ddc21e23d +CT= 00d79092136fd8894088412f222f46f03f4a25d60f5e23cd +PT= 9884c1832cf941d4f7c5c1709d0e627f90099b0e8f85a8c6 +TEST= 301 +KEY= bff9a73ec6ba4fc1c142af6d13d1c5637f4d488bafa572c5 +IV= 49d44f8f35941c3285fee7e992bf6df656bc71955f3251df +CT= 9884c1832cf941d4f7c5c1709d0e627f90099b0e8f85a8c6 +PT= 7c58b22dfb5e97bc379f09dd0c2ff14aee582eebe97d19fc +TEST= 302 +KEY= c3a115133de4d87df6dda6b01ffe34299115666046d86b39 +IV= 81817caecbdbbd72c0b187e59e23d5f86bffd76ec1b793c6 +CT= 7c58b22dfb5e97bc379f09dd0c2ff14aee582eebe97d19fc +PT= d754e12ce3026ce3ba031ce1938b32275b6299673db57ab1 +TEST= 303 +KEY= 14f5f43fdee6b49e4cdeba518c75060eca77ff077b6d1188 +IV= 7a5da318f305945daa08ee7426c6f0422d880baf2622f9be +CT= d754e12ce3026ce3ba031ce1938b32275b6299673db57ab1 +PT= 4a7cdc4472797dd309652626f9223933a2abce6513f74f85 +TEST= 304 +KEY= 5e89287bac9fc94d45bb9c7775573f3d68dc3162689a5e0d +IV= 396bece4afa6e57900a5446c5a4ee3e12327158587858fd1 +CT= 4a7cdc4472797dd309652626f9223933a2abce6513f74f85 +PT= 59295e29e3e7e7998d722281c3beb35f9636be2702ad2f33 +TEST= 305 +KEY= 07a076524f782ed4c8c9bef6b6e98c62feea8f456a37713e +IV= 3f891ff7f90d71f290d7d2c5280561f7f6f978716f4a27bc +CT= 59295e29e3e7e7998d722281c3beb35f9636be2702ad2f33 +PT= c484bf7c67f7712fe31c9a532fa9648743f021207a449abc +TEST= 306 +KEY= c324c92e288f5ffb2bd524a59940e8e5bd1aae651073eb82 +IV= 406dec6204369d352f0c5be3ae33b807d2de65cf3d7921b7 +CT= c484bf7c67f7712fe31c9a532fa9648743f021207a449abc +PT= 3c6f480f59831663a0396747a9a575bae8757a05678404b7 +TEST= 307 +KEY= ff4b8121710c49988bec43e230e59d5f556fd46077f7ef35 +IV= c2de65935823dd2c6f3f020aa78592dea15b1fb77578ad19 +CT= 3c6f480f59831663a0396747a9a575bae8757a05678404b7 +PT= bf3260dc01fb84229f926af5b016bec785d5e4ecb913a36a +TEST= 308 +KEY= 4079e1fd70f7cdba147e291780f32398d0ba308ccee44c5f +IV= 903d202bb7d444a7cf17b191a919ead033d6d36242c64c80 +CT= bf3260dc01fb84229f926af5b016bec785d5e4ecb913a36a +PT= 46c97b5a75e55d14cd2336d7673370a324aeccf7ebe09dec +TEST= 309 +KEY= 06b09aa7051290aed95d1fc0e7c0533bf414fc7b2504d1b3 +IV= aa02f147714617e14611c8017a05817bc70f9c3614044a0f +CT= 46c97b5a75e55d14cd2336d7673370a324aeccf7ebe09dec +PT= 96eef42ae0f392d3daaff144537241d97afda7fd4e45a095 +TEST= 310 +KEY= 905e6e8de5e1027d03f2ee84b4b212e28ee95b866b417126 +IV= f0bdd27007d436ae6f1cf4b7cf54a1d15870480105ea8e26 +CT= 96eef42ae0f392d3daaff144537241d97afda7fd4e45a095 +PT= 8dede5f71fea9db5c5d65205c537932c4ca503670eb04088 +TEST= 311 +KEY= 1db38b7afa0b9fc8c624bc81718581cec24c58e165f131ae +IV= 5232709f03e575129f406a8f229682102e81988f139d4b0c +CT= 8dede5f71fea9db5c5d65205c537932c4ca503670eb04088 +PT= 537193926bbca5703089238e2a3c1dc8e0b5d0e21079fd29 +TEST= 312 +KEY= 4ec218e891b73ab8f6ad9f0f5bb99c0622f988037588cc87 +IV= 271ead5dac9a1caef1b14816798522827f589cbe341fd734 +CT= 537193926bbca5703089238e2a3c1dc8e0b5d0e21079fd29 +PT= 69408f87717087ed5cd75bb2a7ed5f05431c5c7beb3c38d1 +TEST= 313 +KEY= 2782976fe0c7bd55aa7ac4bdfc54c30361e5d4789eb4f456 +IV= 611e93665595555f440efd27b88ac32d9f47f5635945d339 +CT= 69408f87717087ed5cd75bb2a7ed5f05431c5c7beb3c38d1 +PT= d9bd528d4f178391cb0c1ae4eb192665211813a805200077 +TEST= 314 +KEY= fe3fc5e2afd03ec46176de59174de56640fdc7d09b94f421 +IV= 74e3baa9da62af6b79acc01338d2bd722ec39a228443d45d +CT= d9bd528d4f178391cb0c1ae4eb192665211813a805200077 +PT= 0c9edd03edd3ca935f7b22daae0ef16f664af9e4af45ab85 +TEST= 315 +KEY= f2a118e14203f4573e0dfc83b943140926b73e3434d15fa4 +IV= 110d66a17aeb33bcac35906997f8a8852b1fdc699888ae1d +CT= 0c9edd03edd3ca935f7b22daae0ef16f664af9e4af45ab85 +PT= 5f402eb5303897f41e62918fb01ae6d930f9fa81e0417025 +TEST= 316 +KEY= ade13654723b63a3206f6d0c0959f2d0164ec4b5d4902f81 +IV= ef27baabee98630a4d5d0ca0392b0f3afc3b39149b37bdb0 +CT= 5f402eb5303897f41e62918fb01ae6d930f9fa81e0417025 +PT= 41a8344209cb4198280fd6af35174301d3fe6d69f4445e1c +TEST= 317 +KEY= ec4902167bf0223b0860bba33c4eb1d1c5b0a9dc20d4719d +IV= c55d48a3660a3e5078fc09d039cfba5f602f0d8567e65b21 +CT= 41a8344209cb4198280fd6af35174301d3fe6d69f4445e1c +PT= 3ee1e7e7779ba71f5b64858852ad023de358418ab8d7c4d4 +TEST= 318 +KEY= d2a8e5f10c6b852453043e2b6ee3b3ec26e8e8569803b549 +IV= 53d0a6483376824b57e514fa2749ceb5ed7db3853c095f4c +CT= 3ee1e7e7779ba71f5b64858852ad023de358418ab8d7c4d4 +PT= b5eb02ad02bee749063ce2783d1d06bf61cda6309eae3a14 +TEST= 319 +KEY= 6743e75c0ed5626d5538dc5353feb55347254e6606ad8f5d +IV= 102ade3c7cfb138f5fcfb5f65a27aa441586b9c06ecad2ca +CT= b5eb02ad02bee749063ce2783d1d06bf61cda6309eae3a14 +PT= c09cb854d8674ddb6b24168a2faef9c8dee81fd0f409d974 +TEST= 320 +KEY= a7df5f08d6b22fb63e1ccad97c504c9b99cd51b6f2a45629 +IV= 9383ab3e1a361c6a05dd14d9def6c47f6f856a2ea9c3d1f6 +CT= c09cb854d8674ddb6b24168a2faef9c8dee81fd0f409d974 +PT= 065ec9fff0aac2c239d318cb9a098446d44c2eef4d2748f9 +TEST= 321 +KEY= a18196f72618ed7407cfd212e659c8dd4d817f59bf831ed0 +IV= 722634082d5e3051ae24950108af022757916ccf1d5d6462 +CT= 065ec9fff0aac2c239d318cb9a098446d44c2eef4d2748f9 +PT= fc4d5603db378bde6b1c20d686a0cc82a4f3658eb1aa383f +TEST= 322 +KEY= 5dccc0f4fd2f66aa6cd3f2c460f9045fe9721ad70e2926ef +IV= 9af94be84106699f4e39a8c7c37335f16bcc61e57b2db8a0 +CT= fc4d5603db378bde6b1c20d686a0cc82a4f3658eb1aa383f +PT= 28e43925a8c64f8cb8d01744100a3761033b116ccb30b51f +TEST= 323 +KEY= 7528f9d155e92926d403e58070f3333eea490bbbc51993f0 +IV= ef43edecafd9be7aeaa7ef6c6c0e68062cc5df5977870505 +CT= 28e43925a8c64f8cb8d01744100a3761033b116ccb30b51f +PT= f3428816a1f10408cdfdbe6f7bd6627f36e507de79f75f23 +TEST= 324 +KEY= 866a71c7f4182d2e19fe5bef0b255141dcac0c65bceeccd3 +IV= 13f03ced04ffc9fc31cb64feaf59e549ac8520f8e80e0245 +CT= f3428816a1f10408cdfdbe6f7bd6627f36e507de79f75f23 +PT= 9733724aa39c1c6429872e15eb842350d92ae9645be697a1 +TEST= 325 +KEY= 1159038d5784314a307975fae0a172110586e501e7085b72 +IV= 3c41fa7964bebc71cb4a78a16b95167c12bb4a10ec6873aa +CT= 9733724aa39c1c6429872e15eb842350d92ae9645be697a1 +PT= 401dce92811930bd14f684c76de09c7e98fe659e5403de1a +TEST= 326 +KEY= 5144cd1fd69d01f7248ff13d8d41ee6f9d78809fb30b8568 +IV= 92c76d7c6d8b0cc2c59495d46df2fbb53efc3486695c2530 +CT= 401dce92811930bd14f684c76de09c7e98fe659e5403de1a +PT= 5a135a598f807801a88a84e6614b9f31aefd3325d7a1947b +TEST= 327 +KEY= 0b579746591d79f68c0575dbec0a715e3385b3ba64aa1113 +IV= a7188067674c0ea0de5b2344d34f1e88bcd0f5a190e4a499 +CT= 5a135a598f807801a88a84e6614b9f31aefd3325d7a1947b +PT= a4236d5c38845ac0047e7f4a0ef606f38a7e27bda6a4018d +TEST= 328 +KEY= af74fa1a61992336887b0a91e2fc77adb9fb9407c20e109e +IV= 4b5b5b87808c386e976f7231989aebe54ea25b4d0092431d +CT= a4236d5c38845ac0047e7f4a0ef606f38a7e27bda6a4018d +PT= 4fe137168e8ccac2d69a227a6c6c11cb6cb3b20d11868636 +TEST= 329 +KEY= e095cd0cef15e9f45ee128eb8e906666d548260ad38896a8 +IV= 587791057745a4909abeb47d23ea7aa5bb8272116ee7f233 +CT= 4fe137168e8ccac2d69a227a6c6c11cb6cb3b20d11868636 +PT= 14dcf5075d93ed2cf4a9ee707b5c65e8385b6859c457be0d +TEST= 330 +KEY= f449380bb28604d8aa48c69bf5cc038eed134e5317df28a5 +IV= 7fbf9775de8e91f9b0b804624da18ef6f47db6540db2983f +CT= 14dcf5075d93ed2cf4a9ee707b5c65e8385b6859c457be0d +PT= 753089f387893e7616b73efc6df945e9171088c7e908a523 +TEST= 331 +KEY= 8179b1f8350f3aaebcfff86798354667fa03c694fed78d86 +IV= 7205be3a8bc735a46b925c73c79f2041f0187d0295963d60 +CT= 753089f387893e7616b73efc6df945e9171088c7e908a523 +PT= 73f66ef7c5113f1314de572f343e14884f348c0c8c717149 +TEST= 332 +KEY= f28fdf0ff01e05bda821af48ac0b52efb5374a9872a6fccf +IV= c4fbaf04124c903f818549c307a3e8caad83dce04a6f72de +CT= 73f66ef7c5113f1314de572f343e14884f348c0c8c717149 +PT= 039351ca9cc1261c58b9154ca97635d9c80b8a9c3c06b6c4 +TEST= 333 +KEY= f11c8ec56cdf23a1f098ba04057d67367d3cc0044ea04a0b +IV= b39c3d090475226e5ce3415f2bcaf350ec6220396024012a +CT= 039351ca9cc1261c58b9154ca97635d9c80b8a9c3c06b6c4 +PT= 1422d8fd382ebb85e0d4d1084f0c81fa8c10348132988321 +TEST= 334 +KEY= e53e563854f19824104c6b0c4a71e6ccf12cf4857c38c92a +IV= 2b28f6aab83d2c34e3146523e03083ab0788f0c318ff623c +CT= 1422d8fd382ebb85e0d4d1084f0c81fa8c10348132988321 +PT= 054ca41cf5f38fc46be5ae613e8df75c978811e8907f2188 +TEST= 335 +KEY= e072f224a10217e07ba9c56d74fc119066a4e56dec47e8a2 +IV= ae3df0394eb553cf8271e7d0a048b676a75e28aa10232cb0 +CT= 054ca41cf5f38fc46be5ae613e8df75c978811e8907f2188 +PT= b1933ec8b77b74374becb42127d37045ec118b5ad3bad2cf +TEST= 336 +KEY= 51e1ccec167963d73045714c532f61d58ab56e373ffd3a6d +IV= c9faf91f8139d56a0b9a3565888a1bbce29e12f121bd5877 +CT= b1933ec8b77b74374becb42127d37045ec118b5ad3bad2cf +PT= 5dffeac90b5bc5331ceb8b505513fea34606f169b2326106 +TEST= 337 +KEY= 0c1e26251d22a6e42caefa1c063c9f76ccb39f5e8dcf5b6b +IV= 0da0b6c1defc9bbc96544e6d1fe694b8f21ea0571ddf8e50 +CT= 5dffeac90b5bc5331ceb8b505513fea34606f169b2326106 +PT= bfb7dad7da786c8d868def1bb11f09c8633033ba4769bbee +TEST= 338 +KEY= b3a9fcf2c75aca69aa231507b72396beaf83ace4caa6e085 +IV= 301ae39895f254349ade82dfa872f0402bc5a9de2a2dbcc1 +CT= bfb7dad7da786c8d868def1bb11f09c8633033ba4769bbee +PT= da2244bf10a2f6c389d9bc929ddea6aef439f6af49e4030d +TEST= 339 +KEY= 698bb84dd7f83caa23faa9952afd30105bba5a4b8342e388 +IV= bbdaac537854df1640f3b354302a9208b0b437268ac8ad88 +CT= da2244bf10a2f6c389d9bc929ddea6aef439f6af49e4030d +PT= be2b056646ea3c3badca598d893ef07845196fbaadffcf6a +TEST= 340 +KEY= d7a0bd2b911200918e30f018a3c3c0681ea335f12ebd2ce2 +IV= 7eb5b829d8f673047c29473d3a0ebfc60e4f86f29bbf32bd +CT= be2b056646ea3c3badca598d893ef07845196fbaadffcf6a +PT= 2a408f3492e13505bdbae20950e7881d78eeb4192f49c4d7 +TEST= 341 +KEY= fde0321f03f33594338a1211f3244875664d81e801f4e835 +IV= 676ea98d49be77922043e17bd03ffcd1c44c3bf2f814a52c +CT= 2a408f3492e13505bdbae20950e7881d78eeb4192f49c4d7 +PT= 836f9f905db81e1255b0cedf21589e9b8938085f7e022410 +TEST= 342 +KEY= 7e8fad8f5e4b2b86663adcced27cd6eeef7589b77ff6cc25 +IV= f4cd08176b05be9f8e0d42e39772b8e2c6db9d4b6744b473 +CT= 836f9f905db81e1255b0cedf21589e9b8938085f7e022410 +PT= 56804d932ede556a9fa1c269138ba7a1d8b7ba55ade6d113 +TEST= 343 +KEY= 280fe01c70957eecf99b1ea7c1f7714f37c233e2d2101d36 +IV= df226db9295e34cf9f1f22aa2f5996a9223d704dd58d1451 +CT= 56804d932ede556a9fa1c269138ba7a1d8b7ba55ade6d113 +PT= a0f100d925d71af1ed01d0eed3d9f32efafe7d91e1346308 +TEST= 344 +KEY= 88fee0c55542641d149ace49122e8261cd3c4e7333247e3e +IV= 5e3d4ace0b0bee221192591412b4bfe5efbf1bfdfa85db89 +CT= a0f100d925d71af1ed01d0eed3d9f32efafe7d91e1346308 +PT= 8499ac7c78eef513a423164e983460cd52a8d2c45d02699b +TEST= 345 +KEY= 0c674cb92dac910eb0b9d8078a1ae2ac9f949cb76e2617a5 +IV= b3018446df5412ce22fd88eaf9c81ef88ffd43d68d9a887a +CT= 8499ac7c78eef513a423164e983460cd52a8d2c45d02699b +PT= 2a17ab86e48ebfbb5bac80824a220feebd60e716171b5dd7 +TEST= 346 +KEY= 2670e73fc9222eb5eb155885c038ed4222f47ba1793d4a72 +IV= e08cdd110d3ed0f17f493f601a61a257a17b7bf508902119 +CT= 2a17ab86e48ebfbb5bac80824a220feebd60e716171b5dd7 +PT= 4638def9aa873515e0473002d6a0fd52e7f7d06f3864aba2 +TEST= 347 +KEY= 604839c663a51ba00b52688716981010c503abce4159e1d0 +IV= 6f0fcf6543459c333d481a9a1a7f4539bd94622e835ba5db +CT= 4638def9aa873515e0473002d6a0fd52e7f7d06f3864aba2 +PT= 643589451191ce87bf470c4a8e500e757d43d7ff150d70c0 +TEST= 348 +KEY= 047db0837234d527b41564cd98c81e65b8407c3154549110 +IV= b9ec50a09d1cb74b2e397a0df9907ae61173fe84918b8906 +CT= 643589451191ce87bf470c4a8e500e757d43d7ff150d70c0 +PT= 6e255f7b9d30ed5a5ba6c0816fbd729beb359ce3adc4bff7 +TEST= 349 +KEY= 6a58eff8ef04387defb3a44cf7756cfe5375e0d2f9902ee7 +IV= b3c24c74934ad0b17bc7090c679b4a33518b6303b840e455 +CT= 6e255f7b9d30ed5a5ba6c0816fbd729beb359ce3adc4bff7 +PT= c588b16c364bb66c7947e808c28612f7eb521a670737dd19 +TEST= 350 +KEY= afd05e94d94f8e1196f44c4435f37e09b827fab5fea7f3fe +IV= 21a9973ace3f48490b340b2f64d365bca49e45dabdf2e8d4 +CT= c588b16c364bb66c7947e808c28612f7eb521a670737dd19 +PT= 01f2794b0a0ba2ab0c69526ecc7c3f93053aa6265759b5d0 +TEST= 351 +KEY= ae2227dfd3442cba9a9d1e2af98f419abd1d5c93a9fe462e +IV= bfc00422eeef11d7c953e3b113fe23071f6d813b2afafd3b +CT= 01f2794b0a0ba2ab0c69526ecc7c3f93053aa6265759b5d0 +PT= 54cdab25cf6b69e80906a32e82ae9120a2fafccb68ac7ce1 +TEST= 352 +KEY= faef8cfa1c2f4552939bbd047b21d0ba1fe7a058c1523acf +IV= d38a2dd6cedce2ba399611446bad92c8862339501468ced7 +CT= 54cdab25cf6b69e80906a32e82ae9120a2fafccb68ac7ce1 +PT= dc7aa23db960331cd21d249e9892bca61283bdee435b7a93 +TEST= 353 +KEY= 26952ec7a54f764e4186999ae3b36c1c0d641db68209405c +IV= 7ac3bed585e546c1305cfa9b367cb3292700d15bdeea8742 +CT= dc7aa23db960331cd21d249e9892bca61283bdee435b7a93 +PT= 5d97946f5a03e7c9df2cdc80817234458276b06235a8400c +TEST= 354 +KEY= 7b02baa8ff4c91879eaa451a62c158598f12add4b7a10050 +IV= 99fb7d3a29a454a0bbd1054071e078e6fff5103497dd6417 +CT= 5d97946f5a03e7c9df2cdc80817234458276b06235a8400c +PT= 01ef80df252c31bf8327878fe7b5cb57319865008d5ea759 +TEST= 355 +KEY= 7aed3a77da60a0381d8dc2958574930ebe8ac8d43affa709 +IV= 799168c1e9d20bb2baceddf75510f1ab5ea13be67b9812a8 +CT= 01ef80df252c31bf8327878fe7b5cb57319865008d5ea759 +PT= 8e7d64c61dc80e90d25c8bedef3487461a73a4d932cf671c +TEST= 356 +KEY= f4905eb1c7a8aea8cfd149786a401448a4f96c0d0830c015 +IV= fc99d8792e4680c8e036a304d174d51fd6b1fd5b0dbec2d2 +CT= 8e7d64c61dc80e90d25c8bedef3487461a73a4d932cf671c +PT= e0eb438e7064abcf0003e32798f1652082a26e896ca407b9 +TEST= 357 +KEY= 147b1d3fb7cc0567cfd2aa5ff2b17168265b02846494c7ac +IV= d52417d45b747b74819e015c5e6426ae2cb1d8367d1b98e8 +CT= e0eb438e7064abcf0003e32798f1652082a26e896ca407b9 +PT= 3985de07b1e6e3cdabc0ea454628e5155e4415d191a61d9f +TEST= 358 +KEY= 2dfec338062ae6aa6412401ab499947d781f1755f532da33 +IV= b089299e1af11157a93e9b871cceec456779d51f0f50a748 +CT= 3985de07b1e6e3cdabc0ea454628e5155e4415d191a61d9f +PT= 8cd8d0ac8d2d1f663e5b4f60818828b2f3d125aebbed43f8 +TEST= 359 +KEY= a12613948b07f9cc5a490f7a3511bccf8bce32fb4edf99cb +IV= ec338f085e4c49ecf4673dfc40914540f26a2cc85709113e +CT= 8cd8d0ac8d2d1f663e5b4f60818828b2f3d125aebbed43f8 +PT= 9a3ff5ad48d3725e8edaeb837284a9283c3a666d8d69dad7 +TEST= 360 +KEY= 3b19e639c3d48b92d493e4f9479515e7b7f45496c3b6431c +IV= 531425fb3c207f802936572c0fb550b0115fd1ebab86f33d +CT= 9a3ff5ad48d3725e8edaeb837284a9283c3a666d8d69dad7 +PT= 3aa78a1cc1e97bea6d341a34cae24b9cc8b2de3a0039ecb7 +TEST= 361 +KEY= 01be6c25023df078b9a7fecd8d775e7b7f468aacc38fafab +IV= 9e700cff45ac1041a90df51eafcc9063bda00006ccfb8e36 +CT= 3aa78a1cc1e97bea6d341a34cae24b9cc8b2de3a0039ecb7 +PT= 8a7ebd1ccc5dbb075933687eda487ad0c81523de0f3792e9 +TEST= 362 +KEY= 8bc0d139ce604b7fe09496b3573f24abb753a972ccb83d42 +IV= 42e7a4166708f0b98697e406fb0ebef249685f0fa6b90ac0 +CT= 8a7ebd1ccc5dbb075933687eda487ad0c81523de0f3792e9 +PT= 347f915bb88babbdc676e640a305ffa51e7cf45f0eae8b35 +TEST= 363 +KEY= bfbf406276ebe0c226e270f3f43adb0ea92f5d2dc216b677 +IV= b936903b38414834aad43c7a6c6c4dcf1b59c56c732289ab +CT= 347f915bb88babbdc676e640a305ffa51e7cf45f0eae8b35 +PT= 81fd3f1154a2ff59f2a911feaefd295060bdce2b82fa30ee +TEST= 364 +KEY= 3e427f7322491f9bd44b610d5ac7f25ec992930640ec8699 +IV= f279c64207b883a5edd30093ca478592dab2a940283df149 +CT= 81fd3f1154a2ff59f2a911feaefd295060bdce2b82fa30ee +PT= 279cec1b85ff9798d7908b83a52bfb11ae049e7cb40eead3 +TEST= 365 +KEY= 19de9368a7b6880303dbea8effec094f67960d7af4e26c4a +IV= ba7363b09d19967678b62584c89450767f363a53a9e0861d +CT= 279cec1b85ff9798d7908b83a52bfb11ae049e7cb40eead3 +PT= ae3b041fd145c05a017c71710d294253082efae4d2ae9eff +TEST= 366 +KEY= b7e5977776f3485902a79bfff2c54b1c6fb8f79e264cf2b5 +IV= e5d1c641edcc211f44914824538a686ec9f8aaebb6213f42 +CT= ae3b041fd145c05a017c71710d294253082efae4d2ae9eff +PT= 3ec5aa12252a35436be5c4d48414b7b56ecf605e2000ed3e +TEST= 367 +KEY= 89203d6553d97d1a69425f2b76d1fca9017797c0064c1f8b +IV= 930bc794975edd99e4aed17c86c4786be87e826116192318 +CT= 3ec5aa12252a35436be5c4d48414b7b56ecf605e2000ed3e +PT= b6b6c9061ca1c0eadd8080827431a8db719dfff151cafa3c +TEST= 368 +KEY= 3f96f4634f78bdf0b4c2dfa902e0547270ea68315786e5b7 +IV= e6fc84087158240e968d68e92798cae3e9623adbe4f1875d +CT= b6b6c9061ca1c0eadd8080827431a8db719dfff151cafa3c +PT= 0d567b71f657e978b4c502c3040d9b79755cd7cfde2a8268 +TEST= 369 +KEY= 32c08f12b92f54880007dd6a06edcf0b05b6bffe89ac67df +IV= f54a6b7c1fd346ba9cbc6c79f5b494004ec8b352810af771 +CT= 0d567b71f657e978b4c502c3040d9b79755cd7cfde2a8268 +PT= d543baf44c5bbb9153b526194738dec43af872877e748a53 +TEST= 370 +KEY= e78335e6f574ef1953b2fb7341d511cf3f4ecd79f7d8ed8c +IV= 9a79c28b963e938513256eabc2bf00f39debf16cbfba7668 +CT= d543baf44c5bbb9153b526194738dec43af872877e748a53 +PT= 81416e359f50a5781a36513bc4321b74fed5b1c3f2aff3ee +TEST= 371 +KEY= 66c25bd36a244a614984aa4885e70abbc19b7cba05771e62 +IV= 208987e52754d411f4deb1fd66895959e0262ccc5e99ae8a +CT= 81416e359f50a5781a36513bc4321b74fed5b1c3f2aff3ee +PT= 372a90ccf2e3bc543f560dc8585dae7dbd7cdc8059fd6bb0 +TEST= 372 +KEY= 51e8cb1f98c7f63576d2a780ddbaa4c67ce7a03a5c8a75d2 +IV= dddf895f4834775d092766210de09d24eab7b4b651b54963 +CT= 372a90ccf2e3bc543f560dc8585dae7dbd7cdc8059fd6bb0 +PT= d5c06baa171251edd66124fa484e55d65280842a02a60a90 +TEST= 373 +KEY= 8428a0b58fd5a7d8a0b3837a95f4f1102e6724105e2c7f42 +IV= a80ff30a1fc8e5e99b1c0bc39d490d6db6135fcad254dda4 +CT= d5c06baa171251edd66124fa484e55d65280842a02a60a90 +PT= cb0919ed0313c873001b4d5725bcf2f774a80c835c8f3994 +TEST= 374 +KEY= 4f21b9588cc66faba0a8ce2db04803e75acf289302a346d6 +IV= 9d4725dc8bc70d16172f9fb3624194acab925b874175f77d +CT= cb0919ed0313c873001b4d5725bcf2f774a80c835c8f3994 +PT= 18aae50488e0a80b4853d9c51ae1418bb04029c2421f308a +TEST= 375 +KEY= 578b5c5c0426c7a0e8fb17e8aaa9426cea8f015140bc765c +IV= 48edd8767931d228ea17e66ee6b611ab4e3e9c15c8f7daf9 +CT= 18aae50488e0a80b4853d9c51ae1418bb04029c2421f308a +PT= c3f283398850ac821c76965c4d6b2639f3382508e3ec9a40 +TEST= 376 +KEY= 9479df658c766b22f48d81b4e7c2645519b72459a350ec1c +IV= d88e0edae6ba75a7d2b31c90ce077baa21da81e1e9580b12 +CT= c3f283398850ac821c76965c4d6b2639f3382508e3ec9a40 +PT= c04d1d2c9fdc31c6919f0b09c326cd3d71547c6c488a9c68 +TEST= 377 +KEY= 5434c24913aa5ae465128abd24e4a96868e35835ebda7074 +IV= 7f11df9ac97c2df741a9cfc204d7d036d653113d854bd033 +CT= c04d1d2c9fdc31c6919f0b09c326cd3d71547c6c488a9c68 +PT= 239815653e6c6ef200fbf4f4bbedbf761f88db96ad7956a8 +TEST= 378 +KEY= 77acd72c2dc6341665e97e499f09161e776b83a346a326dc +IV= 0702ffaa32326812f3c8caa19e3e269b497e164d6b49ce3e +CT= 239815653e6c6ef200fbf4f4bbedbf761f88db96ad7956a8 +PT= 56633ecc88757d19e3ccd08d2d4ffa69b489b8676670cbf1 +TEST= 379 +KEY= 21cfe9e0a5b3490f8625aec4b246ec77c3e23bc420d3ed2d +IV= ba9fe18cef7a07373efdb435c47894c40cf7d665f5236100 +CT= 56633ecc88757d19e3ccd08d2d4ffa69b489b8676670cbf1 +PT= f265502d843e75e4e36071994517ccc17cc58fab11d26827 +TEST= 380 +KEY= d3aab9cd218d3ceb6545df5df75120b6bf27b46f3101850a +IV= 80dd54ab2f7b6874f841dfcc3fb624a0b655ecbda5d7317e +CT= f265502d843e75e4e36071994517ccc17cc58fab11d26827 +PT= 697a73bf4e8ec04c9e04c1c601b968587c764d5aa37a8a29 +TEST= 381 +KEY= bad0ca726f03fca7fb411e9bf6e848eec351f935927b0f23 +IV= 9d4a31be92345105110436d3c98a6b76515c729d72a44da5 +CT= 697a73bf4e8ec04c9e04c1c601b968587c764d5aa37a8a29 +PT= 0619f38999ec0c17222d29a1cf7823369e0f7766d5bd60c7 +TEST= 382 +KEY= bcc939fbf6eff0b0d96c373a39906bd85d5e8e5347c66fe4 +IV= 1a769f2f34a7f776d2168704d9148f9625d504a3a214e016 +CT= 0619f38999ec0c17222d29a1cf7823369e0f7766d5bd60c7 +PT= b20da96ef5c40bf7a12184fb9279a73b0e17cab9d7dfd608 +TEST= 383 +KEY= 0ec49095032bfb47784db3c1abe9cce3534944ea9019b9ec +IV= 6ad098fd50f3615e253d6aabd406324218447ae8251a6181 +CT= b20da96ef5c40bf7a12184fb9279a73b0e17cab9d7dfd608 +PT= 24a534d18a53f5330f64c9a52fce495a146479d42a0740db +TEST= 384 +KEY= 2a61a44489780e7477297a64842785b9472d3d3eba1ef937 +IV= 63676d57ebe9db6f47b5768968f2bd1326d30a905b0e7c19 +CT= 24a534d18a53f5330f64c9a52fce495a146479d42a0740db +PT= db082753adf7872ca83849d6e39acc76424f11a1a30f17fc +TEST= 385 +KEY= f1698317248f8958df1133b267bd49cf05622c9f1911eecb +IV= 27e12aecc193c1b36c8acf47a0ff6cd4eaff16e6a7f6b65f +CT= db082753adf7872ca83849d6e39acc76424f11a1a30f17fc +PT= f6ef6658d009c5e7cea8be7d145b3534aea0565b29aa74fe +TEST= 386 +KEY= 0786e54ff4864cbf11b98dcf73e67cfbabc27ac430bb9a35 +IV= 7c1ba41100d765791c34a2ba82f62a0d9d016039ef601d19 +CT= f6ef6658d009c5e7cea8be7d145b3534aea0565b29aa74fe +PT= f61d9ec11c0320e6716f8f79ba4b8ddeb78f601eae0dda72 +TEST= 387 +KEY= f19b7b8ee8856c5960d602b6c9adf1251c4d1ada9eb64047 +IV= c06db2e06f0d3911e453d7a9e474ca598bc034eac43eda05 +CT= f61d9ec11c0320e6716f8f79ba4b8ddeb78f601eae0dda72 +PT= 84041e247d1d2d5b57f6973400122bc74e0595e05964ea71 +TEST= 388 +KEY= 759f65aa9598410237209582c9bfdae252488f3ac7d2aa36 +IV= 83bff1c11907583842fd20175308f16c16ba7c6fe2ca59c5 +CT= 84041e247d1d2d5b57f6973400122bc74e0595e05964ea71 +PT= 32cea78be5940ab8b8de811cab0790f9d476efaef02a4b3b +TEST= 389 +KEY= 4751c221700c4bba8ffe149e62b84a1b863e609437f8e10d +IV= cbb16afdc1569cf67bfe58d6262945fb801cdfc90d5c1663 +CT= 32cea78be5940ab8b8de811cab0790f9d476efaef02a4b3b +PT= 0c87bd1ae25b6768d9e5b18c008e53a61c02a8da87685126 +TEST= 390 +KEY= 4bd67f3b92572cd2561ba512623619bd9a3cc84eb090b02b +IV= 863ba8132445f08d2b508627b691e53f6cc5b446415ec301 +CT= 0c87bd1ae25b6768d9e5b18c008e53a61c02a8da87685126 +PT= aa2aae0662cd9f863f0fa27a3f3ef048c751ced9e4d9e985 +TEST= 391 +KEY= e1fcd13df09ab354691407685d08e9f55d6d0697544959ae +IV= b4a3856853cd93c04a5050b27ac568bbd07b82ff90fa0483 +CT= aa2aae0662cd9f863f0fa27a3f3ef048c751ced9e4d9e985 +PT= 1e76f3e9e8b3aa91b1ad644977c8a72dd2f345742987fe8b +TEST= 392 +KEY= ff8a22d4182919c5d8b963212ac04ed88f9e43e37dcea725 +IV= 010ff15e23296c2ae2e1837efc9b4cb4b08d7141e2887db6 +CT= 1e76f3e9e8b3aa91b1ad644977c8a72dd2f345742987fe8b +PT= 3353900d9353e21a785d1ef64e095500478f29aae81f0e4e +TEST= 393 +KEY= ccd9b2d98b7afbdfa0e47dd764c91bd8c8116a4995d1a96b +IV= 503ae17bb4fbb7c7f92e418aadf2ebbfd3d3114479a877d6 +CT= 3353900d9353e21a785d1ef64e095500478f29aae81f0e4e +PT= ceb102fdbdac6c0fc10cf06014626dc7b69fb49de9e59275 +TEST= 394 +KEY= 0268b02436d697d061e88db770ab761f7e8eded47c343b1e +IV= 3978cfb8c0ce49b98cb38618771602cdd4bc78ad22ef8ec3 +CT= ceb102fdbdac6c0fc10cf06014626dc7b69fb49de9e59275 +PT= b18680fa99d566a6727c2369f5d37bc0d795e01de565268d +TEST= 395 +KEY= b3ee30deaf03f1761394aede85780ddfa91b3ec999511d93 +IV= 04cd34d6fc137c90b2621542f2f72a10e6b31d195d2dd0f1 +CT= b18680fa99d566a6727c2369f5d37bc0d795e01de565268d +PT= 29ba230c82fc3e221631282590a9325ab4888f7593051e9c +TEST= 396 +KEY= 9a5413d22dffcf5405a586fb15d13f851d93b1bc0a54030f +IV= fde29f3a886f34f36f74f7f9f2cbd4135125da9189342c8f +CT= 29ba230c82fc3e221631282590a9325ab4888f7593051e9c +PT= 998a03268dc274455f67fe9c9c0f9040cf2edfe02e02712d +TEST= 397 +KEY= 03de10f4a03dbb115ac2786789deafc5d2bd6e5c24567222 +IV= 3d4756bcd0c80d9752033f903af63700ff59e056025b566d +CT= 998a03268dc274455f67fe9c9c0f9040cf2edfe02e02712d +PT= 3db132235369de045dd6480013e23cb737d1a685ca753d83 +TEST= 398 +KEY= 3e6f22d7f3546515071430679a3c9372e56cc8d9ee234fa1 +IV= fadf43aee339b8feb7b7e81843a04f49def5589ab6012f2d +CT= 3db132235369de045dd6480013e23cb737d1a685ca753d83 +PT= 92720373f05c79b3efc427aa10d3fbda94a9e9db0a73857d +TEST= 399 +KEY= ac1d21a403081ca6e8d017cd8aef68a871c52102e450cadc +IV= e214eb0ba109042b424ebecbff41d4065159853426730037 +CT= 92720373f05c79b3efc427aa10d3fbda94a9e9db0a73857d +PT= d0ca2d8933488f746263415030f2dc492670f334ef90a1b7 diff --git a/flint/test/testvals/cbcmd68.txt b/flint/test/testvals/cbcmd68.txt new file mode 100644 index 0000000..3be5d7c --- /dev/null +++ b/flint/test/testvals/cbcmd68.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= 7f053f164670c5fe1e1a40da7bdb87b808dc0d5101287fb5 +TEST= 1 +KEY= 3903f1ba1f39ffa07f053f164670c5fe1e1a40da7bdb87b808dc0d5101287fb5 +IV= 5a4d41c5477ab37f027b62ce149328713903f1ba1f39ffa0 +CT= 7f053f164670c5fe1e1a40da7bdb87b808dc0d5101287fb5 +PT= 8265752da5be643b591e8e339411e01246d2576e4524b39c +TEST= 2 +KEY= 4849b8e3b416ecfefd604a3be3cea1c54704cee9efca67aa4e0e5a3f440ccc29 +IV= 9642dfcca042d07b4ac7dd030420ac1f714a4959ab2f135e +CT= 8265752da5be643b591e8e339411e01246d2576e4524b39c +PT= d1380db9702683ea63ef428fce016e317ef1948fb88a0966 +TEST= 3 +KEY= 0ebf7466b5ee8a722c58478293e8222f24eb8c6621cb099b30ffceb0fc86c54f +IV= 19729feb7d3915e213550554c66473b046f6cc8501f8668c +CT= d1380db9702683ea63ef428fce016e317ef1948fb88a0966 +PT= b69023354fba6725b159c2aec3a3bd01d539fc0b2fdd8543 +TEST= 4 +KEY= 157f81fdb9e624929ac864b7dc52450a95b24ec8e268b49ae5c632bbd35b400c +IV= 654170b326a6341e80c9002d35636a361bc0f59b0c08aee0 +CT= b69023354fba6725b159c2aec3a3bd01d539fc0b2fdd8543 +PT= 1cffadba36d0e831fdebd865ced988652e29a6674b07432c +TEST= 5 +KEY= 389caf49ebc0377e8637c90dea82ad3b685996ad2cb13cffcbef94dc985c0320 +IV= 04f5f98ab3200ef2d3715f38d169a1f22de32eb4522613ec +CT= 1cffadba36d0e831fdebd865ced988652e29a6674b07432c +PT= 962b35cae3e76da7fa8321bfedfe1cd7afa05f7d2afc77e4 +TEST= 6 +KEY= fb685b62d2454267101cfcc70965c09c92dab712c14f2028644fcba1b2a074c4 +IV= 1d58b495a6ff9f6ee3d90551a0271f87c3f4f42b39857519 +CT= 962b35cae3e76da7fa8321bfedfe1cd7afa05f7d2afc77e4 +PT= 3177e92b4985c401ecc2ad547144829f3e8142c975e03afc +TEST= 7 +KEY= 0313ab7524ab7382216b15ec40e0049d7e181a46b00ba2b75ace8968c7404e38 +IV= f7bb5cea8c0fb0c681f5b99d775bb266f87bf017f6ee31e5 +CT= 3177e92b4985c401ecc2ad547144829f3e8142c975e03afc +PT= be288f0c3bc4182d6d0265574588970027498cfe59eae3c1 +TEST= 8 +KEY= 3ddbbaa285c11f269f439ae07b241cb0131a7f11f58335b77d8705969eaaadf9 +IV= 203b55a38b6a9a8227c8b53c4b238b3e3ec811d7a16a6ca4 +CT= be288f0c3bc4182d6d0265574588970027498cfe59eae3c1 +PT= 76ae360fd2d50ed19fa3c9802663ae7b58c7d69d287b08d7 +TEST= 9 +KEY= f0eebce99031420de9edacefa9f112618cb9b691d3e09bcc2540d30bb6d1a52e +IV= 9dafddbe788752e5dff3eac1bcf8e6b8cd35064b15f05d2b +CT= 76ae360fd2d50ed19fa3c9802663ae7b58c7d69d287b08d7 +PT= e0bcf064b132cfd759c0392f70c3ebe17bb7b99a3bda9fb7 +TEST= 10 +KEY= eff8cbd86d249d9f09515c8b18c3ddb6d5798fbea323702d5ef76a918d0b3a99 +IV= be519f0c648336ba0c9f4a72ff74f20b1f167731fd15df92 +CT= e0bcf064b132cfd759c0392f70c3ebe17bb7b99a3bda9fb7 +PT= 6840b18f575bf11ed36c65e3845fed1b4210cbcdaf90c3c5 +TEST= 11 +KEY= c300b99dd6f405816111ed044f982ca80615ea5d277c9d361ce7a15c229bf95c +IV= c63d1aca61b30cd825ee029f85883aaa2cf87245bbd0981e +CT= 6840b18f575bf11ed36c65e3845fed1b4210cbcdaf90c3c5 +PT= 72181789fc546fba2c621ddaca91d4703f962bd18483cea5 +TEST= 12 +KEY= 35e295f9a7597c8b1309fa8db3cc43122a77f787eded494623718a8da61837f9 +IV= e1871ef0abe43e19754fc16e38a9660bf6e22c6471ad790a +CT= 72181789fc546fba2c621ddaca91d4703f962bd18483cea5 +PT= 060a95a800569eea0628ecceb9be32deb194ba0886a2756c +TEST= 13 +KEY= 6d5e347c205dc0a815036f25b39addf82c5f1b4954537b9892e5308520ba4295 +IV= 04f0ae7f32b8fe95a00e86133c629eec58bca1858704bc23 +CT= 060a95a800569eea0628ecceb9be32deb194ba0886a2756c +PT= 7b7ed12fe046267b4bc04d7fd189d8da0264130b8e21e388 +TEST= 14 +KEY= 0ffc1f35271ed7fd6e7dbe0a53dcfb83679f563685daa3429081238eae9ba11d +IV= 579855905b587df4d38a89d04221190562a22b4907431755 +CT= 7b7ed12fe046267b4bc04d7fd189d8da0264130b8e21e388 +PT= 9e0dab4b4a8783ee99d4c7ae2d3aa7c0af20cc62dd87bc16 +TEST= 15 +KEY= 51d79db8deeb1b6cf0701541195b786dfe4b9198a8e004823fa1efec731c1d0b +IV= 63b2732501a91d6ea240600188bacf525e2b828df9f5cc91 +CT= 9e0dab4b4a8783ee99d4c7ae2d3aa7c0af20cc62dd87bc16 +PT= af0bade3a7fa8222c516c675b617d6dd1fcc936a9f64f593 +TEST= 16 +KEY= 18325ed18dbf4aeb5f7bb8a2bea1fa4f3b5d57ed1ef7d25f206d7c86ec78e898 +IV= 55657c822e31042ebe2869a14c159f7649e5c36953545187 +CT= af0bade3a7fa8222c516c675b617d6dd1fcc936a9f64f593 +PT= ef9f655a8bdbc954e9c8436d97858e239702d79410347abd +TEST= 17 +KEY= 108af2bbb9fde29fb0e4ddf8357a331bd295148089725c7cb76fab12fc4c9225 +IV= e500844288535da15db5bc290cf84b1708b8ac6a3442a874 +CT= ef9f655a8bdbc954e9c8436d97858e239702d79410347abd +PT= 9a0f70a8658b03846409cbef33866ad9ec99ea8b05ffe365 +TEST= 18 +KEY= a795856a9dafb4732aebad5050f1309fb69cdf6fbaf436a55bf64199f9b37140 +IV= c6357b77720fbe319764a6b15c7cdc6eb71f77d1245256ec +CT= 9a0f70a8658b03846409cbef33866ad9ec99ea8b05ffe365 +PT= 82ff99a713cfa0d495c06e1fb74d05be0e916c3399754e3f +TEST= 19 +KEY= 67c33454b6baa91fa81434f7433e904b235cb1700db9331b55672daa60c63f7f +IV= 0823b534049eb4d70cd13bff23f5820cc056b13e2b151d6c +CT= 82ff99a713cfa0d495c06e1fb74d05be0e916c3399754e3f +PT= d814fe404b3fe032d0aea475855ef33b6b4bf7c3f099095a +TEST= 20 +KEY= 720fa594aade4c707000cab708017079f3f2150588e7c0203e2cda69905f3625 +IV= 0fc5bbf28693313722c4b9e9d02e767b15cc91c01c64e56f +CT= d814fe404b3fe032d0aea475855ef33b6b4bf7c3f099095a +PT= fffc0086a73bd200c42850cbb6b75556ad6d857d038d5157 +TEST= 21 +KEY= d990a7b449dedfa98ffcca31af3aa27937da45ce3e50957693415f1493d26772 +IV= 68b8d59df81c4c4a5a0095f9aecedb19ab9f0220e30093d9 +CT= fffc0086a73bd200c42850cbb6b75556ad6d857d038d5157 +PT= af67c27182c05a3f1ef4dfddbf13c064e960c20422d78745 +TEST= 22 +KEY= ac145328c02cca6d209b08402dfaf846292e9a13814355127a219d10b105e037 +IV= 35f461093b48df37f0fb2774447629f27584f49c89f215c4 +CT= af67c27182c05a3f1ef4dfddbf13c064e960c20422d78745 +PT= aec3b6816d62d587681eab66b129278c109429302411b4b9 +TEST= 23 +KEY= 1c3fd56b77e68d6e8e58bec140982dc141303175306a729e6ab5b4209514548e +IV= c4bc45445d9ec1451f7c98e9d09ce085b02b8643b7ca4703 +CT= aec3b6816d62d587681eab66b129278c109429302411b4b9 +PT= d734ffd7c9114a10c3e2b09e3e0f5ad38b4ddc8de392604d +TEST= 24 +KEY= 984f712ba89efc75596c4116898967d182d281eb0e65284de1f868ad768634c3 +IV= 4aee58c7134f27097484f30f7bcbc7c48470a440df78711b +CT= d734ffd7c9114a10c3e2b09e3e0f5ad38b4ddc8de392604d +PT= dd19ff68156591b368c20388b439b019a0ef76fad58e9ceb +TEST= 25 +KEY= 31eb608497192aed8475be7e9cecf662ea108263ba5c985441171e57a308a828 +IV= 05e4259fc42338d166ea13844e5b09ada9a411af3f87d698 +CT= dd19ff68156591b368c20388b439b019a0ef76fad58e9ceb +PT= 6028de37930a71702fd1a8dce643951071543648b109f6a6 +TEST= 26 +KEY= eaa8a981fab26517e45d60490fe68712c5c12abf5c1f0d443043281f12015e8e +IV= bd54d57198fcb0e38e216831fc05e460db43c9056dab4ffa +CT= 6028de37930a71702fd1a8dce643951071543648b109f6a6 +PT= 8f39d17cd7285c7177b9b19f6fc001f858d997c8851f0af3 +TEST= 27 +KEY= 96f0ae2924d26abc6b64b135d8cedb63b2789b2033df0cbc689abfd7971e547d +IV= befeb3f9cf92bfb6d3076f5c96e5b9297c5807a8de600fab +CT= 8f39d17cd7285c7177b9b19f6fc001f858d997c8851f0af3 +PT= ef727fa31e8e81de4d85c78e718094a7941124aa3066a2ad +TEST= 28 +KEY= 480781f09f9c006f8416ce96c6405abdfffd5cae425f981bfc8b9b7da778f6d0 +IV= f53e1501baf42701810235bbc001b312def72fd9bb4e6ad3 +CT= ef727fa31e8e81de4d85c78e718094a7941124aa3066a2ad +PT= e1e2232ed462ca14d95b9c5b4ba7d802548b94c3eb87c6e2 +TEST= 29 +KEY= c5cf87bc7a51cc5665f4edb8122290a926a6c0f509f84019a8000fbe4cff3032 +IV= b0a8b5785d03fd5c2b3520e404dea6638dc8064ce5cdcc39 +CT= e1e2232ed462ca14d95b9c5b4ba7d802548b94c3eb87c6e2 +PT= 858d59d53c32ca9dfc5d9bae71fc90acf77d54aeaf14c22d +TEST= 30 +KEY= d47da263d8fa9139e079b46d2e105a34dafb5b5b7804d0b55f7d5b10e3ebf21f +IV= 73c9ad6959f6c21a554f59e0c3a1459411b225dfa2ab5d6f +CT= 858d59d53c32ca9dfc5d9bae71fc90acf77d54aeaf14c22d +PT= 98e5a671ccf9da7e23053c246e5f5d7235060e89e8e0d816 +TEST= 31 +KEY= 740de4c63fa497ef789c121ce2e9804af9fe677f165b8dc76a7b55990b0b2a09 +IV= fb50367932abbc90136540d7222d8ac1a07046a5e75e06d6 +CT= 98e5a671ccf9da7e23053c246e5f5d7235060e89e8e0d816 +PT= e86df0367fd20c571ffdc93e38e1048c858a3d521d37196c +TEST= 32 +KEY= b90724c49c2199d490f1e22a9d3b8c1de603ae412eba894beff168cb163c3365 +IV= afc906fab2a6c118c0780d4e0db45426cd0ac002a3850e3b +CT= e86df0367fd20c571ffdc93e38e1048c858a3d521d37196c +PT= 832f2c3689567c5b3acc7df6856b649af928603d68a940ae +TEST= 33 +KEY= 4a978d2591b2e5d413dece1c146df046dccfd3b7abd1edd116d908f67e9573cb +IV= 2aad317fac89c46a1d3ce1c571fb96e5f390a9e10d937c00 +CT= 832f2c3689567c5b3acc7df6856b649af928603d68a940ae +PT= a4fd3d4c24934773e636185a9cc63aa2fd5518d04f70df3a +TEST= 34 +KEY= 74649cedf7a18de8b723f35030feb7353af9cbed3717d773eb8c102631e5acf1 +IV= dff8f1eb4bae20c04550847f626d5d0b3ef311c86613683c +CT= a4fd3d4c24934773e636185a9cc63aa2fd5518d04f70df3a +PT= 9d35f5eaf1fffef0b9ee23bc691d54e402ada437c7e7b5c4 +TEST= 35 +KEY= 354b52df2f674c172a1606bac10149c58317e8515e0a8397e921b411f6021935 +IV= 93b9027d8eb498e8137900586f98e361412fce32d8c6c1ff +CT= 9d35f5eaf1fffef0b9ee23bc691d54e402ada437c7e7b5c4 +PT= a8d398be9cbdc30813addd92c4aeeaeda4611c59094d68a3 +TEST= 36 +KEY= ab067298cb4d246282c59e045dbc8acd90ba35c39aa4697a4d40a848ff4f7196 +IV= 2eb67f8b699b37d865578eb4126bb3399e4d2047e42a6875 +CT= a8d398be9cbdc30813addd92c4aeeaeda4611c59094d68a3 +PT= 6c8960c8f1875972d10018eaf2bcffc285288dc59f3dbad2 +TEST= 37 +KEY= f82f757c74adb6c6ee4cfeccac3bd3bf41ba2d29681896b8c868258d6072cb44 +IV= 3bce40fc7b13634857184df9ab299391532907e4bfe092a4 +CT= 6c8960c8f1875972d10018eaf2bcffc285288dc59f3dbad2 +PT= 8dbc9c9dcd58fe661cd6c8446075e0ead60cfc4312273630 +TEST= 38 +KEY= e6725d912273f49e63f0625161632dd95d6ce56d086d76521e64d9ce7255fd74 +IV= 2e745ecfc889291bd3ccd1c1834bfd3e1e5d28ed56de4258 +CT= 8dbc9c9dcd58fe661cd6c8446075e0ead60cfc4312273630 +PT= 1b4531acc97d964b9cca4f43439dd38deff8fdb4e5099618 +TEST= 39 +KEY= 518d5a622acf3d4e78b553fda81ebb92c1a6aa2e4bf0a5dff19c247a975c6b6c +IV= baa0d394eafbcf46ae5157b9fe7b4a51b7ff07f308bcc9d0 +CT= 1b4531acc97d964b9cca4f43439dd38deff8fdb4e5099618 +PT= f565d808949a3bcb260a61dccb58505dd5a9aa3c03344297 +TEST= 40 +KEY= 0f7e17e97154d6948dd08bf53c848059e7accbf280a8f58224358e46946829fb +IV= d122a8f8d989621db22fe1aa2665bedb5ef34d8b5b9bebda +CT= f565d808949a3bcb260a61dccb58505dd5a9aa3c03344297 +PT= 485b65e97c8df16c65d81417bf3f9973176fa9df5dccec1c +TEST= 41 +KEY= 635b8b635fd235cfc58bee1c400971358274dfe53f976cf1335a2799c9a4c5e7 +IV= 28c369d22a3528bc326cff47e5b17fdf6c259c8a2e86e35b +CT= 485b65e97c8df16c65d81417bf3f9973176fa9df5dccec1c +PT= 3de0c6787cad8ebea796b7955bb29a43e5bcb46605ee0192 +TEST= 42 +KEY= abee09bc2e21d694f86b28643ca4ff8b25e268706425f6b2d6e693ffcc4ac475 +IV= feaa5f001d2e124041cb2ef0243e9862c8b582df71f3e35b +CT= 3de0c6787cad8ebea796b7955bb29a43e5bcb46605ee0192 +PT= b27db671ff78e225c365ee11334c197388bd73ef99a2f897 +TEST= 43 +KEY= 268060be9c4786af4a169e15c3dc1daee68786615769efc15e5be01055e83ce2 +IV= 1783816cf9bf8390449f2b9be183f3dc8d6e6902b266503b +CT= b27db671ff78e225c365ee11334c197388bd73ef99a2f897 +PT= 02b0d5d841acc7fafe857027e9a27cdb9fb536ad7d1dbe88 +TEST= 44 +KEY= 030836350d18c4fa48a64bcd8270da541802f646becb931ac1eed6bd28f5826a +IV= 5f74a82dcdf4965a48e1c93a9c32015a2588568b915f4255 +CT= 02b0d5d841acc7fafe857027e9a27cdb9fb536ad7d1dbe88 +PT= 26787a4a4dccd8f25ece676850337c4ec91920fd141b3c70 +TEST= 45 +KEY= 4f2e09f644454a1f6ede3187cfbc02a646cc912eeef8ef5408f7f6403ceebe1a +IV= 168d3cb3146f76c45eda29c9a0b34a614c263fc3495d8ee5 +CT= 26787a4a4dccd8f25ece676850337c4ec91920fd141b3c70 +PT= f2ce44f72f413809336f8a91dac5f00a64cf9d373c020946 +TEST= 46 +KEY= 4622a29db10f16ec9c107570e0fd3aaf75a31bbf343d1f5e6c386b7700ecb75c +IV= 213d91edba6822a1f0b5f29e4720a18f090cab6bf54a5cf3 +CT= f2ce44f72f413809336f8a91dac5f00a64cf9d373c020946 +PT= 524ed0eef5da302699f8048ef8d39041c7c67b4ccf0a1027 +TEST= 47 +KEY= 170124a92cd82a49ce5ea59e15270a89ec5b1f31ccee8f1fabfe103bcfe6a77b +IV= a4fd474aa430a3c59f94d95bc2e04e50512386349dd73ca5 +CT= 524ed0eef5da302699f8048ef8d39041c7c67b4ccf0a1027 +PT= 3cfc4c2c1e916febd6754d3434eb9903171b7693782ec6de +TEST= 48 +KEY= 411fe4eb2e8ec2daf2a2e9b20bb665623a2e5205f805161cbce566a8b7c861a5 +IV= 1c8b097ab8d5401f9eb500526e324256561ec0420256e893 +CT= 3cfc4c2c1e916febd6754d3434eb9903171b7693782ec6de +PT= 0ffce7e0c26edd22e732e4727c6b366f4f24294f15f78f30 +TEST= 49 +KEY= 09de0f14fc7d89e8fd5e0e52c9d8b840dd1cb677846e2073f3c14fe7a23fee95 +IV= 211369b388fbf790eec62a5f2e51688448c1ebffd2f34b32 +CT= 0ffce7e0c26edd22e732e4727c6b366f4f24294f15f78f30 +PT= 0e4fa1ef38d1fa9724c57db7478c3a75249370bd20a88036 +TEST= 50 +KEY= fddb8c47de99fd00f311afbdf10942d7f9d9cbc0c3e21a06d7523f5a82976ea3 +IV= 9a73aa335e13e44a88eb35989998c4e0f405835322e474e8 +CT= 0e4fa1ef38d1fa9724c57db7478c3a75249370bd20a88036 +PT= d37eb749301e230476350f0f1d821457f112bdcb36300911 +TEST= 51 +KEY= b7872839ecad4500206f18f4c11761d38fecc4cfde600e5126408291b4a767b2 +IV= a595dc6f9fc7d6a7a942d14a6ddab24d4a5ca47e3234b800 +CT= d37eb749301e230476350f0f1d821457f112bdcb36300911 +PT= 0ba69141bf7858657ced70ad0db60079c0d89f5a22495c9b +TEST= 52 +KEY= ce80a2e7ad1f04712bc989b57e6f39b6f301b462d3d60e28e6981dcb96ee3b29 +IV= 6f3ca5458cede74c744dbd81e9bf5b3479078ade41b24171 +CT= 0ba69141bf7858657ced70ad0db60079c0d89f5a22495c9b +PT= be1092ef052ddb389a53216e0565dfe5cab79ad285f74fcd +TEST= 53 +KEY= 90fc8063277eddf895d91b5a7b42e28e6952950cd6b3d1cd2c2f8719131974e4 +IV= beaf264de7b4b75e1061f4b929012b0e5e7c22848a61d989 +CT= be1092ef052ddb389a53216e0565dfe5cab79ad285f74fcd +PT= d70491e76f04c5154de5ca4fa3872e063d3a42cf160ca245 +TEST= 54 +KEY= 722880bc07115afe42dd8abd1446279b24b75f437534ffcb1115c5d60515d6a1 +IV= 360c04ee85f52ab1f7c962c022763664e2d400df206f8706 +CT= d70491e76f04c5154de5ca4fa3872e063d3a42cf160ca245 +PT= 654df2777b285616d0d868d1ccb95189812d61faf1fee868 +TEST= 55 +KEY= 84e7b454acf90fe8279078ca6f6e718df46f3792b98dae429038a42cf4eb3ec9 +IV= 8c6f6295f0d1ade40d6c207ac3d0fe5ff6cf34e8abe85516 +CT= 654df2777b285616d0d868d1ccb95189812d61faf1fee868 +PT= 4ea3437a86644d7ca1a8ee568a58a76e43c649a14587e731 +TEST= 56 +KEY= a9a584e10483e41569333bb0e90a3cf155c7d9c433d5092cd3feed8db16cd9f8 +IV= 22d48a8ff4e6b87630e6e50a445e9e6e2d4230b5a87aebfd +CT= 4ea3437a86644d7ca1a8ee568a58a76e43c649a14587e731 +PT= b372cc4716abe21dc9c7358b7cd3d74adab904ca1bc34e23 +TEST= 57 +KEY= 7d8f35399d97b819da41f7f7ffa1deec9c00ec4f4f06de660947e947aaaf97db +IV= 4adc0f6bbdd763c713e2ae861a62b929d42ab1d899145c0c +CT= b372cc4716abe21dc9c7358b7cd3d74adab904ca1bc34e23 +PT= 009883567fb22582c4fe2176ec49eb908ff4eb89062efaeb +TEST= 58 +KEY= 4b6a8b8c0e35a4f6dad974a18013fb6e58fecd39a34f35f686b302ceac816d30 +IV= 0cbf3f5ad208576aed310b074958768836e5beb593a21cef +CT= 009883567fb22582c4fe2176ec49eb908ff4eb89062efaeb +PT= e4341da50e092b48339aeaed3e76ec250fdfc95243730c33 +TEST= 59 +KEY= f51779cec02dd9003eed69048e1ad0266b6427d49d39d9d3896ccb9ceff26103 +IV= e1e6d8251255db1529effd41eed01988be7df242ce187df6 +CT= e4341da50e092b48339aeaed3e76ec250fdfc95243730c33 +PT= 5ef678114fd1f2bd42ddea7ae73ce7f05c7e896024723cd3 +TEST= 60 +KEY= cad90cc87bc06fd0601b1115c1cb229b29b9cdae7a053e23d51242fccb805dd0 +IV= 06223907eee9b9b358083bb5a3a200e73fce7506bbedb6d0 +CT= 5ef678114fd1f2bd42ddea7ae73ce7f05c7e896024723cd3 +PT= 1b7de355395740249cc1df1eaf560b32fd4cbeb07c02c656 +TEST= 61 +KEY= e2ebfd42f15227d07b66f240f89c62bfb57812b0d5533511285efc4cb7829b86 +IV= e41df4cfacdc1399093eab1af89a9e572832f18a8a924800 +CT= 1b7de355395740249cc1df1eaf560b32fd4cbeb07c02c656 +PT= bce61903e3321772c50bc3af90798193ecf9735218da6df4 +TEST= 62 +KEY= b0f4802fede7c6edc780eb431bae75cd7073d11f452ab482c4a78f1eaf58f672 +IV= c4d896a4e99eafddc8899ba08c55af19521f7d6d1cb5e13d +CT= bce61903e3321772c50bc3af90798193ecf9735218da6df4 +PT= 7491df0691453748b9d44a056e14c918bbb230a464b0a534 +TEST= 63 +KEY= b3fe7eb0abd5b7dfb31134458aeb4285c9a79b1a2b3e7d9a7f15bfbacbe85346 +IV= 7c878a93921d682dd19dea51a1223c39030afe9f46327132 +CT= 7491df0691453748b9d44a056e14c918bbb230a464b0a534 +PT= 2a2dc851c52abb38229662a9ffec982a21e3b5dec6dfa652 +TEST= 64 +KEY= 1dcf388dcedff38a993cfc144fc1f9bdeb31f9b3d4d2e5b05ef60a640d37f514 +IV= 50f4c75ef9b49b513db92f5dd7304c1dae31463d650a4455 +CT= 2a2dc851c52abb38229662a9ffec982a21e3b5dec6dfa652 +PT= 51b88baaaf1c6e4e0d9c4254e0f14fafd5130a25f4701a88 +TEST= 65 +KEY= fdd2515d7b3c5effc88477bee0dd97f3e6adbbe73423aa1f8be50041f947ef9c +IV= 68114d1b0d39f5f1fbaafd16985e4161e01d69d0b5e3ad75 +CT= 51b88baaaf1c6e4e0d9c4254e0f14fafd5130a25f4701a88 +PT= 5e912c35e2d0d97b5cc7dee4b1d2e51a496c07f98258493f +TEST= 66 +KEY= 3eb2aa359a621eab96155b8b020d4e88ba6a650385f14f05c28907b87b1fa6a3 +IV= 2299f5a12c1b85457d1d3386111c6595c360fb68e15e4054 +CT= 5e912c35e2d0d97b5cc7dee4b1d2e51a496c07f98258493f +PT= 75280e696b1c8a4a5a8c0cc715b3772d02a8bd5ca5ddd390 +TEST= 67 +KEY= bfe076993badbaf1e33d55e26911c4c2e0e669c490423828c021bae4dec27533 +IV= 8277e48774b3c41d832d6f8fcd50f9b58152dcaca1cfa45a +CT= 75280e696b1c8a4a5a8c0cc715b3772d02a8bd5ca5ddd390 +PT= 76631b4f9f39a71f1996a1d21088ed6848a583c4af9c9a5b +TEST= 68 +KEY= 2d1a21c19e437bfc955e4eadf62863ddf970c81680cad54088843920715eef68 +IV= 7232daa2be3793a619f087b85606267792fa5758a5eec10d +CT= 76631b4f9f39a71f1996a1d21088ed6848a583c4af9c9a5b +PT= 0b7c6abbd3e0f8918a40a41c3f843dfff4696d1dd3375551 +TEST= 69 +KEY= 53bb749ff65869059e22241625c89b4c73306c0abf4ee8bf7ced543da269ba39 +IV= e0bb969019b49ef9e777aaa9c50a8d7e7ea1555e681b12f9 +CT= 0b7c6abbd3e0f8918a40a41c3f843dfff4696d1dd3375551 +PT= 27497f4ad45247f7cae9b71b38c3ec2cd73f2c5206b3ae52 +TEST= 70 +KEY= 0027b24752329588b96b5b5cf19adcbbb9d9db11878d0493abd2786fa4da146b +IV= ef0a06d67d50ee5abe254b93c466d7f0539cc6d8a46afc8d +CT= 27497f4ad45247f7cae9b71b38c3ec2cd73f2c5206b3ae52 +PT= 15e045a1116db28d35167784f5ad1a618459d006d59c2b2f +TEST= 71 +KEY= 56b122274a74d58bac8b1efde0f76e368ccfac9572201ef22f8ba86971463f44 +IV= a604ac4fe4970c666c2f2b00b90abe4b5696906018464003 +CT= 15e045a1116db28d35167784f5ad1a618459d006d59c2b2f +PT= 493267df89eaafcc7e382984641c81700d352b2a28cc02f7 +TEST= 72 +KEY= 795d47e11cabfb9ae5b97922691dc1faf2f78511163c9f8222be8343598a3db3 +IV= 84f26afd537196b776b78df4aab6d68a2fec65c656df2e11 +CT= 493267df89eaafcc7e382984641c81700d352b2a28cc02f7 +PT= db26394f80504ff754af8994fab4d0e07bc8f8ce73360553 +TEST= 73 +KEY= 9ae50c7afdf7fd963e9f406de94d8e0da6580c85ec884f6259767b8d2abc38e0 +IV= 4e843bdf64c65c49eca9a99e04e36d71e3b84b9be15c060c +CT= db26394f80504ff754af8994fab4d0e07bc8f8ce73360553 +PT= c68a0fe486b45ff5e856e16819940554a110703dc7127131 +TEST= 74 +KEY= 7305e55d5f4a0967f8154f896ff9d1f84e0eededf51c4a36f8660bb0edae49d1 +IV= e8569ac74b8459f1767813e909ea16f0e9e0e927a2bdf4f1 +CT= c68a0fe486b45ff5e856e16819940554a110703dc7127131 +PT= cf491e54256bd02df3f30e2293daf23cb2284bbab7a459f6 +TEST= 75 +KEY= 68b3c001cce5fa87375c51dd4a9201d5bdfde3cf66c6b80a4a4e400a5a0a1027 +IV= c5be79c828cff79c436956cf90bc0e201bb6255c93aff3e0 +CT= cf491e54256bd02df3f30e2293daf23cb2284bbab7a459f6 +PT= 38b78252ee0911551897875bd3707420e4f143882a067259 +TEST= 76 +KEY= 29b69d70969eb2110febd38fa49b1080a56a6494b5b6cc2aaebf0382700c627e +IV= c51fe10c601ff17cb97e8fbe02c0511741055d715a7b4896 +CT= 38b78252ee0911551897875bd3707420e4f143882a067259 +PT= eb25000d317442b90c10f8f43d380262170b6b1fb60ce501 +TEST= 77 +KEY= c66e8019c41eea5fe4ced38295ef5239a97a9c60888ece48b9b4689dc600877f +IV= c38c59596edb09b5e28ae7f3d9ee2961efd81d695280584e +CT= eb25000d317442b90c10f8f43d380262170b6b1fb60ce501 +PT= ab5639ece0fe9da52e839132d970033e7666d92af94491a1 +TEST= 78 +KEY= 7e52e03a583c08ff4f98ea6e7511cf9c87f90d5251fecd76cfd2b1b73f4416de +IV= 57fb84f643a3c17654d2c91bac980821b83c60239c22e2a0 +CT= ab5639ece0fe9da52e839132d970033e7666d92af94491a1 +PT= 3bb352aa8066c65e3cb9868b5ffef539657c8a010a2b7258 +TEST= 79 +KEY= 2bef1e36fa9c20a6742bb8c4f57709c2bb408bd90e00384faaae3bb6356f6486 +IV= 6f6b0dae43c653814c4e2f6c77efd85d55bdfe0ca2a02859 +CT= 3bb352aa8066c65e3cb9868b5ffef539657c8a010a2b7258 +PT= 084dd64273146b216628442d806dd1adba56c284fe6a8ffd +TEST= 80 +KEY= 617eecf5c4e383207c666e86866362e3dd68cff48e6de9e210f8f932cb05eb7b +IV= 232e3ae12979834f115b35b760c4de9b4a91f2c33e7fa386 +CT= 084dd64273146b216628442d806dd1adba56c284fe6a8ffd +PT= d4d1d465f63eb8a2646bc20ddff02cc1e4d38311039752fb +TEST= 81 +KEY= ddae3851b8d67b8ea8b7bae3705dda41b9030df9519dc523f42b7a23c892b980 +IV= cd1a8d8c94a397fe884c70f08e755df8bcd0d4a47c35f8ae +CT= d4d1d465f63eb8a2646bc20ddff02cc1e4d38311039752fb +PT= 195f43c26b74fa6402277dab5d369c2df7d20927533519e0 +TEST= 82 +KEY= 8f64ddb906870244b1e8f9211b292025bb2470520cab590e03f973049ba7a060 +IV= af3c37931b9cf5b22bea61879a1fbc4b52cae5e8be5179ca +CT= 195f43c26b74fa6402277dab5d369c2df7d20927533519e0 +PT= 8bbefaaa6f54f0454c8bea417891ca4373495dc72e3f2cb1 +TEST= 83 +KEY= c1830c13e4a5865e3a56038b747dd060f7af9a13743a934d70b02ec3b5988cd1 +IV= 384dd1337a2a006c95dd03b772ffda034ee7d1aae222841a +CT= 8bbefaaa6f54f0454c8bea417891ca4373495dc72e3f2cb1 +PT= 6c41b1e084e5aaf6ba835c9661ef255fc45ef3e049341679 +TEST= 84 +KEY= dece35be5429ecfa5617b26bf0987a964d2cc68515d5b612b4eedd23fcac9aa8 +IV= 45acc738e6862c43b1f5ad3b66263c891f4d39adb08c6aa4 +CT= 6c41b1e084e5aaf6ba835c9661ef255fc45ef3e049341679 +PT= bc9ddb852ea292a7b417439ea74461439909de592386eb61 +TEST= 85 +KEY= 1dafac9a1201827cea8a69eede3ae831f93b851bb291d7512de7037adf2a71c9 +IV= 7bf7da0d96473d564df9579b89d0d286c361992446286e86 +CT= bc9ddb852ea292a7b417439ea74461439909de592386eb61 +PT= b55a766ab5ab4e591c19914e7ee4a1c53bdc5878e8d202c9 +TEST= 86 +KEY= 9d6364ce674ea1275fd01f846b91a668e5221455cc757694163b5b0237f87300 +IV= 7102e069fb7a7efe2d9dd0e658b3826680ccc854754f235b +CT= b55a766ab5ab4e591c19914e7ee4a1c53bdc5878e8d202c9 +PT= c15366b1f7319ef0efd1c30e954758c88c278ffe2637b0d0 +TEST= 87 +KEY= 07b199eba86d20d09e8379359ca038980af3d75b59322e5c9a1cd4fc11cfc3d0 +IV= 22b1e448918fca44523ccfdc16bd64919ad2fd25cf2381f7 +CT= c15366b1f7319ef0efd1c30e954758c88c278ffe2637b0d0 +PT= 6348a6864b534319b204b05ae626cb14e94e3140f71386d8 +TEST= 88 +KEY= cadb660025904aeafdcbdfb3d7f37b81b8f76701bf14e5487352e5bce6dc4508 +IV= b14788d399e6c226297920bd9c3eb767cd6affeb8dfd6a3a +CT= 6348a6864b534319b204b05ae626cb14e94e3140f71386d8 +PT= fab1a489e883eb823b67b566117527a1aff5f0d7f3311c8b +TEST= 89 +KEY= 18b8b5a346bf3244077a7b3a3f7090038390d267ae61c2e9dca7156b15ed5983 +IV= 4db36ec892f679f7dd6fb0869be2fab0d263d3a3632f78ae +CT= fab1a489e883eb823b67b566117527a1aff5f0d7f3311c8b +PT= fc82ec61de739d2c35a087ff4cbe50fb01535344b4663ccb +TEST= 90 +KEY= 57a2c924b393d35dfbf8975be1030d2fb6305598e2df9212ddf4462fa18b6548 +IV= dd3f5118a44bb5d52c49c290616344dc4f1a7c87f52ce119 +CT= fc82ec61de739d2c35a087ff4cbe50fb01535344b4663ccb +PT= aca62772ab626b6e34856487639dbb3550597c42c8b3cd7d +TEST= 91 +KEY= a722823b5b274b0e575eb0294a61664182b5311f814229278dad3a6d6938a835 +IV= a92679d47f6be0eb78768ad74de91567f0804b1fe8b49853 +CT= aca62772ab626b6e34856487639dbb3550597c42c8b3cd7d +PT= a27b130a9d8f1e4a617620b448e98e85097e7de38c6771fb +TEST= 92 +KEY= 29a4fe1f43ff1418f525a323d7ee780be3c311abc9aba7a284d3478ee55fd9ce +IV= 3dea78e6e9b851730d8a93266f54ea698e867c2418d85f16 +CT= a27b130a9d8f1e4a617620b448e98e85097e7de38c6771fb +PT= e94fe746bd9571128505d66833eb298681669c605a60215f +TEST= 93 +KEY= 7eacdaa6c6b244f41c6a44656a7b091966c6c7c3fa408e2405b5dbeebf3ff891 +IV= e6f63482c9dd08da92bf03a0dd2c5508570824b9854d50ec +CT= e94fe746bd9571128505d66833eb298681669c605a60215f +PT= a90aad8f347459ec9be5dadcf1bfc35c7e5aeaed60ead1ac +TEST= 94 +KEY= 0262e44c06944ce8b560e9ea5e0f50f5fd231d1f0bff4d787bef3103dfd5293d +IV= 23b784706717b4dec4067db2521b74397cce3eeac026081c +CT= a90aad8f347459ec9be5dadcf1bfc35c7e5aeaed60ead1ac +PT= 8094a85870f9f24f3810abe9c00369faff7d676f2625d510 +TEST= 95 +KEY= 7a76a47c5f2e458e35f441b22ef6a2bac533b6f6cbfc24828492566cf9f0fc2d +IV= 8ff62680eefa37dccd0ad86b3ac24cb17814403059ba0966 +CT= 8094a85870f9f24f3810abe9c00369faff7d676f2625d510 +PT= bb7c8c92e5a2d9fadf164f2ddf21e018f922e3fa62d6ead2 +TEST= 96 +KEY= 3bd0dfca965f6fbc8e88cd20cb547b401a25f9db14ddc49a7db0b5969b2616ff +IV= 054387c893de95b4d18af29fabf085b741a67bb6c9712a32 +CT= bb7c8c92e5a2d9fadf164f2ddf21e018f922e3fa62d6ead2 +PT= bc3f88c5b7079e338cc31fac6e286c9245a65e02ae0525e7 +TEST= 97 +KEY= 1c35072e543e60a732b745e57c53e57396e6e6777af5a8083816eb9435233318 +IV= 0c8b8fd31a78b3a1abae545edcbd358a27e5d8e4c2610f1b +CT= bc3f88c5b7079e338cc31fac6e286c9245a65e02ae0525e7 +PT= 5ca8e5d25c03e3330bf30cad2703da5f74bb4e396fb80f9c +TEST= 98 +KEY= 06772b685301b0746e1fa037205006409d15eada5df672574cada5ad5a9b3c84 +IV= 9bcf5ca162acf238725e1334585761b81a422c46073fd0d3 +CT= 5ca8e5d25c03e3330bf30cad2703da5f74bb4e396fb80f9c +PT= 68d9df780a46358eb804a59163615f644503cf2bed715446 +TEST= 99 +KEY= 046ed076ad66500906c67f4f2a1633ce25114f4b3e972d3309ae6a86b7ea68c2 +IV= 32844b75e1517c50be28066da39471200219fb1efe67e07d +CT= 68d9df780a46358eb804a59163615f644503cf2bed715446 +PT= 5c2de19f6c096286cdb931a1aeffdf55eb52de07c5507e87 +TEST= 100 +KEY= 51311afd0f991aa05aeb9ed0461f5148e8a87eea9068f266e2fcb48172ba1645 +IV= 9d96a610525ee54e13864b894e941725555fca8ba2ff4aa9 +CT= 5c2de19f6c096286cdb931a1aeffdf55eb52de07c5507e87 +PT= 99280a79acb676709c4df3c1d56dfadee8117723ba731608 +TEST= 101 +KEY= 27971039cdccda3fc3c394a9eaa9273874e58d2b450508b80aedc3a2c8c9004d +IV= 75a32f44c513b197697b8b012614c0d676a60ac4c255c09f +CT= 99280a79acb676709c4df3c1d56dfadee8117723ba731608 +PT= 4d17d1f7f427f3a7d3a800dcf948bebe81f5304359ccab2d +TEST= 102 +KEY= b18843220549da868ed4455e1e8ed49fa74d8df7bc4db6068b18f3e19105ab60 +IV= f9ce8811bea03a2022e5f088fdea1934961f531bc88500b9 +CT= 4d17d1f7f427f3a7d3a800dcf948bebe81f5304359ccab2d +PT= 35301cdcffbf52d351d2dce10fd526efb0c004a7ccc840ea +TEST= 103 +KEY= 131dce5c3440bcd1bbe45982e131864cf69f5116b39890e93bd8f7465dcdeb8a +IV= bc2a477ffbf8f7d15ea7a0c98845476aa2958d7e31096657 +CT= 35301cdcffbf52d351d2dce10fd526efb0c004a7ccc840ea +PT= 18398a11e3ed854f13e03936450916e68f613c9739f5acc1 +TEST= 104 +KEY= e11dc6d4f1eff553a3ddd39302dc0303e57f6820f691860fb4b9cbd16438474b +IV= 62f862cfb592b6ab27467c6112edbbf4f2000888c5af4982 +CT= 18398a11e3ed854f13e03936450916e68f613c9739f5acc1 +PT= e9ff2af0af81fc711b9eb580fa9ff128d0e1969e91fb844d +TEST= 105 +KEY= c92ed73b51fbbc854a22f963ad5dff72fee1dda00c0e772764585d4ff5c3c306 +IV= 7ed548c5b42797abb60a007e2fa7cc06283311efa01449d6 +CT= e9ff2af0af81fc711b9eb580fa9ff128d0e1969e91fb844d +PT= f1ba691085c257d8dba48585bc024feb538f3e1e87eda8c7 +TEST= 106 +KEY= c6b1fdcff2fcd8acbb989073289fa8aa25455825b00c38cc37d76351722e6bc1 +IV= 043a49f663538c7641016c0723d178f90f9f2af4a3076429 +CT= f1ba691085c257d8dba48585bc024feb538f3e1e87eda8c7 +PT= 583d93a2e65c4640357c4bf2751001bbf1b20c84e5738664 +TEST= 107 +KEY= 272fe690bd165f9be3a503d1cec3eeea103913d7c51c3977c6656fd5975deda5 +IV= 1c88c668879d09c97921cfbcee7d3578e19e1b5f4fea8737 +CT= 583d93a2e65c4640357c4bf2751001bbf1b20c84e5738664 +PT= a0f6ab9ed47e55f973633ff89da2a50180a49a3a669ce634 +TEST= 108 +KEY= a691b73fb993020e4353a84f1abdbb13635a2c2f58be9c7646c1f5eff1c10b91 +IV= 31bcf397f0a63132f025800982147a4d81be51af04855d95 +CT= a0f6ab9ed47e55f973633ff89da2a50180a49a3a669ce634 +PT= 8fbf62223055bab08f880273bd4aff2d4c3bbbd3d39677d3 +TEST= 109 +KEY= 688266d26e6a8d3eccecca6d2ae801a3ecd22e5ce5f4635b0afa4e3c22577c42 +IV= 4b2bfa77552c8af77cae75eb77c30dbdce13d1edd7f98f30 +CT= 8fbf62223055bab08f880273bd4aff2d4c3bbbd3d39677d3 +PT= 3ccc685dcc4a2a9e3453fdf3d8dcc50d314b77fbe56480d8 +TEST= 110 +KEY= 9ce65f4e87894a3ff020a230e6a22b3dd881d3af3d28a6563bb139c7c733fc9a +IV= f20762ba491bc61a92f47324647658b3f464399ce9e3c701 +CT= 3ccc685dcc4a2a9e3453fdf3d8dcc50d314b77fbe56480d8 +PT= 2cbe3bbf79e0aea06d8340f30a0415a6c017e1b555ff3317 +TEST= 111 +KEY= bb9fc7eaa51e3ba1dc9e998f9f42859db502935c372cb3f0fba6d87292cccf8d +IV= 4997ea8a3db6948bb449ac98d744ffd8277998a42297719e +CT= 2cbe3bbf79e0aea06d8340f30a0415a6c017e1b555ff3317 +PT= 9bcb908b1f2dbe0a08a68521fbc840ad1a7e19552f2eb164 +TEST= 112 +KEY= d03d71bebc2b6fec47550904806f3b97bda4167dcce4f35de1d8c127bde27ee9 +IV= 70e1112bdcdac6ec70795a4b9e0a194c6ba2b6541935544d +CT= 9bcb908b1f2dbe0a08a68521fbc840ad1a7e19552f2eb164 +PT= 83e36c42382d6a186e4086bb73d79bcbd7642d377ef693e6 +TEST= 113 +KEY= e098f5d96d62f8a4c4b66546b842518fd3e490c6bf33689636bcec10c314ed0f +IV= 5c5b7a2127d9dcfddb51d0aaa6c2335a30a58467d1499748 +CT= 83e36c42382d6a186e4086bb73d79bcbd7642d377ef693e6 +PT= 6d029f8253690b1a40c75bdbd8ab6fdb464687c7408dca36 +TEST= 114 +KEY= 73817bc57a7a95d5a9b4fac4eb2b5a959323cb1d6798074d70fa6bd783992739 +IV= 801200b9ea055fadf299709dea69bd3d93198e1c17186d71 +CT= 6d029f8253690b1a40c75bdbd8ab6fdb464687c7408dca36 +PT= c16b8712d7e7fd150debfbb740e95bfca55f1f28b647c9c0 +TEST= 115 +KEY= 8b473cfb8258978868df7dd63ccca7809ec830aa27715cb1d5a574ff35deeef9 +IV= d1f08bf3b242813d37b4c513d2da1044f8c6473ef822025d +CT= c16b8712d7e7fd150debfbb740e95bfca55f1f28b647c9c0 +PT= b690335f6deb09e33e95e6db9afd77e8e49add933606669c +TEST= 116 +KEY= afa9705dd7948396de4f4e895127ae63a05dd671bd8c2b59313fa96c03d88865 +IV= 4afd8ca663c61873e564e2a38b55f81624ee4ca655cc141e +CT= b690335f6deb09e33e95e6db9afd77e8e49add933606669c +PT= 1cd479792a06faf95010d513a816e3b01a9c65ef63f43b60 +TEST= 117 +KEY= cd4fcc9736a56750c29b37f07b21549af04d0362159ac8e92ba3cc83602cb305 +IV= 3a511ae6f641d0ff41505c5fedc19b1e62e6bccae131e4c6 +CT= 1cd479792a06faf95010d513a816e3b01a9c65ef63f43b60 +PT= a533d56305f811d52bd2e1632484da97e68fea5051c563da +TEST= 118 +KEY= ef933912923e37e667a8e2937ed9454fdb9fe201311e127ecd2c26d331e9d0df +IV= dacf32f553d8cd0a9751ee88395d33e322dcf585a49b50b6 +CT= a533d56305f811d52bd2e1632484da97e68fea5051c563da +PT= d3d663d38455f0d90c1a5a49a92156a7ff8b396ef07ce020 +TEST= 119 +KEY= 8fa28bd2ba108a4fb47e8140fa8cb596d785b848983f44d932a71fbdc19530ff +IV= 2802958c8a3be2a98425ec6f1180a89c6031b2c0282ebda9 +CT= d3d663d38455f0d90c1a5a49a92156a7ff8b396ef07ce020 +PT= 7b1a663415fb20584dc39b34e42258073554c21e818043e8 +TEST= 120 +KEY= eb7a14720faf5d45cf64e774ef7795ce9a46237c7c1d1cde07f3dda340157317 +IV= 065df26e4ee4a27716ac2b175e37a04664d89fa0b5bfd70a +CT= 7b1a663415fb20584dc39b34e42258073554c21e818043e8 +PT= b26cbb2e13e6397bc4fd755c9a9d3c2b452cc629e7701973 +TEST= 121 +KEY= c122f6a1d120def67d085c5afc91acb55ebb5620e68020f542df1b8aa7656a64 +IV= 3bc2ca3e01cb8373273cccc7a775521e2a58e2d3de8f83b3 +CT= b26cbb2e13e6397bc4fd755c9a9d3c2b452cc629e7701973 +PT= 88a760d13d47793d669aedaea203ea59e4cd150a8b742f73 +TEST= 122 +KEY= ac4206964d6e3cf1f5af3c8bc1d6d5883821bb8e4483caaca6120e802c114517 +IV= 6bb130a5c6dddcf4575925a8f62931236d60f0379c4ee207 +CT= 88a760d13d47793d669aedaea203ea59e4cd150a8b742f73 +PT= d4f04c0145c493e6b279f9695274d1dd5ce66fc26c050e09 +TEST= 123 +KEY= 23bbe3275feb4c7d215f708a8412466e8a5842e716f71b71faf4614240144b1e +IV= c8cb85db2bb470e4c6a7d3db3a75c1f18ff9e5b11285708c +CT= d4f04c0145c493e6b279f9695274d1dd5ce66fc26c050e09 +PT= d40a3847b1703d5add47d414e3696bd6ff85eff911ea9000 +TEST= 124 +KEY= 5aa651cbf2433c31f55548cd35627b34571f96f3f59e70a705718ebb51fedb1e +IV= d92edad4e94641e0c1d090d814e08cf3791db2ecada8704c +CT= d40a3847b1703d5add47d414e3696bd6ff85eff911ea9000 +PT= 271e5de2cbd131f88a25347516e324a20b90f3610e360cee +TEST= 125 +KEY= a8e4c1ee176898dbd24b152ffeb34accdd3aa286e37d54050ee17dda5fc8d7f0 +IV= 90533e18a5359f1dd2a1b5f897a3951ef2429025e52ba4ea +CT= 271e5de2cbd131f88a25347516e324a20b90f3610e360cee +PT= e5c5f349908b3ec923c30aec65811844850af20c9a3858c6 +TEST= 126 +KEY= 742b3f6174e5b09a378ee6666e387405fef9a86a86fc4c418beb8fd6c5f08f36 +IV= 1310440482906cb9ed277065ff6c72e3dccffe8f638d2841 +CT= e5c5f349908b3ec923c30aec65811844850af20c9a3858c6 +PT= 879635136f27503d9878ef73dcd145eb4bb3c6e875827599 +TEST= 127 +KEY= 75d25ab766c76153b018d375011f2438668147195a2d09aac058493eb072faaf +IV= a0935ec1830b2f30361de4d471a90a4801f965d61222d1c9 +CT= 879635136f27503d9878ef73dcd145eb4bb3c6e875827599 +PT= a6b31ecf6a6a87d77b814bb15b59eb2465cb46532c8d1bd8 +TEST= 128 +KEY= e50ac1efc8ddeb1c16abcdba6b75a3ef1d000ca80174e28ea5930f6d9cffe177 +IV= 044d2e1bd703cf7ac484c42f56e5464b90d89b58ae1a8a4f +CT= a6b31ecf6a6a87d77b814bb15b59eb2465cb46532c8d1bd8 +PT= c7d01cb58e77bc3f9568daa011af4ed35236c50e992e59f9 +TEST= 129 +KEY= 0809836b9f2afba0d17bd10fe5021fd08868d60810dbac5df7a5ca6305d1b88e +IV= dfcc6d2bcbad5f7ab88056ea3447d0ffed03428457f710bc +CT= c7d01cb58e77bc3f9568daa011af4ed35236c50e992e59f9 +PT= ebf13b75fedef73dd3bbe7a3a0cfbedbd1a1f3ffed691156 +TEST= 130 +KEY= e6e5bd62811d47743a8aea7a1bdce8ed5bd331abb01412862604399ce8b8a9d8 +IV= 679115011b45b3d35db932e29483fddeeeec3e091e37bcd4 +CT= ebf13b75fedef73dd3bbe7a3a0cfbedbd1a1f3ffed691156 +PT= 86d6782c5afab723fe46343bdee4ac224698e44707f9785b +TEST= 131 +KEY= c00aee89d6684750bc5c925641265fcea59505906ef0bea4609cdddbef41d183 +IV= e1be25fe4aca070743749f34b582d98726ef53eb57750024 +CT= 86d6782c5afab723fe46343bdee4ac224698e44707f9785b +PT= b25a6a0414564230cc924e59e076ea29c567e8fc50c499a8 +TEST= 132 +KEY= a7186ee008f52f1b0e06f85255701dfe69074bc98e86548da5fb3527bf85482b +IV= 0c1d8050f6c121985d8ee3f11ed0f9b967128069de9d684b +CT= b25a6a0414564230cc924e59e076ea29c567e8fc50c499a8 +PT= bb3d6ca3cf514df13d91a66aa1d1fe1d9e21c4bc084de4c7 +TEST= 133 +KEY= a941aefffe1fcb00b53b94f19a21500f5496eda32f57aa903bdaf19bb7c8acec +IV= 7eb7dbc5a695484edac50365eb148efd0e59c01ff6eae41b +CT= bb3d6ca3cf514df13d91a66aa1d1fe1d9e21c4bc084de4c7 +PT= 533a53e2322992136af85ad7999f54f4f74603233373bc52 +TEST= 134 +KEY= 9a9939409365b282e601c713a808c21c3e6eb774b6c8fe64cc9cf2b884bb10be +IV= bb8c3c956f958a66bc68e23a834e389a33d897bf6d7a7982 +CT= 533a53e2322992136af85ad7999f54f4f74603233373bc52 +PT= 957836ce8460b2b957943aa034a8daea4b20319c762b83ed +TEST= 135 +KEY= acb965f2613035a27379f1dd2c6870a569fa8dd48260248e87bcc324f2909353 +IV= 2f53d92c44b648a1e7cb7fc10a95c4d936205cb2f2558720 +CT= 957836ce8460b2b957943aa034a8daea4b20319c762b83ed +PT= e675ed769477ac4375859ac8e3bfa64e8c5f06702fe09129 +TEST= 136 +KEY= 69005d5e10b7581d950c1cabb81fdce61c7f171c61df82c00be3c554dd70027a +IV= dcf992948192e627879d929e7f6a5b46c5b938ac71876dbf +CT= e675ed769477ac4375859ac8e3bfa64e8c5f06702fe09129 +PT= 21c3782bd47e20475f3e752ca34b053ad2860cbbda6b934f +TEST= 137 +KEY= 138138f0d0d094e9b4cf64806c61fca143416230c29487fad965c9ef071b9135 +IV= bfbf8a9c67e9c42274f038a9fc6da7377a8165aec067ccf4 +CT= 21c3782bd47e20475f3e752ca34b053ad2860cbbda6b934f +PT= 1689a9a7a80f5c36819e60a96c47b1588af8d6cbf6f88b2d +TEST= 138 +KEY= ea66f736dd28f680a246cd27c46ea097c2df0299aed336a2539d1f24f1e31a18 +IV= da7400128bf24eb330625823cb23cb95f9e7cfc60df86269 +CT= 1689a9a7a80f5c36819e60a96c47b1588af8d6cbf6f88b2d +PT= 261804967f99a2c2d8037f6ba9fd31379690fdbc092fb0ef +TEST= 139 +KEY= 2b82e78d1829c8a5845ec9b1bbf702551adc7df2072e0795c50de298f8ccaaf7 +IV= 283981de6a57fa70814af9a2b012749ac1e410bbc5013e25 +CT= 261804967f99a2c2d8037f6ba9fd31379690fdbc092fb0ef +PT= b6e51b84d191d0e8805138544001ca451db9bca63253622c +TEST= 140 +KEY= feae08df36461f3232bbd2356a66d2bd9a8d45a6472fcdd0d8b45e3eca9fc8db +IV= 2b2a825cbf71017715d5cf4a4874ecc3d52cef522e6fd797 +CT= b6e51b84d191d0e8805138544001ca451db9bca63253622c +PT= eca9f882931bcc823411da2637a6863a25a98d05d38db1b5 +TEST= 141 +KEY= 23bcd703f748b2a0de122ab7f97d1e3fae9c9f8070894beafd1dd33b1912796e +IV= c1837aa38aeccbcce515c0d4a94152dadd12dfdcc10ead92 +CT= eca9f882931bcc823411da2637a6863a25a98d05d38db1b5 +PT= 01bd18dc78392fd57d87c7a529eb2a6b76a2d0ee0ad374ad +TEST= 142 +KEY= 059d443d00f859c7dfaf326b814431ead31b5825596261818bbf03d513c10dc3 +IV= 50fee05f94505c839b6f1886ad1900942621933ef7b0eb67 +CT= 01bd18dc78392fd57d87c7a529eb2a6b76a2d0ee0ad374ad +PT= bd3938d93c82b00bd737c063a45dec64f96209340aa3a84f +TEST= 143 +KEY= 1b03810db95d6f8462960ab2bdc681e1042c9846fd3f8de572dd0ae11962a58c +IV= 2173a8e2d76fa5a8e48636438e7217221e9ec530b9a53643 +CT= bd3938d93c82b00bd737c063a45dec64f96209340aa3a84f +PT= ae94cc3f323fe0b2310c64d7d78af1ca66bbfe445406a7e4 +TEST= 144 +KEY= 156a5519c2c414e0cc02c68d8ff961533520fc912ab57c2f1466f4a54d640268 +IV= ef5689d4d7f76d51b37f1403c4f103130e69d4147b997b64 +CT= ae94cc3f323fe0b2310c64d7d78af1ca66bbfe445406a7e4 +PT= 1969e2e7374fe4f8af0ceff15b3037e9050ad74d59ccb7dd +TEST= 145 +KEY= 584daa95920f61a4d56b246ab8b685ab9a2c136071854bc6116c23e814a8b5b5 +IV= b0c43b1d2c58fa6176855f57805ffa564d27ff8c50cb7544 +CT= 1969e2e7374fe4f8af0ceff15b3037e9050ad74d59ccb7dd +PT= 8e967ee906ada6ff077af625a5c72632a0ce2a4814443c39 +TEST= 146 +KEY= 83f962668f4d32e35bfd5a83be1b23549d56e545d4426df4b1a209a000ec898c +IV= 9d39532cb63706e0c3400cbc449a4124dbb4c8f31d425347 +CT= 8e967ee906ada6ff077af625a5c72632a0ce2a4814443c39 +PT= 53e179f8b25613102bc5860743a0c2659e5839f85ef1aa48 +TEST= 147 +KEY= 83d98eaffc99b622081c237b0c4d3044b693634297e2af912ffa30585e1d23c4 +IV= e20a7e55ade29f534289ca458e830a060020ecc973d484c1 +CT= 53e179f8b25613102bc5860743a0c2659e5839f85ef1aa48 +PT= 9028926583f7d7c47e3cd2cdd2b6fefe655af7cc55bccdf3 +TEST= 148 +KEY= c953e68ecdbb594a9834b11e8fbae780c8afb18f4554516f4aa0c7940ba1ee37 +IV= 397577d3dd3e4650a2dd13fe4ec2a8424a8a68213122ef68 +CT= 9028926583f7d7c47e3cd2cdd2b6fefe655af7cc55bccdf3 +PT= 6d45b52afaf26d267d52720152b90be77af785595009f098 +TEST= 149 +KEY= ccc567458f4a3012f571043475488aa6b5fdc38e17ed5a88305742cd5ba81eaf +IV= 32e487313d8c41d1636394254d9f202e059681cb42f16958 +CT= 6d45b52afaf26d267d52720152b90be77af785595009f098 +PT= 5844bb68a60ed6962100324b63188a9f91f4e9926f598426 +TEST= 150 +KEY= 0e5a14eb7197390ead35bf5cd3465c3094fdf1c574f5d017a1a3ab5f34f19a89 +IV= 94cd7cb246833445e59400f17e20a8b7c29f73aefedd091c +CT= 5844bb68a60ed6962100324b63188a9f91f4e9926f598426 +PT= 11f7c6f7b187cb7141aa6381027722717842e006a3808d9d +TEST= 151 +KEY= 6ebe7a3e6a3e459cbcc279ab62c19741d55792447682f266d9e14b5997711714 +IV= e16ec3602ca0a41dfd38b0365640751760e46ed51ba97c92 +CT= 11f7c6f7b187cb7141aa6381027722717842e006a3808d9d +PT= 21a61921b021ce94f64f9932e67d74927b4a1380200634a7 +TEST= 152 +KEY= d6149cdbb94486079d64608ad2e059d523180b7690ff86f4a2ab58d9b77723b3 +IV= 3963c80a87009650364c2ac8ca7e74f0b8aae6e5d37ac39b +CT= 21a61921b021ce94f64f9932e67d74927b4a1380200634a7 +PT= 49e21ae7d65a53b345dc62717f6f13642cd12e0277df287e +TEST= 153 +KEY= a7f5ad3ad6de3956d4867a6d04ba0a6666c46907ef9095908e7a76dbc0a80bcd +IV= 771c6f086a360218f059233d7650d2ac71e131e16f9abf51 +CT= 49e21ae7d65a53b345dc62717f6f13642cd12e0277df287e +PT= 0d07d7efbd8266ae9bbde0c03e9650f4c6453f2d2fd749e8 +TEST= 154 +KEY= db60d06be4347e38d981ad82b9386cc8fd7989c7d106c564483f49f6ef7f4225 +IV= aa48d3a2bfeb5867b4beff946941d9907c957d5132ea476e +CT= 0d07d7efbd8266ae9bbde0c03e9650f4c6453f2d2fd749e8 +PT= 1b3ea8423b11acd379651efbb31e5982fa9f4c9436541198 +TEST= 155 +KEY= a424590c1ffff273c2bf05c08229c01b841c973c62189ce6b2a00562d92b53bd +IV= f0d5195b9d551d041775ad6a0e7e0a697f448967fbcb8c4b +CT= 1b3ea8423b11acd379651efbb31e5982fa9f4c9436541198 +PT= bd0acb3a881291e871d48b6cc2f03fdbbc135cbeb9fac7b7 +TEST= 156 +KEY= d2063a5a76cdfb127fb5cefa0a3b51f3f5c81c50a0e8a33d0eb359dc60d1940a +IV= 6abf9b464b84e4f7ab9fdb5a5b9040ea7622635669320961 +CT= bd0acb3a881291e871d48b6cc2f03fdbbc135cbeb9fac7b7 +PT= 04eeddcac98836a1683af0e77032e49f41f94fe2badecb75 +TEST= 157 +KEY= 8788e373a5b6c1877b5b1330c3b367529df2ecb7d0da47a24f4a163eda0f5f7f +IV= 375d1b9d40a7aaf94c8d7faff1e6fafa558ed929d37b3a95 +CT= 04eeddcac98836a1683af0e77032e49f41f94fe2badecb75 +PT= ef4b6671c17268533b24ce6c387e1cca0afc77a640d1f017 +TEST= 158 +KEY= 5fd43ddba35377f29410754102c10f01a6d622dbe8a45b6845b661989adeaf68 +IV= 9710cb940e31efb03696319b377c9874d85cdea806e5b675 +CT= ef4b6671c17268533b24ce6c387e1cca0afc77a640d1f017 +PT= ac00a617ea895d15a56bca9eb824a085bab31f065b155597 +TEST= 159 +KEY= 46b6a5f5fd0e73ce3810d356e848521403bde8455080fbedff057e9ec1cbfaff +IV= 5449ab990aa9ef24026b0c4e6b5a8b1b1962982e5e5d043c +CT= ac00a617ea895d15a56bca9eb824a085bab31f065b155597 +PT= c1d23eb5f4fb6a62c131390bbe0f0058283242ca7e6f05d0 +TEST= 160 +KEY= 8e0532ceba2acc61f9c2ede31cb33876c28cd14eee8ffbb5d7373c54bfa4ff2f +IV= 9452ca5ca1bdfbe58b6f516df9f42f53c8b3973b4724bfaf +CT= c1d23eb5f4fb6a62c131390bbe0f0058283242ca7e6f05d0 +PT= 3976bbbb704182442e29343c583d5862664a3713c5feb955 +TEST= 161 +KEY= f2500de462343517c0b456586cf2ba32eca5e572b6b2a3d7b17d0b477a5a467a +IV= b53ceaad35904b6f299fa9e46afdab4f7c553f2ad81ef976 +CT= 3976bbbb704182442e29343c583d5862664a3713c5feb955 +PT= 4d39c782a54784880d217a5020d83dd49ad7e4c9742245ef +TEST= 162 +KEY= 855475a4a667a2228d8d91dac9b53ebae1849f22966a9e032baaef8e0e780395 +IV= 412c6198d0e19e2f24e6fe6c7f604ff277047840c4539735 +CT= 4d39c782a54784880d217a5020d83dd49ad7e4c9742245ef +PT= e7fbf3537252acbb476766b0ea253125152031a073783646 +TEST= 163 +KEY= c6d53d6f2812cca46a766289bbe79201a6e3f9927c4faf263e8ade2e7d0035d3 +IV= bdd80af52705987fdaf1d12018a407da438148cb8e756e86 +CT= e7fbf3537252acbb476766b0ea253125152031a073783646 +PT= a2fb7db3abb86dfba0b6c0156e87837e96d3b359a141bb01 +TEST= 164 +KEY= e3073a5a83fdee72c88d1f3a105ffffa0655398712c82c58a8596d77dc418ed2 +IV= 748527c4a617aa8d4229ec36e6f287a325d20735abef22d6 +CT= a2fb7db3abb86dfba0b6c0156e87837e96d3b359a141bb01 +PT= 004997f4e5383575e1249143d754855597d7e987640cce27 +TEST= 165 +KEY= f761f8fa6c8a9b98c8c488cef567ca8fe771a8c4c59ca90d3f8e84f0b84d40f5 +IV= dba2f10f4865c03abb7fe53786d4cf2a1466c2a0ef7775ea +CT= 004997f4e5383575e1249143d754855597d7e987640cce27 +PT= 661453374f7133e20ce47bac8b2340b66f912c440325bc5b +TEST= 166 +KEY= 3c1b0405076fe0ddaed0dbf9ba16f96deb95d3684ebfe9bb501fa8b4bb68fcae +IV= 1442802cc39b20b9a7ca3d5fc3671a66cb7afcff6be57b45 +CT= 661453374f7133e20ce47bac8b2340b66f912c440325bc5b +PT= c48efa85fe740ccb8b4e04d03849d5589ef75a86418a5944 +TEST= 167 +KEY= bf1f26aa3bf52fdc6a5e217c4462f5a660dbd7b876f63ce3cee8f232fae2a5ea +IV= efcb63ce06faf74855959893153d7ab1830422af3c9acf01 +CT= c48efa85fe740ccb8b4e04d03849d5589ef75a86418a5944 +PT= f0084693108702504d131b6165917f489e11b04882207d20 +TEST= 168 +KEY= c85438740d22651e9a5667ef54e5f7f62dc8ccd9136743ab50f9427a78c2d8ca +IV= bcd65e1021e3bcd1d3d9e99b2c82a613774b1ede36d74ac2 +CT= f0084693108702504d131b6165917f489e11b04882207d20 +PT= d2533d7e1e331e9887a8b9b034d03248793c0d7e91047619 +TEST= 169 +KEY= a963a2e221fcd45148055a914ad6e96eaa60756927b771e329c54f04e9c6aed3 +IV= 9f3ea8181316791856edb43954b6d0de61379a962cdeb14f +CT= d2533d7e1e331e9887a8b9b034d03248793c0d7e91047619 +PT= ff1c584b27edec656f79d325f33df3455d7a24c2078d77f9 +TEST= 170 +KEY= 944ab9042b6e66e6b71902da6d3b050bc519a64cd48a82a674bf6bc6ee4bd92a +IV= 5c20e942a8b6ada3396d3fe8fad91bca3d291be60a92b2b7 +CT= ff1c584b27edec656f79d325f33df3455d7a24c2078d77f9 +PT= fe32dd06fcdb3265a475a3b2e10e29f3a2a713f872f0d49e +TEST= 171 +KEY= d593302204a612f9492bdfdc91e0376e616c05fe3584ab55d618783e9cbb0db4 +IV= 42c780659d217ea355d65d762893cea741d989262fc8741f +CT= fe32dd06fcdb3265a475a3b2e10e29f3a2a713f872f0d49e +PT= b00d66a4ec1e9436f283ab81104d4c402297b52f24180980 +TEST= 172 +KEY= 5ffec9cbf55c186df926b9787dfea35893efae7f25c9e715f48fcd11b8a30434 +IV= 817ce512e14eca55dddf3a9f37b133978a6df9e9f1fa0a94 +CT= b00d66a4ec1e9436f283ab81104d4c402297b52f24180980 +PT= 9540d40559ae651a8d4868f1fe854b2b8cb4501bb21d506d +TEST= 173 +KEY= baf1c1842a21084a6c666d7d2450c6421ea7c68edb4cac3e783b9d0a0abe5459 +IV= 3e3b7ac89b594a501a8ebf5bdc46caa7e50f084fdf7d1027 +CT= 9540d40559ae651a8d4868f1fe854b2b8cb4501bb21d506d +PT= 2f04c13ae5e6990c0c5ec7db9fc76d89293c47dd1f1f2440 +TEST= 174 +KEY= c0f7557d74d337b24362ac47c1b65f4e12f90155448bc1b75107dad715a17019 +IV= 94fcc62dde5ecb290429c46544eff1ac7a0694f95ef23ff8 +CT= 2f04c13ae5e6990c0c5ec7db9fc76d89293c47dd1f1f2440 +PT= 7e58da66fafd5a182521fcf4614af5c8629b0cbdd0969c9b +TEST= 175 +KEY= 6794f95276b914323d3a76213b4b055637d8fda125c1347f339cd66ac537ec82 +IV= 0eeebd3ec90672a8f59f56b460e6183ca763ac2f026a2380 +CT= 7e58da66fafd5a182521fcf4614af5c8629b0cbdd0969c9b +PT= 58a6b3a5696758fe80a4d7e161df97511ce01d0780e5cf7a +TEST= 176 +KEY= 732dfa14c44aa96f659cc584522c5da8b77c2a40441ea32e2f7ccb6d45d223f8 +IV= 7a75045df83be3246c3e8fd60cd8587814b90346b2f3bd5d +CT= 58a6b3a5696758fe80a4d7e161df97511ce01d0780e5cf7a +PT= 476215db0757a65762c3aa05ae664dce6620cd7990ce8ba1 +TEST= 177 +KEY= 7b57ba4d008341ce22fed05f557bfbffd5bf8045ea78eee0495c0614d51ca859 +IV= 80b62b0fb36ebaa98c166b8132c4e6c6087a4059c4c9e8a1 +CT= 476215db0757a65762c3aa05ae664dce6620cd7990ce8ba1 +PT= 5840a19ec1c68edd8951d6f091b1a469d12bd08e45dc9073 +TEST= 178 +KEY= d7763ed8bd08b0c07abe71c194bd75225cee56b57bc94a899877d69a90c0382a +IV= 3b849b6dbecd19e5e108876ee5e0a038ac218495bd8bf10e +CT= 5840a19ec1c68edd8951d6f091b1a469d12bd08e45dc9073 +PT= df8599f82fa6a3c286dbb651a0a2fd070219f507bd27d944 +TEST= 179 +KEY= dcd2c8b23a121073a53be839bb1bd6e0da35e0e4db6bb78e9a6e239d2de7e16e +IV= dbbee8e7c72a08d3f5fb8387db21e0910ba4f66a871aa0b3 +CT= df8599f82fa6a3c286dbb651a0a2fd070219f507bd27d944 +PT= 30afb8994f9b9cbb198c7db6e919159b5d2a9894390abc29 +TEST= 180 +KEY= 42a20cd42f17d42f959450a0f4804a5bc3b99d523272a215c744bb0914ed5d47 +IV= f34ed1ece8b043e4c6fbf35ec28828659e70c4661505c45c +CT= 30afb8994f9b9cbb198c7db6e919159b5d2a9894390abc29 +PT= ba6df9603c49911f5c203abf26e8c5f3caf6131647a80d06 +TEST= 181 +KEY= 1f208d1d59f1b7492ff9a9c0c8c9db449f99a7ed149a67e60db2a81f53455041 +IV= fec77717251176e0e7980a3c61115e915d8281c976e66366 +CT= ba6df9603c49911f5c203abf26e8c5f3caf6131647a80d06 +PT= 3643236732b4735d26d9bedfb54ab68c98c001feec591be4 +TEST= 182 +KEY= 7830d462fcefba8119ba8aa7fa7da819b9401932a1d0d16a9572a9e1bf1c4ba5 +IV= d08b8136578d811eeacd1f3a4f2f51d46710597fa51e0dc8 +CT= 3643236732b4735d26d9bedfb54ab68c98c001feec591be4 +PT= 5c2b45139a9e1a6242642bccdb11a09da0b6d2257363b5d8 +TEST= 183 +KEY= 195fb69adedbca824591cfb460e3b27bfb2432fe7ac171f735c47bc4cc7ffe7d +IV= 6148006b9f14e5e6122f0d0fdb48602d616f62f822347003 +CT= 5c2b45139a9e1a6242642bccdb11a09da0b6d2257363b5d8 +PT= 6394f7758ac9a3eb556231caa0fe384f89435f07ee81a538 +TEST= 184 +KEY= d7038a78fc5ceca8260538c1ea2a1190ae460334da3f49b8bc8724c322fe5b45 +IV= 04e6c0084227a5df86c8e3966a85d347ce5c3ce22287262a +CT= 6394f7758ac9a3eb556231caa0fe384f89435f07ee81a538 +PT= 0a6d008c9610bd7163fbacf37eeef7da20cbdb2daa38be57 +TEST= 185 +KEY= 5d9569e5742d44772c68384d7c3aace1cdbdafc7a4d1be629c4cffee88c6e512 +IV= 77218d1c00dabdffc47933f34671e0518a96e39d8871a8df +CT= 0a6d008c9610bd7163fbacf37eeef7da20cbdb2daa38be57 +PT= fbbcb13000b461ebe7e1d4d5cc597771f819e03ab86d29e0 +TEST= 186 +KEY= 683939bb7f1dbca5d7d4897d7c8ecd0a2a5c7b126888c91364551fd430abccf2 +IV= 7456932c22b7a79ae228e7f7b5cb255035ac505e0b30f8d2 +CT= fbbcb13000b461ebe7e1d4d5cc597771f819e03ab86d29e0 +PT= 225388561435ce3ad6ce105ccc6475cfb9c5f1c24b863e72 +TEST= 187 +KEY= 8b87137162e1c1f8f587012b68bb0330fc926b4ea4ecbcdcdd90ee167b2df280 +IV= ead72bf0dfdf522ad986405ba0370e72e3be2aca1dfc7d5d +CT= 225388561435ce3ad6ce105ccc6475cfb9c5f1c24b863e72 +PT= e94badbfafef124109a6e6123d1b64a4b90dd7b67281c80c +TEST= 188 +KEY= d54cb02bb9840ee11cccac94c7541171f5348d5c99f7d878649d39a009ac3a8c +IV= 697cbf5d3bc4900387480ca04dbc64565ecba35adb65cf19 +CT= e94badbfafef124109a6e6123d1b64a4b90dd7b67281c80c +PT= c65bb8f9d0cf53322e44935a62097748a6a17a61448bc9c9 +TEST= 189 +KEY= 8871b2ea4e04e2e9da97146d179b4243db701e06fbfeaf30c23c43c14d27f345 +IV= 4c3558bb4e3e856775ba8a7b41c9343a5d3d02c1f780ec08 +CT= c65bb8f9d0cf53322e44935a62097748a6a17a61448bc9c9 +PT= fe4e832a7ea8985e4e28019c6961e1df1a5958dfa0927c7f +TEST= 190 +KEY= a6c175798469d26624d997476933da1d95581f9a929f4eefd8651b1eedb58f3a +IV= e3f4657cf085f81a453c011d757c82802eb0c793ca6d308f +CT= fe4e832a7ea8985e4e28019c6961e1df1a5958dfa0927c7f +PT= 360c536dfdf552a0db79d4ac96553b76c4c9f86fedc61111 +TEST= 191 +KEY= a0a9e7623522d18412d5c42a94c688bd4e21cb3604ca75991cace37100739e2b +IV= 8f2337edf7b2ecb99a0d89f907d521d20668921bb14b03e2 +CT= 360c536dfdf552a0db79d4ac96553b76c4c9f86fedc61111 +PT= c94b0c1f916a34e8e10eefc7567583a301fb88c4457ea7ee +TEST= 192 +KEY= 0a96e1e369fdf4bddb9ec83505acbc55af2f24f152bff63a1d576bb5450d39c5 +IV= 581c43f563e0df1f55665283f45284ebaa3f06815cdf2539 +CT= c94b0c1f916a34e8e10eefc7567583a301fb88c4457ea7ee +PT= c28a21fc05a9ade05d9a6f0a4e250d1b73b8d45427ba49f0 +TEST= 193 +KEY= 47fda74f60f7f1a41914e9c9000511b5f2b54bfb1c9afb216eefbfe162b77035 +IV= 6de1af37e17473fe218b64d4d11aec9b4d6b46ac090a0519 +CT= c28a21fc05a9ade05d9a6f0a4e250d1b73b8d45427ba49f0 +PT= 2e4d2ca47a65b43c4dec1d3cad8de76c16b8b1d351e06619 +TEST= 194 +KEY= 8e3c688a4b1919d83759c56d7a60a589bf5956c7b1171c4d78570e323357162c +IV= fc83ad67b94a948b4521a9f1e1a4fd56c9c1cfc52beee87c +CT= 2e4d2ca47a65b43c4dec1d3cad8de76c16b8b1d351e06619 +PT= b185bcf58e5ddd5c9823d47c1d5043941686ce974f059da8 +TEST= 195 +KEY= 4c87c38c26f4c7ca86dc7998f43d78d5277a82bbac475fd96ed1c0a57c528b84 +IV= b4581311f9d639e7f356e853b13d4c9dc2bbab066dedde12 +CT= b185bcf58e5ddd5c9823d47c1d5043941686ce974f059da8 +PT= 07bd70b633f89939820882350c6696c026d24656d7ca8d5f +TEST= 196 +KEY= bd0071c701d601618161092ec7c5e1eca572008ea021c919480386f3ab9806db +IV= efe0db0cd44d5c69b1da42232ef5deabf187b24b2722c6ab +CT= 07bd70b633f89939820882350c6696c026d24656d7ca8d5f +PT= f22ea5ca1b70c632c9bc94041ca2fa021d19e1f4eb66b481 +TEST= 197 +KEY= 928315a9bfeb1044734face4dcb527de6cce948abc83331b551a670740feb25a +IV= a08ab25491fd9f1a0a476330431bbdd12f83646ebe3d1125 +CT= f22ea5ca1b70c632c9bc94041ca2fa021d19e1f4eb66b481 +PT= 1827259891d90f229c4d78bd562453fe6716a8518e06643b +TEST= 198 +KEY= 87c5bb3b7db8ebd96b68897c4d6c28fcf083ec37eaa760e5320ccf56cef8d661 +IV= 43d7f517f8e3e0d88b2c528bc72fc10b1546ae92c253fb9d +CT= 1827259891d90f229c4d78bd562453fe6716a8518e06643b +PT= 67457bc86b8c699522c2c717cfabd841af53ac7b7b711f74 +TEST= 199 +KEY= b4d87aa5f4604a730c2df2b426e04169d2412b20250cb8a49d5f632db589c915 +IV= 117a66efdf6d2b3dfeb13fbd9d024ce1331dc19e89d8a1aa +CT= 67457bc86b8c699522c2c717cfabd841af53ac7b7b711f74 +PT= 4d44a6e7eca7038f5c76cc8e7d6122143b942cd853347837 +TEST= 200 +KEY= 82663893fe66895241695453ca4742e68e37e7ae586d9ab0a6cb4ff5e6bdb122 +IV= 7b123f1df05cc43a1ee0991f3ac3431f36be42360a06c321 +CT= 4d44a6e7eca7038f5c76cc8e7d6122143b942cd853347837 +PT= 405c8ae84eed33da7c9e92a9d45f1753b67ae1ecf2224606 +TEST= 201 +KEY= 6e3ff714b558bbd60135debb84aa713cf2a975078c328de310b1ae19149ff724 +IV= 42b9c4e0576f5e68eb0de4c4606043a5ec59cf874b3e3284 +CT= 405c8ae84eed33da7c9e92a9d45f1753b67ae1ecf2224606 +PT= 4f6a66ab5453e9ebd8f8f3aefedd51d1c71f9404f30ac205 +TEST= 202 +KEY= a185b15377d07e1f4e5fb810d0f998d72a5186a972efdc32d7ae3a1de7953521 +IV= 04f72e708966572224a0b18e75d6713dcfba4647c288c5c9 +CT= 4f6a66ab5453e9ebd8f8f3aefedd51d1c71f9404f30ac205 +PT= c21b4d747672f85743eead2527f4705e63cc745c19250b01 +TEST= 203 +KEY= 88049b585c15708f8c44f564a68b608069bf2b8c551bac6cb4624e41feb03e20 +IV= 9d3ccf1d36a8eb5b7ea8a8d0a60f290729812a0b2bc50e90 +CT= c21b4d747672f85743eead2527f4705e63cc745c19250b01 +PT= eb6c1c64287b35dd36f421d1b2d7e722d2317e2497cf8524 +TEST= 204 +KEY= e74160258903d0986728e9008ef0555d5f4b0a5de7cc4b4e66533065697fbb04 +IV= 50f85e11fc9aacf4169aa103cc4044ce6f45fb7dd516a017 +CT= eb6c1c64287b35dd36f421d1b2d7e722d2317e2497cf8524 +PT= fb0dd42519370d776e0fdd5299e3baa23adb07d931d4c50f +TEST= 205 +KEY= da3729e3cf7c6ead9c253d2597c7582a3144d70f7e2ff1ec5c8837bc58ab7e0b +IV= 7818ed660b2ff4ffdf94713926da19283d7649c6467fbe35 +CT= fb0dd42519370d776e0fdd5299e3baa23adb07d931d4c50f +PT= 0397a9062b5ff5c3cf105fc02dbce01f1dc8c3f3f7c9399f +TEST= 206 +KEY= 8c46750f2e32ab3e9fb29423bc98ade9fe5488cf539311f34140f44faf624794 +IV= 5228ec780706a62d0e4edbb68090a1b356715cece14ec593 +CT= 0397a9062b5ff5c3cf105fc02dbce01f1dc8c3f3f7c9399f +PT= c2ee1c97c092c517b6aba4ddbccd2542aa15f02027cb48ab +TEST= 207 +KEY= ee684669f4d158825d5c88b47c0a68fe48ff2c12ef5e34b1eb55046f88a90f3f +IV= 56d448ce6204b5029fa3d74354d5c1c1622e3366dae3f3bc +CT= c2ee1c97c092c517b6aba4ddbccd2542aa15f02027cb48ab +PT= b945a66a412b378ed978a72461fbaaaee774df2f8fea0467 +TEST= 208 +KEY= 13101f6d2b815ba1e4192ede3d215f7091878b368ea59e1f0c21db4007430b58 +IV= 34ef2d6efaf363c91278bd0a5fa91532fd785904df500323 +CT= b945a66a412b378ed978a72461fbaaaee774df2f8fea0467 +PT= 67c67c9bd11e0ce2ad509467a5d98ce334e7b6a12002d7c3 +TEST= 209 +KEY= f96fb07880c133ea83df5245ec3f53923cd71f512b7c12fc38c66de12741dc9b +IV= 3cc19dd74c6143303f8e12732a4522bcea7faf15ab40684b +CT= 67c67c9bd11e0ce2ad509467a5d98ce334e7b6a12002d7c3 +PT= b775926ac35dccae22ac01af59b5e674cd334bce0099d721 +TEST= 210 +KEY= 9c66760a760d2a4934aac02f2f629f3c1e7b1efe72c9f488f5f5262f27d80bba +IV= 0e7e36ea49fdc99c6b0edf18a8a8d2ce6509c672f6cc19a3 +CT= b775926ac35dccae22ac01af59b5e674cd334bce0099d721 +PT= dadcb82d0e52612861134b6a2c28c842915d849c24e0eb38 +TEST= 211 +KEY= 6cf402885cf3aaaeee7678022130fe147f6855945ee13cca64a8a2b30338e082 +IV= 5cee9cca28e45ed191d8f48aaa05a437f09274822afe80e7 +CT= dadcb82d0e52612861134b6a2c28c842915d849c24e0eb38 +PT= fb0a2583a10baf6fc501c3ce32885b1bed96a33ccf950847 +TEST= 212 +KEY= 1d18156d29b54807157c5d81803b517bba69965a6c6967d1893e018fccade8c5 +IV= 5eb6cf2ef54c55b0a1868385673b0c7b71ec17e57546e2a9 +CT= fb0a2583a10baf6fc501c3ce32885b1bed96a33ccf950847 +PT= 3ea5700d5b8bcc3dad86df2c341b21702a22eb7a78c7ed94 +TEST= 213 +KEY= 83ba48bc7d55d5e32bd92d8cdbb09d4617ef4976587246a1a31ceaf5b46a0551 +IV= 45d7e3b30f9e6e5d8a6b4447aa0769979ea25dd154e09de4 +CT= 3ea5700d5b8bcc3dad86df2c341b21702a22eb7a78c7ed94 +PT= 0b03a60b82f5c60f5c52a429d79d9a524a2a41d9cdb0f504 +TEST= 214 +KEY= 718e3474b88f394a20da8b8759455b494bbded5f8fefdcf3e936ab2c79daf055 +IV= 5ce37d531522ec91a2c234ae5a88003af2347cc8c5daeca9 +CT= 0b03a60b82f5c60f5c52a429d79d9a524a2a41d9cdb0f504 +PT= ad760057d85723fc6bdb424ef601fd2e767ed683932a5031 +TEST= 215 +KEY= f07fd55b207caeb38dac8bd0811278b52066af1179ee21dd9f487dafeaf0a064 +IV= da4c9e3740154703a0a1e71f4152a17b81f1e12f98f397f9 +CT= ad760057d85723fc6bdb424ef601fd2e767ed683932a5031 +PT= c54b7e4c2085a46774cdd25dd7838d3506cfa3141ba9c86b +TEST= 216 +KEY= a79e76735900cd2948e7f59ca197dcd254ab7d4cae6dace89987debbf159680f +IV= 3b4a796561f2e1f05c545d061d36590f57e1a328797c639a +CT= c54b7e4c2085a46774cdd25dd7838d3506cfa3141ba9c86b +PT= 26794f048bd266afbda511cd2003466e69a7d98710ebc3b2 +TEST= 217 +KEY= d1ec7dd8fcf17a746e9eba982a45ba7de90e6c818e6eea86f020073ce1b2abbd +IV= fadbf7e547426dcdfe893c35af7eb90a76720baba5f1b75d +CT= 26794f048bd266afbda511cd2003466e69a7d98710ebc3b2 +PT= dd58bbbc2afc43e655b215f93bf559a3ce603f0af48e2bee +TEST= 218 +KEY= e47acbbf0f628723b3c6012400b9f99bbcbc7978b59bb3253e403836153c8053 +IV= 05c0cc589a818e13ceab8b1199011c5b3596b667f393fd57 +CT= dd58bbbc2afc43e655b215f93bf559a3ce603f0af48e2bee +PT= 0e3f17acd43a02ea799bbc574eca85c998066fb566e827fa +TEST= 219 +KEY= c6e2017010c63629bdf91688d483fb71c527c52ffb5136eca646578373d4a7a9 +IV= cc95c051d81b8ef009a985d052beeca52298cacf1fa4b10a +CT= 0e3f17acd43a02ea799bbc574eca85c998066fb566e827fa +PT= 98694246ad181f7659a55875f6eebc207c4654f083a4963d +TEST= 220 +KEY= ab8144bcc102317f259054ce799be4079c829d5a0dbf8accda000373f0703194 +IV= f10fb0cdb0c17a330c6ce573a3c0c4d96d6345ccd1c40756 +CT= 98694246ad181f7659a55875f6eebc207c4654f083a4963d +PT= 6b0447e3eb32a4288c9f27525c4cb12addfacc3934f8cdbf +TEST= 221 +KEY= 0ecd2576782dd3344e94132d92a9402f101dba0851f33be607facf4ac488fc2b +IV= 5120660fab94cae64de6157f180fae81a54c61cab92fe24b +CT= 6b0447e3eb32a4288c9f27525c4cb12addfacc3934f8cdbf +PT= f67b1598d67f77b72aaded78f93e7af3496cc280f7d388cd +TEST= 222 +KEY= 5d539de206577bc1b8ef06b544d637983ab05770a8cd41154e960dca335b74e6 +IV= 106efa09b0e1b147e69adb7f1d9517b4539eb8947e7aa8f5 +CT= f67b1598d67f77b72aaded78f93e7af3496cc280f7d388cd +PT= ad95749292a469b822004ecd69cbd225b3672bec50858fe6 +TEST= 223 +KEY= 5b4363d35009964e157a7227d6725e2018b019bdc1069330fdf1262663defb00 +IV= 3809771f0959fbf01a5db9f005892c090610fe31565eed8f +CT= ad95749292a469b822004ecd69cbd225b3672bec50858fe6 +PT= 551c52d2435f8191ee9d8b3aff885d779ca05f0886e00c5b +TEST= 224 +KEY= 21ca07e27b0b49bf406620f5952ddfb1f62d92873e8ece476151792ee53ef75b +IV= aec05d5400c123f6e719a9e0b9a090f17a8964312b02dff1 +CT= 551c52d2435f8191ee9d8b3aff885d779ca05f0886e00c5b +PT= f5ca100ddf11903e4cf3476bfc73fd051329c9f41108223a +TEST= 225 +KEY= 58f596257879d88eb5ac30f84a3c4f8fbaded5ecc2fd33427278b0daf436d561 +IV= f14d538b15d72d14ce02f7a5ca058c58793f91c703729131 +CT= f5ca100ddf11903e4cf3476bfc73fd051329c9f41108223a +PT= 8032014c9b2433cdcaec919ce1f1b1af43093efdda5b6b17 +TEST= 226 +KEY= 80ac1b372f37fded359e31b4d1187c4270324470230c82ed31718e272e6dbe76 +IV= 8340d5302e4b3e6d075eddc03da22f99d8598d12574e2563 +CT= 8032014c9b2433cdcaec919ce1f1b1af43093efdda5b6b17 +PT= 017ced917ecac1b83edb9dfea24177438119b366c3163a15 +TEST= 227 +KEY= 0fe538749569234e34e2dc25afd2bdfa4ee9d98e814df5aeb0683d41ed7b8463 +IV= 3c6e513031b5e47f6d0cf6a27ff86c738f492343ba5edea3 +CT= 017ced917ecac1b83edb9dfea24177438119b366c3163a15 +PT= eee97bc9c5c17ea6bdc4b38c916c9eafef22ad05a4cc9044 +TEST= 228 +KEY= 56e6292a3539e325da0ba7ec6a13c35cf32d6a0210216b015f4a904449b71427 +IV= e1bef986f615e852a6e1b3d46931ef085903115ea050c06b +CT= eee97bc9c5c17ea6bdc4b38c916c9eafef22ad05a4cc9044 +PT= 8b388f9abfd0a6efdb3a57e61b2ced82aa8da4f97da055bc +TEST= 229 +KEY= 61672b193a99c15051332876d5c365b328173de40b0d8683f5c734bd3417419b +IV= 52da88cc73a563efdecffcb7b9d03f72378102330fa02275 +CT= 8b388f9abfd0a6efdb3a57e61b2ced82aa8da4f97da055bc +PT= 5cb406c55b15e4a59425d453b5a9c900a1ef8b75c4173730 +TEST= 230 +KEY= d463fca07f6397d80d872eb38ed68116bc32e9b7bea44f835428bfc8f00076ab +IV= 2e3b0ade75a5a1cf71aca5cceb5af944b504d7b945fa5688 +CT= 5cb406c55b15e4a59425d453b5a9c900a1ef8b75c4173730 +PT= e2266ca086f6d0d6faa46091ba8be0dd550b818a14e2356a +TEST= 231 +KEY= 6647da85bbe844d8efa14213082051c046968926042faf5e01233e42e4e243c1 +IV= 2b6b1ea595c70150693fe2e2e90f62d6b2242625c48bd300 +CT= e2266ca086f6d0d6faa46091ba8be0dd550b818a14e2356a +PT= e4181e1440ebcf4d230de39a80f9b4a47325a6dee704b71c +TEST= 232 +KEY= 8a19232f8da5c4d10bb95c0748cb9e8d659b6abc84d61bfa7206989c03e6f4dd +IV= 38849e5a529c3537094c191cef6eadcbec5ef9aa364d8009 +CT= e4181e1440ebcf4d230de39a80f9b4a47325a6dee704b71c +PT= 1e8d0bfbf9200322d60d30609053ae5a8b39dba8c10b36bc +TEST= 233 +KEY= 17d835397a5ce7d0153457fcb1eb9dafb3965adc1485b5a0f93f4334c2edc261 +IV= 4ff0efc00ac768f33d569cb20790a0969dc11616f7f92301 +CT= 1e8d0bfbf9200322d60d30609053ae5a8b39dba8c10b36bc +PT= e4b692ec99f7224711418470fd84239a248e5ef0ed5e47aa +TEST= 234 +KEY= 42e42f7c49d5e865f182c510281cbfe8a2d7deace901963addb11dc42fb385cb +IV= 8797fb6864466dfb0c543f026e8a7e43553c1a4533890fb5 +CT= e4b692ec99f7224711418470fd84239a248e5ef0ed5e47aa +PT= d0ca99fac0524ed6b9df2b6973b8ddf95cf9151698683467 +TEST= 235 +KEY= 2b9b4f5232b6e2a521485ceae84ef13e1b08f5c59ab94bc3814808d2b7dbb1ac +IV= 777af693a91c6bb7bb17ecbaa3067b88697f602e7b630ac0 +CT= d0ca99fac0524ed6b9df2b6973b8ddf95cf9151698683467 +PT= 6416af8f5c3369ff55c80eb8bd73726041b3d7616e706e83 +TEST= 236 +KEY= 654a8e15ecffd48d455ef365b47d98c14ec0fb7d27ca39a3c0fbdfb3d9abdf2f +IV= 6a54b1c341d9afad13c7071de23d7cda4ed1c147de493628 +CT= 6416af8f5c3369ff55c80eb8bd73726041b3d7616e706e83 +PT= 60de8681838e3a1c19aac3be1f13a5de7249274d45a83574 +TEST= 237 +KEY= 4635b056308edb06258075e437f3a2dd576a38c338d99c7db2b2f8fe9c03ea5b +IV= 3db4e9d431a330a054eb51e13193a05a237f3e43dc710f8b +CT= 60de8681838e3a1c19aac3be1f13a5de7249274d45a83574 +PT= 684eeb1df45b718bf3927d5ca58989eaa44da59281aad1c4 +TEST= 238 +KEY= c00154613f90fea54dce9ef9c3a8d356a4f8459f9d50159716ff5d6c1da93b9f +IV= 2d39280f6897b6149615955c92e011bd8634e4370f1e25a3 +CT= 684eeb1df45b718bf3927d5ca58989eaa44da59281aad1c4 +PT= 099ac0d6f8fd6df607267f13788e891e995ced82b315ebce +TEST= 239 +KEY= 6d1cd7d9b49ed8c444545e2f3b55bea0a3de3a8ce5de9c898fa3b0eeaebcd051 +IV= 263d156ca99111a88d1d1d443c082fbead1d83b88b0e2661 +CT= 099ac0d6f8fd6df607267f13788e891e995ced82b315ebce +PT= a1aa84761d4b96af4c064600d4726719ca0df0916c871792 +TEST= 240 +KEY= e3622ad32ef03397e5feda59261e280fefd87c8c31acfb9045ae407fc23bc7c3 +IV= 855722367e5e53c282955d7686faa8d98e7efd0a9a6eeb53 +CT= a1aa84761d4b96af4c064600d4726719ca0df0916c871792 +PT= 8922b0b0513e5327314b46a244a2ced7d149044659222dd6 +TEST= 241 +KEY= a507b161f558cedc6cdc6ae977207b28de933a2e750e354794e744399b19ea15 +IV= 04d3cb84fdb7ad0dc259a02b4388be6746659bb2dba8fd4b +CT= 8922b0b0513e5327314b46a244a2ced7d149044659222dd6 +PT= cb80573506098696c96157c84fc092dc9e7a326f279edf69 +TEST= 242 +KEY= 5a9cfeda2c077ef4a75c3ddc7129fdbe17f26de63acea79b0a9d7656bc87357c +IV= ffe8c5b92d80d092a80bc6f5a3525971ff9b4fbbd95fb028 +CT= cb80573506098696c96157c84fc092dc9e7a326f279edf69 +PT= 6560fb7cc91c7644cccf07b36443cd4374e8a405065e4fc0 +TEST= 243 +KEY= 2d3bc6d317d1fa7bc23cc6a0b8358bfadb3d6a555e8d6ad87e75d253bad97abc +IV= fa3fe246bac6c6a90ea19d0e428d8ef077a738093bd6848f +CT= 6560fb7cc91c7644cccf07b36443cd4374e8a405065e4fc0 +PT= 2b2531700985bf2ee18df292a1e8cc739bd9e0a8ca58f4c9 +TEST= 244 +KEY= cd9e4d0dd353414ae919f7d0b1b034d43ab098c7ff65a6abe5ac32fb70818e75 +IV= 47cd274ebfed6eced05e3dc3008933ebe0a58bdec482bb31 +CT= 2b2531700985bf2ee18df292a1e8cc739bd9e0a8ca58f4c9 +PT= 97b717b5c0ba8eac6ea197811f082508148f48e67511449e +TEST= 245 +KEY= 82594409c13a606a7eaee065710aba7854110f46e06d83a3f1237a1d0590caeb +IV= 1321c227e6afe17efbce55099881e50d4fc7090412692120 +CT= 97b717b5c0ba8eac6ea197811f082508148f48e67511449e +PT= 52c59d14c41610ae8601f11f537971e98de372bdee7fca9a +TEST= 246 +KEY= 1e097a74c77d84712c6b7d71b51caad6d210fe59b314f24a7cc008a0ebef0071 +IV= d1c8eaabf1f664f1049994ae9fc4a36d9c503e7d0647e41b +CT= 52c59d14c41610ae8601f11f537971e98de372bdee7fca9a +PT= 0f62abd0218d235cef677d849f4258bacb27dc68739a2917 +TEST= 247 +KEY= 2ee7c36fe80df85e2309d6a19491898a3d7783dd2c56aaf0b7e7d4c898752966 +IV= 70448c1f18c45d2d795b15ab32658df430eeb91b2f707c2f +CT= 0f62abd0218d235cef677d849f4258bacb27dc68739a2917 +PT= 572bb5292785141dfe3da0f280eeb611bc3c5bc35c6f767f +TEST= 248 +KEY= edd4c4f3f724a20474226388b3149d97c34a232facb81ce10bdb8f0bc41a5f19 +IV= 06ad24013d4695c4247e4fed4b394397c333079c1f295a5a +CT= 572bb5292785141dfe3da0f280eeb611bc3c5bc35c6f767f +PT= 6a0b73cb71bc2003eab35ddc80354cb9bae9844f6b04dd37 +TEST= 249 +KEY= 213e5a4c388c96881e291043c2a8bd9429f97ef32c8d5058b1320b44af1e822e +IV= 184a01bfec50a118ab8510b61b792a50ccea9ebfcfa8348c +CT= 6a0b73cb71bc2003eab35ddc80354cb9bae9844f6b04dd37 +PT= a7c73f0cd48a30df39d6762864442d2737ba03cc47687aca +TEST= 250 +KEY= 1eca9dc5730cd78db9ee2f4f16228d4b102f08db48c97d7f86880888e876f8e4 +IV= f512168a47ef85206dea9c5d97efc4063ff4c7894b804105 +CT= a7c73f0cd48a30df39d6762864442d2737ba03cc47687aca +PT= d6a9c479e196a8abf9707efcbbe4f5e8efc0fcecc013e2c2 +TEST= 251 +KEY= e9d611d438e1402d6f47eb36f7b425e0e95f7627f32d88976948f46428651a26 +IV= 29041e010dd426dcb584ce63b7060af0f71c8c114bed97a0 +CT= d6a9c479e196a8abf9707efcbbe4f5e8efc0fcecc013e2c2 +PT= 1d0b501797d3ff2ef98389dba08378b2e5755d1dacc226e9 +TEST= 252 +KEY= b0a494a888fb168a724cbb216067dace10dcfffc53aef0258c3da97984a73ccf +IV= 735a8557aef22110ec76dba8b64cacd05972857cb01a56a7 +CT= 1d0b501797d3ff2ef98389dba08378b2e5755d1dacc226e9 +PT= f4edcff0312ed250d8fd124f786eda68e34daee5a8da55db +TEST= 253 +KEY= 62077f649a5626b586a174d15149089ec821edb32bc02a4d6f70079c2c7d6914 +IV= 241b9661453e1c0f2b001ab6c1f5e6c9d2a3ebcc12ad303f +CT= f4edcff0312ed250d8fd124f786eda68e34daee5a8da55db +PT= b141d345a71b838b2778bbf66f90725c3f114e18f6e6fc3d +TEST= 254 +KEY= 2c8b1a96bc103bae37e0a794f6528b15ef5956454450581150614984da9b9529 +IV= 34baa5de545c0aaf400dce00b95e4fc44e8c65f226461d1b +CT= b141d345a71b838b2778bbf66f90725c3f114e18f6e6fc3d +PT= 5ffe97a0c161ccfc737c3fe7540fb90161ceccde93711a50 +TEST= 255 +KEY= b2fc989a1b675ce6681e3034373347e99c2569a2105fe11031af855a49ea8f79 +IV= 0ebffee6aa6b385801ec0ad88f9f3b7a9e77820ca7776748 +CT= 5ffe97a0c161ccfc737c3fe7540fb90161ceccde93711a50 +PT= af3f809b9e2e34d7b5536bcc0a94b17aa348641fde93e38a +TEST= 256 +KEY= b32dfacf752c99eac721b0afa91d733e2976026e1acb506a92e7e14597796cf3 +IV= 1a6b7dc37c709d5a835868c7d17790f201d162556e4bc50c +CT= af3f809b9e2e34d7b5536bcc0a94b17aa348641fde93e38a +PT= d5d32c8df7586e50fe7ee9b3eb76a01c981c570523a208ec +TEST= 257 +KEY= ce56eb9500ff77a712f29c225e451d6ed708ebddf1bdf0760afbb640b4db641f +IV= ba30d157eb3e82240f5cc9a5aae00c187d7b115a75d3ee4d +CT= d5d32c8df7586e50fe7ee9b3eb76a01c981c570523a208ec +PT= 4958910f215d52b309c774f02feefcf465e9262625308fe7 +TEST= 258 +KEY= cbaf5894a193284c5baa0d2d7f184fdddecf9f2dde530c826f12906691ebebf8 +IV= d46f6924b53b885bb84ab26e89d06dd005f9b301a16c5feb +CT= 4958910f215d52b309c774f02feefcf465e9262625308fe7 +PT= 9334e433f1cab5b4728b493a0cf5e5bb5f4a14dac0f113d9 +TEST= 259 +KEY= 4d16484531b5e89ac89ee91e8ed2fa69ac44d617d2a6e939305884bc511af821 +IV= 7397c4b380bc945ac826ea9fb858e16786b910d19026c0d6 +CT= 9334e433f1cab5b4728b493a0cf5e5bb5f4a14dac0f113d9 +PT= c5cc1bf715144d52d1db0ff1de4f68b1b2b5de28bf660f80 +TEST= 260 +KEY= 0d702ad5a6df412a0d52f2e99bc6b73b7d9fd9e60ce9818882ed5a94ee7cf7a1 +IV= 90565123d27741df585cb0b64a134c5f40666290976aa9b0 +CT= c5cc1bf715144d52d1db0ff1de4f68b1b2b5de28bf660f80 +PT= b5cbe8dcb27e8f6a6b30d02e2e8f3fd4b9f45ed53a6afc69 +TEST= 261 +KEY= 32325b97dadb2f16b8991a3529b8385116af09c82266be5c3b190441d4160bc8 +IV= 0147d0706e17ecd04ee24c153542bb693f4271427c046e3c +CT= b5cbe8dcb27e8f6a6b30d02e2e8f3fd4b9f45ed53a6afc69 +PT= 147491a1fbc84cba3cfe7539451d7f5a3e3c50edb785b65c +TEST= 262 +KEY= 4693d14913cda2a8aced8b94d27074eb2a517cf1677bc106052554ac6393bd94 +IV= 8f1cfe339cdae6d4de3cd3b780b6c58674a18adec9168dbe +CT= 147491a1fbc84cba3cfe7539451d7f5a3e3c50edb785b65c +PT= e264fe0060ed550c903bbc0623a64a87255c4dd98f482923 +TEST= 263 +KEY= bd75d37ed81813814e897594b29d21e7ba6ac0f744dd8b8120791975ecdb94b7 +IV= 0ff85b486158c9e486da24e4f4af574cfbe60237cbd5b129 +CT= e264fe0060ed550c903bbc0623a64a87255c4dd98f482923 +PT= a25a83808b2cfa61a28bc7e0809d35cb9fc281dacdba9a41 +TEST= 264 +KEY= 8b4792535bbe7614ecd3f61439b1db8618e10717c440be4abfbb98af21610ef6 +IV= 5390475ed447e4b692b0456bd741c5b43632412d83a66595 +CT= a25a83808b2cfa61a28bc7e0809d35cb9fc281dacdba9a41 +PT= ecbb2904ad42dd72ec57fd9218b1313b3164d46c49aa1600 +TEST= 265 +KEY= af06480e743a3c020068df1094f306f4f4b6fa85dcf18f718edf4cc368cb18f6 +IV= 4da7231b657d5a56ac7aa5482a9572c92441da5d2f844a16 +CT= ecbb2904ad42dd72ec57fd9218b1313b3164d46c49aa1600 +PT= a4e212dc4285ff766a2ceeebf46ee9e4e64bd0a62965cee9 +TEST= 266 +KEY= c304853e723cde7fa48acdccd676f9829e9a146e289f669568949c6541aed61f +IV= 7c844585c1e5c12336d2e3ca299ff3c46c02cd300606e27d +CT= a4e212dc4285ff766a2ceeebf46ee9e4e64bd0a62965cee9 +PT= 4a9a22d5f6d4812420d85d1aae71843d0ad61cf7d075c4c3 +TEST= 267 +KEY= 472616a4fb3a5220ee10ef1920a278a6be42497486eee2a86242809291db12dc +IV= 1d41750a74fc4023d54bf264ea12d9198422939a89068c5f +CT= 4a9a22d5f6d4812420d85d1aae71843d0ad61cf7d075c4c3 +PT= 4fe73b2374940bab5ce6f1ed246a5af6715cf763e6578eb5 +TEST= 268 +KEY= cb39b173470df941a1f7d43a5436730de2a4b899a284b85e131e77f1778c9c69 +IV= 978853c9b152d08bb04f5b82691f89618c1fa7d7bc37ab61 +CT= 4fe73b2374940bab5ce6f1ed246a5af6715cf763e6578eb5 +PT= 658a4187c79334ef86f3a5640a2731e19f0630069434ee4e +TEST= 269 +KEY= b38f7b1ccaaf4009c47d95bd93a547e264571dfda8a389bf8c1847f7e3b87227 +IV= 869d5e1c3a14de7a0e3cfd2c580c2fe478b6ca6f8da2b948 +CT= 658a4187c79334ef86f3a5640a2731e19f0630069434ee4e +PT= fed5e546f9879ac52291004729a59b7f5f12225e3cb06e22 +TEST= 270 +KEY= abfaf6bd589379223aa870fb6a22dd2746c61dba810612c0d30a65a9df081c05 +IV= b12b80f906ba3791e6048dd024dfe92718758da1923c392b +CT= fed5e546f9879ac52291004729a59b7f5f12225e3cb06e22 +PT= cd0694637e552286948b7b2821d41a35af6aa8f4a2969092 +TEST= 271 +KEY= 21a1c09f288095abf7aee4981477ffa1d24d6692a0d208f57c60cd5d7d9e8c97 +IV= 6868dbf6cedc8b7f94c5a18a22fbc6028a5b36227013ec89 +CT= cd0694637e552286948b7b2821d41a35af6aa8f4a2969092 +PT= 0bf3877ce1c0eb806233137423ac673d21e90443a7905fe3 +TEST= 272 +KEY= f81bdd440b78ff23fc5d63e4f5b71421b07e75e6837e6fc85d89c91eda0ed374 +IV= 9e9ea4aa655b0be5142516fd6a4f2545d9ba1ddb23f86a88 +CT= 0bf3877ce1c0eb806233137423ac673d21e90443a7905fe3 +PT= f42355e153699b4527c0a09f07d81935c7508028064bad61 +TEST= 273 +KEY= a5b37e37d4bba916087e3605a6de8f6497bed57984a676fd9ad94936dc457e15 +IV= 8282a619671936d3c446551167ea385f5da8a373dfc35635 +CT= f42355e153699b4527c0a09f07d81935c7508028064bad61 +PT= ea3c917ab826cf4822f7dec597363143941dbee74a3417ab +TEST= 274 +KEY= 227bba15275b72fbe242a77f1ef8402cb5490bbc139047be0ec4f7d1967169be +IV= 34650c0fa80b9195b0a6d68f202becc587c8c422f3e0dbed +CT= ea3c917ab826cf4822f7dec597363143941dbee74a3417ab +PT= 37b8d01f19b21db30db7e71263cea3895f36ee7973ca8ced +TEST= 275 +KEY= 48d90e7b0c95f5c4d5fa7760074a5d9fb8feecae705ee43751f219a8e5bbe553 +IV= 0a4406f62527cb70a956aabe3bd82b0e6aa2b46e2bce873f +CT= 37b8d01f19b21db30db7e71263cea3895f36ee7973ca8ced +PT= 2ee6ac75a2f6dd2d7ed86af0e8c165d125bdb0e5c4e3a7f6 +TEST= 276 +KEY= 4a5333c06a499fd2fb1cdb15a5bc80b2c626865e989f81e6744fa94d215842a5 +IV= 089f9ab555913f3b8f9e950e37dcb4d0028a3dbb66dc6a16 +CT= 2ee6ac75a2f6dd2d7ed86af0e8c165d125bdb0e5c4e3a7f6 +PT= f453538035e9a5376802d7a15f78380d5d0d0fc9f6edb5c3 +TEST= 277 +KEY= a03788748c7e939c0f4f889590552585ae2451ffc7e7b9eb2942a684d7b5f766 +IV= 00f0838fdd7dd51a271c90d45413278bea64bbb4e6370c4e +CT= f453538035e9a5376802d7a15f78380d5d0d0fc9f6edb5c3 +PT= b70e63b99b76195e1c998b780d07a7712c38a77e17ae364e +TEST= 278 +KEY= 97652cec94bba8dcb841eb2c0b233cdbb2bdda87cae01e9a057a01fac01bc128 +IV= 0ce407bcc21cee53566fa6abdcacd3263752a49818c53b40 +CT= b70e63b99b76195e1c998b780d07a7712c38a77e17ae364e +PT= b92b6790fd92ed47bed8f2ab25a5a55939bb78d26001a60e +TEST= 279 +KEY= c90361a5fbf64143016a8cbcf6b1d19c0c65282cef45bbc33cc17928a01a6726 +IV= 8b02088d066ebab4f898b07638cb497c5e664d496f4de99f +CT= b92b6790fd92ed47bed8f2ab25a5a55939bb78d26001a60e +PT= 82f7a343043d0bdfebfee1e02a4d56b947bacd09bddd6b2d +TEST= 280 +KEY= de8b9ca6ad829bc2839d2ffff28cda43e79bc9ccc508ed7a7b7bb4211dc70c0b +IV= fc83f65fe8d9df265f699714418250461788fd035674da81 +CT= 82f7a343043d0bdfebfee1e02a4d56b947bacd09bddd6b2d +PT= 6754af6b4888c07ffb0742e2a3bf4565186d40e06c0f07f3 +TEST= 281 +KEY= 17c8b11948a38073e4c98094ba041a3c1c9c8b2e66b7a81f6316f4c171c80bf8 +IV= d8a72278525a67da0b7e1ea708439c6cc9432dbfe5211bb1 +CT= 6754af6b4888c07ffb0742e2a3bf4565186d40e06c0f07f3 +PT= ee116ef4bac19953aab46d7dc761f6ac3b8718ae491c50c2 +TEST= 282 +KEY= 5e3e7d24de9cba400ad8ee6000c5836fb628e653a1d65eb35891ec6f38d45b3a +IV= 149ea9307b1e7986f01dbf0437afc09949f6cc3d963f3a33 +CT= ee116ef4bac19953aab46d7dc761f6ac3b8718ae491c50c2 +PT= 7ddd3e2cba418295a5ed1dbeb3fbf0be97e1dd9e81e5404d +TEST= 283 +KEY= 2348c0a90196bd2d7705d04cba8401fa13c5fbed122dae0dcf7031f1b9311b77 +IV= 624bdae26b5f1872e75a059573c0aeb37d76bd8ddf0a076d +CT= 7ddd3e2cba418295a5ed1dbeb3fbf0be97e1dd9e81e5404d +PT= 676ab829252757dba384ceab5d2cad880e030798ca298064 +TEST= 284 +KEY= 24ef3dfb5ff53813106f68659fa35621b04135464f010385c173366973189b13 +IV= 4b63380aa0cb082d866d276c13643a5607a7fd525e63853e +CT= 676ab829252757dba384ceab5d2cad880e030798ca298064 +PT= 65eefbd645f1c0a2975439f0837570cc21f28d40ecdf87fc +TEST= 285 +KEY= cb2df8759c385129758193b3da52968327150cb6cc747349e081bb299fc71cef +IV= 76c02b792cdf21cd7dee2270db08722eefc2c58ec3cd693a +CT= 65eefbd645f1c0a2975439f0837570cc21f28d40ecdf87fc +PT= 5aeb0c0257a2b22513f98082bed2069ada4cae9cc25febee +TEST= 286 +KEY= 94cb9c1156abd0c62f6a9fb18df024a634ec8c3472a675d33acd15b55d98f701 +IV= e2693e843642131d1d5dfa72d0b241165fe66464ca9381ef +CT= 5aeb0c0257a2b22513f98082bed2069ada4cae9cc25febee +PT= 90885fb3d31278c9029c6ae0ad7b4d38268e937f34d072ad +TEST= 287 +KEY= fbd0ba26fb2df4a3bfe2c0025ee25c6f3670e6d4dfdd38eb1c4386ca694885ac +IV= 49d7ab7563afd6c2aa01818612446c5d6f1b2637ad862465 +CT= 90885fb3d31278c9029c6ae0ad7b4d38268e937f34d072ad +PT= 078679c808c5517edd524e8effe5d706f57334688eb4f0c5 +TEST= 288 +KEY= 76caa3f4028e9246b864b9ca56270d11eb22a85a2038efede930b2a2e7fc7569 +IV= ef94b79ae4802b29b99d28068775355f8d1a19d2f9a366e5 +CT= 078679c808c5517edd524e8effe5d706f57334688eb4f0c5 +PT= c88b417b7e324dbb980861d8f9bcdd7c952650f54ea4cea9 +TEST= 289 +KEY= 14197e49143990de70eff8b1281540aa732ac982d98432917c16e257a958bbc0 +IV= 510ed52a71fbdc2f34df49d61602403d62d3ddbd16b70298 +CT= c88b417b7e324dbb980861d8f9bcdd7c952650f54ea4cea9 +PT= d5c2cc51d8565256bd5edf0e58b55fd75019a9ece2fdc05e +TEST= 290 +KEY= 10f77ea0c702825ea52d34e0f04312fcce74168c81316d462c0f4bbb4ba57b9e +IV= 4515e4bbf792c060a88c186c90b58aaf04ee00e9d33b1280 +CT= d5c2cc51d8565256bd5edf0e58b55fd75019a9ece2fdc05e +PT= 0373a9d13ea1a9a64ed2572794a040c72e0f723eab9e3315 +TEST= 291 +KEY= 49c6ba44dd1e300da65e9d31cee2bb5a80a641ab15912d8102003985e03b488b +IV= 5a3fe7d70d990919c6789c47d88ca36d5931c4e41a1cb253 +CT= 0373a9d13ea1a9a64ed2572794a040c72e0f723eab9e3315 +PT= 8c40773e8e238c060e1b414764733533b00e464899578254 +TEST= 292 +KEY= 76e4831fd859d6ff2a1eea0f40c1375c8ebd00ec71e218b2b20e7fcd796ccadf +IV= ec81887ba697fd464bf1054effa0fed13f22395b0547e6f2 +CT= 8c40773e8e238c060e1b414764733533b00e464899578254 +PT= ecc9269c90e76e4757136956877c6bab34090f2254557cdd +TEST= 293 +KEY= 47a5ad3e4b6f3016c6d7cc93d026591bd9ae69baf69e7319860770ef2d39b602 +IV= 7228d8a6dc465430f104c524164d6de231412e219336e6e9 +CT= ecc9269c90e76e4757136956877c6bab34090f2254557cdd +PT= e8af8016e52d69780e18966a17fd23a3a705525343e06d04 +TEST= 294 +KEY= d2c382966994515a2e784c85350b3063d7b6ffd0e16350ba210222bc6ed9db06 +IV= b350f81f616ff8b42ac3320f9a4bedeb95662fa822fb614c +CT= e8af8016e52d69780e18966a17fd23a3a705525343e06d04 +PT= 1ed3c39d2618203730478181c7f063c82f660e381706001d +TEST= 295 +KEY= c67c0949d13283e530ab8f1813131054e7f17e51269333720e642c8479dfdb1b +IV= 6146bee292e4d70bee3701d7ff33220914bf8bdfb8a6d2bf +CT= 1ed3c39d2618203730478181c7f063c82f660e381706001d +PT= 10138622fcf940db1cf0414b8ca0910c08b86526b7d894be +TEST= 296 +KEY= 431b7e1078ca0d3820b8093aefea508ffb013f1aaa33a27e06dc49a2ce074fa5 +IV= 70806b219f5a15e9b3392e3c460235ec85677759a9f88edd +CT= 10138622fcf940db1cf0414b8ca0910c08b86526b7d894be +PT= 8aae3ef15fccda267cc999962ba3fee9a42c1d93ce61de16 +TEST= 297 +KEY= 21fe320f469b041caa1637cbb0268aa987c8a68c81905c97a2f05431006691b3 +IV= 2b7595800d97097ff9751484908aad4962e54c1f3e510924 +CT= 8aae3ef15fccda267cc999962ba3fee9a42c1d93ce61de16 +PT= 7544a8ce22aae9928965015d07d86e204a2ae03b349a8acf +TEST= 298 +KEY= ece5caedde1939a7df529f05928c633b0eada7d1864832b7e8dab40a34fc1b7c +IV= 64a05529d8f45b32ee81bb69684131a5cd1bf8e298823dbb +CT= 7544a8ce22aae9928965015d07d86e204a2ae03b349a8acf +PT= 73e1d5fed5068826ed48b7a84cd842f97d9424d40b450d37 +TEST= 299 +KEY= 5b68795499c49446acb34afb478aeb1de3e51079ca90704e954e90de3fb9164b +IV= 7c4ef599df933afb5b258ac2e5652832b78db3b947ddade1 +CT= 73e1d5fed5068826ed48b7a84cd842f97d9424d40b450d37 +PT= 6b057cf0369614a6196b74bffb5c4db6ae663126734dbe5a +TEST= 300 +KEY= e118084c2cee4a30c7b6360b711cffbbfa8e64c631cc3df83b28a1f84cf4a811 +IV= 1306b4aa8a4fff3bda47ddfe9137f5b9ba707118b52ade76 +CT= 6b057cf0369614a6196b74bffb5c4db6ae663126734dbe5a +PT= 1355c1f019af29e750f778f267229cf25186c64b82582d0e +TEST= 301 +KEY= 8380183565d4db72d4e3f7fb68b3d65caa791c3456eea10a6aae67b3ceac851f +IV= e86d8600108ea2f53c68413f4657c7c062981079493a9142 +CT= 1355c1f019af29e750f778f267229cf25186c64b82582d0e +PT= 026f7b649e60f2d06fae152a429fc414d5a98ea5f08c4437 +TEST= 302 +KEY= 489b757fb9aa2ad3d68c8c9ff6d3248cc5d7091e1471651ebf07e9163e20c128 +IV= 34a0511aae854597397a4706d42b616dcb1b6d4adc7ef1a1 +CT= 026f7b649e60f2d06fae152a429fc414d5a98ea5f08c4437 +PT= 0f4be9f2e0db4dfe0e684a17b3ea9983fb1a5b81fe861df9 +TEST= 303 +KEY= 6fa57d7e4d42948dd9c7656d16086972cbbf4309a79bfc9d441db297c0a6dcd1 +IV= 682a84911e3d3304e465f320f8952280273e0801f4e8be5e +CT= 0f4be9f2e0db4dfe0e684a17b3ea9983fb1a5b81fe861df9 +PT= 1af44dafe211307d28782a8382581aa04b57a554a3e29589 +TEST= 304 +KEY= aa473cc14edb2131c33328c2f419590fe3c7698a25c3e63d0f4a17c363444958 +IV= 822288bdcd0d73bf9e30d84bce7e19f2c5e241bf0399b5bc +CT= 1af44dafe211307d28782a8382581aa04b57a554a3e29589 +PT= e777f42b995c5c3d68179bfbeeddb42ef83dcef2fcdb10b5 +TEST= 305 +KEY= b29aa1a5b76a837c2444dce96d4505328bd0f271cb1e5213f777d9319f9f59ed +IV= 5f4a7cabaea1060cd92ee0ba39f722a918dd9d64f9b1a24d +CT= e777f42b995c5c3d68179bfbeeddb42ef83dcef2fcdb10b5 +PT= 053165b2a0ff274d3eb50b250ff76fe5909f8fb15be5840e +TEST= 306 +KEY= be43fd4e0523a6192175b95bcdba227fb565f954c4e93df667e85680c47adde3 +IV= 17d1e195d29f9c64ce1e4a2e7c7c8eb20cd95cebb2492565 +CT= 053165b2a0ff274d3eb50b250ff76fe5909f8fb15be5840e +PT= c2b7206c02b56d77247927adaa97d655a09b1a79944220af +TEST= 307 +KEY= 2f0f2539872804d6e3c29937cf0f4f08911cdef96e7eeba3c7734cf95038fd4c +IV= 568b44f224cf087df98b9aaa14c51f8a914cd877820ba2cf +CT= c2b7206c02b56d77247927adaa97d655a09b1a79944220af +PT= cdefd14faec3581b35a4c382225a4e614121c22843271889 +TEST= 308 +KEY= e58781da689a21922e2d487861cc1713a4b81d7b4c24a5c286528ed1131fe5c5 +IV= 2e7727c958375b7a2b94e7e73fd6d01fca88a4e3efb22544 +CT= cdefd14faec3581b35a4c382225a4e614121c22843271889 +PT= dfa31996e490c8b3336c9ad237d0dd43f4cf3f910de2f7f3 +TEST= 309 +KEY= 1e3407c78f713356f18e51ee855cdfa097d487a97bf47881729db1401efd1236 +IV= 1fbc3a4f0c305c33b8d80ba95683b703fbb3861de7eb12c4 +CT= dfa31996e490c8b3336c9ad237d0dd43f4cf3f910de2f7f3 +PT= 86b8ce37afe650fa016f90861e088ba32ec1bf60aed734b6 +TEST= 310 +KEY= c8f9e02fa97625ea77369fd92aba8f5a96bb172f65fcf3225c5c0e20b02a2680 +IV= 480d1c235cbc7db0aba880d1a650f995d6cde7e8260716bc +CT= 86b8ce37afe650fa016f90861e088ba32ec1bf60aed734b6 +PT= 104519f0ac2271ac7e0767190af8fadf71fbe334cac94f36 +TEST= 311 +KEY= 0c6f646f77c7aab8677386298698fef6e8bc70366f0409fd2da7ed147ae369b6 +IV= 64e84041575bfcf4b24f95b485705253c4968440deb18f52 +CT= 104519f0ac2271ac7e0767190af8fadf71fbe334cac94f36 +PT= 7180351fca9d2f1ad02687edc869750007a1ef6665b74357 +TEST= 312 +KEY= 4bfaa6f03cc4ad9216f3b3364c05d1ec389af7dba76d7cfd2a0602721f542ae1 +IV= 52ddd8b366a806f4ae38626c4f861a774795c29f4b03072a +CT= 7180351fca9d2f1ad02687edc869750007a1ef6665b74357 +PT= 55b875a77bf57b641fc48233dadba8b3a772efa029a4de93 +TEST= 313 +KEY= b309d9705cae4530434bc69137f0aa88275e75e87db6d44e8d74edd236f0f472 +IV= 2a169a4b50a66a1a597893aeba07c1aef8f37f80606ae8a2 +CT= 55b875a77bf57b641fc48233dadba8b3a772efa029a4de93 +PT= 7d17e2ac00beeb89b8b13e01b0cc64dcb6f10be4aa7c256d +TEST= 314 +KEY= dfd98038b21443d93e5c243d374e41019fef4be9cd7ab0923b85e6369c8cd11f +IV= f7818511c486c81cee846e91be193f9f6cd05948eeba06e9 +CT= 7d17e2ac00beeb89b8b13e01b0cc64dcb6f10be4aa7c256d +PT= fe1344d4e716790b77dd434963545c5a911ba1725f64cfac +TEST= 315 +KEY= 136c8280494896d0c04f60e9d058380ae83208a0ae2eecc8aa9e4744c3e81eb3 +IV= 303ad3efb78ab3bd7524341f310249b2ccb502b8fb5cd509 +CT= fe1344d4e716790b77dd434963545c5a911ba1725f64cfac +PT= 278c44adfed56dc97aa75ac508c24091fc2d0b70f588ce89 +TEST= 316 +KEY= db5460ff2b0c2e87e7c324442e8d55c392955265a6ecac5956b34c343660d03a +IV= fb418f8e5c096e4aa75770c23c31e110c838e27f6244b857 +CT= 278c44adfed56dc97aa75ac508c24091fc2d0b70f588ce89 +PT= 4b0d473baa4f29108486bb06dc053a8659dc231a03a5fe49 +TEST= 317 +KEY= 8231c01664ab57d6acce637f84c27cd31613e9637ae996df0f6f6f2e35c52e73 +IV= 65dd5fe4dcec03a00aa25fc715bbe2065965a0e94fa77951 +CT= 4b0d473baa4f29108486bb06dc053a8659dc231a03a5fe49 +PT= c00593cd466c52c82e89eb7c2d8bf4846534167fb9f56aab +TEST= 318 +KEY= c3ba3b06b65639fe6ccbf0b2c2ae2e1b389a021f5762625b6a5b79518c3044d8 +IV= 788808ba418f104557faf8acfa507ac0418bfb10d2fd6e28 +CT= c00593cd466c52c82e89eb7c2d8bf4846534167fb9f56aab +PT= 1806e2b4bc221111b20b6f0c25a61d61730d00b7e98bd3d0 +TEST= 319 +KEY= b4d987359c25cba074cd12067e8c3f0a8a916d1372c47f3a195679e665bb9708 +IV= 79603831d32e284ab65a297b782dd5497763bc332a73f25e +CT= 1806e2b4bc221111b20b6f0c25a61d61730d00b7e98bd3d0 +PT= d99279c0a7ac14d7e05383b19010f0bfacc73334878a6b12 +TEST= 320 +KEY= 80890b16b4f32a98ad5f6bc6d9202bdd6ac2eea2e2d48f85b5914ad2e231fc1a +IV= 2d2fa445fd651c974f6412e8d9eee48734508c2328d6e138 +CT= d99279c0a7ac14d7e05383b19010f0bfacc73334878a6b12 +PT= 302fa8928f91cead5c65285e3d2c76da2be2ed153da81e4c +TEST= 321 +KEY= a431210594c0cacd9d70c35456b1e57036a7c6fcdff8f95f9e73a7c7df99e256 +IV= d8ba1b909b685fc4b3e06dbb2ed11f7924b82a132033e055 +CT= 302fa8928f91cead5c65285e3d2c76da2be2ed153da81e4c +PT= d1ea8d58475e7929387748493bf873b06fdf1b0cbb6eb3cb +TEST= 322 +KEY= 36158b6ccedaf7684c9a4e0c11ef9c590ed08eb5e4008aeff1acbccb64f7519d +IV= 46e2f1b434eaff674112da11729344dd9224aa695a1a3da5 +CT= d1ea8d58475e7929387748493bf873b06fdf1b0cbb6eb3cb +PT= 41adc260b6f4d4486c680cc87555e60f220238bd38f654a0 +TEST= 323 +KEY= 96d4bcd394a4dff70d378c6ca71b481162b8827d91556ce0d3ae84765c01053d +IV= 10165a14632046dd3482ad8a0c76d826a0c137bf5a7e289f +CT= 41adc260b6f4d4486c680cc87555e60f220238bd38f654a0 +PT= c19d62b81099238401b333d4545fb1823a8aff722239dcec +TEST= 324 +KEY= fa5569fd438a0314ccaaeed4b7826b95630bb1a9c50add62e9247b047e38d9d1 +IV= 25ab0e7410912505db13a3ced5a2f4dd6c81d52ed72edce3 +CT= c19d62b81099238401b333d4545fb1823a8aff722239dcec +PT= 637880a1c1d5d75c0f40fa8a33a276319e6f4f3c461c17b8 +TEST= 325 +KEY= bf4b1a7d88442202afd26e757657bcc96c4b4b23f6a8ab53774b34383824ce69 +IV= 7bc8694250f063ebbea7729f77a468df451e7380cbce2116 +CT= 637880a1c1d5d75c0f40fa8a33a276319e6f4f3c461c17b8 +PT= 68ec0e417cde71c51bc446f8d5bb8188ece9c44e24d23498 +TEST= 326 +KEY= 259a8e12a80da9c9c73e60340a89cd0c778f0ddb23132adb9ba2f0761cf6faf1 +IV= cdcfcb06fff88f198c3adac495d4e5f99ad1946f20498bcb +CT= 68ec0e417cde71c51bc446f8d5bb8188ece9c44e24d23498 +PT= ee7fad1728acde7444d5cc93c4d28bbfcca4f2a65d7ab532 +TEST= 327 +KEY= 54aec690513e18fd2941cd2322251378335ac148e7c1a164570602d0418c4fc3 +IV= 1fba59d1c7fc987cd7ecb817c9f6a5dd71344882f933b134 +CT= ee7fad1728acde7444d5cc93c4d28bbfcca4f2a65d7ab532 +PT= 1f322bc208aba57c4a63e732ab74dac86868f3364f22e26a +TEST= 328 +KEY= 2479bd8b5cb3d7633673e6e12a8eb6047939267a4cb57bac3f6ef1e60eaeada9 +IV= 67c614c94f3662e9c0f15ba33f2a4b3770d77b1b0d8dcf9e +CT= 1f322bc208aba57c4a63e732ab74dac86868f3364f22e26a +PT= 61f87b59443166a3c7125c36c8524a61234f9180ef310b62 +TEST= 329 +KEY= 836eef29fc305e0f578b9db86ebfd0a7be2b7a4c84e731cd1c216066e19fa6cb +IV= 0bad4053b42ce162e4bdfa3781ec0f38a71752a2a083896c +CT= 61f87b59443166a3c7125c36c8524a61234f9180ef310b62 +PT= d5228cae6985a7b54bbd62f0b09df0c2366709df91a8d03e +TEST= 330 +KEY= 4273edeb98cc1b1882a91116073a7712f59618bc347ac10f2a4669b9703776f5 +IV= 6a78a73d22b6c8612260642c0f0348f5c11d02c264fc4517 +CT= d5228cae6985a7b54bbd62f0b09df0c2366709df91a8d03e +PT= c142962be15a2408039f932d85631a99131e4536aacafadc +TEST= 331 +KEY= bd3416d3a94b502143eb873de660531af6098b91b119db9639582c8fdafd8c29 +IV= 839c9bea09c5fbbe2c199f687f6a2758ff47fb3831874b39 +CT= c142962be15a2408039f932d85631a99131e4536aacafadc +PT= 8ec18cbc13657a1cc31cd567cb740ad8dde1d40123486657 +TEST= 332 +KEY= 7f3a7b7ae6ba40eecd2a0b81f505290635155ef67a6dd14ee4b9f88ef9b5ea7e +IV= 6c29a71b9c78ef2310461296c9514fd2c20e6da94ff110cf +CT= 8ec18cbc13657a1cc31cd567cb740ad8dde1d40123486657 +PT= 51794127e9c4a192bdbfe7ca8518f20ddaeddbdd1b701bb2 +TEST= 333 +KEY= 0cc43120ed332a3b9c534aa61cc1889488aab93cff7523433e542353e2c5f1cc +IV= f149aa3d1e5b6df51f4087300ea3360573fe4a5a0b896ad5 +CT= 51794127e9c4a192bdbfe7ca8518f20ddaeddbdd1b701bb2 +PT= ab5980df4cbbf2bc5dcc3e03c829522baf94ed87c0a051d5 +TEST= 334 +KEY= 8cff404115254f3c370aca79507a7a28d566873f375c716891c0ced42265a019 +IV= 70a68c078bcce3722cde550ed3311e82803b7161f8166507 +CT= ab5980df4cbbf2bc5dcc3e03c829522baf94ed87c0a051d5 +PT= 29fc38c68d6cb59aa7f960f4180f2e57229807e0b3a5ec1f +TEST= 335 +KEY= 5ad401057306d8991ef6f2bfdd16cfb2729fe7cb2f535f3fb358c93491c04c06 +IV= ecadba02188f5a4bc7467ef8525d43e2d62b4144662397a5 +CT= 29fc38c68d6cb59aa7f960f4180f2e57229807e0b3a5ec1f +PT= 056514078b29aecfebf5f89b0cd0592f0b967d0ff984ede0 +TEST= 336 +KEY= 41e6f52c82ca13ea1b93e6b8563f617d996a1f5023830610b8ceb43b6844a1e6 +IV= e45a020fa248292bc11e4ae1fb2f6d321b32f429f1cccb73 +CT= 056514078b29aecfebf5f89b0cd0592f0b967d0ff984ede0 +PT= f382b5d494b37c73d57cc4d42ceff53534c39d5395b3b73c +TEST= 337 +KEY= 650a22e8a6e13fe2e811536cc28c1d0e4c16db840f6cf3258c0d2968fdf716da +IV= 78ccf2784a097866dad10049a1ba1cb924ecd7c4242b2c08 +CT= f382b5d494b37c73d57cc4d42ceff53534c39d5395b3b73c +PT= 112342e55ea81f7bc0797c07243ff7e6527efdd95484896a +TEST= 338 +KEY= b1cb9bd8096409c9f93211899c2402758c6fa7832b5304c3de73d4b1a9739fb0 +IV= d1db49bec0a906acf1b8f9fbb9329981d4c1b930af85362b +CT= 112342e55ea81f7bc0797c07243ff7e6527efdd95484896a +PT= 58f1a430d88253260f02c451194777b5173dad3840fc25e6 +TEST= 339 +KEY= e96b443f0c2a8b3ba1c3b5b944a65153836d63d232147376c94e7989e98fba56 +IV= 18c259154d18e11569f84fc15d28c43658a0dfe7054e82f2 +CT= 58f1a430d88253260f02c451194777b5173dad3840fc25e6 +PT= 70dcee12cc8bde4767d4235f3a9cf3bcb7a440239ed33c51 +TEST= 340 +KEY= a377b646c1ce457fd11f5bab882d8f14e4b9408d088880ca7eea39aa775c8607 +IV= 64168beafb7a161a1ae1b664144f87184a1cf279cde4ce44 +CT= 70dcee12cc8bde4767d4235f3a9cf3bcb7a440239ed33c51 +PT= 7cdaea882973b6d6762692bbabf5adf1780d8c32a52d4639 +TEST= 341 +KEY= 7fa6718db476b34badc5b123a15e39c2929fd236a37d2d3b06e7b598d271c03e +IV= 869511abd74e864b4aa72478747a14dcdcd1c7cb75b8f634 +CT= 7cdaea882973b6d6762692bbabf5adf1780d8c32a52d4639 +PT= b8d5057703e9bc6365d704d7b721f7b8256942d93631be6a +TEST= 342 +KEY= ef6682299d0b86341510b454a2b785a1f748d6e1145cda83238ef741e4407e54 +IV= 1f416eb90e09e59d785705745513ce4990c0f3a4297d357f +CT= b8d5057703e9bc6365d704d7b721f7b8256942d93631be6a +PT= 48ea7b7f5e35457e0e019a40e4b434729fcc769ba3159b8c +TEST= 343 +KEY= 909e64b35c72adb65dfacf2bfc82c0dff9494ca1f0e8eef1bc4281da4755e5d8 +IV= 3453e6febbf0aaf57ddf70d443140c497ff8e69ac1792b82 +CT= 48ea7b7f5e35457e0e019a40e4b434729fcc769ba3159b8c +PT= c4791dc337fa6b88a04a02b3f0f9ba913d2a88e4751bb8e2 +TEST= 344 +KEY= bd95221e404bc7ce9983d2e8cb78ab5759034e12001154608168093e324e5d3a +IV= 9c2d37d9aba9dd956578c61f14a492572d0b46ad1c396a78 +CT= c4791dc337fa6b88a04a02b3f0f9ba913d2a88e4751bb8e2 +PT= 120f28d59efe2de977493bcbfed60acf16a5d232da7912fb +TEST= 345 +KEY= ac2cba3e3353d3558b8cfa3d558686be2e4a75d9fec75eaf97cddb0ce8374fc1 +IV= 39284c13653258c70fcbdcee7fcbd7c911b998207318149b +CT= 120f28d59efe2de977493bcbfed60acf16a5d232da7912fb +PT= 72478906df621b4f927c24e45d5fa2e12a73a8d0295f81f8 +TEST= 346 +KEY= a7c834f238b21ee1f9cb733b8ae49df1bc36513da398fc4ebdbe73dcc168ce39 +IV= b15859a674d7479850c70e5b6f0b3ac30be48ecc0be1cdb4 +CT= 72478906df621b4f927c24e45d5fa2e12a73a8d0295f81f8 +PT= 70d1161d1e8142db1c6dbc3cc8941956e9c343b50b93c929 +TEST= 347 +KEY= d341ea4c8669e741891a65269465df2aa05bed016b0ce518547d3069cafb0710 +IV= d7547a30561115b42082e890a80381f87489debebedbf9a0 +CT= 70d1161d1e8142db1c6dbc3cc8941956e9c343b50b93c929 +PT= 44f899e2af8e5eb367d7a9923f0b235d9b07d8514664c59c +TEST= 348 +KEY= 5e9380c3376df603cde2fcc43beb8199c78c44935407c645cf7ae8388c9fc28c +IV= 5fe721c742278f3f33277ca98f4178e68dd26a8fb1041142 +CT= 44f899e2af8e5eb367d7a9923f0b235d9b07d8514664c59c +PT= 47f6f08aa28863e3bbf2712b734800509fb2dc6b8bd9f62b +TEST= 349 +KEY= 65602dc920802aeb8a140c4e9963e27a7c7e35b8274fc61550c83453074634a7 +IV= 8eefa8cafe7c8762c0bf6b46b1da0c193bf3ad0a17eddce8 +CT= 47f6f08aa28863e3bbf2712b734800509fb2dc6b8bd9f62b +PT= 7f481d8161e1b44e0626d628cef871ee45f2eaaa305d17f3 +TEST= 350 +KEY= 3a32161efbdbdc17f55c11cff88256347a58e390e9b7b7fb153adef9371b2354 +IV= 914ed99989bea21922bbba7abef2b6e55f523bd7db5bf6fc +CT= 7f481d8161e1b44e0626d628cef871ee45f2eaaa305d17f3 +PT= 6e9413380d87b737b8456008afee2234cc9afec2ce1566ef +TEST= 351 +KEY= 4e1728aac5fe411b9bc802f7f505e103c21d8398465995cfd9a0203bf90e45bb +IV= 0d355b8ff64dcbfbca2d25952560888f74253eb43e259d0c +CT= 6e9413380d87b737b8456008afee2234cc9afec2ce1566ef +PT= 087cc1b8dbaeccc0aeaf1d66e2d56416cb6c7f48354f631f +TEST= 352 +KEY= facdba200ab82d4793b4c34f2eab2dc36cb29efea48cf1d912cc5f73cc4126a4 +IV= 7f2a23624a1a386598240eb65757ca60b4da928acf466c5c +CT= 087cc1b8dbaeccc0aeaf1d66e2d56416cb6c7f48354f631f +PT= 8345a00bd5c9a7dcd6046fa3166852b557c12f0114a1948e +TEST= 353 +KEY= 38da0d54b6d1983310f16344fb628a1fbab6f15db2e4a36c450d7072d8e0b22a +IV= adb952c100e82d4f0b1cd5fa8a74b80ac217b774bc69b574 +CT= 8345a00bd5c9a7dcd6046fa3166852b557c12f0114a1948e +PT= e1eb1aacb48f5582f36684e5175efca39eade7b66c462e80 +TEST= 354 +KEY= 6296b6b5c17b3f6af11a79e84feddf9d49d075b8a5ba5fcfdba097c4b4a69caa +IV= 41f4ad5fbbe73e0ab42746e04266dd9a5a4cbbe177aaa759 +CT= e1eb1aacb48f5582f36684e5175efca39eade7b66c462e80 +PT= 19ae659133e61e47802783c6ca65153c77375cf74f5166db +TEST= 355 +KEY= fa4ca7d6acec0f3ce8b41c797c0bc1dac9f7f67e6fdf4af3ac97cb33fbf7fa71 +IV= 437607b2bcd5d7bf6301bc106395ce8098da11636d973056 +CT= 19ae659133e61e47802783c6ca65153c77375cf74f5166db +PT= a944279cb22fdc2248c3aa151d0dfba7db735100ead72b23 +TEST= 356 +KEY= 0692da12a6d801c541f03be5ce241df881345c6b72d2b15477e49a331120d152 +IV= fb024e1af57d27e1bb2397ef140567e0fcde7dc40a340ef9 +CT= a944279cb22fdc2248c3aa151d0dfba7db735100ead72b23 +PT= 983c715a6d37affddccefdbec6cb073fe59b4f08c4cd3259 +TEST= 357 +KEY= 17b00096b89e37d6d9cc4abfa313b2055dfaa1d5b419b66b927fd53bd5ede30b +IV= 3360aef414c923a65e61c892178221311122da841e463613 +CT= 983c715a6d37affddccefdbec6cb073fe59b4f08c4cd3259 +PT= b6e74ed257d21d2d4f2d21f789b783e4388b6b0e2cc3124c +TEST= 358 +KEY= 07866d23a6fb784a6f2b046df4c1af2812d780223dae358faaf4be35f92ef147 +IV= 203b717ef9a512c0ad3e274339d8b5a610366db51e654f9c +CT= b6e74ed257d21d2d4f2d21f789b783e4388b6b0e2cc3124c +PT= 43b2f847b45fa71fab1747283fe7e6b670cf76ab5f825d52 +TEST= 359 +KEY= c764c5da04d7fddc2c99fc2a409e0837b9c0c70a0249d339da3bc89ea6acac15 +IV= 76ebd847ce804e38ebde07d7238b81abc0e2a8f9a22c8596 +CT= 43b2f847b45fa71fab1747283fe7e6b670cf76ab5f825d52 +PT= 56fbc05beb546f69a8d9f9c92494c57ad3a7d5240bd17ab2 +TEST= 360 +KEY= 3e89d6f977eba2737a623c71abca675e11193ec326dd1643099c1dbaad7dd6a7 +IV= d84b360d056e9cfca1e22a2126571af0f9ed1323733c5faf +CT= 56fbc05beb546f69a8d9f9c92494c57ad3a7d5240bd17ab2 +PT= 550b48f0dc579d7accd227e028ae83caae4c9c18c207bd22 +TEST= 361 +KEY= 5614d75fd373313c2f697481779dfa24ddcb19230e739589a7d081a26f7a6b85 +IV= faa6626484d66f97be42a5fbf44eb4e7689d01a6a498934f +CT= 550b48f0dc579d7accd227e028ae83caae4c9c18c207bd22 +PT= 397427e96c091e07551095ae49b7bc93692d7e46ae49eccd +TEST= 362 +KEY= e90c42755ccd6d42161d53681b94e42388db8c8d47c4291acefdffe4c1338748 +IV= b3c05096ca314fe97954de9ae3ece764bf18952a8fbe5c7e +CT= 397427e96c091e07551095ae49b7bc93692d7e46ae49eccd +PT= 611b4ad80826b25f7bf6f22d050ea77266a0241f71a9dcc2 +TEST= 363 +KEY= 93f9c74b2f2d3273770619b013b2567cf32d7ea042ca8e68a85ddbfbb09a5b8a +IV= f8790acba47bad890056c85f37bfec0a7af5853e73e05f31 +CT= 611b4ad80826b25f7bf6f22d050ea77266a0241f71a9dcc2 +PT= 9d748a251e2ad5a767ccef6ca192b70c5761e04ec3817494 +TEST= 364 +KEY= 449e41f0c308b430ea7293950d9883db94e191cce3583964ff3c3bb5731b2f1e +IV= 8ade3bd9d5a851d70cfe04343550e5c9d76786bbec258643 +CT= 9d748a251e2ad5a767ccef6ca192b70c5761e04ec3817494 +PT= 08fb10d175df0b597cd5e9739babf7290975ce32895323dd +TEST= 365 +KEY= 4dc6094d962875a5e289834478478882e83478bf78f3ce4df649f587fa480cc3 +IV= e368631694f3d86cb05627b14eae72b5095848bd5520c195 +CT= 08fb10d175df0b597cd5e9739babf7290975ce32895323dd +PT= 4587696b0bf4d61d49de3cf21d997bdc99f1573a7e3db760 +TEST= 366 +KEY= c29e04237f7f77f9a70eea2f73b35e9fa1ea444d656ab5916fb8a2bd8475bba3 +IV= d68ab07d59e74c3159e2ad519a1ba8388f580d6ee957025c +CT= 4587696b0bf4d61d49de3cf21d997bdc99f1573a7e3db760 +PT= acf4656792dd4eba6dd24363108cf52dbb862f8c0a4ef97c +TEST= 367 +KEY= 0bdcb9a6e846b3790bfa8f48e16e1025cc38072e75e640bcd43e8d318e3b42df +IV= ee1b6ebcfa76339956b08c54b5277affc942bd859739c480 +CT= acf4656792dd4eba6dd24363108cf52dbb862f8c0a4ef97c +PT= 3d4128e81a6a4ab05a00ecea4502e36e278ea4d13ec0f56d +TEST= 368 +KEY= f7c45559076ee0de36bba7a0fb045a959638ebc430e4a3d2f3b029e0b0fbb7b2 +IV= 12683c7f68be160055e0d3b92e72792dfc18ecffef2853a7 +CT= 3d4128e81a6a4ab05a00ecea4502e36e278ea4d13ec0f56d +PT= b81ca8166ce8303ef4b65777f112ab4dcc3c9df407eaacee +TEST= 369 +KEY= 2514ed59d011cb458ea70fb697ec6aab628ebcb3c1f6089f3f8cb414b7111b5c +IV= 2aed7fda1577c44752dc20d246a5d5e8d2d0b800d77f2b9b +CT= b81ca8166ce8303ef4b65777f112ab4dcc3c9df407eaacee +PT= 68e61aa56eeaae2f63cac2c2b57947555b25659d1d01f252 +TEST= 370 +KEY= 8fac1ac42e58a99be6411513f906c48401447e71748f4fca64a9d189aa10e90e +IV= cb3fa96cf65aeec853e8686ae3cc8220aab8f79dfe4962de +CT= 68e61aa56eeaae2f63cac2c2b57947555b25659d1d01f252 +PT= fd273430231649d3e865eed2f116eb40fb1be1caa8326ab6 +TEST= 371 +KEY= 5f8ddd0300ef6bef1b662123da108d57e92190a38599a48a9fb23043022283b8 +IV= 9a34982e6a8f503d4bf68192162318b8d021c7c72eb7c274 +CT= fd273430231649d3e865eed2f116eb40fb1be1caa8326ab6 +PT= bb71fdfeae5f8941e21a96f93f085d79d721c8b936534669 +TEST= 372 +KEY= 7312f589b271c814a017dcdd744f04160b3b065aba91f9f34893f8fa3471c5d1 +IV= 1d0f3084fe953f867a69a19783c552e52c9f288ab29ea3fb +CT= bb71fdfeae5f8941e21a96f93f085d79d721c8b936534669 +PT= e99f0a4643c0f08ad572f50d99718327a185a729b7a2db31 +TEST= 373 +KEY= f79cb4f0c83ba6bc4988d69b378ff49cde49f35723e07ad4e9165fd383d31ee0 +IV= ceb9d76075c00b536146f1592e9dd98e848e41797a4a6ea8 +CT= e99f0a4643c0f08ad572f50d99718327a185a729b7a2db31 +PT= ed29eb516a5b5e548013c1ffc66d476fc62460a6132fb829 +TEST= 374 +KEY= 87d59529dc1d3fb0a4a13dca5dd4aac85e5a32a8e58d3dbb2f323f7590fca6c9 +IV= a0abcbeb552e2b7768bab7bc645ce799704921d91426990c +CT= ed29eb516a5b5e548013c1ffc66d476fc62460a6132fb829 +PT= 449c7e335c309942255cbd7cac078d5df02d0aaf9240afe7 +TEST= 375 +KEY= b89a2abda3dff623e03d43f901e4338a7b068fd4498ab0e6df1f35da02bc092e +IV= cf1682879e3d0a549b043bf6981277e73f4fbf947fc2c993 +CT= 449c7e335c309942255cbd7cac078d5df02d0aaf9240afe7 +PT= 93ca6afa795531eebc2bfd80f9d4028ca10ae91c453bb0fb +TEST= 376 +KEY= 9a6bc2007161b36173f7290378b10264c72d7254b05eb26a7e15dcc64787b9d5 +IV= b6fc7caac1da153f35f1ad3f41aa940a22f1e8bdd2be4542 +CT= 93ca6afa795531eebc2bfd80f9d4028ca10ae91c453bb0fb +PT= c5d46d83c8620bf7b7c6bc130d4456ffc5ac89b58e5f19a9 +TEST= 377 +KEY= 04c3249164224047b6234480b0d3099370ebce47bd1ae495bbb95573c9d8a07c +IV= 7d3a5a0358c9610bc51027782268154c9ea8e6911543f326 +CT= c5d46d83c8620bf7b7c6bc130d4456ffc5ac89b58e5f19a9 +PT= 1ea9ce747dfcc23e4144e3c682d89b0e413fb64bba552485 +TEST= 378 +KEY= 6761149821a56892a88a8af4cd2fcbad31af2d813fc27f9bfa86e338738d84f9 +IV= ab7c41e3033d1488270fae88aeb872cd63a23009458728d5 +CT= 1ea9ce747dfcc23e4144e3c682d89b0e413fb64bba552485 +PT= b3b4198d73a7ad206bdd2a1d23bbd16025df56262d93cc4d +TEST= 379 +KEY= 81f51ba2a620218b1b3e9379be88668d5a72079c1c79aefbdf59b51e5e1e48b4 +IV= 56969771884668a1bb5ca21874f61d9ce6940f3a87854919 +CT= b3b4198d73a7ad206bdd2a1d23bbd16025df56262d93cc4d +PT= a96088b037c4d7be82beea3ae0affba4cae22c6a1e778ec5 +TEST= 380 +KEY= 07d4c7d6434a817db25e1bc9894cb133d8cceda6fcd6555f15bb99744069c671 +IV= 2295d4567b61e76cdee683d11d91d1948621dc74e56aa0f6 +CT= a96088b037c4d7be82beea3ae0affba4cae22c6a1e778ec5 +PT= 52ca46ef652c700c77ead667ca8a666dcc7e218f694a1484 +TEST= 381 +KEY= e1e450086ce0050ae0945d26ec60c13faf263bc1365c3332d9c5b8fb2923d2f5 +IV= c7414d283a248c4ea7d69f395f22c341e63097de2faa8477 +CT= 52ca46ef652c700c77ead667ca8a666dcc7e218f694a1484 +PT= 8931a4dbe1ac274e342deac2cc05bac85e8ea1e0c652e94c +TEST= 382 +KEY= 7f22bc18c494abfb69a5f9fd0dcce6719b0bd103fa5989fa874b191bef713bb9 +IV= ea311c26204cdc3d0842154493e0402d9ec6ec10a874aef1 +CT= 8931a4dbe1ac274e342deac2cc05bac85e8ea1e0c652e94c +PT= b5a124a82c4adfb36e1b2a803531fdc50194d373beb9319c +TEST= 383 +KEY= 580bd2a09c2e33afdc04dd55218639c2f510fb83cf68743f86dfca6851c80a25 +IV= 326bafe0768114722153ca55fbb3f54d27296eb858ba9854 +CT= b5a124a82c4adfb36e1b2a803531fdc50194d373beb9319c +PT= 9e4766867a1bf5a797dd252edf755543742a3952f6235e2f +TEST= 384 +KEY= debc7e6544e1ea4b4243bbd35b9dcc6562cddead101d217cf2f5f33aa7eb540a +IV= 77b20bb2d06379dd928d5c4c8588579486b7acc5d8cfd9e4 +CT= 9e4766867a1bf5a797dd252edf755543742a3952f6235e2f +PT= b880f02f4cdddba33883f820596a0df676045ab8e5109d5f +TEST= 385 +KEY= e4bec609281355eafac34bfc174017c65a4e268d49772c8a84f1a98242fbc955 +IV= bf7462052b45e38d807915f9b078002b3a02b86c6cf2bfa1 +CT= b880f02f4cdddba33883f820596a0df676045ab8e5109d5f +PT= c648a56890e02aa5b489a6da7f4bae6cfc58a1f7b6f92627 +TEST= 386 +KEY= 9568ab0523a62c0f3c8bee9487a03d63eec78057363c82e678a90875f402ef72 +IV= 6d3e5b93e43c675669dd63e5d5f093c471d66d0c0bb579e5 +CT= c648a56890e02aa5b489a6da7f4bae6cfc58a1f7b6f92627 +PT= 4cfb046c3af80780e4a62f56bfbe8861d2f8cf276f396821 +TEST= 387 +KEY= 219d4b74f5ee322b7070eaf8bd583ae30a61af0189820a87aa51c7529b3b8753 +IV= 39f4e2c64686f67ed75934648c737663b4f5e071d6481e24 +CT= 4cfb046c3af80780e4a62f56bfbe8861d2f8cf276f396821 +PT= 438f34407c01c2a5c84edf58fddbcad292aea6fb75d8e6cd +TEST= 388 +KEY= 636e849b1d18680233ffdeb8c159f846c22f70597459c05538ff61a9eee3619e +IV= a215ddd903d3f65875b0b4b614d035d142f3cfefe8f65a29 +CT= 438f34407c01c2a5c84edf58fddbcad292aea6fb75d8e6cd +PT= 0fedf601fa08fc9c467f04c6da61a4cf44926780ee711eb0 +TEST= 389 +KEY= 290eab8984adfcf73c1228b93b5104da8450749fae38649a7c6d062900927f2e +IV= cbbc5c3f8d926e48923f40af22c56ce44a602f1299b594f5 +CT= 0fedf601fa08fc9c467f04c6da61a4cf44926780ee711eb0 +PT= 4464aa0963e5ee9bac644dc2252239caec0158489f736c02 +TEST= 390 +KEY= d4ae72062bcd38ac787682b058b4ea412834395d8b1a5d50906c5e619fe1132c +IV= 0b75c1f491697147fa61fcd5d1e93b1dfda0d98faf60c45b +CT= 4464aa0963e5ee9bac644dc2252239caec0158489f736c02 +PT= 4e6e48ad7fc6a5ac9d13d78fd14e959e829c505916cedb1c +TEST= 391 +KEY= ee1950c80319e5f83618ca1d27724fedb527eed25a54c8ce12f00e38892fc830 +IV= 3c93ad112b77329bc9da869cd4c4e0343ab722ce28d4dd54 +CT= 4e6e48ad7fc6a5ac9d13d78fd14e959e829c505916cedb1c +PT= 2435ecdcffff3787739c990c4f5f8cbe4197f5b8dffefbde +TEST= 392 +KEY= 2a180b647b519a89122d26c1d88d786ac6bb77de150b44705367fb8056d133ee +IV= dbf6a91113b56c9c82fcfee748a78365c4015bac78487f71 +CT= 2435ecdcffff3787739c990c4f5f8cbe4197f5b8dffefbde +PT= f6e47783217c2898e95f27145d05d956e5956c31672c90f0 +TEST= 393 +KEY= 9d992d612cfe432fe4c95142f9f150f22fe450ca480e9d26b6f297b131fda31e +IV= 68cd87aae2c9993b8adff3edfd53ee07b781260557afd9a6 +CT= f6e47783217c2898e95f27145d05d956e5956c31672c90f0 +PT= 1ba2863abd30f1c2cf34316ebcde4a4210c2b765aa9fd4d5 +TEST= 394 +KEY= 92ea1be9eac1d180ff6bd77844c1a130e0d061a4f4d0d764a63020d49b6277cb +IV= 01ac45abbc30843baa73a56ee2bacef50f733688c63f92af +CT= 1ba2863abd30f1c2cf34316ebcde4a4210c2b765aa9fd4d5 +PT= 73d6fb417508b3381fb5d227894785de57559dcc0919bbbc +TEST= 395 +KEY= e971a719bf33ad9f8cbd2c3931c91208ff65b3837d9752baf165bd18927bcc77 +IV= 737d8d661e771ec75619c9696aa81fae7b9bbcf055f27c1f +CT= 73d6fb417508b3381fb5d227894785de57559dcc0919bbbc +PT= 7692a532789e6e1377cfb65ba4e4913a76a01e20a374fee4 +TEST= 396 +KEY= 7ac32d9d0a3c04b3fa2f890b49577c1b88aa05d8d973c38087c5a338310f3293 +IV= 2dabb99a238494078725b6948016053493b28a84b50fa92c +CT= 7692a532789e6e1377cfb65ba4e4913a76a01e20a374fee4 +PT= 5db7efa6c3bbc4bcb3d4731287d0e58f6ee8bc1562680fc7 +TEST= 397 +KEY= 5d3f6d3716447197a79866ad8aecb8a73b7e76ca5ea3260fe92d1f2d53673d54 +IV= c6ef4e042b8f1d01112d3ef1f1474a9e27fc40aa1c787524 +CT= 5db7efa6c3bbc4bcb3d4731287d0e58f6ee8bc1562680fc7 +PT= e9cd11cc8fefd8d59f66e5c466af369b815ead655fd4a578 +TEST= 398 +KEY= 976650ab9114ed284e55776105036072a418930e380c10946873b2480cb3982c +IV= c049d4d16bdbfc9dd35eeb67cd8ce96eca593d9c87509cbf +CT= e9cd11cc8fefd8d59f66e5c466af369b815ead655fd4a578 +PT= a7350d65ee92ac0179444a5c98413fd3fbb8de02df3c26ff +TEST= 399 +KEY= fc45e7d8289ca8c0e9607a04eb91cc73dd5cd952a04d2f4793cb6c4ad38fbed3 +IV= 480e5049d54c13a7c4564909b361b5d36b23b773b98845e8 +CT= a7350d65ee92ac0179444a5c98413fd3fbb8de02df3c26ff +PT= acc61239969173d077b0a9784404df2f2a76190e898b2922 diff --git a/flint/test/testvals/cbcmd84.txt b/flint/test/testvals/cbcmd84.txt new file mode 100644 index 0000000..9092a56 --- /dev/null +++ b/flint/test/testvals/cbcmd84.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 744f8aedcae33c52c267b57a996986a0a1432b39af98e19a28ea1d0aa837297f +TEST= 1 +KEY= a1432b39af98e19a28ea1d0aa837297f +IV= 4a79eb4a4e522b4c0a6f55887f228e8b8dc84434f89d98ebbb4a377e3ccce419 +CT= 744f8aedcae33c52c267b57a996986a0a1432b39af98e19a28ea1d0aa837297f +PT= 4a3722ad9e7c009e8073046ee24520172e43e541d505689e6f9b75d68faad4d3 +TEST= 2 +KEY= 8f00ce787a9d8904477168dc279dfdac +IV= 7e92046eb79a3e58d9519455f73251af56b087399175929aadc31c223313bdee +CT= 4a3722ad9e7c009e8073046ee24520172e43e541d505689e6f9b75d68faad4d3 +PT= 70a54373de6eba0666e447b47152044af3e6fa4aab778423702f282402e3d58b +TEST= 3 +KEY= 7ce63432d1ea0d27375e40f8257e2827 +IV= 0c1817e6dfe4ab84b53df015f5fc9e169f0904a58a71fe149bcc261bab3c8177 +CT= 70a54373de6eba0666e447b47152044af3e6fa4aab778423702f282402e3d58b +PT= 57a77acea1d189d8498f5f9b4f55c5f368e8ca2f5218dceb462a28a17f2bd0ba +TEST= 4 +KEY= 140efe1d83f2d1cc717468595a55f89d +IV= 49520d373273147230459d38f295c7b4d440d42a9767f0a12bc11563d5340c1d +CT= 57a77acea1d189d8498f5f9b4f55c5f368e8ca2f5218dceb462a28a17f2bd0ba +PT= 9e77be9aadeba009a0f41570b81c0e306d53058ce128504ef847217f0a667de3 +TEST= 5 +KEY= 795dfb9162da8182893349265033857e +IV= 99a072a854d5f4cc5659e7becf1989a68381ed59b96ddd741727299618216d37 +CT= 9e77be9aadeba009a0f41570b81c0e306d53058ce128504ef847217f0a667de3 +PT= fcd4001a8fa4b0d8a70520ac0305e9f0658ba336517971991a563dc6af6a5a47 +TEST= 6 +KEY= 1cd658a733a3f01b936574e0ff59df39 +IV= afe43852abdc5d5c4c2bd57624a97394edd57afb7f1851cee75ec67673290382 +CT= fcd4001a8fa4b0d8a70520ac0305e9f0658ba336517971991a563dc6af6a5a47 +PT= 717969a59a4c38421a0059a0bb0b97df1a6f3b5093173d4de0fb02cbd6bdd2c8 +TEST= 7 +KEY= 06b963f7a0b4cd56739e762b29e40df1 +IV= a889e0ad52f703a6b1220acf3b57dacac5d31bc567738121e2ad4cd9a950f9e5 +CT= 717969a59a4c38421a0059a0bb0b97df1a6f3b5093173d4de0fb02cbd6bdd2c8 +PT= 413506a0c3a9fc5a110b1131ded8b467d6ef85b0728321510bd1f293a88d60fd +TEST= 8 +KEY= d056e647d237ec07784f84b881696d0c +IV= 8a11fdd90d680c8f160cf628e03cbd6c33e02e6d1d8eefefe08b1cbacac6856d +CT= 413506a0c3a9fc5a110b1131ded8b467d6ef85b0728321510bd1f293a88d60fd +PT= 0121d12d4ea3396ea27bb33947934c9b516fbbf0b39e4ff7b08c14726dd37697 +TEST= 9 +KEY= 81395db761a9a3f0c8c390caecba1b9b +IV= 488ce37a0043d90701fa70b42b530d8063d0bbe5d996e1a9345b7a9d739dcba4 +CT= 0121d12d4ea3396ea27bb33947934c9b516fbbf0b39e4ff7b08c14726dd37697 +PT= 4aa144bcec1a2593ddb60aa9d91a95afacca378eb2f187aa144d4bcaf0baa553 +TEST= 10 +KEY= 2df36a39d358245adc8edb001c00bec8 +IV= c06c72a572142caa3476013650f9205e0c9562a4e8dbe4f7f88613d6a8e4b7dd +CT= 4aa144bcec1a2593ddb60aa9d91a95afacca378eb2f187aa144d4bcaf0baa553 +PT= ddb49424f22594a6ac61da174d8d1e994d34b9592f329c4d0d6640703ac5303b +TEST= 11 +KEY= 60c7d360fc6ab817d1e89b7026c58ef3 +IV= 92123fc0d4cf215f6440460bf6ca75ca362c848de541a0a968900b34edf3d096 +CT= ddb49424f22594a6ac61da174d8d1e994d34b9592f329c4d0d6640703ac5303b +PT= 2f2814ed96727ef6374b0ca109b7cf405db25debffa7faac9542f41785ba3f68 +TEST= 12 +KEY= 3d758e8b03cd42bb44aa6f67a37fb19b +IV= 7d29af7a243fc45f7a099e6aedc7963562761fd7717cd48d37204b82bdcddfaf +CT= 2f2814ed96727ef6374b0ca109b7cf405db25debffa7faac9542f41785ba3f68 +PT= c8e8182628f806696e89ab5ae88eb907bc8e622ab1c9aa9ce73e43a753638a7b +TEST= 13 +KEY= 81fbeca1b204e827a3942cc0f01c3be0 +IV= 44d3a68c2716377ecb76149a35b076f25a20c6c3c78a82aab577111214b6e208 +CT= c8e8182628f806696e89ab5ae88eb907bc8e622ab1c9aa9ce73e43a753638a7b +PT= 455d645518d6331226f86b12b2a7b367b57b621e43e46a66b11499a886731412 +TEST= 14 +KEY= 34808ebff1e082411280b568766f2ff2 +IV= f6c0afd71e688bd6b85aa2d473bb681cf59f878d2e6c6d85eb03215a8e29e1dc +CT= 455d645518d6331226f86b12b2a7b367b57b621e43e46a66b11499a886731412 +PT= 020f95eb290995a8bd88b49cdf0185d03e42dff365f80db7977583d55289cd84 +TEST= 15 +KEY= 0ac2514c94188ff685f536bd24e6e276 +IV= 9f14e3e6b1a6af9ef1eb9cee1c5c62f569fbacc172897de5c6a630ebc22de50a +CT= 020f95eb290995a8bd88b49cdf0185d03e42dff365f80db7977583d55289cd84 +PT= a956f5e1aa62afe36005039c8fd13731a7312e849ebee8df96c65a0727a86c9a +TEST= 16 +KEY= adf37fc80aa6672913336cba034e8eec +IV= 41424df45433944819966dba4471d51aaba50710955f74caff984eeb11215581 +CT= a956f5e1aa62afe36005039c8fd13731a7312e849ebee8df96c65a0727a86c9a +PT= 8124276bef6e31e0c42008b4b9dfa0d730c0b9230431f2ee7c3cc5df794f4288 +TEST= 17 +KEY= 9d33c6eb0e9795c76f0fa9657a01cc64 +IV= a819ce88e8fa5c61868bbe0bf89cd11e2b2be105498e7b58008a64b9997ecf9f +CT= 8124276bef6e31e0c42008b4b9dfa0d730c0b9230431f2ee7c3cc5df794f4288 +PT= 45ee45c752527d9b90f24f144fc554afdf2c849e4a5bfe03c37b7c0f74c09f08 +TEST= 18 +KEY= 421f427544cc6bc4ac74d56a0ec1536c +IV= 471c1d9499d4919566aceb06f6bff3666bf2bdaa9092a6dc81443c121453e3cc +CT= 45ee45c752527d9b90f24f144fc554afdf2c849e4a5bfe03c37b7c0f74c09f08 +PT= a242aaf14061159169f15a13882245caf2eca33e6566be4e55b3b772a41894dc +TEST= 19 +KEY= b0f3e14b21aad58af9c76218aad9c7b0 +IV= a5716833d242be38ed8a511ff9a4caa5feacbf9b6a0a97b5fb628e4cc3b949b3 +CT= a242aaf14061159169f15a13882245caf2eca33e6566be4e55b3b772a41894dc +PT= c843c9fade5283f55fbb1eb1e4213683b7add3c58c303c9c01e8f62d72c3421a +TEST= 20 +KEY= 075e328ead9ae916f82f9435d81a85aa +IV= d34a502ca466b8670ad78f52d059a2c22288eb238b9dcacca2fa4734d90fe997 +CT= c843c9fade5283f55fbb1eb1e4213683b7add3c58c303c9c01e8f62d72c3421a +PT= 2eda8295cdb813ad9114d9ec3d403ae3fa9a0ab31e46cc95fca50335ccb80147 +TEST= 21 +KEY= fdc4383db3dc2583048a970014a284ed +IV= 9af4f51e25284d4a4074fd53746d6d507e3faef1973f158caf47afb32836088b +CT= 2eda8295cdb813ad9114d9ec3d403ae3fa9a0ab31e46cc95fca50335ccb80147 +PT= c26dba1cc9e2834b56077b6b2e697e2c9b26f6b34173c5ff83be2df23c9acf41 +TEST= 22 +KEY= 66e2ce8ef2afe07c8734baf228384bac +IV= 8520ca1c468648c69407ac269b4b782891000dcecfbf306fa13027067cec0c73 +CT= c26dba1cc9e2834b56077b6b2e697e2c9b26f6b34173c5ff83be2df23c9acf41 +PT= b2da45e350c17563226c0ae44ad6dc8d531c34542eb1887b3c2bfeb4923119ea +TEST= 23 +KEY= 35fefadadc1e6807bb1f4446ba095246 +IV= e059bbeea0771e09505ddd144ea62907250b8a3c8f2487f470aa5110502f6461 +CT= b2da45e350c17563226c0ae44ad6dc8d531c34542eb1887b3c2bfeb4923119ea +PT= 26e996bd1d954e3de2c1ed263cc1b414fae6e6103041e8ec5f7aeba977b1b602 +TEST= 24 +KEY= cf181ccaec5f80ebe465afefcdb8e444 +IV= e3464ca947a7ef12e9e549e1c96b4de74b57c36ea2badd4097b55429141d6257 +CT= 26e996bd1d954e3de2c1ed263cc1b414fae6e6103041e8ec5f7aeba977b1b602 +PT= 106d792ce547307609e8843e6fc27064ce2568aaccb178a97cf85bfb3efbb5a0 +TEST= 25 +KEY= 013d746020eef842989df414f34351e4 +IV= 3fde6d716963d677c2b2521094688d7df5ef25f55093b47261291b031eaeb38b +CT= 106d792ce547307609e8843e6fc27064ce2568aaccb178a97cf85bfb3efbb5a0 +PT= e63981c98a9c9b672c5b1c149b475f4b4de6f478ff9e030598a29af2066158f2 +TEST= 26 +KEY= 4cdb8018df70fb47003f6ee6f5220916 +IV= c5e8df9abfb7be4390e4e39fb31f1d2d19474da3d819bbf081a976671a9daa61 +CT= e63981c98a9c9b672c5b1c149b475f4b4de6f478ff9e030598a29af2066158f2 +PT= d418b75d4ebf2b313cbaf0ccb7499b7eb01943f77aad34fcc169c42f1be0295a +TEST= 27 +KEY= fcc2c3efa5ddcfbbc156aac9eec2204c +IV= 8d7c8e3390fb4ecc89dbde472e1fd9995fd2a6f71dc833c60ac3ec042e6dcec1 +CT= d418b75d4ebf2b313cbaf0ccb7499b7eb01943f77aad34fcc169c42f1be0295a +PT= bcb04b237fce784b6d0eba0038ab126c335865a5d12ca612c1615b756d33e702 +TEST= 28 +KEY= cf9aa64a74f169a90037f1bc83f1c74e +IV= 3080be21cf00917b30686ebd6dcfefe984c27cce9d80ae4942c60be4ac6ea6fc +CT= bcb04b237fce784b6d0eba0038ab126c335865a5d12ca612c1615b756d33e702 +PT= d494caf8ce1d9e176ca7c0009a338e44ff09975bc3dbbe78211b2b09cab41067 +TEST= 29 +KEY= 30933111b72ad7d1212cdab54945d729 +IV= 4838866034987acf43e93cbf77f454c965fb80c2b6f5cf69cbd7a005a4f97f67 +CT= d494caf8ce1d9e176ca7c0009a338e44ff09975bc3dbbe78211b2b09cab41067 +PT= 4604032d77ed1a686862fd882801d3509fe4da5edd0c992cb6f6e4c1d2e507c5 +TEST= 30 +KEY= af77eb4f6a264efd97da3e749ba0d0ec +IV= 7fce037379b8e51263f054449d053473cb3c39a339080e75be3dade79f31b49e +CT= 4604032d77ed1a686862fd882801d3509fe4da5edd0c992cb6f6e4c1d2e507c5 +PT= 114a68d2300153497eaa4f2845552a3064ea80520d46f8a018f800f9a6eeb001 +TEST= 31 +KEY= cb9d6b1d6760b65d8f223e8d3d4e60ed +IV= b22c2355691759ad11f1ad1a85ca34d5323d432db1198fd8efec0107354c4881 +CT= 114a68d2300153497eaa4f2845552a3064ea80520d46f8a018f800f9a6eeb001 +PT= b064950342a81ad824bc1d2ae0b31f7b48c8127274303ab228e80bc5ede46b7f +TEST= 32 +KEY= 8355796f13508cefa7ca3548d0aa0b92 +IV= 964178abbaa1b1afc72fa9c6878ca04ad9f46b0f60b90bee47d7767b97500d25 +CT= b064950342a81ad824bc1d2ae0b31f7b48c8127274303ab228e80bc5ede46b7f +PT= 27f8ba01068757ac1a31c4e9f471bd7297d5daa9dfe3a6a56b448ac2d6d63ce4 +TEST= 33 +KEY= 1480a3c6ccb32a4acc8ebf8a067c3776 +IV= a5bfe229ded7d54c414949cfcf019f609c193f503bda4e6d68dc9f1370ac135f +CT= 27f8ba01068757ac1a31c4e9f471bd7297d5daa9dfe3a6a56b448ac2d6d63ce4 +PT= 62ac1445a27fce4f3f00e0060d623d4021621bd5c67d8f02b394aacf8e40631b +TEST= 34 +KEY= 35e2b8130acea5487f1a1545883c546d +IV= 92e76544b0fc21bad6a13cf03dde7aa11d9ea6b103b4cb35a2d2b7750e0178f1 +CT= 62ac1445a27fce4f3f00e0060d623d4021621bd5c67d8f02b394aacf8e40631b +PT= 05614221c5bff28bba244b334c63bca3c630e873e41cc9746639903efac95734 +TEST= 35 +KEY= f3d25060eed26c3c1923857b72f50359 +IV= a56f15eed6d658cdcc3a88a8b0c7676470099aabb1798e850b67929698a49f6d +CT= 05614221c5bff28bba244b334c63bca3c630e873e41cc9746639903efac95734 +PT= c1daf76b977e63842e3a25906c4e6421901a8ea41c750bce42645c62ad45ac3b +TEST= 36 +KEY= 63c8dec4f2a767f25b47d919dfb0af62 +IV= efc293008921a9d067e3b15181d0a27e116bba06766d5855ef68e3dac94871ad +CT= c1daf76b977e63842e3a25906c4e6421901a8ea41c750bce42645c62ad45ac3b +PT= 1ad73bbf073f55cff1161759636fcb4fc32d2c9bb4415d7d038c4fd30b67482a +TEST= 37 +KEY= a0e5f25f46e63a8f58cb96cad4d7e748 +IV= e6e7211050ec019bd67fee99b1cb725ef1fd571936bc9adf52befc2b59fa3689 +CT= 1ad73bbf073f55cff1161759636fcb4fc32d2c9bb4415d7d038c4fd30b67482a +PT= d2995e34a214c6a5ec5a005233e24d1bd627194e23b6b3b2d00f3e051098351c +TEST= 38 +KEY= 76c2eb116550893d88c4a8cfc44fd254 +IV= 376ab47abb047cfdb10c90a0eecd640fce3bf879522c86e5fa3497cb88c30928 +CT= d2995e34a214c6a5ec5a005233e24d1bd627194e23b6b3b2d00f3e051098351c +PT= 6296710f61677768ce16655d49f4b0100b9cb4759eb9f0bbd7a0fe542a64803a +TEST= 39 +KEY= 7d5e5f64fbe979865f64569bee2b526e +IV= eeb65016e2ab032ac81e4952109bb4337bc9cabe251594d264c2242589cfc69a +CT= 6296710f61677768ce16655d49f4b0100b9cb4759eb9f0bbd7a0fe542a64803a +PT= 16b739bde3e5b236994695f58b10f8ed818dc2cad394e81227088b95ea4c27ea +TEST= 40 +KEY= fcd39dae287d9194786cdd0e04677584 +IV= 75331a57803f191fef2fa88444cc9678e12a80a9ad8fe10e2ba7258f23c4140b +CT= 16b739bde3e5b236994695f58b10f8ed818dc2cad394e81227088b95ea4c27ea +PT= 1bf1ba75b859c6af22644d40925528c1a8b94546a859d04faa76be7fddc95576 +TEST= 41 +KEY= 546ad8e8802441dbd21a6371d9ae20f2 +IV= 41fb118c0f4facb6dff04023e1fa2844729ccee232592e53219557e645797a74 +CT= 1bf1ba75b859c6af22644d40925528c1a8b94546a859d04faa76be7fddc95576 +PT= a87140bfebef1b2adc219b81c1ebb59057abe7f592ede09b23e27dbd643b67a7 +TEST= 42 +KEY= 03c13f1d12c9a140f1f81eccbd954755 +IV= 4700cd065b394cc48d782f2dc64f694300970f721c665c35ae39a4a358d1b0bd +CT= a87140bfebef1b2adc219b81c1ebb59057abe7f592ede09b23e27dbd643b67a7 +PT= db2b149053d310b876e7a929b491c1e2fd14484029ab50634318eb06d8caec72 +TEST= 43 +KEY= fed5775d3b62f123b2e0f5ca655fab27 +IV= 2a838fcf711a918ddb0b8b3bb6f591260c4acbdc8a628775ab761d5a950021dc +CT= db2b149053d310b876e7a929b491c1e2fd14484029ab50634318eb06d8caec72 +PT= 712f442354e89446fe15f2f7319c56bf908bd62964aa077f1c7878c8770f0d9d +TEST= 44 +KEY= 6e5ea1745fc8f65cae988d021250a6ba +IV= 06636029f269dadd6352cee0090c3b0b656dd817cc90dbe861a643a7ef03269e +CT= 712f442354e89446fe15f2f7319c56bf908bd62964aa077f1c7878c8770f0d9d +PT= ceb51b43cef6780a6f3f4e6eaa1a084de1b1dc3e972a1811c3eb1b05cacb855c +TEST= 45 +KEY= 8fef7d4ac8e2ee4d6d739607d89b23e6 +IV= 12afb70d934611f7c80aeeddbf619eca63a9e2d0ae385fa813689d6ca771ecaa +CT= ceb51b43cef6780a6f3f4e6eaa1a084de1b1dc3e972a1811c3eb1b05cacb855c +PT= 44633434dbb3e226ca3f117311a93bf0d54a711b6a133222d54e0477a25994a2 +TEST= 46 +KEY= 5aa50c51a2f1dc6fb83d92707ac2b744 +IV= ffdf4f2db2d91995d6a947453c004739545e6232714da2bc4cce8ba28c9f3f63 +CT= 44633434dbb3e226ca3f117311a93bf0d54a711b6a133222d54e0477a25994a2 +PT= 87ae7574495f60460f21e306c0def48fca4c1d9ab8f248d1a3e0ce1ec83caefb +TEST= 47 +KEY= 90e911cb1a0394be1bdd5c6eb2fe19bf +IV= 82df8db8d1d42a2ee618eccf17786059e2f2979daff71bdeebe5c49a18f07f45 +CT= 87ae7574495f60460f21e306c0def48fca4c1d9ab8f248d1a3e0ce1ec83caefb +PT= ad0c6db4aa1d0f62217e20823b8aee09ee972041abb2f3c5a79fc93473b60a45 +TEST= 48 +KEY= 7e7e318ab1b1677bbc42955ac14813fa +IV= e0829103b75339abf2d01e8260f4ae03a9be693db8db6353690d8f599a6f33c5 +CT= ad0c6db4aa1d0f62217e20823b8aee09ee972041abb2f3c5a79fc93473b60a45 +PT= 69580f3e0465d63c4b39b5d64cec99b581a95f17e521efe2da67e5ed740b56bf +TEST= 49 +KEY= ffd76e9d54908899662570b7b5434545 +IV= 4bb298f3491c237cd5f3c7891dde6956fbf0e51a777ca79dfa486bf055fc09c0 +CT= 69580f3e0465d63c4b39b5d64cec99b581a95f17e521efe2da67e5ed740b56bf +PT= 80780afb91df5c3ea832e566f54ac42bd1cdbc60dba4f401d6d871b4d7c1aec5 +TEST= 50 +KEY= 2e1ad2fd8f347c98b0fd01036282eb80 +IV= b9a2caaf9bfc8c11d9725bf146ad9644d2d7a20f5e12d49cc1adc449ca8728b4 +CT= 80780afb91df5c3ea832e566f54ac42bd1cdbc60dba4f401d6d871b4d7c1aec5 +PT= 31b62764b415d6d851f424f8a980b6f7437d667519ea3dea34a1cce54421d72c +TEST= 51 +KEY= 6d67b48896de4172845ccde626a33cac +IV= 813b4523eabba87d9088a6aac8515e53fea234a4b6d0652d7173ad1b710a5f47 +CT= 31b62764b415d6d851f424f8a980b6f7437d667519ea3dea34a1cce54421d72c +PT= c478f56f836e3e0d59f7c5d386d48ad08dc20e2b5a42b36e6c036492bdbcca01 +TEST= 52 +KEY= e0a5baa3cc9cf21ce85fa9749b1ff6ad +IV= 0e2cb4606a7eb84d80d039774cec73a58969ba9d0cdd869c2df4cfef1204ca0e +CT= c478f56f836e3e0d59f7c5d386d48ad08dc20e2b5a42b36e6c036492bdbcca01 +PT= 14226d4e62991176930dbf2c2e6f2a913e16efa83e8e4c04b81958b2142bfee5 +TEST= 53 +KEY= deb3550bf212be185046f1c68f340848 +IV= cd710367bc06af577500f1a81fb1d39161da147638a70eda6ce0a4c41147aefb +CT= 14226d4e62991176930dbf2c2e6f2a913e16efa83e8e4c04b81958b2142bfee5 +PT= 078e492b7bdfb1e2d70a7ee1207b7d056ab5932be2a3afa50fa7b6c59e4cea08 +TEST= 54 +KEY= b406c62010b111bd5fe147031178e240 +IV= 98f27304f02c3186dee15874eb46ceee18d0eb0777693a04f7e3e086906bbf48 +CT= 078e492b7bdfb1e2d70a7ee1207b7d056ab5932be2a3afa50fa7b6c59e4cea08 +PT= c898928084c99d49c67a43981c5ad4be0aee2b4cefd5f9ca95e75c1f959278ac +TEST= 55 +KEY= bee8ed6cff64e877ca061b1c84ea9aec +IV= 194aa80ac6c8100a2cefeef2b71eb52cb721bfc08b1a6b0f21a79604d4c1719a +CT= c898928084c99d49c67a43981c5ad4be0aee2b4cefd5f9ca95e75c1f959278ac +PT= fecfd95cdc353fb194de630953d8e5dfc718bce6a15e8e6410909c2caa62ef68 +TEST= 56 +KEY= 79f0518a5e3a6613da9687302e887584 +IV= 6f232378aff9d152e7db81b7fe50caaa0d105405509597e87bfff151d650a0c3 +CT= fecfd95cdc353fb194de630953d8e5dfc718bce6a15e8e6410909c2caa62ef68 +PT= 8e7604ce8055d8801bbd4e8fccebf478f0b6a1d66e8294e54f8b03f501c12adb +TEST= 57 +KEY= 8946f05c30b8f2f6951d84c52f495f5f +IV= 5efb8442b00bdccb35910f4ef5f1f444e1c2f35a4a61b297801184bb3e6cf3a2 +CT= 8e7604ce8055d8801bbd4e8fccebf478f0b6a1d66e8294e54f8b03f501c12adb +PT= d88a9eefddaa4fd385c3ceb4655e21ca2f5e7cce7e62f7a25b583801ab41600d +TEST= 58 +KEY= a6188c924eda0554ce45bcc484083f52 +IV= 9f68cb81174ef7913606cef8c49e24206e871bc8afa5b686db131c0b575735bf +CT= d88a9eefddaa4fd385c3ceb4655e21ca2f5e7cce7e62f7a25b583801ab41600d +PT= 74572b2e42526147d5b440cb75a3799982a55389f20f55c12315b6df79d9708f +TEST= 59 +KEY= 24bddf1bbcd55095ed500a1bfdd14fdd +IV= ee011a4cd8e859137ff9e4f242d98b1137a1bbb1041370218abb7c5aa314e65c +CT= 74572b2e42526147d5b440cb75a3799982a55389f20f55c12315b6df79d9708f +PT= d050748100342f7af948ef23098169b5fded6f4cd66046f79bc23442d86c2ce3 +TEST= 60 +KEY= d950b0576ab5166276923e5925bd633e +IV= 3cb29e4bffbe8d5b457ebda2d71b8f1abbb571a5f6a9ba44dcb4102d177df607 +CT= d050748100342f7af948ef23098169b5fded6f4cd66046f79bc23442d86c2ce3 +PT= e833e728bb8ddbab5cbdd2871f0c04f4f20ac0d9cd46f7a3db31bc0ea1eea487 +TEST= 61 +KEY= 2b5a708ea7f3e1c1ada382578453c7b9 +IV= 5f9c93784886775eea95344ac15f3ea3717a47535e33d985ef0cacecd50d5c7c +CT= e833e728bb8ddbab5cbdd2871f0c04f4f20ac0d9cd46f7a3db31bc0ea1eea487 +PT= 9c1042fdd21c14183a39bf569c2906a9facdbff636af771118bfea8718f29fc1 +TEST= 62 +KEY= d197cf78915c96d0b51c68d09ca15878 +IV= efd4382ed50d02dc5ec4b3f48d5b6c98baef41b126ad225daf189471c3c59171 +CT= 9c1042fdd21c14183a39bf569c2906a9facdbff636af771118bfea8718f29fc1 +PT= 19fe1bb0d3a1573ce7b1c96afa38d40c4cb79a7ddc1e4c23a429f536a787fa0a +TEST= 63 +KEY= 9d2055054d42daf311359de63b26a272 +IV= 14f202d985c8460012bec6199e4dd7646f1041eff753fd74406514ad1719a932 +CT= 19fe1bb0d3a1573ce7b1c96afa38d40c4cb79a7ddc1e4c23a429f536a787fa0a +PT= 02410b3bf226a586caf8c9f766a19b92ad9d081b453bc0908ba7f9427e622e85 +TEST= 64 +KEY= 30bd5d1e08791a639a9264a445448cf7 +IV= 378c1d1f8d5b9c78811025e953eeece8f184c42cf69816d10f533ad5874e4bf3 +CT= 02410b3bf226a586caf8c9f766a19b92ad9d081b453bc0908ba7f9427e622e85 +PT= 948c0d049eaee460116b15849766ed16ec84e6b6922f615ea07b448e64793988 +TEST= 65 +KEY= dc39bba89a567b3d3ae9202a213db57f +IV= e655d309c449946d6d434ba28420de454364eb6ac9e979acc6601265d05af211 +CT= 948c0d049eaee460116b15849766ed16ec84e6b6922f615ea07b448e64793988 +PT= 03e5fee30ec05ec6af998a29d93373d6db5df96e190206937bc320b6bdeef665 +TEST= 66 +KEY= 076442c683547dae412a009c9cd3431a +IV= cb6335472834bca80e17320533a15a52f4cf58654a1d0c943cca1c184dea91b5 +CT= 03e5fee30ec05ec6af998a29d93373d6db5df96e190206937bc320b6bdeef665 +PT= 3d4e5d4976386b76e8612eb64c45143c32b7f4381e1be8b9ec46488fbc22ddec +TEST= 67 +KEY= 35d3b6fe9d4f9517ad6c481320f19ef6 +IV= 1c5e315bc261178320df7865c3d31406329f4b8d4747729cb054416cea126732 +CT= 3d4e5d4976386b76e8612eb64c45143c32b7f4381e1be8b9ec46488fbc22ddec +PT= 244d68d0b87f77a044646af528659908c779470180ce97df033f0e65ea6abfaf +TEST= 68 +KEY= f2aaf1ff1d8102c8ae534676ca9b2159 +IV= 29fa745863c0a9de97968b858c16acd9e9e021d6e798b520362b9e867557e91f +CT= 244d68d0b87f77a044646af528659908c779470180ce97df033f0e65ea6abfaf +PT= f434f3862025a12dac5968ab6aa6977a439b7a81b5c2245bbf370b2b94e7d0d6 +TEST= 69 +KEY= b1318b7ea843269311644d5d5e7cf18f +IV= 5eaca384b8b62ebde2c2e19fb1789ae176f092af33fc24756cb2cec3ab13cc4a +CT= f434f3862025a12dac5968ab6aa6977a439b7a81b5c2245bbf370b2b94e7d0d6 +PT= cb7288aabbbd23b57b0224564658d3b47ec3796f831e5c7e30bc17b992b2376a +TEST= 70 +KEY= cff2f2112b5d7aed21d85ae4cccec6e5 +IV= 3eadd6e48a37f7a3b70bc8a024c5c2ebcc3816001f40381496c33dbf95a7e3cf +CT= cb7288aabbbd23b57b0224564658d3b47ec3796f831e5c7e30bc17b992b2376a +PT= 53d57d50478b650b378e3c40ad787e0eb241ef4192e4a000bff8eb041db63b3b +TEST= 71 +KEY= 7db31d50b9b9daed9e20b1e0d178fdde +IV= 18644cdf4267f9834ce559cc5f9fd391e724af8bdb79a00be6656109bcadb74d +CT= 53d57d50478b650b378e3c40ad787e0eb241ef4192e4a000bff8eb041db63b3b +PT= f56f4cb09065d2e5b8896ddc4c8735e8311b1fdceeb152bf58ceee90ed6f9bf0 +TEST= 72 +KEY= 4ca8028c57088852c6ee5f703c17662e +IV= ccd6dbf7a4a5c28da3f7a4fa188152cb081f4c4d01f0eb098c6004c5e0c03cd2 +CT= f56f4cb09065d2e5b8896ddc4c8735e8311b1fdceeb152bf58ceee90ed6f9bf0 +PT= c740026c9c64214c107655a20e104e7e382fe4a065c0c618265ffc7370afd193 +TEST= 73 +KEY= 7487e62c32c84e4ae0b1a3034cb8b7bd +IV= e327d8fdad8ec63ccc5ee1e14670fda49d96de5b5a156a9340867a1fcbc91ad0 +CT= c740026c9c64214c107655a20e104e7e382fe4a065c0c618265ffc7370afd193 +PT= 9682683681245f5537784fae726740ca1b2947dcfdc273b26189dbaae5d14d33 +TEST= 74 +KEY= 6faea1f0cf0a3df8813878a9a969fa8e +IV= a5df55ddf2578227587fed4d4804b081ff79631ea8ce467512e0249993b07289 +CT= 9682683681245f5537784fae726740ca1b2947dcfdc273b26189dbaae5d14d33 +PT= 8bec74d224ebb36a4a9085812a36488b5f4a9bf7b2a91e7cb21619bbf2bec150 +TEST= 75 +KEY= 30e43a077da32384332e61125bd73bde +IV= e82817190807ecb89766f6a88aec3aca7e7920ac0b60a6a67c4c9e3c2faffea8 +CT= 8bec74d224ebb36a4a9085812a36488b5f4a9bf7b2a91e7cb21619bbf2bec150 +PT= 6b16fe2dffa49dbeec8914b2c0ccbdc37dd16fbf8a199119abec271870307608 +TEST= 76 +KEY= 4d3555b8f7bab29d98c2460a2be74dd6 +IV= 0f6ec9be3e799125fdacbd6eef6fbd0196afa889195ff4799d9b151d07965848 +CT= 6b16fe2dffa49dbeec8914b2c0ccbdc37dd16fbf8a199119abec271870307608 +PT= d1b5c92812421895b54d2caf1dd9fa02cef28c40c6095df07fd9545056bf6569 +TEST= 77 +KEY= 83c7d9f831b3ef6de71b125a7d5828bf +IV= d14789b9cb72a33cf870ab216027566521d87e8efbfd18e589910d271cb377d7 +CT= d1b5c92812421895b54d2caf1dd9fa02cef28c40c6095df07fd9545056bf6569 +PT= 431284a57a6a8c47da6903dbf237bfd088a3dd25e66ac392b174ddebb62909dd +TEST= 78 +KEY= 0b6404ddd7d92cff566fcfb1cb712162 +IV= 5d85e3ba3f41cc61f74a2d5e8e16eaecc1176ba78424fb8a97e7cf14113fd1d8 +CT= 431284a57a6a8c47da6903dbf237bfd088a3dd25e66ac392b174ddebb62909dd +PT= b4dfc0d49845d1b3293e44aad5f372bf8635a82cfd50ab5d96ba65128e02cfc3 +TEST= 79 +KEY= 8d51acf12a8987a2c0d5aaa34573eea1 +IV= 5cdf98206e790e4e358e3cb67bc4192fc5b6c546ebb47f48119598ed58285a5c +CT= b4dfc0d49845d1b3293e44aad5f372bf8635a82cfd50ab5d96ba65128e02cfc3 +PT= ac80a337ccbaa4067eea5ea15b0eafad33ca5961335b1214c6e02b5e2075f1be +TEST= 80 +KEY= be9bf59019d295b6063581fd65061f1f +IV= 2480ea18aa374f20488472bf4e8db8b57efc8910e28ce03180bcc3aff8a21066 +CT= ac80a337ccbaa4067eea5ea15b0eafad33ca5961335b1214c6e02b5e2075f1be +PT= 82795898c382a6b2c24adfc203d409264e19f181cecdac996c965a88bd60b166 +TEST= 81 +KEY= f0820411d71f392f6aa3db75d866ae79 +IV= 9ff9973edbc6d49539d4efd211663b4b2fb0619c253fa653e8ed7c2d12959a82 +CT= 82795898c382a6b2c24adfc203d409264e19f181cecdac996c965a88bd60b166 +PT= f1ac35f1cb6b586e3722e2e3be98725351c5ff4c88034f1c69bd530695e40d5e +TEST= 82 +KEY= a147fb5d5f1c7633031e88734d82a327 +IV= 77e009b97a03fc7f7a58a1db1fdde81cc137969b83943d8dba0676245148a032 +CT= f1ac35f1cb6b586e3722e2e3be98725351c5ff4c88034f1c69bd530695e40d5e +PT= 62b42bbfa9977f1f658621daa7bea65e9a8357b290d8ac9d3ca92d258c6d35a0 +TEST= 83 +KEY= 3bc4acefcfc4daae3fb7a556c1ef9687 +IV= cf8902c6dfc00679974dff75f987b9ae3bb7c1ba8bb2a08336b6e687635785e4 +CT= 62b42bbfa9977f1f658621daa7bea65e9a8357b290d8ac9d3ca92d258c6d35a0 +PT= a31dc5a8e07ba5456d2cfdbbd187cfdb431f73795c141afbc9d62fd7a42cf510 +TEST= 84 +KEY= 78dbdf9693d0c055f6618a8165c36397 +IV= e653386f102d37e7357bc9fc9ad55010e4f6d17cb09df65a10bac3911fb415b7 +CT= a31dc5a8e07ba5456d2cfdbbd187cfdb431f73795c141afbc9d62fd7a42cf510 +PT= 0a0ee48eee60771bdaa835ca81b90720e2d339d09d6db66befd82a60c3d99182 +TEST= 85 +KEY= 9a08e6460ebd763e19b9a0e1a61af215 +IV= e57f0566d04e83a1ee2337d729ecc7d4352ea6c1e2f6bdb681990f2a0a19e066 +CT= 0a0ee48eee60771bdaa835ca81b90720e2d339d09d6db66befd82a60c3d99182 +PT= e2ed89d24aff9cef926c34df06b128dc2d3f2f00365ff1113bbdc8a8ca75d967 +TEST= 86 +KEY= b737c94638e2872f220468496c6f2b72 +IV= 0f6356f862bd668155511199457525e97f0e48a98b5c92e37267807054f568a9 +CT= e2ed89d24aff9cef926c34df06b128dc2d3f2f00365ff1113bbdc8a8ca75d967 +PT= 0f3b484298aa049c5efa2aa9b79c071995116e04d7064590eb8a75e13d52c7ee +TEST= 87 +KEY= 2226a742efe4c2bfc98e1da8513dec9c +IV= fa46c4d85cf95de72a7846e625433b915c2f90698ea92a55e4f063c0c6c73546 +CT= 0f3b484298aa049c5efa2aa9b79c071995116e04d7064590eb8a75e13d52c7ee +PT= 43c84101d2eea2d36b8ad0b3873b0f51ae37621e38897b63a42d1df5040540f6 +TEST= 88 +KEY= 8c11c55cd76db9dc6da3005d5538ac6a +IV= 4556c15d70e4b994ec73e3b8ae5ce1b92f91f1e42735b033549ae1f434f06889 +CT= 43c84101d2eea2d36b8ad0b3873b0f51ae37621e38897b63a42d1df5040540f6 +PT= 341ec24f97b719cae94a41902c6c1fedcaa9f92ae17f58664e40a639b85c4e87 +TEST= 89 +KEY= 46b83c763612e1ba23e3a664ed64e2ed +IV= 42b719d4aeb79e89dcb4d4b772fec7570ce2370f3a134a6071c33d0f4f81a4f9 +CT= 341ec24f97b719cae94a41902c6c1fedcaa9f92ae17f58664e40a639b85c4e87 +PT= eb28ac9cd898426ae65fc74adece76c972921be928f9e9c88ca17f08eb8b0c5c +TEST= 90 +KEY= 342a279f1eeb0872af42d96c06efeeb1 +IV= eb7b07c4a14e1e557b82fba15b8c9d4d83e477ddd0d8879e577dc83152507dae +CT= eb28ac9cd898426ae65fc74adece76c972921be928f9e9c88ca17f08eb8b0c5c +PT= 5074d79d178adacb0881fb31c4f9c86d70b2c4f78788f1cde20d6bcade4616e7 +TEST= 91 +KEY= 4498e3689963f9bf4d4fb2a6d8a9f856 +IV= b0700a72207f5400b23edc8d9a789bceafc523369e0575c28ccb1dc6043b3295 +CT= 5074d79d178adacb0881fb31c4f9c86d70b2c4f78788f1cde20d6bcade4616e7 +PT= d1a850c60d646e2ca12de97443fbeb199ac7092800ca28db5071e520f2724731 +TEST= 92 +KEY= de5fea4099a9d1641d3e57862adbbf67 +IV= 20327bfa50c90df253328acbde4d9d542f0d147ce9b96cb60600145e92d05d68 +CT= d1a850c60d646e2ca12de97443fbeb199ac7092800ca28db5071e520f2724731 +PT= 19845a646d403c3544463aa56216b95c7f274d0b40f4584010b4a58c5a9018eb +TEST= 93 +KEY= a178a74bd95d89240d8af20a704ba78c +IV= 7273f5ece5356d9a5f773caee2b3b73c975c30046d02ebf96b65569b35c90c4e +CT= 19845a646d403c3544463aa56216b95c7f274d0b40f4584010b4a58c5a9018eb +PT= 49878c9cdc0246ee831e87be74860a7f86e94fed114a32a257621b8502e190dc +TEST= 94 +KEY= 2791e8a6c817bb865ae8e98f72aa3750 +IV= cdeaf4c3d1f5b506350963c05b994f7a4309c74940bf2b63be65795db044055a +CT= 49878c9cdc0246ee831e87be74860a7f86e94fed114a32a257621b8502e190dc +PT= 1964d94d849f3a46172406533600935381292f3dee455903091a523c0ee364c0 +TEST= 95 +KEY= a6b8c79b2652e28553f2bbb37c495390 +IV= ce2e9c01927a860e54fe1e83c5370f5220111a943a4aa1a5ead1b5cd4fb64d4d +CT= 1964d94d849f3a46172406533600935381292f3dee455903091a523c0ee364c0 +PT= fffe885a50e9997f8b5cdb9e9e135f384ce867bea4daf5f6de8ac9f8f8db205f +TEST= 96 +KEY= ea50a025828817738d78724b849273cf +IV= 2543df2c7f17afe350cfe3c56725f4010ced57da7f2b144fbb782350f04a2091 +CT= fffe885a50e9997f8b5cdb9e9e135f384ce867bea4daf5f6de8ac9f8f8db205f +PT= f9ce11d40b2cd7415594a270fe9425b5591ab62585c7e3ca6882c8ec6de68d00 +TEST= 97 +KEY= b34a1600074ff4b9e5fabaa7e974fecf +IV= 56001653e7721bc3274cf6cae431d66113e234dfc559a278c0ecbcc6f48b9136 +CT= f9ce11d40b2cd7415594a270fe9425b5591ab62585c7e3ca6882c8ec6de68d00 +PT= be0398b9ef80a39f4827947a84bdd6721bd1a62a88037429e8193ec0d4232df1 +TEST= 98 +KEY= a89bb02a8f4c80900de384673d57d33e +IV= ed08eceb5b688305c65a86c3620ed8e4a59913fbcaf617d20bf65942d2cfe822 +CT= be0398b9ef80a39f4827947a84bdd6721bd1a62a88037429e8193ec0d4232df1 +PT= 7e95425d47045ff65eb0b6342228dda861171252be61e210d8074a5a23feb3bb +TEST= 99 +KEY= c98ca278312d6280d5e4ce3d1ea96085 +IV= 899cb9abb5182407097b5787264b86da5f08bb8408f98018e031eb8a96dd7864 +CT= 7e95425d47045ff65eb0b6342228dda861171252be61e210d8074a5a23feb3bb +PT= d90dd7749bec8c55e0915df8b351bf6bc26ea88bf833ed5a49ed6933a44eddce +TEST= 100 +KEY= 0be20af3c91e8fda9c09a70ebae7bd4b +IV= 93db1ba8800154a07b676d5a477ca953c689a86f3823b8ebb7982fb774a7c42b +CT= d90dd7749bec8c55e0915df8b351bf6bc26ea88bf833ed5a49ed6933a44eddce +PT= dc511e65082bc46984b6251e9800a2dfdf3f93722afd1c0ebc8a4b241125ec3c +TEST= 101 +KEY= d4dd9981e3e393d42083ec2aabc25177 +IV= fb5c34b763490c5cd0b3fa54ee503d020ecb24cf7bc399a8cc22bc606b6c746c +CT= dc511e65082bc46984b6251e9800a2dfdf3f93722afd1c0ebc8a4b241125ec3c +PT= 3be170017a00715be2aebacd21380a602184eb44bb531ddca828ef656867fcc5 +TEST= 102 +KEY= f55972c558b08e0888ab034fc3a5adb2 +IV= e157dae3ba8eca4de272fb7c3b431f98ba1dc4754392683bf538d285f5f9f8e4 +CT= 3be170017a00715be2aebacd21380a602184eb44bb531ddca828ef656867fcc5 +PT= 7d8d6ddfe5c954ee8cb04b728d71a44d1e72da554e76096322cf7fdc64750a28 +TEST= 103 +KEY= eb2ba89016c6876baa647c93a7d0a79a +IV= aad7de42ca480c0a0376abf411cb5411b33db8770b6c90feea6e01c42b3f8051 +CT= 7d8d6ddfe5c954ee8cb04b728d71a44d1e72da554e76096322cf7fdc64750a28 +PT= ebdbbf153228ce5237bcb1b798eb83b4268a01d8f5a327a30ab306dfcef1ef21 +TEST= 104 +KEY= cda1a948e365a0c8a0d77a4c692148bb +IV= 3e52cd092988e4ca642feacd636f1129b32c46b0ac2f396a370004cea9bedf83 +CT= ebdbbf153228ce5237bcb1b798eb83b4268a01d8f5a327a30ab306dfcef1ef21 +PT= a636e85300b4bb86ecb405e16d72fee04e48f4d8776d0944d3065b300f5b848f +TEST= 105 +KEY= 83e95d909408a98c73d1217c667acc34 +IV= 84036f46df98b89385b4519a849aa441e66fb8c392318c87846c182007aa97be +CT= a636e85300b4bb86ecb405e16d72fee04e48f4d8776d0944d3065b300f5b848f +PT= 9518e941147e26a447ea4a7e8d386c59f35b1ccaf03070ca156e8cda4d7d8921 +TEST= 106 +KEY= 70b2415a6438d94666bfada62b074515 +IV= 1b1618ca743dadb67baafed7b75b40233e9b1bc8dad3de8fef66c32db91d3f76 +CT= 9518e941147e26a447ea4a7e8d386c59f35b1ccaf03070ca156e8cda4d7d8921 +PT= 5d18d4e6db8506c0586cd257ec79c44787259a1dae9d40ee7c189b3f0157ae1a +TEST= 107 +KEY= f797db47caa599a81aa736992a50eb0f +IV= 908d5b8d4621ff843b3311ec20796a7587e0a1026aa69ae8c040e35164f4db1f +CT= 5d18d4e6db8506c0586cd257ec79c44787259a1dae9d40ee7c189b3f0157ae1a +PT= 3d02d74a259909e3fd1b9137a5db38680d59d6cc3360042260660a81d41ef8be +TEST= 108 +KEY= face0d8bf9c59d8a7ac13c18fe4e13b1 +IV= b7f80b51ef45f59607848512977aaa6c3d6253bcf94a9c7bcb9fc2853003f0b1 +CT= 3d02d74a259909e3fd1b9137a5db38680d59d6cc3360042260660a81d41ef8be +PT= 67f46e1180b5a6f6ea170b274aff23e1453dfd50136348c120f41ed64aa992f6 +TEST= 109 +KEY= bff3f0dbeaa6d54b5a3522ceb4e78147 +IV= c38ccb875731d4da50068bd6f9e0fb4496f96c03ebcbfce4e503b1761205be80 +CT= 67f46e1180b5a6f6ea170b274aff23e1453dfd50136348c120f41ed64aa992f6 +PT= deaaab50299f9a150130cbd6e993558962048fd67f4f8261d08e0ecbda49692e +TEST= 110 +KEY= ddf77f0d95e9572a8abb2c056eaee869 +IV= 1ac09dcd6558fc27f85161d1ea553e3219bd80aea7c16aacb28f966c60787009 +CT= deaaab50299f9a150130cbd6e993558962048fd67f4f8261d08e0ecbda49692e +PT= 2d5b77e3e0961a468fda732e81c49f52e7967b323ef1dbd4e4cbaac3b02a6c29 +TEST= 111 +KEY= 3a61043fab188cfe6e7086c6de848440 +IV= 7c6748650316e47eff350b36b8e0cfa6ddf9790289f8b17590fc223e16f8a964 +CT= 2d5b77e3e0961a468fda732e81c49f52e7967b323ef1dbd4e4cbaac3b02a6c29 +PT= 97c82d79ff3aa71b4575dc34c41edd546d8f217a1400a454ef8b2a5bab9880e0 +TEST= 112 +KEY= 57ee2545bf1828aa81fbac9d751c04a0 +IV= 55c7e67e9c6b96a5de684eb90eb4cf8fc2c960035cd35bcf18cf35a5865bb8f0 +CT= 97c82d79ff3aa71b4575dc34c41edd546d8f217a1400a454ef8b2a5bab9880e0 +PT= 447181186f60a10c0a0911cbe1a3097d13e6ce02507af8e7d8864bcef205e00a +TEST= 113 +KEY= 4408eb47ef62d04d597de7538719e4aa +IV= cf9d99a8e3b5234e7b8ffafce7c7cd9e15a083851f21432f46279ba9ec9cfc34 +CT= 447181186f60a10c0a0911cbe1a3097d13e6ce02507af8e7d8864bcef205e00a +PT= 6c1fc7086a9a0119fd074304a5c72ee446605c1043c0524a99dc7046b1d8f4d0 +TEST= 114 +KEY= 0268b757aca28207c0a1971536c1107a +IV= e5a468ba9a290d026947f0cf5206dc030169df402b2670795b675806fe00778d +CT= 6c1fc7086a9a0119fd074304a5c72ee446605c1043c0524a99dc7046b1d8f4d0 +PT= c0b408944eb9cbea29dab521e8647bfbe63b7b0d7929de3af54bbe9e8171af45 +TEST= 115 +KEY= e453cc5ad58b5c3d35ea298bb7b0bf3f +IV= 90a7ff79c4ec276d681505b2ad7ec7abd9e832c235a548f629937d443584db00 +CT= c0b408944eb9cbea29dab521e8647bfbe63b7b0d7929de3af54bbe9e8171af45 +PT= c8d65cd7843691a8972b91cf122a15a198f3e4a91bc891e7c1d56c0adc528857 +TEST= 116 +KEY= 7ca028f3ce43cddaf43f45816be23768 +IV= a4c3c8b51c39190238991e9bc5514cd3f368a69d266912d21b5d51591e30153b +CT= c8d65cd7843691a8972b91cf122a15a198f3e4a91bc891e7c1d56c0adc528857 +PT= 8bf323264700465b7fdcf0f9cd7b68867b5579a5fec3660b1d2c3985df8b7a90 +TEST= 117 +KEY= 07f551563080abd1e9137c04b4694df8 +IV= be1bd87e71b423dc0dcb169cdac76cd5a649c811b5ec80d6cb12ca112c490313 +CT= 8bf323264700465b7fdcf0f9cd7b68867b5579a5fec3660b1d2c3985df8b7a90 +PT= e82885b8e2563579b3a302d10e358431fda7d1dead5ba80ede7abf14ea7a2244 +TEST= 118 +KEY= fa5280889ddb03df3769c3105e136fbc +IV= dd0708a00105f9b7b61a3c2846afec1d2d8c93c1c7f26ed980be46befa4def40 +CT= e82885b8e2563579b3a302d10e358431fda7d1dead5ba80ede7abf14ea7a2244 +PT= 59f296001657d94b3dca6c18c7958cc131a25c1fc97910ec98515a01a9ad635e +TEST= 119 +KEY= cbf0dc9754a21333af389911f7be0ce2 +IV= a2d1214d0e9ad3c3e0dbf0b81e0e6c83c4c5f6150192f6e99b2b022d3980eeb5 +CT= 59f296001657d94b3dca6c18c7958cc131a25c1fc97910ec98515a01a9ad635e +PT= 3f9b31d934fdca2a3a33ec21c5d34c5c7e617ab9a51fc364c26e936efe0a9484 +TEST= 120 +KEY= b591a62ef1bdd0576d560a7f09b49866 +IV= 78140894efb3048d4629ce03e4789e5ba05d8e73ce529a65fa405eeed36044bd +CT= 3f9b31d934fdca2a3a33ec21c5d34c5c7e617ab9a51fc364c26e936efe0a9484 +PT= 2571090830358331c2ef637ae2857e4747bdacb644f68028ecf24c4459e61f1b +TEST= 121 +KEY= f22c0a98b54b507f81a4463b5052877d +IV= 74fe5a0a86e43eb219eb9b8ee18fb5aeb2a9f61eb3efcec73f1e39f663eec7f3 +CT= 2571090830358331c2ef637ae2857e4747bdacb644f68028ecf24c4459e61f1b +PT= 771a966fd8989413f4d1fe3d35dbb13278cacfcec3193f9cc5fb54a97f31ee30 +TEST= 122 +KEY= 8ae6c55676526fe3445f12922f63694d +IV= 59c3616b0e991ab6a0c33d9d0b2225aa4a80c8a62791d8754bddbfda97b78d68 +CT= 771a966fd8989413f4d1fe3d35dbb13278cacfcec3193f9cc5fb54a97f31ee30 +PT= 858c2201479406b792cf5afdfd22b3fe2c7bddb76b48fc0c042afa48d3b321d9 +TEST= 123 +KEY= a69d18e11d1a93ef4075e8dafcd04894 +IV= 460a1336e3e66750a6ee2506eb8903302c7ae703894c2813f4b20d1888d7add9 +CT= 858c2201479406b792cf5afdfd22b3fe2c7bddb76b48fc0c042afa48d3b321d9 +PT= b8a9b107795c5a78f3a7ca7eae3a92736091f3c8ef06e71c3850bf07b4decfa4 +TEST= 124 +KEY= c60ceb29f21c74f3782557dd480e8730 +IV= dd53c9c2cf046ba432ec95b20c516d663746892b7ba8a7aee6f7110ebf1fcab2 +CT= b8a9b107795c5a78f3a7ca7eae3a92736091f3c8ef06e71c3850bf07b4decfa4 +PT= 8c6df14350931cb0ef493f676764bde1170a49eb9c63a33e598c28a657742bc6 +TEST= 125 +KEY= d106a2c26e7fd7cd21a97f7b1f7aacf6 +IV= c7b47655724b95c02371df4af8353edfe3ca99cf1ead5654196f66b92275fec6 +CT= 8c6df14350931cb0ef493f676764bde1170a49eb9c63a33e598c28a657742bc6 +PT= 8d79861e714de2aec3ee3986db7d286215071d34c2dbddecb501b1eb35a4efc2 +TEST= 126 +KEY= c401bff6aca40a2194a8ce902ade4334 +IV= f283ce900e4f3509ac08730f901adffc7bd303fd46353cfc81ed51167a36505c +CT= 8d79861e714de2aec3ee3986db7d286215071d34c2dbddecb501b1eb35a4efc2 +PT= 1bbabeaa3c57f5afa56f58315e04a79a61f8c2fddc3cb7d41bd6543c29485159 +TEST= 127 +KEY= a5f97d0b7098bdf58f7e9aac0396126d +IV= e327a35fdfdfedc661a034680145e339aa6a7ea3b324171e508e8d77aea17e06 +CT= 1bbabeaa3c57f5afa56f58315e04a79a61f8c2fddc3cb7d41bd6543c29485159 +PT= 17c2c29910f8865eee30490aff225bb06a6af3a9997c5bdd14a2bb842ca58880 +TEST= 128 +KEY= cf938ea2e9e4e6289bdc21282f339aed +IV= aa79a026a8a7fbe6c91312ad645a40db8d18208e23473c9f46c52081fa6f92b3 +CT= 17c2c29910f8865eee30490aff225bb06a6af3a9997c5bdd14a2bb842ca58880 +PT= 27320f975c043398dcbfb4382550d97fa1bfe04f6589ab63c9a700dfb81f785c +TEST= 129 +KEY= 6e2c6eed8c6d4d4b527b21f7972ce2b1 +IV= 5f1a4a4b3f60b6ac50bb0842b9a2b582e22f3720f738722a28469f55d1721bb7 +CT= 27320f975c043398dcbfb4382550d97fa1bfe04f6589ab63c9a700dfb81f785c +PT= 5c3d0f5d60b711060eb16358fd9b89cbd11ebca3fe41a7929731f70620db2981 +TEST= 130 +KEY= bf32d24e722cead9c54ad6f1b7f7cb30 +IV= 94dc290b3b2a6a45f0a4074311f500e13853ff166ff18be7243227c6e06c08c7 +CT= 5c3d0f5d60b711060eb16358fd9b89cbd11ebca3fe41a7929731f70620db2981 +PT= 5cac15e2401519b9ddc966aa9931b88da2d50d10e26489b509d1cf044482953d +TEST= 131 +KEY= 1de7df5e9048636ccc9b19f5f3755e0d +IV= e92eb1987a5fee0c66d6a3db076992090c95daaa5fe8f2dd707862a1b51db558 +CT= 5cac15e2401519b9ddc966aa9931b88da2d50d10e26489b509d1cf044482953d +PT= 0beb1c85e4c27b88d16b2d4d0e8aebf43f80ccc3f4d9cbfc3bb31f5fe67d8500 +TEST= 132 +KEY= 2267139d6491a890f72806aa1508db0d +IV= e0ff56a71ecb0df73e582b963da0d66ddff4dd5935bceaa96e75f75426cdcfd2 +CT= 0beb1c85e4c27b88d16b2d4d0e8aebf43f80ccc3f4d9cbfc3bb31f5fe67d8500 +PT= d694d6c6858ed7aded0d5590f403854c843b402f5b00e2edce9ec0758ed026f8 +TEST= 133 +KEY= a65c53b23f914a7d39b6c6df9bd8fdf5 +IV= d5d2352f702a1448ac037625597052c75bc6a1d590deec009bb36547ae988b97 +CT= d694d6c6858ed7aded0d5590f403854c843b402f5b00e2edce9ec0758ed026f8 +PT= 4f820186ce07ba11ac81f4f1474c750598ba39f89cd8e334737d28b71866bbb7 +TEST= 134 +KEY= 3ee66a4aa349a9494acbee6883be4642 +IV= 1eb35c76902a8e73caac6a0baec12b76f7456e4e8eaba178f0ead6f44e11b7c6 +CT= 4f820186ce07ba11ac81f4f1474c750598ba39f89cd8e334737d28b71866bbb7 +PT= f21ad7252ba941bda8b47712c773ed48cee17daff5cfe80e29bcbb558a1b74f8 +TEST= 135 +KEY= f00717e5568641476377553d09a532ba +IV= d3dadf2ab7f2bc9d223d445641cfae00c585f0a9d654c88564e6b26a1883c0ac +CT= f21ad7252ba941bda8b47712c773ed48cee17daff5cfe80e29bcbb558a1b74f8 +PT= 6ee45ba0971d3d9824bc7eb1dec6a5fecba74158d1501727627a20a75f24b6c4 +TEST= 136 +KEY= 3ba056bd87d65660010d759a5681847e +IV= d58cbbc4806a749c96255878930ccb77856b10ec0b993584b68993435085d66a +CT= 6ee45ba0971d3d9824bc7eb1dec6a5fecba74158d1501727627a20a75f24b6c4 +PT= 6da4522bfe02666d3f79278dea866b270c8eb4e33f3384ca369eca8f0bcfc816 +TEST= 137 +KEY= 372ee25eb8e5d2aa3793bf155d4e4c68 +IV= f274903f9f601b01f62441d0ea00a6c022e5595d8ba9827b46b897c4c1ab8f11 +CT= 6da4522bfe02666d3f79278dea866b270c8eb4e33f3384ca369eca8f0bcfc816 +PT= d64d7a613d3ff47a4bc20d366eabb169b959556a29e038a978888fca7e7442de +TEST= 138 +KEY= 8e77b7349105ea034f1b30df233a0eb6 +IV= 36ba4a402753a6bd4b8181a23d0e960f389bdf5bdd5fe0b300214cc36f97bae7 +CT= d64d7a613d3ff47a4bc20d366eabb169b959556a29e038a978888fca7e7442de +PT= d7511f0497aaa5f6deca6059e98f5536245ae24323098fbabd9bacacaf494c76 +TEST= 139 +KEY= aa2d5577b20c65b9f2809c738c7342c0 +IV= 19ad53bf451e0f5693efced2c8574ce1033e4364003f8a62b5666013183ee5a3 +CT= d7511f0497aaa5f6deca6059e98f5536245ae24323098fbabd9bacacaf494c76 +PT= 37c61a7f51230de0a6f9fef9054e9149424d249f423537a0f70420205e22d902 +TEST= 140 +KEY= e86071e8f03952190584bc53d2519bc2 +IV= dd2063fdb01ebf1a8252240b320846a6bcf92e6d7ff2e2dc31cb1398c84a7d1f +CT= 37c61a7f51230de0a6f9fef9054e9149424d249f423537a0f70420205e22d902 +PT= a89ca161e1cdc175f1c314ed33993b49dfa15399231afd489233c78edb271fbf +TEST= 141 +KEY= 37c12271d323af5197b77bdd0976847d +IV= 58ec18b0192b181391c08b82038225fe51cd13754c02ed2b71ba128b59213bc4 +CT= a89ca161e1cdc175f1c314ed33993b49dfa15399231afd489233c78edb271fbf +PT= 8663fa673aa41dd4ae0d61e4dd8d7bedf7117babdfeef5a880f65eede0b4f744 +TEST= 142 +KEY= c0d059da0ccd5af917412530e9c27339 +IV= cec83977e18fc3f506cd661eae4dc4d3e0d57a66c4155c99f83ccdf862a2e90c +CT= 8663fa673aa41dd4ae0d61e4dd8d7bedf7117babdfeef5a880f65eede0b4f744 +PT= e8621f3f7cd08550fbf9543a390fa021952a523a8c38fd1bc0a4b8cbac370e5d +TEST= 143 +KEY= 55fa0be080f5a7e2d7e59dfb45f57d64 +IV= 41b3176b0aa32a24343ab43854723260140f92107bad6b3f80427f01b9dedbca +CT= e8621f3f7cd08550fbf9543a390fa021952a523a8c38fd1bc0a4b8cbac370e5d +PT= 2ea6af77c001bff732f4f5587fa2dd55996c5321b50fd315ce10bf024ea717ce +TEST= 144 +KEY= cc9658c135fa74f719f522f90b526aaa +IV= bd0d80c1e69129c72062f5688d6a61b7e43c7a7a259611b0fa7b353b8ed775a9 +CT= 2ea6af77c001bff732f4f5587fa2dd55996c5321b50fd315ce10bf024ea717ce +PT= 926dfdf34a45a2a7f43107a95d87d25a8b718a63a9d5b3775d4f46b022284729 +TEST= 145 +KEY= 47e7d2a29c2fc78044ba6449297a2d83 +IV= 18bc40f225ff4b3c8eb5e36d163189a371716ee639ce2301652ff45290d67f3c +CT= 926dfdf34a45a2a7f43107a95d87d25a8b718a63a9d5b3775d4f46b022284729 +PT= 9cae51bbb8c1ee676529cde4e0bb029219e3197a2ee710b6e89110a85159b125 +TEST= 146 +KEY= 5e04cbd8b2c8d736ac2b74e178239ca6 +IV= ba89797ececd3740e0d699c08926f1f96c38b33a0c5986a558c3d6539c784c5c +CT= 9cae51bbb8c1ee676529cde4e0bb029219e3197a2ee710b6e89110a85159b125 +PT= 02234149d6e5a33cbcc6eab58ec8b0b1ff68acd541b77ec1f664667cfca30806 +TEST= 147 +KEY= a16c670df37fa9f75a4f129d848094a0 +IV= 2771bb7f473f6e062d416b598888d311482f0ccd608c02bb1f180713e313dfab +CT= 02234149d6e5a33cbcc6eab58ec8b0b1ff68acd541b77ec1f664667cfca30806 +PT= 88ac8468ca32e48dacf9e89b0a078725d1d04851d3f1d555430da7672a0f076e +TEST= 148 +KEY= 70bc2f5c208e7ca21942b5faae8f93ce +IV= 46e73a03af475c2fc2751b498cfd266b63400cbb8ed1ae37b295f4cc1f65e6df +CT= 88ac8468ca32e48dacf9e89b0a078725d1d04851d3f1d555430da7672a0f076e +PT= ef809cc4931be4bb60448b5be26fcb2c8bd3172fa97651264130764bd7d008fb +TEST= 149 +KEY= fb6f387389f82d845872c3b1795f9b35 +IV= 97bf292b06e49f0f33fca9813c4bde283d3c54777098057d89f43c9a7f4eff5a +CT= ef809cc4931be4bb60448b5be26fcb2c8bd3172fa97651264130764bd7d008fb +PT= 8cedd68e9cce500bcff9e01459d9f4884cc6546695337f45ddee51d533501364 +TEST= 150 +KEY= b7a96c151ccb52c1859c92644a0f8851 +IV= f661781965675f41385b766a364a13d3289b3e846dda06c5c95533787c2a0a74 +CT= 8cedd68e9cce500bcff9e01459d9f4884cc6546695337f45ddee51d533501364 +PT= b41b7b216bddda4cf055d441d7dabb189284ff583621559a55f0521d7ac2ceb2 +TEST= 151 +KEY= 252d934d2aea075bd06cc07930cd46e3 +IV= ec27507b0954c07e45738a50840e2f73a3b704f7e41cfcb2d4e2fe819e1d460c +CT= b41b7b216bddda4cf055d441d7dabb189284ff583621559a55f0521d7ac2ceb2 +PT= c77991a0bb7ab2ec2bd4ce74f1783ea6536358f7686f23d89419c2e8908bcbb8 +TEST= 152 +KEY= 764ecbba4285248344750291a0468d5b +IV= 5c38c00ace9c87bf2ad1f8dd1393e6fae7a7e780f8a6ecd8d3b2b209edb20c46 +CT= c77991a0bb7ab2ec2bd4ce74f1783ea6536358f7686f23d89419c2e8908bcbb8 +PT= 61831f274cd7097c9b631c8059b35896d61e72611ce486857c0415e762bf8dab +TEST= 153 +KEY= a050b9db5e61a20638711776c2f900f0 +IV= 8fadc2bb7a06113bb457d1b30e573629d57fed8817a9eb2c2597da419eb6b916 +CT= 61831f274cd7097c9b631c8059b35896d61e72611ce486857c0415e762bf8dab +PT= f939f79ab3fe446ef2d1be4c4668a92e44b2b988fcae411651f1cc0aba728390 +TEST= 154 +KEY= e4e20053a2cfe3106980db7c788b8360 +IV= 0f3308c5b378301d22e997f752422c05f6587068326678bc8e5ee6f23c81d045 +CT= f939f79ab3fe446ef2d1be4c4668a92e44b2b988fcae411651f1cc0aba728390 +PT= 3da4f727266b5353178213cdd642751580f52a897ca6b6b39dc17a57f24eb768 +TEST= 155 +KEY= 64172adade6955a3f441a12b8ac53408 +IV= b2f981c5a76f4d208a3adc9ce95c415edb5b98da3514421e79bec8cbafdbb9d7 +CT= 3da4f727266b5353178213cdd642751580f52a897ca6b6b39dc17a57f24eb768 +PT= 8cd46092b330083ba6e970afb4fd18f17fb4242758c2d2e59136afd49d2458b9 +TEST= 156 +KEY= 1ba30efd86ab874665770eff17e16cb1 +IV= a3827a24682822c8bc0d82f6e941750ffec346f0dc6a398fdead4205ee910488 +CT= 8cd46092b330083ba6e970afb4fd18f17fb4242758c2d2e59136afd49d2458b9 +PT= c636ee8d4ac7efe4fa90345364dd76350041b67239fea3d5dfc639514959d758 +TEST= 157 +KEY= 1be2b88fbf552493bab137ae5eb8bbe9 +IV= bb96447c958233b9d9419aa4dd187df86a66795e8a1076de18b0c0c5979028fb +CT= c636ee8d4ac7efe4fa90345364dd76350041b67239fea3d5dfc639514959d758 +PT= b90b3316773da5b0356de944e001028bd78068cafcf270c4eac13618bd61c208 +TEST= 158 +KEY= cc62d04543a75457507001b6e3d979e1 +IV= 64ac3d9c16c308a0a8530ee13ae571c20804a0a0aae567d90ac030e012f60a23 +CT= b90b3316773da5b0356de944e001028bd78068cafcf270c4eac13618bd61c208 +PT= 8d2b3cdeceb5c803dfc4a60b87eff43e4142e56c11fad7af6e7926833b19e94f +TEST= 159 +KEY= 8d203529525d83f83e092735d8c090ae +IV= 3085f89bf5c2c7a64bff8bbceb9b533d058208c75ba77b2b765b52c9162c27e5 +CT= 8d2b3cdeceb5c803dfc4a60b87eff43e4142e56c11fad7af6e7926833b19e94f +PT= d3df472fe18c49ca0aefa8d7f522ef21a140123f2bc88a9e31de1926a6a6cac3 +TEST= 160 +KEY= 2c602716799509660fd73e137e665a6d +IV= 88b0ad2a965025ee16d04a907ce07f31ab457ce02a4c692eda42fb2ebb06b993 +CT= d3df472fe18c49ca0aefa8d7f522ef21a140123f2bc88a9e31de1926a6a6cac3 +PT= 00979913bae10fc180e9d94cde7b1dee592f8c3513f60437ea2e8db71705bc42 +TEST= 161 +KEY= 754fab236a630d51e5f9b3a46963e62f +IV= 703c2dd4dc6a5cee3e44c2726a6b9e8ee79d3ba12770cc6fece8f33a1e5612b5 +CT= 00979913bae10fc180e9d94cde7b1dee592f8c3513f60437ea2e8db71705bc42 +PT= 4a5be9b01fa424d6756064fb0d4457849eb69b4667c2f7f3f9a115bea043e7e0 +TEST= 162 +KEY= ebf930650da1faa21c58a61ac92001cf +IV= 315353c6ab6d9020134222a9d31526035851c45179e1ffd0fd1f167fd399769f +CT= 4a5be9b01fa424d6756064fb0d4457849eb69b4667c2f7f3f9a115bea043e7e0 +PT= f161ff9af6f15b4ab4ec72a13ac23e4d2a3a492b055bde239f1aa8ecc0802610 +TEST= 163 +KEY= c1c3794e08fa248183420ef609a027df +IV= 15c4f5bdbf624b744e9c995433f4e9f4a3f4c783f2f93f69cff445c4d06f7ffb +CT= f161ff9af6f15b4ab4ec72a13ac23e4d2a3a492b055bde239f1aa8ecc0802610 +PT= 0a7a6e3d2112844bf1298646e0256b91a8888fe14b6002a6ae5995e03ccd29e7 +TEST= 164 +KEY= 694bf6af439a26272d1b9b16356d0e38 +IV= 3873c20ccaed6399c942fe283add42bfea21177b6c2e7bc5b49f78beb9889c87 +CT= 0a7a6e3d2112844bf1298646e0256b91a8888fe14b6002a6ae5995e03ccd29e7 +PT= db26d5c1acbb4b1cc1dd3224899b901f3993ce6222663d7ae9b0b0bb5224db13 +TEST= 165 +KEY= 50d838cd61fc1b5dc4ab2bad6749d52b +IV= 63be00c1ba935db0838bedc9cd698d07f1a02cee490dd59c53d76bde38df36af +CT= db26d5c1acbb4b1cc1dd3224899b901f3993ce6222663d7ae9b0b0bb5224db13 +PT= a60f25b53e48b8f42338c5f69dfaee9de7ad948ae9e98afeeba1cb82dd61b5ca +TEST= 166 +KEY= b775ac47881591a32f0ae02fba2860e1 +IV= 8df05e5a6a450704b9189b78fcdfd0fb5d67bd8c854c67f06bce6effa247a29f +CT= a60f25b53e48b8f42338c5f69dfaee9de7ad948ae9e98afeeba1cb82dd61b5ca +PT= db31b1979d3c7058070a1081c00edee0b3bd7332f0fc3426443f8bf1bd57f722 +TEST= 167 +KEY= 04c8df7578e9a5856b356bde077f97c3 +IV= f7aac0dd4644ff4d5232a8298bd6a923568cf1273bcbdaf8899130614b33ff5f +CT= db31b1979d3c7058070a1081c00edee0b3bd7332f0fc3426443f8bf1bd57f722 +PT= 1517f2738a4e90329f0532236be80081f48dc19e12f79ef3e03c6b8793dd732b +TEST= 168 +KEY= f0451eeb6a1e3b768b09005994a2e4e8 +IV= 6920577b03eac1437cc8b218d62196f71acc1a5ce7d8f147d72a36282405e9eb +CT= 1517f2738a4e90329f0532236be80081f48dc19e12f79ef3e03c6b8793dd732b +PT= 12645d2d9962ea7e2a475241032cf06301fdd6e90f7a5e38917f2dc76c1f7bdd +TEST= 169 +KEY= f1b8c8026564654e1a762d9ef8bd9f35 +IV= 57ab41f7efc0cde19aed44efe0f85e4eec2340e3f495dd646ca08af054a14228 +CT= 12645d2d9962ea7e2a475241032cf06301fdd6e90f7a5e38917f2dc76c1f7bdd +PT= 92a1fc8eef30f1d0c55265ecceb57b7485e76caef97d19340535a9117db98d80 +TEST= 170 +KEY= 745fa4ac9c197c7a1f43848f850412b5 +IV= 20043a5d5febc91b073933c5906ba3b2f59467b442333efc8097d2c5df5e2d74 +CT= 92a1fc8eef30f1d0c55265ecceb57b7485e76caef97d19340535a9117db98d80 +PT= 04bc635b41cf3c5536a983eb53af4cdfae714a1ed6875185142c73cbe5e830ea +TEST= 171 +KEY= da2eeeb24a9e2dff0b6ff74460ec225f +IV= dd1bbeae94af337eab49d8874899e6148e8e3a1b63d984581d2c04964fa5c8c2 +CT= 04bc635b41cf3c5536a983eb53af4cdfae714a1ed6875185142c73cbe5e830ea +PT= ec1ebd642b41172812f19ddfb8be1c1b8960552e24d90096095ddea1248cb44d +TEST= 172 +KEY= 534ebb9c6e472d69023229e544609612 +IV= 9559a134b806a3ad31fa555b868a358f380cf2af11fe7262f93db13f2ab96987 +CT= ec1ebd642b41172812f19ddfb8be1c1b8960552e24d90096095ddea1248cb44d +PT= 08a806020ee6a1fd76b46ec71aea10e8c7f2bbcd647fcc6e52f50f03d7d2ebf9 +TEST= 173 +KEY= 94bc00510a38e10750c726e693b27deb +IV= 3f5e92dfe196b707a13c5b701c09af530113a6c4b91adb586dd80219d40e6f06 +CT= 08a806020ee6a1fd76b46ec71aea10e8c7f2bbcd647fcc6e52f50f03d7d2ebf9 +PT= e203d1d1c086f1ced215dcb3df73ddcc0f1b1fada97ecf8562e599b71be5e89b +TEST= 174 +KEY= 9ba71ffca3462e823222bf5188579570 +IV= d62787c6407b95970752dad8fa2788266491d620a85a97a345b7869618da44ec +CT= e203d1d1c086f1ced215dcb3df73ddcc0f1b1fada97ecf8562e599b71be5e89b +PT= 0aa8d42e1a9c70ce6437eb21128b83cd65e07959f2b4c3a626f8432e660b538d +TEST= 175 +KEY= fe4766a551f2ed2414dafc7fee5cc6fd +IV= b4a71e82f279e900ae44f95c871f10576e1ee03d9fe9690670d28a6714be6d13 +CT= 0aa8d42e1a9c70ce6437eb21128b83cd65e07959f2b4c3a626f8432e660b538d +PT= de8084d8f38aece169ef0f49830a22f0ec88a0faefa644ebeb831b30f4393099 +TEST= 176 +KEY= 12cfc65fbe54a9cfff59e74f1a65f664 +IV= 1ca538f3cb00cff7343fc06dc83a9de4a5f52174e8a85a3728540aa16502ccd2 +CT= de8084d8f38aece169ef0f49830a22f0ec88a0faefa644ebeb831b30f4393099 +PT= a7b82536901a1b1770db7d5b19c98a3780ba52cf7d3fd4bf266b641b6fa92f62 +TEST= 177 +KEY= 92759490c36b7d70d932835475ccd906 +IV= 634e27a5d1dcd0363071cc7f5d0b3f10977df8dad05112a1989fbdd1a1bcf705 +CT= a7b82536901a1b1770db7d5b19c98a3780ba52cf7d3fd4bf266b641b6fa92f62 +PT= 0a2300da6d0db2836ffe989251ce771ca3b05fa2d200efedade726873ca2abef +TEST= 178 +KEY= 31c5cb32116b929d74d5a5d3496e72e9 +IV= 04de01c329c96ff7ce1a79cd725565e81462bba2d3157f050930e896b9607243 +CT= 0a2300da6d0db2836ffe989251ce771ca3b05fa2d200efedade726873ca2abef +PT= 153fd1a20c5576c217201f2a221561a087d59f577de7dc0c6aa4fbfebb3782e9 +TEST= 179 +KEY= b61054656c8c4e911e715e2df259f000 +IV= 0979c2eaadad55c5d431517f58d5789b1c48ff67f0034e8ebe4975b8d16a8e8f +CT= 153fd1a20c5576c217201f2a221561a087d59f577de7dc0c6aa4fbfebb3782e9 +PT= c372db09826086a8303ecfa0f65773ee60de5b94ded93eadf3f67027f63b45f4 +TEST= 180 +KEY= d6ce0ff1b255703ced872e0a0462b5f4 +IV= fd298eb7f0123ccd27d921a9e341e53f970131c64d52beee558b94d9ab641df7 +CT= c372db09826086a8303ecfa0f65773ee60de5b94ded93eadf3f67027f63b45f4 +PT= 7b79695352a883dcb841cb7ee12c21b774f729863fa4d86dd7a14984b582c409 +TEST= 181 +KEY= a23926778df1a8513a26678eb1e071fd +IV= ac1d9aba994f4c62e37160fb4fb8c0a8255b46fb7df068b4ac8fc6c82b516fc9 +CT= 7b79695352a883dcb841cb7ee12c21b774f729863fa4d86dd7a14984b582c409 +PT= d5e0fe2482504e88d0a07c5c629dc3966bfba69f9f9f1daecf53298fd699b893 +TEST= 182 +KEY= c9c280e8126eb5fff5754e016779c96e +IV= bf9085abe10a6b3381e5597a7a8f787bdb959b19f7440dc50f95267b89c04235 +CT= d5e0fe2482504e88d0a07c5c629dc3966bfba69f9f9f1daecf53298fd699b893 +PT= 1c49139ed03c1aeac71c045742fa87f4d8365bf36d7dbf1adeae17f767adf228 +TEST= 183 +KEY= 11f4db1b7f130ae52bdb59f600d43b46 +IV= 8c4c5293f706ab007977a6a23e3f11348db339a26d204ee691c9697f3689f5e5 +CT= 1c49139ed03c1aeac71c045742fa87f4d8365bf36d7dbf1adeae17f767adf228 +PT= 9a86b6f0921a71f88a64a3350b6a59f1e6c0107f54cd5ed0e95a940b34f1718c +TEST= 184 +KEY= f734cb642bde5435c281cdfd34254aca +IV= 86085edd1f280d85a2d27a95473ef0a35cfe560abf721d438fde77d537feb50f +CT= 9a86b6f0921a71f88a64a3350b6a59f1e6c0107f54cd5ed0e95a940b34f1718c +PT= e7455487dc8efd8dd258b617b1f4ad8f636973dc345e0f98ebd7197b74bbb958 +TEST= 185 +KEY= 945db8b81f805bad2956d486409ef392 +IV= 4f33c152f80fa233078b3ee2fc3c70983616d1a36619eee351b45ea528f48830 +CT= e7455487dc8efd8dd258b617b1f4ad8f636973dc345e0f98ebd7197b74bbb958 +PT= dc19c94e793b762686bf2f59a3dae49468310ebeec9197d652d4d69fc66f9dea +TEST= 186 +KEY= fc6cb606f311cc7b7b82021986f16e78 +IV= 70d630a617103a09a35202fb14440ca914da5dd41f0438ef1aca81004872b3ea +CT= dc19c94e793b762686bf2f59a3dae49468310ebeec9197d652d4d69fc66f9dea +PT= 3ef0b798a75b2ffe4fedb0d0e2608e80958d1d8743a2dd6788020194c0da18c6 +TEST= 187 +KEY= 69e1ab81b0b3111cf380038d462b76be +IV= 32b31a5b7b93ba5214ce580f2c9d3afef429067d5a17d415b7bb2264fc1cdcf8 +CT= 3ef0b798a75b2ffe4fedb0d0e2608e80958d1d8743a2dd6788020194c0da18c6 +PT= 2dd48ac94c6ffe320184f367174dfab31654828158c994c85aeecfd6d1989fe9 +TEST= 188 +KEY= 7fb52900e87a85d4a96ecc5b97b3e957 +IV= bcb2203a3421e2d01b5e0850f3729484e35268a65463ed19bfcb6c2fbd63a780 +CT= 2dd48ac94c6ffe320184f367174dfab31654828158c994c85aeecfd6d1989fe9 +PT= bc97fb55930653192f41eb4132e21410aecf28348da2a2f5eaf0896a8e567d26 +TEST= 189 +KEY= d17a013465d82721439e453119e59471 +IV= 9c8cb75698d19fabafd7abbbf7b6ac34808b1c035d61178d1250543e29e3bcea +CT= bc97fb55930653192f41eb4132e21410aecf28348da2a2f5eaf0896a8e567d26 +PT= 156be6ff25cebe91ec41559bd882773ed3b9221468e3529edcb07452d4e8ca58 +TEST= 190 +KEY= 02c323200d3b75bf9f2e3163cd0d5e29 +IV= cddab1e3597ce09f8ec3dd0130c69632287f9f11969e9d05b2044556694cef36 +CT= 156be6ff25cebe91ec41559bd882773ed3b9221468e3529edcb07452d4e8ca58 +PT= ff5ed76c8823433800a1481372775b7649dd6a3bd0880eade1a1ea53952bdb7b +TEST= 191 +KEY= 4b1e491bddb37b127e8fdb3058268552 +IV= 5a412dcec2996b375848a70594e6fbaaf697de0bc720644821fb34d0ae3e8e24 +CT= ff5ed76c8823433800a1481372775b7649dd6a3bd0880eade1a1ea53952bdb7b +PT= 3ce1a98c6c60d3b68a53f9b3ca57054d7072b483a697630773070a3988d1612d +TEST= 192 +KEY= 3b6cfd987b2418150d88d109d0f7e47f +IV= 3050787d69ca24e5b908a8aac20c778d575013ad7ebc0059f0a0b6809e6a350e +CT= 3ce1a98c6c60d3b68a53f9b3ca57054d7072b483a697630773070a3988d1612d +PT= 46de62e5413e8262bf70d92c6b136fe4c576d399ee3747f006e493d0a95c7701 +TEST= 193 +KEY= fe1a2e0195135fe50b6c42d979ab937e +IV= d30196b9aab3383b3a3ca160b03b84fdc564980ff741b3277f807a8e181e6f4e +CT= 46de62e5413e8262bf70d92c6b136fe4c576d399ee3747f006e493d0a95c7701 +PT= 363614492839c10514114bd531a9d058cd6ff439ef5d4d364d92f36f2fd77549 +TEST= 194 +KEY= 3375da387a4e12d346feb1b6567ce637 +IV= debd4e98b58f886af0be33916fb84c01e20be63c145ec8978c0a27ea07b583c6 +CT= 363614492839c10514114bd531a9d058cd6ff439ef5d4d364d92f36f2fd77549 +PT= 1a46fc448b0c0f6b80ed2fa7c36aec2a8e0515cef088e04dec199fd7afcac913 +TEST= 195 +KEY= bd70cff68ac6f29eaae72e61f9b62f24 +IV= 79f04b91482705d77ef38dcf366e669c40e5f3e1ca816bc23cc2c1992ba77a10 +CT= 1a46fc448b0c0f6b80ed2fa7c36aec2a8e0515cef088e04dec199fd7afcac913 +PT= 5ee2af2ef3af3da2981377e436c4f98d94abea9b70f55fbaadfcd9721f872965 +TEST= 196 +KEY= 29db256dfa33ad24071bf713e6310641 +IV= cd691258cffb41c4fa98a7313f43a9eb333ba794d4514cc3cb843e9aa0620b1f +CT= 5ee2af2ef3af3da2981377e436c4f98d94abea9b70f55fbaadfcd9721f872965 +PT= cedb9d6c0687ddb9afe2155ab441810e80eadf8adb6cec873399246bdc386be6 +TEST= 197 +KEY= a931fae7215f41a33482d3783a096da7 +IV= 8df32ab58311c3fd7a0c64bfe0c879383c176b530ff28057438aab0e186bfc7f +CT= cedb9d6c0687ddb9afe2155ab441810e80eadf8adb6cec873399246bdc386be6 +PT= 663df9e1223b36e0d97ac28e54a685c0ede4c710091e93a4f1a18e19eeb81e78 +TEST= 198 +KEY= 44d53df72841d207c5235d61d4b173df +IV= 85e1664a5398321539876f7ec4ae17e86400c8df8ae6f77610385a77d4b6b1f8 +CT= 663df9e1223b36e0d97ac28e54a685c0ede4c710091e93a4f1a18e19eeb81e78 +PT= c81411287189a1ae3ab037b7280bc37515850b455862f39488e5b5de0c6f2a61 +TEST= 199 +KEY= 515036b2702321934dc6e8bfd8de59be +IV= 2551b3d6c6c5d36c562662b95e538230eff2b23056f2b6c7ce24a417452e291b +CT= c81411287189a1ae3ab037b7280bc37515850b455862f39488e5b5de0c6f2a61 +PT= c2da8e86d9f55e6146e54f888d62ad1b24c4695af3a5b53ab8e94c5fde5d3ade +TEST= 200 +KEY= 75945fe8838694a9f52fa4e006836360 +IV= b3c7a9be68df03f82ab131af9cfc8e3a1a93c6c165d9fed928b218e0c9edab16 +CT= c2da8e86d9f55e6146e54f888d62ad1b24c4695af3a5b53ab8e94c5fde5d3ade +PT= 765eb7fcad5fc7dbbcd0b0d38ae777e8859df4a87a1628eb512b79467bafbebe +TEST= 201 +KEY= f009ab40f990bc42a404dda67d2cddde +IV= 33a6960006bba665783b914d11a7065733df5286a71820abc47de678784c1e96 +CT= 765eb7fcad5fc7dbbcd0b0d38ae777e8859df4a87a1628eb512b79467bafbebe +PT= b111df8622ae259f1c5dfd6e2dad46a7b9cf05a50289603afef909c32d3ddc79 +TEST= 202 +KEY= 49c6aee5fb19dc785afdd465501101a7 +IV= a4a25d657929691d397460562c388093c310f89aad3824d4fd2bc29c88b05bd7 +CT= b111df8622ae259f1c5dfd6e2dad46a7b9cf05a50289603afef909c32d3ddc79 +PT= 61453e7f3dfda04f61248a8b1d2bbc6349964d5084a8842f4b0a0e13d3f97046 +TEST= 203 +KEY= 0050e3b57fb1585711f7da7683e871e1 +IV= dad10f9049e43e30b9662c1db617aee3f1cb19c933066928c915be566196dd61 +CT= 61453e7f3dfda04f61248a8b1d2bbc6349964d5084a8842f4b0a0e13d3f97046 +PT= 86153ee1612d0526dd34805566189a79af11336e602fa450f010133dbdb964da +TEST= 204 +KEY= af41d0db1f9efc07e1e7c94b3e51153b +IV= 0ef0b7ba2e5ca242eb2f78d2e2ed5a63fb129dee616a388a87f09c9953a61117 +CT= 86153ee1612d0526dd34805566189a79af11336e602fa450f010133dbdb964da +PT= 028864b15402e9627cc5b8349beacf53f755c0b49ccdc048f830e3ae425c531a +TEST= 205 +KEY= 5814106f83533c4f19d72ae57c0d4621 +IV= b50f16c330c75dacbc44f17ab06ec41b38671787fe46cd2477bc974df1d8ca92 +CT= 028864b15402e9627cc5b8349beacf53f755c0b49ccdc048f830e3ae425c531a +PT= b906877efb0fa01d3e960a8d9dcc51d3b807ed1b35d7c32080704749480e11d8 +TEST= 206 +KEY= e013fd74b684ff6f99a76dac340357f9 +IV= 467652146556ee2aa4575a747f06494aae225980d6a94895d3cdea1fafd801d9 +CT= b906877efb0fa01d3e960a8d9dcc51d3b807ed1b35d7c32080704749480e11d8 +PT= 2cff13950bd367da8b70a2230f73c09a61ceab2290c6a34b4740819eedae724b +TEST= 207 +KEY= 81dd565626425c24dee7ec32d9ad25b2 +IV= 9b419ec029536dbff8282607e24ccbf19f3398583bd11c4f847a2fb4551a6dc2 +CT= 2cff13950bd367da8b70a2230f73c09a61ceab2290c6a34b4740819eedae724b +PT= a4e86d4353c0328a52813007a40f4e62779a361c43c488be7f854a74b2203ae1 +TEST= 208 +KEY= f647604a6586d49aa162a6466b8d1f53 +IV= a46a23ff234248e189a481b3d4b8f9a642f52ddfea821e26112b2c9165377870 +CT= a4e86d4353c0328a52813007a40f4e62779a361c43c488be7f854a74b2203ae1 +PT= b7b9d0e8908b252a09aa724f89b17219042e1d328e6c370568be57a7a7da9c23 +TEST= 209 +KEY= f2697d78ebeae39fc9dcf1e1cc578370 +IV= 3fdaf3f30d0e25652523597de7b31e02a739b832e9db195b02d378c97265e3fc +CT= b7b9d0e8908b252a09aa724f89b17219042e1d328e6c370568be57a7a7da9c23 +PT= 865ad4b96d36a2bf2168a28483a1b4b910d21c4be58e64a4372514161a080ec3 +TEST= 210 +KEY= e2bb61330e64873bfef9e5f7d65f8db3 +IV= ef8c979b5824f82511487152aeafb77758a549d30892d95cd05a13b3e8c45355 +CT= 865ad4b96d36a2bf2168a28483a1b4b910d21c4be58e64a4372514161a080ec3 +PT= 68c63143623b731d7bd459b3ab899dac2bccdbb20fb672f28b9ef2e242560e2d +TEST= 211 +KEY= c977ba8101d2f5c9756717159409839e +IV= 9b482b0332043af5687dfdd9fac23306eb328c387f4dbd2c5fe47a4b80230328 +CT= 68c63143623b731d7bd459b3ab899dac2bccdbb20fb672f28b9ef2e242560e2d +PT= a86f79bc1393004f677205cc7016a2355b228c1f5ba9082b7a9b02eca95f9844 +TEST= 212 +KEY= 9255369e5a7bfde20ffc15f93d561bda +IV= cd1d440b5f839dcce7de08144b0def9695d81497f229be1ed4146e1e2bed4feb +CT= a86f79bc1393004f677205cc7016a2355b228c1f5ba9082b7a9b02eca95f9844 +PT= 47d2c79793ef1707899f866b38a2dcdd868202a7390ff220a14c8d4be03c3d9b +TEST= 213 +KEY= 14d7343963740fc2aeb098b2dd6a2641 +IV= 29bbd66d1c0fb1ad18bd41f4905a08425d136899229d5667b4e0762126592e47 +CT= 47d2c79793ef1707899f866b38a2dcdd868202a7390ff220a14c8d4be03c3d9b +PT= f682f139dfec34e24878626518b2a922008612ea791f15cb9b459c3f6da29888 +TEST= 214 +KEY= 145126d31a6b1a0935f5048db0c8bec9 +IV= 40cec6892fce8bf02e2bc52244c67e8c08e638665c7ae5901ba14d52269caf2a +CT= f682f139dfec34e24878626518b2a922008612ea791f15cb9b459c3f6da29888 +PT= 8499f078afc4b31e58b0089c6b2f58ead921668ebde36ca271218de5d3c0363a +TEST= 215 +KEY= cd70405da78876ab44d48968630888f3 +IV= a3d9064dc02c575573ccb7c234f87d978f263b8fd741fa2d5cc1c5d2ffc08bc5 +CT= 8499f078afc4b31e58b0089c6b2f58ead921668ebde36ca271218de5d3c0363a +PT= c99e01d9eb2f9d07a23641a84e9d93a098d8907407492a579bf389f133eeec45 +TEST= 216 +KEY= 55a8d029a0c15cfcdf27009950e664b6 +IV= 6125575da755b0ed5dfcce174a0bf01d3dbc1748596ea9b54e05c1b3ee2e81f7 +CT= c99e01d9eb2f9d07a23641a84e9d93a098d8907407492a579bf389f133eeec45 +PT= 196c155e2330a94fad4a28284cd1260b4fed7357cbfada17cd4835758f7aacfd +TEST= 217 +KEY= 1a45a37e6b3b86eb126f35ecdf9cc84b +IV= 839980032689ca3b1fe96aa8f591384f0d4030089c74870bc9ce02e44f0bb90b +CT= 196c155e2330a94fad4a28284cd1260b4fed7357cbfada17cd4835758f7aacfd +PT= 161abd4db4469db2c39f4c3c868e0acd21f65f96f3a2018584da066a301cc03d +TEST= 218 +KEY= 3bb3fce89899876e96b53386ef800876 +IV= df6563bc8b71f833b4a1eaf1909f7abcc7a4ee7fb643145700b4eaf366b2c3d2 +CT= 161abd4db4469db2c39f4c3c868e0acd21f65f96f3a2018584da066a301cc03d +PT= 6ba44e5dc2f4d8a3bbc6b713930697d53f50e8f81085543ee8931d989b721e75 +TEST= 219 +KEY= 04e31410881cd3507e262e1e74f21603 +IV= 6e1d5efcdc256b199028c50a777c2a16ee875231fce76c6e09fd4c5ed76cdbca +CT= 6ba44e5dc2f4d8a3bbc6b713930697d53f50e8f81085543ee8931d989b721e75 +PT= f34af9e9cb74f722426ea04b67c2c57a7e8e9cbace0ca015db37d4fad45c3237 +TEST= 220 +KEY= 7a6d88aa46107345a511fae4a0ae2434 +IV= 36d8464f79c63a3d6d5e58dba3089688fd00bc6d827fd597c5d5a9c7bf7324b9 +CT= f34af9e9cb74f722426ea04b67c2c57a7e8e9cbace0ca015db37d4fad45c3237 +PT= bbe04dec62fbe8c570134c249700a94d1741e0e9136ce322912d62e7e9d142c3 +TEST= 221 +KEY= 6d2c6843557c9067343c9803497f66f7 +IV= 517181e7676acebf7a142945a4816a9ea133acd127ba454ad1deb923a5b159d9 +CT= bbe04dec62fbe8c570134c249700a94d1741e0e9136ce322912d62e7e9d142c3 +PT= 493c7dfd888b176392b5d161420c4da22803da9faa2ea244fc4987db9d218423 +TEST= 222 +KEY= 452fb2dcff523223c8751fd8d45ee2d4 +IV= 208e59136860cef331d50f5908b14784083307762104c9767c2f821962006e41 +CT= 493c7dfd888b176392b5d161420c4da22803da9faa2ea244fc4987db9d218423 +PT= 1c55ffd602080ee07251cb339b333b64be710fa52f90c59056076fb685db2d5f +TEST= 223 +KEY= fb5ebd79d0c2f7b39e72706e5185cf8b +IV= d18eb14fcbb9f5341fcb0b58a9776842fd30e509a5eabee2825b68feb5e5d949 +CT= 1c55ffd602080ee07251cb339b333b64be710fa52f90c59056076fb685db2d5f +PT= 5dafa0ebd8ea1072f78872c91dde26e04a2356e20b1e6a74c9d35fecebc5300d +TEST= 224 +KEY= b17deb9bdbdc9dc757a12f82ba40ff86 +IV= 59cfd773ef10b441af984bee91b7ba75369fd21775ec68cbcecdb5dd97268dba +CT= 5dafa0ebd8ea1072f78872c91dde26e04a2356e20b1e6a74c9d35fecebc5300d +PT= 0a3c3cb67071ae4bd3b2055a05f04c4a475bca832cc14e54c049144cf1fa118b +TEST= 225 +KEY= f6262118f71dd39397e83bce4bbaee0d +IV= 7a3de31c8b79f16f69af706966460055429262f3b1159a1ca584105d2438bc9d +CT= 0a3c3cb67071ae4bd3b2055a05f04c4a475bca832cc14e54c049144cf1fa118b +PT= e0f1566850fdd29cd75af20531201fe46d5d5c5ef62cb5e8b78b5b8957124ec0 +TEST= 226 +KEY= 9b7b7d460131667b206360471ca8a0cd +IV= 9894270251dce2721db767484366c7a4a190e72431a833a8a5400709e9f5d689 +CT= e0f1566850fdd29cd75af20531201fe46d5d5c5ef62cb5e8b78b5b8957124ec0 +PT= 158399ffc30d05fd104d532c011c888cdf5f372af002776565f8de123925470b +TEST= 227 +KEY= 44244a6cf133111e459bbe55258de7c6 +IV= fcb9cc0a56c8c9c9423257c10820959c364bace13476b7bcc6e88b9f0d73b7bf +CT= 158399ffc30d05fd104d532c011c888cdf5f372af002776565f8de123925470b +PT= e40048837f9068ac2285bf8b18bac247519a340eec141a8e2525f987d3f4a615 +TEST= 228 +KEY= 15be7e621d270b9060be47d2f67941d3 +IV= c7c7f29aa86de0c49d953cb530fa49e1f77c7a29892a402401b231f816e2fb4f +CT= e40048837f9068ac2285bf8b18bac247519a340eec141a8e2525f987d3f4a615 +PT= 8e6b13424358a2a2e000bcc03993f7d9dfb9e5b5c57fdb7ca5d2bf44cb2e47ca +TEST= 229 +KEY= ca079bd7d858d0ecc56cf8963d570619 +IV= 048d55f3da8c17560a55da5ce805df082dd06cab2a81ba688fa382de578c519c +CT= 8e6b13424358a2a2e000bcc03993f7d9dfb9e5b5c57fdb7ca5d2bf44cb2e47ca +PT= e74e0b2e7b7f6221b5dea688df8da3673b67abbe1e16c6129a71208f9376e9d3 +TEST= 230 +KEY= f1603069c64e16fe5f1dd819ae21efca +IV= 6e9d12a43740361b973fd88ae15c95e2cf70e38303daf1b67c1588b115a82ef5 +CT= e74e0b2e7b7f6221b5dea688df8da3673b67abbe1e16c6129a71208f9376e9d3 +PT= 76da7664175c40e27320764e4adb6651e8ac6b7fa71bf3e1e14221daee29f5de +TEST= 231 +KEY= 19cc5b166155e51fbe5ff9c340081a14 +IV= d70026af55d96f92da536be252a61b8bfbe2de86d1344542ca42787b127b642d +CT= 76da7664175c40e27320764e4adb6651e8ac6b7fa71bf3e1e14221daee29f5de +PT= 42cf2e2fb8aaa79f7240110a2a4a69a58d5b2a2e7ad7d568d4395679cd13d743 +TEST= 232 +KEY= 949771381b8230776a66afba8d1bcd57 +IV= ef1216a3196021e9d35718056fc7658b5bf587322f564dfdda9600377b46a9c9 +CT= 42cf2e2fb8aaa79f7240110a2a4a69a58d5b2a2e7ad7d568d4395679cd13d743 +PT= bc066576c6e34e09e52c0ed9d83603d9d258bedb4e8c6cda54b3ec952a68ed6b +TEST= 233 +KEY= 46cfcfe3550e5cad3ed5432fa773203c +IV= 7265d9da84afae7e6b0d95834b2bfe325498f20f62baea2668ac872bef972a2d +CT= bc066576c6e34e09e52c0ed9d83603d9d258bedb4e8c6cda54b3ec952a68ed6b +PT= a6b274834e935eed82a7d119c267ee09960c66c16a06e210b7f0a0c19bb0038d +TEST= 234 +KEY= d0c3a9223f08bebd8925e3ee3cc323b1 +IV= 4a1993213a9866e5f560cbca723259de72322f3545db8fa7c88be30f608b4c9d +CT= a6b274834e935eed82a7d119c267ee09960c66c16a06e210b7f0a0c19bb0038d +PT= ddffbec76d5051b331e866e393ade24da884998682af74042a594404062e0456 +TEST= 235 +KEY= 784730a4bda7cab9a37ca7ea3aed27e7 +IV= 46fa778c061ede7509f0df988073368acc119da7ac1c31a9fd71dab03fd1c003 +CT= ddffbec76d5051b331e866e393ade24da884998682af74042a594404062e0456 +PT= 11c95c823839a46d39d2ba35dc1a7ca84e061725dbbf06635b890fc6586be395 +TEST= 236 +KEY= 364127816618ccdaf8f5a82c6286c472 +IV= 9b34c0d46368daed1e6282a4cf0f3591b4fa80e8d11d7e87f1202d5b89e5e92a +CT= 11c95c823839a46d39d2ba35dc1a7ca84e061725dbbf06635b890fc6586be395 +PT= 265530189cfe19435268712535154f605d2d99fc6316241273ed5f204bd560ef +TEST= 237 +KEY= 6b6cbe7d050ee8c88b18f70c2953a49d +IV= 3b5111cca95b105a5f969e049519e5f62c6203c5b753ee55b688cddf8a03d8e0 +CT= 265530189cfe19435268712535154f605d2d99fc6316241273ed5f204bd560ef +PT= b8da3e3daa1a72619fa2622fc83789cdbdfe83fda87c37f539df5db71e9979bc +TEST= 238 +KEY= d6923d80ad72df3db2c7aabb37cadd21 +IV= 9cae2d71821859f291208ec9cddb0a0f5a25d7de9a9443b8541e23c093aca01f +CT= b8da3e3daa1a72619fa2622fc83789cdbdfe83fda87c37f539df5db71e9979bc +PT= b94911d9f96de7e1226baae6a1c76e7803d09d57b08306623909deff3bce38df +TEST= 239 +KEY= d542a0d71df1d95f8bce74440c04e5fe +IV= f6bf72f9ebd97594b494e75d5eb95e93c71a4e20e5c5e48e7aa41b0deb945213 +CT= b94911d9f96de7e1226baae6a1c76e7803d09d57b08306623909deff3bce38df +PT= 98c5244db9b43f9628ade36ae59ac6879e7176979bb40c54d36422f3bfbafb31 +TEST= 240 +KEY= 4b33d6408645d50b58aa56b7b3be1ecf +IV= 3bfcba401d653f1ff22c1034e269dfcb12129de6fe77536e882a7bec92c867c0 +CT= 98c5244db9b43f9628ade36ae59ac6879e7176979bb40c54d36422f3bfbafb31 +PT= 33a229ffc15d4c0805dbc4464605523499bdbe0919bd40a552ba7526d5b3aa61 +TEST= 241 +KEY= d28e68499ff895ae0a102391660db4ae +IV= 540eed5b6c9732e3d7b7d5d9f92ad453384315680efaf0708252844d1d4d61c6 +CT= 33a229ffc15d4c0805dbc4464605523499bdbe0919bd40a552ba7526d5b3aa61 +PT= f95e0e085d74604e0c49654157c4ea0ebdeeedede98e47fcffb857c240a3c307 +TEST= 242 +KEY= 6f6085a47676d252f5a8745326ae77a9 +IV= 15fe6efba272eb50c1b7844a1aaa38fb029788ba7f8476c4074b4e93c52c27d3 +CT= f95e0e085d74604e0c49654157c4ea0ebdeeedede98e47fcffb857c240a3c307 +PT= ebe2d62426f015e5b1683d0b0ca9f8f6454dc4e91e9e8abb997b97004c75586d +TEST= 243 +KEY= 2a2d414d68e858e96cd3e3536adb2fc4 +IV= 79d56ac93b992498fccc966c599e43cedacbe75eb94666cbea5ab8d05f0b4a07 +CT= ebe2d62426f015e5b1683d0b0ca9f8f6454dc4e91e9e8abb997b97004c75586d +PT= 18d9916fbd904825e3099027c3ecef20eef0bdab137a87db93eb11ce499359d4 +TEST= 244 +KEY= c4ddfce67b92df32ff38f29d23487610 +IV= 6bd731f47dc758148e804de6e650264bb06acf1df3add74d95ffe8186040ed41 +CT= 18d9916fbd904825e3099027c3ecef20eef0bdab137a87db93eb11ce499359d4 +PT= cd5bcd16251a5188801bc7a238d5c8a435a8fddcadd8966748a2cc04c169a78f +TEST= 245 +KEY= f175013ad64a4955b79a3e99e221d19f +IV= b63985cd97686c61d5c6f8d3f4a25879238d579109499573c6e1bd10833f112a +CT= cd5bcd16251a5188801bc7a238d5c8a435a8fddcadd8966748a2cc04c169a78f +PT= 8b8d43c0bf192810de66e9a3968da73c573f32dd7d30a3bc241ed8ab1ddcbf67 +TEST= 246 +KEY= a64a33e7ab7aeae99384e632fffd6ef8 +IV= 460ddb409f4215c9f741406fc6ea1c24c30076429d1bd071ca5e9012156c6a84 +CT= 8b8d43c0bf192810de66e9a3968da73c573f32dd7d30a3bc241ed8ab1ddcbf67 +PT= 9da164cd30b171ab749aa092344cdf30737b87b19bb7aa76093b44bea0652585 +TEST= 247 +KEY= d531b45630cd409f9abfa28c5f984b7d +IV= aa8daf710737766a4901d0eea0aaa1a7e156178edcb3437d928dbebcb9c69369 +CT= 9da164cd30b171ab749aa092344cdf30737b87b19bb7aa76093b44bea0652585 +PT= 6236cdcf1b7aa92071579f4891cd803c0fefe1079049ce415ca26a4238e8c67c +TEST= 248 +KEY= dade5551a0848edec61dc8ce67708d01 +IV= 8e2782437fd6fdc054081f7379f8a25acd76931463d215b9b9e8aefdb0b32801 +CT= 6236cdcf1b7aa92071579f4891cd803c0fefe1079049ce415ca26a4238e8c67c +PT= 0d39d7bc92341f4507f38101078133b6ddb496ba686f41ee01dd873f8dc57bae +TEST= 249 +KEY= 076ac3ebc8ebcf30c7c04ff1eab5f6af +IV= dd16189868ed2cd62de6ee0b8bedb4894f10096ff9d2e3160a6627c601132e70 +CT= 0d39d7bc92341f4507f38101078133b6ddb496ba686f41ee01dd873f8dc57bae +PT= 6a76d5ad641dafae40e716cbce51d42bfef56d906ad5f1f83d1fb39b397ac562 +TEST= 250 +KEY= f99fae7ba23e3ec8fadffc6ad3cf33cd +IV= 71ca1f50407ca0616ee8a3027f3e743155a9ecc73e4ec7c4b4ab06c8ebf78d9d +CT= 6a76d5ad641dafae40e716cbce51d42bfef56d906ad5f1f83d1fb39b397ac562 +PT= 0ca8ab187f8fcea7fdedffdd03378927dda64d6c4cc67b6fc26a93c872528b5b +TEST= 251 +KEY= 2439e317eef845a738b56fa2a19db896 +IV= db707c2775033c03fef7b8bbdb3a963f4b6c1113d037ca9e7acc12c2f3d4e4ce +CT= 0ca8ab187f8fcea7fdedffdd03378927dda64d6c4cc67b6fc26a93c872528b5b +PT= 18dde9bc801cffede13838b69ca2fa7152fb51718479737a5539f1c63d5aaf35 +TEST= 252 +KEY= 76c2b2666a8136dd6d8c9e649cc717a3 +IV= d26cdb6ff98aef8fa8402a0f90473234535bb709c347c558d456f88bb0fbb5d7 +CT= 18dde9bc801cffede13838b69ca2fa7152fb51718479737a5539f1c63d5aaf35 +PT= 6f85b37b3f64a86ccaa6eb325cf78a8b3ed4e20585eef50bac84bc152e3dc51c +TEST= 253 +KEY= 48165063ef6fc3d6c1082271b2fad2bf +IV= 8b383085e4267b2c0038cee6d9f5441f0364f0d8f9502f8fd38cdd596b208e1c +CT= 6f85b37b3f64a86ccaa6eb325cf78a8b3ed4e20585eef50bac84bc152e3dc51c +PT= 522bc1cf2d8e7b44317409d8c1f822115fd164bf83a699d2285191e4e19d5ea8 +TEST= 254 +KEY= 17c734dc6cc95a04e959b39553678c17 +IV= 21dbc428889e2e2e636f4ac4e71257ff3a0eca8a18117471f81e2274ef236c6b +CT= 522bc1cf2d8e7b44317409d8c1f822115fd164bf83a699d2285191e4e19d5ea8 +PT= 81a9e68b2e781a439924ad2c574a34325125c1709838fc82f46a32d6ce536dcc +TEST= 255 +KEY= 46e2f5acf4f1a6861d3381439d34e1db +IV= e94ae0bbc4fa3bc7178bddf59c11fe9e762f2340301902f14aaaf586e706f57d +CT= 81a9e68b2e781a439924ad2c574a34325125c1709838fc82f46a32d6ce536dcc +PT= b3b28bb45f7f5e1aa7ea83923627fb57cf227283c0fa1d63d910c817e5b1d008 +TEST= 256 +KEY= 89c0872f340bbbe5c4234954788531d3 +IV= 0d52f19fdab20bd40e70ca426d923032b74168e23ff1370f8aa2c3e082498624 +CT= b3b28bb45f7f5e1aa7ea83923627fb57cf227283c0fa1d63d910c817e5b1d008 +PT= 33bff54c10a9fc3a8897ea5b8b6c6e1ec6189e7a9651f52f73be4c6ff2ef2a3d +TEST= 257 +KEY= 4fd81955a25a4ecab79d053b8a6a1bee +IV= 94d9c81480a0c54deff97a3d1597258f517f8edb5eb55230607022af5fd04fd1 +CT= 33bff54c10a9fc3a8897ea5b8b6c6e1ec6189e7a9651f52f73be4c6ff2ef2a3d +PT= e980a1e9f2cb102c4ad6d1e0f46938a2c816b51cc59c326fddda9f14ac12e852 +TEST= 258 +KEY= 87ceac4967c67ca56a479a2f2678f3bc +IV= ee8ea8294aedb06175fb78fc085c16fc527ef93c7ec4e1fd46c619bd0d8ddcc6 +CT= e980a1e9f2cb102c4ad6d1e0f46938a2c816b51cc59c326fddda9f14ac12e852 +PT= d8a2f817fddf11dcb567cbffe3bfa39a13881f95956411694bbc6bb45291a539 +TEST= 259 +KEY= 9446b3dcf2a26dcc21fbf19b74e95685 +IV= d7a7da99bfcfca1ec6e46c1d32f39201937e205b33a173f617dbf0a0101ef24a +CT= d8a2f817fddf11dcb567cbffe3bfa39a13881f95956411694bbc6bb45291a539 +PT= e96485f167effc34e7c1c8b470e77eea987efb905d05a654d2d769f90e632596 +TEST= 260 +KEY= 0c38484cafa7cb98f32c98627a8a7313 +IV= 5a2fbfeecf40a5a541e2e34a201eb1829dacac5d010ec4498a5e2898bd25626e +CT= e96485f167effc34e7c1c8b470e77eea987efb905d05a654d2d769f90e632596 +PT= e6923c189b7402fa0771d0af5c313dad7208e21917a6ce324db55c624628ad47 +TEST= 261 +KEY= 7e30aa55b80105aabe99c4003ca2de54 +IV= 679491a42bdf769774bba3420f564f0decde7d2871632a68c1db5e6c22897b91 +CT= e6923c189b7402fa0771d0af5c313dad7208e21917a6ce324db55c624628ad47 +PT= c9deb0cfa177482d8227c6949542ad99823393404f57f613792bab200c991faa +TEST= 262 +KEY= fc033915f756f3b9c7b26f20303bc1fe +IV= d4a46d935776457dfb11cf2d141b6a4cb4ff1b1080b117f6a32e378a1fcbb9da +CT= c9deb0cfa177482d8227c6949542ad99823393404f57f613792bab200c991faa +PT= 121f0ff8ccd7212d056eba716f63f41ccba4bf751ee805dc10843c05e7bb59e9 +TEST= 263 +KEY= 37a78660e9bef665d7365325d7809817 +IV= ce7c38c928db441c9a1afa9f1e07ba88e9a9d212efedae7dab638b6dba515dc3 +CT= 121f0ff8ccd7212d056eba716f63f41ccba4bf751ee805dc10843c05e7bb59e9 +PT= cc98936e177e24dad8485dd1c1bdc20a5b7da95be05fbc5f69e448a13dea5917 +TEST= 264 +KEY= 6cda2f3b09e14a3abed21b84ea6ac100 +IV= 82200572913d0c47e4e665ca4a68ce13b004b9db7c57b07c9054fe74d7aece35 +CT= cc98936e177e24dad8485dd1c1bdc20a5b7da95be05fbc5f69e448a13dea5917 +PT= 14ad7695e26f5d7ea784d8493d6847e8cb8aec44be32521d90d85b6256bb8e74 +TEST= 265 +KEY= a750c37fb7d318272e0a40e6bcd14f74 +IV= 02249d7a6da7103d25aa4dd42fa7815a0ef9354f37934abc5549dfd061198b09 +CT= 14ad7695e26f5d7ea784d8493d6847e8cb8aec44be32521d90d85b6256bb8e74 +PT= b015759f9f77addede1283cb774e77390f1a43724c59794d1038a9448b1f5bc2 +TEST= 266 +KEY= a84a800dfb8a616a3e32e9a237ce14b6 +IV= 988ff1aad0226fd9cbedd22b6e0145f061c50dad4c15f8f23e2a0933e4440a68 +CT= b015759f9f77addede1283cb774e77390f1a43724c59794d1038a9448b1f5bc2 +PT= bf227833016e4fd1095f2a63bcc56a282899696c17fab0131af3416d322371ac +TEST= 267 +KEY= 80d3e961ec70d17924c1a8cf05ed651a +IV= 7978fb35265ca42165d93e9ab8f73d3de58f0f9f4c50741866f7780b4564a2ba +CT= bf227833016e4fd1095f2a63bcc56a282899696c17fab0131af3416d322371ac +PT= ba2d05c5c01835f4856e9f84d26e773692ee26faec9e61d0ae7c1c6ee49b2c88 +TEST= 268 +KEY= 123dcf9b00eeb0a98abdb4a1e1764992 +IV= a6fa754c02f09398ad97f5f3dd92cad71f366e45759c4ef15486bbed5dc21cba +CT= ba2d05c5c01835f4856e9f84d26e773692ee26faec9e61d0ae7c1c6ee49b2c88 +PT= c682f79870e3ed8294cebf0e37b21ffcb4c3992673524980162f9e7c90d35e20 +TEST= 269 +KEY= a6fe56bd73bcf9299c922add71a517b2 +IV= 2bbb8ae14c99a26a1b9ad91843555b3b9fc8cb097a95cf12132167a2183e4c78 +CT= c682f79870e3ed8294cebf0e37b21ffcb4c3992673524980162f9e7c90d35e20 +PT= 7bb7e1fcd79d53d6b8b723cb458359c9cb17b70b95777a94a21fb127da4f4156 +TEST= 270 +KEY= 6de9e1b6e6cb83bd3e8d9bfaabea56e4 +IV= f74168e11892a611e8724b7318af22b9aeba0279dd6a2b745b215ee9f5088392 +CT= 7bb7e1fcd79d53d6b8b723cb458359c9cb17b70b95777a94a21fb127da4f4156 +PT= 90950817b018c249852ff403efece3c5d2dd5e255e678642998301efefa73063 +TEST= 271 +KEY= bf34bf93b8ac05ffa70e9a15444d6687 +IV= b6362e82634059ae22b65ce10a990c71b501ab2be88665a840c6edbb3112f493 +CT= 90950817b018c249852ff403efece3c5d2dd5e255e678642998301efefa73063 +PT= 19ad5728c06f2c6622b84a9f050ff9b35d836399f603a0a03db0fec4b701fdd9 +TEST= 272 +KEY= e2b7dc0a4eafa55f9abe64d1f34c9b5e +IV= ce74709d067454f9f3217388405b30e12b2403e992d220e24019ae61255b849f +CT= 19ad5728c06f2c6622b84a9f050ff9b35d836399f603a0a03db0fec4b701fdd9 +PT= 6c086892582173b5a0c1c129bf5d23cb586778721cdbc37975fb03f53ea1317c +TEST= 273 +KEY= bad0a47852746626ef456724cdedaa22 +IV= dd8e8e3975e78ffb60c357f020cb1d497f9a9ee95233df8aad203b228fc36eaf +CT= 6c086892582173b5a0c1c129bf5d23cb586778721cdbc37975fb03f53ea1317c +PT= 1e03e6f3f9fd3a8b7274b19a987a83906a44b5e90a4b6d9cfca53c354ff2fdc2 +TEST= 274 +KEY= d0941191583f0bba13e05b11821f57e0 +IV= df0e2af079c15dd20aa9f100b9fc3f84c28e232d312eb51553cbf5ee7387a661 +CT= 1e03e6f3f9fd3a8b7274b19a987a83906a44b5e90a4b6d9cfca53c354ff2fdc2 +PT= 25d44966604d00c162eb963aa16ceb6360b9d5a2d21567202137e2340cfdcd6f +TEST= 275 +KEY= b02dc4338a2a6c9a32d7b9258ee29a8f +IV= bc72142976765fc4b5cf8304913325785d206bbfccf233b4429b1759aecfeff0 +CT= 25d44966604d00c162eb963aa16ceb6360b9d5a2d21567202137e2340cfdcd6f +PT= 265a7f07b2458b6bf19af5491336c512123560c24346f928728791427872dd90 +TEST= 276 +KEY= a218a4f1c96c95b240502867f690471f +IV= aeee120fc26c89238b3fb42e2da76a388bea347853738153c54b24aff66a735b +CT= 265a7f07b2458b6bf19af5491336c512123560c24346f928728791427872dd90 +PT= 222af9468c0d18bb0b8bb8edc9105e1dfd5dad92f196ffbcf17d8abde9061442 +TEST= 277 +KEY= 5f45096338fa6a0eb12da2da1f96535d +IV= 8ce0d52e4833fb66ef83ff72d453a4eea079ad61d1732174f322c403f8db9a6a +CT= 222af9468c0d18bb0b8bb8edc9105e1dfd5dad92f196ffbcf17d8abde9061442 +PT= 3f49545eea05c03e5249542777aa5891e9b7f056fa49f518abaa43bd3016ba6b +TEST= 278 +KEY= b6f2f935c2b39f161a87e1672f80e936 +IV= 496baf8a763d27a4494d9cf1e60d892aafdee26f6c8d50831038be806d46a58c +CT= 3f49545eea05c03e5249542777aa5891e9b7f056fa49f518abaa43bd3016ba6b +PT= b02296e912aefad02a68d4480cac80ce5e97b4a47a9065cb0e71f85052242bae +TEST= 279 +KEY= e8654d91b823fadd14f619377da4c298 +IV= fe05c81c867b9d9591fdd9c1ef0f4c253265a77701cf2c9d9b8fddc1893660be +CT= b02296e912aefad02a68d4480cac80ce5e97b4a47a9065cb0e71f85052242bae +PT= 2e2c5343174fe3a8d50a83aaceba0af6d341f6f4553403eb3df309c151d013ea +TEST= 280 +KEY= 3b24bb65ed17f936290510f62c74d172 +IV= 3a39d99eefffb2b7bd9c6fa26a5410a567a9cc9f167ed7b16706caea2487f29d +CT= 2e2c5343174fe3a8d50a83aaceba0af6d341f6f4553403eb3df309c151d013ea +PT= 08bad5a89caf94724858157d0e5d51e1b96d52a0aa25ab2ea6fbb545641b79e2 +TEST= 281 +KEY= 8249e9c5473252188ffea5b3486fa890 +IV= 423114d2c025af4733f349d56d4fc8a0f7b85f35d6c5b402bcdc9c80f2c23b8d +CT= 08bad5a89caf94724858157d0e5d51e1b96d52a0aa25ab2ea6fbb545641b79e2 +PT= b21436804864f99fbdc943a8c59099ea1c35061d6e58eee5b98d08cef15e355d +TEST= 282 +KEY= 9e7cefd8296abcfd3673ad7db9319dcd +IV= 1279d0de12face347273ffc1b84cfe47116825856a1ccbe1fb745fb968b01b63 +CT= b21436804864f99fbdc943a8c59099ea1c35061d6e58eee5b98d08cef15e355d +PT= 5d55d5324a88e861a237f8800a42b49d8275277225d8341ce1d594095a998ccc +TEST= 283 +KEY= 1c09c8aa0cb288e1d7a63974e3a81101 +IV= 0ead7f23d7a1f75d9199a0187847da8744bb8626edaa5d77cd61272e72c13b86 +CT= 5d55d5324a88e861a237f8800a42b49d8275277225d8341ce1d594095a998ccc +PT= 79f3d8798db04d1f9b41e737848594c437716bd78942357bf4bae28b37c529c4 +TEST= 284 +KEY= 2b78a37d85f0bd9a231cdbffd46d38c5 +IV= d8e358039ac3f40b4b0eb39a6a53dda19a2c76665261dbd7a590207bffdf0603 +CT= 79f3d8798db04d1f9b41e737848594c437716bd78942357bf4bae28b37c529c4 +PT= 3b593fae5708158bda3d1dcf1f26c814253779711b495232f8270267f5cb0dae +TEST= 285 +KEY= 0e4fda0c9eb9efa8db3bd99821a6356b +IV= 3ee7368872a851f25040e24dcfec236941afcbbdd71c660aa10aeb5500ab8c42 +CT= 3b593fae5708158bda3d1dcf1f26c814253779711b495232f8270267f5cb0dae +PT= e2bc54ce4cdba95047a4b8119537beac1e24d2b7aa60cbd6eb125e1337b9e6cc +TEST= 286 +KEY= 106b08bb34d9247e3029878b161fd3a7 +IV= 19f3d51decd45f464e43d4e182fa62c9b3d6f3d016a42f1864fc158afd793da1 +CT= e2bc54ce4cdba95047a4b8119537beac1e24d2b7aa60cbd6eb125e1337b9e6cc +PT= f348f1ebaf132a7795f133994a105131c247d358a3251a4e9407d914fee7382c +TEST= 287 +KEY= d22cdbe397fc3e30a42e5e9fe8f8eb8b +IV= 9548a4cbd81ad2b23aed5dcafdf978617772f488dd8db0f0b293c64077a388dc +CT= f348f1ebaf132a7795f133994a105131c247d358a3251a4e9407d914fee7382c +PT= 50cf26f0a115e80c53bdcc73004de0dbeaf6ab74bfa7eadfb47ac057202165d5 +TEST= 288 +KEY= 38da7097285bd4ef10549ec8c8d98e5e +IV= 78e1a1508b27f23b407087f80fe03ae1f2983ed83c2ddbb8c790b7176b9296ec +CT= 50cf26f0a115e80c53bdcc73004de0dbeaf6ab74bfa7eadfb47ac057202165d5 +PT= c8d8d26ae501cfef812c6d7238302db3d601906bba022842ffec5524aba2a9ea +TEST= 289 +KEY= eedbe0fc9259fcadefb8cbec637b27b4 +IV= 0573182d438b5195582cbb9ee84dc623f9a9f48b1ebef73bcc2a8f572a8a534b +CT= c8d8d26ae501cfef812c6d7238302db3d601906bba022842ffec5524aba2a9ea +PT= 785c2812486a69b2a3a2cd9d0029dee772b04c215e6ea35f2e87d36d70398736 +TEST= 290 +KEY= 9c6bacddcc375ff2c13f18811342a082 +IV= 94ce2c1c04a37ca094331461c12745cc67e12b9fd51cd35ec14fe24b1f59f59d +CT= 785c2812486a69b2a3a2cd9d0029dee772b04c215e6ea35f2e87d36d70398736 +PT= 91b6df11d40e7133ac3b0b203725eb9bf55553cec4a8cf3f4d8fff7c7429b2d8 +TEST= 291 +KEY= 693eff13089f90cd8cb0e7fd676b125a +IV= 3dd91d17f92b8d24d4d71647f9ba5e8be3ce2c6aa46e997043d0c229a4a7edbd +CT= 91b6df11d40e7133ac3b0b203725eb9bf55553cec4a8cf3f4d8fff7c7429b2d8 +PT= 7a85c5d7a08bb186b091bfddad6a2b7596a967d4ac1f6ad8ade1f0da9aea7378 +TEST= 292 +KEY= ff9798c7a480fa1521511727fd816122 +IV= cd4407d3bcbae2005889bc6da269ca3a4a910748d0b9d5e9f8e5107417981b0a +CT= 7a85c5d7a08bb186b091bfddad6a2b7596a967d4ac1f6ad8ade1f0da9aea7378 +PT= e2a15f7a376a35793d9dd210c7951d31b696759ee9c162401282907bb199216e +TEST= 293 +KEY= 4901ed594d41985533d3875c4c18404c +IV= cae8bd466012e83f042af31965de2a641f60df30754636f501796ddd426b5a92 +CT= e2a15f7a376a35793d9dd210c7951d31b696759ee9c162401282907bb199216e +PT= d886c41a8c5b9d029e305f679cd4098660eb0d0be73b23a4d534fd5ac0b486f6 +TEST= 294 +KEY= 29eae052aa7abbf1e6e77a068cacc6ba +IV= a1c499e0d70f18613cfddb6ca5f62355a0abcc3a87497c213ad88a369a433f05 +CT= d886c41a8c5b9d029e305f679cd4098660eb0d0be73b23a4d534fd5ac0b486f6 +PT= fae9ff52e5445c9d2d382f67a4dbcc8761001f779e59fedf6e0800c30bc3eec7 +TEST= 295 +KEY= 48eaff253423452e88ef7ac5876f287d +IV= 4d685c46039cc66c03fceef0a4ecb567bef53a187298d8f3f9855a5b369839bc +CT= fae9ff52e5445c9d2d382f67a4dbcc8761001f779e59fedf6e0800c30bc3eec7 +PT= e14e4b01519add1d7c9c3ee10ac796d3a0004a9e664ba85d0256f7ce33009017 +TEST= 296 +KEY= e8eab5bb5268ed738ab98d0bb46fb86a +IV= 771a77925ee662858afe3d5f28764a7e1ab38135c3985cd4d28141319e3a5835 +CT= e14e4b01519add1d7c9c3ee10ac796d3a0004a9e664ba85d0256f7ce33009017 +PT= d3f8c6a3fc9c6f12d163b1ef74600924c9c6c604cbd7bf15c44c5fb10f4020f5 +TEST= 297 +KEY= 212c73bf99bf52664ef5d2babb2f989f +IV= afd0742fb5e4973db88ef53b8ff3d8da184929f615f4bb4ee192c57353df7c27 +CT= d3f8c6a3fc9c6f12d163b1ef74600924c9c6c604cbd7bf15c44c5fb10f4020f5 +PT= cfa2bc38aad07093783142809d23db8a2ea14aaa5a26e2e85cb0994ad6ad716c +TEST= 298 +KEY= 0f8d3915c399b08e12454bf06d82e9f3 +IV= bcd7ac8c853aaa68be821b67e3b61d2b4e5f5e36e01699599565fe6cec7d276e +CT= cfa2bc38aad07093783142809d23db8a2ea14aaa5a26e2e85cb0994ad6ad716c +PT= 68f3ecaeae946f2701b28ef250d8dfce8f2d574c950cf7efde34269619de65c2 +TEST= 299 +KEY= 80a06e5956954761cc716d66745c8c31 +IV= 931942398ff2304998b0866bb4b2e186a005f90a2fd281eb76b4e454e81717bc +CT= 68f3ecaeae946f2701b28ef250d8dfce8f2d574c950cf7efde34269619de65c2 +PT= f775e544f5c90da6f3f96ec1b74f6f03e1a80d5d7eaea776248f942ae72ae6b6 +TEST= 300 +KEY= 61086304283be017e8fef94c93766a87 +IV= 86f74252f15fe3f8f7d2aa92cb9cfd8065ba2694eb9d198498f96744464a2dec +CT= f775e544f5c90da6f3f96ec1b74f6f03e1a80d5d7eaea776248f942ae72ae6b6 +PT= c14d8a2d00e14b3a44493cd31a15b253f1581a7bdf19115b39dfbc7d20f5bb55 +TEST= 301 +KEY= 9050797ff722f14cd1214531b383d1d2 +IV= 47d7bdf92db81de7e3c1c104c9614a1f69cb5c9f3c7ff91ebab7224c93f6e95a +CT= c14d8a2d00e14b3a44493cd31a15b253f1581a7bdf19115b39dfbc7d20f5bb55 +PT= db6ccc7e29b8dda485c99fddfda68b9c0fc650dcdf82c2ee252a9327701eb494 +TEST= 302 +KEY= 9f9629a328a033a2f40bd616c39d6546 +IV= 5132f87c23a922402473f7cb8c6dec81d7fb31cb741c19d95cc19e913410d893 +CT= db6ccc7e29b8dda485c99fddfda68b9c0fc650dcdf82c2ee252a9327701eb494 +PT= 960d851011e8fa9dbe7b2fb1776704f5dc7ba300039f9367c93126c2fb12cad9 +TEST= 303 +KEY= 43ed8aa32b3fa0c53d3af0d4388faf9f +IV= fe338dc3fdee51340029c58f6e3758613d3bc93b8d02acf983d6f0d1fc44ce6b +CT= 960d851011e8fa9dbe7b2fb1776704f5dc7ba300039f9367c93126c2fb12cad9 +PT= 0f1195a3d5ad07851a7cb2b85019bfc3dc60f478554536ca9f4d3951fdd27380 +TEST= 304 +KEY= 9f8d7edb7e7a960fa277c985c55ddc1f +IV= e0833dd336b25d145e354f93145774608de945494780ba0280d5cf788eab873f +CT= 0f1195a3d5ad07851a7cb2b85019bfc3dc60f478554536ca9f4d3951fdd27380 +PT= 48129da13bab830b21fcfc8298c4263ab8d3b488b0a9203c3dbbf6c35e838e8c +TEST= 305 +KEY= 275eca53ced3b6339fcc3f469bde5293 +IV= 1625cf71de01a4bffda1bb29491b49d03bfb2ab114d66af432518f85513685c7 +CT= 48129da13bab830b21fcfc8298c4263ab8d3b488b0a9203c3dbbf6c35e838e8c +PT= e3ff4eb3e97321adcad62837d23293aeed10850a7dde7f3f723247a9aa3cce38 +TEST= 306 +KEY= ca4e4f59b30dc90cedfe78ef31e29cab +IV= 21957ccfd7640750a7c01fb53f87f41845997c4a3780cb3c4d68e31993033a0c +CT= e3ff4eb3e97321adcad62837d23293aeed10850a7dde7f3f723247a9aa3cce38 +PT= 1690771cf7ee9ab3b0551df99e4fc81a4a190685e900c225ea552ffc0f5d4491 +TEST= 307 +KEY= 805749dc5a0d0b2907ab57133ebfd83a +IV= defdabe0e3691cdd976432087ca0eb1aa4df6ed0d166edd1c0cc8b6b44c9b68b +CT= 1690771cf7ee9ab3b0551df99e4fc81a4a190685e900c225ea552ffc0f5d4491 +PT= dcb75739b765da7b1cb6411a5d832424b562a8497e223534d2568dfb426db69f +TEST= 308 +KEY= 3535e195242f3e1dd5fddae87cd26ea5 +IV= bfa7c3baf3d72c07e8325ee43edd59a43019669f5baed2a2f066661241f469ed +CT= dcb75739b765da7b1cb6411a5d832424b562a8497e223534d2568dfb426db69f +PT= 746aca95b286487895ffe300e9ffc1da77d42a3b948de8e066e4660853d81ad8 +TEST= 309 +KEY= 42e1cbaeb0a2d6fdb319bce02f0a747d +IV= 898b9cee9cda2deb8155d2e7704e138d6d835912599e27c2336811de9406ff51 +CT= 746aca95b286487895ffe300e9ffc1da77d42a3b948de8e066e4660853d81ad8 +PT= 262cce82347d797a26341326a376f3674a86f4e81b9a8172a62153753792c98a +TEST= 310 +KEY= 08673f46ab38578f1538ef951898bdf7 +IV= d5e0833f796de31e510b020b6c1c5f42f53b426b1018edd0a0ae3f4b5ff8371d +CT= 262cce82347d797a26341326a376f3674a86f4e81b9a8172a62153753792c98a +PT= df9e850988644cf237366b71b8ef86f80fba82eaf05ceba4b36d016be4e4033f +TEST= 311 +KEY= 07ddbdac5b64bc2ba655eefefc7cbec8 +IV= a25fd1c8309f6c1bf112fcd666a35686065466c8daf1163b617d1e48d1c6bb9a +CT= df9e850988644cf237366b71b8ef86f80fba82eaf05ceba4b36d016be4e4033f +PT= 37cdb8161b3da68158e99f85f25ff3c78e93d4c4bfc1657fc9549e393fb81c55 +TEST= 312 +KEY= 894e6968e4a5d9546f0170c7c3c4a29d +IV= 7ee7989d6adfb60df50119e463768272ba0566fd8b043edae52fbfde5a42ccd4 +CT= 37cdb8161b3da68158e99f85f25ff3c78e93d4c4bfc1657fc9549e393fb81c55 +PT= fe94baab60a724f5b2a66ad7afad742a9a2e713d521eecbf5224154ac2e915b9 +TEST= 313 +KEY= 13601855b6bb35eb3d25658d012db724 +IV= a38db0e178fdbf79e2e2553c5042c485e4a11b9474ad16ab9b80614dd4be60d9 +CT= fe94baab60a724f5b2a66ad7afad742a9a2e713d521eecbf5224154ac2e915b9 +PT= 210307c37761af88ac3b16d6aed95aad87d99ffabadfecdfb208310bb5a9ee62 +TEST= 314 +KEY= 94b987af0c64d9348f2d5486b4845946 +IV= 587341a27ecb8e69b5e1f379fa91c402ede421ea576fff56ebe4b7d30d806a74 +CT= 210307c37761af88ac3b16d6aed95aad87d99ffabadfecdfb208310bb5a9ee62 +PT= 548f15497819a914830e7598962a55ebda7f1b1a36761d546a774adb520b011b +TEST= 315 +KEY= 4ec69cb53a12c460e55a1e5de68f585d +IV= 9d67d6153d7e2e8727c309194a5a3c9320d024e88789d0dd755a07c0ec302f5c +CT= 548f15497819a914830e7598962a55ebda7f1b1a36761d546a774adb520b011b +PT= b88933e470a7bbf79f4e93c4947f2414585bff3b474d0fcff170a2401a114bf5 +TEST= 316 +KEY= 169d638e7d5fcbaf142abc1dfc9e13a8 +IV= f9d684fc00a1c26a948870d539094af976d6326988e5c2bc0f0fb7154d221ad9 +CT= b88933e470a7bbf79f4e93c4947f2414585bff3b474d0fcff170a2401a114bf5 +PT= 5e2b83510b97d15bd44098074101d079924be136f6fa0cbcc45f9263212c508d +TEST= 317 +KEY= 84d682b88ba5c713d0752e7eddb24325 +IV= 6bcd475624d9e49d75e54dadc177b611abfb2c2dbe57e72e9344ce308f17ef68 +CT= 5e2b83510b97d15bd44098074101d079924be136f6fa0cbcc45f9263212c508d +PT= 256d17ea84b86fd08e447cb9232dc87f1ad19571b0a081e92ac4ae7c5e6d531e +TEST= 318 +KEY= 9e0717c93b0546fafab1800283df103b +IV= 2b27e486afa5f4e683664f838dc4f9b342f8bfd6c08700b201a75efe5f22b345 +CT= 256d17ea84b86fd08e447cb9232dc87f1ad19571b0a081e92ac4ae7c5e6d531e +PT= 1edc35a7933287f5abdcf73def802eff1d49a51ccec0ea1b683ca6f16acf4148 +TEST= 319 +KEY= 834eb2d5f5c5ace1928d26f3e9105173 +IV= 7b7ddbffdd3e87eb04d2806b81a4b6d108681af42222d4c9221bfec498345437 +CT= 1edc35a7933287f5abdcf73def802eff1d49a51ccec0ea1b683ca6f16acf4148 +PT= 6b6952411c178585edb480d5ca20625f7899f1b1f9f25388e3cbf6fac7319240 +TEST= 320 +KEY= fbd743640c37ff697146d0092e21c333 +IV= 16370929040c418f2a118d4cf1431e02819b74cfb5d54226116d9467408712cf +CT= 6b6952411c178585edb480d5ca20625f7899f1b1f9f25388e3cbf6fac7319240 +PT= 0d801950778f2a0abcd6b37b405bfbb9f7f13a38837fef1df11e280501804da7 +TEST= 321 +KEY= 0c26795c8f4810748058f80c2fa18e94 +IV= 82c4df2db0906f936f30cb3666e2ca62fef79484211329e3553a1aef599be15e +CT= 0d801950778f2a0abcd6b37b405bfbb9f7f13a38837fef1df11e280501804da7 +PT= 69239b2cf395927b8a1a8c5bd40c1219bd9d75c43726462de651f0046e4b1559 +TEST= 322 +KEY= b1bb0c98b86e56596609080841ea9bcd +IV= e42ecb0e09e30017a57382a35c6ebf285ab30e4e0c26c70e41fd3890229042fd +CT= 69239b2cf395927b8a1a8c5bd40c1219bd9d75c43726462de651f0046e4b1559 +PT= 52c95473931b5312438c01bd7b3170f7c27c769a1d23f281dd1097b39640e3bb +TEST= 323 +KEY= 73c77a02a54da4d8bb199fbbd7aa7876 +IV= fd8e3f00aed65f08e4896393add3d1130c2d2c5796bea1eb334758011a37b305 +CT= 52c95473931b5312438c01bd7b3170f7c27c769a1d23f281dd1097b39640e3bb +PT= b9277f7b38ce106b9018e78bb1ed3e01ca09f051521b9ee821418db6afc83746 +TEST= 324 +KEY= b9ce8a53f7563a309a58120d78624f30 +IV= ecf539186681616821a37c55d6b61b43a6d71dc8322de555494475e7e8de1267 +CT= b9277f7b38ce106b9018e78bb1ed3e01ca09f051521b9ee821418db6afc83746 +PT= a74db0973c3e60b3dbe9b50ef97fb75802c6f8b4892219e32b68d958f1d1df7b +TEST= 325 +KEY= bb0872e77e7423d3b130cb5589b3904b +IV= 86a253126881b4e9799fa47b04fe4bda8875dadf5e8b78e87c93033c99a2cc01 +CT= a74db0973c3e60b3dbe9b50ef97fb75802c6f8b4892219e32b68d958f1d1df7b +PT= 5be6b6db12e33460e63ace147bb08c6e3607aca716d10d3e56590234bdd0b3b6 +TEST= 326 +KEY= 8d0fde4068a52eede769c961346323fd +IV= 9961412c07e10b0073d3458f5043c071e5aa3cc276cdff88fed1dcb1606b7e9a +CT= 5be6b6db12e33460e63ace147bb08c6e3607aca716d10d3e56590234bdd0b3b6 +PT= ddcfbf808055b7a45fb1c98ce3e85342f287fb2018d57a568d5999a5d92a684b +TEST= 327 +KEY= 7f882560707054bb6a3050c4ed494bb6 +IV= 6e22982c8aeda3a86f7a100c5831762f898c3b83884e7ce3477413cc3f07d6df +CT= ddcfbf808055b7a45fb1c98ce3e85342f287fb2018d57a568d5999a5d92a684b +PT= 897917cf776268d99882e9d4e6385783df17330077d0a79527ac8361899b77eb +TEST= 328 +KEY= a09f166007a0f32e4d9cd3a564d23c5d +IV= 044e79cd9784fc91171e50f2f055c84870136b81f5fbb9e556ac993f33639b19 +CT= 897917cf776268d99882e9d4e6385783df17330077d0a79527ac8361899b77eb +PT= d3d0fc2b4da8fc61a9247f8dada61d7895dca23b40dc939d92635428c920203e +TEST= 329 +KEY= 3543b45b477c60b3dfff878dadf21c63 +IV= 30b2df295cbc5853d2cc4e301d1f2bfcc7c16440aa3dc01277027ea154d22770 +CT= d3d0fc2b4da8fc61a9247f8dada61d7895dca23b40dc939d92635428c920203e +PT= c4594830f0aec523d0a9ebe0b849d6e0a1847e87f2c88efa7ba4babddca6f09d +TEST= 330 +KEY= 94c7cadcb5b4ee49a45b3d307154ecfe +IV= c719d48a8b3450aea13fc45e0ee6303af5949ad6d0c439adbda36d260e039680 +CT= c4594830f0aec523d0a9ebe0b849d6e0a1847e87f2c88efa7ba4babddca6f09d +PT= 578d37f0171da9abf43b258375a4ef1596b27f0d57378fbfff0e64c90ccf8d89 +TEST= 331 +KEY= 0275b5d1e28361f65b5559f97d9b6177 +IV= e6141583f470734f9fe57cf680dce2b0e94b685c2109a26700350c56a111a2a0 +CT= 578d37f0171da9abf43b258375a4ef1596b27f0d57378fbfff0e64c90ccf8d89 +PT= ead65e64ed4c5d15fe0633fe98b8651c4a534c9078ca948d883dcaee9db7cdc0 +TEST= 332 +KEY= 4826f9419a49f57bd3689317e02cacb7 +IV= d1a5e264899e0116a38d8e68a23202e9d1fa0b122819e02c9ac9f53394075a50 +CT= ead65e64ed4c5d15fe0633fe98b8651c4a534c9078ca948d883dcaee9db7cdc0 +PT= ba598c6d97700bf6bb34c378e9be897a81567b215c11026dc725185eb29f12db +TEST= 333 +KEY= c9708260c658f716144d8b4952b3be6c +IV= c61127ccced4d4a58ce49961d939c4ee46cd74284a8b019819ece900b34ae7c1 +CT= ba598c6d97700bf6bb34c378e9be897a81567b215c11026dc725185eb29f12db +PT= 04ff2bc7f7fb468aac6d26128f6c3977a681f0bdb437163e7363084488098252 +TEST= 334 +KEY= 6ff172dd726fe128672e830ddaba3c3e +IV= 39addeaad04be891ac191cc1018bf81b0cf4299c627628a7e47c89b7d37e5615 +CT= 04ff2bc7f7fb468aac6d26128f6c3977a681f0bdb437163e7363084488098252 +PT= 71b129831112604b9cacb0f5d7f19f61dbf731ec2d10b1ab34f5ebabcc144162 +TEST= 335 +KEY= b40643315f7f508353db68a616ae7d5c +IV= 37f5ee3590c733fb96a4a345d4bc407b47778438e87596c85a993149598c1d92 +CT= 71b129831112604b9cacb0f5d7f19f61dbf731ec2d10b1ab34f5ebabcc144162 +PT= 414deea4bdc5c342fcf41624b0c1bb7f7e34da4a0ecd5f81a819f3aa3401b399 +TEST= 336 +KEY= ca32997b51b20f02fbc29b0c22afcec5 +IV= ddcc291ab9b5b1abe42020b83fbf6fa5a11879a65f2f287cb0fbc7bd0ea3f981 +CT= 414deea4bdc5c342fcf41624b0c1bb7f7e34da4a0ecd5f81a819f3aa3401b399 +PT= 0dbc0a9bc2aea53bb22844456c4dbc76aba2484d0f65b8daaff9718e3904410d +TEST= 337 +KEY= 6190d1365ed7b7d8543bea821bab8fc8 +IV= 2f6c5a3196d9452ef9bbdc335fd5f26579469186424acc9a1e1b265975159ca2 +CT= 0dbc0a9bc2aea53bb22844456c4dbc76aba2484d0f65b8daaff9718e3904410d +PT= 8ebcb8bcaf5ac163266e101dce55f66d09ffe1ce78e6ec2c7415763b4c0b89af +TEST= 338 +KEY= 686f30f826315bf4202e9cb957a00667 +IV= 23dccc9a3995b15c7a42a49031874cf7f22109c019582b0a016c9c0ae3f03805 +CT= 8ebcb8bcaf5ac163266e101dce55f66d09ffe1ce78e6ec2c7415763b4c0b89af +PT= 1174a06e578e5c94b0d4ba2a0ed0525e2b8b423d5b5c382019627cdbdbebc24e +TEST= 339 +KEY= 43e472c57d6d63d4394ce0628c4bc429 +IV= b9d0501852ae39a2aafcdcfacd0740579202f9c0133c5553fae408b82c84375f +CT= 1174a06e578e5c94b0d4ba2a0ed0525e2b8b423d5b5c382019627cdbdbebc24e +PT= 885ed4730bf584efe5f279d8b936ef8f55fee08d8599fabb50d545bda6589a8e +TEST= 340 +KEY= 161a9248f8f4996f6999a5df2a135ea7 +IV= 2b9b47f074f1276f78f9f9425f4990ebd0c7c65bd984b872fa8acd1dcb50613e +CT= 885ed4730bf584efe5f279d8b936ef8f55fee08d8599fabb50d545bda6589a8e +PT= f09723ad01956a2ef605a7bdfe60c1c6e5ab7b8cadaeddfde61a9f9c435bebb8 +TEST= 341 +KEY= f3b1e9c4555a44928f833a436948b51f +IV= 890d8de52a8a38c81de3b50c41587e0393757b013990c65a06cc9c5005515e49 +CT= f09723ad01956a2ef605a7bdfe60c1c6e5ab7b8cadaeddfde61a9f9c435bebb8 +PT= 97dd18e35a968801ebddc860f0f5fb3a076749ae06d1a0e620e101ac93f63549 +TEST= 342 +KEY= f4d6a06a538be474af623beffabe8056 +IV= 7e5b7e57921c4db7250aecf03432ef707ada3d5ca860b8f06af35374cae92b4f +CT= 97dd18e35a968801ebddc860f0f5fb3a076749ae06d1a0e620e101ac93f63549 +PT= adbfa03bc5dde152733ba460f0eb616f5843c61ba3c32aeab9a9d6291f164afc +TEST= 343 +KEY= ac956671f048ce9e16cbedc6e5a8caaa +IV= 5ad472d53a930a5ed8193c1979d20a03e50e1a683692a2af1a84a01ef72392c4 +CT= adbfa03bc5dde152733ba460f0eb616f5843c61ba3c32aeab9a9d6291f164afc +PT= fb35ec0b15013b49b2934d16d5d3bc7f449e9aa09219c59ef55ec4a505c381a3 +TEST= 344 +KEY= e80bfcd162510b00e3952963e06b4b09 +IV= 72150f63a167b250e222c41b38e95fd5b684364da90ca5fc48bced44c896cc7a +CT= fb35ec0b15013b49b2934d16d5d3bc7f449e9aa09219c59ef55ec4a505c381a3 +PT= f806aa0c408845fd997623121f72eec4460541f0b71ec384664b9bf8976846cf +TEST= 345 +KEY= ae0ebd21d54fc88485deb29b77030dc6 +IV= 6c3afd8d38787755b0f8106629f19855325d6af5ea47aa935745839b7640e323 +CT= f806aa0c408845fd997623121f72eec4460541f0b71ec384664b9bf8976846cf +PT= cf9bfdafc06ee77d38d0350adfa9273bd08523b605a8f78185cb71588d58d7dd +TEST= 346 +KEY= 7e8b9e97d0e73f050015c3c3fa5bda1b +IV= 222d0e6c77f3cf4fe7a58f7408f9d6a1c2a84cb3d4ede544dc9c1368eb9fa2e7 +CT= cf9bfdafc06ee77d38d0350adfa9273bd08523b605a8f78185cb71588d58d7dd +PT= 461ce8540bed0442180aa506149cbb5c86c51a5da1ecc289f2aecbec91b8109d +TEST= 347 +KEY= f84e84ca710bfd8cf2bb082f6be3ca86 +IV= 249c6b136c708d21b03a1ea79f256ea51ef17ed9d743317cd9923e1a066049fa +CT= 461ce8540bed0442180aa506149cbb5c86c51a5da1ecc289f2aecbec91b8109d +PT= 5eaaa53f00546bda506f8a094bac4084128acad8878e65868fa9033afca09d46 +TEST= 348 +KEY= eac44e12f685980a7d120b15974357c0 +IV= 59adfbfa59a3553515375f715f76bca93f349c2d1c9f5a494a49fa5915b224f7 +CT= 5eaaa53f00546bda506f8a094bac4084128acad8878e65868fa9033afca09d46 +PT= d0722e4e4efb6e54991939e2c723d6bd956b2c65c47dcb9cde492563d461e7a8 +TEST= 349 +KEY= 7faf627732f85396a35b2e764322b068 +IV= d0a0434cc3ca855c319cd4adec70d47584917a7a209d2d5405fd8274421b32cc +CT= d0722e4e4efb6e54991939e2c723d6bd956b2c65c47dcb9cde492563d461e7a8 +PT= da5120322645ca4ec0b20f4c932d541645fd95a141066e08ea68d805df644f52 +TEST= 350 +KEY= 3a52f7d673fe3d9e4933f6739c46ff3a +IV= 43210789cd6ba09fbe8d27dc07cdd9e5cee446cdee814cf04b9899922ed35790 +CT= da5120322645ca4ec0b20f4c932d541645fd95a141066e08ea68d805df644f52 +PT= 3490ecef7c7fe367fb3c94187d8cef71252868a35c1e6439946347bb5e3ea407 +TEST= 351 +KEY= 1f7a9f752fe059a7dd50b1c8c2785b3d +IV= b7caef08e4f1d6d0187418891ae72135a229ed28b93bb3fff4b4a127bf48d02d +CT= 3490ecef7c7fe367fb3c94187d8cef71252868a35c1e6439946347bb5e3ea407 +PT= 619772d65c8c5b9e92ee34e57f5d7ac4836957d9c38ed678b5d69a287a7d8033 +TEST= 352 +KEY= 9c13c8acec6e8fdf68862be0b805db0e +IV= e02e657c09a016ee0a31d92d8828661e7ef0a09ed00fa9195fa8e4b5d699aa3f +CT= 619772d65c8c5b9e92ee34e57f5d7ac4836957d9c38ed678b5d69a287a7d8033 +PT= 4505c9261270ff4cdfb24d5003121c78c62947b9ff927a029188cceeeff095fb +TEST= 353 +KEY= 5a3a8f1513fcf5ddf90ee70e57f54ef5 +IV= 2f24243ef3d9fa09ef8cc1a062760bd61b6337e99a8ac9392f87df463c568105 +CT= 4505c9261270ff4cdfb24d5003121c78c62947b9ff927a029188cceeeff095fb +PT= f4020ac18ca150ebe12a745195b3cf7378ecf83657f689550b37cb6b043a15af +TEST= 354 +KEY= 22d67723440a7c88f2392c6553cf5b5a +IV= a56f474b44b6152c2ace24addcbc321fc7c16c67511a5ddfa76f38911e6c713b +CT= f4020ac18ca150ebe12a745195b3cf7378ecf83657f689550b37cb6b043a15af +PT= cd8f8e88d8ac235074166050e5785aee19c30ad11059cce586f1249cb399584a +TEST= 355 +KEY= 3b157df25453b06d74c808f9e0560310 +IV= 55beaef475581eccaae9b6215f3e09bbe64ee86efb20c61450d3ea238631cd1c +CT= cd8f8e88d8ac235074166050e5785aee19c30ad11059cce586f1249cb399584a +PT= e6c7059960240afe251607fdbfa69707b652ca63638c940d26dde703dd696e75 +TEST= 356 +KEY= 8d47b79137df24605215effa3d3f6d65 +IV= 9fdf6c8939051b2bd92f2803eaa3d6253fe6f2fff3a0327b2e491c4d40c1cb4c +CT= e6c7059960240afe251607fdbfa69707b652ca63638c940d26dde703dd696e75 +PT= 0293952adb62839bec82f9004ecb583646b7007be58d1995ee9ceafab858889c +TEST= 357 +KEY= cbf0b7ead2523df5bc8905008567e5f9 +IV= d7937a6b0971988f17621cc114fb3f5e57c3cd6591005d2aa60d6db5722fda7b +CT= 0293952adb62839bec82f9004ecb583646b7007be58d1995ee9ceafab858889c +PT= c1c1c16512e004842ce667d0ba1659a1a698833a5ed6aa1e48b4c02cae4c6039 +TEST= 358 +KEY= 6d6834d08c8497ebf43dc52c2b2b85c0 +IV= 85642aac3afdbc4600c7f4a72387e807e163f4621a9acbc5b05460aefda9e3b7 +CT= c1c1c16512e004842ce667d0ba1659a1a698833a5ed6aa1e48b4c02cae4c6039 +PT= 51ed409c98704adedbcb625083424417a539d70d7a446fdc2f345023c23566fa +TEST= 359 +KEY= c851e3ddf6c0f837db09950fe91ee33a +IV= 2500dd93716e5735f3f8a5b5840d0714131a1d62130ae4172cfe35e11e3c2523 +CT= 51ed409c98704adedbcb625083424417a539d70d7a446fdc2f345023c23566fa +PT= fe7b1e6dda6bc4e6b12bae8a920126433edfaa406498b47d1fed40496673e4a9 +TEST= 360 +KEY= f68e499d92584c4ac4e4d5468f6d0793 +IV= 797b3f91aee1a3e3dd84281cb43f76edb246527e5b9fdf1d46fe2edd976c222e +CT= fe7b1e6dda6bc4e6b12bae8a920126433edfaa406498b47d1fed40496673e4a9 +PT= 57c8c9f1a50947fc5a3a74075cdc4731f9df6ce48b6ddf6233a6cf98aee79969 +TEST= 361 +KEY= 0f51257919359328f7421ade218a9efa +IV= d43844158f975c2ec2b6d9cb34e12e761136bbb77cd10bde952f1a2289e7f14a +CT= 57c8c9f1a50947fc5a3a74075cdc4731f9df6ce48b6ddf6233a6cf98aee79969 +PT= 76e8bd6eae0d139231e59b469585b459525163b2a674ab4e74a47691b00df208 +TEST= 362 +KEY= 5d0046cbbf41386683e66c4f91876cf2 +IV= 8c398ad50bf7851321dce3fd37b9b4c2fdad5f474e56a592c30cfb22e0f58aab +CT= 76e8bd6eae0d139231e59b469585b459525163b2a674ab4e74a47691b00df208 +PT= 232dd2eb1ad9b7d0a2b9183bb6df1d7cceefd2e51185e8d91c1df19610da6794 +TEST= 363 +KEY= 93ef942eaec4d0bf9ffb9dd9815d0b66 +IV= f9d2bff8763f26e2166348ffe3aee84269b42c26294ca8809e7d6bfc33b60d16 +CT= 232dd2eb1ad9b7d0a2b9183bb6df1d7cceefd2e51185e8d91c1df19610da6794 +PT= 8ce21352d15ff8c3d9cdb6b2919cef60a2afc25286dd47b9b64b9a8ae206c075 +TEST= 364 +KEY= 3140567c2819970629b00753635bcb13 +IV= 3209dcf8bc633b8218ac5998224b2fa59acafd57f6b444c846d625837cf6bc83 +CT= 8ce21352d15ff8c3d9cdb6b2919cef60a2afc25286dd47b9b64b9a8ae206c075 +PT= f4dd8987fca39d97d9a4bf7f95ed1c36da754617fe47d0df55fb0605fabf858c +TEST= 365 +KEY= eb35106bd65e47d97c4b015699e44e9f +IV= 2b391bcb69bbb822577830e2d567d399e8824d1bf311e8d1424c7d4e3c22f47f +CT= f4dd8987fca39d97d9a4bf7f95ed1c36da754617fe47d0df55fb0605fabf858c +PT= 4a9ad4e52de6844b48881e86451d99148e35302eb150d3b03197e2b09c8c3c48 +TEST= 366 +KEY= 65002045670e94694ddce3e6056872d7 +IV= 189489b81a692eb7a24eb72570a5b4b03f3b6b1bbf4d49b562c800569ff70a75 +CT= 4a9ad4e52de6844b48881e86451d99148e35302eb150d3b03197e2b09c8c3c48 +PT= 48e3a40cc5397c976b70359a4fd462439be0e976ad0661b8d7ed7dea1b4271ac +TEST= 367 +KEY= fee0c933ca08f5d19a319e0c1e2a037b +IV= be13c651dd40b03555b9f4b9e320d2548cfdd6162ff1247b583f70e8814b79ab +CT= 48e3a40cc5397c976b70359a4fd462439be0e976ad0661b8d7ed7dea1b4271ac +PT= d606ddc405008315e9026d996d1c1db7b5b578c7a813738cec2b559269151437 +TEST= 368 +KEY= 4b55b1f4621b865d761acb9e773f174c +IV= e53afe8ea2ca8a53cc5b9a82a677e3723cc0dbb4f22852b4be33334afce6242f +CT= d606ddc405008315e9026d996d1c1db7b5b578c7a813738cec2b559269151437 +PT= 0a10ffe1a94553ad572f21a69f8245a4b198f4b8e1867923011df9bc2e60f8a4 +TEST= 369 +KEY= facd454c839dff7e77073222595fefe8 +IV= e5d08ebfd44fe0591db08a40fc493edd2a117b3cb511546175094a108894fa7b +CT= 0a10ffe1a94553ad572f21a69f8245a4b198f4b8e1867923011df9bc2e60f8a4 +PT= e5b438bb17f91ff607c8e036e0061126a79dc1c9a17c7fd8b608321a72cef5a6 +TEST= 370 +KEY= 5d50848522e180a6c10f00382b911a4e +IV= 0838c6f1b1913b0420e7f40153f894966b00c5400c887a738a8b71414ba27852 +CT= e5b438bb17f91ff607c8e036e0061126a79dc1c9a17c7fd8b608321a72cef5a6 +PT= 2f0a967b0795db78634085b2ada30bf566c01885ef2664af4064504e09944186 +TEST= 371 +KEY= 3b909c00cdc7e409816b507622055bc8 +IV= 37eb762e9d6058a800a258b25529a4eab581af8a08e48be7b187e0dec825e29d +CT= 2f0a967b0795db78634085b2ada30bf566c01885ef2664af4064504e09944186 +PT= 37d9d10a505d0f2a965db7ba4eb090376384b62b5631573459062f1de8139899 +TEST= 372 +KEY= 58142a2b9bf6b33dd86d7f6bca16c351 +IV= b23f54eadaf0e19e50cdecaafca58f173f63f3dad26931bc9f0992c16c0c4770 +CT= 37d9d10a505d0f2a965db7ba4eb090376384b62b5631573459062f1de8139899 +PT= 6c947fb7d0ea96a0930df1025c63b7f5c559c4fcdf3a08467907e05a1145bd90 +TEST= 373 +KEY= 9d4deed744ccbb7ba16a9f31db537ec1 +IV= 5bbdc4ba8d52484280fa38c6e3a62fbd183708c9477793fa2d52720d7a5ae20e +CT= 6c947fb7d0ea96a0930df1025c63b7f5c559c4fcdf3a08467907e05a1145bd90 +PT= 218faa0e1f97ca69215f7615266d956b81a090eeb41fa7d8da69fcd69e63de82 +TEST= 374 +KEY= 1ced7e39f0d31ca37b0363e74530a043 +IV= d12ae39b4fccdd6c1e72f1898eee6ce77bfa90c47a3f63f26d51eb35082d4109 +CT= 218faa0e1f97ca69215f7615266d956b81a090eeb41fa7d8da69fcd69e63de82 +PT= 76e4be941e614893be2137e354216f63de108900b0a3a42f39b3b17b08165220 +TEST= 375 +KEY= c2fdf7394070b88c42b0d29c4d26f263 +IV= 988d129b75407d1bbf636b94ce88ab138c7e4123f6e7c2fea71ad9129b54719f +CT= 76e4be941e614893be2137e354216f63de108900b0a3a42f39b3b17b08165220 +PT= 4482ced0735c10e124a7feaa7a803ab55efe42aaf3511338e9c4835042ba900c +TEST= 376 +KEY= 9c03b593b321abb4ab7451cc0f9c626f +IV= c24da4dba75a547af34c97b8164238718d053db91151397bf2b1508e7932e9b1 +CT= 4482ced0735c10e124a7feaa7a803ab55efe42aaf3511338e9c4835042ba900c +PT= 333ca877b58fd510d0be3b0db09796c52166d447cc07050ee1a0d2d5292e180d +TEST= 377 +KEY= bd6561d47f26aeba4ad4831926b27a62 +IV= 5fa384c4000e79f5516a533698cb30d71ca07787e3a8739a7377e79f62703a63 +CT= 333ca877b58fd510d0be3b0db09796c52166d447cc07050ee1a0d2d5292e180d +PT= e05daba6c120f9cd6f281984b78de3a6bdd9fcfc250d83fe2d8b62d43834c9a6 +TEST= 378 +KEY= 00bc9d285a2b2d44675fe1cd1e86b3c4 +IV= 61ad078288b8777f2747cc86f3bfd5091080606fb527df5d1e437bff07538587 +CT= e05daba6c120f9cd6f281984b78de3a6bdd9fcfc250d83fe2d8b62d43834c9a6 +PT= 892cfa65953da2d94519381d20f9ea0d65bad6be3bfd0a2bf2bdd18255d5b2e5 +TEST= 379 +KEY= 65064b9661d6276f95e2304f4b530121 +IV= 6f5308e8b3814cb68cc8602153af517d45499af6e39857d07701660ce5291b74 +CT= 892cfa65953da2d94519381d20f9ea0d65bad6be3bfd0a2bf2bdd18255d5b2e5 +PT= dc56b29747143aa81e9027fa05fb263d37a909b2c17709f927f9e578eb50996d +TEST= 380 +KEY= 52af4224a0a12e96b21bd537a003984c +IV= 8a811a898afb34ba7b4d78ec75d16144db05f104e1ee21d5f196e559a5404edd +CT= dc56b29747143aa81e9027fa05fb263d37a909b2c17709f927f9e578eb50996d +PT= 679bf78d37e89ed2ba6da4553fa22ae13e5bfd1486f0e49c6e1962c8fab86a9a +TEST= 381 +KEY= 6cf4bf302651ca0adc02b7ff5abbf2d6 +IV= 65b1659c6dfe87e4589a985e26af7240384e4c4513deb16f2c72835a5af7ee51 +CT= 679bf78d37e89ed2ba6da4553fa22ae13e5bfd1486f0e49c6e1962c8fab86a9a +PT= 9fd7fac698cd67939163a2bb200824f7bda4bf46ec103cc19004ffd3af59cfcb +TEST= 382 +KEY= d1500076ca41f6cb4c06482cf5e23d1d +IV= c75a1bc0a8f405fbeb2ed5946ec571ce41fbde7c1335e4f5e1ad28a800310d94 +CT= 9fd7fac698cd67939163a2bb200824f7bda4bf46ec103cc19004ffd3af59cfcb +PT= deedabfdd54b99692b9c39ceb2e2c0a3b35ac070e8e3a6f4b12744b8b679295b +TEST= 383 +KEY= 620ac00622a2503ffd210c94439b1446 +IV= b205f4511f974ac10a04904e7209a4b32e63587a25276f497334b537454ea6e7 +CT= deedabfdd54b99692b9c39ceb2e2c0a3b35ac070e8e3a6f4b12744b8b679295b +PT= 0aa045cf2eedc56fa5a6eb3a95eb7ab298adba1b68a8fa71cb6fdd3849a5f2bc +TEST= 384 +KEY= faa77a1d4a0aaa4e364ed1ac0a3ee6fa +IV= 33c35954da2d762a2675daaddff7c3e06445cc9c6798b54223cda93519486525 +CT= 0aa045cf2eedc56fa5a6eb3a95eb7ab298adba1b68a8fa71cb6fdd3849a5f2bc +PT= a18ff7d93b9f5613fc9be014c58956e9ddcb1a5a1831eaed3ffcd492853f9875 +TEST= 385 +KEY= 276c6047523b40a309b2053e8f017e8f +IV= 5d9f58f85301d451aa1e7f01386a40db02e5239bb699684744417e4bc0a82a89 +CT= a18ff7d93b9f5613fc9be014c58956e9ddcb1a5a1831eaed3ffcd492853f9875 +PT= 7aeb7ad50a77962e606aca030a70e27a9df4b3bb2fcdef5910d91613e736ccb3 +TEST= 386 +KEY= ba98d3fc7df6affa196b132d6837b23c +IV= 6d4317bdb955b8e5596ab83dd03046ef51d19e595e85feafd6c5a4ba543b4d61 +CT= 7aeb7ad50a77962e606aca030a70e27a9df4b3bb2fcdef5910d91613e736ccb3 +PT= 8a5fc343ddf02e4007adbcce4b3683bb028abd8c311b98a493c886c15c5fe82e +TEST= 387 +KEY= b8126e704ced375e8aa395ec34685a12 +IV= 0b76bc9ec17c4625d2d73033a46c3d04b090f3cbcdbfce320e87176ea6f4df59 +CT= 8a5fc343ddf02e4007adbcce4b3683bb028abd8c311b98a493c886c15c5fe82e +PT= aad596391409ff893175ffbf539e0c3afa6aad17f6130c6bdf33550429d2b605 +TEST= 388 +KEY= 4278c367bafe3b355590c0e81dbaec17 +IV= 98b8a500adc89209e48e84dca8c02a6364171c9fc4ad6d988e32a4c845652d65 +CT= aad596391409ff893175ffbf539e0c3afa6aad17f6130c6bdf33550429d2b605 +PT= e0f77af3c690041481b87f57de1c6b315ee1c5f05c52e7493b456a41d02c780f +TEST= 389 +KEY= 1c990697e6acdc7c6ed5aaa9cd969418 +IV= 619aeb90160239000aec7b3481b70686e200683dcf678a2804f57dadb3b932fe +CT= e0f77af3c690041481b87f57de1c6b315ee1c5f05c52e7493b456a41d02c780f +PT= f6b1542b7440d2ff8a71e900f294aca51ea9723431f51bdf62c0ca0b27dedf0d +TEST= 390 +KEY= 023074a3d759c7a30c1560a2ea484b15 +IV= d3e870fe3b2bde8f2d0008ab1ca1091fbc7037edf0c05a667b6f5e7a748b5e42 +CT= f6b1542b7440d2ff8a71e900f294aca51ea9723431f51bdf62c0ca0b27dedf0d +PT= 74d316ddc3e7390ad1b495b1d28fde1879d3b3d4994c8d60e12ce641f70dd716 +TEST= 391 +KEY= 7be3c7774e154ac3ed3986e31d459c03 +IV= 99dad7e672fc0e07e6cda4852613ea1c91421bbdd0ca51dd6001ecc2885cbe69 +CT= 74d316ddc3e7390ad1b495b1d28fde1879d3b3d4994c8d60e12ce641f70dd716 +PT= cfe883dcbaa06b2a9b38c6fe57726cd731f1eda3613528e448230681ecf23f71 +TEST= 392 +KEY= 4a122ad42f206227a51a8062f1b7a372 +IV= 7fe6e810a6f5e1867d9472e79e5816b6b008091aece430aff0bd8aa1740d92f9 +CT= cfe883dcbaa06b2a9b38c6fe57726cd731f1eda3613528e448230681ecf23f71 +PT= 413cf2decb59f5b01cb53150b6b00419e40b3a69c91ae95bed67342f97970677 +TEST= 393 +KEY= ae1910bde63a8b7c487db44d6620a505 +IV= 72e0bd812e94d39c9bafaabe7f5c53c435d18aa47e4dff90bc2d84eea2359c40 +CT= 413cf2decb59f5b01cb53150b6b00419e40b3a69c91ae95bed67342f97970677 +PT= 9bbe64ffcdcadd95be4a9606aa330a2c9aa5d8cfdf098a3486227a66fb415ad4 +TEST= 394 +KEY= 34bcc87239330148ce5fce2b9d61ffd1 +IV= 11abed1ff6982c359c39a4456dea92210a441b23c565aa932554af2f2a87b344 +CT= 9bbe64ffcdcadd95be4a9606aa330a2c9aa5d8cfdf098a3486227a66fb415ad4 +PT= 484c337f9a89e161590710fb156087d438e45df1cd5745a034fe0d6a5ac7cf64 +TEST= 395 +KEY= 0c589583f46444e8faa1c341c7a630b5 +IV= 3c979004ef335f4e47c511a34f8c85d673cf2cfa4cc827692c411601afe2ca09 +CT= 484c337f9a89e161590710fb156087d438e45df1cd5745a034fe0d6a5ac7cf64 +PT= b128cd97bbb1db0b0849aa6d60596bae4517a2b49666737f570097a18417c6f2 +TEST= 396 +KEY= 494f373762023797ada154e043b1f647 +IV= c482be6eb323f7f9e2e4ad4ad18d1ac02e3436f88effa7678ea697cf4ea42742 +CT= b128cd97bbb1db0b0849aa6d60596bae4517a2b49666737f570097a18417c6f2 +PT= 38bbd1685f21803dd1ba1f05ced497e47207d3b94fb5fa6789d0e93706819005 +TEST= 397 +KEY= 3b48e48e2db7cdf02471bdd745306642 +IV= fce5497ad1106d8138ca2a6e42fed57d4928e2ba94e41c60bc6e94245d9f53ff +CT= 38bbd1685f21803dd1ba1f05ced497e47207d3b94fb5fa6789d0e93706819005 +PT= fe02f908ce22e8024a8f8432fbc159fa62cd87c8c42965261368b267f7c63915 +TEST= 398 +KEY= 59856346e99ea8d637190fb0b2f65f57 +IV= a03d58a4f251f519af2bf2923d351cd8cdafb7429985c3fe4d5a9b49c06efae3 +CT= fe02f908ce22e8024a8f8432fbc159fa62cd87c8c42965261368b267f7c63915 +PT= a1335d8211f70f0eaf3745be79c6183113184069abb16d21a87826dbfd0a9462 +TEST= 399 +KEY= 4a9d232f422fc5f79f61296b4ffccb35 +IV= 85a653c633a3b4fefe28765be8fb6fbc740b095eaca48c4f600a85efac2c21a9 +CT= a1335d8211f70f0eaf3745be79c6183113184069abb16d21a87826dbfd0a9462 +PT= afbe767d0bb7579e984c89533a9d3a22b9dc590f8264b4724293a60e0dea7ebc diff --git a/flint/test/testvals/cbcmd86.txt b/flint/test/testvals/cbcmd86.txt new file mode 100644 index 0000000..dfd332b --- /dev/null +++ b/flint/test/testvals/cbcmd86.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 4f1c11026c329bf18fc4c078f10d7886f5a8a7eb9a758f0b26de67f55f9e56da +TEST= 1 +KEY= 8fc4c078f10d7886f5a8a7eb9a758f0b26de67f55f9e56da +IV= 3c30c3de70cc4a6c695cbc5674705941b78f424b480ff86fedfa04934e352257 +CT= 4f1c11026c329bf18fc4c078f10d7886f5a8a7eb9a758f0b26de67f55f9e56da +PT= 32f82ee3d0a88ff087b50e3a3bc78546bad6248833a4462da6ece16cb3ed3f78 +TEST= 2 +KEY= 0871ce42cacafdc04f7e8363a9d1c92680328699ec7369a2 +IV= 860e51e99f032bd7d73e5623035786c9d521e42b4804b76d7e3e4f6aedc7500c +CT= 32f82ee3d0a88ff087b50e3a3bc78546bad6248833a4462da6ece16cb3ed3f78 +PT= edb554a9db84a9209b303cce2172ebbd2f55babd421db505335f4096a6c264b2 +TEST= 3 +KEY= 9341f28cebb8167d602b39deebcc7c23b36dc60f4ab10d10 +IV= 3ee86ec3a2cdb1fe12d40741a027028fecf36ce128e59bebedff2f3a209f877d +CT= edb554a9db84a9209b303cce2172ebbd2f55babd421db505335f4096a6c264b2 +PT= 0e5c000be08f6c33fbe528df5f6442e7648d9b683fcc534df1c88a48d370aa09 +TEST= 4 +KEY= 68a4da53b4dc549a04a6a2b6d4002f6e42a54c4799c1a719 +IV= 9a1f13ba5bfff438044d99c71cc6cafb3e88eeee785c5d28a65439058b3cffca +CT= 0e5c000be08f6c33fbe528df5f6442e7648d9b683fcc534df1c88a48d370aa09 +PT= 8f8ded2da5293d651a8cd5322d4812acffe0a43c6b7484224e2053d05c8c3ffe +TEST= 5 +KEY= 72280f6199944636fb46068abf74ab4c0c851f97c54d98e7 +IV= af0d4260f3bc345d12411e079dacd6de6514d051e03ad766d1c52719e546a4ff +CT= 8f8ded2da5293d651a8cd5322d4812acffe0a43c6b7484224e2053d05c8c3ffe +PT= 3a6b962a240eb6979a0739925df22a81bf629170f9ff84930f9ca8408b442a3b +TEST= 6 +KEY= e82f36f3c4666cb7442497fa468b2fdf0319b7d74e09b2dc +IV= 6d4006029de3a236742cafb22c563eb797f3a7b0229397e5c768bc5884c9e0cf +CT= 3a6b962a240eb6979a0739925df22a81bf629170f9ff84930f9ca8408b442a3b +PT= f777316d982dbf05f726e6ea1b5b3268163a2ce99376b17f864112e61ccd7993 +TEST= 7 +KEY= 1f09d019df3d5edf521ebb13d5fd9ea08558a53152c4cb4f +IV= 8f6f6610f135101b7883b23e6521cfc1ef401a5f81d70d97b248a2c70a358766 +CT= f777316d982dbf05f726e6ea1b5b3268163a2ce99376b17f864112e61ccd7993 +PT= f80746afacc95439e1a201739532ae9acae4313738e34a83b8209275d0c75562 +TEST= 8 +KEY= feabd16a4a0ff04598fa8a24ed1ed4233d78374482039e2d +IV= f6e5cd2943f34dac1d6ddefde0312c4e965b88ac4b880e84a4a26d3abbd4f113 +CT= f80746afacc95439e1a201739532ae9acae4313738e34a83b8209275d0c75562 +PT= 8d844b32dc0eae281ea18b4265be745ae4a3b2f4208cd32ef9b32f76ea967dfd +TEST= 9 +KEY= e00a5a282fb1841f7c5938d0cd92070dc4cb18326895e3d0 +IV= c08e39de7b57f25b00022d9add04ddf40166ce8f3f997c7e3a21363de6fa4274 +CT= 8d844b32dc0eae281ea18b4265be745ae4a3b2f4208cd32ef9b32f76ea967dfd +PT= d0f4900955a82a4a493f0c67b5dda5e794692654695bd90aa93d9e171f3cf2b6 +TEST= 10 +KEY= a935564f9a6c21f8e8301e84a4c9de076df6862577a91166 +IV= 6e848352cd9388508d9e6060bc66a0393e951e3bc1e6232a2be0a4504ca3a3c0 +CT= d0f4900955a82a4a493f0c67b5dda5e794692654695bd90aa93d9e171f3cf2b6 +PT= 2aa21caf307c92691f64a8abc877c67eef90e710a3d0b24bb01afe98d55f4681 +TEST= 11 +KEY= b651fee4521be78607a0f99407196c4cddec78bda2f657e7 +IV= 9e96f9eb45fa96cce0034782702b5755df0438701f8e22d1d5bc0fa58438611d +CT= 2aa21caf307c92691f64a8abc877c67eef90e710a3d0b24bb01afe98d55f4681 +PT= e30e7673fecc00bdd0deeda2da417754ead9b8c159155fb2092e87f8a8a7a267 +TEST= 12 +KEY= 668f1346885a90d2ed7941555e0c33fed4c2ff450a51f580 +IV= 6b7b954e7e13f17d67e6075fd53ca0f79a734cbb240025b2e25ec9331d29e0ac +CT= e30e7673fecc00bdd0deeda2da417754ead9b8c159155fb2092e87f8a8a7a267 +PT= d6a33a54a508bf7d4b762a612bf9b22ff460077ec20b1c9aa27e030dec969516 +TEST= 13 +KEY= 2df93927a3a322fd1919462b9c072f6476bcfc48e6c76096 +IV= bbf4ad20a88110eaaff6eb04df24b15cf13fa4631b438d944592bafc6e5549f9 +CT= d6a33a54a508bf7d4b762a612bf9b22ff460077ec20b1c9aa27e030dec969516 +PT= 1aed74e784927a198dd001ba944ea07a7bfa38adfe9eb48d181816b17f882bfe +TEST= 14 +KEY= a029389d37ed828762e37e8662999be96ea4eaf9994f4b68 +IV= d236ad674403843bd31b39fd7b612e25d751df16d5165e5e9858e4a143b2a98a +CT= 1aed74e784927a198dd001ba944ea07a7bfa38adfe9eb48d181816b17f882bfe +PT= e6824d5436af1264507abfede706e806db84145590a1acfd5e6103ec8790ccaf +TEST= 15 +KEY= f0538770d0eb6a81b9676ad3f238371430c5e9151edf87c7 +IV= 630218cd3f5aca156c07b6a1b0b1a1b41561b327f2b4b7eac10a8ce1322e6340 +CT= e6824d5436af1264507abfede706e806db84145590a1acfd5e6103ec8790ccaf +PT= 7eaa56e2110d1a2d721ada25fba8e76054425c392ac29ab8e2ec14193998f26f +TEST= 16 +KEY= 82495d552b438de1ed2536ead8faadacd229fd0c274775a8 +IV= f42abfa3d533fae8d69c79c8e6148b91a66adb146cb60adfe745cb64e6d2edd0 +CT= 7eaa56e2110d1a2d721ada25fba8e76054425c392ac29ab8e2ec14193998f26f +PT= 1244c23ab75dc6a4429c28da14deb4a0a5726b077161296da7567bb520fd44f9 +TEST= 17 +KEY= c0d5758f3f9d394148575deda99b84c1757f86b907ba3151 +IV= c9f0d21671db8a138b40f5d8e78d1aaca1f4592d3089b2141f60ea5689e3e3c7 +CT= 1244c23ab75dc6a4429c28da14deb4a0a5726b077161296da7567bb520fd44f9 +PT= 4cba65b26460ad3a0056941e4895d0936a4469a0094b9a05adabc0d960e37d5a +TEST= 18 +KEY= c083e1917708e9d22213344da0d01ec4d8d4466067594c0b +IV= 0ccac2537ec72ae8157abc1e25c47b6a466242c5270629debd5984b68ba8c7a3 +CT= 4cba65b26460ad3a0056941e4895d0936a4469a0094b9a05adabc0d960e37d5a +PT= 3ed1dfd2f9b610d2442f792da8c927acc5ac047fa285d2d78ed2b214a44826fa +TEST= 19 +KEY= 84ac98bcdfc1ce7ee7bf30320255cc135606f474c3116af1 +IV= babdd1736b22fc94d6078e06e059027d2a4a7848bdcdc7261bb437de8781118e +CT= 3ed1dfd2f9b610d2442f792da8c927acc5ac047fa285d2d78ed2b214a44826fa +PT= c541e64403d85f05b5ef7e801fbd864de319d9e2cb0c7b11beb878f99d6d2455 +TEST= 20 +KEY= 3143e63cc07c483304a6e9d0c959b702e8be8c8d5e7c4ea4 +IV= 59512ea3b8bee9c720900e6dd6220c1734b5cb6356f3eadbf4de315165192d50 +CT= c541e64403d85f05b5ef7e801fbd864de319d9e2cb0c7b11beb878f99d6d2455 +PT= f1116460a0700cd0d96cbaab2167dff755c9bb2ad5c0ac631d3eef0518e86ca3 +TEST= 21 +KEY= e82f5c97e11b97c4516f52fa1c991b61f580638846942207 +IV= bcd9b7837b68b860e6439b65190e9dab898e2585a5b008dff5970ee08d876302 +CT= f1116460a0700cd0d96cbaab2167dff755c9bb2ad5c0ac631d3eef0518e86ca3 +PT= c23371790897f658fcac50f4ca9f12adc79e1713eeb0895697bda2c5e2896dcc +TEST= 22 +KEY= 14830c632b84856996f145e9f2299237623dc14da41d4fcb +IV= 7810ad54f9c1c7a1cfc01c2c7ff0530a70daa46f67e7d8408a72e68c642d76eb +CT= c23371790897f658fcac50f4ca9f12adc79e1713eeb0895697bda2c5e2896dcc +PT= 2df229af546c1be7c0da8cea386c23661342633be4d55d69c9084e4c7ae745c6 +TEST= 23 +KEY= d459808913e8a60f85b326d216fccf5eab358f01defa0a0d +IV= 8385b9a1f7da7ea753758e1f18cd3ec457f93a291fc333c5d669b7c5dd0deb84 +CT= 2df229af546c1be7c0da8cea386c23661342633be4d55d69c9084e4c7ae745c6 +PT= 45cdea368af9effaedd8fdfb238eab5ca4fd940ad854585ef1c789d5f597a5e9 +TEST= 24 +KEY= 39817d7230660d53214eb2d8cea897005af206d42b6dafe4 +IV= 4375104627a7309a7535650b12f1d0ec0799ba8b530e1bc4f216e1bce3c7ded4 +CT= 45cdea368af9effaedd8fdfb238eab5ca4fd940ad854585ef1c789d5f597a5e9 +PT= 8d7e3d8226e52eeeba3de41e27c49d52b229de47336a513e3ba878f9dda8daa7 +TEST= 25 +KEY= 83bc996c17a2900193676c9ffdc2c63e615a7e2df6c57543 +IV= 572d55aa1b4803371697c533ca20f8ff6d9f66c94e68919861394e40a3f2aa9a +CT= 8d7e3d8226e52eeeba3de41e27c49d52b229de47336a513e3ba878f9dda8daa7 +PT= f365b9b599123686845617f45394a1b02c05db592ecc159ffa67cda9090dff7d +TEST= 26 +KEY= 07ea8e98443631b1bf62b7c6d30ed3a19b3db384ffc88a3e +IV= 456a067d6eda4e1ae5024a26a29d97e205e675f8bc344ccd0346bb55e8d2d2bf +CT= f365b9b599123686845617f45394a1b02c05db592ecc159ffa67cda9090dff7d +PT= da21ce3fab0af30c964a9462de15c9ad0a6d0750a4608e99da339510f29a8f6e +TEST= 27 +KEY= 91a01afa9a23f81cb50fb096776e5d38410e26940d520550 +IV= 0dc5e710d7bce71dbb2fb736da08501b57a44ee39887e8566984d1553f754349 +CT= da21ce3fab0af30c964a9462de15c9ad0a6d0750a4608e99da339510f29a8f6e +PT= 3f0a56c277e610f5390e10e6751a9ae497152bc8e24dce677558ff4a58eb4842 +TEST= 28 +KEY= a8ae0a1cef3962f8221a9b5e9523935f3456d9de55b94d12 +IV= 383c1cf086f86fa4c9f228ed4fe2c84f968a6e113b3364a0e43a3c256047b2cb +CT= 3f0a56c277e610f5390e10e6751a9ae497152bc8e24dce677558ff4a58eb4842 +PT= d3c9b8cc96c1d802418ceb1d2192005d9f2ef8df179c48bde47c2ea9dd02f359 +TEST= 29 +KEY= e922e101ceab62a5bd34638182bfdbe2d02af77788bbbe4b +IV= e511790022d01ccb249abbfa33503e1deaa4c28c6a1c11fe8f1aced98e694af5 +CT= d3c9b8cc96c1d802418ceb1d2192005d9f2ef8df179c48bde47c2ea9dd02f359 +PT= 5e7d99e63466877e85705ec5777ae4e6988fd8d2d174ef1f5b32fba2fc2b29b1 +TEST= 30 +KEY= 6c52bfc4b9d1864325bbbb5353cb34fd8b180cd5749097fa +IV= be6e3b41a83bd6a1c656f88136f994c72f61425a4299c09fdb5778f0fffb62bc +CT= 5e7d99e63466877e85705ec5777ae4e6988fd8d2d174ef1f5b32fba2fc2b29b1 +PT= 3b7bd069ec21c6ec46ad644cbf7dfa691afc9a92e1451eac4fcb620c8d401647 +TEST= 31 +KEY= 2affdb8806ac7c2a3f4721c1b28e2a51c4d36ed9f9d081bd +IV= fcbd74fa2fecff2b50725f4ad9cf6a8b74cb4ff0ed839c849c022e23509e273a +CT= 3b7bd069ec21c6ec46ad644cbf7dfa691afc9a92e1451eac4fcb620c8d401647 +PT= 21996886cf15904fbd0ead9f63975ae89e1fd3fb5917ed155d5185276f50f9ba +TEST= 32 +KEY= 97f17617653b26c2a158f23aeb99c7449982ebfe96807807 +IV= 18565fb192892efa9aa644bef3096c35a53da6c74bd0e4fd030b8c09ee55bef7 +CT= 21996886cf15904fbd0ead9f63975ae89e1fd3fb5917ed155d5185276f50f9ba +PT= 2b81349521240a453303b94aa227657a7e44fb83c383084ff9741c4dfdba67b3 +TEST= 33 +KEY= a4f2cf5dc71c43b8df1c09b9281acf0b60f6f7b36b3a1fb4 +IV= 42a31828df89a3e381ffe7cda49f650f429f92fea65de07e5d1959978bf1777a +CT= 2b81349521240a453303b94aa227657a7e44fb83c383084ff9741c4dfdba67b3 +PT= e67c1c8be4dad7f6b6dd0b8cb077b3c4f9cfd7637a74abc9c5d7cf4ea09c8d38 +TEST= 34 +KEY= 122fc4d1776bf07c26d3deda526e64c2a52138fdcba6928c +IV= 66d29f2a15768825be2eed0e4a820cef190ae20c8b44f802d7a5fdf43b84fe55 +CT= e67c1c8be4dad7f6b6dd0b8cb077b3c4f9cfd7637a74abc9c5d7cf4ea09c8d38 +PT= cb0c1471d187dd4858634fb3580aeffb0dc1fa657893a28bb67f7f625379dff8 +TEST= 35 +KEY= 4a4c8b622f611f872b1224bf2afdc649135e479f98df4d74 +IV= 1a2f56c1e21bcd5fe7cf857ff9a8bc2c788a82355ff42cf57ee6f413d34b78ff +CT= cb0c1471d187dd4858634fb3580aeffb0dc1fa657893a28bb67f7f625379dff8 +PT= ad6305cab7f58818b43deef7bdb7916b901dfe3686d3e3b82a1ccc6481f44db1 +TEST= 36 +KEY= fe71659592d68eecbb0fda89ac2e25f139428bfb192b00c5 +IV= da1e25b96c07e50c21535199390ddb1492aa87c7b28dea7504ac02aa83a6c0bc +CT= ad6305cab7f58818b43deef7bdb7916b901dfe3686d3e3b82a1ccc6481f44db1 +PT= f19097e064f7f03d84019ee1d5357cd1b4b6a9ceb306b3bd8a39f93fb488f270 +TEST= 37 +KEY= 7a70fb7447e3f23d0fb973471f28964cb37b72c4ada3f2b5 +IV= 3e58b0ed815ba1cd1f5650a4e1e288644d2fea08fb52ab80693547ddeb0c0452 +CT= f19097e064f7f03d84019ee1d5357cd1b4b6a9ceb306b3bd8a39f93fb488f270 +PT= 4716da871b76d0166c7b8d47f3e290d15afc4fab88081231b5eea0d1d2eeb291 +TEST= 38 +KEY= 160b7633b40162ec55453cec9720847d0695d2157f4d4024 +IV= 31bf77014cfce3ea4b9d8eb037b7910dc396ea8b5da71b127955e6bebad9e457 +CT= 4716da871b76d0166c7b8d47f3e290d15afc4fab88081231b5eea0d1d2eeb291 +PT= 7a48e0c9ab37030865f2a39d805d032837396caf03ed450e5e6d67ad35373547 +TEST= 39 +KEY= 73f9d5ae345c61c4627c504394cdc17358f8b5b84a7a7563 +IV= b88cbac47fa3de5dfcf7d29bfea9b699561dd345f037e2d2d2c97538fd49f983 +CT= 7a48e0c9ab37030865f2a39d805d032837396caf03ed450e5e6d67ad35373547 +PT= 0e3cb416e28bc95aac624bf57bb0012175832407fe674b5587ef64bf5f7a8746 +TEST= 40 +KEY= df9b9e5b4fec60e517ff74446aaa8a26df17d1071500f225 +IV= 61a98988b448f91bab0cae5b197b68971c6cdd3bd46f1ffe5713b56d11ea622e +CT= 0e3cb416e28bc95aac624bf57bb0012175832407fe674b5587ef64bf5f7a8746 +PT= 52763b8bbc2d20b2599c3d78e74c3a9d21bf926bd90e46ffac228133455107c8 +TEST= 41 +KEY= 8607a323a8a05a783640e62fb3a4ccd9733550345051f5ed +IV= 721f5453af85478fd609c65b299acce9f57a35d5a118d8bafc866cc9a5849a28 +CT= 52763b8bbc2d20b2599c3d78e74c3a9d21bf926bd90e46ffac228133455107c8 +PT= 94f60abdb84d2db986bda5eb3aaff1c7b0ac507877b411e6c852cda90754fa02 +TEST= 42 +KEY= 00ba06c8920fabbf86ecb657c410dd3fbb679d9d57050fef +IV= 36f0f9132c163527642f0d7067876519cddd6170ab9553c90c0328b8fb66c18d +CT= 94f60abdb84d2db986bda5eb3aaff1c7b0ac507877b411e6c852cda90754fa02 +PT= 89f8467d6e71a74441c173f1aa11d2ced2d1954a8f1b87144bbec768d46fe1cb +TEST= 43 +KEY= 417b7539381e7971543d231d4b0b5a2bf0d95af5836aee24 +IV= c35ce35c30fd8b8820b9befd238e0d1aa77167dfaa75821f81bfba88ddd1620c +CT= 89f8467d6e71a74441c173f1aa11d2ced2d1954a8f1b87144bbec768d46fe1cb +PT= 45f2ecb181358cb873eb3636c12265bde0e3c75c44632f0192b1d387f7d3d32d +TEST= 44 +KEY= 3290430ff93c1cccb4dee4410f68752a6268897274b93d09 +IV= 6e694b4a7ec15fd4a72f1031307f3a9e3268d7488f865d4c796692ea06c9b301 +CT= 45f2ecb181358cb873eb3636c12265bde0e3c75c44632f0192b1d387f7d3d32d +PT= e0b69061793bd4b5027954c2661fba85408bbffbe327102f7881db3a6400ba8f +TEST= 45 +KEY= 30e917cd9f23a649f4555bbaec4f65051ae9524810b98786 +IV= ec64422ed349b990e0b60b7874db38c05e19641fa778d5d360430677a67840e5 +CT= e0b69061793bd4b5027954c2661fba85408bbffbe327102f7881db3a6400ba8f +PT= 0197c91ec8b1d432ba93fdcf4f9138f2d5136077d2d923534c06b8dfe193313e +TEST= 46 +KEY= 8a7aea02d0b29ebb21463bcd3e96465656efea97f12ab6b8 +IV= 6de9585b838baf279c6ddc844fb7230806f7731896a753ce3a80390bbf868482 +CT= 0197c91ec8b1d432ba93fdcf4f9138f2d5136077d2d923534c06b8dfe193313e +PT= ba433d2a02e964c5d4754629f1eb676c4cfc43efd0c521e66bf9b4008e7c9ea1 +TEST= 47 +KEY= 5e0fac2b2159f9d76dba7822ee5367b03d165e977f562819 +IV= db8663a65d1c9cd7ca7438b6b2c0db36bcff5a1187ffa9ed1c54b7b3110f8089 +CT= ba433d2a02e964c5d4754629f1eb676c4cfc43efd0c521e66bf9b4008e7c9ea1 +PT= 55bd3eb2049458f2f26759c355cd46759fa115e8b00c1dbc093a8de5fecedd64 +TEST= 48 +KEY= ac68f5e87494bfa2f21b6dca5e5f7a0c342cd3728198f57d +IV= e58a628d20d641fefa5baa31d19aa391483c1e260123f874fb8c0ca66d0a4c47 +CT= 55bd3eb2049458f2f26759c355cd46759fa115e8b00c1dbc093a8de5fecedd64 +PT= 6bb6c4fbe9bdf33a3d8789e0b70937efa21e2ce6163e6a940b70506de5d80498 +TEST= 49 +KEY= 91ef7c08c39d884d5005412c486110983f5c831f6440f1e5 +IV= 8d0476e3c5768decdc11d80fc0f9a078a9c0901ccb160007dcb6dd5a9dbb4862 +CT= 6bb6c4fbe9bdf33a3d8789e0b70937efa21e2ce6163e6a940b70506de5d80498 +PT= cac8e647f21b3ebc779158775ebb637a383be755f8dbda2382176df55877914a +TEST= 50 +KEY= e67e247f9d26eb37683ea679b0bacabbbd4beeea3c3760af +IV= 560706fbe759514d3a5fb30501d3e4effdf9927ca21276107d62e87590261b39 +CT= cac8e647f21b3ebc779158775ebb637a383be755f8dbda2382176df55877914a +PT= d2e6f3125341fb7cfb705c4d1a2b85c8b8d46f831fafabff6ccd7350fd3f50be +TEST= 51 +KEY= 1d0e7832870d6effd0eac9faaf156144d1869dbac1083011 +IV= cf30b8f2f2b983a46ca31fe93f65155640e54f6380eaa6b8bf597f775ac70c56 +CT= d2e6f3125341fb7cfb705c4d1a2b85c8b8d46f831fafabff6ccd7350fd3f50be +PT= 26af08cfa834f99dae5aeb46cf59afb49d662d1ebaacbacd28c61c19daba8ce7 +TEST= 52 +KEY= b35493744854c14b4d8ce4e415b9db89f94081a31bb2bcf6 +IV= 1f0e5110516bb40ff0c6eceab2ca9f8660ce06f2d2e4ca4ba232e2e5d534ad4c +CT= 26af08cfa834f99dae5aeb46cf59afb49d662d1ebaacbacd28c61c19daba8ce7 +PT= a959657589474445e35ddbde2f2d0ba6732eafce60cdf022799fea55a80b0264 +TEST= 53 +KEY= 500948aa6779caed3ea24b2a75742bab80df6bf6b3b9be92 +IV= 0c5d672e7a448fed4b87df5305cc4a1bf52777cea97059dfdae96769dcc2d690 +CT= a959657589474445e35ddbde2f2d0ba6732eafce60cdf022799fea55a80b0264 +PT= f7563c74909cd33bcd56d1e953d0cc0adcde0dd70e676eea7626ea46e3f0b449 +TEST= 54 +KEY= 9d5f994334a906e7e27c46fd7b134541f6f981b050490adb +IV= f686f2d5dfa022740eda2a8d0c0cd5042653f7938081fd73433f4c1b119cc6bd +CT= f7563c74909cd33bcd56d1e953d0cc0adcde0dd70e676eea7626ea46e3f0b449 +PT= 7d957dba41e10238a682427d1ed93b43dd43ddb2fdcae7fd26e00f7509bff9f4 +TEST= 55 +KEY= 3bdddb3e2a703da43f3f9b4f86d9a2bcd0198ec559f6f32f +IV= 0187c6654731f9a10081d7fe3460f680edcf916232f5887ac5cfbb06c20bef4a +CT= 7d957dba41e10238a682427d1ed93b43dd43ddb2fdcae7fd26e00f7509bff9f4 +PT= f640d2a0b1d723cc1ba0067b7289e5e19625f2a6c66d44528e7d8b541236ca5e +TEST= 56 +KEY= 207ddd4558f9d845a91a69e940b4e6ee5e6405914bc03971 +IV= 0a71fc3310ca7ccb5b267cf0b3bba6d8e5b015a9936a43962aba6624e0417426 +CT= f640d2a0b1d723cc1ba0067b7289e5e19625f2a6c66d44528e7d8b541236ca5e +PT= ad7ba49bcb6d2ba415564bda6b8f97ed0a109bec3342dab9de756d16ef41606c +TEST= 57 +KEY= 352b969f33764fa8a30af20573f63c5780116887a481591d +IV= 9c2eb4e8432f76cb690826c32b58b7e9d73af110d8ff2cacab57095721e347d1 +CT= ad7ba49bcb6d2ba415564bda6b8f97ed0a109bec3342dab9de756d16ef41606c +PT= 6f5aea0d64eb553613b5d670955fc9abd85e38826dd9413ab7579d3018333b14 +TEST= 58 +KEY= 269e40efa62986037b54ca871e2f7d6d3746f5b7bcb26209 +IV= 1dba4c63e7644889542c0a380cec6efcc45f1e2aac4c2aa05d68ce9ca4489729 +CT= 6f5aea0d64eb553613b5d670955fc9abd85e38826dd9413ab7579d3018333b14 +PT= 79a6c8fc4b523c7858cb2a8a30a50daa1deb4e05b6956ff49b2288d4edacbed3 +TEST= 59 +KEY= 7e556a65968c8ba966bf8482a8ba1299ac647d63511edcda +IV= 41e61ce580e7434a768c6f43b971fb12da3d18fee831e985de25a6c9e5d1ccbd +CT= 79a6c8fc4b523c7858cb2a8a30a50daa1deb4e05b6956ff49b2288d4edacbed3 +PT= 8861c6c31ee92f8f99217e71f455b8094c044502f73c9ab16797effa0a353549 +TEST= 60 +KEY= e774141462d933a02abbc1805f868828cbf392995b2be993 +IV= 275143a6c5d9dd96f0a1d638451ee82da9fe2c33d9b42547ad10125cba8c3902 +CT= 8861c6c31ee92f8f99217e71f455b8094c044502f73c9ab16797effa0a353549 +PT= 4269f08dac2a0be5f39fd29cd22ef3ba58499f9346ee9f53440f94e223ec49f5 +TEST= 61 +KEY= 14ebc688b0f7c01a72f25e131968177b8ffc067b78c7a066 +IV= 63547dfde88ca96935cddc25b7ffdec6e9f7f78e94f06aa11bd049988cd5500d +CT= 4269f08dac2a0be5f39fd29cd22ef3ba58499f9346ee9f53440f94e223ec49f5 +PT= 9afbb7263d1d5534c2f4d49d21edd1f156403a279c819a8066db1ddbe0b19467 +TEST= 62 +KEY= d61f1215911a11eb24b2643485e98dfbe9271ba098763401 +IV= 2f2b6506d4a3c307171a67f6c77a32d3d28339226a31971f88b869f7d8df7deb +CT= 9afbb7263d1d5534c2f4d49d21edd1f156403a279c819a8066db1ddbe0b19467 +PT= 7c2eccb99804b3be2ba2b532c7a615caf9aa5f8814dac7ae8791cd98eaefe624 +TEST= 63 +KEY= fdbda72756bc0421dd183bbc91334a556eb6d6387299d225 +IV= 2a5cb06203d39f7e4c13ec136d3ff450d8fd81ea84194605fe57e06a44750366 +CT= 7c2eccb99804b3be2ba2b532c7a615caf9aa5f8814dac7ae8791cd98eaefe624 +PT= 36ab86e27b0f5b0e3d087cd15c465d8c951dfe4306d5a24854eb07f91f5eb9b7 +TEST= 64 +KEY= c0b5dbf60afa59ad4805c5ff97e6e81d3a5dd1c16dc76b92 +IV= 85a3659da63280a254f1a92d38dcc1ac4d6052d7bc1b1068cb9813cf0d9b67b2 +CT= 36ab86e27b0f5b0e3d087cd15c465d8c951dfe4306d5a24854eb07f91f5eb9b7 +PT= e05f5ba3bdb0517f15749ea63d367e169dea975e813eeccc8e21079aa393b99f +TEST= 65 +KEY= d5c1455037cc27bbd5ef52a116d804d1b47cd65bce54d20d +IV= c6abcdf2f3933faf5281882c6879e1b17533fd8adc9aeb6a4f37d1124f023bbb +CT= e05f5ba3bdb0517f15749ea63d367e169dea975e813eeccc8e21079aa393b99f +PT= 44bd48be6a067be8b362c23df679bfe66d48526569c8e57dbca991497cccb174 +TEST= 66 +KEY= 66a3876dc1b5985db8a700c47f10e1ac08d54712b2986379 +IV= 563713c211faed525dd06c9c3b195554a30e58dc734346aa60612d478caf7320 +CT= 44bd48be6a067be8b362c23df679bfe66d48526569c8e57dbca991497cccb174 +PT= 1f6d0fad156b766c947f61826419b1852ef6b4b2d5e6dfbd7a7b6474f63aee59 +TEST= 67 +KEY= f2dce6efa5ac29d89651b476aaf63e1172ae236644a28d20 +IV= cb19c6a052397f84af179293bd59daef2b896b36566bfcdab8e5c2c2e2ef568d +CT= 1f6d0fad156b766c947f61826419b1852ef6b4b2d5e6dfbd7a7b6474f63aee59 +PT= 904c2c991ac279a8d98f21165ed2f365525e5f6f3294b86ed12f74003ed59ff7 +TEST= 68 +KEY= 2b53c7f9fb7edabdc40feb199862867fa38157667a7712d7 +IV= 85676596cba41f3adf71441e8db45c219e08b7eb714095dab355e3d144468e38 +CT= 904c2c991ac279a8d98f21165ed2f365525e5f6f3294b86ed12f74003ed59ff7 +PT= 1c299a5e337a3fec8808394c5a4d50517eb7713646d83c25b582e88e5eb2ee25 +TEST= 69 +KEY= a35bfeb5a1338aecbab89a2fdebaba5a1603bfe824c5fcf2 +IV= ebf83d5345ae1e368828cd021ac494285fd9c89db9ddecf434b965a565061f11 +CT= 1c299a5e337a3fec8808394c5a4d50517eb7713646d83c25b582e88e5eb2ee25 +PT= f63fc07aa33b71479c0052f3f1a51e4b86a2b5fe307918bb66a9af23b615961e +TEST= 70 +KEY= 3f5bac46509694a73c1a2fd1eec3a2e170aa10cb92d06aec +IV= 1adcaaba765d3d1d8285ac965ead24166af93e13d78a56b2b6885e65662b33b4 +CT= f63fc07aa33b71479c0052f3f1a51e4b86a2b5fe307918bb66a9af23b615961e +PT= 896e89a553da52a76e4ac6721b4cfd6dc1bbcac4d93cebde63af4818e5c0e274 +TEST= 71 +KEY= 51116a344bda69cafda1e51537ff493f130558d377108898 +IV= 78896029b5f8ed8d0c7d3973abe7053e4a01f4865316815f9dd62f79c41d0a2f +CT= 896e89a553da52a76e4ac6721b4cfd6dc1bbcac4d93cebde63af4818e5c0e274 +PT= d521fad689b793fb1e4b63a43a7f026fda0c2b41e5997bd052db31b803c72dc8 +TEST= 72 +KEY= 4f5a099071a56ba527adce54d26632ef41de696b74d7a550 +IV= 37a8dc92e2d725a97493d12d93f4d6e1240b9cd35f509aa06ae1fb17edc2b23d +CT= d521fad689b793fb1e4b63a43a7f026fda0c2b41e5997bd052db31b803c72dc8 +PT= 7a88f54a2ffe06b5a2319a803670972a13284d72185e4012423d69b17245ffc9 +TEST= 73 +KEY= ed6b931047d5fc8f34858326ca3872fd03e300da06925a99 +IV= 6b8366f9dfc007930770adacee2a412444ecf42019fe78ec3b5e791fe7caa4a1 +CT= 7a88f54a2ffe06b5a2319a803670972a13284d72185e4012423d69b17245ffc9 +PT= e9bca3ef29d825872747e4c9ef187501e370bf4a83d504c4dc328749f04ee2b1 +TEST= 74 +KEY= ca2c77d9a8cd898ed7f53c6c49ed7639dfd18793f6dcb828 +IV= 412801a0a5403935470d8ef9f809b2d4d8424a61f260dba97b89553fa49be7e4 +CT= e9bca3ef29d825872747e4c9ef187501e370bf4a83d504c4dc328749f04ee2b1 +PT= b99a3fdc232fd5dc49cac225110913daeb1a8321a5afeb88f8765ec2100b077d +TEST= 75 +KEY= 83e6b5fcb9c49a543cefbf4dec429db127a7d951e6d7bf55 +IV= 0f501c683b15d780e23e702ae0a2a8126b254dbe03f5c2f1324ceb35926d5f25 +CT= b99a3fdc232fd5dc49cac225110913daeb1a8321a5afeb88f8765ec2100b077d +PT= 733bee7211a828985ab51ee83971898bfaa9f27471686e776601c2ae15244a4c +TEST= 76 +KEY= d953ab1480b513dfc6464d399d2af3c641a61bfff3f3f519 +IV= 43858084619cc3550137b6ed25d310879a43142edefcf1c823bbe9bcb284adb8 +CT= 733bee7211a828985ab51ee83971898bfaa9f27471686e776601c2ae15244a4c +PT= 3039540b1c8d7d70e65c3bbc5962876feb353b53fa1449af05d6859e361617f7 +TEST= 77 +KEY= 3f0f90a8d9d794b02d73766a673eba6944709e61c5e5e2ee +IV= b790d06ad45b0d9d4b59facd306101e293f62ddfbb6305739e4b862913bfe8cd +CT= 3039540b1c8d7d70e65c3bbc5962876feb353b53fa1449af05d6859e361617f7 +PT= ba7c2d0fdab24bb66f79ea6258e24371760facb6043f4a1f29dd48a8a383a209 +TEST= 78 +KEY= 50767aca8135d7c15b7cdadc6301f0766dadd6c9666640e7 +IV= 3c7b9f49ed05931c609eaef4ef372a17c4c5ed658f105988420686de93b8ab6b +CT= ba7c2d0fdab24bb66f79ea6258e24371760facb6043f4a1f29dd48a8a383a209 +PT= 06c7f66d516a847aa45e79d7947de6ab540cc37799e1941742ad033ea2cd8713 +TEST= 79 +KEY= f428031d1548316a0f7019abfae064612f00d5f7c4abc7f4 +IV= 164fd23214260f03e6bf58d7bf68cbb719c59a20c1e02a0de782817d495499c7 +CT= 06c7f66d516a847aa45e79d7947de6ab540cc37799e1941742ad033ea2cd8713 +PT= 4c9b439cf5c2916dd230f01abda45e41c329a9b5eafd4d0507663594a4fdb070 +TEST= 80 +KEY= 2618f307a8ec6f2bcc59b01e101d29642866e06360567784 +IV= 72f0d12e2a9e7aaedd445a353b2423ee34e16a5a28de9e832e4937a06e488c3f +CT= 4c9b439cf5c2916dd230f01abda45e41c329a9b5eafd4d0507663594a4fdb070 +PT= c034fa0c5c21d60a2d5e5922e30e5dd9fe9858064ff58da4caf3233141cccd58 +TEST= 81 +KEY= 0b46aa254be232f232c1e8185fe8a4c0e295c352219abadc +IV= 366f99fe6f167cc2b17dfca47905c7cbd0363223dbbf679e92328527ee1f833a +CT= c034fa0c5c21d60a2d5e5922e30e5dd9fe9858064ff58da4caf3233141cccd58 +PT= 24fc4db95d2a7db0b934c3eccbf68143b737430a32d1f21e8996c2bac6075222 +TEST= 82 +KEY= b27269c98014b3b185f6ab126d3956de6b0301e8e79de8fe +IV= 69a7629f279c45b89eed6fb7f2d023f0620e482b251e6bf30df5e07a1cd96a1a +CT= 24fc4db95d2a7db0b934c3eccbf68143b737430a32d1f21e8996c2bac6075222 +PT= 5301a92fbf775083574daf2ff7a44e0e55233c3d92fb40130aeb9af01b841b83 +TEST= 83 +KEY= e53fc6e677b0fdbfd0d5972fffc216cd61e89b18fc19f37d +IV= 102426183a96ffbef53392b467fdb356da44bba937fd224bfb268e3fc6bcf38a +CT= 5301a92fbf775083574daf2ff7a44e0e55233c3d92fb40130aeb9af01b841b83 +PT= e1dc2ecdfde127ddd7b79b7376a392e6e3fcdbbcd39dbf7e7591c7dea2e75cc0 +TEST= 84 +KEY= 32885d9501136f5933294c932c5fa9b314795cc65efeafbd +IV= 16b71a9a529aba27db4998c00f48d45e9e63154fed3140c10589ae1c3f3b9f42 +CT= e1dc2ecdfde127ddd7b79b7376a392e6e3fcdbbcd39dbf7e7591c7dea2e75cc0 +PT= aba75bed4d9d436448e5e5312381794bb3d3286649cea5a7b26a0ab489eb9825 +TEST= 85 +KEY= 7a6db8a42292161280fa64f565910c14a6135672d7153798 +IV= 04c0d39fa637dc097c904fa7ceb0cf9810995ef8bf7aa3ff014c73782799f9ea +CT= aba75bed4d9d436448e5e5312381794bb3d3286649cea5a7b26a0ab489eb9825 +PT= edf66a788bd034688820b7dc7e956909093d6c4391cd2597be019e84a3007fe4 +TEST= 86 +KEY= f24d0f785c077f1b89c708b6f45c29831812c8f67415487c +IV= c02ba8f5a22d7dc2d9190753b109bfabb9b8676da7c26a9ace44d5f3abd09d73 +CT= edf66a788bd034688820b7dc7e956909093d6c4391cd2597be019e84a3007fe4 +PT= cf09cc43f938d6755c423a99e41732b239cb12902ebd4f785a1ad401bbf4e8d9 +TEST= 87 +KEY= ae0f35e1b8104da9b00c1a26dae166fb42081cf7cfe1a0a5 +IV= a8a79d6adc88e7282dfe0d6f7da5de3280e0b79d03a0905d1cd60106fcb8fbaa +CT= cf09cc43f938d6755c423a99e41732b239cb12902ebd4f785a1ad401bbf4e8d9 +PT= 00b634da7ee21c38ef81ee29c98abc403b1db809e831583f0e3e7d33adcd5603 +TEST= 88 +KEY= 418edbc8719af1e98b11a22f32d03ec44c3661c4622cf6a6 +IV= 6cf4dc8ead919137567d231821ea27785e01926282c46944dcfc01d29aae8443 +CT= 00b634da7ee21c38ef81ee29c98abc403b1db809e831583f0e3e7d33adcd5603 +PT= 69861dfe278b61d8de1b6325978063c2260d11e6673d6885753c50af6c761b1c +TEST= 89 +KEY= 9f95b8ede61a922bad1cb3c955ed5641390a316b0e5aedba +IV= 0e25bdde7733244d47246e79dcd0dd46892b8e1a6c87cfa99dd18be5fdb024c4 +CT= 69861dfe278b61d8de1b6325978063c2260d11e6673d6885753c50af6c761b1c +PT= 6137d735d7ee7ada1eb9519f586c348e9d9337ca2fa6e8ea5e509f5652fd8c6f +TEST= 90 +KEY= 812ce972be76a6a5308f84037a4bbeab675aae3d5ca761d5 +IV= 861aa8ec5a84f1009c3460c16af810a7bcd6d03ebd0d4bbccf106fe7a7f2cc5b +CT= 6137d735d7ee7ada1eb9519f586c348e9d9337ca2fa6e8ea5e509f5652fd8c6f +PT= e75a3be7491c5a9495dcebc4e8cbb91be57292992baa65ba43b61e964cc8806c +TEST= 91 +KEY= 14f002b656bd1fbed5fd169a51e1db1124ecb0ab106fe1b9 +IV= a484c597c45e165ada795b1c3e7b88872144e7063f19d123431754f9bbf68a3f +CT= e75a3be7491c5a9495dcebc4e8cbb91be57292992baa65ba43b61e964cc8806c +PT= 1bd18bed0895304a3d05939c9a21cd6300938ab55856c732f4f413b5e1a399e8 +TEST= 92 +KEY= 29f5912acc9cd2ddd56e9c2f09b71c23d018a31ef1cc7851 +IV= 662ca878604a6bdb69ce3841a5206addbe28013c3246ceed9264914409fdc58d +CT= 1bd18bed0895304a3d05939c9a21cd6300938ab55856c732f4f413b5e1a399e8 +PT= 5b4f7b11e2e12b5112e7faafe3fc77eb91fcf651e840fe6c638b4d324297ec22 +TEST= 93 +KEY= 3b126b852f60a53644926a7ee1f7e24fb393ee2cb35b9473 +IV= dc99ccb492fecea337f80e31c2054d34f227b66a60370e1990045d2e95b53243 +CT= 5b4f7b11e2e12b5112e7faafe3fc77eb91fcf651e840fe6c638b4d324297ec22 +PT= 77c352d299e0e2f1294ed75e4bac47390dbb9f1c125b9282f1574099574df445 +TEST= 94 +KEY= 125cbcdb64cce20f4929f562f3ac70cd42c4aeb5e4166036 +IV= 805bb88356a9bc2424dba372ceaa0a8d40f89459dc08524f3cb229386e5a63e4 +CT= 77c352d299e0e2f1294ed75e4bac47390dbb9f1c125b9282f1574099574df445 +PT= d8168b95b5b4b3d6c9cf1354cb8fc2ec8e89822202485e8ea520a99ffc3cc627 +TEST= 95 +KEY= db93af8faf4320e3c7a07740f1e42e43e7e4072a182aa611 +IV= 4b8fa74c58ab1e4ac10bb59f33e81fe90642091a9d0163d8949a26fa0635d822 +CT= d8168b95b5b4b3d6c9cf1354cb8fc2ec8e89822202485e8ea520a99ffc3cc627 +PT= 3b5fd614a3a79aa48e9fb6937e8a5c09e7c126bf5aa2819899559975952f0fbd +TEST= 96 +KEY= 550c191cd1c97cea206151ffab46afdb7eb19e5f8d05a9ac +IV= 63c1915a4e0cb0d600c61bc2e9450838a2d3792d884535839384968c8d053c1d +CT= 3b5fd614a3a79aa48e9fb6937e8a5c09e7c126bf5aa2819899559975952f0fbd +PT= d373367cb0d1c3d2b6048132fb4e50e6c79133c4cd5951fad8e874d6d5c173d7 +TEST= 97 +KEY= e308982e2a872c0ce7f0623b661ffe21a659ea8958c4da7b +IV= 72bab280ed8ad4ab9199d7d542ad0a548dd24ebeb3a7750dc4b9c41824177e0e +CT= d373367cb0d1c3d2b6048132fb4e50e6c79133c4cd5951fad8e874d6d5c173d7 +PT= d4adf955befa89023faa94aaab1fc30fc857fe7b3e6bfb344d910a118a1b9125 +TEST= 98 +KEY= dca20c848198ef032fa79c4058740515ebc8e098d2df4b5e +IV= 4016bf75c39e5b4aaa9b04ee5aa7b9e8fa6cd9c395afd834368b40c0b4993381 +CT= d4adf955befa89023faa94aaab1fc30fc857fe7b3e6bfb344d910a118a1b9125 +PT= ea8257f13bccf28cb8ae3504d01cd5b0c8c0cf22853578cf596ce00ee42a1671 +TEST= 99 +KEY= 640c398051843ab3e7675362dd417ddab2a4009636f55d2f +IV= 0c8994045269bdcccb9f10e9d26159ef5afcd2442585d2c563caf54dfb42ff84 +CT= ea8257f13bccf28cb8ae3504d01cd5b0c8c0cf22853578cf596ce00ee42a1671 +PT= b5a1709ac1db3026a0cf82603d1e62151f8c7d3eba7f613d06f9e0ff6a464faa +TEST= 100 +KEY= c4c3bbe06c9a58a6f8eb2e5c673e1ce7b45de0695cb31285 +IV= dc510327df4118e9ecb90c537c418f57ed9cd1bf65c07c1994fe7ac98f360a8d +CT= b5a1709ac1db3026a0cf82603d1e62151f8c7d3eba7f613d06f9e0ff6a464faa +PT= 8c20cc8133a276710b8ac7707aa0d7f6460d92895f12bea1dc7dd8f4f7e147da +TEST= 101 +KEY= cf497c90163a8f50bee6bcd5382ca2466820389dab52555f +IV= ceb0481e587d0289549d2da47b1f6b761f620f500dfbcd322408a48b3cb914e6 +CT= 8c20cc8133a276710b8ac7707aa0d7f6460d92895f12bea1dc7dd8f4f7e147da +PT= e844e329ddd9eb01f845ba79131b2d1b616105d6174325896073bc0d8b881d76 +TEST= 102 +KEY= 370cc6e90521a24bdf87b9032f6f87cf0853849020da4829 +IV= ea62daacaec6dc8aadfd712031808a289fbd87a5c9f6c02f322aabdc58b2ce58 +CT= e844e329ddd9eb01f845ba79131b2d1b616105d6174325896073bc0d8b881d76 +PT= e4d70e3a182751016adb6a18a4c458b9f2a8e81e2d8dd5de4d3a6594a7ba281f +TEST= 103 +KEY= 5dd7acf1a1e5faf22d2f511d02e252114569e10487606036 +IV= 51408d027303fab25fed505bfe3e7ce1420bd150250b39efd468e01ae2583dc0 +CT= e4d70e3a182751016adb6a18a4c458b9f2a8e81e2d8dd5de4d3a6594a7ba281f +PT= 036e2e6f51475ac30e9079f863d38ad8958e6cdc38a064ac7ffe97934f5c88d7 +TEST= 104 +KEY= 5347d509c236702ab8a13dc13a4236bd3a977697c83ce8e1 +IV= 7f0dfa5b7176499b9b0f1605fe2539f5e94723c9fea1f3e78a76e2e6413be7c1 +CT= 036e2e6f51475ac30e9079f863d38ad8958e6cdc38a064ac7ffe97934f5c88d7 +PT= 10671e7a12d68ed8b4de67890ca68bb41a14ba9e8eed7a26272079a60fe1abac +TEST= 105 +KEY= e799b280ce90fb9ea2b5875fb4af4c9b1db70f31c7dd434d +IV= a6ae17a1ce7cf9a8aef1b9beaf8cade6214993e33a2e63a9b96c474d139de421 +CT= 10671e7a12d68ed8b4de67890ca68bb41a14ba9e8eed7a26272079a60fe1abac +PT= 71dafad979cf93a71d078ff83874b051f624970319f45a92704bcde3346b550b +TEST= 106 +KEY= fa9e3d78f6e44bcf5491105cad5b16096dfcc2d2f3b61646 +IV= 47403cb9978c2bae117ba31d6c5bea525999a58aeb39be2d59a4bcb4597d24dd +CT= 71dafad979cf93a71d078ff83874b051f624970319f45a92704bcde3346b550b +PT= 751770bd6df6fcbcec8f81cb08462a7059d796792fddd339126bf83bc8be97f4 +TEST= 107 +KEY= 1611bcb3fea261bf0d4686258286c5307f973ae93b0881b2 +IV= b916d05ed8a1a2fc3c9ee9892c72ec9cb542f21516d6171a7b004d059fd471ea +CT= 751770bd6df6fcbcec8f81cb08462a7059d796792fddd339126bf83bc8be97f4 +PT= c5f87cc0ce8cfca728eddb879abacd95896e62316ac329a454b9b81aee110f87 +TEST= 108 +KEY= 3efc67346418ac2a8428e414e845ec942b2e82f3d5198e35 +IV= fbf04b361912d8c0135d5418d5690f817390adb29e37da9432869e2af93e43ac +CT= c5f87cc0ce8cfca728eddb879abacd95896e62316ac329a454b9b81aee110f87 +PT= 977cc2bfb28b189537a94436f761effc4a395068a0032a079818e509810cb4c0 +TEST= 109 +KEY= 09552302937943d6ce11b47c4846c693b33667fa54153af5 +IV= b1a60db4cce9c3aa0833fe7e69a60cad0fd669b9dba0fc971ac576cb2d4db85f +CT= 977cc2bfb28b189537a94436f761effc4a395068a0032a079818e509810cb4c0 +PT= 22d2ebc72bef92292a52fd24a7717da213982cbc8d84d783dff862ac1d44b7d6 +TEST= 110 +KEY= 2307de2634083e74dd8998c0c5c211106cce055649518d23 +IV= eb32b60d908bb9634167853f2b7e3678c87a748b2097e42f15c698567df15bce +CT= 22d2ebc72bef92292a52fd24a7717da213982cbc8d84d783dff862ac1d44b7d6 +PT= 10523e3d2cd0a80414db305e11c237d92a16414a92dc0deaae1e84da85dc4232 +TEST= 111 +KEY= 37dcee7825ca09adf79fd98a571e1cfac2d0818ccc8dcf11 +IV= 4d10c1047018207290f525eb664d9aee145d4d445d2093f86c8145b1effa15a1 +CT= 10523e3d2cd0a80414db305e11c237d92a16414a92dc0deaae1e84da85dc4232 +PT= e85ab0265aeed948659e67b8990e0b519d41f43ac6cfe24c3da7704a16701018 +TEST= 112 +KEY= 524289c0bcc402fc6ade2db091d1feb6ff77f1c6dafddf09 +IV= 727d90d1fc3a48f305c34eb90b26d3ffb96a287351adfe908c190e5434a051b2 +CT= e85ab0265aeed948659e67b8990e0b519d41f43ac6cfe24c3da7704a16701018 +PT= ad757a84b589e003d63ef0d29fd1c1d0e878767cedba2112c63e7cdecd4e88f2 +TEST= 113 +KEY= 847c79122315c32c82a65bcc7c6bdfa439498d1817b357fb +IV= 603a071f684fa7e4648f3bfeb91e63a1dcdaddd3a3d705a5c0008aeb03fdb3c5 +CT= ad757a84b589e003d63ef0d29fd1c1d0e878767cedba2112c63e7cdecd4e88f2 +PT= 06f2f5f6dfdf004f248f8c296bdfc67c1f5c10bbd13bcfbfca233600dbcaa97c +TEST= 114 +KEY= a0f3f53b48ca05509dfa4b77ad50101bf36abb18cc79fe87 +IV= 2f50d00fba2ffd173bf923834856baacfb72150d8a3992960df182adf647b52d +CT= 06f2f5f6dfdf004f248f8c296bdfc67c1f5c10bbd13bcfbfca233600dbcaa97c +PT= e130ca994600216707921e0ce15ccc9c4efd7db258053833a47646496379eaaf +TEST= 115 +KEY= a761eb37a996c9ccd30736c5f5552828571cfd51af001428 +IV= b623df6f449cbc8c13c9bfb13a98334ddc00efc91913521c149f59d9cb01f617 +CT= e130ca994600216707921e0ce15ccc9c4efd7db258053833a47646496379eaaf +PT= e47b0b659def3c48015077029e5392f2806895c7663386e0605b78913bd1be9b +TEST= 116 +KEY= a6319c3537c55b3e536fa3029366aec8374785c094d1aab3 +IV= 55835cf72d9d5a7ae110987b9c287783542946f828e8cc388c38a9b75d74eb59 +CT= e47b0b659def3c48015077029e5392f2806895c7663386e0605b78913bd1be9b +PT= b6c8c39df8bd11665058f44b3e772887ee18e000793b6a3b20a4559ba5098a22 +TEST= 117 +KEY= f669687e09b273b9bd774302ea5dc4f317e3d05b31d82091 +IV= 7d4e6876bc8d303d7d989bddbf9d57fe476c95e54c76ca6618567fec2eccd553 +CT= b6c8c39df8bd11665058f44b3e772887ee18e000793b6a3b20a4559ba5098a22 +PT= 691676a510f4f4885bb2d22b1f2279508c7e89dc0d8df883cd6e253d1121214d +TEST= 118 +KEY= addbba5516900ae93109cadee7d03c70da8df56620f901dc +IV= 9573066e5f251717fc5ead548a9ed3484e537a6f4973af1b128aba74aa50602b +CT= 691676a510f4f4885bb2d22b1f2279508c7e89dc0d8df883cd6e253d1121214d +PT= d57211ae9daac8f9d0f57390c27e7f80e97d2c1df79540f7b8390023441f0170 +TEST= 119 +KEY= 7d2ec9c5d4ee7569d874e6c310457c8762b4f54564e600ac +IV= 62772c4f0fb152bd411aa1bbc56603465910870d4b17fb5132b0e21678b85c73 +CT= d57211ae9daac8f9d0f57390c27e7f80e97d2c1df79540f7b8390023441f0170 +PT= c9b32fa90878d601e657ec25f4e4c27d728930e4854d200182e4822bf440c95c +TEST= 120 +KEY= 9b7925e0200ab714aafdd62795085c86e050776e90a6c9f0 +IV= 526ada7bafd617997db7cc2886f45e364fd7d4a6489ab378f3d144ae55c3f63f +CT= c9b32fa90878d601e657ec25f4e4c27d728930e4854d200182e4822bf440c95c +PT= 97605b38ff94b2ba21931ff06f94cd7e3241619ff8370a4ad76cac1dca464b7d +TEST= 121 +KEY= baea3a104f9e7a6a98bcb7b86d3f56cc373cdb735ae0828d +IV= b057b490600554b50909f7054bcb52ceb6a5b931f70a71e7fe14f91ba3b2dec9 +CT= 97605b38ff94b2ba21931ff06f94cd7e3241619ff8370a4ad76cac1dca464b7d +PT= c2c8ae1e40adc2d14e4b869ef693864a70fbe1d51e51f264e35ba05514edc21a +TEST= 122 +KEY= f4a1bc8eb90dfc20e847566d736ea4a8d4677b264e0d4097 +IV= 4f346abfc6f5ef4ef9796ae5fed01a8902fde2f3bdcd964347c0ad2688689674 +CT= c2c8ae1e40adc2d14e4b869ef693864a70fbe1d51e51f264e35ba05514edc21a +PT= 4fd355a210576abff79208c1c066cc5a202df7e71b13887e144d552436e35ec6 +TEST= 123 +KEY= 0333b44f796b307ac86aa18a687d2cd6c02a2e0278ee1e51 +IV= c7cfb9df1ad794274046e6f86fff8e99d79e6b53cdeca57f4084878ab16c332c +CT= 4fd355a210576abff79208c1c066cc5a202df7e71b13887e144d552436e35ec6 +PT= 65b35e5d0114a1ca0422d1f99f1f1e5ef7fcd50629eb18d30e5b766b6c814331 +TEST= 124 +KEY= 071165b6e6742e243f96748c41963405ce715869146f5d60 +IV= 2e50fa9273ff12e80d11670ea61068373fbeda5622e9e822cbeeec79113fa37d +CT= 65b35e5d0114a1ca0422d1f99f1f1e5ef7fcd50629eb18d30e5b766b6c814331 +PT= b253382762ff41632cdca9c630cbaa0138855d33229a00e66803ba5af91f34a0 +TEST= 125 +KEY= 2bcdcc70d6bf8425071329bf630c34e3a672e233ed7069c0 +IV= 90f9c75abc630cd4554b2d2f9c32e35c64c740331666e1e59c16ed9baa4dc0ed +CT= b253382762ff41632cdca9c630cbaa0138855d33229a00e66803ba5af91f34a0 +PT= 4b07376ac4a5dca7c0b349c19282062f0555ea6a7df516ed8f59e4c2ba014abb +TEST= 126 +KEY= eb7e85b1443d820a0246c3d51ef9220e292b06f15771237b +IV= 24e0cd8ebae84bea6c567d1b2d6676aaf1ec75d79aec234a375288676cdad527 +CT= 4b07376ac4a5dca7c0b349c19282062f0555ea6a7df516ed8f59e4c2ba014abb +PT= 1cd0d3112783a8dac6c5bd09f372373c2834a636f1771011ec52154e4d3cddd1 +TEST= 127 +KEY= 2dbb38b8b74fb5362a7265e3ef8e321fc57913bf1a4dfeaa +IV= e93ecdc09a59efaf8fcae37e83d50474c0664f850b6b04f7faffc9093dfd06a3 +CT= 1cd0d3112783a8dac6c5bd09f372373c2834a636f1771011ec52154e4d3cddd1 +PT= 76b364839060d9410993901abae7997a0db96eefe4130d9a4524fb13455a3852 +TEST= 128 +KEY= 2428a8a20da82c4c27cb0b0c0b9d3f85805de8ac5f17c6f8 +IV= d6eae76ec0484752d31b01710759308d2879ef545669c2471c0f5795a920ea2c +CT= 76b364839060d9410993901abae7997a0db96eefe4130d9a4524fb13455a3852 +PT= 044e6dac34806b0894d66942239ffbf1750f1102492b97b6434cb24f8cac5f07 +TEST= 129 +KEY= b0fec1e02e37d7bd52c41a0e42b6a833c3115ae3d3bb99ff +IV= 6fe70cfc3826fec21efb90abe83b2bc77baca32ba425fde085448faa32240a8b +CT= 044e6dac34806b0894d66942239ffbf1750f1102492b97b6434cb24f8cac5f07 +PT= 313edb0eeae8fb7deb5622eddc0b11330e2387fa38984be85340c5defed4e953 +TEST= 130 +KEY= 5ba8e30df23cc68e5ce79df47a2ee3db90519f3d2d6f70ac +IV= 51d3de57fc89347f4b32c9eb059ac5e3471c698eb2eff199877c3accdcf9ef65 +CT= 313edb0eeae8fb7deb5622eddc0b11330e2387fa38984be85340c5defed4e953 +PT= 363b37431b9c4b6a30311dec659c862fb0c2412731f238dd60e18cff2efa6c7a +TEST= 131 +KEY= 6b99fee197a040a1ec25dcd34bdcdb06f0b013c203951cd6 +IV= c6dd8a2aff50ffc72088dece4b60c6789c157e01910a655fb8d9775e6265b01c +CT= 363b37431b9c4b6a30311dec659c862fb0c2412731f238dd60e18cff2efa6c7a +PT= 139a1f30f092a9497737f356df977dd633e7dae73ea0d075b0c8187278e4ac73 +TEST= 132 +KEY= 1cae0db748373d77dfc20634757c0b7340780bb07b71b0a5 +IV= 1b7adb8a7775e85d82626dd336a1d86b8bf1aa2182a44ad1b46f87f1bf6dabeb +CT= 139a1f30f092a9497737f356df977dd633e7dae73ea0d075b0c8187278e4ac73 +PT= 8c97aa2917c41e3bd4e98ab859c077ec035e25905808bb8b286939b087fbddd7 +TEST= 133 +KEY= c847870f11f74a9bdc9c23a42d74b0f868113200fc8a6d72 +IV= 1503ca777e8c7ae2f48c3727c8410d749f56a92e1c7b7df51e0e079f12a6a7cd +CT= 8c97aa2917c41e3bd4e98ab859c077ec035e25905808bb8b286939b087fbddd7 +PT= e29b8f09705c6f6126d7fd2a498b0e920646b9d069902c23b41491776535f96d +TEST= 134 +KEY= ee907a25587c4409dada9a7444e49cdbdc05a37799bf941f +IV= 28da5649febe8b45121d84650c99c326ed991bbb8070f4109b0bf5a0dcb9bfdd +CT= e29b8f09705c6f6126d7fd2a498b0e920646b9d069902c23b41491776535f96d +PT= 5de86fe806793d54caf0d05e87c5b78400ecf04c7f0eefb6a086029c15431d7d +TEST= 135 +KEY= 2460aa7bdfb9f38dda366a383bea736d7c83a1eb8cfc8962 +IV= 99aa2db78cf19726f6ae5806dcc8ea2b25fe4e0b48a946ab57640d8dd0f293ba +CT= 5de86fe806793d54caf0d05e87c5b78400ecf04c7f0eefb6a086029c15431d7d +PT= ea7ff1c628056bb8380b503fd1f70dbeb295ab420b96dddf3ccc37e8dbb5f3cc +TEST= 136 +KEY= 1c6bfa440e4efe3368a3c17a307caeb2404f960357497aae +IV= 62a2bac1fd74bcdce86e1c3eec7a5bbe6bbec6d53307523c980d53f2722a639b +CT= ea7ff1c628056bb8380b503fd1f70dbeb295ab420b96dddf3ccc37e8dbb5f3cc +PT= d3e525fdccb54b4efc92f84fdf1bc0fb86411eaf88e0a3f5ef79786e3b27045a +TEST= 137 +KEY= e0f9020bd1553ec8eee2dfd5b89c0d47af36ee6d6c6e7ef4 +IV= 02ec9a0d4bb2b9d88fa7034efc5c0250bf46918df9399d5a5a42af6a0bb251cf +CT= d3e525fdccb54b4efc92f84fdf1bc0fb86411eaf88e0a3f5ef79786e3b27045a +PT= d23ad4f9111b4b7a986204af49e601494b1f4ffbc7af059f90575fc98bcc5553 +TEST= 138 +KEY= 789b06a498b33f81a5fd902e7f3308d83f61b1a4e7a22ba7 +IV= 14fb65a7eb504eb10a6869ceddc3ab14b0dc4f9fb043f604e9604fa4e8f48da8 +CT= d23ad4f9111b4b7a986204af49e601494b1f4ffbc7af059f90575fc98bcc5553 +PT= 197c5c8bd4b06b29a3d2ca3963a65898f1d08564286f6bf8c2122adeb0b8bcda +TEST= 139 +KEY= db49cc9dfb156719542d154a575c6320fd739b7a571a977d +IV= f2ea1af67c4d67990d33dfe094aecba9cf463c31ec37619aababb43949a5beb3 +CT= 197c5c8bd4b06b29a3d2ca3963a65898f1d08564286f6bf8c2122adeb0b8bcda +PT= fb8fbd798a310c4f76f3f8cc72a4156fd42c0629f945efbf80d88aeef0cfbac2 +TEST= 140 +KEY= adba345189b1727680011363ae198c9f7dab1194a7d52dbf +IV= 60eeab966ed73cacd6188d5bd2545596764aa7154f642ac8bca8a7c1e01a2849 +CT= fb8fbd798a310c4f76f3f8cc72a4156fd42c0629f945efbf80d88aeef0cfbac2 +PT= 9e3af2354988cefa0e096f9277cd7e73f90493ea50f1d02b95d7b84ad647d670 +TEST= 141 +KEY= a3b35bc3fe7c0c0579058089fee85cb4e87ca9de7192fbcf +IV= bbec7616090cbb2e48b624499e0dacaf57ae208f7d1778d3d9a9ab12e18dcac6 +CT= 9e3af2354988cefa0e096f9277cd7e73f90493ea50f1d02b95d7b84ad647d670 +PT= 9a21aa46e2488ec814e1857f6c3ca6e437ca1fb4c469efa5464b3b2729ce12ce +TEST= 142 +KEY= b752debc9240aae14ecf9f3d3a81b311ae3792f9585ce901 +IV= bafe932db21efb68ca86c78554ca6da185caccd91e3d92eac4a1370e02225f8b +CT= 9a21aa46e2488ec814e1857f6c3ca6e437ca1fb4c469efa5464b3b2729ce12ce +PT= 21887c295552c01119ea69fe7b26d2cf02766f3e3f743d2091b2c9e5aa27228e +TEST= 143 +KEY= aeb8b742e966782e4cb9f00305f58e313f855b1cf27bcb8f +IV= 45f3266bdbfebe5075381a6e379b9b11196c966cc78459d3e7d232b93b936d68 +CT= 21887c295552c01119ea69fe7b26d2cf02766f3e3f743d2091b2c9e5aa27228e +PT= 25ce3bb4fc427451b098ce7d88d702922d49fdd4a2148fe0405016555bc6b43a +TEST= 144 +KEY= 1e20793f61b17abc61f00dd7a7e101d17fd54d49a9bd7fb5 +IV= 547ec06e338160b4e9517716a6a71d73ec175b58163bec7439ea59e644b7cbfa +CT= 25ce3bb4fc427451b098ce7d88d702922d49fdd4a2148fe0405016555bc6b43a +PT= 7ec43d7dc3d6f86e3977ba9e772d07654984c032fa07c6bf9e4292fe2064f40d +TEST= 145 +KEY= 2757c3a1169c7dd92874cde55de6c76ee197dfb789d98bb8 +IV= b2360fbc10b6a59e63857cdc98cfe29388a5b567fbc90d1a5d1adbc93b50e33d +CT= 7ec43d7dc3d6f86e3977ba9e772d07654984c032fa07c6bf9e4292fe2064f40d +PT= 78e37a89863da8b6cadb352602fbafc6633ad910dfa5bd7abf81895864aba4af +TEST= 146 +KEY= ed8cf6871467d21f4b4e14f582437a145e1656efed722f17 +IV= eb5b768a0d47e0efd70933ab541108e74e5e7eb59ab300eaa2c17d9e96f9d36e +CT= 78e37a89863da8b6cadb352602fbafc6633ad910dfa5bd7abf81895864aba4af +PT= 2f790e08dc4e347fa11019bab86866c85bd4d802a4bd3d6c5b8a796e84ccd79a +TEST= 147 +KEY= 4c9cef3dac0fb4d7109accf726fe4778059c2f8169bef88d +IV= b849ac516f28e5fe47ef574e2f9a005ea72b7b51e9bc20c30d40abc8edbaf496 +CT= 2f790e08dc4e347fa11019bab86866c85bd4d802a4bd3d6c5b8a796e84ccd79a +PT= 061f438cb9402e0624ffcf502f9010aa9e8127a82b4bf9530667f51cf3d9647b +TEST= 148 +KEY= 6863206d839fa47d8e1beb5f0db5be2b03fbda9d9a679cf6 +IV= 31fb1cfab263c20599aa6c3e16ca6a0362aad1cbd059579fe25a24806b0a4722 +CT= 061f438cb9402e0624ffcf502f9010aa9e8127a82b4bf9530667f51cf3d9647b +PT= 91abe3088940a5fa7a31a67165a22c8bc270db89f4a872fe01b0303239661024 +TEST= 149 +KEY= 1252861ce63d88f64c6b30d6f91dccd5024beaafa3018cd2 +IV= 9cbf02b8f66319fd0519414c251eaa8ddb22297aa7b10876f7d2636652c622c8 +CT= 91abe3088940a5fa7a31a67165a22c8bc270db89f4a872fe01b0303239661024 +PT= 1a7899f6178ac576a57862cffe703f0b4861cefc673ec0de2cc8387797c42b1d +TEST= 150 +KEY= b72ae4d3184db7fd040afe2a9e230c0b2e83d2d834c5a7cf +IV= bfb6e012a0fd48af5b6a2895cb892b744c4bc362fec9a1b5d2f6f682999eddd8 +CT= 1a7899f6178ac576a57862cffe703f0b4861cefc673ec0de2cc8387797c42b1d +PT= 16826af20fc29b8e127bbbd6065bd33c9a5fe70b4a19a4687f0d46aaf2e13b88 +TEST= 151 +KEY= a5515f051e1664c19e551921d43aa863518e9472c6249c47 +IV= a69cf2c07cfc01a19ff3bc6750fdeb251858d1944561d13b5c6990e9ea6925fa +CT= 16826af20fc29b8e127bbbd6065bd33c9a5fe70b4a19a4687f0d46aaf2e13b88 +PT= 78ec6aa9bc158486eaf6d26b1eb14bdd62c2100dbf27e1d25ebf3833f18b68fa +TEST= 152 +KEY= 4fa78d6e00a72f1cfc97092c6b1d49b10f31ac4137aff4bd +IV= 0a4c5550c783087b1985bc1f70d628881f4b625b369113b5d645ee8b0dad7efa +CT= 78ec6aa9bc158486eaf6d26b1eb14bdd62c2100dbf27e1d25ebf3833f18b68fa +PT= 19c1bc64d63b03493cc2431f858cfbe8cdd0fa12259ee9d53b41f5e7b8bb43e6 +TEST= 153 +KEY= 7365ce71852bd4f43147f33e4e83a064347059a68f14b75b +IV= 5bb2e535c56b033aef9a2a85ab9832d7ce167ce7d7fe16e31d6fb58b453eb776 +CT= 19c1bc64d63b03493cc2431f858cfbe8cdd0fa12259ee9d53b41f5e7b8bb43e6 +PT= 3d86ee0016a8aa1be385c0c7ec5a65b8a2a568b037e3d259791d2214d17ce426 +TEST= 154 +KEY= 90e00eb66971b14c93e29b8e7960723d4d6d7bb25e68537d +IV= 3f6362ab5bbd3709b4455623faa93cbbf682387eb6df456477132993beb48622 +CT= 3d86ee0016a8aa1be385c0c7ec5a65b8a2a568b037e3d259791d2214d17ce426 +PT= 217dd548920981fa5960fedbd77cae97d8e0453493b8b390cc8524ecd30745f4 +TEST= 155 +KEY= c980f06dbe0d1fdb4b02debaead8c1ad81e85f5e8d6f1689 +IV= 83002d33e7231909c6d9635bb9d829b3a8468b6244b8d3b8ca4aa23f3784f7b2 +CT= 217dd548920981fa5960fedbd77cae97d8e0453493b8b390cc8524ecd30745f4 +PT= 15b7f0cdbcb1352f784efc1fc5dd507aeb2790eb84f62c4f3a4ebf660ec0d934 +TEST= 156 +KEY= b1ce0c727bd04fa1a0254e516e2eede2bba6e03883afcfbd +IV= 3c44308e13f74451311a340162f6c0e54e84ab012d9b2dbe8f42ceb7e07fd488 +CT= 15b7f0cdbcb1352f784efc1fc5dd507aeb2790eb84f62c4f3a4ebf660ec0d934 +PT= 53bab88c7d00bb682c3e6325469739c2905e70df188c7b109c1c25f34b8e9c1a +TEST= 157 +KEY= 9df06f573d477663307b3e8e76a296f227bac5cbc82153a7 +IV= 8c216f53906db43b7731a4700a2e52434860638982dcccdcce293cfb6a124f0c +CT= 53bab88c7d00bb682c3e6325469739c2905e70df188c7b109c1c25f34b8e9c1a +PT= b0c8dff215b7ae0b858e851e35a8311c7abf0e2ba9c393ff4cce445be63babb7 +TEST= 158 +KEY= 187eea4908ef477f4ac430a5df61050d6b7481902e1af810 +IV= 41b72444c78c90041b356d68596e517718aeafbaaa7a1a08b6c2a685d10195cf +CT= b0c8dff215b7ae0b858e851e35a8311c7abf0e2ba9c393ff4cce445be63babb7 +PT= 56b0de8a5ffdcc164c8a2124c6b24450de124232f22319ba35a8f766db053880 +TEST= 159 +KEY= 54f4cb6dce5d032f94d672972d421cb75edc76f6f51fc090 +IV= dacb4a33c406abeac49278edf3263a873da1979e042d0a0b61ad513ca9c05a94 +CT= 56b0de8a5ffdcc164c8a2124c6b24450de124232f22319ba35a8f766db053880 +PT= 58ff881ea150d3ff7854c05709ae4d668c3cf237d0493bf9434e6ec850d051e7 +TEST= 160 +KEY= 2ca00b3ac7f34e4918ea80a0fd0b274e1d92183ea5cf9177 +IV= 671dfa007ec35dd4b17da331e845051d71ad6276b28883a79a102d04bc1da8b7 +CT= 58ff881ea150d3ff7854c05709ae4d668c3cf237d0493bf9434e6ec850d051e7 +PT= 197a46186893701502bcf5067cddb01c5d51a5e67e789aedb339940838382202 +TEST= 161 +KEY= 2e1cfe3cbb2efe5545bb25468373bda3aeab8c369df7b375 +IV= b1dc85d08af294017c2e3bd1ae51a0607ad1dd1554c457d379c6595a2fbec5e9 +CT= 197a46186893701502bcf5067cddb01c5d51a5e67e789aedb339940838382202 +PT= bc107bd766c200bb3c407715e08cd00ea875f47746d0525cf1cae354510def21 +TEST= 162 +KEY= 125c89295ba22e5bedced131c5a3efff5f616f62ccfa5c54 +IV= 990a1c0a55835d0d51ecc472d17d5c41794abdd1b1afcd7253da319994d7ffd3 +CT= bc107bd766c200bb3c407715e08cd00ea875f47746d0525cf1cae354510def21 +PT= ecf6cac8ddadc75bb8a269545ee19c88c70bd53f3852938fdab39583da9a85e1 +TEST= 163 +KEY= aafee07d0543b2d32ac5040efdf17c7085d2fae11660d9b5 +IV= f0751803a1b8530a1ae646595951ecd4cdebaffd43799014078d59a78e1209ba +CT= ecf6cac8ddadc75bb8a269545ee19c88c70bd53f3852938fdab39583da9a85e1 +PT= 741a7bc0e173d1738a468460f2cd2fef0e48dcabc86c1602c0f97f40aae5f41d +TEST= 164 +KEY= 20b8641df78e9d3c248dd8a5359d6a72452b85a1bc852da8 +IV= 1ad974a55538545a50988e5c74c2f448aeeb15419fde8a781dee68aa62cc236d +CT= 741a7bc0e173d1738a468460f2cd2fef0e48dcabc86c1602c0f97f40aae5f41d +PT= b27c86243e09510bbc5f83d10b371b1f6121aa56e12f2eb7abe2caa67a89f6a7 +TEST= 165 +KEY= 9ce7e7ccfcb9862345ac72f3d4b244c5eec94f07c60cdb0f +IV= 9f55ad8f16be65491ff6be6c629d9b153ac056b1dae680ace63f8fffcf19132b +CT= b27c86243e09510bbc5f83d10b371b1f6121aa56e12f2eb7abe2caa67a89f6a7 +PT= 4c3f9e9e7039d8135955c7f19576cdab402cc500854f41693b5c09bb25d4d6a7 +TEST= 166 +KEY= c5b2203d69cf4b880580b7f351fd05acd59546bce3d80da8 +IV= f628842023ab9c6fc38f6aeca89e49aa552d746c6fa7fd8509ee75ecf4300797 +CT= 4c3f9e9e7039d8135955c7f19576cdab402cc500854f41693b5c09bb25d4d6a7 +PT= 08c835377a1c1c6cfff748d9fb98e54a3f49ec284cbba1764e6ae1c954b235e4 +TEST= 167 +KEY= 3a4568e49257aec23ac95bdb1d46a4da9bffa775b76a384c +IV= 6dbf77f173d3607f2119b40cb504f110c1361e3176acccebf684b4238490005f +CT= 08c835377a1c1c6cfff748d9fb98e54a3f49ec284cbba1764e6ae1c954b235e4 +PT= 57393579cf048bcf89e261f9d6a8b84d6320fb95e455b78aa10c87157ac57f86 +TEST= 168 +KEY= b3a7091d44ff168f59e9a04ef91313503af32060cdaf47ca +IV= 9a77e923393f8e19f3517483a531be2be4202b6e0dd10120a1816f516c9d8931 +CT= 57393579cf048bcf89e261f9d6a8b84d6320fb95e455b78aa10c87157ac57f86 +PT= 0cf6fddcfcd6b3380c567292e2c5ea8fbab7eccbff5c120fd76078015493290f +TEST= 169 +KEY= bff17b8fa63afc00e35e4c85064f015fed935861993c6ec5 +IV= 738dd8c4e95b71f0ca34c1b9b75801a33c08ba58601ee7534b0cfd63068f136a +CT= 0cf6fddcfcd6b3380c567292e2c5ea8fbab7eccbff5c120fd76078015493290f +PT= c84e3e55c97262eacfc9fde0c875d2b03f641633c1ef3065586185a791c731b7 +TEST= 170 +KEY= 7038866f6e4f2eb0dc3a5ab6c7a0313ab5f2ddc608fb5f72 +IV= e95b5b27dfedbf1e501db9a51bb2e13ba49e1adc54187ea9236b3c02c71f826a +CT= c84e3e55c97262eacfc9fde0c875d2b03f641633c1ef3065586185a791c731b7 +PT= 880450728e8a5bdead77a083689c22be9cb083b4d7e21215dff270cef4fbb10b +TEST= 171 +KEY= dd4f26ec06d30c0e408ad9021042232f6a00ad08fc00ee79 +IV= 76e77fa860ad26184d8f2698071d069c00b1b737095f7833955ae1c976e3894d +CT= 880450728e8a5bdead77a083689c22be9cb083b4d7e21215dff270cef4fbb10b +PT= 79b989c6f8044c901ba0d92dccbc798a49613a8f8b429ee77805518d7374e7d2 +TEST= 172 +KEY= c6efffc1ca6f758409ebe38d9b00bdc81205fc858f7409ab +IV= dcb31d4d2e07af3590dc7e1f30abc9a31582e5a763d0fdd0a1b588f85f02262b +CT= 79b989c6f8044c901ba0d92dccbc798a49613a8f8b429ee77805518d7374e7d2 +PT= 4ac6db7e37eb8b9bca6db20c700c77e43c2ff75efc82a03c556356cdd1090fa5 +TEST= 173 +KEY= 0c824dcdba63026035c414d367821df44766aa485e7d060e +IV= 5bb8b33833d682dd27d538f77d32efe1258dc7fd36bbc02c4986e1171913e987 +CT= 4ac6db7e37eb8b9bca6db20c700c77e43c2ff75efc82a03c556356cdd1090fa5 +PT= 5247ffa95271c99ea0ba5324e4c3d240099c8bf0d50af85017470a9ec67be3c3 +TEST= 174 +KEY= ac381ee95ea0d0203c589f23b288e5a45021a0d69806e5cd +IV= 2d0f4e99b2cb22f7c092a7c9fe973f2a8ec2f43088ec1397fa2dd0019ee7275b +CT= 5247ffa95271c99ea0ba5324e4c3d240099c8bf0d50af85017470a9ec67be3c3 +PT= e1e6b2c013698b7a178761d6f6449c52be889cb223b39d5aebbbce78be1bf0bb +TEST= 175 +KEY= bbbf7f3fa8e44c7282d00391913b78febb9a6eae261d1576 +IV= 48a1de293029024bd4c3bb7811a4b6bb4811e9106475f39e2a350cf389720d71 +CT= e1e6b2c013698b7a178761d6f6449c52be889cb223b39d5aebbbce78be1bf0bb +PT= 64ca93c66ea4a0328b1550664e0ffeb865ca8b2f589a395753546afa048d163a +TEST= 176 +KEY= 30aa2f59e6ebb2cae71a88bec9a141a9e8ce04542290034c +IV= f62d341f4a46f5bddc8f5245835fcedcec5f35e2335bc88ca134ca040bcbf8dd +CT= 64ca93c66ea4a0328b1550664e0ffeb865ca8b2f589a395753546afa048d163a +PT= 03c553fa70e0233910ee0296fa86905289c7868e1968dc40112fe55a128e6dfa +TEST= 177 +KEY= 20442dcf1c6d22986edd0e30d0c99de9f9e1e10e301e6eb6 +IV= 5558922255e6d530e98741d1b00fbfbbef5aa0893b6d8e3578d7cbae853e9aa7 +CT= 03c553fa70e0233910ee0296fa86905289c7868e1968dc40112fe55a128e6dfa +PT= 2bf2febdcd4cb4aedf808898ebc79b8e80ffc015027a328c59edfaaa153ac83e +TEST= 178 +KEY= ffc4a557f7aab916ee22ce25d2b3af65a00c1ba42524a688 +IV= 37d41bd18044d72b1621d87e6faf67edcefa78387717f3fa8db6b4b838a36e78 +CT= 2bf2febdcd4cb4aedf808898ebc79b8e80ffc015027a328c59edfaaa153ac83e +PT= e76e6bfa2a377ad14d913c686e04ee36348cb550e49519b9a532b5ab9cc0c8a4 +TEST= 179 +KEY= b255993f99ae5720daae7b753626b6dc053eae0fb9e46e2c +IV= 71c7df17f59a02f99b168bc6d52439833ca3ce556da540a55601e613667a05aa +CT= e76e6bfa2a377ad14d913c686e04ee36348cb550e49519b9a532b5ab9cc0c8a4 +PT= f7f04adb067a27784df513e65ce8aefa571c714a175334b5cf94bfdab2e9d0fb +TEST= 180 +KEY= ffa08ad9c546f9da8db20a3f21758269caaa11d50b0dbed7 +IV= f99671a66b135fb4241ee95e8ab1ce2802179a118a2df45338390847ebb5b09b +CT= f7f04adb067a27784df513e65ce8aefa571c714a175334b5cf94bfdab2e9d0fb +PT= d1cae6c821acf37eb1c83f740a8b68df42dca38fc313de8046947b854ebd70df +TEST= 181 +KEY= 4e68b5adcfcd9105cf6ea9b0e2665ce98c3e6a5045b0ce08 +IV= d15c1edcfdb1d33348fb55955d79e517df824e8d390573e48486e46a74228c9c +CT= d1cae6c821acf37eb1c83f740a8b68df42dca38fc313de8046947b854ebd70df +PT= 7f974035f7dc0fa0a7fc05b3767a54057603dd1b4e5c86d34ebe0c97f19e7f7f +TEST= 182 +KEY= e994b01eb9b7c500b96d74abac3ada3ac28066c7b42eb177 +IV= 2ffb7366465531cc9b55473b5ff83450e666decfde3f79e28b0cadcb6517e4b4 +CT= 7f974035f7dc0fa0a7fc05b3767a54057603dd1b4e5c86d34ebe0c97f19e7f7f +PT= c04fb57aec756679bd096cbb307d22551f1ca31575cf6dee5a7cec8a5e72833d +TEST= 183 +KEY= 549ddca589cae755a671d7bed9f5b7d498fc8a4dea5c324a +IV= 33dc902a09956405f946e88f947b6c89489c6b1fcfdf5a9e710cfe7dc4f6ffe6 +CT= c04fb57aec756679bd096cbb307d22551f1ca31575cf6dee5a7cec8a5e72833d +PT= c7932b7a842020cd196aa28a447c2d4b930e7fe69378cab25f5c7e70ff1c5e71 +TEST= 184 +KEY= 4df77e2fcdb6ca1e357fa8584a8d7d66c7a0f43d15406c3b +IV= b18b365b850709667ee01f3939ebbb404b1995ffc18f0479851e4201e8350a58 +CT= c7932b7a842020cd196aa28a447c2d4b930e7fe69378cab25f5c7e70ff1c5e71 +PT= 77a1ea38b5515be7ac947c5faf7d56ceee9748fb96d35c1a233a4dda6e797092 +TEST= 185 +KEY= e163027062cb9cd0dbe8e0a3dc5e217ce49ab9e77b391ca9 +IV= e4995d9895b1fda7efcc0f22b315a88535c2d00bdc344a0fdfecc7f24c58e98b +CT= 77a1ea38b5515be7ac947c5faf7d56ceee9748fb96d35c1a233a4dda6e797092 +PT= d75339485031d05ef4c363066e306b7fbaa535815a746b8c4e0a8b5f94ddb126 +TEST= 186 +KEY= 15a061760cfbf7af614dd522862a4af0aa9032b8efe4ad8f +IV= 3e19b58a58d2c4cb786ddf32af8f11e275f36d155cbba9b4896a67e85599fb41 +CT= d75339485031d05ef4c363066e306b7fbaa535815a746b8c4e0a8b5f94ddb126 +PT= 3ccc54c23040e9c929ee1ef26cd7b805c0c2d6190fab087f56b28763c1fabb86 +TEST= 187 +KEY= 3c4e7f84602c4faaa18f033b8981428ffc22b5db2e1e1609 +IV= f901ce4ffc42158540078708d786a229027c5cc2b7c01475cfd18f6f722ae2a0 +CT= 3ccc54c23040e9c929ee1ef26cd7b805c0c2d6190fab087f56b28763c1fabb86 +PT= 10ea51b11d199e637423d5a111a11bf3b92fe55562816d22b2bfa26beaa6ff1b +TEST= 188 +KEY= 486daa25718d545918a0e66eeb002fad4e9d17b0c4b8e912 +IV= 414de2befc401f734ba9c4a2911571b33f50d0119627c5d180b74c722c4f61e2 +CT= 10ea51b11d199e637423d5a111a11bf3b92fe55562816d22b2bfa26beaa6ff1b +PT= 5300d962a592bf791a4a8f158a34dbabd6796b190e36d4eb580e809d4f72af74 +TEST= 189 +KEY= 52272530fbb98ff2ced98d77e536fb461693972d8bca4666 +IV= 7c654354cc08779d95fcb4401798cea2626d487f057297604b3b0c26a2ec239c +CT= 5300d962a592bf791a4a8f158a34dbabd6796b190e36d4eb580e809d4f72af74 +PT= 05b9ace1c4d59ce6993d8af640b631f76c3447b46a210a711127f782a2b815c8 +TEST= 190 +KEY= cb1aafc6bb0fbe05a2edcac38f17f13707b460af297253ae +IV= ddaefb94b9f359b029f8ad025805ed0bac022a11cdeed675a5400e79367b72d8 +CT= 05b9ace1c4d59ce6993d8af640b631f76c3447b46a210a711127f782a2b815c8 +PT= 1a006e25aea1380baeb6b73af4d8d72aa2f7f96c4999b0d15eb18bd09d385387 +TEST= 191 +KEY= 65ac18fc4fd7692f001a33afc68e41e65905eb7fb44a0029 +IV= ad361c2df160154009f7269aa4b67da12b0e50583104ee10ff3138c02cff1cfa +CT= 1a006e25aea1380baeb6b73af4d8d72aa2f7f96c4999b0d15eb18bd09d385387 +PT= 20063e30d6cfe7dfc8b7e34e58bd330cf35ceedf59f71e5022dfbbc6e682aeb3 +TEST= 192 +KEY= ad1bfbb2176a5a23f346dd709f795fb67bda50b952c8ae9a +IV= 7fa8f298bbb0d83885565ff8e8aa8bfc2d6def74697c926eafaec89604585eca +CT= 20063e30d6cfe7dfc8b7e34e58bd330cf35ceedf59f71e5022dfbbc6e682aeb3 +PT= 46a1b47dddc22bb66d905f6c0364ab5120314b1416427a5759e5a5e20a819719 +TEST= 193 +KEY= c08ba4de140ef172d3779664893b25e1223ff55b58493983 +IV= ffd283f3c72c9e9397fc07b62d70db7bfab7d13ef550fd3034bbd7129a244c6b +CT= 46a1b47dddc22bb66d905f6c0364ab5120314b1416427a5759e5a5e20a819719 +PT= b7f5e7b732eb895af3a53aab1ab699e8619495001985adecf4df046a0bd61180 +TEST= 194 +KEY= 332e9e750eb8689ab2e3036490be880dd6e0f131539f2803 +IV= 54adef93686264b6417044668c9677b609acc025f65e4e81d36f5bc19f1072da +CT= b7f5e7b732eb895af3a53aab1ab699e8619495001985adecf4df046a0bd61180 +PT= a64ba596ce79af240e725b48ccb404b75f5ba4f1096872ec00e1cc5c226723e1 +TEST= 195 +KEY= 3d5cc53dc20c6c2dedb8a79599d6fae1d6013d6d71f80be2 +IV= 7e7dd0e0ff5cdde71f137e31148866096c06d5ba10867f92dae0480b0efe6725 +CT= a64ba596ce79af240e725b48ccb404b75f5ba4f1096872ec00e1cc5c226723e1 +PT= d5fd13955a5de05bb0dc1f57c980aa32835a4066abd9439d8788776593611b11 +TEST= 196 +KEY= 8d80da6a0b8cc61f6ee2e7f3320fb97c51894a08e29910f3 +IV= 0ac087174ee7b18d47a11fda786e37a4e520d1c0a867be75da4cf5c4b03cc380 +CT= d5fd13955a5de05bb0dc1f57c980aa32835a4066abd9439d8788776593611b11 +PT= e125fd98509466ea8590e48bda30dd8580a2514ff3e71cdad675097a97e96f1e +TEST= 197 +KEY= 08103ee1d1bc1b9aee40b6bcc1e8a5a687fc437275707fed +IV= 223fd80a89a41a5a2f65f63cd8e99c04cf5e7136fbec547c88d33fc19410b2c9 +CT= e125fd98509466ea8590e48bda30dd8580a2514ff3e71cdad675097a97e96f1e +PT= 4292e2fb13402c5e5f21df1d1e9903a230adcaa9f0cfd37056f7e3fcd12786b1 +TEST= 198 +KEY= 5731e1fccf251838deed7c15312776d6d10ba08ea457f95c +IV= 8e20ec9430bb034aebb5b4cbfc797f0b07fd71aa422a0c74f0c575924fc7d3c4 +CT= 4292e2fb13402c5e5f21df1d1e9903a230adcaa9f0cfd37056f7e3fcd12786b1 +PT= 51635904d7c5521ca77e7a4eca30a3e9d709433e7b38eb155b034361c6d0b04c +TEST= 199 +KEY= f04f9bb20515bbd109e43f2b4a1f9dc38a08e3ef62874910 +IV= 3baab2829a13a272e4e772e124bcebcbfec7b2e6af106b62f10bf2e6520a52a5 +CT= 51635904d7c5521ca77e7a4eca30a3e9d709433e7b38eb155b034361c6d0b04c +PT= 2047ac88330b87267b185ca83fd058d633f1db3ec3c63022a63bd4b172e81bcf +TEST= 200 +KEY= 8b57c71a3ac5e3073a15e41589d9ade12c33375e106f52df +IV= 929423a4519dde096824c6f143e46842aea2072b5afe4eda32f27ff8a1e9d789 +CT= 2047ac88330b87267b185ca83fd058d633f1db3ec3c63022a63bd4b172e81bcf +PT= 951dec0544ed36764b1ab614054dd1c894207b96ec31b5fbe7b995e1b6f03da8 +TEST= 201 +KEY= c04d710e3f8832cfae359f8365e8181acb8aa2bfa69f6f77 +IV= 9ffb5b30efba0237e8d507a967f1429cd9c5e4af9668fb81f1266ede672e1770 +CT= 951dec0544ed36764b1ab614054dd1c894207b96ec31b5fbe7b995e1b6f03da8 +PT= fd85a9388019d0e45db91b8a7d0d9436961a8946d00ebb08ac3d8cf2ee0c2f3e +TEST= 202 +KEY= 9df46a844285a6f9382f16c5b5e6a31267b72e4d48934049 +IV= 79b70fd8933eaacd2661858246f8916458dad251d6fa0998c285720c22919add +CT= fd85a9388019d0e45db91b8a7d0d9436961a8946d00ebb08ac3d8cf2ee0c2f3e +PT= ca3b6b4251ea38b8b9a0f01e056af2d6978b8935a35b15028b1986a5bef838b5 +TEST= 203 +KEY= 24549a9a47ef542fafa49ff016bdb610ecaea8e8f66b78fc +IV= b584f8bcf2fef4408f2d1be31656f1664b321df19b5f4ca60592866dff5fa625 +CT= ca3b6b4251ea38b8b9a0f01e056af2d6978b8935a35b15028b1986a5bef838b5 +PT= 584a47cbce2f7bcd1094f0d3c52e1210391a4935ce190ad7354404e9515c36d2 +TEST= 204 +KEY= 34c06a4982c1463f96bed6c5d8a4bcc7d9eaac01a7374e2e +IV= 536eeeb73c8316108f91e8a7bbdc1b19339fe9b6da79926403e8b5cf945f78c6 +CT= 584a47cbce2f7bcd1094f0d3c52e1210391a4935ce190ad7354404e9515c36d2 +PT= 2d76ce8e192bb1494f72ec2bc25d04136fc744dde3eae8829af67a76221b0928 +TEST= 205 +KEY= 7bb28662409c422cf97992183b4e5445431cd677852c4706 +IV= 87c7d1349738d17174e2bdfc43c5323636718f313a42dd387d7df76f5904b86f +CT= 2d76ce8e192bb1494f72ec2bc25d04136fc744dde3eae8829af67a76221b0928 +PT= 24fc7402db584d2de2c03f44fcedc2e7ad6f49a77cf7e3e733c7a226ed73a05d +TEST= 206 +KEY= 9972b926bc7180cb5416dbbf47b9b7a270db7451685fe75b +IV= 154bb4b0799c441d583269bfdc04371315670c4178216102c3ec086460cd371e +CT= 24fc7402db584d2de2c03f44fcedc2e7ad6f49a77cf7e3e733c7a226ed73a05d +PT= 226138e9695726a5fbdc997bb592d79afc9b3de4fb887ed0f1dfbae95ffde9f1 +TEST= 207 +KEY= 62ae205d09e35751a88de65bbc31c9728104ceb837a20eaa +IV= 509b2a93aa4d7d1f919e6182875440ed5a7508bde3b7273c6269e87efff10cf1 +CT= 226138e9695726a5fbdc997bb592d79afc9b3de4fb887ed0f1dfbae95ffde9f1 +PT= e3abadc93d016549a26ee93b00f118183f5b8d8649fd2b7e640b4efb5b096e7d +TEST= 208 +KEY= c0c0c96609124f4997d66bddf5cce20ce50f80436cab60d7 +IV= 3b365f788c614acaeba4136c0b8bf7e104c176a771dc3a8e2a6438a4f29a99bc +CT= e3abadc93d016549a26ee93b00f118183f5b8d8649fd2b7e640b4efb5b096e7d +PT= d37bb48357dc0b38bd032bf80376543a57979aa8817cc9950af7efbe31b40462 +TEST= 209 +KEY= 7dc3e29e0a641b73c041f17574b02b99eff86ffd5d1f64b5 +IV= 2fe66640e59fef2683a695d85477e958b70449205879be32a4b88eff4dcfcf55 +CT= d37bb48357dc0b38bd032bf80376543a57979aa8817cc9950af7efbe31b40462 +PT= 4ad9c53c76aabf35ab6041603ddfebc4bf365aa83e1398d9439fe66777780554 +TEST= 210 +KEY= d6a3a3fe37bbf0b77f77abdd4aa3b340ac67899a2a6761e1 +IV= 3150602e46b59678e149faad1ae6e80b6d8d64d3e5925094a496904cb6cb79e5 +CT= 4ad9c53c76aabf35ab6041603ddfebc4bf365aa83e1398d9439fe66777780554 +PT= 88afa94a66f3da4d12557c3b845f69911c1e3eed6f42c81b8162b262abea7a5e +TEST= 211 +KEY= c4f6dfc5b3e499266369953025e17b5b2d053bf8818d1bbf +IV= fc45c9b6a2ced95eec854985a4a9f8b053f2024f8b142e7fd965bdf2dbe2aba9 +CT= 88afa94a66f3da4d12557c3b845f69911c1e3eed6f42c81b8162b262abea7a5e +PT= c9f405a6103fbd0bc61661fafb80f03fa07c1d7021fc136a69270fc1142b967b +TEST= 212 +KEY= 02e0be3f48646919c3158840041d68314422343995a68dc4 +IV= 7c7859de32de5aefce1ea421fd5e6b4cfed7c5beb32a4e471dab9c0b6aaf4502 +CT= c9f405a6103fbd0bc61661fafb80f03fa07c1d7021fc136a69270fc1142b967b +PT= 0cfa7b9bc64ddb4785cc37e3e542239b61b49dc2ae2109b8a723fe8e95f9bae8 +TEST= 213 +KEY= 872c89dcad264a82a2a11582aa3c6189e301cab7005f372c +IV= ce294bc0416673b9ef0a1f6e166eaaaef33c39b5b894a4ea36715c46e205fc81 +CT= 0cfa7b9bc64ddb4785cc37e3e542239b61b49dc2ae2109b8a723fe8e95f9bae8 +PT= dd48dcc675f31b430db689281881931487ad01305fd32100f7b5ed3135d4c727 +TEST= 214 +KEY= 8a9a00f4b5a7d996250c14b2f5ef408914b42786358bf00b +IV= 63e573a542abbff05af373d18695e2b08398d2599364f6b10f83d43fa5723ee9 +CT= dd48dcc675f31b430db689281881931487ad01305fd32100f7b5ed3135d4c727 +PT= 538b213e8a7f215f430c31db953db10fb6580ef1d167c38b07544cee3dce83b3 +TEST= 215 +KEY= c996312f209a689993541a432488830213e06b68084573b8 +IV= 3b6fe02d8f608b30fbe4b9bd223190d83a0d8d632b03f4ebbab53c5ad541e511 +CT= 538b213e8a7f215f430c31db953db10fb6580ef1d167c38b07544cee3dce83b3 +PT= 979304581d0af230fc60f4bfc7c17766cfd797ac5f5adf4a2630ea8d0e44a8a2 +TEST= 216 +KEY= 35f6c590e75b1fff5c838def7bd25c4835d081e50601db1a +IV= 5e7d6f02422631ff47bb7371ff23db1e73ea929b365a99f3f0b6ac01cfce876a +CT= 979304581d0af230fc60f4bfc7c17766cfd797ac5f5adf4a2630ea8d0e44a8a2 +PT= 3a4b02cfe50ae27d97f1bc12aa84c6aef04fb844679968e04bbef216baf8f2f4 +TEST= 217 +KEY= a20779824ddfd951accc35ab1c4b34a87e6e73f3bcf929ee +IV= a4fbd51ac46ef24fba95848fe19a09b01cd8c296636223cd4c6ebddbc201a118 +CT= 3a4b02cfe50ae27d97f1bc12aa84c6aef04fb844679968e04bbef216baf8f2f4 +PT= e08b599df16bdbd8fd074706855ba5af64b56643e82802edc87e7f99dd152454 +TEST= 218 +KEY= 5f003e84c8847cfec87953e8f4633645b6100c6a61ec0dba +IV= 465b639f9f965a86f8db548e746d41972f9d728e72d58c5492e24d54dc5872c3 +CT= e08b599df16bdbd8fd074706855ba5af64b56643e82802edc87e7f99dd152454 +PT= ae077ec41d7d53385aee4a77ea9d00426eccbee23757a33699872843307beb41 +TEST= 219 +KEY= 05ee74f322197cbca6b5ed0ac33495732f9724295197e6fb +IV= b148b552e57acb1cf831ee08d5365e7587d8a75e7e51ddd3d8e49dc8743ef16f +CT= ae077ec41d7d53385aee4a77ea9d00426eccbee23757a33699872843307beb41 +PT= b50b116e4c9150854364dd260d99914d9ea143e87b60fc8acaa8b174798165a4 +TEST= 220 +KEY= 468aa9d52f80edf13814aee2b85469f9e53f955d2816835f +IV= da5076bc2cc83dbc31825ceb334fa7980132c8e86f965c39c0d05851b8d4d8ec +CT= b50b116e4c9150854364dd260d99914d9ea143e87b60fc8acaa8b174798165a4 +PT= cafcf0ba04d4cdb4a4a065365ddceeb3861625d46d1e16464e568572b5dd315e +TEST= 221 +KEY= e22acce3725c0342be028b36d54a7fbfab69102f9dcbb201 +IV= 9847a016f65969128d8101969836386e2324e32dfb67b04637ebe3d89ad12839 +CT= cafcf0ba04d4cdb4a4a065365ddceeb3861625d46d1e16464e568572b5dd315e +PT= b5ec2009221bc1fbe58767964e144414e174f091e121b57bd2cd247e08370b3d +TEST= 222 +KEY= 07adab753c4847565f767ba7346bcac479a4345195fcb93c +IV= 333dfc9ab006a86aa89bfde714a04d5398e835b783cb0d7e7e1c0e5627174618 +CT= b5ec2009221bc1fbe58767964e144414e174f091e121b57bd2cd247e08370b3d +PT= 9bdc3dc85d891c39899810d89dff11d390616db32e0fd74e098fc1fe65e7803b +TEST= 223 +KEY= 8e35bbada1b75685cf1716141a641d8a702bf5aff01b3907 +IV= 711f848a5ef3abc9c303145c02db945b169d9c282cf2ef88ccef56cd3deadce4 +CT= 9bdc3dc85d891c39899810d89dff11d390616db32e0fd74e098fc1fe65e7803b +PT= fc5800072d146cb41a5fbf6f71d930945fddb737844e2b7a64b186d86e7879b2 +TEST= 224 +KEY= 946a04c2d06e661190caa1239e2a36f0149a73779e6340b5 +IV= 46f5b51fb5f8f02ae505cc2adf18dcc81a860bc0c9538bf6586856de1ee7fea0 +CT= fc5800072d146cb41a5fbf6f71d930945fddb737844e2b7a64b186d86e7879b2 +PT= 47477bfeb13c7ae16bfe5ea08c4aebb9b789dbbe7b8d5005ca7b9d0acd428393 +TEST= 225 +KEY= ff945a625c248da827437a9de5a766f5dee1ee7d5321c326 +IV= 7cd3c74dc4b1d0cdc02bd6acc2a13085998033f080cc1905949cf0dbd4d3e62a +CT= 47477bfeb13c7ae16bfe5ea08c4aebb9b789dbbe7b8d5005ca7b9d0acd428393 +PT= 7761bfbb2d535d64a77bc9088d2d3edc4551491bc9e875fff99054600a9c516d +TEST= 226 +KEY= 58ef936ad109b374621233862c4f130a2771ba1d59bd924b +IV= 9fca1dcabc74684cb18f6decf12c788347adad941b577430cdb2156125bd0cc8 +CT= 7761bfbb2d535d64a77bc9088d2d3edc4551491bc9e875fff99054600a9c516d +PT= 1fa30832355c9c6a29689573a8eba47ec3740231ac63174efa70aff69abcb0fd +TEST= 227 +KEY= 7187061979e2170aa16631b7802c0444dd0115ebc30122b6 +IV= c58339790dc918df3c269c0443052367de231dd77e61b452935a4a22f28a98c7 +CT= 1fa30832355c9c6a29689573a8eba47ec3740231ac63174efa70aff69abcb0fd +PT= 3107e2ed51b6904b80063831842fdb7188cfbcc413e085f02e79475439cd3322 +TEST= 228 +KEY= f1813e28fdcdcc7b29a98d7393cc81b4f37852bffacc1194 +IV= dc708e278c24e0d29fa5fc4ab8a2d69fe27863ea643783d9bc3dbaa051581c2a +CT= 3107e2ed51b6904b80063831842fdb7188cfbcc413e085f02e79475439cd3322 +PT= 3812793ca52491a0444a13015955bd54782748712deae05c46b4a96b98184346 +TEST= 229 +KEY= b5cb2d29a498712f518ec502be2661e8b5ccfbd462d452d2 +IV= 5a3c00dcf8802cdaee805b8942ca8f31415aaa78ca70e4246192de2266f5862e +CT= 3812793ca52491a0444a13015955bd54782748712deae05c46b4a96b98184346 +PT= fc4e67f861edc6c5d522ea7a0803bda604e9a220cae3b142c9cae730982b12ae +TEST= 230 +KEY= 60e9c753ac9bcc895567672274c5d0aa7c061ce4faff407c +IV= bfc3246b012ed4e7f162b19451a566ef4ae20ce2de65b562e87b9bba539a6c8c +CT= fc4e67f861edc6c5d522ea7a0803bda604e9a220cae3b142c9cae730982b12ae +PT= d6142eccc87ff488a22624ef1865e3f2902dfde694a3e8f63965bdade93f241d +TEST= 231 +KEY= c2cfe3bcb4fe2f7bc54a9ac4e066385c4563a14913c06461 +IV= cca666244e2c7109f9eb979a1c74e4105b17bd950d915d707766ad95bef7bb06 +CT= d6142eccc87ff488a22624ef1865e3f2902dfde694a3e8f63965bdade93f241d +PT= a1531d622c8d2f2654b6ea4e787db263242e0fdcc6a90f1cf0f6abfebbcf8272 +TEST= 232 +KEY= 967909f2cc839d18e164951826cf3740b5950ab7a80fe613 +IV= 64f9b953139b07faadb50de106095dbd6b0675c6ea053b0344ccbe09c015a353 +CT= a1531d622c8d2f2654b6ea4e787db263242e0fdcc6a90f1cf0f6abfebbcf8272 +PT= 2fb05c553e4f1de95b65af83080177f2d07c371419f3b2dae33d61b1418c0241 +TEST= 233 +KEY= cd1ca671c482eaea3118a20c3f3c859a56a86b06e983e452 +IV= 8f92d42d808306acb581743f3ac40d7036fa5d1db74f428e8c03bd5442f711d1 +CT= 2fb05c553e4f1de95b65af83080177f2d07c371419f3b2dae33d61b1418c0241 +PT= 7cfe62224f9a03086ffda2cb87f90c3bc8d80c36aee439ceb7da87a5535c6f88 +TEST= 234 +KEY= a2e104ba437be6d1f9c0ae3a91d8bc54e172eca3badf8bda +IV= 6515c95f572a747d8bce012305f0e2d5c0106294496826d4467f247a8e4be701 +CT= 7cfe62224f9a03086ffda2cb87f90c3bc8d80c36aee439ceb7da87a5535c6f88 +PT= ed65a8f311cac0fcf0ef2e5c5feaa708d971f19d6ae8ba7992b4ebcb70cc2032 +TEST= 235 +KEY= 520e2ae61c9141d920b15fa7fb30062d73c60768ca13abe8 +IV= 80778d566eb9d44be252fc9d6a78354f8c1b454826ffc3e8389ba2612ea9ec54 +CT= ed65a8f311cac0fcf0ef2e5c5feaa708d971f19d6ae8ba7992b4ebcb70cc2032 +PT= 4bdd7c4cd22d4a4a8dffe54017578176fd6d438f6708fe545b6d21577fd657c9 +TEST= 236 +KEY= dff1cfa60bc6c0afdddc1c289c38f87928ab263fb5c5fc21 +IV= 2cbe6f4fb4667b386285d27414d449ff4b241d5e74f88f9ee968d69a091723c1 +CT= 4bdd7c4cd22d4a4a8dffe54017578176fd6d438f6708fe545b6d21577fd657c9 +PT= a523da38c4fae6dc04ed81a80aff63dea9f63e0ecc818ba1fc1c3208e70f6d15 +TEST= 237 +KEY= db1c4e0e0139a371742a222650b973d8d4b7143752ca9134 +IV= 25b65edc689e9045b012836cf87561c9824c7c44bad2b012492d288d1ba21af4 +CT= a523da38c4fae6dc04ed81a80aff63dea9f63e0ecc818ba1fc1c3208e70f6d15 +PT= 2d9b7d004a838abf710744fa6d122f749b778640043967957a76ad3ab27877df +TEST= 238 +KEY= aa1b0af46c2b8c05ef5da4665480144daec1b90de0b2e6eb +IV= 64bb374e0b490af7fc6f4a900131a242e6b00ee19f55c69dcf02d7388729f107 +CT= 2d9b7d004a838abf710744fa6d122f749b778640043967957a76ad3ab27877df +PT= 570b4251ff6a513ccd4c7b8c63495b284ecc138987929e1f9e2c4b3002f31a45 +TEST= 239 +KEY= 675771780f62d72da191b7efd3128a5230edf23de241fcae +IV= 5208a785fba726f31d4d4273c7dcc8c333413d631ab611e10a560959099456e5 +CT= 570b4251ff6a513ccd4c7b8c63495b284ecc138987929e1f9e2c4b3002f31a45 +PT= c8989322be73b8d226cb0b3c13facc987db5f39b39658713930032fbe8a9704a +TEST= 240 +KEY= 419c7a441c981bb5dc244474ea770d41a3edc0c60ae88ce4 +IV= b4cc193699a4319ac098a1583f8d582b90fa50174a8ef211d5243ad011061e03 +CT= c8989322be73b8d226cb0b3c13facc987db5f39b39658713930032fbe8a9704a +PT= f75fceb964cc743482c3a29bac75a54346f7fb3fd163842abb41f1241f06c116 +TEST= 241 +KEY= c35fd8dfb0edbef69ad3bf4b3b14896b18ac31e215ee4df2 +IV= b083a401f957479e296d496b37212720511c637ce194881e7cb3f1d38815d7d7 +CT= f75fceb964cc743482c3a29bac75a54346f7fb3fd163842abb41f1241f06c116 +PT= d3c0a59164b974f4711ba3a3e30502893fb8241e173d262b35daef291180fb6b +TEST= 242 +KEY= b2447b7c53e8bc7fa56b9b552c29af402d76decb046eb699 +IV= 826b07641fef14f009d6e5a0371d70bf5d0dfc49d0362e1aa9b49ae0dac7117d +CT= d3c0a59164b974f4711ba3a3e30502893fb8241e173d262b35daef291180fb6b +PT= 538add45b2e0a9390a9f557e610f5f73acc865f7f77d70e5dbd675600e008980 +TEST= 243 +KEY= b8db2e0232e7e30c09a3fea2db54dfa5f6a0abab0a6e3f19 +IV= 7dbdf37540103b77539d79e95bb53874625669404a24ab709f9f68f27692711c +CT= 538add45b2e0a9390a9f557e610f5f73acc865f7f77d70e5dbd675600e008980 +PT= 8e74609bda4338386e27912ba881dcfda87461a09713016e848465d10ee24c28 +TEST= 244 +KEY= d6fcbf299a663ff1a1d79f024c47decb7224ce7a048c7331 +IV= fbe3df48b934486b593b61fbbe7ddd0008ca807a6f77b50994c86583da3e1ee1 +CT= 8e74609bda4338386e27912ba881dcfda87461a09713016e848465d10ee24c28 +PT= b04b7df3c11515183b71f66dc35642f6b89f7cdf8d4621062eaa06d01e0d2879 +TEST= 245 +KEY= ed8d494459307d071948e3ddc101ffcd5c8ec8aa1a815b48 +IV= 46eda276a53dc297c0a7e0d4d95112491c8aacf7fd8684ba73ac5fa7e0b6a159 +CT= b04b7df3c11515183b71f66dc35642f6b89f7cdf8d4621062eaa06d01e0d2879 +PT= 9e9260ee72bcd710255c4a3b3d4749a0f37784d385bb08d70f72d42fa3225fb2 +TEST= 246 +KEY= c8d1037f647734a7ea3f670e44baf71a53fc1c85b9a304fa +IV= a24deb9f22420531551fd62e80e3f8afb6769211bc3c76cb778b2ad988f1ea7b +CT= 9e9260ee72bcd710255c4a3b3d4749a0f37784d385bb08d70f72d42fa3225fb2 +PT= 367020c4abb4ad628aff4c5baaa8aec369e7f11c17141b75c30ff882fe456a06 +TEST= 247 +KEY= 422e4f24cedf9a6483d8961253aeec6f90f3e40747e66efc +IV= 559c92ea248036cdaee86624b9331bb08c68b9308d8decc3129bdde0fab2241c +CT= 367020c4abb4ad628aff4c5baaa8aec369e7f11c17141b75c30ff882fe456a06 +PT= e0de338202b9d4ab40da0475bac62a7148f9af27342d1f8e035dc9e209774494 +TEST= 248 +KEY= 02f44b517419b015cb2139356783f3e193ae2de54e912a68 +IV= 7035f88f8d9a4e3ed8651bc4203276e032802f9365eeb101141b0996d1f0be81 +CT= e0de338202b9d4ab40da0475bac62a7148f9af27342d1f8e035dc9e209774494 +PT= 8c16bd902f1688ade0db8deddcc81c7483d34bff137406b24b298065d29e07b2 +TEST= 249 +KEY= e22fc6bca8d1ac6148f272ca74f7f553d887ad809c0f2dda +IV= 31721707c53aa407ae1233175b3db4ac9a4dc957caf2bcc1e02e18795eca8f9d +CT= 8c16bd902f1688ade0db8deddcc81c7483d34bff137406b24b298065d29e07b2 +PT= c8705e847d7e77d7f1b158e8c54827618fa916451cb04ecf20159ecd8dd2a525 +TEST= 250 +KEY= 139e9e546d998b00c75b648f6847bb9cf892334d11dd88ff +IV= 2a642cdc50c2ba92a979c87cdde1aeb51a90a03b2b6dbc4c6f2422471292d1b1 +CT= c8705e847d7e77d7f1b158e8c54827618fa916451cb04ecf20159ecd8dd2a525 +PT= d78bcb3effa400bda156ed8658cc9cd28e9e9ca3c39d8963c0059c68e3cc4a17 +TEST= 251 +KEY= b2c873d2355517d249c5f82cabda32ff3897af25f211c2e8 +IV= 677ed0b202f7a587edbf1ebdc7cf6b7305609ee664feb1be0700d99e8d4e7636 +CT= d78bcb3effa400bda156ed8658cc9cd28e9e9ca3c39d8963c0059c68e3cc4a17 +PT= c486ee920a09e29c42fc829c473f08ab3999d10fca186dfc020628cdc57fe719 +TEST= 252 +KEY= f034f14e726a1f79705c292361c25f033a9187e8376e25f1 +IV= 76b9a6fcc98db475edac8873dd8ced3a68a93e44d3428058f7e3eb7fa8b5134c +CT= c486ee920a09e29c42fc829c473f08ab3999d10fca186dfc020628cdc57fe719 +PT= ca39e97b5543ba3604efd150f29e54ba762177a0731de0730fdcd3c11761b7d9 +TEST= 253 +KEY= f4db201e80f44bc3067d5e8312dfbf70354d5429200f9228 +IV= c0de4feb86f3c8461d2541ca326c43c97572a968da2828492841bd0d8da8f649 +CT= ca39e97b5543ba3604efd150f29e54ba762177a0731de0730fdcd3c11761b7d9 +PT= 5be4031f5878de0fdb3da715dc5287bfdbb583a01b5125d3d3a08f9655f589c0 +TEST= 254 +KEY= 2fe6870b5ca6cc7cddc8dd23098e9aa3e6eddbbf75fa1be8 +IV= b71b889644320ea4304fded4a212b0e63bb476affe514e9ea10db25e3a7c7292 +CT= 5be4031f5878de0fdb3da715dc5287bfdbb583a01b5125d3d3a08f9655f589c0 +PT= 83b3130295c91baf63de7cb200abd6ae17939e9d106ffcfa0969944301449da1 +TEST= 255 +KEY= 4c38fbb95c0d1ad2ca5b43be19e16659ef844ffc74be8649 +IV= 3a93f1b387a5a0094dd39cd5e28facbcf88c0452453702d032f80879aba4a7a1 +CT= 83b3130295c91baf63de7cb200abd6ae17939e9d106ffcfa0969944301449da1 +PT= 7e25f91e2a48b4c09e49624cc1b9560d3b9d3659eb21a6b918ba425a501fe39e +TEST= 256 +KEY= d27199f59db44cdff1c675e7f2c0c0e0f73e0da624a165d7 +IV= 122deb3fe34643d6f98713e86248703277ec10235776dd1bd63b283128103328 +CT= 7e25f91e2a48b4c09e49624cc1b9560d3b9d3659eb21a6b918ba425a501fe39e +PT= e1ab686e12e6c5293cf3b02d3a04c884d7cba4c970885c57c3afd0364c43020e +TEST= 257 +KEY= ee8229d8a7b0845b260dd12e82489cb73491dd9068e267d9 +IV= 595c68b6969602b045c9424b47961cf4fcfd2c6b524de7d165b4454dc68c486f +CT= e1ab686e12e6c5293cf3b02d3a04c884d7cba4c970885c57c3afd0364c43020e +PT= 28add29c95f48315a576f2c9a3a89198684a9ba47d2197ce98c3148902b9a2e9 +TEST= 258 +KEY= 4bf4db11041815c34e474a8aff690b79ac52c9196a5bc530 +IV= 25472a16b72727e6291ee56aeaec823b2411f4ca49bfd30082ddf0c3c7a1068d +CT= 28add29c95f48315a576f2c9a3a89198684a9ba47d2197ce98c3148902b9a2e9 +PT= ae00be0631f994d5cc9390c0e4f7f306e4a859637cc8a0e0e4fd8b5db6ce894f +TEST= 259 +KEY= 87674bd1e0efe6c5aaef13e983a1ab9948af4244dc954c7f +IV= 7ec3eb17e569866716e59accb0d0f26ad4a9659b023cc18e405ecf1029a09cb8 +CT= ae00be0631f994d5cc9390c0e4f7f306e4a859637cc8a0e0e4fd8b5db6ce894f +PT= 769c4e4f9d9de6ac4c7dacde9b8bc36cf89940a0210f405dfab73ab1ebc52265 +TEST= 260 +KEY= cb1ae70f7b6425a952765349a2aeebc4b21878f537506e1a +IV= 49f1f281a9763d625b606603fedd6a5d124a2638d07b45261aa9561901ae65f3 +CT= 769c4e4f9d9de6ac4c7dacde9b8bc36cf89940a0210f405dfab73ab1ebc52265 +PT= 2f65b9249f1be9f395c584dd134b7c21d1148381b4280c10826f80da1901d82d +TEST= 261 +KEY= 5edf63d2682f59888362d0c81686e7d43077f82f2e51b637 +IV= d146ca57c0bb1bb0c1bf35caff517ac153872ab49e214bbad3cea3b3427760b9 +CT= 2f65b9249f1be9f395c584dd134b7c21d1148381b4280c10826f80da1901d82d +PT= 6265b8dc9f7a024ccd65771d08dae4333f7b9699c40792b5c6d4e97bbe0483d2 +TEST= 262 +KEY= 93ba14cf60f5bdbbbc194651d2817561f6a31154905535e5 +IV= 130f8a4a05fe54583faa23f3a158a6110ae86502ecf1097a2cf45d13ed8d009f +CT= 6265b8dc9f7a024ccd65771d08dae4333f7b9699c40792b5c6d4e97bbe0483d2 +PT= e3544e0250024d17f06cc10c04f2a7f6bf131f32b1583995eb4baa527311a8f6 +TEST= 263 +KEY= 63d6d5c364071a4d030a596363d94cf41de8bb06e3449d13 +IV= 04de0f2156af3830282512f464a3e02c1326423350d33fb142de5aa4f3aeb01c +CT= e3544e0250024d17f06cc10c04f2a7f6bf131f32b1583995eb4baa527311a8f6 +PT= c4452f77ae4ba1e3f43ad49f4abe6b9f3750d876a24c2837e1f4622f39ddd69b +TEST= 264 +KEY= 97ec015c2eb971d2345a8115c19564c3fc1cd929da994b88 +IV= d8f01593ca6359325d045bd46064ca52e93627333eff20046eb130610312cb9e +CT= c4452f77ae4ba1e3f43ad49f4abe6b9f3750d876a24c2837e1f4622f39ddd69b +PT= b513df97cbb5d6560825cd06df9e51a4823044cc03f77a3287536764a680ba34 +TEST= 265 +KEY= 9fc9cc5af1272076b66ac5d9c2621ef17b4fbe4d7c19f1bc +IV= 0f0d9a85193fd07cf6d519f07ae0b055107f1e9f8d4151d1b9c2524bb6f28f68 +CT= b513df97cbb5d6560825cd06df9e51a4823044cc03f77a3287536764a680ba34 +PT= 9eb42aba8e9d2f72abe4c14e09d2c6b5ef1327e5ced9138d71edf41f4578b1b9 +TEST= 266 +KEY= 342d0d14f8f5e6c35979e23c0cbb0d7c0aa24a5239614005 +IV= 5b35c258e13526ece7d75fe4b174aa7b2df4baf40e3d4474b5795e487eb57282 +CT= 9eb42aba8e9d2f72abe4c14e09d2c6b5ef1327e5ced9138d71edf41f4578b1b9 +PT= 9e957a7b2b4a00a6e8d4278a1e6bfd0bb7a75ad8cbe2f67422c9c2b69fe13388 +TEST= 267 +KEY= dcf92a9ee69e1bc8eedeb8e4c759fb08286b88e4a680738d +IV= 66dc484e5f2a29e73f43078079d8b427118901261270c49efc46de0516a2551b +CT= 9e957a7b2b4a00a6e8d4278a1e6bfd0bb7a75ad8cbe2f67422c9c2b69fe13388 +PT= 231a570a4764e4c95d35a9e792d4d98fb39a926de9fafe98f24385a835193602 +TEST= 268 +KEY= 81cc8379744ac2475d442a892ea30590da280d4c9399458f +IV= fed746a8b47d30de105f94cfdb61b0969a73610a47e72b0f42594fb1ea243c22 +CT= 231a570a4764e4c95d35a9e792d4d98fb39a926de9fafe98f24385a835193602 +PT= 43f44cedef39291737af606326c9bec963ac44b31b91a91fe0b24ab1abdaa1b7 +TEST= 269 +KEY= b663e31a52837c8e3ee86e3a3532ac8f3a9a47fd3843e438 +IV= d05989ffdde4d1481ca93183fb3dc39308ca7b00f0e2793b65258c40eedf7527 +CT= 43f44cedef39291737af606326c9bec963ac44b31b91a91fe0b24ab1abdaa1b7 +PT= 378b41e2a73d97e74d3b7231c453c64a7c3446a98393d1a9e640baa21e861334 +TEST= 270 +KEY= fb58912b96d0bac442dc2893b6a17d26dcdafd5f26c5f70c +IV= e2a82f7a778127f05be48a87db4147b10a3a7503bd3518b5fe26e42fed313b40 +CT= 378b41e2a73d97e74d3b7231c453c64a7c3446a98393d1a9e640baa21e861334 +PT= 95c03e934ea6931eafb3d8cdcaa52da66a3f2983aa6af28d82d6e5cd971faa34 +TEST= 271 +KEY= 54eb49e65c75976228e301101ccb8fab5e0c1892b1da5d38 +IV= 3a6df46a61bdd71d15cff8a8395bbe016335c9e4831e9b4e9ae1734588686bc9 +CT= 95c03e934ea6931eafb3d8cdcaa52da66a3f2983aa6af28d82d6e5cd971faa34 +PT= 7bbd78b44e95efdb43f21bed395db2e80bbf4be840dab81548e2afc91a8c8a9c +TEST= 272 +KEY= 1719520b6528258a235c4af85c1137be16eeb75bab56d7a4 +IV= 611a724aff8a6956b04b71da35f26580d80b1f851e717cd0913f5f5f420053e5 +CT= 7bbd78b44e95efdb43f21bed395db2e80bbf4be840dab81548e2afc91a8c8a9c +PT= c48257780f710a917206f93f3bb2cb59b29200a21113c0f7e8fb0e728a9634b0 +TEST= 273 +KEY= 651fab345e9aeed391ce4a5a4d02f749fe15b92921c0e314 +IV= 9b40026a62b18336ab3a41ee04edc69fd830a174cb3eeab4f7392c3d16063b8a +CT= c48257780f710a917206f93f3bb2cb59b29200a21113c0f7e8fb0e728a9634b0 +PT= 0ad82233d75eb0976127fd413725746f4e363da64cbd2f0b880b8ed051b04c17 +TEST= 274 +KEY= 0438567569bf9abcdff877fc01bfd842761e37f97070af03 +IV= 8a75d4e5d4068309a236ea44856876f4df8487af9b094d5fd5a4e5b238439b77 +CT= 0ad82233d75eb0976127fd413725746f4e363da64cbd2f0b880b8ed051b04c17 +PT= 88694e95c990d75a0b1b685a90e5cc0a61b656b862350b14b74cd0748162c59f +TEST= 275 +KEY= 0f233e2ff95a56b6be4e2144638ad356c152e78df1126a9c +IV= fd2ebafb20e312210daa90ca9bf9934ef29da94ed71f04a4f51a1c9973bdbd2e +CT= 88694e95c990d75a0b1b685a90e5cc0a61b656b862350b14b74cd0748162c59f +PT= 0a5551c4a49c69f144d9437d44c7c04ed79ad8e7466b85a187949420ae4937cb +TEST= 276 +KEY= 4bfa7d52bd9d96f869d4f9a325e156f746c673ad5f5b5d57 +IV= 1650edf554b57f12a4413927756d726e3ec71e9c3c587db9eb472749049adea0 +CT= 0a5551c4a49c69f144d9437d44c7c04ed79ad8e7466b85a187949420ae4937cb +PT= 12770ff0f8b0f07be619f28ba5bae0fe5bc66b5352ab4ea28ad7b719403e6fb5 +TEST= 277 +KEY= ade38fd918277606321292f0774a1855cc11c4b41f6532e2 +IV= aebcff141ff9731ee60d4439273806aa0754df25cd560975c776e90363606f5c +CT= 12770ff0f8b0f07be619f28ba5bae0fe5bc66b5352ab4ea28ad7b719403e6fb5 +PT= b68c8634d90965686591e10e835007343d231d20340a2c9ba598708d61e83ed6 +TEST= 278 +KEY= c8726ed79b7771320f318fd0434034ce6989b4397e8d0c34 +IV= 2025ba4e8e8aeef66c1be0b724d7cfdad6a927b4a952f19f7d62d226ba924a50 +CT= b68c8634d90965686591e10e835007343d231d20340a2c9ba598708d61e83ed6 +PT= 77044391a175a95132f58556577ce534e735813a5a85c1f4d68646e60c0b945d +TEST= 279 +KEY= fa87eb81cc0b9406e8040eea19c5f53abf0ff2df72869869 +IV= bc615d2f0b4dd10255fc4ea4119353a1b7fa32b394a1bc8adb2ecc358da0fef9 +CT= 77044391a175a95132f58556577ce534e735813a5a85c1f4d68646e60c0b945d +PT= b7a15038f64386cb803b69d7bc659779ddb7374009d10742e557c4c5f0bd1c6b +TEST= 280 +KEY= 7abc8256706e037f35b339aa1014f2785a58361a823b8402 +IV= aec43b4e81b79a469e6bf5b0fe9fe6505ff4f90e1aa6e868f41ee81621ef022e +CT= b7a15038f64386cb803b69d7bc659779ddb7374009d10742e557c4c5f0bd1c6b +PT= fa3ddaf6abc8d9f1719fd846c2454e6e90cdc8c66fc2796d33c6902a94c90631 +TEST= 281 +KEY= 0b235a10b22b4d11a57ef16c7fd68b15699ea63016f28233 +IV= 99d9be78be855cb9b7d795a95b4285ec80d81fddee16bc3b07c2f7ade1ba4cad +CT= fa3ddaf6abc8d9f1719fd846c2454e6e90cdc8c66fc2796d33c6902a94c90631 +PT= 8b5b88eb42bdea5e2f2d0e14a41cc1064006aa73b44495d782deac0cc1028a04 +TEST= 282 +KEY= 240e540416378c17e5785b1fcb921ec2eb400a3cd7f00837 +IV= 99cc310df058f37589f53e8904df5e1c1f81e7dea4ce918cbf7935fae38afb71 +CT= 8b5b88eb42bdea5e2f2d0e14a41cc1064006aa73b44495d782deac0cc1028a04 +PT= 2398d1a5a53fda3308fd6653ad4f35eaf684bbeba90cf8cfb94137527d19c085 +TEST= 283 +KEY= 2cf33257bb78b9fd13fce0f4629ee60d52013d6eaae9c8b2 +IV= 11f187665cf3d9cf622cc806c033276ef3c3d1a81363b331df04dcad015ae164 +CT= 2398d1a5a53fda3308fd6653ad4f35eaf684bbeba90cf8cfb94137527d19c085 +PT= 2ed16c2f4a15b6af19b55f18041d9ba5167193fe701d2a0f3afbc4a5b6f9990c +TEST= 284 +KEY= 35466d4fbf652258058d730a1283cc0268faf9cb1c1051be +IV= 6444451ca47ae8f7c3baab172e553934a99f3fa3ac5e689d9a4a338d15fd4024 +CT= 2ed16c2f4a15b6af19b55f18041d9ba5167193fe701d2a0f3afbc4a5b6f9990c +PT= ace18054e378234cd4d1cdb16c647450c509fe24c4e2a0c2b276db8c785ecf2e +TEST= 285 +KEY= e197a0fed3015608c0848d2ed6616cc0da8c2247644e9e90 +IV= 1aeb87429368614318aa3a729a675cf1f62513824ac2640f38a5fd7dc64e85e3 +CT= ace18054e378234cd4d1cdb16c647450c509fe24c4e2a0c2b276db8c785ecf2e +PT= 542e57b6629dbef6228f957b29a83ed85f03fc5a21f7ac71b61873590b90804e +TEST= 286 +KEY= c3183585faa968d09f877174f796c0b16c94511e6fde1ede +IV= efd1f7a3fae8968b63bf987b0be41a68c9e7e7dcf84f6b7feee6e684f6083236 +CT= 542e57b6629dbef6228f957b29a83ed85f03fc5a21f7ac71b61873590b90804e +PT= e7cb3caa4f26f5adcded1e2cba8210f194c051e85ad8184ee666c93262f3e1c5 +TEST= 287 +KEY= 0ef52ba9402b78210b47209cad4ed8ff8af2982c0d2dff1b +IV= 1f6d058ea4554ace16e151cb06a2bdfe391742f4eae5150af1ef16418e363693 +CT= e7cb3caa4f26f5adcded1e2cba8210f194c051e85ad8184ee666c93262f3e1c5 +PT= f2769e67ae2e7ad31f54f67b6c47ce1da4810d0a16ef2378984092e03e4d9ecc +TEST= 288 +KEY= 11a1ddd22c6cb63cafc62d96bba1fb8712b20acc336061d7 +IV= a2f3ddcb12b3967295cd6c0e1737666a067cbb06ce253ce3104bc22b2af3a0db +CT= f2769e67ae2e7ad31f54f67b6c47ce1da4810d0a16ef2378984092e03e4d9ecc +PT= 996b39a975e8e73f9599a6044be83e02ec50498462ffe55122d591854dadb209 +TEST= 289 +KEY= 84387bd66784883e43966412d95e1ed630679b497ecdd3de +IV= c10346578784e797a268de516edf6b8ed98d56bb5431fc12dcc81a504d119592 +CT= 996b39a975e8e73f9599a6044be83e02ec50498462ffe55122d591854dadb209 +PT= 72a6997d9a12f699a818ef591bd2d3d3c40715959e9a37e8ee7ed0f5f47177a6 +TEST= 290 +KEY= 2c20948f7c565bed8791718747c4293ede194bbc8abca478 +IV= 4eaf6e04300c07a2fa6d6a5f8e54747f99a9e2cf89c3b04039701e59eacf088a +CT= 72a6997d9a12f699a818ef591bd2d3d3c40715959e9a37e8ee7ed0f5f47177a6 +PT= e924fcf829c765ac32b97b8cd9b184015c6827e438e89ab2c3bdfa399da3dfbf +TEST= 291 +KEY= 1e99ef03a5e7dfecdbf956637f2cb38c1da4b185171f7bc7 +IV= f2d8e095ac9156f97672e347226072cbced2afc1e9e23a03340094e30758fcd5 +CT= e924fcf829c765ac32b97b8cd9b184015c6827e438e89ab2c3bdfa399da3dfbf +PT= 6fb081fae6007ecde467feec644a114d2e79a64d94c44e3fbf82d01e5a2af0b0 +TEST= 292 +KEY= fafe11efc1adcea1f580f02eebe8fdb3a226619b4d358b77 +IV= 166134fbb379edd21e8b8a369951a266fc7104a081045c2c01eb01f6ffbbf9c9 +CT= 6fb081fae6007ecde467feec644a114d2e79a64d94c44e3fbf82d01e5a2af0b0 +PT= e593b61add315630d336aa6476171ea020136db25899814da362a60a8071e3a4 +TEST= 293 +KEY= 29c8bb8bb7bad001d5939d9cb3717cfe0144c791cd4468d3 +IV= 2ab35667c367c675b6ff7d9c4e7a8c7c4e6eb5eae2d150ff241f16e682e07e3f +CT= e593b61add315630d336aa6476171ea020136db25899814da362a60a8071e3a4 +PT= 2d0a35a768b57a8053802019a0213af7602851c2b4812f32c63b4a3ed0293fd5 +TEST= 294 +KEY= 7a489b92179beaf6b5bbcc5e07f053ccc77f8daf1d6d5706 +IV= f9953a27544fe2550104dee2ab5a7ddf5534a7190d69753e192f2b3d1ac43e6e +CT= 2d0a35a768b57a8053802019a0213af7602851c2b4812f32c63b4a3ed0293fd5 +PT= fbeb13ff6faf8931d9cb12cf661b26b99626cb33887184836f2f3da096b84498 +TEST= 295 +KEY= a383895d7180cc4f239d076d8f81d74fa850b00f8bd5139e +IV= 5cd66b9b5838bab3e82ebddd6dd09c021a0fda7d1c32ca32640486efc5952f5e +CT= fbeb13ff6faf8931d9cb12cf661b26b99626cb33887184836f2f3da096b84498 +PT= 85c04883442822f9def2b1aab1ba428568e1ce89704bd8a64abe30d76fbdabc6 +TEST= 296 +KEY= 7d7138f7c03a8eca4b7cc9e4ffca0fe9e2ee80d8e468b858 +IV= f1f7148c3fc1d49be6f52e383f02e0e9d6eb9e5c32ce33042b107d5c7fc7ab49 +CT= 85c04883442822f9def2b1aab1ba428568e1ce89704bd8a64abe30d76fbdabc6 +PT= 9f5e723a9a5382d32e2c36315913347b083ef862c83d5bbdb209661104bc675b +TEST= 297 +KEY= 535d0ec69929bab14342318637f7545450e7e6c9e0d4df03 +IV= c5a85e3d52418493333b73ff283de7a6f892be822c96d3226ef9dd6c28aecbae +CT= 9f5e723a9a5382d32e2c36315913347b083ef862c83d5bbdb209661104bc675b +PT= e06648ad0cf8990a92b2bdcbf504e9b7d1dc0b4580b6407d108229d2cbb0fcb6 +TEST= 298 +KEY= c1efb30d6c2d5306929e3ac3b74114294065cf1b2b6423b5 +IV= 150973d2c8f57c0e8db2cb5f0ac25e64a435c10ce52cdae1ba38abe585506116 +CT= e06648ad0cf8990a92b2bdcbf504e9b7d1dc0b4580b6407d108229d2cbb0fcb6 +PT= eb291e0e127bb8e248c94a86fc55b85f13936fb5574213923e3eb8b9a61fd455 +TEST= 299 +KEY= 8926f98b9078eb59810d5576e00307bb7e5b77a28d7bf7e0 +IV= 78c112eff1a2a9b3e80dde20c5038c1b043f0375d512872fcce2314d7772599e +CT= eb291e0e127bb8e248c94a86fc55b85f13936fb5574213923e3eb8b9a61fd455 +PT= 69d054fda362dbe6500da3dea2220d815da9fd698b81002c580eb928b1ff0589 +TEST= 300 +KEY= d92b5a55325ae6d8dca4a81f6b8207972655ce8a3c84f269 +IV= ca4d4f8ba3b278cbbfe65e95b65487620ea3ef54de6d967f5ff2093f64f199df +CT= 69d054fda362dbe6500da3dea2220d815da9fd698b81002c580eb928b1ff0589 +PT= e1d0d8cce61b6f22d0e45f83d1db260b3d683139bc6cf4996b850769a3273abf +TEST= 301 +KEY= 09cf05d6e381c0d3e1cc9926d7eef30e4dd0c9e39fa3c8d6 +IV= e0acbe505ef2bc03b9796c94223588e3103352393fdecfaeb4ed5501589c2af7 +CT= e1d0d8cce61b6f22d0e45f83d1db260b3d683139bc6cf4996b850769a3273abf +PT= 166bbe4fae2a141888d3f8d425037c7bbfc536d3a58c05ccb78659be3d00d317 +TEST= 302 +KEY= 811cfd02c682bca85e09aff57262f6c2fa56905da2a31bc1 +IV= 5da90be2631683731e7eeee5e2df4fb38c779d999d10c5d6ed2f671a25510ae5 +CT= 166bbe4fae2a141888d3f8d425037c7bbfc536d3a58c05ccb78659be3d00d317 +PT= 3cf2e62c096d90b425b774b8fc1acb8d17a8ad3eb95dcb1a24426f9267b328f0 +TEST= 303 +KEY= a4ab89ba3a98772549a102cbcb3f3dd8de14ffcfc5103331 +IV= 4923c6b4ef863f828ae396251a5a1afb70a7e4daceb8a7b31eb0267bd41e8b7f +CT= 3cf2e62c096d90b425b774b8fc1acb8d17a8ad3eb95dcb1a24426f9267b328f0 +PT= 719b8ab8f10c429edd4cfa86bb55f9a54cb4c1e3fef26fea4329d7f23e154d08 +TEST= 304 +KEY= 79e7733c81cd8e800515c32835cd52329d3d283dfb057e39 +IV= 5624946361c75621354320e7b0f3d9150e900e0749514a91769f2ba560298a89 +CT= 719b8ab8f10c429edd4cfa86bb55f9a54cb4c1e3fef26fea4329d7f23e154d08 +PT= 6e77d71c5d70bbb1fa08e31a766daa7bd40a4d8b3841ed049abf867ae34c9907 +TEST= 305 +KEY= 83ef9026f7a024fbd11f8ea30d8cbf360782ae471849e73e +IV= ca091fb19da76d68460ba62030817ebfe0d35e14628cf3189a3ff4d602725d21 +CT= 6e77d71c5d70bbb1fa08e31a766daa7bd40a4d8b3841ed049abf867ae34c9907 +PT= 6f3a84c1e761171aa4b65e38a3eec78fb8f91017cc94370481241381a09e4b7e +TEST= 306 +KEY= 2759ce1e544ee37469e69eb4c118883286a6bdc6b8d7ac40 +IV= 92fc500c1ad1f46e2cc4f0c731b9c6c0da1a952fb4fc835fe559c420ee992838 +CT= 6f3a84c1e761171aa4b65e38a3eec78fb8f91017cc94370481241381a09e4b7e +PT= 06c9ebe27e35f9a7e98154656b99cacdf723a935e38403681e70ccd6096ce71f +TEST= 307 +KEY= ced89a7b3fd729b99ec53781229c8b5a98d67110b1bb4b5f +IV= 5fd16c5284b9285c596c478c1f72a9688a38b7fc69a0758606daca97289c994b +CT= 06c9ebe27e35f9a7e98154656b99cacdf723a935e38403681e70ccd6096ce71f +PT= 8f1b4c856c0578a46a29bea0fd19d9b40727e79be41cd0eccb8a75d2ae9e7a49 +TEST= 308 +KEY= a4f124dbc2cef00d99e2d01ac6805bb6535c04c21f253116 +IV= 19df9a4264a64301baa47cca3c7c48ff4be2a05b7ef41fd3cc517f562d9222b8 +CT= 8f1b4c856c0578a46a29bea0fd19d9b40727e79be41cd0eccb8a75d2ae9e7a49 +PT= d5fed9a1d2e5015a97de44630c210da6e70ec404ef30f16959fe1c511f81c298 +TEST= 309 +KEY= 332f60b8ceeffdab7eec141e29b0aadf0aa2189300a4f38e +IV= c897e0441c4563f5188d6be578fa067f5b5f12b1787c21958fc8aac251f8f79c +CT= d5fed9a1d2e5015a97de44630c210da6e70ec404ef30f16959fe1c511f81c298 +PT= a28cf2cf5b57aea8520f568917c58c6a02cd59fd4fa5e3fc4b3a35ce04a16e5b +TEST= 310 +KEY= 61203631d92a71c17c214de36615492341982d5d04059dd5 +IV= 3c875e1b91c5ea627ba1c7221e2f9f03644ca921c0ff7a56ecad816fb89c9a51 +CT= a28cf2cf5b57aea8520f568917c58c6a02cd59fd4fa5e3fc4b3a35ce04a16e5b +PT= 359cf7ae786a8d8dc70df24b21a498b5e5471fc6a7f5c14967ec2df28ad81eb9 +TEST= 311 +KEY= a62dc47af88ee97499665225c1e0886a267400af8edd836c +IV= 96ea703d0747f8512467960ecfc7c5b796f37cdc364f7a35061f80d9d0125482 +CT= 359cf7ae786a8d8dc70df24b21a498b5e5471fc6a7f5c14967ec2df28ad81eb9 +PT= 0443c1148483cf404fc598c93b9b1a89c637ec11568b31a2a4c2bc37c95ec2ce +TEST= 312 +KEY= e9e85cb3c315f3fd5f51be34976bb9c882b6bc98478341a2 +IV= fdc78529756d378abc712862f37a122e4fd3db125e256910431c6eeee0dd4c48 +CT= 0443c1148483cf404fc598c93b9b1a89c637ec11568b31a2a4c2bc37c95ec2ce +PT= 1674ce2e033a87e5fbf10122c351fd2eec1bc02eedee5fd51e9ff57c7f9db9de +TEST= 313 +KEY= 12195d9100440ed3b34a7e1a7a85e61d9c2949e4381ef87c +IV= 202cd92d6a393ac0c6761147c714fef1d13bc4f8a98b8cee883a69a073bedc97 +CT= 1674ce2e033a87e5fbf10122c351fd2eec1bc02eedee5fd51e9ff57c7f9db9de +PT= 6edc1765bade0ecf1b7d9e6cf2ebe86c79903dec2075b7559e1baaaa00e19314 +TEST= 314 +KEY= 0964c3fdf2afe6bfcada43f65af051480232e34e38ff6b68 +IV= 48227d2492aaab1e34f6d7d436826dde47db26fd85c36440b4211610f551c8de +CT= 6edc1765bade0ecf1b7d9e6cf2ebe86c79903dec2075b7559e1baaaa00e19314 +PT= bf8712fffb13ed08a916c2c764362c48a673eadc1737028628b1124f140633d4 +TEST= 315 +KEY= a072013a9699caf76ca9a92a4dc753ce2a83f1012cf958bc +IV= eaab6bf75cbc42b776f13d4136d478acf5e792cdb456d20b34324bef98c83c6c +CT= bf8712fffb13ed08a916c2c764362c48a673eadc1737028628b1124f140633d4 +PT= 0c5031a17c2d6dc10a6191d8968ddde750229fb0e0c8904de7242ba65ba37f24 +TEST= 316 +KEY= aa1390e2001417103c8b369aad0fc383cda7daa7775a2798 +IV= 7bc13a30ea83a5fb90d5b9a005d8888329ea681404780dcd23dfd77672ea8c5e +CT= 0c5031a17c2d6dc10a6191d8968ddde750229fb0e0c8904de7242ba65ba37f24 +PT= d17bd5200905eb1fa42df05aacef9183b537b09c932fad7fa16123cd501d5e35 +TEST= 317 +KEY= 0e3e60b8acfb869389bc86063e206efc6cc6f96a274779ad +IV= 3497909b306c28237177e72fe6d6a048a6112b1f4af77447be90d7dc159bd335 +CT= d17bd5200905eb1fa42df05aacef9183b537b09c932fad7fa16123cd501d5e35 +PT= 30bc2d4a86eb5f58a5bb072bbae7ee9dd0cf4e07f9bee909949730cfaae60c83 +TEST= 318 +KEY= ab856793161c680e5973c801c79e87f5f851c9a58da1752e +IV= 8824cae4c5b6f105047aca6caa45589afa7052616af35e8d4f26de48efea9f1b +CT= 30bc2d4a86eb5f58a5bb072bbae7ee9dd0cf4e07f9bee909949730cfaae60c83 +PT= 79dd9d455db24acdafb875f9490f030ced55746b3290a84064aae39b3c4c2612 +TEST= 319 +KEY= 043d126a5f136b02b426bc6af50e2fb59cfb2a3eb1ed533c +IV= cdddd341d18072d86c164df7e43a13be60a58f4b8847f568775a1d61406e78ef +CT= 79dd9d455db24acdafb875f9490f030ced55746b3290a84064aae39b3c4c2612 +PT= d7b5711eb45e58df94dca41920a6223cf9547455f8ef7cf907308432c097a832 +TEST= 320 +KEY= 90e1b6737fb5493e4d72c83f0de1534c9bcbae0c717afb0e +IV= fff5300c61ed046891b8d3ce98d1d0fac8801982dc8b77f4b167a79d364f2808 +CT= d7b5711eb45e58df94dca41920a6223cf9547455f8ef7cf907308432c097a832 +PT= fe2cea5f089e451ccf103e5a6bc295b14847957c017f480f0f42c4f31caeed49 +TEST= 321 +KEY= 5ff188291477dc8f05355d430c9e1b4394896aff6dd41647 +IV= 4d3c306a228f6b34da71712dc87823283dc787e5ee64139d7ceb8d39f5bee84c +CT= fe2cea5f089e451ccf103e5a6bc295b14847957c017f480f0f42c4f31caeed49 +PT= 6106689137ab91474b93e4abb2686e40e1be2ce162be846172655f47e67c65d3 +TEST= 322 +KEY= 14626c82a61fb2cfe48b71a26e209f22e6ec35b88ba87394 +IV= 9c00664aaa792240c87aada26d62d5c0f6b4cd1ff919a08ad5be4332ee57adaf +CT= 6106689137ab91474b93e4abb2686e40e1be2ce162be846172655f47e67c65d3 +PT= d2a1e4d1ba3f536627e70e4f206e5732741b0ece13f0eeb52ec5503dbec85b29 +TEST= 323 +KEY= 338562cd8671e5fd90907f6c7dd07197c8296585356028bd +IV= 3bb8c26ac401558689043943d62da408056b6bc288ab40b954a3b2563999b193 +CT= d2a1e4d1ba3f536627e70e4f206e5732741b0ece13f0eeb52ec5503dbec85b29 +PT= c1294c2283176517dd908f58f7436560848108c89d55bb5277eb1883bd84a750 +TEST= 324 +KEY= ee15ed957132809d141177a4e085cac5bfc27d0688e48fed +IV= a3b34cc717aa25e36d03ea024903724a55e8f000fac36fe2f347091700f623f6 +CT= c1294c2283176517dd908f58f7436560848108c89d55bb5277eb1883bd84a750 +PT= 526208935f0ccf9cd1c3c0a2eb5d95ce130412cb3fb1a65668b55363b15d1d8f +TEST= 325 +KEY= 3fd62d379a6f15530715656fdf346c93d7772e6539b99262 +IV= f004b5ef1010c3b8656bc13865e9a71c93a7546c194f20b2f6125041cbba30af +CT= 526208935f0ccf9cd1c3c0a2eb5d95ce130412cb3fb1a65668b55363b15d1d8f +PT= 0b5e40c4ee2ce5d1508348bf968d9f8500ee896c907f09f8c6700a82dc9d206f +TEST= 326 +KEY= 6f5565880ce28ad607fbec034f4b656b110724e7e524b20d +IV= a9060af67dab63bad192fc826812a120b4fdb65864a12f66760468b256b5c7bf +CT= 0b5e40c4ee2ce5d1508348bf968d9f8500ee896c907f09f8c6700a82dc9d206f +PT= a5dfc468832bde90ce0ab1e70e6a37a287965f11abb1431f1374548a6bac3e24 +TEST= 327 +KEY= a15fd46f0288bd74806db312e4fa26740273706d8e888c29 +IV= e76dd0ffea653d890dbe5672f892d426471143207351a9f247660ac37d6ebcb6 +CT= a5dfc468832bde90ce0ab1e70e6a37a287965f11abb1431f1374548a6bac3e24 +PT= f107c79c4a85934b8dd816bc0715e1727c9edffe07ed5c248ab4fb09b8d93330 +TEST= 328 +KEY= 2c87c2d3059d5c06fcf36cece3177a5088c78b643651bf19 +IV= 5a692deecb303fd9d7f15bd28078c5b09d2ff35aeb3a3d744990775d340f0d26 +CT= f107c79c4a85934b8dd816bc0715e1727c9edffe07ed5c248ab4fb09b8d93330 +PT= a9f566686749a58c78f06dc6b26892e34e30f6dc94a632653ec13099ed6d7768 +TEST= 329 +KEY= 5477af15b7f5cee5b2c39a3077b14835b606bbfddb3cc871 +IV= b73ca569acc49dfa7c7008038b8f44328ce513b25f5127fae119b9b7520b4627 +CT= a9f566686749a58c78f06dc6b26892e34e30f6dc94a632653ec13099ed6d7768 +PT= 7a51eb3b8ef277bc0629f9d375c34576e4cac0b8ed4c4ee0526a2814d1dd8b7c +TEST= 330 +KEY= 525e56c6c2368b9356095a889afd06d5e46c93e90ae1430d +IV= 8733abd4d8056c108d8b74800f9c40ddcff4663e888a53311a3d52ef26890328 +CT= 7a51eb3b8ef277bc0629f9d375c34576e4cac0b8ed4c4ee0526a2814d1dd8b7c +PT= ca57ad4a3cf570a27cf830742df4cb711bf9ae59c4c34494c791682176f23347 +TEST= 331 +KEY= 2ea666b2efc240e24df0f4d15e3e424123fdfbc87c13704a +IV= a0640ed516658fbba12465250a633252192dc52e9e0930b6e3ed6e65ed0fbd98 +CT= ca57ad4a3cf570a27cf830742df4cb711bf9ae59c4c34494c791682176f23347 +PT= 1cfa10bfd883d036c80efd6183f86da8f1666d2e61b40b9fb751a53f634f144a +TEST= 332 +KEY= e6a89bd36c3a2d4abc9699ff3f8a49de94ac5ef71f5c6400 +IV= 8d08c1498c76801bac573dceabbd89f3919711a63d4cac4e6391cf2bee6a9ace +CT= 1cfa10bfd883d036c80efd6183f86da8f1666d2e61b40b9fb751a53f634f144a +PT= bcb89c619c9712ed4d03f5a53654f4af32f1aec2115d75d2b3ef2f035acc4f00 +TEST= 333 +KEY= abab6e765a6ed9e58e67373d2ed73c0c274371f445902b00 +IV= 7c9d3ca89d3392ecc65fe2bd570a9ab71154908400f4d2878d09b6a4ba3420ba +CT= bcb89c619c9712ed4d03f5a53654f4af32f1aec2115d75d2b3ef2f035acc4f00 +PT= 6c9b7fb272b7891d7deaa41e60811bca7461813a7019286458551d8b0f92f46b +TEST= 334 +KEY= d641ca683aefc22ffa06b6075ece14687f166c7f4a02df6b +IV= 43633ca3a204e1d8c49fff98f48c0de955cc7a65806e920222feb11398b6669b +CT= 6c9b7fb272b7891d7deaa41e60811bca7461813a7019286458551d8b0f92f46b +PT= 8aefb1920666f6c27e7931ccb8bed96487726e9102c0758c0490d060a7631e14 +TEST= 335 +KEY= a838fba482511b4b7d74d8965c0e61e47b86bc1fed61c17f +IV= 4bac7a2ed6fdd6323952fffa98b8c4f94113200846ed504b2587ddde11de1be4 +CT= 8aefb1920666f6c27e7931ccb8bed96487726e9102c0758c0490d060a7631e14 +PT= 228c08b9c7f43ce7afaf940e2db5a9d5edb7387b320b5c386393e9299fa4611a +TEST= 336 +KEY= 07976faaafe4b29e90c3e0ed6e053ddc1815553672c5a065 +IV= 6b8fd604eafa05731791d03467b854cf47ecb61448e92c412e4c93fd73598798 +CT= 228c08b9c7f43ce7afaf940e2db5a9d5edb7387b320b5c386393e9299fa4611a +PT= 96c7ff3b34c6ccd8933ca3d7302a8ed207e02c38ad8802d5540449adf31fa58e +TEST= 337 +KEY= 94abcc7d9fce3c4c9723ccd5c38d3f094c111c9b81da05eb +IV= e178fcd17e0e4a5529df4fd571cbfcf5a53d7ab82c401d3237dac28e7f522e64 +CT= 96c7ff3b34c6ccd8933ca3d7302a8ed207e02c38ad8802d5540449adf31fa58e +PT= 4943bd24364ff1714db324136be385aaeabfc3d0b33deff95521f077e58a9cbf +TEST= 338 +KEY= d918e86ef42db9e67d9c0f0570b0d0f01930ecec64509954 +IV= 6de760843ccac47b96f070df14db2ac4169512ea215076ce5e4e8e8fa9d969d8 +CT= 4943bd24364ff1714db324136be385aaeabfc3d0b33deff95521f077e58a9cbf +PT= a91f131efd7f483f9c6e481e7fc613c8603c404224bd574b817ecf7378de3c8b +TEST= 339 +KEY= 4576a0708bebaa2e1da04f47540d87bb984e239f1c8ea5df +IV= 69bac517264c5fa0d3da6063a5fc1aae8db36f653e7435c89c873c92bf06f283 +CT= a91f131efd7f483f9c6e481e7fc613c8603c404224bd574b817ecf7378de3c8b +PT= 9a009d5e1551d5a8cd50c10b99fe3d3a64a5780e3bc9a04916eeab510634f1f9 +TEST= 340 +KEY= 8826617b12159714790537496fc427f28ea088ce1aba5426 +IV= 815a81585f5ccbd1fd3f9f578fc00510de4d47262c074ce3aea589621fbe20ee +CT= 9a009d5e1551d5a8cd50c10b99fe3d3a64a5780e3bc9a04916eeab510634f1f9 +PT= 5198f49e0a895cf01de7e779120f547d2139e6e4cb42b643a17041cbbe7dc7ab +TEST= 341 +KEY= 95c18602001ac369583cd1ada48691b12fd0c905a4c7938d +IV= 8f0f3cd8c4d1990123f06a31e60a08b8701769eb840118a49865942af4b0692e +CT= 5198f49e0a895cf01de7e779120f547d2139e6e4cb42b643a17041cbbe7dc7ab +PT= b60ee284f19b16cf86ef2feacaed8b0244af3515b5335bad3223e23e1f897bfb +TEST= 342 +KEY= 132ea9e8caf7486b1c93e4b811b5ca1c1df32b3bbb4ee876 +IV= ef703dec521abeebab9444c8908d86ed0a817d302b7ea1eaaca7115f96e538a6 +CT= b60ee284f19b16cf86ef2feacaed8b0244af3515b5335bad3223e23e1f897bfb +PT= b5a5016d4c02792aefb25b528899a6f24510b50cda1d6bf18ae821e7b47e45f8 +TEST= 343 +KEY= fc9cf2ba426eee99598351b4cba8a1ed971b0adc0f30ad8e +IV= 5219af25757663b1256e40eed562d1518beb45be6d526f3bc727c17abd4a9c53 +CT= b5a5016d4c02792aefb25b528899a6f24510b50cda1d6bf18ae821e7b47e45f8 +PT= 8aa001d55717300aac2e1d5bf4f9d3efb34554c34a441353e1fd096a5d2b86e5 +TEST= 344 +KEY= 50b2efe1b6973d76eac6057781ecb2be76e603b6521b2b6b +IV= 01de948260d89e910d989b54b11775827b2f9f24b4ff9954b65b850ee63482d8 +CT= 8aa001d55717300aac2e1d5bf4f9d3efb34554c34a441353e1fd096a5d2b86e5 +PT= c8a926e373a8fe94d203e58ee8d7db4b8d9063d7876634672cdef77e145da6fc +TEST= 345 +KEY= 82b10a6f5e40e63d675666a0068a86d95a38f4c846468d97 +IV= d61ea40eb80bddfe3b64ee3d75dfa16b0b428958e0b2ee5f8ce2e1d1362a7400 +CT= c8a926e373a8fe94d203e58ee8d7db4b8d9063d7876634672cdef77e145da6fc +PT= 3c29d562f779882914fc003936f37f20738ee6c9ad328ef8b6a86c7554ed734f +TEST= 346 +KEY= 964d0a5668b3991d14d88069abb80821ec9098bd12abfed8 +IV= 6163679437e4e3e3148094a2e65d027c127e346a73153aae169e1a0c24e1ab3c +CT= 3c29d562f779882914fc003936f37f20738ee6c9ad328ef8b6a86c7554ed734f +PT= a96b99e51eb905237f6566962e71019030789e651774226ed99dbd8fc9b8be52 +TEST= 347 +KEY= e9286cc046c2988d24a01e0cbccc2a4f350d2532db13408a +IV= adb6f0c041be3380894315502cc83f7a14b35612d371e873d8831bed26b93352 +CT= a96b99e51eb905237f6566962e71019030789e651774226ed99dbd8fc9b8be52 +PT= dd02976a587444a7d6a51ddddb5711fb43d4782e364b0624bdcb3abcf6146023 +TEST= 348 +KEY= 3f8d711d9d958976677466228a872c6b88c61f8e2d0720a9 +IV= c3ac96b33e60c5b9ffae51b9ff33a3154d047cc76a289258e71f07a2c94d8da9 +CT= dd02976a587444a7d6a51ddddb5711fb43d4782e364b0624bdcb3abcf6146023 +PT= f648d45fd6cf03c9288d5b255d457325399b414a76730153d72fd63a97b99e15 +TEST= 349 +KEY= 17002a38c0d0fa535eef2768fcf42d385fe9c9b4babebebc +IV= 7da7d05b183d27d79a128b13a025100fd2fe82b2500e59aa7f03a38ad99c2b86 +CT= f648d45fd6cf03c9288d5b255d457325399b414a76730153d72fd63a97b99e15 +PT= 3e2440a2d29374d7f2042622278b7b7d0633f9c703b455778d2c01e3f634a602 +TEST= 350 +KEY= e5040c1ae75b812e58dcdeafff40784fd2c5c8574c8a18be +IV= 8bdb050ce5ee84e2a66fecd64b3b8776c787aeaf9c86d7eeff77a9867b80af71 +CT= 3e2440a2d29374d7f2042622278b7b7d0633f9c703b455778d2c01e3f634a602 +PT= 6821d23c651290830a3f8aae4fbbf3aa18c1e684a794fb5f9030d1937d50c0c2 +TEST= 351 +KEY= ef3b86b4a8e07284401d382b58d4831042f519c431dad87c +IV= f9d6e983c81cc50ee3c7fb1edc9c30dfbf866f8d9d9ed3455debb8496482192d +CT= 6821d23c651290830a3f8aae4fbbf3aa18c1e684a794fb5f9030d1937d50c0c2 +PT= 3af4de132f826aa16b828f0d7671f35c415caa8235232033fe3fc7f212968054 +TEST= 352 +KEY= 84b909b9de9181d8014192a96df7a323bccade36234c5828 +IV= e26f5a00c6eba63d139755e5c8c2cbc3bac852a8ef6f807dff78079085cacb32 +CT= 3af4de132f826aa16b828f0d7671f35c415caa8235232033fe3fc7f212968054 +PT= 386384ebd4fd8b33082fb7df032f4834c711cafd410ada432e7c12fc6e2ba261 +TEST= 353 +KEY= 8c96be66ddbec9ecc65058542cfd796092b6ccca4d67fa49 +IV= 039b4fa626c0be08d23aa245305d3a0bf8c1df0a41df3cf1ebfe133aed4c6323 +CT= 386384ebd4fd8b33082fb7df032f4834c711cafd410ada432e7c12fc6e2ba261 +PT= b383dbf0b8cb09445dd5c635da2539dc7ae8e7e0ec5d1fb25f9ce764f5ac15ee +TEST= 354 +KEY= d1437853079bf030bcb8bfb4c0a066d2cd2a2baeb8cbefa7 +IV= f0950247820436d959df8573a74d5ea3966589c09f3fa4e33b5e7f917e9f91ff +CT= b383dbf0b8cb09445dd5c635da2539dc7ae8e7e0ec5d1fb25f9ce764f5ac15ee +PT= 26360d625389bdba92dec116632719dcca18285f1088fb43ed7810539ba2fce5 +TEST= 355 +KEY= 439db94564bce9ec76a097ebd0289d9120523bfd23691342 +IV= 36b5db6e5cf0c19d6838fed21ebea5d3e1e257813427214d4ae047a0e1281403 +CT= 26360d625389bdba92dec116632719dcca18285f1088fb43ed7810539ba2fce5 +PT= 3e31117d537a3cc310df8743f26e633482c4b998f2b1431a9fb9d2d4a323fde2 +TEST= 356 +KEY= 53423e0696d28ad8f4642e732299de8bbfebe929804aeea0 +IV= e832ab976a930ab697daf69800d8a11ceeab1813e1af60388c286b3a138e1e47 +CT= 3e31117d537a3cc310df8743f26e633482c4b998f2b1431a9fb9d2d4a323fde2 +PT= 0fe783591be7adbe56be09e74c38404358307f7750190b5b56839e2b0bdfd197 +TEST= 357 +KEY= 05fc37e1daeaca9bac5451047280d5d0e96877028b953f37 +IV= 32c36236b2cbeb232217ba212cb12b678a85589d329f6c68bd546bd363bd9805 +CT= 0fe783591be7adbe56be09e74c38404358307f7750190b5b56839e2b0bdfd197 +PT= 2a06833d37efc1e10176a6f3d274964b49e8a8fb192d7cbec26bd377f7baa4d2 +TEST= 358 +KEY= 048a9112089e5cd0e5bcf9ff6bada96e2b03a4757c2f9be5 +IV= 4d51075d754d77f750e576401839e7b78b763c111e99c059cbbd4a0edeee6e62 +CT= 2a06833d37efc1e10176a6f3d274964b49e8a8fb192d7cbec26bd377f7baa4d2 +PT= e44cdc3358d78eb1805fab552958275cc6f8c653f38bfbec308966ad8aa70b02 +TEST= 359 +KEY= 84d53a4721c67b8c23443fac982652821b8ac2d8f68890e7 +IV= f45ed25e5d5c0d1acfa236a5379fbd22b8ec17a531ec63fe496430b7b453172a +CT= e44cdc3358d78eb1805fab552958275cc6f8c653f38bfbec308966ad8aa70b02 +PT= 142107cbd35efb1379f569cec99ef361eec9732194486cc4fccacb00534bf319 +TEST= 360 +KEY= fd205389e85888edcd8d4c8d0c6e3e46e74009d8a5c363fe +IV= 8b8a75dc5b9903797e69338e736b54760669193f2a1943fa1e91273fa662ec76 +CT= 142107cbd35efb1379f569cec99ef361eec9732194486cc4fccacb00534bf319 +PT= d7c450a9241270383a7acd3d42a2cf6ccd7cbba4f4697836fcbf7a2730bacf53 +TEST= 361 +KEY= c75a9eb4aafa478100f1f729f80746701bff73ff9579acad +IV= 3ed82d3bfa1961162ee5af309cbce24d62531b6491e37f6081bbc6b2fe2a23be +CT= d7c450a9241270383a7acd3d42a2cf6ccd7cbba4f4697836fcbf7a2730bacf53 +PT= bd003eb6bd54fb7b7756e2aa3a89e8158cb9f6c554164b7907aff56d7aa5f2c8 +TEST= 362 +KEY= b00c7c1e9073af948c4801ecac110d091c508692efdc5e65 +IV= 36cf8a0af5656ec3d593f5201c43ddf6436c6318e7e7450b591aaada82358050 +CT= bd003eb6bd54fb7b7756e2aa3a89e8158cb9f6c554164b7907aff56d7aa5f2c8 +PT= b518b01a5f386233fa548caba5a51c2e3d8757343ec9d42571c93b752ec35904 +TEST= 363 +KEY= 4a58f0b535d6b3bab1cf56d892d8d92c6d99bde7c11f0761 +IV= ea2a18d243d6b7a8db702d5626eff6dd1c5ca9ef4148130c0d258ed3e3516c74 +CT= b518b01a5f386233fa548caba5a51c2e3d8757343ec9d42571c93b752ec35904 +PT= 771ce5ddfe03f222f12436e79b34c42db0dd81ecf3a3082c69aa22bff363f6cb +TEST= 364 +KEY= bb7cc652aee277970112d734617bd10004339f58327cf1aa +IV= 4a41aa48837b95d6e3cd0b575f23fe3bdd696185ebbf8a89200e2ccaf0435c12 +CT= 771ce5ddfe03f222f12436e79b34c42db0dd81ecf3a3082c69aa22bff363f6cb +PT= 198d830dfe4f0e2391fc76a2053db738082ecb9308116f199f9997c77f6708c5 +TEST= 365 +KEY= 2a80b0f0abdfc0af093c1ca7696abe199baa089f4d1bf96f +IV= baa2edf1991550d4d267d14c7afe5c1ff0c4e8beea6345fa5f88e7b58bfbc401 +CT= 198d830dfe4f0e2391fc76a2053db738082ecb9308116f199f9997c77f6708c5 +PT= f6a2cc0b84df0b9ce724a0381da7723f9f1a192067040056a4bad309ac0cab4d +TEST= 366 +KEY= cda410c8b678b290962605870e6ebe4f3f10db96e1175222 +IV= 0f40c2c3b96bb4ac8e5992ef7e7ebd15e0281170ad7f888a6e01d6d62bfc5514 +CT= f6a2cc0b84df0b9ce724a0381da7723f9f1a192067040056a4bad309ac0cab4d +PT= 4d0f29c5aa3bc1fd64c6239bc815c4cd0cce2cf9d58025bf687ef6034ce6a5d8 +TEST= 367 +KEY= a96233537e6d765d9ae8297edbee9bf0576e2d95adf1f7fa +IV= 36bc9aaee353b4be2e6faa9dc2e638b11273f668978325b671286cb4a48f4801 +CT= 4d0f29c5aa3bc1fd64c6239bc815c4cd0cce2cf9d58025bf687ef6034ce6a5d8 +PT= 4b2dc42e356d135d37dd227bbd8b80225e0afeac24949dd3a396376d82508e50 +TEST= 368 +KEY= 9ebf1128c3e6f67fc4e2d7d2ff7a0623f4f81af82fa179aa +IV= 0064782e3a66bff24b4578f8e7be8dafe8b447d055e3a18143d4b72904256f41 +CT= 4b2dc42e356d135d37dd227bbd8b80225e0afeac24949dd3a396376d82508e50 +PT= fb495ee7de0745de9a5255b5f9f103ac7ab7c26b26dc5d1201c30d5010d205ed +TEST= 369 +KEY= 04ed449d3a17f5d3be5515b9d9a65b31f53b17a83f737c47 +IV= a5239b2f8d9a105450321871e1334700763a850c3fcacf78e21e949ea2821b66 +CT= fb495ee7de0745de9a5255b5f9f103ac7ab7c26b26dc5d1201c30d5010d205ed +PT= 8d8045bdc15dc9a7dcbddf905dafb7ceaf8d95dfdc8cf9acee25573e33c150bf +TEST= 370 +KEY= d8509b0d67b8421d11d88066052aa29d1b1e40960cb22cf8 +IV= 1f4057a09d48a3039fa1e17b02a3e5033c1704c90aac76a364dd90bad827555d +CT= 8d8045bdc15dc9a7dcbddf905dafb7ceaf8d95dfdc8cf9acee25573e33c150bf +PT= 12962d892d39d09cdb45a76403085ed6f0476774d842fa5f293073566643cb15 +TEST= 371 +KEY= 03153c6964b01ccbe19fe712dd6858c2322e33c06af1e7ed +IV= fec69350d430580c3d0e9237721fed7b345bc53e25853238ec9418bcb8283444 +CT= 12962d892d39d09cdb45a76403085ed6f0476774d842fa5f293073566643cb15 +PT= 749640c9b6e03d7482cee5be85a24a9a8f3ad172c5bd0af52bbf0a3be09be504 +TEST= 372 +KEY= 81dbd9d7e11256516ea5366018d55237199139fb8a6a02e9 +IV= 916e706cf335baa132642734588c598c819901f48c0880ac6032b244b530f4dd +CT= 749640c9b6e03d7482cee5be85a24a9a8f3ad172c5bd0af52bbf0a3be09be504 +PT= 944337b64612ec4e09fcdb3f9c219c148600fdfc2cd0e61cf3d2da2e31ca5238 +TEST= 373 +KEY= 882702e87d33ca45e8a5cb9c3405b42bea43e3d5bba050d1 +IV= 733bd7fd3c374e94de0505ed4141e6480707ef8bcadfc921457b333831e8f552 +CT= 944337b64612ec4e09fcdb3f9c219c148600fdfc2cd0e61cf3d2da2e31ca5238 +PT= a018999aad953facb8bfac27f0b8d5151de332caa81a92c9b4ff5dba8fcc36a8 +TEST= 374 +KEY= 3098aecf8d8b1f50f546f9569c1f26e25ebcbe6f346c6679 +IV= ca46166e4814f2b068409bf2c9f01220eb2bd8e94c8d53500191c069e0f29c03 +CT= a018999aad953facb8bfac27f0b8d5151de332caa81a92c9b4ff5dba8fcc36a8 +PT= 5b4c204d727aba3010dc7e2f20146394d36360bfa2d9f5b8427f4b98845424ff +TEST= 375 +KEY= 2044d0e0ad9f7cc4262599e93ec6d35a1cc3f5f7b0384286 +IV= a28f16f25543d9f565f99ef5e454ec9cf8cea5ebb7bb30100d8a855244096be5 +CT= 5b4c204d727aba3010dc7e2f20146394d36360bfa2d9f5b8427f4b98845424ff +PT= 79b84ddfc4792eb628e34bb98bae4608b10734b805e039aefa3ac7baa8556298 +TEST= 376 +KEY= 08a79b5926313acc9722ad513b26eaf4e6f9324d186d201e +IV= 76282b9a8fc191f812c608d07f75586176d4dbfdb2cc282bec956ca8452a44b4 +CT= 79b84ddfc4792eb628e34bb98bae4608b10734b805e039aefa3ac7baa8556298 +PT= 245aa78d858435eb69891232d778aec3381bea3aa72132f6478c1c6803d1e436 +TEST= 377 +KEY= 612e896bf149940faf39476b9c07d802a1752e251bbcc428 +IV= 4a7666c13409b8fb63652865a914d0a2705bb58cd5de7440ea0cb13d5648237e +CT= 245aa78d858435eb69891232d778aec3381bea3aa72132f6478c1c6803d1e436 +PT= 477136057a8a2d4c1c90f3e9bb0d59e3acdbfc08ba6fb44e7b24448d9083a2cd +TEST= 378 +KEY= 7dbe7a824a44cdec03e2bb6326686c4cda516aa88b3f66e5 +IV= a0bf348b157b7271e49000e0b1ed938f405ce5fa7f33c3abb52c8c197edc58e6 +CT= 477136057a8a2d4c1c90f3e9bb0d59e3acdbfc08ba6fb44e7b24448d9083a2cd +PT= 88b3127b39571aab8d3188433b0f0e9868a7d6c416fb335893f0e61134aa3e37 +TEST= 379 +KEY= f08ff2c1714bc3746b456da730935f1449a18cb9bf9558d2 +IV= 09ea01118001d4c3325c20733153967b32dbbde65e87159a623bdb404174d292 +CT= 88b3127b39571aab8d3188433b0f0e9868a7d6c416fb335893f0e61134aa3e37 +PT= 827d9f19d747ac4ecb7324cc86e9e643d8bb9bfbe7f5603ce8864e1b7a8f8728 +TEST= 380 +KEY= 3bfcd60df7a22537b3fef65cd7663f28a127c2a2c51adffa +IV= 438358c3dbc49341289f3c23ea0c9f8bf8d49ee8792c9dbed2522895bbeba30e +CT= 827d9f19d747ac4ecb7324cc86e9e643d8bb9bfbe7f5603ce8864e1b7a8f8728 +PT= c8f7761a7301e8e9f5eefd61d2ed8601501549a166768e7b6edb8ca29898fae8 +TEST= 381 +KEY= ce122b6c254fa336e3ebbffdb110b153cffc4e005d822512 +IV= b64095e42df71b7b4bf19b78a8e0d4e3afdbf809f3a586f1fdd9a14de2483a79 +CT= c8f7761a7301e8e9f5eefd61d2ed8601501549a166768e7b6edb8ca29898fae8 +PT= 7b33434a7f9b7e863c8085e0a2c12593d5cc69b1f61b3286157ccde37628d00f +TEST= 382 +KEY= f292ae8c878e86a53627d64c470b83d5da8083e32baaf51d +IV= cb91316e8b244fbd7920aa705e6d3cd7060c65aa539154651068e366c8b38a5b +CT= 7b33434a7f9b7e863c8085e0a2c12593d5cc69b1f61b3286157ccde37628d00f +PT= 4394a1b68d3ee45d6228db7f120e1be31b6f41d85f00c7c29ba34200374ded8a +TEST= 383 +KEY= 90ba75f395809d462d489794180b44174123c1e31ce71897 +IV= af1752dc546abec95e8cf6fea012dca8e5083cb8d9d1143829dec5c83e16ebe1 +CT= 4394a1b68d3ee45d6228db7f120e1be31b6f41d85f00c7c29ba34200374ded8a +PT= 04e6796ade7d98a33c5f219fc7fde708f3ccecc24c83350ab999c75e70b97a48 +TEST= 384 +KEY= ace5546c527d7a4ede847b565488711df8ba06bd6c5e62df +IV= b885630f2ba385ee8089edb0f0f19bb480fbb2a931564767c9f4cf76e76fa081 +CT= 04e6796ade7d98a33c5f219fc7fde708f3ccecc24c83350ab999c75e70b97a48 +PT= f833750e51a67dc1d621c795984e126b23fa0bcd83ded8c13624820affab812e +TEST= 385 +KEY= 7ac493f9ca336825fd7e709bd756a9dcce9e84b793f5e3f1 +IV= 1e92b6285f7fad0aaa7d950db7eeb2058b36aa3c6a3590a43d3b64e83bdd1c6f +CT= f833750e51a67dc1d621c795984e126b23fa0bcd83ded8c13624820affab812e +PT= ded3ca5aef202ad9b7ef020abfef1aee8b639eab6304ddbbaedb7213c3055783 +TEST= 386 +KEY= cd2b91f375dc72cb761dee30b45274676045f6a450f0b472 +IV= 86d72d75cd37081025b18cf9e7a3675efbd570311ae491feb2d8161ee6d33c72 +CT= ded3ca5aef202ad9b7ef020abfef1aee8b639eab6304ddbbaedb7213c3055783 +PT= cef8e1bd3cd39d2dda08dedcc527a19942d0ae1920acf0dfaf0de179ccb0cbe4 +TEST= 387 +KEY= 17234f2fb0fbd35234cd402994fe84b8cf4817dd9c407f96 +IV= b32bcd6315e723e9892fa0ad9e3f342b267299f403ea843096b389e11988d633 +CT= cef8e1bd3cd39d2dda08dedcc527a19942d0ae1920acf0dfaf0de179ccb0cbe4 +PT= 989651ac6c9737e3dad18e35a82cebd963d54af76c06ee7b1ceefc4bb52b820e +TEST= 388 +KEY= cdf2c11a18d7388b57180adef8f86ac3d3a6eb96296bfd98 +IV= 297e78a15ed9b9f830bddd4187e6a6ec3268135c6abb3b6c7e4275c78b51ecc4 +CT= 989651ac6c9737e3dad18e35a82cebd963d54af76c06ee7b1ceefc4bb52b820e +PT= 27107edb420fef24e8e40379673c5a2f9d80d952f380cd8036bfe69377d225c3 +TEST= 389 +KEY= 2516c2637feb62a4ca98d38c0b78a743e5190d055eb9d85b +IV= 622b37147fcddc6de0a23b1b3d54c8c9a31e11b1293f2553a25a7905db9ea088 +CT= 27107edb420fef24e8e40379673c5a2f9d80d952f380cd8036bfe69377d225c3 +PT= c33bd78a68bcb303e3f744df29df7f4a6b4fabb1205f31eb026ced22631917bd +TEST= 390 +KEY= c6e186bc56341deea1d7783d2b2796a8e775e0273da0cfe6 +IV= 233b7cb049f39832624a7aa9ee6273d2a63ebe9c2378c36b930c604d3cd9e229 +CT= c33bd78a68bcb303e3f744df29df7f4a6b4fabb1205f31eb026ced22631917bd +PT= 341e11ee5f7053a4176e6441f1452749d52e74f6ed7964ea69c9471d3be94719 +TEST= 391 +KEY= d18fe2fda7713aa774f90ccbc65ef2428ebca73a064988ff +IV= 5fd9b246eaa192590ef83fec29a8e0214b9db9fcaa6675f8f2155f5cfe331df6 +CT= 341e11ee5f7053a4176e6441f1452749d52e74f6ed7964ea69c9471d3be94719 +PT= 5a94199dd411e267c17a560b2548f606705902eb9197fa9728d4ef0b427a889b +TEST= 392 +KEY= 10f5b4f68239cca104a00e2057c908d5a668483144330064 +IV= b78ee0d92f5b02b698ceab416239647f7cc92bf1fef3b8aaa7769c698fc57e08 +CT= 5a94199dd411e267c17a560b2548f606705902eb9197fa9728d4ef0b427a889b +PT= 53b22dbade6247b35eb5a86e9f2c697c5b97d7fb9ab65dcf29533d5dd4d2518b +TEST= 393 +KEY= 4e401c981d15a5dd5f37d9dbcd7f551a8f3b756c90e151ef +IV= 654f6a94b26cf090581e3e35474394c0cfce18d0de5e3a28a09bbc6fe00464f7 +CT= 53b22dbade6247b35eb5a86e9f2c697c5b97d7fb9ab65dcf29533d5dd4d2518b +PT= 8feda3b03061bcee1147c25509a4e7cea798b80790bfbc781c9a0de5cffd2c19 +TEST= 394 +KEY= 5f07decd14b14213f8af61dc5dc0e96293a178895f1c7df6 +IV= 91d7677420ea18d6f59f9f15b23d378e6ef691a79af64f6747dc8bef7e54e095 +CT= 8feda3b03061bcee1147c25509a4e7cea798b80790bfbc781c9a0de5cffd2c19 +PT= adc5779f52cf5737802518eec3095b08440af1846260f9664a7048c31ca09b93 +TEST= 395 +KEY= df22c623d7b8191bbca590583fa01004d9d1304a43bce665 +IV= 6d5f526aae06af3c4c2d90bbe27e00426964b4992a1072eda0381ef9c04a11c4 +CT= adc5779f52cf5737802518eec3095b08440af1846260f9664a7048c31ca09b93 +PT= 0b27fa515e655c675e146e198e0bd60c5166c6681b3a6cefc6d99630aa5f4063 +TEST= 396 +KEY= 8136a83a59b3cf17edc35630249a7ceb1f08a67ae9e3a606 +IV= 0cb721d982bd3d472f68afe8b7b525cf8ee85b62535b7d9d9b4f5676fa3a195a +CT= 0b27fa515e655c675e146e198e0bd60c5166c6681b3a6cefc6d99630aa5f4063 +PT= 272e9e1bae3968282bf3d940222ec78c0b3c6a25f76a3e5b0ce066690e1c977b +TEST= 397 +KEY= aac5717a7b9d089be6ff3c15d3f042b013e8c013e7ff317d +IV= aad618907a048e9ee38e9b225715c2b521b32c8b9a55ea9d6cd47aae7805e658 +CT= 272e9e1bae3968282bf3d940222ec78c0b3c6a25f76a3e5b0ce066690e1c977b +PT= 8e94e3e2dad98d5b920b272ff06a4447c5f847cdeba6ca72e418ce94a5c2c4dd +TEST= 398 +KEY= 38ce56558bf74cdc23077bd8385688c2f7f00e87423df5a0 +IV= 21533d286b5ad6eba915b8740408ebf791da9bce62f686fc7ab46dffbf97a1b1 +CT= 8e94e3e2dad98d5b920b272ff06a4447c5f847cdeba6ca72e418ce94a5c2c4dd +PT= effda834009337d06531f923c9b65f0e4ea36e2e645086bd0bb277640f7fcff8 +TEST= 399 +KEY= 5dffaf76424113d26da415f65c060e7ffc4279e34d423a58 +IV= b348327414235a36636dc7b4e4f8551281428eafa605abbfb9e94384e677fdc2 +CT= effda834009337d06531f923c9b65f0e4ea36e2e645086bd0bb277640f7fcff8 +PT= c7e7e0b47158541d4c1fe83213aa5245ac2d350cfd1e61441bcf9bbcec8288b8 diff --git a/flint/test/testvals/cbcmd88.txt b/flint/test/testvals/cbcmd88.txt new file mode 100644 index 0000000..e98214c --- /dev/null +++ b/flint/test/testvals/cbcmd88.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcmd88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 36aaa3d82c048a7735a50a6821e07bc6c230472c4ea99176191fc23016829562 +TEST= 1 +KEY= 36aaa3d82c048a7735a50a6821e07bc6c230472c4ea99176191fc23016829562 +IV= ea3c50802246e6b8fa3be9a980c4cc654ca7d1e16967760d775a9f3b8d6061e3 +CT= 36aaa3d82c048a7735a50a6821e07bc6c230472c4ea99176191fc23016829562 +PT= 06ae7e9ea8ff47b4b51c69160b01c0af00476caccd794babc342afb8357f7139 +TEST= 2 +KEY= 3004dd4684fbcdc380b9637e2ae1bb69c2772b8083d0daddda5d6d8823fde45b +IV= b82a0fbd0c4dc581d650f820aa81fe610641aa051c5135bf6c3632d49c55a045 +CT= 06ae7e9ea8ff47b4b51c69160b01c0af00476caccd794babc342afb8357f7139 +PT= 8b51f25ab15007c8f64a368fb9cb7914795c6cf04abaaf88c922668ee8600660 +TEST= 3 +KEY= bb552f1c35abca0b76f355f1932ac27dbb2b4770c96a7555137f0b06cb9de23b +IV= 10027d96dc5c90c1d8e0fd542987ce05966d039e5f874b6d5c2383160eb871a1 +CT= 8b51f25ab15007c8f64a368fb9cb7914795c6cf04abaaf88c922668ee8600660 +PT= 4e2454d45b60539cd3c803b8d2f03aca28f15d9436ffa9178391f6624d354d6c +TEST= 4 +KEY= f5717bc86ecb9997a53b564941daf8b793da1ae4ff95dc4290eefd6486a8af57 +IV= 8fa166d896b7624a1a3116106d7e807272afc4192155a55a9fa6f8456173841d +CT= 4e2454d45b60539cd3c803b8d2f03aca28f15d9436ffa9178391f6624d354d6c +PT= b5a4525082217ba65032f9053af3ceb0b146b6da7a1a715479395c6d7fe5e73b +TEST= 5 +KEY= 40d52998eceae231f509af4c7b293607229cac3e858fad16e9d7a109f94d486c +IV= cdee8f4faaa2c4ca70915e45e8ee53db60661dc1d8a8359fa75bb6c09fb9ac92 +CT= b5a4525082217ba65032f9053af3ceb0b146b6da7a1a715479395c6d7fe5e73b +PT= 73df9892e343ffbbbd93b6b8312059f1ba904f05ec3c6e20a5ca7d6500b71ada +TEST= 6 +KEY= 330ab10a0fa91d8a489a19f44a096ff6980ce33b69b3c3364c1ddc6cf9fa52b6 +IV= 95c9be4626151f1b57fb1e47df09de0806f55e9089ffd04a5b6479d6eb8c32b8 +CT= 73df9892e343ffbbbd93b6b8312059f1ba904f05ec3c6e20a5ca7d6500b71ada +PT= 20883813e2c6278ae5b19dd05d7f182d498faf015d2f3fa4e5a7b8768c9eb5a3 +TEST= 7 +KEY= 13828919ed6f3a00ad2b8424177677dbd1834c3a349cfc92a9ba641a7564e715 +IV= 7bacfd34840b15a0bb6d4e4e9ac6e5b8f30928ee7d061b8440253d4408f0dd05 +CT= 20883813e2c6278ae5b19dd05d7f182d498faf015d2f3fa4e5a7b8768c9eb5a3 +PT= 4333c43dc6904831b1f7e303d3b3a3d5e7ad2c9b77f8a2e21f937affbcc71ed8 +TEST= 8 +KEY= 50b14d242bff72311cdc6727c4c5d40e362e60a143645e70b6291ee5c9a3f9cd +IV= 0cdd3ff8518b83fd7cbbce160f69c46295320a7757d37a2dc021536306b9e6ee +CT= 4333c43dc6904831b1f7e303d3b3a3d5e7ad2c9b77f8a2e21f937affbcc71ed8 +PT= 75a76bcfb1afa5da3dd8f8905b60c8fc1e91298222362308b7f2e9854d7e2cdc +TEST= 9 +KEY= 251626eb9a50d7eb21049fb79fa51cf228bf492361527d7801dbf76084ddd511 +IV= 05f382d4547293415ad37676f3cbbfef460bb9cd5233bcc9669811d41990df8f +CT= 75a76bcfb1afa5da3dd8f8905b60c8fc1e91298222362308b7f2e9854d7e2cdc +PT= b2932fb04867696ee3e746bb69d38bbac61aee6302a9d62e4b276b92d51a3e5e +TEST= 10 +KEY= 9785095bd237be85c2e3d90cf6769748eea5a74063fbab564afc9cf251c7eb4f +IV= 6f614bb6ed120ec277a60f430768a46548e723f458cd6652802615ac525c611e +CT= b2932fb04867696ee3e746bb69d38bbac61aee6302a9d62e4b276b92d51a3e5e +PT= 9dc73b44fca2690b2bd6adc8c8e4ed1102f1db77c66bda9c4f21b67d708590b4 +TEST= 11 +KEY= 0a42321f2e95d78ee93574c43e927a59ec547c37a59071ca05dd2a8f21427bfb +IV= 8bbe1ced993a3b34fb88fd88c9bd86860d58961a25ee4476c8d41bcc591d632f +CT= 9dc73b44fca2690b2bd6adc8c8e4ed1102f1db77c66bda9c4f21b67d708590b4 +PT= f9617cae6d875acc653f064ce6f5366e1bb04f43cf9bcca4d22ea5de05eea1aa +TEST= 12 +KEY= f3234eb143128d428c0a7288d8674c37f7e433746a0bbd6ed7f38f5124acda51 +IV= b3bfca71e528e967c86956e58c963ed8100bae2c6862a19548bf499359074678 +CT= f9617cae6d875acc653f064ce6f5366e1bb04f43cf9bcca4d22ea5de05eea1aa +PT= 5e3c406850136790ebf7e6f62391449f4005203899e1e8e041f4e3c005786739 +TEST= 13 +KEY= ad1f0ed91301ead267fd947efbf608a8b7e1134cf3ea558e96076c9121d4bd68 +IV= c2d09127afdb829d1a12d927933fb33c5f20e61368ec53faeaa84126882be7fb +CT= 5e3c406850136790ebf7e6f62391449f4005203899e1e8e041f4e3c005786739 +PT= 2c7609745ac8a4795f6539f032e656621019f3b5f759720e06539edd0dc1f85a +TEST= 14 +KEY= 816907ad49c94eab3898ad8ec9105ecaa7f8e0f904b327809054f24c2c154532 +IV= 2c2fc4c7687bcb1437e7bb27fa9374c41e278ed8159da7b7f4cfeeb0f457f500 +CT= 2c7609745ac8a4795f6539f032e656621019f3b5f759720e06539edd0dc1f85a +PT= afae62df0e5c5a2baada37ddf4537a3e4834cf240db1655047010781317686a4 +TEST= 15 +KEY= 2ec765724795148092429a533d4324f4efcc2fdd090242d0d755f5cd1d63c396 +IV= 44d29e0089348b32ac83c6be15fa2a65241fc69ce4791f387794530ed67182c0 +CT= afae62df0e5c5a2baada37ddf4537a3e4834cf240db1655047010781317686a4 +PT= e8cddffc1ea85c7a06c41ed9dd11fd2ff44225a19754631b19f4604852141e77 +TEST= 16 +KEY= c60aba8e593d48fa9486848ae052d9db1b8e0a7c9e5621cbcea195854f77dde1 +IV= ae764953992a87f1212b73a3063950e370a9b46414c46780e1c0b3c84485e8ac +CT= e8cddffc1ea85c7a06c41ed9dd11fd2ff44225a19754631b19f4604852141e77 +PT= 17c906d07df37155fa5c09959d771763d0b51abe43e5d58270c1b746a71c007d +TEST= 17 +KEY= d1c3bc5e24ce39af6eda8d1f7d25ceb8cb3b10c2ddb3f449be6022c3e86bdd9c +IV= af72c71867634f1452e27c8f8191e4e5f0c51ea808e5a6f7308c63bc68148cc9 +CT= 17c906d07df37155fa5c09959d771763d0b51abe43e5d58270c1b746a71c007d +PT= 0294b1299c6d628630ea71adf89dbc6fbede219e5ec34ca4ad4d44c46bbb655d +TEST= 18 +KEY= d3570d77b8a35b295e30fcb285b872d775e5315c8370b8ed132d660783d0b8c1 +IV= 6df44ae306fe1da33dfc92df6342a27caf6fbcc286165ae513776f29eecdc3e7 +CT= 0294b1299c6d628630ea71adf89dbc6fbede219e5ec34ca4ad4d44c46bbb655d +PT= a7717a0881955999ea02a9365ee3d9c556099385d4bff6def05261441af0aaeb +TEST= 19 +KEY= 7426777f393602b0b4325584db5bab1223eca2d957cf4e33e37f07439920122a +IV= 098dc4ab6beb067fb59676dfd1afcb3e4dc0b1d6c18f63af918bbf958f9e64ef +CT= a7717a0881955999ea02a9365ee3d9c556099385d4bff6def05261441af0aaeb +PT= 65da92e45965417b836ce2132fd7f712c859455b1d9a0cd2369416d91117e36d +TEST= 20 +KEY= 11fce59b605343cb375eb797f48c5c00ebb5e7824a5542e1d5eb119a8837f147 +IV= 2462361673a50748662157a8c9f4d9b4aac8c9766551f6106b155a36d687f5ed +CT= 65da92e45965417b836ce2132fd7f712c859455b1d9a0cd2369416d91117e36d +PT= be1b9e225dad1ed2eb1359ec457814d4f6d01a2d8219dd034a27a63b3a545544 +TEST= 21 +KEY= afe77bb93dfe5d19dc4dee7bb1f448d41d65fdafc84c9fe29fccb7a1b263a403 +IV= 293beff5f20847486aaefd07c46271882029377c9e40315d2587c903e416a5f5 +CT= be1b9e225dad1ed2eb1359ec457814d4f6d01a2d8219dd034a27a63b3a545544 +PT= 296b5565a4c137c74dfc51d610c001557ae335a943a0b577aae3509109c53063 +TEST= 22 +KEY= 868c2edc993f6ade91b1bfada13449816786c8068bec2a95352fe730bba69460 +IV= 3b8ed2ce596566e479ecb562c782b7b92ac955550e324b709f211c0cc8fea8ee +CT= 296b5565a4c137c74dfc51d610c001557ae335a943a0b577aae3509109c53063 +PT= 6efa81764fae6fd3ff0741a8842c6cb55d1b1e13cd458d3c1161499449bd83cf +TEST= 23 +KEY= e876afaad691050d6eb6fe05251825343a9dd61546a9a7a9244eaea4f21b17af +IV= 0153a1fea1d604427540d6a35397e00115de2d613455da34efb0eec227095287 +CT= 6efa81764fae6fd3ff0741a8842c6cb55d1b1e13cd458d3c1161499449bd83cf +PT= 41df9119103f4e1a538e543b049ab7d3995859c3b77c87d6a7c5e512d8bb2210 +TEST= 24 +KEY= a9a93eb3c6ae4b173d38aa3e218292e7a3c58fd6f1d5207f838b4bb62aa035bf +IV= 9ec14be6380733460f7efab918c63567e47e799cb313a26f144ed1aa3cf63dca +CT= 41df9119103f4e1a538e543b049ab7d3995859c3b77c87d6a7c5e512d8bb2210 +PT= c16a83ef742a591f2ee1870a29202fa8cb414a5c14845c102f7b7afed1853342 +TEST= 25 +KEY= 68c3bd5cb284120813d92d3408a2bd4f6884c58ae5517c6facf03148fb2506fd +IV= 1ec7639456668ce1311edf983b5003560e6dd94ae7eb6d3f1f3b5c92b289bdac +CT= c16a83ef742a591f2ee1870a29202fa8cb414a5c14845c102f7b7afed1853342 +PT= 1315dcbb09002ad1ffda93059f92303d49e60d4d68df811f66730c75b33b9ed4 +TEST= 26 +KEY= 7bd661e7bb8438d9ec03be3197308d722162c8c78d8efd70ca833d3d481e9829 +IV= 5c9bd899863d4a2895be70676f9791d5c9b54d41c740306a2e5c2aeda15f2c7c +CT= 1315dcbb09002ad1ffda93059f92303d49e60d4d68df811f66730c75b33b9ed4 +PT= 8d308d64012cbd1aea900172f0124486c4eff276d5c107b8a0c8f99db36a4cf3 +TEST= 27 +KEY= f6e6ec83baa885c30693bf436722c9f4e58d3ab1584ffac86a4bc4a0fb74d4da +IV= 41eb55da51ced76dd324c27ba341a1cba9a3debda53a4c19f7d51d048bf0c084 +CT= 8d308d64012cbd1aea900172f0124486c4eff276d5c107b8a0c8f99db36a4cf3 +PT= eccdf9a5e2ceaf5f8d3343ddff94764168671942f0be915fc489d063d3b41fce +TEST= 28 +KEY= 1a2b152658662a9c8ba0fc9e98b6bfb58dea23f3a8f16b97aec214c328c0cb14 +IV= 4cf8b191eedc5ade4d8e36efaef20f491966a9ab13a542be19ad66fbc50f8f08 +CT= eccdf9a5e2ceaf5f8d3343ddff94764168671942f0be915fc489d063d3b41fce +PT= 6ca83e959d2847c7473d3f7f56c79b64c9ecc30eff4a12285e5f068accad4a0d +TEST= 29 +KEY= 76832bb3c54e6d5bcc9dc3e1ce7124d14406e0fd57bb79bff09d1249e46d8119 +IV= 0354cab06752f84fd789e79dccaf1b1753b7a779acf3d21f553542a272792807 +CT= 6ca83e959d2847c7473d3f7f56c79b64c9ecc30eff4a12285e5f068accad4a0d +PT= 80568a4a5549c9f98eaa3641b936a340f27cd6d79d4cc7796ce94418efaf4653 +TEST= 30 +KEY= f6d5a1f99007a4a24237f5a077478791b67a362acaf7bec69c7456510bc2c74a +IV= 97bdb8e0d2a2c757246bf2b0e665e938c2505e3066d585ff0f0c2125ae3c8287 +CT= 80568a4a5549c9f98eaa3641b936a340f27cd6d79d4cc7796ce94418efaf4653 +PT= 88155d1a4debbfe1b81ceb301b002ef70d4b8d6085528311baa3193937d390ec +TEST= 31 +KEY= 7ec0fce3ddec1b43fa2b1e906c47a966bb31bb4a4fa53dd726d74f683c1157a6 +IV= 63a4a8f5ab171983a1e24b782eb16facd67d8b3f8790d81f392dde749ad07433 +CT= 88155d1a4debbfe1b81ceb301b002ef70d4b8d6085528311baa3193937d390ec +PT= b3573714c7668f1a60772480214108a8c6186bb6b05ce00f5559f146cbb1d93f +TEST= 32 +KEY= cd97cbf71a8a94599a5c3a104d06a1ce7d29d0fcfff9ddd8738ebe2ef7a08e99 +IV= a246b351f05a10966aad36466bace881f4fdf117f367c9870caeba1d1d071668 +CT= b3573714c7668f1a60772480214108a8c6186bb6b05ce00f5559f146cbb1d93f +PT= 5019d4e56ccb070fe8d2701af814b3f133f443f63b470dc6671e43f83403803e +TEST= 33 +KEY= 9d8e1f1276419356728e4a0ab512123f4edd930ac4bed01e1490fdd6c3a30ea7 +IV= be30e0c76296d39f11dacb5bcd6e3f493541350ffcc54e7c0b5a54eccdcf2a72 +CT= 5019d4e56ccb070fe8d2701af814b3f133f443f63b470dc6671e43f83403803e +PT= 180c8f2d8ef55e731960d359b230946587c2f87a98d5465fb71e9a12c1430a58 +TEST= 34 +KEY= 8582903ff8b4cd256bee99530722865ac91f6b705c6b9641a38e67c402e004ff +IV= e81a783cf24dc97f3ddd99a8085f15190416bb1fa396a169fbe980481bb3d69a +CT= 180c8f2d8ef55e731960d359b230946587c2f87a98d5465fb71e9a12c1430a58 +PT= 502a48a62faae7b53e65c09a9955b4a1a4a67297efdfde81edd6f2dadfccb8b6 +TEST= 35 +KEY= d5a8d899d71e2a90558b59c99e7732fb6db919e7b3b448c04e58951edd2cbc49 +IV= bb03aa58d7e4195d19e9f27aab5ca5545989f8fc6d24cdcd73ae12df1bc01f3a +CT= 502a48a62faae7b53e65c09a9955b4a1a4a67297efdfde81edd6f2dadfccb8b6 +PT= 241ee8501f28363df7e013d4f7005ea53ad6ef2896e14fe9537aa663da3387a1 +TEST= 36 +KEY= f1b630c9c8361cada26b4a1d69776c5e576ff6cf255507291d22337d071f3be8 +IV= f8509e5e7782ce0161c4e5159fdc42e49bc50e014d1a412e9247f0bdb969903e +CT= 241ee8501f28363df7e013d4f7005ea53ad6ef2896e14fe9537aa663da3387a1 +PT= 2a97be766bf95d2173ec11bcb306a01ee9189435e405d4414693c7b428ad5055 +TEST= 37 +KEY= db218ebfa3cf418cd1875ba1da71cc40be7762fac150d3685bb1f4c92fb26bbd +IV= 08ba198fe974360e23c52e7a72e0198128ce405c17536ed89d9ae58f188b5310 +CT= 2a97be766bf95d2173ec11bcb306a01ee9189435e405d4414693c7b428ad5055 +PT= 695c6800fb99a9a5489b4d92aa885a9da8c108b371214c97d9b7a485baedad48 +TEST= 38 +KEY= b27de6bf5856e829991c163370f996dd16b66a49b0719fff8206504c955fc6f5 +IV= 1f52021ebbdab7f39b2dbd41522ad0dc1f7b5964f41a1bb053efd49fa6bebfc2 +CT= 695c6800fb99a9a5489b4d92aa885a9da8c108b371214c97d9b7a485baedad48 +PT= 50d287be38758d51b104fb467e7b619dcdfb6dedd0db3c052d71048ddd133233 +TEST= 39 +KEY= e2af6101602365782818ed750e82f740db4d07a460aaa3faaf7754c1484cf4c6 +IV= 7f16e9f02b50d48564d5b467de30c6c459a6775240c9aa4a36fb4920a71fd72c +CT= 50d287be38758d51b104fb467e7b619dcdfb6dedd0db3c052d71048ddd133233 +PT= 4e57e426b94609925821f556689f76890378113f11d9eddbf159965e7a0a163d +TEST= 40 +KEY= acf88527d9656cea70391823661d81c9d835169b71734e215e2ec29f3246e2fb +IV= e060b8efc6cc2759cc0f6fddd15d826a80cff4cc138e724652d657f57636f561 +CT= 4e57e426b94609925821f556689f76890378113f11d9eddbf159965e7a0a163d +PT= 10bee1206df0bfb0cfffc4deaec2172be0bd3a99aeda885e1661cbaa04be4529 +TEST= 41 +KEY= bc466407b495d35abfc6dcfdc8df96e238882c02dfa9c67f484f093536f8a7d2 +IV= b5e6ee104144c1b3a0c4d09e6a59c1501698e12b4adb8b013f37ae250b5accaf +CT= 10bee1206df0bfb0cfffc4deaec2172be0bd3a99aeda885e1661cbaa04be4529 +PT= b93f557b945a9a3e0e8e1e6eedcfd8c42146266fd04b824882184fca079d000f +TEST= 42 +KEY= 0579317c20cf4964b148c29325104e2619ce0a6d0fe24437ca5746ff3165a7dd +IV= de3d5f73e5d98ead25efdbcbfda70e61e326738a65fe139e68280aa27ec666b2 +CT= b93f557b945a9a3e0e8e1e6eedcfd8c42146266fd04b824882184fca079d000f +PT= 60fbabc1bc41acc2b6c9309b680301855c345bb983f1a24f65aca9d0f6888c02 +TEST= 43 +KEY= 65829abd9c8ee5a60781f2084d134fa345fa51d48c13e678affbef2fc7ed2bdf +IV= f51bcc65a1e3d84a0ca79f8741289d02c2354e92a130c7fd2dac56df214e0bf1 +CT= 60fbabc1bc41acc2b6c9309b680301855c345bb983f1a24f65aca9d0f6888c02 +PT= fc7e41c0681f3515f7ac58a073d2bd88b7ff9e462186835ed4de7e4671233f59 +TEST= 44 +KEY= 99fcdb7df491d0b3f02daaa83ec1f22bf205cf92ad9565267b259169b6ce1486 +IV= c99f987b4a3cf3c7252777a622b8493dbe0dc9926f418b6de2d83044151e0c7e +CT= fc7e41c0681f3515f7ac58a073d2bd88b7ff9e462186835ed4de7e4671233f59 +PT= 41f63c5bb4a98b68fc822778e9d5570ed6cbe5b394775e346913bd3f3b8fe599 +TEST= 45 +KEY= d80ae72640385bdb0caf8dd0d714a52524ce2a2139e23b1212362c568d41f11f +IV= 4f8a70f57d2b79328c1436db974b7523f4056af26b95c86eeaeee6f88fe8d804 +CT= 41f63c5bb4a98b68fc822778e9d5570ed6cbe5b394775e346913bd3f3b8fe599 +PT= 44fec901e0e62d49a93c42e2a0766e15aeaf052c69f5e5e9c0b7eeb228e89520 +TEST= 46 +KEY= 9cf42e27a0de7692a593cf327762cb308a612f0d5017defbd281c2e4a5a9643f +IV= 3ee06164ba90d6df6d795ed955d3733537a70be86e035617e99c605f8409507f +CT= 44fec901e0e62d49a93c42e2a0766e15aeaf052c69f5e5e9c0b7eeb228e89520 +PT= c5338c100d969b5c503b781cf368cc39631c6cdc441e9236e58b5a4b50df2b93 +TEST= 47 +KEY= 59c7a237ad48edcef5a8b72e840a0709e97d43d114094ccd370a98aff5764fac +IV= 66265e067764171672e1455331d3de0d873b1c8d4b2728d1b722aa60c5e8feaf +CT= c5338c100d969b5c503b781cf368cc39631c6cdc441e9236e58b5a4b50df2b93 +PT= 37340036a1baff3f8b2364bb08b9d9f893117548ef57b1df1de5f45c6520466a +TEST= 48 +KEY= 6ef3a2010cf212f17e8bd3958cb3def17a6c3699fb5efd122aef6cf3905609c6 +IV= f6cd362ae76a977caa46cc8ae9e256e99070de8dea9c4e421d1a439fcb05fd1b +CT= 37340036a1baff3f8b2364bb08b9d9f893117548ef57b1df1de5f45c6520466a +PT= 6f8bfec5eaa3318cdbf43f04695dfd225e69b17cb8718fea953313f4e01366a3 +TEST= 49 +KEY= 01785cc4e651237da57fec91e5ee23d3240587e5432f72f8bfdc7f0770456f65 +IV= 703a0ab1e815999d61b8066bde96905fce6ab5afc0ec8c6260ac19d23a0bbb09 +CT= 6f8bfec5eaa3318cdbf43f04695dfd225e69b17cb8718fea953313f4e01366a3 +PT= 2789269ff6950076490e76b9a60475d30fa94f8e04175772ad3cf7056db8eac7 +TEST= 50 +KEY= 26f17a5b10c4230bec719a2843ea56002bacc86b4738258a12e088021dfd85a2 +IV= 01592625aa147469aa81c72c6b65fc981f1d79d3b5a1f1aced0322b1212eaec7 +CT= 2789269ff6950076490e76b9a60475d30fa94f8e04175772ad3cf7056db8eac7 +PT= 37f6e0d4dee9e2041899fc8cca4ea15f8d8019e33f7fea896fd787434bcb9105 +TEST= 51 +KEY= 11079a8fce2dc10ff4e866a489a4f75fa62cd1887847cf037d370f41563614a7 +IV= e12d01e6d43dfc03507fddf2990234b3ecf644c5e8205e74fde09ae098c936ee +CT= 37f6e0d4dee9e2041899fc8cca4ea15f8d8019e33f7fea896fd787434bcb9105 +PT= 73d14cf623d9d2c46801a674000302e41c925ed6e5a67d86144d85e52597fc22 +TEST= 52 +KEY= 62d6d679edf413cb9ce9c0d089a7f5bbbabe8f5e9de1b285697a8aa473a1e885 +IV= a35e4deec931b207659bc42589b05e41ea0761238d67225b72a81aee6fd9e2ac +CT= 73d14cf623d9d2c46801a674000302e41c925ed6e5a67d86144d85e52597fc22 +PT= f4a1fd4ff5e1aa31a9607b28265dc538f64580b05d052365461fab0ce2766723 +TEST= 53 +KEY= 96772b361815b9fa3589bbf8affa30834cfb0feec0e491e02f6521a891d78fa6 +IV= e6c762ed725b559ee078d85189220e8bbcd3a626afb0e4414192ce8157588997 +CT= f4a1fd4ff5e1aa31a9607b28265dc538f64580b05d052365461fab0ce2766723 +PT= 326a3b14260290a3e874ff2aeab7e41f1fe365a48bc2500bf904482707fcfe4c +TEST= 54 +KEY= a41d10223e172959ddfd44d2454dd49c53186a4a4b26c1ebd661698f962b71ea +IV= 5c6d7c70c81add96f7814b5d256eed54ce34cdb9c9fc3ae99fd639abe839248f +CT= 326a3b14260290a3e874ff2aeab7e41f1fe365a48bc2500bf904482707fcfe4c +PT= d358b200119b8400c41cfa671565e081bb3c75dc057fcec8338873dcbc500d72 +TEST= 55 +KEY= 7745a2222f8cad5919e1beb55028341de8241f964e590f23e5e91a532a7b7c98 +IV= 5dcc32262523d59f7ae4953c63c13ea8ea1315999c9bebd36e8c16466801d8d2 +CT= d358b200119b8400c41cfa671565e081bb3c75dc057fcec8338873dcbc500d72 +PT= 88c794372494c1713b6c91de5d14c8e61ba0527309fabde4b3fb7655dfce3d8f +TEST= 56 +KEY= ff8236150b186c28228d2f6b0d3cfcfbf3844de547a3b2c756126c06f5b54117 +IV= 46b5432f8e7f04f4e0520e3cef369bc0042a7b816786299cb7ea1f88ad6dd336 +CT= 88c794372494c1713b6c91de5d14c8e61ba0527309fabde4b3fb7655dfce3d8f +PT= e83359ce5f54872c22e717a37921210172c87c725583e8b38c92b0c1b120f89c +TEST= 57 +KEY= 17b16fdb544ceb04006a38c8741dddfa814c319712205a74da80dcc74495b98b +IV= 51580851274ff2338cca1cfb125f083ff41fb32cef7108b053082c34addfd9de +CT= e83359ce5f54872c22e717a37921210172c87c725583e8b38c92b0c1b120f89c +PT= d13babdfe11d9b4828c3f40af939667ca0bcbbea5703c8306c748485816de453 +TEST= 58 +KEY= c68ac404b551704c28a9ccc28d24bb8621f08a7d45239244b6f45842c5f85dd8 +IV= 24d04e6c20b7b61fbe200039b67bc786635f938c6671d1f1da3bb2683222d36a +CT= d13babdfe11d9b4828c3f40af939667ca0bcbbea5703c8306c748485816de453 +PT= 6c53f259b4189adba9ef313c77e7cd91e32328f09a278bfa969800a3b7edf88d +TEST= 59 +KEY= aad9365d0149ea978146fdfefac37617c2d3a28ddf0419be206c58e17215a555 +IV= a84bc8a1d9d3821f7a77e50948a0728deffd02ba380563371f7f09b0e2e44dc3 +CT= 6c53f259b4189adba9ef313c77e7cd91e32328f09a278bfa969800a3b7edf88d +PT= cf96819a14cd5122dc52fb6ea67bd8dc14f28917a1e8adc44764c9526f71ab05 +TEST= 60 +KEY= 654fb7c71584bbb55d1406905cb8aecbd6212b9a7eecb47a670891b31d640e50 +IV= 78be626ccde5766feb305313aa91e2bb2cc9604173db9f5846846a935a91eec8 +CT= cf96819a14cd5122dc52fb6ea67bd8dc14f28917a1e8adc44764c9526f71ab05 +PT= b69d749d2fe429abeaebbf4eb7bb4719ca5437131ebd1cd6ba1133efb111c890 +TEST= 61 +KEY= d3d2c35a3a60921eb7ffb9deeb03e9d21c751c896051a8acdd19a25cac75c6c0 +IV= 9e210d6756c17d9fe83f3e7086f8a8a1ade04e8819babbacf177b40689a0da8c +CT= b69d749d2fe429abeaebbf4eb7bb4719ca5437131ebd1cd6ba1133efb111c890 +PT= 266c839c10fe527c030d7bf5928f56033a0d86ec40dad5e6fcb6522caeb9e821 +TEST= 62 +KEY= f5be40c62a9ec062b4f2c22b798cbfd126789a65208b7d4a21aff07002cc2ee1 +IV= e6f4e6072e99dce06f28137a5a9b492c600782fcbe3b24449ddc4fe971fc6264 +CT= 266c839c10fe527c030d7bf5928f56033a0d86ec40dad5e6fcb6522caeb9e821 +PT= e41fa129754e4314dd86e269a7fa2bc25f0406803e09ee11e181c4b4a4f1c65d +TEST= 63 +KEY= 11a1e1ef5fd0837669742042de769413797c9ce51e82935bc02e34c4a63de8bc +IV= 8d565fe978c16a1389c2851bc10b87f57ae7539e646ccebd3bbbb178b7e1e16c +CT= e41fa129754e4314dd86e269a7fa2bc25f0406803e09ee11e181c4b4a4f1c65d +PT= f1c53e5de76e198fc413a2703a704dbaf6446cc2a86f27128793b73dcedcfa97 +TEST= 64 +KEY= e064dfb2b8be9af9ad678232e406d9a98f38f027b6edb44947bd83f968e1122b +IV= 5eadc1506adfee4670bb7e4c529ca66487c5cfc968656af2cc32c2762745d830 +CT= f1c53e5de76e198fc413a2703a704dbaf6446cc2a86f27128793b73dcedcfa97 +PT= 5f3f1afc3cc01b5f3784ffd6b28f37f048c7cad6a5718d8a0e7604d59ae24d39 +TEST= 65 +KEY= bf5bc54e847e81a69ae37de45689ee59c7ff3af1139c39c349cb872cf2035f12 +IV= b97bc0546f8026b4657b8f6d46fdc82a8e1c596c06b4fa5a334b734ea4198767 +CT= 5f3f1afc3cc01b5f3784ffd6b28f37f048c7cad6a5718d8a0e7604d59ae24d39 +PT= 53b912c9511876d0d9a1424b3d1524904f66f6898c405b0a41293bc83dfe98f2 +TEST= 66 +KEY= ece2d787d566f77643423faf6b9ccac98899cc789fdc62c908e2bce4cffdc7e0 +IV= 535f89d6cd6642b4ac00443bb5b43cc941d2a65eeb4afb77501029d80320baae +CT= 53b912c9511876d0d9a1424b3d1524904f66f6898c405b0a41293bc83dfe98f2 +PT= 6613e5a5782d0f57db0e9c2431bfc89bd2a9162d1c688c14aa8a23fc1909f7f5 +TEST= 67 +KEY= 8af13222ad4bf821984ca38b5a2302525a30da5583b4eedda2689f18d6f43015 +IV= 2967fe4b1806ca87b9190c07f602b213824f5e7973d98f8e8e25711948490eed +CT= 6613e5a5782d0f57db0e9c2431bfc89bd2a9162d1c688c14aa8a23fc1909f7f5 +PT= f8474b538227fcd3405de11450a0b12b27005973a88be144c3a4519683a4d9a4 +TEST= 68 +KEY= 72b679712f6c04f2d811429f0a83b3797d3083262b3f0f9961ccce8e5550e9b1 +IV= fcf69c10d40bc8ef782ea42c96b0de0b349d7104c75531b8fb6c5e1eeb4fd9e7 +CT= f8474b538227fcd3405de11450a0b12b27005973a88be144c3a4519683a4d9a4 +PT= 6e15516b2ac4f41664b298650b39e52d2ed718566bdbb4af25cf81cd48d0a03f +TEST= 69 +KEY= 1ca3281a05a8f0e4bca3dafa01ba565453e79b7040e4bb3644034f431d80498e +IV= 679acf806097ae2d1253c33595919eb2bd4caf4276792a2bc02204c39a3be9f8 +CT= 6e15516b2ac4f41664b298650b39e52d2ed718566bdbb4af25cf81cd48d0a03f +PT= f112abb8b86edf96748c903049b082799243121a81e64271d5d81d15258dd972 +TEST= 70 +KEY= edb183a2bdc62f72c82f4aca480ad42dc1a4896ac102f94791db5256380d90fc +IV= 9dacf1f4b7eb7976cb72412a27f6945d610558515620fca160b8620fb0f6f458 +CT= f112abb8b86edf96748c903049b082799243121a81e64271d5d81d15258dd972 +PT= 94d6f7e158022b2ccc60b01e9a186c678aac348ebd11851662dd37d284a330f4 +TEST= 71 +KEY= 79677443e5c4045e044ffad4d212b84a4b08bde47c137c51f3066584bcaea008 +IV= 7fec34c4ebe319867945f62692b63f7d521e9cde7fae7eaa20192d8319fe8052 +CT= 94d6f7e158022b2ccc60b01e9a186c678aac348ebd11851662dd37d284a330f4 +PT= 489b42edf8cdd84f10914470a7c8d5389c810174f40802f37accf6ab7d0d8510 +TEST= 72 +KEY= 31fc36ae1d09dc1114debea475da6d72d789bc90881b7ea289ca932fc1a32518 +IV= b4263d52cb2e4fd5e3f726b62484b70d85c377aa0e4f6d642294f55f43363ed2 +CT= 489b42edf8cdd84f10914470a7c8d5389c810174f40802f37accf6ab7d0d8510 +PT= a478ddea207910df3624ac7edc641ee20d9aa55e205690226e9f877eae53058c +TEST= 73 +KEY= 9584eb443d70ccce22fa12daa9be7390da1319cea84dee80e75514516ff02094 +IV= dad66560890de0a1b0f49434826a9e3989878e6519e0cfcb4f874050d14f5df0 +CT= a478ddea207910df3624ac7edc641ee20d9aa55e205690226e9f877eae53058c +PT= 8dd6028c65bf19e4a5396e3ab10b95e5418f4e389cf279ebcf3fe95c7482e889 +TEST= 74 +KEY= 1852e9c858cfd52a87c37ce018b5e6759b9c57f634bf976b286afd0d1b72c81d +IV= f95fa89f40f96d6029b4032649534fa39c09f65e445b417d2d3f4b1a889d20ff +CT= 8dd6028c65bf19e4a5396e3ab10b95e5418f4e389cf279ebcf3fe95c7482e889 +PT= 7102f726a28ff811c6d6f49e1af73c6178e3413f7ba704bde582deba8bcd7a0f +TEST= 75 +KEY= 69501eeefa402d3b4115887e0242da14e37f16c94f1893d6cde823b790bfb212 +IV= bbea52452987cfd18c4c401c2e6da6f2fef146335e10b418c0bff8e5b3752e66 +CT= 7102f726a28ff811c6d6f49e1af73c6178e3413f7ba704bde582deba8bcd7a0f +PT= 983cd89ee8fe89415cc4a9c9d28b49a17a86b6d49d09cbe03a3da41afdba9d00 +TEST= 76 +KEY= f16cc67012bea47a1dd121b7d0c993b599f9a01dd2115836f7d587ad6d052f12 +IV= de5912f8b1dc8e6f7f059793128eae9f6a1ec36942d49b8a4a1c2c24a0e7b284 +CT= 983cd89ee8fe89415cc4a9c9d28b49a17a86b6d49d09cbe03a3da41afdba9d00 +PT= 33722823027c9c53281d847986488a96d4aec12094a49f30d0c7244e4fe23700 +TEST= 77 +KEY= c21eee5310c2382935cca5ce568119234d57613d46b5c7062712a3e322e71812 +IV= 4a1db9933e88f97a0e095d615f40b622edabbc32b63585e32288be9deb575c29 +CT= 33722823027c9c53281d847986488a96d4aec12094a49f30d0c7244e4fe23700 +PT= 8bfc4566b9e96380f9d2c8cbca337d58cdb4be9200764a423c24be55ad2ba9cf +TEST= 78 +KEY= 49e2ab35a92b5ba9cc1e6d059cb2647b80e3dfaf46c38d441b361db68fccb1dd +IV= c09b304f93e0379eebcb126e5950ac18381b93d6e7cf4b9301e1a2f323989899 +CT= 8bfc4566b9e96380f9d2c8cbca337d58cdb4be9200764a423c24be55ad2ba9cf +PT= d09862a4479cb532784cd402c093cd61db2558a0b9295d9912f1f6896fff7b3b +TEST= 79 +KEY= 997ac991eeb7ee9bb452b9075c21a91a5bc6870fffead0dd09c7eb3fe033cae6 +IV= 7eca281451b7e8c2af0825dbd4ed38f76a0abcaddf55dfdc869eddad6b424cbe +CT= d09862a4479cb532784cd402c093cd61db2558a0b9295d9912f1f6896fff7b3b +PT= 919f7ab7597cfe11e547593d20c3a8c08ef0e6144438135ba9828c0c7e6ffccb +TEST= 80 +KEY= 08e5b326b7cb108a5115e03a7ce201dad536611bbbd2c386a04567339e5c362d +IV= 51dfb56a1ee416151eb42260f46e583084d90491218e5abcc41521af54641194 +CT= 919f7ab7597cfe11e547593d20c3a8c08ef0e6144438135ba9828c0c7e6ffccb +PT= 75853d1f7cf2a2531e112a739da701a10d91b6c48bdbad9c1cb2769844c9ecbb +TEST= 81 +KEY= 7d608e39cb39b2d94f04ca49e145007bd8a7d7df30096e1abcf711abda95da96 +IV= faed0b43913a13c1b077d965478b211764f5976c519cbd71b9d1cf52363bd3ce +CT= 75853d1f7cf2a2531e112a739da701a10d91b6c48bdbad9c1cb2769844c9ecbb +PT= 433233029daf4d0449491d9cab9fb660dc6064dc38fdfc14c564e7da98eee811 +TEST= 82 +KEY= 3e52bd3b5696ffdd064dd7d54adab61b04c7b30308f4920e7993f671427b3287 +IV= 900d1eba411d709d9fbeea561f013aae30448fc210e4e9f7d92a20f91e87f551 +CT= 433233029daf4d0449491d9cab9fb660dc6064dc38fdfc14c564e7da98eee811 +PT= 1ceff0631f566450bda12b2ec79d474f5999ee077ed296b69fbcdeadd695bad3 +TEST= 83 +KEY= 22bd4d5849c09b8dbbecfcfb8d47f1545d5e5d04762604b8e62f28dc94ee8854 +IV= ab2f31aa110203ce7e95389d3c6d7903fa4a1a31f7afa2a83b9b6f1132f8655e +CT= 1ceff0631f566450bda12b2ec79d474f5999ee077ed296b69fbcdeadd695bad3 +PT= 2c747491681be2a6b50591fd6f0e72171b55cebf50ee2fbd83afef2ab0952bc2 +TEST= 84 +KEY= 0ec939c921db792b0ee96d06e2498343460b93bb26c82b056580c7f6247ba396 +IV= d996ab27c460f49bd34dba1ab297d64110ee489e627d2f7d95f718c37e8b95b0 +CT= 2c747491681be2a6b50591fd6f0e72171b55cebf50ee2fbd83afef2ab0952bc2 +PT= 9b5f0e820652e7d3fec0344d53d9cd85fc16113767116bc9faeafa3ea396fd07 +TEST= 85 +KEY= 9596374b27899ef8f029594bb1904ec6ba1d828c41d940cc9f6a3dc887ed5e91 +IV= b31f12312ffe5d149b1e042914d2615a5e933f4f3cebdbe72c8dc3ddbacb02e4 +CT= 9b5f0e820652e7d3fec0344d53d9cd85fc16113767116bc9faeafa3ea396fd07 +PT= 02ace11bb0aa38af2d1a49b93f7df78327aec9d20d88d3e7a7bc16f01b5246a1 +TEST= 86 +KEY= 973ad6509723a657dd3310f28eedb9459db34b5e4c51932b38d62b389cbf1830 +IV= d9e2b1d31d3c9f651a84cae4f1d53523c58dd5f1ca22998f5bc5019af8f9043f +CT= 02ace11bb0aa38af2d1a49b93f7df78327aec9d20d88d3e7a7bc16f01b5246a1 +PT= bd2065a8cc5235ad8bae020b970d74b599befc200fc31185c79c0ff691d05fdd +TEST= 87 +KEY= 2a1ab3f85b7193fa569d12f919e0cdf0040db77e439282aeff4a24ce0d6f47ed +IV= f9f326aae9d35bbf29acce371f5fc2e3380d271f67a4a037f0822d6633cbf658 +CT= bd2065a8cc5235ad8bae020b970d74b599befc200fc31185c79c0ff691d05fdd +PT= fc5e693e86c4397850bb9815eb6d533e7794cafca38a133a7c584add4f099b7a +TEST= 88 +KEY= d644dac6ddb5aa8206268aecf28d9ece73997d82e018919483126e134266dc97 +IV= bf0b04d26e2d774a28b6c563aab85142817f63e54b1d26cca3d0bdb3e2e6d971 +CT= fc5e693e86c4397850bb9815eb6d533e7794cafca38a133a7c584add4f099b7a +PT= 1c80e7536cde6597a012233c3fbd8542759778885592a50b9a8246b51bec5cd6 +TEST= 89 +KEY= cac43d95b16bcf15a634a9d0cd301b8c060e050ab58a349f199028a6598a8041 +IV= 741217d006ca032bb13431a682a58a380300d6ab67e7f7154edb67a7494226f4 +CT= 1c80e7536cde6597a012233c3fbd8542759778885592a50b9a8246b51bec5cd6 +PT= e6e0a8bbc5a0c2f40cd22c6c06bab17a92fddba3d4a9430a883f695c72d49de0 +TEST= 90 +KEY= 2c24952e74cb0de1aae685bccb8aaaf694f3dea96123779591af41fa2b5e1da1 +IV= a82b3e29fb1c71ec56b6e328c432476e28c0d8f4aacd3d87de2f865a55c7a63b +CT= e6e0a8bbc5a0c2f40cd22c6c06bab17a92fddba3d4a9430a883f695c72d49de0 +PT= 78a58fd49b3668aedf22b2c573e6867ef9d3e12a78da988128f4702acaecfacc +TEST= 91 +KEY= 54811afaeffd654f75c43779b86c2c886d203f8319f9ef14b95b31d0e1b2e76d +IV= fd75d0ad1844c4e2b6237aaf003f0dfb6612d905ae8d79ad43cec280e5b1fa1d +CT= 78a58fd49b3668aedf22b2c573e6867ef9d3e12a78da988128f4702acaecfacc +PT= 07130dc9b150eeb66105d9f5416d3fdbd21a913ef376db9d9c2798f8011278f0 +TEST= 92 +KEY= 539217335ead8bf914c1ee8cf9011353bf3aaebdea8f3489257ca928e0a09f9d +IV= d47aab268242a436746955596ce4be0719b77aab253aa386d29b387fac3c3317 +CT= 07130dc9b150eeb66105d9f5416d3fdbd21a913ef376db9d9c2798f8011278f0 +PT= 940346b34ba1a39f29e411f8399c6b13845c2944ca0593c6c74f3510a05f2d02 +TEST= 93 +KEY= c7915180150c28663d25ff74c09d78403b6687f9208aa74fe2339c3840ffb29f +IV= 3194a2c58085dbec0f382529eb0900c868fa7fe0ed5ba18aec2ad7f02fb2017d +CT= 940346b34ba1a39f29e411f8399c6b13845c2944ca0593c6c74f3510a05f2d02 +PT= 114296f81c6ffd03224d79052f452f5dbe344792f8a3b410301dadf3cf932a24 +TEST= 94 +KEY= d6d3c7780963d5651f688671efd8571d8552c06bd829135fd22e31cb8f6c98bb +IV= 336a93957f70bd3bad6f75c0ee7821c989325b0483d963d47fd5c2d06043fad4 +CT= 114296f81c6ffd03224d79052f452f5dbe344792f8a3b410301dadf3cf932a24 +PT= c779ceee0327f095bf8beb14f62af4d8d53b9a6e6bd9410cbcd4de522058b996 +TEST= 95 +KEY= 11aa09960a4425f0a0e36d6519f2a3c550695a05b3f052536efaef99af34212d +IV= 09d7f9e0eeadfd051b6c4c83591b551745a9bcc8672e592ee61cc1d4347523de +CT= c779ceee0327f095bf8beb14f62af4d8d53b9a6e6bd9410cbcd4de522058b996 +PT= 4cbd8b566940f1cbe8f5f60cc8434caec8eeae69476767c25b3b131671964c12 +TEST= 96 +KEY= 5d1782c06304d43b48169b69d1b1ef6b9887f46cf497359135c1fc8fdea26d3f +IV= dd7059a4ef033ee5c54a0015ee29ca09abcbc367d0dbbd6bbcccb1a742e118a5 +CT= 4cbd8b566940f1cbe8f5f60cc8434caec8eeae69476767c25b3b131671964c12 +PT= 13649278538771819402c526b4174a3dfb2fe8658819255cdc9fcf9280e1481f +TEST= 97 +KEY= 4e7310b83083a5badc145e4f65a6a55663a81c097c8e10cde95e331d5e432520 +IV= 0fd750d94742a45fa965f7ece491e81baace983608cf869bc46e69bbd223a1ad +CT= 13649278538771819402c526b4174a3dfb2fe8658819255cdc9fcf9280e1481f +PT= 68fe93b716558cbbd9e5cc9b8f839077e3a4fe694c33d83c48ccba02ee3f489f +TEST= 98 +KEY= 268d830f26d6290105f192d4ea253521800ce26030bdc8f1a192891fb07c6dbf +IV= d4d0df26e9e6a22985acb9f37cd57b678da1441853da2eddb66dcd05167ff2cc +CT= 68fe93b716558cbbd9e5cc9b8f839077e3a4fe694c33d83c48ccba02ee3f489f +PT= 13c1c2d9baf347763e495e7f9beff5924c045eba94c29b0702d9a114d633d5ed +TEST= 99 +KEY= 354c41d69c256e773bb8ccab71cac0b3cc08bcdaa47f53f6a34b280b664fb852 +IV= ed5a9436f345f648522a66168880e21075765a013ce71d0fbdc985f1b6097f2c +CT= 13c1c2d9baf347763e495e7f9beff5924c045eba94c29b0702d9a114d633d5ed +PT= 105bff6be5f8655c4298f2fe11a844b8bb030b3b687e2d9f7bef5e5751f2fa44 +TEST= 100 +KEY= 2517bebd79dd0b2b79203e556062840b770bb7e1cc017e69d8a4765c37bd4216 +IV= 72948686ffdf0be3e6377c8a3d493b8aaf0f299a43780ce4f4959160a723fc39 +CT= 105bff6be5f8655c4298f2fe11a844b8bb030b3b687e2d9f7bef5e5751f2fa44 +PT= 1ff418f44a1d94fccbf328a74f51d8571218f1886fe4173c080826f86a0c60a4 +TEST= 101 +KEY= 3ae3a64933c09fd7b2d316f22f335c5c65134669a3e56955d0ac50a45db122b2 +IV= aa3b7c3c047c7875176282effb1a4f0d1ec15e22b72a8796c8f787dd95f67509 +CT= 1ff418f44a1d94fccbf328a74f51d8571218f1886fe4173c080826f86a0c60a4 +PT= aca6c515a56d92983dec5f9a8bd82094f66e47969d85e41fbf81bbde20f2705a +TEST= 102 +KEY= 9645635c96ad0d4f8f3f4968a4eb7cc8937d01ff3e608d4a6f2deb7a7d4352e8 +IV= 19256ed9876ce89b7c1fe429423923699c02b70934f3b687625dcdae9ddbd726 +CT= aca6c515a56d92983dec5f9a8bd82094f66e47969d85e41fbf81bbde20f2705a +PT= 47fb3c6f97c70ec34e71c0533202beda83e8df1dcb7d6e53ce821ce33b5ddcf3 +TEST= 103 +KEY= d1be5f33016a038cc14e893b96e9c2121095dee2f51de319a1aff799461e8e1b +IV= 75301ab6d40b924ce69378dbc42cbd7357a9366af2fa770bb6e7a7df9a10ff0a +CT= 47fb3c6f97c70ec34e71c0533202beda83e8df1dcb7d6e53ce821ce33b5ddcf3 +PT= 18349bf5d694f62bdeadfa49bcfef492967fe8dae667d30787546b68686022e1 +TEST= 104 +KEY= c98ac4c6d7fef5a71fe373722a17368086ea3638137a301e26fb9cf12e7eacfa +IV= d027220f2e1cc5b2884c3d77f37e58e48d7a0593affaee1b0899a40a235d73e6 +CT= 18349bf5d694f62bdeadfa49bcfef492967fe8dae667d30787546b68686022e1 +PT= 3d2d7b33ffc54041596e09518194d5b371204111c50299b5dce872d18ecbe533 +TEST= 105 +KEY= f4a7bff5283bb5e6468d7a23ab83e333f7ca7729d678a9abfa13ee20a0b549c9 +IV= 298dcb523a37344ac972ba6309a4ffa2aa243c6373ad95f21125daf4ce927f39 +CT= 3d2d7b33ffc54041596e09518194d5b371204111c50299b5dce872d18ecbe533 +PT= b6ef2213e93bec65aa6d304f94b637e17ded90b7636951792592ccf0a77671be +TEST= 106 +KEY= 42489de6c1005983ece04a6c3f35d4d28a27e79eb511f8d2df8122d007c33877 +IV= 523fe5f7ef3c5f0ebeaa33cb5d31755755e587465a690044839f17eeea84519a +CT= b6ef2213e93bec65aa6d304f94b637e17ded90b7636951792592ccf0a77671be +PT= 3704b6801b07b32b8670dd70b705b9d8dcb02cd8ae6168671dd67421b3f727ba +TEST= 107 +KEY= 754c2b66da07eaa86a90971c88306d0a5697cb461b7090b5c25756f1b4341fcd +IV= 041c9c2d30c2c7971dbeb6d1a05cdedcda01b67b5d1def833839413a7977d7f2 +CT= 3704b6801b07b32b8670dd70b705b9d8dcb02cd8ae6168671dd67421b3f727ba +PT= 8c3ff652c820b9feea6084ef7766159a3981f2309402918c55435880a1fb6873 +TEST= 108 +KEY= f973dd341227535680f013f3ff5678906f1639768f72013997140e7115cf77be +IV= 3b3d20da579ab774a6921fe439cfa5b9f78f39bd9e9a58d3e1c0acfa29dd1cbe +CT= 8c3ff652c820b9feea6084ef7766159a3981f2309402918c55435880a1fb6873 +PT= c0d079fd92457cec89ff80630728be2521a6e8096460183d48ada5f72c97856a +TEST= 109 +KEY= 39a3a4c980622fba090f9390f87ec6b54eb0d17feb121904dfb9ab863958f2d4 +IV= c22ddb4002a5874575ce8d4c683d1854823ddbe26fc450d21e99d61a4ee74e9a +CT= c0d079fd92457cec89ff80630728be2521a6e8096460183d48ada5f72c97856a +PT= a1dcddc1ae81f7aa8105100c077f8c5027a1dafd4824b0ccb9a7999b0ee97e36 +TEST= 110 +KEY= 987f79082ee3d810880a839cff014ae569110b82a336a9c8661e321d37b18ce2 +IV= 83d78e33150be6da3b6d1a2984ed02e2ab7fb4b355999e3d269c731ae450808c +CT= a1dcddc1ae81f7aa8105100c077f8c5027a1dafd4824b0ccb9a7999b0ee97e36 +PT= 693458f9411c14d2f348bf6b59bfd4cab9b7cd2374f264396ee4326844e3cdf1 +TEST= 111 +KEY= f14b21f16fffccc27b423cf7a6be9e2fd0a6c6a1d7c4cdf108fa007573524113 +IV= c1211c744b981fbffefe7454fb57a2b79519e9adc3d4cf1dab867816cb709f4e +CT= 693458f9411c14d2f348bf6b59bfd4cab9b7cd2374f264396ee4326844e3cdf1 +PT= 0f5a7cbbfb183ad7988b4207a38836796116cc64bea1a4ce7766bba4975eb0e2 +TEST= 112 +KEY= fe115d4a94e7f615e3c97ef00536a856b1b00ac56965693f7f9cbbd1e40cf1f1 +IV= 8910cd7b42dfebfcb036b0b965559bf5cc7fc10d1c0f72aa90760c2cbd6bde5c +CT= 0f5a7cbbfb183ad7988b4207a38836796116cc64bea1a4ce7766bba4975eb0e2 +PT= 8e108bf0ffa4f3b735de5b76f534e77ee381cb01545fc2a1c321897f44212f6c +TEST= 113 +KEY= 7001d6ba6b4305a2d6172586f0024f285231c1c43d3aab9ebcbd32aea02dde9d +IV= 1e0d873ae3868433139d62f5c7129aa9a572c3d292250bb9d4e95bb067939e24 +CT= 8e108bf0ffa4f3b735de5b76f534e77ee381cb01545fc2a1c321897f44212f6c +PT= 66b1489e482037aac3029239a4ad14064e0b3dbf05d27771e8b0a642eecfe6be +TEST= 114 +KEY= 16b09e24236332081515b7bf54af5b2e1c3afc7b38e8dcef540d94ec4ee23823 +IV= 43808fdd44b47e193403b2f8fda7330e96aeb7fff4292847b7bdf6ea70957ff1 +CT= 66b1489e482037aac3029239a4ad14064e0b3dbf05d27771e8b0a642eecfe6be +PT= 903b0fbb6900fefe69adba66685b2cb947cc6d105e576ceecfb6910338711e95 +TEST= 115 +KEY= 868b919f4a63ccf67cb80dd93cf477975bf6916b66bfb0019bbb05ef769326b6 +IV= 1bc971c1b04904513ab9c4b4d2131d025e4eb791133f1c38c7e6aace939a47b5 +CT= 903b0fbb6900fefe69adba66685b2cb947cc6d105e576ceecfb6910338711e95 +PT= 584dc9b65cb318738fd44ffc2997fe119e224fe2d19aaf3718033d8c9acfa99e +TEST= 116 +KEY= dec6582916d0d485f36c422515638986c5d4de89b7251f3683b83863ec5c8f28 +IV= 039304a4d5dad7a55d89611be4743ed5b878ff1fd3d608bc45272dc0b55e237e +CT= 584dc9b65cb318738fd44ffc2997fe119e224fe2d19aaf3718033d8c9acfa99e +PT= dfeb144f3cf0bd0cf91b2c8fb9f9ed7ac3d99313f6ae038e86d4708dda04f9a9 +TEST= 117 +KEY= 012d4c662a2069890a776eaaac9a64fc060d4d9a418b1cb8056c48ee36587681 +IV= e726e0cd5807b1e5dc7492eac17d71c9c96c69d3fccd1cdd6f594e379b563944 +CT= dfeb144f3cf0bd0cf91b2c8fb9f9ed7ac3d99313f6ae038e86d4708dda04f9a9 +PT= 5419f5c405ae4c50a292ef21dc5dcdc20ec933d67e537112579200db47e1d305 +TEST= 118 +KEY= 5534b9a22f8e25d9a8e5818b70c7a93e08c47e4c3fd86daa52fe483571b9a584 +IV= 3064bc550a68dc8abc664f59dd6e9b0f9b42bfa76fa8b66865dfa2b47b671a8c +CT= 5419f5c405ae4c50a292ef21dc5dcdc20ec933d67e537112579200db47e1d305 +PT= 9005322eb491f1be3bc0acdefbd4b6c2d799cfb2d720d9784bb1b680a3ec4d2f +TEST= 119 +KEY= c5318b8c9b1fd46793252d558b131ffcdf5db1fee8f8b4d2194ffeb5d255e8ab +IV= d978fcd62df69026c64b3f5a55cbe51e910225bba328e5a53dad3fbe2eff5b04 +CT= 9005322eb491f1be3bc0acdefbd4b6c2d799cfb2d720d9784bb1b680a3ec4d2f +PT= fa4deaadd91a4340f91cfce158b567e485ac838df7115b583ee13d451ef37482 +TEST= 120 +KEY= 3f7c6121420597276a39d1b4d3a678185af132731fe9ef8a27aec3f0cca69c29 +IV= 9ac52cb5d53862bc9aaefd058c99222f6c29db93b5831e7208a28914b5e06555 +CT= fa4deaadd91a4340f91cfce158b567e485ac838df7115b583ee13d451ef37482 +PT= 0a017ec2ea78bf04dccc2c41302f9ee1401837ab790948f4e6bea439371d6cea +TEST= 121 +KEY= 357d1fe3a87d2823b6f5fdf5e389e6f91ae905d866e0a77ec11067c9fbbbf0c3 +IV= f69add6cd0045767b28ecefd5a1e6b0d0ce36caa5316455b4e86abb45e9f2caf +CT= 0a017ec2ea78bf04dccc2c41302f9ee1401837ab790948f4e6bea439371d6cea +PT= b499e6705c882af0abe5c180633486459a61dc7342ed7bb4df8c79984e4c1bc0 +TEST= 122 +KEY= 81e4f993f4f502d31d103c7580bd60bc8088d9ab240ddcca1e9c1e51b5f7eb03 +IV= 432d0d7345dbe16be245ef825d8881706ce83f12d7f1981493ab064b4990a386 +CT= b499e6705c882af0abe5c180633486459a61dc7342ed7bb4df8c79984e4c1bc0 +PT= bfc077f0e71cbdb5aac9bdeb5847041f12244ac3e64d7ed770d83a55eba4cf3a +TEST= 123 +KEY= 3e248e6313e9bf66b7d9819ed8fa64a392ac9368c240a21d6e4424045e532439 +IV= ad3ad6a3a044611aa8df45f952819c62c6f681b867896e2cba6e96d145f3cafb +CT= bfc077f0e71cbdb5aac9bdeb5847041f12244ac3e64d7ed770d83a55eba4cf3a +PT= 2d0f83e071a4dbca3dc52ba7b4f5da3d993b5b2163ce63716870e619ab122c60 +TEST= 124 +KEY= 132b0d83624d64ac8a1caa396c0fbe9e0b97c849a18ec16c0634c21df5410859 +IV= 7b3b3cd38d30ea0efc18fc41ba8b7f4aacc224f3b528909872d6fe53b1791b43 +CT= 2d0f83e071a4dbca3dc52ba7b4f5da3d993b5b2163ce63716870e619ab122c60 +PT= 5d4bcd579fc7fd2e429e586570395c487773431dae7c3f9ae5e92682da49cd1b +TEST= 125 +KEY= 4e60c0d4fd8a9982c882f25c1c36e2d67ce48b540ff2fef6e3dde49f2f08c542 +IV= 161bfc83027e485cc4b595b3b94129261b8c7d57985c601fa81f99f1d370bb56 +CT= 5d4bcd579fc7fd2e429e586570395c487773431dae7c3f9ae5e92682da49cd1b +PT= 9799dc18f75541812a44439285e39e1fd005394313527ffaf1f08ecfa2662f79 +TEST= 126 +KEY= d9f91ccc0adfd803e2c6b1ce99d57cc9ace1b2171ca0810c122d6a508d6eea3b +IV= fa18e8e60eedff08695bef8eae5443ea2ae3756d9819b98ca90a26e4c8cc33ce +CT= 9799dc18f75541812a44439285e39e1fd005394313527ffaf1f08ecfa2662f79 +PT= 75a6afec30da9ecd2134398dd980c28492c1a987fa1c746c982e1e4fc6f724b1 +TEST= 127 +KEY= ac5fb3203a0546cec3f288434055be4d3e201b90e6bcf5608a03741f4b99ce8a +IV= f981cc35d4da8ea9656f787f87eab7b332da0faf1364efa96ca3ffd26e8e38d2 +CT= 75a6afec30da9ecd2134398dd980c28492c1a987fa1c746c982e1e4fc6f724b1 +PT= c99be7d834bc3ae0588bfe521a486548114f58a67c45b25d2f915f9f1b904885 +TEST= 128 +KEY= 65c454f80eb97c2e9b7976115a1ddb052f6f43369af9473da5922b805009860f +IV= a56a27b0b333e7cb580f921b24021af7b15db6429348c6a9ce24beb52c35d0e0 +CT= c99be7d834bc3ae0588bfe521a486548114f58a67c45b25d2f915f9f1b904885 +PT= a4b40a88229dc2e6b2c1c2dc712e671b35c8de402626e53b78e2c0767c3421fd +TEST= 129 +KEY= c1705e702c24bec829b8b4cd2b33bc1e1aa79d76bcdfa206dd70ebf62c3da7f2 +IV= 95b0866226d2d7be8238da19bd2bcd9436c73d83180584f90212da16fa81f50f +CT= a4b40a88229dc2e6b2c1c2dc712e671b35c8de402626e53b78e2c0767c3421fd +PT= df2555199c13d4b4c19f64922d4cea43668fda907765c3739c7f52f7d60b295c +TEST= 130 +KEY= 1e550b69b0376a7ce827d05f067f565d7c2847e6cbba6175410fb901fa368eae +IV= 585260ec74351a3aff30e9c7bd8d7b98f365e4df66bcea3122fa78c65fd5d16a +CT= df2555199c13d4b4c19f64922d4cea43668fda907765c3739c7f52f7d60b295c +PT= df38b1241b1fcea9ac62e18d20a5a3f020366597bce4973971918b0f5cec636e +TEST= 131 +KEY= c16dba4dab28a4d5444531d226daf5ad5c1e2271775ef64c309e320ea6daedc0 +IV= d1aa90f2c3ff5389054d1b9f1401d8aeba89be3878e142b27b81aac1af248480 +CT= df38b1241b1fcea9ac62e18d20a5a3f020366597bce4973971918b0f5cec636e +PT= 60eac95ca8d2ae13854b4086242ba39df66ac58b324cfac7d6f8776229715e09 +TEST= 132 +KEY= a187731103fa0ac6c10e715402f15630aa74e7fa45120c8be666456c8fabb3c9 +IV= cde511058bbf79e72b979475893e609825f3ba7a32da84eda01f01fa702ceee2 +CT= 60eac95ca8d2ae13854b4086242ba39df66ac58b324cfac7d6f8776229715e09 +PT= ded7ccb27590b95c7f577477b0af0388440164cd2b8c93975b9a5a67477c5d1a +TEST= 133 +KEY= 7f50bfa3766ab39abe590523b25e55b8ee7583376e9e9f1cbdfc1f0bc8d7eed3 +IV= 14ddb9b6a209e7949a4a4df28b3230a9d7c486e404a144eec27f7007009cd24b +CT= ded7ccb27590b95c7f577477b0af0388440164cd2b8c93975b9a5a67477c5d1a +PT= 585106aea0c165a1c0068d33216c31883ffc2a0c49bb5d099f02b4809afb6b0f +TEST= 134 +KEY= 2701b90dd6abd63b7e5f881093326430d189a93b2725c21522feab8b522c85dc +IV= 59abb076d9dfb61a6d3cb81e3a7625157d1e2dd64ffcf7fbbb89d4069a10fd89 +CT= 585106aea0c165a1c0068d33216c31883ffc2a0c49bb5d099f02b4809afb6b0f +PT= 506d2859d01bfaa6291caf46e71e36164e0d34516f41126a29f2ff5c6029a2ef +TEST= 135 +KEY= 776c915406b02c9d57432756742c52269f849d6a4864d07f0b0c54d732052733 +IV= 0243e8107aaa28160d7ea4a7dab50403c22cf65686070c475c1f2fc124502bb5 +CT= 506d2859d01bfaa6291caf46e71e36164e0d34516f41126a29f2ff5c6029a2ef +PT= ff6969ab62fe6351f39164409fb8ce150242e02524369ff2d8c93c5a29f88d40 +TEST= 136 +KEY= 8805f8ff644e4fcca4d24316eb949c339dc67d4f6c524f8dd3c5688d1bfdaa73 +IV= 491e967acb6ed2f3a148606f81614a206aef93ff8768c10cd612af25a276d867 +CT= ff6969ab62fe6351f39164409fb8ce150242e02524369ff2d8c93c5a29f88d40 +PT= d2960d5b3d515de42a03b11976a4a8bbd0253b819319457b916d4dd1e9b1eb8b +TEST= 137 +KEY= 5a93f5a4591f12288ed1f20f9d3034884de346ceff4b0af642a8255cf24c41f8 +IV= 3ef6982d98fca21aa0fa9f14a9eb8ba0f2ec4c60ace08542d7e1b474dd9421a3 +CT= d2960d5b3d515de42a03b11976a4a8bbd0253b819319457b916d4dd1e9b1eb8b +PT= f7a1235169e19117e13c63a14c564e24aa5bd5994aa410466510bc83c610b3cb +TEST= 138 +KEY= ad32d6f530fe833f6fed91aed1667aace7b89357b5ef1ab027b899df345cf233 +IV= 244949bf09480a2f338f49e54bf5df4a83debc65ee5a84d3e54fe2446bf14abc +CT= f7a1235169e19117e13c63a14c564e24aa5bd5994aa410466510bc83c610b3cb +PT= 6a0d8ab7fd6e271a385180f25b3992468d1c1bd0cfa670d4dedeb41b309989ee +TEST= 139 +KEY= c73f5c42cd90a42557bc115c8a5fe8ea6aa488877a496a64f9662dc404c57bdd +IV= 5edfc42452ff4a52982ed5fef2b9a5c12789b8fc6f29ee36564e9508865153f5 +CT= 6a0d8ab7fd6e271a385180f25b3992468d1c1bd0cfa670d4dedeb41b309989ee +PT= b4dc4d86f091209cf8bf332b70f091e1b9130144952b1f0baba08fe735a61829 +TEST= 140 +KEY= 73e311c43d0184b9af032277faaf790bd3b789c3ef62756f52c6a223316363f4 +IV= e3f66ba2e3456c071fabc7d1d4a83728c57fb06d6bc14dd785b0e44272f721f9 +CT= b4dc4d86f091209cf8bf332b70f091e1b9130144952b1f0baba08fe735a61829 +PT= f44a74ce4dba28d32635417bc9dce8d98b9ceb2496840a6f36d1a45cd7b7abc4 +TEST= 141 +KEY= 87a9650a70bbac6a8936630c337391d2582b62e779e67f006417067fe6d4c830 +IV= 21f7cb632fdc5270e802c0ba1b678fb05b9f1fab90025327a064724ac9e621ea +CT= f44a74ce4dba28d32635417bc9dce8d98b9ceb2496840a6f36d1a45cd7b7abc4 +PT= 264b088b4e1fdfa641f947df248dd904f18d7c24743824e0ba4cf12d01ce0b2a +TEST= 142 +KEY= a1e26d813ea473ccc8cf24d317fe48d6a9a61ec30dde5be0de5bf752e71ac31a +IV= 519ddb6824b2588b0687d4323f97b1cda5ad78db33a6d257e478b4d6b95d351b +CT= 264b088b4e1fdfa641f947df248dd904f18d7c24743824e0ba4cf12d01ce0b2a +PT= ea632c21af3f282b2e5951473ae5970356047aa3b8af3a8b0a9f8edafa176686 +TEST= 143 +KEY= 4b8141a0919b5be7e69675942d1bdfd5ffa26460b571616bd4c479881d0da59c +IV= 3625919ea8b4d6537948c0858cdf77ccb31b81444617a782878ec21f82f2124a +CT= ea632c21af3f282b2e5951473ae5970356047aa3b8af3a8b0a9f8edafa176686 +PT= b7cd1b67b4c1b992bbd3357588f72bf6d44105f918c5a87b630c9539c714227a +TEST= 144 +KEY= fc4c5ac7255ae2755d4540e1a5ecf4232be36199adb4c910b7c8ecb1da1987e6 +IV= 4938beadd44961b206c285b76875be3daf9bd206c866726508298bd1059273ad +CT= b7cd1b67b4c1b992bbd3357588f72bf6d44105f918c5a87b630c9539c714227a +PT= 8888a9c4c7e579ef9e75ba65d26e4e17690d9935109e099aedda6ac430776fb3 +TEST= 145 +KEY= 74c4f303e2bf9b9ac330fa847782ba3442eef8acbd2ac08a5a128675ea6ee855 +IV= 4fd83083372f2e97bd05665e264a3e35a09c21f3c71cc239b958e4ce3f6185b6 +CT= 8888a9c4c7e579ef9e75ba65d26e4e17690d9935109e099aedda6ac430776fb3 +PT= a7d0da6f520cc21db3a227699681f1f6a5c833cd83a2b0c20a4d069227225f59 +TEST= 146 +KEY= d314296cb0b359877092ddede1034bc2e726cb613e887048505f80e7cd4cb70c +IV= 9d098ec7df64e700a9c3a83d509fcbde24972dc56aa7d1eb32b5c9e346295ac1 +CT= a7d0da6f520cc21db3a227699681f1f6a5c833cd83a2b0c20a4d069227225f59 +PT= 7c2cb228066caa4838df78b357a8d2f8c60cdab37d132c9595491482ff621f1a +TEST= 147 +KEY= af389b44b6dff3cf484da55eb6ab993a212a11d2439b5cddc5169465322ea816 +IV= a709fbe2ccdbfcd12ff8da3a08a45f446bd2f4051694ce9ac895b887462a57df +CT= 7c2cb228066caa4838df78b357a8d2f8c60cdab37d132c9595491482ff621f1a +PT= fe2525f6542916b91758707a92eef57c78615743dc92947f610da97fd57c1eb9 +TEST= 148 +KEY= 511dbeb2e2f6e5765f15d52424456c46594b46919f09c8a2a41b3d1ae752b6af +IV= a692cbe0320bb33b63a9e2c00a33e1d4ee564701bc19956c42492d4002a1a537 +CT= fe2525f6542916b91758707a92eef57c78615743dc92947f610da97fd57c1eb9 +PT= 6cc2c278dab6eb9d14dbc5bd9ed1cc5427dbecdd34c2c2aea40ef539df57f1f3 +TEST= 149 +KEY= 3ddf7cca38400eeb4bce1099ba94a0127e90aa4cabcb0a0c0015c8233805475c +IV= 1973bd1ef1344e89c99400ac31fbc8695c49019a87453f1554d296c45d5b884d +CT= 6cc2c278dab6eb9d14dbc5bd9ed1cc5427dbecdd34c2c2aea40ef539df57f1f3 +PT= dc2152aad1d7b71cb3853b035f7bb89a778a0b50788d928fcd4ff1e5de35ef2b +TEST= 150 +KEY= e1fe2e60e997b9f7f84b2b9ae5ef1888091aa11cd3469883cd5a39c6e630a877 +IV= 5ac578687a4476581ae6fe23330aed7611b3de17303351fc664438f21cb0c6bf +CT= dc2152aad1d7b71cb3853b035f7bb89a778a0b50788d928fcd4ff1e5de35ef2b +PT= 11a02f51ae25030848ad0acab210117543dc155558333bbaf6434b39ef3dda93 +TEST= 151 +KEY= f05e013147b2baffb0e6215057ff09fd4ac6b4498b75a3393b1972ff090d72e4 +IV= fc72e1c7b88fa57e748b27db33ffecb7b399601c3772df944662857ead4e3e5a +CT= 11a02f51ae25030848ad0acab210117543dc155558333bbaf6434b39ef3dda93 +PT= caecc9db0d7a76aee75273d459efba9697cf0a01f904fcd51eeb162775b809be +TEST= 152 +KEY= 3ab2c8ea4ac8cc5157b452840e10b36bdd09be4872715fec25f264d87cb57b5a +IV= f76771d269ed79141e12f450206456cca4fd7179e08b2eb4bd9fa2b973b1ed4d +CT= caecc9db0d7a76aee75273d459efba9697cf0a01f904fcd51eeb162775b809be +PT= ac2e903828e787df343592a3a0c79beadd1bd7f89c9ca0c338c40a873d60f8ab +TEST= 153 +KEY= 969c58d2622f4b8e6381c027aed72881001269b0eeedff2f1d366e5f41d583f1 +IV= 321edf8bb5b5b1accb4a0bbf1b137459d14bb26119f7748713e5af15ffad7a50 +CT= ac2e903828e787df343592a3a0c79beadd1bd7f89c9ca0c338c40a873d60f8ab +PT= e1ff54d55b10868698438401dbdb4fa7239dd11f7fdaabadde204f703f636372 +TEST= 154 +KEY= 77630c07393fcd08fbc24426750c6726238fb8af91375482c316212f7eb6e083 +IV= a1e1c3ea34f6c5e5ae15ca95c992fd9a0cb213a731cf2af4f08c3de5f46e49b2 +CT= e1ff54d55b10868698438401dbdb4fa7239dd11f7fdaabadde204f703f636372 +PT= cec6ec165793e4bb56c8d71ccec8d65570e0a7c4689b04a106c6c8e3d332054d +TEST= 155 +KEY= b9a5e0116eac29b3ad0a933abbc4b173536f1f6bf9ac5023c5d0e9ccad84e5ce +IV= 4f40c537d25e157b0e414d30ad68b624b9fbd1ad59ead42c6d0840df9c965a40 +CT= cec6ec165793e4bb56c8d71ccec8d65570e0a7c4689b04a106c6c8e3d332054d +PT= e92228d9df592cad4a7eb0f884653270bad1c6a8f4a421518c654653f11245d6 +TEST= 156 +KEY= 5087c8c8b1f5051ee77423c23fa18303e9bed9c30d08717249b5af9f5c96a018 +IV= 7c74c59eb372c08b118344eaf64d59028fd08a4e1a640283e0b4a7dd039438da +CT= e92228d9df592cad4a7eb0f884653270bad1c6a8f4a421518c654653f11245d6 +PT= adf6a8406d97750d6270ce5ee18443380eaed9f9df5e80200f1bbeaa65454a0d +TEST= 157 +KEY= fd716088dc6270138504ed9cde25c03be710003ad256f15246ae113539d3ea15 +IV= e3866bda72393e6e1c8e2346ee6e714c60b49c8d72f376cfbb66fbf53a4a2f34 +CT= adf6a8406d97750d6270ce5ee18443380eaed9f9df5e80200f1bbeaa65454a0d +PT= 58b30621321763163fca9d3425120c7530ab4f286ab0e2d247bf3e5ccb27093f +TEST= 158 +KEY= a5c266a9ee751305bace70a8fb37cc4ed7bb4f12b8e6138001112f69f2f4e32a +IV= e8dd852208568dd662e85c1b26b2c3dfae414f81acfaee94ae76cf38bc1a303b +CT= 58b30621321763163fca9d3425120c7530ab4f286ab0e2d247bf3e5ccb27093f +PT= 5017d6f35b52bbae3cbc45426dcf398ada64cac6ca77e0b0d3c58920eb43a036 +TEST= 159 +KEY= f5d5b05ab527a8ab867235ea96f8f5c40ddf85d47291f330d2d4a64919b7431c +IV= 039e0187d9ed85a94ab885c2cb17eb8f787a80d46df7dd2fbde454812e7a17bb +CT= 5017d6f35b52bbae3cbc45426dcf398ada64cac6ca77e0b0d3c58920eb43a036 +PT= 0c422affc68232b8217a15065a145a09ed437716000fdda3e075c92efc3b8d04 +TEST= 160 +KEY= f9979aa573a59a13a70820ecccecafcde09cf2c2729e2e9332a16f67e58cce18 +IV= de7c986a4a7a5d788391aaa676c0cfbc404b9d58b7ce60881f1f53ea7b829c43 +CT= 0c422affc68232b8217a15065a145a09ed437716000fdda3e075c92efc3b8d04 +PT= 60195be1329908abfb65ee42568861537e2f2c58bfdd637f3ca59b964045b399 +TEST= 161 +KEY= 998ec144413c92b85c6dceae9a64ce9e9eb3de9acd434dec0e04f4f1a5c97d81 +IV= 713c12c4627028efb9133aa16aa2e8b771e58169665fa4c09984c1536e060eef +CT= 60195be1329908abfb65ee42568861537e2f2c58bfdd637f3ca59b964045b399 +PT= 88a006af37bbb630920ae1a45260dc0b563e5a92515ba23b720d45b918516dd4 +TEST= 162 +KEY= 112ec7eb76872488ce672f0ac8041295c88d84089c18efd77c09b148bd981055 +IV= be4719e1f73e7afaa5313161ec3b0e7a5a6161b2e437e1ca290635556ceada74 +CT= 88a006af37bbb630920ae1a45260dc0b563e5a92515ba23b720d45b918516dd4 +PT= eeaea6a89602320b4beabd442761df9ad0fb0b6ed123779c048bc31a533159ad +TEST= 163 +KEY= ff806143e0851683858d924eef65cd0f18768f664d3b984b78827252eea949f8 +IV= 9ba17d439ff3203eb0eda0eeb527359588ead674e39f141f98734c9ef673225e +CT= eeaea6a89602320b4beabd442761df9ad0fb0b6ed123779c048bc31a533159ad +PT= 849b656454f92ffc85423eb8afc039f1e5656e39fe7ff68b66f7d876cca42940 +TEST= 164 +KEY= 7b1b0427b47c397f00cfacf640a5f4fefd13e15fb3446ec01e75aa24220d60b8 +IV= a6c4e196053dd00199198ff92e0deec6dbf70749df2d934021254332e7f6128b +CT= 849b656454f92ffc85423eb8afc039f1e5656e39fe7ff68b66f7d876cca42940 +PT= 978d870d097da5f34d9823a66bdcaddc0ed5c3ff62f50ec4b41d3cef4ec9e21a +TEST= 165 +KEY= ec96832abd019c8c4d578f502b795922f3c622a0d1b16004aa6896cb6cc482a2 +IV= cac9cdfdd1ced4ced6d9baeba0903dda23d7c9d37d7e721090f3016c54a37b6d +CT= 978d870d097da5f34d9823a66bdcaddc0ed5c3ff62f50ec4b41d3cef4ec9e21a +PT= b85a71a64859071692d74cebdc7f72159fd77d4f24b526854686a066e22cc422 +TEST= 166 +KEY= 54ccf28cf5589b9adf80c3bbf7062b376c115feff5044681ecee36ad8ee84680 +IV= 0294d7c0ce5fd32020e080d662ee8b437c882bc6b352881808339b0c711fd98e +CT= b85a71a64859071692d74cebdc7f72159fd77d4f24b526854686a066e22cc422 +PT= 1c5b71b1dad211bdce79b9f6898bac6fe77e8f0f109264bd4d76203f1949ac7e +TEST= 167 +KEY= 4897833d2f8a8a2711f97a4d7e8d87588b6fd0e0e596223ca198169297a1eafe +IV= 2639226d7a37d8208f24e148f903541983f426047fe5f7fdb4876bcfb9cf7145 +CT= 1c5b71b1dad211bdce79b9f6898bac6fe77e8f0f109264bd4d76203f1949ac7e +PT= 45d30c74762584bf51ae3ee3a00c9dec6108c749f8c2e488c9586e5f5a8071d0 +TEST= 168 +KEY= 0d448f4959af0e98405744aede811ab4ea6717a91d54c6b468c078cdcd219b2e +IV= 69691928b9e0ce3b9348fd7cfb337b606c1c12f804a65039e838963020cf763c +CT= 45d30c74762584bf51ae3ee3a00c9dec6108c749f8c2e488c9586e5f5a8071d0 +PT= ca4cd077ace3608b2bc70c4ab2baec024ea92fd4906571a8783d8c22dd6edccb +TEST= 169 +KEY= c7085f3ef54c6e136b9048e46c3bf6b6a4ce387d8d31b71c10fdf4ef104f47e5 +IV= b6c8a7d3edf6b1b240724288c33eb4b54f3148934579c035a8463ad036626f77 +CT= ca4cd077ace3608b2bc70c4ab2baec024ea92fd4906571a8783d8c22dd6edccb +PT= 0a33f64396fe9dda00b25d5ed8b9743c1da012543d5c99476be99523b4b88ec8 +TEST= 170 +KEY= cd3ba97d63b2f3c96b2215bab482828ab96e2a29b06d2e5b7b1461cca4f7c92d +IV= 90be84b01734a5cb7f9d300faaed17e2bce4eff6c1bd112a08745289821f4873 +CT= 0a33f64396fe9dda00b25d5ed8b9743c1da012543d5c99476be99523b4b88ec8 +PT= 2fd517abcbb365813b77c9f18280e80537541f8a6a770f48eee8adce1c430e00 +TEST= 171 +KEY= e2eebed6a80196485055dc4b36026a8f8e3a35a3da1a211395fccc02b8b4c72d +IV= 3f4c912009a072e55ec27582b5da0a456c15ddb5c575c6d7144f56b63c50d00b +CT= 2fd517abcbb365813b77c9f18280e80537541f8a6a770f48eee8adce1c430e00 +PT= b4596204ca23223e2569430c2b1114b1837d3b6039bb7da3904201f6280fc2ec +TEST= 172 +KEY= 56b7dcd26222b476753c9f471d137e3e0d470ec3e3a15cb005becdf490bb05c1 +IV= c3230ab801f5e08307e4f1f181a78d7a0b959cd6a0586a8c0ed43ed2c5baf0e5 +CT= b4596204ca23223e2569430c2b1114b1837d3b6039bb7da3904201f6280fc2ec +PT= 9ae9089e7ce3979c62ef9bd094c5932103422ca91d72caa9a01e390d0a496bf9 +TEST= 173 +KEY= cc5ed44c1ec123ea17d3049789d6ed1f0e05226afed39619a5a0f4f99af26e38 +IV= 16dd6a8be62dc39a98c23df4f145d5a1d5bfce41f14cb137cb23d514caf22ddc +CT= 9ae9089e7ce3979c62ef9bd094c5932103422ca91d72caa9a01e390d0a496bf9 +PT= 74c9f822cb569043ed22e5be7c8308fb49ed67de1b691af91a4f1267efe9db46 +TEST= 174 +KEY= b8972c6ed597b3a9faf1e129f555e5e447e845b4e5ba8ce0bfefe69e751bb57e +IV= f336b49f64ba1470661688a4f6c69fcbcb5a3ce67a72bb23f1fa05ad4fda79ec +CT= 74c9f822cb569043ed22e5be7c8308fb49ed67de1b691af91a4f1267efe9db46 +PT= 6fb0128cbe3c92b897a7d0ce8ff950c4add4ee873c74d3ea5a72a24e31617f27 +TEST= 175 +KEY= d7273ee26bab21116d5631e77aacb520ea3cab33d9ce5f0ae59d44d0447aca59 +IV= 406e806e9e342fc5ef6abe1f48899ff055d950884254b4a7f7f2c3fa7546db94 +CT= 6fb0128cbe3c92b897a7d0ce8ff950c4add4ee873c74d3ea5a72a24e31617f27 +PT= 2164172fb023a93b5ccf42196769ed08b22abc76783dc99b1b0352a1b4a9b2df +TEST= 176 +KEY= f64329cddb88882a319973fe1dc5582858161745a1f39691fe9e1671f0d37886 +IV= d18780b14e9d767fec4223a123a6f5adff66e483a25df0a9d40f6699f709fb23 +CT= 2164172fb023a93b5ccf42196769ed08b22abc76783dc99b1b0352a1b4a9b2df +PT= 8d31e00d62e009095cd0018553256131a09bccb9f3d87776500416dbc47fb10c +TEST= 177 +KEY= 7b72c9c0b96881236d49727b4ee03919f88ddbfc522be1e7ae9a00aa34acc98a +IV= 04b61606cf35ff48816d9fbeb0d4cd251797cb3846b86c371d7bbc4ccea293c1 +CT= 8d31e00d62e009095cd0018553256131a09bccb9f3d87776500416dbc47fb10c +PT= b43b919e0419c05e03b71f902b33aed3573901e5950d00596f82374fc5ee32ce +TEST= 178 +KEY= cf49585ebd71417d6efe6deb65d397caafb4da19c726e1bec11837e5f142fb44 +IV= 3e2c3b415682f6a542310c7cddbda014ccd0010b2cfd38b5d7608cce7f680f7f +CT= b43b919e0419c05e03b71f902b33aed3573901e5950d00596f82374fc5ee32ce +PT= c6a3348afdcab26c0a809acbdcf538b2087734116070f34548f7a476336ec21b +TEST= 179 +KEY= 09ea6cd440bbf311647ef720b926af78a7c3ee08a75612fb89ef9393c22c395f +IV= 3195a7aee0484e6c25c46291280e1ad67e2373f3d1d22ec94dab6c0eab3871a4 +CT= c6a3348afdcab26c0a809acbdcf538b2087734116070f34548f7a476336ec21b +PT= 37d6b8463e7341ad56464aea238fec0b9d7711264627e9d11c485b881f566878 +TEST= 180 +KEY= 3e3cd4927ec8b2bc3238bdca9aa943733ab4ff2ee171fb2a95a7c81bdd7a5127 +IV= 6044f6227daa71dd84016251bdc7ad0183149db1a00ae9db946c44a8853e866e +CT= 37d6b8463e7341ad56464aea238fec0b9d7711264627e9d11c485b881f566878 +PT= 85bce6c4ffee5bc0e412a1c0c9e00f440a7fd9a8253f15eb86f4f34f5b855f75 +TEST= 181 +KEY= bb8032568126e97cd62a1c0a53494c3730cb2686c44eeec113533b5486ff0e52 +IV= cc16630dc9e7d97f6f48cc9b52d376a299db2cd874f8615a1cc3ebf38faccd65 +CT= 85bce6c4ffee5bc0e412a1c0c9e00f440a7fd9a8253f15eb86f4f34f5b855f75 +PT= 9319e6c3e9f3688b7b10b380f0580c9f74eda25358e818c627e8a748655d48a6 +TEST= 182 +KEY= 2899d49568d581f7ad3aaf8aa31140a8442684d59ca6f60734bb9c1ce3a246f4 +IV= a4c714d8ef3e755cd472c472871ef09b7a29149c333a2f6c44aec37585e9bdef +CT= 9319e6c3e9f3688b7b10b380f0580c9f74eda25358e818c627e8a748655d48a6 +PT= 0accac886965b1c66048ccd95b04a26e73074dac3faabc53dad7ce962a636749 +TEST= 183 +KEY= 2255781d01b03031cd726353f815e2c63721c979a30c4a54ee6c528ac9c121bd +IV= 8455e8d369863933017e8f603fa4d28621e2dd8f0aeb9978f65b2cd55705064c +CT= 0accac886965b1c66048ccd95b04a26e73074dac3faabc53dad7ce962a636749 +PT= eadedaf0639a19e2d0d0abdb7d7e3799781dcf469c143b02e40eb13e01d7f85f +TEST= 184 +KEY= c88ba2ed622a29d31da2c888856bd55f4f3c063f3f1871560a62e3b4c816d9e2 +IV= 8ac959dc14de78f306f847d57cb61a84a2f111500367943a32c15a2ecbf8e21e +CT= eadedaf0639a19e2d0d0abdb7d7e3799781dcf469c143b02e40eb13e01d7f85f +PT= fcdfe5d2591c9dc375c65b311c28fca6183b5190777facb0ea83b5a196d3fc04 +TEST= 185 +KEY= 3454473f3b36b410686493b9994329f9570757af4867dde6e0e156155ec525e6 +IV= ece065415ab5d8cd02209196506db55e68acee0d64bfdcea0d6a7a55fdeb671b +CT= fcdfe5d2591c9dc375c65b311c28fca6183b5190777facb0ea83b5a196d3fc04 +PT= 1b3ba4d572950c560ca332772e6981dd1ba90cd4e830cd93f331962b149bbe7c +TEST= 186 +KEY= 2f6fe3ea49a3b84664c7a1ceb72aa8244cae5b7ba057107513d0c03e4a5e9b9a +IV= 7e819d84c1d43c1b95b27fff507de9f59159fa49f4ac1bf4d3ce84b7809a790c +CT= 1b3ba4d572950c560ca332772e6981dd1ba90cd4e830cd93f331962b149bbe7c +PT= 6ff982fc6dbcbb5b33ad0a99c948d2d2a854f09553402c29f93fd0d7f8bda031 +TEST= 187 +KEY= 40966116241f031d576aab577e627af6e4faabeef3173c5ceaef10e9b2e33bab +IV= ac9c32936b8c37a72c4ac714b16eba3366a7e42c3cb93f349113f3c74442fa7d +CT= 6ff982fc6dbcbb5b33ad0a99c948d2d2a854f09553402c29f93fd0d7f8bda031 +PT= e585fad0f08131cf56964f363215e50e5c2089dca21274cd92e34ba228581a5d +TEST= 188 +KEY= a5139bc6d49e32d201fce4614c779ff8b8da223251054891780c5b4b9abb21f6 +IV= b6d47c7682ebafa722da049cc1366b2a7204cdf305eddd50c4371a300ef3c15a +CT= e585fad0f08131cf56964f363215e50e5c2089dca21274cd92e34ba228581a5d +PT= 59ada837f49c7c1d3c61d273a6c36b2245f521f833a2e2438435d9cea6354499 +TEST= 189 +KEY= fcbe33f120024ecf3d9d3612eab4f4dafd2f03ca62a7aad2fc3982853c8e656f +IV= 754c3c09b60e959282b0191d4317a68e0d0cde702d008e62f7fc3c83928ddd92 +CT= 59ada837f49c7c1d3c61d273a6c36b2245f521f833a2e2438435d9cea6354499 +PT= afd00cd83ba501b492e64eba286ba1734d2fb86571f65ce88be0442f5c9c379b +TEST= 190 +KEY= 536e3f291ba74f7baf7b78a8c2df55a9b000bbaf1351f63a77d9c6aa601252f4 +IV= edcc4c7bd1a3defe0989434ff3e003a2c48aa817da2d5de7c7d1823912be71c3 +CT= afd00cd83ba501b492e64eba286ba1734d2fb86571f65ce88be0442f5c9c379b +PT= 0d9c5b406b337e750db256019a8d813fc150d0c02532098983afe345c9bef488 +TEST= 191 +KEY= 5ef264697094310ea2c92ea95852d49671506b6f3663ffb3f47625efa9aca67c +IV= 8308e561341b78be54743865e1eb13a005dae45964d3c86b95ed3829c20e5948 +CT= 0d9c5b406b337e750db256019a8d813fc150d0c02532098983afe345c9bef488 +PT= 02b10a3e953a20001f1045f9540830d388083ad7c98d16fda2e732552aa952f1 +TEST= 192 +KEY= 5c436e57e5ae110ebdd96b500c5ae445f95851b8ffeee94e569117ba8305f48d +IV= af9eda2308b0a6c6d4f144d304584390bacaaf4b28124fed4a3b37fa7d2ec971 +CT= 02b10a3e953a20001f1045f9540830d388083ad7c98d16fda2e732552aa952f1 +PT= 1aecbb64498ab885d05e4737c5b687d2ac5cceb94685d96ce9fa5020a72bad4a +TEST= 193 +KEY= 46afd533ac24a98b6d872c67c9ec639755049f01b96b3022bf6b479a242e59c7 +IV= 234886b70706fe39e97316913c516553f642dfb236a46c93d74d9bc8c607aad4 +CT= 1aecbb64498ab885d05e4737c5b687d2ac5cceb94685d96ce9fa5020a72bad4a +PT= a3768016bbcb7256543c95cb21848f061a042161b31cf590dc2e426d17e4816b +TEST= 194 +KEY= e5d9552517efdbdd39bbb9ace868ec914f00be600a77c5b2634505f733cad8ac +IV= fb1ed33f66b105ea00a651ff4c364adc3340646aa1c690c1518a08ba0babaa5b +CT= a3768016bbcb7256543c95cb21848f061a042161b31cf590dc2e426d17e4816b +PT= 8b3da8a68ae6c4f0325ce01432c73557f51a57dc29bf72145764bc20d34bafe0 +TEST= 195 +KEY= 6ee4fd839d091f2d0be759b8daafd9c6ba1ae9bc23c8b7a63421b9d7e081774c +IV= 82bd348b59c9844c28afcdedb6e50797b484e5d7bbeea8ee695a9dcc16d33100 +CT= 8b3da8a68ae6c4f0325ce01432c73557f51a57dc29bf72145764bc20d34bafe0 +PT= 5171bdc37c1e5c07e0cd4c16d9a94b07c8d55aab33f29c226e4a78b2c4e7c22f +TEST= 196 +KEY= 3f954040e117432aeb2a15ae030692c172cfb317103a2b845a6bc1652466b563 +IV= ff175f4feef84b794e04074e361a58e5765497c58676e954c8a919ed46190c2b +CT= 5171bdc37c1e5c07e0cd4c16d9a94b07c8d55aab33f29c226e4a78b2c4e7c22f +PT= acd04dc453a813d71d4eb58011b9006c692a1bc4df77d9fa0d37445794f80763 +TEST= 197 +KEY= 93450d84b2bf50fdf664a02e12bf92ad1be5a8d3cf4df27e575c8532b09eb200 +IV= 251aef1c4455c39702156fc7b032dc90e68f45fb101508f5980dbe7a7e2c7480 +CT= acd04dc453a813d71d4eb58011b9006c692a1bc4df77d9fa0d37445794f80763 +PT= 83e62f14070321258d5b0bfb0d8eabc01d9f1e353cc21e1f45507d37507a92c8 +TEST= 198 +KEY= 10a32290b5bc71d87b3fabd51f31396d067ab6e6f38fec61120cf805e0e420c8 +IV= dafd82e968076bd7c4ff462769b5fd8d40a383a079c7ca72d7d8a5dc36b484d5 +CT= 83e62f14070321258d5b0bfb0d8eabc01d9f1e353cc21e1f45507d37507a92c8 +PT= 4a3a546dc9def873b62653516ba79e008b012988f339126eb4bb25d4e60100b7 +TEST= 199 +KEY= 5a9976fd7c6289abcd19f8847496a76d8d7b9f6e00b6fe0fa6b7ddd106e5207f +IV= d29c56e793abecd6f5500b32cdb7cf1db43a2d9cfb48f6089e26d3973ae0a241 +CT= 4a3a546dc9def873b62653516ba79e008b012988f339126eb4bb25d4e60100b7 +PT= 9aa67d48be8b4b3d51775af9f42da176c554c148ec294cc56a75014a6e52854b +TEST= 200 +KEY= c03f0bb5c2e9c2969c6ea27d80bb061b482f5e26ec9fb2caccc2dc9b68b7a534 +IV= 29ebf38f94fc919a01dda108a9c62197598c9833639b34be02b5c1e45debfee1 +CT= 9aa67d48be8b4b3d51775af9f42da176c554c148ec294cc56a75014a6e52854b +PT= e0ee207aaedf6dd226028ca784b17c48e3444562e0eaa1e2d12d050359b63f50 +TEST= 201 +KEY= 20d12bcf6c36af44ba6c2eda040a7a53ab6b1b440c7513281defd99831019a64 +IV= b6ce94ebe03b8827373dcb407707bc40d50a063c449cf12d0ebdc0c0ee7c129a +CT= e0ee207aaedf6dd226028ca784b17c48e3444562e0eaa1e2d12d050359b63f50 +PT= 7da28b12a727ec68960bf88ed1e881e66fe9b7395734112cc3a42cdf18a3bdcb +TEST= 202 +KEY= 5d73a0ddcb11432c2c67d654d5e2fbb5c482ac7d5b410204de4bf54729a227af +IV= 4d6bc68b87ffd75dd7a75d97f178e5fd005672e5da39cd1cf66cc967d061d166 +CT= 7da28b12a727ec68960bf88ed1e881e66fe9b7395734112cc3a42cdf18a3bdcb +PT= 2eae6faeb4f59c9ec5cca74852fc1c1798e152656c4c542bd207837c214de6b9 +TEST= 203 +KEY= 73ddcf737fe4dfb2e9ab711c871ee7a25c63fe18370d562f0c4c763b08efc116 +IV= f62d75f6946098b599cbb3b5bcffc42a663b28c57a3fc1ade3737ebb6694e086 +CT= 2eae6faeb4f59c9ec5cca74852fc1c1798e152656c4c542bd207837c214de6b9 +PT= 06f33e311bf0dce6172d1388bc24d0ec0d4515e784159b7c1fa95998ada06c27 +TEST= 204 +KEY= 752ef14264140354fe8662943b3a374e5126ebffb318cd5313e52fa3a54fad31 +IV= efe4a656de38817deb7ff1a7ade1f74ab8b9e18fce3200e625606e03b4800b93 +CT= 06f33e311bf0dce6172d1388bc24d0ec0d4515e784159b7c1fa95998ada06c27 +PT= e680ff2a9a653e9f993983e480e93421cafc0577e44fbf64171f0597811e1082 +TEST= 205 +KEY= 93ae0e68fe713dcb67bfe170bbd3036f9bdaee885757723704fa2a342451bdb3 +IV= 2aacb068b2f3a86c56b53382dbc9b1a9d96ab9b30557e1308c86fa1a3c2a318d +CT= e680ff2a9a653e9f993983e480e93421cafc0577e44fbf64171f0597811e1082 +PT= f1629aeafb71ec4a5fadfb33d5d3b7b78525a9695d0e9ebc79053072fbd1c97a +TEST= 206 +KEY= 62cc94820500d18138121a436e00b4d81eff47e10a59ec8b7dff1a46df8074c9 +IV= fed27bd6dcd9c6e412bb15463e49077501b491e6c93cdb60856916cb9c69f4da +CT= f1629aeafb71ec4a5fadfb33d5d3b7b78525a9695d0e9ebc79053072fbd1c97a +PT= 343e1df1432bba1002523d64b1fef492bdb7194b4d0c3370329cc09d8ea2ac72 +TEST= 207 +KEY= 56f28973462b6b913a402727dffe404aa3485eaa4755dffb4f63dadb5122d8bb +IV= 86c1cbb1d6158a6ebb42900c0d2e7c2f727e6bb397b23dc7f6c4e8c475e0c7f3 +CT= 343e1df1432bba1002523d64b1fef492bdb7194b4d0c3370329cc09d8ea2ac72 +PT= 39bc24255e377ebd419949b99d744c1278335a3b386005c5f435da8f2e251021 +TEST= 208 +KEY= 6f4ead56181c152c7bd96e9e428a0c58db7b04917f35da3ebb5600547f07c89a +IV= cefdea12a53f4cfbadcfe213754d9071b388863d8170d5ec4f2b9f870c3d318a +CT= 39bc24255e377ebd419949b99d744c1278335a3b386005c5f435da8f2e251021 +PT= 6c5bc84eb83a63599f6f172c2943b2fa760ac3b9e29587c2eea85e2c0d0a0a78 +TEST= 209 +KEY= 03156518a0267675e4b679b26bc9bea2ad71c7289da05dfc55fe5e78720dc2e2 +IV= 1e6a44f5b735620c8c519a890e12e158bb52881b243da5159a14d934e12ec117 +CT= 6c5bc84eb83a63599f6f172c2943b2fa760ac3b9e29587c2eea85e2c0d0a0a78 +PT= 8e2a574458eae33766f4432e15d58e00354d632bf44b011dc03ee4e95389e15d +TEST= 210 +KEY= 8d3f325cf8cc954282423a9c7e1c30a2983ca40369eb5ce195c0ba91218423bf +IV= 067827eaf4a4a0db7777c71e2db2c37a60dae02c692fa9678aad3156bf7f019c +CT= 8e2a574458eae33766f4432e15d58e00354d632bf44b011dc03ee4e95389e15d +PT= ed95c1ea1d94792be978cd559f407393dd220525a611190251fbde8114b8d7ed +TEST= 211 +KEY= 60aaf3b6e558ec696b3af7c9e15c4331451ea126cffa45e3c43b6410353cf452 +IV= 6557695a61efe0193665823d5e282201bf895d18bdcbcbd71a4db2acb83eda74 +CT= ed95c1ea1d94792be978cd559f407393dd220525a611190251fbde8114b8d7ed +PT= b782a2ff8ce1218dc73c10c19881cb5c51959b8508d6be0c7a3681f6390a8222 +TEST= 212 +KEY= d728514969b9cde4ac06e70879dd886d148b3aa3c72cfbefbe0de5e60c367670 +IV= 5771cfc6ff0c84cc956be89d070f48ff011b41e85a5c08c05f11a79fc377aeee +CT= b782a2ff8ce1218dc73c10c19881cb5c51959b8508d6be0c7a3681f6390a8222 +PT= 26b4c11268ef68029cd027686344f378227b02ca47006e8607c0909e1f870ac2 +TEST= 213 +KEY= f19c905b0156a5e630d6c0601a997b1536f03869802c9569b9cd757813b17cb2 +IV= 90d49fbdb8ec89743f37614d9ffa78cc97ac923a96126035801ef5d6a5989f78 +CT= 26b4c11268ef68029cd027686344f378227b02ca47006e8607c0909e1f870ac2 +PT= ba238cb42b1992ba26207a7b00a0484a365ad65062b718bc7c07eb46d60ac2c3 +TEST= 214 +KEY= 4bbf1cef2a4f375c16f6ba1b1a39335f00aaee39e29b8dd5c5ca9e3ec5bbbe71 +IV= 0544974c50b5ca7e74eba7a828c2b8495ccf238fbdc679a3b0a8538f00b1a7a5 +CT= ba238cb42b1992ba26207a7b00a0484a365ad65062b718bc7c07eb46d60ac2c3 +PT= 1c9373947cb7e2f8fd8e4e4458a7ea498d7f76b036e2ac6e7fcf4d906533d849 +TEST= 215 +KEY= 572c6f7b56f8d5a4eb78f45f429ed9168dd59889d47921bbba05d3aea0886638 +IV= 9967a9f22f5cf1ac89814c651c35ad67646c28fb399438dba489fdbca6da619e +CT= 1c9373947cb7e2f8fd8e4e4458a7ea498d7f76b036e2ac6e7fcf4d906533d849 +PT= 738fcbb9118882a546ef0e0b8005b088c0c02c11ea25e2ebc887af75c3d9afcd +TEST= 216 +KEY= 24a3a4c247705701ad97fa54c29b699e4d15b4983e5cc35072827cdb6351c9f5 +IV= 9c94086a200808b7148e4885bcb57510fce875822e736234f279387f64b179dc +CT= 738fcbb9118882a546ef0e0b8005b088c0c02c11ea25e2ebc887af75c3d9afcd +PT= 345ec8e01ee859530ea6fe2028fa14db5209c9d913927359e2120099ea5ef787 +TEST= 217 +KEY= 10fd6c2259980e52a3310474ea617d451f1c7d412dceb00990907c42890f3e72 +IV= 9c0c8ff1d86d02dd1aea45560b8030b9cb24ef339442f67364b22f5451853538 +CT= 345ec8e01ee859530ea6fe2028fa14db5209c9d913927359e2120099ea5ef787 +PT= 2f8296c36db33a9f5ffeaabbece8b4e2b393ded69bbea9a83e7e33a2db5b978f +TEST= 218 +KEY= 3f7ffae1342b34cdfccfaecf0689c9a7ac8fa397b67019a1aeee4fe05254a9fd +IV= 2b6a1dada6c7db43e8954df433bf88bbc47d6eda4f0fb58dd3c913c800b6469c +CT= 2f8296c36db33a9f5ffeaabbece8b4e2b393ded69bbea9a83e7e33a2db5b978f +PT= fb9eea6fd315b82f8b8c24c729fdb3849b751d05c931351b2081a05e85cfd68f +TEST= 219 +KEY= c4e1108ee73e8ce277438a082f747a2337fabe927f412cba8e6fefbed79b7f72 +IV= b004f959588e3a8efe26dfdaacb26b6036ab23455ac7ab852c9aa7f62b0984fa +CT= fb9eea6fd315b82f8b8c24c729fdb3849b751d05c931351b2081a05e85cfd68f +PT= e86a262d46a0a20bef73a8dcea7d5ed48f4381d32a5156e264da79d3fc868aff +TEST= 220 +KEY= 2c8b36a3a19e2ee9983022d4c50924f7b8b93f4155107a58eab5966d2b1df58d +IV= 78db0b8ddb76658ecd5802b69df89eb4227ad769ffb7f44f210f703167f3dd13 +CT= e86a262d46a0a20bef73a8dcea7d5ed48f4381d32a5156e264da79d3fc868aff +PT= 8bbd10aa91c5a64b11726091f56ec41256bc04200f8ae70abdbeb1b638b35e36 +TEST= 221 +KEY= a7362609305b88a2894242453067e0e5ee053b615a9a9d52570b27db13aeabbb +IV= 56dcca6b045cebdb732f515880690b41204015d6338def1d1d7f6190bdb2fcd7 +CT= 8bbd10aa91c5a64b11726091f56ec41256bc04200f8ae70abdbeb1b638b35e36 +PT= 1fbaf720431d648aa318b405273e4250c290f3d7fb29e2530ccc36a8d8059bac +TEST= 222 +KEY= b88cd1297346ec282a5af6401759a2b52c95c8b6a1b37f015bc71173cbab3017 +IV= 6558a48c15305d2a010bdafa713bbd7a486de89817f07cecae781ba3112e791e +CT= 1fbaf720431d648aa318b405273e4250c290f3d7fb29e2530ccc36a8d8059bac +PT= 2f640c89d7fc19ac22c76cac2e4ee28534c49442e563b9b37c28ef94787c1873 +TEST= 223 +KEY= 97e8dda0a4baf584089d9aec3917403018515cf444d0c6b227effee7b3d72864 +IV= bee98970f12c66d69f00564f2bd9501824dbf285622468a5d3435805183de9fc +CT= 2f640c89d7fc19ac22c76cac2e4ee28534c49442e563b9b37c28ef94787c1873 +PT= 74bdcc4efef6063e807ea0d1d42548826ea121d996e73abc390ea15a42b939e5 +TEST= 224 +KEY= e35511ee5a4cf3ba88e33a3ded3208b276f07d2dd237fc0e1ee15fbdf16e1181 +IV= 60335c14595cb539c6babfa9f9bbb2a0041e9a3da835a386353b1b0072799283 +CT= 74bdcc4efef6063e807ea0d1d42548826ea121d996e73abc390ea15a42b939e5 +PT= 86160afd364a9a93fbd07894672447fa0fc053755ebcd7ade767fa55ccb53c9a +TEST= 225 +KEY= 65431b136c066929733342a98a164f4879302e588c8b2ba3f986a5e83ddb2d1b +IV= c8ef9267c5d6cf2893aa6ae1d9177d017cc71749193e72dc45de68ee4650c383 +CT= 86160afd364a9a93fbd07894672447fa0fc053755ebcd7ade767fa55ccb53c9a +PT= a490a1f28cc86fb01c64d3347e3c6f3cfa08f2172bebef053ddc2edcbe51069b +TEST= 226 +KEY= c1d3bae1e0ce06996f57919df42a20748338dc4fa760c4a6c45a8b34838a2b80 +IV= 636e6588182b0c2a258512b10dcc0184cfe0d1a92842224f08ef2ca2b5dab105 +CT= a490a1f28cc86fb01c64d3347e3c6f3cfa08f2172bebef053ddc2edcbe51069b +PT= c0deb6a838b1161d182a846d8400563ca317bc5bcadab7017e4fa092fbe62de8 +TEST= 227 +KEY= 010d0c49d87f1084777d15f0702a7648202f60146dba73a7ba152ba6786c0668 +IV= 447c06c639d972d4802398edcdcaeb55a4ea56d0cefecbfc0700e5c11e2671bf +CT= c0deb6a838b1161d182a846d8400563ca317bc5bcadab7017e4fa092fbe62de8 +PT= f36f7993be0ef96cd7090e7839aa53e43c21a35e0a2bc200efe0ec685123ca24 +TEST= 228 +KEY= f26275da6671e9e8a0741b88498025ac1c0ec34a6791b1a755f5c7ce294fcc4c +IV= 40292851113a1264ce8583b7278257eaf794695f4897f2269cc425ef7137f7d2 +CT= f36f7993be0ef96cd7090e7839aa53e43c21a35e0a2bc200efe0ec685123ca24 +PT= dcb608761cb8496b091479a71dda36a84effe40dcbdefde3fe2c918b55d1bfae +TEST= 229 +KEY= 2ed47dac7ac9a083a960622f545a130452f12747ac4f4c44abd956457c9e73e2 +IV= 8aa8bf0d8c0f9a6574ada74db9d547039778ba0def9bfeac75f1fa6461648f5e +CT= dcb608761cb8496b091479a71dda36a84effe40dcbdefde3fe2c918b55d1bfae +PT= dcde7a8145f09281233db6041d17e2db4bd5fc2cd3e323ed42d05d5d671dbd92 +TEST= 230 +KEY= f20a072d3f3932028a5dd42b494df1df1924db6b7fac6fa9e9090b181b83ce70 +IV= 3c679069c8713ed8080047385cee0622085ae13ab42bac2a0526885de47b1b9d +CT= dcde7a8145f09281233db6041d17e2db4bd5fc2cd3e323ed42d05d5d671dbd92 +PT= 9b406b91f2126217cf7c3b2dc763055232f05ac03c1ca123548b2f74857fe2ff +TEST= 231 +KEY= 694a6cbccd2b50154521ef068e2ef48d2bd481ab43b0ce8abd82246c9efc2c8f +IV= fed66758506753dee1e5aae8221f551a56f7f3f3bd6e006be745cc9cc333f423 +CT= 9b406b91f2126217cf7c3b2dc763055232f05ac03c1ca123548b2f74857fe2ff +PT= 5c3df55751209939539aa300c51da6c5e3735654252331049c670ca7b1b1b851 +TEST= 232 +KEY= 357799eb9c0bc92c16bb4c064b335248c8a7d7ff6693ff8e21e528cb2f4d94de +IV= fe203a450bb012dd17f0901dbd85dcebb8272a5595e0f7a16c41166e89260af0 +CT= 5c3df55751209939539aa300c51da6c5e3735654252331049c670ca7b1b1b851 +PT= c64a05e2e411d8285f7f7e23836943927b85684a159493c7fbb1f23dcf6ee4e0 +TEST= 233 +KEY= f33d9c09781a110449c43225c85a11dab322bfb573076c49da54daf6e023703e +IV= 780ae859ff9bd6a9af7ac48842103c0894f774311897e823ad7ecac7d2d1c569 +CT= c64a05e2e411d8285f7f7e23836943927b85684a159493c7fbb1f23dcf6ee4e0 +PT= dbc9fafb8f97f36e560817c103bae5563c7b40d27d9a2c665a9b6965924d193f +TEST= 234 +KEY= 28f466f2f78de26a1fcc25e4cbe0f48c8f59ff670e9d402f80cfb393726e6901 +IV= 8fb531532b151bd28d87e2f9593f1f084626dd9b3296d03a05ddc2de7f34e405 +CT= dbc9fafb8f97f36e560817c103bae5563c7b40d27d9a2c665a9b6965924d193f +PT= 2d763cfff6f40f0a84d9226be31872bb396d625c3f3f0fc5ea6beabf5dd589fd +TEST= 235 +KEY= 05825a0d0179ed609b15078f28f88637b6349d3b31a24fea6aa4592c2fbbe0fc +IV= be7d470500170cd21c6b1d23fd63f0096701c4686f06fb1ee0368e16892f9a6d +CT= 2d763cfff6f40f0a84d9226be31872bb396d625c3f3f0fc5ea6beabf5dd589fd +PT= d1001d23de3e42e0942d18c3a5bc4af6ce4898da08232924fc194fd29b3f0000 +TEST= 236 +KEY= d482472edf47af800f381f4c8d44ccc1787c05e1398166ce96bd16feb484e0fc +IV= 952dad50c6af105bf9cc802113e5349073801b33f605c22432edfee47c432a01 +CT= d1001d23de3e42e0942d18c3a5bc4af6ce4898da08232924fc194fd29b3f0000 +PT= 434869aeb5569604e7b570b6d602bed505137af41d54476c460b3844ba4e5451 +TEST= 237 +KEY= 97ca2e806a113984e88d6ffa5b4672147d6f7f1524d521a2d0b62eba0ecab4ad +IV= 6c9b85a6cbe919bc09044a533e6974badaf027924bd9cdd9184ce0a5622e2fbb +CT= 434869aeb5569604e7b570b6d602bed505137af41d54476c460b3844ba4e5451 +PT= 51ce6563cc62b7f69b45c48e09724243cb7675b4724c201d472c659609f48592 +TEST= 238 +KEY= c6044be3a6738e7273c8ab7452343057b6190aa1569901bf979a4b2c073e313f +IV= b0a5139bffe12f4457a0fe665c87d60c1a1d0a552b3a160c81175e385c3abaf2 +CT= 51ce6563cc62b7f69b45c48e09724243cb7675b4724c201d472c659609f48592 +PT= a5a7e8e53ff2f5cd7ca9b627da9e8f95cacb0959c1d2d500735dfdc13201583c +TEST= 239 +KEY= 63a3a30699817bbf0f611d5388aabfc27cd203f8974bd4bfe4c7b6ed353f6903 +IV= 67f169f0b529c9fcfe059ae50d644340f12e26de5e63b1bed35c8aa2a4ff2738 +CT= a5a7e8e53ff2f5cd7ca9b627da9e8f95cacb0959c1d2d500735dfdc13201583c +PT= a5e4d28a04e6a8f1f335899b03b5ec1114cc09a6bc794398be980c6d409a6d0b +TEST= 240 +KEY= c647718c9d67d34efc5494c88b1f53d3681e0a5e2b3297275a5fba8075a50408 +IV= 1148746692d6f7e0809787f7edfe40ed30562e76eae1513c23dd3bcc58beeb0c +CT= a5e4d28a04e6a8f1f335899b03b5ec1114cc09a6bc794398be980c6d409a6d0b +PT= 9dbf2943dbb372b7ce3398ca22fb64ced77b475cbd290b769b7f367f6f7dfa28 +TEST= 241 +KEY= 5bf858cf46d4a1f932670c02a9e4371dbf654d02961b9c51c1208cff1ad8fe20 +IV= 012ee43537036d2844ed8255e29920f8a23b27f7efc0a37fc0f994b890c86416 +CT= 9dbf2943dbb372b7ce3398ca22fb64ced77b475cbd290b769b7f367f6f7dfa28 +PT= c4ea65c2f6560ebe583623b3fee758f26dbcd97dffff2b1aecbf4547f2d04031 +TEST= 242 +KEY= 9f123d0db082af476a512fb157036fefd2d9947f69e4b74b2d9fc9b8e808be11 +IV= b4d3b39b0ae549c98d952d12b10a121b34fa19af7d2d640bf0c69ff8c18413a6 +CT= c4ea65c2f6560ebe583623b3fee758f26dbcd97dffff2b1aecbf4547f2d04031 +PT= 7ad03ef374602af3ee35dfcf7da789b1cc62028ee48b95537d3449581bc959c1 +TEST= 243 +KEY= e5c203fec4e285b48464f07e2aa4e65e1ebb96f18d6f221850ab80e0f3c1e7d0 +IV= fa529ea13e88f617fd2a71c13bc3429f6b2fa08d71952c7c7438109808a64b75 +CT= 7ad03ef374602af3ee35dfcf7da789b1cc62028ee48b95537d3449581bc959c1 +PT= 5d28059beef1e76b6b76238a7e6152843f28ca89b0d6e913ee7b44b5bf34acd0 +TEST= 244 +KEY= b8ea06652a1362dfef12d3f454c5b4da21935c783db9cb0bbed0c4554cf54b00 +IV= 938806947eb8c7a004c922d30fd0073f45144ecd58c62656a6b68ef97949aede +CT= 5d28059beef1e76b6b76238a7e6152843f28ca89b0d6e913ee7b44b5bf34acd0 +PT= a199fcfa8b6d480f34d9dbd4d768d1f14db762e4cfbd3ca26687160655f1337c +TEST= 245 +KEY= 1973fa9fa17e2ad0dbcb082083ad652b6c243e9cf204f7a9d857d2531904787c +IV= 10f06d657e5637e4ac75d40c4ee26eb104193e56e3d57ec921cc6184da481ebf +CT= a199fcfa8b6d480f34d9dbd4d768d1f14db762e4cfbd3ca26687160655f1337c +PT= 17208bef8244f938a7c2b5c460713eba79f6654cb5a8d5c0005c385e5a6bd6c6 +TEST= 246 +KEY= 0e537170233ad3e87c09bde4e3dc5b9115d25bd047ac2269d80bea0d436faeba +IV= d1c89a7b423311d292521916e5a1bfd5e71389fddbd98c3b730d2f68f158bef5 +CT= 17208bef8244f938a7c2b5c460713eba79f6654cb5a8d5c0005c385e5a6bd6c6 +PT= 8b0c10f12e4f46357d94c52ae2b953d5be0a47d8325ee4ac9f26d3ff7a67c3ad +TEST= 247 +KEY= 855f61810d7595dd019d78ce01650844abd81c0875f2c6c5472d39f239086d17 +IV= 76d0469beb2a8a2ed40f66351a6b394ce91a24d04b39122ac04b90065b2cc71a +CT= 8b0c10f12e4f46357d94c52ae2b953d5be0a47d8325ee4ac9f26d3ff7a67c3ad +PT= 9d3a7439d6f41dfa46a369facc63b3394b8b6bf2cea78c6e9b511bdbb05e4660 +TEST= 248 +KEY= 186515b8db818827473e1134cd06bb7de05377fabb554aabdc7c222989562b77 +IV= 35f9df85477e8a257e65c851e74142a943d1315cd9bfe9a9fc79b2da1b7aa430 +CT= 9d3a7439d6f41dfa46a369facc63b3394b8b6bf2cea78c6e9b511bdbb05e4660 +PT= 76f7517b0180df29e425afc035145caa94aa53ed4dc5bccd4c929c78d8872877 +TEST= 249 +KEY= 6e9244c3da01570ea31bbef4f812e7d774f92417f690f66690eebe5151d10300 +IV= c0a6db519bef3f96258a117267b12f71b8f99d1380c3eaf2239963383a54bc0b +CT= 76f7517b0180df29e425afc035145caa94aa53ed4dc5bccd4c929c78d8872877 +PT= 5462fa1b1bf3669c7ed98a1bff55a215ffcab16e9fac620231e43076dfd689f8 +TEST= 250 +KEY= 3af0bed8c1f23192ddc234ef074745c28b339579693c9464a10a8e278e078af8 +IV= 102c9a9586b94692ba25c3fbff94732cabb13a02e5f44e5e9fe75e3301ca2d0a +CT= 5462fa1b1bf3669c7ed98a1bff55a215ffcab16e9fac620231e43076dfd689f8 +PT= 370016aab26e8391d54ef54d58136983f27f5aa601fa7def469c8dc22f2c8e15 +TEST= 251 +KEY= 0df0a872739cb203088cc1a25f542c41794ccfdf68c6e98be79603e5a12b04ed +IV= e0092c7f311ab27f5b0fe532b683b185750709c939ab6a5a2c7a311ede2db680 +CT= 370016aab26e8391d54ef54d58136983f27f5aa601fa7def469c8dc22f2c8e15 +PT= 1888b8d530fddcd7d6fabc033b05e8176a89a2357765cdb1c621a1399eacb291 +TEST= 252 +KEY= 157810a743616ed4de767da16451c45613c56dea1fa3243a21b7a2dc3f87b67c +IV= 252a35e25b58bfaad1dc975de1374f64e4d5a4c820b831d2d60cd38052bd1a84 +CT= 1888b8d530fddcd7d6fabc033b05e8176a89a2357765cdb1c621a1399eacb291 +PT= f648bd547c313eae9db899b1df34a2129eb4b1813469e96f7d8a0f60803376f1 +TEST= 253 +KEY= e330adf33f50507a43cee410bb6566448d71dc6b2bcacd555c3dadbcbfb4c08d +IV= 5356df91f1cafea1c54a1f044ce24af9101b507f16076c99337617b97009c9f8 +CT= f648bd547c313eae9db899b1df34a2129eb4b1813469e96f7d8a0f60803376f1 +PT= aa3c3fcb9d47ed1a213c30701d673da2dce18d8154391ba9a28f16b8b3485bf3 +TEST= 254 +KEY= 490c9238a217bd6062f2d460a6025be6519051ea7ff3d6fcfeb2bb040cfc9b7e +IV= 629b65693e8fd3bf98554bdc784387037ac4c576f971f11c2ba75b3471e8f614 +CT= aa3c3fcb9d47ed1a213c30701d673da2dce18d8154391ba9a28f16b8b3485bf3 +PT= 7e3bef41c00b3d81c92c864cd5e9530f014be7a93a1ac181ad98945e4e90c393 +TEST= 255 +KEY= 37377d79621c80e1abde522c73eb08e950dbb64345e9177d532a2f5a426c58ed +IV= 2b9d7aade270415d6fbfd1c15d8ca4c0b2257df28fa8c94078b81d3de1c59cb5 +CT= 7e3bef41c00b3d81c92c864cd5e9530f014be7a93a1ac181ad98945e4e90c393 +PT= 6e7faceb16afc76e5d3b33b3b66b468dbe8e82cc82a81950c9bc0cbab7a6aa7b +TEST= 256 +KEY= 5948d19274b3478ff6e5619fc5804e64ee55348fc7410e2d9a9623e0f5caf296 +IV= 64c9c369a217222cd71e91b7b01eb81c5265bc0bc137a1e7f4cc7dabfeeae7e7 +CT= 6e7faceb16afc76e5d3b33b3b66b468dbe8e82cc82a81950c9bc0cbab7a6aa7b +PT= 8d27bf0816d5be8192f27e8560d5a0da141e0bcf0e0f4da56ab5c147d21686b1 +TEST= 257 +KEY= d46f6e9a6266f90e64171f1aa555eebefa4b3f40c94e4388f023e2a727dc7427 +IV= 26eda65b9b730151704c029fba5b8660705b73c474fb172e4a045b90b757ed36 +CT= 8d27bf0816d5be8192f27e8560d5a0da141e0bcf0e0f4da56ab5c147d21686b1 +PT= c67e59972abc50877075f05b6edd578865258714679cf30be418e27fc9ce8e8d +TEST= 258 +KEY= 1211370d48daa9891462ef41cb88b9369f6eb854aed2b083143b00d8ee12faaa +IV= 3e9aac24ce219b0f0cf5f5cbe351dfd2bd4b05eed9aef1d60303925050715990 +CT= c67e59972abc50877075f05b6edd578865258714679cf30be418e27fc9ce8e8d +PT= 03168d54e7e37b7f65074b91752a69c0ce00c7d8ae6049f5dcd54d899a233e7e +TEST= 259 +KEY= 1107ba59af39d2f67165a4d0bea2d0f6516e7f8c00b2f976c8ee4d517431c4d4 +IV= 3b8a09f2ccbf66ce94fc73ce40d12674315e94b111d7ed432f96ef11bbd5a930 +CT= 03168d54e7e37b7f65074b91752a69c0ce00c7d8ae6049f5dcd54d899a233e7e +PT= 27037763829116d4bc67383aed9133d66bd484ffa5909c9258adb132349b79ec +TEST= 260 +KEY= 3604cd3a2da8c422cd029cea5333e3203abafb73a52265e49043fc6340aabd38 +IV= 0a561283d41cfc464fc6417a4f92529e8d83c3b6685647a862d234e8be0ab41b +CT= 27037763829116d4bc67383aed9133d66bd484ffa5909c9258adb132349b79ec +PT= ad60966ee38f597e4c0e7ab8f3a9e26d9749fcc4450bf72f9e6c4a2867821b28 +TEST= 261 +KEY= 9b645b54ce279d5c810ce652a09a014dadf307b7e02992cb0e2fb64b2728a610 +IV= 00fdcd3414cbfa47d88926fa76a58fbbbf4c54a1ded43bb55b084e70cc512c10 +CT= ad60966ee38f597e4c0e7ab8f3a9e26d9749fcc4450bf72f9e6c4a2867821b28 +PT= 2e24d23c949ec213a47c388e5358ff7cc4b74db0006fa45c432a697c59c3d520 +TEST= 262 +KEY= b54089685ab95f4f2570dedcf3c2fe3169444a07e04636974d05df377eeb7330 +IV= de5e15c88dcbf68d23200a5f670f520c8598068eb1bd21932582c50558759ff5 +CT= 2e24d23c949ec213a47c388e5358ff7cc4b74db0006fa45c432a697c59c3d520 +PT= 5056cfda432450b0829dccb7eaaf1f84f06cd05b7125cf7200b4e66ddc9f3a2c +TEST= 263 +KEY= e51646b2199d0fffa7ed126b196de1b599289a5c9163f9e54db1395aa274491c +IV= 5f40d25216180ec666f421fc452c466078aad981ef6b591e1cd96c089147ef3d +CT= 5056cfda432450b0829dccb7eaaf1f84f06cd05b7125cf7200b4e66ddc9f3a2c +PT= c9b8cc88cc90890dd40d88fe84b1c184624c9c9ce7a9cfb5e31a0347b87cb909 +TEST= 264 +KEY= 2cae8a3ad50d86f273e09a959ddc2031fb6406c076ca3650aeab3a1d1a08f015 +IV= e1823bc14e9ee398ba983fb140228482dd65f68353c910dfa7156ad8f2c32825 +CT= c9b8cc88cc90890dd40d88fe84b1c184624c9c9ce7a9cfb5e31a0347b87cb909 +PT= 7ac21f4abbf5ca576ee8ab7df406e2f6427639adfb557e1b8722585082e4c40c +TEST= 265 +KEY= 566c95706ef84ca51d0831e869dac2c7b9123f6d8d9f484b2989624d98ec3419 +IV= fed1ad30ec4bb5015d5c3185361f24236e2246bf423715528d7de9830b380d3d +CT= 7ac21f4abbf5ca576ee8ab7df406e2f6427639adfb557e1b8722585082e4c40c +PT= 093d21d23c291562f19b5badd8bccb721064a063d7b5e94ddf3ad714fad40ab0 +TEST= 266 +KEY= 5f51b4a252d159c7ec936a45b16609b5a9769f0e5a2aa106f6b3b55962383ea9 +IV= 39df99592b72f1e9ea68cec045c42f9a74c626cac4620ab291a38ec0b537aa78 +CT= 093d21d23c291562f19b5badd8bccb721064a063d7b5e94ddf3ad714fad40ab0 +PT= a9671714aec48844a29d20011f4f5aadbc33030146b2ed27de962354f7102906 +TEST= 267 +KEY= f636a3b6fc15d1834e0e4a44ae29531815459c0f1c984c212825960d952817af +IV= 5c73e789e9881121b1a6736487d986fa0f2b1d12c79be9e69ef7b2537363db6d +CT= a9671714aec48844a29d20011f4f5aadbc33030146b2ed27de962354f7102906 +PT= fad0f45626bdcfc9e646f5ccf1c4d791cf195216c650dc5c139707f1e7c20c50 +TEST= 268 +KEY= 0ce657e0daa81e4aa848bf885fed8489da5cce19dac8907d3bb291fc72ea1bff +IV= 56bbc6827b06d71ec5b9cc2e74df66c0e28a3a14a389bf0e26781f4fff1633eb +CT= fad0f45626bdcfc9e646f5ccf1c4d791cf195216c650dc5c139707f1e7c20c50 +PT= d4f461df5c7fa7b13537262e3cf42bb8e86571561cb520db08c14246a0e1088a +TEST= 269 +KEY= d812363f86d7b9fb9d7f99a66319af313239bf4fc67db0a63373d3bad20b1375 +IV= c823f3ceb4ac4c07c6aad3b619750eb29a097ab6a0b46c900be3ef0afc02f6c9 +CT= d4f461df5c7fa7b13537262e3cf42bb8e86571561cb520db08c14246a0e1088a +PT= e6543e67dd99b272d1fc99671258a734c8124ef006648112a1fd678e3d9b3320 +TEST= 270 +KEY= 3e4608585b4e0b894c8300c171410805fa2bf1bfc01931b4928eb434ef902055 +IV= ec13bb1b5bc1bc66e28d39e3c771155394b0fc26f371d3a40a0d0ba26520f1b8 +CT= e6543e67dd99b272d1fc99671258a734c8124ef006648112a1fd678e3d9b3320 +PT= 55f887d1aadbddc7921ce9dec957c43abd78605c05bc4d73ada33bc47ce51e55 +TEST= 271 +KEY= 6bbe8f89f195d64ede9fe91fb816cc3f475391e3c5a57cc73f2d8ff093753e00 +IV= 58198a9c472914f61e69b2af84f8eba550827ca90f4df4e7ff64a27c61871e78 +CT= 55f887d1aadbddc7921ce9dec957c43abd78605c05bc4d73ada33bc47ce51e55 +PT= 36fcfbce3a1945937798b4bb5b2c92c910cbb920c15045d8e8aab7bbea61e045 +TEST= 272 +KEY= 5d427447cb8c93dda9075da4e33a5ef6579828c304f5391fd787384b7914de45 +IV= ad1c1adda7597dabf3e711cdaa90e4a747576a9f2c30cbc9438ab4938e6b53bd +CT= 36fcfbce3a1945937798b4bb5b2c92c910cbb920c15045d8e8aab7bbea61e045 +PT= 26dd7228f852ee8859ce8d3a61b458c202d3411ae66339f0a829bfcf347cec92 +TEST= 273 +KEY= 7b9f066f33de7d55f0c9d09e828e0634554b69d9e29600ef7fae87844d6832d7 +IV= b44b1454a22d536bdeb28339daa1c515d2aa0b30b3c56bdf8708e94cc653cf0a +CT= 26dd7228f852ee8859ce8d3a61b458c202d3411ae66339f0a829bfcf347cec92 +PT= 348e8963c42bea4ccdfa954a321df870d202b7ff60ba47d55dfeb6c11cc0d8de +TEST= 274 +KEY= 4f118f0cf7f597193d3345d4b093fe448749de26822c473a2250314551a8ea09 +IV= d08e643e46ed044223e4a789fc2d4da4132dd5479ed7e76c9f45181d050dd48e +CT= 348e8963c42bea4ccdfa954a321df870d202b7ff60ba47d55dfeb6c11cc0d8de +PT= 3e24353be715b4259a1f0f95d56969d8b4811b6f9a90703ba1c2aa42748c48d5 +TEST= 275 +KEY= 7135ba3710e0233ca72c4a4165fa979c33c8c54918bc370183929b072524a2dc +IV= afd9b574985a275016c33045b0d1a0ed9d5330e2c88bfe073f6979140049bfcb +CT= 3e24353be715b4259a1f0f95d56969d8b4811b6f9a90703ba1c2aa42748c48d5 +PT= 5970846360f3a9b828cc53bbda6a0ee8a5404f5bb3f1d7d69f6496a519034e93 +TEST= 276 +KEY= 28453e5470138a848fe019fabf90997496888a12ab4de0d71cf60da23c27ec4f +IV= a65cd8b26deb44e826379333f5c6061d301fc1caeddecec54fa99a21504bf06c +CT= 5970846360f3a9b828cc53bbda6a0ee8a5404f5bb3f1d7d69f6496a519034e93 +PT= e2d4615444b92e4a15c216a4198b29e35e7105024d78fcdd22934889d1790919 +TEST= 277 +KEY= ca915f0034aaa4ce9a220f5ea61bb097c8f98f10e6351c0a3e65452bed5ee556 +IV= 3d69c2810f3414208399c1ab3e935570bb0cc2e8fe522c531520bf71f70570c1 +CT= e2d4615444b92e4a15c216a4198b29e35e7105024d78fcdd22934889d1790919 +PT= e549b7472db7b5cfcc93967f89cde535df553f8ef46af94be550adc9bd7f7f96 +TEST= 278 +KEY= 2fd8e847191d110156b199212fd655a217acb09e125fe541db35e8e250219ac0 +IV= d5cf88e4187fa92e3e7590b2b2b6a1a28098749018db6486f776634524378fe3 +CT= e549b7472db7b5cfcc93967f89cde535df553f8ef46af94be550adc9bd7f7f96 +PT= 6c51a8d6e103dc98fc16e3b072b963668a2e182a1b3a178bd637e3c1fc052cf6 +TEST= 279 +KEY= 43894091f81ecd99aaa77a915d6f36c49d82a8b40965f2ca0d020b23ac24b636 +IV= b0e48dde945b08cddf2913cb769bf0f809d85569dfe9848d3861719b8b64bbb3 +CT= 6c51a8d6e103dc98fc16e3b072b963668a2e182a1b3a178bd637e3c1fc052cf6 +PT= 0e282bb6bb50aecbd94a32e34ef4eff24eaeb12a718aacc4a769f7b0647be4fe +TEST= 280 +KEY= 4da16b27434e635273ed4872139bd936d32c199e78ef5e0eaa6bfc93c85f52c8 +IV= 4cffa995917166facc8541c053ac46b057fabfa83a8e676b0d3bb422212275c6 +CT= 0e282bb6bb50aecbd94a32e34ef4eff24eaeb12a718aacc4a769f7b0647be4fe +PT= 235cb749139d4b9b68a955ebaec9b5548f7771a276282daa0ec7cd9dea492724 +TEST= 281 +KEY= 6efddc6e50d328c91b441d99bd526c625c5b683c0ec773a4a4ac310e221675ec +IV= 2ad4352d7602197c166009795dffae26ef8aa9a5af8f68cc64a6bf480f5b5d37 +CT= 235cb749139d4b9b68a955ebaec9b5548f7771a276282daa0ec7cd9dea492724 +PT= 03082a79e804cb23701c8ea4277531b56a8720ae05571c1e914b17c6c90ac3a1 +TEST= 282 +KEY= 6df5f617b8d7e3ea6b58933d9a275dd736dc48920b906fba35e726c8eb1cb64d +IV= dc89ee800964c393473a837c9d2e3fe7129c8ecbf3a13ec6f26858e270b25d7c +CT= 03082a79e804cb23701c8ea4277531b56a8720ae05571c1e914b17c6c90ac3a1 +PT= 9446f9fc6fc26c8c8abbe647a633ec9d2caf03586cdc46a361297f09093cdade +TEST= 283 +KEY= f9b30febd7158f66e1e3757a3c14b14a1a734bca674c291954ce59c1e2206c93 +IV= 2922716a3debc9e22ea1a8541ed1ed16daa1de94a6a945ba8998489d7b5b0dfe +CT= 9446f9fc6fc26c8c8abbe647a633ec9d2caf03586cdc46a361297f09093cdade +PT= e7221f13921f829678837e294f010217f45ceb042bf42487982a6d54e47c0d01 +TEST= 284 +KEY= 1e9110f8450a0df099600b537315b35dee2fa0ce4cb80d9ecce43495065c6192 +IV= 9a0a0e6083a91f30e7f83bf04fcdad494c2ae9dd13b7f8141a28b34c2ec609d3 +CT= e7221f13921f829678837e294f010217f45ceb042bf42487982a6d54e47c0d01 +PT= 6282a43722df7d8a5e94608d6824d86e488df97acd09dc4eb064cb4f9eced8d2 +TEST= 285 +KEY= 7c13b4cf67d5707ac7f46bde1b316b33a6a259b481b1d1d07c80ffda9892b940 +IV= 2228a9a9dc027d18a74bcb9a54f09545c60ab87936a3d183e4ee5412bb240a37 +CT= 6282a43722df7d8a5e94608d6824d86e488df97acd09dc4eb064cb4f9eced8d2 +PT= e723021d16044b95b2c5743920987cba8caefe9dd7e6b59252b2a64da3f7343c +TEST= 286 +KEY= 9b30b6d271d13bef75311fe73ba917892a0ca729565764422e3259973b658d7c +IV= 45345dcd699755a9625e689c94ef53f933c317d45da937f432ed8e377ba66c85 +CT= e723021d16044b95b2c5743920987cba8caefe9dd7e6b59252b2a64da3f7343c +PT= 91533684129f5977ec2a36ebd4c525bac829bd1ceecb8fbcc5d9340d3884ad81 +TEST= 287 +KEY= 0a638056634e6298991b290cef6c3233e2251a35b89cebfeebeb6d9a03e120fd +IV= 467caaebe701ce68b612f6420084207cd7012ae935e20a59a5b6fd303b18ea70 +CT= 91533684129f5977ec2a36ebd4c525bac829bd1ceecb8fbcc5d9340d3884ad81 +PT= c0503a887d7cfda493d00fdb791cbbc2b5abe9be515d6df88dd0f412ba3dbaac +TEST= 288 +KEY= ca33bade1e329f3c0acb26d7967089f1578ef38be9c18606663b9988b9dc9a51 +IV= 0463e8ea12d81b4ddb4ffd9ea9851d3090f951f884479282e0ca4355c595aec9 +CT= c0503a887d7cfda493d00fdb791cbbc2b5abe9be515d6df88dd0f412ba3dbaac +PT= f4da207ccfe977b463ed82526033599ff9d1e913fef25ce53c0e74481b808932 +TEST= 289 +KEY= 3ee99aa2d1dbe8886926a485f643d06eae5f1a981733dae35a35edc0a25c1363 +IV= b0b94d7abe6da6b1dfe5cc069c87ed516763f0097c45507f7d4424b290026364 +CT= f4da207ccfe977b463ed82526033599ff9d1e913fef25ce53c0e74481b808932 +PT= ef6d09dcf1ecc3064c14ec46818ff8ec1ae7b6fc402c7fab98a024bbc89719bf +TEST= 290 +KEY= d184937e20372b8e253248c377cc2882b4b8ac64571fa548c295c97b6acb0adc +IV= 242af4e5e29da78dd7785a580df63dc876b95227ce1aea8fbccd452bef1744c2 +CT= ef6d09dcf1ecc3064c14ec46818ff8ec1ae7b6fc402c7fab98a024bbc89719bf +PT= e05c3da59ccce930792434a570c05538a4459bf2a587b4724e73886da0d0f2d4 +TEST= 291 +KEY= 31d8aedbbcfbc2be5c167c66070c7dba10fd3796f298113a8ce64116ca1bf808 +IV= 208a0ee497e126eff961991a3ab45b9ebbfa46f0a15187e0b11326830f2f4797 +CT= e05c3da59ccce930792434a570c05538a4459bf2a587b4724e73886da0d0f2d4 +PT= 4b825c2b42c92da72fce1cbc78ba988e02110dbcfa924881ef65e87695599a44 +TEST= 292 +KEY= 7a5af2f0fe32ef1973d860da7fb6e53412ec3a2a080a59bb6383a9605f42624c +IV= 80c4216d1df7bd54d4dcbfc6c507d05042ddda6ba76c31d02e1a22562c8095a8 +CT= 4b825c2b42c92da72fce1cbc78ba988e02110dbcfa924881ef65e87695599a44 +PT= cd71af891443e3520fdda24c6b89a7b3d76e97c4bef54f6cfddb329be4fb1da6 +TEST= 293 +KEY= b72b5d79ea710c4b7c05c296143f4287c582adeeb6ff16d79e589bfbbbb97fea +IV= a34a3315ce427f756a8e628085d4d6ee09f7ea37c54d8345ba2c70537902892b +CT= cd71af891443e3520fdda24c6b89a7b3d76e97c4bef54f6cfddb329be4fb1da6 +PT= 6ad424f6bc9aae07da017d6a2623712d368ae987f63a6145eaa37dee274754f2 +TEST= 294 +KEY= ddff798f56eba24ca604bffc321c33aaf308446940c5779274fbe6159cfe2b18 +IV= 7dd2ee39c949472ab7a71cacb704e0619c762449d9a2804e0518ee6774146535 +CT= 6ad424f6bc9aae07da017d6a2623712d368ae987f63a6145eaa37dee274754f2 +PT= cc1e22a7bc6adfdf1f9f55e2bf116dea4bc80fef8270fad55aca08223483df0d +TEST= 295 +KEY= 11e15b28ea817d93b99bea1e8d0d5e40b8c04b86c2b58d472e31ee37a87df415 +IV= e1b8273891b9367ad4166a03baa96028b38177d7619b87d6285730cf34d9b454 +CT= cc1e22a7bc6adfdf1f9f55e2bf116dea4bc80fef8270fad55aca08223483df0d +PT= 139491c1e708645ce83c18571d3559a6ccaf260622b1ad29dc6a8a087ab1f8a6 +TEST= 296 +KEY= 0275cae90d8919cf51a7f249903807e6746f6d80e004206ef25b643fd2cc0cb3 +IV= dac0a0f1702fa4b13e8a6ffbfef67fee486863311f1a3d12359b64fb99dffe05 +CT= 139491c1e708645ce83c18571d3559a6ccaf260622b1ad29dc6a8a087ab1f8a6 +PT= b730de13460e34f28f673faeff04f5c3d83836ed594f919ddaf9fa1d5db62788 +TEST= 297 +KEY= b54514fa4b872d3ddec0cde76f3cf225ac575b6db94bb1f328a29e228f7a2b3b +IV= b062e02708ff6dbf7618a452c3fc9b9decdca59b9f671e722b3e4f68c2475bf9 +CT= b730de13460e34f28f673faeff04f5c3d83836ed594f919ddaf9fa1d5db62788 +PT= 9199cdff346b398440a8b2fc22dd3f8e81dc2eeaa6456110ebda129488ee0e1c +TEST= 298 +KEY= 24dcd9057fec14b99e687f1b4de1cdab2d8b75871f0ed0e3c3788cb607942527 +IV= 6f9199b9115ae656a8028b386f35b653b76d049799d70713316a56dad090cae6 +CT= 9199cdff346b398440a8b2fc22dd3f8e81dc2eeaa6456110ebda129488ee0e1c +PT= 77ea4ad2df2578cc94a33fdc5d98718117a0e69136d750455ca28232a4397ac1 +TEST= 299 +KEY= 533693d7a0c96c750acb40c71079bc2a3a2b931629d980a69fda0e84a3ad5fe6 +IV= 6146ff54ccfeca0800579bc448d96458826749dc555be990120740978f6c77c8 +CT= 77ea4ad2df2578cc94a33fdc5d98718117a0e69136d750455ca28232a4397ac1 +PT= c467a60728b320144044a7063c3013b1e03c75a323bf969766c4ff099100f197 +TEST= 300 +KEY= 975135d0887a4c614a8fe7c12c49af9bda17e6b50a661631f91ef18d32adae71 +IV= 78fcb1a2081f6f14a37150bca8706e23b78c0e422ae4bf42a00468e4f3cbb57d +CT= c467a60728b320144044a7063c3013b1e03c75a323bf969766c4ff099100f197 +PT= 7df665c78ad82ca50a3d57af929438dfaba2c735f09fafdf947595e30df68a07 +TEST= 301 +KEY= eaa7501702a260c440b2b06ebedd974471b52180faf9b9ee6d6b646e3f5b2476 +IV= 552ed2ace30b3a3ec6ae9072f9d5a1525c449e3905cd2a805a2f54e93d31ad2d +CT= 7df665c78ad82ca50a3d57af929438dfaba2c735f09fafdf947595e30df68a07 +PT= 20a961ffe6da5ff2cc082feaeb16a88a2cbb7633206329ca67e112e966607b77 +TEST= 302 +KEY= ca0e31e8e4783f368cba9f8455cb3fce5d0e57b3da9a90240a8a7687593b5f01 +IV= c33fdff2ca821f4d4e212056344d926a2d5525378ac872cd58661de2a0b028cf +CT= 20a961ffe6da5ff2cc082feaeb16a88a2cbb7633206329ca67e112e966607b77 +PT= 488242de798af4a5ae1229edd8dd390b726ef6a10872d5175d3f38dc06ac1956 +TEST= 303 +KEY= 828c73369df2cb9322a8b6698d1606c52f60a112d2e8453357b54e5b5f974657 +IV= ada69f7f7a222b2b8d23e2dd3a324de964a1a3699f378e05a235170997d1b85d +CT= 488242de798af4a5ae1229edd8dd390b726ef6a10872d5175d3f38dc06ac1956 +PT= f2edfd4baf04d4fb4b286711dd8e080cf9fe40ebd5b01e4bbe2aa77971bfbd19 +TEST= 304 +KEY= 70618e7d32f61f686980d17850980ec9d69ee1f907585b78e99fe9222e28fb4e +IV= 97653d4c55870b5e76797d5e62c5882e1c8833ffb51870eb877ce6200547e6fb +CT= f2edfd4baf04d4fb4b286711dd8e080cf9fe40ebd5b01e4bbe2aa77971bfbd19 +PT= f3a387bea02fc3b5a45e8bf6f0a9c356911eca2ddc7db21c83383ff8a9d42da9 +TEST= 305 +KEY= 83c209c392d9dcddcdde5a8ea031cd9f47802bd4db25e9646aa7d6da87fcd6e7 +IV= 508015362575e25c05aec07708c89df2118d5bdd001ba50112cd9dbaa4bc3de3 +CT= f3a387bea02fc3b5a45e8bf6f0a9c356911eca2ddc7db21c83383ff8a9d42da9 +PT= c3162e2d84fb191ee68eb933c1d5e36e77e861b42d21e7a12d0edbe42aea5227 +TEST= 306 +KEY= 40d427ee1622c5c32b50e3bd61e42ef130684a60f6040ec547a90d3ead1684c0 +IV= 852f72e32472d3affe484fc1b253183403e96780debd517bfe3c1a874cba4d3a +CT= c3162e2d84fb191ee68eb933c1d5e36e77e861b42d21e7a12d0edbe42aea5227 +PT= 436b542fd1b2a220041f24b494675b8537f1c01fb8be58d3790f089e016c897c +TEST= 307 +KEY= 03bf73c1c79067e32f4fc709f583757407998a7f4eba56163ea605a0ac7a0dbc +IV= d2385a6a25ca597c6ed5fe027e18675073b791fc243c6514eabf9839b4f24e57 +CT= 436b542fd1b2a220041f24b494675b8537f1c01fb8be58d3790f089e016c897c +PT= 09685075e6289c58908b2aa340b608b9c275ac57a8aeb6261d45533a8631b112 +TEST= 308 +KEY= 0ad723b421b8fbbbbfc4edaab5357dcdc5ec2628e614e03023e3569a2a4bbcae +IV= 1b02ca9bc510861c0f722ef4ebfb612528dfee3cbb091599ef7b1fa5d94bbfc8 +CT= 09685075e6289c58908b2aa340b608b9c275ac57a8aeb6261d45533a8631b112 +PT= b643266ee79633a135fa6a3a0a8452a169a8c5419fbb70e577d6146bedd7c6f8 +TEST= 309 +KEY= bc9405dac62ec81a8a3e8790bfb12f6cac44e36979af90d5543542f1c79c7a56 +IV= 01eb56696cbf8bc729bf9a800ca9c593e7aee50b8785af170ff809f540f2e51b +CT= b643266ee79633a135fa6a3a0a8452a169a8c5419fbb70e577d6146bedd7c6f8 +PT= 0811f7f1e83d846b3201af6b7162c07ab237c902a00933d8b190da94b236ea5b +TEST= 310 +KEY= b485f22b2e134c71b83f28fbced3ef161e732a6bd9a6a30de5a5986575aa900d +IV= 30b2215e3bfedd610ac8a928921613bd4a8080326846dfeeb4796c51db951235 +CT= 0811f7f1e83d846b3201af6b7162c07ab237c902a00933d8b190da94b236ea5b +PT= 3f80b4d3687695d1008f4f067fc6862001e76f3f716fe1b97d46f8e9907233fa +TEST= 311 +KEY= 8b0546f84665d9a0b8b067fdb11569361f944554a8c942b498e3608ce5d8a3f7 +IV= 9e7a15fa4670468af3789da2ea3dda0b3346b78bec86da80f29390f31dab8a64 +CT= 3f80b4d3687695d1008f4f067fc6862001e76f3f716fe1b97d46f8e9907233fa +PT= a5e49c3bef7d1609211b02c644e766ebb67ef9b40c2895e20494e2d3d5ef22fb +TEST= 312 +KEY= 2ee1dac3a918cfa999ab653bf5f20fdda9eabce0a4e1d7569c77825f3037810c +IV= 9de0beac499de9563f6805dab7b9cdec27f6085a76758da27e6ab4ee4132765b +CT= a5e49c3bef7d1609211b02c644e766ebb67ef9b40c2895e20494e2d3d5ef22fb +PT= 1ffe5b8bd2ea65d3f2acb3ee40e542ac466f71d44489cd614c10a4f7c1eecbda +TEST= 313 +KEY= 311f81487bf2aa7a6b07d6d5b5174d71ef85cd34e0681a37d06726a8f1d94ad6 +IV= afe802b5e4bc725a2f9cf53019c1c635d29b96de73309cee6a887082ce762532 +CT= 1ffe5b8bd2ea65d3f2acb3ee40e542ac466f71d44489cd614c10a4f7c1eecbda +PT= 350f56040b66679b996187e7c54f57bdfb45c2c50682d5f68339ccafb0ae6485 +TEST= 314 +KEY= 0410d74c7094cde1f266513270581acc14c00ff1e6eacfc1535eea0741772e53 +IV= e26a00e275ff4a47df8dcd0ec0ae52eb5bfcede4c0843339996534fdc5c0c05e +CT= 350f56040b66679b996187e7c54f57bdfb45c2c50682d5f68339ccafb0ae6485 +PT= e43d040dfefbf02de9045bd1aa7fda6682ca4dc34c48e1516fb383d375dc31c1 +TEST= 315 +KEY= e02dd3418e6f3dcc1b620ae3da27c0aa960a4232aaa22e903ced69d434ab1f92 +IV= 259daf8266edc261d50071f70a4d659182633ddf1a731d490aa10256f1b0393c +CT= e43d040dfefbf02de9045bd1aa7fda6682ca4dc34c48e1516fb383d375dc31c1 +PT= 6e5adcde62a8864dc3b91ac3ed819f73554426004cbd390b5f404aaa51fa833e +TEST= 316 +KEY= 8e770f9fecc7bb81d8db102037a65fd9c34e6432e61f179b63ad237e65519cac +IV= a2ef498b166c82bf92be8e0702368de808517697aae62d94dcb95d8ec20ee0b4 +CT= 6e5adcde62a8864dc3b91ac3ed819f73554426004cbd390b5f404aaa51fa833e +PT= 8682917bc2ea9ae46a5e0fc58ab0b06a93f12a5488e401f4ee81e097ff133e3d +TEST= 317 +KEY= 08f59ee42e2d2165b2851fe5bd16efb350bf4e666efb166f8d2cc3e99a42a291 +IV= 2d6f936a3aed6754cc048f9e82c3159fb9812b82f67d4457f13ed660af716e9d +CT= 8682917bc2ea9ae46a5e0fc58ab0b06a93f12a5488e401f4ee81e097ff133e3d +PT= 2145c973bd305117b3b855b8fecd98284d9ca760facc45e9260d10e4b4cd6041 +TEST= 318 +KEY= 29b05797931d7072013d4a5d43db779b1d23e90694375386ab21d30d2e8fc2d0 +IV= 66a6fedd62aeb913af869901f8b9caff02fd48c9b8070c7020ef6365ea6f0618 +CT= 2145c973bd305117b3b855b8fecd98284d9ca760facc45e9260d10e4b4cd6041 +PT= c95a7dcbe77ce0782f51446cd530cab7a34a4f7f79a6500bbcc65e03b4dc7e0b +TEST= 319 +KEY= e0ea2a5c7461900a2e6c0e3196ebbd2cbe69a679ed91038d17e78d0e9a53bcdb +IV= 1766cf33e5a49ee8d3cd1f367927307235ec64b789af601d521c6981b7ac4ef3 +CT= c95a7dcbe77ce0782f51446cd530cab7a34a4f7f79a6500bbcc65e03b4dc7e0b +PT= dc2336ac9e087c8c05ad6f2d8cf1ab34f45d33c0d998e91cee69b3e3b2ded402 +TEST= 320 +KEY= 3cc91cf0ea69ec862bc1611c1a1a16184a3495b93409ea91f98e3eed288d68d9 +IV= c6a1f95d606c87460b711bbb136f9e39012a6cdee201241b19da791d08c3a822 +CT= dc2336ac9e087c8c05ad6f2d8cf1ab34f45d33c0d998e91cee69b3e3b2ded402 +PT= 4f7d0a470bc882c8a07334d3effc8ae7a8d229bd313d2f88f2d4b5a0a474cbd3 +TEST= 321 +KEY= 73b416b7e1a16e4e8bb255cff5e69cffe2e6bc040534c5190b5a8b4d8cf9a30a +IV= a71cfe431be56bd57aafa5fa94e0d0efabf316cf44cedd00806e91b67b61ee74 +CT= 4f7d0a470bc882c8a07334d3effc8ae7a8d229bd313d2f88f2d4b5a0a474cbd3 +PT= fe69074f2a1b7faa1d93e506421c50f30438c20dc4765147ddd4baa7c3c211cc +TEST= 322 +KEY= 8ddd11f8cbba11e49621b0c9b7facc0ce6de7e09c142945ed68e31ea4f3bb2c6 +IV= 7b88a3d8ac5b602931c85e2423aee159b3b97ec88da179f80da3fc040257d00a +CT= fe69074f2a1b7faa1d93e506421c50f30438c20dc4765147ddd4baa7c3c211cc +PT= 2cc22875d29bc7de355aced524e1647c739e920778c83b8844f03e707605ec2b +TEST= 323 +KEY= a11f398d1921d63aa37b7e1c931ba8709540ec0eb98aafd6927e0f9a393e5eed +IV= 2fbc6e4090d70aee257823625d25156a51acb5e6d8b05a353da428f870f1f546 +CT= 2cc22875d29bc7de355aced524e1647c739e920778c83b8844f03e707605ec2b +PT= a8a31481d2c066e5fc384b1ba5676a0eeb269b4ffa4d4174a776ee4d9f4301e9 +TEST= 324 +KEY= 09bc2d0ccbe1b0df5f433507367cc27e7e66774143c7eea23508e1d7a67d5f04 +IV= ae17ef6458e694adb86775be8e0880ad18687cd71f6d984c8d0bb24a921556da +CT= a8a31481d2c066e5fc384b1ba5676a0eeb269b4ffa4d4174a776ee4d9f4301e9 +PT= 41dc34a09b350744fe32d87aacb2fec7eb4344712a0a07eee407c3d58d1ee842 +TEST= 325 +KEY= 486019ac50d4b79ba171ed7d9ace3cb99525333069cde94cd10f22022b63b746 +IV= 4ee112182a1e8e595d886ba364cd76a43b034edf327a61ba6e1ece5abd95c2e7 +CT= 41dc34a09b350744fe32d87aacb2fec7eb4344712a0a07eee407c3d58d1ee842 +PT= f2ed239f988ffc777efc73bef7716a5c90274cee477f383690a4f80a702c1bfc +TEST= 326 +KEY= ba8d3a33c85b4becdf8d9ec36dbf56e505027fde2eb2d17a41abda085b4facba +IV= e5bba5cd3b39b1d16ab2959ca5b8ec37a14f3462652e521a2297adc31354241c +CT= f2ed239f988ffc777efc73bef7716a5c90274cee477f383690a4f80a702c1bfc +PT= 26394f1669113bd406cf29ac828e9cc837749adc6305a94892390c9fa03a119a +TEST= 327 +KEY= 9cb47525a14a7038d942b76fef31ca2d3276e5024db77832d392d697fb75bd20 +IV= 3051a27912c3ec26f102d70d43e56b5aaaac3e8b8a4bb5be6af07a72211d0631 +CT= 26394f1669113bd406cf29ac828e9cc837749adc6305a94892390c9fa03a119a +PT= d8bee3e32f557991f4bcf8c3f61984b4f3200e6dd9bbc9d6504974b71bbac4e6 +TEST= 328 +KEY= 440a96c68e1f09a92dfe4fac19284e99c156eb6f940cb1e483dba220e0cf79c6 +IV= 6155804229b3aa662ddb6335fccea83ce92dfb14787eab0cbb6730107fd5db44 +CT= d8bee3e32f557991f4bcf8c3f61984b4f3200e6dd9bbc9d6504974b71bbac4e6 +PT= d18612eb1c1703415305d734ceee571e68cb212a02d8e0430f241f5c1bc0a22b +TEST= 329 +KEY= 958c842d92080ae87efb9898d7c61987a99dca4596d451a78cffbd7cfb0fdbed +IV= 135c01530bc1d2b891f47ee9d6fb5ec9b98f0f7557de1771d80637db01bec3a4 +CT= d18612eb1c1703415305d734ceee571e68cb212a02d8e0430f241f5c1bc0a22b +PT= ca51ccfc417a71a430a3cccfc2ef6df776db2af20d568ebdd32ea37addb935e9 +TEST= 330 +KEY= 5fdd48d1d3727b4c4e58545715297470df46e0b79b82df1a5fd11e0626b6ee04 +IV= 4e202a0271e577d2947ab7e7ad520a1fc525b64d07ae620ac5d9c919129c6326 +CT= ca51ccfc417a71a430a3cccfc2ef6df776db2af20d568ebdd32ea37addb935e9 +PT= 60153c50a55b12641ea224ef636136128cf235797cd9d59c819b0661adc738e0 +TEST= 331 +KEY= 3fc874817629692850fa70b87648426253b4d5cee75b0a86de4a18678b71d6e4 +IV= cfe00a4418eb1db245865d7d57d12dec60aa997aac65037b0649ec5f6bd8257f +CT= 60153c50a55b12641ea224ef636136128cf235797cd9d59c819b0661adc738e0 +PT= 2d6d1b93a73d612f9c0b6550b590bef7568c9693180eea17ddd8ccbc0005574b +TEST= 332 +KEY= 12a56f12d1140807ccf115e8c3d8fc950538435dff55e0910392d4db8b7481af +IV= f010e06faed1857a7e2fbe340e7c5b5881af132cb16c1e55cbd8bc7bf73c12f5 +CT= 2d6d1b93a73d612f9c0b6550b590bef7568c9693180eea17ddd8ccbc0005574b +PT= cc4379e760a5341480f3938b4dfa94985f34a4b86e80d87ca0decdfdb6bee04f +TEST= 333 +KEY= dee616f5b1b13c134c0286638e22680d5a0ce7e591d538eda34c19263dca61e0 +IV= 370468843eccc08169f6e7df07ca5a6c21003342cce9a7afab3ae6a34bb3b12c +CT= cc4379e760a5341480f3938b4dfa94985f34a4b86e80d87ca0decdfdb6bee04f +PT= 3fac31c24e2092762b5fd47bcba75baf54176656b92684278f0b1a6577dcfbe7 +TEST= 334 +KEY= e14a2737ff91ae65675d5218458533a20e1b81b328f3bcca2c4703434a169a07 +IV= 326200891d0ce4f6db120ad2ce7fcacba3757c9225599f859b083addf24d4dd9 +CT= 3fac31c24e2092762b5fd47bcba75baf54176656b92684278f0b1a6577dcfbe7 +PT= 004230bf5f6574f7cfabd7add98a460d2a4bc9580e9644fc5592da7f23d74391 +TEST= 335 +KEY= e1081788a0f4da92a8f685b59c0f75af245048eb2665f83679d5d93c69c1d996 +IV= f07b776fa5c8ad875ed355959d40f02feba8a7c55073dc4d9627c53ac7bcc7d7 +CT= 004230bf5f6574f7cfabd7add98a460d2a4bc9580e9644fc5592da7f23d74391 +PT= a2fa2c30507f37dfa14c259bb015a53e56ad637b7d68c0a0f2e53eed77240a95 +TEST= 336 +KEY= 43f23bb8f08bed4d09baa02e2c1ad09172fd2b905b0d38968b30e7d11ee5d303 +IV= 4acb0a690dfbbfe05ee6bb3305d888ad3539289d9cda3b2191e8754865cffc87 +CT= a2fa2c30507f37dfa14c259bb015a53e56ad637b7d68c0a0f2e53eed77240a95 +PT= 46c6755fcc1f36c29f9814b1a6a18c53b49e52c075d98fe59dd4fb37a4f3af18 +TEST= 337 +KEY= 05344ee73c94db8f9622b49f8abb5cc2c66379502ed4b77316e41ce6ba167c1b +IV= 4907c45b6c8a315e51f594ee99062e35a45497d42c3aa60743090f11e4dfe62d +CT= 46c6755fcc1f36c29f9814b1a6a18c53b49e52c075d98fe59dd4fb37a4f3af18 +PT= 4f437062e07a6f3fc10879518bf008c3d5cef072acf70a6b2a5757643bf116df +TEST= 338 +KEY= 4a773e85dceeb4b0572acdce014b540113ad89228223bd183cb34b8281e76ac4 +IV= 1b955056995ddce822a7887218b8e8c122c68d8beec575bdbe55dcdba66b7765 +CT= 4f437062e07a6f3fc10879518bf008c3d5cef072acf70a6b2a5757643bf116df +PT= f6df89fce88d63698e4726b486ccfd152329f6ee76659fa92c13cd008150e009 +TEST= 339 +KEY= bca8b7793463d7d9d96deb7a8787a91430847fccf44622b110a0868200b78acd +IV= 48fcdc38dedc8499af08ed27ec6f6699457c4066cc4eeebfea91b47b2ddfd174 +CT= f6df89fce88d63698e4726b486ccfd152329f6ee76659fa92c13cd008150e009 +PT= 6b9d4bbc4c58f9541935c0f5c79cdac68448e7397b4469b999621660265f9da4 +TEST= 340 +KEY= d735fcc5783b2e8dc0582b8f401b73d2b4cc98f58f024b0889c290e226e81769 +IV= fcde8f4d2f45fa38d4a9ca11873d6754390aaa4c1aaf5c5a82e368f6a44be996 +CT= 6b9d4bbc4c58f9541935c0f5c79cdac68448e7397b4469b999621660265f9da4 +PT= 74e7222233cae3c913505774a20fa2c1de6f3c20d090ab2ddd172b79001cef8e +TEST= 341 +KEY= a3d2dee74bf1cd44d3087cfbe214d1136aa3a4d55f92e02554d5bb9b26f4f8e7 +IV= 026543dfda2fcbc5dec9e82d34831ed70bcb46e1d9ac99f038cd0815404ed020 +CT= 74e7222233cae3c913505774a20fa2c1de6f3c20d090ab2ddd172b79001cef8e +PT= e1f86650f09607d4b2e924ef91a4d15a237c92887afbf4beea8ed04142382ae7 +TEST= 342 +KEY= 422ab8b7bb67ca9061e1581473b0004949df365d2569149bbe5b6bda64ccd200 +IV= 462408852dff1303da9c6ed6f82c6c16fffdf7944a6cfee6549bd5430a043fa6 +CT= e1f86650f09607d4b2e924ef91a4d15a237c92887afbf4beea8ed04142382ae7 +PT= 346b0a8dc21f10c557c7ded25b659d07b517225198478434cd1050441a62b218 +TEST= 343 +KEY= 7641b23a7978da55362686c628d59d4efcc8140cbd2e90af734b3b9e7eae6018 +IV= 1e4368c6ea20ac207d77d6cd3d9e161643f09f2fcefef36c6f683f9c7950b668 +CT= 346b0a8dc21f10c557c7ded25b659d07b517225198478434cd1050441a62b218 +PT= dce52889fb662c5015ada7b0461f5bb2e0b45359db2bc55c5b00705de7a47eca +TEST= 344 +KEY= aaa49ab3821ef605238b21766ecac6fc1c7c4755660555f3284b4bc3990a1ed2 +IV= eed239d649aa45d366c7567ab1b91ca9b337c447d20bf616ebbd665896caf396 +CT= dce52889fb662c5015ada7b0461f5bb2e0b45359db2bc55c5b00705de7a47eca +PT= 9fa03f743d55f8ff7c161e973969503ccc9fec3a92b0e5a5b3997190baca4edc +TEST= 345 +KEY= 3504a5c7bf4b0efa5f9d3fe157a396c0d0e3ab6ff4b5b0569bd23a5323c0500e +IV= a6cde649f17233621843e6ad569662dd9da445d65be674af706b0041a07cc40a +CT= 9fa03f743d55f8ff7c161e973969503ccc9fec3a92b0e5a5b3997190baca4edc +PT= b8c73a706cdc6fc58ab960f2c810ca024c7c98c25967e222e40b7b596b817521 +TEST= 346 +KEY= 8dc39fb7d397613fd5245f139fb35cc29c9f33adadd252747fd9410a4841252f +IV= 2608c11611a7c45c5c32162a9cdd2924fe7b5e32d299a3eb404881d5cbd54ba8 +CT= b8c73a706cdc6fc58ab960f2c810ca024c7c98c25967e222e40b7b596b817521 +PT= 546d2129ab2428128246231c4d3ce67cb9dddc0c9f814db66a1b4d3265c98c1a +TEST= 347 +KEY= d9aebe9e78b3492d57627c0fd28fbabe2542efa132531fc215c20c382d88a935 +IV= 35421acd66a57b4554c74614ee041e4a55c12f70b5410eb8e358ac17281f2b9f +CT= 546d2129ab2428128246231c4d3ce67cb9dddc0c9f814db66a1b4d3265c98c1a +PT= 36b20dfc5b4dd7a88a78c37ad29e069fd25cc7ab372bf05fc4b6f4e66584c4fd +TEST= 348 +KEY= ef1cb36223fe9e85dd1abf750011bc21f71e280a0578ef9dd174f8de480c6dc8 +IV= b4a092e018a0dfd3a0c6ef5efa9d07eb45575edc1d8cf6b395666a943b0c275a +CT= 36b20dfc5b4dd7a88a78c37ad29e069fd25cc7ab372bf05fc4b6f4e66584c4fd +PT= 6a82cb9e5ac07661e3a08001a548dc564e5f80b6656a103fdb3b050d2f8e4170 +TEST= 349 +KEY= 859e78fc793ee8e43eba3f74a5596077b941a8bc6012ffa20a4ffdd367822cb8 +IV= 7f94a267d1d4d78080be90120e69bf6d8f60b6b4316a3c67408dd7a60c9c43bf +CT= 6a82cb9e5ac07661e3a08001a548dc564e5f80b6656a103fdb3b050d2f8e4170 +PT= 56446c557d50c217ada460b75433fefaaa1937eb35a77ff24e6c0ba7f0f9f69a +TEST= 350 +KEY= d3da14a9046e2af3931e5fc3f16a9e8d13589f5755b580504423f674977bda22 +IV= 23219f29e3bb176a848be7058711b183a732402d412c462ac200b5ca344337e2 +CT= 56446c557d50c217ada460b75433fefaaa1937eb35a77ff24e6c0ba7f0f9f69a +PT= 2af54acbcead3214f78ffd6f2ce2add2b9e2bd413a6dd9ffbd41d506691a1a07 +TEST= 351 +KEY= f92f5e62cac318e76491a2acdd88335faaba22166fd859aff9622372fe61c025 +IV= 74cdf9e5e6839d411c67e980360b57b2172c5ae536a6fe3cafc1dcfd35387ef5 +CT= 2af54acbcead3214f78ffd6f2ce2add2b9e2bd413a6dd9ffbd41d506691a1a07 +PT= 4dd406af635d6201bd16d8cd216aff0d55a0e064c6b57f093afdd4ba971ca610 +TEST= 352 +KEY= b4fb58cda99e7ae6d9877a61fce2cc52ff1ac272a96d26a6c39ff7c8697d6635 +IV= ee79d2cedf1ee040c77eba299419711107c96d21f9eb9226502c06679c5993a6 +CT= 4dd406af635d6201bd16d8cd216aff0d55a0e064c6b57f093afdd4ba971ca610 +PT= 19c07b4340088aeb7190e42771d4fd499e897500c10caeeec6d803ac99483f46 +TEST= 353 +KEY= ad3b238ee996f00da8179e468d36311b6193b772686188480547f464f0355973 +IV= 76432a107f0a1f3d77a172c3e8b84818f20e4cefbb0434fc1ae1ffe4034337b6 +CT= 19c07b4340088aeb7190e42771d4fd499e897500c10caeeec6d803ac99483f46 +PT= 93b13951fa5d8d2965c844947d3345faf50324673c62c59562c8f2e5b12712d4 +TEST= 354 +KEY= 3e8a1adf13cb7d24cddfdad2f00574e19490931554034ddd678f068141124ba7 +IV= c9d69dfa6b9ae5b851e12343434692b6db68289969c363f265130db3e9a4bf5f +CT= 93b13951fa5d8d2965c844947d3345faf50324673c62c59562c8f2e5b12712d4 +PT= 8a9ca525456db5672381216e1c67f50fba760818d5e50e12b6f4d64c4aebfe40 +TEST= 355 +KEY= b416bffa56a6c843ee5efbbcec6281ee2ee69b0d81e643cfd17bd0cd0bf9b5e7 +IV= f358dc84c8feb4bf83ecdb5574e7e2edc27dc1498b98e08ef4f875ba3ce23208 +CT= 8a9ca525456db5672381216e1c67f50fba760818d5e50e12b6f4d64c4aebfe40 +PT= 84a5a142f47228e4e94749f1aa5a43f8330cc9613291ff4fbc92071b3a0deb1f +TEST= 356 +KEY= 30b31eb8a2d4e0a70719b24d4638c2161dea526cb377bc806de9d7d631f45ef8 +IV= 8cd4246fff4c959ab9a7acb39cd282464610bc19f2a57323a9dc495f9833d4aa +CT= 84a5a142f47228e4e94749f1aa5a43f8330cc9613291ff4fbc92071b3a0deb1f +PT= 792162f57602cb22ac3e6aacb6cb29c18ae3751b3edafffe7ac6344dffe0c7a4 +TEST= 357 +KEY= 49927c4dd4d62b85ab27d8e1f0f3ebd7970927778dad437e172fe39bce14995c +IV= 51d7abf23ed1ae854784c5965670e5281dce65c6761d68726d540bf6d53861b5 +CT= 792162f57602cb22ac3e6aacb6cb29c18ae3751b3edafffe7ac6344dffe0c7a4 +PT= a149d25d8cdd4480b406eda9ff3eff92770c6b38bfb96f8ecddf29fe36309b01 +TEST= 358 +KEY= e8dbae10580b6f051f2135480fcd1445e0054c4f32142cf0daf0ca65f824025d +IV= f7d3cfa590084fd9a03656f08e5b96fe6524a3b587f89f290bd6b3c736158885 +CT= a149d25d8cdd4480b406eda9ff3eff92770c6b38bfb96f8ecddf29fe36309b01 +PT= 28caf564de32b781e6c552c8c055a97454b75b540ed0ab5f7fcb3adc448df33d +TEST= 359 +KEY= c0115b748639d884f9e46780cf98bd31b4b2171b3cc487afa53bf0b9bca9f160 +IV= 50348b59c84ab86f2331293dc5835fa4874721e80a5dd24b6b0d3aac9f46cf15 +CT= 28caf564de32b781e6c552c8c055a97454b75b540ed0ab5f7fcb3adc448df33d +PT= 51ae1fb2d84f83063b8df82edc297aa70db2e31f745bda098036dfd98586d03d +TEST= 360 +KEY= 91bf44c65e765b82c2699fae13b1c796b900f404489f5da6250d2f60392f215d +IV= 1f7974080d8554f511df18156ad438e32e85cc1e075fb60034387c5ab6a7cdf3 +CT= 51ae1fb2d84f83063b8df82edc297aa70db2e31f745bda098036dfd98586d03d +PT= ae4deb91fa27c29905143a4eb31aa69ce3f9e5bb1dd59c9c45acc75c7dbfaeb3 +TEST= 361 +KEY= 3ff2af57a451991bc77da5e0a0ab610a5af911bf554ac13a60a1e83c44908fee +IV= 18b569d51ce38099b67a8dd2a5d6dd278257345bd1f30e8ddf3fa102228e3706 +CT= ae4deb91fa27c29905143a4eb31aa69ce3f9e5bb1dd59c9c45acc75c7dbfaeb3 +PT= bd1826b9b9ab8a14d50d730f9468b3afe207219f77b888c96a45b8190be1a83e +TEST= 362 +KEY= 82ea89ee1dfa130f1270d6ef34c3d2a5b8fe302022f249f30ae450254f7127d0 +IV= ff2b2748cad41d3b20811d90c75fcff42faf57a56123b979598eb7164de57443 +CT= bd1826b9b9ab8a14d50d730f9468b3afe207219f77b888c96a45b8190be1a83e +PT= 107d8f3d0d439213565b2ec33eda0b9843cc9e8aa418b796e66a21add5971138 +TEST= 363 +KEY= 929706d310b9811c442bf82c0a19d93dfb32aeaa86eafe65ec8e71889ae636e8 +IV= 5ed76d4f67632573ac9916fcd1ef9d065272925992590e55ce5eba1c5e34ea0b +CT= 107d8f3d0d439213565b2ec33eda0b9843cc9e8aa418b796e66a21add5971138 +PT= 55feaed0202aff87039d324f2edab93378b3be2462ab41385aeacaeb780222a3 +TEST= 364 +KEY= c769a80330937e9b47b6ca6324c3600e8381108ee441bf5db664bb63e2e4144b +IV= f5c5627ce4344c49d389ebd1f8086077841d738a151d3c9be7f6aa9d767dbce1 +CT= 55feaed0202aff87039d324f2edab93378b3be2462ab41385aeacaeb780222a3 +PT= 60095f43d2d30724b50cf896902fd758cce95a1a53b8eb3c48fba55dd2fdf5d4 +TEST= 365 +KEY= a760f740e24079bff2ba32f5b4ecb7564f684a94b7f95461fe9f1e3e3019e19f +IV= 8e3a534483c9f890bde8d68b362b345089905f049a5ef43b79128b8274bd7ba9 +CT= 60095f43d2d30724b50cf896902fd758cce95a1a53b8eb3c48fba55dd2fdf5d4 +PT= e2c283153c4ae0d788f183ccf32e70a196d1402b484e16ab35a705dcb9bb962f +TEST= 366 +KEY= 45a27455de0a99687a4bb13947c2c7f7d9b90abfffb742cacb381be289a277b0 +IV= 2cfbc5d3d39ec0dd692b16d752db7a53fd17cd40ccadbd9a4f6fc41ed214b277 +CT= e2c283153c4ae0d788f183ccf32e70a196d1402b484e16ab35a705dcb9bb962f +PT= f27e5cf3e8dd9b12a24f2a338b4cba5d58419331f56b915479afef326bf42e63 +TEST= 367 +KEY= b7dc28a636d7027ad8049b0acc8e7daa81f8998e0adcd39eb297f4d0e25659d3 +IV= 0f0a93a9729e86f4ec7f718d17c46f7bf0809667b85bfc40c724c816a317059b +CT= f27e5cf3e8dd9b12a24f2a338b4cba5d58419331f56b915479afef326bf42e63 +PT= b2cc39cad69f3e243e1c2457c840198fd8ade6921b5e1e1f78b6f457f1ab9854 +TEST= 368 +KEY= 0510116ce0483c5ee618bf5d04ce642559557f1c1182cd81ca21008713fdc187 +IV= d35dcea0e5db40892197b726e0685f990e60319542f2af569310053b8601a8bd +CT= b2cc39cad69f3e243e1c2457c840198fd8ade6921b5e1e1f78b6f457f1ab9854 +PT= 33c1a4cdca084fe5db7146d58365172a3cbb1b28af8e36f394d48598c61ff76e +TEST= 369 +KEY= 36d1b5a12a4073bb3d69f98887ab730f65ee6434be0cfb725ef5851fd5e236e9 +IV= c2fd22bc8d2c386a2398847ce3c249fbae392f9b93948d7c39f4a1f5e4ad20be +CT= 33c1a4cdca084fe5db7146d58365172a3cbb1b28af8e36f394d48598c61ff76e +PT= 3cf44e088236901bba578c75de1719537a859baf26ba9245679e0b152b73c870 +TEST= 370 +KEY= 0a25fba9a876e3a0873e75fd59bc6a5c1f6bff9b98b66937396b8e0afe91fe99 +IV= 30fb9d0d69147e23ef4e7514b5139b98a7166eef3d657fa602cc4d91d68b4cac +CT= 3cf44e088236901bba578c75de1719537a859baf26ba9245679e0b152b73c870 +PT= afe159ebffadc3fd97977bdd4ed1194e0cc4132ede2f6cd2aeca1388318816e6 +TEST= 371 +KEY= a5c4a24257db205d10a90e20176d731213afecb5469905e597a19d82cf19e87f +IV= 4bde049df93b8d29859d389878372d29ef30f6e5099691f0c065509caac9917b +CT= afe159ebffadc3fd97977bdd4ed1194e0cc4132ede2f6cd2aeca1388318816e6 +PT= c5adde560498494f1fceecec2076f2bcd5983595b8e392dd9f164252f90b71c2 +TEST= 372 +KEY= 60697c14534369120f67e2cc371b81aec637d920fe7a973808b7dfd0361299bd +IV= 328a497a9257201b0109cebc79c2c087867215a7585247be0cca9bf25c5921fe +CT= c5adde560498494f1fceecec2076f2bcd5983595b8e392dd9f164252f90b71c2 +PT= a4c5737234972a69ccd1eb92752d853e1944ebc905ef55312e688ec417511dd0 +TEST= 373 +KEY= c4ac0f6667d4437bc3b6095e42360490df7332e9fb95c20926df51142143846d +IV= b4aa56527ac338a30fcd27b499174a8eba1c88ef3c7fdeff4d08f2eb986023d8 +CT= a4c5737234972a69ccd1eb92752d853e1944ebc905ef55312e688ec417511dd0 +PT= b64c3724368ed9bdab7b88bd357a8487103d13e6fafeb297ae36da71b9649a49 +TEST= 374 +KEY= 72e03842515a9ac668cd81e3774c8017cf4e210f016b709e88e98b6598271e24 +IV= b4774b4fcac2bfe61016139d4761e5455c708a5aa38b26b2b750bc7621b2b6a6 +CT= b64c3724368ed9bdab7b88bd357a8487103d13e6fafeb297ae36da71b9649a49 +PT= bcca7089ca51217dded311f291e9aa80f6dfb4b10e2acf2ad64a41176a87550f +TEST= 375 +KEY= ce2a48cb9b0bbbbbb61e9011e6a52a97399195be0f41bfb45ea3ca72f2a04b2b +IV= ba1b8bec7b236484584e04f8839a68cbee9994fc6a6f0d79cbbf1c8fbbf1e79f +CT= bcca7089ca51217dded311f291e9aa80f6dfb4b10e2acf2ad64a41176a87550f +PT= 337af453d6f36eb6a93bab9b2e75589227529dd618cf3f1219381759215c8949 +TEST= 376 +KEY= fd50bc984df8d50d1f253b8ac8d072051ec30868178e80a6479bdd2bd3fcc262 +IV= 2bfc5be0ac53c8e642152f8778b3f6f802d7cb9296733551b36fa78e050782cb +CT= 337af453d6f36eb6a93bab9b2e75589227529dd618cf3f1219381759215c8949 +PT= c2d8fb395c0c79cbee821bc30101d72a5e5b0f77f959df9a699c5dbcf3a2dd0f +TEST= 377 +KEY= 3f8847a111f4acc6f1a72049c9d1a52f4098071feed75f3c2e078097205e1f6d +IV= e5f00d471710c74713f3de988a9ae3e8a90d813dc4dd54f83a6ee1afcb415f66 +CT= c2d8fb395c0c79cbee821bc30101d72a5e5b0f77f959df9a699c5dbcf3a2dd0f +PT= 9e4dbe3f136ead3e88f6b13ce98339a666c2177ecb2a68fd4736d7f71b86beb1 +TEST= 378 +KEY= a1c5f99e029a01f87951917520529c89265a106125fd37c1693157603bd8a1dc +IV= 5e548d0daedac140a4f6d1605a045a5f19d8dea06a5135e6281255e315238bae +CT= 9e4dbe3f136ead3e88f6b13ce98339a666c2177ecb2a68fd4736d7f71b86beb1 +PT= 3c123a5ff0e235b316e659f5e717351970dbb882ce295cd8ee2ba1efe229c49c +TEST= 379 +KEY= 9dd7c3c1f278344b6fb7c880c745a9905681a8e3ebd46b19871af68fd9f16540 +IV= a82f6aa2f747063ad916455b8fdc98c55a4d17279b383fe1272ea041b6bfd31a +CT= 3c123a5ff0e235b316e659f5e717351970dbb882ce295cd8ee2ba1efe229c49c +PT= 4c6a1a8bcaa180150821bb6255b170dd7e256782a805f19034a9ae7549b05fe5 +TEST= 380 +KEY= d1bdd94a38d9b45e679673e292f4d94d28a4cf6143d19a89b3b358fa90413aa5 +IV= 5de9dd3937a5b2765513691b1dbdaa375f8aff5fea913e8cc478ee19cc7d90b8 +CT= 4c6a1a8bcaa180150821bb6255b170dd7e256782a805f19034a9ae7549b05fe5 +PT= 523d1de62b5065f7be434b286e015e36e4ff7c099118714d3d3005af4f7765a7 +TEST= 381 +KEY= 8380c4ac1389d1a9d9d538cafcf5877bcc5bb368d2c9ebc48e835d55df365f02 +IV= fbce95b6d80c4108cc069f231a3a0cd9bb6d7d5af6efca246fb1e2508981afbb +CT= 523d1de62b5065f7be434b286e015e36e4ff7c099118714d3d3005af4f7765a7 +PT= c7664deff4a3494168c7f17491b39fecd4d6c5bc29a1e40e93f86aac9bb503ef +TEST= 382 +KEY= 44e68943e72a98e8b112c9be6d461897188d76d4fb680fca1d7b37f944835ced +IV= 5d7c15c287264403f75ec4c5945c573a4de8fb4bb27e20c08a5c78f1f07d1bca +CT= c7664deff4a3494168c7f17491b39fecd4d6c5bc29a1e40e93f86aac9bb503ef +PT= 0fea23cb0d826877988b9f1e2f04299b8c6c18e54f3b66b4a15c5c89e34b5645 +TEST= 383 +KEY= 4b0caa88eaa8f09f299956a04242310c94e16e31b453697ebc276b70a7c80aa8 +IV= 510bbb32a9ce6068b09eb067f72d6baaad8b3b728f2201daffd6ef0d8879e32f +CT= 0fea23cb0d826877988b9f1e2f04299b8c6c18e54f3b66b4a15c5c89e34b5645 +PT= e6f452c9ea978db1776d57ac982744a502d8b5e810f7e2cf2b113b579003b4b3 +TEST= 384 +KEY= adf8f841003f7d2e5ef4010cda6575a99639dbd9a4a48bb19736502737cbbe1b +IV= 33f2bb998879ff3700c5f0c5240d38a729eb8afec07f8bdc0d07bc677df0b75a +CT= e6f452c9ea978db1776d57ac982744a502d8b5e810f7e2cf2b113b579003b4b3 +PT= c3c568e829f085c17eadb7b35eec6f164ff1a7a195b011936f4add6bba28b79b +TEST= 385 +KEY= 6e3d90a929cff8ef2059b6bf84891abfd9c87c7831149a22f87c8d4c8de30980 +IV= 3c4f29acd5c74aa6692c21760d2203048bd47963d6fb8d292799851debd0fda8 +CT= c3c568e829f085c17eadb7b35eec6f164ff1a7a195b011936f4add6bba28b79b +PT= ec2336eb0056912adf3c5924cc9774508c80fe4624d647a6482ce9b0bbd07a30 +TEST= 386 +KEY= 821ea642299969c5ff65ef9b481e6eef5548823e15c2dd84b05064fc363373b0 +IV= c1b8954fdf7c93a0be5e84c6e36afe8fff89591b1c6f73c3a84d438e7c6ba008 +CT= ec2336eb0056912adf3c5924cc9774508c80fe4624d647a6482ce9b0bbd07a30 +PT= 5a416ff2d240538351439d5ef883a8edbadba05ec4b7eb448bbffc4ab76529bd +TEST= 387 +KEY= d85fc9b0fbd93a46ae2672c5b09dc602ef932260d17536c03bef98b681565a0d +IV= b3100bbf448488fdbe6b7fee70c9302943c297fe1e406c1b9e284bed93a4a665 +CT= 5a416ff2d240538351439d5ef883a8edbadba05ec4b7eb448bbffc4ab76529bd +PT= 2fce3c108878887385824b1e390801c0bc295a24ecf66e06536f0df85af74ca6 +TEST= 388 +KEY= f791f5a073a1b2352ba439db8995c7c253ba78443d8358c66880954edba116ab +IV= 96ba6219f209b63fbf1bea32206fd8cb9fa521eb37a44a3caed6432db7eedaf3 +CT= 2fce3c108878887385824b1e390801c0bc295a24ecf66e06536f0df85af74ca6 +PT= ff96e612727a89fc4aa55f68e88b2755c34e60bffe2d76d289201c79873deb78 +TEST= 389 +KEY= 080713b201db3bc9610166b3611ee09790f418fbc3ae2e14e1a089375c9cfdd3 +IV= 3864cfceb540d4a7bd9e094917074ba70c092732abefbe24c229fd1fa8f33319 +CT= ff96e612727a89fc4aa55f68e88b2755c34e60bffe2d76d289201c79873deb78 +PT= 17f6f89af1bdb18d052aed029d6db6027a30358b81c37d48174887da8cf3edfe +TEST= 390 +KEY= 1ff1eb28f0668a44642b8bb1fc735695eac42d70426d535cf6e80eedd06f102d +IV= 7a23063fa3d3723cdca020cd4ba91fbafb77d161d2211d66a35468dcbd7e4700 +CT= 17f6f89af1bdb18d052aed029d6db6027a30358b81c37d48174887da8cf3edfe +PT= b89f0a7501ae39985756b4a888ea86872b057fafcf9737356bb455eb00882ed5 +TEST= 391 +KEY= a76ee15df1c8b3dc337d3f197499d012c1c152df8dfa64699d5c5b06d0e73ef8 +IV= 4736dff2e6104737167c8e445261cfbe3fd2b38b19b4efc850b10860e9b4f2f0 +CT= b89f0a7501ae39985756b4a888ea86872b057fafcf9737356bb455eb00882ed5 +PT= d0b7ccee8c4557ac4a4d7e2c8dd8e09df37e1e2da6fad76c80ea75f0a9c2addc +TEST= 392 +KEY= 77d92db37d8de47079304135f941308f32bf4cf22b00b3051db62ef679259324 +IV= 13a7cc416b09dca92f6ce2a7438bb0a0ac79b0fbf6b16e89b04e6caa38a7e0d5 +CT= d0b7ccee8c4557ac4a4d7e2c8dd8e09df37e1e2da6fad76c80ea75f0a9c2addc +PT= 28394347cd2651c1911692aec849a351ef9c367dae0f10aa77fc8ef8aa5f6b79 +TEST= 393 +KEY= 5fe06ef4b0abb5b1e826d39b310893dedd237a8f850fa3af6a4aa00ed37af85d +IV= af38623e61cddd09d34aed072fd31b5775e6cdadf4c6e7ad9d090dcb94cdc9ff +CT= 28394347cd2651c1911692aec849a351ef9c367dae0f10aa77fc8ef8aa5f6b79 +PT= dffda2442bc31ef852bffd17e271add4934fd7399a855ea38575dee25734bbee +TEST= 394 +KEY= 801dccb09b68ab49ba992e8cd3793e0a4e6cadb61f8afd0cef3f7eec844e43b3 +IV= 55728ae697ae73ccb6bd255989bdc040580ba576b705f93f23406abac44111ec +CT= dffda2442bc31ef852bffd17e271add4934fd7399a855ea38575dee25734bbee +PT= 5c6a3e3f30ba827ce4256be0a6a468bcd5422baf253e7901fcd9b73bb94ceda9 +TEST= 395 +KEY= dc77f28fabd229355ebc456c75dd56b69b2e86193ab4840d13e6c9d73d02ae1a +IV= f0ebfde19bce7e70932f138be7195e923e9afee95ba03110f17bf0b1fbe73268 +CT= 5c6a3e3f30ba827ce4256be0a6a468bcd5422baf253e7901fcd9b73bb94ceda9 +PT= 8f3eb4e87d9c1993bbc7df5f94c427d591d7c6610e0f2c233554c2d31f204935 +TEST= 396 +KEY= 53494667d64e30a6e57b9a33e11971630af9407834bba82e26b20b042222e72f +IV= f4e25c4a59acd8e2e1ad3267c4487fe0dc913c14e0467f8ff7da509ee462ea74 +CT= 8f3eb4e87d9c1993bbc7df5f94c427d591d7c6610e0f2c233554c2d31f204935 +PT= a1be99db7d6c2a0280e04c0c0d2f648dc319d09b23e5991f9bc2b1ff30ce6a3d +TEST= 397 +KEY= f2f7dfbcab221aa4659bd63fec3615eec9e090e3175e3131bd70bafb12ec8d12 +IV= 123e8d8948c6100e1e543e1290cee09c0618b185687409c7fec5cb4841ece0ff +CT= a1be99db7d6c2a0280e04c0c0d2f648dc319d09b23e5991f9bc2b1ff30ce6a3d +PT= 6f5b59517037ea0a6a2a194d4d21e1afba876b95230ec466046b4f61a26d7d6c +TEST= 398 +KEY= 9dac86eddb15f0ae0fb1cf72a117f4417367fb763450f557b91bf59ab081f07e +IV= 80b11521c3707b1b899d70d4ad2c75cccb575f0e9cfa373ed4a53c786cd8d086 +CT= 6f5b59517037ea0a6a2a194d4d21e1afba876b95230ec466046b4f61a26d7d6c +PT= bcf20baaf2fc9fc250a1bd2214053706390e491e378ce451fa09ad484e9dfe24 +TEST= 399 +KEY= 215e8d4729e96f6c5f107250b512c3474a69b26803dc1106431258d2fe1c0e5a +IV= 1def1cf6c4b9cc658647de5629280d3959d8a7346d7f1795b39f610fd7fa0a20 +CT= bcf20baaf2fc9fc250a1bd2214053706390e491e378ce451fa09ad484e9dfe24 +PT= 57b5552c01cd114d7cb886ec6c71afa13c37c8cc0c79cfdad782ff158e96c269 diff --git a/flint/test/testvals/cbcme44.txt b/flint/test/testvals/cbcme44.txt new file mode 100644 index 0000000..f9e8877 --- /dev/null +++ b/flint/test/testvals/cbcme44.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 00000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= 8a05fc5e095af4848a08d328d3688e3d +TEST= 1 +KEY= 8a05fc5e095af4848a08d328d3688e3d +IV= 8a05fc5e095af4848a08d328d3688e3d +PT= 204f17e2444381f6114ff53934c0bcd3 +CT= 192d9b3aa10bb2f7846ccba0085c657a +TEST= 2 +KEY= 93286764a85146730e641888db34eb47 +IV= 192d9b3aa10bb2f7846ccba0085c657a +PT= 983bf6f5a6dfbcdaa19370666e83a99a +CT= 40d8daf6d1fda0a073b3bd18b7695d2e +TEST= 3 +KEY= d3f0bd9279ace6d37dd7a5906c5db669 +IV= 40d8daf6d1fda0a073b3bd18b7695d2e +PT= c48cd503a21c8ad0b2483ef15f79571d +CT= 3edbe80d69a1d2248ca55fc17c4ef3c5 +TEST= 4 +KEY= ed2b559f100d34f7f172fa51101345ac +IV= 3edbe80d69a1d2248ca55fc17c4ef3c5 +PT= 6a49a07b90ce830c20bc239646d936c0 +CT= d87891cf573c99eae4349a70ca099415 +TEST= 5 +KEY= 3553c4504731ad1d15466021da1ad1b9 +IV= d87891cf573c99eae4349a70ca099415 +PT= 0acb9a969946f523317bb932ce1561a4 +CT= 24e8f1013f479bbe655df088c9316bc7 +TEST= 6 +KEY= 11bb3551787636a3701b90a9132bba7e +IV= 24e8f1013f479bbe655df088c9316bc7 +PT= 3dfc8683c1d626a26e2513eb747e8b0f +CT= 2c92e80d8d1f70b411c28bd9fdabf21d +TEST= 7 +KEY= 3d29dd5cf569461761d91b70ee804863 +IV= 2c92e80d8d1f70b411c28bd9fdabf21d +PT= fae2d6a36dbd17199f257643c89eb608 +CT= a61810a2798a70a9d2b37e88def9ae0f +TEST= 8 +KEY= 9b31cdfe8ce336beb36a65f83079e66c +IV= a61810a2798a70a9d2b37e88def9ae0f +PT= cb97f090318a6b10f5044eb8333ecdd6 +CT= 0034fa480de6f65d98d30b026118718f +TEST= 9 +KEY= 9b0537b68105c0e32bb96efa516197e3 +IV= 0034fa480de6f65d98d30b026118718f +PT= 1b8030ac682ba677a7a3acdc7fb33bb6 +CT= bea24548cbc4a6630c9f1251f2c3dc51 +TEST= 10 +KEY= 25a772fe4ac1668027267caba3a24bb2 +IV= bea24548cbc4a6630c9f1251f2c3dc51 +PT= d0524282c9ac395508cb2991822e8f42 +CT= 4f278dd0b06cbfbaa928635e7ca81b68 +TEST= 11 +KEY= 6a80ff2efaadd93a8e0e1ff5df0a50da +IV= 4f278dd0b06cbfbaa928635e7ca81b68 +PT= 49ea900e2f61df8cdea7d479f59c4c30 +CT= edff930bb183f8dac2fc0bd01ad65882 +TEST= 12 +KEY= 877f6c254b2e21e04cf21425c5dc0858 +IV= edff930bb183f8dac2fc0bd01ad65882 +PT= a1bbeb4e44ef725497b8c589192cc900 +CT= a6fe530e9509d48baf30f601d04db19d +TEST= 13 +KEY= 21813f2bde27f56be3c2e2241591b9c5 +IV= a6fe530e9509d48baf30f601d04db19d +PT= 4ad71402771a83f41f7e3ac004150cb7 +CT= ff1148a2e07401f7291b418d62618b65 +TEST= 14 +KEY= de9077893e53f49ccad9a3a977f032a0 +IV= ff1148a2e07401f7291b418d62618b65 +PT= ac47a1fd3490d6e809d40d4beb8ff639 +CT= 4420d4686f7a4d77a72810e89a5e0df1 +TEST= 15 +KEY= 9ab0a3e15129b9eb6df1b341edae3f51 +IV= 4420d4686f7a4d77a72810e89a5e0df1 +PT= f22e1865dd87a88238173fc693c382e7 +CT= a4c7de5df9e2b6a20a1e22f8d7496acd +TEST= 16 +KEY= 3e777dbca8cb0f4967ef91b93ae7559c +IV= a4c7de5df9e2b6a20a1e22f8d7496acd +PT= 929efb34b1c552221b648a3d2c678ec9 +CT= d93dbcca25fa4d9d8c37b3f107fcfa3c +TEST= 17 +KEY= e74ac1768d3142d4ebd822483d1bafa0 +IV= d93dbcca25fa4d9d8c37b3f107fcfa3c +PT= 771c61abb1e9bab6f678336c8193307e +CT= 75f491c2ea85184aca3c96b769fa9698 +TEST= 18 +KEY= 92be50b467b45a9e21e4b4ff54e13938 +IV= 75f491c2ea85184aca3c96b769fa9698 +PT= 55e42f98cced821fe211d29674e77f48 +CT= a9c7536b77265ecbf7ac5ecd1ef5dde2 +TEST= 19 +KEY= 3b7903df10920455d648ea324a14e4da +IV= a9c7536b77265ecbf7ac5ecd1ef5dde2 +PT= 56bc0fa54f6f1e04a9a8893d3964ea68 +CT= 3c749bf7efa55ce924d1b33291c2b586 +TEST= 20 +KEY= 070d9828ff3758bcf2995900dbd6515c +IV= 3c749bf7efa55ce924d1b33291c2b586 +PT= 45d9bbbb1f3bb33ee182f09c90b1661c +CT= c4708dbaebd202cdd2054ddcb1af7bab +TEST= 21 +KEY= c37d159214e55a71209c14dc6a792af7 +IV= c4708dbaebd202cdd2054ddcb1af7bab +PT= 37765b154264ad781bbe5f5717de7038 +CT= 87457fd2ee747645576a27f46b00ec30 +TEST= 22 +KEY= 44386a40fa912c3477f633280179c6c7 +IV= 87457fd2ee747645576a27f46b00ec30 +PT= a7150bbc7be3837e145ab83e554b49de +CT= e25743dad8e627803da6c5e587c82384 +TEST= 23 +KEY= a66f299a22770bb44a50f6cd86b1e543 +IV= e25743dad8e627803da6c5e587c82384 +PT= 173343a8488146fc9e4b59c2df42baf3 +CT= 0d0a78cd5e3eb40f92fb55351122e92b +TEST= 24 +KEY= ab6551577c49bfbbd8aba3f897930c68 +IV= 0d0a78cd5e3eb40f92fb55351122e92b +PT= 3b68cfe78b5dea8f5165a2034d8c2823 +CT= 1921b523a2f9b5f53c740d451c9fce0c +TEST= 25 +KEY= b244e474deb00a4ee4dfaebd8b0cc264 +IV= 1921b523a2f9b5f53c740d451c9fce0c +PT= fddd484b52c7f3a32f4514bef5a646e3 +CT= 6eac2bb6edf35c1267ff4f10700f3cd7 +TEST= 26 +KEY= dce8cfc23343565c8320e1adfb03feb3 +IV= 6eac2bb6edf35c1267ff4f10700f3cd7 +PT= cdad592e5467ad1fa1b71d8ac050fce0 +CT= d9624e40a8c9a2c58abedbaeb865dc1f +TEST= 27 +KEY= 058a81829b8af499099e3a03436622ac +IV= d9624e40a8c9a2c58abedbaeb865dc1f +PT= f9e90a4d7a9ef66818004cbc47c8c6ea +CT= de15c7322b32738bb493e7fa27afe6e2 +TEST= 28 +KEY= db9f46b0b0b88712bd0dddf964c9c44e +IV= de15c7322b32738bb493e7fa27afe6e2 +PT= fe3cc4ae4a13ac8946407ceee220290b +CT= 5822c79d627ad8a0c4975873d62c5e11 +TEST= 29 +KEY= 83bd812dd2c25fb2799a858ab2e59a5f +IV= 5822c79d627ad8a0c4975873d62c5e11 +PT= a5106ebd8888cc3a6884ac8e8ea9c97a +CT= f5ad0473a4228662d9f76e7a5ed4dbdd +TEST= 30 +KEY= 7610855e76e0d9d0a06debf0ec314182 +IV= f5ad0473a4228662d9f76e7a5ed4dbdd +PT= 4f30b073fb95cd0f0317e749f20e7a7d +CT= 4b39da1fa331cfeb1d6713054c6e9474 +TEST= 31 +KEY= 3d295f41d5d1163bbd0af8f5a05fd5f6 +IV= 4b39da1fa331cfeb1d6713054c6e9474 +PT= 4850735e17f01a3b131e1b78b3a6eb96 +CT= 32d1be8640859cfab16d64ce8795729b +TEST= 32 +KEY= 0ff8e1c795548ac10c679c3b27caa76d +IV= 32d1be8640859cfab16d64ce8795729b +PT= a8c4b9e0069935cb046acbb49c0b1205 +CT= 47dc1150929aa9610938cb0cfe92995e +TEST= 33 +KEY= 4824f09707ce23a0055f5737d9583e33 +IV= 47dc1150929aa9610938cb0cfe92995e +PT= 13f5da56d399a7daa004d0be76845e68 +CT= bca6bd8971837b8a81b923e5b2ed0d83 +TEST= 34 +KEY= f4824d1e764d582a84e674d26bb533b0 +IV= bca6bd8971837b8a81b923e5b2ed0d83 +PT= 8397c79e02fdfe6b7d47fa0181ea453a +CT= 23d991b7da5e96966830e7b40b5a2d8a +TEST= 35 +KEY= d75bdca9ac13cebcecd6936660ef1e3a +IV= 23d991b7da5e96966830e7b40b5a2d8a +PT= 18987e5504e23c0f862bca8dffc2b07f +CT= 17aa31c49f584def77c8e7891b11652b +TEST= 36 +KEY= c0f1ed6d334b83539b1e74ef7bfe7b11 +IV= 17aa31c49f584def77c8e7891b11652b +PT= a34d44cc1c6e171d7d48447f87e2f2c1 +CT= dd1f90f66d4062e6823f0f229562d110 +TEST= 37 +KEY= 1dee7d9b5e0be1b519217bcdee9caa01 +IV= dd1f90f66d4062e6823f0f229562d110 +PT= c9793582e22b8840bbaa3d7669208ccc +CT= 8f5b876777f7ca903b1d6346aa8bdae7 +TEST= 38 +KEY= 92b5fafc29fc2b25223c188b441770e6 +IV= 8f5b876777f7ca903b1d6346aa8bdae7 +PT= 730eacfee3817a94b88117abb3f9cde4 +CT= 388780ba989c0a8bb5bd9e4086d91ef7 +TEST= 39 +KEY= aa327a46b16021ae978186cbc2ce6e11 +IV= 388780ba989c0a8bb5bd9e4086d91ef7 +PT= f004d3a14c6c94fa2d39be0c71119658 +CT= 7f4c33e4f5c055c05db4b7691061b307 +TEST= 40 +KEY= d57e49a244a0746eca3531a2d2afdd16 +IV= 7f4c33e4f5c055c05db4b7691061b307 +PT= 575f86a5d1637cb86449f8bc0f1573d3 +CT= f6fe1919f174065ab31ac43e0d733a81 +TEST= 41 +KEY= 238050bbb5d47234792ff59cdfdce797 +IV= f6fe1919f174065ab31ac43e0d733a81 +PT= 14f8e2db61b05e094ca4c0e9da7800ee +CT= 4cb876f2dc169f955e639c6c916340a6 +TEST= 42 +KEY= 6f38264969c2eda1274c69f04ebfa731 +IV= 4cb876f2dc169f955e639c6c916340a6 +PT= f88ba2e4aa4abdd381778dfd1da1856f +CT= aeeb80b469d89e45bc3426b6ccc50440 +TEST= 43 +KEY= c1d3a6fd001a73e49b784f46827aa371 +IV= aeeb80b469d89e45bc3426b6ccc50440 +PT= 195f74019b65c0f7d724491bde8c8b88 +CT= 2fd7ccdbdb2b2037c104f0a707a11eda +TEST= 44 +KEY= ee046a26db3153d35a7cbfe185dbbdab +IV= 2fd7ccdbdb2b2037c104f0a707a11eda +PT= ff51887ab5fec9c97cb61bb2de9cdbc6 +CT= 8df7bb99b781c63f4f8b2a7d5dff2960 +TEST= 45 +KEY= 63f3d1bf6cb095ec15f7959cd82494cb +IV= 8df7bb99b781c63f4f8b2a7d5dff2960 +PT= a35aab0055e99fa980d59b242b8c6257 +CT= 7d96ecc20571e9e85c16e3bdada374ca +TEST= 46 +KEY= 1e653d7d69c17c0449e176217587e001 +IV= 7d96ecc20571e9e85c16e3bdada374ca +PT= 02cc392194874cd531025588c96e2d22 +CT= aa1dc2e69ce582dfa9a1b435854fcbb1 +TEST= 47 +KEY= b478ff9bf524fedbe040c214f0c82bb0 +IV= aa1dc2e69ce582dfa9a1b435854fcbb1 +PT= 94cc5db118ef53c904b0eec23ac650fd +CT= da0ca33bcce4aba1936833127d1f5e25 +TEST= 48 +KEY= 6e745ca039c0557a7328f1068dd77595 +IV= da0ca33bcce4aba1936833127d1f5e25 +PT= 52f009e929526e923be4f43b66876725 +CT= b5e80ff4dadd69bb7493b9f72a752811 +TEST= 49 +KEY= db9c5354e31d3cc107bb48f1a7a25d84 +IV= b5e80ff4dadd69bb7493b9f72a752811 +PT= 6b88b42e99e5b4f838064a711b71de1f +CT= 5cddce45516c6d1654647a1a541ac435 +TEST= 50 +KEY= 87419d11b27151d753df32ebf3b899b1 +IV= 5cddce45516c6d1654647a1a541ac435 +PT= 9e25cbdd8e2d7d68ff72932e35879175 +CT= 3c7e88a9a6462d08ada5910a3fce611a +TEST= 51 +KEY= bb3f15b814377cdffe7aa3e1cc76f8ab +IV= 3c7e88a9a6462d08ada5910a3fce611a +PT= 72a4ef1d82a3ac5c1dfdf8c4dcfb9f6e +CT= e428200e1c3be9a5141f73590b7473b8 +TEST= 52 +KEY= 5f1735b6080c957aea65d0b8c7028b13 +IV= e428200e1c3be9a5141f73590b7473b8 +PT= 7cd8053f2fd743a44cc39f75c1e81075 +CT= ab3b8a79653e884053afc8c14504af77 +TEST= 53 +KEY= f42cbfcf6d321d3ab9ca187982062464 +IV= ab3b8a79653e884053afc8c14504af77 +PT= 0731077a8b6854cb90affae3a3b199c4 +CT= 53b7dfd6d12dde7966c62fcc1946a4ac +TEST= 54 +KEY= a79b6019bc1fc343df0c37b59b4080c8 +IV= 53b7dfd6d12dde7966c62fcc1946a4ac +PT= e4e26ca1da697f30e0542763313a79b7 +CT= 6dec201bbb90b66a3b2dff4fa1ddf7c4 +TEST= 55 +KEY= ca774002078f7529e421c8fa3a9d770c +IV= 6dec201bbb90b66a3b2dff4fa1ddf7c4 +PT= c2cf11681c4767a78b2f95afb50cf155 +CT= f535b7cd4135a39e0e344bd2cfa14b83 +TEST= 56 +KEY= 3f42f7cf46bad6b7ea158328f53c3c8f +IV= f535b7cd4135a39e0e344bd2cfa14b83 +PT= 606618948c1ed454b9b0f92435381d2d +CT= 209ac483682c48aa197bb64417127656 +TEST= 57 +KEY= 1fd8334c2e969e1df36e356ce22e4ad9 +IV= 209ac483682c48aa197bb64417127656 +PT= 8f8a70aadf2f8bfb5e137f86ac83d32f +CT= 76f5f43a888d7f22d698a73810ed5b15 +TEST= 58 +KEY= 692dc776a61be13f25f69254f2c311cc +IV= 76f5f43a888d7f22d698a73810ed5b15 +PT= e9e8aebf16a5f4e1c26b4a385163e844 +CT= 625c62f33c9548f2651fb0a08bf45286 +TEST= 59 +KEY= 0b71a5859a8ea9cd40e922f47937434a +IV= 625c62f33c9548f2651fb0a08bf45286 +PT= c69cfd36c50eba06e3b3c4ab7c9b694e +CT= 3931ce6df783063f26920d4048b00c82 +TEST= 60 +KEY= 32406be86d0daff2667b2fb431874fc8 +IV= 3931ce6df783063f26920d4048b00c82 +PT= 5dfe322dd692ba8dd9cd328a5af9a3b7 +CT= a3ca3ece725c84281144052a80ea5176 +TEST= 61 +KEY= 918a55261f512bda773f2a9eb16d1ebe +IV= a3ca3ece725c84281144052a80ea5176 +PT= 4bbd16bf74226f816767a7207c672c9a +CT= 94552690a231354f8f9bef295e55f142 +TEST= 62 +KEY= 05df73b6bd601e95f8a4c5b7ef38effc +IV= 94552690a231354f8f9bef295e55f142 +PT= 7055d0c535b2b0501ff6aaee46e03818 +CT= 771908987f00c2d822897e7eea148f29 +TEST= 63 +KEY= 72c67b2ec260dc4dda2dbbc9052c60d5 +IV= 771908987f00c2d822897e7eea148f29 +PT= 7336b9d4977bdda811c0c5ebea539574 +CT= 7aa84598115b181863081afcc239edd2 +TEST= 64 +KEY= 086e3eb6d33bc455b925a135c7158d07 +IV= 7aa84598115b181863081afcc239edd2 +PT= 5296c8546532baeacbec9f29916fb6b2 +CT= 3d95967035af639b2d2814deb9b7f86a +TEST= 65 +KEY= 35fba8c6e694a7ce940db5eb7ea2756d +IV= 3d95967035af639b2d2814deb9b7f86a +PT= 430880f5576c7783bc1336f900ddd037 +CT= 4d70aad2fc9ef403b463a72db4cfe640 +TEST= 66 +KEY= 788b02141a0a53cd206e12c6ca6d932d +IV= 4d70aad2fc9ef403b463a72db4cfe640 +PT= e489b93778de0c42fefb6122eca46bdc +CT= 165ddb405546934e81cb6b0b89b4a40e +TEST= 67 +KEY= 6ed6d9544f4cc083a1a579cd43d93723 +IV= 165ddb405546934e81cb6b0b89b4a40e +PT= 8e5481acd58bfc5d141c1f71cde91e37 +CT= 693775a3661ce9d0e4cb4888431c64a5 +TEST= 68 +KEY= 07e1acf729502953456e314500c55386 +IV= 693775a3661ce9d0e4cb4888431c64a5 +PT= 4aaa5e507efb9fad15e5f4c77f46af89 +CT= c42391d50b1210c67b6ad642745a4dac +TEST= 69 +KEY= c3c23d22224239953e04e707749f1e2a +IV= c42391d50b1210c67b6ad642745a4dac +PT= 4e0748f8716801b099494037485b8ba4 +CT= a4cb7f010ac42b4c3c14f02353f3644a +TEST= 70 +KEY= 67094223288612d902101724276c7a60 +IV= a4cb7f010ac42b4c3c14f02353f3644a +PT= 0b7b41d57885db37a2fc355c8d03ff3c +CT= 1bb0cbd24537b36eb555be8c0fec3a1f +TEST= 71 +KEY= 7cb989f16db1a1b7b745a9a82880407f +IV= 1bb0cbd24537b36eb555be8c0fec3a1f +PT= 4696f9a564354194142ab7b8630b4279 +CT= 18b10bae39d4fa58f586a067a8e38bc5 +TEST= 72 +KEY= 6408825f54655bef42c309cf8063cbba +IV= 18b10bae39d4fa58f586a067a8e38bc5 +PT= 0b59ebabab994f2ddb3de383454bece8 +CT= c09c6670b93ecd303ba53de58dd81a64 +TEST= 73 +KEY= a494e42fed5b96df7966342a0dbbd1de +IV= c09c6670b93ecd303ba53de58dd81a64 +PT= 2f897f3385e71133cec8367411e830a3 +CT= 45ea7cb9119df7367294f9fe36d4a09f +TEST= 74 +KEY= e17e9896fcc661e90bf2cdd43b6f7141 +IV= 45ea7cb9119df7367294f9fe36d4a09f +PT= 8cde9d975b51a098f4cac93dc58c002f +CT= 02ddd735439a8ae03e976e629a6c992c +TEST= 75 +KEY= e3a34fa3bf5ceb093565a3b6a103e86d +IV= 02ddd735439a8ae03e976e629a6c992c +PT= 1e20571f82c2c6884a6f90a23fd3a925 +CT= b040686b866ae80a88b899031f2f0ee4 +TEST= 76 +KEY= 53e327c839360303bddd3ab5be2ce689 +IV= b040686b866ae80a88b899031f2f0ee4 +PT= 0851624711970ade2f456d5dafb17e05 +CT= 201756bc061706513264a3c489d95a0c +TEST= 77 +KEY= 73f471743f2105528fb9997137f5bc85 +IV= 201756bc061706513264a3c489d95a0c +PT= e8b1410de742136e71f54d31feaa72eb +CT= 2ef27c31aa488648fce0f1804d658092 +TEST= 78 +KEY= 5d060d459569831a735968f17a903c17 +IV= 2ef27c31aa488648fce0f1804d658092 +PT= 97e0ca84c9b22c8942c7fc5088eaed04 +CT= 7545f1d9c8f5f8b441edcdaf00462344 +TEST= 79 +KEY= 2843fc9c5d9c7bae32b4a55e7ad61f53 +IV= 7545f1d9c8f5f8b441edcdaf00462344 +PT= 7b5572c09e998656b55c53748cf77c21 +CT= 347875efd6bd978cd1b2ea949f7e2358 +TEST= 80 +KEY= 1c3b89738b21ec22e3064fcae5a83c0b +IV= 347875efd6bd978cd1b2ea949f7e2358 +PT= a30001aa29d70b0a141b8fc8b9b2e210 +CT= 9c956408ba335ccc9f02f31cc45fd5e6 +TEST= 81 +KEY= 80aeed7b3112b0ee7c04bcd621f7e9ed +IV= 9c956408ba335ccc9f02f31cc45fd5e6 +PT= 839783d75859393b215010f63159fa45 +CT= b70e700f4a7ed08618754960b83bd0f2 +TEST= 82 +KEY= 37a09d747b6c60686471f5b699cc391f +IV= b70e700f4a7ed08618754960b83bd0f2 +PT= 1e3c630bc8c34bf8822686043d14e4d6 +CT= 4721b6796f82d47d6eeb9cb11a19605e +TEST= 83 +KEY= 70812b0d14eeb4150a9a690783d55941 +IV= 4721b6796f82d47d6eeb9cb11a19605e +PT= cee1b977e8b75623cc4e2c4f4765fe2a +CT= 3382e1b076680bbbe7c451582016dd11 +TEST= 84 +KEY= 4303cabd6286bfaeed5e385fa3c38450 +IV= 3382e1b076680bbbe7c451582016dd11 +PT= 02365457ab60c892a0c34a7067ab7608 +CT= ab581732e06b90aa0c835c1c7b6d18b5 +TEST= 85 +KEY= e85bdd8f82ed2f04e1dd6443d8ae9ce5 +IV= ab581732e06b90aa0c835c1c7b6d18b5 +PT= 222b7ed84c648c12ffdd6e8e13eec651 +CT= 3e2e592ceead3b5e16860e80e406e882 +TEST= 86 +KEY= d67584a36c40145af75b6ac33ca87467 +IV= 3e2e592ceead3b5e16860e80e406e882 +PT= 7d24bd646eeba44ed27b11da42d72ff8 +CT= 9163f6dbe0d8bb79a154d92e37a07e1c +TEST= 87 +KEY= 471672788c98af23560fb3ed0b080a7b +IV= 9163f6dbe0d8bb79a154d92e37a07e1c +PT= 42b571ffb3275f5a8e26616a3f0e3403 +CT= e1340e61513fe8146f29e111392e2c3a +TEST= 88 +KEY= a6227c19dda74737392652fc32262641 +IV= e1340e61513fe8146f29e111392e2c3a +PT= 6efd16d48e03b6e1cd74777abc891da8 +CT= 3d703b4fd8a8a7f015d0fd47de0c5a28 +TEST= 89 +KEY= 9b524756050fe0c72cf6afbbec2a7c69 +IV= 3d703b4fd8a8a7f015d0fd47de0c5a28 +PT= 7956129687ac95397e14821a17f267de +CT= c5c6d2baabdbe0b82cdfffe7a92c8344 +TEST= 90 +KEY= 5e9495ecaed4007f0029505c4506ff2d +IV= c5c6d2baabdbe0b82cdfffe7a92c8344 +PT= ac661770332fe0a45b80791c3a5d1241 +CT= 6f7bde1bd17c5b10064b52eb54ee90b0 +TEST= 91 +KEY= 31ef4bf77fa85b6f066202b711e86f9d +IV= 6f7bde1bd17c5b10064b52eb54ee90b0 +PT= 1de0702c81667a979e5e3542da95c5ad +CT= dc7e35d5b02aff4b92c190265e01c0f8 +TEST= 92 +KEY= ed917e22cf82a42494a392914fe9af65 +IV= dc7e35d5b02aff4b92c190265e01c0f8 +PT= a491cb4321c757fd353b560c0b3ea4d0 +CT= d753f5a6c5d7e17f4024fd8675b23e7f +TEST= 93 +KEY= 3ac28b840a55455bd4876f173a5b911a +IV= d753f5a6c5d7e17f4024fd8675b23e7f +PT= 418fa3b3e9b4e463d04ac3a3361dca57 +CT= b635529e8080b33e9ad6d79b8203112d +TEST= 94 +KEY= 8cf7d91a8ad5f6654e51b88cb8588037 +IV= b635529e8080b33e9ad6d79b8203112d +PT= c87e4ed505989807d1dbda4769804ea3 +CT= 43e763cd1b9ee4bc474b79c1e0da2564 +TEST= 95 +KEY= cf10bad7914b12d9091ac14d5882a553 +IV= 43e763cd1b9ee4bc474b79c1e0da2564 +PT= 042f084454d0ee01ab00d3921e1bca06 +CT= c799956ff8a7a05b71123ebc4aa09c0c +TEST= 96 +KEY= 08892fb869ecb2827808fff11222395f +IV= c799956ff8a7a05b71123ebc4aa09c0c +PT= 9a8e40400c51a438dce498ad3455de51 +CT= 76679b0e26b1b6ca2a8d90944777c57f +TEST= 97 +KEY= 7eeeb4b64f5d044852856f655555fc20 +IV= 76679b0e26b1b6ca2a8d90944777c57f +PT= 227e122d3af18a3caa973b33b3356ce7 +CT= b2f52396f02d2dffe36c5f9238ac1ebe +TEST= 98 +KEY= cc1b9720bf7029b7b1e930f76df9e29e +IV= b2f52396f02d2dffe36c5f9238ac1ebe +PT= 0d9cdd97e2fe0e78cf16b1596dc20aba +CT= 7c8edd3a079835954238e0fe4872aae1 +TEST= 99 +KEY= b0954a1ab8e81c22f3d1d009258b487f +IV= 7c8edd3a079835954238e0fe4872aae1 +PT= 925a7ecd233b3b3ccde2221a03c5f720 +CT= d7c9fd3ef010c8577087591149d5640f +TEST= 100 +KEY= 675cb72448f8d475835689186c5e2c70 +IV= d7c9fd3ef010c8577087591149d5640f +PT= 59fefbe5179f0e7e48f3d97cda314ff5 +CT= 2608cce6ba917551def84fa7bca9b23c +TEST= 101 +KEY= 41547bc2f269a1245daec6bfd0f79e4c +IV= 2608cce6ba917551def84fa7bca9b23c +PT= 7f24a1ba8762294194f76322a6b28a16 +CT= eff1513b52d5d74d2202898ac99552c4 +TEST= 102 +KEY= aea52af9a0bc76697fac4f351962cc88 +IV= eff1513b52d5d74d2202898ac99552c4 +PT= 79b43f27f3e144c4efbf383698a1ec90 +CT= b4b3b020d44d059666e86d22072916b5 +TEST= 103 +KEY= 1a169ad974f173ff194422171e4bda3d +IV= b4b3b020d44d059666e86d22072916b5 +PT= 8bf20b60b4774354857ba2979cd396f9 +CT= 6f1a3d43cc2171a808ae8d38396de1d1 +TEST= 104 +KEY= 750ca79ab8d0025711eaaf2f27263bec +IV= 6f1a3d43cc2171a808ae8d38396de1d1 +PT= 74955ddacfb8a5467d069f1ef341248b +CT= 47c23a68da351c22ebf86fdbd8f723b4 +TEST= 105 +KEY= 32ce9df262e51e75fa12c0f4ffd11858 +IV= 47c23a68da351c22ebf86fdbd8f723b4 +PT= 25d7a186ed990020e10a23c5cfb1cef9 +CT= d5f2e2c2ced730479d87e0af0fef8a73 +TEST= 106 +KEY= e73c7f30ac322e326795205bf03e922b +IV= d5f2e2c2ced730479d87e0af0fef8a73 +PT= 13480f2edccb62b8f9a7df98238571fc +CT= f29a46a7f1b1d1d4f5fe30e569d7a801 +TEST= 107 +KEY= 15a639975d83ffe6926b10be99e93a2a +IV= f29a46a7f1b1d1d4f5fe30e569d7a801 +PT= 75e138123b5a98596303acf9daeea714 +CT= 9f6e9a13913df78ac67bd20303af49b5 +TEST= 108 +KEY= 8ac8a384ccbe086c5410c2bd9a46739f +IV= 9f6e9a13913df78ac67bd20303af49b5 +PT= dbd0ae00fd06761626366eb251412a32 +CT= 46ac9f42239b22a163ce0fdeaa103d44 +TEST= 109 +KEY= cc643cc6ef252acd37decd6330564edb +IV= 46ac9f42239b22a163ce0fdeaa103d44 +PT= b8768a8af461c9547d1f982fe90e96b6 +CT= 95d7c8f969b0eeb03fec257043597315 +TEST= 110 +KEY= 59b3f43f8695c47d0832e813730f3dce +IV= 95d7c8f969b0eeb03fec257043597315 +PT= 3d20cc8ad484048251c7a81c7e3ca59c +CT= 6b74af42435bc640a826ec443207574e +TEST= 111 +KEY= 32c75b7dc5ce023da014045741086a80 +IV= 6b74af42435bc640a826ec443207574e +PT= bf719f78b23bafd4a50634bcd9361095 +CT= 31e3919f36d79fbf61884227110c10ff +TEST= 112 +KEY= 0324cae2f3199d82c19c467050047a7f +IV= 31e3919f36d79fbf61884227110c10ff +PT= e1d32740bb8b6d67ad3038887899f090 +CT= a1cd90683ce041d6ca20780176fdd5f4 +TEST= 113 +KEY= a2e95a8acff9dc540bbc3e7126f9af8b +IV= a1cd90683ce041d6ca20780176fdd5f4 +PT= 3069ea97f092acdcf41649377b8fcbc8 +CT= 7220f866a10dc711dc1d277b4c8f204d +TEST= 114 +KEY= d0c9a2ec6ef41b45d7a1190a6a768fc6 +IV= 7220f866a10dc711dc1d277b4c8f204d +PT= b0563a5e0ee1e2b96f3f7d04ee39ea7c +CT= cf81ca348b98c532b172f032ae0a6fed +TEST= 115 +KEY= 1f4868d8e56cde7766d3e938c47ce02b +IV= cf81ca348b98c532b172f032ae0a6fed +PT= b1b78bd75c30dd4e1e198acb98b498a6 +CT= 99c990d64d27d47ed0c1e7f186ac6674 +TEST= 116 +KEY= 8681f80ea84b0a09b6120ec942d0865f +IV= 99c990d64d27d47ed0c1e7f186ac6674 +PT= d413e3cc66e9938e4e0cfc1975e38c8c +CT= 30c7dad86fef77c43a44a3ef8b116354 +TEST= 117 +KEY= b64622d6c7a47dcd8c56ad26c9c1e50b +IV= 30c7dad86fef77c43a44a3ef8b116354 +PT= cd85d9334481ae85b8816233ca4af7db +CT= 9e717b45239dd908138837154b803654 +TEST= 118 +KEY= 28375993e439a4c59fde9a338241d35f +IV= 9e717b45239dd908138837154b803654 +PT= 925ba3760d655d5b788802dde25732bb +CT= 4a6e32c01709ebccc9bca43fd5dfdfb3 +TEST= 119 +KEY= 62596b53f3304f0956623e0c579e0cec +IV= 4a6e32c01709ebccc9bca43fd5dfdfb3 +PT= 0aa6264bfcc7bd07fa8f94e1ef739633 +CT= 7263392dc9da868bc0317a6d4ad52553 +TEST= 120 +KEY= 103a527e3aeac982965344611d4b29bf +IV= 7263392dc9da868bc0317a6d4ad52553 +PT= fb385bd8ece7c4dfe2351d851141888d +CT= aa49b1dda3af4d05d861667e88ad61ab +TEST= 121 +KEY= ba73e3a3994584874e32221f95e64814 +IV= aa49b1dda3af4d05d861667e88ad61ab +PT= 510e13e20bb06ead335f10f2c69831d3 +CT= 3ac256a92f69af35db05ddca61cf1ee4 +TEST= 122 +KEY= 80b1b50ab62c2bb29537ffd5f42956f0 +IV= 3ac256a92f69af35db05ddca61cf1ee4 +PT= 0a07caa0ec6cb726f1a38847253becb6 +CT= 037497736381429a5e5a139c44a6c64a +TEST= 123 +KEY= 83c52279d5ad6928cb6dec49b08f90ba +IV= 037497736381429a5e5a139c44a6c64a +PT= 864fef67c8902757e2cfb28da2ef3c8d +CT= 5393d7f9f37a5b9f1f82c1be20435149 +TEST= 124 +KEY= d056f58026d732b7d4ef2df790ccc1f3 +IV= 5393d7f9f37a5b9f1f82c1be20435149 +PT= ed2d2a671677067b30540d4c9d86905f +CT= 2969ac5fb94ec76209c6df58f6b8aa01 +TEST= 125 +KEY= f93f59df9f99f5d5dd29f2af66746bf2 +IV= 2969ac5fb94ec76209c6df58f6b8aa01 +PT= 67ed14454dad764c1772bcb1e0527954 +CT= 150f94e1940f9d2acc735f79b0912a06 +TEST= 126 +KEY= ec30cd3e0b9668ff115aadd6d6e541f4 +IV= 150f94e1940f9d2acc735f79b0912a06 +PT= 517a4852f68370edd879e32f52fd4d2b +CT= 6efd8e4e4c096a2033b3da8a1f0066af +TEST= 127 +KEY= 82cd4370479f02df22e9775cc9e5275b +IV= 6efd8e4e4c096a2033b3da8a1f0066af +PT= dbf4cad912437115658e5ba5e1724739 +CT= 899d9126cd85d2d4053ad9ee7156041b +TEST= 128 +KEY= 0b50d2568a1ad00b27d3aeb2b8b32340 +IV= 899d9126cd85d2d4053ad9ee7156041b +PT= 69b302f96afcf802ac639ebabc52ecfb +CT= 819e4b8319807088ff306e125e52dad3 +TEST= 129 +KEY= 8ace99d5939aa083d8e3c0a0e6e1f993 +IV= 819e4b8319807088ff306e125e52dad3 +PT= f5ca57371833f0af98f0ec02dfe518ed +CT= 4dfa3739235d14660df7d5fde36f6567 +TEST= 130 +KEY= c734aeecb0c7b4e5d514155d058e9cf4 +IV= 4dfa3739235d14660df7d5fde36f6567 +PT= 29bbd9264b9792bed8a8efa43f943a7d +CT= 4ea36eccbccd9fafd8fb588bd53826a7 +TEST= 131 +KEY= 8997c0200c0a2b4a0def4dd6d0b6ba53 +IV= 4ea36eccbccd9fafd8fb588bd53826a7 +PT= 149120cfc3d7c671f287aa77a4a3ef97 +CT= 0282357c78c8944a5520af80506de30d +TEST= 132 +KEY= 8b15f55c74c2bf0058cfe25680db595e +IV= 0282357c78c8944a5520af80506de30d +PT= 02c2e0ccb12f5216213d493325f38fc3 +CT= c827c36f654137a2bb127d1782285b10 +TEST= 133 +KEY= 43323633118388a2e3dd9f4102f3024e +IV= c827c36f654137a2bb127d1782285b10 +PT= fa1693ad90401791ff9093a562ec66eb +CT= 3723a94bc91032bf8db599abefb784d1 +TEST= 134 +KEY= 74119f78d893ba1d6e6806eaed44869f +IV= 3723a94bc91032bf8db599abefb784d1 +PT= 5410cbe33abb58ab0b0e86f5817e6f2c +CT= 26a520b5b475632ee8806648bfc028af +TEST= 135 +KEY= 52b4bfcd6ce6d93386e860a25284ae30 +IV= 26a520b5b475632ee8806648bfc028af +PT= b01a11d200c24f4333029de3bff49601 +CT= 36d5e00e0a53d7ce1498215afa686905 +TEST= 136 +KEY= 64615fc366b50efd927041f8a8ecc735 +IV= 36d5e00e0a53d7ce1498215afa686905 +PT= 252e4460e9a391d54ce9e516663e59ae +CT= 829f0b7b17ed5f2fb7a014a6cd9d8052 +TEST= 137 +KEY= e6fe54b8715851d225d0555e65714767 +IV= 829f0b7b17ed5f2fb7a014a6cd9d8052 +PT= bcc51a6493f6847bea8219329f67308d +CT= bab1d358d08da13bec485051f2ebfe2e +TEST= 138 +KEY= 5c4f87e0a1d5f0e9c998050f979ab949 +IV= bab1d358d08da13bec485051f2ebfe2e +PT= d89236011b3c2338e95322d4716aee59 +CT= 29ba99f8cf8b48134b1330e75bd7254e +TEST= 139 +KEY= 75f51e186e5eb8fa828b35e8cc4d9c07 +IV= 29ba99f8cf8b48134b1330e75bd7254e +PT= 21d0eb5857c93a0d4d75253e1020c00e +CT= 9d557274fe14aa69673441117a2d7da2 +TEST= 140 +KEY= e8a06c6c904a1293e5bf74f9b660e1a5 +IV= 9d557274fe14aa69673441117a2d7da2 +PT= 3c3bb454584c4c7570089b6e631ba035 +CT= 543ef50a024e77ace685bd0bbb47232d +TEST= 141 +KEY= bc9e99669204653f033ac9f20d27c288 +IV= 543ef50a024e77ace685bd0bbb47232d +PT= 8ed890bc903aeac7c3c685980edb3370 +CT= 884bd68868d89de9dedb2d95a8b992fb +TEST= 142 +KEY= 34d54feefadcf8d6dde1e467a59e5073 +IV= 884bd68868d89de9dedb2d95a8b992fb +PT= 684debd6dede24bd0f4f8afa47f08aef +CT= db00984caeb14cf5a1fde8e8e9c03830 +TEST= 143 +KEY= efd5d7a2546db4237c1c0c8f4c5e6843 +IV= db00984caeb14cf5a1fde8e8e9c03830 +PT= c42b245443f2695f306455199c7c76fe +CT= 0ca808425e8ebddd5519130f4900329f +TEST= 144 +KEY= e37ddfe00ae309fe29051f80055e5adc +IV= 0ca808425e8ebddd5519130f4900329f +PT= 1655f89334ccb6ed8e140088997bd2d1 +CT= 0dae2f85cd81874dcd7368277d0c386d +TEST= 145 +KEY= eed3f065c7628eb3e47677a7785262b1 +IV= 0dae2f85cd81874dcd7368277d0c386d +PT= 2b7a2df6e0cac83837afdc8b2134e6a6 +CT= e3bf66a6784432e6ce61b769c3cfdb35 +TEST= 146 +KEY= 0d6c96c3bf26bc552a17c0cebb9db984 +IV= e3bf66a6784432e6ce61b769c3cfdb35 +PT= 8fed19e77b9690ec8f70272364b4eb74 +CT= 473925552401311f24ee4f40b5a3ecb5 +TEST= 147 +KEY= 4a55b3969b278d4a0ef98f8e0e3e5531 +IV= 473925552401311f24ee4f40b5a3ecb5 +PT= 032d9af654037e2586b12cf031e4ab4c +CT= e9e1e4acf3f4e25cb8093f6b27665dff +TEST= 148 +KEY= a3b4573a68d36f16b6f0b0e5295808ce +IV= e9e1e4acf3f4e25cb8093f6b27665dff +PT= e6ef26b3721f6c772d231584dd480441 +CT= 2d9f85d63fed609876df97f0e6b85564 +TEST= 149 +KEY= 8e2bd2ec573e0f8ec02f2715cfe05daa +IV= 2d9f85d63fed609876df97f0e6b85564 +PT= e641ebc4a734c71669d948f1beee675a +CT= 3a61f4bed09fd7a7aed71e9fd53d2ee3 +TEST= 150 +KEY= b44a265287a1d8296ef8398a1add7349 +IV= 3a61f4bed09fd7a7aed71e9fd53d2ee3 +PT= 36db43747cd9215857886a0de2008509 +CT= 6be2ad95f4a642f3fd73d9543b53d479 +TEST= 151 +KEY= dfa88bc773079ada938be0de218ea730 +IV= 6be2ad95f4a642f3fd73d9543b53d479 +PT= 58a73313b31b8c1eb3c144c9363ee94b +CT= bf198d336df857bfba069634c25cf45b +TEST= 152 +KEY= 60b106f41effcd65298d76eae3d2536b +IV= bf198d336df857bfba069634c25cf45b +PT= e0974e1bbefe21422eced27858535f87 +CT= 7945132f6f7eed6b61e1cf9c47e2ab2a +TEST= 153 +KEY= 19f415db7181200e486cb976a430f841 +IV= 7945132f6f7eed6b61e1cf9c47e2ab2a +PT= 6f36b63a1a8b426282ca4e61b7e37b3a +CT= af441f330c8c199e9776d92a92b02216 +TEST= 154 +KEY= b6b00ae87d0d3990df1a605c3680da57 +IV= af441f330c8c199e9776d92a92b02216 +PT= 99ad2b814d3a4c0e1c27d4251c55c74a +CT= f34463a538e46e87b0f24eaa36b674a7 +TEST= 155 +KEY= 45f4694d45e957176fe82ef60036aef0 +IV= f34463a538e46e87b0f24eaa36b674a7 +PT= 6d05c19e42d0561c198a10fa55f4c870 +CT= 5d54d3c72d55015d0149fa1591208824 +TEST= 156 +KEY= 18a0ba8a68bc564a6ea1d4e3911626d4 +IV= 5d54d3c72d55015d0149fa1591208824 +PT= 7aa7a04de8cd21f59ba5369ca175cec3 +CT= d2ebe35c33210b39cd4f443bb577dbd8 +TEST= 157 +KEY= ca4b59d65b9d5d73a3ee90d82461fd0c +IV= d2ebe35c33210b39cd4f443bb577dbd8 +PT= 2da2a48fe13fa4dd5271a02fb7f98aec +CT= 2f4ad89c0d915df978160e9e882ad28e +TEST= 158 +KEY= e501814a560c008adbf89e46ac4b2f82 +IV= 2f4ad89c0d915df978160e9e882ad28e +PT= 82eb831b9ff9da7d06553a456133766b +CT= 09a04c7cbed3d60adb6cfdd012deed17 +TEST= 159 +KEY= eca1cd36e8dfd68000946396be95c295 +IV= 09a04c7cbed3d60adb6cfdd012deed17 +PT= 8d4fd1ce8cb9745e9e65182d94f8307a +CT= 193c6fab40c87c7029983edd52628400 +TEST= 160 +KEY= f59da29da817aaf0290c5d4becf74695 +IV= 193c6fab40c87c7029983edd52628400 +PT= f06a061082e499e65a5ded0d22323f57 +CT= 7166bd655d8128e7b09d37b38478b480 +TEST= 161 +KEY= 84fb1ff8f596821799916af8688ff215 +IV= 7166bd655d8128e7b09d37b38478b480 +PT= dcec808551ea98534e1a9edf457125da +CT= 5dfaafb695d34a7af2d39cd2d01fd4bd +TEST= 162 +KEY= d901b04e6045c86d6b42f62ab89026a8 +IV= 5dfaafb695d34a7af2d39cd2d01fd4bd +PT= fae59c96604d062f49c8c93fa7e4d5fc +CT= 85f63afc88a1ced4e73b849c295692f2 +TEST= 163 +KEY= 5cf78ab2e8e406b98c7972b691c6b45a +IV= 85f63afc88a1ced4e73b849c295692f2 +PT= 7fe1ea6a7a525a7e0222d6269f7d6a40 +CT= dc60a8554bf9e783d0e92283ec0d00af +TEST= 164 +KEY= 809722e7a31de13a5c9050357dcbb4f5 +IV= dc60a8554bf9e783d0e92283ec0d00af +PT= 89c93828ce30d4cd7025d9f2cf864371 +CT= ef10720e8f10fbabc96bb5f4e5287d12 +TEST= 165 +KEY= 6f8750e92c0d1a9195fbe5c198e3c9e7 +IV= ef10720e8f10fbabc96bb5f4e5287d12 +PT= a8dea35d4a712ace8f38a2ca2cb6bcfb +CT= eed271733dc7b81ad09c86c8f8d69255 +TEST= 166 +KEY= 8155219a11caa28b4567630960355bb2 +IV= eed271733dc7b81ad09c86c8f8d69255 +PT= 6720ad239efecf5785b238d4da39dd6a +CT= dc47b1fac154cb0c39adf4c92f8c2902 +TEST= 167 +KEY= 5d129060d09e69877cca97c04fb972b0 +IV= dc47b1fac154cb0c39adf4c92f8c2902 +PT= d41dea3bc44cc552b5accfeefaf225f5 +CT= ad4828834513730bf275c854d35bf09e +TEST= 168 +KEY= f05ab8e3958d1a8c8ebf5f949ce2822e +IV= ad4828834513730bf275c854d35bf09e +PT= 5059da9258a7de12865e1e2173399bc9 +CT= 82ca6b085a452cfdffbde5c7b738cdab +TEST= 169 +KEY= 7290d3ebcfc836717102ba532bda4f85 +IV= 82ca6b085a452cfdffbde5c7b738cdab +PT= 9625b8a444c3e4d3554a8c6e33e1b810 +CT= 4f44c38189e1011970690d0ed4bcb9c7 +TEST= 170 +KEY= 3dd4106a46293768016bb75dff66f642 +IV= 4f44c38189e1011970690d0ed4bcb9c7 +PT= 373fbca7529a9fa9af77295fc55b0bee +CT= 27be0578b0f898c04133aa4d3c1a5a7c +TEST= 171 +KEY= 1a6a1512f6d1afa840581d10c37cac3e +IV= 27be0578b0f898c04133aa4d3c1a5a7c +PT= 37fc0a286dffd5a76643d1d45c858f64 +CT= b9c70b34f78f3da7796c32d0918474a5 +TEST= 172 +KEY= a3ad1e26015e920f39342fc052f8d89b +IV= b9c70b34f78f3da7796c32d0918474a5 +PT= e1eac69aa2a8f05b8747e2624d00f4bb +CT= 846985c471f10676e63bcd09c32506f3 +TEST= 173 +KEY= 27c49be270af9479df0fe2c991ddde68 +IV= 846985c471f10676e63bcd09c32506f3 +PT= 6eb0046d9c6854c63447296f4f6d3d21 +CT= f754559746c52113c29af782e96b6105 +TEST= 174 +KEY= d090ce75366ab56a1d95154b78b6bf6d +IV= f754559746c52113c29af782e96b6105 +PT= f65269422328f40d8a53f4f14db88583 +CT= ae6b4eabf8dc479a1e3f8c3f30a4a797 +TEST= 175 +KEY= 7efb80deceb6f2f003aa9974481218fa +IV= ae6b4eabf8dc479a1e3f8c3f30a4a797 +PT= 765b38dc041dec130a3a294d9f89a16d +CT= 87645926b9d85ac4ab023d2104cc3fa2 +TEST= 176 +KEY= f99fd9f8776ea834a8a8a4554cde2758 +IV= 87645926b9d85ac4ab023d2104cc3fa2 +PT= 8070950120e0fbe07c70b171364ad173 +CT= 0125d51139ce00db848b8a9ad3feb90b +TEST= 177 +KEY= f8ba0ce94ea0a8ef2c232ecf9f209e53 +IV= 0125d51139ce00db848b8a9ad3feb90b +PT= 1ef45dd2cd61667469569cfad445341c +CT= e1651756a2c0d132c671d74748244e49 +TEST= 178 +KEY= 19df1bbfec6079ddea52f988d704d01a +IV= e1651756a2c0d132c671d74748244e49 +PT= 26bef7e8a3d0ac50dc64b8215ccbc44f +CT= 94049fbd554a6cffe7927d6ec07d6242 +TEST= 179 +KEY= 8ddb8402b92a15220dc084e61779b258 +IV= 94049fbd554a6cffe7927d6ec07d6242 +PT= 803f34fa967583623d0ca4d76fc56787 +CT= 974bbe04952d8f0dd70f4353feb092eb +TEST= 180 +KEY= 1a903a062c079a2fdacfc7b5e9c920b3 +IV= 974bbe04952d8f0dd70f4353feb092eb +PT= 023e5d307ce85244144d59a53db504e7 +CT= 2615b9f94f9024ea616648ff15e3b65f +TEST= 181 +KEY= 3c8583ff6397bec5bba98f4afc2a96ec +IV= 2615b9f94f9024ea616648ff15e3b65f +PT= 1a84130b09ce3e7ab1f400b9fe295beb +CT= 39a2a3b6efb5ebe805cbad5817eaeeda +TEST= 182 +KEY= 052720498c22552dbe622212ebc07836 +IV= 39a2a3b6efb5ebe805cbad5817eaeeda +PT= b83609055302d99de46b7153ae3dfce2 +CT= 93f72b839e2ad731b5e894b56adadcf4 +TEST= 183 +KEY= 96d00bca1208821c0b8ab6a7811aa4c2 +IV= 93f72b839e2ad731b5e894b56adadcf4 +PT= 85e69ebde13c05526ea8ae1d24b487f3 +CT= d0ada333801dfdbfc2420b73cd2b92a5 +TEST= 184 +KEY= 467da8f992157fa3c9c8bdd44c313667 +IV= d0ada333801dfdbfc2420b73cd2b92a5 +PT= f24782e953b9b1bbf3b925659c99415b +CT= f59a3d0b65e8f16dc73ccd6c27e8c705 +TEST= 185 +KEY= b3e795f2f7fd8ece0ef470b86bd9f162 +IV= f59a3d0b65e8f16dc73ccd6c27e8c705 +PT= 73be517552e054d78583bea03b84a245 +CT= 7904dbe3a103d936eb4b960c180b0651 +TEST= 186 +KEY= cae34e1156fe57f8e5bfe6b473d2f733 +IV= 7904dbe3a103d936eb4b960c180b0651 +PT= 91998e9582d8357dd5d8b95a9d85912f +CT= c2de0d0145a45deabd6de1fd62161eb1 +TEST= 187 +KEY= 083d4310135a0a1258d2074911c4e982 +IV= c2de0d0145a45deabd6de1fd62161eb1 +PT= 2a5d4ec49712b9cf1e2d9c6c5efacc2a +CT= 974264bdc574c738243ddc008ec4c15a +TEST= 188 +KEY= 9f7f27add62ecd2a7cefdb499f0028d8 +IV= 974264bdc574c738243ddc008ec4c15a +PT= f74520c3745b9b9f9d19642aa57451fb +CT= f4ee51c2ecc32f4806f9c8588880525b +TEST= 189 +KEY= 6b91766f3aede2627a16131117807a83 +IV= f4ee51c2ecc32f4806f9c8588880525b +PT= 4a7d6fc6712f451f58df0ac2d517189e +CT= f4978f5f53aa4c336bee0c62f432b44f +TEST= 190 +KEY= 9f06f9306947ae5111f81f73e3b2cecc +IV= f4978f5f53aa4c336bee0c62f432b44f +PT= 00dad17491c973991fec296972b691bc +CT= 09daa53c2e394bf83113be48e5d0cca2 +TEST= 191 +KEY= 96dc5c0c477ee5a920eba13b0662026e +IV= 09daa53c2e394bf83113be48e5d0cca2 +PT= c00943704c1336f01a1d23fd98be7e8b +CT= d0de529664bf241dbed3168da5bc1b28 +TEST= 192 +KEY= 46020e9a23c1c1b49e38b7b6a3de1946 +IV= d0de529664bf241dbed3168da5bc1b28 +PT= a07fad9770cc32c5680f33a2d67044a4 +CT= f6a44922b3744be96c46742a79a49cbb +TEST= 193 +KEY= b0a647b890b58a5df27ec39cda7a85fd +IV= f6a44922b3744be96c46742a79a49cbb +PT= d5450c670be84169ad1e62c5ecb8365f +CT= 47d229908d4c1ea34e429c34b7d635f5 +TEST= 194 +KEY= f7746e281df994febc3c5fa86dacb008 +IV= 47d229908d4c1ea34e429c34b7d635f5 +PT= 9e90d30be92104667a16522237d645a6 +CT= 6463ac2096842a0958acf45370c0626f +TEST= 195 +KEY= 9317c2088b7dbef7e490abfb1d6cd267 +IV= 6463ac2096842a0958acf45370c0626f +PT= 74382a7bf713de8e8d17ae389e03c3ac +CT= ecdcef7613c362d288ac23d38722dc4c +TEST= 196 +KEY= 7fcb2d7e98bedc256c3c88289a4e0e2b +IV= ecdcef7613c362d288ac23d38722dc4c +PT= db2ec6f41a72f426d9f5dbc65cec1c5c +CT= dfe2da423ace2dfb053265e9e9b214e2 +TEST= 197 +KEY= a029f73ca270f1de690eedc173fc1ac9 +IV= dfe2da423ace2dfb053265e9e9b214e2 +PT= 35998cb9958dc9de0550fc3ea722d571 +CT= 5ebca79bf99165d9ffe355d9b24ecb5d +TEST= 198 +KEY= fe9550a75be1940796edb818c1b2d194 +IV= 5ebca79bf99165d9ffe355d9b24ecb5d +PT= 9bda7bc96736fe2140911c98e8e02e1c +CT= 782d3efd5f599e8d3c85d06128677ec2 +TEST= 199 +KEY= 86b86e5a04b80a8aaa686879e9d5af56 +IV= 782d3efd5f599e8d3c85d06128677ec2 +PT= 8014c1f398e4dcc7f4e5e09e5fafb080 +CT= e01ae2d961f31bbae3da7429627572ab +TEST= 200 +KEY= 66a28c83654b113049b21c508ba0ddfd +IV= e01ae2d961f31bbae3da7429627572ab +PT= 97d66d66d1731eeff14519620616a10b +CT= bc41ed9d568d6ed36212c92deeb40a0e +TEST= 201 +KEY= dae3611e33c67fe32ba0d57d6514d7f3 +IV= bc41ed9d568d6ed36212c92deeb40a0e +PT= f7646b60c237ed24f467141980eb4f00 +CT= cb8df2d164e5b4ab3193d02e71959f63 +TEST= 202 +KEY= 116e93cf5723cb481a33055314814890 +IV= cb8df2d164e5b4ab3193d02e71959f63 +PT= 4a3a241b26ac7a1c88aa2fb750df6e5a +CT= e396fb47a686abaa350b84c250e5eae9 +TEST= 203 +KEY= f2f86888f1a560e22f3881914464a279 +IV= e396fb47a686abaa350b84c250e5eae9 +PT= a71348309d176a072167c4b1b8a295c0 +CT= 29af21f96564eb591e9a60b1be88dec7 +TEST= 204 +KEY= db57497194c18bbb31a2e120faec7cbe +IV= 29af21f96564eb591e9a60b1be88dec7 +PT= bc528364ef78d6432177fe0cf1cdecd1 +CT= 34cd9d96d4455ae0c15b6b970f1ec905 +TEST= 205 +KEY= ef9ad4e74084d15bf0f98ab7f5f2b5bb +IV= 34cd9d96d4455ae0c15b6b970f1ec905 +PT= 18972f6992299533ee23aa5824c25892 +CT= 2e05e3e2079a055310fd9318590a6f41 +TEST= 206 +KEY= c19f3705471ed408e00419afacf8dafa +IV= 2e05e3e2079a055310fd9318590a6f41 +PT= 5441ff0d0a4062d5d0df29bf2fda85b4 +CT= 47d4eaece59c733eefcb7b9d5be95a98 +TEST= 207 +KEY= 864bdde9a282a7360fcf6232f7118062 +IV= 47d4eaece59c733eefcb7b9d5be95a98 +PT= ed3e19b5ab5389aa3a58d97f6604f4c0 +CT= 00525b7d5bfc0651aef6770f6281e6dc +TEST= 208 +KEY= 86198694f97ea167a139153d959066be +IV= 00525b7d5bfc0651aef6770f6281e6dc +PT= 8bd4869c88a9bd3dcfe89b98b93f6eb3 +CT= afb2215e6dc04e9467f44227fd4bdb98 +TEST= 209 +KEY= 29aba7ca94beeff3c6cd571a68dbbd26 +IV= afb2215e6dc04e9467f44227fd4bdb98 +PT= 6e7269fc27bdcc42d64cef41a612f771 +CT= 7b769b90279c95e31d8b3d792fa27fa8 +TEST= 210 +KEY= 52dd3c5ab3227a10db466a634779c28e +IV= 7b769b90279c95e31d8b3d792fa27fa8 +PT= e00316e79dc10d179002b1bacc146027 +CT= e3870cde5cf99b7c4c489af81153002f +TEST= 211 +KEY= b15a3084efdbe16c970ef09b562ac2a1 +IV= e3870cde5cf99b7c4c489af81153002f +PT= fb2fc78a79c33225e6eaaa06b76fa793 +CT= 4dfc91f8971635348ef35141e8c291f7 +TEST= 212 +KEY= fca6a17c78cdd45819fda1dabee85356 +IV= 4dfc91f8971635348ef35141e8c291f7 +PT= 69c8ee14f21832bb077f1a5414851ffe +CT= da51be36f96aa8c80ded9db2a701d72f +TEST= 213 +KEY= 26f71f4a81a77c9014103c6819e98479 +IV= da51be36f96aa8c80ded9db2a701d72f +PT= 766ec1664d2194e0f89b69861a4a8501 +CT= 2aca6359cd935ca2294f9fb5a50f4993 +TEST= 214 +KEY= 0c3d7c134c3420323d5fa3ddbce6cdea +IV= 2aca6359cd935ca2294f9fb5a50f4993 +PT= 1d95e551169bd538836cc349bc6b1772 +CT= 315518f0ac6c1dc9939cb802336da968 +TEST= 215 +KEY= 3d6864e3e0583dfbaec31bdf8f8b6482 +IV= 315518f0ac6c1dc9939cb802336da968 +PT= 4f6bfe727aecdab5a32df8cffc43d6a9 +CT= 34c3ecd89376b4d771ca0669c2c3e26c +TEST= 216 +KEY= 09ab883b732e892cdf091db64d4886ee +IV= 34c3ecd89376b4d771ca0669c2c3e26c +PT= aa8b1da2e015d482ee08fa2b4a2b77b6 +CT= a3f4dd9ddc375c90579c274527612c6e +TEST= 217 +KEY= aa5f55a6af19d5bc88953af36a29aa80 +IV= a3f4dd9ddc375c90579c274527612c6e +PT= 2ee6982d9e0aa5fcb61f3e66e52a0d6d +CT= c45c9e4de76782e2599bd73b132bfe90 +TEST= 218 +KEY= 6e03cbeb487e575ed10eedc879025410 +IV= c45c9e4de76782e2599bd73b132bfe90 +PT= 6e58e5b1edf1bfabad643d8223f0fa81 +CT= 32221da62da2b441b5e66a197a5c69f1 +TEST= 219 +KEY= 5c21d64d65dce31f64e887d1035e3de1 +IV= 32221da62da2b441b5e66a197a5c69f1 +PT= d5a81df4b6be17a531478961d78cab46 +CT= e1feb5c31b1671f15dc1f7713e5dd7fe +TEST= 220 +KEY= bddf638e7eca92ee392970a03d03ea1f +IV= e1feb5c31b1671f15dc1f7713e5dd7fe +PT= d360948141a1d3ecff5e8d6bdc022685 +CT= ff07f02135fb458d63ee68c4b1463a99 +TEST= 221 +KEY= 42d893af4b31d7635ac718648c45d086 +IV= ff07f02135fb458d63ee68c4b1463a99 +PT= e3c1e44333c9307e90ee2fba6a7708a5 +CT= 1ae4e8466b84b59eecf5e6beb6140df2 +TEST= 222 +KEY= 583c7be920b562fdb632feda3a51dd74 +IV= 1ae4e8466b84b59eecf5e6beb6140df2 +PT= 653aa343ce35f72e2adb5ffcd2dfcba8 +CT= 3cb44bc123ddcd55b812d265cc5e974e +TEST= 223 +KEY= 648830280368afa80e202cbff60f4a3a +IV= 3cb44bc123ddcd55b812d265cc5e974e +PT= e96a66bfe5f0e8083a01664a47226672 +CT= bb6c54e118fa895f2ac4cc036166e390 +TEST= 224 +KEY= dfe464c91b9226f724e4e0bc9769a9aa +IV= bb6c54e118fa895f2ac4cc036166e390 +PT= a5b240d8e5731e1bfa7c4fdfb4eed81f +CT= da20870677a6214f26fdacba81b41882 +TEST= 225 +KEY= 05c4e3cf6c3407b802194c0616ddb128 +IV= da20870677a6214f26fdacba81b41882 +PT= 92ff6eab4a6d1ad3941e6a91d8c9105b +CT= f079aa86fc9fd361dba0c21ccd4b0f6c +TEST= 226 +KEY= f5bd494990abd4d9d9b98e1adb96be44 +IV= f079aa86fc9fd361dba0c21ccd4b0f6c +PT= dff005175ef746b83cb00ac13337e248 +CT= b6021e0aa1a921c7bcc3fdab1c3ea44a +TEST= 227 +KEY= 43bf57433102f51e657a73b1c7a81a0e +IV= b6021e0aa1a921c7bcc3fdab1c3ea44a +PT= dddc1aa804ad13813c6aea540557c097 +CT= 41f0e4ab03801dce585727b7c41f48bd +TEST= 228 +KEY= 024fb3e83282e8d03d2d540603b752b3 +IV= 41f0e4ab03801dce585727b7c41f48bd +PT= 4c6421e5a487c9c452958cab38ac7098 +CT= 6efdd855baf2d13437c01097abb633de +TEST= 229 +KEY= 6cb26bbd887039e40aed4491a801616d +IV= 6efdd855baf2d13437c01097abb633de +PT= 2a11519d5463f2b96a5e0fce6e4710d7 +CT= 5e8243e5c54a109ccc0bf622a299ef68 +TEST= 230 +KEY= 323028584d3a2978c6e6b2b30a988e05 +IV= 5e8243e5c54a109ccc0bf622a299ef68 +PT= 252145dacad23e8b85ab7637b22c42f2 +CT= 2c9a476418f01c589adc0ca10bf4a183 +TEST= 231 +KEY= 1eaa6f3c55ca35205c3abe12016c2f86 +IV= 2c9a476418f01c589adc0ca10bf4a183 +PT= a22c36dc7d00645fefe8683ea4231787 +CT= da3a4ac19ef6a0f950e26b00834afe41 +TEST= 232 +KEY= c49025fdcb3c95d90cd8d5128226d1c7 +IV= da3a4ac19ef6a0f950e26b00834afe41 +PT= b0dc92d3b4878156b768923286f0433f +CT= 10bbc2a8c8f650fd8eed7cc9f5ead05d +TEST= 233 +KEY= d42be75503cac5248235a9db77cc019a +IV= 10bbc2a8c8f650fd8eed7cc9f5ead05d +PT= 83a9338157091d4aecaf60e887ae09f7 +CT= 757993a70f78b25f02fa0355e04de27b +TEST= 234 +KEY= a15274f20cb2777b80cfaa8e9781e3e1 +IV= 757993a70f78b25f02fa0355e04de27b +PT= 9d818aca2c753e7314f51699d3062031 +CT= e2e74c76c09516135876d54afc940d80 +TEST= 235 +KEY= 43b53884cc276168d8b97fc46b15ee61 +IV= e2e74c76c09516135876d54afc940d80 +PT= bdd36f881f8d1fc56780e291d1359ee1 +CT= 22f76a2db98544549dea21ffcdc2b943 +TEST= 236 +KEY= 614252a975a2253c45535e3ba6d75722 +IV= 22f76a2db98544549dea21ffcdc2b943 +PT= 4c9c16802a4bb1202d4fac9e76c57a43 +CT= 166b0ff778d72b6102d6adf990a70a23 +TEST= 237 +KEY= 77295d5e0d750e5d4785f3c236705d01 +IV= 166b0ff778d72b6102d6adf990a70a23 +PT= 0045ecddaa51ee6fdb226e2d9471f46c +CT= d7724dc8a1413bc1b9d6f305794426f0 +TEST= 238 +KEY= a05b1096ac34359cfe5300c74f347bf1 +IV= d7724dc8a1413bc1b9d6f305794426f0 +PT= 25c55c60290df3d0dc3274cd2ae0ed21 +CT= 41f0196dfe0b1f664a107d12a6ff3d79 +TEST= 239 +KEY= e1ab09fb523f2afab4437dd5e9cb4688 +IV= 41f0196dfe0b1f664a107d12a6ff3d79 +PT= 9a44454f7a335c89beff1d94d3fdb320 +CT= 3f37d7adfb9933ffbac1f7d07f31046e +TEST= 240 +KEY= de9cde56a9a619050e828a0596fa42e6 +IV= 3f37d7adfb9933ffbac1f7d07f31046e +PT= 03d7f09054233696bef84ab8d5b77091 +CT= 02d226a748153c27a723f02461fff913 +TEST= 241 +KEY= dc4ef8f1e1b32522a9a17a21f705bbf5 +IV= 02d226a748153c27a723f02461fff913 +PT= d5c82a6f048a2aa0e5cf4f1edadd68b3 +CT= 4bd7486c212e7f78228478bbf0a7ad3d +TEST= 242 +KEY= 9799b09dc09d5a5a8b25029a07a216c8 +IV= 4bd7486c212e7f78228478bbf0a7ad3d +PT= 936431ad9f800606240c33eaf661d3da +CT= 3efe00ca0a96af4425e683512dac0164 +TEST= 243 +KEY= a967b057ca0bf51eaec381cb2a0e17ac +IV= 3efe00ca0a96af4425e683512dac0164 +PT= 280dc27864bed0d548b5b4f9a7fa38de +CT= 7023640c8d6b02f6c4c7e007c169c592 +TEST= 244 +KEY= d944d45b4760f7e86a0461cceb67d23e +IV= 7023640c8d6b02f6c4c7e007c169c592 +PT= cd0f58962915e5a514e5d6da8bb868e8 +CT= d08419a75363e9622faa09db589915f1 +TEST= 245 +KEY= 09c0cdfc14031e8a45ae6817b3fec7cf +IV= d08419a75363e9622faa09db589915f1 +PT= 09a6099fdddbbc15ee79224b01c49df0 +CT= 6cdd2b0279d9db3c71329c1bb2c24c2f +TEST= 246 +KEY= 651de6fe6ddac5b6349cf40c013c8be0 +IV= 6cdd2b0279d9db3c71329c1bb2c24c2f +PT= b24b11fd8a6fc6b2703ffbebc85b6c44 +CT= ccb0f6f32bde2339a1842a7edc8c99c7 +TEST= 247 +KEY= a9ad100d4604e68f9518de72ddb01227 +IV= ccb0f6f32bde2339a1842a7edc8c99c7 +PT= 2e471506c55d1762cdb9eaef29e23c01 +CT= dad62227a5f328cc33f054eeb346e3d3 +TEST= 248 +KEY= 737b322ae3f7ce43a6e88a9c6ef6f1f4 +IV= dad62227a5f328cc33f054eeb346e3d3 +PT= 5598344020e32f9b2c509d06f4e7804a +CT= 18de226f7caa4ef2712a223c4709c9e2 +TEST= 249 +KEY= 6ba510459f5d80b1d7c2a8a029ff3816 +IV= 18de226f7caa4ef2712a223c4709c9e2 +PT= 549a87be74b62bac3f0fdc2a878f5669 +CT= db082c8d70948b6bf08d4848e4db0231 +TEST= 250 +KEY= b0ad3cc8efc90bda274fe0e8cd243a27 +IV= db082c8d70948b6bf08d4848e4db0231 +PT= 08946428bf90fbf0951a35d6fb72a48a +CT= 29cbd3e3f2074514e63a7b2a651ab031 +TEST= 251 +KEY= 9966ef2b1dce4ecec1759bc2a83e8a16 +IV= 29cbd3e3f2074514e63a7b2a651ab031 +PT= 7ebec38f7787ee1bdd6a648334fa3076 +CT= 0037935821278e879bcbb2fbe4ecc23e +TEST= 252 +KEY= 99517c733ce9c0495abe29394cd24828 +IV= 0037935821278e879bcbb2fbe4ecc23e +PT= 01d77828928164a830c249d96ac6f8b4 +CT= 47501831f9df42c234e9fe9169075888 +TEST= 253 +KEY= de016442c536828b6e57d7a825d510a0 +IV= 47501831f9df42c234e9fe9169075888 +PT= 608349ff8ffc31b072cfa7df649e15b8 +CT= bc10b1d412bc05404b2e38a1d75da421 +TEST= 254 +KEY= 6211d596d78a87cb2579ef09f288b481 +IV= bc10b1d412bc05404b2e38a1d75da421 +PT= b16325bd78fc0451216ff476d4cae293 +CT= 6abd8010e9cbae61e05a9e30c622b501 +TEST= 255 +KEY= 08ac55863e4129aac523713934aa0180 +IV= 6abd8010e9cbae61e05a9e30c622b501 +PT= e613c244f74c61b078c9e59e06e7ad85 +CT= e896b8bd539c30d9a58e5ef6629b279c +TEST= 256 +KEY= e03aed3b6ddd197360ad2fcf5631261c +IV= e896b8bd539c30d9a58e5ef6629b279c +PT= 6cff7a909aab2c0dc61fb8f11b45e661 +CT= 30d15aaa05f56fa2d21e9974fb3ff5da +TEST= 257 +KEY= d0ebb791682876d1b2b3b6bbad0ed3c6 +IV= 30d15aaa05f56fa2d21e9974fb3ff5da +PT= 6bfac8e8fb9c3d5af813b4df90ad863b +CT= 43b99f3da3c1bcce9038118e2968efa1 +TEST= 258 +KEY= 935228accbe9ca1f228ba73584663c67 +IV= 43b99f3da3c1bcce9038118e2968efa1 +PT= 064d09e9f5104602e191dc39f18e6a1a +CT= ebc5796519be4e05262a10d56fa0f72d +TEST= 259 +KEY= 789751c9d257841a04a1b7e0ebc6cb4a +IV= ebc5796519be4e05262a10d56fa0f72d +PT= c2b528d69ed3028a359d4472d98807a7 +CT= 5f2b51dd025e775a63dfe5b9fbf54986 +TEST= 260 +KEY= 27bc0014d009f340677e5259103382cc +IV= 5f2b51dd025e775a63dfe5b9fbf54986 +PT= d5cf62940967af7225f79e87136751f5 +CT= f56d88e433cea445c6e4d6298dfb6c27 +TEST= 261 +KEY= d2d188f0e3c75705a19a84709dc8eeeb +IV= f56d88e433cea445c6e4d6298dfb6c27 +PT= 3be3171202e762846d2ca00fb2cb141a +CT= 4c168a0129f2d48e249777a366d1aef1 +TEST= 262 +KEY= 9ec702f1ca35838b850df3d3fb19401a +IV= 4c168a0129f2d48e249777a366d1aef1 +PT= 5b82a34141c236faed7e1a78d3c426c4 +CT= e11febef79e425480442d45a8c105b44 +TEST= 263 +KEY= 7fd8e91eb3d1a6c3814f278977091b5e +IV= e11febef79e425480442d45a8c105b44 +PT= 86cfadd3f1b368b3a6e57148ca343d38 +CT= 5f5f3548bdbb2a5337fbf07df76526dd +TEST= 264 +KEY= 2087dc560e6a8c90b6b4d7f4806c3d83 +IV= 5f5f3548bdbb2a5337fbf07df76526dd +PT= a4474aca97100c7a357a66119d678798 +CT= 013ada262021f88617773cf478067ec8 +TEST= 265 +KEY= 21bd06702e4b7416a1c3eb00f86a434b +IV= 013ada262021f88617773cf478067ec8 +PT= 6d66801c39db803b5da5a80e30db0d89 +CT= f46be70f65fc5641318292ae0c79e5c5 +TEST= 266 +KEY= d5d6e17f4bb72257904179aef413a68e +IV= f46be70f65fc5641318292ae0c79e5c5 +PT= c9499b32d8f47313eb351139db81ab25 +CT= 8573a25f86c7784bf7a0153df812805c +TEST= 267 +KEY= 50a54320cd705a1c67e16c930c0126d2 +IV= 8573a25f86c7784bf7a0153df812805c +PT= 4b09d37a4a57b320c34b1d70f74eb36a +CT= 036913128a2b71ce3d05d52d61e48e86 +TEST= 268 +KEY= 53cc5032475b2bd25ae4b9be6de5a854 +IV= 036913128a2b71ce3d05d52d61e48e86 +PT= ea3a92794b204c0345765cee2a04af27 +CT= 5a53e929182859cc28d4eb1cb9579b71 +TEST= 269 +KEY= 099fb91b5f73721e723052a2d4b23325 +IV= 5a53e929182859cc28d4eb1cb9579b71 +PT= 2714e38858426c5631bb2bb4fa289985 +CT= df4bd734dec60475d47fe40502439aae +TEST= 270 +KEY= d6d46e2f81b5766ba64fb6a7d6f1a98b +IV= df4bd734dec60475d47fe40502439aae +PT= 69ac3fd2273926e2dad3f5bed9f21491 +CT= ebccd0b121c4009ea7f038f30f5b6b05 +TEST= 271 +KEY= 3d18be9ea07176f501bf8e54d9aac28e +IV= ebccd0b121c4009ea7f038f30f5b6b05 +PT= 07520cd471e27bac35387db47e706784 +CT= 299fe603bba51bd1582cbd42bc9568ea +TEST= 272 +KEY= 1487589d1bd46d2459933316653faa64 +IV= 299fe603bba51bd1582cbd42bc9568ea +PT= 39598b70b8eb190049823472e3596e42 +CT= 68dd98fe52b454f85d6f6a6c742223fa +TEST= 273 +KEY= 7c5ac063496039dc04fc597a111d899e +IV= 68dd98fe52b454f85d6f6a6c742223fa +PT= c7e13abbba75f527ab1320dd930b24f1 +CT= 906b569e44263a4e6f41a52802d3fc59 +TEST= 274 +KEY= ec3196fd0d4603926bbdfc5213ce75c7 +IV= 906b569e44263a4e6f41a52802d3fc59 +PT= 9f5d8e50f06895d5d7e6d1daa247d45f +CT= e5ecbdcc55a9d952be0f93dfa0fe2c31 +TEST= 275 +KEY= 09dd2b3158efdac0d5b26f8db33059f6 +IV= e5ecbdcc55a9d952be0f93dfa0fe2c31 +PT= ec3f35c1e6371f106443bd1446d58a0a +CT= 4837a3d703e80bfe50d742e378956f3a +TEST= 276 +KEY= 41ea88e65b07d13e85652d6ecba536cc +IV= 4837a3d703e80bfe50d742e378956f3a +PT= 7998c3b7b5c94540dfc5bf777d700d48 +CT= df1564e5e47503a779020d27394571e9 +TEST= 277 +KEY= 9effec03bf72d299fc672049f2e04725 +IV= df1564e5e47503a779020d27394571e9 +PT= 63bea75a2440c5d123f335f72137b0b6 +CT= 5147239c3f6e4a158989be96c0275d41 +TEST= 278 +KEY= cfb8cf9f801c988c75ee9edf32c71a64 +IV= 5147239c3f6e4a158989be96c0275d41 +PT= 09c656a0dfcf893ddbe5e2b3d88e5f1f +CT= 7e4dee30ded62ee15cd957530b62559d +TEST= 279 +KEY= b1f521af5ecab66d2937c98c39a54ff9 +IV= 7e4dee30ded62ee15cd957530b62559d +PT= 71dc22f489dd422cde09f01daa427567 +CT= 6f62d6359f07f6bdbb4c02bbe50b273c +TEST= 280 +KEY= de97f79ac1cd40d0927bcb37dcae68c5 +IV= 6f62d6359f07f6bdbb4c02bbe50b273c +PT= c2a9bc94cae48dbeb37b4b506ad4336a +CT= 902d9e9f82de4e66e42b4fea79af4077 +TEST= 281 +KEY= 4eba690543130eb6765084dda50128b2 +IV= 902d9e9f82de4e66e42b4fea79af4077 +PT= 69ee7e15eec2ea953a32e1714961ba9e +CT= 72cb5de8af6cdc60a00a15ceaf249dbd +TEST= 282 +KEY= 3c7134edec7fd2d6d65a91130a25b50f +IV= 72cb5de8af6cdc60a00a15ceaf249dbd +PT= 4c0a3b88fdfaefec38858a927c38ae6a +CT= 68c2bfa5de837b927bd75c6de6008595 +TEST= 283 +KEY= 54b38b4832fca944ad8dcd7eec25309a +IV= 68c2bfa5de837b927bd75c6de6008595 +PT= ce75cca2d7b0199eb1da7e33a0e50ab7 +CT= 4ffccbb31fb1fcc0fcb38f0b557be67a +TEST= 284 +KEY= 1b4f40fb2d4d5584513e4275b95ed6e0 +IV= 4ffccbb31fb1fcc0fcb38f0b557be67a +PT= e0eca2abc1f389b149e746cfb039539e +CT= 249fb11df8c0ed1f346f6d69b8fd0470 +TEST= 285 +KEY= 3fd0f1e6d58db89b65512f1c01a3d290 +IV= 249fb11df8c0ed1f346f6d69b8fd0470 +PT= bfa871ca5ec16c0b353679782be04394 +CT= 8127e6d8eec1111518065edc34cd4b4c +TEST= 286 +KEY= bef7173e3b4ca98e7d5771c0356e99dc +IV= 8127e6d8eec1111518065edc34cd4b4c +PT= 1ef816c565b2f56e772c96ad5c92842d +CT= c8dc75ae1e2dbd005d94e69d6776c498 +TEST= 287 +KEY= 762b62902561148e20c3975d52185d44 +IV= c8dc75ae1e2dbd005d94e69d6776c498 +PT= 9f2b9873f88ebf21a3bb3dcd853c812e +CT= 861d4ff061e85d44173252244f143692 +TEST= 288 +KEY= f0362d60448949ca37f1c5791d0c6bd6 +IV= 861d4ff061e85d44173252244f143692 +PT= 6cdea8a806516a1a0e1cbb5aa123862a +CT= 16da4ee5c5044f66efcc313754fbcd9e +TEST= 289 +KEY= e6ec6385818d06acd83df44e49f7a648 +IV= 16da4ee5c5044f66efcc313754fbcd9e +PT= 5b637bb469073b5e54ec006f47c4d546 +CT= c2c50037bbbec252b7d5cf10c38bd665 +TEST= 290 +KEY= 242963b23a33c4fe6fe83b5e8a7c702d +IV= c2c50037bbbec252b7d5cf10c38bd665 +PT= 38dadbf2ba4a80a6a190d9e2aa245167 +CT= 721222a5a67e96246da1b9c59b67ddd5 +TEST= 291 +KEY= 563b41179c4d52da0249829b111badf8 +IV= 721222a5a67e96246da1b9c59b67ddd5 +PT= cb52378f6e4e7fcb1891d3bb4d086b9f +CT= d28b8f54e8bda9a20965984d5da27fc9 +TEST= 292 +KEY= 84b0ce4374f0fb780b2c1ad64cb9d231 +IV= d28b8f54e8bda9a20965984d5da27fc9 +PT= e66015a1b848ef190f981defedb98c93 +CT= 012c5d9b847c9583b0be03999d24e277 +TEST= 293 +KEY= 859c93d8f08c6efbbb92194fd19d3046 +IV= 012c5d9b847c9583b0be03999d24e277 +PT= f5b2bad53323a52a2b99cc12782cd6f9 +CT= d1efb7e7a34f75887038fc4827e894c1 +TEST= 294 +KEY= 5473243f53c31b73cbaae507f675a487 +IV= d1efb7e7a34f75887038fc4827e894c1 +PT= 11c0c41c3f547b5d7fc94115327ab3d5 +CT= 2cf97d8995aa8fdc4c05205d3d8b757f +TEST= 295 +KEY= 788a59b6c66994af87afc55acbfed1f8 +IV= 2cf97d8995aa8fdc4c05205d3d8b757f +PT= 3f911029d8b69ca1a323a277090b9c07 +CT= 44bb04c6253f3add454264ea97490475 +TEST= 296 +KEY= 3c315d70e356ae72c2eda1b05cb7d58d +IV= 44bb04c6253f3add454264ea97490475 +PT= 9d7724efd1ae76904458ef1360953aa4 +CT= 5d6f876e4fdd6921b243eb1f6ef50f82 +TEST= 297 +KEY= 615eda1eac8bc75370ae4aaf3242da0f +IV= 5d6f876e4fdd6921b243eb1f6ef50f82 +PT= 44a26554fe355d95706431b344701b03 +CT= 5f3226b39df230163d2c474f04bad36e +TEST= 298 +KEY= 3e6cfcad3179f7454d820de036f80961 +IV= 5f3226b39df230163d2c474f04bad36e +PT= 5d8b62c8cd3b04451a599989f3165530 +CT= a247cf8e1d8f480da4155da846a2b64e +TEST= 299 +KEY= 9c2b33232cf6bf48e9975048705abf2f +IV= a247cf8e1d8f480da4155da846a2b64e +PT= 610d3798e62e9338d5987bac82d48cd7 +CT= 2a92b5aaea43cfbaa62842dee7f43a19 +TEST= 300 +KEY= b6b98689c6b570f24fbf129697ae8536 +IV= 2a92b5aaea43cfbaa62842dee7f43a19 +PT= f77943aa429bccc5253156474e719389 +CT= 7d475aff824080e9c95d4e49d4f5090d +TEST= 301 +KEY= cbfedc7644f5f01b86e25cdf435b8c3b +IV= 7d475aff824080e9c95d4e49d4f5090d +PT= 5e6269d157164b2c544d3052e9db8553 +CT= ad4628b05f5a765e557015b4a41505ea +TEST= 302 +KEY= 66b8f4c61baf8645d392496be74e89d1 +IV= ad4628b05f5a765e557015b4a41505ea +PT= 77126bd6c08a094981fec9e2de91b2bf +CT= 59c24f269e3884a4f8e3f9fb05bf448f +TEST= 303 +KEY= 3f7abbe0859702e12b71b090e2f1cd5e +IV= 59c24f269e3884a4f8e3f9fb05bf448f +PT= 7775f90d2189e91b75ab8ad93c0d44f2 +CT= b72873115d4761b8baeb5b5892b79df8 +TEST= 304 +KEY= 8852c8f1d8d06359919aebc8704650a6 +IV= b72873115d4761b8baeb5b5892b79df8 +PT= 03d9c45a2a152adaa53e1d42ab33555b +CT= fe0c3f22e6b467dc1c628c928d03db5b +TEST= 305 +KEY= 765ef7d33e6404858df8675afd458bfd +IV= fe0c3f22e6b467dc1c628c928d03db5b +PT= 279791ac4189634a6066bcdcaa2ef9b4 +CT= 7f3abba943c8e3ef19c3ba2c98c9685f +TEST= 306 +KEY= 09644c7a7dace76a943bdd76658ce3a2 +IV= 7f3abba943c8e3ef19c3ba2c98c9685f +PT= e46e5fb6019ba52524a383a18a89583a +CT= c96d250343b134241221490ab39931db +TEST= 307 +KEY= c00969793e1dd34e861a947cd615d279 +IV= c96d250343b134241221490ab39931db +PT= a3a544b8982c2f9ea0cd0abc4d6392e2 +CT= 951d54aabdf6f5b70e700c4896eb2685 +TEST= 308 +KEY= 55143dd383eb26f9886a983440fef4fc +IV= 951d54aabdf6f5b70e700c4896eb2685 +PT= 43feb2051478a02ba1f054c9e82f0209 +CT= 1f90165be29c6c86d09ad07b1c006ca6 +TEST= 309 +KEY= 4a842b8861774a7f58f0484f5cfe985a +IV= 1f90165be29c6c86d09ad07b1c006ca6 +PT= 558ad95b25bab5205fb7e529c96e5b59 +CT= 40c0a0427c12ab1f72a7adf96f82d437 +TEST= 310 +KEY= 0a448bca1d65e1602a57e5b6337c4c6d +IV= 40c0a0427c12ab1f72a7adf96f82d437 +PT= baba13a1244deff5e4a2ab8183775773 +CT= fb08fdf3bf4394ba1a92c45b7f5f3060 +TEST= 311 +KEY= f14c7639a22675da30c521ed4c237c0d +IV= fb08fdf3bf4394ba1a92c45b7f5f3060 +PT= 46e036eccdbe88931e552e45cbbc2bdc +CT= 311ae8c2b7cb633178874bdeeee0602f +TEST= 312 +KEY= c0569efb15ed16eb48426a33a2c31c22 +IV= 311ae8c2b7cb633178874bdeeee0602f +PT= 4d5c919959478ad0d9862ba509233102 +CT= 1dc85d9a8877c79698c7d1c1610cbae9 +TEST= 313 +KEY= dd9ec3619d9ad17dd085bbf2c3cfa6cb +IV= 1dc85d9a8877c79698c7d1c1610cbae9 +PT= d423e31e9fd6e4f4373fa7ad31cc6011 +CT= fc55e7bea15bd539edacb202f0218d4a +TEST= 314 +KEY= 21cb24df3cc104443d2909f033ee2b81 +IV= fc55e7bea15bd539edacb202f0218d4a +PT= 52c2c696a4343c0f280a3bc8f6aa19ea +CT= ffd9fecd3a4ec194568a96c5a899e8d2 +TEST= 315 +KEY= de12da12068fc5d06ba39f359b77c353 +IV= ffd9fecd3a4ec194568a96c5a899e8d2 +PT= 3b2266fab514211e8e33afa566898083 +CT= dc1a545f354365a0002180bacce0ad25 +TEST= 316 +KEY= 02088e4d33cca0706b821f8f57976e76 +IV= dc1a545f354365a0002180bacce0ad25 +PT= dc20e6bd8b8ac822cf2b505e580e6a80 +CT= 51cf4c11f15b8b565b875f769c2fd37f +TEST= 317 +KEY= 53c7c25cc2972b26300540f9cbb8bd09 +IV= 51cf4c11f15b8b565b875f769c2fd37f +PT= 67b4c3e2afc3402901549265186303fb +CT= a118b7e5b10dab4ddb449877ab1e6897 +TEST= 318 +KEY= f2df75b9739a806beb41d88e60a6d59e +IV= a118b7e5b10dab4ddb449877ab1e6897 +PT= 971952ee322cd68462b4ce8b772bba48 +CT= a2988aac94d8a7efb32b34cc07911f3e +TEST= 319 +KEY= 5047ff15e7422784586aec426737caa0 +IV= a2988aac94d8a7efb32b34cc07911f3e +PT= 64c2665506edded98ec55d2cced7762c +CT= 86aeb7b90565d05293a8d9146880c307 +TEST= 320 +KEY= d6e948ace227f7d6cbc235560fb709a7 +IV= 86aeb7b90565d05293a8d9146880c307 +PT= a5e7e411209dd2a34aa8cda3153a69e4 +CT= 27746442fac1df26b11a55251aafd865 +TEST= 321 +KEY= f19d2cee18e628f07ad860731518d1c2 +IV= 27746442fac1df26b11a55251aafd865 +PT= 83a41ef5f664a909bc47939d7858c221 +CT= 619a164c3f2119ffca3832a5ea958e01 +TEST= 322 +KEY= 90073aa227c7310fb0e052d6ff8d5fc3 +IV= 619a164c3f2119ffca3832a5ea958e01 +PT= 1f5a31ebb2c515728db07ee3160d03cd +CT= dee1692d386ef5a8861be5d8a4630906 +TEST= 323 +KEY= 4ee6538f1fa9c4a736fbb70e5bee56c5 +IV= dee1692d386ef5a8861be5d8a4630906 +PT= 297b343f5ee6221fb6cc40e0c836b387 +CT= b2ba45b0a776a950c32dd5f302201fc3 +TEST= 324 +KEY= fc5c163fb8df6df7f5d662fd59ce4906 +IV= b2ba45b0a776a950c32dd5f302201fc3 +PT= cc3601dc94b13116df3012860a522d2d +CT= 6d141746b23b4e1ef20dfe6c14d6ece4 +TEST= 325 +KEY= 914801790ae423e907db9c914d18a5e2 +IV= 6d141746b23b4e1ef20dfe6c14d6ece4 +PT= fe07da9a6e8b712b1fdfc3c1cc87146d +CT= 0d80e8f5557a88a271133f8929125c72 +TEST= 326 +KEY= 9cc8e98c5f9eab4b76c8a318640af990 +IV= 0d80e8f5557a88a271133f8929125c72 +PT= ebdc0192755a685d6275532e93d33890 +CT= b88a629a8e22a78baf98c9e623f48134 +TEST= 327 +KEY= 24428b16d1bc0cc0d9506afe47fe78a4 +IV= b88a629a8e22a78baf98c9e623f48134 +PT= 78ad3067be2e9536adb58da49d7ca6da +CT= 0a9c2d318240f4fa4ff91cc5d23a371f +TEST= 328 +KEY= 2edea62753fcf83a96a9763b95c44fbb +IV= 0a9c2d318240f4fa4ff91cc5d23a371f +PT= 04c72a08ccc36b4211afe98637c4ceff +CT= a42618a89b9e618ddd7a983081e086b9 +TEST= 329 +KEY= 8af8be8fc86299b74bd3ee0b1424c902 +IV= a42618a89b9e618ddd7a983081e086b9 +PT= 22d4a346027b8e5fee1c0c0c45ca7dcb +CT= 7cc4479ae05a295723f27545e1a46b7b +TEST= 330 +KEY= f63cf9152838b0e068219b4ef580a279 +IV= 7cc4479ae05a295723f27545e1a46b7b +PT= 05090a5c8f3cd0e7f7ea11b33cdf3c1d +CT= 815bceb2a29ea2a491c8e39b117790ec +TEST= 331 +KEY= 776737a78aa61244f9e978d5e4f73295 +IV= 815bceb2a29ea2a491c8e39b117790ec +PT= 7b40f8a4ac0e4c6bd73a59ffc91ca77d +CT= e4ed412f3ecdd4b7409beeaedc2c755f +TEST= 332 +KEY= 938a7688b46bc6f3b972967b38db47ca +IV= e4ed412f3ecdd4b7409beeaedc2c755f +PT= 047e2e4681a97ed20308f1fe4b132f7b +CT= 10153209aed4115329587180d65a0b97 +TEST= 333 +KEY= 839f44811abfd7a0902ae7fbee814c5d +IV= 10153209aed4115329587180d65a0b97 +PT= 32671e6c0d28744ab457587bbb6dd21e +CT= 847f781edf77a870c4ea99ccc1721917 +TEST= 334 +KEY= 07e03c9fc5c87fd054c07e372ff3554a +IV= 847f781edf77a870c4ea99ccc1721917 +PT= ec3159b002b95054f00d57049d91e32b +CT= 05cc06529764f6747fcb2b62569c428c +TEST= 335 +KEY= 022c3acd52ac89a42b0b5555796f17c6 +IV= 05cc06529764f6747fcb2b62569c428c +PT= 9a930743113957d10ec643d8d8034c73 +CT= d1c7957073c2a44d9483dd11f3fa2b1e +TEST= 336 +KEY= d3ebafbd216e2de9bf8888448a953cd8 +IV= d1c7957073c2a44d9483dd11f3fa2b1e +PT= 2e061a5b483d0d834d3019954e54cf80 +CT= 0ac3300c59db7a76a1e16dc5bf167b70 +TEST= 337 +KEY= d9289fb178b5579f1e69e581358347a8 +IV= 0ac3300c59db7a76a1e16dc5bf167b70 +PT= 2a6e00df7820913341d26ef611a7bec1 +CT= 5a5a1be396d3c56db0690b92a925d8d8 +TEST= 338 +KEY= 83728452ee6692f2ae00ee139ca69f70 +IV= 5a5a1be396d3c56db0690b92a925d8d8 +PT= e871c79ba6132f15c80a85f4bc732e77 +CT= 829aba07496e1269437680257308029d +TEST= 339 +KEY= 01e83e55a708809bed766e36efae9ded +IV= 829aba07496e1269437680257308029d +PT= 5955643ab76251e6af97bc2490d09a72 +CT= 3fedbf80b703d067126ef55b02a41175 +TEST= 340 +KEY= 3e0581d5100b50fcff189b6ded0a8c98 +IV= 3fedbf80b703d067126ef55b02a41175 +PT= 32bcf86eca6cce8f9c1c87ad9fdf8238 +CT= b59d6c5fca91edbfe75e795638cad286 +TEST= 341 +KEY= 8b98ed8ada9abd431846e23bd5c05e1e +IV= b59d6c5fca91edbfe75e795638cad286 +PT= 01a08051fc1d98c1bdae4ca1d41d91e6 +CT= 21cb8ef8bbe6c371a26bff92701c3d1a +TEST= 342 +KEY= aa536372617c7e32ba2d1da9a5dc6304 +IV= 21cb8ef8bbe6c371a26bff92701c3d1a +PT= 5f5d891df8d595d3fedaef0174b0a1d1 +CT= 23d0fb6489113d3d4aa6470210698391 +TEST= 343 +KEY= 89839816e86d430ff08b5aabb5b5e095 +IV= 23d0fb6489113d3d4aa6470210698391 +PT= 54feab37efcd36d28e943dd85e803812 +CT= 45f0556ed9a8ed0e1c8b0a0ba648e069 +TEST= 344 +KEY= cc73cd7831c5ae01ec0050a013fd00fc +IV= 45f0556ed9a8ed0e1c8b0a0ba648e069 +PT= 7af4bc398acad37f526bde12f3ed59ed +CT= c41e115ee06ffe5ded10480a1be5b720 +TEST= 345 +KEY= 086ddc26d1aa505c011018aa0818b7dc +IV= c41e115ee06ffe5ded10480a1be5b720 +PT= cf15e4b6ddf60a4ee0cb6cbfa8ad499b +CT= 1098a41e2c97c9d70626e4d1841f5cc1 +TEST= 346 +KEY= 18f57838fd3d998b0736fc7b8c07eb1d +IV= 1098a41e2c97c9d70626e4d1841f5cc1 +PT= bad4050a0013ab8bc556f367ab634d94 +CT= d9b58211eb935246a5e04fcd3be10b54 +TEST= 347 +KEY= c140fa2916aecbcda2d6b3b6b7e6e049 +IV= d9b58211eb935246a5e04fcd3be10b54 +PT= ceff0af7ef4ea7ef3b0e8bf7fb756e77 +CT= 50fae8c770ef7f9d5fe93b090b9d5c66 +TEST= 348 +KEY= 91ba12ee6641b450fd3f88bfbc7bbc2f +IV= 50fae8c770ef7f9d5fe93b090b9d5c66 +PT= 3b8c412b4156b413ad06cb181b4c5eaa +CT= e47249d4b5f24ff415b0e669ebf471b1 +TEST= 349 +KEY= 75c85b3ad3b3fba4e88f6ed6578fcd9e +IV= e47249d4b5f24ff415b0e669ebf471b1 +PT= 56c612c5c594cafb7b1ce8131e786df0 +CT= 6af057199c217eecb886d940f61b91c5 +TEST= 350 +KEY= 1f380c234f9285485009b796a1945c5b +IV= 6af057199c217eecb886d940f61b91c5 +PT= 5629ef768743ab63d5b79b511c0a6bef +CT= a5a76c330984d34310d021a6c2bde9bc +TEST= 351 +KEY= ba9f60104616560b40d996306329b5e7 +IV= a5a76c330984d34310d021a6c2bde9bc +PT= ed8df427a02692c09d7aaef2edaa1249 +CT= 8aaefba5de0aaa41d947e3238b279913 +TEST= 352 +KEY= 30319bb5981cfc4a999e7513e80e2cf4 +IV= 8aaefba5de0aaa41d947e3238b279913 +PT= 949339605f30310fc557f2ca4815b034 +CT= 9408bcb67ea573e7b5359b67918c16b9 +TEST= 353 +KEY= a4392703e6b98fad2cabee7479823a4d +IV= 9408bcb67ea573e7b5359b67918c16b9 +PT= 03607642cbbcca2134837ac4bb452682 +CT= 90660af3dd0eac1b61bb60eb49408586 +TEST= 354 +KEY= 345f2df03bb723b64d108e9f30c2bfcb +IV= 90660af3dd0eac1b61bb60eb49408586 +PT= de00e32930e14bd4297f9d789d0c25a1 +CT= 1c48ac020174c0d87443229c113e2838 +TEST= 355 +KEY= 281781f23ac3e36e3953ac0321fc97f3 +IV= 1c48ac020174c0d87443229c113e2838 +PT= 9ca7a04855f8404176d7d30b594b65ac +CT= 7accb3fd4f9c7a5bfb83a969eb6d211a +TEST= 356 +KEY= 52db320f755f9935c2d0056aca91b6e9 +IV= 7accb3fd4f9c7a5bfb83a969eb6d211a +PT= dc0b392e998a347ecb789a51a09f1b1d +CT= 22bed79ef2caff83be8cee5d7001de21 +TEST= 357 +KEY= 7065e591879566b67c5ceb37ba9068c8 +IV= 22bed79ef2caff83be8cee5d7001de21 +PT= 07210334590a9314031d98f7dfbb84b9 +CT= 44b16879886bc331407d1e7c7f247a04 +TEST= 358 +KEY= 34d48de80ffea5873c21f54bc5b412cc +IV= 44b16879886bc331407d1e7c7f247a04 +PT= 27ddf18405e56989e59ed442c8825dd6 +CT= 2787ad57159450916a45c72d0e074d53 +TEST= 359 +KEY= 135320bf1a6af51656643266cbb35f9f +IV= 2787ad57159450916a45c72d0e074d53 +PT= 4f43202a454bb0f3a9440da558bee228 +CT= 3c1b83c66ceeeb27644bc66acc3117e8 +TEST= 360 +KEY= 2f48a37976841e31322ff40c07824877 +IV= 3c1b83c66ceeeb27644bc66acc3117e8 +PT= 28ed6a88bde4adefda5c0f629109a7a3 +CT= b6009481f8c5d3ee37c645cf238238a1 +TEST= 361 +KEY= 994837f88e41cddf05e9b1c3240070d6 +IV= b6009481f8c5d3ee37c645cf238238a1 +PT= 48dc5a3700cd4a7a9b066dc0e2667544 +CT= c1a20854601d7a81cac51e9237bdc030 +TEST= 362 +KEY= 58ea3facee5cb75ecf2caf5113bdb0e6 +IV= c1a20854601d7a81cac51e9237bdc030 +PT= 1f84c71120b50fdf715b60db69decbe0 +CT= 663edb4efd3f6ac2259a43c926ace66d +TEST= 363 +KEY= 3ed4e4e21363dd9ceab6ec983511568b +IV= 663edb4efd3f6ac2259a43c926ace66d +PT= d6f9c59367a57e1dbdc2f4627524bc9a +CT= ca84a10f987212d75b744a7966abbaba +TEST= 364 +KEY= f45045ed8b11cf4bb1c2a6e153baec31 +IV= ca84a10f987212d75b744a7966abbaba +PT= 1d8bc84060844ce5c40c716f2190c2bb +CT= abaeeb339c4d150e894392444e021710 +TEST= 365 +KEY= 5ffeaede175cda45388134a51db8fb21 +IV= abaeeb339c4d150e894392444e021710 +PT= 1300843aabcfb110198f0f0102c0a4d5 +CT= dba9a1f8ee9ab8300d0273f71eac5d1c +TEST= 366 +KEY= 84570f26f9c66275358347520314a63d +IV= dba9a1f8ee9ab8300d0273f71eac5d1c +PT= 1ea11b05d7da9d770ba9ab619267b7a3 +CT= 4921f1cb4a9aa6594c205d8ff0b2dec9 +TEST= 367 +KEY= cd76feedb35cc42c79a31addf3a678f4 +IV= 4921f1cb4a9aa6594c205d8ff0b2dec9 +PT= 9aba414156563e88a8ccdb3bd226f66c +CT= 4cf623ac6e145e2d61cad28bfbf1f1e5 +TEST= 368 +KEY= 8180dd41dd489a011869c85608578911 +IV= 4cf623ac6e145e2d61cad28bfbf1f1e5 +PT= fef20625fa0c788db8a20298f6933f6f +CT= 67c491a5ca1a065980bdece44b7979f1 +TEST= 369 +KEY= e6444ce417529c5898d424b2432ef0e0 +IV= 67c491a5ca1a065980bdece44b7979f1 +PT= 79c4a475d0e064d72d48af6357a0e6a0 +CT= 529766cdd1223ed05c055108f91e6526 +TEST= 370 +KEY= b4d32a29c670a288c4d175baba3095c6 +IV= 529766cdd1223ed05c055108f91e6526 +PT= 0758aa9195ae8684b9feebef8e1226ae +CT= 2aec009219ecd0499dd729352c220e7d +TEST= 371 +KEY= 9e3f2abbdf9c72c159065c8f96129bbb +IV= 2aec009219ecd0499dd729352c220e7d +PT= 886713433798ab16e87a8ad3a8cd0c87 +CT= 0de2a7554e343b6ffc6d1ecf4a8af0dd +TEST= 372 +KEY= 93dd8dee91a849aea56b4240dc986b66 +IV= 0de2a7554e343b6ffc6d1ecf4a8af0dd +PT= 984e8ba3dffb4e9a1244d65bea7dc594 +CT= 8111340b4af2cd82ff15447143069276 +TEST= 373 +KEY= 12ccb9e5db5a842c5a7e06319f9ef910 +IV= 8111340b4af2cd82ff15447143069276 +PT= a4f6c8acf4f1050d11e42fef1b6c8b68 +CT= bb4693fa1399583eacb21d2675e6d156 +TEST= 374 +KEY= a98a2a1fc8c3dc12f6cc1b17ea782846 +IV= bb4693fa1399583eacb21d2675e6d156 +PT= c5dbe1a937d6ea2fdd9a1a2fd25217b9 +CT= bc01b078339637d796f822b7e58d968d +TEST= 375 +KEY= 158b9a67fb55ebc5603439a00ff5becb +IV= bc01b078339637d796f822b7e58d968d +PT= dbd0494b0fe3149f8bcb8a70d344e811 +CT= 600c1efbdca314a6f9714dee413b9bd2 +TEST= 376 +KEY= 7587849c27f6ff639945744e4ece2519 +IV= 600c1efbdca314a6f9714dee413b9bd2 +PT= fca88dcb484317d7f886e7437bc9e669 +CT= 2e3788a647105dd0a286e2effd469c99 +TEST= 377 +KEY= 5bb00c3a60e6a2b33bc396a1b388b980 +IV= 2e3788a647105dd0a286e2effd469c99 +PT= 65af28e41b3da5ace3b2cc9a25ead28c +CT= 5411e48b57058a52c8560423bcffbcd2 +TEST= 378 +KEY= 0fa1e8b137e328e1f39592820f770552 +IV= 5411e48b57058a52c8560423bcffbcd2 +PT= 6dd82a9f1cf0a5134a76899b04be37d5 +CT= c3f69c8ed682bf252d5119d1695126e1 +TEST= 379 +KEY= cc57743fe16197c4dec48b53662623b3 +IV= c3f69c8ed682bf252d5119d1695126e1 +PT= de729ab3803144fd958d8597396bc8ed +CT= 0941b78975fd2945b4aa81e8c58e3cb2 +TEST= 380 +KEY= c516c3b6949cbe816a6e0abba3a81f01 +IV= 0941b78975fd2945b4aa81e8c58e3cb2 +PT= d8404e7a17254eb40683a8919a9563b4 +CT= bf647e0346c013e138a2f0b06e7bb142 +TEST= 381 +KEY= 7a72bdb5d25cad6052ccfa0bcdd3ae43 +IV= bf647e0346c013e138a2f0b06e7bb142 +PT= 214089ec2996ce9fa2bbfefbcac03509 +CT= afda67b9451ff758cc87bbd93c7d4be4 +TEST= 382 +KEY= d5a8da0c97435a389e4b41d2f1aee5a7 +IV= afda67b9451ff758cc87bbd93c7d4be4 +PT= 9406e9d4fb4592a609bbdb23ce5f9d7f +CT= b18202e4ca510695540371a8b6523616 +TEST= 383 +KEY= 642ad8e85d125cadca48307a47fcd3b1 +IV= b18202e4ca510695540371a8b6523616 +PT= fee45be0503b4093747afcea9881d30d +CT= 64e149a4a1840f93d675b041ed81d45a +TEST= 384 +KEY= 00cb914cfc96533e1c3d803baa7d07eb +IV= 64e149a4a1840f93d675b041ed81d45a +PT= 880368d5609350167c7826da30dcff59 +CT= 65a363e9837dfbbda2688e6f4fbe6c35 +TEST= 385 +KEY= 6568f2a57feba883be550e54e5c36bde +IV= 65a363e9837dfbbda2688e6f4fbe6c35 +PT= 29c5940d09a8723b441fc469c909813a +CT= 2a47fdf5bf600891df4d9e8aa34748ba +TEST= 386 +KEY= 4f2f0f50c08ba012611890de46842364 +IV= 2a47fdf5bf600891df4d9e8aa34748ba +PT= 20af0ff7bac0f468c12bd2816a8b1620 +CT= 68a637e4b94ec150c84a6ebb005bb79b +TEST= 387 +KEY= 278938b479c56142a952fe6546df94ff +IV= 68a637e4b94ec150c84a6ebb005bb79b +PT= 42906d013a3f0a426b01b489eca6cad7 +CT= a090ca02fcd40f01ca0d1a699e30c164 +TEST= 388 +KEY= 8719f2b685116e43635fe40cd8ef559b +IV= a090ca02fcd40f01ca0d1a699e30c164 +PT= 05a02d4d7d90bca74ece791cd865cb88 +CT= f70109f0ebba56959b3013565e2bdffc +TEST= 389 +KEY= 7018fb466eab38d6f86ff75a86c48a67 +IV= f70109f0ebba56959b3013565e2bdffc +PT= c373ab7b8f770212f9d5cef40099086c +CT= 67221cc1f104809b8a5d35431963812d +TEST= 390 +KEY= 173ae7879fafb84d7232c2199fa70b4a +IV= 67221cc1f104809b8a5d35431963812d +PT= 8c59b2a7fd50ec66abacc0531be33237 +CT= e06166175f68155db86e268f3c5524ae +TEST= 391 +KEY= f75b8190c0c7ad10ca5ce496a3f22fe4 +IV= e06166175f68155db86e268f3c5524ae +PT= d39790aed2970355a6337aad2ca4d501 +CT= 85e89883242a3b68f4aaf922646eb385 +TEST= 392 +KEY= 72b31913e4ed96783ef61db4c79c9c61 +IV= 85e89883242a3b68f4aaf922646eb385 +PT= 87d4160c7c97476d0884a22b5983aa65 +CT= 038c79fdfaa0b4f4ad9dc336f46cacdf +TEST= 393 +KEY= 713f60ee1e4d228c936bde8233f030be +IV= 038c79fdfaa0b4f4ad9dc336f46cacdf +PT= 3b59088b5adc77e4b3fc31897c6389b5 +CT= f6c92ecb3332e5e93c9de29f27f94bb3 +TEST= 394 +KEY= 87f64e252d7fc765aff63c1d14097b0d +IV= f6c92ecb3332e5e93c9de29f27f94bb3 +PT= 68ba9bebb40b3e35d2e577a2831cf9db +CT= 7b72342488233dad5acf0a8d54ea9e8b +TEST= 395 +KEY= fc847a01a55cfac8f539369040e3e586 +IV= 7b72342488233dad5acf0a8d54ea9e8b +PT= 7816251219b8c7f009add7a1898d02cf +CT= 45cba66ad6045917c3e8257d3ecbecdb +TEST= 396 +KEY= b94fdc6b7358a3df36d113ed7e28095d +IV= 45cba66ad6045917c3e8257d3ecbecdb +PT= f542feab12e2ea9ae761e58108784e37 +CT= 82e289465f5838036b9880c33aebcb83 +TEST= 397 +KEY= 3bad552d2c009bdc5d49932e44c3c2de +IV= 82e289465f5838036b9880c33aebcb83 +PT= 3b8208791dae56383cc2bcb44097c9d3 +CT= f02f2b89de46d01f46ad95c82af0c20e +TEST= 398 +KEY= cb827ea4f2464bc31be406e66e3300d0 +IV= f02f2b89de46d01f46ad95c82af0c20e +PT= 3f2c0f7a0aeab04f318c661abcfed153 +CT= 8d4faf6332578524301aca22ad86965b +TEST= 399 +KEY= 46cdd1c7c011cee72bfeccc4c3b5968b +IV= 8d4faf6332578524301aca22ad86965b +PT= a27200b51d69aac22f1c567f8bceabfa +CT= 2f844cbf78eba70da7a49601388f1ab6 diff --git a/flint/test/testvals/cbcme46.txt b/flint/test/testvals/cbcme46.txt new file mode 100644 index 0000000..5343cbf --- /dev/null +++ b/flint/test/testvals/cbcme46.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 00000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= 7bd966d53ad8c1bb85d2adfae87bb104 +TEST= 1 +KEY= 506339dae3b35beb7bd966d53ad8c1bb85d2adfae87bb104 +IV= 7bd966d53ad8c1bb85d2adfae87bb104 +PT= 0555c410f44c7aa4506339dae3b35beb +CT= 869c061be9cfeab5d285b0724a9a8970 +TEST= 2 +KEY= 74d3414c2374367bfd4560ced3172b0e57571d88a2e13874 +IV= 869c061be9cfeab5d285b0724a9a8970 +PT= c6fb25a188cf7f3f24b07896c0c76d90 +CT= 9e58a52b3840dbe16e8063a18220fee4 +TEST= 3 +KEY= dde2df4eec312fa3631dc5e5eb57f0ef39d77e2920c1c690 +IV= 9e58a52b3840dbe16e8063a18220fee4 +PT= 84e3d4168a8469a6a9319e02cf4519d8 +CT= 730a256c202b9d57f3c0d73ad4b6cbed +TEST= 4 +KEY= 9d973aecaf19e9951017e089cb7c6db8ca17a913f4770d7d +IV= 730a256c202b9d57f3c0d73ad4b6cbed +PT= e000ce26cd3185b44075e5a24328c636 +CT= e79ef11c5c1fd1ab75280bcffcfe89d4 +TEST= 5 +KEY= 7a52007b2c40c9f4f78911959763bc13bf3fa2dc088984a9 +IV= e79ef11c5c1fd1ab75280bcffcfe89d4 +PT= 19d79403bb238816e7c53a9783592061 +CT= 65744444724f1052d0b8674edc8083b5 +TEST= 6 +KEY= 40d50426a8d09f3292fd55d1e52cac416f87c592d409071c +IV= 65744444724f1052d0b8674edc8083b5 +PT= fdfa33685e2b5bbc3a87045d849056c6 +CT= 23c6377d3d076491ad93e2b6112289c7 +TEST= 7 +KEY= 6fd062412fe1ae4eb13b62acd82bc8d0c2142724c52b8edb +IV= 23c6377d3d076491ad93e2b6112289c7 +PT= 5056dddef15831502f0566678731317c +CT= f13a83088536bf30e5e9018be57d7d89 +TEST= 8 +KEY= eb4db5f469d0ee9b4001e1a45d1d77e027fd26af2056f352 +IV= f13a83088536bf30e5e9018be57d7d89 +PT= 0ee535a4a524668f849dd7b5463140d5 +CT= 3f496cb19b21c37159528bf345473e6d +TEST= 9 +KEY= aa6e5744b909d9a87f488d15c63cb4917eafad5c6511cd3f +IV= 3f496cb19b21c37159528bf345473e6d +PT= 3a11f90eb51c81ed4123e2b0d0d93733 +CT= cf79c1edee17a68dc7e673006aec90d9 +TEST= 10 +KEY= 64ab0c0c9471b77fb0314cf8282b121cb949de5c0ffd5de6 +IV= cf79c1edee17a68dc7e673006aec90d9 +PT= 85187e7f91280a5bcec55b482d786ed7 +CT= 92d1757bebce6e0406407819af82353f +TEST= 11 +KEY= 9e5720c1dc2e285c22e03983c3e57c18bf09a645a07f68d9 +IV= 92d1757bebce6e0406407819af82353f +PT= 45147511bc08ec76fafc2ccd485f9f23 +CT= 8c0228f57523d746e67d27a8e6c426d9 +TEST= 12 +KEY= ebbb8245582e4367aee21176b6c6ab5e597481ed46bb4e00 +IV= 8c0228f57523d746e67d27a8e6c426d9 +PT= 73b9eeac644cbb8875eca28484006b3b +CT= d0025bf1fc35dd9bda20f42df775af71 +TEST= 13 +KEY= 5f938ee9cc63c9e87ee04a874af376c5835475c0b1cee171 +IV= d0025bf1fc35dd9bda20f42df775af71 +PT= de2507f01bc8b212b4280cac944d8a8f +CT= 3fddd3e04b2cbe79bb07d82182cd3787 +TEST= 14 +KEY= b94e2ec5f6e86edc413d996701dfc8bc3853ade13303d6f6 +IV= 3fddd3e04b2cbe79bb07d82182cd3787 +PT= 90ce32bcc16c20f7e6dda02c3a8ba734 +CT= f7b491e4c40b60be8acf16d68e3ed60f +TEST= 15 +KEY= de41abd8c44f5df6b6890883c5d4a802b29cbb37bd3d00f9 +IV= f7b491e4c40b60be8acf16d68e3ed60f +PT= b7acca62bb9974bc670f851d32a7332a +CT= 7ed4055d367cb31a4cf1cc17132e00b5 +TEST= 16 +KEY= e2a57c71f23bc4dec85d0ddef3a81b18fe6d7720ae13004c +IV= 7ed4055d367cb31a4cf1cc17132e00b5 +PT= 1ca59c2384797b803ce4d7a936749928 +CT= 8d50a87f14d466323929bb52fa60fa42 +TEST= 17 +KEY= 2fa1a78b8bcc301c450da5a1e77c7d2ac744cc725473fa0e +IV= 8d50a87f14d466323929bb52fa60fa42 +PT= 0a623319f2a051accd04dbfa79f7f4c2 +CT= 7c02d378606fc33dfcef8aa2a000383e +TEST= 18 +KEY= a949ce493892df58390f76d98713be173bab46d0f473c230 +IV= 7c02d378606fc33dfcef8aa2a000383e +PT= ee8f5ff6a7ff813386e869c2b35eef44 +CT= cae55b9ccbb5a68ebf0d2ab55e079fd4 +TEST= 19 +KEY= e159445fe4201a6cf3ea2d454ca6189984a66c65aa745de4 +IV= cae55b9ccbb5a68ebf0d2ab55e079fd4 +PT= 9699456986535c4648108a16dcb2c534 +CT= 9056685fbfecc7a6143db5ac314dac88 +TEST= 20 +KEY= ee4f7bf96bf1163e63bc451af34adf3f909bd9c99b39f16c +IV= 9056685fbfecc7a6143db5ac314dac88 +PT= 16d6c34c3b57ac0a0f163fa68fd10c52 +CT= 4d6a5542f0680ce37e88119141f321f5 +TEST= 21 +KEY= 27f8cee0120e8a0f2ed610580322d3dcee13c858dacad099 +IV= 4d6a5542f0680ce37e88119141f321f5 +PT= 337839926e36ec77c9b7b51979ff9c31 +CT= 78e16d6027f0d190e78825c2f52e5364 +TEST= 22 +KEY= 0af4d3d8eb9ff18a56377d3824d2024c099bed9a2fe483fd +IV= 78e16d6027f0d190e78825c2f52e5364 +PT= 8f96b66f934467c72d0c1d38f9917b85 +CT= 82a81b33f80a105dd7d9cc6ddfecdb96 +TEST= 23 +KEY= ad2afc821170d967d49f660bdcd81211de4221f7f008586b +IV= 82a81b33f80a105dd7d9cc6ddfecdb96 +PT= e2cb8e6e329c6660a7de2f5afaef28ed +CT= 0bcd68a063ba3540b3e04c885df45bd0 +TEST= 24 +KEY= 5b50ee72bd6ce837df520eabbf6227516da26d7fadfc03bb +IV= 0bcd68a063ba3540b3e04c885df45bd0 +PT= 31a14c64cd8bcc8ff67a12f0ac1c3150 +CT= db27ea5834bf572ea50e03e0773c1010 +TEST= 25 +KEY= bf4d8a58f54d47620475e4f38bdd707fc8ac6e9fdac013ab +IV= db27ea5834bf572ea50e03e0773c1010 +PT= 26755b5c0be60998e41d642a4821af55 +CT= 655a896243b5e86b2f74299a317a2e4c +TEST= 26 +KEY= 8dc190d88b17eab9612f6d91c8689814e7d84705ebba3de7 +IV= 655a896243b5e86b2f74299a317a2e4c +PT= c6920adced82f661328c1a807e5aaddb +CT= 9f45472fdbb732c745ad228810392ea2 +TEST= 27 +KEY= b44071c6f14cda97fe6a2abe13dfaad3a275658dfb831345 +IV= 9f45472fdbb732c745ad228810392ea2 +PT= 2178dfa9784e563e3981e11e7a5b302e +CT= 9f985fbf08235845e396bfce54bce7c8 +TEST= 28 +KEY= a3c12e42b53d829e61f275011bfcf29641e3da43af3ff48d +IV= 9f985fbf08235845e396bfce54bce7c8 +PT= 44977e2274da25ae17815f8444715809 +CT= 033eaf4fac934d123012279b1663c80b +TEST= 29 +KEY= 8fd2b79e25e39c4a62ccda4eb76fbf8471f1fdd8b95c3c86 +IV= 033eaf4fac934d123012279b1663c80b +PT= 425088d4626cd7972c1399dc90de1ed4 +CT= a962cb4707b0048bb81f4225efc85e48 +TEST= 30 +KEY= 3d68793ef46b8125cbae1109b0dfbb0fc9eebffd569462ce +IV= a962cb4707b0048bb81f4225efc85e48 +PT= ef21ed587c272175b2bacea0d1881d6f +CT= 6f3a0d63a22c003f7f65b09098f667db +TEST= 31 +KEY= 6a4fb651be9d0bafa4941c6a12f3bb30b68b0f6dce620515 +IV= 6f3a0d63a22c003f7f65b09098f667db +PT= 16054e60b460b2d15727cf6f4af68a8a +CT= 8bb46230ff03665765f2e5aaea14104f +TEST= 32 +KEY= 3f5991d63c15a1822f207e5aedf0dd67d379eac72476155a +IV= 8bb46230ff03665765f2e5aaea14104f +PT= 82d0b12fea88917f551627878288aa2d +CT= 8e1a664131fab09e786e111c3c20a7bb +TEST= 33 +KEY= 456f69d38929ed82a13a181bdc0a6df9ab17fbdb1856b2e1 +IV= 8e1a664131fab09e786e111c3c20a7bb +PT= 1384d3b7caeb528a7a36f805b53c4c00 +CT= 92d99bf1d71026d2bf78e32421e34e52 +TEST= 34 +KEY= 658891f63379484c33e383ea0b1a4b2b146f18ff39b5fcb3 +IV= 92d99bf1d71026d2bf78e32421e34e52 +PT= 9f60c3117269e88920e7f825ba50a5ce +CT= 7db6782c68ec5fc75a2a75e4ea7b4071 +TEST= 35 +KEY= 9193e2eace8423f64e55fbc663f614ec4e456d1bd3cebcc2 +IV= 7db6782c68ec5fc75a2a75e4ea7b4071 +PT= 232eca0370ebd920f41b731cfdfd6bba +CT= d76a1e73e977533e6d7c74277dafeb48 +TEST= 36 +KEY= f4c34fe273d0fcb5993fe5b58a8147d22339193cae61578a +IV= d76a1e73e977533e6d7c74277dafeb48 +PT= 5bcd8c6c4d14321f6550ad08bd54df43 +CT= 4a69e9081ddd43a6061700c7da8f5e73 +TEST= 37 +KEY= dc82c155896c5d5cd3560cbd975c0474252e19fb74ee09f9 +IV= 4a69e9081ddd43a6061700c7da8f5e73 +PT= c914bb961ea890d828418eb7fabca1e9 +CT= 91ee5be28c27f055258bc3e1f37e2dec +TEST= 38 +KEY= 08f1655ea3656f1c42b8575f1b7bf42100a5da1a87902415 +IV= 91ee5be28c27f055258bc3e1f37e2dec +PT= 11804f73d788115cd473a40b2a093240 +CT= 86b9be5afd2a8a49e2651c314cae0918 +TEST= 39 +KEY= 59d7efd92140a147c401e905e6517e68e2c0c62bcb3e2d0d +IV= 86b9be5afd2a8a49e2651c314cae0918 +PT= 6e2a1e436926174e51268a878225ce5b +CT= c642f5ed78db76738a89296b1c4a0932 +TEST= 40 +KEY= f6e75e7867d0fb4a02431ce89e8a081b6849ef40d774243f +IV= c642f5ed78db76738a89296b1c4a0932 +PT= 15896b8b864cf068af30b1a146905a0d +CT= 24288ae027547e499ebade9260c8f037 +TEST= 41 +KEY= 9a048c2bc98e15b2266b9608b9de7652f6f331d2b7bcd408 +IV= 24288ae027547e499ebade9260c8f037 +PT= ff9a330c205dc3006ce3d253ae5eeef8 +CT= bd9b3d670d24edda1ead1db06c8a83c7 +TEST= 42 +KEY= 97e8c017644e9fed9bf0ab6fb4fa9b88e85e2c62db3657cf +IV= bd9b3d670d24edda1ead1db06c8a83c7 +PT= c9a3916c34a7ccd90dec4c3cadc08a5f +CT= 1fccbc65c44e4680e1593ee0eefea9a9 +TEST= 43 +KEY= 3a2862113bd3312d843c170a70b4dd080907128235c8fe66 +IV= 1fccbc65c44e4680e1593ee0eefea9a9 +PT= eaf9c4a80ee93585adc0a2065f9daec0 +CT= 2c0004064936696b10d039d9795babc7 +TEST= 44 +KEY= 33fae356c0c96f17a83c130c3982b46319d72b5b4c9355a1 +IV= 2c0004064936696b10d039d9795babc7 +PT= 4181525880ca468909d28147fb1a5e3a +CT= 79f193eb9a9a48464ff007d73e9b4106 +TEST= 45 +KEY= 2136a7940c9b9fafd1cd80e7a318fc2556272c8c720814a7 +IV= 79f193eb9a9a48464ff007d73e9b4106 +PT= 2899d75dfb84950e12cc44c2cc52f0b8 +CT= da12307ce9a6ba0fce5a76ae1747e619 +TEST= 46 +KEY= 0c839679750274320bdfb09b4abe462a987d5a22654ff2be +IV= da12307ce9a6ba0fce5a76ae1747e619 +PT= 2c71b8623ca5bf292db531ed7999eb9d +CT= a59997fa19b58bc71cb05e7140386c94 +TEST= 47 +KEY= 4d3cdb92797645c1ae462761530bcded84cd045325779e2a +IV= a59997fa19b58bc71cb05e7140386c94 +PT= 63f4fc202a1b921241bf4deb0c7431f3 +CT= 49e65d7422398035dd1e4ebad37c699d +TEST= 48 +KEY= 38082d7cc27ebabbe7a07a1571324dd859d34ae9f60bf7b7 +IV= 49e65d7422398035dd1e4ebad37c699d +PT= 7f0e2fd5d4b5a0cb7534f6eebb08ff7a +CT= 64df24483fc73174fb6482a6e2b895e0 +TEST= 49 +KEY= 1557398cfbff31f8837f5e5d4ef57caca2b7c84f14b36257 +IV= 64df24483fc73174fb6482a6e2b895e0 +PT= 0f525fcf2a1e3d612d5f14f039818b43 +CT= 028880cc8aa1b92cb807f1102663e658 +TEST= 50 +KEY= 229c31f1d34a529581f7de91c454c5801ab0395f32d0840f +IV= 028880cc8aa1b92cb807f1102663e658 +PT= 219604b99ff2be7b37cb087d28b5636d +CT= fac8b66d1ba7849392cc235d0276110e +TEST= 51 +KEY= c75de76d40d536277b3f68fcdff34113887c1a0230a69501 +IV= fac8b66d1ba7849392cc235d0276110e +PT= 3319c80c038e565fe5c1d69c939f64b2 +CT= 79770f286419eefd855868ec4adf3775 +TEST= 52 +KEY= 5f0b08b451490b27024867d4bbeaafee0d2472ee7a79a274 +IV= 79770f286419eefd855868ec4adf3775 +PT= e173a8580816cafa9856efd9119c3d00 +CT= fc0aa487b09df657db58dbf83e13e137 +TEST= 53 +KEY= e86e8bfbf1d65541fe42c3530b7759b9d67ca916446a4343 +IV= fc0aa487b09df657db58dbf83e13e137 +PT= 01274c45f202c22cb765834fa09f5e66 +CT= 9691ea44fc67ca29e50e7ff7dbc4d0ca +TEST= 54 +KEY= 7849550ca6ccd87268d32917f71093903372d6e19fae9389 +IV= 9691ea44fc67ca29e50e7ff7dbc4d0ca +PT= 026bd493499b7ba99027def7571a8d33 +CT= 5206f7cf45a59fd6444ccbb6b034cf45 +TEST= 55 +KEY= 52d81d6104dbf6df3ad5ded8b2b50c46773e1d572f9a5ccc +IV= 5206f7cf45a59fd6444ccbb6b034cf45 +PT= 33ca15b3d921e7752a91486da2172ead +CT= f4a41d18e3ef9de46917badb1b5ec613 +TEST= 56 +KEY= 36fb680165abd632ce71c3c0515a91a21e29a78c34c49adf +IV= f4a41d18e3ef9de46917badb1b5ec613 +PT= 65f3084285aa869464237560617020ed +CT= 6c4154d3245d2546979118a36120a911 +TEST= 57 +KEY= 6e7548b98aa0640aa23097137507b4e489b8bf2f55e433ce +IV= 6c4154d3245d2546979118a36120a911 +PT= 6cf540f502d90886588e20b8ef0bb238 +CT= 2a52376a7e494adedd53a416f73fe9c0 +TEST= 58 +KEY= a0d840a0e3cc1ea58862a0790b4efe3a54eb1b39a2dbda0e +IV= 2a52376a7e494adedd53a416f73fe9c0 +PT= 708ae2375f305572cead0819696c7aaf +CT= 7a0ef052184147ea279839380b3dbb32 +TEST= 59 +KEY= 153cf68e4a1c1fcef26c502b130fb9d073732201a9e6613c +IV= 7a0ef052184147ea279839380b3dbb32 +PT= a8267215107d3dd0b5e4b62ea9d0016b +CT= f193b80d57571f94a4f5373149163aa1 +TEST= 60 +KEY= e0b0657a66c37d8703ffe8264458a644d7861530e0f05b9d +IV= f193b80d57571f94a4f5373149163aa1 +PT= ee4b04302cb02990f58c93f42cdf6249 +CT= a28e99815c930ac05ada4524a7e5968c +TEST= 61 +KEY= 94760f8a93926e4da17171a718cbac848d5c50144715cd11 +IV= a28e99815c930ac05ada4524a7e5968c +PT= 34d122b717cba59174c66af0f55113ca +CT= 6f9342e7915613450e823ec9a781daa3 +TEST= 62 +KEY= 0b352460a1579376cee23340899dbfc183de6edde09417b2 +IV= 6f9342e7915613450e823ec9a781daa3 +PT= d8689ed21f3ea8e29f432bea32c5fd3b +CT= 584bb944532a830f7f8dcdbe42e7dbfc +TEST= 63 +KEY= 999a5ceb73dfcc1796a98a04dab73ccefc53a363a273cc4e +IV= 584bb944532a830f7f8dcdbe42e7dbfc +PT= 4e87f73d46d0c0af92af788bd2885f61 +CT= 4ac372a4d3273c71f69d50168a9235a1 +TEST= 64 +KEY= 42c59ffd5aa69c11dc6af8a0099000bf0acef37528e1f9ef +IV= 4ac372a4d3273c71f69d50168a9235a1 +PT= 324dc9c2d34e95f9db5fc31629795006 +CT= 60e53cc2d5e4900d48a0c5f7ee3bc810 +TEST= 65 +KEY= 843ebdef0ceeba5bbc8fc462dc7490b2426e3682c6da31ff +IV= 60e53cc2d5e4900d48a0c5f7ee3bc810 +PT= 8b94f018a7115b3ac6fb22125648264a +CT= 4bd7df7dfd03a24809b751f59facf417 +TEST= 66 +KEY= 98e40853fa954ff5f7581b1f217732fa4bd967775976c5e8 +IV= 4bd7df7dfd03a24809b751f59facf417 +PT= 109c734ac21ed2631cdab5bcf67bf5ae +CT= b7a3cf7e58a413c5065e9cfd23c750f9 +TEST= 67 +KEY= 5419462c5329544a40fbd46179d3213f4d87fb8a7ab19511 +IV= b7a3cf7e58a413c5065e9cfd23c750f9 +PT= 8ca507accdb3a793ccfd4e7fa9bc1bbf +CT= 6285c3d0fd2645192c5dd046d73414ce +TEST= 68 +KEY= b58628819840885d227e17b184f5642661da2bccad8581df +IV= 6285c3d0fd2645192c5dd046d73414ce +PT= 7de48bad03bb9f53e19f6eadcb69dc17 +CT= 583fbceb09646cec19d00620e5455fd5 +TEST= 69 +KEY= 73f7f00ef22ed1b07a41ab5a8d9108ca780a2dec48c0de0a +IV= 583fbceb09646cec19d00620e5455fd5 +PT= 126d3f2a0bc1b168c671d88f6a6e59ed +CT= 886a5273055af7ae37efb726dc90fd9e +TEST= 70 +KEY= 69735f80f0b876daf22bf92988cbff644fe59aca94502394 +IV= 886a5273055af7ae37efb726dc90fd9e +PT= 0b4d3f58d83d866a1a84af8e0296a76a +CT= fd068f02bb6c2611ef78cd963ef2f78f +TEST= 71 +KEY= 92e5ff32d46494880f2d762b33a7d975a09d575caaa2d41b +IV= fd068f02bb6c2611ef78cd963ef2f78f +PT= 705667cbcc87bf3dfb96a0b224dce252 +CT= 34713fd3fa07f0b3f94ec0fb17bb465f +TEST= 72 +KEY= a0df9dcb873a1adc3b5c49f8c9a029c659d397a7bd199244 +IV= 34713fd3fa07f0b3f94ec0fb17bb465f +PT= 4bf66f55275d6cb3323a62f9535e8e54 +CT= 82c8a179661207b7fe178a266c607074 +TEST= 73 +KEY= 2d1604adaa49c3fbb994e881afb22e71a7c41d81d179e230 +IV= 82c8a179661207b7fe178a266c607074 +PT= 167203bbb933707a8dc999662d73d927 +CT= dcdbcc8d11c632cb220c6e95b399a1cc +TEST= 74 +KEY= 7d2c4b0c0d0b001a654f240cbe741cba85c8731462e043fc +IV= dcdbcc8d11c632cb220c6e95b399a1cc +PT= 668f998350bda831503a4fa1a742c3e1 +CT= 8827ebfcb24470266d5c0ba05d5974a4 +TEST= 75 +KEY= be3a4cf21186c2c7ed68cff00c306c9ce89478b43fb93758 +IV= 8827ebfcb24470266d5c0ba05d5974a4 +PT= b8d1d48f3c41094ec31607fe1c8dc2dd +CT= 61e59dece1aeffdeb9b216828953d70f +TEST= 76 +KEY= d0ce372842dc32508c8d521ced9e934251266e36b6eae057 +IV= 61e59dece1aeffdeb9b216828953d70f +PT= 49a4495257d08aa56ef47bda535af097 +CT= ecd04ffb385ccc1d13c312a5c31810de +TEST= 77 +KEY= e7274c14c4163169605d1de7d5c25f5f42e57c9375f2f089 +IV= ecd04ffb385ccc1d13c312a5c31810de +PT= 3eed6f60fd9050a737e97b3c86ca0339 +CT= d9c90455afbf5465f89752fb6f60bdff +TEST= 78 +KEY= 71e35a00cafb898bb99419b27a7d0b3aba722e681a924d76 +IV= d9c90455afbf5465f89752fb6f60bdff +PT= 5ce6e7f07945191396c416140eedb8e2 +CT= f6e795b326cfd6ccc0e230e4fe770878 +TEST= 79 +KEY= 79dfa388989b29204f738c015cb2ddf67a901e8ce4e5450e +IV= f6e795b326cfd6ccc0e230e4fe770878 +PT= 314a5784b7909f89083cf9885260a0ab +CT= 6b3a00f05f79f25e4e9eda81034a9b7b +TEST= 80 +KEY= 75f6d5983ae6d7ac24498cf103cb2fa8340ec40de7afde75 +IV= 6b3a00f05f79f25e4e9eda81034a9b7b +PT= dec42b1a6184fdf80c297610a27dfe8c +CT= 6a19bea8826427e309bd55bcbbe246b4 +TEST= 81 +KEY= e47eee65549bf1634e50325981af084b3db391b15c4d98c1 +IV= 6a19bea8826427e309bd55bcbbe246b4 +PT= 63c46cff49ff13b291883bfd6e7d26cf +CT= 738c0b0e580c0b1ed488dde8502cb754 +TEST= 82 +KEY= e6dbe45547556f403ddc3957d9a30355e93b4c590c612f95 +IV= 738c0b0e580c0b1ed488dde8502cb754 +PT= e951f5c902bd351502a50a3013ce9e23 +CT= 389e33f3dab3fab7b2acb853c0150b8d +TEST= 83 +KEY= eba5a1bdf9fc558905420aa40310f9e25b97f40acc742418 +IV= 389e33f3dab3fab7b2acb853c0150b8d +PT= 54efc45b4036b60d0d7e45e8bea93ac9 +CT= eacae8a4b5ccbdb28ed2162670dbd4b1 +TEST= 84 +KEY= b570945030615f75ef88e200b6dc4450d545e22cbcaff0a9 +IV= eacae8a4b5ccbdb28ed2162670dbd4b1 +PT= 7f3ba6fe23ae45665ed535edc99d0afc +CT= 535fea61623ecd22fa1a95bf95320252 +TEST= 85 +KEY= f332d3de8556f82ebcd70861d4e289722f5f7793299df2fb +IV= 535fea61623ecd22fa1a95bf95320252 +PT= 8feb6943b22437d34642478eb537a75b +CT= cd23d928e1d3221e4d3c51670c071276 +TEST= 86 +KEY= 1402d325d7eba90871f4d1493531ab6c626326f4259ae08d +IV= cd23d928e1d3221e4d3c51670c071276 +PT= 8b01ee4509b58b49e73000fb52bd5126 +CT= 56dc7f1be2cc26a369b3bca71bf8fab8 +TEST= 87 +KEY= 389c95dc5bf411b62728ae52d7fd8dcf0bd09a533e621a35 +IV= 56dc7f1be2cc26a369b3bca71bf8fab8 +PT= 9bfe561402b07b4c2c9e46f98c1fb8be +CT= a059cfb443009f0acd8e5051bd16c837 +TEST= 88 +KEY= 89180fbff0a12019877161e694fd12c5c65eca028374d202 +IV= a059cfb443009f0acd8e5051bd16c837 +PT= c8d55810c7a22e30b1849a63ab5531af +CT= 62ceb7d9a6d23b40cfd75990d1040ba4 +TEST= 89 +KEY= 08be01cf1e620dbee5bfd63f322f2985098993925270d9a6 +IV= 62ceb7d9a6d23b40cfd75990d1040ba4 +PT= f888764a970b03bc81a60e70eec32da7 +CT= f6d89003abbf003af013eb221af17f99 +TEST= 90 +KEY= 5eb9ac53fc544ade1367463c999029bff99a78b04881a63f +IV= f6d89003abbf003af013eb221af17f99 +PT= 26a25cfc1e699d8b5607ad9ce2364760 +CT= 74c9e920dc16396e89774b82e7803ef5 +TEST= 91 +KEY= d8fad6e8cdc96cef67aeaf1c458610d170ed3332af0198ca +IV= 74c9e920dc16396e89774b82e7803ef5 +PT= 76afdd045a30faa486437abb319d2631 +CT= a5b997689b88aac0611c2963c8c1b7ce +TEST= 92 +KEY= 7e774e64a5f209b2c2173874de0eba1111f11a5167c02f04 +IV= a5b997689b88aac0611c2963c8c1b7ce +PT= abf525144d3415dea68d988c683b655d +CT= 7a2f39d97547c3cd336577e41c0483ed +TEST= 93 +KEY= 0406c21ae6e015e0b83801adab4979dc22946db57bc4ace9 +IV= 7a2f39d97547c3cd336577e41c0483ed +PT= e0c2466426630d1b7a718c7e43121c52 +CT= 67899f7d0890e90383c05a7984604241 +TEST= 94 +KEY= d9249a4afdf40beadfb19ed0a3d990dfa15437ccffa4eea8 +IV= 67899f7d0890e90383c05a7984604241 +PT= 07e55341fcd016d7dd2258501b141e0a +CT= 7b1cbcd270b09e9a1d15714d8366d174 +TEST= 95 +KEY= b2242464cd4d2448a4ad2202d3690e45bc4146817cc23fdc +IV= 7b1cbcd270b09e9a1d15714d8366d174 +PT= 25c6e62f44abff406b00be2e30b92fa2 +CT= c86e27e5ca4461ce656d893a16477966 +TEST= 96 +KEY= 602cdf824c043c836cc305e7192d6f8bd92ccfbb6a8546ba +IV= c86e27e5ca4461ce656d893a16477966 +PT= 3f9d262e375f057bd208fbe6814918cb +CT= 8129054cf746cb79112942ae35142e4d +TEST= 97 +KEY= 73f82c9ee4b4d0e8edea00abee6ba4f2c8058d155f9168f7 +IV= 8129054cf746cb79112942ae35142e4d +PT= 7bc798eac4c17b2d13d4f31ca8b0ec6b +CT= 36f21910b1677af19586e55e360fb8dd +TEST= 98 +KEY= e5fc538a60cc29a3db1819bb5f0cde035d83684b699ed02a +IV= 36f21910b1677af19586e55e360fb8dd +PT= d3e39037253e5baa96047f148478f94b +CT= ba7ce80e0853d264368ee61d8e71eebe +TEST= 99 +KEY= d9381ef81441b6c16164f1b5575f0c676b0d8e56e7ef3e94 +IV= ba7ce80e0853d264368ee61d8e71eebe +PT= de4ffdfadb81fabb3cc44d72748d9f62 +CT= 971ad82d1f46f1087b37103b4be5dd8c +TEST= 100 +KEY= a0bf8b4740d929c9f67e29984819fd6f103a9e6dac0ae318 +IV= 971ad82d1f46f1087b37103b4be5dd8c +PT= fe6355b5d860522b798795bf54989f08 +CT= d17268155ee586f352bb031929441700 +TEST= 101 +KEY= 477a0ab591ffec5c270c418d16fc7b9c42819d74854ef418 +IV= d17268155ee586f352bb031929441700 +PT= 166a50eee05f4a39e7c581f2d126c595 +CT= 2cd84fb5b587be8b04638a9edba17ae2 +TEST= 102 +KEY= 50005b4c4b11bfb20bd40e38a37bc51746e217ea5eef8efa +IV= 2cd84fb5b587be8b04638a9edba17ae2 +PT= 1296dc2c1741eb2a177a51f9daee53ee +CT= 8c2a5a31951fb2d9e8d35cd3c007b8b3 +TEST= 103 +KEY= e1e88ddba5d849df87fe5409366477ceae314b399ee83649 +IV= 8c2a5a31951fb2d9e8d35cd3c007b8b3 +PT= 57c5e1a070e3c2aeb1e8d697eec9f66d +CT= aa9e935ba264c9fd0c07072af8499cd7 +TEST= 104 +KEY= d465f0fb195068cf2d60c7529400be33a2364c1366a1aa9e +IV= aa9e935ba264c9fd0c07072af8499cd7 +PT= 77d0522670e00bd7358d7d20bc882110 +CT= a22df6ce12c75fb99f5159a1e3e4249f +TEST= 105 +KEY= 4deb1b5e6398e4ad8f4d319c86c7e18a3d6715b285458e01 +IV= a22df6ce12c75fb99f5159a1e3e4249f +PT= d6f96d22896a2574998eeba57ac88c62 +CT= b356102a9158c569469e61093146b9f0 +TEST= 106 +KEY= d73e5ca946860bdd3c1b21b6179f24e37bf974bbb40337f1 +IV= b356102a9158c569469e61093146b9f0 +PT= 2e72f61fc21f57a09ad547f7251eef70 +CT= ab2babfb88d3c3ace4cba81e0e250ad3 +TEST= 107 +KEY= 6b592ce635873de197308a4d9f4ce74f9f32dca5ba263d22 +IV= ab2babfb88d3c3ace4cba81e0e250ad3 +PT= 39b02c01155705c9bc67704f7301363c +CT= 8a4ac90e9095479f3c02de7b08c01f1c +TEST= 108 +KEY= 1026ee98cac684081d7a43430fd9a0d0a33002deb2e6223e +IV= 8a4ac90e9095479f3c02de7b08c01f1c +PT= 14f49dbecee88dbb7b7fc27eff41b9e9 +CT= 62e4e3c43938d014d90c4a1d8cd09639 +TEST= 109 +KEY= 20972278e7c0ffc17f9ea08736e170c47a3c48c33e36b407 +IV= 62e4e3c43938d014d90c4a1d8cd09639 +PT= 56efb0ea336a674930b1cce02d067bc9 +CT= 5e8eb865bfc1999d57a67280e37ca129 +TEST= 110 +KEY= 2bee1a1965a7f17c211018e28920e9592d9a3a43dd4a152e +IV= 5e8eb865bfc1999d57a67280e37ca129 +PT= 9cf6f073f2f0c7cb0b79386182670ebd +CT= d3b98a4562fab47ed3d09c55e75ee51b +TEST= 111 +KEY= eb85e491647fd6acf2a992a7ebda5d27fe4aa6163a14f035 +IV= d3b98a4562fab47ed3d09c55e75ee51b +PT= 61964ef472752f21c06bfe8801d827d0 +CT= cf3d65aeedd747416af436a3b909828f +TEST= 112 +KEY= e94e6286941ec36d3d94f709060d1a6694be90b5831d72ba +IV= cf3d65aeedd747416af436a3b909828f +PT= 6c0b536ea1099a4202cb8617f06115c1 +CT= 5db0625b34c01c47490b5200e8a205fc +TEST= 113 +KEY= f5d756e568ca6ba06024955232cd0621ddb5c2b56bbf7746 +IV= 5db0625b34c01c47490b5200e8a205fc +PT= 08d5cd9945d190ab1c993463fcd4a8cd +CT= 771b5c66f79e262faac6f92f128669cb +TEST= 114 +KEY= 462c74e6e222de77173fc934c553200e77733b9a79391e8d +IV= 771b5c66f79e262faac6f92f128669cb +PT= 5628ec55d7ab7634b3fb22038ae8b5d7 +CT= 31c436e7ca7343a93aa0b74a38ccdac0 +TEST= 115 +KEY= 5062f2489f4c68fe26fbffd30f2063a74dd38cd041f5c44d +IV= 31c436e7ca7343a93aa0b74a38ccdac0 +PT= f279c45dbd75c458164e86ae7d6eb689 +CT= 845320b41fd6f1d4dbb36d19d8a4a268 +TEST= 116 +KEY= 5a27ec509fed17b6a2a8df6710f692739660e1c999516625 +IV= 845320b41fd6f1d4dbb36d19d8a4a268 +PT= 7c0cb5e4ffe703260a451e1800a17f48 +CT= d8f9fb52be1b342d6fbbb8a7fcdefd89 +TEST= 117 +KEY= e925ec8e99bf11e97a512435aeeda65ef9db596e658f9bac +IV= d8f9fb52be1b342d6fbbb8a7fcdefd89 +PT= 187f3648643af8e6b30200de0652065f +CT= 240647a32d765031c79d8893cc19eba9 +TEST= 118 +KEY= 5574034bce64fadd5e576396839bf66f3e46d1fda9967005 +IV= 240647a32d765031c79d8893cc19eba9 +PT= af808097e0c68c8fbc51efc557dbeb34 +CT= 2a3805a7d773f9c00635779752c9cce7 +TEST= 119 +KEY= d842a9983bbdaa5e746f663154e80faf3873a66afb5fbce2 +IV= 2a3805a7d773f9c00635779752c9cce7 +PT= d44486ccc61c68588d36aad3f5d95083 +CT= 2219f0c7a805bec4a4931f84cbffc598 +TEST= 120 +KEY= cd622302bd70e2cd567696f6fcedb16b9ce0b9ee30a0797a +IV= 2219f0c7a805bec4a4931f84cbffc598 +PT= 67da1bc4f2bc2f3315208a9a86cd4893 +CT= 8b1f4353cf6969888bbd6654ab65c2a8 +TEST= 121 +KEY= 80a1d0ca7667f291dd69d5a53384d8e3175ddfba9bc5bbd2 +IV= 8b1f4353cf6969888bbd6654ab65c2a8 +PT= d114fda8e61beac44dc3f3c8cb17105c +CT= b6f0c0f016a1fa033c37d1128d9b2ef3 +TEST= 122 +KEY= 2c9b755c3b8b44416b991555252522e02b6a0ea8165e9521 +IV= b6f0c0f016a1fa033c37d1128d9b2ef3 +PT= 738dbce3ee7e70eaac3aa5964decb6d0 +CT= 14fb0a67cb0729ca25152581d8c3feef +TEST= 123 +KEY= 5d05bdfbf482e4d37f621f32ee220b2a0e7f2b29ce9d6bce +IV= 14fb0a67cb0729ca25152581d8c3feef +PT= d3186497981f294b719ec8a7cf09a092 +CT= 14c988c52c7ed50ebd10219f1f58c213 +TEST= 124 +KEY= 9e044d195fa8557c6bab97f7c25cde24b36f0ab6d1c5a9dd +IV= 14c988c52c7ed50ebd10219f1f58c213 +PT= c062585284fde540c301f0e2ab2ab1af +CT= 1fe7e153e69f95f102624aceb9067fa1 +TEST= 125 +KEY= 2b116b6f1fd581c6744c76a424c34bd5b10d407868c3d67c +IV= 1fe7e153e69f95f102624aceb9067fa1 +PT= f18294d40caa674db5152676407dd4ba +CT= ab43b2c61c9f23b96efe293c6730a98f +TEST= 126 +KEY= eaf1afbdd2cedb9adf0fc462385c686cdff369440ff37ff3 +IV= ab43b2c61c9f23b96efe293c6730a98f +PT= 7d465730c5422413c1e0c4d2cd1b5a5c +CT= b1413f447ca81c678287ee2366544547 +TEST= 127 +KEY= 4fa6c7da7a84d4cb6e4efb2644f4740b5d74876769a73ab4 +IV= b1413f447ca81c678287ee2366544547 +PT= c7bfa1bfa26828f7a5576867a84a0f51 +CT= 7ae90f988557f3a41bbdb4b69c5ff56a +TEST= 128 +KEY= c9b0e3c7cef4003014a7f4bec1a387af46c933d1f5f8cfde +IV= 7ae90f988557f3a41bbdb4b69c5ff56a +PT= 5173c32806105ad18616241db470d4fb +CT= f2ef675645d284f042faebe87ae3ecae +TEST= 129 +KEY= db855274f6cc030be64893e88471035f0433d8398f1b2370 +IV= f2ef675645d284f042faebe87ae3ecae +PT= 6df6b7f917b2f8431235b1b33838033b +CT= 30d4f068bc2fdec79cf81a4fa641a495 +TEST= 130 +KEY= f37dbf11472a4f87d69c6380385edd9898cbc276295a87e5 +IV= 30d4f068bc2fdec79cf81a4fa641a495 +PT= f4c98d268b7d175728f8ed65b1e64c8c +CT= 0ceb234560b935e5b08c7ea2aa4a962d +TEST= 131 +KEY= 1a2f5a0827b2f861da7740c558e7e87d2847bcd4831011c8 +IV= 0ceb234560b935e5b08c7ea2aa4a962d +PT= 9873e312b815dc81e952e5196098b7e6 +CT= 7bed84efc02836f6d165ad27deef2b21 +TEST= 132 +KEY= 9c815f2a4ec42d02a19ac42a98cfde8bf92211f35dff3ae9 +IV= 7bed84efc02836f6d165ad27deef2b21 +PT= d8765de55131dc4186ae05226976d563 +CT= c36fedcb97da734243a20c49d5942dd1 +TEST= 133 +KEY= 9a12cc40f3c185aa62f529e10f15adc9ba801dba886b1738 +IV= c36fedcb97da734243a20c49d5942dd1 +PT= 18b252ceb124bd110693936abd05a8a8 +CT= 94c9a6bdb97522facee2e869c3c48fb0 +TEST= 134 +KEY= f08c23ddc110ed40f63c8f5cb6608f337462f5d34baf9888 +IV= 94c9a6bdb97522facee2e869c3c48fb0 +PT= 154ff810e3f0ce586a9eef9d32d168ea +CT= afc8d15f80f19f942fca22da0df79937 +TEST= 135 +KEY= b1224ff7293c5dc559f45e03369110a75ba8d709465801bf +IV= afc8d15f80f19f942fca22da0df79937 +PT= 259a6b069ca3273c41ae6c2ae82cb085 +CT= 5aadc1716b2ed4fc7ca9825a32ea2fb1 +TEST= 136 +KEY= d29a829813cc5b4103599f725dbfc45b2701555374b22e0e +IV= 5aadc1716b2ed4fc7ca9825a32ea2fb1 +PT= cb78c574d9b1b9ef63b8cd6f3af00684 +CT= eacb8d3001640f340dfb459cd8d162bd +TEST= 137 +KEY= 1049116dd39f7b30e99212425cdbcb6f2afa10cfac634cb3 +IV= eacb8d3001640f340dfb459cd8d162bd +PT= df461d135de19fa2c2d393f5c0532071 +CT= 9115eb33739c04aae22765621a8852c5 +TEST= 138 +KEY= a129cbbf89658d977887f9712f47cfc5c8dd75adb6eb1e76 +IV= 9115eb33739c04aae22765621a8852c5 +PT= e32af908a190b95fb160dad25afaf6a7 +CT= b171d8ac24c6873b54f42d5dac51ed34 +TEST= 139 +KEY= ee7226d88dfa48dfc9f621dd0b8148fe9c2958f01abaf342 +IV= b171d8ac24c6873b54f42d5dac51ed34 +PT= 0a669bb00e2123b54f5bed67049fc548 +CT= cffc81b70593a36d022248d1cbe7fc58 +TEST= 140 +KEY= c907918503b2c1c0060aa06a0e12eb939e0b1021d15d0f1a +IV= cffc81b70593a36d022248d1cbe7fc58 +PT= e9b1e6fa006d4cee2775b75d8e48891f +CT= 0b3b02fc8a8d677b8077d7fdf9eb0396 +TEST= 141 +KEY= e468a0560db602c10d31a296849f8ce81e7cc7dc28b60c8c +IV= 0b3b02fc8a8d677b8077d7fdf9eb0396 +PT= aa3626c69662ae442d6f31d30e04c301 +CT= 2c78c31d4b2ebaef54cb6d04c4375196 +TEST= 142 +KEY= eb8bcd80d3e35ccb2149618bcfb136074ab7aad8ec815d1a +IV= 2c78c31d4b2ebaef54cb6d04c4375196 +PT= 5017bd9eb52514180fe36dd6de555e0a +CT= 67d2dd54a0881186dfa6a608c036ce61 +TEST= 143 +KEY= 7065d92686ba37e9469bbcdf6f39278195110cd02cb7937b +IV= 67d2dd54a0881186dfa6a608c036ce61 +PT= 6cbc1c2daa3a7f7b9bee14a655596b22 +CT= 62163c88a40e7cff7522a3dc32f30bcf +TEST= 144 +KEY= e0b4ae9d6c9a5a92248d8057cb375b7ee033af0c1e4498b4 +IV= 62163c88a40e7cff7522a3dc32f30bcf +PT= 0f6c44ee5e2587a790d177bbea206d7b +CT= b84a631de451f109c48785de3d4099c2 +TEST= 145 +KEY= ddcdb4f73aa0c8789cc7e34a2f66aa7724b42ad223040176 +IV= b84a631de451f109c48785de3d4099c2 +PT= ee1ea5c5340c2f263d791a6a563a92ea +CT= d438e983db81da9341ce1ac45f4e7e52 +TEST= 146 +KEY= 813604e941cbdf6448ff0ac9f4e770e4657a30167c4a7f24 +IV= d438e983db81da9341ce1ac45f4e7e52 +PT= 08e1f94874432dbd5cfbb01e7b6b171c +CT= 0e1c069cb75d4edf4243d1e6d7175425 +TEST= 147 +KEY= d64eb9de5a3b546b46e30c5543ba3e3b2739e1f0ab5d2b01 +IV= 0e1c069cb75d4edf4243d1e6d7175425 +PT= cfcdc1c0efe678fb5778bd371bf08b0f +CT= cbc0ed542e26a1943926ef7897a79e97 +TEST= 148 +KEY= d1659785d1d551948d23e1016d9c9faf1e1f0e883cfab596 +IV= cbc0ed542e26a1943926ef7897a79e97 +PT= 1fea178a348cae8b072b2e5b8bee05ff +CT= c743a7b60eb7c24867da82aff15ed18a +TEST= 149 +KEY= 05786c3e1fbe51864a6046b7632b5de779c58c27cda4641c +IV= c743a7b60eb7c24867da82aff15ed18a +PT= 3a4ef6696cd26875d41dfbbbce6b0012 +CT= ea23014227cf7b563aeff86db947fac4 +TEST= 150 +KEY= ce1e5d5bf32bf0caa04347f544e426b1432a744a74e39ed8 +IV= ea23014227cf7b563aeff86db947fac4 +PT= dfdf9b4032986e90cb663165ec95a14c +CT= eaf762b60a106c03b76742e69cee385a +TEST= 151 +KEY= f8eac01b3f7e925a4ab425434ef44ab2f44d36ace80da682 +IV= eaf762b60a106c03b76742e69cee385a +PT= 2bdc6eab1d86311d36f49d40cc556290 +CT= e6cc0491c3509240ed848ae304cc3385 +TEST= 152 +KEY= bf5ae8b244244b4bac7821d28da4d8f219c9bc4fecc19507 +IV= e6cc0491c3509240ed848ae304cc3385 +PT= 81d4e28e02717ab347b028a97b5ad911 +CT= 11ee9d22ac798ab5fef6c6188845f425 +TEST= 153 +KEY= 5c6538235111334fbd96bcf021dd5247e73f7a5764846122 +IV= 11ee9d22ac798ab5fef6c6188845f425 +PT= dde402413bb09dfbe33fd09115357804 +CT= 3f054911089500fd2cd0645dbfe2a8d3 +TEST= 154 +KEY= fac914fa6b6ca1ab8293f5e1294852bacbef1e0adb66c9f1 +IV= 3f054911089500fd2cd0645dbfe2a8d3 +PT= 345343e023ac39ffa6ac2cd93a7d92e4 +CT= 7538e78de8fc09d203010c61422e6b5a +TEST= 155 +KEY= 1e62f54271ea4374f7ab126cc1b45b68c8ee126b9948a2ab +IV= 7538e78de8fc09d203010c61422e6b5a +PT= 0ec4357c476eb76ae4abe1b81a86e2df +CT= 3a4d0093a2b7ff807baa6a815538507e +TEST= 156 +KEY= 5ad3b884be5653bbcde612ff6303a4e8b34478eacc70f2d5 +IV= 3a4d0093a2b7ff807baa6a815538507e +PT= f59fd86893b7df7244b14dc6cfbc10cf +CT= 2c2fd7df94fddc2ca1c05ef5878583ff +TEST= 157 +KEY= b9039e1678902ecce1c9c520f7fe78c41284261f4bf5712a +IV= 2c2fd7df94fddc2ca1c05ef5878583ff +PT= 4600e6ccd65b575ae3d02692c6c67d77 +CT= 59c9fa2e4a2227c3e5b831899a3ccbfd +TEST= 158 +KEY= 394a8245256d72b8b8003f0ebddc5f07f73c1796d1c9bad7 +IV= 59c9fa2e4a2227c3e5b831899a3ccbfd +PT= 3030d8e24f7bea0580491c535dfd5c74 +CT= deafc4a07a3fb5d5aa09ff6a2515ab4a +TEST= 159 +KEY= 2496931dfcff2e7166affbaec7e3ead25d35e8fcf4dc119d +IV= deafc4a07a3fb5d5aa09ff6a2515ab4a +PT= 63cd1cc241b267791ddc1158d9925cc9 +CT= b1b0aed275fce241b5726e943b37c130 +TEST= 160 +KEY= 53cba419e5ced1c8d71f557cb21f0893e8478668cfebd0ad +IV= b1b0aed275fce241b5726e943b37c130 +PT= 85f4e06a05c8704a775d37041931ffb9 +CT= b0dfd3ef3af538791e69af59caa7b8cc +TEST= 161 +KEY= dfb0e5440eb582f667c0869388ea30eaf62e2931054c6861 +IV= b0dfd3ef3af538791e69af59caa7b8cc +PT= b7bda6c504797c8b8c7b415deb7b533e +CT= 220f810b0d5a9ed8794932d0bf6150d6 +TEST= 162 +KEY= b26a70894070bc9b45cf079885b0ae328f671be1ba2d38b7 +IV= 220f810b0d5a9ed8794932d0bf6150d6 +PT= 0113567bfac19eb86dda95cd4ec53e6d +CT= 56c77682ca1a041b312061f3fb9a1a59 +TEST= 163 +KEY= 36eda74b7133d5871308711a4faaaa29be477a1241b722ee +IV= 56c77682ca1a041b312061f3fb9a1a59 +PT= 4d39ad87258968fa8487d7c23143691c +CT= 4f18208e63b2d84cc7a0707617dd7b63 +TEST= 164 +KEY= f7589312ce997afe5c1051942c18726579e70a64566a598d +IV= 4f18208e63b2d84cc7a0707617dd7b63 +PT= 1b82f5c849e0f965c1b53459bfaaaf79 +CT= 85ce0310defb36474b38c4347d7eee8b +TEST= 165 +KEY= f770fc7b1e183e31d9de5284f2e3442232dfce502b14b706 +IV= 85ce0310defb36474b38c4347d7eee8b +PT= 7b56ebc47e780fb000286f69d08144cf +CT= cb5ae674db1426618f577bbd63309ea4 +TEST= 166 +KEY= 79ad3040ccc9fd521284b4f029f76243bd88b5ed482429a2 +IV= cb5ae674db1426618f577bbd63309ea4 +PT= 47a5b213bc3df61b8eddcc3bd2d1c363 +CT= 1e26ab2d8b156913995fcac1abd99d68 +TEST= 167 +KEY= 10bb9597f823b61f0ca21fdda2e20b5024d77f2ce3fdb4ca +IV= 1e26ab2d8b156913995fcac1abd99d68 +PT= d31fc11c9fd6e7f86916a5d734ea4b4d +CT= 84e0e24f155e5efca9ae9c5f2f26bd25 +TEST= 168 +KEY= e1264a2ad33800ff8842fd92b7bc55ac8d79e373ccdb09ef +IV= 84e0e24f155e5efca9ae9c5f2f26bd25 +PT= f77fe11ae4beb403f19ddfbd2b1bb6e0 +CT= b41973b0d807a43a822eb57555b818d4 +TEST= 169 +KEY= a19abdd25ed272693c5b8e226fbbf1960f5756069963113b +IV= b41973b0d807a43a822eb57555b818d4 +PT= fecaaa8ea9c1883640bcf7f88dea7296 +CT= 949634e68fb9086ae623eaf5e867d4a5 +TEST= 170 +KEY= dd904eccc94f64d0a8cdbac4e002f9fce974bcf37104c59e +IV= 949634e68fb9086ae623eaf5e867d4a5 +PT= e8a413c2adb97d387c0af31e979d16b9 +CT= 96be2b618f8a961e5dc892f429a8b6fc +TEST= 171 +KEY= 1b83c20396d7d0d33e7391a56f886fe2b4bc2e0758ac7362 +IV= 96be2b618f8a961e5dc892f429a8b6fc +PT= 1408434bf0c3432bc6138ccf5f98b403 +CT= c0a9596f56e48f459d2c405f47dca44c +TEST= 172 +KEY= b04c71dbea60db15fedac8ca396ce0a729906e581f70d72e +IV= c0a9596f56e48f459d2c405f47dca44c +PT= 5e7f070c7ee8a852abcfb3d87cb70bc6 +CT= a4739c93911c72c959e89544500843bd +TEST= 173 +KEY= 9bfc8026bc1d965b5aa95459a870926e7078fb1c4f789493 +IV= a4739c93911c72c959e89544500843bd +PT= 718c23d1f537a6e72bb0f1fd567d4d4e +CT= 4d581200b1e446cc3ad306138bf2898b +TEST= 174 +KEY= fea9df8f4fecb3ed17f146591994d4a24aabfd0fc48a1d18 +IV= 4d581200b1e446cc3ad306138bf2898b +PT= e4dd231d871795e065555fa9f3f125b6 +CT= e53efc19d8048073167b1473c5eba6d9 +TEST= 175 +KEY= 62df036d6f96d937f2cfba40c19054d15cd0e97c0161bbc1 +IV= e53efc19d8048073167b1473c5eba6d9 +PT= 9ab809114f10c3fd9c76dce2207a6ada +CT= bdb0c3d9732de5813c4c72cf01ff5194 +TEST= 176 +KEY= cfef04f0343587004f7f7999b2bdb150609c9bb3009eea55 +IV= bdb0c3d9732de5813c4c72cf01ff5194 +PT= b4cfe094f8b4eee5ad30079d5ba35e37 +CT= d00b5b980d8b10df3d7d4c0be5975c1c +TEST= 177 +KEY= cbf2c475c11fa6b89f742201bf36a18f5de1d7b8e509b649 +IV= d00b5b980d8b10df3d7d4c0be5975c1c +PT= 34b39728291953dc041dc085f52a21b8 +CT= adf5cdfdcc23ad8ad111454b2db69013 +TEST= 178 +KEY= c96820a08056f7c23281effc73150c058cf092f3c8bf265a +IV= adf5cdfdcc23ad8ad111454b2db69013 +PT= 4c8152ccaa0a23ac029ae4d54149517a +CT= f070979f68baebbd6ce8ce8a549c0e12 +TEST= 179 +KEY= 61a6bbdb58b4c9d4c2f178631bafe7b8e0185c799c232848 +IV= f070979f68baebbd6ce8ce8a549c0e12 +PT= 0b6af20ef8550a1ba8ce9b7bd8e23e16 +CT= 8a75d276384a4f468b459466a304d418 +TEST= 180 +KEY= d3ec560de8b1bbee4884aa1523e5a8fe6b5dc81f3f27fc50 +IV= 8a75d276384a4f468b459466a304d418 +PT= 259a18babfd09145b24aedd6b005723a +CT= b7c04f66eb771cbd97f948098e23c655 +TEST= 181 +KEY= 16fe806749fddf8cff44e573c892b443fca48016b1043a05 +IV= b7c04f66eb771cbd97f948098e23c655 +PT= e00b5e4b3d9e64d0c512d66aa14c6462 +CT= 29fb08289bd19bcc0feb0f433d5cacee +TEST= 182 +KEY= 9cc345922c8912d5d6bfed5b53432f8ff34f8f558c5896eb +IV= 29fb08289bd19bcc0feb0f433d5cacee +PT= 07baa266554eae0c8a3dc5f56574cd59 +CT= 495c245e2f3cc52499b9c1ad7c4484ba +TEST= 183 +KEY= 7dddcf7de759fdec9fe3c9057c7feaab6af64ef8f01c1251 +IV= 495c245e2f3cc52499b9c1ad7c4484ba +PT= 2e5360d5563eb7d4e11e8aefcbd0ef39 +CT= 68267051421d3afa19a2e43d501b940b +TEST= 184 +KEY= 4ba2ead4106dd4b7f7c5b9543e62d0517354aac5a007865a +IV= 68267051421d3afa19a2e43d501b940b +PT= 050ebc6942f92d95367f25a9f734295b +CT= 1781558a2a8b7c29ac82d6610b67e3cf +TEST= 185 +KEY= cfccd4ecd20e051ce044ecde14e9ac78dfd67ca4ab606595 +IV= 1781558a2a8b7c29ac82d6610b67e3cf +PT= 1ac90b21eb197e26846e3e38c263d1ab +CT= bf5fe87a2e882a64493850ec3a0e93a5 +TEST= 186 +KEY= c9ea5f992c77dd9c5f1b04a43a61861c96ee2c48916ef630 +IV= bf5fe87a2e882a64493850ec3a0e93a5 +PT= 58f997704d085dc506268b75fe79d880 +CT= 8f43a961964e3452094e8e71295177cd +TEST= 187 +KEY= 1136648f9e0a53c3d058adc5ac2fb24e9fa0a239b83f81fd +IV= 8f43a961964e3452094e8e71295177cd +PT= 086041ab29e423efd8dc3b16b27d8e5f +CT= bf69230bab6200b7828dc04a13b88e83 +TEST= 188 +KEY= 47040e2d6dfbe3006f318ece074db2f91d2d6273ab870f7e +IV= bf69230bab6200b7828dc04a13b88e83 +PT= 57865a8650d3202056326aa2f3f1b0c3 +CT= a012faee65e2c4f0ac22cb63ab75e35d +TEST= 189 +KEY= 868f8310e79c0473cf23742062af7609b10fa91000f2ec23 +IV= a012faee65e2c4f0ac22cb63ab75e35d +PT= f3abb47dae94b82ec18b8d3d8a67e773 +CT= f35bbd3c516f86384da3bb6b5ccc8b37 +TEST= 190 +KEY= 5c71adce480714da3c78c91c33c0f031fcac127b5c3e6714 +IV= f35bbd3c516f86384da3bb6b5ccc8b37 +PT= cdb3e57fa6ddff9fdafe2edeaf9b10a9 +CT= 627a15e65b37c2b9575e8a781271ae64 +TEST= 191 +KEY= b603092bc5fd004f5e02dcfa68f73288abf298034e4fc970 +IV= 627a15e65b37c2b9575e8a781271ae64 +PT= 7e04f9a0f723df00ea72a4e58dfa1495 +CT= 15427d27e783a5476345c83f3e8a3319 +TEST= 192 +KEY= 4db5a9f825c5e8c24b40a1dd8f7497cfc8b7503c70c5fa69 +IV= 15427d27e783a5476345c83f3e8a3319 +PT= 842b94be25e8747bfbb6a0d3e038e88d +CT= 35812afd1a90b0b7d52b45ead9caf083 +TEST= 193 +KEY= d4f2ccc0734f9acd7ec18b2095e427781d9c15d6a90f0aea +IV= 35812afd1a90b0b7d52b45ead9caf083 +PT= 3fab7d4c741b8cd499476538568a720f +CT= c1a59cd3d9e6650f0d16947d26bfc20d +TEST= 194 +KEY= cb28a8313e133469bf6417f34c024277108a81ab8fb0c8e7 +IV= c1a59cd3d9e6650f0d16947d26bfc20d +PT= 37ac888dce5cdfd31fda64f14d5caea4 +CT= cb0313e9a046711866ca65702a45cdb6 +TEST= 195 +KEY= c5bfeb8246abaf467467041aec44336f7640e4dba5f50551 +IV= cb0313e9a046711866ca65702a45cdb6 +PT= 326c9e3eb49138ed0e9743b378b89b2f +CT= ace8fc6c6abbc8124fe35c7976585df6 +TEST= 196 +KEY= 110891f8fdf0f254d88ff87686fffb7d39a3b8a2d3ad58a7 +IV= ace8fc6c6abbc8124fe35c7976585df6 +PT= 964239eb84c57f61d4b77a7abb5b5d12 +CT= 0762ef13b80a8b77d04af797b67d5aa6 +TEST= 197 +KEY= eff558976586ac91dfed17653ef5700ae9e94f3565d00201 +IV= 0762ef13b80a8b77d04af797b67d5aa6 +PT= 5eca17adfe3c2c21fefdc96f98765ec5 +CT= b60cc9cd9de93e2a6fb0b59369b1628e +TEST= 198 +KEY= 4494a36eabe3555e69e1dea8a31c4e208659faa60c61608f +IV= b60cc9cd9de93e2a6fb0b59369b1628e +PT= 7a659e803888296bab61fbf9ce65f9cf +CT= 73258a43c7da66ffe4dc9384fc7a60c1 +TEST= 199 +KEY= 1780249b48b8f7561ac454eb64c628df62856922f01b004e +IV= 73258a43c7da66ffe4dc9384fc7a60c1 +PT= 8d9c3dcf612320b4531487f5e35ba208 +CT= f0f5d51c06f2d900cc4be8d3512ca4b6 +TEST= 200 +KEY= 9ff03d1e23bd9959ea3181f76234f1dfaece81f1a137a4f8 +IV= f0f5d51c06f2d900cc4be8d3512ca4b6 +PT= f002aec878b80a0b887019856b056e0f +CT= e1321c52a51d9345296a0ef2a9dc9cc5 +TEST= 201 +KEY= 6042967162eda50b0b039da5c729629a87a48f0308eb383d +IV= e1321c52a51d9345296a0ef2a9dc9cc5 +PT= c5ea4a519d9baf8fffb2ab6f41503c52 +CT= ed79d8fc9c60b583e29d0a65a6a5f321 +TEST= 202 +KEY= 250c416206b9d0a9e67a45595b49d71965398566ae4ecb1c +IV= ed79d8fc9c60b583e29d0a65a6a5f321 +PT= 34d771b44b3943de454ed713645475a2 +CT= 7a08f9096109535c262407eb323ef7bc +TEST= 203 +KEY= 6357bc1b7b12f1c09c72bc503a408445431d828d9c703ca0 +IV= 7a08f9096109535c262407eb323ef7bc +PT= 60a1eeae2b16841a465bfd797dab2169 +CT= 24c7f1a39f8b2f03c256f5c59b69c31a +TEST= 204 +KEY= 18bf29d147a9675bb8b54df3a5cbab46814b77480719ffba +IV= 24c7f1a39f8b2f03c256f5c59b69c31a +PT= bfd7b314f959298b7be895ca3cbb969b +CT= 7dda5df3cc7c69aa490fb597888396b2 +TEST= 205 +KEY= e8b13c48fbabcd19c56f100069b7c2ecc844c2df8f9a6908 +IV= 7dda5df3cc7c69aa490fb597888396b2 +PT= 23f8a60bd2354901f00e1599bc02aa42 +CT= 04ceb4be252293a822c77b9c4c27822b +TEST= 206 +KEY= bf275c4d9fc54bc0c1a1a4be4c955144ea83b943c3bdeb23 +IV= 04ceb4be252293a822c77b9c4c27822b +PT= 2182c0577eaa3c2a57966005646e86d9 +CT= 0f24034642e351984620bb2647f5d649 +TEST= 207 +KEY= 40b459144a6415c2ce85a7f80e7600dcaca3026584483d6a +IV= 0f24034642e351984620bb2647f5d649 +PT= f59318d1d3d9a9e0ff930559d5a15e02 +CT= db98808c46668d79ab059c5554ceeb1a +TEST= 208 +KEY= d5a01ab42d709e6a151d277448108da507a69e30d086d670 +IV= db98808c46668d79ab059c5554ceeb1a +PT= 49cf142e621d1a8d951443a067148ba8 +CT= 15c32fe5e9bca5f8d09ea2e4d145fe3d +TEST= 209 +KEY= 8191ab3c11b4b72700de0891a1ac285dd7383cd401c3284d +IV= 15c32fe5e9bca5f8d09ea2e4d145fe3d +PT= 5c1e9b721987b8bf5431b1883cc4294d +CT= aa7ca217d0514ca4f20c50293121e8d8 +TEST= 210 +KEY= 69d24875b8a5b5d1aaa2aa8671fd64f925346cfd30e2c095 +IV= aa7ca217d0514ca4f20c50293121e8d8 +PT= 8239553d8fb88e17e843e349a91102f6 +CT= c4068b901cb07904f843bf6f3cdc4ff8 +TEST= 211 +KEY= 12bae3b5b2c03e746ea421166d4d1dfddd77d3920c3e8f6d +IV= c4068b901cb07904f843bf6f3cdc4ff8 +PT= 80d797c671d3bff67b68abc00a658ba5 +CT= 9f835417c4d622db52651897dc23e1c3 +TEST= 212 +KEY= 1a0cfd7fa1284652f1277501a99b3f268f12cb05d01d6eae +IV= 9f835417c4d622db52651897dc23e1c3 +PT= c36513d78fbbfdcc08b61eca13e87826 +CT= 0156c998e85be92f0ef998442204eb19 +TEST= 213 +KEY= 7829d1fe113103b0f071bc9941c0d60981eb5341f21985b7 +IV= 0156c998e85be92f0ef998442204eb19 +PT= 000894f1af39a67562252c81b01945e2 +CT= 6a554057c0a3eb723b693258bc5e899d +TEST= 214 +KEY= d719d37fc9087d2f9a24fcce81633d7bba8261194e470c2a +IV= 6a554057c0a3eb723b693258bc5e899d +PT= b92413276bf142d0af300281d8397e9f +CT= 395f80e405813d97576954a23c77c2ca +TEST= 215 +KEY= 39e173517a321a5aa37b7c2a84e200ecedeb35bb7230cee0 +IV= 395f80e405813d97576954a23c77c2ca +PT= aa95f2bd255dbe23eef8a02eb33a6775 +CT= 1b1bc5d3dabd536e91177ef1bf2b7e39 +TEST= 216 +KEY= ee1fb67d907c597bb860b9f95e5f53827cfc4b4acd1bb0d9 +IV= 1b1bc5d3dabd536e91177ef1bf2b7e39 +PT= 985e81e0bf5ff6efd7fec52cea4e4321 +CT= 20f42326749cc7ccd54188dea46f4ec1 +TEST= 217 +KEY= 41d333ec5e537b8098949adf2ac3944ea9bdc3946974fe18 +IV= 20f42326749cc7ccd54188dea46f4ec1 +PT= 901fd7d22f220608afcc8591ce2f22fb +CT= affc6f2668097b58a0cff619a3fdd1cb +TEST= 218 +KEY= f6e392ef75572c6a3768f5f942caef160972358dca892fd3 +IV= affc6f2668097b58a0cff619a3fdd1cb +PT= 45aeb51360c50ab1b730a1032b0457ea +CT= 1b75cf440ce8521069599b7889f21c1d +TEST= 219 +KEY= 47c82cf46472d3732c1d3abd4e22bd06602baef5437b33ce +IV= 1b75cf440ce8521069599b7889f21c1d +PT= 7e931056cc33d22cb12bbe1b1125ff19 +CT= f6079adbaa8d28f371f0156b170fb7bd +TEST= 220 +KEY= dda62a9922b04902da1aa066e4af95f511dbbb9e54748473 +IV= f6079adbaa8d28f371f0156b170fb7bd +PT= 2be3da337c9187109a6e066d46c29a71 +CT= 7d2fc16b26971ddc20c6f7510c47b352 +TEST= 221 +KEY= 570c8ca5236a2e65a735610dc2388829311d4ccf58333721 +IV= 7d2fc16b26971ddc20c6f7510c47b352 +PT= 43596064590570f88aaaa63c01da6767 +CT= 5fba845fb25fe6ae015e4e8a228ed645 +TEST= 222 +KEY= 6cea158ed663a4b7f88fe55270676e87304302457abde164 +IV= 5fba845fb25fe6ae015e4e8a228ed645 +PT= 1e265f0aa9a20c603be6992bf5098ad2 +CT= a729e250d736a43966dd0d9c461ecec0 +TEST= 223 +KEY= aacce3387c0df35d5fa60702a751cabe569e0fd93ca32fa4 +IV= a729e250d736a43966dd0d9c461ecec0 +PT= b08aae113cce6226c626f6b6aa6e57ea +CT= a8192e964a74a6abdb463ecfa483a1e3 +TEST= 224 +KEY= 207f19abda13f728f7bf2994ed256c158dd8311698208e47 +IV= a8192e964a74a6abdb463ecfa483a1e3 +PT= 858cf92e6b1793448ab3fa93a61e0475 +CT= 060c7cccd58e6348518161c7878aa71b +TEST= 225 +KEY= ab05ad81cf07091af1b3555838ab0f5ddc5950d11faa295c +IV= 060c7cccd58e6348518161c7878aa71b +PT= 424d175035503c728b7ab42a1514fe32 +CT= 8ecaa12830b0c5b4c6950e69afd31b66 +TEST= 226 +KEY= 3a8e1cc01464af9b7f79f470081bcae91acc5eb8b079323a +IV= 8ecaa12830b0c5b4c6950e69afd31b66 +PT= 6e5a94391f1fe5a9918bb141db63a681 +CT= 65c3a891192324a7fa3c882b2c09cb8d +TEST= 227 +KEY= 8004ab13cf38b3ed1aba5ce11138ee4ee0f0d6939c70f9b7 +IV= 65c3a891192324a7fa3c882b2c09cb8d +PT= 584e219335ca4642ba8ab7d3db5c1c76 +CT= f29f8735a403414621f2100af38a500c +TEST= 228 +KEY= d37bb962cfc53e77e825dbd4b53baf08c102c6996ffaa9bb +IV= f29f8735a403414621f2100af38a500c +PT= ccb996c23c627d4d537f127100fd8d9a +CT= 9c6a7655e25e9231e46c0d3b57c7fcab +TEST= 229 +KEY= c23b3c983c79179a744fad8157653d39256ecba2383d5510 +IV= 9c6a7655e25e9231e46c0d3b57c7fcab +PT= 5d727e12d3932f56114085faf3bc29ed +CT= 6c5aa7364755af599ab6f86ec8b24c52 +TEST= 230 +KEY= 4462cd1dd817170c18150ab710309260bfd833ccf08f1942 +IV= 6c5aa7364755af599ab6f86ec8b24c52 +PT= d7a99c8f3bc37ad08659f185e46e0096 +CT= 821d7eac8fd041c0c8cf1011661fbb9e +TEST= 231 +KEY= 1ba52bef2b010d169a08741b9fe0d3a0771723dd9690a2dc +IV= 821d7eac8fd041c0c8cf1011661fbb9e +PT= 704f3525510fcc745fc7e6f2f3161a1a +CT= 44591d71d64fc38010e402874853e9bc +TEST= 232 +KEY= c6a6818229cc65e6de51696a49af102067f3215adec34b60 +IV= 44591d71d64fc38010e402874853e9bc +PT= 5d5769ae155c9f43dd03aa6d02cd68f0 +CT= e5647ff6c843543e484fc13b58a345b9 +TEST= 233 +KEY= 41f27dd5905b299c3b35169c81ec441e2fbce06186600ed9 +IV= e5647ff6c843543e484fc13b58a345b9 +PT= adf29030dfdfccee8754fc57b9974c7a +CT= e6ea42e2f046d3ed75081a50770563d1 +TEST= 234 +KEY= 3a8018855edc80d2dddf547e71aa97f35ab4fa31f1656d08 +IV= e6ea42e2f046d3ed75081a50770563d1 +PT= 096f74717d5583477b726550ce87a94e +CT= d75682fe37396887659e87895f1c6441 +TEST= 235 +KEY= 6c94c2634142da310a89d6804693ff743f2a7db8ae790949 +IV= d75682fe37396887659e87895f1c6441 +PT= f1b527dd4935fbde5614dae61f9e5ae3 +CT= 15755cfe84e113aa751e4d5bb098abc7 +TEST= 236 +KEY= 4ba407d7c6426c641ffc8a7ec272ecde4a3430e31ee1a28e +IV= 15755cfe84e113aa751e4d5bb098abc7 +PT= 7c4433dcc314dbd72730c5b48700b655 +CT= b048f209ce1b1faec33392d2d8f326a1 +TEST= 237 +KEY= a56fd7bceea55474afb478770c69f3708907a231c612842f +IV= b048f209ce1b1faec33392d2d8f326a1 +PT= d40c7cd8d80c8c6ceecbd06b28e73810 +CT= 8e1f4830f94004c286c39d0ec014a963 +TEST= 238 +KEY= 0730b7b664cfd1e321ab3047f529f7b20fc43f3f06062d4c +IV= 8e1f4830f94004c286c39d0ec014a963 +PT= b16772fe8c8a573fa25f600a8a6a8597 +CT= 3fb92771d2be2d33c40ab0409998b229 +TEST= 239 +KEY= 0a08e43b13c57eb41e1217362797da81cbce8f7f9f9e9f65 +IV= 3fb92771d2be2d33c40ab0409998b229 +PT= d4883476825ea2d30d38538d770aaf57 +CT= 190106de79836016c57a16bbba6893d2 +TEST= 240 +KEY= 195b7e1b67872b0d071311e85e14ba970eb499c425f60cb7 +IV= 190106de79836016c57a16bbba6893d2 +PT= 3b8f4f140fdffb6b13539a20744255b9 +CT= c06398537b4f534203d57184543e6516 +TEST= 241 +KEY= be0c4a8a9b581d16c77089bb255be9d50d61e84071c869a1 +IV= c06398537b4f534203d57184543e6516 +PT= e50d127ae258061da7573491fcdf361b +CT= ff615ccc9f2d3dbb3074c835ece4224e +TEST= 242 +KEY= 662a224dab1233c83811d577ba76d46e3d1520759d2c4bef +IV= ff615ccc9f2d3dbb3074c835ece4224e +PT= 347c976d20470968d82668c7304a2ede +CT= b5fb1bccbc838b87fdb10fefe6cdc45b +TEST= 243 +KEY= f4f3b47d9cc8ba798deacebb06f55fe9c0a42f9a7be18fb4 +IV= b5fb1bccbc838b87fdb10fefe6cdc45b +PT= bc276d1002c5dd8292d9963037da89b1 +CT= 151f88a44a76568fac756011b827778d +TEST= 244 +KEY= 7ea3c03193b737de98f5461f4c8309666cd14f8bc3c6f839 +IV= 151f88a44a76568fac756011b827778d +PT= bcd9054596ee644e8a50744c0f7f8da7 +CT= c1b0b6fdd717881442496794a2c890f2 +TEST= 245 +KEY= c4d94d5c4169ee4b5945f0e29b9481722e98281f610e68cb +IV= c1b0b6fdd717881442496794a2c890f2 +PT= 3d7f68d3014f3bedba7a8d6dd2ded995 +CT= 181100a04881dcf9813e4a22c6c1bb3b +TEST= 246 +KEY= a9a9483d9fc46dd34154f042d3155d8bafa6623da7cfd3f0 +IV= 181100a04881dcf9813e4a22c6c1bb3b +PT= 0fe2e2a97dffb4966d700561dead8398 +CT= aa4bec4007c38c7b86b6f9eed33e5eb1 +TEST= 247 +KEY= 5f08a3c09f4ae90beb1f1c02d4d6d1f029109bd374f18d41 +IV= aa4bec4007c38c7b86b6f9eed33e5eb1 +PT= c2392264ce43c57af6a1ebfd008e84d8 +CT= a0756ccda72462cd89df9990c0fe6676 +TEST= 248 +KEY= 6a1a4f2d25dfc9f94b6a70cf73f2b33da0cf0243b40feb37 +IV= a0756ccda72462cd89df9990c0fe6676 +PT= a6650a3432cca74a3512ecedba9520f2 +CT= f5044aecc6f35c99fcdba26dd15e1474 +TEST= 249 +KEY= b475174a46d0cdc2be6e3a23b501efa45c14a02e6551ff43 +IV= f5044aecc6f35c99fcdba26dd15e1474 +PT= 07967de17deb720cde6f5867630f043b +CT= 60645b559e7321d7fa8a3f925cfc0fa4 +TEST= 250 +KEY= 8dbb9d8a4a2e7e61de0a61762b72ce73a69e9fbc39adf0e7 +IV= 60645b559e7321d7fa8a3f925cfc0fa4 +PT= d8d3fd2077545dd039ce8ac00cfeb3a3 +CT= c4c6fd53a2572d643aa631fb85b84d0b +TEST= 251 +KEY= 97d34e4b3b9e081a1acc9c258925e3179c38ae47bc15bdec +IV= c4c6fd53a2572d643aa631fb85b84d0b +PT= f31d8f3c8ac67e081a68d3c171b0767b +CT= e1a0e460e2d1483fe954f26f45cce7a0 +TEST= 252 +KEY= 5372c72a4abf72d9fb6c78456bf4ab28756c5c28f9d95a4c +IV= e1a0e460e2d1483fe954f26f45cce7a0 +PT= 422c5429ce7bd811c4a1896171217ac3 +CT= 2695923cfb2141f05a0f144ff021bd36 +TEST= 253 +KEY= a8ca6db8a8758322ddf9ea7990d5ead82f63486709f8e77a +IV= 2695923cfb2141f05a0f144ff021bd36 +PT= 780771c65fcb907bfbb8aa92e2caf1fb +CT= a9820b527f71e95cc1f53033149fb26f +TEST= 254 +KEY= 62abf1f4178f3c73747be12befa40384ee9678541d675515 +IV= a9820b527f71e95cc1f53033149fb26f +PT= ccc14bd8df1ca8a4ca619c4cbffabf51 +CT= 2bad4e8cd7d6420d36dc2f8e77dca072 +TEST= 255 +KEY= c79b767d31d9f0fc5fd6afa738724189d84a57da6abbf567 +IV= 2bad4e8cd7d6420d36dc2f8e77dca072 +PT= 1eff63c71b10dcc7a53087892656cc8f +CT= c21303aab04e2caf1893396dd405b265 +TEST= 256 +KEY= 1f3c7ff71340deec9dc5ac0d883c6d26c0d96eb7bebe4702 +IV= c21303aab04e2caf1893396dd405b265 +PT= 209270b7768e5553d8a7098a22992e10 +CT= b220025b5307c9d5d1eeb4b427e7263f +TEST= 257 +KEY= 867cb381e6d532b32fe5ae56db3ba4f31137da039959613d +IV= b220025b5307c9d5d1eeb4b427e7263f +PT= 8546a6c9b4cef0229940cc76f595ec5f +CT= b925c660ebe409050da369e58c601f4d +TEST= 258 +KEY= 33b33f93622e509296c0683630dfadf61c94b3e615397e70 +IV= b925c660ebe409050da369e58c601f4d +PT= 1f4930242c2951c4b5cf8c1284fb6221 +CT= 67da7b4beab2152d21c54f389f9282d4 +TEST= 259 +KEY= e8ec3394af44dd34f11a137dda6db8db3d51fcde8aabfca4 +IV= 67da7b4beab2152d21c54f389f9282d4 +PT= 41611ae93be61306db5f0c07cd6a8da6 +CT= 4c116d3ed0b021129ccd1764d132a72d +TEST= 260 +KEY= 92f61f4cb5794268bd0b7e430add99c9a19cebba5b995b89 +IV= 4c116d3ed0b021129ccd1764d132a72d +PT= e7b1e63fbd5b4ca77a1a2cd81a3d9f5c +CT= fe1c3096c14af2a4dc840207bfffc0af +TEST= 261 +KEY= 08dc826b4ddbac4d43174ed5cb976b6d7d18e9bde4669b26 +IV= fe1c3096c14af2a4dc840207bfffc0af +PT= 9a0d034b1931fd599a2a9d27f8a2ee25 +CT= ed500812a10cc6c4eed0836871f85aa9 +TEST= 262 +KEY= 486ebc43a876ff2aae4746c76a9bada993c86ad5959ec18f +IV= ed500812a10cc6c4eed0836871f85aa9 +PT= 8237641b58069afd40b23e28e5ad5367 +CT= 0ad90c1c13e7c1318057a417c0b9b97c +TEST= 263 +KEY= f340d2cac4645595a49e4adb797c6c98139fcec2552778f3 +IV= 0ad90c1c13e7c1318057a417c0b9b97c +PT= 905119e1f11e4b04bb2e6e896c12aabf +CT= b260ffa5806a4a6d8845fa6146a565ed +TEST= 264 +KEY= df326741bd1ee2ff16feb57ef91626f59bda34a313821d1e +IV= b260ffa5806a4a6d8845fa6146a565ed +PT= 4f639233904531162c72b58b797ab76a +CT= 2d27a1a3968e30ebca463c8709d0fd83 +TEST= 265 +KEY= d4c684692e05983c3bd914dd6f98161e519c08241a52e09d +IV= 2d27a1a3968e30ebca463c8709d0fd83 +PT= 428b700fb3cd18790bf4e328931b7ac3 +CT= d350ccf3b440006c9f18e99dd5b69920 +TEST= 266 +KEY= 9dd5275ffdcd5d2de889d82edbd81672ce84e1b9cfe479bd +IV= d350ccf3b440006c9f18e99dd5b69920 +PT= 97f4a6256a9e22fb4913a336d3c8c511 +CT= f5a0571eb7e4719b862ebc47141ea319 +TEST= 267 +KEY= 0a3b329a4973d7a21d298f306c3c67e948aa5dfedbfadaa4 +IV= f5a0571eb7e4719b862ebc47141ea319 +PT= e355f7eba4dac16b97ee15c5b4be8a8f +CT= 4f18730073d3e78cad356441f1317b2d +TEST= 268 +KEY= 3bb3a19ef4eb8a755231fc301fef8065e59f39bf2acba189 +IV= 4f18730073d3e78cad356441f1317b2d +PT= a20b3b6c41e88e9d31889304bd985dd7 +CT= aeaecb17b9009aaf1e4e9cc02653194b +TEST= 269 +KEY= 4b9ddd2f821ce4d1fc9f3727a6ef1acafbd1a57f0c98b8c2 +IV= aeaecb17b9009aaf1e4e9cc02653194b +PT= 5d2e4a96f9bb4ad4702e7cb176f76ea4 +CT= 26851709960a42d5711ebdc7d40535fc +TEST= 270 +KEY= d7273499c5ba2842da1a202e30e5581f8acf18b8d89d8d3e +IV= 26851709960a42d5711ebdc7d40535fc +PT= 202534ea0a1952a19cbae9b647a6cc93 +CT= ff8bffb98eda7e54664ae879551b5497 +TEST= 271 +KEY= 7870ff6b66070ab02591df97be3f264bec85f0c18d86d9a9 +IV= ff8bffb98eda7e54664ae879551b5497 +PT= 365cfe282b9508cfaf57cbf2a3bd22f2 +CT= d0809c84a97221e6f8dcb483b38ec7e1 +TEST= 272 +KEY= f4e6dfdf4a081200f5114313174d07ad145944423e081e48 +IV= d0809c84a97221e6f8dcb483b38ec7e1 +PT= 915323f59134ab838c9620b42c0f18b0 +CT= dc8a24b8decf81e0412dbf10127119ec +TEST= 273 +KEY= 336a7c81a4be3fe9299b67abc982864d5574fb522c7907a4 +IV= dc8a24b8decf81e0412dbf10127119ec +PT= 0fc4387e49f666b8c78ca35eeeb62de9 +CT= 84e370df6ca478ba85fc0874393ce442 +TEST= 274 +KEY= f8adc39e17cddeb0ad781774a526fef7d088f3261545e3e6 +IV= 84e370df6ca478ba85fc0874393ce442 +PT= 34bfefd3e43d8ee0cbc7bf1fb373e159 +CT= 2c109a8363d1d0fb69ca77abfa922f05 +TEST= 275 +KEY= 2b26d271208bd64f81688df7c6f72e0cb942848defd7cce3 +IV= 2c109a8363d1d0fb69ca77abfa922f05 +PT= d28d86d5199e7e30d38b11ef374608ff +CT= f1749efe66d339bc99ae4d9f63c90490 +TEST= 276 +KEY= acb8d3e6f5a45f0c701c1309a02417b020ecc9128c1ec873 +IV= f1749efe66d339bc99ae4d9f63c90490 +PT= 2adafa1911c5e9bd879e0197d52f8943 +CT= 3b2a7c4278e1f071bfa29a6b0bff4a15 +TEST= 277 +KEY= ccee75264dd770c44b366f4bd8c5e7c19f4e537987e18266 +IV= 3b2a7c4278e1f071bfa29a6b0bff4a15 +PT= 84e244b62df08dc76056a6c0b8732fc8 +CT= a35f83a5ee0b1c3b9dad76deaed96d72 +TEST= 278 +KEY= f8f9239cdb5cc963e869ecee36cefbfa02e325a72938ef14 +IV= a35f83a5ee0b1c3b9dad76deaed96d72 +PT= f0b652f296cf162b341756ba968bb9a7 +CT= d5867ffe2fb75e309d3345611b25e3b0 +TEST= 279 +KEY= 509a10aba5eaf2963def93101979a5ca9fd060c6321d0ca4 +IV= d5867ffe2fb75e309d3345611b25e3b0 +PT= c47d42ae34131463a86333377eb63bf5 +CT= 6e136f01638afbe3554218431df44e7e +TEST= 280 +KEY= 9b52c39c38f16cce53fcfc117af35e29ca9278852fe942da +IV= 6e136f01638afbe3554218431df44e7e +PT= 78e05783eaebe1bdcbc8d3379d1b9e58 +CT= fb6acd3d0cf805374ad07ef5c038ebf6 +TEST= 281 +KEY= 2044f086923d5e43a896312c760b5b1e80420670efd1a92c +IV= fb6acd3d0cf805374ad07ef5c038ebf6 +PT= 02415b8e4d915492bb16331aaacc328d +CT= 0086c26da11540ff5f485d7b238fd98c +TEST= 282 +KEY= 12ce4c4109606cd7a810f341d71e1be1df0a5b0bcc5e70a0 +IV= 0086c26da11540ff5f485d7b238fd98c +PT= 0a2988237132b0b3328abcc79b5d3294 +CT= f2e94c71a2ae0fcb096d8259b931cf8d +TEST= 283 +KEY= 21bbcda7fbc5229c5af9bf3075b0142ad667d952756fbf2d +IV= f2e94c71a2ae0fcb096d8259b931cf8d +PT= 4234b6c7f1ce98a3337581e6f2a54e4b +CT= 3b52e7834263c6790763706943741fd8 +TEST= 284 +KEY= bb451732881a996161ab58b337d3d253d104a93b361ba0f5 +IV= 3b52e7834263c6790763706943741fd8 +PT= f8509fb57e14501f9afeda9573dfbbfd +CT= 93fca9f122cb707213d0cd72d8e6bf74 +TEST= 285 +KEY= 857d076e9a127a84f257f1421518a221c2d46449eefd1f81 +IV= 93fca9f122cb707213d0cd72d8e6bf74 +PT= aa4d07dfad030be03e38105c1208e3e5 +CT= 50717568d21862aecfaa898337405c96 +TEST= 286 +KEY= 1bcfd020d63709e0a226842ac700c08f0d7eedcad9bd4317 +IV= 50717568d21862aecfaa898337405c96 +PT= 7b488d7bbb2d538e9eb2d74e4c257364 +CT= 0338d74260cb6cbb1b220de7e4cc0bcf +TEST= 287 +KEY= ccddf5d0bbce202da11e5368a7cbac34165ce02d3d7148d8 +IV= 0338d74260cb6cbb1b220de7e4cc0bcf +PT= 16e01f8b3e94ac26d71225f06df929cd +CT= 698ad17bb2f5f06c0465bee34a7dcedd +TEST= 288 +KEY= b7f556bc9bb4dc49c8948213153e5c5812395ece770c8605 +IV= 698ad17bb2f5f06c0465bee34a7dcedd +PT= 3ed0c80afdefe8bf7b28a36c207afc64 +CT= e20129557f795c2b1cc32a5494824a4b +TEST= 289 +KEY= 4b00d75969c3549c2a95ab466a4700730efa749ae38ecc4e +IV= e20129557f795c2b1cc32a5494824a4b +PT= 20be0cd6c2244384fcf581e5f27788d5 +CT= c2f9dd55e91f4796636fec9745410087 +TEST= 290 +KEY= 5edcc5155ba684a4e86c7613835847e56d95980da6cfccc9 +IV= c2f9dd55e91f4796636fec9745410087 +PT= b2df53df1139fb9915dc124c3265d038 +CT= 015d51cd3568eb4ec210b58ffa89a409 +TEST= 291 +KEY= 21ba26ac6880aacde93127deb630acabaf852d825c4668c0 +IV= 015d51cd3568eb4ec210b58ffa89a409 +PT= 401094b8b47cbdc87f66e3b933262e69 +CT= 2987d39c19e6997957bdd0caf010f778 +TEST= 292 +KEY= bba7abc0a20ccbdec0b6f442afd635d2f838fd48ac569fb8 +IV= 2987d39c19e6997957bdd0caf010f778 +PT= efc30498827aad9a9a1d8d6cca8c6113 +CT= e01aa987c9520ef8ebf53e97371d056b +TEST= 293 +KEY= 5322d81baa29410320ac5dc566843b2a13cdc3df9b4b9ad3 +IV= e01aa987c9520ef8ebf53e97371d056b +PT= 685d6f660d40105ce88573db08258add +CT= d1265abfcfa75fc65e94983bff75cd48 +TEST= 294 +KEY= 19df73ebf1cef669f18a077aa92364ec4d595be4643e579b +IV= d1265abfcfa75fc65e94983bff75cd48 +PT= dd6e090e9981e5f24afdabf05be7b76a +CT= 605fdd1ca95b8fe1a5e26dba10241914 +TEST= 295 +KEY= f7d1d0ca3daa851891d5da660078eb0de8bb365e741a4e8f +IV= 605fdd1ca95b8fe1a5e26dba10241914 +PT= 9f8442ee8b5a325fee0ea321cc647371 +CT= 76d67121fdeaeb6b81dbb29565f71e8e +TEST= 296 +KEY= ffff200ea04824e9e703ab47fd920066696084cb11ed5001 +IV= 76d67121fdeaeb6b81dbb29565f71e8e +PT= 5af386509f0c8baa082ef0c49de2a1f1 +CT= 7e1d833dc8d73228b7dfde918e31e5e7 +TEST= 297 +KEY= 2a7d40b689490fc7991e287a3545324edebf5a5a9fdcb5e6 +IV= 7e1d833dc8d73228b7dfde918e31e5e7 +PT= 02ab05f508acdd21d58260b829012b2e +CT= d6ca06d415ea5d750b5d06c252645a43 +TEST= 298 +KEY= 134154161a39e2cf4fd42eae20af6f3bd5e25c98cdb8efa5 +IV= d6ca06d415ea5d750b5d06c252645a43 +PT= e63873ae14dd3ba8393c14a09370ed08 +CT= bfea32e77bc1607921c54027c01c3edf +TEST= 299 +KEY= ad8af90935a6b455f03e1c495b6e0f42f4271cbf0da4d17a +IV= bfea32e77bc1607921c54027c01c3edf +PT= bad47b1fbf949870becbad1f2f9f569a +CT= a86ffc9a91c79afe47899b3934f3e05e +TEST= 300 +KEY= d88a2e828514cec25851e0d3caa995bcb3ae878639573124 +IV= a86ffc9a91c79afe47899b3934f3e05e +PT= 2a2115074a9767747500d78bb0b27a97 +CT= 507ed155cc3ed3b1922bbc166812a7fe +TEST= 301 +KEY= 2cddf1a577a3c86c082f31860697460d21853b90514596da +IV= 507ed155cc3ed3b1922bbc166812a7fe +PT= 308d27178aba22bcf457df27f2b706ae +CT= 87f4eea7cd2438f3edcb650824a2d638 +TEST= 302 +KEY= 2b9d006908018d648fdbdf21cbb37efecc4e5e9875e740e2 +IV= 87f4eea7cd2438f3edcb650824a2d638 +PT= 28f6c452d061e3db0740f1cc7fa24508 +CT= dba57dda73a4e987ea32ef113877e908 +TEST= 303 +KEY= fc69838410d06425547ea2fbb8179779267cb1894d90a9ea +IV= dba57dda73a4e987ea32ef113877e908 +PT= 91cfb50ffbe97d8ad7f483ed18d1e941 +CT= 1720ed3e3b685a19cda66bd09bd4da5f +TEST= 304 +KEY= 541aab6191e2c51f435e4fc5837fcd60ebdada59d64473b5 +IV= 1720ed3e3b685a19cda66bd09bd4da5f +PT= 78ff980c48faeba0a87328e58132a13a +CT= ed2e260103caa77598fd195d02b484c8 +TEST= 305 +KEY= 761b0a3f50e2acc1ae7069c480b56a157327c304d4f0f77d +IV= ed2e260103caa77598fd195d02b484c8 +PT= 8c01554039d8f8ee2201a15ec10069de +CT= a9f0e16716b3ac14e06f18f5aeecb541 +TEST= 306 +KEY= 70056cd35cf430d5078088a39606c6019348dbf17a1c423c +IV= a9f0e16716b3ac14e06f18f5aeecb541 +PT= c139651464d1614b061e66ec0c169c14 +CT= a41ddf008e0d52b627982d4196c3069e +TEST= 307 +KEY= ee1932746487b7bea39d57a3180b94b7b4d0f6b0ecdf44a2 +IV= a41ddf008e0d52b627982d4196c3069e +PT= c617572884721a3d9e1c5ea73873876b +CT= 44e5304e35a21660c450faf84d87b13b +TEST= 308 +KEY= 13d43e4526f8243fe77867ed2da982d770800c48a158f599 +IV= 44e5304e35a21660c450faf84d87b13b +PT= 9c72e08dd264d6b7fdcd0c31427f9381 +CT= 173b2c7a54a1a3cf3d39dcb68da1c539 +TEST= 309 +KEY= 7cb72de2caed4080f0434b97790821184db9d0fe2cf930a0 +IV= 173b2c7a54a1a3cf3d39dcb68da1c539 +PT= 4df3764f679e29446f6313a7ec1564bf +CT= f1a167a3eb8f3fab9f9b1570475ed15a +TEST= 310 +KEY= a7e6340a1278a3e801e22c3492871eb3d222c58e6ba7e1fa +IV= f1a167a3eb8f3fab9f9b1570475ed15a +PT= 2ed419ea11aaf8f3db5119e8d895e368 +CT= 2c5c5b10e285fe6c7e4750d2f9c1bd23 +TEST= 311 +KEY= 4b535b4d088f09192dbe77247002e0dfac65955c92665cd9 +IV= 2c5c5b10e285fe6c7e4750d2f9c1bd23 +PT= a3e9ea99771d0c02ecb56f471af7aaf1 +CT= a12b4a15dbfae2e7d4a7a792cd3c121a +TEST= 312 +KEY= 2f0e7bad76dc0a718c953d31abf8023878c232ce5f5a4ec3 +IV= a12b4a15dbfae2e7d4a7a792cd3c121a +PT= 1cc105d2604628b7645d20e07e530368 +CT= 65ce700b785d901c5e5e08f7e74bb296 +TEST= 313 +KEY= 6111c386de35c954e95b4d3ad3a59224269c3a39b811fc55 +IV= 65ce700b785d901c5e5e08f7e74bb296 +PT= f902717af7f0794e4e1fb82ba8e9c325 +CT= e7f3bd1056c504285ffc7f65b395dcae +TEST= 314 +KEY= 3b8f85e6fd28c4610ea8f02a8560960c7960455c0b8420fb +IV= e7f3bd1056c504285ffc7f65b395dcae +PT= 20a5529420d6d4c35a9e4660231d0d35 +CT= 6cc36458adecca8b7198fd272a8c76c8 +TEST= 315 +KEY= d404c97e089f240b626b9472288c5c8708f8b87b21085633 +IV= 6cc36458adecca8b7198fd272a8c76c8 +PT= 1094639f6723c9b0ef8b4c98f5b7e06a +CT= d01c3c1e036d804563f04926ed203146 +TEST= 316 +KEY= 4779b44770085e18b277a86c2be1dcc26b08f15dcc286775 +IV= d01c3c1e036d804563f04926ed203146 +PT= a482437681dfe307937d7d3978977a13 +CT= 319d579de9e55c8a3b2097ee8c93375f +TEST= 317 +KEY= 22362304d7417bb483eafff1c2048048502866b340bb502a +IV= 319d579de9e55c8a3b2097ee8c93375f +PT= 7af0c8274b5c243b654f9743a74925ac +CT= 5f722165b8b422e088814b77a6b4d8e4 +TEST= 318 +KEY= 06fda49350c16feadc98de947ab0a2a8d8a92dc4e60f88ce +IV= 5f722165b8b422e088814b77a6b4d8e4 +PT= a37964fa3e8145ef24cb87978780145e +CT= c0417773dfd3fc83c2ce12d388f5dd8f +TEST= 319 +KEY= 366245f8cbc490611cd9a9e7a5635e2b1a673f176efa5541 +IV= c0417773dfd3fc83c2ce12d388f5dd8f +PT= 5d7e1e14f7bd7db6309fe16b9b05ff8b +CT= 2eae64b58c18ac7add2ee62896ab708d +TEST= 320 +KEY= a1bb8a9f9be8f1383277cd52297bf251c749d93ff85125cc +IV= 2eae64b58c18ac7add2ee62896ab708d +PT= 3adc6991bf15554f97d9cf67502c6159 +CT= 069fc966f8a985ad41617cb0148d2b96 +TEST= 321 +KEY= 7ab228e4114c14ab34e80434d1d277fc8628a58fecdc0e5a +IV= 069fc966f8a985ad41617cb0148d2b96 +PT= 4405b80cce92fd71db09a27b8aa4e593 +CT= 13459a0239a33bc41424a5d03c6b2864 +TEST= 322 +KEY= 78d1bc27e5cbbb1d27ad9e36e8714c38920c005fd0b7263e +IV= 13459a0239a33bc41424a5d03c6b2864 +PT= b9baa861988616cd026394c3f487afb6 +CT= 08da968a2baeb9b763eb42bf555a2bfa +TEST= 323 +KEY= f53b033a22ea1d7b2f7708bcc3dff58ff1e742e085ed0dc4 +IV= 08da968a2baeb9b763eb42bf555a2bfa +PT= 30654265ad0fb24e8deabf1dc721a666 +CT= e8412bdc1e75ac8e2c28552e2195795e +TEST= 324 +KEY= 4928b51af5c2408cc7362360ddaa5901ddcf17cea478749a +IV= e8412bdc1e75ac8e2c28552e2195795e +PT= eeb05e487eeb907fbc13b620d7285df7 +CT= e01839f95680d27e048383236d59ee85 +TEST= 325 +KEY= c4db91eafc4c26d7272e1a998b2a8b7fd94c94edc9219a1f +IV= e01839f95680d27e048383236d59ee85 +PT= ba0160229d7471fe8df324f0098e665b +CT= d41902e6be946ceb1612cfee2f33f7cd +TEST= 326 +KEY= b550731e659834a1f337187f35bee794cf5e5b03e6126dd2 +IV= d41902e6be946ceb1612cfee2f33f7cd +PT= 7dc970afaf99ba6c718be2f499d41276 +CT= 326c3523173d62e9e145592e7a774311 +TEST= 327 +KEY= 5f87f6c2402b2352c15b2d5c2283857d2e1b022d9c652ec3 +IV= 326c3523173d62e9e145592e7a774311 +PT= 24ed6dae1b24cc2bead785dc25b317f3 +CT= ddae8aff94604ffa82ae4ffb06953c01 +TEST= 328 +KEY= 3636c04061996cd01cf5a7a3b6e3ca87acb54dd69af012c2 +IV= ddae8aff94604ffa82ae4ffb06953c01 +PT= 98e262805b8d9fd169b1368221b24f82 +CT= 0d75dcfa4941bce658db2c71cb270be7 +TEST= 329 +KEY= 64b9a0de7dda73c011807b59ffa27661f46e61a751d71925 +IV= 0d75dcfa4941bce658db2c71cb270be7 +PT= 2bc34c226d41d8ce528f609e1c431f10 +CT= d70ed1dcdb9420e4b4a0d2a7c5148de3 +TEST= 330 +KEY= f64196479d35f74bc68eaa852436568540ceb30094c394c6 +IV= d70ed1dcdb9420e4b4a0d2a7c5148de3 +PT= 1015cb1e4569986c92f83699e0ef848b +CT= 524314dccf2ade5f8c3d241824c2ba73 +TEST= 331 +KEY= 686ab32115a2884c94cdbe59eb1c88daccf39718b0012eb5 +IV= 524314dccf2ade5f8c3d241824c2ba73 +PT= fb8b49053f724b7d9e2b256688977f07 +CT= 7c579324f7251edf95bde2320104aca6 +TEST= 332 +KEY= 34dd68e6f442f6d9e89a2d7d1c399605594e752ab1058213 +IV= 7c579324f7251edf95bde2320104aca6 +PT= a3b71504a8daa3515cb7dbc7e1e07e95 +CT= 921a66278a6d1e61d4b509f199f8fe55 +TEST= 333 +KEY= 19c9f40a858dd9ea7a804b5a965488648dfb7cdb28fd7c46 +IV= 921a66278a6d1e61d4b509f199f8fe55 +PT= b0b651905e1b38fb2d149cec71cf2f33 +CT= f2c37cf94514c902a0e438159c2c9f5f +TEST= 334 +KEY= b68812fc7d4e40d6884337a3d34041662d1f44ceb4d1e319 +IV= f2c37cf94514c902a0e438159c2c9f5f +PT= 7de03f498839f8daaf41e6f6f8c3993c +CT= 4596a25a85d06bcc74f686f8f1e8c203 +TEST= 335 +KEY= 2836f982ca563379cdd595f956902aaa59e9c2364539211a +IV= 4596a25a85d06bcc74f686f8f1e8c203 +PT= d5425e42151014ed9ebeeb7eb71873af +CT= 0ba46efa61fb07430c51d7ce267e1f47 +TEST= 336 +KEY= bc8c7f9051c98892c671fb03376b2de955b815f863473e5d +IV= 0ba46efa61fb07430c51d7ce267e1f47 +PT= 5d060eec179c1b9e94ba86129b9fbbeb +CT= 49f7d7d7bab7795a4e74a854c8c1ac53 +TEST= 337 +KEY= e661f49b22bc92358f862cd48ddc54b31bccbdacab86920e +IV= 49f7d7d7bab7795a4e74a854c8c1ac53 +PT= c598926a437a27a45aed8b0b73751aa7 +CT= 0eb97e32aec4ce3959197c5b72c1abc5 +TEST= 338 +KEY= e625ab8664bcf057813f52e623189a8a42d5c1f7d94739cb +IV= 0eb97e32aec4ce3959197c5b72c1abc5 +PT= b7272c4d712f9cf500445f1d46006262 +CT= da9f53564e69aed610bccad13c00a241 +TEST= 339 +KEY= 75fc1d46afd886915ba001b06d71345c52690b26e5479b8a +IV= da9f53564e69aed610bccad13c00a241 +PT= fe7513cf9353bbf093d9b6c0cb6476c6 +CT= 7f61b6f9b7c14eb6179f2da597ec1183 +TEST= 340 +KEY= f92d3201da84422024c1b749dab07aea45f6268372ab8a09 +IV= 7f61b6f9b7c14eb6179f2da597ec1183 +PT= 4e4d3df58d7d9c338cd12f47755cc4b1 +CT= f9216373c300aa9be96bd8c98f9716b7 +TEST= 341 +KEY= 680384a1e522c848dde0d43a19b0d071ac9dfe4afd3c9cbe +IV= f9216373c300aa9be96bd8c98f9716b7 +PT= 1a7b30192d54142e912eb6a03fa68a68 +CT= 8512ba1b57bc04ef3c021db1ec3ca9c6 +TEST= 342 +KEY= de3b85bd09ec93b858f26e214e0cd49e909fe3fb11003578 +IV= 8512ba1b57bc04ef3c021db1ec3ca9c6 +PT= 86587ff85d73f77fb638011cecce5bf0 +CT= fa582c37d4063d61428c886a9fd54c84 +TEST= 343 +KEY= c574ca7322f443fba2aa42169a0ae9ffd2136b918ed579fc +IV= fa582c37d4063d61428c886a9fd54c84 +PT= 3a7425a8b7bc3a941b4f4fce2b18d043 +CT= 7571b4d46cbc671964ab5bde9c843dcf +TEST= 344 +KEY= 078109812efba9dbd7dbf6c2f6b68ee6b6b8304f12514433 +IV= 7571b4d46cbc671964ab5bde9c843dcf +PT= 5224060f0848f028c2f5c3f20c0fea20 +CT= da9eb72d65d492fe88b819674b8433c1 +TEST= 345 +KEY= 5bf7fa2e15a87c850d4541ef93621c183e00292859d577f2 +IV= da9eb72d65d492fe88b819674b8433c1 +PT= 2622b2a19cbbad065c76f3af3b53d55e +CT= c66ef470ceddd499ae6214e75de9051b +TEST= 346 +KEY= ecbe2377caf0c9e9cb2bb59f5dbfc88190623dcf043c72e9 +IV= c66ef470ceddd499ae6214e75de9051b +PT= 833f22a76d51e360b749d959df58b56c +CT= 57407e3defff753e879619424fce5713 +TEST= 347 +KEY= 4eab83da78d60cb09c6bcba2b240bdbf17f4248d4bf225fa +IV= 57407e3defff753e879619424fce5713 +PT= 25781a534fb9192ca215a0adb226c559 +CT= 644d89381439e7bbed7dc344cbf4c886 +TEST= 348 +KEY= c4977ef1f6271d6cf826429aa6795a04fa89e7c98006ed7c +IV= 644d89381439e7bbed7dc344cbf4c886 +PT= e8edd9aa25a8c5b08a3cfd2b8ef111dc +CT= ca4b2680d0ee8e28818be8de8d625adc +TEST= 349 +KEY= 80212f6d11c6dae2326d641a7697d42c7b020f170d64b7a0 +IV= ca4b2680d0ee8e28818be8de8d625adc +PT= 8f667eedb79e930644b6519ce7e1c78e +CT= 5497f477ad5e65bb748a781533f1bcef +TEST= 350 +KEY= a05df1df7e0393a566fa906ddbc9b1970f8877023e950b4f +IV= 5497f477ad5e65bb748a781533f1bcef +PT= 099fdb76e6d21788207cdeb26fc54947 +CT= c8c541b359bf1b53441c4efffd2f65af +TEST= 351 +KEY= 3970f236f800d18bae3fd1de8276aac44b9439fdc3ba6ee0 +IV= c8c541b359bf1b53441c4efffd2f65af +PT= c79fa2079eccebcd992d03e98603422e +CT= e59765a861de0168161ea1360b5966a9 +TEST= 352 +KEY= 8ed3bfa3e4c9453c4ba8b476e3a8abac5d8a98cbc8e30849 +IV= e59765a861de0168161ea1360b5966a9 +PT= afbcd48f06709730b7a34d951cc994b7 +CT= 5a65435bd1b4db742e8aff8c402927fc +TEST= 353 +KEY= 2a3f01e56e45895b11cdf72d321c70d87300674788ca2fb5 +IV= 5a65435bd1b4db742e8aff8c402927fc +PT= cf684f64b8ccd2eda4ecbe468a8ccc67 +CT= 551af68d50d23408f47214c0b18e6c8a +TEST= 354 +KEY= ca12ac8d17941e6244d701a062ce44d0877273873944433f +IV= 551af68d50d23408f47214c0b18e6c8a +PT= 561072ac144854c1e02dad6879d19739 +CT= adff035c89e040a4c3cce190d6cb7283 +TEST= 355 +KEY= d1ca1b08a51b5086e92802fceb2e047444be9217ef8f31bc +IV= adff035c89e040a4c3cce190d6cb7283 +PT= 827ade7d0f329d9a1bd8b785b28f4ee4 +CT= 425f5596d3fd37243ee59d6fc1f5adcc +TEST= 356 +KEY= 54ec325fe63aa470ab77576a38d333507a5b0f782e7a9c70 +IV= 425f5596d3fd37243ee59d6fc1f5adcc +PT= 4aaf21e64f8dbdb0852629574321f4f6 +CT= d85520fe860c9f320cdc8192a900f499 +TEST= 357 +KEY= 5b4612bc35bfc12473227794bedfac6276878eea877a68e9 +IV= d85520fe860c9f320cdc8192a900f499 +PT= 0d046a402a1860c70faa20e3d3856554 +CT= 11c20f3aced79b37402b2f04886d4cc7 +TEST= 358 +KEY= 5052384ce705101562e078ae7008375536aca1ee0f17242e +IV= 11c20f3aced79b37402b2f04886d4cc7 +PT= 7546e6521bbbfafe0b142af0d2bad131 +CT= bcda339266e3afb779af17ce34218be5 +TEST= 359 +KEY= f7ecfb2aa4fc6de2de3a4b3c16eb98e24f03b6203b36afcb +IV= bcda339266e3afb779af17ce34218be5 +PT= 85df7958789e9090a7bec36643f97df7 +CT= 300d46eab6466314bb00dbc869c77f4e +TEST= 360 +KEY= 1e27229506ec9555ee370dd6a0adfbf6f4036de852f1d085 +IV= 300d46eab6466314bb00dbc869c77f4e +PT= c6ced700614467a0e9cbd9bfa210f8b7 +CT= 51735c075a14fe95d4a02f527a9474d3 +TEST= 361 +KEY= 857f653e1e811cabbf4451d1fab9056320a342ba2865a456 +IV= 51735c075a14fe95d4a02f527a9474d3 +PT= 53d436401d6811b19b5847ab186d89fe +CT= 827017531e56980c4357549d0e70114f +TEST= 362 +KEY= 1bce612f3a5262223d344682e4ef9d6f63f416272615b519 +IV= 827017531e56980c4357549d0e70114f +PT= 4c1bd17ffd65ab2c9eb1041124d37e89 +CT= 751bca9516123906561fb8af2208cee1 +TEST= 363 +KEY= 7c7034ec27524fc3482f8c17f2fda46935ebae88041d7bf8 +IV= 751bca9516123906561fb8af2208cee1 +PT= 7c23d6e77039f35267be55c31d002de1 +CT= 82cafbbe859fa80b2a8e58cec074b01a +TEST= 364 +KEY= 7f31eee0447bb53ccae577a977620c621f65f646c469cbe2 +IV= 82cafbbe859fa80b2a8e58cec074b01a +PT= b91ff7759419bbb10341da0c6329faff +CT= b7614376c9bafc92e17e39d2bdf1f2ef +TEST= 365 +KEY= e705144bce40fc987d8434dfbed8f0f0fe1bcf947998390d +IV= b7614376c9bafc92e17e39d2bdf1f2ef +PT= 72b3472217ac80979834faab8a3b49a4 +CT= a63ba38fddfe99d28ba447871bba6211 +TEST= 366 +KEY= 15c813d2d9ad1494dbbf97506326692275bf881362225b1c +IV= a63ba38fddfe99d28ba447871bba6211 +PT= 349f8e5fae004b51f2cd079917ede80c +CT= c87e448872e619419766cb46787f2581 +TEST= 367 +KEY= b12b790c217821da13c1d3d811c07063e2d943551a5d7e9d +IV= c87e448872e619419766cb46787f2581 +PT= ec474c794e3c8322a4e36adef8d5354e +CT= 73dd478f7f41857f7a5de7edf3f1af7b +TEST= 368 +KEY= 1cfa6a54b3e572dc601c94576e81f51c9884a4b8e9acd1e6 +IV= 73dd478f7f41857f7a5de7edf3f1af7b +PT= 48f8361ef11f94c1add11358929d5306 +CT= 8b85de2cbe5c96cbdfe16064079754d9 +TEST= 369 +KEY= 6718c10e683f4d73eb994a7bd0dd63d74765c4dcee3b853f +IV= 8b85de2cbe5c96cbdfe16064079754d9 +PT= 59bfda108542eddb7be2ab5adbda3faf +CT= 56ff53384ced780f604f86ec0ce26b26 +TEST= 370 +KEY= 704ed4f1e96776a2bd6619439c301bd8272a4230e2d9ee19 +IV= 56ff53384ced780f604f86ec0ce26b26 +PT= 468fdbdb8bc26b5a175615ff81583bd1 +CT= 7b0c2436262a262c5fafc3a9b786db00 +TEST= 371 +KEY= 67afb86317b622b2c66a3d75ba1a3df478858199555f3519 +IV= 7b0c2436262a262c5fafc3a9b786db00 +PT= 768be978e5e8ca6e17e16c92fed15410 +CT= d32206d5d1521ab667516391810f5719 +TEST= 372 +KEY= 0bf4e0c32ea3d69615483ba06b4827421fd4e208d4506200 +IV= d32206d5d1521ab667516391810f5719 +PT= 1943c5d93d10a0e36c5b58a03915f424 +CT= 6bce2bec0d5a0da9051af2b34a873694 +TEST= 373 +KEY= 924d1c527572a2ef7e86104c66122aeb1ace10bb9ed75494 +IV= 6bce2bec0d5a0da9051af2b34a873694 +PT= e3020d099d0841c299b9fc915bd17479 +CT= 3beba6ba0762bf5faa4d26b70071b4a9 +TEST= 374 +KEY= cfa41db53f2f8766456db6f6617095b4b083360c9ea6e03d +IV= 3beba6ba0762bf5faa4d26b70071b4a9 +PT= 31f7316f0d1012cd5de901e74a5d2589 +CT= c4253ced7f88df97596b08a15baef533 +TEST= 375 +KEY= e2b9d43008c1537281488a1b1ef84a23e9e83eadc508150e +IV= c4253ced7f88df97596b08a15baef533 +PT= 00365d6755a898e62d1dc98537eed414 +CT= 2d4eb6ba84d1c0c978ea20c1693bb75c +TEST= 376 +KEY= 43ea75dfd5b35ccbac063ca19a298aea91021e6cac33a252 +IV= 2d4eb6ba84d1c0c978ea20c1693bb75c +PT= 599279c68b67a988a153a1efdd720fb9 +CT= 03698cc5e133ad8855b847c124fd2778 +TEST= 377 +KEY= 8f2c76fcfbd8060daf6fb0647b1a2762c4ba59ad88ce852a +IV= 03698cc5e133ad8855b847c124fd2778 +PT= 47efaf7e090b94b5ccc603232e6b5ac6 +CT= 8d44c11c25ade5631e05faaecca70af7 +TEST= 378 +KEY= e02084775a2e1a4e222b71785eb7c201dabfa30344698fdd +IV= 8d44c11c25ade5631e05faaecca70af7 +PT= 394ec624ebc0d79e6f0cf28ba1f61c43 +CT= 5eb407847213d5e950c66787b140bc35 +TEST= 379 +KEY= d8208a70940589f47c9f76fc2ca417e88a79c484f52933e8 +IV= 5eb407847213d5e950c66787b140bc35 +PT= f28816d227ac09f538000e07ce2b93ba +CT= 2d4fbd74a027526badc8c2a433963c22 +TEST= 380 +KEY= 858193c76afe48d951d0cb888c83458327b10620c6bf0fca +IV= 2d4fbd74a027526badc8c2a433963c22 +PT= fbaa6c644f8e08885da119b7fefbc12d +CT= fa2dae761ebbfde4b77cbcd2381165db +TEST= 381 +KEY= da9a9f800056fc6eabfd65fe9238b86790cdbaf2feae6a11 +IV= fa2dae761ebbfde4b77cbcd2381165db +PT= f66a574c26d0f15c5f1b0c476aa8b4b7 +CT= db18f5b16bf19c2bcca36091a302bf38 +TEST= 382 +KEY= bd2ab07f036032ab70e5904ff9c9244c5c6eda635dacd529 +IV= db18f5b16bf19c2bcca36091a302bf38 +PT= 04b0c1a19c6d38b467b02fff0336cec5 +CT= d3f01581b21df4e470ee595cab44912c +TEST= 383 +KEY= 7ef57f6bde41d79ca31585ce4bd4d0a82c80833ff6e84405 +IV= d3f01581b21df4e470ee595cab44912c +PT= 83bf32e0f3f3cee7c3dfcf14dd21e537 +CT= 10c69b9a04e0851b63d85d025bbaca29 +TEST= 384 +KEY= 22057a9912bb6b76b3d31e544f3455b34f58de3dad528e2c +IV= 10c69b9a04e0851b63d85d025bbaca29 +PT= 150acc96322893cc5cf005f2ccfabcea +CT= 2743fe5769dda5d591318e200af672d0 +TEST= 385 +KEY= 742a2117b51176e69490e00326e9f066de69501da7a4fcfc +IV= 2743fe5769dda5d591318e200af672d0 +PT= 93246c1a26f66daf562f5b8ea7aa1d90 +CT= 5ca8fc8db4a20b2ca8ab86b1b40da1a1 +TEST= 386 +KEY= 3c09f8c3b20be749c8381c8e924bfb4a76c2d6ac13a95d5d +IV= 5ca8fc8db4a20b2ca8ab86b1b40da1a1 +PT= d91806e0f3451c374823d9d4071a91af +CT= 25701e4c6685c98333566eb75498aeb7 +TEST= 387 +KEY= dd0386f2d0d1e8ffed4802c2f4ce32c94594b81b4731f3ea +IV= 25701e4c6685c98333566eb75498aeb7 +PT= 701a5d7027053688e10a7e3162da0fb6 +CT= e4a5889fc49b62f767f61f1d2810801a +TEST= 388 +KEY= bb9a1fa7287b0d3d09ed8a5d3055503e2262a7066f2173f0 +IV= e4a5889fc49b62f767f61f1d2810801a +PT= a110b0a38255279b66999955f8aae5c2 +CT= f1a9bda2045f3eae2ab9cee2ad352270 +TEST= 389 +KEY= 21b561dc3c44b5a5f84437ff340a6e9008db69e4c2145180 +IV= f1a9bda2045f3eae2ab9cee2ad352270 +PT= 1562cf8420963b479a2f7e7b143fb898 +CT= e7e2ba657d3482a4825d643b8c01b52e +TEST= 390 +KEY= 60a0fa1f5fa435401fa68d9a493eec348a860ddf4e15e4ae +IV= e7e2ba657d3482a4825d643b8c01b52e +PT= 930490633bc4edc941159bc363e080e5 +CT= 2fdbcd145eb8620594834b0d63bbd137 +TEST= 391 +KEY= 7dd1686f811e4017307d408e17868e311e0546d22dae3599 +IV= 2fdbcd145eb8620594834b0d63bbd137 +PT= 4bb1c43f4abc51cd1d719270deba7557 +CT= b703658ad9ffcde05e2c7e252990402e +TEST= 392 +KEY= 18203dc5aaa632f5877e2504ce7943d1402938f7043e75b7 +IV= b703658ad9ffcde05e2c7e252990402e +PT= 47931942f275f05e65f155aa2bb872e2 +CT= 5b79cb7fa90d3bb5a979a4588d4de434 +TEST= 393 +KEY= 9f6d532cbaf42fcddc07ee7b67747864e9509caf89739183 +IV= 5b79cb7fa90d3bb5a979a4588d4de434 +PT= e3a36df4eb896b4d874d6ee910521d38 +CT= 61bf460521e67b3cac638f3298ef9310 +TEST= 394 +KEY= ed4f97bc99036e83bdb8a87e469203584533139d119c0293 +IV= 61bf460521e67b3cac638f3298ef9310 +PT= 55eabdf72ccb5d737222c49023f7414e +CT= 8a27d87b53b2fb8bbaff7851af1d51f2 +TEST= 395 +KEY= e1b9a7291d885f8e379f70051520f8d3ffcc6bccbe815361 +IV= 8a27d87b53b2fb8bbaff7851af1d51f2 +PT= d30271ea236e948f0cf63095848b310d +CT= 15075fdcbd2d6fc15b9a3841a2d58c34 +TEST= 396 +KEY= 976b101ee3e10e0822982fd9a80d9712a456538d1c54df55 +IV= 15075fdcbd2d6fc15b9a3841a2d58c34 +PT= 879eed3434159d8076d2b737fe695186 +CT= 6896582462983faae443078f9768b339 +TEST= 397 +KEY= a7a3277bf5f605fc4a0e77fdca95a8b8401554028b3c6c6c +IV= 6896582462983faae443078f9768b339 +PT= 89ddabe96d1069ed30c8376516170bf4 +CT= 96fe6b921416b667aa5b34d2d2e25747 +TEST= 398 +KEY= dd57026b1d4e32a8dcf01c6fde831edfea4e60d059de3b2b +IV= 96fe6b921416b667aa5b34d2d2e25747 +PT= 8144c8bb09fc72827af42510e8b83754 +CT= eedc3677ab7b57829f6d733f8090da8a +TEST= 399 +KEY= b4d1bdf297dc0574322c2a1875f8495d752313efd94ee1a1 +IV= eedc3677ab7b57829f6d733f8090da8a +PT= 510f7a55799b39786986bf998a9237dc +CT= ba50c94440c04a8c0899d42658e25437 diff --git a/flint/test/testvals/cbcme48.txt b/flint/test/testvals/cbcme48.txt new file mode 100644 index 0000000..53d08ff --- /dev/null +++ b/flint/test/testvals/cbcme48.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 00000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= fe3c53653e2f45b56fcd88b2cc898ff0 +TEST= 1 +KEY= b2493de29713367d9faa93469f8ef596fe3c53653e2f45b56fcd88b2cc898ff0 +IV= fe3c53653e2f45b56fcd88b2cc898ff0 +PT= b2493de29713367d9faa93469f8ef596 +CT= 7ce2abaf8bef23c4816dc8ce842048a7 +TEST= 2 +KEY= 33a36646fe56f70dc0c51a3117e639f182def8cab5c06671eea0407c48a9c757 +IV= 7ce2abaf8bef23c4816dc8ce842048a7 +PT= 81ea5ba46945c1705f6f89778868cc67 +CT= 50cd14a12c6852d39654c816bfaf9ac2 +TEST= 3 +KEY= 0d6a3dace75b104ca8a303a32670bf3ad213ec6b99a834a278f4886af7065d95 +IV= 50cd14a12c6852d39654c816bfaf9ac2 +PT= 3ec95bea190de74168661992319686cb +CT= 3f411dad0e339fe281637133bf46bd13 +TEST= 4 +KEY= a53be0709bf686a7db7c3848d81ab66bed52f1c6979bab40f997f9594840e086 +IV= 3f411dad0e339fe281637133bf46bd13 +PT= a851dddc7cad96eb73df3bebfe6a0951 +CT= 5ba2c7663a4061719a7ccc2af2a3ee8a +TEST= 5 +KEY= ecf3490cb7717a5236a3a94811bebf13b6f036a0addbca3163eb3573bae30e0c +IV= 5ba2c7663a4061719a7ccc2af2a3ee8a +PT= 49c8a97c2c87fcf5eddf9100c9a40978 +CT= f105031ce7e5111317745c64f4f6d150 +TEST= 6 +KEY= ce8a062a2a9f9ede2efb43a8602bb47847f535bc4a3edb22749f69174e15df5c +IV= f105031ce7e5111317745c64f4f6d150 +PT= 22794f269deee48c1858eae071950b6b +CT= c8f030398a873550a34386d9a153d833 +TEST= 7 +KEY= 2be39545b8fc27444178bf0004c7f1048f050585c0b9ee72d7dcefceef46076f +IV= c8f030398a873550a34386d9a153d833 +PT= e569936f9263b99a6f83fca864ec457c +CT= 519cf42c0bbfcbd79679089bc5e963b4 +TEST= 8 +KEY= 80e9c0f78f99e309935c0a69b961d787de99f1a9cb0625a541a5e7552aaf64db +IV= 519cf42c0bbfcbd79679089bc5e963b4 +PT= ab0a55b23765c44dd224b569bda62683 +CT= 64ac8fea3b83584e9b7379b48f88b7a4 +TEST= 9 +KEY= 48ddbda704ba7702960820a0d2ca485cba357e43f0857debdad69ee1a527d37f +IV= 64ac8fea3b83584e9b7379b48f88b7a4 +PT= c8347d508b23940b05542ac96bab9fdb +CT= 2b1f53f35a308673e9b1e004c32b2080 +TEST= 10 +KEY= d26c4c6be601d63bdde6f1a49b5124cb912a2db0aab5fb9833677ee5660cf3ff +IV= 2b1f53f35a308673e9b1e004c32b2080 +PT= 9ab1f1cce2bba1394beed104499b6c97 +CT= 0dae66b5741fe38e544d9ec4e90abdaf +TEST= 11 +KEY= d241355db8fc5f23d0d207f72e290f189c844b05deaa1816672ae0218f064e50 +IV= 0dae66b5741fe38e544d9ec4e90abdaf +PT= 002d79365efd89180d34f653b5782bd3 +CT= d00122636cc0d9d62e614eaf0963c448 +TEST= 12 +KEY= 1bc3268a0b674a05b2fc6e18460231564c856966b26ac1c0494bae8e86658a18 +IV= d00122636cc0d9d62e614eaf0963c448 +PT= c98213d7b39b1526622e69ef682b3e4e +CT= 30ef014d1766651c524b3cc82f0140c6 +TEST= 13 +KEY= 50be5951a5c2403c52425897c442a8457c6a682ba50ca4dc1b009246a964cade +IV= 30ef014d1766651c524b3cc82f0140c6 +PT= 4b7d7fdbaea50a39e0be368f82409913 +CT= bad488702b447fabec2074e1dd37e631 +TEST= 14 +KEY= c007ee52430ff98edd206c94ed349de6c6bee05b8e48db77f720e6a774532cef +IV= bad488702b447fabec2074e1dd37e631 +PT= 90b9b703e6cdb9b28f623403297635a3 +CT= ec3862eb60e7d8d0827645bd690f71b8 +TEST= 15 +KEY= ae37c1dbebf9b269e8d10cc4f046f9fc2a8682b0eeaf03a77556a31a1d5c5d57 +IV= ec3862eb60e7d8d0827645bd690f71b8 +PT= 6e302f89a8f64be735f160501d72641a +CT= 6073d1f25f3697c1e07384c67d71d8ae +TEST= 16 +KEY= 86e8b9050ab24200e3757b67f08761534af55342b1999466952527dc602d85f9 +IV= 6073d1f25f3697c1e07384c67d71d8ae +PT= 28df78dee14bf0690ba477a300c198af +CT= 90ef55ab8837792f82cf0f002e36f8db +TEST= 17 +KEY= de93ea10bb6dc2b0a6d3919561ce5ae4da1a06e939aeed4917ea28dc4e1b7d22 +IV= 90ef55ab8837792f82cf0f002e36f8db +PT= 587b5315b1df80b045a6eaf291493bb7 +CT= 063783cb1a2137732d10ca6233c5ce93 +TEST= 18 +KEY= 3d147e3727a1feb2c6f36ab9df772e97dc2d8522238fda3a3afae2be7ddeb3b1 +IV= 063783cb1a2137732d10ca6233c5ce93 +PT= e38794279ccc3c026020fb2cbeb97473 +CT= 79c5ceee64bfd33948d2e08ebe25b7e9 +TEST= 19 +KEY= 34586c52923969647663a0d69436d7d1a5e84bcc4730090372280230c3fb0458 +IV= 79c5ceee64bfd33948d2e08ebe25b7e9 +PT= 094c1265b59897d6b090ca6f4b41f946 +CT= 87dfb65d575f56670db739c988fd7de5 +TEST= 20 +KEY= 53724bf79612a7f0237927604619dd592237fd91106f5f647f9f3bf94b0679bd +IV= 87dfb65d575f56670db739c988fd7de5 +PT= 672a27a5042bce94551a87b6d22f0a88 +CT= 643f46bc77a5fe2434753b9c38142583 +TEST= 21 +KEY= 8fbc30746f29985fffa43c8bd3c4fc664608bb2d67caa1404bea006573125c3e +IV= 643f46bc77a5fe2434753b9c38142583 +PT= dcce7b83f93b3fafdcdd1beb95dd213f +CT= fd774bd6874ea7c0d790a5015440b664 +TEST= 22 +KEY= 9a61a910701a4a42873549f78d3d9fd1bb7ff0fbe08406809c7aa5642752ea5a +IV= fd774bd6874ea7c0d790a5015440b664 +PT= 15dd99641f33d21d7891757c5ef963b7 +CT= bfcef4403428f5c96c24c249962371d4 +TEST= 23 +KEY= 8d98738f6df30113af69a7a61c1582ee04b104bbd4acf349f05e672db1719b8e +IV= bfcef4403428f5c96c24c249962371d4 +PT= 17f9da9f1de94b51285cee5191281d3f +CT= cc79f35c41f0e6c0eb03472b1d13029e +TEST= 24 +KEY= 976c27f1a15ff6780043636fc4777090c8c8f7e7955c15891b5d2006ac629910 +IV= cc79f35c41f0e6c0eb03472b1d13029e +PT= 1af4547eccacf76baf2ac4c9d862f27e +CT= 0629b80f94fbc2c1984985b9f3b85bdd +TEST= 25 +KEY= e8934c533ded166f58d65c9e60a906a5cee14fe801a7d7488314a5bf5fdac2cd +IV= 0629b80f94fbc2c1984985b9f3b85bdd +PT= 7fff6ba29cb2e01758953ff1a4de7635 +CT= f2a70f4ed1a836696841d523f2650b55 +TEST= 26 +KEY= 8116688c16d2c26d162c4d813fb267103c4640a6d00fe121eb55709cadbfc998 +IV= f2a70f4ed1a836696841d523f2650b55 +PT= 698524df2b3fd4024efa111f5f1b61b5 +CT= a9b5565eb9b5d5dac52be0f449fbe11a +TEST= 27 +KEY= 5a7062e77c6d20563afd0bfdaae04be995f316f869ba34fb2e7e9068e4442882 +IV= a9b5565eb9b5d5dac52be0f449fbe11a +PT= db660a6b6abfe23b2cd1467c95522cf9 +CT= e47f675379d4ce3ddaba0f906be014b2 +TEST= 28 +KEY= 4ddc0a5938f4a3dc1af8d3afd3df6198718c71ab106efac6f4c49ff88fa43c30 +IV= e47f675379d4ce3ddaba0f906be014b2 +PT= 17ac68be4499838a2005d852793f2a71 +CT= 7b95ab0e030c70b7940ecdaefca570a5 +TEST= 29 +KEY= e287efc66626600af3453f68be53e5250a19daa513628a7160ca525673014c95 +IV= 7b95ab0e030c70b7940ecdaefca570a5 +PT= af5be59f5ed2c3d6e9bdecc76d8c84bd +CT= e854e5de0c42d57b869c29fc8d5afff3 +TEST= 30 +KEY= 7f3415a538f60b24a58447e1d38805b3e24d3f7b1f205f0ae6567baafe5bb366 +IV= e854e5de0c42d57b869c29fc8d5afff3 +PT= 9db3fa635ed06b2e56c178896ddbe096 +CT= 4e55ededc35cdeab3bfb2b5d39871625 +TEST= 31 +KEY= 59e5f5ecc5693da07046636094970e8cac18d296dc7c81a1ddad50f7c7dca543 +IV= 4e55ededc35cdeab3bfb2b5d39871625 +PT= 26d1e049fd9f3684d5c22481471f0b3f +CT= 3355c2cc762e58fa941e0004209ca710 +TEST= 32 +KEY= 0b62cf7ea869036a529e9d184574cd609f4d105aaa52d95b49b350f3e7400253 +IV= 3355c2cc762e58fa941e0004209ca710 +PT= 52873a926d003eca22d8fe78d1e3c3ec +CT= 9b86680d69d38870268d42e78eda2b50 +TEST= 33 +KEY= cedc9ccc4dc42cb055edc50597ee24df04cb7857c381512b6f3e1214699a2903 +IV= 9b86680d69d38870268d42e78eda2b50 +PT= c5be53b2e5ad2fda0773581dd29ae9bf +CT= 05dd4896f08eeaa6a53fa7bcf183f538 +TEST= 34 +KEY= ca30b422016c86247d75b618d19247ac011630c1330fbb8dca01b5a89819dc3b +IV= 05dd4896f08eeaa6a53fa7bcf183f538 +PT= 04ec28ee4ca8aa942898731d467c6373 +CT= f81e56f4390d65c7959348a6fbd8a94e +TEST= 35 +KEY= b7096a2ec0259da21aca6dbe637a9f15f90866350a02de4a5f92fd0e63c17575 +IV= f81e56f4390d65c7959348a6fbd8a94e +PT= 7d39de0cc1491b8667bfdba6b2e8d8b9 +CT= 4364ca2d90fa256084df8e2fcdc62ab3 +TEST= 36 +KEY= 436c0894d4436149ee685f0061bdf3aeba6cac189af8fb2adb4d7321ae075fc6 +IV= 4364ca2d90fa256084df8e2fcdc62ab3 +PT= f46562ba1466fcebf4a232be02c76cbb +CT= 0991de19a5abe5f7e8ae24120789b9ab +TEST= 37 +KEY= 44e1636aff962ec4f1c446a89b9393c6b3fd72013f531edd33e35733a98ee66d +IV= 0991de19a5abe5f7e8ae24120789b9ab +PT= 078d6bfe2bd54f8d1fac19a8fa2e6068 +CT= 0f4ef4fa608671ac5f71063cf6c1ebde +TEST= 38 +KEY= 44289918a9e99f859fc2f604fe38b86ebcb386fb5fd56f716c92510f5f4f0db3 +IV= 0f4ef4fa608671ac5f71063cf6c1ebde +PT= 00c9fa72567fb1416e06b0ac65ab2ba8 +CT= 2d6a2a1cc9d208c16236bbc9451ec5e1 +TEST= 39 +KEY= be5907c77b0939d20575f27427a2c3fe91d9ace7960767b00ea4eac61a51c852 +IV= 2d6a2a1cc9d208c16236bbc9451ec5e1 +PT= fa719edfd2e0a6579ab70470d99a7b90 +CT= 237a8dfba42708bbf7e540766f2059f1 +TEST= 40 +KEY= cd97125720f2002207ac44c456cddf0db2a3211c32206f0bf941aab0757191a3 +IV= 237a8dfba42708bbf7e540766f2059f1 +PT= 73ce15905bfb39f002d9b6b0716f1cf3 +CT= 2d1ab5cf3e9c27ada9fb45f15007a7bb +TEST= 41 +KEY= 123f64f2a28c80c2f6e000f69c8e5a639fb994d30cbc48a650baef4125763618 +IV= 2d1ab5cf3e9c27ada9fb45f15007a7bb +PT= dfa876a5827e80e0f14c4432ca43856e +CT= 7039c9af1e10fe99a91483ea578ae6dd +TEST= 42 +KEY= 6cd69c4f5ad7cb5e9e4574f6a48fdb28ef805d7c12acb63ff9ae6cab72fcd0c5 +IV= 7039c9af1e10fe99a91483ea578ae6dd +PT= 7ee9f8bdf85b4b9c68a574003801814b +CT= 116dd8566366a19eeaf2f3e744b3ef9c +TEST= 43 +KEY= c73969c7d6d057003e2e215d94978792feed852a71ca17a1135c9f4c364f3f59 +IV= 116dd8566366a19eeaf2f3e744b3ef9c +PT= abeff5888c079c5ea06b55ab30185cba +CT= 648a801ef27e77d964bb751a32b8cfe8 +TEST= 44 +KEY= e0960dd6e807f3d0b5df057d0d1e6dcc9a67053483b4607877e7ea5604f7f0b1 +IV= 648a801ef27e77d964bb751a32b8cfe8 +PT= 27af64113ed7a4d08bf124209989ea5e +CT= d18ae728717c535049868fa6f1b4294e +TEST= 45 +KEY= 466ae043435c6cca67ff1c5d4b4175da4bede21cf2c833283e6165f0f543d9ff +IV= d18ae728717c535049868fa6f1b4294e +PT= a6fced95ab5b9f1ad2201920465f1816 +CT= 169b55360728da8f582c488f2569411f +TEST= 46 +KEY= 27e1bc4931601d667cd807454d58b2bb5d76b72af5e0e9a7664d2d7fd02a98e0 +IV= 169b55360728da8f582c488f2569411f +PT= 618b5c0a723c71ac1b271b180619c761 +CT= 67dadcf7c31ca394f46f18ab1aea022e +TEST= 47 +KEY= 2d4eb1f3a709f0a4ca5e2cd47f8f10123aac6bdd36fc4a33922235d4cac09ace +IV= 67dadcf7c31ca394f46f18ab1aea022e +PT= 0aaf0dba9669edc2b6862b9132d7a2a9 +CT= a5d49bdf099335166bbfdcbe29c90b80 +TEST= 48 +KEY= 2a90ce470eb8c9400b056307d53452be9f78f0023f6f7f25f99de96ae309914e +IV= a5d49bdf099335166bbfdcbe29c90b80 +PT= 07de7fb4a9b139e4c15b4fd3aabb42ac +CT= 5afc238f19e369e77278593c6e20a946 +TEST= 49 +KEY= 90b696e9a0792bff7bf21be373731cb5c584d38d268c16c28be5b0568d293808 +IV= 5afc238f19e369e77278593c6e20a946 +PT= ba2658aeaec1e2bf70f778e4a6474e0b +CT= 2861a363922099d0f0b2a5ad2a5f421e +TEST= 50 +KEY= 4fe5c563b7db98c6b9cca52f313fbafcede570eeb4ac8f127b5715fba7767a16 +IV= 2861a363922099d0f0b2a5ad2a5f421e +PT= df53538a17a2b339c23ebecc424ca649 +CT= d76e51b6ea5f74d0116c4d16edd0dfac +TEST= 51 +KEY= ebf784d98e40372429819ee23be85b723a8b21585ef3fbc26a3b58ed4aa6a5ba +IV= d76e51b6ea5f74d0116c4d16edd0dfac +PT= a41241ba399bafe2904d3bcd0ad7e18e +CT= 6214f5e50ec99f40b86951ce395c8315 +TEST= 52 +KEY= c01a5093c6a29ceed72d14d903bd17e8589fd4bd503a6482d252092373fa26af +IV= 6214f5e50ec99f40b86951ce395c8315 +PT= 2bedd44a48e2abcafeac8a3b38554c9a +CT= 6cfc2188e40e806bbe277988b924627e +TEST= 53 +KEY= a8c3a10380b6d4d1cefabf57f3c695193463f535b434e4e96c7570abcade44d1 +IV= 6cfc2188e40e806bbe277988b924627e +PT= 68d9f1904614483f19d7ab8ef07b82f1 +CT= b98e851902aec129fd1607deca9e0669 +TEST= 54 +KEY= b828711aba1d06408099944287112de58ded702cb69a25c091637775004042b8 +IV= b98e851902aec129fd1607deca9e0669 +PT= 10ebd0193aabd2914e632b1574d7b8fc +CT= dbda9db56e6ff915d67d7dee541dd6a3 +TEST= 55 +KEY= 3b0e9fe343d665abb3706243ef023c765637ed99d8f5dcd5471e0a9b545d941b +IV= dbda9db56e6ff915d67d7dee541dd6a3 +PT= 8326eef9f9cb63eb33e9f60168131193 +CT= 399802ce3ff3878a73c7d85e19fdd54b +TEST= 56 +KEY= 9270d72d972b46c8e630fbd1aa67fbed6fafef57e7065b5f34d9d2c54da04150 +IV= 399802ce3ff3878a73c7d85e19fdd54b +PT= a97e48ced4fd2363554099924565c79b +CT= 40faba067414961fd964ec91196943e3 +TEST= 57 +KEY= 017211ac512541bfbdd0292385aa20862f5555519312cd40edbd3e5454c902b3 +IV= 40faba067414961fd964ec91196943e3 +PT= 9302c681c60e07775be0d2f22fcddb6b +CT= 6bf1125e581341510fd02b9450886b17 +TEST= 58 +KEY= ac2652a877f924710178641d20b239b944a4470fcb018c11e26d15c0044169a4 +IV= 6bf1125e581341510fd02b9450886b17 +PT= ad54430426dc65cebca84d3ea518193f +CT= 74871d2ef6d1f29181b0a2530885eec8 +TEST= 59 +KEY= 0bf012a9f0cb194c1f00893d4803e10130235a213dd07e8063ddb7930cc4876c +IV= 74871d2ef6d1f29181b0a2530885eec8 +PT= a7d6400187323d3d1e78ed2068b1d8b8 +CT= 2a2dc9f5cb47c94d430ecaaab1d0811e +TEST= 60 +KEY= 8d22eeea013e327509e84630166331db1a0e93d4f697b7cd20d37d39bd140672 +IV= 2a2dc9f5cb47c94d430ecaaab1d0811e +PT= 86d2fc43f1f52b3916e8cf0d5e60d0da +CT= bc318e32957ce6577cd06e2d3166cd1f +TEST= 61 +KEY= 1c4909d11840d978fd7232d0fbc0e6a3a63f1de663eb519a5c0313148c72cb6d +IV= bc318e32957ce6577cd06e2d3166cd1f +PT= 916be73b197eeb0df49a74e0eda3d778 +CT= e9858dbb1b5145abb598ade882346ddb +TEST= 62 +KEY= dd2ed3c6fce0034f19259d57a35b60cf4fba905d78ba1431e99bbefc0e46a6b6 +IV= e9858dbb1b5145abb598ade882346ddb +PT= c167da17e4a0da37e457af87589b866c +CT= 1e04b15bbf727beac33c0c26141636dd +TEST= 63 +KEY= 81c434cdf7eabaa49252ec86dfe15fba51be2106c7c86fdb2aa7b2da1a50906b +IV= 1e04b15bbf727beac33c0c26141636dd +PT= 5ceae70b0b0ab9eb8b7771d17cba3f75 +CT= eb21aed731d594017f5729262a1e23b4 +TEST= 64 +KEY= aef6bf8323cae4c2270cc5e51b0a3bffba9f8fd1f61dfbda55f09bfc304eb3df +IV= eb21aed731d594017f5729262a1e23b4 +PT= 2f328b4ed4205e66b55e2963c4eb6445 +CT= eb73cfada0acb98b37091cb81489cc7c +TEST= 65 +KEY= bc3bd548867fa82ff80ef67b38016a1e51ec407c56b1425162f9874424c77fa3 +IV= eb73cfada0acb98b37091cb81489cc7c +PT= 12cd6acba5b54ceddf02339e230b51e1 +CT= 1feef226d6759e8813b98a5d43b2f22a +TEST= 66 +KEY= e1f5760c694dbe5688a0241b5517b4b14e02b25a80c4dcd971400d1967758d89 +IV= 1feef226d6759e8813b98a5d43b2f22a +PT= 5dcea344ef32167970aed2606d16deaf +CT= 9c591d087f0f45c8ae3dec9c455fe200 +TEST= 67 +KEY= abf2d79c472d0159fa9ae646d0c0fc9cd25baf52ffcb9911df7de185222a6f89 +IV= 9c591d087f0f45c8ae3dec9c455fe200 +PT= 4a07a1902e60bf0f723ac25d85d7482d +CT= 62c4f4d7e4ac5abc03beca3ca56da4fd +TEST= 68 +KEY= e58a351a4dd79a2ed6d386e11a8563f2b09f5b851b67c3addcc32bb98747cb74 +IV= 62c4f4d7e4ac5abc03beca3ca56da4fd +PT= 4e78e2860afa9b772c4960a7ca459f6e +CT= ad8557c0d04675cc312c7a106d5c8b83 +TEST= 69 +KEY= bcf7bb1010af5ceb05e06339689067e31d1a0c45cb21b661edef51a9ea1b40f7 +IV= ad8557c0d04675cc312c7a106d5c8b83 +PT= 597d8e0a5d78c6c5d333e5d872150411 +CT= 80159f4f5e0c2dc07d3cd3c52a1a8e6d +TEST= 70 +KEY= 328bb8eb86055d2bb52a02e40bb5d2c39d0f930a952d9ba190d3826cc001ce9a +IV= 80159f4f5e0c2dc07d3cd3c52a1a8e6d +PT= 8e7c03fb96aa01c0b0ca61dd6325b520 +CT= f58a2ee5a5bde8ca0a96f4f4b64be737 +TEST= 71 +KEY= f192ae51d926a2b68c38ea4e48a0590f6885bdef3090736b9a457698764a29ad +IV= f58a2ee5a5bde8ca0a96f4f4b64be737 +PT= c31916ba5f23ff9d3912e8aa43158bcc +CT= b4c0dd55013aefe12d94f31b861134cc +TEST= 72 +KEY= 5ee48e38c2c805e2aacc89ad8682e552dc4560ba31aa9c8ab7d18583f05b1d61 +IV= b4c0dd55013aefe12d94f31b861134cc +PT= af7620691beea75426f463e3ce22bc5d +CT= fd8b06aef9b3c25d11b950a6648276bb +TEST= 73 +KEY= f425b9bf4d114251736ee7fcdb430b6721ce6614c8195ed7a668d52594d96bda +IV= fd8b06aef9b3c25d11b950a6648276bb +PT= aac137878fd947b3d9a26e515dc1ee35 +CT= 31be8df4a8a749fbf11ab07d8479a10b +TEST= 74 +KEY= 61a2d5337bcb827887f884ad98c67bea1070ebe060be172c5772655810a0cad1 +IV= 31be8df4a8a749fbf11ab07d8479a10b +PT= 95876c8c36dac029f49663514385708d +CT= e9a2ef0c882781788d50033b79fe181f +TEST= 75 +KEY= e930b2277ac4475fb0a94519f60de552f9d204ece8999654da226663695ed2ce +IV= e9a2ef0c882781788d50033b79fe181f +PT= 88926714010fc5273751c1b46ecb9eb8 +CT= 17ffcd5a010709a2737570e038d63b27 +TEST= 76 +KEY= b944ce978df68f8fbff0a5ea62aac299ee2dc9b6e99e9ff6a95716835188e9e9 +IV= 17ffcd5a010709a2737570e038d63b27 +PT= 50747cb0f732c8d00f59e0f394a727cb +CT= e12b89fa1b1dd3b29f02219fd3d7d3d2 +TEST= 77 +KEY= 0e2d7fceb557462267bed2cca8b48cd70f06404cf2834c443655371c825f3a3b +IV= e12b89fa1b1dd3b29f02219fd3d7d3d2 +PT= b769b15938a1c9add84e7726ca1e4e4e +CT= 75ae99b6022b08e36fb88a6f4d7698bf +TEST= 78 +KEY= 8046d73d60912221694b2afe703edb167aa8d9faf0a844a759edbd73cf29a284 +IV= 75ae99b6022b08e36fb88a6f4d7698bf +PT= 8e6ba8f3d5c664030ef5f832d88a57c1 +CT= cf32dce11fdb098a6435315342796064 +TEST= 79 +KEY= 20716d6975c32231968bf76725144cbab59a051bef734d2d3dd88c208d50c2e0 +IV= cf32dce11fdb098a6435315342796064 +PT= a037ba5415520010ffc0dd99552a97ac +CT= 80f12b261317c66f21ac811230848468 +TEST= 80 +KEY= ad5a2011e425affd57e7191336d37d25356b2e3dfc648b421c740d32bdd44688 +IV= 80f12b261317c66f21ac811230848468 +PT= 8d2b4d7891e68dccc16cee7413c7319f +CT= f2c6b70c19a5748c6d2b5de41544854f +TEST= 81 +KEY= 49d4228508c789105cf457d10fa56048c7ad9931e5c1ffce715f50d6a890c3c7 +IV= f2c6b70c19a5748c6d2b5de41544854f +PT= e48e0294ece226ed0b134ec239761d6d +CT= a31fb3535978daa555dd617fab27a97a +TEST= 82 +KEY= 67ce710a3e778cb4a37d1f2274d4462d64b22a62bcb9256b248231a903b76abd +IV= a31fb3535978daa555dd617fab27a97a +PT= 2e1a538f36b005a4ff8948f37b712665 +CT= 97336ecfae89015e0b5a7d1c154c71bf +TEST= 83 +KEY= a87c517ef43cacc6d41eeb661dd1142cf38144ad123024352fd84cb516fb1b02 +IV= 97336ecfae89015e0b5a7d1c154c71bf +PT= cfb22074ca4b20727763f44469055201 +CT= 466cd227a6a9d5fc3c0579064530fce0 +TEST= 84 +KEY= d73f926a5b5dd8f5b82de8f77e0e0697b5ed968ab499f1c913dd35b353cbe7e2 +IV= 466cd227a6a9d5fc3c0579064530fce0 +PT= 7f43c314af6174336c33039163df12bb +CT= 4f444b4554e965a113dc0097aa8fad7a +TEST= 85 +KEY= 7a19be1c42a13b85b754834e9808df4bfaa9ddcfe070946800013524f9444a98 +IV= 4f444b4554e965a113dc0097aa8fad7a +PT= ad262c7619fce3700f796bb9e606d9dc +CT= f7078abe7617867274cbbeda1082b987 +TEST= 86 +KEY= d256675edbf987b5ca86c21de177c6a00dae57719667121a74ca8bfee9c6f31f +IV= f7078abe7617867274cbbeda1082b987 +PT= a84fd9429958bc307dd24153797f19eb +CT= 676acab66b04597f1a33ff462bd5e0ee +TEST= 87 +KEY= c025616ab6f89bb1b90aa0e8f63ff1cc6ac49dc7fd634b656ef974b8c21313f1 +IV= 676acab66b04597f1a33ff462bd5e0ee +PT= 127306346d011c04738c62f51748376c +CT= bf66b8dd1e540a4fed759fdb9a44b439 +TEST= 88 +KEY= 2a437d44d93c25b3233fb168d63751a5d5a2251ae337412a838ceb635857a7c8 +IV= bf66b8dd1e540a4fed759fdb9a44b439 +PT= ea661c2e6fc4be029a3511802008a069 +CT= ec8dbb5b3fe245180856b312d3052a87 +TEST= 89 +KEY= 838278123f0261d1f287c9ff94ca4a55392f9e41dcd504328bda58718b528d4f +IV= ec8dbb5b3fe245180856b312d3052a87 +PT= a9c10556e63e4462d1b8789742fd1bf0 +CT= 02e1e60312bb371912c35e3ebc6ea755 +TEST= 90 +KEY= 64f3a47c8c7cfa9ff2ac88637c598e6a3bce7842ce6e332b9919064f373c2a1a +IV= 02e1e60312bb371912c35e3ebc6ea755 +PT= e771dc6eb37e9b4e002b419ce893c43f +CT= 73d7499ebb38716d71ccb737cfffa3fb +TEST= 91 +KEY= 585abe6b779f22400fc2ac3b55b39e91481931dc75564246e8d5b178f8c389e1 +IV= 73d7499ebb38716d71ccb737cfffa3fb +PT= 3ca91a17fbe3d8dffd6e245829ea10fb +CT= cee7721855b7381d369ecc1c9337bb02 +TEST= 92 +KEY= 7bc1e883465cbbb9ba624ff99308259386fe43c420e17a5bde4b7d646bf432e3 +IV= cee7721855b7381d369ecc1c9337bb02 +PT= 239b56e831c399f9b5a0e3c2c6bbbb02 +CT= b6f48d369383974d163e4f17fdfc59ef +TEST= 93 +KEY= 70032af50bb5e080d4aa7722cedc7da9300acef2b362ed16c875327396086b0c +IV= b6f48d369383974d163e4f17fdfc59ef +PT= 0bc2c2764de95b396ec838db5dd4583a +CT= e8372da404126c63190626d95583629d +TEST= 94 +KEY= 5c61b59bda2ff51d4f4f740578466ea9d83de356b7708175d17314aac38b0991 +IV= e8372da404126c63190626d95583629d +PT= 2c629f6ed19a159d9be50327b69a1300 +CT= f717b53e51665d0854c895ea1d1d7e77 +TEST= 95 +KEY= 59a35e82b9c8d8ff25cfc5bad979a9052f2a5668e616dc7d85bb8140de9677e6 +IV= f717b53e51665d0854c895ea1d1d7e77 +PT= 05c2eb1963e72de26a80b1bfa13fc7ac +CT= 7d3ee90eef7c16872f98296977aa9557 +TEST= 96 +KEY= 5bc419836f7c4f57957e13e39b2181455214bf66096acafaaa23a829a93ce2b1 +IV= 7d3ee90eef7c16872f98296977aa9557 +PT= 02674701d6b497a8b0b1d65942582840 +CT= 6dcd0c4b5633078fdea9ae24781cb212 +TEST= 97 +KEY= e6d2bb67584aa2faae1d0dad8c9c60253fd9b32d5f59cd75748a060dd12050a3 +IV= 6dcd0c4b5633078fdea9ae24781cb212 +PT= bd16a2e43736edad3b631e4e17bde160 +CT= 6515251260a73ae868e992b6d49579c5 +TEST= 98 +KEY= 57637851c3c08a2923ebd2fea27472dc5acc963f3ffef79d1c6394bb05b52966 +IV= 6515251260a73ae868e992b6d49579c5 +PT= b1b1c3369b8a28d38df6df532ee812f9 +CT= 1a40c2c15f03867e81f951b545396bb4 +TEST= 99 +KEY= e08e94110f1e64554848ab1966299b7d408c54fe60fd71e39d9ac50e408c42d2 +IV= 1a40c2c15f03867e81f951b545396bb4 +PT= b7edec40ccdeee7c6ba379e7c45de9a1 +CT= dd331f336d669efd37106099ea51010d +TEST= 100 +KEY= 17f2544156745ec108bf97da806752c39dbf4bcd0d9bef1eaa8aa597aadd43df +IV= dd331f336d669efd37106099ea51010d +PT= f77cc050596a3a9440f73cc3e64ec9be +CT= 0ef37ec0b6071874ff68926d98a0eeab +TEST= 101 +KEY= c97abff115e20a6c72a6206db63ec0fd934c350dbb9cf76a55e237fa327dad74 +IV= 0ef37ec0b6071874ff68926d98a0eeab +PT= de88ebb0439654ad7a19b7b73659923e +CT= da1daeb42178a7657a40bd72a06ceddc +TEST= 102 +KEY= 77ab469fbc999bb2922d460413e2012049519bb99ae4500f2fa28a88921140a8 +IV= da1daeb42178a7657a40bd72a06ceddc +PT= bed1f96ea97b91dee08b6669a5dcc1dd +CT= e78523134fc8eaa77cc85e0eec60fcd3 +TEST= 103 +KEY= 4f88fa6f4053b3a15094ed532c2f47dcaed4b8aad52cbaa8536ad4867e71bc7b +IV= e78523134fc8eaa77cc85e0eec60fcd3 +PT= 3823bcf0fcca2813c2b9ab573fcd46fc +CT= bc540d1838d7ad8e8b1c44b96684dd31 +TEST= 104 +KEY= d178e105443700cfee007ab3baa71e4c1280b5b2edfb1726d876903f18f5614a +IV= bc540d1838d7ad8e8b1c44b96684dd31 +PT= 9ef01b6a0464b36ebe9497e096885990 +CT= 6c6b95a5d8f4e7f1a5864ddbfcdceed8 +TEST= 105 +KEY= 8f6a589ba0ed1a67fe426368a7e523047eeb2017350ff0d77df0dde4e4298f92 +IV= 6c6b95a5d8f4e7f1a5864ddbfcdceed8 +PT= 5e12b99ee4da1aa8104219db1d423d48 +CT= b58c92ae19b332621e7a4e5512c88596 +TEST= 106 +KEY= 147895b157bf16b87c32aaa17480a886cb67b2b92cbcc2b5638a93b1f6e10a04 +IV= b58c92ae19b332621e7a4e5512c88596 +PT= 9b12cd2af7520cdf8270c9c9d3658b82 +CT= 4d1d90f007bb5099c382e69c9cd1f7e5 +TEST= 107 +KEY= 4c8441fcebbd595999864a6cc37f7edb867a22492b07922ca008752d6a30fde1 +IV= 4d1d90f007bb5099c382e69c9cd1f7e5 +PT= 58fcd44dbc024fe1e5b4e0cdb7ffd65d +CT= 7f59920056ec32fa48f8a9cccffe437a +TEST= 108 +KEY= cd922eea60f0f136a799c650f5d4b030f923b0497deba0d6e8f0dce1a5cebe9b +IV= 7f59920056ec32fa48f8a9cccffe437a +PT= 81166f168b4da86f3e1f8c3c36abceeb +CT= a546f57e48a783694577d59f7fd01d9e +TEST= 109 +KEY= 90de3ecb26e68bdd3c4b7ab9b9cde6195c654537354c23bfad87097eda1ea305 +IV= a546f57e48a783694577d59f7fd01d9e +PT= 5d4c102146167aeb9bd2bce94c195629 +CT= 6342b8cb1e493f916585ff1bbfc42ab3 +TEST= 110 +KEY= adf1869fea15122394e1f6ff6b51e5de3f27fdfc2b051c2ec802f66565da89b6 +IV= 6342b8cb1e493f916585ff1bbfc42ab3 +PT= 3d2fb854ccf399fea8aa8c46d29c03c7 +CT= 052aedf54016429320b04243e308ecfe +TEST= 111 +KEY= df52d7982845cbaeb4e56592906b63943a0d10096b135ebde8b2b42686d26548 +IV= 052aedf54016429320b04243e308ecfe +PT= 72a35107c250d98d2004936dfb3a864a +CT= ee147a64dc2e31222a3a14b133769ace +TEST= 112 +KEY= 5d6b5899612ff15825029deb0b37cb4ed4196a6db73d6f9fc288a097b5a4ff86 +IV= ee147a64dc2e31222a3a14b133769ace +PT= 82398f01496a3af691e7f8799b5ca8da +CT= 8330ef868e72d33172d7dec7b440056c +TEST= 113 +KEY= fc23917c478894c9490a6585ccb8a716572985eb394fbcaeb05f7e5001e4faea +IV= 8330ef868e72d33172d7dec7b440056c +PT= a148c9e526a765916c08f86ec78f6c58 +CT= dc83e3727c4e9754a82bfcffd924acb3 +TEST= 114 +KEY= bcd556fa7afa27f9675f45922924dfa68baa669945012bfa187482afd8c05659 +IV= dc83e3727c4e9754a82bfcffd924acb3 +PT= 40f6c7863d72b3302e552017e59c78b0 +CT= c0b97d9320dc3e893953e1d93859d3e4 +TEST= 115 +KEY= a0f23a11c85f008cfec20f76bd6751054b131b0a65dd157321276376e09985bd +IV= c0b97d9320dc3e893953e1d93859d3e4 +PT= 1c276cebb2a52775999d4ae494438ea3 +CT= 8c28875c39211d01a084a59ba71d0c31 +TEST= 116 +KEY= 2bb58c8fe9fe5baec5db3f6a7eb98187c73b9c565cfc087281a3c6ed4784898c +IV= 8c28875c39211d01a084a59ba71d0c31 +PT= 8b47b69e21a15b223b19301cc3ded082 +CT= 7865e390e8019259a117669082ed5ccc +TEST= 117 +KEY= 6035a1ac1f0c1871ea06773dea40b5c5bf5e7fc6b4fd9a2b20b4a07dc569d540 +IV= 7865e390e8019259a117669082ed5ccc +PT= 4b802d23f6f243df2fdd485794f93442 +CT= dc7ba7c54217b8dee966c0672dbe79cd +TEST= 118 +KEY= cca70bb373ba65736d25078bb99980f66325d803f6ea22f5c9d2601ae8d7ac8d +IV= dc7ba7c54217b8dee966c0672dbe79cd +PT= ac92aa1f6cb67d02872370b653d93533 +CT= cbb60fb6be7240a2037cda46daaac4e4 +TEST= 119 +KEY= e6d9e4347abce875cdfb026a9b1ce767a893d7b548986257caaeba5c327d6869 +IV= cbb60fb6be7240a2037cda46daaac4e4 +PT= 2a7eef8709068d06a0de05e122856791 +CT= 3b0863884dcffdaae439e3bcfc2e0491 +TEST= 120 +KEY= 90c0678c9b9796facbd3a9e8e40a46e6939bb43d05579ffd2e9759e0ce536cf8 +IV= 3b0863884dcffdaae439e3bcfc2e0491 +PT= 761983b8e12b7e8f0628ab827f16a181 +CT= 1407cdbd04ca6450d15a276b0e45d500 +TEST= 121 +KEY= a3505d86bf4b95aec0f720b4cbdf4985879c7980019dfbadffcd7e8bc016b9f8 +IV= 1407cdbd04ca6450d15a276b0e45d500 +PT= 33903a0a24dc03540b24895c2fd50f63 +CT= 94b64df8376eaf94f24eb0457df81418 +TEST= 122 +KEY= ead741ba44d8637a4d49a089e4a122f2132a347836f354390d83cecebdeeade0 +IV= 94b64df8376eaf94f24eb0457df81418 +PT= 49871c3cfb93f6d48dbe803d2f7e6b77 +CT= 6e2de304d4a21a218291fd9b59fed9bf +TEST= 123 +KEY= 278551b22b73239bf36e61370fff43ea7d07d77ce2514e188f123355e410745f +IV= 6e2de304d4a21a218291fd9b59fed9bf +PT= cd5210086fab40e1be27c1beeb5e6118 +CT= 72a1e7b22d6b8b8c38c4ccd545466879 +TEST= 124 +KEY= c7046ca82928ea5ae1e6998399a090bb0fa630cecf3ac594b7d6ff80a1561c26 +IV= 72a1e7b22d6b8b8c38c4ccd545466879 +PT= e0813d1a025bc9c11288f8b4965fd351 +CT= f5f1b011c644d119625733433c3dbb40 +TEST= 125 +KEY= 82af7079a309a3b1367e4dc8ee90b8c5fa5780df097e148dd581ccc39d6ba766 +IV= f5f1b011c644d119625733433c3dbb40 +PT= 45ab1cd18a2149ebd798d44b7730287e +CT= fdd90319fc2878ae4e23ce63c6660d1a +TEST= 126 +KEY= eb439411e1412ba8d6db9f3052753d3f078e83c6f5566c239ba202a05b0daa7c +IV= fdd90319fc2878ae4e23ce63c6660d1a +PT= 69ece46842488819e0a5d2f8bce585fa +CT= 0b3948aefd674622289cb41e3f668a5c +TEST= 127 +KEY= c2fdf3eb8c01693c7fb990ce6d7f56e10cb7cb6808312a01b33eb6be646b2020 +IV= 0b3948aefd674622289cb41e3f668a5c +PT= 29be67fa6d404294a9620ffe3f0a6bde +CT= 9f5bf60eb5ccf9d9f3a20da569209636 +TEST= 128 +KEY= ecf0b5c32a3163495086894ab263166d93ec3d66bdfdd3d8409cbb1b0d4bb616 +IV= 9f5bf60eb5ccf9d9f3a20da569209636 +PT= 2e0d4628a6300a752f3f1984df1c408c +CT= 3fed40a5796b3d1ff8805e5ef8922511 +TEST= 129 +KEY= 259caa194ee9be90b2b1e7654cbdcd03ac017dc3c496eec7b81ce545f5d99307 +IV= 3fed40a5796b3d1ff8805e5ef8922511 +PT= c96c1fda64d8ddd9e2376e2ffededb6e +CT= 2973a39e09ef5f4f42b29e6730ecc127 +TEST= 130 +KEY= faab18ce5fa7895baa9ec69a55f690208572de5dcd79b188faae7b22c5355220 +IV= 2973a39e09ef5f4f42b29e6730ecc127 +PT= df37b2d7114e37cb182f21ff194b5d23 +CT= f8c4c1a86b0665e2124cffa9128ffefd +TEST= 131 +KEY= 3806bab3764e794df526a17bce0112877db61ff5a67fd46ae8e2848bd7baacdd +IV= f8c4c1a86b0665e2124cffa9128ffefd +PT= c2ada27d29e9f0165fb867e19bf782a7 +CT= 90996f6629a41fc86a9520dd33ae5b3f +TEST= 132 +KEY= b7f781357e024140c3797d01c286e72bed2f70938fdbcba28277a456e414f7e2 +IV= 90996f6629a41fc86a9520dd33ae5b3f +PT= 8ff13b86084c380d365fdc7a0c87f5ac +CT= 9dafb2f259bfd18945a0a6eff9a81a75 +TEST= 133 +KEY= b67d37a8e281afd015c38a72f5662bee7080c261d6641a2bc7d702b91dbced97 +IV= 9dafb2f259bfd18945a0a6eff9a81a75 +PT= 018ab69d9c83ee90d6baf77337e0ccc5 +CT= c89f523289ae2a7c8f796c2252cb0597 +TEST= 134 +KEY= a47b97f34fb4a8f219ed7a59efe40080b81f90535fca305748ae6e9b4f77e800 +IV= c89f523289ae2a7c8f796c2252cb0597 +PT= 1206a05bad3507220c2ef02b1a822b6e +CT= 3aacc4e5de152bb1730c6d10c9a81a0a +TEST= 135 +KEY= e8ebbfda61b6bc6735953f8e448b5e0282b354b681df1be63ba2038b86dff20a +IV= 3aacc4e5de152bb1730c6d10c9a81a0a +PT= 4c9028292e0214952c7845d7ab6f5e82 +CT= 1e315bfffdc3da42438e683263b496dd +TEST= 136 +KEY= ee950ff3d603decee18f4acf99a623589c820f497c1cc1a4782c6bb9e56b64d7 +IV= 1e315bfffdc3da42438e683263b496dd +PT= 067eb029b7b562a9d41a7541dd2d7d5a +CT= 9b021a44cd9ff920dfe1ec97b3ee8ae4 +TEST= 137 +KEY= e073e1149a4a605e041167f3739f17240780150db1833884a7cd872e5685ee33 +IV= 9b021a44cd9ff920dfe1ec97b3ee8ae4 +PT= 0ee6eee74c49be90e59e2d3cea39347c +CT= 4f62ee03d7a8337ecb3dcc0ea5444c2d +TEST= 138 +KEY= bf449e4b7dfa404d3f18c0266725f67248e2fb0e662b0bfa6cf04b20f3c1a21e +IV= 4f62ee03d7a8337ecb3dcc0ea5444c2d +PT= 5f377f5fe7b020133b09a7d514bae156 +CT= ac8767b1e15d6d1ecacccbf2d0fab043 +TEST= 139 +KEY= 3ab2898399d0f8467b37a5c916d9117ae4659cbf877666e4a63c80d2233b125d +IV= ac8767b1e15d6d1ecacccbf2d0fab043 +PT= 85f617c8e42ab80b442f65ef71fce708 +CT= 9ca6e27f1966ae133cb7b98c2b13c1da +TEST= 140 +KEY= 06a09b6d5a6bca82b26d0625f2a89fa178c37ec09e10c8f79a8b395e0828d387 +IV= 9ca6e27f1966ae133cb7b98c2b13c1da +PT= 3c1212eec3bb32c4c95aa3ece4718edb +CT= b7a6788e6d9886047d1450b093f5b6fe +TEST= 141 +KEY= 79a26263675e11be581ddea79a20caaccf65064ef3884ef3e79f69ee9bdd6579 +IV= b7a6788e6d9886047d1450b093f5b6fe +PT= 7f02f90e3d35db3cea70d8826888550d +CT= 5c1785dc27bc301deafaef325a4ccbfd +TEST= 142 +KEY= 21def781026d9acb4108c6f9847c635f93728392d4347eee0d6586dcc191ae84 +IV= 5c1785dc27bc301deafaef325a4ccbfd +PT= 587c95e265338b751915185e1e5ca9f3 +CT= 9577e8f6df5921c4b518974a2f1fcf07 +TEST= 143 +KEY= eb000baa170733ea4d077bdd7da1623506056b640b6d5f2ab87d1196ee8e6183 +IV= 9577e8f6df5921c4b518974a2f1fcf07 +PT= cadefc2b156aa9210c0fbd24f9dd016a +CT= 09f8e3da7c5e39f2f13c2b72001d1d56 +TEST= 144 +KEY= d56a1025ab5f7b5f943b3aecaf87a2800ffd88be773366d849413ae4ee937cd5 +IV= 09f8e3da7c5e39f2f13c2b72001d1d56 +PT= 3e6a1b8fbc5848b5d93c4131d226c0b5 +CT= 7344f33968e177f3864908f02915739a +TEST= 145 +KEY= 876077ea9bdb2134098b73cad4411d997cb97b871fd2112bcf083214c7860f4f +IV= 7344f33968e177f3864908f02915739a +PT= 520a67cf30845a6b9db049267bc6bf19 +CT= ec286360ef2a54ce894ed06acf39970c +TEST= 146 +KEY= aa9943761ad545f47ebcf5cd4584c3b3909118e7f0f845e54646e27e08bf9843 +IV= ec286360ef2a54ce894ed06acf39970c +PT= 2df9349c810e64c07737860791c5de2a +CT= 89f4be70d36a05c84fd2124f6a69786b +TEST= 147 +KEY= 5c285d3fd07ef5f6664b1f4c4ca771e31965a6972392402d0994f03162d6e028 +IV= 89f4be70d36a05c84fd2124f6a69786b +PT= f6b11e49caabb00218f7ea810923b250 +CT= 9a65e99c06e0744056365c4a26cd001f +TEST= 148 +KEY= f28851656d77922a55655dbe4610993683004f0b2572346d5fa2ac7b441be037 +IV= 9a65e99c06e0744056365c4a26cd001f +PT= aea00c5abd0967dc332e42f20ab7e8d5 +CT= 566ecb7b317c81cf87bc483b4b6cf417 +TEST= 149 +KEY= 62428dd3f6b04c564ca6d9da9a9a64b3d56e8470140eb5a2d81ee4400f771420 +IV= 566ecb7b317c81cf87bc483b4b6cf417 +PT= 90cadcb69bc7de7c19c38464dc8afd85 +CT= 16e3f727d2d4cc2e88c2a4b0dfef34af +TEST= 150 +KEY= 78a68a0ec33e2c0198538c1ea591af46c38d7357c6da798c50dc40f0d098208f +IV= 16e3f727d2d4cc2e88c2a4b0dfef34af +PT= 1ae407dd358e6057d4f555c43f0bcbf5 +CT= 6f6606018f5491fc43864fc29b572551 +TEST= 151 +KEY= 4efbcf71f7a0da7564daf1f0488aa933aceb7556498ee870135a0f324bcf05de +IV= 6f6606018f5491fc43864fc29b572551 +PT= 365d457f349ef674fc897deeed1b0675 +CT= bc07194e716b4d78f64e14b6e5762439 +TEST= 152 +KEY= a4bbf15395604071df929a4922a129dd10ec6c1838e5a508e5141b84aeb921e7 +IV= bc07194e716b4d78f64e14b6e5762439 +PT= ea403e2262c09a04bb486bb96a2b80ee +CT= bf1994171481fb4f84ab092f437ea9c7 +TEST= 153 +KEY= 665f10926596e8f5691ace10aa5075aeaff5f80f2c645e4761bf12abedc78820 +IV= bf1994171481fb4f84ab092f437ea9c7 +PT= c2e4e1c1f0f6a884b688545988f15c73 +CT= 254fe05d25b67d3bf6c2688f46a7fad8 +TEST= 154 +KEY= 15f4ba29ebaaf160ac95507fda03d7d58aba185209d2237c977d7a24ab6072f8 +IV= 254fe05d25b67d3bf6c2688f46a7fad8 +PT= 73abaabb8e3c1995c58f9e6f7053a27b +CT= a03b8db2c1c9b6c574a8499c6e5869cf +TEST= 155 +KEY= 96a760ab52e1d6a5acfca016e98d0ba12a8195e0c81b95b9e3d533b8c5381b37 +IV= a03b8db2c1c9b6c574a8499c6e5869cf +PT= 8353da82b94b27c50069f069338edc74 +CT= 088f141f097f659145de8e1edb2300b5 +TEST= 156 +KEY= 7c06f9ee0327c811cee3cc3b2b492620220e81ffc164f028a60bbda61e1b1b82 +IV= 088f141f097f659145de8e1edb2300b5 +PT= eaa1994551c61eb4621f6c2dc2c42d81 +CT= 43703327bfdaf109f6f9c5969d3c7649 +TEST= 157 +KEY= 0f8ac1e3014dd99d1a440a693cb73b51617eb2d87ebe012150f2783083276dcb +IV= 43703327bfdaf109f6f9c5969d3c7649 +PT= 738c380d026a118cd4a7c65217fe1d71 +CT= bdac873d0a674cda98105dc3070f7be4 +TEST= 158 +KEY= e595998abef32cabdd4a441b4042bf8bdcd235e574d94dfbc8e225f38428162f +IV= bdac873d0a674cda98105dc3070f7be4 +PT= ea1f5869bfbef536c70e4e727cf584da +CT= a1a89122cf532fbc69e74a70f1e7346f +TEST= 159 +KEY= fba3999f7bf540184e9be7715ca8c0497d7aa4c7bb8a6247a1056f8375cf2240 +IV= a1a89122cf532fbc69e74a70f1e7346f +PT= 1e360015c5066cb393d1a36a1cea7fc2 +CT= 68c2a6ff8eabe7ea05e5dd6093c00129 +TEST= 160 +KEY= 65af7cb5f5cef75fef0bf5f746d7dd7d15b80238352185ada4e0b2e3e60f2369 +IV= 68c2a6ff8eabe7ea05e5dd6093c00129 +PT= 9e0ce52a8e3bb747a19012861a7f1d34 +CT= 1ea92e63c6926082b04f69e658cfa478 +TEST= 161 +KEY= 7d3ba807729873eb2021ac1817b2c7d30b112c5bf3b3e52f14afdb05bec08711 +IV= 1ea92e63c6926082b04f69e658cfa478 +PT= 1894d4b2875684b4cf2a59ef51651aae +CT= 45a943f0b6430aba20c562469ae98a6d +TEST= 162 +KEY= 5ecaef5bf4ec899c7bfaee2f50b864924eb86fab45f0ef95346ab94324290d7c +IV= 45a943f0b6430aba20c562469ae98a6d +PT= 23f1475c8674fa775bdb4237470aa341 +CT= 6cdf579a8429606cc9bc56d010845954 +TEST= 163 +KEY= 8d394bd1c8c1d1f8a67a3ba16530662a22673831c1d98ff9fdd6ef9334ad5428 +IV= 6cdf579a8429606cc9bc56d010845954 +PT= d3f3a48a3c2d5864dd80d58e358802b8 +CT= 96e9e19694db9931ac09a7b6296feaa8 +TEST= 164 +KEY= 9abec4725c717368463710cb2d45774db48ed9a7550216c851df48251dc2be80 +IV= 96e9e19694db9931ac09a7b6296feaa8 +PT= 17878fa394b0a290e04d2b6a48751167 +CT= 176c9b9b32a539f35bdfb21b38c42134 +TEST= 165 +KEY= 3ca1e23510949d81242f16de0e9b2b3aa3e2423c67a72f3b0a00fa3e25069fb4 +IV= 176c9b9b32a539f35bdfb21b38c42134 +PT= a61f26474ce5eee96218061523de5c77 +CT= 06004480169fb7b6d4dba7453a85e54d +TEST= 166 +KEY= 2a72aa0c7eaa3113480ef57a83c272d7a5e206bc7138988ddedb5d7b1f837af9 +IV= 06004480169fb7b6d4dba7453a85e54d +PT= 16d348396e3eac926c21e3a48d5959ed +CT= ff2f4f6e32133ce8c70252937fe5bda6 +TEST= 167 +KEY= 90c0c8fc5b65be92e643956293a70af35acd49d2432ba46519d90fe86066c75f +IV= ff2f4f6e32133ce8c70252937fe5bda6 +PT= bab262f025cf8f81ae4d601810657824 +CT= 0972ccc79c412db6fbc5918b8e6eab7c +TEST= 168 +KEY= e0af49bac4bd146e83c884327ffb682353bf8515df6a89d3e21c9e63ee086c23 +IV= 0972ccc79c412db6fbc5918b8e6eab7c +PT= 706f81469fd8aafc658b1150ec5c62d0 +CT= 2d8c668310308fcf7b3e325f50aa89e5 +TEST= 169 +KEY= e5c29451893b7b94249e89469e58dead7e33e396cf5a061c9922ac3cbea2e5c6 +IV= 2d8c668310308fcf7b3e325f50aa89e5 +PT= 056dddeb4d866ffaa7560d74e1a3b68e +CT= 8342dd95f1040e763c82e36f8f74822f +TEST= 170 +KEY= 4a9ad7cafa46ae63362069120b502d33fd713e033e5e086aa5a04f5331d667e9 +IV= 8342dd95f1040e763c82e36f8f74822f +PT= af58439b737dd5f712bee0549508f39e +CT= 8ca83627884d9b7a62f096bd37c14eff +TEST= 171 +KEY= 21aefc00e7cc2942f319630702eccc6b71d90824b6139310c750d9ee06172916 +IV= 8ca83627884d9b7a62f096bd37c14eff +PT= 6b342bca1d8a8721c5390a1509bce158 +CT= 13073ab95c0c0587372564189a4c176f +TEST= 172 +KEY= 7e615f002723795f6e37182ecc0c429e62de329dea1f9697f075bdf69c5b3e79 +IV= 13073ab95c0c0587372564189a4c176f +PT= 5fcfa300c0ef501d9d2e7b29cee08ef5 +CT= 247a01c6a7072f64cb463e6580da222e +TEST= 173 +KEY= c2a25232803e901b35080b5ca64dec2646a4335b4d18b9f33b3383931c811c57 +IV= 247a01c6a7072f64cb463e6580da222e +PT= bcc30d32a71de9445b3f13726a41aeb8 +CT= 562355d078402da76b0ccaac2be63dae +TEST= 174 +KEY= 46c06b83ad1c5cd849c53a11c05137141087668b35589454503f493f376721f9 +IV= 562355d078402da76b0ccaac2be63dae +PT= 846239b12d22ccc37ccd314d661cdb32 +CT= 841b1644cce1bf9db0d537733047db7f +TEST= 175 +KEY= cb3ad5fb9e07d380841d712e7a71fc15949c70cff9b92bc9e0ea7e4c0720fa86 +IV= 841b1644cce1bf9db0d537733047db7f +PT= 8dfabe78331b8f58cdd84b3fba20cb01 +CT= de34c065627db86a2d0ae89fb31bda86 +TEST= 176 +KEY= 240cfc15d60f6ae4a53d2c25bd71dd6e4aa8b0aa9bc493a3cde096d3b43b2000 +IV= de34c065627db86a2d0ae89fb31bda86 +PT= ef3629ee4808b96421205d0bc700217b +CT= 38dd744b95756614261178685fbf097f +TEST= 177 +KEY= faa7cba4aaad9576591c12233960f1c87275c4e10eb1f5b7ebf1eebbeb84297f +IV= 38dd744b95756614261178685fbf097f +PT= deab37b17ca2ff92fc213e0684112ca6 +CT= dc1cf4e4633355111ad09be1c6bc1e39 +TEST= 178 +KEY= 29e0d33a81ffdce220d1587c36c5eb09ae6930056d82a0a6f121755a2d383746 +IV= dc1cf4e4633355111ad09be1c6bc1e39 +PT= d347189e2b52499479cd4a5f0fa51ac1 +CT= 2a5dc4e8c16753d202b638e5003af83d +TEST= 179 +KEY= 956c5751c5b439990a006db1b52336e78434f4edace5f374f3974dbf2d02cf7b +IV= 2a5dc4e8c16753d202b638e5003af83d +PT= bc8c846b444be57b2ad135cd83e6ddee +CT= 70f5676dc7646ea8f8a913ae6ad21949 +TEST= 180 +KEY= 8ad9d44bc9018fd05b103360575592fef4c193806b819ddc0b3e5e1147d0d632 +IV= 70f5676dc7646ea8f8a913ae6ad21949 +PT= 1fb5831a0cb5b64951105ed1e276a419 +CT= c44da6a603a1e9c02f18123d5cad5291 +TEST= 181 +KEY= da77f2da5cd7148b15fe8ca898c9a25e308c35266820741c24264c2c1b7d84a3 +IV= c44da6a603a1e9c02f18123d5cad5291 +PT= 50ae269195d69b5b4eeebfc8cf9c30a0 +CT= 53c2d89ec4d5867dc79168d21c9b8755 +TEST= 182 +KEY= 4a4fd6aed6825a2a0c2114460f029eda634eedb8acf5f261e3b724fe07e603f6 +IV= 53c2d89ec4d5867dc79168d21c9b8755 +PT= 903824748a554ea119df98ee97cb3c84 +CT= 79b9dabe5171a614cafdea11637a1800 +TEST= 183 +KEY= 29102930967275801bd019d6766fda1a1af73706fd845475294aceef649c1bf6 +IV= 79b9dabe5171a614cafdea11637a1800 +PT= 635fff9e40f02faa17f10d90796d44c0 +CT= 8ab92fa5ea50f1185112fe4d8d2fcc21 +TEST= 184 +KEY= f4aba34b232c18ead6d367320651c374904e18a317d4a56d785830a2e9b3d7d7 +IV= 8ab92fa5ea50f1185112fe4d8d2fcc21 +PT= ddbb8a7bb55e6d6acd037ee4703e196e +CT= fb97c84040732d7b308c5959059d90a9 +TEST= 185 +KEY= fb140f98a79f5d5d68b80301cb7b640e6bd9d0e357a7881648d469fbec2e477e +IV= fb97c84040732d7b308c5959059d90a9 +PT= 0fbfacd384b345b7be6b6433cd2aa77a +CT= d0d0119d500519bf5b4770c494b41680 +TEST= 186 +KEY= bc98221c0792d22b6eb258e57db0d8b0bb09c17e07a291a91393193f789a51fe +IV= d0d0119d500519bf5b4770c494b41680 +PT= 478c2d84a00d8f76060a5be4b6cbbcbe +CT= 94842399fc93828d30979dad9210b827 +TEST= 187 +KEY= c92f345ac3cb803ea91c123f97e7005a2f8de2e7fb31132423048492ea8ae9d9 +IV= 94842399fc93828d30979dad9210b827 +PT= 75b71646c4595215c7ae4adaea57d8ea +CT= 5bdb886e7a7dbba8679704f13f44b981 +TEST= 188 +KEY= 3eacaf51fea9a9886d0b9d1b6ba8436574566a89814ca88c44938063d5ce5058 +IV= 5bdb886e7a7dbba8679704f13f44b981 +PT= f7839b0b3d6229b6c4178f24fc4f433f +CT= a2da893257ee0f732a80fc52887a0788 +TEST= 189 +KEY= 72e26fedc250c5fed59fe29c966b61fad68ce3bbd6a2a7ff6e137c315db457d0 +IV= a2da893257ee0f732a80fc52887a0788 +PT= 4c4ec0bc3cf96c76b8947f87fdc3229f +CT= 2f7877481b1162b01616c9f3268b4c44 +TEST= 190 +KEY= 901c1268ad3582e6a9fa4c5cbb99d07ef9f494f3cdb3c54f7805b5c27b3f1b94 +IV= 2f7877481b1162b01616c9f3268b4c44 +PT= e2fe7d856f6547187c65aec02df2b184 +CT= 9ffa4af8d0f096cc40a9f879076211e0 +TEST= 191 +KEY= eaf814ec49f2254e4933faf977d7beec660ede0b1d43538338ac4dbb7c5d0a74 +IV= 9ffa4af8d0f096cc40a9f879076211e0 +PT= 7ae40684e4c7a7a8e0c9b6a5cc4e6e92 +CT= 886097f5bc20c157a605cbefca5663d7 +TEST= 192 +KEY= 8ed70bba192093a0c9ad62e86c27091fee6e49fea16392d49ea98654b60b69a3 +IV= 886097f5bc20c157a605cbefca5663d7 +PT= 642f1f5650d2b6ee809e98111bf0b7f3 +CT= 00dbbb84f52b3c9b28325161072753b6 +TEST= 193 +KEY= 18280464c9e683cfff9b75a5fd74ee96eeb5f27a5448ae4fb69bd735b12c3a15 +IV= 00dbbb84f52b3c9b28325161072753b6 +PT= 96ff0fded0c6106f3636174d9153e789 +CT= 714a27832b326f0a8fa745012de4d936 +TEST= 194 +KEY= f464ee1298b09059016082ccc5abc0129fffd5f97f7ac145393c92349cc8e323 +IV= 714a27832b326f0a8fa745012de4d936 +PT= ec4cea7651561396fefbf76938df2e84 +CT= 5de8a5cdba7a6111a646aa17ca5324d4 +TEST= 195 +KEY= ee7301d63c482593abb33cf4a57f1101c2177034c500a0549f7a3823569bc7f7 +IV= 5de8a5cdba7a6111a646aa17ca5324d4 +PT= 1a17efc4a4f8b5caaad3be3860d4d113 +CT= ea197ecf36e63616ebb0d9d7c1bd9a22 +TEST= 196 +KEY= 10528506d50d143eac40d83731dd55f0280e0efbf3e6964274cae1f497265dd5 +IV= ea197ecf36e63616ebb0d9d7c1bd9a22 +PT= fe2184d0e94531ad07f3e4c394a244f1 +CT= 798349d56ec37993b0e131f8e3f64860 +TEST= 197 +KEY= 438e1b672254504b972927644802ed36518d472e9d25efd1c42bd00c74d015b5 +IV= 798349d56ec37993b0e131f8e3f64860 +PT= 53dc9e61f75944753b69ff5379dfb8c6 +CT= 545e4cd72e74f5a91b29ddba60bceb5a +TEST= 198 +KEY= 7e32f16a4e2e125a95ff9963c6f9796105d30bf9b3511a78df020db6146cfeef +IV= 545e4cd72e74f5a91b29ddba60bceb5a +PT= 3dbcea0d6c7a421102d6be078efb9457 +CT= 084142f2c892dcf8a37a509df0d669bc +TEST= 199 +KEY= b1bec1c124a0941d0ba6c75239c17e250d92490b7bc3c6807c785d2be4ba9753 +IV= 084142f2c892dcf8a37a509df0d669bc +PT= cf8c30ab6a8e86479e595e31ff380744 +CT= 0a96c326c9d642f1f84c8772bcf8eb4a +TEST= 200 +KEY= 80d7a5a2ae29b42143046d45b6b6b36c07048a2db21584718434da5958427c19 +IV= 0a96c326c9d642f1f84c8772bcf8eb4a +PT= 316964638a89203c48a2aa178f77cd49 +CT= 273916ed09a517ce5c6a294d82e78980 +TEST= 201 +KEY= 4d1c892df27868bbb0fe803145c1d731203d9cc0bbb093bfd85ef314daa5f599 +IV= 273916ed09a517ce5c6a294d82e78980 +PT= cdcb2c8f5c51dc9af3faed74f377645d +CT= 7183a7c83964ecfb2a1e44ffcfebb7c1 +TEST= 202 +KEY= 8c9b28041ecd5149a51207ace38f0d0351be3b0882d47f44f240b7eb154e4258 +IV= 7183a7c83964ecfb2a1e44ffcfebb7c1 +PT= c187a129ecb539f215ec879da64eda32 +CT= 6015df395d795deca0a2f833e3614000 +TEST= 203 +KEY= ff175c7c745bb06e51eedaa4f2c61e0f31abe431dfad22a852e24fd8f62f0258 +IV= 6015df395d795deca0a2f833e3614000 +PT= 738c74786a96e127f4fcdd081149130c +CT= b6b466b56b0e994e672072c273ba067d +TEST= 204 +KEY= 0c84c64e1bb3b86e9af5a8405d950b3a871f8284b4a3bbe635c23d1a85950425 +IV= b6b466b56b0e994e672072c273ba067d +PT= f3939a326fe80800cb1b72e4af531535 +CT= c8566e37df2e2958ddd5d2db49889ba8 +TEST= 205 +KEY= 5ff4c2a08b85338172d2779bf789da234f49ecb36b8d92bee817efc1cc1d9f8d +IV= c8566e37df2e2958ddd5d2db49889ba8 +PT= 537004ee90368befe827dfdbaa1cd119 +CT= c4a8d14db86637e94af515764bc7df44 +TEST= 206 +KEY= bd81de1813aec9bafddc90e4a563cb338be13dfed3eba557a2e2fab787da40c9 +IV= c4a8d14db86637e94af515764bc7df44 +PT= e2751cb8982bfa3b8f0ee77f52ea1110 +CT= 5707495e4cba3727fba5d7f4f61af35c +TEST= 207 +KEY= ae1b09cb7d99bac0a71b3e83815f10a2dce674a09f51927059472d4371c0b395 +IV= 5707495e4cba3727fba5d7f4f61af35c +PT= 139ad7d36e37737a5ac7ae67243cdb91 +CT= c770cd182dff66e4d6a7bfefe2820ae1 +TEST= 208 +KEY= 4f7491f03447293c42de8393e7ad91741b96b9b8b2aef4948fe092ac9342b974 +IV= c770cd182dff66e4d6a7bfefe2820ae1 +PT= e16f983b49de93fce5c5bd1066f281d6 +CT= e2044134acd21d5ad026671bdc0cb2e4 +TEST= 209 +KEY= a747ef80608ced4309800ca0b1c73081f992f88c1e7ce9ce5fc6f5b74f4e0b90 +IV= e2044134acd21d5ad026671bdc0cb2e4 +PT= e8337e7054cbc47f4b5e8f33566aa1f5 +CT= 303cf7780126ad06b5272a8350639c93 +TEST= 210 +KEY= e5ebf5e471f2ca9f38492f604438b9c0c9ae0ff41f5a44c8eae1df341f2d9703 +IV= 303cf7780126ad06b5272a8350639c93 +PT= 42ac1a64117e27dc31c923c0f5ff8941 +CT= daccd42953603a1321cad9c236454598 +TEST= 211 +KEY= b5e5c9211a5c43f2267b4a2411fc2cc21362dbdd4c3a7edbcb2b06f62968d29b +IV= daccd42953603a1321cad9c236454598 +PT= 500e3cc56bae896d1e32654455c49502 +CT= f9ab4d1d8255e83b330031ebe2ece5c6 +TEST= 212 +KEY= 8d78453d63a2dd8d08bf5f250f2581cfeac996c0ce6f96e0f82b371dcb84375d +IV= f9ab4d1d8255e83b330031ebe2ece5c6 +PT= 389d8c1c79fe9e7f2ec415011ed9ad0d +CT= 0f28e2d4cc948d36e18f80184a594841 +TEST= 213 +KEY= 2e921775036404fd9939ee83c9585481e5e1741402fb1bd619a4b70581dd7f1c +IV= 0f28e2d4cc948d36e18f80184a594841 +PT= a3ea524860c6d9709186b1a6c67dd54e +CT= a4756eab45bcf716a52038c729e420c6 +TEST= 214 +KEY= 9f86fef42701b1d779bd46be515680fc41941abf4747ecc0bc848fc2a8395fda +IV= a4756eab45bcf716a52038c729e420c6 +PT= b114e9812465b52ae084a83d980ed47d +CT= 9834425e009006673e777e3552e83d20 +TEST= 215 +KEY= 2212046ffd03ba552089fbf7b2f3ef32d9a058e147d7eaa782f3f1f7fad162fa +IV= 9834425e009006673e777e3552e83d20 +PT= bd94fa9bda020b825934bd49e3a56fce +CT= aea572d530a3694eaff6dfde30b80d5a +TEST= 216 +KEY= f73bb21f916d8011751afdddcd130a6477052a34777483e92d052e29ca696fa0 +IV= aea572d530a3694eaff6dfde30b80d5a +PT= d529b6706c6e3a445593062a7fe0e556 +CT= 86394e06b621147758cab012852035a6 +TEST= 217 +KEY= ee44a367a3cddfed7dbd980bf731b4e5f13c6432c155979e75cf9e3b4f495a06 +IV= 86394e06b621147758cab012852035a6 +PT= 197f117832a05ffc08a765d63a22be81 +CT= 3cbc18c1ac02c0a7595199e08f1f552b +TEST= 218 +KEY= 1558babb3dcd830f693e7950f736bcadcd807cf36d5757392c9e07dbc0560f2d +IV= 3cbc18c1ac02c0a7595199e08f1f552b +PT= fb1c19dc9e005ce21483e15b00070848 +CT= 5a9cfd8bfe10cf7fbd0f9a3faf6c117b +TEST= 219 +KEY= d083f58141f5e5af3d5479739d55780d971c81789347984691919de46f3a1e56 +IV= 5a9cfd8bfe10cf7fbd0f9a3faf6c117b +PT= c5db4f3a7c3866a0546a00236a63c4a0 +CT= 61a437d4e2f1c3779f1ebe906c5d2c12 +TEST= 220 +KEY= c60824f2ddc67623d270974e9f87bd27f6b8b6ac71b65b310e8f237403673244 +IV= 61a437d4e2f1c3779f1ebe906c5d2c12 +PT= 168bd1739c33938cef24ee3d02d2c52a +CT= fc675ee1b12b47410a20cfac23fd20ee +TEST= 221 +KEY= f73a715ad84db0a6f55ad584922001920adfe84dc09d1c7004afecd8209a12aa +IV= fc675ee1b12b47410a20cfac23fd20ee +PT= 313255a8058bc685272a42ca0da7bcb5 +CT= 82e3fb6189716d94c8e9d30e1eccabc4 +TEST= 222 +KEY= 6abbdce21e2ececbcaa3473897a2e178883c132c49ec71e4cc463fd63e56b96e +IV= 82e3fb6189716d94c8e9d30e1eccabc4 +PT= 9d81adb8c6637e6d3ff992bc0582e0ea +CT= bd84dce4994b505eed71596b454bdf85 +TEST= 223 +KEY= 0d4f68cdb9b53b08e22dddfe4fd5fcc035b8cfc8d0a721ba213766bd7b1d66eb +IV= bd84dce4994b505eed71596b454bdf85 +PT= 67f4b42fa79bf5c3288e9ac6d8771db8 +CT= 1b3aa490c6e874ba77ce55d71789616c +TEST= 224 +KEY= 3d8e3121698dd7e9d1835eff5fa02db22e826b58164f550056f9336a6c940787 +IV= 1b3aa490c6e874ba77ce55d71789616c +PT= 30c159ecd038ece133ae83011075d172 +CT= d6ee171b39b5e40535fbf5a7cb4c6953 +TEST= 225 +KEY= 1a5b2249ca785f0db58ff5b07cccfcdef86c7c432ffab1056302c6cda7d86ed4 +IV= d6ee171b39b5e40535fbf5a7cb4c6953 +PT= 27d51368a3f588e4640cab4f236cd16c +CT= 8691be10d13b4c08246938750ee33643 +TEST= 226 +KEY= 48ad5def217f83dc5039ecd1191abe3a7efdc253fec1fd0d476bfeb8a93b5897 +IV= 8691be10d13b4c08246938750ee33643 +PT= 52f67fa6eb07dcd1e5b6196165d642e4 +CT= e40ad0ee818639e37349e1132b138d63 +TEST= 227 +KEY= feb84b0b264a8a6fb8d4de065da68a479af712bd7f47c4ee34221fab8228d5f4 +IV= e40ad0ee818639e37349e1132b138d63 +PT= b61516e4073509b3e8ed32d744bc347d +CT= 6e40a22767a39c978f279d40b447099d +TEST= 228 +KEY= 2fe79fcc3c959901baaee8c55b71d01ff4b7b09a18e45879bb0582eb366fdc69 +IV= 6e40a22767a39c978f279d40b447099d +PT= d15fd4c71adf136e027a36c306d75a58 +CT= c2de8c5200f6fcbf1a4d6178909df110 +TEST= 229 +KEY= c3eb1424efd0acdf3670c4943cb2cf5936693cc81812a4c6a148e393a6f22d79 +IV= c2de8c5200f6fcbf1a4d6178909df110 +PT= ec0c8be8d34535de8cde2c5167c31f46 +CT= 104cbecb1134cae09b2fe8c5ce2e0901 +TEST= 230 +KEY= df9f70702da816906f3907575df4d3032625820309266e263a670b5668dc2478 +IV= 104cbecb1134cae09b2fe8c5ce2e0901 +PT= 1c746454c278ba4f5949c3c361461c5a +CT= 65287f66f01ac054b1051d700eddbf2b +TEST= 231 +KEY= f6c4ce3006a43efbe18c5ff305f32c37430dfd65f93cae728b62162666019b53 +IV= 65287f66f01ac054b1051d700eddbf2b +PT= 295bbe402b0c286b8eb558a45807ff34 +CT= 4933d44fd414225cb1e6951240d28150 +TEST= 232 +KEY= 3963ce7465d89fbe550649326262db450a3e292a2d288c2e3a84833426d31a03 +IV= 4933d44fd414225cb1e6951240d28150 +PT= cfa70044637ca145b48a16c16791f772 +CT= 3733351f76de0e07581f84600e38efdd +TEST= 233 +KEY= 42468662273d8cb3efab19dbc802888b3d0d1c355bf68229629b075428ebf5de +IV= 3733351f76de0e07581f84600e38efdd +PT= 7b25481642e5130dbaad50e9aa6053ce +CT= f16f22eb9ccd854591ae2fc28e1d4b59 +TEST= 234 +KEY= e2b3e5ea6573fc8abe4e890fa4f5502dcc623edec73b076cf3352896a6f6be87 +IV= f16f22eb9ccd854591ae2fc28e1d4b59 +PT= a0f56388424e703951e590d46cf7d8a6 +CT= 1d607c6e9bad454dd5de785f2a78f990 +TEST= 235 +KEY= fdb55af96e09af677aa4737992e13c9ed10242b05c96422126eb50c98c8e4717 +IV= 1d607c6e9bad454dd5de785f2a78f990 +PT= 1f06bf130b7a53edc4eafa7636146cb3 +CT= 7b16b6a8f88e05f6a9a036a67cb8a2b6 +TEST= 236 +KEY= e546d74518cf4aa64b399ea321c570caaa14f418a41847d78f4b666ff036e5a1 +IV= 7b16b6a8f88e05f6a9a036a67cb8a2b6 +PT= 18f38dbc76c6e5c1319deddab3244c54 +CT= 63ad66fcf9d52195cd0339443f554311 +TEST= 237 +KEY= 2f9b91a24bef0e503dc576e4f8d32c16c9b992e45dcd664242485f2bcf63a6b0 +IV= 63ad66fcf9d52195cd0339443f554311 +PT= cadd46e7532044f676fce847d9165cdc +CT= 6293fbb897d8f0c60171bea3072ca512 +TEST= 238 +KEY= 97b7df112effe9279d5edf932889d84bab2a695cca1596844339e188c84f03a2 +IV= 6293fbb897d8f0c60171bea3072ca512 +PT= b82c4eb36510e777a09ba977d05af45d +CT= 9555d7f244448c80e965ce6ab7ef0f7b +TEST= 239 +KEY= 39f26b429fe4111daa984f03112b339f3e7fbeae8e511a04aa5c2fe27fa00cd9 +IV= 9555d7f244448c80e965ce6ab7ef0f7b +PT= ae45b453b11bf83a37c6909039a2ebd4 +CT= fa242c9db2984e9efa8cd98ae7c29d6f +TEST= 240 +KEY= 64c6d001cb3c8afc24a72da11d172727c45b92333cc9549a50d0f668986291b6 +IV= fa242c9db2984e9efa8cd98ae7c29d6f +PT= 5d34bb4354d89be18e3f62a20c3c14b8 +CT= 2998b59b0441f068d7f3fce7aeaa6fd9 +TEST= 241 +KEY= fe56e2eb2434ca49d46a684dbce2426cedc327a83888a4f287230a8f36c8fe6f +IV= 2998b59b0441f068d7f3fce7aeaa6fd9 +PT= 9a9032eaef0840b5f0cd45eca1f5654b +CT= a3f77bba27ba88f33d4330eb2cc0efba +TEST= 242 +KEY= 0f9b3cad0edfa9c429f3a005c78fe9f84e345c121f322c01ba603a641a0811d5 +IV= a3f77bba27ba88f33d4330eb2cc0efba +PT= f1cdde462aeb638dfd99c8487b6dab94 +CT= 9c751c64bcb82229aba5130353455ccb +TEST= 243 +KEY= 1725a4c019fb909fb1de2aca00e9a33dd2414076a38a0e2811c52967494d4d1e +IV= 9c751c64bcb82229aba5130353455ccb +PT= 18be986d1724395b982d8acfc7664ac5 +CT= 540de482b7170e925fa4b429f6bcd458 +TEST= 244 +KEY= e2a619367235aa4611a72fd4faf68fb3864ca4f4149d00ba4e619d4ebff19946 +IV= 540de482b7170e925fa4b429f6bcd458 +PT= f583bdf66bce3ad9a079051efa1f2c8e +CT= 6aade1e1a12f5c83af434cad95b29678 +TEST= 245 +KEY= 8629fb2cc8c06a07ec910681499e917fece14515b5b25c39e122d1e32a430f3e +IV= 6aade1e1a12f5c83af434cad95b29678 +PT= 648fe21abaf5c041fd362955b3681ecc +CT= 11308758a1c2075feaecd260867ca343 +TEST= 246 +KEY= 5edd76c395d2a0d3d547cfb394b439eafdd1c24d14705b660bce0383ac3fac7d +IV= 11308758a1c2075feaecd260867ca343 +PT= d8f48def5d12cad439d6c932dd2aa895 +CT= 14c9a904a3909a8ff44d88e22f8626df +TEST= 247 +KEY= af3fa8d6034564d7151c3933c7986cfce9186b49b7e0c1e9ff838b6183b98aa2 +IV= 14c9a904a3909a8ff44d88e22f8626df +PT= f1e2de159697c404c05bf680532c5516 +CT= a042d7f391a37e5a3edb3022400ec797 +TEST= 248 +KEY= 8acc720216dbdbdb4c213fe65e575a09495abcba2643bfb3c158bb43c3b74d35 +IV= a042d7f391a37e5a3edb3022400ec797 +PT= 25f3dad4159ebf0c593d06d599cf36f5 +CT= 439fef326223a65f7a555c6231178190 +TEST= 249 +KEY= f2882a52603203a71895a5870ccf7ee40ac55388446019ecbb0de721f2a0cca5 +IV= 439fef326223a65f7a555c6231178190 +PT= 7844585076e9d87c54b49a61529824ed +CT= 6fe1286c19aa3bc802f1c6c7b58db4c4 +TEST= 250 +KEY= 57efb10bfc21e28397a9d5e5a533d35b65247be45dca2224b9fc21e6472d7861 +IV= 6fe1286c19aa3bc802f1c6c7b58db4c4 +PT= a5679b599c13e1248f3c7062a9fcadbf +CT= c38d763981392ff038573ca341dd8ea1 +TEST= 251 +KEY= 19328a5147bc2e7c5149da257487d734a6a90ddddcf30dd481ab1d4506f0f6c0 +IV= c38d763981392ff038573ca341dd8ea1 +PT= 4edd3b5abb9dccffc6e00fc0d1b4046f +CT= 5fd553a2848c683b138d50f2741b124d +TEST= 252 +KEY= ed66de43fe0f966850ef6754e21b69a0f97c5e7f587f65ef92264db772ebe48d +IV= 5fd553a2848c683b138d50f2741b124d +PT= f4545412b9b3b81401a6bd71969cbe94 +CT= 910cdcbe38068a51185a879ff2b45b9c +TEST= 253 +KEY= e53d9016de7df4e2377968864b6f69f8687082c16079efbe8a7cca28805fbf11 +IV= 910cdcbe38068a51185a879ff2b45b9c +PT= 085b4e552072628a67960fd2a9740058 +CT= e0a0e68a14893501d75bc42b8efc6f96 +TEST= 254 +KEY= c88c4383e2d16541765e5db85957c59188d0644b74f0dabf5d270e030ea3d087 +IV= e0a0e68a14893501d75bc42b8efc6f96 +PT= 2db1d3953cac91a34127353e1238ac69 +CT= a66dd21da627347f962a0ab7dca887ed +TEST= 255 +KEY= 6f01cc5c22de71c7c2d5b429aa756a392ebdb656d2d7eec0cb0d04b4d20b576a +IV= a66dd21da627347f962a0ab7dca887ed +PT= a78d8fdfc00f1486b48be991f322afa8 +CT= 87551bc7a6b6d9b76239cb8a31ff1993 +TEST= 256 +KEY= dac405506cd3779fc2400b459b7c6b6ea9e8ad9174613777a934cf3ee3f44ef9 +IV= 87551bc7a6b6d9b76239cb8a31ff1993 +PT= b5c5c90c4e0d06580095bf6c31090157 +CT= b909b206a041f33eb3ac7ed481dfba21 +TEST= 257 +KEY= e482333e6fbaa8427a2e30d56069e0b810e11f97d420c4491a98b1ea622bf4d8 +IV= b909b206a041f33eb3ac7ed481dfba21 +PT= 3e46366e0369dfddb86e3b90fb158bd6 +CT= de5e71f446794d3402400c96fbfeb93f +TEST= 258 +KEY= 176cad69cd20690b95da40b95c43ac54cebf6e639259897d18d8bd7c99d54de7 +IV= de5e71f446794d3402400c96fbfeb93f +PT= f3ee9e57a29ac149eff4706c3c2a4cec +CT= 175a7c580a99e985a2fd2f185d9baadb +TEST= 259 +KEY= fa4dd79a64960c8264624cdf215b54a1d9e5123b98c060f8ba259264c44ee73c +IV= 175a7c580a99e985a2fd2f185d9baadb +PT= ed217af3a9b66589f1b80c667d18f8f5 +CT= 413eb5d166c1d196f0239ff34d184013 +TEST= 260 +KEY= 49855c1008eaf59432518a9f3807a0b398dba7eafe01b16e4a060d978956a72f +IV= 413eb5d166c1d196f0239ff34d184013 +PT= b3c88b8a6c7cf9165633c640195cf412 +CT= 69a3a63c580336296ff826600c754747 +TEST= 261 +KEY= 849d231ae9f90f233f328be6ee0ac180f17801d6a602874725fe2bf78523e068 +IV= 69a3a63c580336296ff826600c754747 +PT= cd187f0ae113fab70d630179d60d6133 +CT= b9af0ca2b502c2deb66834bd729aa528 +TEST= 262 +KEY= 40e3f7ea3e7cfbdbf57935dbb124cf7f48d70d741300459993961f4af7b94540 +IV= b9af0ca2b502c2deb66834bd729aa528 +PT= c47ed4f0d785f4f8ca4bbe3d5f2e0eff +CT= 99e16968796ab521fc460a8df6744fa8 +TEST= 263 +KEY= 4fdf8d16b85e527490fbe95ea34138d6d136641c6a6af0b86fd015c701cd0ae8 +IV= 99e16968796ab521fc460a8df6744fa8 +PT= 0f3c7afc8622a9af6582dc851265f7a9 +CT= 7b871b0153657949d1fe7259e16791b7 +TEST= 264 +KEY= 6ad7099ea6dc50f5cc836c3eb934cf92aab17f1d390f89f1be2e679ee0aa9b5f +IV= 7b871b0153657949d1fe7259e16791b7 +PT= 250884881e8202815c7885601a75f744 +CT= 8d6b80eac01bf7e204a79dd14bfdb71a +TEST= 265 +KEY= 0860dd776ad2014ed90d0837a5a298b627dafff7f9147e13ba89fa4fab572c45 +IV= 8d6b80eac01bf7e204a79dd14bfdb71a +PT= 62b7d4e9cc0e51bb158e64091c965724 +CT= dad6a83408559ad3003c6995dc099303 +TEST= 266 +KEY= 9e8757199d96ca08b9c3cef817e902b8fd0c57c3f141e4c0bab593da775ebf46 +IV= dad6a83408559ad3003c6995dc099303 +PT= 96e78a6ef744cb4660cec6cfb24b9a0e +CT= aa6ef32afc8aa6adcde86d86cc59afb4 +TEST= 267 +KEY= 483ad9696154b929f35016b648f5952b5762a4e90dcb426d775dfe5cbb0710f2 +IV= aa6ef32afc8aa6adcde86d86cc59afb4 +PT= d6bd8e70fcc273214a93d84e5f1c9793 +CT= 713f9516a55fbfa4ae8155ec12a3ab5d +TEST= 268 +KEY= 027b7f5f83b26099a4ce8fcc1ab84529265d31ffa894fdc9d9dcabb0a9a4bbaf +IV= 713f9516a55fbfa4ae8155ec12a3ab5d +PT= 4a41a636e2e6d9b0579e997a524dd002 +CT= b2e4beaf6db84214e379b89697191379 +TEST= 269 +KEY= d7aefad28855bb04a9604527f8376caf94b98f50c52cbfdd3aa513263ebda8d6 +IV= b2e4beaf6db84214e379b89697191379 +PT= d5d5858d0be7db9d0daecaebe28f2986 +CT= 9fe3b8941d9f85b1400cc45b7bde8e9f +TEST= 270 +KEY= b5ebe7cb901f69e61ec6f011e6a46a2e0b5a37c4d8b33a6c7aa9d77d45632649 +IV= 9fe3b8941d9f85b1400cc45b7bde8e9f +PT= 62451d19184ad2e2b7a6b5361e930681 +CT= e9abfc5563b4ad1718ef4a91f7d60913 +TEST= 271 +KEY= 571805b63bc20f5784af56fdb71cbcd7e2f1cb91bb07977b62469decb2b52f5a +IV= e9abfc5563b4ad1718ef4a91f7d60913 +PT= e2f3e27dabdd66b19a69a6ec51b8d6f9 +CT= d825dc1c8c73a84bdfefd9799d9e3960 +TEST= 272 +KEY= 9eed79d9abb11094fb4475ed2ec042133ad4178d37743f30bda944952f2b163a +IV= d825dc1c8c73a84bdfefd9799d9e3960 +PT= c9f57c6f90731fc37feb231099dcfec4 +CT= 7d0dc4c31259fd0a46d2d2282f1fe22e +TEST= 273 +KEY= ef905e20846e064a3b3281fd2bd59ab647d9d34e252dc23afb7b96bd0034f414 +IV= 7d0dc4c31259fd0a46d2d2282f1fe22e +PT= 717d27f92fdf16dec076f4100515d8a5 +CT= 93fafc16eff504a9d2b791a272a78135 +TEST= 274 +KEY= 8f219c67acf0f1c745fa0abbade96015d4232f58cad8c69329cc071f72937521 +IV= 93fafc16eff504a9d2b791a272a78135 +PT= 60b1c247289ef78d7ec88b46863cfaa3 +CT= ef387517f8c781a79700c8196dca6f1a +TEST= 275 +KEY= 48c6408fd8fa84d30dd53b83b31c425d3b1b5a4f321f4734becccf061f591a3b +IV= ef387517f8c781a79700c8196dca6f1a +PT= c7e7dce8740a7514482f31381ef52248 +CT= a6166002c7239645d55494bb64840b26 +TEST= 276 +KEY= 1c9eb0648715ca5738a4fd27a63693a09d0d3a4df53cd1716b985bbd7bdd111d +IV= a6166002c7239645d55494bb64840b26 +PT= 5458f0eb5fef4e843571c6a4152ad1fd +CT= fb35646b2008ad29aff508b94179f223 +TEST= 277 +KEY= 4aa2e4bac74e8cd9aea969550d27877866385e26d5347c58c46d53043aa4e33e +IV= fb35646b2008ad29aff508b94179f223 +PT= 563c54de405b468e960d9472ab1114d8 +CT= 59c1692d4598ad622b6586a06892e11d +TEST= 278 +KEY= b9f5a3baaa0c2f6ea5e835f6e6e5d50e3ff9370b90acd13aef08d5a452360223 +IV= 59c1692d4598ad622b6586a06892e11d +PT= f35747006d42a3b70b415ca3ebc25276 +CT= 3131e251a6a4ac7226a1809553198ab8 +TEST= 279 +KEY= ef46814f8656d3d8abaf3b08efebc3150ec8d55a36087d48c9a95531012f889b +IV= 3131e251a6a4ac7226a1809553198ab8 +PT= 56b322f52c5afcb60e470efe090e161b +CT= 2e30d8d5b7b636307a6d354fbed41a2d +TEST= 280 +KEY= 3dfbe0fe20f0421caabd62e2cdb0e60f20f80d8f81be4b78b3c4607ebffb92b6 +IV= 2e30d8d5b7b636307a6d354fbed41a2d +PT= d2bd61b1a6a691c4011259ea225b251a +CT= 6d791952f9416fc09b78517a2ffe986f +TEST= 281 +KEY= 5197cf05753d155c5b08a5eb51b82f2d4d8114dd78ff24b828bc310490050ad9 +IV= 6d791952f9416fc09b78517a2ffe986f +PT= 6c6c2ffb55cd5740f1b5c7099c08c922 +CT= 37a8e0b9375ad5669a396d980d68d0f3 +TEST= 282 +KEY= b3efe2f914264aaab7c7fd9c4843619e7a29f4644fa5f1deb2855c9c9d6dda2a +IV= 37a8e0b9375ad5669a396d980d68d0f3 +PT= e2782dfc611b5ff6eccf587719fb4eb3 +CT= bc65630db71ee8da2194e5dfbc48360e +TEST= 283 +KEY= caab7758ff4aff39a98c2202a26165cfc64c9769f8bb19049311b9432125ec24 +IV= bc65630db71ee8da2194e5dfbc48360e +PT= 794495a1eb6cb5931e4bdf9eea220451 +CT= 9c47136c1b510bfcefa7f6659bda08c2 +TEST= 284 +KEY= cc38852e17544db004372c4a3aa3dfdb5a0b8405e3ea12f87cb64f26baffe4e6 +IV= 9c47136c1b510bfcefa7f6659bda08c2 +PT= 0693f276e81eb289adbb0e4898c2ba14 +CT= 68ac57d13ec53c250febfc64b1992b1c +TEST= 285 +KEY= 108fe55553f353dfabd421e15a18c9f532a7d3d4dd2f2edd735db3420b66cffa +IV= 68ac57d13ec53c250febfc64b1992b1c +PT= dcb7607b44a71e6fafe30dab60bb162e +CT= 9a8c11e031e57b77138a3637784d1d71 +TEST= 286 +KEY= c432ea6e854de8c191c6f0ed4a2bf1d7a82bc234ecca55aa60d78575732bd28b +IV= 9a8c11e031e57b77138a3637784d1d71 +PT= d4bd0f3bd6bebb1e3a12d10c10333822 +CT= 3bbb1e76a491a5aa145ed931bb886333 +TEST= 287 +KEY= 980941d5fefd458061b1b443e39818299390dc42485bf00074895c44c8a3b1b8 +IV= 3bbb1e76a491a5aa145ed931bb886333 +PT= 5c3babbb7bb0ad41f07744aea9b3e9fe +CT= f79f1b46f57bdd36b58dda33619d3920 +TEST= 288 +KEY= b4ff33fb094612b6a3438a285c3aea41640fc704bd202d36c1048677a93e8898 +IV= f79f1b46f57bdd36b58dda33619d3920 +PT= 2cf6722ef7bb5736c2f23e6bbfa2f268 +CT= f1c3ed72d0b6d917dd6f8ae86cfd8cbf +TEST= 289 +KEY= bc81027596771f9c591be6c61762b1e795cc2a766d96f4211c6b0c9fc5c30427 +IV= f1c3ed72d0b6d917dd6f8ae86cfd8cbf +PT= 087e318e9f310d2afa586cee4b585ba6 +CT= eaf1aaceeb9f9be0e880911bfeeac2ac +TEST= 290 +KEY= d41458000dded43b83daa81b1d7ffb597f3d80b886096fc1f4eb9d843b29c68b +IV= eaf1aaceeb9f9be0e880911bfeeac2ac +PT= 68955a759ba9cba7dac14edd0a1d4abe +CT= 7b35179e67e9b40346f7de6356edc98f +TEST= 291 +KEY= facdc2b3ba9e125b2a734de75f99f48c04089726e1e0dbc2b21c43e76dc40f04 +IV= 7b35179e67e9b40346f7de6356edc98f +PT= 2ed99ab3b740c660a9a9e5fc42e60fd5 +CT= 0ede849d7e56b296b12c1edf37436a8d +TEST= 292 +KEY= e73022253439eb4464ce0b205bbb0f1f0ad613bb9fb6695403305d385a876589 +IV= 0ede849d7e56b296b12c1edf37436a8d +PT= 1dfde0968ea7f91f4ebd46c70422fb93 +CT= d02f1eaf3cf6a6b681baf8ecb921ffc4 +TEST= 293 +KEY= 9f3671205266dc4f7c771eba74265f36daf90d14a340cfe2828aa5d4e3a69a4d +IV= d02f1eaf3cf6a6b681baf8ecb921ffc4 +PT= 78065305665f370b18b9159a2f9d5029 +CT= e365be1a125c6930dfdcbb33e6937ec5 +TEST= 294 +KEY= 111a3e012c9d5cb2967e8bd22907d6f7399cb30eb11ca6d25d561ee70535e488 +IV= e365be1a125c6930dfdcbb33e6937ec5 +PT= 8e2c4f217efb80fdea0995685d2189c1 +CT= c5b24eec5cdd17aa56838b09ec4ab725 +TEST= 295 +KEY= 15da3ee4ee9a560b05493ffc971713a5fc2efde2edc1b1780bd595eee97f53ad +IV= c5b24eec5cdd17aa56838b09ec4ab725 +PT= 04c000e5c2070ab99337b42ebe10c552 +CT= 4d8a43cd28bbcb86953fa55a409bf130 +TEST= 296 +KEY= 2c8b30484d954192818342f3766c1415b1a4be2fc57a7afe9eea30b4a9e4a29d +IV= 4d8a43cd28bbcb86953fa55a409bf130 +PT= 39510eaca30f179984ca7d0fe17b07b0 +CT= a524a6329e6dce041f72459234ecde78 +TEST= 297 +KEY= 0f162bad5f298ee0b0164cfed6a7ac271480181d5b17b4fa819875269d087ce5 +IV= a524a6329e6dce041f72459234ecde78 +PT= 239d1be512bccf7231950e0da0cbb832 +CT= 90bbc5130d1c06182f737fe7f0fcd00d +TEST= 298 +KEY= 62744ca02b6684d05a91f2049d403480843bdd0e560bb2e2aeeb0ac16df4ace8 +IV= 90bbc5130d1c06182f737fe7f0fcd00d +PT= 6d62670d744f0a30ea87befa4be798a7 +CT= 35f293eddec8d9446a4acd34602839b5 +TEST= 299 +KEY= 21f5373da5d6bf15bc163383f62ea92fb1c94ee388c36ba6c4a1c7f50ddc955d +IV= 35f293eddec8d9446a4acd34602839b5 +PT= 43817b9d8eb03bc5e687c1876b6e9daf +CT= e45cf478d7c84325143165f58b041a13 +TEST= 300 +KEY= 4cf4a508b4df37a831916353620dc1f45595ba9b5f0b2883d090a20086d88f4e +IV= e45cf478d7c84325143165f58b041a13 +PT= 6d019235110988bd8d8750d0942368db +CT= 964983c30745d7eea1bd5e287dac466c +TEST= 301 +KEY= 35c99c004d01e89f94a9b3bc79c492d7c3dc3958584eff6d712dfc28fb74c922 +IV= 964983c30745d7eea1bd5e287dac466c +PT= 793d3908f9dedf37a538d0ef1bc95323 +CT= 6834813d8403a963ad36c1a18ca605c0 +TEST= 302 +KEY= f185723d6a2d2a6f9f4b9194a444aa2aabe8b865dc4d560edc1b3d8977d2cce2 +IV= 6834813d8403a963ad36c1a18ca605c0 +PT= c44cee3d272cc2f00be22228dd8038fd +CT= 61f35aa76e1e0ec2d5e4f4f432b68260 +TEST= 303 +KEY= b571b0bc6cfd2ba23611fb9a900a31faca1be2c2b25358cc09ffc97d45644e82 +IV= 61f35aa76e1e0ec2d5e4f4f432b68260 +PT= 44f4c28106d001cda95a6a0e344e9bd0 +CT= dd081a96602e6665b860466b8d14050e +TEST= 304 +KEY= 2a5757156c596de633d0d8908011c3771713f854d27d3ea9b19f8f16c8704b8c +IV= dd081a96602e6665b860466b8d14050e +PT= 9f26e7a900a4464405c1230a101bf28d +CT= 5bf18ea3d7f3ed1d941ea1b995313b98 +TEST= 305 +KEY= da008b517fa48e908a72b8525cc31aef4ce276f7058ed3b425812eaf5d417014 +IV= 5bf18ea3d7f3ed1d941ea1b995313b98 +PT= f057dc4413fde376b9a260c2dcd2d998 +CT= 74c361b6a13013e9abf6841601513539 +TEST= 306 +KEY= e313244dc22ac16c1d59ac494aa728d738211741a4bec05d8e77aab95c10452d +IV= 74c361b6a13013e9abf6841601513539 +PT= 3913af1cbd8e4ffc972b141b16643238 +CT= 9937614570fd404d5b39ba43d3a20602 +TEST= 307 +KEY= 92a7173e943cba80af56203552625e8aa1167604d4438010d54e10fa8fb2432f +IV= 9937614570fd404d5b39ba43d3a20602 +PT= 71b4337356167becb20f8c7c18c5765d +CT= 726fcddf8e6738b51d767828ebdfc71e +TEST= 308 +KEY= 242c75c141a58dc403020e52421bb347d379bbdb5a24b8a5c83868d2646d8431 +IV= 726fcddf8e6738b51d767828ebdfc71e +PT= b68b62ffd5993744ac542e671079edcd +CT= 78f735344bf10eed47969f1c02ecbf8c +TEST= 309 +KEY= 5247008c3eb79aa67e5d2e0b95d0ac3aab8e8eef11d5b6488faef7ce66813bbd +IV= 78f735344bf10eed47969f1c02ecbf8c +PT= 766b754d7f1217627d5f2059d7cb1f7d +CT= 7d6a6ca54b084105df6a778a4913bb04 +TEST= 310 +KEY= 06e7c1a6c8bc6a3355a86f61b41e70c6d6e4e24a5addf74d50c480442f9280b9 +IV= 7d6a6ca54b084105df6a778a4913bb04 +PT= 54a0c12af60bf0952bf5416a21cedcfc +CT= 11f0a303d6c0ed5e18f40248af1a794b +TEST= 311 +KEY= d7722746b58d494be9b97f586ca4bb0ac71441498c1d1a134830820c8088f9f2 +IV= 11f0a303d6c0ed5e18f40248af1a794b +PT= d195e6e07d312378bc111039d8bacbcc +CT= 2a715e8ac7101415e65ebf34cc4cd786 +TEST= 312 +KEY= 98b1e5954de8000b6fffe98d918b6237ed651fc34b0d0e06ae6e3d384cc42e74 +IV= 2a715e8ac7101415e65ebf34cc4cd786 +PT= 4fc3c2d3f8654940864696d5fd2fd93d +CT= 965e8af93d390e424c9f4f1fbf9d98a5 +TEST= 313 +KEY= 74b910207acd1d7c801724d53ed6bbc47b3b953a76340044e2f17227f359b6d1 +IV= 965e8af93d390e424c9f4f1fbf9d98a5 +PT= ec08f5b537251d77efe8cd58af5dd9f3 +CT= 294782dd29c65b6c445c5d92f50e6d19 +TEST= 314 +KEY= 3e1ad36fdcc33f6b3425b5d52717845e527c17e75ff25b28a6ad2fb50657dbc8 +IV= 294782dd29c65b6c445c5d92f50e6d19 +PT= 4aa3c34fa60e2217b432910019c13f9a +CT= e22098e7edbeecc49fa8e31b76e925ca +TEST= 315 +KEY= be9f93fe153df61370f6709f8265dccdb05c8f00b24cb7ec3905ccae70befe02 +IV= e22098e7edbeecc49fa8e31b76e925ca +PT= 80854091c9fec97844d3c54aa5725893 +CT= 24e80c1f59a4ea36044358e0c0d4f29d +TEST= 316 +KEY= a790f593cfa1643bd2eb3a1aab8176a294b4831febe85dda3d46944eb06a0c9f +IV= 24e80c1f59a4ea36044358e0c0d4f29d +PT= 190f666dda9c9228a21d4a8529e4aa6f +CT= 63cf21803941b521532ff36f9fbfc7bd +TEST= 317 +KEY= 0cf6f000352b4b583e4aee707d111dc9f77ba29fd2a9e8fb6e6967212fd5cb22 +IV= 63cf21803941b521532ff36f9fbfc7bd +PT= ab660593fa8a2f63eca1d46ad6906b6b +CT= 250941c1d45c82b0d9c381293cdd833a +TEST= 318 +KEY= 1f875bcf1967857990ec97864b1ea9f8d272e35e06f56a4bb7aae60813084818 +IV= 250941c1d45c82b0d9c381293cdd833a +PT= 1371abcf2c4cce21aea679f6360fb431 +CT= 8303b962dafc4a225c0fd6ea60d29cf4 +TEST= 319 +KEY= 42fe25bf51418fe7a7c7a1828219e1db51715a3cdc092069eba530e273dad4ec +IV= 8303b962dafc4a225c0fd6ea60d29cf4 +PT= 5d797e7048260a9e372b3604c9074823 +CT= 29e2db359fab42c0a83a4059a059cb51 +TEST= 320 +KEY= 6c821a4893fe0eac88fc1f98bd44ad0a7893810943a262a9439f70bbd3831fbd +IV= 29e2db359fab42c0a83a4059a059cb51 +PT= 2e7c3ff7c2bf814b2f3bbe1a3f5d4cd1 +CT= 02bdb7ec18279fa9b7788d95feb4000e +TEST= 321 +KEY= 411670d389d0a04859fdc26de5aad1297a2e36e55b85fd00f4e7fd2e2d371fb3 +IV= 02bdb7ec18279fa9b7788d95feb4000e +PT= 2d946a9b1a2eaee4d101ddf558ee7c23 +CT= 3960a92a34967f13b754f2265a6f68c1 +TEST= 322 +KEY= 851bcd18f6043de625bbea33e1e860e3434e9fcf6f13821343b30f0877587772 +IV= 3960a92a34967f13b754f2265a6f68c1 +PT= c40dbdcb7fd49dae7c46285e0442b1ca +CT= ef396ab8613ac6083932734d38869458 +TEST= 323 +KEY= 1944f363f3143a380f26bd4831a6bd9eac77f5770e29441b7a817c454fdee32a +IV= ef396ab8613ac6083932734d38869458 +PT= 9c5f3e7b051007de2a9d577bd04edd7d +CT= cb73b8d257cc1a8235e48da0e6aecc4e +TEST= 324 +KEY= c2f3c203f591c78914e31ba1e083ab9867044da559e55e994f65f1e5a9702f64 +IV= cb73b8d257cc1a8235e48da0e6aecc4e +PT= dbb731600685fdb11bc5a6e9d1251606 +CT= 3b0b12757b5d1b6e0130fcc306e9dbaa +TEST= 325 +KEY= 0dcb66b972631afbb1da22f1418ee1c45c0f5fd022b845f74e550d26af99f4ce +IV= 3b0b12757b5d1b6e0130fcc306e9dbaa +PT= cf38a4ba87f2dd72a5393950a10d4a5c +CT= ccef4079ce8faf0e6b8cd4c8751059e1 +TEST= 326 +KEY= 8ff976d3c735506d86a3540664f1c40590e01fa9ec37eaf925d9d9eeda89ad2f +IV= ccef4079ce8faf0e6b8cd4c8751059e1 +PT= 8232106ab5564a96377976f7257f25c1 +CT= d835d2fa5583d9b2c16424960163df7f +TEST= 327 +KEY= 3499925b26e4f846caa230ec069f127f48d5cd53b9b4334be4bdfd78dbea7250 +IV= d835d2fa5583d9b2c16424960163df7f +PT= bb60e488e1d1a82b4c0164ea626ed67a +CT= 4634485db5d9c40fa2f6ef36e477f0b7 +TEST= 328 +KEY= 7a133eec3dd747fe38a3370f8927a3c70ee1850e0c6df744464b124e3f9d82e7 +IV= 4634485db5d9c40fa2f6ef36e477f0b7 +PT= 4e8aacb71b33bfb8f20107e38fb8b1b8 +CT= ae30cd2a5d84cef10b9c15ee1fe20ceb +TEST= 329 +KEY= f573665345317bab5f14881777a0d789a0d1482451e939b54dd707a0207f8e0c +IV= ae30cd2a5d84cef10b9c15ee1fe20ceb +PT= 8f6058bf78e63c5567b7bf18fe87744e +CT= b3926cde5bfb1363dcca28cda2dc4cd8 +TEST= 330 +KEY= fefb661fa786bf2da1b70fd7d06b86e8134324fa0a122ad6911d2f6d82a3c2d4 +IV= b3926cde5bfb1363dcca28cda2dc4cd8 +PT= 0b88004ce2b7c486fea387c0a7cb5161 +CT= 633388fa9eae0db2036f63cb2e21c266 +TEST= 331 +KEY= bfc495dfba60078708d992724c9201577070ac0094bc276492724ca6ac8200b2 +IV= 633388fa9eae0db2036f63cb2e21c266 +PT= 413ff3c01de6b8aaa96e9da59cf987bf +CT= 54acb838d247d26a1544b2e42f18cf3f +TEST= 332 +KEY= eb0113e4ffe1201b59eae94706b2571f24dc143846fbf50e8736fe42839acf8d +IV= 54acb838d247d26a1544b2e42f18cf3f +PT= 54c5863b4581279c51337b354a205648 +CT= b9210b8a8639ca5c94a1cf1169f89ddb +TEST= 333 +KEY= 0e1d5f7873fd6440227c5529aeb4c7999dfd1fb2c0c23f5213973153ea625256 +IV= b9210b8a8639ca5c94a1cf1169f89ddb +PT= e51c4c9c8c1c445b7b96bc6ea8069086 +CT= 8990488561b43b03cf9fe631e2e7d5e7 +TEST= 334 +KEY= 8b2759471137dbf37906b394efef96d2146d5737a1760451dc08d762088587b1 +IV= 8990488561b43b03cf9fe631e2e7d5e7 +PT= 853a063f62cabfb35b7ae6bd415b514b +CT= 9dce77d8ccc0f041fa717c28474e9a30 +TEST= 335 +KEY= 0d4b29e8d6f39ca01bc01ce73e2834c689a320ef6db6f4102679ab4a4fcb1d81 +IV= 9dce77d8ccc0f041fa717c28474e9a30 +PT= 866c70afc7c4475362c6af73d1c7a214 +CT= e1da174fe5848d21735e55b91ca48a9b +TEST= 336 +KEY= 55228f6ff93b7de9304cd75991c133a5687937a0883279315527fef3536f971a +IV= e1da174fe5848d21735e55b91ca48a9b +PT= 5869a6872fc8e1492b8ccbbeafe90763 +CT= c578f53ad69ad508711e674f8dd2a843 +TEST= 337 +KEY= 35ca943437046860f72a1f8554127676ad01c29a5ea8ac39243999bcdebd3f59 +IV= c578f53ad69ad508711e674f8dd2a843 +PT= 60e81b5bce3f1589c766c8dcc5d345d3 +CT= 177a50196260d3f0a3f97423899ebee2 +TEST= 338 +KEY= b8c3b8414c112fc2e2e848733d5cf69cba7b92833cc87fc987c0ed9f572381bb +IV= 177a50196260d3f0a3f97423899ebee2 +PT= 8d092c757b1547a215c257f6694e80ea +CT= 6b03a799c51c7d0a9d3c9929617e69b1 +TEST= 339 +KEY= e82b651ae5740119104fe3284ce780e4d178351af9d402c31afc74b6365de80a +IV= 6b03a799c51c7d0a9d3c9929617e69b1 +PT= 50e8dd5ba9652edbf2a7ab5b71bb7678 +CT= 8d4c7c1157422e7b6dda47c5c2c246f4 +TEST= 340 +KEY= 3c0b660f2b78f768812ac671d3107ad85c34490bae962cb877263373f49faefe +IV= 8d4c7c1157422e7b6dda47c5c2c246f4 +PT= d4200315ce0cf671916525599ff7fa3c +CT= 787b3c51094569bc1f139102964df5af +TEST= 341 +KEY= a197b59c700a4786e840733047964fd4244f755aa7d345046835a27162d25b51 +IV= 787b3c51094569bc1f139102964df5af +PT= 9d9cd3935b72b0ee696ab5419486350c +CT= ae02945b4e63ac35b6ac2dfa2df3ceba +TEST= 342 +KEY= 00e75c4b909d44a94fa20eda6c3628418a4de101e9b0e931de998f8b4f2195eb +IV= ae02945b4e63ac35b6ac2dfa2df3ceba +PT= a170e9d7e097032fa7e27dea2ba06795 +CT= ac4aacd3597fe73f519f7cedafe6e000 +TEST= 343 +KEY= 4626be31853c15de412ef2a42328d47326074dd2b0cf0e0e8f06f366e0c775eb +IV= ac4aacd3597fe73f519f7cedafe6e000 +PT= 46c1e27a15a151770e8cfc7e4f1efc32 +CT= 5eb8b35708a135e041603ba323663f34 +TEST= 344 +KEY= 1733a037e76437411f49821d948a098978bffe85b86e3beece66c8c5c3a14adf +IV= 5eb8b35708a135e041603ba323663f34 +PT= 51151e066258229f5e6770b9b7a2ddfa +CT= 6674fb922570377334a4f22d13e95bd8 +TEST= 345 +KEY= 8474275a2e4d5e5448eb8d34b65ee7081ecb05179d1e0c9dfac23ae8d0481107 +IV= 6674fb922570377334a4f22d13e95bd8 +PT= 9347876dc929691557a20f2922d4ee81 +CT= f0e3f09c0350c0172e449a01f24ab828 +TEST= 346 +KEY= 765aa3f4014b8475cf832de6128f7f2dee28f58b9e4ecc8ad486a0e92202a92f +IV= f0e3f09c0350c0172e449a01f24ab828 +PT= f22e84ae2f06da218768a0d2a4d19825 +CT= cc156010299679adee9cc000fd5c90e5 +TEST= 347 +KEY= dd3d3afc83b7eebc58ce35b35719b587223d959bb7d8b5273a1a60e9df5e39ca +IV= cc156010299679adee9cc000fd5c90e5 +PT= ab67990882fc6ac9974d18554596caaa +CT= 80354edea10038e903c4896313236ce5 +TEST= 348 +KEY= 4764bb8c98bcf3fd4a21a370ae5432bba208db4516d88dce39dee98acc7d552f +IV= 80354edea10038e903c4896313236ce5 +PT= 9a5981701b0b1d4112ef96c3f94d873c +CT= 15140dc26f383eb99425fb51d445cc98 +TEST= 349 +KEY= df729ab7d09bc85489f8ad373ebdda70b71cd68779e0b377adfb12db183899b7 +IV= 15140dc26f383eb99425fb51d445cc98 +PT= 9816213b48273ba9c3d90e4790e9e8cb +CT= 163465787010c97d3c2023d803f62556 +TEST= 350 +KEY= a945b0c5997c596b5155a6bca5055127a128b3ff09f07a0a91db31031bcebce1 +IV= 163465787010c97d3c2023d803f62556 +PT= 76372a7249e7913fd8ad0b8b9bb88b57 +CT= 23e861d557ee72534c8b729240e3a54f +TEST= 351 +KEY= 0e1c166f2b947d14d0c7e6abd280a31e82c0d22a5e1e0859dd5043915b2d19ae +IV= 23e861d557ee72534c8b729240e3a54f +PT= a759a6aab2e8247f819240177785f239 +CT= 652ca6a199d7dbc37936fcd70636989f +TEST= 352 +KEY= 208a37149072011877e3e85b3dc7f4a7e7ec748bc7c9d39aa466bf465d1b8131 +IV= 652ca6a199d7dbc37936fcd70636989f +PT= 2e96217bbbe67c0ca7240ef0ef4757b9 +CT= 7c29d6f4788553e3c50a48027478a98f +TEST= 353 +KEY= a8ffcb194c077eeed66632aebe01652e9bc5a27fbf4c8079616cf744296328be +IV= 7c29d6f4788553e3c50a48027478a98f +PT= 8875fc0ddc757ff6a185daf583c69189 +CT= 7b886fc819d625b224f2516901788e88 +TEST= 354 +KEY= 3716969bddbf04ff4010d4667cca994ae04dcdb7a69aa5cb459ea62d281ba636 +IV= 7b886fc819d625b224f2516901788e88 +PT= 9fe95d8291b87a119676e6c8c2cbfc64 +CT= 3eab925c025f379153ce2c7191026976 +TEST= 355 +KEY= 991d0d313717c7ac62537c8572de094bdee65feba4c5925a16508a5cb919cf40 +IV= 3eab925c025f379153ce2c7191026976 +PT= ae0b9baaeaa8c3532243a8e30e149001 +CT= b9904b8bdf431fddb9166086c9d3e24c +TEST= 356 +KEY= 315772bb82a3dd286fe5891934b19434677614607b868d87af46eada70ca2d0c +IV= b9904b8bdf431fddb9166086c9d3e24c +PT= a84a7f8ab5b41a840db6f59c466f9d7f +CT= 3c7029336ecca5d352db9d0c060d3830 +TEST= 357 +KEY= c99e4e6a8c1d42a9e431ff8b2a8aca615b063d53154a2854fd9d77d676c7153c +IV= 3c7029336ecca5d352db9d0c060d3830 +PT= f8c93cd10ebe9f818bd476921e3b5e55 +CT= 4af4290aa79eb96435d2d3fc745033d7 +TEST= 358 +KEY= 55317b8b407b7d089ed2cef7be80e99111f21459b2d49130c84fa42a029726eb +IV= 4af4290aa79eb96435d2d3fc745033d7 +PT= 9caf35e1cc663fa17ae3317c940a23f0 +CT= bfca0b6b31aad81f1bdc743b48b7cca4 +TEST= 359 +KEY= 6eae6d8b06aa25493ba3608357d71404ae381f32837e492fd393d0114a20ea4f +IV= bfca0b6b31aad81f1bdc743b48b7cca4 +PT= 3b9f160046d15841a571ae74e957fd95 +CT= 89c1d565569a12a68b2e808ab5cfa2e3 +TEST= 360 +KEY= 3245d7c1f5571a1329e1b2303f8a689d27f9ca57d5e45b8958bd509bffef48ac +IV= 89c1d565569a12a68b2e808ab5cfa2e3 +PT= 5cebba4af3fd3f5a1242d2b3685d7c99 +CT= ec8eeaed7894646b1d1a5e058ed41178 +TEST= 361 +KEY= 1de05811428569d3f89cf1c01af434afcb7720baad703fe245a70e9e713b59d4 +IV= ec8eeaed7894646b1d1a5e058ed41178 +PT= 2fa58fd0b7d273c0d17d43f0257e5c32 +CT= 92802f392579c66ad72d2e85776720e8 +TEST= 362 +KEY= 0a8fb6d844ab0b73c05a121085e07ffe59f70f838809f988928a201b065c793c +IV= 92802f392579c66ad72d2e85776720e8 +PT= 176feec9062e62a038c6e3d09f144b51 +CT= 461dbcf9894f5319fe772f6529fbcec0 +TEST= 363 +KEY= 4e6818b3bbef69fa7abec1ebe2e54cdc1feab37a0146aa916cfd0f7e2fa7b7fc +IV= 461dbcf9894f5319fe772f6529fbcec0 +PT= 44e7ae6bff446289bae4d3fb67053322 +CT= 794ca9dc41bae95d415a6d1119582763 +TEST= 364 +KEY= 4a1eabb13924b188441724141f1c88a966a61aa640fc43cc2da7626f36ff909f +IV= 794ca9dc41bae95d415a6d1119582763 +PT= 0476b30282cbd8723ea9e5fffdf9c475 +CT= b761eaf5cc07651bd33d8bf93913eae8 +TEST= 365 +KEY= ffe4e48f8d96710a1be7dbe36f4905cdd1c7f0538cfb26d7fe9ae9960fec7a77 +IV= b761eaf5cc07651bd33d8bf93913eae8 +PT= b5fa4f3eb4b2c0825ff0fff770558d64 +CT= 0b5146eb77161e60d6d1e2faeae80694 +TEST= 366 +KEY= 7a4f383af4bb2dc6588e75ee82c7d9cfda96b6b8fbed38b7284b0b6ce5047ce3 +IV= 0b5146eb77161e60d6d1e2faeae80694 +PT= 85abdcb5792d5ccc4369ae0ded8edc02 +CT= 07635064ce85f6ae17961af1f2b44469 +TEST= 367 +KEY= effe7f8bbbec8bec83fa199102763bedddf5e6dc3568ce193fdd119d17b0388a +IV= 07635064ce85f6ae17961af1f2b44469 +PT= 95b147b14f57a62adb746c7f80b1e222 +CT= 3a9cd5f30c421ff333ba2c2f0a7ad07d +TEST= 368 +KEY= 1df51b7a35e11e2af79e8c59094a1ecfe769332f392ad1ea0c673db21dcae8f7 +IV= 3a9cd5f30c421ff333ba2c2f0a7ad07d +PT= f20b64f18e0d95c6746495c80b3c2522 +CT= f60032c249cf561cb02421da189a57d1 +TEST= 369 +KEY= cc09ffe72a10ae27fe14934a6628ab83116901ed70e587f6bc431c680550bf26 +IV= f60032c249cf561cb02421da189a57d1 +PT= d1fce49d1ff1b00d098a1f136f62b54c +CT= ead5844b160c08f9cdaa15fd5936ef26 +TEST= 370 +KEY= 09c84ca0da0b9fd79d3090e690bab419fbbc85a666e98f0f71e909955c665000 +IV= ead5844b160c08f9cdaa15fd5936ef26 +PT= c5c1b347f01b31f0632403acf6921f9a +CT= 26ad72f011133fd4ced8f38a1abe7d73 +TEST= 371 +KEY= 74fa53c172a2003ec5933f486fcc7bbfdd11f75677fab0dbbf31fa1f46d82d73 +IV= 26ad72f011133fd4ced8f38a1abe7d73 +PT= 7d321f61a8a99fe958a3afaeff76cfa6 +CT= f115fbc0d3f386527176d1df6ad4b38a +TEST= 372 +KEY= 0e5ba209b7bc28d184e73bd37f35c1312c040c96a4093689ce472bc02c0c9ef9 +IV= f115fbc0d3f386527176d1df6ad4b38a +PT= 7aa1f1c8c51e28ef4174049b10f9ba8e +CT= 27ed0ba04734e70317bf58e11b0dd051 +TEST= 373 +KEY= 9404d9139b6597d1f7c7519713c6cbc80be90736e33dd18ad9f8732137014ea8 +IV= 27ed0ba04734e70317bf58e11b0dd051 +PT= 9a5f7b1a2cd9bf0073206a446cf30af9 +CT= 24080a577426f8f270a13f3a5f3db546 +TEST= 374 +KEY= e72476bc679c8dcbab92bba5d48bf6d32fe10d61971b2978a9594c1b683cfbee +IV= 24080a577426f8f270a13f3a5f3db546 +PT= 7320afaffcf91a1a5c55ea32c74d3d1b +CT= a754cc0464e35b387435790505f2dce5 +TEST= 375 +KEY= 4548de389ccad4a65b02a9b5fe90930188b5c165f3f87240dd6c351e6dce270b +IV= a754cc0464e35b387435790505f2dce5 +PT= a26ca884fb56596df09012102a1b65d2 +CT= d9aed2566884e97d081eadb45780aa7d +TEST= 376 +KEY= 2e54365b503140d0ec9074dfa05f4b2c511b13339b7c9b3dd57298aa3a4e8d76 +IV= d9aed2566884e97d081eadb45780aa7d +PT= 6b1ce863ccfb9476b792dd6a5ecfd82d +CT= 9fa221e082cad838ab4b210a8794bd8f +TEST= 377 +KEY= 7c9fb092b8a96465076e14c575e9a8f0ceb932d319b643057e39b9a0bdda30f9 +IV= 9fa221e082cad838ab4b210a8794bd8f +PT= 52cb86c9e89824b5ebfe601ad5b6e3dc +CT= aaea6de5734cf14bed503512eb071c2a +TEST= 378 +KEY= 90ab85a18f2b0255d4f43af5e98daa7e64535f366afab24e93698cb256dd2cd3 +IV= aaea6de5734cf14bed503512eb071c2a +PT= ec34353337826630d39a2e309c64028e +CT= 1359a157b415eb63e038ab7354e6b0f2 +TEST= 379 +KEY= 9135d4d54a1ce6bbf4f23afde23f537c770afe61deef592d735127c1023b9c21 +IV= 1359a157b415eb63e038ab7354e6b0f2 +PT= 019e5174c537e4ee200600080bb2f902 +CT= 0764ebdbfae8fd447244408a5153cc3b +TEST= 380 +KEY= 4b5f1bc60ef5dce83474a3970eb2aba8706e15ba2407a4690115674b5368501a +IV= 0764ebdbfae8fd447244408a5153cc3b +PT= da6acf1344e93a53c086996aec8df8d4 +CT= a31f69e0055e8d4162ac06c088925fba +TEST= 381 +KEY= 9dd8e8d75be2e4d1bc70b30dae0b375fd3717c5a2159292863b9618bdbfa0fa0 +IV= a31f69e0055e8d4162ac06c088925fba +PT= d687f311551738398804109aa0b99cf7 +CT= eb84ac035534cdf1698e660f529e0ec7 +TEST= 382 +KEY= 4a2b2fc8446b4c2575cfe584a490680238f5d059746de4d90a37078489640167 +IV= eb84ac035534cdf1698e660f529e0ec7 +PT= d7f3c71f1f89a8f4c9bf56890a9b5f5d +CT= 9236d37a28c2cf29237127173b93c5d5 +TEST= 383 +KEY= 9be42576823eeaadb34657a5cbb44b21aac303235caf2bf029462093b2f7c4b2 +IV= 9236d37a28c2cf29237127173b93c5d5 +PT= d1cf0abec655a688c689b2216f242323 +CT= 86c122cfa62b1356fee33fecf598acc9 +TEST= 384 +KEY= 5dfc1838b052e95a948d0ac31736cbe62c0221ecfa8438a6d7a51f7f476f687b +IV= 86c122cfa62b1356fee33fecf598acc9 +PT= c6183d4e326c03f727cb5d66dc8280c7 +CT= 8a9926125b1ca354b1d7a9fed0850fee +TEST= 385 +KEY= 2b12fa914ee7674eaded81c47a67a1b4a69b07fea1989bf26672b68197ea6795 +IV= 8a9926125b1ca354b1d7a9fed0850fee +PT= 76eee2a9feb58e1439608b076d516a52 +CT= ad99a2a427bff7a17c375db38764ebfc +TEST= 386 +KEY= 10607de088cb92382089ef99b7c054280b02a55a86276c531a45eb32108e8c69 +IV= ad99a2a427bff7a17c375db38764ebfc +PT= 3b728771c62cf5768d646e5dcda7f59c +CT= 0e141fd7d6928e7b7885638b6334947c +TEST= 387 +KEY= 605eccb38f9ffd9dab2db523313ffadb0516ba8d50b5e22862c088b973ba1815 +IV= 0e141fd7d6928e7b7885638b6334947c +PT= 703eb15307546fa58ba45aba86ffaef3 +CT= 996cb8723b08b99a4959072dc8a73292 +TEST= 388 +KEY= c6371257bda461f3a4d2f1ed5dd4b0b69c7a02ff6bbd5bb22b998f94bb1d2a87 +IV= 996cb8723b08b99a4959072dc8a73292 +PT= a669dee4323b9c6e0fff44ce6ceb4a6d +CT= 72966baa5e4d7fa9129088f2c072e301 +TEST= 389 +KEY= ddd8877c25005f9b8336823cbf4d4b1deeec695535f0241b390907667b6fc986 +IV= 72966baa5e4d7fa9129088f2c072e301 +PT= 1bef952b98a43e6827e473d1e299fbab +CT= 32c321c999a2d68ea4517d332c785fc4 +TEST= 390 +KEY= 00882dcbc6cfded1a2ed7d9892f494a5dc2f489cac52f2959d587a5557179642 +IV= 32c321c999a2d68ea4517d332c785fc4 +PT= dd50aab7e3cf814a21dbffa42db9dfb8 +CT= 391d95dd63982e0a9af3980a234db5b9 +TEST= 391 +KEY= 234b9097bd6519efe106103720ac937de532dd41cfcadc9f07abe25f745a23fb +IV= 391d95dd63982e0a9af3980a234db5b9 +PT= 23c3bd5c7baac73e43eb6dafb25807d8 +CT= d3a279ee1bababa71db01dc35eba879d +TEST= 392 +KEY= aff7d52d959cc7e41f1f3ff3ca2425053690a4afd46177381a1bff9c2ae0a466 +IV= d3a279ee1bababa71db01dc35eba879d +PT= 8cbc45ba28f9de0bfe192fc4ea88b678 +CT= b4696871ee3a9d035bc32308da5a5da7 +TEST= 393 +KEY= b557440ceeb6e4ef54f6cd1b222246ac82f9ccde3a5bea3b41d8dc94f0baf9c1 +IV= b4696871ee3a9d035bc32308da5a5da7 +PT= 1aa091217b2a230b4be9f2e8e80663a9 +CT= c5047afd7884e0124928229aa6e72f67 +TEST= 394 +KEY= bf64c071faad2c48cb269c03563fa06147fdb62342df0a2908f0fe0e565dd6a6 +IV= c5047afd7884e0124928229aa6e72f67 +PT= 0a33847d141bc8a79fd05118741de6cd +CT= 240d684e6bad3fd4e41d58db871e93cd +TEST= 395 +KEY= f6945509258a1584398f5438dfd679db63f0de6d297235fdeceda6d5d143456b +IV= 240d684e6bad3fd4e41d58db871e93cd +PT= 49f09578df2739ccf2a9c83b89e9d9ba +CT= f66917f0c3c67774f9263062f918ddd5 +TEST= 396 +KEY= a8e48107d59287abba374e7ce5bc28e89599c99deab4428915cb96b7285b98be +IV= f66917f0c3c67774f9263062f918ddd5 +PT= 5e70d40ef018922f83b81a443a6a5133 +CT= 85c42456f11d0191bc4b4dd4ea0406ee +TEST= 397 +KEY= e4f367569f4f9114afe937a0190c9738105dedcb1ba94318a980db63c25f9e50 +IV= 85c42456f11d0191bc4b4dd4ea0406ee +PT= 4c17e6514add16bf15de79dcfcb0bfd0 +CT= d48b6c87a25c71113947569411c2186a +TEST= 398 +KEY= 987ed2d586da9ab08c584bbea0478953c4d6814cb9f5320990c78df7d39d863a +IV= d48b6c87a25c71113947569411c2186a +PT= 7c8db58319950ba423b17c1eb94b1e6b +CT= ab6957c2f3d360593e9096f3a392a701 +TEST= 399 +KEY= 3df2bf13b7ff97ca13567a890e11c9796fbfd68e4a265250ae571b04700f213b +IV= ab6957c2f3d360593e9096f3a392a701 +PT= a58c6dc631250d7a9f0e3137ae56402a +CT= c0fefff07506a0b4cd7b8b0cf25d3664 diff --git a/flint/test/testvals/cbcme64.txt b/flint/test/testvals/cbcme64.txt new file mode 100644 index 0000000..6499710 --- /dev/null +++ b/flint/test/testvals/cbcme64.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= a8cf8ef76fd0390761aff4bda0485209f2229c2ec22ba62a +TEST= 1 +KEY= 61aff4bda0485209f2229c2ec22ba62a +IV= a8cf8ef76fd0390761aff4bda0485209f2229c2ec22ba62a +PT= fa91dddb13afd233d7b50482151173a8dc3ab1654bb7bf75 +CT= 363e6eeec0d2a42e3a9a5bc17585466fd05795f7c086bc01 +TEST= 2 +KEY= 5b35af7cd5cd1466227509d902ad1a2b +IV= 363e6eeec0d2a42e3a9a5bc17585466fd05795f7c086bc01 +PT= 0d80535917a0ee34942059c7a402932220c3ac183b93c6f0 +CT= 0bbd3a8775fd70a8cfd4068d894783b15afc16e682004be4 +TEST= 3 +KEY= 94e1a9f15c8a97d778891f3f80ad51cf +IV= 0bbd3a8775fd70a8cfd4068d894783b15afc16e682004be4 +PT= d77b1d111da1ac4c6aa00e7431a98d40e1eb657a28faf5aa +CT= e4dc0321b8b4ac888582a25dd954c8a0e11629dfd8752102 +TEST= 4 +KEY= 11630bac85de5f77999f36e058d870cd +IV= e4dc0321b8b4ac888582a25dd954c8a0e11629dfd8752102 +PT= 9c30d150f0b3fcb7edce6fd8f040397024473882cf3eb72c +CT= c90880a11924ee1df573a8d0e2460dfc593aeb5f3b7409ae +TEST= 5 +KEY= e410a37c6798528bc0a5ddbf63ac7963 +IV= c90880a11924ee1df573a8d0e2460dfc593aeb5f3b7409ae +PT= cb474584b74a6ef22647dd8970829dbc0869b1e827de2588 +CT= 61347cdc2803c69e1f9a63e8ac127c97bce10c8a807c788d +TEST= 6 +KEY= fb8ac094cb8a2e1c7c44d135e3d001ee +IV= 61347cdc2803c69e1f9a63e8ac127c97bce10c8a807c788d +PT= 7551a485d5776a84e3106092979c5ad12f402d2547bddc60 +CT= 6d911a15161e01b09b2544f7ea33e8a7a2b9efea9cbab889 +TEST= 7 +KEY= 60af846321b9c6bbdefd3edf7f6ab967 +IV= 6d911a15161e01b09b2544f7ea33e8a7a2b9efea9cbab889 +PT= 886764d189124eee4595f0e2440454f51ae65a5e700db340 +CT= 8f96a6371260a6df6fd68dc93640051ed735bb433035d8d1 +TEST= 8 +KEY= 0f7909aa17f9c3a509c8859c4f5f61b6 +IV= 8f96a6371260a6df6fd68dc93640051ed735bb433035d8d1 +PT= fc7192fd9b1f067aadb1d0f155c91eccbddf31765fc40a68 +CT= 3fafd20092a01afc5b649ad547ad43b9c08bad180c267aad +TEST= 9 +KEY= 541d937f5054801cc943288443791b1b +IV= 3fafd20092a01afc5b649ad547ad43b9c08bad180c267aad +PT= 32078d8354094e7c0b0413a66a2d95cea98405c63a6efbf7 +CT= 2dc3e09b850a99c5a15786ca29b7b6c2b5b9d618cf65e1d0 +TEST= 10 +KEY= f54a15b579e336de7cfafe9c8c1cfacb +IV= 2dc3e09b850a99c5a15786ca29b7b6c2b5b9d618cf65e1d0 +PT= 728cd54a22eefb90eeb83124f8e20506e6c0757c887a35c0 +CT= c366d2d4e9416fc1e79f4509cb4b59a37fb63dd579720377 +TEST= 11 +KEY= 12d550bcb2a86f7d034cc349f56ef9bc +IV= c366d2d4e9416fc1e79f4509cb4b59a37fb63dd579720377 +PT= 194653a00788735bd9f9bbcd6fabb7858cb4dacf54a64e7c +CT= adfe8144fe14a7624855ba9c63a280987cc440b0f1b6b30e +TEST= 12 +KEY= 5a80ea20d10aefe57f8883f904d84ab2 +IV= adfe8144fe14a7624855ba9c63a280987cc440b0f1b6b30e +PT= f550a21e2876d3f0ab1791c7c2d5c77932e170f57e7b9a9a +CT= 255c3bb97ed1eb7d8837e0e876a113f2c0e730992cedd97f +TEST= 13 +KEY= d2b70ac8a7abfc17bf6fb360283593cd +IV= 255c3bb97ed1eb7d8837e0e876a113f2c0e730992cedd97f +PT= 8fc9243e339f46f1d2514ddf5556e01f6cb435cfcc460374 +CT= 6341278dcb0b1591c992a923aa0a1d4a0b64dcea31456c78 +TEST= 14 +KEY= 1b25a3eb0da1e15db40b6f8a1970ffb5 +IV= 6341278dcb0b1591c992a923aa0a1d4a0b64dcea31456c78 +PT= 8efff46ad39bdac193f2b9bbcccd18515f3e3b3f75f626f8 +CT= 9c17c1094e8048aef54e48de797c22e3854bf72a172297cf +TEST= 15 +KEY= ee6beb3574ddc3be314098a00e52687a +IV= 9c17c1094e8048aef54e48de797c22e3854bf72a172297cf +PT= 7c886f1a929a3486cf356ee37b2bb89c9c072e244bb27788 +CT= 961026660972c17c0bc11adea352a8a8d15eacc719db45bd +TEST= 16 +KEY= e5aaf1ebd78f6b16e01e346717892dc7 +IV= 961026660972c17c0bc11adea352a8a8d15eacc719db45bd +PT= 1cd95ef77660794f1fcc3e46d3920cdc1101a72ece2d8f59 +CT= 0ea5524f991ee50db2932562fcb719eba4ebc6a8403bf64c +TEST= 17 +KEY= 5739d4892b3872fd44f5f2cf57b2db8b +IV= 0ea5524f991ee50db2932562fcb719eba4ebc6a8403bf64c +PT= 89a625f6441d0b7c8abe3a3ac85cfadc5107001186b4a393 +CT= f9922ada6583b59728f0772a516f74de83df5ce9e5c1035e +TEST= 18 +KEY= 7fc9a3a37a570623c72aae26b273d8d5 +IV= f9922ada6583b59728f0772a516f74de83df5ce9e5c1035e +PT= b562b0e3a0323a8fdfbfb64beeb0ecf63d6044ebde85b875 +CT= c73f9a0316f080a15f91331e9850e294f2963f27fb153487 +TEST= 19 +KEY= 205890bde207e4b735bc91014966ec52 +IV= c73f9a0316f080a15f91331e9850e294f2963f27fb153487 +PT= 6a05b39d71de23c36e51336053c8a6ab5a0edc2d1c10a9cf +CT= 8bd47254a555de469bb4bae3404f4c4ad8458017f3318d2a +TEST= 20 +KEY= bbec2a5ea248a8fdedf91116ba576178 +IV= 8bd47254a555de469bb4bae3404f4c4ad8458017f3318d2a +PT= 38e52f5c91529aa1321065feb250130ea0b36e281ef17a49 +CT= 65f32738472182f758ed64ccbaa23ea010224e57a632de64 +TEST= 21 +KEY= e3014e9218ea965dfddb5f411c65bf1c +IV= 65f32738472182f758ed64ccbaa23ea010224e57a632de64 +PT= 60914989bc0a40c6675cd71472c8390ad14c1d9e2e6d74dd +CT= 6745bd1174d71c426d2c1444635380b67b24a49562d61d66 +TEST= 22 +KEY= 8e2d5ad67bb916eb86fffbd47eb3a27a +IV= 6745bd1174d71c426d2c1444635380b67b24a49562d61d66 +PT= d7d6fe3a389d5a62d3e511511306251c337da22d99c9013c +CT= f842aeeebb9c4e84864ae37a0ef3eb793b58e456f8b0e8b3 +TEST= 23 +KEY= 0867b9ac754afd92bda71f8286034ac9 +IV= f842aeeebb9c4e84864ae37a0ef3eb793b58e456f8b0e8b3 +PT= 24016da05346d9cecf1097f308260f665874bda118a41017 +CT= 6631c23c89544d314e4f2a5e14d80f9fef6d474043036d93 +TEST= 24 +KEY= 462893f26192f20d52ca58c2c500275a +IV= 6631c23c89544d314e4f2a5e14d80f9fef6d474043036d93 +PT= 04b8aecf110b0301bd9deb9650376c6faaa39a4649aa8238 +CT= f638dbf001c38833198c0aeacc7d56a738243cfaff622136 +TEST= 25 +KEY= 5fa49918adefa4aa6aee64383a62066c +IV= f638dbf001c38833198c0aeacc7d56a738243cfaff622136 +PT= f4212e557b96f1ca7a15000a2a4968aec4af817a2aa4083d +CT= f993606afd233f9ede846fb5d8777520f6bccbfe61bc2893 +TEST= 26 +KEY= 8120f6ad7598d18a9c52afc65bde2eff +IV= f993606afd233f9ede846fb5d8777520f6bccbfe61bc2893 +PT= c5ed9693256e719f2cabe5cf713ef7c69af76d4b4481abd5 +CT= 1729caad66c0720f8e1ce652f7a42875b2635d85e795bab0 +TEST= 27 +KEY= 0f3c10ff823cf9ff2e31f243bc4b944f +IV= 1729caad66c0720f8e1ce652f7a42875b2635d85e795bab0 +PT= 1d217753bce66f78587b103b4a9004f0d8ec751d621697c1 +CT= 651ddb8dfd67f7fed08ec205edeac28e0a7ab29fe224e85e +TEST= 28 +KEY= dfb2d2fa6fd63b71244b40dc5e6f7c11 +IV= 651ddb8dfd67f7fed08ec205edeac28e0a7ab29fe224e85e +PT= 54c081a5370ae03eeaa0bbb32a76c666c13d04eb16a0e4e6 +CT= 32dce44a682f06dbb4729bbf8f309693463f421c027e336f +TEST= 29 +KEY= 6bc04945e0e6ade2627402c05c114f7e +IV= 32dce44a682f06dbb4729bbf8f309693463f421c027e336f +PT= ad6d5aff7e9dd7175edcdb09633f184f147d15ddb95c3259 +CT= d68618c40b3df96b7779926b9a4fb750adca78ed3d52a42c +TEST= 30 +KEY= 1cb9db2e7aa91ab2cfbe7a2d6143eb52 +IV= d68618c40b3df96b7779926b9a4fb750adca78ed3d52a42c +PT= d3d5de763247123469bba57916f5218fdb9f97306fcbd527 +CT= cb4a1876ff69642b2a2eaf9a5cc0b037e5e520b5be341b92 +TEST= 31 +KEY= 369774b42669aa852a5b5a98df77f0c0 +IV= cb4a1876ff69642b2a2eaf9a5cc0b037e5e520b5be341b92 +PT= 4a985c3e195650942f593efaca27f9f7899152d3fe26f27e +CT= fc9dab8558c0b7168ff4bf608043ecfdd4d73563b3c17243 +TEST= 32 +KEY= b963cbd4a62a4678fe8c6ffb6cb68283 +IV= fc9dab8558c0b7168ff4bf608043ecfdd4d73563b3c17243 +PT= 22980c61739e317b2851fdf971136337768238328bb21861 +CT= 0648f158e0e3ead02d39c1d43c9fb42019fe3bae47f48524 +TEST= 33 +KEY= 945a0a009ab5f258e77254552b4207a7 +IV= 0648f158e0e3ead02d39c1d43c9fb42019fe3bae47f48524 +PT= 1709afa69bec9d8239dbf5dbbecc64266773b3a7d0692992 +CT= a660cc19e3d010322c30039ea0d0bc796c73ddbcda8f8eb7 +TEST= 34 +KEY= b86a099e3a654e218b0189e9f1cd8910 +IV= a660cc19e3d010322c30039ea0d0bc796c73ddbcda8f8eb7 +PT= 08309ddb0918c857ec3249406c197664d7fa6fa4602ed177 +CT= f97af9aa81310d75b923b04b71e2288a233d00663f60a0f2 +TEST= 35 +KEY= 0149b9d54b8766aba83c898fcead29e2 +IV= f97af9aa81310d75b923b04b71e2288a233d00663f60a0f2 +PT= 283f9da3cf653415c505aa3ada2be5f5d1547edbbeb66c4b +CT= 1e39562bfe4b07f77acbee6bddc51864d3ba999c951faa5f +TEST= 36 +KEY= 7b8257be96427ecf7b8610135bb283bd +IV= 1e39562bfe4b07f77acbee6bddc51864d3ba999c951faa5f +PT= fd17602b3420dfede915ba34a5e44f42e6a6356dd290b2bf +CT= f365ea0f86366434d20623fdd978147003580e499f15c8a6 +TEST= 37 +KEY= a98474434f3a6abf78de1e5ac4a74b1b +IV= f365ea0f86366434d20623fdd978147003580e499f15c8a6 +PT= 045620d9f4ad0d9b993f4aebf855bd6ef64d7f23fd7da804 +CT= 75653f4e231cbbbe1a66276cb6f21043451fb92fd817b9f6 +TEST= 38 +KEY= b3e2532ff9c87afc3dc1a7751cb0f2ed +IV= 75653f4e231cbbbe1a66276cb6f21043451fb92fd817b9f6 +PT= 59b6eef0f2c416e085d913232611fdaff29f36205c2300ed +CT= 26e850671d9e5f0875e4e50b1314ec3bd0fa588db0930f98 +TEST= 39 +KEY= c606b624eadc96c7ed3bfff8ac23fd75 +IV= 26e850671d9e5f0875e4e50b1314ec3bd0fa588db0930f98 +PT= 44770b748d44a830bcf64e40c7469ff77c494ffc7f73449b +CT= 66c32d6d1d35cf3e9303276f46be291c169e746c7497997a +TEST= 40 +KEY= 5505914bac62bfdbfba58b94d8b4640f +IV= 66c32d6d1d35cf3e9303276f46be291c169e746c7497997a +PT= 77296eb3a046bbfac04961d1506e1f2edba92821400734a6 +CT= 29bf64dace0c0e081df82da2dc4b4fe61fcca55474644583 +TEST= 41 +KEY= 48fdbce97029f03de4692ec0acd0218c +IV= 29bf64dace0c0e081df82da2dc4b4fe61fcca55474644583 +PT= a681ce0b56de5abeac66ce87742f1d70a11825f7c6322fdc +CT= 96956c070a8a5d128c6a58baef5c6f04f257110185f09564 +TEST= 42 +KEY= c497e4539f759f39163e3fc12920b4e8 +IV= 96956c070a8a5d128c6a58baef5c6f04f257110185f09564 +PT= 99d9b96035c826ddc64baca641fc5d04a752f78c69bd1392 +CT= df3cba5ca8a97797b8d9c309b250c53f6923d77682560509 +TEST= 43 +KEY= 7c4e275a2d255a067f1de8b7ab76b1e1 +IV= df3cba5ca8a97797b8d9c309b250c53f6923d77682560509 +PT= dc3f5dc3a89985796a1bd8d6cc5cfe125283e35c25af6681 +CT= 208a3b33688323d22773022e3a47019d4676d9c60e2f829e +TEST= 44 +KEY= 5b3d257417625b9b396b3171a559337f +IV= 208a3b33688323d22773022e3a47019d4676d9c60e2f829e +PT= 5a74d879adcb7f4043358e52ff6db848779e237293bea9fd +CT= 7ec404e1f9a66122380cb29e2f7c450c836eba0a66acb932 +TEST= 45 +KEY= 633197ea381e1e97ba058b7bc3f58a4d +IV= 7ec404e1f9a66122380cb29e2f7c450c836eba0a66acb932 +PT= 6dd56fa27277a548327ced08b724c38c5704e033485f00eb +CT= 16e2cd60ce00df4490b060bb93573590c70c6ae5303cbe4d +TEST= 46 +KEY= f381f751ab492b077d09e19ef3c93400 +IV= 16e2cd60ce00df4490b060bb93573590c70c6ae5303cbe4d +PT= c73194f5eeff0886bdb7ab83def01cbaa18f0089fb0f4cb5 +CT= 142051a79c766d230b9a55a614f3675aa38943c9f52e04e8 +TEST= 47 +KEY= f81ba2f7bfba4c5dde80a25706e730e8 +IV= 142051a79c766d230b9a55a614f3675aa38943c9f52e04e8 +PT= 260b982387c8394807ff68bae368c54c7537461db120dd47 +CT= 30e7af9dca393dcbb1860b3762dc8b570e4973481b82fee4 +TEST= 48 +KEY= 499da9c0dd66c70ad0c9d11f1d65ce0c +IV= 30e7af9dca393dcbb1860b3762dc8b570e4973481b82fee4 +PT= bfa913a1b8ff5e84b9847cf3ba48aeba56c076fc5c25b63a +CT= 9b869639df57f699ce3f3cd727b3ef13c3479988054c2258 +TEST= 49 +KEY= 87a29517fad52819138e48971829ec54 +IV= 9b869639df57f699ce3f3cd727b3ef13c3479988054c2258 +PT= 1b8189cc160b616ffe054bf61bbfc5787bf7411fe1eab29a +CT= 2c1a9e17b4fd05bd4cd83dbdeef4cd353fdd01659d897316 +TEST= 50 +KEY= cb7aa8aa1421e52c2c5349f285a09f42 +IV= 2c1a9e17b4fd05bd4cd83dbdeef4cd353fdd01659d897316 +PT= 33f999eea432c4f6cc5285e3405470e4b58000d41e5543b1 +CT= 016a6f4979750ed68fcb52159780ace9580f7d2a081cd09c +TEST= 51 +KEY= 44b1fabf83a149c5745c34d88dbc4fde +IV= 016a6f4979750ed68fcb52159780ace9580f7d2a081cd09c +PT= 372c6a07cafe5c48fe50b35ce9d19f2bb1d9577865cfb399 +CT= 51e48f11732078da84d6891b63875b5aadbf51f961498b84 +TEST= 52 +KEY= c06773a4e026129fd9e36521ecf5c45a +IV= 51e48f11732078da84d6891b63875b5aadbf51f961498b84 +PT= 4e9d3202ddb1393315a95e28c9cf59c8de072aefcc15e580 +CT= 4c725d832fe14dc79f441490b4bd7c2b19ee7ecb367b741c +TEST= 53 +KEY= 5f236734549b6eb4c00d1beada8eb046 +IV= 4c725d832fe14dc79f441490b4bd7c2b19ee7ecb367b741c +PT= a036059287ec68561ff19165fdae2c1808d6ccf7a5e2b776 +CT= 3daf550165715ed749c2d4e76e0a83446d2a70f35bca6b3b +TEST= 54 +KEY= 16e1b3d33a91edf0ad276b198144db7d +IV= 3daf550165715ed749c2d4e76e0a83446d2a70f35bca6b3b +PT= 83dab18ee47ed6ee191a3c7b9f82a47731c5a36d242eb968 +CT= e8dce9698be03e4782472727b189cfd7ff1650531ea2e169 +TEST= 55 +KEY= 94a694f48b18222752313b4a9fe63a14 +IV= e8dce9698be03e4782472727b189cfd7ff1650531ea2e169 +PT= e186fd05aae1209519eaea4107b9bd796017567799a9b56d +CT= 43ebdbe807ec3ce865872da8100000d14af388df733bdb7c +TEST= 56 +KEY= f121b95c9b1822f618c2b395ecdde168 +IV= 43ebdbe807ec3ce865872da8100000d14af388df733bdb7c +PT= f7f201a0b902be7de60b475217a1cbdb4913014342ab4bb4 +CT= d10d4e65dc3719b4ba95f3326635a9274eeaef3faad28419 +TEST= 57 +KEY= 4bb44a6efd2d8bd156285caa460f6571 +IV= d10d4e65dc3719b4ba95f3326635a9274eeaef3faad28419 +PT= c997d737ee67e94f4656e52ff0ecb46137b728a4355aa18b +CT= f55ea2e41eb502c8294889dccdd8015079928c409ab16273 +TEST= 58 +KEY= 62fcc3b230f58a812fbad0eadcbe0702 +IV= f55ea2e41eb502c8294889dccdd8015079928c409ab16273 +PT= 8c8da0755f354c62f6985e670630a8771c67e1020507f7f1 +CT= 7dd3fad1f5957f7dd4bb5f89e9fd38ffce0bce831e00098c +TEST= 59 +KEY= b6479c3bd908b27ee1b11e69c2be0e8e +IV= 7dd3fad1f5957f7dd4bb5f89e9fd38ffce0bce831e00098c +PT= 00846c9d2f8e3d42ce5eee0b05267b2bc4a02aeeaaa1be12 +CT= 1c1fc055bebd3ce9663980b08cb8c797449c3e199f6e4995 +TEST= 60 +KEY= d07e1c8b55b075e9a52d20705dd0471b +IV= 1c1fc055bebd3ce9663980b08cb8c797449c3e199f6e4995 +PT= 7aef12f95317d0061874c26b9d42a8bfbf87cc0d1acce01f +CT= e0bef462a48bb6edf08fcf7eab5f662f441a8f5314565569 +TEST= 61 +KEY= 20f1d3f5feef13c6e137af2349861272 +IV= e0bef462a48bb6edf08fcf7eab5f662f441a8f5314565569 +PT= bfd5b7cb3b2f9a537c772bb86fb3336c4664ec0826adb7d0 +CT= 58cc2f6149594b07a067ad4cab75e1c80ecda8d9724dfb4f +TEST= 62 +KEY= 80967eb9559af20eeffa07fa3bcbe93d +IV= 58cc2f6149594b07a067ad4cab75e1c80ecda8d9724dfb4f +PT= 28195f93ce3bc16d9d7c749f0eb969f6092089bb5f01ec19 +CT= 73b5d21015b97285afecdc8afeec5ede7b90af80eb183997 +TEST= 63 +KEY= 2f7aa233ab76acd0946aa87ad0d3d0aa +IV= 73b5d21015b97285afecdc8afeec5ede7b90af80eb183997 +PT= 1eff60ecf2e2620780e488c9a68be63b4a0896a167e76bf5 +CT= 888b06c97fd0db65b6bb35419b0e1b18d41d1f5e889c4123 +TEST= 64 +KEY= 99c197723078b7c84077b724584f9189 +IV= 888b06c97fd0db65b6bb35419b0e1b18d41d1f5e889c4123 +PT= a7a3dbe30ff145199d16f6d1ba89c0062bbb72ea3e75d630 +CT= c651a3e8e377a0f7c57b080bec9a4e71b26fef57bba58830 +TEST= 65 +KEY= 5cba9f79dce2f9b9f2185873e3ea19b9 +IV= c651a3e8e377a0f7c57b080bec9a4e71b26fef57bba58830 +PT= 3ca23859b8723d5890072a49441b181416759afccf06b37f +CT= 34447ceaff19a6264c8aa71bb2f7e540568b166b32fd8d2d +TEST= 66 +KEY= 103038626e151cf9a4934e18d1179494 +IV= 34447ceaff19a6264c8aa71bb2f7e540568b166b32fd8d2d +PT= 0b7dbad7561cf9dd370de1982d2fdddac905afd3b6e47baf +CT= cc80b1fdc8d5e47c723fbd5719518bcaba0f695c520991dd +TEST= 67 +KEY= 620f8535774497331e9c2744831e0549 +IV= cc80b1fdc8d5e47c723fbd5719518bcaba0f695c520991dd +PT= be74f9f9dda2e16a9cc7928891ecf097265a1520957fadbe +CT= 4139601ad50931b89d46085eca7d74308beb9cb9f60a9345 +TEST= 68 +KEY= ff498d6bbd39e3039577bbfd7514960c +IV= 4139601ad50931b89d46085eca7d74308beb9cb9f60a9345 +PT= 9d0181c557d68cc29ca52912610ae40b3b09477c32f58cfa +CT= fb63c8ffa66c1fd7fa453c73ef25df9a314632d6207cb255 +TEST= 69 +KEY= 050cb118521c3c99a431892b55682459 +IV= fb63c8ffa66c1fd7fa453c73ef25df9a314632d6207cb255 +PT= dc42534ec5de2175a33869edb070bb4933117810b1e4ebe3 +CT= 6cac8d13bb15590ed9c6b63788878a6638e2a0300043bfa3 +TEST= 70 +KEY= dcca072fda9bb6ff9cd3291b552b9bfa +IV= 6cac8d13bb15590ed9c6b63788878a6638e2a0300043bfa3 +PT= c7f2640e7fb2393dad44ded30ea95b4865a8c76d83af9b70 +CT= 25b80e5bb445dd0c5e7620b676c1089f24ff6e9f300589d3 +TEST= 71 +KEY= 82bc2799ac5abe60b82c4784652e1229 +IV= 25b80e5bb445dd0c5e7620b676c1089f24ff6e9f300589d3 +PT= e13c1c384e075e2d1c3476e90e24c1bff5eae08b0b4b9ae0 +CT= fb0b7f64fbd1c0c0cbd24f3db321b9e19763fafce618e156 +TEST= 72 +KEY= 496e68a41f7b07812f4fbd788336f37f +IV= fb0b7f64fbd1c0c0cbd24f3db321b9e19763fafce618e156 +PT= 9556a0ac11296a7c43a20d46939f966f065ef278b9a935ba +CT= b8197a007eef9ca9e859cf1ff02134369519e1fd20a3cb9f +TEST= 73 +KEY= a137a7bbef5a33b7ba565c85a39538e0 +IV= b8197a007eef9ca9e859cf1ff02134369519e1fd20a3cb9f +PT= 2c0eb62b22f63ebbbb8b4e62ad19a8a2c24ae3453a190cfd +CT= 48a91b4b665433bad5b69f4315b0f2abf4b4802fc6a7374c +TEST= 74 +KEY= 748138f8faeac11c4ee2dcaa65320fac +IV= 48a91b4b665433bad5b69f4315b0f2abf4b4802fc6a7374c +PT= 4ff6b481c7c75fef67accec5289e7fc4e57edb915f6c91fc +CT= 5fb489dc0b686aa00645a8161021a83a99c7b3ca7ba0346d +TEST= 75 +KEY= 72c490eeeacb6926d7256f601e923bc1 +IV= 5fb489dc0b686aa00645a8161021a83a99c7b3ca7ba0346d +PT= 5f73638ddab301a6884a6196a714aa1fe8f621fb7cfe7a02 +CT= dcb04d5f7964bd70ba79beaa336c0da7e5a1284f6ef71e7b +TEST= 76 +KEY= c8bd2e44d9a764813284472f706525ba +IV= dcb04d5f7964bd70ba79beaa336c0da7e5a1284f6ef71e7b +PT= 3dca4a8ece4477c2d7b7670b91615867e9a827839440ba1f +CT= 1716dbd8a1b5db1c4e5864572023897433550340797ef06c +TEST= 77 +KEY= 86e54a13f984edf501d1446f091bd5d6 +IV= 1716dbd8a1b5db1c4e5864572023897433550340797ef06c +PT= 2264eac64368cb3d49cb324db9c53a136acf2f025eae3ab3 +CT= 6c38f5f7ff3f5e31bbd2e61f229ede4a6addb0adab11d74f +TEST= 78 +KEY= 3d37ac0cdb1a33bf6b0cf4c2a20a0299 +IV= 6c38f5f7ff3f5e31bbd2e61f229ede4a6addb0adab11d74f +PT= 62defcaf5521ba5d0c9095d1b537a7bc16082e47550009b4 +CT= 344ef378dd858d4a20efac90ed03acf8d6a68a3a6c2037a1 +TEST= 79 +KEY= 1dd8009c36199f47bdaa7ef8ce2a3538 +IV= 344ef378dd858d4a20efac90ed03acf8d6a68a3a6c2037a1 +PT= 1c35f56859e73b8e67ccfc25ca97a02bb072e003585c37e4 +CT= 6fb4c31b28ea17d285ceca422f743915a1a1808ff091ba59 +TEST= 80 +KEY= 9816cade196da6521c0bfe773ebb8f61 +IV= 6fb4c31b28ea17d285ceca422f743915a1a1808ff091ba59 +PT= b7ffad27330a3cdeffbcddb180e3cc155a8e7d92c417ab7d +CT= 55784d71e022ff4d92d8a30fa7c4b31f473cad07a18e5f3d +TEST= 81 +KEY= 0ace69d1bea9154d5b3753709f35d05c +IV= 55784d71e022ff4d92d8a30fa7c4b31f473cad07a18e5f3d +PT= 7b49bb86f08a29fcf9dc9b4e1c0f9ccedc466522c8a56b68 +CT= 7bffaed753961b03342cf5282995dd505ac2c54e59f119c0 +TEST= 82 +KEY= 3ee29cf9973cc81d01f5963ec6c4c99c +IV= 7bffaed753961b03342cf5282995dd505ac2c54e59f119c0 +PT= c955106ebf627db0c7fbddc20790fd86ac500a634c718826 +CT= 70d66e9b709c98e685d733e06ad2ea7eec7d7245ef8eb5b4 +TEST= 83 +KEY= bb35af19fdee2263ed88e47b294a7c28 +IV= 70d66e9b709c98e685d733e06ad2ea7eec7d7245ef8eb5b4 +PT= d45cfe73c9cca8869a08b3a51c106d9950f27c191259cd98 +CT= cfe49b44116c97c7c1540d1ba4dc9de78b9041ee081ebba3 +TEST= 84 +KEY= 7a61a2025932bf846618a5952154c78b +IV= cfe49b44116c97c7c1540d1ba4dc9de78b9041ee081ebba3 +PT= fc5d06dd9e958b7caf131164f5f335e4aebdd9cc6dce0d40 +CT= b81ebeb621b16de210ddf2b7ca5ed374232802fd7099eede +TEST= 85 +KEY= 6abc50b5936c6cf04530a76851cd2955 +IV= b81ebeb621b16de210ddf2b7ca5ed374232802fd7099eede +PT= d62b34d3dfae205e05df2a6e2609b308ea0c6168ba9631d2 +CT= b142c8ec4c0b12037c7ff7546d0dea635cd18c9d78081367 +TEST= 86 +KEY= 16c3a7e1fe61869319e12bf529c53a32 +IV= b142c8ec4c0b12037c7ff7546d0dea635cd18c9d78081367 +PT= 969e4b582034547be9d057c84308118955e682a8f51841a8 +CT= 85ef8bdcf8f84cbcff6b5b561fa1136eac208e034eb4765d +TEST= 87 +KEY= e9a8fcb7e1c095fdb5c1a5f667714c6f +IV= 85ef8bdcf8f84cbcff6b5b561fa1136eac208e034eb4765d +PT= adf2264f6778d0dd0fb4f204f8e82e2fad512dc763eb257a +CT= 429a549d3410da77a5cf5d74e2524a229fd9462da27bddbd +TEST= 88 +KEY= 4c67a1c30392dfdf2a18e3dbc50a91d2 +IV= 429a549d3410da77a5cf5d74e2524a229fd9462da27bddbd +PT= 3b2814fd90d25417c1877f13fc9d69ed92e62ad6f4e8d9ef +CT= e63d1adbb6fbd13cb2bbfd98184e359d6f075626be96e872 +TEST= 89 +KEY= fedc5c5b1bdcea42451fb5fd7b9c79a0 +IV= e63d1adbb6fbd13cb2bbfd98184e359d6f075626be96e872 +PT= ec3e9a03c150bf69f974f46e3912bb08cff7f71ef3b9cc58 +CT= 76a03bff8cadaa0e9d88001b8beb87a35302a705830ee021 +TEST= 90 +KEY= 63545c4090376de1161d12f8f8929981 +IV= 76a03bff8cadaa0e9d88001b8beb87a35302a705830ee021 +PT= d53e2732690af24036a73c9f8cf0d559f76c6387d0eb73e3 +CT= 298be198d9294f185719a530007b7a12a6f1497bc9c6edf7 +TEST= 91 +KEY= 344df970904c17f3b0ec5b8331547476 +IV= 298be198d9294f185719a530007b7a12a6f1497bc9c6edf7 +PT= dd2c4aad593a5b5b1e20f318f9118312f193e3b44b0478d8 +CT= b0c03fc63a5e4e7c77ff2c17c86275b938f6bac3ea79e033 +TEST= 92 +KEY= 43b2d567582e624a881ae140db2d9445 +IV= b0c03fc63a5e4e7c77ff2c17c86275b938f6bac3ea79e033 +PT= f0d0105bac4e33644033bea9098297f811196402ee846ff6 +CT= 7e46bd59762f533e77a821466fbf9432249d92bbd93c2f93 +TEST= 93 +KEY= 341af4213791f678ac8773fb0211bbd6 +IV= 7e46bd59762f533e77a821466fbf9432249d92bbd93c2f93 +PT= 6f3ce34718e8ce299df72ac225b4fa25496aa7637aeb7b34 +CT= a71d83ff756797801ef52afaa180c617a8b585f2e7d33b9a +TEST= 94 +KEY= 2aefdedb9611306f0432f609e5c2804c +IV= a71d83ff756797801ef52afaa180c617a8b585f2e7d33b9a +PT= 84dbdfe1b51d56d7cb9529841f85ef71925c447c85fc7502 +CT= 84ea4652f5809677564fec81203f7305864678853ebd4673 +TEST= 95 +KEY= 7ca0325ab62e436a82748e8cdb7fc63f +IV= 84ea4652f5809677564fec81203f7305864678853ebd4673 +PT= 26a8a12614faae937ce1e948b7851f4cc5338893b0279ec0 +CT= 3e1a8d8a8528b1b34675b39b7644959987891aabd30e7fd6 +TEST= 96 +KEY= 3ad581c1c06ad6f305fd94270871b9e9 +IV= 3e1a8d8a8528b1b34675b39b7644959987891aabd30e7fd6 +PT= cbf34f68d22f519dfe6b494a103aa5a94dfc62e45a4af032 +CT= 1c9a549481c7bbc3c988d4a79210e0827b4afc8ca800cf4b +TEST= 97 +KEY= f35d5566527a36717eb768aba07176a2 +IV= 1c9a549481c7bbc3c988d4a79210e0827b4afc8ca800cf4b +PT= c9d728ab574ebd174fcff2352ac2f5548b437aa6960d2b06 +CT= 109f101b63d45524d5d25cfddcdbdfcc1ab1499f1b8895ef +TEST= 98 +KEY= 268f099b8ea1e9bd64062134bbf9e34d +IV= 109f101b63d45524d5d25cfddcdbdfcc1ab1499f1b8895ef +PT= 8a5d37df3038e51c1543853f9407e61066e5f45ccf6a8d7d +CT= 42083f21fde9c4602c8727034a41ff0146f78eb6e0187b3b +TEST= 99 +KEY= 0a082e98c4e016bc22f1af825be19876 +IV= 42083f21fde9c4602c8727034a41ff0146f78eb6e0187b3b +PT= 112cb5695c680747a5d17086945d9fffeb97b89f4a6f045f +CT= a35243f6a607ffa67c87fcd12840effca2ba1fd4fbc4aae7 +TEST= 100 +KEY= 768fd249eca0f940804bb056a0253291 +IV= a35243f6a607ffa67c87fcd12840effca2ba1fd4fbc4aae7 +PT= 4921852ce2260b26364aa5d6dcf90a7b54a5f6f847637e1a +CT= 042a72ea3097b344be89a3ffcd51dc96d3809acff246ae9d +TEST= 101 +KEY= c80671b621f125d653cb2a9952639c0c +IV= 042a72ea3097b344be89a3ffcd51dc96d3809acff246ae9d +PT= b63d1d78cee32eab55d0972a9606506ad445b87af37efb94 +CT= 7fa064d536168f0ac02754dec12cf305af2fc245e6021b19 +TEST= 102 +KEY= 08212568e0ddd6d3fce4e8dcb4618715 +IV= 7fa064d536168f0ac02754dec12cf305af2fc245e6021b19 +PT= fd43fd147deac048966b549b1584ac3d02bc106fea969e3a +CT= bf5de80c558dc83ec9db80c4e5ab29194ca9bfea231d1841 +TEST= 103 +KEY= c1faa5ac0576ffcab04d5736977c9f54 +IV= bf5de80c558dc83ec9db80c4e5ab29194ca9bfea231d1841 +PT= 3760890fa77146c42485344cbde4a53f0b313aef1d0f51ce +CT= 8f7111f6c7fea17c0a3bdcb5b8b43db007efdd85b76372a4 +TEST= 104 +KEY= cbc17919bdc2c27ab7a28ab3201fedf0 +IV= 8f7111f6c7fea17c0a3bdcb5b8b43db007efdd85b76372a4 +PT= 6f26f6886f577582639233f1cb40e8398e9de0bcc540ee7d +CT= 5c04323443037805e373b812effae80a9e6bc6cd55a0b196 +TEST= 105 +KEY= 28b2c10b52382a7029c94c7e75bf5c66 +IV= 5c04323443037805e373b812effae80a9e6bc6cd55a0b196 +PT= 21fb4fed38dac1a6db4e00c9d02da252f3de5b1eab44805c +CT= 1e05a9a07ca907501a4b210b5b8886a7c1778bbbb395a922 +TEST= 106 +KEY= 32f9e00009b0acd7e8bec7c5c62af544 +IV= 1e05a9a07ca907501a4b210b5b8886a7c1778bbbb395a922 +PT= 360f4a455557832d1330d003331c4ecee843188b07c6e911 +CT= a324bb12b918698ffb7880c8c8a69289c6e3fdac3a776ace +TEST= 107 +KEY= c98160c8c1163e5e2e5d3a69fc5d9f8a +IV= a324bb12b918698ffb7880c8c8a69289c6e3fdac3a776ace +PT= 73daf4ee4348b92c15934e9b7c98d3da52bbaf612134ad13 +CT= a7dbaac8df11b8dca3cef8ede733a0de4404c3be02ad4bad +TEST= 108 +KEY= 6a4f982526259e806a59f9d7fef0d427 +IV= a7dbaac8df11b8dca3cef8ede733a0de4404c3be02ad4bad +PT= 3c6e39b72d25fbee2451391e7aff61b19d526912c8e8e5a5 +CT= d0b17eb4306ce27b1634bf5451d49e8ba61b90e911dbbf53 +TEST= 109 +KEY= 7c7b277177f1000bcc42693eef2b6b74 +IV= d0b17eb4306ce27b1634bf5451d49e8ba61b90e911dbbf53 +PT= 61735f78149bf936ee0a7895c3f51f7278b08c770d0217a9 +CT= 23aa8514df43ad78e64900e054e0e1dd0061a32ac8eab162 +TEST= 110 +KEY= 9a3227912311e1d6cc23ca1427c1da16 +IV= 23aa8514df43ad78e64900e054e0e1dd0061a32ac8eab162 +PT= 28c7cbd9b88ee82602506b2679ce36156d322232df71d769 +CT= 41c359a8592918cf7a4cc4c2ee4e730b1c307a1d5ceebc8c +TEST= 111 +KEY= e07ee353cd5f92ddd013b0097b2f669a +IV= 41c359a8592918cf7a4cc4c2ee4e730b1c307a1d5ceebc8c +PT= feb0cb10d717ca11e2fbecc3b92a90c32a9e06bed4bb9f6a +CT= cb30979c301cf4f04ee2488457e876ee031a7465a5d3161c +TEST= 112 +KEY= ae9cabd79ab7e433d309c46cdefc7086 +IV= cb30979c301cf4f04ee2488457e876ee031a7465a5d3161c +PT= 807230d82dff3eb8fa3877fb200bb2fc0b7821556e6d4610 +CT= 878747db5c2302e5d36e03d8912d1c713853875093e4e53e +TEST= 113 +KEY= 7df2a80f0b9af842eb5a433c4d1895b8 +IV= 878747db5c2302e5d36e03d8912d1c713853875093e4e53e +PT= 9529a3c7cc8f8ee7a20cb591a8161f6bc094208037d2884c +CT= d9405b52ba231cae77fd990234e155db0d6c78e5536ae559 +TEST= 114 +KEY= 0a0f310d3f7bad99e6363bd91e7270e1 +IV= d9405b52ba231cae77fd990234e155db0d6c78e5536ae559 +PT= 12b857558ea7c8d589f2a343f06a7b0b9c6f2bb30838fb16 +CT= 18d80f873e4d60605d299b146c0b6f5bc3e45e15b4b153d7 +TEST= 115 +KEY= 5726aa195370c2c225d265ccaac32336 +IV= 18d80f873e4d60605d299b146c0b6f5bc3e45e15b4b153d7 +PT= 092e90d384ed1099c7ac2ed8f31f6057092cdcf0820804d7 +CT= 67ea32dbc14503f3e86c516b1aa80d5d5808904f11fdc231 +TEST= 116 +KEY= bf4afb7249d8cf9f7ddaf583bb3ee107 +IV= 67ea32dbc14503f3e86c516b1aa80d5d5808904f11fdc231 +PT= 5191b0c40bcb276e48a21e2dd97123647244c846baaa63cb +CT= d39129bf75f1ed6f59dde98c05b11374116e0735fda8d3e9 +TEST= 117 +KEY= e69712fe4c69dceb6cb4f2b6469632ee +IV= d39129bf75f1ed6f59dde98c05b11374116e0735fda8d3e9 +PT= cd042fb88f3dcae61c5c85014ccd13eababb779838d1fa6a +CT= aa33a79d2148c9a3ba68758f9ece01585165a14a5592674f +TEST= 118 +KEY= 5cff6771d2a7ddb33dd153fc130455a1 +IV= aa33a79d2148c9a3ba68758f9ece01585165a14a5592674f +PT= 88ccf8c0509a524c56d3ab8d532a51abcec6cf4745026842 +CT= 95df846a73794eb5684fbb90b868d46b824c8931f75b1ab5 +TEST= 119 +KEY= 34b0dce16acf09d8bf9ddacde45f4f14 +IV= 95df846a73794eb5684fbb90b868d46b824c8931f75b1ab5 +PT= 4b759841d8e04d90fcac3eb0a725e5ad00ede666e3d06b40 +CT= aa185e9ba3868fa3757f6d4da8ef03c61ed3d84607c30682 +TEST= 120 +KEY= 41cfb1acc2200a1ea14e028be39c4996 +IV= aa185e9ba3868fa3757f6d4da8ef03c61ed3d84607c30682 +PT= 1c4aafe6c5cdd7fffb6b136b7a982388f365d174cd83bf7b +CT= d738187128b41cde717f98d775f1e1e7b2dcf02a42f543d9 +TEST= 121 +KEY= 30b0297bb7d1ebf91392f2a1a1690a4f +IV= d738187128b41cde717f98d775f1e1e7b2dcf02a42f543d9 +PT= f8662edc224721eabecf93a2d6e21d85833ab48a234d754c +CT= dc1fecdde1b38a5505ba39adf4b0c19d07e56309535cc405 +TEST= 122 +KEY= 350a10d643612a64147791a8f235ce4a +IV= dc1fecdde1b38a5505ba39adf4b0c19d07e56309535cc405 +PT= 0258d8f9ac0d447e0262e500b1b5686078497e71a764b066 +CT= 8361ef40ed74805adb54deeddcddeb34fd0999e025700fba +TEST= 123 +KEY= ee5ece3b9fbcc150e97e0848d745c1f0 +IV= 8361ef40ed74805adb54deeddcddeb34fd0999e025700fba +PT= 991cc039c7ae7922e9d6388b3e305e92178e26deab05e6cb +CT= 26914f6b771390f26168e1591aba8851fc5bc0850e9f0f6a +TEST= 124 +KEY= 8f362f62850649011525c8cdd9dace9a +IV= 26914f6b771390f26168e1591aba8851fc5bc0850e9f0f6a +PT= d24a6b148133b937409d2768d38a17e96046d9bb2f33181b +CT= 1b0e5a512bc292c3d1587e5ee26734382ffe0b970f0f2c36 +TEST= 125 +KEY= 5e6e513c67617d393adbc35ad6d5e2ac +IV= 1b0e5a512bc292c3d1587e5ee26734382ffe0b970f0f2c36 +PT= 7183557df688ff0a03e4b095c221e4c7318612c0eb1990ab +CT= 7f81278087ed7995e69ba3d349cab40910e9a47ff64319a3 +TEST= 126 +KEY= b8f5f2ef2eabc9302a3267252096fb0f +IV= 7f81278087ed7995e69ba3d349cab40910e9a47ff64319a3 +PT= 2cf36d1e440ea2abe9df049cf581bdd3cdf496a3593ce20f +CT= 502ec75ab97d945102a18f49d21eeb9cefa82ed13fc98dc6 +TEST= 127 +KEY= ba547da6fcb522acc59a49f41f5f76c9 +IV= 502ec75ab97d945102a18f49d21eeb9cefa82ed13fc98dc6 +PT= 5d35de652c67127fb24698596feac7dab01a048e5940e65c +CT= b259aa184058257405ba0ad0b953fcbef290aeb888d13b8f +TEST= 128 +KEY= bfee777645e6de12370ae74c978e4d46 +IV= b259aa184058257405ba0ad0b953fcbef290aeb888d13b8f +PT= d85c2794363de31c1a483105cc1a0abed7b43dc84f077534 +CT= b3c46660894c41aa18907c28556cfbfd7c4d77ddccbd202d +TEST= 129 +KEY= a77e0b5e108a25ef4b4790915b336d6b +IV= b3c46660894c41aa18907c28556cfbfd7c4d77ddccbd202d +PT= 4aa02a419733d058c9cf3e4f3d8cad8d8c659546bd6e6eb0 +CT= 9869b88eb070953b832de7f45e7bdf5ddeb86024736b24c9 +TEST= 130 +KEY= 2453ecaa4ef1fab295fff0b5285849a2 +IV= 9869b88eb070953b832de7f45e7bdf5ddeb86024736b24c9 +PT= 8edee0603efbafa41f4c7196666797a943239278033e4e36 +CT= 3bb3af53f8d8d33030f2a045f31f077c83a31e50c7ad0b68 +TEST= 131 +KEY= 14a14cefbdeefdce165ceee5eff542ca +IV= 3bb3af53f8d8d33030f2a045f31f077c83a31e50c7ad0b68 +PT= 3f102ea5261756194f561bc8970bac8ead7b4cadea0ffa03 +CT= 9ebbdcd381d8bdc010cfb62b60a16768f6b44a93106eb276 +TEST= 132 +KEY= 046efac4dd4f9aa6e0e8a476ff9bf0bc +IV= 9ebbdcd381d8bdc010cfb62b60a16768f6b44a93106eb276 +PT= eaac9000a6d230530553fb5c61fd3358a1b5cff05ad3465a +CT= 97c8fe80083b2c8a19373b6741fe0621071dfdba36d67828 +TEST= 133 +KEY= 1d59c1a39cb19c87e7f559ccc94d8894 +IV= 97c8fe80083b2c8a19373b6741fe0621071dfdba36d67828 +PT= 0f4f7dc97619cad5ffb3d98f011b363daa51f29696dcddd4 +CT= 87f870da48898b173c8657cf4b4deb9efbfd27a312905f3d +TEST= 134 +KEY= 21df966cd7fc77191c087e6fdbddd7a9 +IV= 87f870da48898b173c8657cf4b4deb9efbfd27a312905f3d +PT= 051eeecbd326c073cecf04a34acf780401f2ebe9b893183f +CT= be5e1441de59c3592df9e978d7392d90bf5a22a31199498a +TEST= 135 +KEY= 0c267f1400c55a89a3525cccca449e23 +IV= be5e1441de59c3592df9e978d7392d90bf5a22a31199498a +PT= 98c4d31b1a9d5f5a8413e7f404de58a41784902bd725af9c +CT= e314d7e87bda2f374d8e4d57e763a07f2cb631981ffff6bc +TEST= 136 +KEY= 41a83243e7a6faf68fe46d54d5bb689f +IV= e314d7e87bda2f374d8e4d57e763a07f2cb631981ffff6bc +PT= bc786d1e694bcc3310e1de7332bce6ff5e5cebace265a8ce +CT= bf194915e8d811cb379fe21a0a59bf16c3fbe151eac8cbfa +TEST= 137 +KEY= 7637d059edff45e04c1f8c053f73a365 +IV= bf194915e8d811cb379fe21a0a59bf16c3fbe151eac8cbfa +PT= 2c7a7f85c16606bcceb0bc3f07e7ba009be13f1801576577 +CT= 79a80a76df47a575a0c346bffaaac2b908a389fed06955d3 +TEST= 138 +KEY= d6f496e61755875944bc05fbef1af6b6 +IV= 79a80a76df47a575a0c346bffaaac2b908a389fed06955d3 +PT= e8b27f3a9caf89e68f9b2e1da29019f5dec5694c60443028 +CT= dda2d796848a974d6a0259ec598b11a782399b77b337bd26 +TEST= 139 +KEY= bcf6cf0a4ede96fec6859e8c5c2d4b90 +IV= dda2d796848a974d6a0259ec598b11a782399b77b337bd26 +PT= 2119fbf3740bd3c7593b853813b64e2e75de9ec4bcfeec13 +CT= 00a9110bdb79638e4596933a339411271cc48b5dbc37772c +TEST= 140 +KEY= f9605c307d4a87d9da4115d1e01a3cbc +IV= 00a9110bdb79638e4596933a339411271cc48b5dbc37772c +PT= a101dd3e7cd44427af203b6b17f0a48691e26d75090fd844 +CT= 285593d39ee29c2d48c91a8f720914038f4890601a257396 +TEST= 141 +KEY= b1a946bf0f4393da550985b1fa3f4f2a +IV= 285593d39ee29c2d48c91a8f720914038f4890601a257396 +PT= fb08fd32a98e3ec468dedfbcaeb5e0337a711b0557bd42f6 +CT= 5358fa97470bd5d5fc3043364717666dcba4763a88ba25a0 +TEST= 142 +KEY= 4d9905894854f5b79eadf38b72856a8a +IV= 5358fa97470bd5d5fc3043364717666dcba4763a88ba25a0 +PT= 59fa25938e463f6c3cfe50a209ee39972b489776181989bf +CT= 491cd2e0acb618e9317ee194a8bc9c84d040095902069970 +TEST= 143 +KEY= 7ce7e41de0e869334eedfad27083f3fa +IV= 491cd2e0acb618e9317ee194a8bc9c84d040095902069970 +PT= e4967de35518629aa7963a4222c045eab02661d8bc0c56ba +CT= 4d567c9ebe52c636e33bb5b9c44b3966bf35d6082052c6ce +TEST= 144 +KEY= 9fdc51a424a35055f1d82cda50d13534 +IV= 4d567c9ebe52c636e33bb5b9c44b3966bf35d6082052c6ce +PT= f374fc6872b97c89638534ea640e70a1c02a1c81d2b9da14 +CT= 68dbaa1c5cd9d0d52ed8a4f536fd8e73930ce1a629b138b8 +TEST= 145 +KEY= b104f551125ede2662d4cd7c79600d8c +IV= 68dbaa1c5cd9d0d52ed8a4f536fd8e73930ce1a629b138b8 +PT= d6de40c084b3665faf85e1fd80e2bb409908686266089f95 +CT= 49ae12840f3aa98fd4e132792beb6bc38908ee08a346ce0d +TEST= 146 +KEY= 65e5c72839b5b5e5ebdc2374da26c381 +IV= 49ae12840f3aa98fd4e132792beb6bc38908ee08a346ce0d +PT= d2be0ada5940e92186db2a29b33d7eb7f77e90748d33813c +CT= e079d81decc56c20e78ce19a627df89b2e6515cc82b0b875 +TEST= 147 +KEY= 826926b25bc84d7ec5b936b858967bf4 +IV= e079d81decc56c20e78ce19a627df89b2e6515cc82b0b875 +PT= d42015bf2f3ec0dc57eadd13830c263a7fb3910ad8f76045 +CT= 5eb08237a06f365c24e4832a72e34a4b6550bc20559fd095 +TEST= 148 +KEY= a68da598292b0735a0e98a980d09ab61 +IV= 5eb08237a06f365c24e4832a72e34a4b6550bc20559fd095 +PT= e7acbde69feee1facc4c13a08fc8367991740647a752b383 +CT= e51a04cd34ec393152c6e13dc25d55a99f59877361fd91d5 +TEST= 149 +KEY= f44b44a5eb76529c3fb00deb6cf43ab4 +IV= e51a04cd34ec393152c6e13dc25d55a99f59877361fd91d5 +PT= 31743b7c2dd267ae8bf7f505bb44b306be42ea54e2b5fe83 +CT= 556736f54432e8d13509fd68ac6add7a8d112826c0911e08 +TEST= 150 +KEY= c142b9cd471c8fe6b2a125cdac6524bc +IV= 556736f54432e8d13509fd68ac6add7a8d112826c0911e08 +PT= 00bfa9d98d4c1e62c7a28c0bd36665f7bd5300ae7ac0e289 +CT= 838ae0e68cb0f8c7367386cecc7849bcff7d3f0335d9881f +TEST= 151 +KEY= f7313f038b64c65a4ddc1ace99bcaca3 +IV= 838ae0e68cb0f8c7367386cecc7849bcff7d3f0335d9881f +PT= 0f701684550a0a9e4e46c976497ed53e81fb30fb6e00f3d4 +CT= 5c9499c1fa10acc0435c05654b48369d9e2178c1f82050c9 +TEST= 152 +KEY= b46d3a66c02cf0c7d3fd620f619cfc6a +IV= 5c9499c1fa10acc0435c05654b48369d9e2178c1f82050c9 +PT= 653905731969ed8e741de38e7a7bf0b1744da5485add9fca +CT= b8cc46abe8d3c71b14aebf658a68f7f0c9289c0fd18134d8 +TEST= 153 +KEY= a0c385034a4407371ad5fe00b01dc8b2 +IV= b8cc46abe8d3c71b14aebf658a68f7f0c9289c0fd18134d8 +PT= a8b8f57fb2247cc5fe92d8991a1e61759069b80f17028ab0 +CT= a7b708fda47faa540455ec28859e889810cbecd8bac83ca8 +TEST= 154 +KEY= a496692bcfda8faf0a1e12d80ad5f41a +IV= a7b708fda47faa540455ec28859e889810cbecd8bac83ca8 +PT= 2cf2a50524247288b29a00a20e30b60d66574e60b7ebc2e1 +CT= bfed2a43f078d78837648c21267f6ff204b051f041733966 +TEST= 155 +KEY= 93f2e50ae9a5e05d0eae43284ba6cd7c +IV= bfed2a43f078d78837648c21267f6ff204b051f041733966 +PT= 64e06e57d6f7f8dd06bc9bd333becd261755ae5885701f7d +CT= 8daeb6f8c7fabcf2ea5012b5a909c9b9f2f837ee89f15674 +TEST= 156 +KEY= 79a2f7bf40ac29e4fc5674c6c2579b08 +IV= 8daeb6f8c7fabcf2ea5012b5a909c9b9f2f837ee89f15674 +PT= 8789de54a9cdc7bb04fd346328cc72b3eca63f4f0bba0c9b +CT= f292fb9389fae35f2724918adf840bdcc66508f9a21065c7 +TEST= 157 +KEY= 5e8666359f2822383a337c3f6047fecf +IV= f292fb9389fae35f2724918adf840bdcc66508f9a21065c7 +PT= 5609e173cd26909741b8468c0a9ccd3d8dbc57e39592105d +CT= 6992199e22c035320cb5201e5c9783daec9d2995deeb0273 +TEST= 158 +KEY= 5233462bc3bfa1e2d6ae55aabeacfcbc +IV= 6992199e22c035320cb5201e5c9783daec9d2995deeb0273 +PT= 3d869eca28e7e7bfd674e37bf4c4df8f97a7689783d2b7b9 +CT= c4d9a762d7b6fd26d068ddd4501af14c759f4ce3b3c8c824 +TEST= 159 +KEY= 825b9bff93a550aea33119490d643498 +IV= c4d9a762d7b6fd26d068ddd4501af14c759f4ce3b3c8c824 +PT= fcd5823842f60228e3ee85df9da499dfdd7145d4f4c947f9 +CT= a5cfc8557618719f5a647f0c47a34943d75ba4a497652aaa +TEST= 160 +KEY= d83fe4f3d40619ed746abded9a011e32 +IV= a5cfc8557618719f5a647f0c47a34943d75ba4a497652aaa +PT= 153ff9f8ecc2613a7a119b87c6bbc3dd514ea78f3d5147f6 +CT= 027239d313d524d75878a2208660ca82c3470ca79c9d1db7 +TEST= 161 +KEY= 804746d35266d36fb72db14a069c0385 +IV= 027239d313d524d75878a2208660ca82c3470ca79c9d1db7 +PT= 4cd965b0cf838f1adea5cea4b7b2e24a30bebfd1526eb62f +CT= f05a85494a348ef1f215909fcbfca280b05f22bfdb2a45e5 +TEST= 162 +KEY= 7252d64c999a71ef077293f5ddb64660 +IV= f05a85494a348ef1f215909fcbfca280b05f22bfdb2a45e5 +PT= 964a181b406687237c4d3a79d340846c6dc0e6b2bb5d07ee +CT= bfdf76c735eac4bf575a5b7897f0c9624494d2c04600a480 +TEST= 163 +KEY= 25088d340e6ab88d43e641359bb6e2e0 +IV= bfdf76c735eac4bf575a5b7897f0c9624494d2c04600a480 +PT= 2ce6ebc577eb5d059f69ee04d9ed94f6a94a21d7cad0c9da +CT= 83aa51c7a27a75daba710077c7b9a3c3a07a00f238f59f6a +TEST= 164 +KEY= 9f798d43c9d31b4ee39c41c7a3437d8a +IV= 83aa51c7a27a75daba710077c7b9a3c3a07a00f238f59f6a +PT= 5a0cec6810de3106f2d9885fff3d28df53fb1bf859de52b0 +CT= c278c5c900c688c87496aa8026939d9731990ef6d412b387 +TEST= 165 +KEY= ebef27c3ef4086d9d2054f317751ce0d +IV= c278c5c900c688c87496aa8026939d9731990ef6d412b387 +PT= 282efb35e181d5c448be48bac5bd3c38eeaadabd523d2609 +CT= 822acb90df2abb4df13511e8af25e2d950217d0ee0e10d26 +TEST= 166 +KEY= 1ada362b406564008224323f97b0c32b +IV= 822acb90df2abb4df13511e8af25e2d950217d0ee0e10d26 +PT= d7009744ecc1b18e344b65e30182206a05d04fa5938733b9 +CT= 11f64051691339b88a57ff4f848843772de3e3478f3be5cf +TEST= 167 +KEY= 908dc964c4ed2777afc7d178188b26e4 +IV= 11f64051691339b88a57ff4f848843772de3e3478f3be5cf +PT= 5e97fc341230fd5f0ba5bc2aea4159e797ae65b5f7f607e8 +CT= ff384d75288f8977ea9b48e3cc847c78f92719f96fc9d3a2 +TEST= 168 +KEY= 7a16818708695b0f56e0c8817742f546 +IV= ff384d75288f8977ea9b48e3cc847c78f92719f96fc9d3a2 +PT= 4a07c64bb5cc759caa48c123dd1d752dd5da6ac5aad60f00 +CT= adfe0ebae95db927907be369606642e9a45a71c4f36babb0 +TEST= 169 +KEY= ea6d62ee680f19e6f2bab94584295ef6 +IV= adfe0ebae95db927907be369606642e9a45a71c4f36babb0 +PT= 4a3690af6574c67b4cbba450fc887e7aefcc9f1c75d6e5bf +CT= fdea66dc616519c1e1529dc8d3b7dfb9a44199a091685c3d +TEST= 170 +KEY= 0b3fff26bbb8c65f56fb20e5154102cb +IV= fdea66dc616519c1e1529dc8d3b7dfb9a44199a091685c3d +PT= 06930352b2c3e82690f42d563f3aa8ba194fef4667eef23b +CT= 95a6120e418c8f0abb2a2a15853e8df95410c6745d34aa64 +TEST= 171 +KEY= b015d5333e864ba602ebe6914875a8af +IV= 95a6120e418c8f0abb2a2a15853e8df95410c6745d34aa64 +PT= bb8122e47d1c639fc57fb08a8e7bbd9298d17562465e91fb +CT= 3b6e0114bb4b4df31a7b2d4e0df5cb3e89c0cf27c8b78f12 +TEST= 172 +KEY= aa6ef87d337380988b2b29b680c227bd +IV= 3b6e0114bb4b4df31a7b2d4e0df5cb3e89c0cf27c8b78f12 +PT= 064feb60415001c5bd81e74b1b675097ec511f5f8af54676 +CT= cad69e517df0cae0d04db4b7a97a7bc42f65612b563a4547 +TEST= 173 +KEY= 7a234cca9a09fb5ca44e489dd6f862fa +IV= cad69e517df0cae0d04db4b7a97a7bc42f65612b563a4547 +PT= 1a76d7acaa333be5375eebc91bb0624da3e4c675b9eb11d3 +CT= ce0c5dbd3200b9c8904cae9556ac25b652904c3a444fb65a +TEST= 174 +KEY= ea6fe25fcca5deeaf6de04a792b7d4a0 +IV= ce0c5dbd3200b9c8904cae9556ac25b652904c3a444fb65a +PT= 85c5eefd07bb1ff118591361fe0360f0fcfe04d784d27315 +CT= 8aa6103c715732ac7b625ee337bc94bfaf3d79ebd10b4a1e +TEST= 175 +KEY= 910dbcbcfb194a5559e37d4c43bc9ebe +IV= 8aa6103c715732ac7b625ee337bc94bfaf3d79ebd10b4a1e +PT= 7507e90ff76945cd5bb1f58db39b095f1f66bdd350e75ce7 +CT= e023df2bf4c106edfae3e8355cf6b97d79a5e8e2429b990e +TEST= 176 +KEY= 6bee5489a7eff328204695ae012707b0 +IV= e023df2bf4c106edfae3e8355cf6b97d79a5e8e2429b990e +PT= 70f8b083f366343951075cc5bfbc0794079e6bbbf0208c6b +CT= 6e88c0904275b2458571e4f32dc0a6d4630ed74084d1fff7 +TEST= 177 +KEY= ee9fb07a8a2f55fc434842ee85f6f847 +IV= 6e88c0904275b2458571e4f32dc0a6d4630ed74084d1fff7 +PT= 76e8a9dad4fac257351c5930dd7feb2e235bbb69da510bc2 +CT= 9ff0da5bd2417974a34c3dd148461d955339d8a4385e035c +TEST= 178 +KEY= 4dd38dabc269486910719a4abda8fb1b +IV= 9ff0da5bd2417974a34c3dd148461d955339d8a4385e035c +PT= a099ba0698feec2e6a0c73eefc2a2c071d3ec0d72e7ecc10 +CT= 24d75bd2dc3ba426e9f6abf0c1e0584d7c05d756cc27de02 +TEST= 179 +KEY= a425265b038910246c744d1c718f2519 +IV= 24d75bd2dc3ba426e9f6abf0c1e0584d7c05d756cc27de02 +PT= 7bebdb2c294adab65db08956e6ff5a892eb99b21e045134e +CT= b8f8a1bbb711e78778458a16314fe7862a802c3f5fc6c44c +TEST= 180 +KEY= dc60ac4d32c6f7a246f461232e49e155 +IV= b8f8a1bbb711e78778458a16314fe7862a802c3f5fc6c44c +PT= ec7bd3a5c99695dc561d15df10f2f33ce013be1a0cef573a +CT= 2c3c0c878cd51ca38a2b97f645d4dfe612024da741551c3d +TEST= 181 +KEY= 564b3bbb7712284454f62c846f1cfd68 +IV= 2c3c0c878cd51ca38a2b97f645d4dfe612024da741551c3d +PT= 606a9fd7c2f21e4de349d3506d8c3539fc0bd9cb5f522897 +CT= 1424eda68d74e12d77862a1f2088faa46903d04a9cefd45b +TEST= 182 +KEY= 21cd11a4579ad2e03df5fccef3f32933 +IV= 1424eda68d74e12d77862a1f2088faa46903d04a9cefd45b +PT= 93246fae690ce206cded5dba28f913bd7faa0762bfce50c9 +CT= d068e1dc7db01523808ae6517623658d1b28015564c23497 +TEST= 183 +KEY= a147f7f521b9b76d26ddfd9b97311da4 +IV= d068e1dc7db01523808ae6517623658d1b28015564c23497 +PT= 726de37c7c816e3e5987f3c9dcf1cbe70398189ec0518246 +CT= 976233b8b8bbde5d295a66c953fa6d7215ac0407753b26ca +TEST= 184 +KEY= 881d913c7243da1f3371f99ce20a3b6e +IV= 976233b8b8bbde5d295a66c953fa6d7215ac0407753b26ca +PT= eb781eca86676a5235403837313a15dc5563b10c9bdcafa1 +CT= df96a1a8ac46f8fe1d4e63d12610c7e0d9a1949ba96980d8 +TEST= 185 +KEY= 9553f2ed54531dffead06d074b63bbb6 +IV= df96a1a8ac46f8fe1d4e63d12610c7e0d9a1949ba96980d8 +PT= 500213d705ddfcc0c72fa9e8e78421e6f21992af145b3b26 +CT= 56914a20e2a56cd7ba108034c0a8fb9065e4bed90a3db812 +TEST= 186 +KEY= 2f4372d994fbe66f8f34d3de415e03a4 +IV= 56914a20e2a56cd7ba108034c0a8fb9065e4bed90a3db812 +PT= e5ea94b400a671433ed16f4c1d92e3557f3e5200a8736c4c +CT= 37e72bbdc3f52046153b32c54b3405797007e528b1cf8207 +TEST= 187 +KEY= 3a78401cdfcfe316ff3336f6f09181a3 +IV= 37e72bbdc3f52046153b32c54b3405797007e528b1cf8207 +PT= 777fe2c5b9c1979d5da7b6db0136ca47c7a84ad6544938f2 +CT= 90ad0a8006c5ae67bef6b13ad69d0f8224a931539994fbe4 +TEST= 188 +KEY= 848ef1260952ec94db9a07a569057a47 +IV= 90ad0a8006c5ae67bef6b13ad69d0f8224a931539994fbe4 +PT= 62042722f56381152ab4346be934f2d4553a0e789a3cec37 +CT= e2008c512370980159efd5faa6f9571844022873c5eeef2b +TEST= 189 +KEY= dd6124dcafabbb8c9f982fd6aceb956c +IV= e2008c512370980159efd5faa6f9571844022873c5eeef2b +PT= 89e4d9f3badaf11d5f1a2e7c91782673414761f1184b3c1a +CT= 8010374f26dc4949cf4e7b77cc7846b2d912fb435188a5fb +TEST= 190 +KEY= 122f5fab63d3fd3e468ad495fd633097 +IV= 8010374f26dc4949cf4e7b77cc7846b2d912fb435188a5fb +PT= 18f0969250a2327f6a75a887e9c890fcdebe43e9fdeb8dde +CT= a055dbbe304ff66f4312f3573c0385144f53de7ae566359c +TEST= 191 +KEY= 513dacfc5fd0782a09d90aef1805050b +IV= a055dbbe304ff66f4312f3573c0385144f53de7ae566359c +PT= 98fa57ed7ecdc0d2344fef1325b018239ad546fc56360cd9 +CT= 7b89085b75811f0ee7fe2b2b6a86bc957252745ff0916e03 +TEST= 192 +KEY= b6c387d73556c4bf7b8b7eb0e8946b08 +IV= 7b89085b75811f0ee7fe2b2b6a86bc957252745ff0916e03 +PT= 6b1141920a80148f1db397a2f533672a309bd99ad977843f +CT= cc208bfb34b055a4db0b3226a215aed05e9711e4f411dfaf +TEST= 193 +KEY= 6dc8b5f197436a6f251c6f541c85b4a7 +IV= cc208bfb34b055a4db0b3226a215aed05e9711e4f411dfaf +PT= 205f64ecd4dfae61d1c5be1c9b087036666297e62f7f2c86 +CT= 904dadcc2bfa477ace93d78d1330585c0c1fd13c699c7f5e +TEST= 194 +KEY= a35b627c847332332903be687519cbf9 +IV= 904dadcc2bfa477ace93d78d1330585c0c1fd13c699c7f5e +PT= 90e0dac0169dfe51201228d21a226cef9db3c49ea8de9d9c +CT= 6c64ef1bedeb20ea8bd7e4b83ad02da543e64ae901c2a8d2 +TEST= 195 +KEY= 288c86c4bea31f966ae5f48174db632b +IV= 6c64ef1bedeb20ea8bd7e4b83ad02da543e64ae901c2a8d2 +PT= 061000abe83373fca14aa32cdd8c44a9b11e168211e24a76 +CT= 423f736a0424d6cabcbf50a359c29a22d833107348cdd5bf +TEST= 196 +KEY= 9433d667e76185b4b2d6e4f23c16b694 +IV= 423f736a0424d6cabcbf50a359c29a22d833107348cdd5bf +PT= e2c521950eaf501d3c2e87628a1cc62a86fbbe22c0da28ee +CT= 45237b3b89e8fcce45fe272c70375a7bfc2bc2faffe55ca7 +TEST= 197 +KEY= d1cdf14b9756dfcf4efd2608c3f3ea33 +IV= 45237b3b89e8fcce45fe272c70375a7bfc2bc2faffe55ca7 +PT= 30d39ecbdc1e45e6e3091a5383413a5c594ea781ef6f8c1c +CT= da8145c563df921c4d21b48f1cf51930404400ec3d8f4b86 +TEST= 198 +KEY= 9cec45c48ba3c6ff0eb926e4fe7ca1b5 +IV= da8145c563df921c4d21b48f1cf51930404400ec3d8f4b86 +PT= 0375c5fdb677e6076ab74b3d61cb92bfddd76df8de3784a3 +CT= 997b78c9772ce696bb559fe8a757418685f9d31131d71097 +TEST= 199 +KEY= 27b9da2c2cf487798b40f5f5cfabb122 +IV= 997b78c9772ce696bb559fe8a757418685f9d31131d71097 +PT= 742255abeb24ef53548d181420ca6443bbb690c7a794cf5e +CT= b2867696515c1b4ba7487e886a6007e2f11630274524d6e1 +TEST= 200 +KEY= 80f1a4a44694809b7a56c5d28a8f67c3 +IV= b2867696515c1b4ba7487e886a6007e2f11630274524d6e1 +PT= e174850b81ff4fe8a6e507496da840f2b0d153b5dcc651f8 +CT= f810f51371452a2a5563367f988f381bb1f909fce69006ad +TEST= 201 +KEY= d59292dbde1bb880cbafcc2e6c1f616e +IV= f810f51371452a2a5563367f988f381bb1f909fce69006ad +PT= 55b2d89be31f2a66194ee6a65ebbb06aba8038b87074956a +CT= 8b49ab91f94fa83b8d1654dd7540003f30e71999a41be783 +TEST= 202 +KEY= 5884c606ab5bb8bffb48d5b7c80486ed +IV= 8b49ab91f94fa83b8d1654dd7540003f30e71999a41be783 +PT= 90ff4de5848852e5498bd8b3a274a35fa8d821fd6fa35e69 +CT= e4e2d05518646026d5c16db7989fdd4cc4fbd4a0676d7f6f +TEST= 203 +KEY= 8d45abb133c465f33fb30117af69f982 +IV= e4e2d05518646026d5c16db7989fdd4cc4fbd4a0676d7f6f +PT= 6ce738a82b74ea6fdfcbcdc021cf7a2a3a584b4d393cfc73 +CT= 96660c3f1a5e10206920eeb6d9c702c9973b2f0f1735561d +TEST= 204 +KEY= e4654507ea03673aa8882e18b85caf9f +IV= 96660c3f1a5e10206920eeb6d9c702c9973b2f0f1735561d +PT= 12bfe5a0800d2f5530651cae456baba1cda0244de5239f2d +CT= 54488dbfc797c0da2da6b8a6d72b44b983f458a32abdcbcf +TEST= 205 +KEY= c9c3fda13d2823832b7c76bb92e16450 +IV= 54488dbfc797c0da2da6b8a6d72b44b983f458a32abdcbcf +PT= e3eab61a6167a69628b15c4d35d1defc5a9864b5d96b2e04 +CT= 22c81fbc35c782e0367593629f38f629aaffa18a017390ce +TEST= 206 +KEY= ffb66ec3a210d5aa8183d7319392f49e +IV= 22c81fbc35c782e0367593629f38f629aaffa18a017390ce +PT= 5c9c63d8d94d048bc05bb48c744530f27733e47c5146240f +CT= db63fa0ddebc07b0dd3633259106cc0e5609c48ebfa51a47 +TEST= 207 +KEY= 22805de6331619a4d78a13bf2c37eed9 +IV= db63fa0ddebc07b0dd3633259106cc0e5609c48ebfa51a47 +PT= 86c725fa5f1cb55264f89e907a21a8ac770f3c42da6b8b34 +CT= bab4706566688166402875f2ddcb14bdc8606274aab133ef +TEST= 208 +KEY= 62a82814eedd0d191fea71cb8686dd36 +IV= bab4706566688166402875f2ddcb14bdc8606274aab133ef +PT= 5e198b5f633c6ff6883cae92cf4798ce58cac5c33f077fcc +CT= 2066414c91c279cf00e999e06c834e3a479c8f01ab0852b0 +TEST= 209 +KEY= 6241b1f4825e43235876feca2d8e8f86 +IV= 2066414c91c279cf00e999e06c834e3a479c8f01ab0852b0 +PT= d0511f95c1bb45525b1f49f7ace413c1be11df40b1265e9f +CT= 01eca2bec3f926aef51042ae6143c48a270829ca52ed6b62 +TEST= 210 +KEY= 9751f35ae31d87a97f7ed7007f63e4e4 +IV= 01eca2bec3f926aef51042ae6143c48a270829ca52ed6b62 +PT= 01eaeb243643a831ebb4b63a7263b893bb145775cf75e611 +CT= 2126422a07fa0cec7d284abea0c180976bf508b7146a130b +TEST= 211 +KEY= ea79b9e443dc073e148bdfb76b09f7ef +IV= 2126422a07fa0cec7d284abea0c180976bf508b7146a130b +PT= cc393ec806ffa986e8b43dfedf5a6ad43e870e5d06d5c463 +CT= dba7048e8cdeb6bfdb3dd56aab3a98b6d4c607b2a6845b6f +TEST= 212 +KEY= 31446c8ee8e69f88c04dd805cd8dac80 +IV= dba7048e8cdeb6bfdb3dd56aab3a98b6d4c607b2a6845b6f +PT= fed0e1dc35e085c5af2d13d1e7bc05694b457ee75e35d00d +CT= 81caef65b4a1ba402f041ac88407de44d1e5a2b1b195cb29 +TEST= 213 +KEY= 1e4076466ce141cc11a87ab47c1867a9 +IV= 81caef65b4a1ba402f041ac88407de44d1e5a2b1b195cb29 +PT= e7ee6b1710522188b9d01f810b65945829276c95427af64b +CT= 3d3d21956991c093ea83bb38dd5368d798aaf1a6f62f3a05 +TEST= 214 +KEY= f4c3cd7eb1b2291b89028b128a375dac +IV= 3d3d21956991c093ea83bb38dd5368d798aaf1a6f62f3a05 +PT= f3d12374da136c2586c557dfa39693f239ca9693a92a2591 +CT= e007f3dde38e7b91db90377c5a73b0b943354d48e12a0863 +TEST= 215 +KEY= 2f53fa02ebc199a2ca37c65a6b1d55cf +IV= e007f3dde38e7b91db90377c5a73b0b943354d48e12a0863 +PT= 72c144abaf2f66a6627370eadbfbef83899c1a94f52a8c2f +CT= e1547940db193db80c9c21cc190f38871ac71ab5a5b9c6a2 +TEST= 216 +KEY= 23cfdbcef2cea125d0f0dcefcea4936d +IV= e1547940db193db80c9c21cc190f38871ac71ab5a5b9c6a2 +PT= bffcb62eeb9dd0b848cca3c635e068fd371447fca535fd68 +CT= 484e7e0abc51ed3b7d2e55ab1ee8ba8cfbeb3c2ec57917d2 +TEST= 217 +KEY= 5ee18e65ec261ba92b1be0c10bdd84bf +IV= 484e7e0abc51ed3b7d2e55ab1ee8ba8cfbeb3c2ec57917d2 +PT= ced378f8b76cfe2d469b3889004591e83395220106762644 +CT= 13098c17789aec2a88586f1edc70d331986b7448d60a4c8f +TEST= 218 +KEY= d6b9e17b3056c898b3709489ddd7c830 +IV= 13098c17789aec2a88586f1edc70d331986b7448d60a4c8f +PT= df8a493692e800cceb381e2abaf2b9fb499c12536749fc35 +CT= e488b4214ca10859b12be9ec97851fc88872cc273132c343 +TEST= 219 +KEY= 67920897a7d3d7503b0258aeece50b73 +IV= e488b4214ca10859b12be9ec97851fc88872cc273132c343 +PT= 507ffb5ec9ad980212435cb955c2e410ee77e1e42ad2370a +CT= aa1e7486034c6f947710871c18af4f13f5780e06463d7ebd +TEST= 220 +KEY= 10828f8bbf7c9843ce7a56a8aad875ce +IV= aa1e7486034c6f947710871c18af4f13f5780e06463d7ebd +PT= 603e5953df611c17a121c79adcd50f83fb92d3ea606457d9 +CT= 0ee86ce9f8feab016124b4090fee4b56467eb5fa2f7006f9 +TEST= 221 +KEY= 71a63b82b092d3158804e35285a87337 +IV= 0ee86ce9f8feab016124b4090fee4b56467eb5fa2f7006f9 +PT= 55930a75f3cf125b74c69ba2ab62cf97a2a0233aafcd2415 +CT= ffc6a057dd294d9ca99b31c70992d916b718e35db8a026fa +TEST= 222 +KEY= d83d0a45b9000a033f1c000f3d0855cd +IV= ffc6a057dd294d9ca99b31c70992d916b718e35db8a026fa +PT= ea5aaf5be8c20f9e6bce8497fecbd5a151a3600b53867634 +CT= 732c50a076abce8341547a278c2b14dc7552a63a9a20ab5f +TEST= 223 +KEY= 99697062352b1edf4a4ea635a728fe92 +IV= 732c50a076abce8341547a278c2b14dc7552a63a9a20ab5f +PT= ac9929e83f1c5e6e6d2964c05182d6c68caaf49256717382 +CT= da4c9d5a8e765cee3cf7c6f63f0cb97f708df2dbb46cd52b +TEST= 224 +KEY= a59eb6940a27a7a03ac354ee13442bb9 +IV= da4c9d5a8e765cee3cf7c6f63f0cb97f708df2dbb46cd52b +PT= 435d740dd7072410bc7e35b93119e76156fc13f2b94f676f +CT= c12e55c18ecdcff8404d033d5028755151e7dbc577b9119a +TEST= 225 +KEY= e5d3b5a95a0fd2f16b248f2b64fd3a23 +IV= c12e55c18ecdcff8404d033d5028755151e7dbc577b9119a +PT= 92dd617fde9dbc46fa7947153dd1a78201cb0d4ea954088b +CT= f41b2c44a6192415092a0c5c859302eaf2f13f2b51cc0380 +TEST= 226 +KEY= ecf9b9f5df9cd01b99d5b000353139a3 +IV= f41b2c44a6192415092a0c5c859302eaf2f13f2b51cc0380 +PT= a5078dcb34f9f77d7ce32fe6135f1a7d0ac24eecad2e5cc4 +CT= b8701e6f8e7e8075cd2841ea2be73e5cc8cd59a0fca7f9e5 +TEST= 227 +KEY= 21d1f81ff47bee475118e9a0c996c046 +IV= b8701e6f8e7e8075cd2841ea2be73e5cc8cd59a0fca7f9e5 +PT= 42d7cf52fb701a579db887caa38414f70c26bf6e68e69f15 +CT= 09ef6df4ad34fcdfdd751450b4eaa9886e6ecb830dcaa9e4 +TEST= 228 +KEY= fca4ec4f409147cf3f762223c45c69a2 +IV= 09ef6df4ad34fcdfdd751450b4eaa9886e6ecb830dcaa9e4 +PT= 25f63ad23390f54d5f0c1ffac662b3a9e6e55b36037d7b6a +CT= c496b6961b0e7ddfd48ce9cb32c65b14dbdb2e99de83b7cc +TEST= 229 +KEY= 2828058472571cdbe4ad0cba1adfde6e +IV= c496b6961b0e7ddfd48ce9cb32c65b14dbdb2e99de83b7cc +PT= a69e9d4a4654705a9bbb2d9e8453fd07671161a758491f24 +CT= f0a3c331bdf8db03696ed741dc9e5a671dadfcec68885a6e +TEST= 230 +KEY= 4146d2c5aec946bcf900f05672578400 +IV= f0a3c331bdf8db03696ed741dc9e5a671dadfcec68885a6e +PT= 3887ecba1a008e0aeaa157f5364a55041936453d3036534c +CT= 6aec16bbe7e4dbad533ff43d770c9360f2602bd16ebe06c4 +TEST= 231 +KEY= 127926f8d9c5d5dc0b60db871ce982c4 +IV= 6aec16bbe7e4dbad533ff43d770c9360f2602bd16ebe06c4 +PT= 1e057c95649442df64852edf57f84228298ca4b9332b49e8 +CT= 74b304479be4aa04bd06586ce602a9b4a63c31de28fdf492 +TEST= 232 +KEY= af7f7e943fc77c68ad5cea5934147656 +IV= 74b304479be4aa04bd06586ce602a9b4a63c31de28fdf492 +PT= 0dc4b7f12f5f50b4f173ea94ec41d7a752bd6606b4e85473 +CT= 940e8444fa54f827b47690f475ecb12e5b29143fdebf26b1 +TEST= 233 +KEY= 1b09ee604a2bcd46f675fe66eaab50e7 +IV= 940e8444fa54f827b47690f475ecb12e5b29143fdebf26b1 +PT= ce28c8b3bd22a9d9f1ca98f8fc8c6a6ac822b58427bcd3b2 +CT= e12dee049d21f3e28ca71c0fb976872d25cf4f85a566d053 +TEST= 234 +KEY= 97aef26ff35d4a6bd3bab1e34fcd80b4 +IV= e12dee049d21f3e28ca71c0fb976872d25cf4f85a566d053 +PT= 7ec6a514cfd74581c1cb832bec109ec97d3bca96c8ef83c0 +CT= eb3dd152493efd669975ca96ff7b13c4cfce583a146d495a +TEST= 235 +KEY= 0edb38f90c2659af1c74e9d95ba0c9ee +IV= eb3dd152493efd669975ca96ff7b13c4cfce583a146d495a +PT= 21f2072b698dc8e7775a758ccfabacb538105517325afec5 +CT= 0b926a877bd2bbd1a63417ff8b4c427e7ac437f9b6b3b445 +TEST= 236 +KEY= a8ef2f06876a1bd166b0de20ed137dab +IV= 0b926a877bd2bbd1a63417ff8b4c427e7ac437f9b6b3b445 +PT= 655c4620ac3a75e6373857079453d4736572c9f619b77457 +CT= 629dbea697347ee0d7218f93caeb89e131de88b45b668afb +TEST= 237 +KEY= 7fcea0954d819230576e5694b675f750 +IV= 629dbea697347ee0d7218f93caeb89e131de88b45b668afb +PT= 0668ee95f0ac4829b0a60c9b5130f877340342d74efb436d +CT= 0ce4f5a9a6c7011e376e64176c49433100a4aa8828c4ae2e +TEST= 238 +KEY= 48a0c48221c8d10157cafc1c9eb1597e +IV= 0ce4f5a9a6c7011e376e64176c49433100a4aa8828c4ae2e +PT= e9bf38886b74cce56aa2e1539c91861f023e16db6c40a135 +CT= f15e9e36e45ccd2de41a33092d2e63b8e571a906133fb152 +TEST= 239 +KEY= acbaf78b0ce6b2b9b2bb551a8d8ee82c +IV= f15e9e36e45ccd2de41a33092d2e63b8e571a906133fb152 +PT= 8fbb42813f7fea31a375a9aea32cc7a44189570f94e13a01 +CT= 57003135054dc2240dabbf91523a30ab70e23b7496464dca +TEST= 240 +KEY= a111481a5edc8212c2596e6e1bc8a5e6 +IV= 57003135054dc2240dabbf91523a30ab70e23b7496464dca +PT= c00ad75ee3756078b986c779ed38f01168724c17a228d928 +CT= 43da7bfa590b7211ed11dc278abaaf8db0ce9c226341bef0 +TEST= 241 +KEY= 4c00943dd4662d9f7297f24c78891b16 +IV= 43da7bfa590b7211ed11dc278abaaf8db0ce9c226341bef0 +PT= 0f95fea74d656a83af051015b13f51fe705b37e419c30f86 +CT= 33aade34856a9a77005b9afeb12b09fcbd439e50d34c434e +TEST= 242 +KEY= 4c5b0ec3654d2463cfd46c1cabc55858 +IV= 33aade34856a9a77005b9afeb12b09fcbd439e50d34c434e +PT= 1ab3b6489658c6fae0555d0c8a2c5d8e98831350c5c1ceab +CT= 72a86093b9656b5c0883a284bbf0bb63506daa18a4495b6f +TEST= 243 +KEY= 44d8ac47debd9f009fb9c6040f8c0337 +IV= 72a86093b9656b5c0883a284bbf0bb63506daa18a4495b6f +PT= ec9b4dee2d2fc271168b691e8715638c45be16c3f6f35a81 +CT= fcc3a14b75bb0ea2f7e5de6d6056bd7ec400eaaedaa46983 +TEST= 244 +KEY= b33d722abeeb227e5bb92caad5286ab4 +IV= fcc3a14b75bb0ea2f7e5de6d6056bd7ec400eaaedaa46983 +PT= 4ad8e71e475a44f5800ea6c26c97b8b2f1e0f57a29a9470e +CT= 4fb4596b5cb7bcb6f245a588db735cb500c1e87e01fde911 +TEST= 245 +KEY= 4178d7a265987ecb5b78c4d4d4d583a5 +IV= 4fb4596b5cb7bcb6f245a588db735cb500c1e87e01fde911 +PT= 70597dafb140d8f27b3c6564391ee5466d67bb34fd433fd7 +CT= 967b37bf1aa5cf104f798b01f86c28a5f63ec76b04832e32 +TEST= 246 +KEY= 0e015ca39df4566ead4603bfd056ad97 +IV= 967b37bf1aa5cf104f798b01f86c28a5f63ec76b04832e32 +PT= 1260638cd64d3b85d99fdddc33d073e7f5c32c10713d594a +CT= 5d08f2a826de1f0bd27fd63d3a838565ef90dc5e100c7a78 +TEST= 247 +KEY= dc7e8a9ea777d30b42d6dfe1c05ad7ef +IV= 5d08f2a826de1f0bd27fd63d3a838565ef90dc5e100c7a78 +PT= e7b41d3566d1e5b346099ce42bec75abe7a5e6286642e117 +CT= 0bd227ee203074e7c642731d562979b26055263158caaf3e +TEST= 248 +KEY= 1a3cf983f15eaab92283f9d0989078d1 +IV= 0bd227ee203074e7c642731d562979b26055263158caaf3e +PT= 4899c75ebb5a49cbe6f033d17a8a27eee2d443d88b02da41 +CT= 522baa6cb29dc2e7e27fa4c3fed9d611fac3e2d3ffed443d +TEST= 249 +KEY= f8435d400f877ca8d8401b03677d3cec +IV= 522baa6cb29dc2e7e27fa4c3fed9d611fac3e2d3ffed443d +PT= 320019848a87f8ea0f2faab40f0593fb674dd91a36410327 +CT= c70d76ab55c48590fbb53db672701437645c6840cb750254 +TEST= 250 +KEY= 03f660f67df7689fbc1c7343ac083eb8 +IV= c70d76ab55c48590fbb53db672701437645c6840cb750254 +PT= 276ebf5d11bb7e7a9fae1674bce5b742e7255a4651fd5a66 +CT= af64d68149237673a96524e8109c448a814c10bfb2492a85 +TEST= 251 +KEY= aa93441e6d6b2c153d5063fc1e41143d +IV= af64d68149237673a96524e8109c448a814c10bfb2492a85 +PT= 736195fb50abaa11fcbf59665d15c6f15721bb2f6084a6a9 +CT= f0c6c8710a28394de5a23f9525c0c6ff985c8c7b2d42a0c0 +TEST= 252 +KEY= 4f317b8b48abeaeaa50cef873303b4fd +IV= f0c6c8710a28394de5a23f9525c0c6ff985c8c7b2d42a0c0 +PT= ad3df023bebc93424e345482ac1c625447e5ad1e95b2a2e4 +CT= bd793c650ae91db5f421340fd5babc7d5fc6eb971bf187b6 +TEST= 253 +KEY= bb104f849d115697faca041028f2334b +IV= bd793c650ae91db5f421340fd5babc7d5fc6eb971bf187b6 +PT= a7176303f6d7a4effb7efadc813746bbb7e8d2ae2fcd6ae4 +CT= 1f9a44bc0a4319d5275bc7766b5df0678773ace5a3914e80 +TEST= 254 +KEY= 9c4b88f2f64ca6f07db9a8f58b637dcb +IV= 1f9a44bc0a4319d5275bc7766b5df0678773ace5a3914e80 +PT= df983dd55a00bde836adc8cea280e8221814e067427d4492 +CT= 759ef3d7bbc211a537000a5c99af4e3862f2ef102805fbeb +TEST= 255 +KEY= ab4b82ae6fe3e8c81f4b47e5a3668620 +IV= 759ef3d7bbc211a537000a5c99af4e3862f2ef102805fbeb +PT= a8f08f000a97573cc81389d109270c12541c17601c25af31 +CT= 5f756d1faa448b996a35fb9896ac9193ffac3b80fdc3d211 +TEST= 256 +KEY= c17e7936f94f795be0e77c655ea55431 +IV= 5f756d1faa448b996a35fb9896ac9193ffac3b80fdc3d211 +PT= d804c380d3b8fb6399ae1803a6f5b4e7031f4c54c60303fa +CT= c9c30a8529ac3da764f17d90cacaf77f7aa81f1ff293865a +TEST= 257 +KEY= a58f04a633858e249a4f637aac36d26b +IV= c9c30a8529ac3da764f17d90cacaf77f7aa81f1ff293865a +PT= 5215d7291e762b4a95ff511aada64a9cc208cc573d7c516e +CT= d8ddd1676f4419f4a7a4a793b99edcdb64d5108541085118 +TEST= 258 +KEY= 022ba3358a1b52fffe9a73ffed3e8373 +IV= d8ddd1676f4419f4a7a4a793b99edcdb64d5108541085118 +PT= 1b2081c2be9a4e86c1ad9d05fa497d93a281047102645404 +CT= c7858a2dafbcb117a5aabf36c34a95e64db86e43ccb81d0d +TEST= 259 +KEY= a7811c034951c719b3221dbc21869e7e +IV= c7858a2dafbcb117a5aabf36c34a95e64db86e43ccb81d0d +PT= 468309683609313c3607ef0e30cbb264d413db6ad5fcb2d1 +CT= 873136eb3c5598168348f8c599fbd8dbf72bfb60f78063e5 +TEST= 260 +KEY= 24c9e4c6d0aa1fc24409e6dcd606fd9b +IV= 873136eb3c5598168348f8c599fbd8dbf72bfb60f78063e5 +PT= 66c8a717f478957c1193af35b7cac1c6ec5685e892e512bd +CT= 4303a32e9a213b5464629f1ab45c480839f79f51572f6dc1 +TEST= 261 +KEY= 40ab7bdc64f657ca7dfe798d8129905a +IV= 4303a32e9a213b5464629f1ab45c480839f79f51572f6dc1 +PT= c97163b7e536fd9d7b78bf4efce6ea92e665bece3388f147 +CT= 6f9aed6ffbebf007fe58aa4f43ec1a6aa5660515c0c8f6f4 +TEST= 262 +KEY= bef3d193271a4da0d8987c9841e166ae +IV= 6f9aed6ffbebf007fe58aa4f43ec1a6aa5660515c0c8f6f4 +PT= 66a2f8de96a6315e7bdb6f7eaf7b3c89a42ccb964d2bfd10 +CT= bf33a108d3685b6224d4614a8c039465636a646bffc65bfe +TEST= 263 +KEY= 9a27b0d9ab19d9c5bbf218f3be273d50 +IV= bf33a108d3685b6224d4614a8c039465636a646bffc65bfe +PT= 324906001c4edbc020abdd8e3c5b0304a1967ed159bc6c22 +CT= 14a270dc7043dfdfa2a19ad23ab2b15f73f244f70c74e924 +TEST= 264 +KEY= 38862a0b91ab689ac8005c04b253d474 +IV= 14a270dc7043dfdfa2a19ad23ab2b15f73f244f70c74e924 +PT= 723c0dba5d1cde78499ea39f7ae9b342730365a7ede3b092 +CT= 1ec165f9566d7cfc7ee72c6c7aa8a48a2a4b88634aeedd65 +TEST= 265 +KEY= 46610667eb03cc10e24bd467f8bd0911 +IV= 1ec165f9566d7cfc7ee72c6c7aa8a48a2a4b88634aeedd65 +PT= e446c7cce588286e9580c5e43e13972c6922b4a1f44c141f +CT= b55a1ae3ba069200153075dedfc45cf2ceec95457745adcb +TEST= 266 +KEY= 535173b934c790e22ca741228ff8a4da +IV= b55a1ae3ba069200153075dedfc45cf2ceec95457745adcb +PT= 303c0e2d6ecce4d0313f964bff5825ad8234a484f65bdecb +CT= 50164e751efa23611435dfbf2e17088c74166c3f482170a1 +TEST= 267 +KEY= 4764ac061ad0986e58b12d1dc7d9d47b +IV= 50164e751efa23611435dfbf2e17088c74166c3f482170a1 +PT= 3c4aefa7d947531c6d223edaa1aaa785e32d93e5ceec4bf3 +CT= 7c9e74bd6d0948f4e95af0c0c68f9e4ffdc6182066a7429b +TEST= 268 +KEY= ae3e5cc6dc5f0621a577353da17e96e0 +IV= 7c9e74bd6d0948f4e95af0c0c68f9e4ffdc6182066a7429b +PT= 7feec71acec854426275faedaa6309fd8c5f0d0d3c14ce8e +CT= b76f1db7c16201821424c3b03a9f701b2d92b9bc2186ca70 +TEST= 269 +KEY= ba1a9f76e6c0763a88e58c8180f85c90 +IV= b76f1db7c16201821424c3b03a9f701b2d92b9bc2186ca70 +PT= e7fe0145512f5ef98194e7e6cb9ae7a986888f4836cd3761 +CT= deee48e4e5fda81f651b75336debb9d2ecb2437e2b8e8370 +TEST= 270 +KEY= df01ea458b2bcfe86457cfffab76dfe0 +IV= deee48e4e5fda81f651b75336debb9d2ecb2437e2b8e8370 +PT= f084e0607a0106d6fca3c2ab69d8f4e8c0948e668184b5ec +CT= 7dbd071ab1fceb47b45229f68708e12f96f57fba93bf0037 +TEST= 271 +KEY= 6b53c3b30c232ec7f2a2b04538c9dfd7 +IV= 7dbd071ab1fceb47b45229f68708e12f96f57fba93bf0037 +PT= e8eac1a4489a572da76dca32386e610999bd8dfaefdab8fd +CT= bde30e52fc6e9e9a51dc40b89e8296f8461bc5234103b1a9 +TEST= 272 +KEY= 3a8f830b92a1b83fb4b9756679ca6e7e +IV= bde30e52fc6e9e9a51dc40b89e8296f8461bc5234103b1a9 +PT= d8eeae98639b46179c344580249d51510d826fc2a0485418 +CT= 4f2adbd60202ed6b5bb6cbeed34be661cf49f70b91d46cac +TEST= 273 +KEY= 613948e541ea5e5e7bf0826de81e02d2 +IV= 4f2adbd60202ed6b5bb6cbeed34be661cf49f70b91d46cac +PT= 9678866a8d7fcf336a484587f1aeee0cacc99be83153ca1c +CT= 71e8a9f761aea0de21ba6360b12db95b14878e24696bf955 +TEST= 274 +KEY= 40832b85f0c7e7056f770c498175fb87 +IV= 71e8a9f761aea0de21ba6360b12db95b14878e24696bf955 +PT= 11f26e0dbc213ed8495cef318fc177dca17881c6646f8601 +CT= 12c75ea70da6ad45070d2dfa66dc5db0e913e82853b194f6 +TEST= 275 +KEY= 478e067f961bbab58664e461d2c46f71 +IV= 12c75ea70da6ad45070d2dfa66dc5db0e913e82853b194f6 +PT= 03733dfd9e66ec07ca4bfea63d647e2d1f39127cb3503519 +CT= a72c1acb704dbc50677f0e1e95ce0a58f221c19220cdbe41 +TEST= 276 +KEY= 20f1086103d5b0ed744525f3f209d130 +IV= a72c1acb704dbc50677f0e1e95ce0a58f221c19220cdbe41 +PT= 595c6ef709a75df3971c30946d032806f164b09315f3eb6e +CT= e79db64eb3a9b885ed785e5858a4851528a26c0bc9a3e2ed +TEST= 277 +KEY= cd8956395b7135f85ce749f83baa33dd +IV= e79db64eb3a9b885ed785e5858a4851528a26c0bc9a3e2ed +PT= 957efad74348a3b275496aeb8ace8b95d3dccfacbaa8dcb6 +CT= ab93936fa29dc365a7dbab8d8d82f7786f2ab5a7e9470db7 +TEST= 278 +KEY= 6a52fdb4d6f3c28033cdfc5fd2ed3e6a +IV= ab93936fa29dc365a7dbab8d8d82f7786f2ab5a7e9470db7 +PT= 231d4370183e541cfde0e20f01d4c23387cc36808620a1c2 +CT= 3ecae67ddca8ae9672b994e80ce7a5dc7d0b73d1ddf6f6e1 +TEST= 279 +KEY= 18eb695cda14675c4ec68f8e0f1bc88b +IV= 3ecae67ddca8ae9672b994e80ce7a5dc7d0b73d1ddf6f6e1 +PT= ca879829c3cab526b332f2cb75a5ba472fe042df9dde85fc +CT= f0f0685dac2cf493365bc1ff05db4afa9a6d8b9f7919fca7 +TEST= 280 +KEY= 2eb0a8a3dfcf2da6d4ab04117602342c +IV= f0f0685dac2cf493365bc1ff05db4afa9a6d8b9f7919fca7 +PT= b39b9b42cc527c4b43718922afd77b38156698dde9f59200 +CT= 44a5b57e54a4a0129dd94bd51b56dedee8eb919d8a7047e7 +TEST= 281 +KEY= b369e376c499f3783c40958cfc7273cb +IV= 44a5b57e54a4a0129dd94bd51b56dedee8eb919d8a7047e7 +PT= 668abd6fcdb5232a178d2e1b55cf274c7b1a2216dfd59816 +CT= c4b1ac859f3c4941d98d73d3418373035f27c36e8b91eb59 +TEST= 282 +KEY= 6ae490a5851a807b636756e277e39892 +IV= c4b1ac859f3c4941d98d73d3418373035f27c36e8b91eb59 +PT= ecb36a07f7a7f4021fbdbc763899a8e0970e9f3b0f2b1ff8 +CT= b96dfb3488ce0900b054c5287df67d6cd0b8c0bf07c93482 +TEST= 283 +KEY= dab0558df8ecfd17b3df965d702aac10 +IV= b96dfb3488ce0900b054c5287df67d6cd0b8c0bf07c93482 +PT= 94b6e0a0b39a07c5d813e4ff8dcc1b43ecaf6f7daee74ec8 +CT= 2f0afd576a509f0edfd9257ea88cceaad4d859d24e2859b0 +TEST= 284 +KEY= 056970f3506033bd6707cf8f3e02f5a0 +IV= 2f0afd576a509f0edfd9257ea88cceaad4d859d24e2859b0 +PT= 2ac4722f51a318643e4bcaaed7e700cd6022ea663a960f34 +CT= 0a50f512bd4047ec2dd1c556f89f31d77b691f0350e1c3ed +TEST= 285 +KEY= 28b8b5a5a8ff026a1c6ed08c6ee3364d +IV= 0a50f512bd4047ec2dd1c556f89f31d77b691f0350e1c3ed +PT= e232bf64011ba622785e376a6348448739c6dd5808c13482 +CT= 02109682add8b7cafee3d52bb14c2adc4222bab44166f063 +TEST= 286 +KEY= d65b608e19b328b65e4c6a382f85c62e +IV= 02109682add8b7cafee3d52bb14c2adc4222bab44166f063 +PT= 685f2ce6ae435ca0b20f48cb590f136b67e0cb6ceae8e116 +CT= 0734825e53485193bdb7402d55103cb07b7c4525e5ea0192 +TEST= 287 +KEY= 6bec20a34ca3140625302f1dca6fc7bc +IV= 0734825e53485193bdb7402d55103cb07b7c4525e5ea0192 +PT= ca4fcc9776a4b72186fd8457ee790d2f04dd2d7460b47828 +CT= 8c07c334e1f10a17d8aca3685b2dfe94ad0f60c31fcaae3f +TEST= 288 +KEY= b34083cb178eea92883f4fded5a56983 +IV= 8c07c334e1f10a17d8aca3685b2dfe94ad0f60c31fcaae3f +PT= 86a8a2e7bc88b655474bdf51130801fe9191080a8c0ae429 +CT= 2844b784395917ca50de819dac80840579771b92db0f79da +TEST= 289 +KEY= e39e0256bb0e6e97f148544c0eaa1059 +IV= 2844b784395917ca50de819dac80840579771b92db0f79da +PT= 176d5854fc2c3092caef1dea93213af5a09bd50f8386ebcb +CT= e0f5f670109b455bdd84f945792ef9de5a9978580b76e76e +TEST= 290 +KEY= 3e1afb13c2209749abd12c1405dcf737 +IV= e0f5f670109b455bdd84f945792ef9de5a9978580b76e76e +PT= e20f1d6ebae463ea9ffcb04fe00061500c54c9ef28421f31 +CT= 5d2240bd8f3415c50355c2daa53618dfd8bbfa2f42c3b9a4 +TEST= 291 +KEY= 3d4f39c967168f96736ad63b471f4e93 +IV= 5d2240bd8f3415c50355c2daa53618dfd8bbfa2f42c3b9a4 +PT= 8839cffd8535c47a016dc37b74f3f4b5926e07248c0de4d4 +CT= 809e71b9fd04f97a489a83486a0c4848184fd6ff78c407d7 +TEST= 292 +KEY= 75d5ba810d1ac7de6b2500c43fdb4944 +IV= 809e71b9fd04f97a489a83486a0c4848184fd6ff78c407d7 +PT= cb388ff40b007c6686c59b68fb3c189add0498dca7efc477 +CT= 2fed5c8dfe1b5bff57ff9e0d0a29d326529b1407d9eb3b3a +TEST= 293 +KEY= 222a248c073314f839be14c3e630727e +IV= 2fed5c8dfe1b5bff57ff9e0d0a29d326529b1407d9eb3b3a +PT= 568d0a537e234d33cb31a2d59fc60be22fae8785918bd34d +CT= 2bf5682468138374c6320b49529fabb1f4952d71a66fd0de +TEST= 294 +KEY= e4182fc555acbf49cd2b39b2405fa2a0 +IV= 2bf5682468138374c6320b49529fabb1f4952d71a66fd0de +PT= a03998ae2f3e0ccfa1730b7be555cd9cee94a834717dbe76 +CT= 18f781d557deae3a3a5b12ca39a89cc7b9e7e6fb18049e44 +TEST= 295 +KEY= de433d0f6c04238e74ccdf49585b3ce4 +IV= 18f781d557deae3a3a5b12ca39a89cc7b9e7e6fb18049e44 +PT= 4b88c2198e214852ed6fef350590788d660fdc0bfdf8fd56 +CT= 60b378889663e28695be8c4f6151698cce6c3e156dd81674 +TEST= 296 +KEY= 4bfdb1400d554a02baa0e15c35832a90 +IV= 60b378889663e28695be8c4f6151698cce6c3e156dd81674 +PT= f4698aa8d87698828ed1482a3213ec58e9d8807d7d8ae9d5 +CT= 15f06a67394ccc215f14a48c911c913d2ffcbea82ca2d870 +TEST= 297 +KEY= 14e915cc9c49db3f955c5ff41921f2e0 +IV= 15f06a67394ccc215f14a48c911c913d2ffcbea82ca2d870 +PT= b08e3db89da7c60fdf4b2f400e7e88bb8973be036fe73d0d +CT= a7b69ad8db792a20c03afd2d1a6caaa24161bd0746018981 +TEST= 298 +KEY= d4d3e8e18625719dd43de2f35f207b61 +IV= a7b69ad8db792a20c03afd2d1a6caaa24161bd0746018981 +PT= 098e959ce7beb9de01d7c11b343275d3afd542cc9128a0fe +CT= 06eb356c3d53cf4b48d2a40b0d671034b8e731f1154fe816 +TEST= 299 +KEY= 9c014cea8b4261a96cdad3024a6f9377 +IV= 06eb356c3d53cf4b48d2a40b0d671034b8e731f1154fe816 +PT= 7757da6af4e03c5e476338b9deed0deaa31fe3a670e7160f +CT= 051408759c1652b8e0cc516d24d1163b6878d189de3460c3 +TEST= 300 +KEY= 7ccd1d87af93779204a2028b945bf3b4 +IV= 051408759c1652b8e0cc516d24d1163b6878d189de3460c3 +PT= e839eac72efefe0123ab2d599032c45edc93a24e73515a89 +CT= 8716e4fb05ef3c2a97d2057f9713a22c128a4b842237ef33 +TEST= 301 +KEY= eb1f18f83880d5be1628490fb66c1c87 +IV= 8716e4fb05ef3c2a97d2057f9713a22c128a4b842237ef33 +PT= debf1236f3075acaa2bd0259251f89c7de27c0a40b053dd9 +CT= 2e3fdfe19e766fcde4e34db8dfc272fbb47726af6234e08d +TEST= 302 +KEY= 0ffc5540e742a745a25f6fa0d458fc0a +IV= 2e3fdfe19e766fcde4e34db8dfc272fbb47726af6234e08d +PT= fc45d864142861ca160509cc18aa0c4a1ca891be1e952a16 +CT= c8c2e3aa20c8298ada4700d94d9fd2264658c23c039923dd +TEST= 303 +KEY= d5bb5599aadd7563e407ad9cd7c1dfd7 +IV= c8c2e3aa20c8298ada4700d94d9fd2264658c23c039923dd +PT= fe67e4c8e38095dd0ccdef9bdc8e083d155e815a67c8343f +CT= eeea93ee67e3d3e27df76345ad3c70cee9d539f6e7e3b5de +TEST= 304 +KEY= a84c36dc07e105ad0dd2946a30226a09 +IV= eeea93ee67e3d3e27df76345ad3c70cee9d539f6e7e3b5de +PT= f27bd2e8be6d2a8b5f194da0d9f7d9824a40cc31d6110de6 +CT= 44fa05392c9f256845ee13a07ac3cba5b02f5d4d33a4c747 +TEST= 305 +KEY= eda2257c7d22ce08bdfdc9270386ad4e +IV= 44fa05392c9f256845ee13a07ac3cba5b02f5d4d33a4c747 +PT= 49752c4ee866fb67ea13f91bcb6d8903b3f5f31a1cd773c4 +CT= b958dc8845d1c7ba03cfbcca7a0c69ad4d0b0e9b8189b496 +TEST= 306 +KEY= ee6d99b6072ea7a5f0f6c7bc820f19d8 +IV= b958dc8845d1c7ba03cfbcca7a0c69ad4d0b0e9b8189b496 +PT= 18504f9ddb4c3f45e4bac955009cfc75ebe69e7f1c12001d +CT= 3ef592e8c212982c800c1a21d882c41ef0f4a1bece6520e7 +TEST= 307 +KEY= 6e618397dfac63bb000266024c6a393f +IV= 3ef592e8c212982c800c1a21d882c41ef0f4a1bece6520e7 +PT= 5ee86b05929f7f12c4b29dcda0d5e4b408f1ab7249224b4d +CT= 1594e0f7f80579d8f8f76c74a5631293b8cd2752ced8368c +TEST= 308 +KEY= 9696efe37acf7128b8cf415082b20fb3 +IV= 1594e0f7f80579d8f8f76c74a5631293b8cd2752ced8368c +PT= b0d6a541d4f9df79344b5632f76ee00bc20702d5daead175 +CT= ae29e4d19e7bd99d73fc4db31880af5bd9d9253b91ae1096 +TEST= 309 +KEY= e56aa250624fde736116646b131c1f25 +IV= ae29e4d19e7bd99d73fc4db31880af5bd9d9253b91ae1096 +PT= 80a1eada863c0aa7d84bbd9b4d628b08e51ae92b2b0e0bfa +CT= fe4dde993eaa60959413ad365c951dbc84b72d65b2737565 +TEST= 310 +KEY= 71790f663edac3cfe5a1490ea16f6a40 +IV= fe4dde993eaa60959413ad365c951dbc84b72d65b2737565 +PT= 0c6c167e9aedf2db500f57793cef549a0106a18c24663317 +CT= 06b5997c5e0e1d274b62d008dc5a8488b50a0e0e925aeae7 +TEST= 311 +KEY= 3a1bdf6ee280474750ab4700333580a7 +IV= 06b5997c5e0e1d274b62d008dc5a8488b50a0e0e925aeae7 +PT= e9920e8e7d4f8ace828a4b6a227c3ac426d01bd3b9a44678 +CT= 337eda57e8f2b787f487cdedefbac0961992fa03802285fa +TEST= 312 +KEY= ce9c12830d3a87d14939bd03b317055d +IV= 337eda57e8f2b787f487cdedefbac0961992fa03802285fa +PT= 6504325059736b2991f65bb8f37eb4bce70e529155969aa4 +CT= b37cea8e8cd50ac8aa4311ede86f1c3692aa12428b610374 +TEST= 313 +KEY= 64df036ee5559be7db93af4138760629 +IV= b37cea8e8cd50ac8aa4311ede86f1c3692aa12428b610374 +PT= 2c6a556cb759e7317ac7ef8c765b2ea4dcd68f60faabb46f +CT= 3d0b1e107f8fc30fe1ca7b2db9443df1752d07af5054023c +TEST= 314 +KEY= 851578435c11a616aebea8ee68220415 +IV= 3d0b1e107f8fc30fe1ca7b2db9443df1752d07af5054023c +PT= 5faca71747d01199cb3c6ee2e2e77afdf6bc3b260feed4d3 +CT= 47db55cf083f2f505782129b368b97ffa48b913f29709b1e +TEST= 315 +KEY= d2976ad86a9a31e90a3539d141529f0b +IV= 47db55cf083f2f505782129b368b97ffa48b913f29709b1e +PT= 4f0ae166fcd273e51c7bc5285efa1a49d7ce4bf8841612a4 +CT= a188fe7c2bdb77b1741c1d5a44ff9c6a9c6c7e8436222f5f +TEST= 316 +KEY= a68b77822e65ad83965947557770b054 +IV= a188fe7c2bdb77b1741c1d5a44ff9c6a9c6c7e8436222f5f +PT= a6b8ccbb8a599f6a774052cbcdbf6a5bded30636298ba0dc +CT= 366f825c3496fae365a07be5d761cf6d0c882244fc082cb5 +TEST= 317 +KEY= c32b0c67f90462ee9ad165118b789ce1 +IV= 366f825c3496fae365a07be5d761cf6d0c882244fc082cb5 +PT= 59eb8d7e43ad03c9ee7f7d7c884d1d3c50417da1665a5f00 +CT= 4516816c2ca967066bbea31104dd9d294bf2915b587b5e03 +TEST= 318 +KEY= a895af76fdd9ffc7d123f44ad303c2e2 +IV= 4516816c2ca967066bbea31104dd9d294bf2915b587b5e03 +PT= c58b56ea18b55bcdc6795e3a3d15e71b8a22798139513a6e +CT= 75f46ac24f64f61986a0314dfe5642d7807211b20c677e30 +TEST= 319 +KEY= 2e359e3b038fbd105151e5f8df64bcd2 +IV= 75f46ac24f64f61986a0314dfe5642d7807211b20c677e30 +PT= f9db1596d7805872d5b524f47b4a18bdda714fd8d7e86878 +CT= ada54075a0309cae8e83183b1629081292310e35a58e262f +TEST= 320 +KEY= a0b6860015a6b502c360ebcd7aea9afd +IV= ada54075a0309cae8e83183b1629081292310e35a58e262f +PT= d7890a74cd3818cea16fd1f4b3d8596d06c4e07225508818 +CT= d87ae139fb9c9fa57e9040cbb62bbad46a838b75d933ef84 +TEST= 321 +KEY= de26c6cba38d0fd6a9e360b8a3d97579 +IV= d87ae139fb9c9fa57e9040cbb62bbad46a838b75d933ef84 +PT= 96ad8d3681e467e5f1245b64c38ce0a8eb9d50bafc19935f +CT= 57706fd70093a96d5006992ebdadb84bbe4236700a02b5ad +TEST= 322 +KEY= 8e205fe51e20b79d17a156c8a9dbc0d4 +IV= 57706fd70093a96d5006992ebdadb84bbe4236700a02b5ad +PT= 7f0a0f4846ee64eec552aab706927e3314b1b1c3dd5cc8cd +CT= 0e9e9be4dc251bf405f783167d183c65b0c56839c537ae12 +TEST= 323 +KEY= 8bd7dcf363388bf8a7643ef16cec6ec6 +IV= 0e9e9be4dc251bf405f783167d183c65b0c56839c537ae12 +PT= 59a3ab034d9fe3d72b34d3f9ba1e9e6d9521605e999e3b37 +CT= 261aa8bbe7420d3572cd9fc8e527fc92e8d56fdd6bc4abb7 +TEST= 324 +KEY= f91a433b861f776a4fb1512c0728c571 +IV= 261aa8bbe7420d3572cd9fc8e527fc92e8d56fdd6bc4abb7 +PT= 6e8b3174bd3ffe9cd44d5b095c96fd5830cf08c62cf821c7 +CT= 2abb54b19f011c2484ff7d13aab9c056e5393cf1464e3d84 +TEST= 325 +KEY= 7de53e282ca6b73caa886ddd4166f8f5 +IV= 2abb54b19f011c2484ff7d13aab9c056e5393cf1464e3d84 +PT= a2b1e78dbb3bd125fd2c5376aa837f8abf6f6ac6ab3e98d9 +CT= 62f41d1038272c5819c8b600484aba0ae9c9f37fb4e24c05 +TEST= 326 +KEY= 642d882864ec0d3643419ea2f584b4f0 +IV= 62f41d1038272c5819c8b600484aba0ae9c9f37fb4e24c05 +PT= f2da364bb2359ea9f35fb4dd4d223cb42104b3b361e00e70 +CT= 56e5a3ed73ba5df2c83d0f25119b9003f5e2e9f0541c707f +TEST= 327 +KEY= ac10870d75779d35b6a37752a198c48f +IV= 56e5a3ed73ba5df2c83d0f25119b9003f5e2e9f0541c707f +PT= af9d5ae59ed13f049906336d46d5dcb2fd31ab3662d74539 +CT= cc378aa11ed0ab292bf70b465f211a021a21f6576fb9e6e8 +TEST= 328 +KEY= 87e78c4b2a568737ac828105ce212267 +IV= cc378aa11ed0ab292bf70b465f211a021a21f6576fb9e6e8 +PT= 12aa81a8bde4fa873e896a80307a23ed591b66cf9d5270ec +CT= 587d4352ec342129ac3a9a879fe691a1d3fb06281e1b5e3e +TEST= 329 +KEY= 2bdd16ccb5b016967f79872dd03a7c59 +IV= 587d4352ec342129ac3a9a879fe691a1d3fb06281e1b5e3e +PT= 792316dea51851d6447cbb608511444b2e0fdc75ae265d71 +CT= f9ff0ac54e291780b895078609567de8addbe218d80e6f72 +TEST= 330 +KEY= 9348114abce66b7ed2a265350834132b +IV= f9ff0ac54e291780b895078609567de8addbe218d80e6f72 +PT= f33b31abcbfcba88ca5f57fd33278ad4b0009e3418a56a01 +CT= ad97c42182b9d9037a01dce4dc5bd79e2be2ca3d956d624f +TEST= 331 +KEY= e949cdae60bdbce0f940af089d597164 +IV= ad97c42182b9d9037a01dce4dc5bd79e2be2ca3d956d624f +PT= 9508a0c77d1be6300e8213c4d60efabd47459e58e6cc0924 +CT= 4c71b3de213cab7b8ee8871c85d9af3635a030eeb262bf85 +TEST= 332 +KEY= 67a14ab2e56413d6cce09fe62f3bcee1 +IV= 4c71b3de213cab7b8ee8871c85d9af3635a030eeb262bf85 +PT= cf58eadabf57001289bfcfda6ce9d70bbcb4e517719eb2db +CT= 61bcab859338287937e69a9bb849b46482f15b1886a4feb7 +TEST= 333 +KEY= 5047d0295d2da7b24e11c4fea99f3056 +IV= 61bcab859338287937e69a9bb849b46482f15b1886a4feb7 +PT= 08544118a9ea456021882874b4cb9458491ae2b19d03221d +CT= 50f6dd66e9ae2948cc7725f5661599266db92eddeadbecc9 +TEST= 334 +KEY= 9c30f5dc3b383e9423a8ea234344dc9f +IV= 50f6dd66e9ae2948cc7725f5661599266db92eddeadbecc9 +PT= 6d342a47bfee025e2967d4cf94d6de7a1088a09376d543bc +CT= 35e36119a9155bae5d4986ce19d13514dd28ad2e236d55e0 +TEST= 335 +KEY= c179731222e90b80fe80470d6029897f +IV= 35e36119a9155bae5d4986ce19d13514dd28ad2e236d55e0 +PT= 984fded8575973e9a2cef3058613507606c5bb9141b2d354 +CT= 3873cbda718d88a51460209b7b07282aa7db416673abae44 +TEST= 336 +KEY= d519538959ee23aa595b066b1382273b +IV= 3873cbda718d88a51460209b7b07282aa7db416673abae44 +PT= 5695effe4e26a0ce506f237dad58f4624bf5d82112b979c3 +CT= e0d62e41ec9134648d1060c4eb3e44242a3ef24b008d193c +TEST= 337 +KEY= 5809334db2d0678e7365f420130f3e07 +IV= e0d62e41ec9134648d1060c4eb3e44242a3ef24b008d193c +PT= 8f6466d1fae3dc7d4fdc40d1e0b86e61dcb454ca5a3c92ef +CT= 4e39078300a3527de7fe4243bc754b575d72d06eadc081f9 +TEST= 338 +KEY= bff7710e0ea52cd92e17244ebecfbffe +IV= 4e39078300a3527de7fe4243bc754b575d72d06eadc081f9 +PT= 9cc9fdf51e5cb9ea51dbaee851ab451eb59381636bb789bb +CT= a151cfbc98c13ddd1c8f58d9c5d8ae367120779ce221d4cc +TEST= 339 +KEY= a37829d7cb7d82ef5f3753d25cee6b32 +IV= a151cfbc98c13ddd1c8f58d9c5d8ae367120779ce221d4cc +PT= e30336027bc14a2ed0539124c3290a1560a9d812692cc33d +CT= baa9272aeca41eafcf7788fccb12c29ed960e7cb7700bc27 +TEST= 340 +KEY= 6c0fa12b006f40718657b4192beed715 +IV= baa9272aeca41eafcf7788fccb12c29ed960e7cb7700bc27 +PT= ea5570703a4aabde1080b6ccd66e11a507b982be3bebefcf +CT= 15ddee58637146fda8efbb307c53b9203e77e0d85f32fba0 +TEST= 341 +KEY= c4e01a1b7c3cf951b82054c174dc2cb5 +IV= 15ddee58637146fda8efbb307c53b9203e77e0d85f32fba0 +PT= 5058d3461c0c9074309c3071198108d3fef29de5f52937a7 +CT= 9073b89af5b18bf1d6aa7b25a471cf0125998362926a5c0b +TEST= 342 +KEY= 124a613ed84d36509db9d7a3e6b670be +IV= 9073b89af5b18bf1d6aa7b25a471cf0125998362926a5c0b +PT= d9306bfe0479ca0b517515a77b9d301904f1d06ec18f54f1 +CT= e60022566defaa33ba531e0d3cfae2ad7ef498852831a28d +TEST= 343 +KEY= a8197f33e4b7d4fde34d4f26ce87d233 +IV= e60022566defaa33ba531e0d3cfae2ad7ef498852831a28d +PT= e786dacded326317e5b0673e79748472bb5dfa182cc0e78c +CT= 0e73c44a959f3eb388ba509a455cf2e69e388c26ffeb4bf7 +TEST= 344 +KEY= 20a32fa9a1eb261b7d75c300316c99c4 +IV= 0e73c44a959f3eb388ba509a455cf2e69e388c26ffeb4bf7 +PT= bd7e96f0c6deebdeb3ff1671de503615c1e84d6d9912e4a7 +CT= 4e7600d061b289ce4ca66e20cc3cad6447eaef5fdd8602ad +TEST= 345 +KEY= 6c0541896dd78b7f3a9f2c5fecea9b69 +IV= 4e7600d061b289ce4ca66e20cc3cad6447eaef5fdd8602ad +PT= 8521054cb6ca0b5f2e9e2a42a919aafca75f445437237640 +CT= d5d76a14df2163b034679378f0ed56be4c71be9f63701bf2 +TEST= 346 +KEY= 5862d2f19d3addc176ee92c08f9a809b +IV= d5d76a14df2163b034679378f0ed56be4c71be9f63701bf2 +PT= 3bb4a4597d04e1e84ba266d8a71b6462ca94f1e9309869c1 +CT= 151ac91996f2fd59ff0307910e7753eeb7a8b781e9105d43 +TEST= 347 +KEY= a761d560934d8e2fc1462541668addd8 +IV= 151ac91996f2fd59ff0307910e7753eeb7a8b781e9105d43 +PT= 16ecd091f7dcc990bccc193bf23b1673b93a4323353aabe0 +CT= b8448360ee128960879a7265b61943af6c39302679da7ddc +TEST= 348 +KEY= 20fba7052554cd80ad7f15671f50a004 +IV= b8448360ee128960879a7265b61943af6c39302679da7ddc +PT= 6bbb9192831c6b5330e1cacd7f92c8fecaf10375e4e6664e +CT= 6005a604c71667ecadfc432dbf3ea25ebe1a700271336bd8 +TEST= 349 +KEY= 8d07e4289a6a6fde136565656e63cbdc +IV= 6005a604c71667ecadfc432dbf3ea25ebe1a700271336bd8 +PT= 00e08610f37c51269b0a6665c752567f558343149c060ddd +CT= 10d786564858064bb3180231c6720230ab5da2dd2fc881ba +TEST= 350 +KEY= 3e1fe6195c186deeb838c7b841ab4a66 +IV= 10d786564858064bb3180231c6720230ab5da2dd2fc881ba +PT= 977ab4405cc1d0b46b7775f5ca2d5fc5a35b47ae34477047 +CT= 4c4f3111b6704d0b516848a98a7236d3b942cfdadae23031 +TEST= 351 +KEY= 6f77aeb0d66a5b3d017a08629b497a57 +IV= 4c4f3111b6704d0b516848a98a7236d3b942cfdadae23031 +PT= 397bb8f5a0cf9de763e945c3f3e9cac2a76d20eb48f24f74 +CT= 868f3c4223d605389e034b43628c686ead3842d6747f1c64 +TEST= 352 +KEY= f174e5f3b4e63353ac424ab4ef366633 +IV= 868f3c4223d605389e034b43628c686ead3842d6747f1c64 +PT= 8f34c664ec24a3ab20f25eff807b5b17fee467cfa5030ccc +CT= ee1db89785af3cc6c98008cfbaca2f3790a8b64c9ee7f9a0 +TEST= 353 +KEY= 38f4ed3c0e2c1c643ceafcf871d19f93 +IV= ee1db89785af3cc6c98008cfbaca2f3790a8b64c9ee7f9a0 +PT= 74ec24f33c1bfa23ba234cc21ffd9523402ccebcb504af68 +CT= 783d25e32ebd90e76a163c69e6a917907f1fb857d4e248eb +TEST= 354 +KEY= 52e2d155e8850bf443f544afa533d778 +IV= 783d25e32ebd90e76a163c69e6a917907f1fb857d4e248eb +PT= 5766e9513f9203e2c1ad2749c75225e71d5b5f1cf50785c3 +CT= 8bd7edd8e403bd0f49ad74e6329a11e5675a054f9a31e6fd +TEST= 355 +KEY= 1b4fa5b3da1f1a1124af41e03f023185 +IV= 8bd7edd8e403bd0f49ad74e6329a11e5675a054f9a31e6fd +PT= cce2342f4b4479c2b55ac19930a701816de7457306e94aac +CT= 7a4197d7e7bc93b30c87a66d805604cfcb9911c495862e6f +TEST= 356 +KEY= 17c803de5a491edeef365024aa841fea +IV= 7a4197d7e7bc93b30c87a66d805604cfcb9911c495862e6f +PT= cdd6c7c3d021d1e9c865a1200ac552eda8848e7e4fe24f95 +CT= f33bcebeb0cf029fa9bbb2cb69ec894377c258ffda87018f +TEST= 357 +KEY= be73b11533a5979d98f408db70031e65 +IV= f33bcebeb0cf029fa9bbb2cb69ec894377c258ffda87018f +PT= 9b1af95e3fc36bab14168b1db4c2401178f2f5848bc6e135 +CT= 2617d8365661a4f619e6e5db6e3a00d112c89fa85a8c6031 +TEST= 358 +KEY= a79554ce5d9f974c8a3c97732a8f7e54 +IV= 2617d8365661a4f619e6e5db6e3a00d112c89fa85a8c6031 +PT= 90df474e02fac31e7486388976a936574890674e8349b09e +CT= 9bfc62cd024504254503b5d4b6be9476aacbf86f7bbe3a64 +TEST= 359 +KEY= e296e11aeb21033a20f76f1c51314430 +IV= 9bfc62cd024504254503b5d4b6be9476aacbf86f7bbe3a64 +PT= 13fb3205033933a760216e15bfe17492c48acfec3b4a88dc +CT= 468687860f50e65823277575f2d7fa7ffbd9454bc7c5ff98 +TEST= 360 +KEY= c1b1946f19f6f945db2e2a5796f4bba8 +IV= 468687860f50e65823277575f2d7fa7ffbd9454bc7c5ff98 +PT= 4f9844ea3b47d644a79b68d43ab8e08f5731ef809906230c +CT= 3966b5148de63d91736470bda47029fb9e837ca4fb11f711 +TEST= 361 +KEY= b2d5e4d2bd86d0be45ad56f36de54cb9 +IV= 3966b5148de63d91736470bda47029fb9e837ca4fb11f711 +PT= 591b0c4e38510315261855c9b7d64aed7ec3a8d84bc9f09a +CT= 8be1005db6f208f2ea9447cee27d7269d3ae3f47d4fecbbd +TEST= 362 +KEY= 5841a31c5ffba2d7960369b4b91b8704 +IV= 8be1005db6f208f2ea9447cee27d7269d3ae3f47d4fecbbd +PT= 3e38ae82bc4b4a86ed4541fa3e2f55c521bfa9dbe9330d77 +CT= 1bb252737291b4ceea137606bf2ace198de550a3f83fd70d +TEST= 363 +KEY= b252d51ae0d16cce1be6391741245009 +IV= 1bb252737291b4ceea137606bf2ace198de550a3f83fd70d +PT= d3f06ecc3e9d796c19c0f373e3f30724daa8348d1158c47c +CT= c9a2ec92aafc1ad7ec602d5ffbc7695c3bcadc452c7b077a +TEST= 364 +KEY= 5e32f8451b160592202ce5526d5f5773 +IV= c9a2ec92aafc1ad7ec602d5ffbc7695c3bcadc452c7b077a +PT= 5f4b01b16cf3f6b97836e75b88f3c083373d4a92e90a8ad6 +CT= 0e3934ba3d6f4a0f059a059784c5c73536590ae4e8281f10 +TEST= 365 +KEY= 5ba8fdd29fd3c2a71675efb685774863 +IV= 0e3934ba3d6f4a0f059a059784c5c73536590ae4e8281f10 +PT= 6c52faa190f46dbd33dc0e6b304d3bfdee460a9f62be0825 +CT= cc5d33b613d539e74add076241784cbe9d7fce0927962715 +TEST= 366 +KEY= 1175fab0deab8e198b0a21bfa2e16f76 +IV= cc5d33b613d539e74add076241784cbe9d7fce0927962715 +PT= 0ea18a0a60822166c78f20c05459246efe28b30fb400a4af +CT= 8d4713295ac7d5bf9bf79bc52bfd102a6e4e21b76a02677b +TEST= 367 +KEY= 8a826175f5569e33e5440008c8e3080d +IV= 8d4713295ac7d5bf9bf79bc52bfd102a6e4e21b76a02677b +PT= 391a1123f8529881def1f54af26615995602241ee26da36c +CT= 02ade050ea446563a152a97a321a9934e2ff0b32e454812a +TEST= 368 +KEY= 2bd0c80fc74c070707bb0b3a2cb78927 +IV= 02ade050ea446563a152a97a321a9934e2ff0b32e454812a +PT= 734f14b68128724e820be7a4d626187b3bc49048068c143b +CT= 4f5ab829f6b671e76cd5c5ee57f410f65b135f12ee6fc88b +TEST= 369 +KEY= 47050de190b817f15ca85428c2d841ac +IV= 4f5ab829f6b671e76cd5c5ee57f410f65b135f12ee6fc88b +PT= c21a487f2c950a0963103eab6f1be12252fe8780d4689f1a +CT= fb91713ada9527a9b69acf5b558a2c48f73a605c1199a96a +TEST= 370 +KEY= f19fc2bac5323bb9ab923474d341e8c6 +IV= fb91713ada9527a9b69acf5b558a2c48f73a605c1199a96a +PT= 804548a30fb89c76c8221c9b374dd8aff8549aab934e5401 +CT= 2fc1afb9e42665e6a2427ca27c438597a09343af584ee21c +TEST= 371 +KEY= 53ddbe18b971be2e0b0177db8b0f0ada +IV= 2fc1afb9e42665e6a2427ca27c438597a09343af584ee21c +PT= 72dcc376df4e806800433b887c7eaeeae41aacb112bba73c +CT= 5722c738c4e0c1428431a631cf2cc0dd02fb833272e9685e +TEST= 372 +KEY= d7ec1829765d7ef309faf4e9f9e66284 +IV= 5722c738c4e0c1428431a631cf2cc0dd02fb833272e9685e +PT= 5b4e0cb652159e3508d5fbd5bdb90be30c521a47fc09967e +CT= 7b5fc1b995a53f3f5f58e2d9cfcb04625884c44600d6f9f3 +TEST= 373 +KEY= 88b4faf0b9967a91517e30aff9309b77 +IV= 7b5fc1b995a53f3f5f58e2d9cfcb04625884c44600d6f9f3 +PT= a4ba328d98ea66d5a411e9e0313aaa380b3da54fb4c3bf31 +CT= 6f81e8cfabb94243b3ce80f375dd8bc2a44297cd7111521d +TEST= 374 +KEY= 3b7a7a03cc4bf153f53ca7628821c96a +IV= 6f81e8cfabb94243b3ce80f375dd8bc2a44297cd7111521d +PT= ff49760099a8ae4d1acc506b6cdb24b14b6e25fc22bc2283 +CT= 2787f0d53e187911938c17abf58d4355048a8d3399cbc42d +TEST= 375 +KEY= a8f66da839c6b206f1b62a5111ea0d47 +IV= 2787f0d53e187911938c17abf58d4355048a8d3399cbc42d +PT= 0e7c26378f83c464910639a91580dd336ce68be0c5524a4d +CT= 390cb22af4b0c8981d9cdc8ecec05591716d9c0506b0032f +TEST= 376 +KEY= b56ab126f706e79780dbb654175a0e68 +IV= 390cb22af4b0c8981d9cdc8ecec05591716d9c0506b0032f +PT= d391ae37a83f887faddbc53b3dc3f7eeac468c032453e753 +CT= 7eec4d87682ba00be699540df637cb5e3560448ec4dfb885 +TEST= 377 +KEY= 53f3e52b01312cc9b5bbf2dad385b6ed +IV= 7eec4d87682ba00be699540df637cb5e3560448ec4dfb885 +PT= 3b147f9af14ad95d13dce766fd83cc5cd39c23542df07d0d +CT= 409ef0e62057dd837f5a108138164d4f1d5b9031753b0166 +TEST= 378 +KEY= 2ca9f5aa39276186a8e062eba6beb78b +IV= 409ef0e62057dd837f5a108138164d4f1d5b9031753b0166 +PT= dd3cf604f788dd1209e93362efdb25984281f9edd15c682a +CT= 1b1696b1b1057f11bcb5832c60449877a1b3b40723b42a41 +TEST= 379 +KEY= 901c76865963f9f10953d6ec850a9dca +IV= 1b1696b1b1057f11bcb5832c60449877a1b3b40723b42a41 +PT= 96ec5c4e1557e085b324110b323cedf54381ab9f8478ceb0 +CT= 9d89735708ef7ed9c451071700d2ddce58f847add18e5c25 +TEST= 380 +KEY= 544d719159b1243f51ab91415484c1ef +IV= 9d89735708ef7ed9c451071700d2ddce58f847add18e5c25 +PT= 228d51bd1d96ce6241c20c541b49a61ba013891d2f924dc0 +CT= 67d4176c1468246508d31a9551165d5486d7028415f59bf7 +TEST= 381 +KEY= 5c9e6b0408a7796bd77c93c541715a18 +IV= 67d4176c1468246508d31a9551165d5486d7028415f59bf7 +PT= b09bcaa6e5e6f5c450f30b9ac5c79fb68eceb2a649511ec4 +CT= abce5c8b97c569802888d651a35357b0f4fe7f3fb8bff63c +TEST= 382 +KEY= 7416bd55abf42edb2382ecfaf9ceac24 +IV= abce5c8b97c569802888d651a35357b0f4fe7f3fb8bff63c +PT= a6ff8cec8f1b802bcbee1bd934f7ccf68f93db386c02beac +CT= 460f2383a6dcfa494e2e300d49aecc83abed8443001514fe +TEST= 383 +KEY= 3a388d58e25ae258886f68b9f9dbb8da +IV= 460f2383a6dcfa494e2e300d49aecc83abed8443001514fe +PT= e988dc3d13160fbe84ca95e8dd76cdec6d44a26b718b141a +CT= 8eb0d28ad6db55d9578117325d677617cc72b368a78e58b6 +TEST= 384 +KEY= 6db99a6abf3d944f441ddbd15e55e06c +IV= 8eb0d28ad6db55d9578117325d677617cc72b368a78e58b6 +PT= 287bc67024dd0ec8b45c73be8c4088d8769c6642e723a827 +CT= 55671753bed88f111c8f44da48dbbf1f61ddbcce6a3f668b +TEST= 385 +KEY= 7136deb0f7e62b5025c0671f346a86e7 +IV= 55671753bed88f111c8f44da48dbbf1f61ddbcce6a3f668b +PT= a92aadc6bf72f83f69cec8aa6f0c6609054ffcb3e1d7dd93 +CT= db1fd8c9da895f0d77a61e616a58100d5019af967b886046 +TEST= 386 +KEY= 0690c0d19dbe3b5d75d9c8894fe2e6a1 +IV= db1fd8c9da895f0d77a61e616a58100d5019af967b886046 +PT= 8446b63d63f56890686e6ba99d2fa65b14c9ab4d57710c6d +CT= ccea6ad972ce57e0eb938f8eec0b0e37776aec2bdbdefb5d +TEST= 387 +KEY= ed034f5f71b5356a02b324a2943c1dfc +IV= ccea6ad972ce57e0eb938f8eec0b0e37776aec2bdbdefb5d +PT= a379fe254a697186bb939bca755440ca5ccd94975bb29364 +CT= 5f0f1d7c9c8e58e379d52c31f1ae47d161c505fcb382664d +TEST= 388 +KEY= 94d6636e801b72bb6376215e27be7bb1 +IV= 5f0f1d7c9c8e58e379d52c31f1ae47d161c505fcb382664d +PT= 940269bcc70cac9beb3e4d613f9e749822db3967409df273 +CT= 7e0b28479adf646c8b7d7f0d7e1665d5a2c85a4f5f1c3574 +TEST= 389 +KEY= 1fab1c63fe0d176ec1be7b1178a24ec5 +IV= 7e0b28479adf646c8b7d7f0d7e1665d5a2c85a4f5f1c3574 +PT= 3113877d97b38485d858e970f9bbdae517db358c85cded69 +CT= 80061b2d6f4c80090409eeef1c8e16a37965b646d00be992 +TEST= 390 +KEY= 1ba2f28ce28301cdb8dbcd57a8a9a757 +IV= 80061b2d6f4c80090409eeef1c8e16a37965b646d00be992 +PT= 9fe75e32f2069da25d214b3f9ba1ead05cb2b8ce05cd928b +CT= d5a4e2413ad1abeeaa8c3ff30b7afb4ef641940162d31519 +TEST= 391 +KEY= b12ecd7fe9f9fa834e9a5956ca7ab24e +IV= d5a4e2413ad1abeeaa8c3ff30b7afb4ef641940162d31519 +PT= 015a8cd5c960f67aea6e9d331aec77f3f33e639ce614f34e +CT= 2ad1599359d8c18acb1c3ece8d7e8472911a477f58a39213 +TEST= 392 +KEY= 7a32f3b164877ef1df801e2992d9205d +IV= 2ad1599359d8c18acb1c3ece8d7e8472911a477f58a39213 +PT= d789f069d4967b0e1f437d270c5b24c88bf2bb0a1471377c +CT= 5fd07524dccb902ad5e1dbcf1c44ded1cd5e668a3e44da56 +TEST= 393 +KEY= afd3287e78c3a02012de78a3ac9dfa0b +IV= 5fd07524dccb902ad5e1dbcf1c44ded1cd5e668a3e44da56 +PT= c6b5f20e3a8276f0e0501e02471e2edda861bccd60725299 +CT= 3b156351f581c28d54977e808ef4cfd3d51c3f6d71e12f41 +TEST= 394 +KEY= fb4456fef6376ff3c7c247cedd7cd54a +IV= 3b156351f581c28d54977e808ef4cfd3d51c3f6d71e12f41 +PT= 2fc4b1934fc849615a1dbfa57bc6c25f9f6506c06a04e0b5 +CT= 21c441ba80fce1676fc675e48e2808a652688a4fd5d8f64a +TEST= 395 +KEY= 9482231a781f675595aacd8108a42300 +IV= 21c441ba80fce1676fc675e48e2808a652688a4fd5d8f64a +PT= 35d81b8452266330b0e43fda27620a0a30c1f0368c3706b8 +CT= 154f6c78ffe9ceaaaa773bbb914ffd21023d67dea8746b55 +TEST= 396 +KEY= 3ef518a1e9509a749797aa5fa0d04855 +IV= 154f6c78ffe9ceaaaa773bbb914ffd21023d67dea8746b55 +PT= 80f94bce664fd33572c545a0fed3b12b0f63e96e6ad6df1c +CT= c6d07569be707668697cf162024fbfbad2673bec3e440b19 +TEST= 397 +KEY= 5789e9c3eb1f25ce45f091b39e94434c +IV= c6d07569be707668697cf162024fbfbad2673bec3e440b19 +PT= 2afc0e126e47cb9ef19d0a691a62e16932c7f6c539b44979 +CT= 6bc661a6027b7795be75b47b179403cfa14386b8f4d11fab +TEST= 398 +KEY= e9fc5db8fc8b2601e4b3170b6a455ce7 +IV= 6bc661a6027b7795be75b47b179403cfa14386b8f4d11fab +PT= 026f36b145b6ef2f392ec75f9cfb5cd8c483cd4db163f47b +CT= d0ac61b65198ff5756a1e952483ec4ef0696837413ba9039 +TEST= 399 +KEY= bf5db4eab4b5e2eee225947f79ffccde +IV= d0ac61b65198ff5756a1e952483ec4ef0696837413ba9039 +PT= e7bc6a5d80cbc1cf34a050119d0201b0ce484efda1337036 +CT= 238d414e1dbf25be5f1546c3dac07c616b6aacfe870d95a5 diff --git a/flint/test/testvals/cbcme66.txt b/flint/test/testvals/cbcme66.txt new file mode 100644 index 0000000..25e7359 --- /dev/null +++ b/flint/test/testvals/cbcme66.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= e5add1805485e1f290a465265e37b5073db7d0597d8a7d78 +TEST= 1 +KEY= e5add1805485e1f290a465265e37b5073db7d0597d8a7d78 +IV= e5add1805485e1f290a465265e37b5073db7d0597d8a7d78 +PT= b29fc19be86ce9c61e86591124c02357fd89b4dd0f275372 +CT= f1f31097641de16bd80a00fd180f2fb1e6a86667cd5e6d23 +TEST= 2 +KEY= 145ec1173098009948ae65db46389ab6db1fb63eb0d4105b +IV= f1f31097641de16bd80a00fd180f2fb1e6a86667cd5e6d23 +PT= 7d11b6119175e95941dd1ffff1ea55ffb9711b6a4f65f2d1 +CT= 24c126826c6408ec94f87453f2add81713c7077d698866db +TEST= 3 +KEY= 309fe7955cfc0875dc561188b49542a1c8d8b143d95c7680 +IV= 24c126826c6408ec94f87453f2add81713c7077d698866db +PT= ddab53308cdf9fc68cfaa4652233c4534b03fefe9631df01 +CT= cd7d7ff637e01b169038c9866a4f96aa5d3f85047b3a4941 +TEST= 4 +KEY= fde298636b1c13634c6ed80ededad40b95e73447a2663fc1 +IV= cd7d7ff637e01b169038c9866a4f96aa5d3f85047b3a4941 +PT= c5e6de913e5338d8700649413c173552703fba4dec55635d +CT= 0f3eb65b507f8c4011bcb702356f92fa15340cb3c7f81a86 +TEST= 5 +KEY= f2dc2e383b639f235dd26f0cebb546f180d338f4659e2547 +IV= 0f3eb65b507f8c4011bcb702356f92fa15340cb3c7f81a86 +PT= bd2b337219a73ab1660388cd132aad21aad7de9474014f4f +CT= 812b52eaf2378c086e6afaaf191d48e83579b177a58a6ae2 +TEST= 6 +KEY= 73f77cd2c954132b33b895a3f2a80e19b5aa8983c0144fa5 +IV= 812b52eaf2378c086e6afaaf191d48e83579b177a58a6ae2 +PT= f33dd98668dbe18feaa5d0e6a35f74b76477f225fce90e29 +CT= 47b6886783db1a4ea385e424626a7ebbb68e4794c1e57beb +TEST= 7 +KEY= 3441f4b54a8f0965903d718790c270a20324ce1701f1344e +IV= 47b6886783db1a4ea385e424626a7ebbb68e4794c1e57beb +PT= 60d3955e11af6ddd8170e079aa7e41d8a545b017e3108f42 +CT= 93e9b4c1e2d963d7d6d068595ee714052f948541cf1dac46 +TEST= 8 +KEY= a7a84074a8566ab246ed19dece2564a72cb04b56ceec9808 +IV= 93e9b4c1e2d963d7d6d068595ee714052f948541cf1dac46 +PT= 9f26976ba603326af37d6459a941a5e49b56378b74a0bdc0 +CT= e505c184fe5b3dd2153a2e00989c867a7475be6be309e002 +TEST= 9 +KEY= 42ad81f0560d576053d737de56b9e2dd58c5f53d2de5780a +IV= e505c184fe5b3dd2153a2e00989c867a7475be6be309e002 +PT= f4ecdc95e203bceaa9fe4832bc67e807bf4d62103be14b82 +CT= 7a6514ea6507d0b75036cf622023f3d308e3e250d091ecb4 +TEST= 10 +KEY= 38c8951a330a87d703e1f8bc769a110e5026176dfd7494be +IV= 7a6514ea6507d0b75036cf622023f3d308e3e250d091ecb4 +PT= f5c12fc6959419932f61ad62e5faec19f39cc60c61c88508 +CT= eaec6f944eb26cdc5be73228133cf264847cdb8172eb9f17 +TEST= 11 +KEY= d224fa8e7db8eb0b5806ca9465a6e36ad45accec8f9f0ba9 +IV= eaec6f944eb26cdc5be73228133cf264847cdb8172eb9f17 +PT= 365869a9da1d3a41d16623a2716c2ae7a39113315489c40a +CT= 83a5f336ae2dd1ca232c6aa16054780c408e1e70b5faabd2 +TEST= 12 +KEY= 518109b8d3953ac17b2aa03505f29b6694d4d29c3a65a07b +IV= 83a5f336ae2dd1ca232c6aa16054780c408e1e70b5faabd2 +PT= 2da38f06eb7ea6db4e5bb4f984a19bdf70b67f3b398a9ce1 +CT= d8048033e3d2589f341cc840b3ad255217d2e4ecf46dfe0b +TEST= 13 +KEY= 8985898b3047625e4f366875b65fbe3483063670ce085e70 +IV= d8048033e3d2589f341cc840b3ad255217d2e4ecf46dfe0b +PT= f09efa46c30332886d122dcfbe450105e9a16151a6796d79 +CT= e1e5a72282599d1a2e6ecc0ba89817433d44eed456e65a23 +TEST= 14 +KEY= 68602ea9b21eff446158a47e1ec7a977be42d8a498ee0453 +IV= e1e5a72282599d1a2e6ecc0ba89817433d44eed456e65a23 +PT= c686b2bc5050921ce0b5ee807ad7926521ae792abd06f512 +CT= 2cb3445e97d500c3339ec2b64a7966995323360cd137ec48 +TEST= 15 +KEY= 44d36af725cbff8752c666c854becfeeed61eea849d9e81b +IV= 2cb3445e97d500c3339ec2b64a7966995323360cd137ec48 +PT= 93e836dfa6bacfe847738f3574a6f714664d4f1a783b886c +CT= 82f08839974302d881c3381c43dbd238f1efcf7d96ab8b47 +TEST= 16 +KEY= c623e2ceb288fd5fd3055ed417651dd61c8e21d5df72635c +IV= 82f08839974302d881c3381c43dbd238f1efcf7d96ab8b47 +PT= bfde7bcd523c0904769960b088664a8bc4ead8b5fe3ca310 +CT= a2ad42cbe6160f71d082e726ff994261593e7e617edec66c +TEST= 17 +KEY= 648ea005549ef22e0387b9f2e8fc5fb745b05fb4a1aca530 +IV= a2ad42cbe6160f71d082e726ff994261593e7e617edec66c +PT= a61cbf773da0b1e40cbe8cb350cab15ed03ee27766bc12e6 +CT= 608b4c70b65f127f7b3fb906a3c2c74f0d3b16af7f1da580 +TEST= 18 +KEY= 0405ec75e2c1e05178b800f44b3e98f8488b491bdeb100b0 +IV= 608b4c70b65f127f7b3fb906a3c2c74f0d3b16af7f1da580 +PT= 8ca46de7424b9687eb4b69b819d6c76e0f90406f32fa1a3c +CT= df0685ed07a1a1401892b887ef967e59225316df08a2ba06 +TEST= 19 +KEY= db036998e5604111602ab873a4a8e6a16ad85fc4d613bab6 +IV= df0685ed07a1a1401892b887ef967e59225316df08a2ba06 +PT= d3091968dfe390c5f3568bb795e521f4fe9cdd923b407d7b +CT= 3cd0121b4746898d9f86617ff53599db4a9701fcd486b6fc +TEST= 20 +KEY= e7d37b83a226c89cffacd90c519d7f7a204f5e3802950c4a +IV= 3cd0121b4746898d9f86617ff53599db4a9701fcd486b6fc +PT= 1cf43ddd0bd76ea9f998231fa66b558eefe4fa7aa4133a35 +CT= f55043268c08aca3e87f35a856b72e3dee1c1839282d3d08 +TEST= 21 +KEY= 128338a52e2e643f17d3eca4072a5147ce5346012ab83142 +IV= f55043268c08aca3e87f35a856b72e3dee1c1839282d3d08 +PT= 6bc4a5eb43c213bffe3bf6c90d1d1495a5ec1a121ad6a4c6 +CT= d0dbe2cc9faf82a9d2d1406f84f26878112c81b036a57205 +TEST= 22 +KEY= c258da69b181e696c502accb83d8393fdf7fc7b11c1d4347 +IV= d0dbe2cc9faf82a9d2d1406f84f26878112c81b036a57205 +PT= 31761e728f9eae35573eb576197ce7a3257dd48d6c450953 +CT= cc24d536992b15f79472d518e506d5f36ecc3c6ead90f923 +TEST= 23 +KEY= 0e7c0f5f28aaf361517079d366deecccb1b3fbdfb18dba64 +IV= cc24d536992b15f79472d518e506d5f36ecc3c6ead90f923 +PT= a7f9ee4157b3a85b2ce9f20756a9db476ce97afba76e8a42 +CT= b25bcd4478b3e6d9dae3e13556839f4f7d04232e96fbec6d +TEST= 24 +KEY= bc27c21b501915b88b9398e6305d7383ccb7d8f127765609 +IV= b25bcd4478b3e6d9dae3e13556839f4f7d04232e96fbec6d +PT= 6b3eb4f5cc306744f54b3fb29ccfb5965e0c67cdee2d904f +CT= b0a87c566825095cc9b1c489cc0b90b95da11afa34cac0a7 +TEST= 25 +KEY= 0c8fbe4d383c1ce442225c6ffc56e33a9116c20b13bc96ae +IV= b0a87c566825095cc9b1c489cc0b90b95da11afa34cac0a7 +PT= 926fc233d1f6cc838331aa4663d997ab43f907cde90dfff1 +CT= ba18c1bd2ebf8a830ae4bc7975d04e2e8e851cc33811bddf +TEST= 26 +KEY= b6977ff01683966748c6e0168986ad141f93dec82bad2b71 +IV= ba18c1bd2ebf8a830ae4bc7975d04e2e8e851cc33811bddf +PT= a0ac625f56bd8e85e5955203336e9dcb8b91c001504f23b2 +CT= cffbac31bb4151d495b5a48a940fbabe890815c6b2dc7875 +TEST= 27 +KEY= 796cd3c1adc2c7b3dd73449c1d8917aa969bcb0e99715304 +IV= cffbac31bb4151d495b5a48a940fbabe890815c6b2dc7875 +PT= ffe9645ec14f8215d1f08a922e5f2eea0209be96bf68d07f +CT= e3caac9f9c204a43714da56b528d01d6c49a08c93ea1ba5d +TEST= 28 +KEY= 9aa67f5e31e28df0ac3ee1f74f04167c5201c3c7a7d0e959 +IV= e3caac9f9c204a43714da56b528d01d6c49a08c93ea1ba5d +PT= 68ba9bbb1f25fc5fc9478ef80983a42d0dbf42ab8caadc63 +CT= 2567c2c672ef0a6e1a7667034f664bc5b80df41564cbd628 +TEST= 29 +KEY= bfc1bd98430d879eb64886f400625db9ea0c37d2c31b3f71 +IV= 2567c2c672ef0a6e1a7667034f664bc5b80df41564cbd628 +PT= 990f2c185c02adc8fab59fca8f164d907458edd3c1f29dee +CT= 1628b36d5ee621613c2dbef39f7678ffa25aacb5365b80f9 +TEST= 30 +KEY= a9e90ef51deba6ff8a6538079f14254648569b67f540bf88 +IV= 1628b36d5ee621613c2dbef39f7678ffa25aacb5365b80f9 +PT= e8911c170052d7122a2df7367cc0fee96db822ba5044f260 +CT= de54b221309c0656e356a2df9fca57b88e36dd7665b9aec9 +TEST= 31 +KEY= 77bdbcd42d77a0a969339ad800de72fec660461190f91141 +IV= de54b221309c0656e356a2df9fca57b88e36dd7665b9aec9 +PT= 8fe0446cac9a5fe2ffdc8ebdc28a8d67cddf5f098baf8ecc +CT= ddc0efcf025e46a8ae68d57f4193e4d598c4cbbe21844028 +TEST= 32 +KEY= aa7d531b2f29e601c75b4fa7414d962b5ea48dafb17d5169 +IV= ddc0efcf025e46a8ae68d57f4193e4d598c4cbbe21844028 +PT= 6104337aaf97bff7089a6dae9975b565c261d8da7bf83715 +CT= 44f510ca7e85753dde2f5abfc63c907829caad9b0941f385 +TEST= 33 +KEY= ee8843d151ac933c1974151887710653776e2034b83ca2ec +IV= 44f510ca7e85753dde2f5abfc63c907829caad9b0941f385 +PT= 7d2fb9ca077c55aac7dbabb4f14e9981720d0e8b73ef0978 +CT= 21ad04702de1b9a57aac07e59f2699711bd04ec8177d336e +TEST= 34 +KEY= cf2547a17c4d2a9963d812fd18579f226cbe6efcaf419182 +IV= 21ad04702de1b9a57aac07e59f2699711bd04ec8177d336e +PT= 9f8ec0afa5a6c0a9ff1c514016e4a5a5c46ed97bb76c3bc0 +CT= 765d4321ba40cacd4039f3c19930d89087fb09840911bd79 +TEST= 35 +KEY= b9780480c60de05423e1e13c816747b2eb456778a6502cfb +IV= 765d4321ba40cacd4039f3c19930d89087fb09840911bd79 +PT= 56c0d48faae7f41e12c6e4beaccdb0bcddd3b38e9e3bf0e6 +CT= 49bc27bd555eac7ca9d96c4ef117c9c9033fb518c3ed633b +TEST= 36 +KEY= f0c4233d93534c288a388d7270708e7be87ad26065bd4fc0 +IV= 49bc27bd555eac7ca9d96c4ef117c9c9033fb518c3ed633b +PT= 74a985c36b945c7d462549ebcef3f000eb609b788cb520af +CT= 65ee70d98c08511f7a18cac5193e38260b00d85a7c3a2380 +TEST= 37 +KEY= 952a53e41f5b1d37f02047b7694eb65de37a0a3a19876c40 +IV= 65ee70d98c08511f7a18cac5193e38260b00d85a7c3a2380 +PT= f36638aaea363e84dd05bffcd7b91d22ddc5b4f489659a5c +CT= a81356ee8fd0709fd17e380501ca97500e5158548f760ce3 +TEST= 38 +KEY= 3d39050a908b6da8215e7fb26884210ded2b526e96f160a3 +IV= a81356ee8fd0709fd17e380501ca97500e5158548f760ce3 +PT= d184dd498d5b17b2b0cb5e42d03376a3af8b47cb2916b7d0 +CT= a3b7cbcf7914fdbd9372ff4483e28b9ca278cde8e2f76d3b +TEST= 39 +KEY= 9e8ecec5e99f9015b22c80f6eb66aa914f539f8674060d98 +IV= a3b7cbcf7914fdbd9372ff4483e28b9ca278cde8e2f76d3b +PT= f33e370e699d8384d8e572523eb6de6e490b1344c694d1ba +CT= 255e3c9f6c937e1dc26dd5146baca82b4d9be0e6cae7df8a +TEST= 40 +KEY= bbd0f25a850cee08704155e280ca02ba02c87f60bee1d212 +IV= 255e3c9f6c937e1dc26dd5146baca82b4d9be0e6cae7df8a +PT= 1e57e39598ed87422f57678d21d31489989f721d90383b80 +CT= a00467b58516763499433bd229741309feba1a9f3d82d056 +TEST= 41 +KEY= 1bd495ef001a983ce9026e30a9be11b3fc7265ff83630244 +IV= a00467b58516763499433bd229741309feba1a9f3d82d056 +PT= 8496216298ecdd0caf23ae21cf91aeec9069c029e985f345 +CT= a0fec5996809c3985d1a98b32ed40998b0f2a4123f301934 +TEST= 42 +KEY= bb2a507668135ba4b418f683876a182b4c80c1edbc531b70 +IV= a0fec5996809c3985d1a98b32ed40998b0f2a4123f301934 +PT= 656e81b0c6d1848ac94ea3451ef9925a4056bfa2d3d0cbd8 +CT= d51c6acb23863cb34c218888c07053cc15f605a67acbe0dd +TEST= 43 +KEY= 6e363abd4b956717f8397e0b471a4be75976c44bc698fbad +IV= d51c6acb23863cb34c218888c07053cc15f605a67acbe0dd +PT= d9af41d26923b978485c14d3fd2e9c114a85495f0ed43a7e +CT= ea53509018e7903ce81ef1a882a9f8501413a74abed973ab +TEST= 44 +KEY= 84656a2d5372f72b10278fa3c5b3b3b74d65630178418806 +IV= ea53509018e7903ce81ef1a882a9f8501413a74abed973ab +PT= f28600c93ea6ed2670e7adb07fa3614a9f2cc5067be6b39c +CT= 445b80d82ffc25608e49d47e5820fa2ea3f4d63f2c1ca624 +TEST= 45 +KEY= c03eeaf57c8ed24b9e6e5bdd9d934999ee91b53e545d2e22 +IV= 445b80d82ffc25608e49d47e5820fa2ea3f4d63f2c1ca624 +PT= 2fb21833ade0287395cc727514f2fe65cb30c568fdd716d4 +CT= fe2604ab1dec2ef27ffe36bf3b1eb5c30ef9d700e2fea939 +TEST= 46 +KEY= 3e18ee5e6162fcb9e1906d62a68dfc5ae068623eb6a3871b +IV= fe2604ab1dec2ef27ffe36bf3b1eb5c30ef9d700e2fea939 +PT= 2c389371416bbabaca48aac3a48d7cb395242954c0c53a57 +CT= 27b1b8125f39341f4187ab562ff5c9c528b895d46cead35b +TEST= 47 +KEY= 19a9564c3e5bc8a6a017c6348978359fc8d0f7eada495440 +IV= 27b1b8125f39341f4187ab562ff5c9c528b895d46cead35b +PT= 07d13d0c002308c0af64105a910291e994ac392ba98e03ab +CT= 9cccfe9e877a5f03e73aa4e516414f7addbcadad7002f2c9 +TEST= 48 +KEY= 8565a8d2b92197a5472d62d19f397ae5156c5a47aa4ba689 +IV= 9cccfe9e877a5f03e73aa4e516414f7addbcadad7002f2c9 +PT= 335b8c12bbd28dd69efb1abe6076eb758cc3c24569e53293 +CT= 81c741db7abd74cfe0519ecc1c83789515945fb0aea6dbda +TEST= 49 +KEY= 04a2e909c39ce36aa77cfc1d83ba027000f805f704ed7d53 +IV= 81c741db7abd74cfe0519ecc1c83789515945fb0aea6dbda +PT= bd146de60f84d7d71c4c0e9ee2a30da182c889071182bf92 +CT= a685dd6c99bcdd86a6cb80d3a5f03cccceb20598b020b6a8 +TEST= 50 +KEY= a22734655a203eec01b77cce264a3ebcce4a006fb4cdcbfb +IV= a685dd6c99bcdd86a6cb80d3a5f03cccceb20598b020b6a8 +PT= 926c58a92581285d2fac875486ae4f2338b5ab38891c3922 +CT= dfd74c1b76775733b9498b7ccd8486edfab1c294d52736e1 +TEST= 51 +KEY= 7df0787e2c5769dfb8fef7b2ebceb85134fbc2fb61eafd1a +IV= dfd74c1b76775733b9498b7ccd8486edfab1c294d52736e1 +PT= 1b7f6ec478e64eda96a37f1c13c19be2fae9f0d0da836cdd +CT= fe595b96c627edc2d141841a44edae1c77233840b7253244 +TEST= 52 +KEY= 83a923e8ea70841d69bf73a8af23164d43d8fabbd6cfcf5e +IV= fe595b96c627edc2d141841a44edae1c77233840b7253244 +PT= 4b0f693bae7a08a701bdae454789b0cab9e928ef56261feb +CT= a03bf2afb770882dc428d8e3cdfc48e6966a1803d430ad7c +TEST= 53 +KEY= 2392d1475d000c30ad97ab4b62df5eabd5b2e2b802ff6222 +IV= a03bf2afb770882dc428d8e3cdfc48e6966a1803d430ad7c +PT= dd4886c1f543a49defbdca926976ac0e6dec68c2375e01fc +CT= 4168b11265d6942a0dc745de36c3c5289856b896b3826c4c +TEST= 54 +KEY= 62fa605538d6981aa050ee95541c9b834de45a2eb17d0e6e +IV= 4168b11265d6942a0dc745de36c3c5289856b896b3826c4c +PT= 20a2b7c09908f5dccd9481943ae30f10969093689707e04f +CT= 923df74a4cec073291a3e7224df9ea8048fac674a26acef8 +TEST= 55 +KEY= f0c7971f743a9f2831f309b719e57103051e9c5a1317c096 +IV= 923df74a4cec073291a3e7224df9ea8048fac674a26acef8 +PT= 1742ec5cf8e45716d89ec2479210a5b5632f8acf36e34947 +CT= cb2ef4adaf4fe586065fab888c5866d62520484b5743006c +TEST= 56 +KEY= 3be963b2db757aae37aca23f95bd17d5203ed4114454c0fa +IV= cb2ef4adaf4fe586065fab888c5866d62520484b5743006c +PT= ac91757044e3df8f2d6a2085a3731514d5463439207b0e0e +CT= 03eff3e4a2ff08bbbda43f5621c0b1f8762a5f1367b26535 +TEST= 57 +KEY= 38069056798a72158a089d69b47da62d56148b0223e6a5cf +IV= 03eff3e4a2ff08bbbda43f5621c0b1f8762a5f1367b26535 +PT= ad9f437aa449ba06da0eb0f8b67025ad8e8261c53ce62a9e +CT= 5851b4fbbeff0408438395de29a9edea85084341c6c568a7 +TEST= 58 +KEY= 605724adc775761dc98b08b79dd44bc7d31cc843e523cd68 +IV= 5851b4fbbeff0408438395de29a9edea85084341c6c568a7 +PT= 304b4dfdd957a6fae40e031a065ed3473564b6f8d10ecc0c +CT= 1148c7e79fd9fcf451a23f48545847016687e46c44d6ea83 +TEST= 59 +KEY= 711fe34a58ac8ae9982937ffc98c0cc6b59b2c2fa1f527eb +IV= 1148c7e79fd9fcf451a23f48545847016687e46c44d6ea83 +PT= c22f065c981512b9142df3428d46c4401bd38c5c6725cc91 +CT= 25800e207719911be0ec14e81662dc856e69c6005cc5dc97 +TEST= 60 +KEY= 549fed6a2fb51bf278c52317dfeed043dbf2ea2ffd30fb7c +IV= 25800e207719911be0ec14e81662dc856e69c6005cc5dc97 +PT= d9177d1c1780b221171cb5f4f91ca3b60b55d37a7255abc7 +CT= d1ec1bc9e62e04dd0d742ac368e3dd9044f937dd6589dce3 +TEST= 61 +KEY= 8573f6a3c99b1f2f75b109d4b70d0dd39f0bddf298b9279f +IV= d1ec1bc9e62e04dd0d742ac368e3dd9044f937dd6589dce3 +PT= e1cc1c5821f8128f1a7ad14e7a70860c1bb0bb5653dd05b7 +CT= 81e2e58f5407202be0fa951810b6ad301f06fec133ea1056 +TEST= 62 +KEY= 0491132c9d9c3f04954b9ccca7bba0e3800d2333ab5337c9 +IV= 81e2e58f5407202be0fa951810b6ad301f06fec133ea1056 +PT= 6e837d46b0a85ebc78f6fef08a0d430b4956a852707c5450 +CT= 58d2100b7246d682570e1335d7fa8ad4d84e595c3e88a967 +TEST= 63 +KEY= 5c430327efdae986c2458ff970412a3758437a6f95db9eae +IV= 58d2100b7246d682570e1335d7fa8ad4d84e595c3e88a967 +PT= a3b661b5aebb685b6229a934cc30ea021c40a7687edde040 +CT= 7bfa0a6e70be12520188dcadeda257024d6dd23af7f4f813 +TEST= 64 +KEY= 27b909499f64fbd4c3cd53549de37d35152ea855622f66bd +IV= 7bfa0a6e70be12520188dcadeda257024d6dd23af7f4f813 +PT= 4e234f6be44894c3e4d83c943a0b6d729472ef39cf62449d +CT= d705250ad44941db44ed7468aaa88e6e506f045107dfe281 +TEST= 65 +KEY= f0bc2c434b2dba0f8720273c374bf35b4541ac0465f0843c +IV= d705250ad44941db44ed7468aaa88e6e506f045107dfe281 +PT= a1b3194066e6e8d3d1076405e1558fd680bc3d8bd8eceba8 +CT= 6df6439dc58e6e964892cdbc3b3e13063039428acf4ad40b +TEST= 66 +KEY= 9d4a6fde8ea3d499cfb2ea800c75e05d7578ee8eaaba5037 +IV= 6df6439dc58e6e964892cdbc3b3e13063039428acf4ad40b +PT= ec5127aa525c65470af1958e72a1767a83e97c7f8cfe5db7 +CT= cf391ad4a197bb8b8c2d40d543e0e8d502ad92256dfc2d79 +TEST= 67 +KEY= 5273750a2f346f12439faa554f95088877d57cabc7467d4e +IV= cf391ad4a197bb8b8c2d40d543e0e8d502ad92256dfc2d79 +PT= 0cf583735bf4cf2840aba86228d79cf69f99f8e78d65408e +CT= fd0ec051fb64d2ac31295c197ca0136104ee2ff87e4f1a1c +TEST= 68 +KEY= af7db55bd450bdbe72b6f64c33351be9733b5353b9096752 +IV= fd0ec051fb64d2ac31295c197ca0136104ee2ff87e4f1a1c +PT= e05c655014f089568591bcf4ebcfcbb4e0af7655ffd11a44 +CT= 312e13bf7d712e0d5a425a3d6f1e92698b344974b6db5b30 +TEST= 69 +KEY= 9e53a6e4a92193b328f4ac715c2b8980f80f1a270fd23c62 +IV= 312e13bf7d712e0d5a425a3d6f1e92698b344974b6db5b30 +PT= 797c980ac3b7a1b406713d1051dca78da1dcd764cc5d71c8 +CT= e97d1eba9734a6c7163efcf1f4c910f645503c6a4314cbec +TEST= 70 +KEY= 772eb85e3e1535743eca5080a8e29976bd5f264d4cc6f78e +IV= e97d1eba9734a6c7163efcf1f4c910f645503c6a4314cbec +PT= 95d2934a868c21f9cef9c909b0b30192a1ad901df3596ee3 +CT= 4688ce26219845b6278c733bd612eb76a1fcfa92d26d3c8d +TEST= 71 +KEY= 31a676781f8d70c2194623bb7ef072001ca3dcdf9eabcb03 +IV= 4688ce26219845b6278c733bd612eb76a1fcfa92d26d3c8d +PT= cd6617022476508ed32126200eebe0a58ca4f0d830ee7e83 +CT= d591a995d38484ea1ac7d457021144b71e9f667b062a130c +TEST= 72 +KEY= e437dfedcc09f4280381f7ec7ce136b7023cbaa49881d80f +IV= d591a995d38484ea1ac7d457021144b71e9f667b062a130c +PT= 7c22e920a4d336a8742f13152097e807e80644693d7dc28b +CT= 49522289787775c70c40a1f8a356b520e799cf7fce1ba697 +TEST= 73 +KEY= ad65fd64b47e81ef0fc15614dfb78397e5a575db569a7e98 +IV= 49522289787775c70c40a1f8a356b520e799cf7fce1ba697 +PT= f738394086d040c5057db7391be0fa681dca4833a77dbbc3 +CT= 4d85d7a6d1f32c2159ebf228849254724588864cd673f0ca +TEST= 74 +KEY= e0e02ac2658dadce562aa43c5b25d7e5a02df39780e98e52 +IV= 4d85d7a6d1f32c2159ebf228849254724588864cd673f0ca +PT= f274ef15d69c0e2e6221ddeab910984123c472995650fce3 +CT= 1aff94f2a584e6f4118bf98dce18edc93ae10fbbb98ca90d +TEST= 75 +KEY= fa1fbe30c0094b3a47a15db1953d3a2c9accfc2c3965275f +IV= 1aff94f2a584e6f4118bf98dce18edc93ae10fbbb98ca90d +PT= daedf4b579912f1a85cd7af20bb989d78785964084923078 +CT= 6b97afecc12f0cfe4afd49573b767f101ef3b3dd4c6cdc69 +TEST= 76 +KEY= 918811dc012647c40d5c14e6ae4b453c843f4ff17509fb36 +IV= 6b97afecc12f0cfe4afd49573b767f101ef3b3dd4c6cdc69 +PT= 63c105e38213d2d5e9cef3a0dfd996ecc6cc546c1e1e8c70 +CT= c177e4b82ce83956970eafebf9815bc413917d09c1242a08 +TEST= 77 +KEY= 50fff5642dce7e929a52bb0d57ca1ef897ae32f8b42dd13e +IV= c177e4b82ce83956970eafebf9815bc413917d09c1242a08 +PT= bd66fcecc9e28f1aff8eb694acb6e90fa622c23da5ef2aa1 +CT= a37c1829076951bd4e3b6e2a1357a4a57e9e2cb573cfca4c +TEST= 78 +KEY= f383ed4d2aa72f2fd469d527449dba5de9301e4dc7e21b72 +IV= a37c1829076951bd4e3b6e2a1357a4a57e9e2cb573cfca4c +PT= 4eb1211777ee57bfc36ce189d9c87155787814424cdcdae2 +CT= 48e6fc45aa08ea7bdc721d96775c81d41f3555c6d460ee58 +TEST= 79 +KEY= bb65110880afc554081bc8b133c13b89f6054b8b1382f52a +IV= 48e6fc45aa08ea7bdc721d96775c81d41f3555c6d460ee58 +PT= 1a183dfe8dee50b635dd981cffeac754869eda28b6ffee1a +CT= 108ddc0326b8d90b8b1e8d474cfbd419c17c6b982fa9413a +TEST= 80 +KEY= abe8cd0ba6171c5f830545f67f3aef90377920133c2bb410 +IV= 108ddc0326b8d90b8b1e8d474cfbd419c17c6b982fa9413a +PT= 7cb49983bcf89227fa466653d94a1277227b824fe02e96c4 +CT= 2d8e202166cd365e4aff0a9bc12245e2303587d7fe08dbcd +TEST= 81 +KEY= 8666ed2ac0da2a01c9fa4f6dbe18aa72074ca7c4c2236fdd +IV= 2d8e202166cd365e4aff0a9bc12245e2303587d7fe08dbcd +PT= d5cea65dbe1a2e775a2e803383ce15490a3ca7cdb9a9bae1 +CT= d718ef19beba2871f11ac211e542cfddc38d33529d98bf30 +TEST= 82 +KEY= 517e02337e60027038e08d7c5b5a65afc4c194965fbbd0ed +IV= d718ef19beba2871f11ac211e542cfddc38d33529d98bf30 +PT= ab27750eab3ab3cf0228ff9679229491dd15421a68663f0a +CT= 9e87b0352823c163031f132d7e4a9dbc7f0106717ad8302b +TEST= 83 +KEY= cff9b2065643c3133bff9e512510f813bbc092e72563e0c6 +IV= 9e87b0352823c163031f132d7e4a9dbc7f0106717ad8302b +PT= c6c7be4ec83231855cf1b18fe914da9411b1ef5858ec814e +CT= 58001b83752110756e70161028c8792a05a96a0248eb4782 +TEST= 84 +KEY= 97f9a9852362d366558f88410dd88139be69f8e56d88a744 +IV= 58001b83752110756e70161028c8792a05a96a0248eb4782 +PT= 4c18a5839942f9d85435dc2c772bcfa0b71a2483d98eca9a +CT= cd44ae3df472457ec216d2f23486a9adfcbea18b7410159c +TEST= 85 +KEY= 5abd07b8d710961897995ab3395e289442d7596e1998b2d8 +IV= cd44ae3df472457ec216d2f23486a9adfcbea18b7410159c +PT= fc487a42a1002bf221052d61b35ed8ec0a41dad2ad4e9906 +CT= 8ae928092d2573d8cbb89c686ec605d012a198852c3c8195 +TEST= 86 +KEY= d0542fb1fa35e5c05c21c6db57982d445076c1eb35a4334d +IV= 8ae928092d2573d8cbb89c686ec605d012a198852c3c8195 +PT= b72a24ca166dd0b32d6db582b0c8d392f2f7b424fa3e310d +CT= f7b4a5806e8ec7b218f4dcaa380f8d1d3af9cae3f781538c +TEST= 87 +KEY= 27e08a3194bb227244d51a716f97a0596a8f0b08c22560c1 +IV= f7b4a5806e8ec7b218f4dcaa380f8d1d3af9cae3f781538c +PT= c6a6d43fa507d5e8c9862bc913e94e12e27cbb36a2906457 +CT= 6ad75cfab02f2bca1d261d14952b4af2103295b65eefbd72 +TEST= 88 +KEY= 4d37d6cb249409b859f30765fabceaab7abd9ebe9ccaddb3 +IV= 6ad75cfab02f2bca1d261d14952b4af2103295b65eefbd72 +PT= cf74701eedf1de618d06b1cb23294601d9b4eb015a7c5dbe +CT= 4b6ea9af317b8d216f1bb9bad71ef6f1b185ef659b2c0ebe +TEST= 89 +KEY= 06597f6415ef849936e8bedf2da21c5acb3871db07e6d30d +IV= 4b6ea9af317b8d216f1bb9bad71ef6f1b185ef659b2c0ebe +PT= 6440e1be9f006032ef449b8a0a9bd8d9bc2202037046a3c7 +CT= 4829576c4a233c20f1ff8b82843ceb1781f8968ec06fa9c6 +TEST= 90 +KEY= 4e7028085fccb8b9c717355da99ef74d4ac0e755c7897acb +IV= 4829576c4a233c20f1ff8b82843ceb1781f8968ec06fa9c6 +PT= 45942848282a4604a2b4bfbd4701d75d596b361aba8e670b +CT= 234c1b955056057ed61cb8916be8f899bcd70dd169322550 +TEST= 91 +KEY= 6d3c339d0f9abdc7110b8dccc2760fd4f617ea84aebb5f9b +IV= 234c1b955056057ed61cb8916be8f899bcd70dd169322550 +PT= 5662ec91de8ee7dbb2a140fe22f2127431d5e8986a682a3b +CT= 589a479c26df8fd2a77685653067d382e774b0a1d19fb9da +TEST= 92 +KEY= 35a6740129453215b67d08a9f211dc5611635a257f24e641 +IV= 589a479c26df8fd2a77685653067d382e774b0a1d19fb9da +PT= 133a3c39875fb963ae73842e38d48ec303083f9f63fc7aae +CT= 58f7251f1cb2cf57987883ed69760b6daca3469d2e54d710 +TEST= 93 +KEY= 6d51511e35f7fd422e058b449b67d73bbdc01cb851703151 +IV= 58f7251f1cb2cf57987883ed69760b6daca3469d2e54d710 +PT= 80fd9486b1e683aace7a596e7fe0a612729575eae21cd28d +CT= 69d197dfa1a53add34780012ddc557c221b92a2a2af834c7 +TEST= 94 +KEY= 0480c6c19452c79f1a7d8b5646a280f99c7936927b880596 +IV= 69d197dfa1a53add34780012ddc557c221b92a2a2af834c7 +PT= 490174dd307710857acb586629bcb5b445bea4db83632d34 +CT= 151821c45195b05004c7cd001f54db18446b619100c6ad09 +TEST= 95 +KEY= 1198e705c5c777cf1eba465659f65be1d81257037b4ea89f +IV= 151821c45195b05004c7cd001f54db18446b619100c6ad09 +PT= d8793de216b8f2fd263f95e89aba1316bba9918fc52bad36 +CT= fd66bcf62e68f1ab9649e3623e5d565a9948f2b1aa68d93e +TEST= 96 +KEY= ecfe5bf3ebaf866488f3a53467ab0dbb415aa5b2d12671a1 +IV= fd66bcf62e68f1ab9649e3623e5d565a9948f2b1aa68d93e +PT= 3c0b5ca3b438abfbb8ca4b60ca91e44398b5386218dd732d +CT= 702dedd44364679cb4bb6bd2aced832ee5a404b41a550a28 +TEST= 97 +KEY= 9cd3b627a8cbe1f83c48cee6cb468e95a4fea106cb737b89 +IV= 702dedd44364679cb4bb6bd2aced832ee5a404b41a550a28 +PT= 0d56eba09dd7a3411b85bd3e769d8648739db0bf27e1a0a1 +CT= 707e6b1cf42ea71c123a6efacb92075fa3f354297a8e44db +TEST= 98 +KEY= ecaddd3b5ce546e42e72a01c00d489ca070df52fb1fd3f52 +IV= 707e6b1cf42ea71c123a6efacb92075fa3f354297a8e44db +PT= 0c2f0b2d79193f14a1d2ffe64102ad186cc2553b37af02da +CT= 75613dcdf61a9310c67a1fa98af4209084dc27901f4a76fd +TEST= 99 +KEY= 99cce0f6aaffd5f4e808bfb58a20a95a83d1d2bfaeb749af +IV= 75613dcdf61a9310c67a1fa98af4209084dc27901f4a76fd +PT= 98f5a64206a81c3b05d1731bb3256f8e4461c45fc8fad136 +CT= 0379e9fb776b33ccb0cd371006ed02a9a07d3bcbd6b6d5f0 +TEST= 100 +KEY= 9ab5090ddd94e63858c588a58ccdabf323ace97478019c5f +IV= 0379e9fb776b33ccb0cd371006ed02a9a07d3bcbd6b6d5f0 +PT= 8da8f3276889014238fb5faaa78892a97225020d399c08b9 +CT= d86698820e2ee52df0c75abd55c4c492fe2f1387720a5874 +TEST= 101 +KEY= 42d3918fd3ba0315a802d218d9096f61dd83faf30a0bc42b +IV= d86698820e2ee52df0c75abd55c4c492fe2f1387720a5874 +PT= 1ecd7c3a72ae315b06e6c02165d583178f9657da0223ee88 +CT= 5a304a7f7c9632fb8985b072192741e9b7e448e8bf7440ab +TEST= 102 +KEY= 18e3dbf0af2c31ee2187626ac02e2e886a67b21bb57f8480 +IV= 5a304a7f7c9632fb8985b072192741e9b7e448e8bf7440ab +PT= 8d53d2f361ac87b31cc9ef633afaf6a905a97123e8f1d4a6 +CT= 282ba13ebc56174feeb949ea5040a5e2b37a6b7a080d0547 +TEST= 103 +KEY= 30c87ace137a26a1cf3e2b80906e8b6ad91dd961bd7281c7 +IV= 282ba13ebc56174feeb949ea5040a5e2b37a6b7a080d0547 +PT= ae8b79890ad8c1c19527a7f33a314aae97da72382f0d328e +CT= a1c6940a44cd0f6a8221b7de3e4f094621ba586dabd83241 +TEST= 104 +KEY= 910eeec457b729cb4d1f9c5eae21822cf8a7810c16aab386 +IV= a1c6940a44cd0f6a8221b7de3e4f094621ba586dabd83241 +PT= 1458577d48613b0b48d95510b96006090a498ebd8f15e0a8 +CT= ab309e42c2abda4e5a36fcdd4f9be1790c99f5e1e598f887 +TEST= 105 +KEY= 3a3e7086951cf38517296083e1ba6355f43e74edf3324b01 +IV= ab309e42c2abda4e5a36fcdd4f9be1790c99f5e1e598f887 +PT= 752109bc73c9580a5e879996011d4ebcfe79580209ce700f +CT= 9e91390031f352ce8ea0c0776ad3ad352501f8d67bf821c8 +TEST= 106 +KEY= a4af4986a4efa14b9989a0f48b69ce60d13f8c3b88ca6ac9 +IV= 9e91390031f352ce8ea0c0776ad3ad352501f8d67bf821c8 +PT= 93e2c278ca8618a2e76175f4597d01b55426e86524b0c885 +CT= b240b3d9150fd69eff515660a038fa8e0fded838d30e5a8a +TEST= 107 +KEY= 16effa5fb1e077d566d8f6942b5134eedee154035bc43043 +IV= b240b3d9150fd69eff515660a038fa8e0fded838d30e5a8a +PT= 754e60b090e9b8bf56fa424235599d1693c525ef18fc5817 +CT= d44df66d7f9663e811dd4347067ab24209238691892604df +TEST= 108 +KEY= c2a20c32ce76143d7705b5d32d2b86acd7c2d292d2e2349c +IV= d44df66d7f9663e811dd4347067ab24209238691892604df +PT= dacb3afebcd51b889bcaa93e167cef264c083144519011cb +CT= 05fdb14a1595bb260629a7a6b4c54bae2e30215f5d71c8b5 +TEST= 109 +KEY= c75fbd78dbe3af1b712c127599eecd02f9f2f3cd8f93fc29 +IV= 05fdb14a1595bb260629a7a6b4c54bae2e30215f5d71c8b5 +PT= 5ff2b74cd72cefe7f2cdfd9be3840ca7503cf3bb02b3adea +CT= 059f3cc5fd892046273580ebfb1c610f48ba644da60a4b1b +TEST= 110 +KEY= c2c081bd266a8f5d5619929e62f2ac0db14897802999b732 +IV= 059f3cc5fd892046273580ebfb1c610f48ba644da60a4b1b +PT= d2c37426043e70850be68a04462bad80d932f9dfe713ee8e +CT= cbe34b243ab9e5bebce016a3c9020190d1456a9fd5962f47 +TEST= 111 +KEY= 0923ca991cd36ae3eaf9843dabf0ad9d600dfd1ffc0f9875 +IV= cbe34b243ab9e5bebce016a3c9020190d1456a9fd5962f47 +PT= 17d4dc958ae737b8fbfaa7b0210e9dd0f83d68e80091a3b2 +CT= 31bb2cdfb6f8a2e690e1093050814ab3f96dabf6b6b421a2 +TEST= 112 +KEY= 3898e646aa2bc8057a188d0dfb71e72e996056e94abbb9d7 +IV= 31bb2cdfb6f8a2e690e1093050814ab3f96dabf6b6b421a2 +PT= 46106c03d1a83d71a6b3cfb15471d3319b8c12917dcec10f +CT= add67a6710e98e3bf31113a62191a7c443f34d158576429f +TEST= 113 +KEY= 954e9c21bac2463e89099eabdae040eada931bfccfcdfb48 +IV= add67a6710e98e3bf31113a62191a7c443f34d158576429f +PT= 26d9c4f93b41202539dbbf47203cfbad41a0ac8ce874d53c +CT= 85f091443b6e5e85ee4f3ed8e10bfd924f14d758a0891e94 +TEST= 114 +KEY= 10be0d6581ac18bb6746a0733bebbd789587cca46f44e5dc +IV= 85f091443b6e5e85ee4f3ed8e10bfd924f14d758a0891e94 +PT= 058f598592114845bef068d494489610374eb6dcb1551724 +CT= 6147c4bc2e2bc63c6782d5a8d27d191240b527477193a7b8 +TEST= 115 +KEY= 71f9c9d9af87de8700c475dbe996a46ad532ebe31ed74264 +IV= 6147c4bc2e2bc63c6782d5a8d27d191240b527477193a7b8 +PT= ba3e878b75e940fd63fcd6a0b7c99da445bc42885cfc9bd8 +CT= 9181cefc6f35b65a363e29daed70bc3a9464f8f89e4c7c3f +TEST= 116 +KEY= e0780725c0b268dd36fa5c0104e618504156131b809b3e5b +IV= 9181cefc6f35b65a363e29daed70bc3a9464f8f89e4c7c3f +PT= dd8aa309554a77b9ba529aade66600c474e3565d6c64321c +CT= c2f583932fb0a628e7b1db95d9589ae103535774df7d1609 +TEST= 117 +KEY= 228d84b6ef02cef5d14b8794ddbe82b14205446f5fe62852 +IV= c2f583932fb0a628e7b1db95d9589ae103535774df7d1609 +PT= 7917202809d01854d45ddb9ff9df34b259dd635a315ae349 +CT= ff5454c2db44b6ad3498e84183b14ea27635133929e2772c +TEST= 118 +KEY= ddd9d07434467858e5d36fd55e0fcc133430575676045f7e +IV= ff5454c2db44b6ad3498e84183b14ea27635133929e2772c +PT= 8e716b8316bc811aa84dc3f248fdc10c9b69225c91e6a701 +CT= c096ae3f84045b91b090551b19964154bdaa4a96170e6889 +TEST= 119 +KEY= 1d4f7e4bb04223c955433ace47998d47899a1dc0610a37f7 +IV= c096ae3f84045b91b090551b19964154bdaa4a96170e6889 +PT= d794d1ebb6c3b0a2821df46259afc32d122310430c7fb85b +CT= edc1aa0a8df869e92c67cb804c37b86c79ce8e88074f1048 +TEST= 120 +KEY= f08ed4413dba4a207924f14e0bae352bf0549348664527bf +IV= edc1aa0a8df869e92c67cb804c37b86c79ce8e88074f1048 +PT= 858fc92bc492dae8d9ea6f5ee4ab1d6d46c4984dd95a08ac +CT= 87f7c81d5e963633ae99f88109460079cd3074c0f347c48a +TEST= 121 +KEY= 77791c5c632c7c13d7bd09cf02e835523d64e7889502e335 +IV= 87f7c81d5e963633ae99f88109460079cd3074c0f347c48a +PT= c43978301465a8246ffd17c021ee664b76ae5a6544a0c6a0 +CT= a2090e31951754bde9cc4d9b7efc65df58693bfe2d5ceb6b +TEST= 122 +KEY= d570126df63b28ae3e7144547c14508d650ddc76b85e085e +IV= a2090e31951754bde9cc4d9b7efc65df58693bfe2d5ceb6b +PT= 6af586e1b3ae9ba4a6d23b947a70636d54d7141b8c87c0c9 +CT= 924c6b29b46b9363751b1e54d990eb5b716e46d3ebe27f2c +TEST= 123 +KEY= 473c79444250bbcd4b6a5a00a584bbd614639aa553bc7772 +IV= 924c6b29b46b9363751b1e54d990eb5b716e46d3ebe27f2c +PT= d9302981895d79d460c23d41652ae93390decaffe1f60a38 +CT= 20e0f3e9295b986179b3ac967e837b2695410d454c589c76 +TEST= 124 +KEY= 67dc8aad6b0b23ac32d9f696db07c0f0812297e01fe4eb04 +IV= 20e0f3e9295b986179b3ac967e837b2695410d454c589c76 +PT= f16f5e0e11de3d4b0c3ea7361d984f012b04da39c61b2acb +CT= b23e67a1cd27240b5212f1b7df2f7d7bfc3a45e1812c0746 +TEST= 125 +KEY= d5e2ed0ca62c07a760cb07210428bd8b7d18d2019ec8ec42 +IV= b23e67a1cd27240b5212f1b7df2f7d7bfc3a45e1812c0746 +PT= 5faf5b6a5195d0acb0978847c6c8b40f761c8984407a1045 +CT= 73661a0550ac13adbb5571710d32bf80db64a6e7074b2678 +TEST= 126 +KEY= a684f709f680140adb9e7650091a020ba67c74e69983ca3a +IV= 73661a0550ac13adbb5571710d32bf80db64a6e7074b2678 +PT= 10a81018d355a03842dc2f38047be40ebb5e4cb3c9990810 +CT= 99c4868d8534c138da6812314df4a7062e23671876f6d023 +TEST= 127 +KEY= 3f40718473b4d53201f6646144eea50d885f13feef751a19 +IV= 99c4868d8534c138da6812314df4a7062e23671876f6d023 +PT= 2c2a077e7f19e1a49fbc36ddadcc17d2e4ebbaa515437187 +CT= b018248c48419cd2c1f1a780bba5cd8ec7bcda8464464ed3 +TEST= 128 +KEY= 8f5855083bf549e0c007c3e1ff4b68834fe3c97a8b3354ca +IV= b018248c48419cd2c1f1a780bba5cd8ec7bcda8464464ed3 +PT= 202d3174cb8a21de6320e3d77a94fd3b9f82992acfe26e5e +CT= 0dc2283dad278e88be3d881482efc862313439ce11fa1924 +TEST= 129 +KEY= 829a7d3596d2c7687e3a4bf57da4a0e17ed7f0b49ac94dee +IV= 0dc2283dad278e88be3d881482efc862313439ce11fa1924 +PT= 42921958caa421ad667a4ac69e3c08b072cf7c5210fe35e9 +CT= ad2f6f8c2420026565deaa01b141ff95d677009dbe5d2836 +TEST= 130 +KEY= 2fb512b9b2f2c50d1be4e1f4cce55f74a8a0f029249465d8 +IV= ad2f6f8c2420026565deaa01b141ff95d677009dbe5d2836 +PT= c26d223db5f8a93b5107275366cb31819bc19f8647a1ecac +CT= 40c5c06bfcb2a887115904d81db2165eb5edd2543736f293 +TEST= 131 +KEY= 6f70d2d24e406d8a0abde52cd157492a1d4d227d13a2974b +IV= 40c5c06bfcb2a887115904d81db2165eb5edd2543736f293 +PT= 3a319dd667f12c928647750ca592328a8f8fdc7bd2332f5b +CT= 8d4eae7e58708a347ef258f39f36ff02d45e9fddec8b093b +TEST= 132 +KEY= e23e7cac1630e7be744fbddf4e61b628c913bda0ff299e70 +IV= 8d4eae7e58708a347ef258f39f36ff02d45e9fddec8b093b +PT= 7a02d92955a4261a76c4bc5088b768ab6f76a6711537b909 +CT= ecb75933ebea86c1cac2c10673d40cd724a3d9cd9dcccd74 +TEST= 133 +KEY= 0e89259ffdda617fbe8d7cd93db5baffedb0646d62e55304 +IV= ecb75933ebea86c1cac2c10673d40cd724a3d9cd9dcccd74 +PT= cc139341f2588cdd546762541a6a55f2230dbe9b3a29ffb7 +CT= d7ddfaa73035de6c2a8f578e9c79ea46d37b8b66d8915e3d +TEST= 134 +KEY= d954df38cdefbf1394022b57a1cc50b93ecbef0bba740d39 +IV= d7ddfaa73035de6c2a8f578e9c79ea46d37b8b66d8915e3d +PT= aaa6e379262a314f7e80691199243fe478eb89d752904cf9 +CT= b2a3ebb141c427fd1a3aee0b846fc242af2857751332afa1 +TEST= 135 +KEY= 6bf734898c2b98ee8e38c55c25a392fb91e3b87ea946a298 +IV= b2a3ebb141c427fd1a3aee0b846fc242af2857751332afa1 +PT= eb91677c9f732da00e5cbbfa288432f0ca9d4f21cb59a5f4 +CT= 87d90596d43b10614c28e629428189f46f4be4ff8b7acc46 +TEST= 136 +KEY= ec2e311f5810888fc210237567221b0ffea85c81223c6ede +IV= 87d90596d43b10614c28e629428189f46f4be4ff8b7acc46 +PT= a695444f2279927f1119f2a7d8d53d36666301c228827924 +CT= 67deb782d81ee5912b401d059de405bb2b84a6523f198271 +TEST= 137 +KEY= 8bf0869d800e6d1ee9503e70fac61eb4d52cfad31d25ecaf +IV= 67deb782d81ee5912b401d059de405bb2b84a6523f198271 +PT= 68ba8c8c8e443ca105d65d3a6db73682c4432391b32bba54 +CT= ae15a7ef934fb8b3f8842086389bc9653877f37c8db4c810 +TEST= 138 +KEY= 25e521721341d5ad11d41ef6c25dd7d1ed5b09af909124bf +IV= ae15a7ef934fb8b3f8842086389bc9653877f37c8db4c810 +PT= 4bf23048232920dc025eaa553b3c350f8c68eee15397dfea +CT= e61025a83abd230abef4377df93253d80a3722bda2f65aa6 +TEST= 139 +KEY= c3f504da29fcf6a7af20298b3b6f8409e76c2b1232677e19 +IV= e61025a83abd230abef4377df93253d80a3722bda2f65aa6 +PT= 482fa7d603b744237a8d9c2d06aaa1ba294c2abbc55533cd +CT= f0a4972bba9025f87a16e51227f457528264ec1ceb4cd9f1 +TEST= 140 +KEY= 335193f1936cd35fd536cc991c9bd35b6508c70ed92ba7e8 +IV= f0a4972bba9025f87a16e51227f457528264ec1ceb4cd9f1 +PT= 1ffe6e6ae7d56f4bc08d78d55e17249d2efce6a6d379b574 +CT= 1e2f41816d1d050e368c2b10f609c250d273d49d5c0ded5c +TEST= 141 +KEY= 2d7ed270fe71d651e3bae789ea92110bb77b139385264ab4 +IV= 1e2f41816d1d050e368c2b10f609c250d273d49d5c0ded5c +PT= 94ad26951b93a86062311358e9b6458226a34d1c628eace3 +CT= 496f91c50598239d0f5f0a6fb7e412c09f67ef9b20f2b734 +TEST= 142 +KEY= 641143b5fbe9f5ccece5ede65d7603cb281cfc08a5d4fd80 +IV= 496f91c50598239d0f5f0a6fb7e412c09f67ef9b20f2b734 +PT= 5531b7133dcda8254664b1ad03ff2193acf06f12a9704c0c +CT= 914fc2cc81141fe53a0a9e25c0eceb4dd43e1be915614aa7 +TEST= 143 +KEY= f55e81797afdea29d6ef73c39d9ae886fc22e7e1b0b5b727 +IV= 914fc2cc81141fe53a0a9e25c0eceb4dd43e1be915614aa7 +PT= 0e43a4c7cf7ae8caf0a2717de4d5295dd500de2b26acf0ba +CT= 919629178ec7f72daf64e368b07d34dcc7f0243e188d2b32 +TEST= 144 +KEY= 64c8a86ef43a1d04798b90ab2de7dc5a3bd2c3dfa8389c15 +IV= 919629178ec7f72daf64e368b07d34dcc7f0243e188d2b32 +PT= ae00902ceb3c4c78b277c5ac75142bb9b4dcf36023c20205 +CT= 66bbc6350e9c9f297f4069bc4b78c3a59be4a84230a19484 +TEST= 145 +KEY= 02736e5bfaa6822d06cbf917669f1fffa0366b9d98990891 +IV= 66bbc6350e9c9f297f4069bc4b78c3a59be4a84230a19484 +PT= 6066073cd93a24e5429ace65c445645cf70a1911b2a92546 +CT= fe569e42dddf1796bb053f47efd49232658db69b114b3c4b +TEST= 146 +KEY= fc25f019277995bbbdcec650894b8dcdc5bbdd0689d234da +IV= fe569e42dddf1796bb053f47efd49232658db69b114b3c4b +PT= d11a93f34265b64859623bd7c01eb22826b1507d47809a19 +CT= 882bb8a51766af790ab24ade350d6da15712e70227228344 +TEST= 147 +KEY= 740e48bc301f3ac2b77c8c8ebc46e06c92a93a04aef0b79e +IV= 882bb8a51766af790ab24ade350d6da15712e70227228344 +PT= 0aaa2176b6dcf07e44444542bcf21694d2d4e18986434cea +CT= 761a13522e5e8a21f2b21890c7b04bc4c03ea811294a7f24 +TEST= 148 +KEY= 02145bee1e41b0e345ce941e7bf6aba85297921587bac8ba +IV= 761a13522e5e8a21f2b21890c7b04bc4c03ea811294a7f24 +PT= 7a242a2a4ca70ca6d858ae7e5e89ac6593a91c54fa3afd7f +CT= bc11c04d65f2eff0b748cab2c1eea94fb8ca705fe8be8ce7 +TEST= 149 +KEY= be059ba37bb35f13f2865eacba1802e7ea5de24a6f04445d +IV= bc11c04d65f2eff0b748cab2c1eea94fb8ca705fe8be8ce7 +PT= bf8029387074174a6f2a6b533dc0b99d1cec1b53275680c5 +CT= 4f8fdd0bfed8b8e3efc40a21ea9ec0f37e4bff2e005d8c29 +TEST= 150 +KEY= f18a46a8856be7f01d42548d5086c21494161d646f59c874 +IV= 4f8fdd0bfed8b8e3efc40a21ea9ec0f37e4bff2e005d8c29 +PT= cb7385479f14805e10bbd6793dc8c64017fef323e87f228f +CT= 8873f9ed591bb030a97157434137bd367df7304000a7745b +TEST= 151 +KEY= 79f9bf45dc7057c0b43303ce11b17f22e9e12d246ffebc2f +IV= 8873f9ed591bb030a97157434137bd367df7304000a7745b +PT= abfc4f343595b577516f07f7f0a942efca7f03429b16326b +CT= 42c22f32562525169b4217e8297ce62fa3d67b5c0f2490d5 +TEST= 152 +KEY= 3b3b90778a5572d62f71142638cd990d4a37567860da2cfa +IV= 42c22f32562525169b4217e8297ce62fa3d67b5c0f2490d5 +PT= 49864c1df6d87b34edaa167469865b13e1c36fe96216befc +CT= 9417a6104b53b22ffe4dfa698381c28dd9655b22aa4b0eab +TEST= 153 +KEY= af2c3667c106c0f9d13cee4fbb4c5b8093520d5aca912251 +IV= 9417a6104b53b22ffe4dfa698381c28dd9655b22aa4b0eab +PT= 7b986ce12a249794bbfb86d3d786c026d9b08999bd72d396 +CT= df5df288db6942f866caaddae3c2d72cba9c46e46fd3291f +TEST= 154 +KEY= 7071c4ef1a6f8201b7f64395588e8cac29ce4bbea5420b4e +IV= df5df288db6942f866caaddae3c2d72cba9c46e46fd3291f +PT= 0dd9fa47c744a092f6f6ce0c7e922a04052dd61b8029c7d8 +CT= bbbaa92d9abd522ed8b438072ee6b81892fdd47e9797d4bd +TEST= 155 +KEY= cbcb6dc280d2d02f6f427b92766834b4bb339fc032d5dff3 +IV= bbbaa92d9abd522ed8b438072ee6b81892fdd47e9797d4bd +PT= 28c6125ab5b9d5eb443bb0e2e0a00235077eb76565a6a806 +CT= 5909e2dfcea7bd0243032bb82a3e1a94f7989f53cd90c094 +TEST= 156 +KEY= 92c28f1d4e756d2d2c41502a5c562e204cab0093ff451f67 +IV= 5909e2dfcea7bd0243032bb82a3e1a94f7989f53cd90c094 +PT= e415930f9eb855cef939b9b80bccbf8bcdd245058f92a9f6 +CT= b881f96b18c5beb5014f9206a0445e125ee31124c4da08b6 +TEST= 157 +KEY= 2a43767656b0d3982d0ec22cfc127032124811b73b9f17d1 +IV= b881f96b18c5beb5014f9206a0445e125ee31124c4da08b6 +PT= 997d3ac95ad2e8cda6701c744d3c018ed2eab15120f75910 +CT= 493cea198ca21b6ec119f04c37474e9d1b25aff68ef351e9 +TEST= 158 +KEY= 637f9c6fda12c8f6ec173260cb553eaf096dbe41b56c4638 +IV= 493cea198ca21b6ec119f04c37474e9d1b25aff68ef351e9 +PT= 9001e55cde6b7e9f0be8d8a16e0e39fad9907b1a7723f5b2 +CT= 3a5ec3098156c9fef12760dd4d2e690e65bdf68a8dea4caf +TEST= 159 +KEY= 59215f665b4401081d3052bd867b57a16cd048cb38860a97 +IV= 3a5ec3098156c9fef12760dd4d2e690e65bdf68a8dea4caf +PT= 88de64e8bb0fbf7b6a61f0a0c86c715d975299832262e38c +CT= 9f700655880cffed6efe3f3c9116585edd209952feae05ba +TEST= 160 +KEY= c6515933d348fee573ce6d81176d0fffb1f0d199c6280f2d +IV= 9f700655880cffed6efe3f3c9116585edd209952feae05ba +PT= d39c4551eb5de9838cf83b071d5e3e2a401810d36013c22c +CT= 68d5f79bddedb11d85bba329c79e66820134a2bfb35ea076 +TEST= 161 +KEY= ae84aea80ea54ff8f675cea8d0f3697db0c473267576af5b +IV= 68d5f79bddedb11d85bba329c79e66820134a2bfb35ea076 +PT= 4152eb53a28a27123440402b94fd73444c84858d12ac61fb +CT= 56de2c655df16f0b2afde88dd467157967ecebf3a18990a7 +TEST= 162 +KEY= f85a82cd535420f3dc88262504947c04d72898d5d4ff3ffc +IV= 56de2c655df16f0b2afde88dd467157967ecebf3a18990a7 +PT= 7a7369c83d42b0f89ee3e03620c432b4527658614ca62260 +CT= 49644ceb6238b10343a18d5fb222dbdf19bc2f871a9897c5 +TEST= 163 +KEY= b13ece26316c91f09f29ab7ab6b6a7dbce94b752ce67a839 +IV= 49644ceb6238b10343a18d5fb222dbdf19bc2f871a9897c5 +PT= c8593af122b19e4fda51a12d78b8f6a6fdc42bc1c9bb10c5 +CT= 4ed308d406bbd1130cf7cb95c0e34ab42d17d7790a54b779 +TEST= 164 +KEY= ffedc6f237d740e393de60ef7655ed6fe383602bc4331f40 +IV= 4ed308d406bbd1130cf7cb95c0e34ab42d17d7790a54b779 +PT= 9d93139d7a47e6836264faced889deab56e7109a61e2328d +CT= 17567fde7cf5eb298a07b961d566fd88a0212801d8f4aa01 +TEST= 165 +KEY= e8bbb92c4b22abca19d9d98ea33310e743a2482a1cc7b541 +IV= 17567fde7cf5eb298a07b961d566fd88a0212801d8f4aa01 +PT= 45105cedf25bad18cce01fa18b2c5329245bfcb173a5b7c0 +CT= 67cbfff6083426454147183d86e80e7642eb43e18943710a +TEST= 166 +KEY= 8f7046da43168d8f589ec1b325db1e9101490bcb9584c44b +IV= 67cbfff6083426454147183d86e80e7642eb43e18943710a +PT= 745512918a9f1b2fcaa6bb3db25a9839dc1a4164a9556ca6 +CT= 5a55f770df9d015416eae14a8f79c78d00b2b16e654925db +TEST= 167 +KEY= d525b1aa9c8b8cdb4e7420f9aaa2d91c01fbbaa5f0cde190 +IV= 5a55f770df9d015416eae14a8f79c78d00b2b16e654925db +PT= d29eca35e4d3442e026b00f1c7c2adddac61d60a6abeab5a +CT= 7939ffbb22cc7ed124ec4bff562dae66ec3b21bdc8b19cf6 +TEST= 168 +KEY= ac1c4e11be47f20a6a986b06fc8f777aedc09b18387c7d66 +IV= 7939ffbb22cc7ed124ec4bff562dae66ec3b21bdc8b19cf6 +PT= 87d06d4b0c5d830e90d396ae4c603fee0a33a0e26e2b2e7e +CT= eae9c76d5502ce901b7ee9437edb61a7f50ec2ab7f3cdb53 +TEST= 169 +KEY= 46f5897ceb453c9a71e68245825416dd18ce59b34740a635 +IV= eae9c76d5502ce901b7ee9437edb61a7f50ec2ab7f3cdb53 +PT= 3efa05a247f8a5b049a836cda8d3d4f9b4cd3a110d8cffd5 +CT= 1961c1323b0397399710b5cf8a6c74fdfa5e484aca1dfcd5 +TEST= 170 +KEY= 5f94484ed046aba3e6f6378a08386220e29011f98d5d5ae0 +IV= 1961c1323b0397399710b5cf8a6c74fdfa5e484aca1dfcd5 +PT= 3b198187e3fa846fcbcdef7074e2d23bcdf9caedd504b0b1 +CT= 09fe86c1b696498c22b1b827dd1aa1d35a279bd6daf4b178 +TEST= 171 +KEY= 566ace8f66d0e22fc4478fadd522c3f3b8b78a2f57a9eb98 +IV= 09fe86c1b696498c22b1b827dd1aa1d35a279bd6daf4b178 +PT= dd2d27af894db9d98fd7a8f359956db72dcd1e224a7c1db9 +CT= bb2650586011cedf86e1fc0cf2ff315d1137360a85bd7360 +TEST= 172 +KEY= ed4c9ed706c12cf042a673a127ddf2aea980bc25d21498f8 +IV= bb2650586011cedf86e1fc0cf2ff315d1137360a85bd7360 +PT= b019433259dbbbfb7f31e3f7d2a24cff05aa579828fd7f0d +CT= 387b87508a2f6daf12777535d15619b192feddc8442d2b2f +TEST= 173 +KEY= d53719878cee415f50d10694f68beb1f3b7e61ed9639b3d7 +IV= 387b87508a2f6daf12777535d15619b192feddc8442d2b2f +PT= 61261c689d1b37ea8b1dd30fcf2ce313b51b705e71ed3d72 +CT= 829d11fad1382d01b0286111ffe78b749ff103c03de570ad +TEST= 174 +KEY= 57aa087d5dd66c5ee0f96785096c606ba48f622dabdcc37a +IV= 829d11fad1382d01b0286111ffe78b749ff103c03de570ad +PT= a5e603d51b1bb8aec3e0eb0ae0746d0a9198e49f82783971 +CT= e117a8535189ebad69a19a9e034a5d510efddfe1209a83e0 +TEST= 175 +KEY= b6bda02e0c5f87f38958fd1b0a263d3aaa72bdcc8b46409a +IV= e117a8535189ebad69a19a9e034a5d510efddfe1209a83e0 +PT= bff1550d2a265aa7bacd293da96b832b4ccd54e9113ae51f +CT= 864d969de6e96f2bcaf3c2d36e65ba93ec27f976112c0589 +TEST= 176 +KEY= 30f036b3eab6e8d843ab3fc8644387a9465544ba9a6a4513 +IV= 864d969de6e96f2bcaf3c2d36e65ba93ec27f976112c0589 +PT= e5d83eba6e09d03bddd81daad8d6c5279ae95a4ea185ff67 +CT= df1c3e64a0a7b0ef3823030db5f1fe8fe46e77a7ddbb2122 +TEST= 177 +KEY= efec08d74a1158377b883cc5d1b27926a23b331d47d16431 +IV= df1c3e64a0a7b0ef3823030db5f1fe8fe46e77a7ddbb2122 +PT= c97e68ed65451b90a8221731f57385c4412bbe13970c1495 +CT= 9ef3f38db14e6f3e9a056abf96995dc79bf001f7b6c3b428 +TEST= 178 +KEY= 711ffb5afb5f3709e18d567a472b24e139cb32eaf112d019 +IV= 9ef3f38db14e6f3e9a056abf96995dc79bf001f7b6c3b428 +PT= 33017197e7dda86677d01bb04928fe96e66affb5e235c40c +CT= 6d629ec216c93193d1049a1aa6de6ef8b20f02f3bcaf80c2 +TEST= 179 +KEY= 1c7d6598ed96069a3089cc60e1f54a198bc430194dbd50db +IV= 6d629ec216c93193d1049a1aa6de6ef8b20f02f3bcaf80c2 +PT= 79879299f7ce0f7d6a510757d8ce5ce277aeaabecf0611b8 +CT= 76e3e079807d982fde9fb3c40c274bef052dbe15cf839d23 +TEST= 180 +KEY= 6a9e85e16deb9eb5ee167fa4edd201f68ee98e0c823ecdf8 +IV= 76e3e079807d982fde9fb3c40c274bef052dbe15cf839d23 +PT= 9e9dbc633bd00ecf1c6fa34d88840420d1c381e63a218ec0 +CT= 79de3c781f0795c1e2076d1038b8005d45273fe78abc2a4e +TEST= 181 +KEY= 1340b99972ec0b740c1112b4d56a01abcbceb1eb0882e7b6 +IV= 79de3c781f0795c1e2076d1038b8005d45273fe78abc2a4e +PT= 37b5627130d9aed9474979a8ba1696655647028d02507a55 +CT= 35199c36094e007faa13fffdbddbe5640e04e19a9b8970e2 +TEST= 182 +KEY= 265925af7ba20b0ba602ed4968b1e4cfc5ca5071930b9754 +IV= 35199c36094e007faa13fffdbddbe5640e04e19a9b8970e2 +PT= e9c6798bc6e1a0ca46001c7dfbdc6a9cd05f7ea3348690cc +CT= b0a667c5257751ab387acc14e17d538cb9266df0d821428f +TEST= 183 +KEY= 96ff426a5ed55aa09e78215d89ccb7437cec3d814b2ad5db +IV= b0a667c5257751ab387acc14e17d538cb9266df0d821428f +PT= 19c13f58839693fc6548c859601ee1f186d9cfebfe1ed04a +CT= 647032e9b7a57feac1ca54b44440d9c83f879ae2a4280c7e +TEST= 184 +KEY= f28f7083e970254a5fb275e9cd8c6e8b436ba763ef02d9a5 +IV= 647032e9b7a57feac1ca54b44440d9c83f879ae2a4280c7e +PT= f8c4b68a9140ffb3cdaed5a582bf2df980838dbde2c01646 +CT= 81196f1043fc71c980eb93e376241be2a9c6edb66bc398b8 +TEST= 185 +KEY= 73961f93aa8c5483df59e60abba87569eaad4ad584c1411d +IV= 81196f1043fc71c980eb93e376241be2a9c6edb66bc398b8 +PT= 3ef1b51e79b65dfc0c590f03304124e130852ba8622586d9 +CT= 3e5d4a49783e8602a4efa52b67185a668aff31c218d88248 +TEST= 186 +KEY= 4dcb55dad2b2d2817bb64321dcb02f0f60527b179c19c355 +IV= 3e5d4a49783e8602a4efa52b67185a668aff31c218d88248 +PT= e22ed46c6299ddb55fff70ed165adc7efcade89aefc30a02 +CT= 1e2f51bfcf7c30e593c0088663b17e2fc576fb6477780d4c +TEST= 187 +KEY= 53e404651dcee264e8764ba7bf015120a5248073eb61ce19 +IV= 1e2f51bfcf7c30e593c0088663b17e2fc576fb6477780d4c +PT= ee231af46f2ab2d147adee8892e55cb8db4edea01220df02 +CT= 25fed64f3b7c0864a0b19bf87d002812effd26ecb26f8abf +TEST= 188 +KEY= 761ad22a26b2ea0048c7d05fc20179324ad9a69f590e44a6 +IV= 25fed64f3b7c0864a0b19bf87d002812effd26ecb26f8abf +PT= 62ffe62736f7f98a5272445f59f304a5c54ae1e465a2c377 +CT= ec76d429eef56418713afba312f74e2d17d893217a58f7c5 +TEST= 189 +KEY= 9a6c0603c8478e1839fd2bfcd0f6371f5d0135be2356b363 +IV= ec76d429eef56418713afba312f74e2d17d893217a58f7c5 +PT= 7a90114c6b78847f6f65fc77f931ff85c00d18b27f32876b +CT= db47120a788525a2448633e5be573bcb8615d1c20a527380 +TEST= 190 +KEY= 412b1409b0c2abba7d7b18196ea10cd4db14e47c2904c0e3 +IV= db47120a788525a2448633e5be573bcb8615d1c20a527380 +PT= 274bdf55689ed297f0eae97c745adf50bbe66c295862c949 +CT= 5f3c32a888702e7be4c15549d8edaa9ba7c6e6d3ed82d846 +TEST= 191 +KEY= 1e1726a138b285c199ba4d50b64ca64f7cd202afc48618a5 +IV= 5f3c32a888702e7be4c15549d8edaa9ba7c6e6d3ed82d846 +PT= 90fa0260cf292e725cd2b8e25569cc0562493ed8065fc8d5 +CT= e83aff15f7fbfc54e96039fd3e45b1f35f48cc9d68277c5b +TEST= 192 +KEY= f62dd9b4cf49799570da74ad880917bc239ace32aca164fe +IV= e83aff15f7fbfc54e96039fd3e45b1f35f48cc9d68277c5b +PT= 145ef35ef1f219da537c1755fc16d5205e472569abfd460d +CT= 62c8daffa34fad71b62c08788c056886e7829c4ecf3100a6 +TEST= 193 +KEY= 94e5034b6c06d4e4c6f67cd5040c7f3ac418527c63906458 +IV= 62c8daffa34fad71b62c08788c056886e7829c4ecf3100a6 +PT= 57851792c61c250aab7909b63d1f46b3ef0cd76ecb2a9fe9 +CT= e199aad596204ff5405077750bc897905840ed51956c304e +TEST= 194 +KEY= 757ca99efa269b1186a60ba00fc4e8aa9c58bf2df6fc5416 +IV= e199aad596204ff5405077750bc897905840ed51956c304e +PT= 6a47769be6ad977fec3d261edec64d85bf42ac79fd597859 +CT= 0ba505ef20f9f7edaf844fe8bef61d3203795510dde3906f +TEST= 195 +KEY= 7ed9ac71dadf6cfc29224448b132f5989f21ea3d2b1fc479 +IV= 0ba505ef20f9f7edaf844fe8bef61d3203795510dde3906f +PT= 27533d71f736330a6d3344ca578fccfabc98c996dbb62c0b +CT= 1216568ec79a49a6baa4ff28b68d5538e83525c39b09e927 +TEST= 196 +KEY= 6ccffaff1d45255a9386bb6007bfa0a07714cffeb0162d5e +IV= 1216568ec79a49a6baa4ff28b68d5538e83525c39b09e927 +PT= ef7f34e0c9bf7cf539f9eab64157aec0067473e9c8e79e42 +CT= 85509c647725ed731ec6eb639c7e9f3b2b256e0a9510de6f +TEST= 197 +KEY= e99f669b6a60c8298d4050039bc13f9b5c31a1f42506f331 +IV= 85509c647725ed731ec6eb639c7e9f3b2b256e0a9510de6f +PT= 79748853a2e0c4bb63c94f04aeaba3a0244d3b97f101369c +CT= 260b7c7aac9336587c06a4f1427e4c459ffa44bc9f498826 +TEST= 198 +KEY= cf941ae1c6f3fe71f146f4f2d9bf73dec3cbe548ba4f7b17 +IV= 260b7c7aac9336587c06a4f1427e4c459ffa44bc9f498826 +PT= e31597ecdbd3511e7cc9dc78e887b046e09692dd0feb4dc8 +CT= 93502a6d1d83be040a23e09a87a025299ee6a12b962d55ba +TEST= 199 +KEY= 5cc4308cdb704075fb6514685e1f56f75d2d44632c622ead +IV= 93502a6d1d83be040a23e09a87a025299ee6a12b962d55ba +PT= a9509d3f68d7d454bca8a09f2879def803e65367ab5a4604 +CT= 210a5a1e5b0fb6b02aca787bfa24de4c0a853cbf5c6838a7 +TEST= 200 +KEY= 7dce6a92807ff6c5d1af6c13a43b88bb57a878dc700a160a +IV= 210a5a1e5b0fb6b02aca787bfa24de4c0a853cbf5c6838a7 +PT= a65cf8d1c4c1d9930218cffdea77db78585404f91d4eb87a +CT= 8515b64835502a683c5cac7f9f4c179cebe311867d24ac59 +TEST= 201 +KEY= f8dbdcdab52fdcadedf3c06c3b779f27bc4b695a0d2eba53 +IV= 8515b64835502a683c5cac7f9f4c179cebe311867d24ac59 +PT= 1fe8b57b5f721fca51875e746da39421d92b1d636e993240 +CT= a434a6ccbdd447d1f04cdfdd0572e063f49a0fa789e0aac8 +TEST= 202 +KEY= 5cef7a1608fb9b7c1dbf1fb13e057f4448d166fd84ce109b +IV= a434a6ccbdd447d1f04cdfdd0572e063f49a0fa789e0aac8 +PT= ac5e6d4433aabd7b0db14f89c98b579bbe3e16f456d08778 +CT= e831f51e510b52b74d7d4c2ee6e406f78256cdbfc7d8f52a +TEST= 203 +KEY= b4de8f0859f0c9cb50c2539fd8e179b3ca87ab424316e5b1 +IV= e831f51e510b52b74d7d4c2ee6e406f78256cdbfc7d8f52a +PT= 1a2b82ac8fba7dc676357c2c20e92d0fbecf455cc837fca7 +CT= 9bcf24399374a287f9e9431f3d2f7ac2eb7f2d56b3ed535c +TEST= 204 +KEY= 2f11ab31ca846b4ca92b1080e5ce037121f88614f0fbb6ed +IV= 9bcf24399374a287f9e9431f3d2f7ac2eb7f2d56b3ed535c +PT= 0c19bcf2094ee807483fc6ba326378cc6c1e587b27f5b169 +CT= 2af1bd738595dbd2035ca7fba788fb91382f3732bdbc0a58 +TEST= 205 +KEY= 05e016424f11b09eaa77b77b4246f8e019d7b1264d47bcb5 +IV= 2af1bd738595dbd2035ca7fba788fb91382f3732bdbc0a58 +PT= ea901126df5bc149388f010b69d7b946f70d799be23a3067 +CT= 00696f2b53407a2aba1968d77ce124c341e03f562390ad6a +TEST= 206 +KEY= 058979691c51cab4106edfac3ea7dc2358378e706ed711df +IV= 00696f2b53407a2aba1968d77ce124c341e03f562390ad6a +PT= 49c5fe96fb73dce2ab11c36de5b3661df04e607df7e1794a +CT= 0b7073014dba5184c1f7f5095eb7f36576de4eaaf31427ff +TEST= 207 +KEY= 0ef90a6851eb9b30d1992aa560102f462ee9c0da9dc33620 +IV= 0b7073014dba5184c1f7f5095eb7f36576de4eaaf31427ff +PT= c3e00ae7c27dbbe6b24a97e9395a89211060cdb10e1a9d46 +CT= ff075a7ab992d3d99c4609321fb0acca198060e74dd090d8 +TEST= 208 +KEY= f1fe5012e87948e94ddf23977fa0838c3769a03dd013a6f8 +IV= ff075a7ab992d3d99c4609321fb0acca198060e74dd090d8 +PT= 3a5cc299eab201c5e21cff138736ce64e54fccbc772f661d +CT= b09c42738bb1cb4f9c2cf1c92e9d59aeb11cb65400c1493e +TEST= 209 +KEY= 4162126163c883a6d1f3d25e513dda2286751669d0d2efc6 +IV= b09c42738bb1cb4f9c2cf1c92e9d59aeb11cb65400c1493e +PT= 12b9be6a4dbdbacb2f56e24a048bcb8b9a917ac24a716fbe +CT= b278d1baf11193bc26f617a233f2eec7e267fd2b0e18bb76 +TEST= 210 +KEY= f31ac3db92d9101af705c5fc62cf34e56412eb42deca54b0 +IV= b278d1baf11193bc26f617a233f2eec7e267fd2b0e18bb76 +PT= 29fd56d57ab36242d3fbdedc7922b72294f7db08c36a9971 +CT= 817a75648d4cdceb74d73be69c5d145f65152f99c439cc77 +TEST= 211 +KEY= 7260b6bf1f95ccf183d2fe1afe9220ba0107c4db1af398c7 +IV= 817a75648d4cdceb74d73be69c5d145f65152f99c439cc77 +PT= fcb1fae264912e31d50fe3f4206d3b55def9ede64bce7066 +CT= d99f13ec3c867561f8996a1e3d178a09111a763aa74f75a1 +TEST= 212 +KEY= abffa5532313b9907b4b9404c385aab3101db2e1bdbced66 +IV= d99f13ec3c867561f8996a1e3d178a09111a763aa74f75a1 +PT= 7d8d2853f525a7b6cc542b3f2de87db9996f86301453b7ba +CT= 7a7488c32261c35fd507c554ad4eb70980f34c703971c41c +TEST= 213 +KEY= d18b2d9001727acfae4c51506ecb1dba90eefe9184cd297a +IV= 7a7488c32261c35fd507c554ad4eb70980f34c703971c41c +PT= 8aaa6a8d9e3a1a72af64c545a765f017ac96561535d24b88 +CT= 40651f789a82ca204ecb0709557fb5267de22fe59d3a60ec +TEST= 214 +KEY= 91ee32e89bf0b0efe08756593bb4a89ced0cd17419f74996 +IV= 40651f789a82ca204ecb0709557fb5267de22fe59d3a60ec +PT= 67026d165a0a629b9a3769d23d95ea2aec040c2a840fd0b6 +CT= 7310ff6db8cd6f45d774bb192f785d2df4481bf12c228af5 +TEST= 215 +KEY= e2fecd85233ddfaa37f3ed4014ccf5b11944ca8535d5c363 +IV= 7310ff6db8cd6f45d774bb192f785d2df4481bf12c228af5 +PT= 0fb7045426afaf68593049dc293664dc4554cf6c4432ac00 +CT= aea642c57e9542dbb8d15a7788d41d5872b144cb19319c63 +TEST= 216 +KEY= 4c588f405da89d718f22b7379c18e8e96bf58e4e2ce45f00 +IV= aea642c57e9542dbb8d15a7788d41d5872b144cb19319c63 +PT= f5682521cc8c2244d12265c6dacdca4bb4f65cc7f7dc3b97 +CT= 25531a66d52d66587bd6015e277250468bd11ae128f52618 +TEST= 217 +KEY= 690b95268885fb29f4f4b669bb6ab8afe02494af04117918 +IV= 25531a66d52d66587bd6015e277250468bd11ae128f52618 +PT= ed5a02efb3e5d2340c1cbda3452602641cc313b468a9775d +CT= 58c533f9177af48aa0b305e3c217adbbbeb135a5a46e8111 +TEST= 218 +KEY= 31cea6df9fff0fa35447b38a797d15145e95a10aa07ff809 +IV= 58c533f9177af48aa0b305e3c217adbbbeb135a5a46e8111 +PT= f5bc3ea1278b1c4bd2f3c4714e5aae5e00f2a2f839316dd6 +CT= 612d30d85c0a0f463c4073be12f5d3034e608796a040911c +TEST= 219 +KEY= 50e39607c3f500e56807c0346b88c61710f5269c003f6915 +IV= 612d30d85c0a0f463c4073be12f5d3034e608796a040911c +PT= 421a5d4954bdca314a28e76877aaa29ebf9b9d2e223dc871 +CT= eb443a1485c3ef7cf412e30950a5fabdf602fbdf80f3e0cc +TEST= 220 +KEY= bba7ac134636ef999c15233d3b2d3caae6f7dd4380cc89d9 +IV= eb443a1485c3ef7cf412e30950a5fabdf602fbdf80f3e0cc +PT= deafdccbadda8867c01d8e192f40a40515b15f61f4396bae +CT= 882d04566a9a05323e30c30a71b5532b72bd4c3a3a04b058 +TEST= 221 +KEY= 338aa8452caceaaba225e0374a986f81944a9179bac83981 +IV= 882d04566a9a05323e30c30a71b5532b72bd4c3a3a04b058 +PT= 28cb23a5fcd46267a5b60563b4898c4b2418303736438ce4 +CT= 759a92375a0b20aa73d5ee144311566780478f242b30af62 +TEST= 222 +KEY= 46103a7276a7ca01d1f00e23098939e6140d1e5d91f896e3 +IV= 759a92375a0b20aa73d5ee144311566780478f242b30af62 +PT= c2e7f986e3e45fc6a21407d090a6a65c808a8a3253c77d49 +CT= 08f4034c4df1f6ee37a9f131b80f1654506003ddde5902bb +TEST= 223 +KEY= 4ee4393e3b563cefe659ff12b1862fb2446d1d804fa19458 +IV= 08f4034c4df1f6ee37a9f131b80f1654506003ddde5902bb +PT= 00d2e00c7340ace1bb93af9ebafb414e4761d126648371b6 +CT= 4426c80ea998ecdc577e2dd47ab06a010919fe430d9772fe +TEST= 224 +KEY= 0ac2f13092ced033b127d2c6cb3645b34d74e3c34236e6a6 +IV= 4426c80ea998ecdc577e2dd47ab06a010919fe430d9772fe +PT= 94925c71cf145be873d91042acfa5efc3d2e2fccc880c49d +CT= 9f633c05458f81db9cccaaac470fe4969482f54a8fd86926 +TEST= 225 +KEY= 95a1cd35d74151e82deb786a8c39a125d9f61689cdee8f80 +IV= 9f633c05458f81db9cccaaac470fe4969482f54a8fd86926 +PT= d9614305d9d3345ed1a0ddc09b901593d8496133da60a1d6 +CT= f2d942e95997b54352750a5f1b2e7d9525b6b7c866eaa226 +TEST= 226 +KEY= 67788fdc8ed6e4ab7f9e72359717dcb0fc40a141ab042da6 +IV= f2d942e95997b54352750a5f1b2e7d9525b6b7c866eaa226 +PT= 0111a323473703babfde62a0d55d05400d1586709576f2d2 +CT= 7ad5ef5c85b26384f08a25fe8cabc29523f41c726ce7920e +TEST= 227 +KEY= 1dad60800b64872f8f1457cb1bbc1e25dfb4bd33c7e3bfa8 +IV= 7ad5ef5c85b26384f08a25fe8cabc29523f41c726ce7920e +PT= db028b4ca28f9ad789ddc316861cd04b3ce11394f7453364 +CT= 6f39f8b50233d1b458e1232a7de5fcb515e8f0153fc9a178 +TEST= 228 +KEY= 729498350957569bd7f574e16659e290ca5c4d26f82a1ed0 +IV= 6f39f8b50233d1b458e1232a7de5fcb515e8f0153fc9a178 +PT= 0f701abad847d0bfa0e23504f49898aeb4ba1798c72a21fe +CT= b5dfca05b0c012add2869696a5a5e54d6ba51a2dc1bef5d1 +TEST= 229 +KEY= c74b5230b99744360573e277c3fc07dda1f9570b3994eb01 +IV= b5dfca05b0c012add2869696a5a5e54d6ba51a2dc1bef5d1 +PT= cc51564c80bea858c384de184ed0a30e69507f85c05b9f88 +CT= 01c212f26c03c8e6127e2d08db0dedc0f3923153afc46a5d +TEST= 230 +KEY= c68940c2d5948cd0170dcf7f18f1ea1d526b66589650815c +IV= 01c212f26c03c8e6127e2d08db0dedc0f3923153afc46a5d +PT= 6ea8e568e44f7ab5e7d9e190317089ca76c118afd9f143ae +CT= bc2e5daee7ef78c87df641f03f23ca06e3c822121be439c4 +TEST= 231 +KEY= 7aa71d6c327bf4186afb8e8f27d2201bb1a3444a8db4b898 +IV= bc2e5daee7ef78c87df641f03f23ca06e3c822121be439c4 +PT= af711252cd65ee6c87969c28c92e6b434e0bde0478f20d46 +CT= d77213d759dee7992e0fd6be42d90a5e5cdf2b82ea901705 +TEST= 232 +KEY= add50ebb6ba5138144f45831650b2a45ed7c6fc86724af9d +IV= d77213d759dee7992e0fd6be42d90a5e5cdf2b82ea901705 +PT= 8b59e3dd56fc4c4fb5797f4eb4bd32ba1fe137f7a18d2aaa +CT= ac4a96f5eeb512de2c0853ed6f87d0218bda0e057718ecf6 +TEST= 233 +KEY= 019f984e8510015f68fc0bdc0a8cfa6466a661cd103c436b +IV= ac4a96f5eeb512de2c0853ed6f87d0218bda0e057718ecf6 +PT= 853eca314d091b274fe1b6cb983dc0628c6f5db24a05e1c0 +CT= af508380c723ffae1859d93517ca4a3a0638f7bfe087afc0 +TEST= 234 +KEY= aecf1bce4233fef170a5d2e91d46b05e609e9672f0bbecab +IV= af508380c723ffae1859d93517ca4a3a0638f7bfe087afc0 +PT= 16230a910203e8a921c11881173b50fc2c63e6e70b0b01a2 +CT= c19850e14da1784695f2bed59f5a0aea2ca565bd13ea1d7d +TEST= 235 +KEY= 6f574b2f0f9286b7e5576c3c821cbab44c3bf3cfe351f1d6 +IV= c19850e14da1784695f2bed59f5a0aea2ca565bd13ea1d7d +PT= 9ec4751826c8d1a5c0d7d476365ed60ca764bca74ab2211a +CT= 6bc097decc193cd2bfb3c8cf179f69fcd6f7dcf390903849 +TEST= 236 +KEY= 0497dcf1c38bba655ae4a4f39583d3489acc2f3c73c1c99f +IV= 6bc097decc193cd2bfb3c8cf179f69fcd6f7dcf390903849 +PT= 362907b187aaab14458d4be8eb4397066fd99d77406b563d +CT= b8d154c27cc05ca755985f215136122eb7e83a6010757934 +TEST= 237 +KEY= bc468833bf4be6c20f7cfbd2c4b5c1662d24155c63b4b0ab +IV= b8d154c27cc05ca755985f215136122eb7e83a6010757934 +PT= 2547ac796b55083a550e62364674337b5e2fa4f057bf01a6 +CT= 751f5e94de0145ffb41a44397bf83175df926e4c8aa37e04 +TEST= 238 +KEY= c959d6a7614aa33dbb66bfebbf4df013f2b67b10e917ceaf +IV= 751f5e94de0145ffb41a44397bf83175df926e4c8aa37e04 +PT= 97e606634404ef4b10cd16c611ddbb85f05ad985d2045fb1 +CT= 24cc64927850d1e4aafb9c6a9958be2149023ce688dba0e7 +TEST= 239 +KEY= ed95b235191a72d9119d238126154e32bbb447f661cc6e48 +IV= 24cc64927850d1e4aafb9c6a9958be2149023ce688dba0e7 +PT= 59bb7ba77194a044b61b5e11e3ecfec502b358dc721ea790 +CT= d0d587d33b6d743303ebf1469946aec2423ed1df7aca8fc6 +TEST= 240 +KEY= 3d4035e6227706ea1276d2c7bf53e0f0f98a96291b06e18e +IV= d0d587d33b6d743303ebf1469946aec2423ed1df7aca8fc6 +PT= 34062f8730ad5e5e62e7746d4fce60dcf91693bf71cfecf1 +CT= f57b5fe2522eae72d9a9b9c572a441a9511467f55c3c05a4 +TEST= 241 +KEY= c83b6a047059a898cbdf6b02cdf7a159a89ef1dc473ae42a +IV= f57b5fe2522eae72d9a9b9c572a441a9511467f55c3c05a4 +PT= 1768624148a15833f4a09c4954692056adb1443b39059df6 +CT= 234711acc669ada331b51fd4d5e6ff0880a1ed414c8c2fe6 +TEST= 242 +KEY= eb7c7ba8b630053bfa6a74d618115e51283f1c9d0bb6cbcc +IV= 234711acc669ada331b51fd4d5e6ff0880a1ed414c8c2fe6 +PT= e29b29f49c54c988fbc7eca011611a188cfc80e1863e2524 +CT= 0a99be1923cb7278cf10119235c71168d56343e8fc4779a7 +TEST= 243 +KEY= e1e5c5b195fb7743357a65442dd64f39fd5c5f75f7f1b26b +IV= 0a99be1923cb7278cf10119235c71168d56343e8fc4779a7 +PT= fe086372491271ca5bd4100987ae5962f346c9187412e935 +CT= 6f495f8a7297d0e64ec566845c75edacd547144e1c987114 +TEST= 244 +KEY= 8eac9a3be76ca7a57bbf03c071a3a295281b4b3beb69c37f +IV= 6f495f8a7297d0e64ec566845c75edacd547144e1c987114 +PT= 69a3dfd2138b4969b91e7e9c0e53abf87d5b6c4d148651b5 +CT= dca38ff558e23a747127b50a99e5b46bda7f7f489eb97989 +TEST= 245 +KEY= 520f15cebf8e9dd10a98b6cae84616fef264347375d0baf6 +IV= dca38ff558e23a747127b50a99e5b46bda7f7f489eb97989 +PT= 8c291c3981f9c84bf2f5a11e92de0442e07625175954fc79 +CT= e8d14e63dc557e6d267fe4619fd0f6d56f64c78e104be4cb +TEST= 246 +KEY= bade5bad63dbe3bc2ce752ab7796e02b9d00f3fd659b5e3d +IV= e8d14e63dc557e6d267fe4619fd0f6d56f64c78e104be4cb +PT= 05546895fab5c1664fb0a2f38b09bbc256641513e57fa5fd +CT= 44cc068f3c1bdbdecfb4251f933a0efc2034bc31eab6419f +TEST= 247 +KEY= fe125d225fc03862e35377b4e4aceed7bd344fcc8f2d1fa2 +IV= 44cc068f3c1bdbdecfb4251f933a0efc2034bc31eab6419f +PT= 378d6b4cfeaa05bf8e47952a7bfa912554676237d9d106fa +CT= a3be0a33213efb0b89da99b63834548ce354691f4e3a2c91 +TEST= 248 +KEY= 5dac57117efec3696a89ee02dc98ba5b5e6026d3c1173333 +IV= a3be0a33213efb0b89da99b63834548ce354691f4e3a2c91 +PT= 6e1ef3b700912be169adb4139b337bd3e42714c4f0e6355e +CT= 48b4cff7b93e37c289dfcba2e17051cdaaa79f1b47164f33 +TEST= 249 +KEY= 151898e6c7c0f4abe35625a03de8eb96f4c7b9c886017c00 +IV= 48b4cff7b93e37c289dfcba2e17051cdaaa79f1b47164f33 +PT= b3334836be422cc8884e1e7b4cb89546925d71a7f4297ef6 +CT= cb3d56aaf7f0fca38903573d1331486d85de5a338e44d2e4 +TEST= 250 +KEY= de25ce4c303008086a55729d2ed9a3fb7119e3fb0845aee4 +IV= cb3d56aaf7f0fca38903573d1331486d85de5a338e44d2e4 +PT= 0e9b81d695a52158882af98eb5f58af040da68f037381a06 +CT= 4c40d53d5bc7a406a06e7e67b9e533e391a6ce755611e499 +TEST= 251 +KEY= 92651b716bf7ac0eca3b0cfa973c9018e0bf2d8e5e544a7d +IV= 4c40d53d5bc7a406a06e7e67b9e533e391a6ce755611e499 +PT= 6f762b61324f3de1e2e3aa34823f542f0fa4b90eb1f698cb +CT= 8cb68b451356f20fc0ea0e3f1c31ebc9482ace4ea8cab5bc +TEST= 252 +KEY= 1ed3903478a15e010ad102c58b0d7bd1a895e3c0f69effc1 +IV= 8cb68b451356f20fc0ea0e3f1c31ebc9482ace4ea8cab5bc +PT= 8d67e3247ed44c7e6e070f6571e4604de07f355ff13a8250 +CT= 0504d1dfd483f583b8645a7db012628dcf940388e945d850 +TEST= 253 +KEY= 1bd741ebac22ab82b2b558b83b1f195c6701e0481fdb2791 +IV= 0504d1dfd483f583b8645a7db012628dcf940388e945d850 +PT= 36297138c9cf3706da810b697c07b31423feb0906c17426f +CT= 0a8a94ae551f2cabbfb90722b197464b4bc65d9144bf655f +TEST= 254 +KEY= 115dd545f93d87290d0c5f9a8a885f172cc7bdd95b6442ce +IV= 0a8a94ae551f2cabbfb90722b197464b4bc65d9144bf655f +PT= b6da13d95a62274c9ad5c0b4ee2464453355f5a62461b21f +CT= 009db93d8a5ce0fb0262cd90e20ec1b81834c28ca692b250 +TEST= 255 +KEY= 11c06c78736167d20f6e920a68869eaf34f37f55fdf6f09e +IV= 009db93d8a5ce0fb0262cd90e20ec1b81834c28ca692b250 +PT= d379a5a54d955b02d3264eb02fa02bd89f942047f8d93554 +CT= a25e14ccc99098ead4e8dbcc1848401a67d699ef7fd77811 +TEST= 256 +KEY= b39e78b4baf1ff38db8649c670cedeb55325e6ba8221888f +IV= a25e14ccc99098ead4e8dbcc1848401a67d699ef7fd77811 +PT= fac578f245d71d010a0a9dd620da50c26c67c086f37628ea +CT= 214c7fd79f0f8aaafb3c308a92c63dc43a3d3536a4fcb66d +TEST= 257 +KEY= 92d2076325fe759220ba794ce208e3716918d38c26dd3ee2 +IV= 214c7fd79f0f8aaafb3c308a92c63dc43a3d3536a4fcb66d +PT= abbc3ca8be5cc2934bfe7a66d8913ec56e81d79bd5f55076 +CT= 963ea47bc9347d8db5570bde18cb5781c6bda28805bba4b6 +TEST= 258 +KEY= 04eca318ecca081f95ed7292fac3b4f0afa5710423669a54 +IV= 963ea47bc9347d8db5570bde18cb5781c6bda28805bba4b6 +PT= f38f820f9001b01f00c016d857284de8baec461c6c7b0581 +CT= 260c05602f431f4abe53e34f7ecc81ee67ef115ae22b44db +TEST= 259 +KEY= 22e0a678c38917552bbe91dd840f351ec84a605ec14dde8f +IV= 260c05602f431f4abe53e34f7ecc81ee67ef115ae22b44db +PT= c74df2604d62c2d5700d4457938ae81b093b4013f9f8c128 +CT= 56e3b20eebb3cec83b53de4fe6d3ff4987c4bf95041c122f +TEST= 260 +KEY= 74031476283ad99d10ed4f9262dcca574f8edfcbc551cca0 +IV= 56e3b20eebb3cec83b53de4fe6d3ff4987c4bf95041c122f +PT= 4e02cac8e36bfc2b11a481c2d99426307e224ba272eab477 +CT= 6439c8ba734ff0291b062c1df8253d2c3ff20ab3adeb951e +TEST= 261 +KEY= 103adccc5b7529b40beb638f9af9f77b707cd57868ba59be +IV= 6439c8ba734ff0291b062c1df8253d2c3ff20ab3adeb951e +PT= 283e3a05d2720de133b372d0547e3dbef46e78a1b219b4d3 +CT= 3e24cd672ac2182624f99f9e64b45adbecf352015b19f437 +TEST= 262 +KEY= 2e1e11ab71b731922f12fc11fe4dada09c8f877933a3ad89 +IV= 3e24cd672ac2182624f99f9e64b45adbecf352015b19f437 +PT= 9c98fd96d33ff95d1615564591dc98132418809387671f9f +CT= 1d6c907ea9a81f5d560ea26283b73db36235c8849de72d53 +TEST= 263 +KEY= 337281d5d81f2ecf791c5e737dfa9013feba4ffdae4480da +IV= 1d6c907ea9a81f5d560ea26283b73db36235c8849de72d53 +PT= 9610741f41dbc1e6160e139dd6567f13f699f457e7fe22a7 +CT= dfdc6d4ff0e69848f65ea5acd53b6a3b1785b43b3fa5c9cb +TEST= 264 +KEY= ecaeec9a28f9b6878f42fbdfa8c1fa28e93ffbc691e14911 +IV= dfdc6d4ff0e69848f65ea5acd53b6a3b1785b43b3fa5c9cb +PT= 09cabcba4bbd2b4fac02301bc6feb2a4262dc5228086d95f +CT= 5a26a1a5c8644d282740850efee324e01d46d1ed984ded96 +TEST= 265 +KEY= b6884d3fe09dfbafa8027ed15622dec8f4792a2b09aca487 +IV= 5a26a1a5c8644d282740850efee324e01d46d1ed984ded96 +PT= f39b33243737893305b30a48698ce9f6f884687fd7ca9df5 +CT= be8b489c415ae519db33e44387f0f4ed50a3079e898255f3 +TEST= 266 +KEY= 080305a3a1c71eb673319a92d1d22a25a4da2db5802ef174 +IV= be8b489c415ae519db33e44387f0f4ed50a3079e898255f3 +PT= c644f3f7b58d9bf4eb2b773321d3db1037e23c993ed3b71b +CT= c7552fc466cf98803a14a3aef581c1469512ee8953c19cba +TEST= 267 +KEY= cf562a67c70886364925393c2453eb6331c8c33cd3ef6dce +IV= c7552fc466cf98803a14a3aef581c1469512ee8953c19cba +PT= cdd3f932512ff2d2db9a4bc8f62e068c8ae08c8eefb74b2f +CT= eac63b10a204bfcc480004d40c46759f1dd8f07c876fba44 +TEST= 268 +KEY= 25901177650c39fa01253de828159efc2c1033405480d78a +IV= eac63b10a204bfcc480004d40c46759f1dd8f07c876fba44 +PT= 72d274641aecbe245b53a5eaea741c3107af5808153c50e3 +CT= a9f36db11a3ef834872aeb327aa658b7c258b39960c45ec5 +TEST= 269 +KEY= 8c637cc67f32c1ce860fd6da52b3c64bee4880d93444894f +IV= a9f36db11a3ef834872aeb327aa658b7c258b39960c45ec5 +PT= f2a6c08ed04022669cc13ba9637f8e55c3ae236cdaed6a29 +CT= 722b6b7536848a1c8d22203767ce53157b05ac999699cca6 +TEST= 270 +KEY= fe4817b349b64bd20b2df6ed357d955e954d2c40a2dd45e9 +IV= 722b6b7536848a1c8d22203767ce53157b05ac999699cca6 +PT= adc8189b8c5b9a79df93570e90d344c82b7f896fe9503e3e +CT= 7624e77a32fdf4cd230a4d0b06efc47854453f4684f3136c +TEST= 271 +KEY= 886cf0c97b4bbf1f2827bbe633925126c1081306262e5685 +IV= 7624e77a32fdf4cd230a4d0b06efc47854453f4684f3136c +PT= 7b8b36d65fdae37c1e59516ccfe56e76fb4f91e2deb9c6a5 +CT= 613c6bc71c8f579bd66e677a2eec550e15f27330d5d51d05 +TEST= 272 +KEY= e9509b0e67c4e884fe49dc9c1d7e0428d4fa6036f3fb4b80 +IV= 613c6bc71c8f579bd66e677a2eec550e15f27330d5d51d05 +PT= 131deb860b7f0e87bfbef803d123c25d9662eae65cf260ea +CT= e9cb9f0579fff1f67f8a036409df181775779dd66ed5a82b +TEST= 273 +KEY= 009b040b1e3b197281c3dff814a11c3fa18dfde09d2ee3ab +IV= e9cb9f0579fff1f67f8a036409df181775779dd66ed5a82b +PT= b93a661f02a5c9c03bcb22d11227018fee6549733886f343 +CT= 3c360550e2e962e1977b07696c5abad5b21c398ffa9c67d5 +TEST= 274 +KEY= 3cad015bfcd27b9316b8d89178fba6ea1391c46f67b2847e +IV= 3c360550e2e962e1977b07696c5abad5b21c398ffa9c67d5 +PT= eb147bd14337c542d667f0cfaf72183e67c302eb4595100a +CT= 0baa08c3a4e1062bde8c87c46e7b167d7d4f10ea420face8 +TEST= 275 +KEY= 3707099858337db8c8345f551680b0976eded48525bd2896 +IV= 0baa08c3a4e1062bde8c87c46e7b167d7d4f10ea420face8 +PT= b82884fbe6329a25fc9ae729c5c942b44a03c208d753c048 +CT= 8bae7cd435a670798814d30e48b94a692182385a445e8093 +TEST= 276 +KEY= bca9754c6d950dc140208c5b5e39fafe4f5cecdf61e3a805 +IV= 8bae7cd435a670798814d30e48b94a692182385a445e8093 +PT= 4cef0949a7a94168078e4d0edf5d61e95e961e7d4ed5f461 +CT= a9f168ac1ce90fce55f0dffc9083b4fdae632cde577d1bad +TEST= 277 +KEY= 15581de0717c020f15d053a7ceba4e03e13fc001369eb3a8 +IV= a9f168ac1ce90fce55f0dffc9083b4fdae632cde577d1bad +PT= a64d4ce094e852bbe5936cde15ea4585a853e0805dbb8a13 +CT= 79f09fed41d8d814127afdcf10bc4a26a81368004a67e8fb +TEST= 278 +KEY= 6ca8820d30a4da1b07aaae68de060425492ca8017cf95b53 +IV= 79f09fed41d8d814127afdcf10bc4a26a81368004a67e8fb +PT= 29a20d9d349f5f1d2ce109863e00d9789704abb99340ef8e +CT= 9efe6953d2f79eb00ddbd5fe7c80bb8a737d6645674e98ad +TEST= 279 +KEY= f256eb5ee25344ab0a717b96a286bfaf3a51ce441bb7c3fe +IV= 9efe6953d2f79eb00ddbd5fe7c80bb8a737d6645674e98ad +PT= 21080c5e019c3f4039ad905ccae84b26035234256510dea3 +CT= d5dd8cab006dc698dcfb18410a69b83e0e3e5ff19b237310 +TEST= 280 +KEY= 278b67f5e23e8233d68a63d7a8ef0791346f91b58094b0ee +IV= d5dd8cab006dc698dcfb18410a69b83e0e3e5ff19b237310 +PT= c0b8594502044e2420fa467f2d5558df6cfb59b48f74c344 +CT= 754f10f6e2f65fa0d0829e853db6e719155aee62556ad2ef +TEST= 281 +KEY= 52c4770300c8dd930608fd529559e08821357fd7d5fe6201 +IV= 754f10f6e2f65fa0d0829e853db6e719155aee62556ad2ef +PT= 39e245e8142817b8e0eb014970edda4482a3d6678fc5930c +CT= 83215336cdca5dfbf7a1cbb282134dcc91a2f31126e604c1 +TEST= 282 +KEY= d1e52435cd028068f1a936e0174aad44b0978cc6f31866c0 +IV= 83215336cdca5dfbf7a1cbb282134dcc91a2f31126e604c1 +PT= e0d99b9c7962910882bb251045924498f6d85b345e3efc9a +CT= ae98b6224ea569ade89c557ebdd9d6902fcf848bfc93a8e8 +TEST= 283 +KEY= 7f7d921783a7e9c51935639eaa937bd49f58084d0f8bce28 +IV= ae98b6224ea569ade89c557ebdd9d6902fcf848bfc93a8e8 +PT= a01bbe2ea4c2558ccc7d5d23c09de0c122231caaa5f33c6a +CT= 27b546f35c7d7e69422d4ab1496da938e836e9325cd96471 +TEST= 284 +KEY= 58c8d4e4dfda97ac5b18292fe3fed2ec776ee17f5352aa59 +IV= 27b546f35c7d7e69422d4ab1496da938e836e9325cd96471 +PT= aff1c3c9bb66b14766fddb46d734f1d4195fd934dbdcb70f +CT= b315995fefee432ac417294bb71ffb048b1af317d021ac8b +TEST= 285 +KEY= ebdd4dbb3034d4869f0f006454e129e8fc741268837306d2 +IV= b315995fefee432ac417294bb71ffb048b1af317d021ac8b +PT= b2c5531220556a5a535cfd4cea38951799b4eeeda946876a +CT= 35776f8a1319e810d223989b61a0fb4ccc1a06601bde5c46 +TEST= 286 +KEY= deaa2231232d3c964d2c98ff3541d2a4306e140898ad5a94 +IV= 35776f8a1319e810d223989b61a0fb4ccc1a06601bde5c46 +PT= 41ec8f99c168a75e5a062a41349f5d8f46e0b7272269fcef +CT= 3ae08670fc0297e9e336053ecead17c334deb495cacced28 +TEST= 287 +KEY= e44aa441df2fab7fae1a9dc1fbecc56704b0a09d5261b7bc +IV= 3ae08670fc0297e9e336053ecead17c334deb495cacced28 +PT= f7876cecd0f782b745eaf2b97ae2a05ec432a0e8592e91ca +CT= 7895e31b741a63c99ce2bb2f7c56d43fc3109fcf2dc73cba +TEST= 288 +KEY= 9cdf475aab35c8b632f826ee87ba1158c7a03f527fa68b06 +IV= 7895e31b741a63c99ce2bb2f7c56d43fc3109fcf2dc73cba +PT= 8c33e48907334c43e92ec9e9f6f44718c976e673779dc343 +CT= 18f7a8e3c4ddf45203d7ba266a2bb8fb05421f4cc8267b9a +TEST= 289 +KEY= 8428efb96fe83ce4312f9cc8ed91a9a3c2e2201eb780f09c +IV= 18f7a8e3c4ddf45203d7ba266a2bb8fb05421f4cc8267b9a +PT= fe2f1a3ce2378524dd76e66c3e6146c725ae574478e2c3e7 +CT= 57a621eaa2d549b85d478b470c8d3cb39e17af2a0b5a9da7 +TEST= 290 +KEY= d38ece53cd3d755c6c68178fe11c95105cf58f34bcda6d3b +IV= 57a621eaa2d549b85d478b470c8d3cb39e17af2a0b5a9da7 +PT= 66f5254efc2f343cd836623b9e36fdd7f4b8c1b71e7ba512 +CT= dd114f44c5806ed0d9cd9ea7d3d2e4f85a6e51f5de2d9044 +TEST= 291 +KEY= 0e9f811708bd1b8cb5a5892832ce71e8069bdec162f7fd7f +IV= dd114f44c5806ed0d9cd9ea7d3d2e4f85a6e51f5de2d9044 +PT= b9531a48c35625375379b1d824b09af523f4d1c90a367ad7 +CT= bead805f74a9b18fd1ea4876504047922dc36c643f57126e +TEST= 292 +KEY= b03201487c14aa03644fc15e628e367a2b58b2a55da0ef11 +IV= bead805f74a9b18fd1ea4876504047922dc36c643f57126e +PT= 2ad03e99b326555edb8452ca7b00c7b45b950d6795ff8445 +CT= 431492be8861e1f6e668be86a141d92f191b334bac17cf41 +TEST= 293 +KEY= f32693f6f4754bf582277fd8c3cfef55324381eef1b72050 +IV= 431492be8861e1f6e668be86a141d92f191b334bac17cf41 +PT= 6b25a5086ed9ca6c6c3dde0b5b66a4db81c96cd0a11e63b4 +CT= cc4473e7d0f2c6033383a2f9a6612c51412a121f78bc7768 +TEST= 294 +KEY= 3f62e01124878df6b1a4dd2165aec304736993f1890b5738 +IV= cc4473e7d0f2c6033383a2f9a6612c51412a121f78bc7768 +PT= caa05d2a8f59f9dea5f74877aa1bd7fa73e39ee995dd4fc6 +CT= 034e5d2afe00518a47a85afd25c9db1fc7065cf4fbb3c628 +TEST= 295 +KEY= 3c2cbd3bda87dc7cf60c87dc4067181bb46fcf0572b89110 +IV= 034e5d2afe00518a47a85afd25c9db1fc7065cf4fbb3c628 +PT= cd6f20e39e00456534270729ed3368b2b2e473539bd55448 +CT= 5b84348e8d4d7c31e845bd469f4fcd939ad7616e1b4d27d6 +TEST= 296 +KEY= 67a889b557caa04d1e493a9adf28d5882eb8ae6b69f5b6c6 +IV= 5b84348e8d4d7c31e845bd469f4fcd939ad7616e1b4d27d6 +PT= a425a4e585afab1e20533f510157cd8df96cb8ae7f5358a2 +CT= 3c879e2aedd9c9798f9f3138e49a23dc8ced3be74c6b1dd1 +TEST= 297 +KEY= 5b2f179fba13693491d60ba23bb2f654a255958c259eab17 +IV= 3c879e2aedd9c9798f9f3138e49a23dc8ced3be74c6b1dd1 +PT= db7bb1d00a584d47ddb819a7ba84844a4ba4e3df4bdbbf7f +CT= 3784403917b5398a67ab288a77e38239f39d05413e57bd72 +TEST= 298 +KEY= 6cab57a6ada650bef67d23284c51746d51c890cd1bc91665 +IV= 3784403917b5398a67ab288a77e38239f39d05413e57bd72 +PT= 9693c2e324860cdb782005a071e8e4fb535d63a6bcee419c +CT= 0c0c44a983db1fa383da9e5289d3237ffc8dca2b0d977ba8 +TEST= 299 +KEY= 60a7130f2e7d4f1d75a7bd7ac5825712ad455ae6165e6dcd +IV= 0c0c44a983db1fa383da9e5289d3237ffc8dca2b0d977ba8 +PT= 7586b98727300ebccb60e3152032b08835de9828259c6bad +CT= 5db39bb85b9de0e44bf667f90013957dc902fb9197ad990a +TEST= 300 +KEY= 3d1488b775e0aff93e51da83c591c26f6447a17781f3f4c7 +IV= 5db39bb85b9de0e44bf667f90013957dc902fb9197ad990a +PT= 2a166d23dc42c00fc6282268ff504a907175454372feb488 +CT= 30bde76f19b37d672b2c576f67f6ea858ab885bc7ef367bb +TEST= 301 +KEY= 0da96fd86c53d29e157d8deca26728eaeeff24cbff00937c +IV= 30bde76f19b37d672b2c576f67f6ea858ab885bc7ef367bb +PT= af301aad70a382ee010f0c87134e1061a6ffcbcfa8096a98 +CT= f5c328b2d126fbadb496a0acfbb357b9ee05d48e1d23e378 +TEST= 302 +KEY= f86a476abd752933a1eb2d4059d47f5300faf045e2237004 +IV= f5c328b2d126fbadb496a0acfbb357b9ee05d48e1d23e378 +PT= 7873d052328735e7fb20dc45eb8cfec1547946589441da26 +CT= f0a36d2ef6a8d708d6f4b0366ebe1f92abd542784053a389 +TEST= 303 +KEY= 08c92a444bddfe3b771f9d76376a60c1ab2fb23da270d38d +IV= f0a36d2ef6a8d708d6f4b0366ebe1f92abd542784053a389 +PT= 629baf0ad04a54ab28431f7e64e80d35b8c5997bf41c2134 +CT= 07347e3bcf19d18fc07a530002b37101f66f7f8abde09b3f +TEST= 304 +KEY= 0ffd547f84c42fb4b765ce7635d911c05d40cdb71f9048b2 +IV= 07347e3bcf19d18fc07a530002b37101f66f7f8abde09b3f +PT= 70a37473e6babaeef13a48a9b58d3df5a23a4a72dc3a8345 +CT= 28f23b0c5976e5a24f582e8bffb57eb731dd71e72996f3cf +TEST= 305 +KEY= 270f6f73ddb2ca16f83de0fdca6c6f776c9dbc503606bb7d +IV= 28f23b0c5976e5a24f582e8bffb57eb731dd71e72996f3cf +PT= af3bdc7ccb2de2049c51489dd7c0bc39dd76b2d400a0e82c +CT= 4387f461ead2766aa8a1d29943ea563f9634afcae574f8d6 +TEST= 306 +KEY= 64889b123760bc7c509c326489863948faa9139ad37243ab +IV= 4387f461ead2766aa8a1d29943ea563f9634afcae574f8d6 +PT= 2613d3103888975e961a5448a4becec9adeede70e99223e6 +CT= 79c0f3903701a1f3a729fc813eb583b40f40bf228426433f +TEST= 307 +KEY= 1d48688200611d8ff7b5cee5b733bafcf5e9acb857540094 +IV= 79c0f3903701a1f3a729fc813eb583b40f40bf228426433f +PT= 7960406dc41676ddc41f74433cefc69cc6727ddbafe337be +CT= cca233f8f0aa46b7f2a734c52f8af25e440d75c50da1cc4a +TEST= 308 +KEY= d1ea5b7af0cb5b380512fa2098b948a2b1e4d97d5af5ccde +IV= cca233f8f0aa46b7f2a734c52f8af25e440d75c50da1cc4a +PT= 998892e2fec8e23cdca8706c8269aa1f3799441d14a01647 +CT= ec6819ae23ddbf6244981bfc922f33f18c1e9419b3209559 +TEST= 309 +KEY= 3d8242d4d316e45a418ae1dc0a967b533dfa4d64e9d55987 +IV= ec6819ae23ddbf6244981bfc922f33f18c1e9419b3209559 +PT= 4aa66b1964d7e386fa00d0252c36dbf64fd557a40b209f6a +CT= e7f5f4df6a7ab63a099a3b7f8b87989233699679268369f8 +TEST= 310 +KEY= da77b60bb96c52604810daa38111e3c10e93db1dcf56307f +IV= e7f5f4df6a7ab63a099a3b7f8b87989233699679268369f8 +PT= 4663eff33ab35bf1e6446748cf032bed5f421292e38480a6 +CT= 470b2576ec2c72b4bf15c48b04ab257e85ff991bbc8d7228 +TEST= 311 +KEY= 9d7c937d554020d4f7051e2885bac6bf8b6c420673db4257 +IV= 470b2576ec2c72b4bf15c48b04ab257e85ff991bbc8d7228 +PT= 1252662bfae2d72f98c8e01ae1c28fc7559f326753f74125 +CT= f770c63ec55c1a3fd8b05774aa2052495dedc553235c32f7 +TEST= 312 +KEY= 6a0c5543901c3aeb2fb5495c2f9a94f6d6818755508770a0 +IV= f770c63ec55c1a3fd8b05774aa2052495dedc553235c32f7 +PT= a27a6d2cc4823db112f450e30e426ab8c7c89e886d250e3b +CT= 80b0ef1ab4578b099ea8eabddee09cafe14c153472199507 +TEST= 313 +KEY= eabcba59244bb1e2b11da3e1f17a085937cd9261229ee5a7 +IV= 80b0ef1ab4578b099ea8eabddee09cafe14c153472199507 +PT= c7d097b16cf33241d5a37816525201b64200da1246eb6797 +CT= 31ef29a60cb2e3469e050f7764ad43465789d51265972767 +TEST= 314 +KEY= db5393ff28f952a42f18ac9695d74b1f604447734709c2c0 +IV= 31ef29a60cb2e3469e050f7764ad43465789d51265972767 +PT= d63b7dd2c389851637790e56a97e9fec2dfadef9e54801a0 +CT= dfffcbbff3cbe384c384ef6cac72fc9c2034d0a1a96e9dbc +TEST= 315 +KEY= 04ac5840db32b120ec9c43fa39a5b783407097d2ee675f7c +IV= dfffcbbff3cbe384c384ef6cac72fc9c2034d0a1a96e9dbc +PT= d8e82885366c1d38da52da7fad0ea71f4ce4638f7edc023e +CT= 81beec30175643131c7cf2f31dc8d7ebfb190c81e6cbd111 +TEST= 316 +KEY= 8512b470cc64f233f0e0b109246d6068bb699b5308ac8e6d +IV= 81beec30175643131c7cf2f31dc8d7ebfb190c81e6cbd111 +PT= ff5f92d2f15fca736d462d91ec829712b6be3515cfbf2307 +CT= 7ca373cb5f1567fd5813b15e7da8c637fb6f61a621d8ecf6 +TEST= 317 +KEY= f9b1c7bb937195cea8f3005759c5a65f4006faf52974629b +IV= 7ca373cb5f1567fd5813b15e7da8c637fb6f61a621d8ecf6 +PT= c43e7b4d442e639a7b7cd40a81a4672b39e525abbc6cb1d9 +CT= db4d2fe74bc78cf6bd9a0c776f6f0adc6c5f2736c9361414 +TEST= 318 +KEY= 22fce85cd8b6193815690c2036aaac832c59ddc3e042768f +IV= db4d2fe74bc78cf6bd9a0c776f6f0adc6c5f2736c9361414 +PT= 1dc1064a082685a28bddb8231714664a6ad12a64d2f0468b +CT= 902440a69494b0389dcae72baf01391b2deb0c8a8504c54b +TEST= 319 +KEY= b2d8a8fa4c22a90088a3eb0b99ab959801b2d1496546b3c4 +IV= 902440a69494b0389dcae72baf01391b2deb0c8a8504c54b +PT= b44820204c0a98112f6efde3d6e2b3f2989f6cf974ba4e01 +CT= f6038e3a929d35762cd30b3d01539a733a1bdba11e3318cd +TEST= 320 +KEY= 44db26c0debf9c76a470e03698f80feb3ba90ae87b75ab09 +IV= f6038e3a929d35762cd30b3d01539a733a1bdba11e3318cd +PT= c84d39c3ad93604b31bc517519606a41b3c70a8a56d856d1 +CT= 6b78c73121342ddaa430f86fdf774bbba4cf976ba2eba4e4 +TEST= 321 +KEY= 2fa3e1f1ff8bb1ac00401859478f44509f669d83d99e0fed +IV= 6b78c73121342ddaa430f86fdf774bbba4cf976ba2eba4e4 +PT= 5897f1ede3c4394a27d240faf8df7fb31fb9116506e91c9c +CT= fddb6c34ec69a93f65a1ee6184fd4e4f2a56725e02372c01 +TEST= 322 +KEY= d2788dc513e2189365e1f638c3720a1fb530efdddba923ec +IV= fddb6c34ec69a93f65a1ee6184fd4e4f2a56725e02372c01 +PT= 551966c5ef72bcb4a451a6f251a3c9f56986208445316982 +CT= d83d33d71b645bb12e9e011e2f860be1a3c20c85c123ddfb +TEST= 323 +KEY= 0a45be12088643224b7ff726ecf401fe16f2e3581a8afe17 +IV= d83d33d71b645bb12e9e011e2f860be1a3c20c85c123ddfb +PT= 9c9d328e7a6a1c57b410a27e802e3a368cb44422b8d26fe3 +CT= 8c80e93b1d694ab358b0d48edea4ab45b85565ce9d800580 +TEST= 324 +KEY= 86c5572915ef099113cf23a83250aabbaea78696870afb97 +IV= 8c80e93b1d694ab358b0d48edea4ab45b85565ce9d800580 +PT= 8c26d0cb96b6410d1f1c45b81168a227f3e17490d7d6073e +CT= d3c5f97251496481264818d6fab36dd1a6b56ea60576317e +TEST= 325 +KEY= 5500ae5b44a66d1035873b7ec8e3c76a0812e830827ccae9 +IV= d3c5f97251496481264818d6fab36dd1a6b56ea60576317e +PT= f1c67a34c72dd8f0f89271afce0f9049cdba441c9072179a +CT= 72c6a1300b3fb32b590ea8d8650f12ee959dfb3bfce7a4a6 +TEST= 326 +KEY= 27c60f6b4f99de3b6c8993a6adecd5849d8f130b7e9b6e4f +IV= 72c6a1300b3fb32b590ea8d8650f12ee959dfb3bfce7a4a6 +PT= c45aeb352605028690d4826f3609704ca3f7414d80b5be57 +CT= 13b90892d118b2d12e08906ba40aff4c6a08bc3b8dd4e3d0 +TEST= 327 +KEY= 347f07f99e816cea428103cd09e62ac8f787af30f34f8d9f +IV= 13b90892d118b2d12e08906ba40aff4c6a08bc3b8dd4e3d0 +PT= 3815284dde8e2aa33ddd3808722b6e11d15577cdba2abd54 +CT= 91fdf5fc9aabfd2810686a8f3460c9a220acccb2ad682a02 +TEST= 328 +KEY= a582f205042a91c252e969423d86e36ad72b63825e27a79d +IV= 91fdf5fc9aabfd2810686a8f3460c9a220acccb2ad682a02 +PT= e118290641d08e12ae56bcaebc473d3ae20a2932e0f489ab +CT= 36be3aa0aba10a4913b98fe926367ed2ed73ff3893c50307 +TEST= 329 +KEY= 933cc8a5af8b9b8b4150e6ab1bb09db83a589cbacde2a49a +IV= 36be3aa0aba10a4913b98fe926367ed2ed73ff3893c50307 +PT= 3ef9187e38cdec026df302a43193dedc09b4e2bd4481b4a5 +CT= c4468137be901cb32545c2876e1319dc3356970422513f0b +TEST= 330 +KEY= 577a4992111b87386415242c75a38464090e0bbeefb39b91 +IV= c4468137be901cb32545c2876e1319dc3356970422513f0b +PT= 8a03aebf320e6b03fd3277d7d4c827b49ae3f30c663b678a +CT= 50451d509fd8eb490c276a961ad10959594662f25cdbd13d +TEST= 331 +KEY= 073f54c28ec36c7168324eba6f728d3d5048694cb3684aac +IV= 50451d509fd8eb490c276a961ad10959594662f25cdbd13d +PT= cb39528aa78da6cd2007539094c3685c817fdee3ef7c35b4 +CT= 7225fbd1f75eea9eea454a08dea90b5e6f32a6b697d1bb1c +TEST= 332 +KEY= 751aaf13799d86ef827704b2b1db86633f7acffa24b9f1b0 +IV= 7225fbd1f75eea9eea454a08dea90b5e6f32a6b697d1bb1c +PT= 85235b4c411fe73871c9bcbd3b07eec0d16a70b72cf639e7 +CT= 4c165bf582a4b6c171597e8bdb29dbd4116331862358cbf2 +TEST= 333 +KEY= 390cf4e6fb39302ef32e7a396af25db72e19fe7c07e13a42 +IV= 4c165bf582a4b6c171597e8bdb29dbd4116331862358cbf2 +PT= 6ca71ebc706247da64ae32f704e574ea3d2e961fe7af064b +CT= a82e583a997e8be5ce64723479f423d402dded1f8f5469da +TEST= 334 +KEY= 9122acdc6247bbcb3d4a080d13067e632cc4136388b55398 +IV= a82e583a997e8be5ce64723479f423d402dded1f8f5469da +PT= 75fcbe69fb709c7db2011ef4b65d82eda4a88dceea9520df +CT= f6de85eaf0b886475808bd1372dfaff9f7a86afc4f1de3ef +TEST= 335 +KEY= 67fc293692ff3d8c6542b51e61d9d19adb6c799fc7a8b077 +IV= f6de85eaf0b886475808bd1372dfaff9f7a86afc4f1de3ef +PT= a1c7dfc81e15089b57f47e9f31e850ed0bb40979ea702959 +CT= da61e23a59c4cc19e0f6abfbd09881685889d6ae3766955a +TEST= 336 +KEY= bd9dcb0ccb3bf19585b41ee5b14150f283e5af31f0ce252d +IV= da61e23a59c4cc19e0f6abfbd09881685889d6ae3766955a +PT= c7f9dd42dcee79e7555dd7a308b51b8ef6392fd812746c4c +CT= daf1420c11e43caa5dcea8ee0c3f84c1972036cfcfbf1229 +TEST= 337 +KEY= 676c8900dadfcd3fd87ab60bbd7ed43314c599fe3f713704 +IV= daf1420c11e43caa5dcea8ee0c3f84c1972036cfcfbf1229 +PT= e41ffa02874709c63c8ba329fa193a49fe819e57f4461cf2 +CT= 60dcc242af87ad2156bf4babd32c7e6281b3973076d61ca8 +TEST= 338 +KEY= 07b04b427558601e8ec5fda06e52aa5195760ece49a72bac +IV= 60dcc242af87ad2156bf4babd32c7e6281b3973076d61ca8 +PT= dbf1b20654c410c9b44af1f6962c1bff8321f721006639e5 +CT= f044310e4d328b3fda7907bace847962dfce1ca15cc092cd +TEST= 339 +KEY= f7f47a4c386aeb2154bcfa1aa0d6d3334ab8126f1567b961 +IV= f044310e4d328b3fda7907bace847962dfce1ca15cc092cd +PT= f68012d98dac6b4e79961c8740d08ba7c3985bb8c3ddf4f8 +CT= 2a6f6e8f62bd828693bc25eff0386864785d405a9872748f +TEST= 340 +KEY= dd9b14c35ad769a7c700dff550eebb5732e552358d15cdee +IV= 2a6f6e8f62bd828693bc25eff0386864785d405a9872748f +PT= 3b3435ec05dbf2069d83f492525df27f69ad61ea641d572a +CT= 958c779fe6de7570dbf93398ed993784fd0ccdf9f69da6d4 +TEST= 341 +KEY= 4817635cbc091cd71cf9ec6dbd778cd3cfe99fcc7b886b3a +IV= 958c779fe6de7570dbf93398ed993784fd0ccdf9f69da6d4 +PT= 27afd892a1d4d44298371547efa6bd4480c80bc5e3769337 +CT= 7aeb686c4a56a62685889fc292a1016d3fb90aba59437f02 +TEST= 342 +KEY= 32fc0b30f65fbaf1997173af2fd68dbef050957622cb1438 +IV= 7aeb686c4a56a62685889fc292a1016d3fb90aba59437f02 +PT= a9f2f2db2aa39d6f2a648922b9a0e43ccb4f9318ef3cfaf5 +CT= 881f7db2d94d2a406d90c2d47aa57ceeb65de3f68c08cb67 +TEST= 343 +KEY= bae376822f1290b1f4e1b17b5573f150460d7680aec3df5f +IV= 881f7db2d94d2a406d90c2d47aa57ceeb65de3f68c08cb67 +PT= 0b25fa8eb6d38e20ab2702291d7dcdca67b2246e90e24852 +CT= 424e76a1723ad72b2664abf51dc2f048e159c8fffde02366 +TEST= 344 +KEY= f8ad00235d28479ad2851a8e48b10118a754be7f5323fc39 +IV= 424e76a1723ad72b2664abf51dc2f048e159c8fffde02366 +PT= e7f772241df29fe84082cedcb4642c8ea22ca3b9717c91b6 +CT= b0fa23dd6155ee260c3ba96a634a1f272f25f833697f8852 +TEST= 345 +KEY= 485723fe3c7da9bcdebeb3e42bfb1e3f8871464c3a5c746b +IV= b0fa23dd6155ee260c3ba96a634a1f272f25f833697f8852 +PT= 1097e5fb3e500f7c9beae4d653763a251f47844b776da1d4 +CT= cdbcafa3d95ca6612a3d1378c111f9eadd4f00e05c8dc655 +TEST= 346 +KEY= 85eb8c5de5210fddf483a09ceaeae7d5553e46ac66d1b23e +IV= cdbcafa3d95ca6612a3d1378c111f9eadd4f00e05c8dc655 +PT= 2a4398e8d7c2361d23461b413edf7181ffb6bfffdc7de01d +CT= 0f9ebc107cecebb1ecafaa8deed32c23eae8e679b7f1f2fd +TEST= 347 +KEY= 8a75304d99cde46c182c0a110439cbf6bfd6a0d5d12040c3 +IV= 0f9ebc107cecebb1ecafaa8deed32c23eae8e679b7f1f2fd +PT= 36c48ddf373e9d975b1c6aafe234b56e3a8f884b265fdde2 +CT= 7f7d0e19c75e180d05be6dcdfb2e054999c5e69a7626ac87 +TEST= 348 +KEY= f5083e545e93fc611d9267dcff17cebf2613464fa706ec44 +IV= 7f7d0e19c75e180d05be6dcdfb2e054999c5e69a7626ac87 +PT= 00223c3e6bea33dc114120a391cfb5c912b861c3dcde0cdc +CT= b17a24ce4a71319e1a31f333f31458403b5271e3463bf398 +TEST= 349 +KEY= 44721a9a14e2cdff07a394ef0c0396ff1d4137ace13d1fdc +IV= b17a24ce4a71319e1a31f333f31458403b5271e3463bf398 +PT= 5c60f9da76a9528ef79377d7f2c98d6faed6168602dbd879 +CT= 16e9bad1e1ea00d2c75757d50043962044c463266526bc76 +TEST= 350 +KEY= 529ba04bf508cd2dc0f4c33a0c4000df5985548a841ba3aa +IV= 16e9bad1e1ea00d2c75757d50043962044c463266526bc76 +PT= fc9243a1b0fdd31a28805ff8d3b50945076b72ae4af1de2e +CT= deaf106bae352d1e1b15dddf0494c7d5a6a4808d3a60d8c1 +TEST= 351 +KEY= 8c34b0205b3de033dbe11ee508d4c70aff21d407be7b7b6b +IV= deaf106bae352d1e1b15dddf0494c7d5a6a4808d3a60d8c1 +PT= 107e36be43291061daa73b8f1d06a1440fb406669de44efb +CT= bf4583a67dbfa57cb103350fe73733b6adad6f8d46fb538a +TEST= 352 +KEY= 337133862682454f6ae22beaefe3f4bc528cbb8af88028e1 +IV= bf4583a67dbfa57cb103350fe73733b6adad6f8d46fb538a +PT= db3b0d2bc48cce84e0ba844f9f3ab116640cdd93c107a273 +CT= 840b88bb9b149ddbed14c52e9ef5369cdb57a0650e2d5ab6 +TEST= 353 +KEY= b77abb3dbd96d89487f6eec47116c22089db1beff6ad7257 +IV= 840b88bb9b149ddbed14c52e9ef5369cdb57a0650e2d5ab6 +PT= 396c5232ba5317b23d170dc8149206d84d997db24e11161c +CT= 7b55001c494d56ab29874f8e7c96f514831ed1a81907c84b +TEST= 354 +KEY= cc2fbb21f4db8e3fae71a14a0d8037340ac5ca47efaaba1c +IV= 7b55001c494d56ab29874f8e7c96f514831ed1a81907c84b +PT= 37ab986707dbac220f652ed66cc1023db086b0638c4880f2 +CT= 7682ee303782238a5a5b8a294894657619a2f83bafa995f4 +TEST= 355 +KEY= baad5511c359adb5f42a2b63451452421367327c40032fe8 +IV= 7682ee303782238a5a5b8a294894657619a2f83bafa995f4 +PT= 22b14f801183bffb4ec0db5de0768284cf7173d44364ac10 +CT= 9a41e6fe90aa2faa614001986a2a6ebc52dd6c490c35f6c8 +TEST= 356 +KEY= 20ecb3ef53f3821f956a2afb2f3e3cfe41ba5e354c36d920 +IV= 9a41e6fe90aa2faa614001986a2a6ebc52dd6c490c35f6c8 +PT= 6d4b19586d2a386cbe2f67daaab70eb7571a2f79b7711a9a +CT= 613b293c481107bc1e3f9bf291453867d67001ae06bdd9ff +TEST= 357 +KEY= 41d79ad31be285a38b55b109be7b049997ca5f9b4a8b00df +IV= 613b293c481107bc1e3f9bf291453867d67001ae06bdd9ff +PT= 00cebf84614a91ab0a579e346590574d1a5232e2a3fb1a03 +CT= 376f61f9969c1d9651f81438af6fde5e60d7e2eb65e05f57 +TEST= 358 +KEY= 76b8fb2a8d7e9835daada5311114dac7f71dbd702f6b5f88 +IV= 376f61f9969c1d9651f81438af6fde5e60d7e2eb65e05f57 +PT= 9ab00014bec87113e62188071717e20808225062e5a4f629 +CT= a08cc67b9315706c6cbd93d5b23718500c315ff0af0f5f5d +TEST= 359 +KEY= d6343d511e6be859b61036e4a323c297fb2ce280806400d5 +IV= a08cc67b9315706c6cbd93d5b23718500c315ff0af0f5f5d +PT= 03a3d7a55888ffddf235bf1ce136fd08787a73d9cb118b1b +CT= 358f51286867711caaa8284b34d8b36bee3f793bb903a1d8 +TEST= 360 +KEY= e3bb6c79760c99451cb81eaf97fb71fc15139bbb3967a10d +IV= 358f51286867711caaa8284b34d8b36bee3f793bb903a1d8 +PT= 46d177abb661d82987210ccb273c3bf165a4c2f749c9c7c9 +CT= 14d8fd9ba15eade5463ad9bd46d6f2700b0a7c1d4dcf9e6b +TEST= 361 +KEY= f76391e2d75234a05a82c712d12d838c1e19e7a674a83f66 +IV= 14d8fd9ba15eade5463ad9bd46d6f2700b0a7c1d4dcf9e6b +PT= 30d7c50d92b73c40ff9e9996e3cca3707dee643fafcc7db0 +CT= 408bb767322ebbb51a8fd78f482593409825f2d520eef44d +TEST= 362 +KEY= b7e82685e57c8f15400d109d990810cc863c15735446cb2b +IV= 408bb767322ebbb51a8fd78f482593409825f2d520eef44d +PT= 0ad48dc9f0c9893fbb5b50a0c93d71e831d7dac44d1dcced +CT= 35598433b03566a8d28f9809909883ec8482e05d52aaf6f3 +TEST= 363 +KEY= 82b1a2b65549e9bd928288940990932002bef52e06ec3dd8 +IV= 35598433b03566a8d28f9809909883ec8482e05d52aaf6f3 +PT= c84181f03041aee2b585108ee395b1a1aaf2780513a846df +CT= 76f07dba219f1513572e77227eceb373b4fbbc90e3e014f5 +TEST= 364 +KEY= f441df0c74d6fcaec5acffb6775e2053b64549bee50c292d +IV= 76f07dba219f1513572e77227eceb373b4fbbc90e3e014f5 +PT= bd77d88512141750556c2fa00237f7f042b3512b8aecf7cc +CT= 937a3b1778fda8d2e99333a91f5e566806c840bf4e6255f3 +TEST= 365 +KEY= 673be41b0c2b547c2c3fcc1f6800763bb08d0901ab6e7cde +IV= 937a3b1778fda8d2e99333a91f5e566806c840bf4e6255f3 +PT= 862dc5af2644217a7918524d1a5db5e1107052e89f7c712e +CT= a683b7b929f6af42fba46a60bd087eaa7c7e384621291652 +TEST= 366 +KEY= c1b853a225ddfb3ed79ba67fd5080891ccf331478a476a8c +IV= a683b7b929f6af42fba46a60bd087eaa7c7e384621291652 +PT= 051b3a2a055d2672f12fe25a7f2b696bbce733fbaa475e6e +CT= 132020b559fc95390aa215ee928116e53cda5bbf774982ac +TEST= 367 +KEY= d29873177c216e07dd39b39147891e74f0296af8fd0ee820 +IV= 132020b559fc95390aa215ee928116e53cda5bbf774982ac +PT= b63ce680dd9b92947ed03a455d55a41f8de5e208df793623 +CT= f4eff833c94bbea6ecefff5d5daa99b3d6faae13a4a2e6f5 +TEST= 368 +KEY= 26778b24b56ad0a131d64ccc1a2387c726d3c4eb59ac0ed5 +IV= f4eff833c94bbea6ecefff5d5daa99b3d6faae13a4a2e6f5 +PT= e88c5187a424fd3d51e5cc249662c3a1a18436f22f5ef010 +CT= b4580abad4d31cdf2da94ec8ed9dcb8c58f5155d14593bd6 +TEST= 369 +KEY= 922f819e61b9cc7e1c7f0204f7be4c4b7e26d1b64df53503 +IV= b4580abad4d31cdf2da94ec8ed9dcb8c58f5155d14593bd6 +PT= 0f029b5474cd34ecc93db941fb78c339da939f018efbe0df +CT= 447105510668e77d9de706029c4b9222192454f5ee7af3d1 +TEST= 370 +KEY= d65e84cf67d12b03819804066bf5de6967028543a38fc6d2 +IV= 447105510668e77d9de706029c4b9222192454f5ee7af3d1 +PT= 53b03d8e9e5dda40a962a26626073bd519441eee2a97378e +CT= 252145d828c76a9800d17784a3a38c8802c43b3d23e7de9a +TEST= 371 +KEY= f37fc1174f16419b81497382c85652e165c6be7e80681848 +IV= 252145d828c76a9800d17784a3a38c8802c43b3d23e7de9a +PT= 7f82208586b6c99cffa7787cecbf1fa471561f87f3d709cb +CT= 1b7c9efe82f805490ad75bc3b166ea9a2233ae935baa01a8 +TEST= 372 +KEY= e8035fe9cdee44d28b9e28417930b87b47f510eddbc219e0 +IV= 1b7c9efe82f805490ad75bc3b166ea9a2233ae935baa01a8 +PT= 569408368220480020eda1f30371cf7e81a5469f45d90f05 +CT= d0657e815e7816cddaaa42ab9ec98ddc3724a8df2885aabc +TEST= 373 +KEY= 386621689396521f51346aeae7f935a770d1b832f347b35c +IV= d0657e815e7816cddaaa42ab9ec98ddc3724a8df2885aabc +PT= 98a2a7f815f879133468cc253f3a3d044e5c1fc6aa5d0787 +CT= c193d31be1598991fc66af02f663586d2a33bf23f0a10b41 +TEST= 374 +KEY= f9f5f27372cfdb8ead52c5e8119a6dca5ae2071103e6b81d +IV= c193d31be1598991fc66af02f663586d2a33bf23f0a10b41 +PT= 39b100eb5c53d170811c075ea58bd2acfc4d51b8eca2b6ec +CT= ea17660dd0f764ce6e66b38df65cd72b6cb083ee471f4de6 +TEST= 375 +KEY= 13e2947ea238bf40c3347665e7c6bae1365284ff44f9f5fb +IV= ea17660dd0f764ce6e66b38df65cd72b6cb083ee471f4de6 +PT= efc2dd9cfa61e9026f17ab129119262a89ae0da0496b237f +CT= c446e163dfd27f76b5bd2dfb12c835e5654b231e91384a8d +TEST= 376 +KEY= d7a4751d7deac03676895b9ef50e8f045319a7e1d5c1bf76 +IV= c446e163dfd27f76b5bd2dfb12c835e5654b231e91384a8d +PT= 0477c2349c8b1cf5e3d29797f9071c904d87ed49d9c9073e +CT= d78f88cd2573a26685d30b4c9ce6be356d03cda2e9affbb1 +TEST= 377 +KEY= 002bfdd058996250f35a50d269e831313e1a6a433c6e44c7 +IV= d78f88cd2573a26685d30b4c9ce6be356d03cda2e9affbb1 +PT= 338df4d09c37ba0aa0dd04ec48d9cb365ffa74ee40cc0408 +CT= 4b630737d3513e1dbd4f014ef3fc3fb2881aa7b95f68d7db +TEST= 378 +KEY= 4b48fae78bc85c4d4e15519c9a140e83b600cdfa6306931c +IV= 4b630737d3513e1dbd4f014ef3fc3fb2881aa7b95f68d7db +PT= 692c3309230a6ea84eeb32f066872d34fc81b4e9949c3829 +CT= 41c7d8e84980f4d25c9b80ee235f16014c07f0390a4f688c +TEST= 379 +KEY= 0a8f220fc248a89f128ed172b94b1882fa073dc36949fb90 +IV= 41c7d8e84980f4d25c9b80ee235f16014c07f0390a4f688c +PT= 38bac181ca4e894b635d17e4d679f16688a4bf9681d797bb +CT= e89f06132047e2cc7125b0ee8f85c06d33c7d9a63429403c +TEST= 380 +KEY= e210241ce20f4a5363ab619c36ced8efc9c0e4655d60bbac +IV= e89f06132047e2cc7125b0ee8f85c06d33c7d9a63429403c +PT= 062471026e38b4ca59c039349730e9397f29f7ab7ceb38d2 +CT= a13f054ae313a5ae193992f9c0f7d1f14c5ed1f97935a488 +TEST= 381 +KEY= 432f2156011ceffd7a92f365f639091e859e359c24551f24 +IV= a13f054ae313a5ae193992f9c0f7d1f14c5ed1f97935a488 +PT= 011d675196bc29133ea771f0bd06d975d6820c1af33c24f9 +CT= 1e09fa18ab5b91a86e2b4c1639028ff4a5682fcedb4583fd +TEST= 382 +KEY= 5d26db4eaa477e5514b9bf73cf3b86ea20f61a52ff109cd9 +IV= 1e09fa18ab5b91a86e2b4c1639028ff4a5682fcedb4583fd +PT= b85a0e169937c0a182b7be591ab7adf3d429692417409d8c +CT= c91d26e5dc85792ce58982ce6b3e54764c0b643be25f6e04 +TEST= 383 +KEY= 943bfdab76c20779f1303dbda405d29c6cfd7e691d4ff2dd +IV= c91d26e5dc85792ce58982ce6b3e54764c0b643be25f6e04 +PT= 98f54af3efb6e82ccd0c405860928002fc2b225c2abd9f0c +CT= 2baf95ac254c373bf17db1a3aeed4faee42da52cd6f45254 +TEST= 384 +KEY= bf946807538e3042004d8c1e0ae89d3288d0db45cbbba089 +IV= 2baf95ac254c373bf17db1a3aeed4faee42da52cd6f45254 +PT= ea010dd4f788e4979aa5f2297874d50d07c09201f27cb102 +CT= 36f2515b8d0dd6465c33585fbd8141572c9c17cbb76f9cb6 +TEST= 385 +KEY= 8966395cde83e6045c7ed441b769dc65a44ccc8e7cd43c3f +IV= 36f2515b8d0dd6465c33585fbd8141572c9c17cbb76f9cb6 +PT= 1abf90a41f85cd209782c941dcb35e2d8eb9f582218890a1 +CT= 93fbd289bf664b75e4d054d62efdcf41f51a3af666298d7f +TEST= 386 +KEY= 1a9debd561e5ad71b8ae8097999413245156f6781afdb140 +IV= 93fbd289bf664b75e4d054d62efdcf41f51a3af666298d7f +PT= be04ad61d8075618693f3206a7558e2fb94978b4608a39df +CT= c248ea79db52e884e23e34f605f1a2c3d25b387271281bcf +TEST= 387 +KEY= d8d501acbab745f55a90b4619c65b1e7830dce0a6bd5aa8f +IV= c248ea79db52e884e23e34f605f1a2c3d25b387271281bcf +PT= 6621496261cb60f2caf896b6d1dd8e7eea1aa25c29d265b0 +CT= 8dccbccfc5c06e81e18133f570a8aac07bab8a37dddb99fc +TEST= 388 +KEY= 5519bd637f772b74bb118794eccd1b27f8a6443db60e3373 +IV= 8dccbccfc5c06e81e18133f570a8aac07bab8a37dddb99fc +PT= 7e954f5700d316b095ea3a3b01a7995f32e5c404daebdc66 +CT= 26a6a956c1ebe35081d8d00bb823404de636fff8f0862b55 +TEST= 389 +KEY= 73bf1435be9cc8243ac9579f54ee5b6a1e90bbc546881826 +IV= 26a6a956c1ebe35081d8d00bb823404de636fff8f0862b55 +PT= 9093864cec5963e4fddda7f28bb142cf4b618311e60f05c6 +CT= 36c8e3458de619242429cedc506e20523cf31f0cd7d3fb44 +TEST= 390 +KEY= 4577f770337ad1001ee0994304807b382263a4c9915be362 +IV= 36c8e3458de619242429cedc506e20523cf31f0cd7d3fb44 +PT= f2e5585e2d1bbbd43c19125c1050ff8b0b16f5bc3fe6abc2 +CT= 24401570f4ee3be5af651540a571024f3efa9afdb0d23477 +TEST= 391 +KEY= 6137e200c794eae5b1858c03a1f179771c993e342189d715 +IV= 24401570f4ee3be5af651540a571024f3efa9afdb0d23477 +PT= 47143b66025ad0729dc169564cafc50bb084ce1c6d9b0d66 +CT= ce062e73dfd2506c02cc2f29da92d2b741855e6b0a2233b7 +TEST= 392 +KEY= af31cc731846ba89b349a32a7b63abc05d1c605f2babe4a2 +IV= ce062e73dfd2506c02cc2f29da92d2b741855e6b0a2233b7 +PT= f8d9906d6bc0db216e7e297740cd5fa25a182d96f9a060ff +CT= 5bc775060ea703faa1c51ebebf9ea5f10b604dd11aef7f04 +TEST= 393 +KEY= f4f6b97516e1b973128cbd94c4fd0e31567c2d8e31449ba6 +IV= 5bc775060ea703faa1c51ebebf9ea5f10b604dd11aef7f04 +PT= fd57f1ead320631dcbe9f46c25941de536c111ef21d5e2ea +CT= 1becd7179e10d2428ba3383d6bf91384413804d931dbd11e +TEST= 394 +KEY= ef1a6e6288f16b31992f85a9af041db517442957009f4ab8 +IV= 1becd7179e10d2428ba3383d6bf91384413804d931dbd11e +PT= f461dc1ff6937c868567650f9ef23743c28034ae2c18258d +CT= 5b89f0c489eceba5e00cf149466b7fbc48ce9b2feddefcee +TEST= 395 +KEY= b4939ea6011d8094792374e0e96f62095f8ab278ed41b656 +IV= 5b89f0c489eceba5e00cf149466b7fbc48ce9b2feddefcee +PT= 6fd43697a53a0d1ca12e3b7f3e9f37f7ba3aaab87f57111e +CT= 67093c26a3dff71f92cfe42ddce6cb3a21e0b02f8cc56f49 +TEST= 396 +KEY= d39aa280a2c2778bebec90cd3589a9337e6a02576184d91f +IV= 67093c26a3dff71f92cfe42ddce6cb3a21e0b02f8cc56f49 +PT= e0f371861ada0cbc7fd7cd19f523678ee90d4669d7bebb9b +CT= 0b9663c6a1025625d309942d601ebfe48a46adb375b94bb6 +TEST= 397 +KEY= d80cc14603c021ae38e504e0559716d7f42cafe4143d92a9 +IV= 0b9663c6a1025625d309942d601ebfe48a46adb375b94bb6 +PT= 953e74e5f21921e52cd9ec2e0e7ca21ff36f7ede94dfce7a +CT= 4bfff6f4c81f8a5b605f20cc5caea215c6c51c9bda4b4034 +TEST= 398 +KEY= 93f337b2cbdfabf558ba242c0939b4c232e9b37fce76d29d +IV= 4bfff6f4c81f8a5b605f20cc5caea215c6c51c9bda4b4034 +PT= 0502a74af0c3b1f404f1f5ab929b402149f314a797bb630b +CT= 8c43006579b014ef5e6176d2c9eb6fd721a4eaafecf754bc +TEST= 399 +KEY= 1fb037d7b26fbf1a06db52fec0d2db15134d59d022818621 +IV= 8c43006579b014ef5e6176d2c9eb6fd721a4eaafecf754bc +PT= 862945d32d76252741fdced18a9e20072238cf16d127759e +CT= f1d2d9c198c292a1ac0e41c2492454ddfafa15d5f697e95e diff --git a/flint/test/testvals/cbcme68.txt b/flint/test/testvals/cbcme68.txt new file mode 100644 index 0000000..b8e8a42 --- /dev/null +++ b/flint/test/testvals/cbcme68.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 000000000000000000000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= 357ae0cfdd4e0e90c8c4053cc88aded13a4e14ee9ca6f428 +TEST= 1 +KEY= e390aa6660419cef357ae0cfdd4e0e90c8c4053cc88aded13a4e14ee9ca6f428 +IV= 357ae0cfdd4e0e90c8c4053cc88aded13a4e14ee9ca6f428 +PT= 4bc09c45ac6aaceb5d51d2e1dc345129e390aa6660419cef +CT= ca808ff2b0da2d0f6d10ba8c9e52ac75056fc9c9302b3a81 +TEST= 2 +KEY= 03771ae25902a726fffa6f3d6d94239fa5d4bfb056d872a43f21dd27ac8dcea9 +IV= ca808ff2b0da2d0f6d10ba8c9e52ac75056fc9c9302b3a81 +PT= 26b5b64ff97a4a34f82924123201f20de0e7b08439433bc9 +CT= 3f161a274aa0cda88fa69a62b88181e5cffa12370a50709a +TEST= 3 +KEY= 03508d1c9b59d6d1c0ec751a2734ee372a7225d2ee59f341f0dbcf10a6ddbe33 +IV= 3f161a274aa0cda88fa69a62b88181e5cffa12370a50709a +PT= b00e0791a0f159ab8ea03bd08f5db03e002797fec25b71f7 +CT= 728be562610abe16a10eaf4f760fefdf47988fc288e9bd81 +TEST= 4 +KEY= 2aec1a0c2452811db2679078463e50218b7c8a9d98561c9eb74340d22e3403b2 +IV= 728be562610abe16a10eaf4f760fefdf47988fc288e9bd81 +PT= a74842ea82b747f68faaad21203fb35029bc9710bf0b57cc +CT= abf6d06c433b69719b99691b7a3ed28feb7a24b8ba62b636 +TEST= 5 +KEY= d2d96a1fa398f6f2199140140505395010e5e386e268ce115c39646a9456b584 +IV= abf6d06c433b69719b99691b7a3ed28feb7a24b8ba62b636 +PT= 59aa23fe9913f11e46db037b5c259530f835701387ca77ef +CT= 828b50e7d27a7464d13cb2589ad972b545c4b6d77fb66567 +TEST= 6 +KEY= 4fd24520bcb27f659b1a10f3d77f4d34c1d951de78b1bca419fdd2bdebe0d0e3 +IV= 828b50e7d27a7464d13cb2589ad972b545c4b6d77fb66567 +PT= 0dcee48bc72145cd50b35ff393d0f6cf9d0b2f3f1f2a8997 +CT= 10c822d572f6ca359dfcbe9be9d64f6f7414648b713eb00e +TEST= 7 +KEY= 9055d619a9d3f3a88bd23226a58987015c25ef459167f3cb6de9b6369ade60ed +IV= 10c822d572f6ca359dfcbe9be9d64f6f7414648b713eb00e +PT= 2d6b2d498ac18e6b4b6cfcd4e91178c6df87933915618ccd +CT= 4b417cec6f1552803fc88209c65883a0f5587a82b5425c07 +TEST= 8 +KEY= 8ec97f4eeb01eb94c0934ecaca9cd58163ed6d4c573f706b98b1ccb42f9c3cea +IV= 4b417cec6f1552803fc88209c65883a0f5587a82b5425c07 +PT= 3ce34c22ef179d410427df3ea6b4caf51e9ca95742d2183c +CT= 946a9992a8ad7cdf530278772bc3d2ea04a30a1675214d11 +TEST= 9 +KEY= e0878555f43e475254f9d7586231a95e30ef153b7cfca2819c12c6a25abd71fb +IV= 946a9992a8ad7cdf530278772bc3d2ea04a30a1675214d11 +PT= 995c2cd6f20528f9691117e1229e863a6e4efa1b1f3facc6 +CT= 13ffafd65144fcd2ab2f9882a0aa14d465dbd27f7f89b654 +TEST= 10 +KEY= 34f5f45d52ffe2e94706788e3375558c9bc08db9dc56b655f9c914dd2534c7af +IV= 13ffafd65144fcd2ab2f9882a0aa14d465dbd27f7f89b654 +PT= f85cc12de0d584fa0423d043bc0c95e4d4727108a6c1a5bb +CT= b021aaad2d2aced863d5408fd1e8f0663d5f51e57e0c7de6 +TEST= 11 +KEY= c19a2d873325ebc6f727d2231e5f9b54f815cd360dbe4633c49645385b38ba49 +IV= b021aaad2d2aced863d5408fd1e8f0663d5f51e57e0c7de6 +PT= 517c261bb486f06ad4f195e0f1942fb8f56fd9da61da092f +CT= 65deb881e9f2d08df4093587e5a44fda7979e23a06dbfe4f +TEST= 12 +KEY= d129c8ceb9233a4f92f96aa2f7ad4bd90c1cf8b1e81a09e9bdefa7025de34406 +IV= 65deb881e9f2d08df4093587e5a44fda7979e23a06dbfe4f +PT= 89567a069a68afef838474175912c45310b3e5498a06d189 +CT= 9573a95538fe3c7d6717f41a3eb0905e4a02c1aeac6b5e21 +TEST= 13 +KEY= 17447605973c61ec078ac3f7cf5377a46b0b0cabd6aa99b7f7ed66acf1881a27 +IV= 9573a95538fe3c7d6717f41a3eb0905e4a02c1aeac6b5e21 +PT= 3831f0c183a0499060fe3a760d62e7c1c66dbecb2e1f5ba3 +CT= db1256fe4cdfb40d26f358d0110d28d3b1e9227d3184c5ac +TEST= 14 +KEY= 8b84fcb240987304dc989509838cc3a94df8547bc7a7b164460444d1c00cdf8b +IV= db1256fe4cdfb40d26f358d0110d28d3b1e9227d3184c5ac +PT= 59faa4a4fa2e54c6482557c313f68d559cc08ab7d7a412e8 +CT= c042b67b52fb3a93e1fa18bafe1b41f9514c0b2fcff73e40 +TEST= 15 +KEY= 39dbcfc26b64b13a1cda2372d177f93aac024cc139bcf09d17484ffe0ffbe1cb +IV= c042b67b52fb3a93e1fa18bafe1b41f9514c0b2fcff73e40 +PT= f85864b7514590cfa7e0595456fca7cdb25f33702bfcc23e +CT= f6297d5e6fa5bded05c79ed7f0aa3f77c39a4cbf2b88431a +TEST= 16 +KEY= 7347fa6eabab8d2feaf35e2cbed244d7a9c5d216c916cfead4d203412473a2d1 +IV= f6297d5e6fa5bded05c79ed7f0aa3f77c39a4cbf2b88431a +PT= d5a9b1f88bb5e1ef6c14eec0e5feebc94a9c35acc0cf3c15 +CT= 22af2bf1ad89c094b59c2cb9effbfb48237eba425b896688 +TEST= 17 +KEY= b8f2a211af966a0bc85c75dd135b84431c59feaf26ed34a2f7acb9037ffac459 +IV= 22af2bf1ad89c094b59c2cb9effbfb48237eba425b896688 +PT= 4a16b12159fcda53a68d3c9ce625c4dacbb5587f043de724 +CT= 37da52770d19077a176a23b2002470092aee88cadb3d2612 +TEST= 18 +KEY= d71fd13954d567faff8627aa1e4283390b33dd1d26c944abdd4231c9a4c7e24b +IV= 37da52770d19077a176a23b2002470092aee88cadb3d2612 +PT= 3a603dd9f93d4a82534a8879ea1322396fed7328fb430df1 +CT= 2d983d561d4584932aef74fe69741b5f2e5c527460b60b17 +TEST= 19 +KEY= 7b6212ef588f136ed21e1afc030707aa21dca9e34fbd5ff4f31e63bdc471e95c +IV= 2d983d561d4584932aef74fe69741b5f2e5c527460b60b17 +PT= 15ce5e73d24d2a0d2769efc487140eb9ac7dc3d60c5a7494 +CT= 2d6586fa2d223ef61fd1e4ce6089674203005bbdee0ddb73 +TEST= 20 +KEY= bce9ab3c9ca323acff7b9c062e25395c3e0d4d2d2f3438b6f01e38002a7c322f +IV= 2d6586fa2d223ef61fd1e4ce6089674203005bbdee0ddb73 +PT= c909d2b25126335c6eb2ef496b84a06fc78bb9d3c42c30c2 +CT= ea6234c0292aae841b6dc3001438fa064ccd656c054ec3b7 +TEST= 21 +KEY= 7ca4d77cb4615b141519a8c6070f97d825608e2d3b0cc2b0bcd35d6c2f32f198 +IV= ea6234c0292aae841b6dc3001438fa064ccd656c054ec3b7 +PT= 75105de6f1bdacc340dbab0ca078049ac04d7c4028c278b8 +CT= b70eb3b47e2b6d4ae6df711f0fa57afba67dff60640bf7bf +TEST= 22 +KEY= 1f34730c650a5a4ba2171b727924fa92c3bfff3234a9b84b1aaea20c4b390627 +IV= b70eb3b47e2b6d4ae6df711f0fa57afba67dff60640bf7bf +PT= cf4f93d5f5b7edefb116d529f38809906390a470d16b015f +CT= 6c3ed34f29e67b3f9e68b21caa23608020b74f1d95bf9a6c +TEST= 23 +KEY= 3ef4216cfb3d57ddce29c83d50c281ad5dd74d2e9e8ad8cb3a19ed11de869c4b +IV= 6c3ed34f29e67b3f9e68b21caa23608020b74f1d95bf9a6c +PT= a1f8f662a3766c639250aed35175461521c052609e370d96 +CT= 0a5e48980e434e5bc4ce2cfa9be46ca158d61f6a9952bea1 +TEST= 24 +KEY= ea81f57742bc73abc47780a55e81cff6991961d4056eb46a62cff27b47d422ea +IV= 0a5e48980e434e5bc4ce2cfa9be46ca158d61f6a9952bea1 +PT= 8bbed2683e2e6e9a12270f06ce61ee84d475d41bb9812476 +CT= 365016de043028a3f576258138f3ab7c2b29517316dc7249 +TEST= 25 +KEY= cb26c68ff301cd1bf227967b5ab1e7556c6f44553d9d1f1649e6a308510850a3 +IV= 365016de043028a3f576258138f3ab7c2b29517316dc7249 +PT= 86d03133d3b929e72853605c9a58123321a733f8b1bdbeb0 +CT= bf420639eabd3a0797e9777600e76d674a4ba4b2188748e8 +TEST= 26 +KEY= c35afcec0f5c7fbe4d659042b00cdd52fb8633233d7a727103ad07ba498f184b +IV= bf420639eabd3a0797e9777600e76d674a4ba4b2188748e8 +PT= 5690e645c051a73034d1049c54f1d0de087c3a63fc5db2a5 +CT= 1508b3d97931496ae1937fc65f79692aea634b7826972127 +TEST= 27 +KEY= d7429c176a3b02e0586d239bc93d94381a154ce562031b5be9ce4cc26f18396c +IV= 1508b3d97931496ae1937fc65f79692aea634b7826972127 +PT= 0232d709444b38cfaa7737484a06d1b4141860fb65677d5e +CT= c0be0ec67b4f4842facef4f40a1d7781d0b62065055a3753 +TEST= 28 +KEY= bfccefb8fa0f5ff598d32d5db272dc7ae0dbb811681e6cda39786ca76a420e3f +IV= c0be0ec67b4f4842facef4f40a1d7781d0b62065055a3753 +PT= 24fcea0398db5829cffd9c518add7a99688e73af90345d15 +CT= 89439656afc22d77cb02aa3be2dc15f23a5c184d3a63e0ea +TEST= 29 +KEY= d151a1900dcced651190bb0b1db0f10d2bd9122a8ac27928032474ea5021eed5 +IV= 89439656afc22d77cb02aa3be2dc15f23a5c184d3a63e0ea +PT= bfbc79e2a8c8539ab249ba87ff6e2ea06e9d4e28f7c3b290 +CT= 731ee68b54037ed22d492d8e580342023b78054ba3782333 +TEST= 30 +KEY= 86b331dc715eba51628e5d8049b38fdf06903fa4d2c13b2a385c71a1f359cde6 +IV= 731ee68b54037ed22d492d8e580342023b78054ba3782333 +PT= 843bee9bd8dabba83e7f26bc3a904e9057e2904c7c925734 +CT= 67314c93669f8ac1403c659c1801ff3ac69a160d27d0da25 +TEST= 31 +KEY= 1396febc9d26408f05bf11132f2c051e46ac5a38cac0c410fec667acd48917c3 +IV= 67314c93669f8ac1403c659c1801ff3ac69a160d27d0da25 +PT= d2e7c6a687675650eaeb741090bd7bb99525cf60ec78fade +CT= fbd79ddfa73d939074e93cdd75a21248abe58c9fe65a2123 +TEST= 32 +KEY= c479a0dac7392a91fe688ccc8811968e324566e5bf62d6585523eb3332d336e0 +IV= fbd79ddfa73d939074e93cdd75a21248abe58c9fe65a2123 +PT= 2988af62101be17d3380b40e0141cfe0d7ef5e665a1f6a1e +CT= a45bcc7489eeede5780cb35a8ab1e9b6d85b2481a2da09b0 +TEST= 33 +KEY= 44aa9c733fb64eed5a3340b801ff7b6b4a49d5bf35d33fee8d78cfb290093f50 +IV= a45bcc7489eeede5780cb35a8ab1e9b6d85b2481a2da09b0 +PT= 7201a0f8a6635d8de109fa0953d58cb480d33ca9f88f647c +CT= 58ee711faea6edd9b2c4e78b92f0f368699cf000498b3bd5 +TEST= 34 +KEY= 25a70308bbed268802dd31a7af5996b2f88d3234a723cc86e4e43fb2d9820485 +IV= 58ee711faea6edd9b2c4e78b92f0f368699cf000498b3bd5 +PT= cc45596db1173cc7549d33d1c6003f80610d9f7b845b6865 +CT= 3d172c2d1d59145fc0fe788e2b2bdca7c75210d31ebdb667 +TEST= 35 +KEY= 30e27c81581926093fca1d8ab20082ed38734aba8c08102123b62f61c73fb2e2 +IV= 3d172c2d1d59145fc0fe788e2b2bdca7c75210d31ebdb667 +PT= d8a7b12e8e55e2f4e5de736df860ceab15457f89e3f40081 +CT= 5601e3bd694ca5789cee73a0d0f55287dc6815d0140093fb +TEST= 36 +KEY= 3da6d0356eb896e069cbfe37db4c2795a49d391a5cfd42a6ffde3ab1d33f2119 +IV= 5601e3bd694ca5789cee73a0d0f55287dc6815d0140093fb +PT= 0ca49cb5bd954bb0b13c5bfa1493f6c70d44acb436a1b0e9 +CT= 320a5b00f187061ba77ba950f428a33e7a175d74a6c5caa9 +TEST= 37 +KEY= b5d6cc988a3a07555bc1a5372acb218e03e6904aa8d5e19885c967c575faebb0 +IV= 320a5b00f187061ba77ba950f428a33e7a175d74a6c5caa9 +PT= 38cc54e5b0728f32bf567a870526748c88701cade48291b5 +CT= 2320702a729b5f68a092d8dad9015954af7be05bd14e4e69 +TEST= 38 +KEY= 2dff57d354103b5978e1d51d58507ee6a374489071d4b8cc2ab2879ea4b4a5d9 +IV= 2320702a729b5f68a092d8dad9015954af7be05bd14e4e69 +PT= 9b8d86c985e0866ab0b6432a706ccc9d98299b4bde2a3c0c +CT= 1f4a5210bf5b99f31c1db4dc529e80c7f4e00678c0080a55 +TEST= 39 +KEY= 62b21d0e2b7a48f367ab870de70be715bf69fc4c234a380bde5281e664bcaf8c +IV= 1f4a5210bf5b99f31c1db4dc529e80c7f4e00678c0080a55 +PT= a12d8d74218f4ccffac77711c2e425be4f4d4add7f6a73aa +CT= 7ae4f6273083e59877173cc92056f34b4eec48829cb35cbc +TEST= 40 +KEY= bef4bab85f88b0751d4f712ad788028dc87ec085031ccb4090bec964f80ff330 +IV= 7ae4f6273083e59877173cc92056f34b4eec48829cb35cbc +PT= 9f1ffb61bc05de8c561a0f6be2f54550dc46a7b674f2f886 +CT= 3e21abd0221b56174eb86d52d30ea821be5544d7f7a01d72 +TEST= 41 +KEY= 36a88cfd62eee903236edafaf593549a86c6add7d01263612eeb8db30fafee42 +IV= 3e21abd0221b56174eb86d52d30ea821be5544d7f7a01d72 +PT= 13cd254134af84b4bcc6f88d2c5792b1885c36453d665976 +CT= 4789264a3efb2983c1b690918d30166b82b8ed931f4fc9e1 +TEST= 42 +KEY= 28cefe60139a2d9464e7fcb0cb687d1947703d465d22750aac53602010e027a3 +IV= 4789264a3efb2983c1b690918d30166b82b8ed931f4fc9e1 +PT= c11d9aba57e5b92fbde9c480041c3d931e66729d7174c497 +CT= ff36e9f5f4d0a4edc8ffb3bca662b58a381b134a2bf57683 +TEST= 43 +KEY= 5fed59a420a192a79bd115453fb8d9f48f8f8efafb40c0809448736a3b155120 +IV= ff36e9f5f4d0a4edc8ffb3bca662b58a381b134a2bf57683 +PT= 7a97d58674b3b12ac5828612e26687717723a7c4333bbf33 +CT= 6f85114de94c4d8896878352849bb9be20c45f4c3a395ad3 +TEST= 44 +KEY= e6cd9296e8087f26f4540408d6f4947c19080da87fdb793eb48c2c26012c0bf3 +IV= 6f85114de94c4d8896878352849bb9be20c45f4c3a395ad3 +PT= 65a7e1e17a0de93c4d4ea24bc7cfe4e1b920cb32c8a9ed81 +CT= 9bc9823fadf7d6aef3749841cc833558ac479d0b301a1412 +TEST= 45 +KEY= 736b4d55ee76dad86f9d86377b0342d2ea7c95e9b3584c6618cbb12d31361fe1 +IV= 9bc9823fadf7d6aef3749841cc833558ac479d0b301a1412 +PT= c81316e8e2b96a6fc4cf9d2484c9fd2095a6dfc3067ea5fe +CT= e9a847ca1ab51e8fda83c38c88c3b10d70a608ccfba9c6e9 +TEST= 46 +KEY= ca72dfa611964f488635c1fd61b65c5d30ff56653b9bfd6b686db9e1ca9fd908 +IV= e9a847ca1ab51e8fda83c38c88c3b10d70a608ccfba9c6e9 +PT= 67cc5e2c30769cbfe703984798c6a894b91992f3ffe09590 +CT= 4f3cc73f5c04515d3bcd79406c9632ca4d9f5f890cc355d0 +TEST= 47 +KEY= bb118b7b49b9eeb4c90906c23db20d000b322f25570dcfa125f2e668c65c8cd8 +IV= 4f3cc73f5c04515d3bcd79406c9632ca4d9f5f890cc355d0 +PT= e7d228c6249632a667f3d1c930e7d9fa716354dd582fa1fc +CT= 2ce638c0573e077b7acef6a921c509b221d370185d5a9462 +TEST= 48 +KEY= 8acba43c99eee94ae5ef3e026a8c0a7b71fcd98c76c8c613042196709b0618ba +IV= 2ce638c0573e077b7acef6a921c509b221d370185d5a9462 +PT= 0e536c3e60cda732305c55c4af62c5ce31da2f47d05707fe +CT= 27e57392cdf9803690819a7f4c62f13abddf8a97399e3d38 +TEST= 49 +KEY= b7260ade13723881c20a4d90a7758a4de17d43f33aaa3729b9fe1ce7a2982582 +IV= 27e57392cdf9803690819a7f4c62f13abddf8a97399e3d38 +PT= 6648747b9a48611232dd56ae00ab25853dedaee28a9cd1cb +CT= 5e40fe358e2236528a28c4aa13b1160b8cf11001d4d12973 +TEST= 50 +KEY= 3426591ece5b2d9e9c4ab3a52957bc1f6b558759291b2122350f0ce676490cf1 +IV= 5e40fe358e2236528a28c4aa13b1160b8cf11001d4d12973 +PT= 03a424b0420822865830e4c1a70fb146830053c0dd29151f +CT= 04b4a5353b59bb0780f9b753c33e98871ba31a9a4e355adc +TEST= 51 +KEY= 20358f1e15931f8098fe1690120e0718ebac300aea25b9a52eac167c387c562d +IV= 04b4a5353b59bb0780f9b753c33e98871ba31a9a4e355adc +PT= 8ebbed3b9af07f0b4d6f8ce2b609ba5a1413d600dbc8321e +CT= 1620d67acad5505241c29d262520786b36b9beab7945d66e +TEST= 52 +KEY= 0dd0ec90ae4bfef18edec0ead8db574aaa6ead2ccf05c1ce1815a8d741398043 +IV= 1620d67acad5505241c29d262520786b36b9beab7945d66e +PT= fd1a0115ced20c0e6e372aeeeb30743b2de5638ebbd8e171 +CT= d450c161835d688ac5d76415b77cf6b45d9bece5641ecf24 +TEST= 53 +KEY= 981c7bb9d4d4e4ee5a8e018b5b863fc06fb9c9397879377a458e443225274f67 +IV= d450c161835d688ac5d76415b77cf6b45d9bece5641ecf24 +PT= cc7272f33347644d2804b30440849ab095cc97297a9f1a1f +CT= f8d4698771d02d62503a92c238de56f8974c5b2de3dba969 +TEST= 54 +KEY= f49eaa1e289f0438a25a680c2a5612a23f835bfb40a76182d2c21f1fc6fce60e +IV= f8d4698771d02d62503a92c238de56f8974c5b2de3dba969 +PT= 3ee5cf80b4befecb5e6e554f1dee88c86c82d1a7fc4be0d6 +CT= 10eb03740c3de1d2bec0da8cf689b07c8946139876343ff3 +TEST= 55 +KEY= e712f6c1a2f20701b2b16b78266bf37081438177b62ed1fe5b840c87b0c8d9fd +IV= 10eb03740c3de1d2bec0da8cf689b07c8946139876343ff3 +PT= e58484f60f0d2c67df07db052f89fae6138c5cdf8a6d0339 +CT= a457fc5f9c4a0367e7bc8507d970f3eed6220924f4b05ac2 +TEST= 56 +KEY= 43bb1ac7b746ec1416e69727ba21f01766ff04706f5e22108da605a34478833f +IV= a457fc5f9c4a0367e7bc8507d970f3eed6220924f4b05ac2 +PT= bce8477c70affb00aefd6f9e6389876ca4a9ec0615b4eb15 +CT= ef59a020e37b53aaabcc8137393c58f054e8bb35292d7982 +TEST= 57 +KEY= 6b13224be914c4bff9bf3707595aa3bdcd33854756627ae0d94ebe966d55fabd +IV= ef59a020e37b53aaabcc8137393c58f054e8bb35292d7982 +PT= 9d5f8b56736b1e3ade689570e01c404f28a8388c5e5228ab +CT= 24ae8752552f28ec64c978b4cbff7a87e5c0f24921b6a927 +TEST= 58 +KEY= b66979ddfe2e2ee3dd11b0550c758b51a9fafdf39d9d00673c8e4cdf4ce3539a +IV= 24ae8752552f28ec64c978b4cbff7a87e5c0f24921b6a927 +PT= 2d198eb4d2ae27f7fd24ee8554fd7548dd7a5b96173aea5c +CT= b05d589a6ccfd4d089ebeeb06b1340ab59ac181df917daf0 +TEST= 59 +KEY= c616aac2fb096c596d4ce8cf60ba5f8120111343f68e40cc652254c2b5f4896a +IV= b05d589a6ccfd4d089ebeeb06b1340ab59ac181df917daf0 +PT= 2f8f5811dad87d4840b0a24a0bc745c7707fd31f052742ba +CT= bd798b33b87c61d5cc3b207608e7b3322d07f159a050fb48 +TEST= 60 +KEY= 2dc4fb40a23d2407d03563fcd8c63e54ec2a3335fe69f3fe4825a59b15a47222 +IV= bd798b33b87c61d5cc3b207608e7b3322d07f159a050fb48 +PT= fed68d81b76216873040d00da7a90971ebd251825934485e +CT= b6b22268a78f239ef92e9846dfcb35c3b5a406fb30935091 +TEST= 61 +KEY= 67ff1affe7da98cb668741947f491dca1504ab7321a2c63dfd81a360253722b3 +IV= b6b22268a78f239ef92e9846dfcb35c3b5a406fb30935091 +PT= 44892e01e1a36771d143c2709c490e9d4a3be1bf45e7bccc +CT= 588d5f0ddd91ede648a541f170780e4b743663319b0fb1f3 +TEST= 62 +KEY= 04973bff081fb9e93e0a1e99a2d8f02c5da1ea8251dac87689b7c051be389340 +IV= 588d5f0ddd91ede648a541f170780e4b743663319b0fb1f3 +PT= 56bdbc2931968a12a0d759758b3e8dc563682100efc52122 +CT= e709e7857db662bb1c2a62a8216a6d9a15bbd71f5bd31064 +TEST= 63 +KEY= c8afcc6c2d368270d903f91cdf6e9297418b882a70b0a5ec9c0c174ee5eb8324 +IV= e709e7857db662bb1c2a62a8216a6d9a15bbd71f5bd31064 +PT= 50dcedc2152df9ee683633a6c244729ecc38f79325293b99 +CT= 203515ae0287ca6ee87cd0b0b4fe47462d94686ad7a04e55 +TEST= 64 +KEY= fa816ea2d855384cf936ecb2dde958f9a9f7589ac44ee2aab1987f24324bcd71 +IV= 203515ae0287ca6ee87cd0b0b4fe47462d94686ad7a04e55 +PT= 33ff89beef15e0c505d6dd27acc49753322ea2cef563ba3c +CT= 401972740ff6d0bc998f75d5f71f8332cb3c84e74b90645e +TEST= 65 +KEY= 34edee4e6ccecb05b92f9ec6d21f884530782d4f335161987aa4fbc379dba92f +IV= 401972740ff6d0bc998f75d5f71f8332cb3c84e74b90645e +PT= bfe79fc3593faf1259718a774baf8721ce6c80ecb49bf349 +CT= 428f6321aa04cfcb048945361a7308c876b89fc2f74de517 +TEST= 66 +KEY= 6046303829983e70fba0fde7781b478e34f16879292269500c1c64018e964c38 +IV= 428f6321aa04cfcb048945361a7308c876b89fc2f74de517 +PT= 25f2e7bdd77fac049ddf4f38695e67d354abde764556f575 +CT= 0ecbf428f3520fdbd8f671d0e750373272015974068578aa +TEST= 67 +KEY= 51a56d50667b0ed3f56b09cf8b494855ec0719a9ce725e627e1d3d7588133492 +IV= 0ecbf428f3520fdbd8f671d0e750373272015974068578aa +PT= 08cdc80828d79b524f53f5f9a85bb11e31e35d684fe330a3 +CT= eb9b7b4efe8552b57ae99a3a915886ff174b115cbd04a5e7 +TEST= 68 +KEY= 765eea38f15a47c21ef0728175cc1ae096ee83935f2ad89d69562c2935179175 +IV= eb9b7b4efe8552b57ae99a3a915886ff174b115cbd04a5e7 +PT= 3fc1beb9aecf12b46e7a4cfe9d2ff5f227fb876897214911 +CT= 58159b91b3931570db9b8b6281338c08f0f62186809f5ebe +TEST= 69 +KEY= 8ed5f21fab3f8ebf46e5e910c65f0f904d7508f1de19549599a00dafb588cfcb +IV= 58159b91b3931570db9b8b6281338c08f0f62186809f5ebe +PT= be62b1c1c46627161feef90a8684b3e6f88b18275a65c97d +CT= 2851896e6c2ac2131dd02a4b9440bac97effc9f27a542b28 +TEST= 70 +KEY= ed093779a029afcf6eb4607eaa75cd8350a522ba4a59ee5ce75fc45dcfdce4e3 +IV= 2851896e6c2ac2131dd02a4b9440bac97effc9f27a542b28 +PT= 0c84208af6c2d5cd55cfa38a07dfe2c363dcc5660b162170 +CT= da74d4a3b0f1c2bca98412bd3e263a006f930402ffa80358 +TEST= 71 +KEY= 9c6f691fffa43c61b4c0b4dd1a840f3ff9213007747fd45c88ccc05f3074e7bb +IV= da74d4a3b0f1c2bca98412bd3e263a006f930402ffa80358 +PT= 8439b57dd6912c76e39e4b75a564ac4871665e665f8d93ae +CT= bdf93ff42e1092ac8ba0e9705900252765ceee936a020de0 +TEST= 72 +KEY= 6e987c36d410adad09398b2934949d937281d9772d7ff17bed022ecc5a76ea5b +IV= bdf93ff42e1092ac8ba0e9705900252765ceee936a020de0 +PT= fa99b9f252741c4124b59a484e8ff1a4f2f715292bb491cc +CT= caec4abdd31c4f8f3823e0b9feb9b5779f472ec30bbef089 +TEST= 73 +KEY= 51d5fb43401b7023c3d5c194e788d21c4aa239ced3c6440c7245000f51c81ad2 +IV= caec4abdd31c4f8f3823e0b9feb9b5779f472ec30bbef089 +PT= af6385f5231e7b8fea4f64de8aa660e73f4d8775940bdd8e +CT= f46ac46aa2c6a9368fc5fa9b80bb136f2e8c8471e3ee752e +TEST= 74 +KEY= ed8f116c34e16c6437bf05fe454e7b2ac567c355537d57635cc9847eb2266ffc +IV= f46ac46aa2c6a9368fc5fa9b80bb136f2e8c8471e3ee752e +PT= efd677f023cc07619ace4db0ed9079f2bc5aea2f74fa1c47 +CT= 1e52b17f3bf6dbcf91e2483c14401baf8c77251cc9d109a4 +TEST= 75 +KEY= 00b54e91fb26fb1e29edb4817eb8a0e554858b69473d4cccd0bea1627bf76658 +IV= 1e52b17f3bf6dbcf91e2483c14401baf8c77251cc9d109a4 +PT= d436f2d72ce7ec93fb3746fc2c2e71eaed3a5ffdcfc7977a +CT= eac0a790269c4240f0c5b08be92407e5dbf4f60537e0734f +TEST= 76 +KEY= d7144813d7a4ce6bc32d13115824e2a5a4403be2ae194b290b4a57674c171517 +IV= eac0a790269c4240f0c5b08be92407e5dbf4f60537e0734f +PT= 12df5daf5601427e44bf3b0fb278861ed7a106822c823575 +CT= 68364636d87d8dca7d067a72b8bec11086dfafd8f1f6646d +TEST= 77 +KEY= b5bd6b9880959df8ab1b552780596f6fd946419016a78a398d95f8bfbde1717a +IV= 68364636d87d8dca7d067a72b8bec11086dfafd8f1f6646d +PT= 22ffb02b6e551a1f468bef0748d8c35562a9238b57315393 +CT= 4a0158583ae628349ec6fb563c4911464540523c81eded40 +TEST= 78 +KEY= 48b26becd9de1ca7e11a0d7fbabf475b4780bac62aee9b7fc8d5aa833c0c9c3a +IV= 4a0158583ae628349ec6fb563c4911464540523c81eded40 +PT= 12ff415533726af3f14b53415b5245aefd0f0074594b815f +CT= c2aaf515a986261433e791ca9c5f310dbe60a701ee78b795 +TEST= 79 +KEY= 0cffb4512c69b43523b0f86a1339614f74672b0cb6b1aa7276b50d82d2742baf +IV= c2aaf515a986261433e791ca9c5f310dbe60a701ee78b795 +PT= 4de2a6d9a13704abeb86f9f858475dd7444ddfbdf5b7a892 +CT= be2a0dce188cd319b27090f01164878f75a4fc00147be7bb +TEST= 80 +KEY= b3fa111feff95bce9d9af5a40bb5b256c617bbfca7d52dfd0311f182c60fcc14 +IV= be2a0dce188cd319b27090f01164878f75a4fc00147be7bb +PT= 8d5da31099d211db5f651c3a21f8825dbf05a54ec390effb +CT= 1e0ce163cf31da751c2b200b9ceb10bc8748df3f818e7ab0 +TEST= 81 +KEY= 0881678394d46fde839614c7c4846823da3c9bf73b3e3d4184592ebd4781b6a4 +IV= 1e0ce163cf31da751c2b200b9ceb10bc8748df3f818e7ab0 +PT= b1c066731e6058884de42c8fb8c6558cbb7b769c7b2d3410 +CT= 865696f1e7a114501f00033fa04422f696a867917affc1e6 +TEST= 82 +KEY= ccee62b34fb85fe205c0823623257c73c53c98c89b7a1fb712f1492c3d7e7742 +IV= 865696f1e7a114501f00033fa04422f696a867917affc1e6 +PT= 0139e126b153549a41a3b6a1d587039ac46f0530db6c303c +CT= 4945d7eecb4fc433b2414247eab41b40538f11eadce1b8ab +TEST= 83 +KEY= 406028aa99f74cea4c8555d8e86ab840777dda8f71ce04f7417e58c6e19fcfe9 +IV= 4945d7eecb4fc433b2414247eab41b40538f11eadce1b8ab +PT= eae5a369f7cb329e2c13db3b65205dac8c8e4a19d64f1308 +CT= db2ccf7be8d53834e962e7b649a4f8619cbfd1322a163e51 +TEST= 84 +KEY= 5f71a3616d6224e897a99aa300bf80749e1f3d39386afc96ddc189f4cb89f1b8 +IV= db2ccf7be8d53834e962e7b649a4f8619cbfd1322a163e51 +PT= 4981aa6700fab523bfbd7a97d44767ca1f118bcbf4956802 +CT= efc4b5c22b7521c6e50e90d0b8368e52c4e564146f22ac0d +TEST= 85 +KEY= 49f6dca3eacd550e786d2f612bcaa1b27b11ade9805c72c41924ede0a4ab5db5 +IV= efc4b5c22b7521c6e50e90d0b8368e52c4e564146f22ac0d +PT= 43982871a051fada823873d4117edde916877fc287af71e6 +CT= 57405010898e896472d18823164145ea8e99345b8a7a0d7b +TEST= 86 +KEY= 42afff5e4abb1b8d2f2d7f71a24428d609c025ca961d372e97bdd9bb2ed150ce +IV= 57405010898e896472d18823164145ea8e99345b8a7a0d7b +PT= 2b1be6985ed08d1af940b5d40dae3fdc0b5923fda0764e83 +CT= c50b60b6929088005ce265bf187b2349074eba23c080dd7d +TEST= 87 +KEY= 6833924b90917c1aea261fc730d4a0d6552240758e66146790f36398ee518db3 +IV= c50b60b6929088005ce265bf187b2349074eba23c080dd7d +PT= f2a49a6f35b1d8250a1326c524d0af2d2a9c6d15da2a6797 +CT= 94e29b1bc8a69d538a1a6c5d8a9d5c320d360397e4f280fb +TEST= 88 +KEY= 2a76446ac0c4f1b07ec484dcf8723d85df382c2804fb48559dc5600f0aa30d48 +IV= 94e29b1bc8a69d538a1a6c5d8a9d5c320d360397e4f280fb +PT= 7460be9832d54e584fc4ec700fb516204245d62150558daa +CT= e4eedd56b92eaa91cb8819b62703b296af172711f0f3a0d7 +TEST= 89 +KEY= a4f71377e1ccbf839a2a598a415c971414b0359e23f8fac332d2471efa50ad9f +IV= e4eedd56b92eaa91cb8819b62703b296af172711f0f3a0d7 +PT= eb74468d94dd6864171528e1c01e1e1e8e81571d21084e33 +CT= 9308411d5718a6801594b882aca1501eff68aa102afcb51e +TEST= 90 +KEY= 3f90c8e8015c51d5092218971644319401248d1c8f59aaddcdbaed0ed0ac1881 +IV= 9308411d5718a6801594b882aca1501eff68aa102afcb51e +PT= d70c12c85a4f3386c576cf4fefdcfe239b67db9fe090ee56 +CT= 07e10532aae3d91ab5210d4e498d5a80e886560d290f7915 +TEST= 91 +KEY= 25ebdfbf78ffe50d0ec31da5bca7e88eb4058052c6d4f05d253cbb03f9a36194 +IV= 07e10532aae3d91ab5210d4e498d5a80e886560d290f7915 +PT= 226286a2b4b3befa3d7681972db1c3011a7b175779a3b4d8 +CT= 219367d0926fdf140a8a4e215b7e0d5bb6999273ec8cc9b0 +TEST= 92 +KEY= 6799083eaf78afd02f507a752ec8379abe8fce739daafd0693a52970152fa824 +IV= 219367d0926fdf140a8a4e215b7e0d5bb6999273ec8cc9b0 +PT= 2f2855cc87680bd234340809682d02704272d781d7874add +CT= 292d04428b148d7d705a466f5e1d4bd8d038a87fd1c624cc +TEST= 93 +KEY= 0114f06cc837c88e067d7e37a5dcbae7ced5881cc3b7b6de439d810fc4e98ce8 +IV= 292d04428b148d7d705a466f5e1d4bd8d038a87fd1c624cc +PT= 844396402a9e9a37b2c7dc2a3ab66214668df852674f675e +CT= c830c560e5c9870805a3e9426849c8d1c1059916c42e1198 +TEST= 94 +KEY= a1b6914699cae9f3ce4dbb5740153defcb76615eabfe7e0f8298181900c79d70 +IV= c830c560e5c9870805a3e9426849c8d1c1059916c42e1198 +PT= 517529247c4f2925a2310ac6b3c9016fa0a2612a51fd217d +CT= 1f9487248a102cde59cdab11a42cc861470ef40437075a1f +TEST= 95 +KEY= 480c07feaaa2c765d1d93c73ca05113192bbca4f0fd2b66ec596ec1d37c0c76f +IV= 1f9487248a102cde59cdab11a42cc861470ef40437075a1f +PT= ef85f5dfc6c846cb733323a4a9620e48e9ba96b833682e96 +CT= b5f7a6681c20548dd77f5d069ebff1c6ae7c3a2840b5f715 +TEST= 96 +KEY= cb24d5b98967f2b0642e9a1bd62545bc45c49749916d47a86bead6357775307a +IV= b5f7a6681c20548dd77f5d069ebff1c6ae7c3a2840b5f715 +PT= 7c9fa80b58489cd7a4ab1cd142e5526b8328d24723c535d5 +CT= 3389c942fe386fe60289c92fc69661c559cb86457e338af4 +TEST= 97 +KEY= f5d4cc8307d48d0f57a75359281d2a5a474d5e6657fb266d322150700946ba8e +IV= 3389c942fe386fe60289c92fc69661c559cb86457e338af4 +PT= 86f891e144a6a0107bef3cf4c2b2cef63ef0193a8eb37fbf +CT= 4cdb78777385ef467b1d0487d47dcd30fc96e786ed95fc29 +TEST= 98 +KEY= 5fa84e1b9f72f1c81b7c2b2e5b98c51c3c505ae18386eb5dceb7b7f6e4d346a7 +IV= 4cdb78777385ef467b1d0487d47dcd30fc96e786ed95fc29 +PT= 669698e9124024dc86c8cbf9c4938a09aa7c829898a67cc7 +CT= 18139ffe178f72c4b4f642d281790a1299ae2d80dc76ff9a +TEST= 99 +KEY= 83fcf9edc48e0905036fb4d04c17b7d888a6183302ffe14f57199a7638a5b93d +IV= 18139ffe178f72c4b4f642d281790a1299ae2d80dc76ff9a +PT= 0fad79784b89f653076e8cdebd2c63badc54b7f65bfcf8cd +CT= e18459f24174e4fe3253df3f072e08ba51d2639f1827a37b +TEST= 100 +KEY= 684dbeadf0306191e2ebed220d635326baf5c70c05d1e9f506cbf9e920821a46 +IV= e18459f24174e4fe3253df3f072e08ba51d2639f1827a37b +PT= 68d82562ad4bf44125fa53b91874ef32ebb1474034be6894 +CT= fa46a5dd915c429a2a9af9ce62e94b936418bc953485d5c9 +TEST= 101 +KEY= 7b875b8581d52e1a18ad48ff9c3f11bc906f3ec26738a26662d3457c1407cf8f +IV= fa46a5dd915c429a2a9af9ce62e94b936418bc953485d5c9 +PT= 9ec44cd2cb350e3dc94b77d2a08cd3e013cae52871e54f8b +CT= 92e3569174043c5ed9554204b0a4c3aec7be1d228859251f +TEST= 102 +KEY= d5ae7a3caffc12d58a4e1e6ee83b2de2493a7cc6d79c61c8a56d585e9c5eea90 +IV= 92e3569174043c5ed9554204b0a4c3aec7be1d228859251f +PT= df4f2d2b9483503532331c82345ebb8aae2921b92e293ccf +CT= db9c0cf43c945374611a8964fd48c31e65d963f45248eb56 +TEST= 103 +KEY= b633ee1df8feff0751d2129ad4af7e962820f5a22ad4a2d6c0b43baace1601c6 +IV= db9c0cf43c945374611a8964fd48c31e65d963f45248eb56 +PT= 01b14ac32262c4c2539e2628aaf5d9aa639d94215702edd2 +CT= a0b4f896a72ed8fdf4793a2ba617c6c747c288f127dcc7e3 +TEST= 104 +KEY= d52cd5b9af921686f166ea0c7381a66bdc59cf898cc364118776b35be9cac625 +IV= a0b4f896a72ed8fdf4793a2ba617c6c747c288f127dcc7e3 +PT= a724e2fe70acef5f7b74e0a125b7047f631f3ba4576ce981 +CT= 126ad4e96b3206a86ecf7d5675926af7fe4177c4480e66f1 +TEST= 105 +KEY= 67d3ebd58e104f05e30c3ee518b3a0c3b296b2dff9510ee67937c49fa1c4a0d4 +IV= 126ad4e96b3206a86ecf7d5675926af7fe4177c4480e66f1 +PT= 98da96af0e149484b89cd595724be51fb2ff3e6c21825983 +CT= eb1fc512e5c5ed61a9a81cb6ac898c30fe520920d18dd747 +TEST= 106 +KEY= 8810779653ad0bd20813fbf7fd764da21b3eae6955d882d68765cdbf70497793 +IV= eb1fc512e5c5ed61a9a81cb6ac898c30fe520920d18dd747 +PT= 9c1343fc1d92c958610ce411ed6cba92efc39c43ddbd44d7 +CT= 2453f902a809d8ce6fa14f4e791611ff7d808c3080b0d517 +TEST= 107 +KEY= 2ab97b1524bf28302c4002f5557f956c749fe1272cce9329fae5418ff0f9a284 +IV= 2453f902a809d8ce6fa14f4e791611ff7d808c3080b0d517 +PT= 615906ce41ebdad7d1033efa0f440bb8a2a90c83771223e2 +CT= d2d3aa4778f38c29f551349b8c35f09e83a5013edecabfa0 +TEST= 108 +KEY= ae538cfc4f37067efe93a8b22d8c194581ced5bca0fb63b7794040b12e331d24 +IV= d2d3aa4778f38c29f551349b8c35f09e83a5013edecabfa0 +PT= 2568cc1b3175386d9026d6655fabf99484eaf7e96b882e4e +CT= a6ba7e7dccc22eff2c92e82aa4b140e5edc950c2d880fa63 +TEST= 109 +KEY= 7295e342696fbff45829d6cfe14e37baad5c3d96044a235294891073f6b3e747 +IV= a6ba7e7dccc22eff2c92e82aa4b140e5edc950c2d880fa63 +PT= d82ebd778a29d93c3f4fc34e82ed2530dcc66fbe2658b98a +CT= 22c6dffc0560ade4d80792fd229f25d50d09caf6530d8e0b +TEST= 110 +KEY= 3501762738a43d2e7aef0933e42e9a5e755baf6b26d506879980da85a5be694c +IV= 22c6dffc0560ade4d80792fd229f25d50d09caf6530d8e0b +PT= 269d5d79691e35ff223f68d00a4abb524794956551cb82da +CT= 896244cb4c9b8648b697a5be6b0f714db1a32b457bc7e346 +TEST= 111 +KEY= 7507daf6d7db30cbf38d4df8a8b51c16c3cc0ad54dda77ca2823f1c0de798a0a +IV= 896244cb4c9b8648b697a5be6b0f714db1a32b457bc7e346 +PT= 6e50052c66db5c75ba0286936dc831404006acd1ef7f0de5 +CT= 4edd0436e52e20f26bef49136353cad961f8b3fdd0821e27 +TEST= 112 +KEY= 8341142e213234bfbd5049ce4d9b3ce4a82343c62e89bd1349db423d0efb942d +IV= 4edd0436e52e20f26bef49136353cad961f8b3fdd0821e27 +PT= d0832b775b8944b808cb544aca685b6ef646ced8f6e90474 +CT= a7bd1801fb157b9d0095e130a58e013f78909dddf693eac0 +TEST= 113 +KEY= 196e2062230f89cb1aed51cfb68e4779a8b6a2f68b07bc2c314bdfe0f8687eed +IV= a7bd1801fb157b9d0095e130a58e013f78909dddf693eac0 +PT= b025c8aedabcfcb4a27cbf9b773308e69a2f344c023dbd74 +CT= 6f1969f1bcc95d69b8761e848130961c9cabe15de5b6f874 +TEST= 114 +KEY= 380f97ced3153c3975f4383e0a471a1010c0bc720a372a30ade03ebd1dde8699 +IV= 6f1969f1bcc95d69b8761e848130961c9cabe15de5b6f874 +PT= 5d2649c901b134b631f59af1fd4a698b2161b7acf01ab5f2 +CT= 9a0c0eb87e43dee684eb39c6ee5a33f918bed134f917ea3c +TEST= 115 +KEY= a9a9bc6437ac310deff836867404c4f6942b85b4e46d19c9b55eef89e4c96ca5 +IV= 9a0c0eb87e43dee684eb39c6ee5a33f918bed134f917ea3c +PT= 08d5b416967c4a338e9a2c81d7057c1691a62baae4b90d34 +CT= fc0641811124a95b585dbb01944e6b8212ba484decb7c493 +TEST= 116 +KEY= 43d37d0d3292dd1913fe770765206dadcc763eb57023724ba7e4a7c4087ea836 +IV= fc0641811124a95b585dbb01944e6b8212ba484decb7c493 +PT= 27c28fbae365d24dbc523d5f0d62be83ea7ac169053eec14 +CT= e272e39042aaeff3d44bffeaad60c6fcf33a5a1e362cf3ba +TEST= 117 +KEY= 409de284f5e65b5cf18c9497278a825e183dc15fdd43b4b754defdda3e525b8c +IV= e272e39042aaeff3d44bffeaad60c6fcf33a5a1e362cf3ba +PT= 69535014a1db2b6a66de6d2dfdcb5c17034e9f89c7748645 +CT= 09a9886e9170df6835c00cc6d5a2419f90bca38c998c9615 +TEST= 118 +KEY= ce09b2e944340a06f8251cf9b6fa5d362dfdcd9908e1f528c4625e56a7decd99 +IV= 09a9886e9170df6835c00cc6d5a2419f90bca38c998c9615 +PT= d1e18c620ffaedd6549c90fce24cc0ed8e94506db1d2515a +CT= 8f7d4c5a2fdab40631ce4ee93dac4fb48099b78c0de019b8 +TEST= 119 +KEY= 6f91315c4a729b3d775850a39920e9301c338370354dba9c44fbe9daaa3ed421 +IV= 8f7d4c5a2fdab40631ce4ee93dac4fb48099b78c0de019b8 +PT= d915d4d83d47b0b7d4f0a013ed33c12fa19883b50e46913b +CT= 5659f766c612a25cdc84295a8867a816ed5145c7d5ef37cd +TEST= 120 +KEY= d8a62095e49e075b2101a7c55f324b6cc0b7aa2abd2a128aa9aaac1d7fd1e3ec +IV= 5659f766c612a25cdc84295a8867a816ed5145c7d5ef37cd +PT= fe66f9168c9d68803294ff8473fb7a64b73711c9aeec9c66 +CT= ddaebcc3bd3e80d8332d0b62fcd84f4cf1cd5d70390201b1 +TEST= 121 +KEY= 59a2b0bfb507aff8fcaf1b06e20ccbb4f39aa14841f25dc65867f16d46d3e25d +IV= ddaebcc3bd3e80d8332d0b62fcd84f4cf1cd5d70390201b1 +PT= 0cca3f2970dc0cd64cfe2df6f7b55c7a8104902a5199a8a3 +CT= e60805a866acdb0514ef9636ec48bbd62496f203f78c2f17 +TEST= 122 +KEY= 1a0fb5eab65dd8ec1aa71eae84a010b1e775377eadbae6107cf1036eb15fcd4a +IV= e60805a866acdb0514ef9636ec48bbd62496f203f78c2f17 +PT= e4b5c33ff3c0528d9b42aaf2f7ba3d6443ad0555035a7714 +CT= 7cbaa6e2db80c2b7c986daba5c3766b4c0d6ca9991b47244 +TEST= 123 +KEY= 08114b6ea37d11ba661db84c5f20d2062ef3edc4f18d80a4bc27c9f720ebbf0e +IV= 7cbaa6e2db80c2b7c986daba5c3766b4c0d6ca9991b47244 +PT= 0e6debb29534df3f48f45cde16a37002121efe841520c956 +CT= 7e0191ddb2262c00e904ececba85142e3c4b2e4c71eb3328 +TEST= 124 +KEY= f7e016ec31573bad181c2991ed06fe06c7f701284b08948a806ce7bb51008c26 +IV= 7e0191ddb2262c00e904ececba85142e3c4b2e4c71eb3328 +PT= 34ddd6c07303863f094add6b6c1b81dcfff15d82922a2a17 +CT= 3f458006e0316de83f2e02f6d57473d9bb1f8e26e2ec42fd +TEST= 125 +KEY= 47c4327cf164d0b42759a9970d3793eef8d903de9e7ce7533b73699db3eccedb +IV= 3f458006e0316de83f2e02f6d57473d9bb1f8e26e2ec42fd +PT= c3a7990ea1b413e41a927748a62faaafb0242490c033eb19 +CT= 1ef30d4e8c5ea622abf301a8d4c7ed196313673074ed1348 +TEST= 126 +KEY= 00cf5aa8ec663ef539aaa4d9816935cc532a02764abb0a4a58600eadc701dd93 +IV= 1ef30d4e8c5ea622abf301a8d4c7ed196313673074ed1348 +PT= 25cca26044efdca58d203a24742e3747470b68d41d02ee41 +CT= 297a9d96cbfbcc116c4024ecfad2a3b75fec7b55a8d6ea78 +TEST= 127 +KEY= 0059db896637be4610d0394f4a92f9dd3f6a269ab069a9fd078c75f86fd737eb +IV= 297a9d96cbfbcc116c4024ecfad2a3b75fec7b55a8d6ea78 +PT= e5b909b6392c5e86448a81f123b4583e009681218a5180b3 +CT= 96509ce5e96b7d62acd6f5998015f2d59fb6972895298b38 +TEST= 128 +KEY= d24b640fca50741b8680a5aaa3f984bf93bcd303307c5b28983ae2d0fafebcd3 +IV= 96509ce5e96b7d62acd6f5998015f2d59fb6972895298b38 +PT= ee91b62c0afc67ccbee1f3e9d8318dd9d212bf86ac67ca5d +CT= 8c7eeadd52d451db52ae1bd85c88b70385761688cfc291bd +TEST= 129 +KEY= f82a529128c180430afe4f77f12dd564c112c8db6cf4ec2b1d4cf458353c2d6e +IV= 8c7eeadd52d451db52ae1bd85c88b70385761688cfc291bd +PT= 28200fc9f3c0ee5d88cf03a807a385282a61369ee291f458 +CT= b50c124145533b57f001909c6365f81b5cb221029c95a794 +TEST= 130 +KEY= bbc2453d5fe19684bff25d36b47eee33311358470f91143041fed55aa9a98afa +IV= b50c124145533b57f001909c6365f81b5cb221029c95a794 +PT= f33f5eaef2c9990b9a8068da902207e243e817ac772016c7 +CT= 0689d1628cedf2fd155a2ff443485ceb031bf472a2735bcf +TEST= 131 +KEY= 9b8623cc9f34e209b97b8c5438931cce244977b34cd948db42e521280bdad135 +IV= 0689d1628cedf2fd155a2ff443485ceb031bf472a2735bcf +PT= 3f075b5f1a4dad82648ad6f83c8dee38204466f1c0d5748d +CT= 8e89cb05bbd9da238265c3da7b846be1d7d7125056372e13 +TEST= 132 +KEY= f03f9e82076d835237f24751834ac6eda62cb469375d233a953233785dedff26 +IV= 8e89cb05bbd9da238265c3da7b846be1d7d7125056372e13 +PT= 1deccb8d212166cd48aa5531923a87736bb9bd4e9859615b +CT= 637ff4a0aaafb26c6ade031ec1abcfd3c25033418c862b39 +TEST= 133 +KEY= 6337750a48bd2214548db3f129e57481ccf2b777f6f6ece957620039d16bd41f +IV= 637ff4a0aaafb26c6ade031ec1abcfd3c25033418c862b39 +PT= b267c96cdfa24f93e818ffa6d5c394939308eb884fd0a146 +CT= 935f2dba14ceed4477da5ab22261d3d994605913f7a5fed7 +TEST= 134 +KEY= d6cbe0b5d9f730b3c7d29e4b3d2b99c5bb28edc5d4973f30c302592a26ce2ac8 +IV= 935f2dba14ceed4477da5ab22261d3d994605913f7a5fed7 +PT= cf47207f3b9461d1017bd8d667868010b5fc95bf914a12a7 +CT= 232c67e4db38c930f2eb35d6c125c857c9764ad04a5abafc +TEST= 135 +KEY= af7243f6e7693636e4fef9afe61350f549c3d81315b2f7670a7413fa6c949034 +IV= 232c67e4db38c930f2eb35d6c125c857c9764ad04a5abafc +PT= 1651c3b54c4409e584b9dd8dbcfe476379b9a3433e9e0685 +CT= 86e72ec864be0c8843827a97bd38269130fc0b2e84cbc6e6 +TEST= 136 +KEY= e9edeecafd6581ee6219d76782ad5c7d0a41a284a88ad1f63a8818d4e85f56d2 +IV= 86e72ec864be0c8843827a97bd38269130fc0b2e84cbc6e6 +PT= bb722a6378e5b3d32b3186f7a207c29b469fad3c1a0cb7d8 +CT= 59f7ee65b4bbc776d5902879d887dfc2d2ab32a7e6873e3b +TEST= 137 +KEY= 9aa746470f4510353bee390236169b0bdfd18afd700d0e34e8232a730ed868e9 +IV= 59f7ee65b4bbc776d5902879d887dfc2d2ab32a7e6873e3b +PT= a334dac5b1589b99b71a25887ddffd7a734aa88df22091db +CT= fdbb463494d515ec6a7513f6c1115db0ecb7c21515529e4b +TEST= 138 +KEY= f4a96e01a08c4dcdc6557f36a2c38ee7b5a4990bb11c53840494e8661b8af6a2 +IV= fdbb463494d515ec6a7513f6c1115db0ecb7c21515529e4b +PT= b397869d00c065ebb30d87fb6ef6deaa6e0e2846afc95df8 +CT= 0477e6c4b57f5ba9fbf0c77abe7889d4295845cec2ed8edb +TEST= 139 +KEY= ae2cd245ecd88cebc22299f217bcd54e4e545e710f64da502dccada8d9677879 +IV= 0477e6c4b57f5ba9fbf0c77abe7889d4295845cec2ed8edb +PT= 66416c5242fbc80b92c080933c1065015a85bc444c54c126 +CT= d8ca80f19eaf47e65eea5892969860521d204708285f6b0e +TEST= 140 +KEY= 9621e8c85e5d31f71ae81903891392a810be06e399fcba0230eceaa0f1381377 +IV= d8ca80f19eaf47e65eea5892969860521d204708285f6b0e +PT= 356a40da065f260adca41d091134148a380d3a8db285bd1c +CT= e284636b841d79c68eaf7f7353c5fc26f8bf9208c43d3c17 +TEST= 141 +KEY= cf253b73b3e7e372f86c7a680d0eeb6e9e117990ca394624c85378a835052f60 +IV= e284636b841d79c68eaf7f7353c5fc26f8bf9208c43d3c17 +PT= 23c36e25ca5bbd6540cc7748a2600ce75904d3bbedbad285 +CT= 319b7b503981ae6d64e359f7fbc25393a1dd470ffc7600b4 +TEST= 142 +KEY= bdffb95c9aa37c27c9f70138348f4503faf2206731fb15b7698e3fa7c9732fd4 +IV= 319b7b503981ae6d64e359f7fbc25393a1dd470ffc7600b4 +PT= 779ea3e36c84cb3c3e472fc57a322d5672da822f29449f55 +CT= e230fd5d643945d1ecfb0fe1236efbbc6f41fda01e302f70 +TEST= 143 +KEY= c5ffcb973fd88b8a2bc7fc6550b600d216092f861295ee0b06cfc207d74300a4 +IV= e230fd5d643945d1ecfb0fe1236efbbc6f41fda01e302f70 +PT= ca5d1855cf1c311b009fd95104db9c21780072cba57bf7ad +CT= 873158a4447adb747a47d84ef172b3d0914b75141dbcfb68 +TEST= 144 +KEY= 99b07e9e1aebda20acf6a4c114ccdba66c4ef7c8e3e75ddb9784b713cafffbcc +IV= 873158a4447adb747a47d84ef172b3d0914b75141dbcfb68 +PT= 1177ad272a3d52e28fb8c90fd4b457485c4fb509253351aa +CT= 948fc25366be458e1064a84e1164108f6bd88a49f952c4ed +TEST= 145 +KEY= e3dd1c2238b636e63879669272729e287c2a5f86f2834d54fc5c3d5a33ad3f21 +IV= 948fc25366be458e1064a84e1164108f6bd88a49f952c4ed +PT= 040815bb65e045516557e83f5ad60add7a6d62bc225decc6 +CT= beb29d49823c322f1cd68c15f3ead01508dcbd6a21ad6820 +TEST= 146 +KEY= 885086e38a8b155486cbfbdbf04eac0760fcd39301699d41f480803012005701 +IV= beb29d49823c322f1cd68c15f3ead01508dcbd6a21ad6820 +PT= afdeefaf80e38071174b95b2e31aee256b8d9ac1b23d23b2 +CT= c911b34f17d50c2af08c6d891d4477feb19f149a762eeb11 +TEST= 147 +KEY= 9063cc45714103214fda4894e79ba02d9070be1a1c2deabf451f94aa642ebc10 +IV= c911b34f17d50c2af08c6d891d4477feb19f149a762eeb11 +PT= 2bea2e838017f72f5dcfe9e61322f58b18334aa6fbca1675 +CT= 40f288891f45f94a1e6451832f93ee6300a5560f3529e300 +TEST= 148 +KEY= 8fbfeeb8d71620df0f28c01df8de59678e14ef9933be04dc45bac2a551075f10 +IV= 40f288891f45f94a1e6451832f93ee6300a5560f3529e300 +PT= c0eebb3f6f8c9e660f7780a23bd5ea411fdc22fda65723fe +CT= 1279f9b0434c8ba8695a39e08167bf661436e60bdd9240c7 +TEST= 149 +KEY= ace3d568f7d6990f1d5139adbb92d2cfe74ed679b2d9bbba518c24ae8c951fd7 +IV= 1279f9b0434c8ba8695a39e08167bf661436e60bdd9240c7 +PT= 11f19144f7e53c410feb5f9a4fe65a4c235c3bd020c0b9d0 +CT= 643f5bc9cc3cb5987096f21b1f22a44393185e97a0a2242a +TEST= 150 +KEY= 85c2bd1057f794f2796e626477ae675797d82462adfb1ff9c2947a392c373bfd +IV= 643f5bc9cc3cb5987096f21b1f22a44393185e97a0a2242a +PT= dc9fcc99edb65f3cd1feab98dd0eef5f29216878a0210dfd +CT= 94b94524e9627cbc377f0bd41d3d682e67ac0776154ce061 +TEST= 151 +KEY= eda24ab917814805edd727409ecc1beba0a72fb6b0c677d7a5387d4f397bdb9c +IV= 94b94524e9627cbc377f0bd41d3d682e67ac0776154ce061 +PT= 3f1e306df5e74f1784a155b5dcd1aa096860f7a94076dcf7 +CT= 226f78cc21f3bb21eaeb0d5af364b5c5af451704d0b9a0de +TEST= 152 +KEY= 067f35689456bf38cfb85f8cbf3fa0ca4a4c22ec43a2c2120a7d6a4be9c27b42 +IV= 226f78cc21f3bb21eaeb0d5af364b5c5af451704d0b9a0de +PT= aa5e71ed855cdc645582ff9d848d9b16ebdd7fd183d7f73d +CT= 35da6082595bbf9818b0c7648df70c1ce3fa4bce2cb762f1 +TEST= 153 +KEY= 03173a64dfddaa90fa623f0ee6641f5252fce588ce55ce0ee9872185c57519b3 +IV= 35da6082595bbf9818b0c7648df70c1ce3fa4bce2cb762f1 +PT= b10c4c5402c004d06f70df9e9f9fa35e05680f0c4b8b15a8 +CT= fd1cd89b4bc68f5d578f1301006a13a1815c77578265dc94 +TEST= 154 +KEY= d5a7decf6ad06405077ee795ada2900f0573f689ce3fddaf68db56d24710c527 +IV= fd1cd89b4bc68f5d578f1301006a13a1815c77578265dc94 +PT= 569ce61b2044a4ad13bda16d036c0eafd6b0e4abb50dce95 +CT= b799e506f3908a36fd75522b15277b2447232915625b2d54 +TEST= 155 +KEY= 0ea9ea185d8e10f9b0e702935e321a39f806a4a2db18a68b2ff87fc7254be873 +IV= b799e506f3908a36fd75522b15277b2447232915625b2d54 +PT= 0b0246ee13ed3f1dadcd7525ac2074afdb0e34d7375e74fc +CT= 49d14aaea7115532abe50e2d7663bb05705b9ab8fcc0f7fa +TEST= 156 +KEY= 163ea8e0dd2ae4c6f936483df9234f0b53e3aa8fad7b1d8e5fa3e57fd98b1f89 +IV= 49d14aaea7115532abe50e2d7663bb05705b9ab8fcc0f7fa +PT= bc4a6da52ce4aef6ef067c0e5687ce3c189742f880a4f43f +CT= 1de5d8c03e2dd0ab2166ec525ab3979f62b68d465a1d6e09 +TEST= 157 +KEY= 6b1f4b8d3f3c6862e4d390fdc70e9fa0728546ddf7c88a113d15683983967180 +IV= 1de5d8c03e2dd0ab2166ec525ab3979f62b68d465a1d6e09 +PT= e3a9a02dea180c8f3aa68b5371fb11aa7d21e36de2168ca4 +CT= 5e57b8a467804ec61e836ab38a18967046e13b6d4316e5ac +TEST= 158 +KEY= 48a41af1086e0f48ba842859a08ed1666c062c6e7dd01c617bf45354c080942c +IV= 5e57b8a467804ec61e836ab38a18967046e13b6d4316e5ac +PT= d359fcecce52417eeca0fe246cf098df23bb517c3752672a +CT= 7b9e98f44bf5e4c326feb19f25d3ab4c56ab95f957faeb95 +TEST= 159 +KEY= 143cbec1c140761fc11ab0adeb7b35a54af89df15803b72d2d5fc6ad977a7fb9 +IV= 7b9e98f44bf5e4c326feb19f25d3ab4c56ab95f957faeb95 +PT= 970eff21d2fe12ea7e49a15a9b4771d05c98a430c92e7957 +CT= e6c34d3616ab330deb3ceef66dab5cc4fcdc30cf728eada7 +TEST= 160 +KEY= 5173a0cb40dd4e0527d9fd9bfdd006a8a1c4730735a8ebe9d183f662e5f4d21e +IV= e6c34d3616ab330deb3ceef66dab5cc4fcdc30cf728eada7 +PT= 87d42c76834f25f5bf6949968b5f221e454f1e0a819d381a +CT= cd103368d9b6ebfed4064cc651efbc29d16600e847295d13 +TEST= 161 +KEY= ceb268407bdb587eeac9cef32466ed5675c23fc1644757c000e5f68aa2dd8f0d +IV= cd103368d9b6ebfed4064cc651efbc29d16600e847295d13 +PT= f764b993aecad6a41fe2643e1af685909fc1c88b3b06167b +CT= 13ac4125f1fde6370518fae80f841f0fea61fa3c57e3ebe3 +TEST= 162 +KEY= 2dd1c9919bf1acd5f9658fd6d59b0b6170dac5296bc348cfea840cb6f53e64ee +IV= 13ac4125f1fde6370518fae80f841f0fea61fa3c57e3ebe3 +PT= 4b29da8b49254d155c9c8bbfc4a43913e363a1d1e02af4ab +CT= d5dd05163371005dcb97a57efe0fa20b2eb766b51ccdb46c +TEST= 163 +KEY= 2c2118017abe91b82cb88ac0e6ea0b3cbb4d605795cceac4c4336a03e9f3d082 +IV= d5dd05163371005dcb97a57efe0fa20b2eb766b51ccdb46c +PT= d332634d45dddc53a031adf8f81a69d801f0d190e14f3d6d +CT= 91a052d543085e5204082d327190bd16caa93a642b8b3a95 +TEST= 164 +KEY= f3b847f4e3896bfbbd18d815a5e2556ebf454d65e45c57d20e9a5067c278ea17 +IV= 91a052d543085e5204082d327190bd16caa93a642b8b3a95 +PT= 7977a3771e57cb4109689fb177af1428df995ff59937fa43 +CT= 9c990a6e94a42599b299bd4d37b2a25d97b47e66ae63eed1 +TEST= 165 +KEY= 4eb5fececeefb9692181d27b314670f70ddcf028d3eef58f992e2e016c1b04c6 +IV= 9c990a6e94a42599b299bd4d37b2a25d97b47e66ae63eed1 +PT= b6259a82cec5e1465af30401d3d7b8a5bd0db93a2d66d292 +CT= ad6bdfc21cc2d0ddb2fc5c21a98004c519c9cbaef25e9ef4 +TEST= 166 +KEY= a4ddc185f9c007648cea0db92d84a02abf20ac097a6ef14a80e7e5af9e459a32 +IV= ad6bdfc21cc2d0ddb2fc5c21a98004c519c9cbaef25e9ef4 +PT= 678f25c78ddc239f0fa3d565dd9f6b51ea683f4b372fbe0d +CT= ffc65bfb06bb59ba3a4461e0966c47daf934a3c1fb07050e +TEST= 167 +KEY= d3210fa659da7661732c56422b3ff9908564cde9ec02b69079d3466e65429f3c +IV= ffc65bfb06bb59ba3a4461e0966c47daf934a3c1fb07050e +PT= 80e42725e64764a232ae784c569e08ff77fcce23a01a7105 +CT= 79ca009fac4c24c06dc5b9641050d4803ed5fa6725087e60 +TEST= 168 +KEY= 430f317a67648b2b0ae656dd8773dd50e8a1748dfc5262104706bc09404ae15c +IV= 79ca009fac4c24c06dc5b9641050d4803ed5fa6725087e60 +PT= 9111cebdc5e94a0beef223c37f24a82a902e3edc3ebefd4a +CT= a290169230c39b545d29446a4112cfcdad4691e2f685ab2a +TEST= 169 +KEY= b1741b801627ad47a876404fb7b04604b58830e7bd40adddea402debb6cf4a76 +IV= a290169230c39b545d29446a4112cfcdad4691e2f685ab2a +PT= e6e84677342e5c8be0852251f2a92128f27b2afa7143266c +CT= c375835dda553ee0220387467a190605d8e20379379f32b3 +TEST= 170 +KEY= bede99c4f2282aab6b03c3126de578e4978bb7a1c759abd832a22e92815078c5 +IV= c375835dda553ee0220387467a190605d8e20379379f32b3 +PT= c58e27c36119a4ce3f4045c173b6f5b50faa8244e40f87ec +CT= 0f5e3d68c3784290b802518ff2ca42849a01fba8d3e9d776 +TEST= 171 +KEY= e09c6ad07c79d187645dfe7aae9d3a742f89e62e3593e95ca8a3d53a52b9afb3 +IV= 0f5e3d68c3784290b802518ff2ca42849a01fba8d3e9d776 +PT= b90ff818f5ace6965eeac38ed5e126a95e42f3148e51fb2c +CT= 41f360fcfea81ce95f14fd857395cf1eebfc1ce4e4a23441 +TEST= 172 +KEY= 2a457186e951649025ae9e865035269d709d1bab46062642435fc9deb61b9bf2 +IV= 41f360fcfea81ce95f14fd857395cf1eebfc1ce4e4a23441 +PT= 9f3f5ed65b0498b446a7f768193c60b3cad91b569528b517 +CT= 1adec41ed0ace14a8f73f1fb32e3cb3640b3c80b62f9e446 +TEST= 173 +KEY= 449f8587cb0cd4bc3f705a988099c7d7ffeeea5074e5ed7403ec01d5d4e27fb4 +IV= 1adec41ed0ace14a8f73f1fb32e3cb3640b3c80b62f9e446 +PT= 082b096bfeb00cdcf03f2118acc440d46edaf401225db02c +CT= 663fc0fffa4728c6ad39eec9433835b012632373d4c8183a +TEST= 174 +KEY= 1a7cc218b352724f594f9a677adeef1152d7049937ddd8c4118f22a6002a678e +IV= 663fc0fffa4728c6ad39eec9433835b012632373d4c8183a +PT= aa969fef2b665e6c47dbbad4a21818f85ee3479f785ea6f3 +CT= e3a5d824026833585bf232ac8583bdacd2404beedb9e58d3 +TEST= 175 +KEY= 233a6145651e05f6baea424378b6dc4909253635b25e6568c3cf6948dbb43f5d +IV= e3a5d824026833585bf232ac8583bdacd2404beedb9e58d3 +PT= ffe5bf020bec5f18f2cdba9327bfb7773946a35dd64c77b9 +CT= 7876bdc1b00c5d61497b31f2efc7cf2b055e97a37debda2c +TEST= 176 +KEY= a2668ef9fc0420c3c29cff82c8ba8128405e07c75d99aa43c691feeba65fe571 +IV= 7876bdc1b00c5d61497b31f2efc7cf2b055e97a37debda2c +PT= 8b4efa0fb63557c97f3fdc8fcee44f82815cefbc991a2535 +CT= cb96319b554d6b3bea7bf3c0043fc37b3cdc8dc1380f15a3 +TEST= 177 +KEY= c88e3ebcb827e26c090ace199df7ea13aa25f40759a66938fa4d732a9e50f0d2 +IV= cb96319b554d6b3bea7bf3c0043fc37b3cdc8dc1380f15a3 +PT= 3859960995bf450d7f9b5aa0ce4556216ae8b0454423c2af +CT= 63aab4fa19d115d6c302b101a27365a40d71d80744953cd6 +TEST= 178 +KEY= 9138872e6f6d9a0c6aa07ae38426ffc569274506fbd50c9cf73cab2ddac5cc04 +IV= 63aab4fa19d115d6c302b101a27365a40d71d80744953cd6 +PT= 85ce53dd2d08a0488da04ed09de1e24659b6b992d74a7860 +CT= ec69fa4a23230efc0dfe9740cf8eda195dc299b5cadd3381 +TEST= 179 +KEY= 697d54c48d03e30286c980a9a705f13964d9d246345bd685aafe32981018ff85 +IV= ec69fa4a23230efc0dfe9740cf8eda195dc299b5cadd3381 +PT= 10e37adbba187c91b85881e9690c32a9f845d3eae26e790e +CT= 51ad08d94fa6244cd71099e360dbce186006ce1e33862567 +TEST= 180 +KEY= 874ebe914148f9c2d7648870e8a3d575b3c94ba55480189dcaf8fc86239edae2 +IV= 51ad08d94fa6244cd71099e360dbce186006ce1e33862567 +PT= e3a1c433636516616ff37c2d188a9f73ee33ea55cc4b1ac0 +CT= b055b1bcf035019eca2be2a584835280583ce1d630ca81de +TEST= 181 +KEY= 2efd21b242cbaf7a673139cc1896d4eb79e2a900d0034a1d92c41d5013545b3c +IV= b055b1bcf035019eca2be2a584835280583ce1d630ca81de +PT= 928d43d3d64bf0dd0eda57e112e51090a9b39f23038356b8 +CT= 5abdbe94451f611779e336213116b4650949d4ae2228d926 +TEST= 182 +KEY= 740e1669ab9d3a8f3d8c87585d89b5fc00019f21e115fe789b8dc9fe317c821a +IV= 5abdbe94451f611779e336213116b4650949d4ae2228d926 +PT= bf0a5334fb7aadfb4587f89c4348d6c25af337dbe95695f5 +CT= af2296565744c0a4e6130be2408743c3a0d95fc23ba2d19a +TEST= 183 +KEY= 8365ac496a2f160392ae110e0acd7558e61294c3a192bdbb3b54963c0ade5380 +IV= af2296565744c0a4e6130be2408743c3a0d95fc23ba2d19a +PT= 727f6806856837c11d97c7d2c601a633f76bba20c1b22c8c +CT= 472610ddff1ddc93d5063f99cd73f5fec54a02c1a454c543 +TEST= 184 +KEY= b8001f8183967229d58801d3f5d0a9cb3314ab5a6ce14845fe1e94fdae8a96c3 +IV= 472610ddff1ddc93d5063f99cd73f5fec54a02c1a454c543 +PT= d90f6e049541c7c7421df8f457107f623b65b3c8e9b9642a +CT= 9ba9af35d2fdc1cfc0b839feec69e8fce70e6989fe04e4ef +TEST= 185 +KEY= 0ee07d0865fec4524e21aee6272d6804f3ac92a48088a0b91910fd74508e722c +IV= 9ba9af35d2fdc1cfc0b839feec69e8fce70e6989fe04e4ef +PT= 34d8802a81f900c931c939af796232d1b6e06289e668b67b +CT= 7bbb866073bb7fc9d7e623b8ee10a5c5c64d677c02783f1a +TEST= 186 +KEY= 28da639645394efa359a2886549617cd244ab11c6e98057cdf5d9a0852f64d36 +IV= 7bbb866073bb7fc9d7e623b8ee10a5c5c64d677c02783f1a +PT= 37db14ea7093dd36c9618e019a5e4381263a1e9e20c78aa8 +CT= 944fd45933137bf6c2f6431c2551628b38d9d8b993903d0e +TEST= 187 +KEY= 5b1d2b7a5e3e3db5a1d5fcdf67856c3be6bcf2004bc967f7e78442b1c1667038 +IV= 944fd45933137bf6c2f6431c2551628b38d9d8b993903d0e +PT= 164513019af4c4363729a98e6075200473c748ec1b07734f +CT= ea5376e06636e49550b702229ce2407ce477d9ad5e526b48 +TEST= 188 +KEY= 8db2f6db5e459e404b868a3f01b388aeb60bf022d72b278b03f39b1c9f341b70 +IV= ea5376e06636e49550b702229ce2407ce477d9ad5e526b48 +PT= 45a5ba5a977c907f14a9751bf1ca1722d6afdda1007ba3f5 +CT= 637934f95cdf243a641f1dd79d8472c169852f55867b6c5e +TEST= 189 +KEY= 959a5bece8f57d8c28ffbec65d6cac94d214edf54aaf554a6a76b449194f772e +IV= 637934f95cdf243a641f1dd79d8472c169852f55867b6c5e +PT= 1f59a91bacf67f13fca3afa28a5d90a31828ad37b6b0e3cc +CT= f588cc30ef766bd5af0a56e6913e246ea2e1977a3968bc67 +TEST= 190 +KEY= b626aa382c847787dd7772f6b21ac7417d1ebb13db917124c89723332027cb49 +IV= f588cc30ef766bd5af0a56e6913e246ea2e1977a3968bc67 +PT= bb1f8fb61bb1e5227b21c5c5d23cbc0323bcf1d4c4710a0b +CT= 19d112d5f8b282d3a863d7d2f49ba7398d3fe428cd28d625 +TEST= 191 +KEY= d2eff44e85d4053dc4a660234aa84592d57d6cc12f0ad61d45a8c71bed0f1d6c +IV= 19d112d5f8b282d3a863d7d2f49ba7398d3fe428cd28d625 +PT= dbb708ecf207f85055c88392c2d7e82264c95e76a95072ba +CT= 634d7e6d49cf6566b23de4ad3b5a785138f1bee38fd0b67d +TEST= 192 +KEY= f29ca64af3474df3a7eb1e4e036720f46740886c1450ae4c7d5979f862dfab11 +IV= 634d7e6d49cf6566b23de4ad3b5a785138f1bee38fd0b67d +PT= 9359b4ad47979e97a47e019886be741c20735204769348ce +CT= fe8a807a5c5e4ce3d226dbc8334c30a41327759f6b1407cd +TEST= 193 +KEY= ba818e3183c40eb359619e345f396c17b56653a4271c9ee86e7e0c6709cbacdc +IV= fe8a807a5c5e4ce3d226dbc8334c30a41327759f6b1407cd +PT= e7e6efceadecffca6c2cd33c14261c2f481d287b70834340 +CT= 325b0dcc9b79cc14badc40e11ea4f831b95e987e4c03e9e0 +TEST= 194 +KEY= 05e70e7430bb7cf96b3a93f8c440a0030fba134539b866d9d720941945c8453c +IV= 325b0dcc9b79cc14badc40e11ea4f831b95e987e4c03e9e0 +PT= 624e95dc90311acf40dfac9af31411c1bf668045b37f724a +CT= 20ce43531075eac0a82ebd2b502021ae782537278cf74fa8 +TEST= 195 +KEY= 400eeec50be62b5d4bf4d0abd4354ac3a794ae6e69984777af05a33ec93f0a94 +IV= 20ce43531075eac0a82ebd2b502021ae782537278cf74fa8 +PT= db4558f96abe20f029d3be2e88be231a45e9e0b13b5d57a4 +CT= 7823fb90c3802042535096d245441a056a3b84b2b4f9c79e +TEST= 196 +KEY= 0e8104b1b210fbe033d72b3b17b56a81f4c438bc2cdc5d72c53e278c7dc6cd0a +IV= 7823fb90c3802042535096d245441a056a3b84b2b4f9c79e +PT= 33ec11806abd39b82ba5127a7f5e95664e8fea74b9f6d0bd +CT= cab256f48421826f13fee155c6c3ccb6f3869725d4e25ce6 +TEST= 197 +KEY= b7762c3d279bf427f9657dcf9394e8eee73ad9e9ea1f91c436b8b0a9a92491ec +IV= cab256f48421826f13fee155c6c3ccb6f3869725d4e25ce6 +PT= 7a71778f7cf1e33bcd9acd39b3ebbb3db9f7288c958b0fc7 +CT= b7cb13a808b48b1dad03b323dc50e4bc218f38d05826db72 +TEST= 198 +KEY= 61e3717014eea43d4eae6e679b2063f34a396aca364f757817378879f1024a9e +IV= b7cb13a808b48b1dad03b323dc50e4bc218f38d05826db72 +PT= 182ff2881b2b228d47135be60b681803d6955d4d3375501a +CT= c473b14fd059320a3a7ada6a4b914fcf18df1f01baac976a +TEST= 199 +KEY= 9ef3a165b7e91a318adddf284b7951f97043b0a07dde3ab70fe897784baeddf4 +IV= c473b14fd059320a3a7ada6a4b914fcf18df1f01baac976a +PT= b608c2ce3a19a74e44ed58ffd069ee71ff10d015a307be0c +CT= 332f7afa6a34c1a01f9dd62b3a9fcf950346801da23b0e8a +TEST= 200 +KEY= 1bfbfc4a912c0475b9f2a5d2214d90596fde668b4741f5220cae1765e995d37e +IV= 332f7afa6a34c1a01f9dd62b3a9fcf950346801da23b0e8a +PT= 8bc2bfe05c5b88b6002b0d6a6a27c41785085d2f26c51e44 +CT= 36b31bc1380d45c87fa021859c9fde002f593e1ecca52a16 +TEST= 201 +KEY= 8d00e516b078f35f8f41be131940d591107e470edbde2b2223f7297b2530f968 +IV= 36b31bc1380d45c87fa021859c9fde002f593e1ecca52a16 +PT= a20ab116c296ebefb2322b2671189c8f96fb195c2154f72a +CT= 32c808f8bd54ebb2d9bc4c96bfc417708a39cbba0adacb58 +TEST= 202 +KEY= 98565399aa8821f0bd89b6eba4143e23c9c20b98641a3c52a9cee2c12fea3230 +IV= 32c808f8bd54ebb2d9bc4c96bfc417708a39cbba0adacb58 +PT= ee1485573e1f6f7ba2feab5254ec53a61556b68f1af0d2af +CT= fb4670af65537ffbddba1725cc51614b0b164c2d65a56c9f +TEST= 203 +KEY= 06c13461009abe5d46cfc644c14741d814781cbda84b5d19a2d8aeec4a4f5eaf +IV= fb4670af65537ffbddba1725cc51614b0b164c2d65a56c9f +PT= 8ac77bab3196fa855bab8b3cbf3aae779e9767f8aa129fad +CT= 43d551c8d310a9d88b2b272ccb04a6d9432312626c442914 +TEST= 204 +KEY= 37689e033e538cf4051a978c1257e8009f533b91634ffbc0e1fbbc8e260b77bb +IV= 43d551c8d310a9d88b2b272ccb04a6d9432312626c442914 +PT= 52c8ba11d079224b9822531aec64112631a9aa623ec932a9 +CT= fd2cdffacf818159060097ce7ebe15b32fa0145c85857e40 +TEST= 205 +KEY= 830cdf469f56fe87f8364876ddd669599953ac5f1df1ee73ce5ba8d2a38e09fb +IV= fd2cdffacf818159060097ce7ebe15b32fa0145c85857e40 +PT= 237a4a0671aa55cc5420a8c7b593db28b4644145a1057273 +CT= a7bd21c09def7b90831033e5c467b9f948e7ec8397c37453 +TEST= 206 +KEY= b11444f9fd8ddee85f8b69b6403912c91a439fbad996578a86bc4451344d7da8 +IV= a7bd21c09def7b90831033e5c467b9f948e7ec8397c37453 +PT= a2a945ae4ed1d4053dfb73cc3ea7c01f32189bbf62db206f +CT= 9780aa2de1329b11670e2899d8e5d4af6d49014587d15b8f +TEST= 207 +KEY= d8856ca2a7b92ba7c80bc39ba10b89d87d4db72301738325ebf54514b39c2627 +IV= 9780aa2de1329b11670e2899d8e5d4af6d49014587d15b8f +PT= b26bd4613646912d2fa4604055a91f1e6991285b5a34f54f +CT= 7b6abcbfc8d7da3189324d082f5e560ab60262f45bb23581 +TEST= 208 +KEY= a4b5b5e43e1443e5b3617f2469dc53e9f47ffa2b2e2dd52f5df727e0e82e13a6 +IV= 7b6abcbfc8d7da3189324d082f5e560ab60262f45bb23581 +PT= 3124d474a5f41f977a5ccc8c7f362ede7c30d94699ad6842 +CT= eb4af023db0cf0ddf9f56e376ba616419f0f4d23a0b6cbb9 +TEST= 209 +KEY= 6e621f72db843923582b8f07b2d0a3340d8a941c458bc36ec2f86ac34898d81f +IV= eb4af023db0cf0ddf9f56e376ba616419f0f4d23a0b6cbb9 +PT= 1ffdc913e46d332374d7ad2f44ebc6eecad7aa96e5907ac6 +CT= efab535317403cb7b1a77039f73976e7f9560ac189bb64bd +TEST= 210 +KEY= 8b07e5c73fca6dfcb780dc54a5909f83bc2de425b2b2b5893bae6002c123bca2 +IV= efab535317403cb7b1a77039f73976e7f9560ac189bb64bd +PT= 15ff44d115a61db416a741bdf555e1e5e565fab5e44e54df +CT= fe6680c6cc8ffebfba7add9bebfcd45e26a4df7057f0a9b2 +TEST= 211 +KEY= 9ebe4c7d01b68e3b49e65c92691f613c065739be594e61d71d0abf7296d31510 +IV= fe6680c6cc8ffebfba7add9bebfcd45e26a4df7057f0a9b2 +PT= 566cd5acc255252ee307cfab022997c815b9a9ba3e7ce3c7 +CT= 495f67940deda6f232cc2ffb3a9720aec0614d9684bea85b +TEST= 212 +KEY= 7491cf2627522b6400b93b0664f2c7ce349b164563d94179dd6bf2e4126dbd4b +IV= 495f67940deda6f232cc2ffb3a9720aec0614d9684bea85b +PT= 1d9587257db0f07f59e4b40bc9df23b5ea2f835b26e4a55f +CT= 94d81bae7edf84ac045452aaa9c217a1615d4fda5bc4ecc5 +TEST= 213 +KEY= d26b560c25ee3888946120a81a2d436230cf44efca1b56d8bc36bd3e49a9518e +IV= 94d81bae7edf84ac045452aaa9c217a1615d4fda5bc4ecc5 +PT= 9abe547bda64989b7a475a2c83df43a1a6fa992a02bc13ec +CT= 85cf18daee7fd42d9039d6d340e2f7a31773baaf9f34563c +TEST= 214 +KEY= fdb44b30e6a06a9a11ae3872f452974fa0f6923c8af9a17bab450791d69d07b2 +IV= 85cf18daee7fd42d9039d6d340e2f7a31773baaf9f34563c +PT= bcd615215b2a9d236829b8d6b76fa3712fdf1d3cc34e5212 +CT= bb5a2913d1b2efb63bcdf9e844b5439eecb08f32c80c05dd +TEST= 215 +KEY= 50c6a101f79c4f35aaf4116125e078f99b3b6bd4ce4ce2e547f588a31e91026f +IV= bb5a2913d1b2efb63bcdf9e844b5439eecb08f32c80c05dd +PT= 0a6ef61eafa7bf343c48460a021aaf1fad72ea31113c25af +CT= 0d2a7823d76cb6ba12e979ca3d585091b7a55b93bc25e7c6 +TEST= 216 +KEY= c708fd458b68dc2da7de6942f28cce4389d2121ef314b274f050d330a2b4e5a9 +IV= 0d2a7823d76cb6ba12e979ca3d585091b7a55b93bc25e7c6 +PT= 1ec78a0858904ae03783cd89a424171a97ce5c447cf49318 +CT= 2923e30b9ccf2ba884d2ed25fe0970f978ee627d15a9ff66 +TEST= 217 +KEY= 6748ca3549a0d2c68efd8a496e43e5eb0d00ff3b0d1dc28d88beb14db71d1acf +IV= 2923e30b9ccf2ba884d2ed25fe0970f978ee627d15a9ff66 +PT= 8cc04504b2e3fd9fd0241e60eabce9dba0403770c2c80eeb +CT= 31e682f1483923a731b048d43c8b2b70b0d84df9699f7863 +TEST= 218 +KEY= f8ebe223bd97f6f1bf1b08b8267ac64c3cb0b7ef3196e9fd3866fcb4de8262ac +IV= 31e682f1483923a731b048d43c8b2b70b0d84df9699f7863 +PT= 9035075f90bd59fc363b09cc59dbce279fa32816f4372437 +CT= bc5527f874f7c5a1eda056b4860d7e9b8ebcd2ef088ebbc1 +TEST= 219 +KEY= f6f9c202222be490034e2f40528d03edd110e15bb79b9766b6da2e5bd60cd96d +IV= bc5527f874f7c5a1eda056b4860d7e9b8ebcd2ef088ebbc1 +PT= f7215e2a36ee13c7712f0ef955571f860e1220219fbc1261 +CT= 6e9a6919ea07f3c9cf4f582637741056e4ad13ef253269eb +TEST= 220 +KEY= 595310bfd7a082dd6dd44659b88af0241e5fb97d80ef873052773db4f33eb086 +IV= 6e9a6919ea07f3c9cf4f582637741056e4ad13ef253269eb +PT= 07198d7883268c7f379aa0e02d18e6e2afaad2bdf58b664d +CT= 627d0706dee1dd063079a3926c427a67cabd65455e303853 +TEST= 221 +KEY= e3b8f7c795c794740fa9415f666b2d222e261aefecadfd5798ca58f1ad0e88d5 +IV= 627d0706dee1dd063079a3926c427a67cabd65455e303853 +PT= c0e30652e0f72a1faf236fd020fb5740baebe778426716a9 +CT= cdb3564e16e45ad1eaf775c8f5fc1ff5582f2feaf83adf95 +TEST= 222 +KEY= 704f4f0cc70d08dec21a1711708f77f3c4d16f271951e2a2c0e5771b55345740 +IV= cdb3564e16e45ad1eaf775c8f5fc1ff5582f2feaf83adf95 +PT= f2985ed11497c38838f2628b72ae8bbf93f7b8cb52ca9caa +CT= d8e4c959baa5fc5d3046bcf0dc94a51d4b32e7c2cc37fe6d +TEST= 223 +KEY= 6bd303884d4b5a8e1afede48ca2a8baef497d3d7c5c547bf8bd790d99903a92d +IV= d8e4c959baa5fc5d3046bcf0dc94a51d4b32e7c2cc37fe6d +PT= f662c923ad9bf9b0851adbf691a9d33c1b9c4c848a465250 +CT= 38609c18306dcdc7966c6237061b81f002c4bacd55b4c1d5 +TEST= 224 +KEY= 304a1097905c9363229e4250fa47466962fbb1e0c3dec64f89132a14ccb768f8 +IV= 38609c18306dcdc7966c6237061b81f002c4bacd55b4c1d5 +PT= 2e6f4e2e34b7d3953d68e18cbefaf42b5b99131fdd17c9ed +CT= fe5019aa6fae481e0dd0948cfdcda33af0fa5e93a0ad157c +TEST= 225 +KEY= 782840207f6e9a1ddcce5bfa95e90e776f2b256c3e13657579e974876c1a7d84 +IV= fe5019aa6fae481e0dd0948cfdcda33af0fa5e93a0ad157c +PT= 3a977b837676489fc02402a0e41c38c9486250b7ef32097e +CT= 4c5f7e66b28132b5dd2257a3905ff14fdf95fda5fa2365b8 +TEST= 226 +KEY= 10de74353caaad479091259c27683cc2b20972cfae4c943aa67c89229639183c +IV= 4c5f7e66b28132b5dd2257a3905ff14fdf95fda5fa2365b8 +PT= c5fd1bdd225add82f7d7f70fa15498a268f6341543c4375a +CT= a6e4e339b805dcfd5d7c6c7ef2e64b614ebf82f0408a93d0 +TEST= 227 +KEY= c776cfd5cb8990703675c6a59f6de03fef751eb15caadf5be8c30bd2d6b38bec +IV= a6e4e339b805dcfd5d7c6c7ef2e64b614ebf82f0408a93d0 +PT= fa4772217e0f82f619c5805a5917714cd7a8bbe0f7233d37 +CT= 3e9c51608a9ad5a0a02e73d31d9e20f6c442c25385d50958 +TEST= 228 +KEY= 9ad3841ac851b01608e997c515f7359f4f5b6d624134ffad2c81c981536682b4 +IV= 3e9c51608a9ad5a0a02e73d31d9e20f6c442c25385d50958 +PT= 64ab96fbd36ee5153de536ae412be04c5da54bcf03d82066 +CT= c444cb7c749a63a10f8d47db6faf0bc8a4276ff9e6a2541d +TEST= 229 +KEY= f9313bb0ff906d04ccad5cb9616d563e40d62ab92e9bf46588a6a678b5c4d6a9 +IV= c444cb7c749a63a10f8d47db6faf0bc8a4276ff9e6a2541d +PT= b5ea7de55c883fef49959c5bb917ed5a63e2bfaa37c1dd12 +CT= e96dac4742b590c2376ad9a77bc0ee287d202fa051fe010b +TEST= 230 +KEY= 126b9ef24fc696a925c0f0fe23d8c6fc77bcf31e555b1a4df58689d8e43ad7a2 +IV= e96dac4742b590c2376ad9a77bc0ee287d202fa051fe010b +PT= 34cd687cc4d13a1f3b4316987ee293b8eb5aa542b056fbad +CT= 9e71965d725daa487773dc9a6356d29e48a1f6233805a4a5 +TEST= 231 +KEY= ee5e65f728ec0560bbb166a351856cb400cf2f84360dc8d3bd277ffbdc3f7307 +IV= 9e71965d725daa487773dc9a6356d29e48a1f6233805a4a5 +PT= a46231e41370ee6e43a6624ca44656c1fc35fb05672a93c9 +CT= a76661a1338f2b7a55da40be40ca93c4d4a7e2b506245904 +TEST= 232 +KEY= f86dec12441801471cd70702620a47ce55156f3a76c75b1769809d4eda1b2a03 +IV= a76661a1338f2b7a55da40be40ca93c4d4a7e2b506245904 +PT= 61a1e5dfe4141c2eef236b958a370d57163389e56cf40427 +CT= fe927c09ed8619fc0e56bc9d91ad55245eef8cc30093e413 +TEST= 233 +KEY= 46399d1481a8d448e2457b0b8f8c5e325b43d3a7e76a0e33376f118dda88ce10 +IV= fe927c09ed8619fc0e56bc9d91ad55245eef8cc30093e413 +PT= aa516632a8243405e9486876c95ed574be547106c5b0d50f +CT= aea01a84d76d63e4482825d4bbb71a0d3a4f521c594015d9 +TEST= 234 +KEY= be899da5bb2add504ce5618f58e13dd6136bf6735cdd143e0d20439183c8dbc9 +IV= aea01a84d76d63e4482825d4bbb71a0d3a4f521c594015d9 +PT= 4db518765a219cb2f81436b8cb4dae19f8b000b13a820918 +CT= 7d43ce4e6e53a78a8b7e22ee70b6c5257fcef4a078449833 +TEST= 235 +KEY= c9e7c0bc9463f00131a6afc136b29a5c9815d49d2c6bd11b72eeb731fb8c43fa +IV= 7d43ce4e6e53a78a8b7e22ee70b6c5257fcef4a078449833 +PT= 7b8949debb3174093e5f0ceb4892869c776e5d192f492d51 +CT= a41227bf3b9107f07b2fbf606d1c968569eafeaff2d994b4 +TEST= 236 +KEY= 34f06eadde196ce995b4887e0d239dace33a6bfd4177479e1b04499e0955d74e +IV= a41227bf3b9107f07b2fbf606d1c968569eafeaff2d994b4 +PT= 1a5d07f833ae09a60e26e98763d48bfafd17ae114a7a9ce8 +CT= 33f431a5d8cab614a7cf4271c35f328f89fa173d6cde915d +TEST= 237 +KEY= 8514b376b05f041da640b9dbd5e92bb844f5298c8228751192fe5ea3658b4613 +IV= 33f431a5d8cab614a7cf4271c35f328f89fa173d6cde915d +PT= 0a2f31f38aef87c7fb24b55bb4928617b1e4dddb6e4668f4 +CT= 9d01c7c9433c3a79b2aa06c6fec3d09ad84c3fd390664cd7 +TEST= 238 +KEY= fd56b84cf5f05c663b417e1296d511c1f65f2f4a7ceba58b4ab26170f5ed0ac4 +IV= 9d01c7c9433c3a79b2aa06c6fec3d09ad84c3fd390664cd7 +PT= 3705d4b20ee12f42b7133017d3017a2878420b3a45af587b +CT= 311e615c2f4bab41359161a8222e67d7f7eed0dfaa661fd1 +TEST= 239 +KEY= 84c70273986c59760a5f1f4eb99eba80c3ce4ee25ec5c25cbd5cb1af5f8b1515 +IV= 311e615c2f4bab41359161a8222e67d7f7eed0dfaa661fd1 +PT= 330406946bc38d9d3361853bb8c949e57991ba3f6d9c0510 +CT= ba2331c8e19e775aa0998a63f1f2809bd03d511c939b9b04 +TEST= 240 +KEY= 60703205bc704c16b07c2e865800cdda6357c481af3742c76d61e0b3cc108e11 +IV= ba2331c8e19e775aa0998a63f1f2809bd03d511c939b9b04 +PT= c3e76cd3419c5ec70f852e928c14c8d1e4b73076241c1560 +CT= 9c44da0f4324251e3b77db34178d91f50399a6fba509bd29 +TEST= 241 +KEY= a182378547482b682c38f4891b24e8c458201fb5b8bad3326ef8464869193338 +IV= 9c44da0f4324251e3b77db34178d91f50399a6fba509bd29 +PT= 9a224d07cdd41cef30de9778008f2d61c1f20580fb38677e +CT= 672c568206da329fb8cb3547c6465f306b6784eb75ed8eb2 +TEST= 242 +KEY= 6080edc141046c494b14a20b1dfeda5be0eb2af27efc8c02059fc2a31cf4bd8a +IV= 672c568206da329fb8cb3547c6465f306b6784eb75ed8eb2 +PT= 1858a7fb809ee8ce70e99192c8ee75b8c102da44064c4721 +CT= 9d5a841ed24edb286362ce9a36a7ca6bf32c097c085d3cc6 +TEST= 243 +KEY= 7a0795a19ad86032d64e2615cfb001738389e468485b4669f6b3cbdf14a9814c +IV= 9d5a841ed24edb286362ce9a36a7ca6bf32c097c085d3cc6 +PT= b9a83cf9b91436c3ab3fed966c01523e1a877860dbdc0c7b +CT= 9ef49d3a44d66bf44d3a6f031e7af7d91cd0a4f230595114 +TEST= 244 +KEY= e040bbadc080341848babb2f8b666a87ceb38b6b5621b1b0ea636f2d24f0d058 +IV= 9ef49d3a44d66bf44d3a6f031e7af7d91cd0a4f230595114 +PT= 16f3be8fef00a3e66b78fab08d155da09a472e0c5a58542a +CT= 982e6475f0b2e201f5549dfcefefd9f9055ba524d72f951f +TEST= 245 +KEY= e99f12dac7188498d094df5a7bd488863be71697b9ce6849ef38ca09f3df4547 +IV= 982e6475f0b2e201f5549dfcefefd9f9055ba524d72f951f +PT= f1ed7f8709bed5877d8ba9c322bcd2d309dfa9770798b080 +CT= 5dcb3fd9b3050ca18f072e148e163b055d4ce7b0b21e2921 +TEST= 246 +KEY= a84dda8e8f43bb4d8d5fe083c8d18427b4e0388337d8534cb2742db941c16c66 +IV= 5dcb3fd9b3050ca18f072e148e163b055d4ce7b0b21e2921 +PT= e5e3a4c4aeac49ab6d3dfa33b3c9417241d2c854485b3fd5 +CT= 2eb4a530bec3d951da4e39c0fa87c183a6c5b41948354c26 +TEST= 247 +KEY= b3d40417ddcd00d5a3eb45b376125d766eae0143cd5f92cf14b199a009f42040 +IV= 2eb4a530bec3d951da4e39c0fa87c183a6c5b41948354c26 +PT= ae31f4299be1938a8b0dd99d9dd4a07a1b99de99528ebb98 +CT= 284f875831f3a67051ce45ff873647c1eef695515994ea52 +TEST= 248 +KEY= 7ef4657a0a5b88348ba4c2eb47e1fb063f6044bc4a69d50efa470cf15060ca12 +IV= 284f875831f3a67051ce45ff873647c1eef695515994ea52 +PT= 727f8ba110d168c3106fef4061e64b94cd20616dd79688e1 +CT= a7fee49ea4b034fb9ac1b1cb578b397b7428d825e41fe91d +TEST= 249 +KEY= 81a50abdc2eb8ff72c5a2675e351cffda5a1f5771de2ec758e6fd4d4b47f230f +IV= a7fee49ea4b034fb9ac1b1cb578b397b7428d825e41fe91d +PT= b1f5aa2ae4aab4d7a54f8748d010b2c7ff516fc7c8b007c3 +CT= 3ebd9b82c2d724501f3f4c64a612706b5b7c53d9683b328e +TEST= 250 +KEY= 13fc07e4516011b912e7bdf72186ebadba9eb913bbf09c1ed513870ddc441181 +IV= 3ebd9b82c2d724501f3f4c64a612706b5b7c53d9683b328e +PT= 5884423b87d55d2237fdab8eef79218c92590d59938b9e4e +CT= 5562c0e3ba3e11ed166acd53d4ae68a866c008bdfa782e0f +TEST= 251 +KEY= 6008bf5ba9566f0f47857d149bb8fa40acf474406f5ef4b6b3d38fb0263c3f8e +IV= 5562c0e3ba3e11ed166acd53d4ae68a866c008bdfa782e0f +PT= ee0a68f8ee668d618e7daa4c36af526b73f4b8bff8367eb6 +CT= 7addaf5ba6762f970179313938500c552058a2b445dbb515 +TEST= 252 +KEY= 993962d6146d37f33d58d24f3dced5d7ad8d4579570ef8e3938b2d0463e78a9b +IV= 7addaf5ba6762f970179313938500c552058a2b445dbb515 +PT= 17c5ad7f0f53a87d645253261f96cbfbf931dd8dbd3b58fc +CT= 097640f7946598759df8cff10f3124988eda3f48d13570a7 +TEST= 253 +KEY= c32f7981a44b25e8342e92b8a9ab4da230758a88583fdc7b1d51124cb2d2fa3c +IV= 097640f7946598759df8cff10f3124988eda3f48d13570a7 +PT= 6587c509fa8929946d1ffc4a718ae88c5a161b57b026121b +CT= 022cfa98a07300eb790693864081252e0d347ebfe22845e4 +TEST= 254 +KEY= 82f64c2629b091353602682009d84d494973190e18bef95510656cf350fabfd8 +IV= 022cfa98a07300eb790693864081252e0d347ebfe22845e4 +PT= e995f8506454a39bc71315e219727c5341d935a78dfbb4dd +CT= 2120c676c69464416223f292275cb5405a328ae16f0f99ca +TEST= 255 +KEY= fce9ad50a3c326db1722ae56cf4c29082b50eb9c3fe24c154a57e6123ff52612 +IV= 2120c676c69464416223f292275cb5405a328ae16f0f99ca +PT= 70f1c15bc9261ade3fae13fb083c592a7e1fe1768a73b7ee +CT= d896799d7df6bde54cf98c44d6744a3804db758391a25f83 +TEST= 256 +KEY= 6fe0d3f1eb8d7d80cfb4d7cbb2ba94ed67a967d8e996062d4e8c9391ae577991 +IV= d896799d7df6bde54cf98c44d6744a3804db758391a25f83 +PT= 57bd6f95a0b38050a5dd0315e6d250e393097ea1484e5b5b +CT= bd5bd0dbf523016067795a8526097bc940b4bd0efffb416d +TEST= 257 +KEY= 8135dfee21ac6a2672ef07104799958d00d03d5dcf9f7de40e382e9f51ac38fc +IV= bd5bd0dbf523016067795a8526097bc940b4bd0efffb416d +PT= ebdb074f861bae37040c92cdf73d2134eed50c1fca2117a6 +CT= 396a1e4c5b7b6cad642ce879cfd284e795b92673333abd71 +TEST= 258 +KEY= b9ea80963a528e5e4b85195c1ce2f92064fcd524004df9039b8108ec6296858d +IV= 396a1e4c5b7b6cad642ce879cfd284e795b92673333abd71 +PT= b08b1cb3b9226e9ed70f3a3feb6b1c0e38df5f781bfee478 +CT= ef73e02bafc7a7a96e964436097fa474534066ea0446dc1c +TEST= 259 +KEY= fe86808295a5322fa4f6f977b3255e890a6a911209325d77c8c16e0666d05991 +IV= ef73e02bafc7a7a96e964436097fa474534066ea0446dc1c +PT= 3ca8f3bad3844293442545a927d1ee20476c0014aff7bc71 +CT= e23dd58121ecfcfe947c18a98dcb4796b74bb86f9845d4b7 +TEST= 260 +KEY= 38f99f8e1189a0c146cb2cf692c9a2779e1689bb84f91ae17f8ad669fe958d26 +IV= e23dd58121ecfcfe947c18a98dcb4796b74bb86f9845d4b7 +PT= fcfe368d0794563b1428c26ed5e8f2afc67f1f0c842c92ee +CT= d5e288f4fd0b231b541df4f86db6effb0d35650272506403 +TEST= 261 +KEY= 34d4424d4786c3e89329a4026fc2816cca0b7d43e94ff51a72bfb36b8cc5e925 +IV= d5e288f4fd0b231b541df4f86db6effb0d35650272506403 +PT= 5e445e219f81e37c973d3f04a9e6e8510c2dddc3560f6329 +CT= 8b036646f5695f8cfc6a20bb1a336e37455e3621509cdf4e +TEST= 262 +KEY= 86c0f9afebcb7434182ac2449aabdee036615df8f37c9b2d37e1854adc59366b +IV= 8b036646f5695f8cfc6a20bb1a336e37455e3621509cdf4e +PT= 5365e25472c5dd9c24225115937cfef4b214bbe2ac4db7dc +CT= 52a0c9d73745c615806c46905e58dca489a546bdea938a92 +TEST= 263 +KEY= 0b90d55414a59ddc4a8a0b93adee18f5b60d1b68ad244789be44c3f736cabcf9 +IV= 52a0c9d73745c615806c46905e58dca489a546bdea938a92 +PT= 7bf082cfa4914f29bc5d87e7a45b1b968d502cfbff6ee9e8 +CT= e2cfbd2dcf49aae878393c83e74935ed813dcc343e3395e1 +TEST= 264 +KEY= ca7e4bcb12884b89a845b6be62a7b21dce3427eb4a6d72643f790fc308f92918 +IV= e2cfbd2dcf49aae878393c83e74935ed813dcc343e3395e1 +PT= 52a8099b3c082d32ade7b6e13e006379c1ee9e9f062dd655 +CT= 5264c1d1cbc046522c2194544d2fe2b4382f7859ec8b365f +TEST= 265 +KEY= 0b1b2f880e6aa95ffa21776fa967f44fe215b3bf074290d00756779ae4721f47 +IV= 5264c1d1cbc046522c2194544d2fe2b4382f7859ec8b365f +PT= 4db6d837c340f15ea367a2476867300fc16564431ce2e2d6 +CT= 6e51935e963b68f825be9fa8664ee6888be36be9af921a94 +TEST= 266 +KEY= 2ba99baa3ba76daa9470e4313f5c9cb7c7ab2c17610c76588cb51c734be005d3 +IV= 6e51935e963b68f825be9fa8664ee6888be36be9af921a94 +PT= c778d1ea0a852fefe6604fd93d3ddbaa20b2b42235cdc4f5 +CT= 9ff84f50f7ffc016d0ad168de7cf0edfce3e6093499e04e8 +TEST= 267 +KEY= 308ac71ba1af425c0b88ab61c8a35ca117063a9a86c37887428b7ce0027e013b +IV= 9ff84f50f7ffc016d0ad168de7cf0edfce3e6093499e04e8 +PT= e21fbe0163b6d7f74e30ffcb9a3f18c41b235cb19a082ff6 +CT= 3461e3863b6362c4cf1c1ee25f252f3b7b4862cf8dea3825 +TEST= 268 +KEY= 9aecb752e29e7bc33fe948e7f3c03e65d81a2478d9e657bc39c31e2f8f94391e +IV= 3461e3863b6362c4cf1c1ee25f252f3b7b4862cf8dea3825 +PT= 059cb8bb791271e0f02afcec9edb7d05aa6670494331399f +CT= c7384a4b78fff47700c1e946036e18cce9b15eba8335e56d +TEST= 269 +KEY= 31214212a409fb8af8d102ac8b3fca12d8dbcd3eda884f70d07240950ca1dc73 +IV= c7384a4b78fff47700c1e946036e18cce9b15eba8335e56d +PT= 0f34a80717b4d3bd1ee5096bdc56a03dabcdf54046978049 +CT= 2a7e3787e6ae8ad7c8f367b447b880fdbdd2cc7e01ba4366 +TEST= 270 +KEY= cf59f9a60a5fe425d2af352b6d9140c51028aa8a9d30cf8d6da08ceb0d1b9f15 +IV= 2a7e3787e6ae8ad7c8f367b447b880fdbdd2cc7e01ba4366 +PT= a8e7b4782a816eae62f5dd35a2d04ed1fe78bbb4ae561faf +CT= 9657f5527741a4d4cea3167b6504a071d679f06daecb4daf +TEST= 271 +KEY= 2b1a8fac0ceb02cb44f8c0791ad0e411de8bbcf1f8346ffcbbd97c86a3d0d2ba +IV= 9657f5527741a4d4cea3167b6504a071d679f06daecb4daf +PT= 7b673ef218ea0c74837d58dd068d78a0e443760a06b4e6ee +CT= 4591bc0a33a6f76b166e89e1258ca80887ec39ddc2f23eb6 +TEST= 272 +KEY= 73c93ac82cb9666001697c732976137ac8e53510ddb8c7f43c35455b6122ec0c +IV= 4591bc0a33a6f76b166e89e1258ca80887ec39ddc2f23eb6 +PT= 536934d1a40d4add18e853328439af2f58d3b564205264ab +CT= a8e898344c7d7a433d3640e68e6a8decc3341d4c5ed0559b +TEST= 273 +KEY= 0c14895df5cf5e58a981e447650b6939f5d375f653d24a18ff0158173ff2b997 +IV= a8e898344c7d7a433d3640e68e6a8decc3341d4c5ed0559b +PT= 78f4fd378c66bd5052981512c17efc577fddb395d9763838 +CT= 39cd9d6dc7c4468f19057e736e808a95ee04b2e3dab93180 +TEST= 274 +KEY= 053048a82948d4b1904c792aa2cf2fb6ecd60b853d52c08d1105eaf4e54b8817 +IV= 39cd9d6dc7c4468f19057e736e808a95ee04b2e3dab93180 +PT= ea46503811d0b900609d85d1152430020924c1f5dc878ae9 +CT= 29b0eea73c009a9b6f53a41fd3c35e0ef0c97f3db1fe8e4d +TEST= 275 +KEY= 95138c98cd0a092ab9fc978d9ecfb52d8385af9aee919e83e1cc95c954b5065a +IV= 29b0eea73c009a9b6f53a41fd3c35e0ef0c97f3db1fe8e4d +PT= 5fa5d512504b48b8cd992acc5dce487c9023c430e442dd9b +CT= 3c18e0939d7836e338a208fb170145886d88482f057e3b0e +TEST= 276 +KEY= 13253fb9316748bc85e4771e03b783cebb27a761f990db0b8c44dde651cb3d54 +IV= 3c18e0939d7836e338a208fb170145886d88482f057e3b0e +PT= 447a9aa95dacb7355f165561ecebe6c88636b321fc6d4196 +CT= 3ddd042ae7eab06959de139a0afdeb8094ae061ff348df27 +TEST= 277 +KEY= eef01fbdd0b9e6efb8397334e45d33a7e2f9b4fbf36d308b18eadbf9a283e273 +IV= 3ddd042ae7eab06959de139a0afdeb8094ae061ff348df27 +PT= 75bef9c4f8b569cf1d18ad5000833896fdd52004e1deae53 +CT= cba745d761d9925592a589a2f4c5669783e872aded29a642 +TEST= 278 +KEY= 23ef4e9f176cc0ce739e36e38584a1f2705c3d5907a8561c9b02a9544faa4431 +IV= cba745d761d9925592a589a2f4c5669783e872aded29a642 +PT= 335a9e71051148983e689acb3f226e1acd1f5122c7d52621 +CT= 58191b679fa650c79e62107e74e741db9f348871ca70ccd6 +TEST= 279 +KEY= 416ae0bf2aeedcbf2b872d841a22f135ee3e2d27734f17c70436212585da88e7 +IV= 58191b679fa650c79e62107e74e741db9f348871ca70ccd6 +PT= 9229397de8d2a45f818802fefc7e7fe16285ae203d821c71 +CT= c06d7d8ec6af83b6463d03519109f6f73c32f723cdde35ec +TEST= 280 +KEY= 74196f56aa576d4debea500adc8d7283a8032e76e246e1303804d6064804bd0b +IV= c06d7d8ec6af83b6463d03519109f6f73c32f723cdde35ec +PT= 75e7032866dcba44e39752b30e69235d35738fe980b9b1f2 +CT= 34f419d15fbb4bbd589bb118d62f929c43863017b47b1272 +TEST= 281 +KEY= 4926f8f0703c767adf1e49db8336393ef0989f6e346973ac7b82e611fc7faf79 +IV= 34f419d15fbb4bbd589bb118d62f929c43863017b47b1272 +PT= d5eac540796d5014193989089b8d738a3d3f97a6da6b1b37 +CT= 9d6b894b93fa034ee257b540ee9770df4b530fee8c514f62 +TEST= 282 +KEY= 1c4fd0b38ca825494275c09010cc3a7012cf2a2edafe037330d1e9ff702ee01b +IV= 9d6b894b93fa034ee257b540ee9770df4b530fee8c514f62 +PT= abea15bbbb1511f22ef424cea7f45aa355692843fc945333 +CT= f63d3d49ca58b31172577a6277943b735ca033c71f1d4c90 +TEST= 283 +KEY= 0a3f4bc9ccd2b7c1b448fdd9da9489616098504cad6a38006c71da386f33ac8b +IV= f63d3d49ca58b31172577a6277943b735ca033c71f1d4c90 +PT= c2a84182caf649b5b9afd93cd50b9c8116709b7a407a9288 +CT= a4bbc543bc1378c66173502be0531adca360a162004bb32f +TEST= 284 +KEY= 600cd3d63babeb7610f3389a6687f1a701eb00674d3922dccf117b5a6f781fa4 +IV= a4bbc543bc1378c66173502be0531adca360a162004bb32f +PT= 49a133617fe4f17ece0260fe501b9f556a33981ff7795cb7 +CT= 01ca090b22ac58f08b6afbcd41c767a0afa294994314fb33 +TEST= 285 +KEY= 64d371b89ed0660711393191442ba9578a81fbaa0cfe457c60b3efc32c6ce497 +IV= 01ca090b22ac58f08b6afbcd41c767a0afa294994314fb33 +PT= 78d6bb259ad1d322d4c0afda722f8bc604dfa26ea57b8d71 +CT= 426964474d78ada849a9961d37ef031e2eaafb938954d692 +TEST= 286 +KEY= bfcf6ea8b80859b4535055d6095304ffc3286db73b1146624e191450a5383205 +IV= 426964474d78ada849a9961d37ef031e2eaafb938954d692 +PT= df35e52f52e8bbf1b4c4182689ffd79ddb1c1f1026d83fb3 +CT= 33a5bf64172afcaf4c67ec76d4a68107203d6d5b0b804ff8 +TEST= 287 +KEY= 386e01ceb71f723a60f5eab21e79f8508f4f81c1efb7c7656e24790baeb87dfd +IV= 33a5bf64172afcaf4c67ec76d4a68107203d6d5b0b804ff8 +PT= f870d933a93b17a23460ef0ddcd0f6bd87a16f660f172b8e +CT= 32d0c05526976045c31eb8b93a58c56a8ead2f464dfbc171 +TEST= 288 +KEY= 179b100ea38d70a852252ae738ee98154c513978d5ef020fe089564de343bc8c +IV= 32d0c05526976045c31eb8b93a58c56a8ead2f464dfbc171 +PT= a6b1657f6a4c9f489b3529b391c695382ff511c014920292 +CT= d6c859ad510aed42d6b4ab805094e9229b11dfd3d608e58e +TEST= 289 +KEY= 026b5efd7e065fe784ed734a69e475579ae592f8857beb2d7b98899e354b5902 +IV= d6c859ad510aed42d6b4ab805094e9229b11dfd3d608e58e +PT= 848f0c2f6f06a705172e7da86b640d7915f04ef3dd8b2f4f +CT= a4d0c600e3dc909d15f1cddc17954c6b574d2e59e55d031d +TEST= 290 +KEY= 638197df5c85546d203db54a8a38e5ca8f145f2492eea7462cd5a7c7d0165a1f +IV= a4d0c600e3dc909d15f1cddc17954c6b574d2e59e55d031d +PT= 31454d664fe822bdc8370eb3f87ff1f961eac92222830b8a +CT= aa2c53505aef1893e7b0375696ef2ae71c4cdb7d4741a7b2 +TEST= 291 +KEY= eeb96496351cea538a11e61ad0d7fd5968a4687204018da130997cba9757fdad +IV= aa2c53505aef1893e7b0375696ef2ae71c4cdb7d4741a7b2 +PT= 4e60abcd144a0a7095dec6961a28ee338d38f3496999be3e +CT= 452eb7d8eb3e6f6b7787a3c6353e9084faa66dcad776c8a7 +TEST= 292 +KEY= 4053e5a3fb7bf9decf3f51c23be992321f23cbb4313f1d25ca3f11704021350a +IV= 452eb7d8eb3e6f6b7787a3c6353e9084faa66dcad776c8a7 +PT= 0c1ad46fcc8bcf74cedbd4d6ed82c147aeea8135ce67138d +CT= 61c74a8f2193d6ddbcf2b569c449494620bcd14c534dc0df +TEST= 293 +KEY= 794f1a7ed35d631aaef81b4d1a7a44efa3d17eddf5765463ea83c03c136cf5d5 +IV= 61c74a8f2193d6ddbcf2b569c449494620bcd14c534dc0df +PT= 833be4fd2fc5f5ba03e90f01b130de4d391cffdd28269ac4 +CT= 372ccad03bb2649ff384f7e5a7718d24b9babe43fc15b9a0 +TEST= 294 +KEY= 1e2294c2579ceb9c99d4d19d21c82070505589385207d94753397e7fef794c75 +IV= 372ccad03bb2649ff384f7e5a7718d24b9babe43fc15b9a0 +PT= 7c4fc4de22f6f9286efea4c37bc66c26676d8ebc84c18886 +CT= 0fc58bdeeab2bfc308b5658d1587f3a762cad362ef4830cd +TEST= 295 +KEY= fdfba1e5259868e996115a43cb7a9fb358e0ecb547802ae031f3ad1d00317cb8 +IV= 0fc58bdeeab2bfc308b5658d1587f3a762cad362ef4830cd +PT= e1ffa8e05f5870d264e8e6f301efc649e3d9352772048375 +CT= e438cc80ec251a3420f8504ad5edf84442813d043ffaeded +TEST= 296 +KEY= ec2bd7ee37aebdcf722996c3275f85877818bcff926dd2a4737290193fcb9155 +IV= e438cc80ec251a3420f8504ad5edf84442813d043ffaeded +PT= 81d3c7596ecdefffbf9288ad8e88182711d0760b1236d526 +CT= aa2064628a15b533d90333a2a45a5efb934c60912a597554 +TEST= 297 +KEY= 4cf527a3cb408280d809f2a1ad4a30b4a11b8f5d36378c5fe03ef0881592e401 +IV= aa2064628a15b533d90333a2a45a5efb934c60912a597554 +PT= 69403e82027f9e4b0c25c865a910e650a0def04dfcee3f4f +CT= d3f06604284e5e7c64d3b7753500d561147b35f17f87d7cf +TEST= 298 +KEY= 4e37e3a40690b40d0bf994a585046ec8c5c838280337593ef445c5796a1533ce +IV= d3f06604284e5e7c64d3b7753500d561147b35f17f87d7cf +PT= 4de5e43d93c24eaca631ffdb379ce1ba02c2c407cdd0368d +CT= 7893e493be686832847ed07b1597879a7a85d9e60a5ca7cc +TEST= 299 +KEY= 44a7bb39c7f913aa736a70363b6c06fa41b6e85316a0dea48ec01c9f60499402 +IV= 7893e493be686832847ed07b1597879a7a85d9e60a5ca7cc +PT= 8b4d11ddc03f582112e51e37b325cbf70a90589dc169a7a7 +CT= 353fd0c1e7bf49f09c70ecca650edfaad0fc139bad0bf685 +TEST= 300 +KEY= 4e547149c2b8d6074655a0f7dcd34f0addc6049973ae010e5e3c0f04cd426287 +IV= 353fd0c1e7bf49f09c70ecca650edfaad0fc139bad0bf685 +PT= 52dd14a0f43c35a78f1ee4d46183a9830af3ca700541c5ad +CT= 2cd7d53d34a5784dfb793e3d685b4ca13e08495e757607b4 +TEST= 301 +KEY= b0cf1ae19f6803606a8275cae876374726bf3aa41bf54daf6034465ab8346533 +IV= 2cd7d53d34a5784dfb793e3d685b4ca13e08495e757607b4 +PT= a8358b7980baaee833bcb406c3f116e7fe9b6ba85dd0d567 +CT= 33a7546c4c11e91d7e6f0ce3b8f521aeeafe08f4fd7c3cfd +TEST= 302 +KEY= 6e70a2fea7734f2c592521a6a467de5a58d03647a3006c018aca4eae454859ce +IV= 33a7546c4c11e91d7e6f0ce3b8f521aeeafe08f4fd7c3cfd +PT= 5a101e1b778f72b2ec35757fb968f0a3debfb81f381b4c4c +CT= 742650d04caa63242e084b1dcb32f2b5faa8f66558f55ab7 +TEST= 303 +KEY= e3203dc1eee43c2c2d037176e8cdbd7e76d87d5a68329eb47062b8cb1dbd0379 +IV= 742650d04caa63242e084b1dcb32f2b5faa8f66558f55ab7 +PT= 619d830c660f9035a22be7ca45bcfa828d509f3f49977300 +CT= c964dd5eb2b3a732ab9a15a7c5074e290ec3e575f3880523 +TEST= 304 +KEY= cd8ebe2bd79fcc55e467ac285a7e1a4cdd4268fdad35d09d7ea15dbeee35065a +IV= c964dd5eb2b3a732ab9a15a7c5074e290ec3e575f3880523 +PT= 68eb9c9e06923290f8ca3bdcc803af9e2eae83ea397bf079 +CT= c9ba76659eca5d83ebc43f840ff0388c3076ac86f927a783 +TEST= 305 +KEY= 7e64dce2f5a538be2dddda4dc4b447cf36865779a2c5e8114ed7f1381712a1d9 +IV= c9ba76659eca5d83ebc43f840ff0388c3076ac86f927a783 +PT= dc98fe2e110719342d051ae33d60cc5cb3ea62c9223af4eb +CT= 5518cd6d02f7ec2e45d83719e3c164b04d07c56e05eeaf65 +TEST= 306 +KEY= 20d4a1cc9f0c052178c51720c643abe1735e606041048ca103d0345612fc0ebc +IV= 5518cd6d02f7ec2e45d83719e3c164b04d07c56e05eeaf65 +PT= 65c0016fc2851595b3cbcda7fcaac3175eb07d2e6aa93d9f +CT= 8183af874d64b3e0b65271f14877941c459fc2e3e03c574c +TEST= 307 +KEY= 0e213ce8db2af13ef946b8a78b271801c50c1191097318bd464ff6b5f2c059f0 +IV= 8183af874d64b3e0b65271f14877941c459fc2e3e03c574c +PT= 196841ee2245bf64029dc886b3e9fe422ef59d244426f41f +CT= 15764bff7f11d23ca166d7fb9c497c6aaaf44f98e8949269 +TEST= 308 +KEY= 83322bc70e509823ec30f358f436ca3d646ac66a953a64d7ecbbb92d1a54cb99 +IV= 15764bff7f11d23ca166d7fb9c497c6aaaf44f98e8949269 +PT= 326b21eb0941d09f6c8711e768220d688d13172fd57a691d +CT= 11148a622c044a05605e969e0d015e0cc7e49a18f7df2160 +TEST= 309 +KEY= 08d141650d8c2456fd24793ad8328038043450f4983b3adb2b5f2335ed8beaf9 +IV= 11148a622c044a05605e969e0d015e0cc7e49a18f7df2160 +PT= c5bc349a6f739e1a96221ec1ccbe110e8be36aa203dcbc75 +CT= 0071b1fdb53470cd76ed29630f8eaedadd134d1dcf8de22d +TEST= 310 +KEY= ad9667e8b4c3425cfd55c8c76d06f0f572d9799797b59401f64c6e28220608d4 +IV= 0071b1fdb53470cd76ed29630f8eaedadd134d1dcf8de22d +PT= 0a00edc428e6052ff4e29b484fb99cc3a547268db94f660a +CT= 98c2221d29870eafec13ab1747e868d1d317208fb5cf20ab +TEST= 311 +KEY= 4cea199256ded5616597eada4481fe5a9ecad280d05dfcd0255b4ea797c9287f +IV= 98c2221d29870eafec13ab1747e868d1d317208fb5cf20ab +PT= 242e799e385cb133ecd0d47f78878915e17c7e7ae21d973d +CT= 4085d1ef8cb781c5a49eeebf594f77c90b956b48e0ebc542 +TEST= 312 +KEY= 3fb1c7ee4866590725123b35c8367f9f3a543c3f89128b192ece25ef7722ed3d +IV= 4085d1ef8cb781c5a49eeebf594f77c90b956b48e0ebc542 +PT= 8d09b7defefbfcb1af7ecb300c09b481735bde7c1eb88c66 +CT= 592a56c355e5f85a09d4184ce175b5caa4f95c3385d4c5e2 +TEST= 313 +KEY= 184d82f34d8e0f797c386df69dd387c53380247368673ed38a3779dcf2f628df +IV= 592a56c355e5f85a09d4184ce175b5caa4f95c3385d4c5e2 +PT= 1c116d9fe3b7c4aacf741e764ea2393727fc451d05e8567e +CT= f7083c6bd20f60c53d606078707ec8b04c6fde6e8e088b76 +TEST= 314 +KEY= 92f4e60a585e920e8b30519d4fdce7000ee0440b1819f663c658a7b27cfea3a9 +IV= f7083c6bd20f60c53d606078707ec8b04c6fde6e8e088b76 +PT= 09d978f4374f000e39885af974f994008ab964f915d09d77 +CT= a9698127e6aaed70033292c5a4077ec9d400dcfc25c48e29 +TEST= 315 +KEY= 1eabfaf8180c16662259d0baa9760a700dd2d6cebc1e88aa12587b4e593a2d80 +IV= a9698127e6aaed70033292c5a4077ec9d400dcfc25c48e29 +PT= 89d1bf906516415eb49756331d769a9c8c5f1cf240528468 +CT= 9bafe1d318dc59ddc8b791eecfd3c2dd702b1ebe77b86d3d +TEST= 316 +KEY= c7f25c37f8671fbbb9f63169b1aa53adc565472073cd4a77627365f02e8240bd +IV= 9bafe1d318dc59ddc8b791eecfd3c2dd702b1ebe77b86d3d +PT= 573e6e22e0147c437a58c0fa5d8165a9d959a6cfe06b09dd +CT= c65d4953e5e2de6e4c37017adf7c70769d92b45a60c2fbe2 +TEST= 317 +KEY= bbfc26748545a0557fab783a54488dc38952465aacb13a01ffe1d1aa4e40bb5f +IV= c65d4953e5e2de6e4c37017adf7c70769d92b45a60c2fbe2 +PT= 184e64807ed07fa5cd5d98cfa58823bb7c0e7a437d22bfee +CT= f7a4e8fcfe68feeb7c1d3e512b087013f2f72429d3c5ea65 +TEST= 318 +KEY= 521eed54d751224a880f90c6aa207328f54f780b87b94a120d16f5839d85513a +IV= f7a4e8fcfe68feeb7c1d3e512b087013f2f72429d3c5ea65 +PT= ee03b5cee52a6e3fb46efe471692f409e9e2cb205214821f +CT= 271df5bd41c631629b0d527b0d4dd22f6b9a3d9adda5f609 +TEST= 319 +KEY= 04f05d561ba5cedfaf12657bebe6424a6e422a708af4983d668cc8194020a733 +IV= 271df5bd41c631629b0d527b0d4dd22f6b9a3d9adda5f609 +PT= 9d75f14d30c3ce94947c97919638301356eeb002ccf4ec95 +CT= e8fbdd18373ee94fe39a9941cd4eaa019e19eafec587c479 +TEST= 320 +KEY= 9d37ca7627255d5b47e9b863dcd8ab058dd8b33147ba323cf89522e785a7634a +IV= e8fbdd18373ee94fe39a9941cd4eaa019e19eafec587c479 +PT= 51f6fbb8a0dbf45b5eed3c7468b7251f99c797203c809384 +CT= be8e0580f6d3d0af3a37e4d65ef9f4c71dc791b2d8b05e3c +TEST= 321 +KEY= 420d76a37f1c0573f967bde32a0b7baab7ef57e71943c6fbe552b3555d173d76 +IV= be8e0580f6d3d0af3a37e4d65ef9f4c71dc791b2d8b05e3c +PT= b92a145ce9bf4dfd9a6e849e7657cb59df3abcd558395828 +CT= cdff6385c4840b62f71d7cb784e2097e6787ca8e84803da3 +TEST= 322 +KEY= 012a942f4b285ac43498de66ee8f70c840f22b509da1cf8582d579dbd99700d5 +IV= cdff6385c4840b62f71d7cb784e2097e6787ca8e84803da3 +PT= 06c464f2090b24abb7141098d3b8621b4327e28c34345fb7 +CT= 787e031abecdda7d4c8cf949dfa52bf1701228d1fb4d9709 +TEST= 323 +KEY= 9d56139d81d7f0384ce6dd7c5042aab50c7ed2194204e474f2c7510a22da97dc +IV= 787e031abecdda7d4c8cf949dfa52bf1701228d1fb4d9709 +PT= 29d341aafbb75f0b808bb690616b0bad9c7c87b2caffaafc +CT= 8bbce94ad6640dd1542954c102c40e33b931de8e4cd9b6cd +TEST= 324 +KEY= 7251e3229d46f8bcc75a34368626a764585786d840c0ea474bf68f846e032111 +IV= 8bbce94ad6640dd1542954c102c40e33b931de8e4cd9b6cd +PT= 7e42a1a86923ad65f2c8255c37edc358ef07f0bf1c910884 +CT= 794ceba14aa88d46e1f5e976d898b6e0bb0f471ec1a46a05 +TEST= 325 +KEY= 072e5f01422a1c75be16df97cc8e2a22b9a26fae98585ca7f0f9c89aafa74b14 +IV= 794ceba14aa88d46e1f5e976d898b6e0bb0f471ec1a46a05 +PT= 88420014ea27b5b898a98e59a8db613c757fbc23df6ce4c9 +CT= 3ec0fe4971f76fd2053289b60930cb741108cd5fa0a182ae +TEST= 326 +KEY= ae5b004e1a44a2ac80d621debd7945f0bc90e618916897d3e1f105c50f06c9ba +IV= 3ec0fe4971f76fd2053289b60930cb741108cd5fa0a182ae +PT= 054d34d56872cb0fc412e4656b983cf5a9755f4f586ebed9 +CT= 2114cc8865b09d9de405b4e030e8564635028aacc3f73140 +TEST= 327 +KEY= 844d8e04716f0b1ea1c2ed56d8c9d86d589552f8a180c195d4f38f69ccf1f8fa +IV= 2114cc8865b09d9de405b4e030e8564635028aacc3f73140 +PT= 3dc7e8a21f80e29886996205a8d6e8c82a168e4a6b2ba9b2 +CT= 41fc6f1b8a6507d0ccdb403f0cb0858414d1c69f33640c0b +TEST= 328 +KEY= 3e00364b72527861e03e824d52acdfbd944e12c7ad304411c02249f6ff95f4f1 +IV= 41fc6f1b8a6507d0ccdb403f0cb0858414d1c69f33640c0b +PT= 421d9976caf401fcfbd5b5ceaa54c0a2ba4db84f033d737f +CT= 1e15223845e692f29ac41891b809d6a2aea47b1c6787783f +TEST= 329 +KEY= e092663fb258e5c5fe2ba075174a4d4f0e8a0a56153992b36e8632ea98128cce +IV= 1e15223845e692f29ac41891b809d6a2aea47b1c6787783f +PT= b1029a2ff5979223fb276ca262d6f878de925074c00a9da4 +CT= 707f019a4b2104d5fe0f69de4137563dd862180a4473ee4e +TEST= 330 +KEY= 7ad618d8a8ce016e8e54a1ef5c6b499af0856388540ec48eb6e42ae0dc616280 +IV= 707f019a4b2104d5fe0f69de4137563dd862180a4473ee4e +PT= dc21bc65d42627d31e70a832f42900359a447ee71a96e4ab +CT= 862c1df2d97709c71c678dffa808625bf78b19a168a311e1 +TEST= 331 +KEY= 3f9912cd6458d1220878bc1d851c405dece2ee77fc06a6d5416f3341b4c27361 +IV= 862c1df2d97709c71c678dffa808625bf78b19a168a311e1 +PT= 82a4a784a5cc4db61d15d59f61bc6544454f0a15cc96d04c +CT= a1b98249bc79358395aac5437869ffd5afc0712131dce595 +TEST= 332 +KEY= fc2fb8d1f7192d5ba9c13e54396575de79482b34846f5900eeaf4260851e96f4 +IV= a1b98249bc79358395aac5437869ffd5afc0712131dce595 +PT= 2d6f5df61e4ea2427a78cbc236b58235c3b6aa1c9341fc79 +CT= de99e8066f33bdb4e93f3510db5c17d9f289a6e5da0942a9 +TEST= 333 +KEY= 9390ee257cf796037758d6525656c86a90771e245f334ed91c26e4855f17d45d +IV= de99e8066f33bdb4e93f3510db5c17d9f289a6e5da0942a9 +PT= 7c7860dba73cf598b4bb7aa4e35571ed6fbf56f48beebb58 +CT= 6fe6422add54222d4f5c74cefafa8e3346127dc946340768 +TEST= 334 +KEY= d27cbed1d79d4a4e18be94788b02ea47df2b6aeaa5c9c0ea5a34994c1923d335 +IV= 6fe6422add54222d4f5c74cefafa8e3346127dc946340768 +PT= 847faf6e9c6b3e2748331140faf8ec5841ec50f4ab6adc4d +CT= 96a284698b6a92d2ffafaaf23906fef2bd4463c134fe5361 +TEST= 335 +KEY= c0f9554925eda5e98e1c1011006878952084c0189ccf3e18e770fa8d2ddd8054 +IV= 96a284698b6a92d2ffafaaf23906fef2bd4463c134fe5361 +PT= ece96aaca811044b1546c1aaec084d991285eb98f270efa7 +CT= 3129bbc0c1cceead58b70230fa42f0793aecf0d84817ddd2 +TEST= 336 +KEY= a24b099148f87480bf35abd1c1a496387833c228668dce61dd9c0a5565ca5d86 +IV= 3129bbc0c1cceead58b70230fa42f0793aecf0d84817ddd2 +PT= 0828af4d4fe46d00d80f34ede50e7fe962b25cd86d15d169 +CT= 20cce08d1e18e7cc392f51d95bd2d64b9c1cfddd347ec850 +TEST= 337 +KEY= 6c240cb945dde7669ff94b5cdfbc71f4411c93f13d5f182a4180f78851b495d6 +IV= 20cce08d1e18e7cc392f51d95bd2d64b9c1cfddd347ec850 +PT= dfa1fafe1d5baaaaaa1975d5dc0e2e64ce6f05280d2593e6 +CT= 3a8d5c0dac1648f2e93f853bbecee166e56c3f40ab9419a0 +TEST= 338 +KEY= 21b6b74f89f3ea31a574175173aa3906a82316ca8391f94ca4ecc8c8fa208c76 +IV= 3a8d5c0dac1648f2e93f853bbecee166e56c3f40ab9419a0 +PT= 9ac50f1d7a6d00b23734676febda15444d92bbf6cc2e0d57 +CT= 11e032c61969f1f903000bc6f6e2687ab9c4aa2c23fd29b9 +TEST= 339 +KEY= bf4bef79ccc14459b49425976ac3c8ffab231d0c757391361d2862e4d9dda5cf +IV= 11e032c61969f1f903000bc6f6e2687ab9c4aa2c23fd29b9 +PT= f549135c257f1a2c352ef3e4c0dfb5359efd58364532ae68 +CT= f5de367624ea3a7fbacbb9d4833ad2f70d0874cfae653176 +TEST= 340 +KEY= 40c428b6c3332bbc414a13e14e29f28011e8a4d8f64943c11020162b77b894b9 +IV= f5de367624ea3a7fbacbb9d4833ad2f70d0874cfae653176 +PT= 32e96dd5375773b493db5cfe2f4591b6ff8fc7cf0ff26fe5 +CT= 00a2f153c9df20b5ffa12e0b92f17b53050b1a029ac3d49f +TEST= 341 +KEY= c66b8e86b4e6b84341e8e2b287f6d235ee498ad364b83892152b0c29ed7b4026 +IV= 00a2f153c9df20b5ffa12e0b92f17b53050b1a029ac3d49f +PT= bada30c6a7a549960604f189d31781f686afa63077d593ff +CT= 420c2871ce4910866ebcf9fb08a9b7fa7d2e759cf3102ee7 +TEST= 342 +KEY= d222760df1d0d6cf03e4cac349bfc2b380f573286c118f68680579b51e6b6ec1 +IV= 420c2871ce4910866ebcf9fb08a9b7fa7d2e759cf3102ee7 +PT= ce0c2112ae34eded2a8cb4005ee616e91449f88b45366e8c +CT= 79f1598f9028599b043f95e6c1acab9ee56e58fea8245714 +TEST= 343 +KEY= 04836a0e745e9e977a15934cd9979b2884cae6ceadbd24f68d6b214bb64f39d5 +IV= 79f1598f9028599b043f95e6c1acab9ee56e58fea8245714 +PT= 98865ea092e3c248b2e6b30802840cf1d6a11c03858e4858 +CT= f85dd11e219c834b7a6c2b0a7c6709cd244047453602d30b +TEST= 344 +KEY= 4874fdac16cacdda82484252f80b1863fea6cdc4d1da2d3ba92b660e804deade +IV= f85dd11e219c834b7a6c2b0a7c6709cd244047453602d30b +PT= 2929f2a3c9bdc61fa8dbda030fafd2c84cf797a26294534d +CT= cdfe2f4fae46cf02ae6cef3dfd50889346c917de98ccfd95 +TEST= 345 +KEY= ea862f77c34aa2304fb66d1d564dd76150ca22f92c8aa5a8efe271d01881174b +IV= cdfe2f4fae46cf02ae6cef3dfd50889346c917de98ccfd95 +PT= 9fd13331e70a556dea3fdb1a427964d4a2f2d2dbd5806fea +CT= 326c1eec427d94822264d123fe0e84e95601617e53525456 +TEST= 346 +KEY= 8e96a21e26f1cc747dda73f1143043e372aef3dad2842141b9e310ae4bd3431d +IV= 326c1eec427d94822264d123fe0e84e95601617e53525456 +PT= 001746092a1d1fb7a4cbb06b9afee11764108d69e5bb6e44 +CT= c45b77358e3134923f905112c28e4c39d05b58d96d627f11 +TEST= 347 +KEY= 56e5afc9dd588814b98104c49a0177714d3ea2c8100a6d7869b8487726b13c0c +IV= c45b77358e3134923f905112c28e4c39d05b58d96d627f11 +PT= 14caab89296d263a30fc1dd7c2892cead8730dd7fba94460 +CT= c9a342c1ab8dd656d2eebf483f4ee2f39c625361989e9ad9 +TEST= 348 +KEY= 5a7928af3797168970224605318ca1279fd01d802f448f8bf5da1b16be2fa6d5 +IV= c9a342c1ab8dd656d2eebf483f4ee2f39c625361989e9ad9 +PT= a069579a94322b8d0622d99f261a0e2c0c9c8766eacf9e9d +CT= ef82e49631213bfc4f074f628d82bfb217cccd4fb82bb09b +TEST= 349 +KEY= a5ca4d72f2db01fb9fa0a29300ad9adbd0d752e2a2c63039e216d6590604164e +IV= ef82e49631213bfc4f074f628d82bfb217cccd4fb82bb09b +PT= 3d614e3df4e1f2471f8dd10809b8a8b1ffb365ddc54c1772 +CT= b7a688a9d2f52c72d544dbc6b925837ba4a7e26097f63d79 +TEST= 350 +KEY= f987eb56974e088328062a3ad258b6a9059389241be3b34246b1343991f22b37 +IV= b7a688a9d2f52c72d544dbc6b925837ba4a7e26097f63d79 +PT= 0e0136c058bcf5dea74fcb5ae94558af5c4da62465950978 +CT= abc37e529cdcc83349ca7c8c7998bcb77dd164ea2e6e54a1 +TEST= 351 +KEY= 70e231471096e21c83c554684e847e9a4c59f5a8627b0ff53b6050d3bf9c7f96 +IV= abc37e529cdcc83349ca7c8c7998bcb77dd164ea2e6e54a1 +PT= b4d4365d1a2ec5f14984b544d4d882258965da1187d8ea9f +CT= 194eba0569606bad173cd4bc1eebebf4b61a509e0085f1b6 +TEST= 352 +KEY= 67319d26621d2e379a8bee6d27e415375b6521147c90e4018d7a004dbf198e20 +IV= 194eba0569606bad173cd4bc1eebebf4b61a509e0085f1b6 +PT= 10a701b31c6e2683a01067420910278317d3ac61728bcc2b +CT= c3a3f450c7fa0a88905bc89531344ddf4ea61a574cfea7be +TEST= 353 +KEY= fb5ae2b24eeaaa0859281a3de01e1fbfcb3ee9814da4a9dec3dc1a1af3e7299e +IV= c3a3f450c7fa0a88905bc89531344ddf4ea61a574cfea7be +PT= c2a530397187e2c51adeb078a3f1c66c9c6b7f942cf7843f +CT= 94c3148f95b095be40e27a1b5356c55f1daab5b2f7548b27 +TEST= 354 +KEY= 3e2bb50de83b13d4cdeb0eb275ae8a018bdc939a1ef26c81de76afa804b3a2b9 +IV= 94c3148f95b095be40e27a1b5356c55f1daab5b2f7548b27 +PT= f848a6cc035b3681cbfec205a7787ca4c57157bfa6d1b9dc +CT= 8256f9bcfa373f1bf16203578baf41c23ba71ac215efd261 +TEST= 355 +KEY= e8e2ef7f2fb737524fbdf70e8f99b51a7abe90cd955d2d43e5d1b56a115c70d8 +IV= 8256f9bcfa373f1bf16203578baf41c23ba71ac215efd261 +PT= 9457dc202e9c2df342a5f1ab79f57061d6c95a72c78c2486 +CT= f00d78b9dee908f0de92f774de68f42fbab0238a9271a649 +TEST= 356 +KEY= 4bc32ad78a2606aabfb08fb75170bdeaa42c67b94b35d96c5f6196e0832dd691 +IV= f00d78b9dee908f0de92f774de68f42fbab0238a9271a649 +PT= c75f3f0fcbe301b21e5b15488f9e0025a321c5a8a59131f8 +CT= c1eb738b663bf4417718aa530845405296727c6d53bef662 +TEST= 357 +KEY= cd7af954624cd2d07e5bfc3c374b49abd334cdea4370993ec913ea8dd09320f3 +IV= c1eb738b663bf4417718aa530845405296727c6d53bef662 +PT= a89fb06f12fe779e6decdfe3fe9f5fa186b9d383e86ad47a +CT= b2875427891acb68d8f61f7adfb45b1d11a9fca65f1b874e +TEST= 358 +KEY= bb56569fecc58064ccdca81bbe5182c30bc2d2909cc4c223d8ba162b8f88a7bd +IV= b2875427891acb68d8f61f7adfb45b1d11a9fca65f1b874e +PT= 752cb1851fbdedc6e3fa09ca1bedb3ed762cafcb8e8952b4 +CT= 43db5b0c168862b4132e044bd01abdfeee69f939a9ee56c5 +TEST= 359 +KEY= 438397087f8877558f07f317a8d9e07718ecd6db4cde7fdd36d3ef122666f178 +IV= 43db5b0c168862b4132e044bd01abdfeee69f939a9ee56c5 +PT= 9914f0377a2b5e4a2904baf7101d89c4f8d5c197934df731 +CT= a534f9378fdeba98b04144e9c2b4fd17dd938a3a6825b8ec +TEST= 360 +KEY= 8cc86838063858eb2a330a2027075aefa8ad92328e6a82caeb4065284e434994 +IV= a534f9378fdeba98b04144e9c2b4fd17dd938a3a6825b8ec +PT= f983294b5b6a39985f5c2540fc844014cf4bff3079b02fbe +CT= 506b3d6e9aff42f33d020bb6189b30a5d21582fcd903b7d7 +TEST= 361 +KEY= 98451ccc0137b9f07a58374ebdf8181c95af998496f1b26f3955e7d49740fe43 +IV= 506b3d6e9aff42f33d020bb6189b30a5d21582fcd903b7d7 +PT= 1b61274bd47f0cf0042fd8c0415cbd93148d74f4070fe11b +CT= 95e8014ccdcb1b3ce19c46d49dc1bc45cdae9ad69e9de1a2 +TEST= 362 +KEY= 15326b9b030eec28efb03602703303207433df500b300e2af4fb7d0209dd1fe1 +IV= 95e8014ccdcb1b3ce19c46d49dc1bc45cdae9ad69e9de1a2 +PT= 89738bbcd76d05b7a53c16e6073e60b48d777757023955d8 +CT= 0cc29b5f5a9e4f7d3f8870275667a14b86dde35c86d3f8bb +TEST= 363 +KEY= 9fa84da981242512e372ad5d2aad4c5d4bbbaf775d57af6172269e5e8f0ee75a +IV= 0cc29b5f5a9e4f7d3f8870275667a14b86dde35c86d3f8bb +PT= e52a44ad88d35473b665d5b00917c6288a9a2632822ac93a +CT= 0e93ddf2b42abfe826286bf90b0f58c6bba03598ea7db67f +TEST= 364 +KEY= 2c8c6cff02e8cc24ede170af9e87f3b56d93c48e5658f7a7c986abc665735125 +IV= 0e93ddf2b42abfe826286bf90b0f58c6bba03598ea7db67f +PT= 982cf2a25d85ea0655f820731f96a123b324215683cce936 +CT= 89dd6ea1b8b3062991bb5022c79b93454007c73ab0fe1d08 +TEST= 365 +KEY= d39abbf119191986643c1e0e2634f59cfc2894ac91c364e289816cfcd58d4c2d +IV= 89dd6ea1b8b3062991bb5022c79b93454007c73ab0fe1d08 +PT= 50c8bea485a25306b61608481f69a874ff16d70e1bf1d5a2 +CT= 4aab666081bb9bf4a34df13d6b742cbed4745a76e44b1138 +TEST= 366 +KEY= b0000acf9fbd6c272e97786ea78f6e685f656591fab7485c5df5368a31c65d15 +IV= 4aab666081bb9bf4a34df13d6b742cbed4745a76e44b1138 +PT= 182bbd97fa4ede6460ec88377aa08409639ab13e86a475a1 +CT= 39693f593ee997ec5f7970b7fecba20853c5c4852567078d +TEST= 367 +KEY= 72a4b6291f6f0b5317fe47379966f984001c1526047cea540e30f20f14a15a98 +IV= 39693f593ee997ec5f7970b7fecba20853c5c4852567078d +PT= 2002d05476d75b6a204839392cb44c87c2a4bce680d26774 +CT= dc7ddb7f5aedc5f794dedef69cf73bac71648168aa5b55dc +TEST= 368 +KEY= 993b5f005e0ed24fcb839c48c38b3c7394c2cbd0988bd1f87f547367befa0f44 +IV= dc7ddb7f5aedc5f794dedef69cf73bac71648168aa5b55dc +PT= d2c9fc4b08f642b7bc237cb39ba5cf75eb9fe9294161d91c +CT= f57f67630ed6a72f7a0ebcd2937ecd47055e016183d44162 +TEST= 369 +KEY= 042ab0b9e13775423efcfb2bcd5d9b5ceecc77020bf51cbf7a0a72063d2e4e26 +IV= f57f67630ed6a72f7a0ebcd2937ecd47055e016183d44162 +PT= d6cd67feef633ae32635bda032b3764c9d11efb9bf39a70d +CT= 0e88d41bf91c5892d071e4b4423e9b77101a50cdcc2f66a8 +TEST= 370 +KEY= 2dd5c463fca5a3ce30742f303441c3ce3ebd93b649cb87c86a1022cbf101288e +IV= 0e88d41bf91c5892d071e4b4423e9b77101a50cdcc2f66a8 +PT= 7d4aeab90e9e9e4e3e4cc62cefa3b36a29ff74da1d92d68c +CT= 0f53e0676233e6df7b64bb414dea407747cd495bedeaa4ad +TEST= 371 +KEY= 5399d5080d183d773f27cf575672251145d928f70421c7bf2ddd6b901ceb8c23 +IV= 0f53e0676233e6df7b64bb414dea407747cd495bedeaa4ad +PT= 29f6ea7dec3b010c71db0078487ebbf67e4c116bf1bd9eb9 +CT= 7fa7ee41337013d0eed9a813215aed57d5d855daa07da982 +TEST= 372 +KEY= db232e7c7a8bb94640802116650236c1ab0080e4257b2ae8f8053e4abc9625a1 +IV= 7fa7ee41337013d0eed9a813215aed57d5d855daa07da982 +PT= 77acc2e8c1df71c4e0186d4b23c5af2488bafb7477938431 +CT= 72b41b6f311fceb5a460ef2fe7cdec7022031eda8bfeeed0 +TEST= 373 +KEY= 9d526aa7a42607b932343a79541df8740f606fcbc2b6c698da0620903768cb71 +IV= 72b41b6f311fceb5a460ef2fe7cdec7022031eda8bfeeed0 +PT= 224b9bccb93cce883f6ecdfd6f683ac1467144dbdeadbeff +CT= 8699929dd1c0a47e11407125556db4c863ca117f437dc991 +TEST= 374 +KEY= 25044b54e52acf13b4ada8e485dd5c0a1e201eee97db7250b9cc31ef741502e0 +IV= 8699929dd1c0a47e11407125556db4c863ca117f437dc991 +PT= e5fce25b79aa509824bf087778484e00b85621f3410cc8aa +CT= 25b1eb066a2860a8b6f6889f8e7869573f416ed0468faaeb +TEST= 375 +KEY= 373c631da7c31131911c43e2eff53ca2a8d6967119a31b07868d5f3f329aa80b +IV= 25b1eb066a2860a8b6f6889f8e7869573f416ed0468faaeb +PT= cb82995b6c80c067d3afe572d9a1b6071238284942e9de22 +CT= c94638e92d2ec688595c777fbe982bbf92d7a150de1db990 +TEST= 376 +KEY= 66d681970aaa7996585a7b0bc2dbfa2af18ae10ea73b30b8145afe6fec87119b +IV= c94638e92d2ec688595c777fbe982bbf92d7a150de1db990 +PT= f9364d90a44fe1256167eea4ce30f0fc51eae28aad6968a7 +CT= 2613a6907501b403672f0581ab2723d8dfe9244f04ab62b1 +TEST= 377 +KEY= 686c587643e520027e49dd9bb7da4e2996a5e48f0c1c1360cbb3da20e82c732a +IV= 2613a6907501b403672f0581ab2723d8dfe9244f04ab62b1 +PT= a9b3096a1653b44d9f09cc304c6724da0ebad9e1494f5994 +CT= 9a86ad316235cef5c73ebec7663cde64b4a6fb8ed1481c3d +TEST= 378 +KEY= 8d5007f791c1dfe9e4cf70aad5ef80dc519b5a486a20cd047f1521ae39646f17 +IV= 9a86ad316235cef5c73ebec7663cde64b4a6fb8ed1481c3d +PT= f9e4d3327925bed9ed58d6930e46b96fe53c5f81d224ffeb +CT= 481dc0a5fa67e0cdefa55c9c9bf407e9d577bbfacd750586 +TEST= 379 +KEY= cb41a5e93d30da4facd2b00f2f886011be3e06d4f1d4caedaa629a54f4116a91 +IV= 481dc0a5fa67e0cdefa55c9c9bf407e9d577bbfacd750586 +PT= f6e7ebb63646d8a155fe28372acffa4e4611a21eacf105a6 +CT= 20f680e724827c06229ddf7e7e388e61179cdff66034d3d1 +TEST= 380 +KEY= 190f508ddde215128c2430e80b0a1c179ca3d9aa8fec448cbdfe45a29425b940 +IV= 20f680e724827c06229ddf7e7e388e61179cdff66034d3d1 +PT= f9a26aad5af023dbbd5f4665b0aec8ecd24ef564e0d2cf5d +CT= faca119a0366c8a5c8d2e54159f5d1708840efa3bbff0f4c +TEST= 381 +KEY= a573ebe9d804756f76ee2172086cd4b254713cebd61995fc35beaa012fdab60c +IV= faca119a0366c8a5c8d2e54159f5d1708840efa3bbff0f4c +PT= ddd8efdae2b0ae9a5c665964d2d06f87bc7cbb6405e6607d +CT= 0d1ab56a5defbb65982245a2da068d350a90955aab3f3091 +TEST= 382 +KEY= c36ef97bfa196ee37bf4941855836fd7cc5379490c1f18c93f2e3f5b84e5869d +IV= 0d1ab56a5defbb65982245a2da068d350a90955aab3f3091 +PT= 0435a83f7158d1680c6cb7af503faa1e661d1292221d1b8c +CT= 1e594e192e02bb4f59cb3a56c76055aeb0497d3429703096 +TEST= 383 +KEY= 9ac9e5ec9a16e3aa65adda017b81d4989598431fcb7f4d678f67426fad95b60b +IV= 1e594e192e02bb4f59cb3a56c76055aeb0497d3429703096 +PT= 43329687b6839ead90083ed52af9982d59a71c97600f8d49 +CT= 33a6c378e36039eaf81f3273128a43194a47e10cecd4402a +TEST= 384 +KEY= ec5bc11f3222a032560b197998e1ed726d87716cd9f50e7ec520a3634141f621 +IV= 33a6c378e36039eaf81f3273128a43194a47e10cecd4402a +PT= 8e7bc13bd05fb7a760f2f0383e7a761c769224f3a8344398 +CT= 5c5b82d4c018ab4c0b96adceec7321e1c09941977f05a879 +TEST= 385 +KEY= 2318ad7821e4302e0a509bad58f9463e6611dca235862f9f05b9e2f43e445e58 +IV= 5c5b82d4c018ab4c0b96adceec7321e1c09941977f05a879 +PT= 84ec4389e9776b8dd9ea2adaebd7f865cf436c6713c6901c +CT= 53a409b09ff55b0cba8d26ae7023db958af581a7572e2ea8 +TEST= 386 +KEY= a6c135a29b2c016559f4921dc70c1d32dc9cfa0c45a5f40a8f4c6353696a70f0 +IV= 53a409b09ff55b0cba8d26ae7023db958af581a7572e2ea8 +PT= 8180460615c4037b55fb6683064ade1e85d998dabac8314b +CT= ebb446f0aaa040e7af5c0e48f4261fcb0c9fd3dedfc06f1f +TEST= 387 +KEY= 6a224464b0fee51bb240d4ed6dac5dd573c0f444b183ebc183d3b08db6aa1fef +IV= ebb446f0aaa040e7af5c0e48f4261fcb0c9fd3dedfc06f1f +PT= 0e72602e75846deae6dadde9a67cfd65cce371c62bd2e47e +CT= e2c475afe9672827f7a84d2c1f82d4a4135d959ed42c77c6 +TEST= 388 +KEY= b4790a5b6a3089025084a14284cb75f28468b968ae013f65908e251362866829 +IV= e2c475afe9672827f7a84d2c1f82d4a4135d959ed42c77c6 +PT= a743a240d13dfd6e2978763c3edcb5eade5b4e3fdace6c19 +CT= 4409154cf9df3774ea5ccbd5308f29a782f81e4e74c8c2c7 +TEST= 389 +KEY= d9b8405abd0b138e148db40e7d1442866e3472bd9e8e16c212763b5d164eaaee +IV= 4409154cf9df3774ea5ccbd5308f29a782f81e4e74c8c2c7 +PT= aaffa221ed69ea4379039e04278b712e6dc14a01d73b9a8c +CT= edec4dd98bfe1533321db59bd16cda749764250454f6f891 +TEST= 390 +KEY= 7897b82182ce763cf961f9d7f6ea57b55c29c7264fe2ccb685121e5942b8527f +IV= edec4dd98bfe1533321db59bd16cda749764250454f6f891 +PT= eeda621bee41fa450f7e6145ffb16b0da12ff87b3fc565b2 +CT= 166a417550413a38fe3328d96586a11b11754ef0f315099e +TEST= 391 +KEY= f2a95b74e639e9deef0bb8a2a6ab6d8da21aefff2a646dad946750a9b1ad5be1 +IV= 166a417550413a38fe3328d96586a11b11754ef0f315099e +PT= 798f67a7f4bd5e181ba7d7399827518e8a3ee35564f79fe2 +CT= 504ce837acd4f3243cd4f0036ab4f59ee10d100da83470f1 +TEST= 392 +KEY= c2bd50a5b05e631dbf4750950a7f9ea99ece1ffc40d09833756a40a419992b10 +IV= 504ce837acd4f3243cd4f0036ab4f59ee10d100da83470f1 +PT= c9721f8ee9d6af58ab7dfd99fdf74a7230140bd156678ac3 +CT= 0856315be61c975641e5e60212efe51d61cdeb52ada7968f +TEST= 393 +KEY= 05894e7abeceb5b4b71161ceec6309ffdf2bf9fe523f7d2e14a7abf6b43ebd9f +IV= 0856315be61c975641e5e60212efe51d61cdeb52ada7968f +PT= 27fbf2b897a1fd455ec6691ec8efbff9c7341edf0e90d6a9 +CT= 4236204764d8d6ca634e43b471efeb24658cc8fd383f118b +TEST= 394 +KEY= 6709b8acfe05f7f1f527418988bbdf35bc65ba4a23d0960a712b630b8c01ac14 +IV= 4236204764d8d6ca634e43b471efeb24658cc8fd383f118b +PT= f54a64a50ae889c8a8def5d7a6d76a5b6280f6d640cb4245 +CT= 8c35e0ab9948ff9db4cfe44d83fcc32cf691bd7f8f0afe39 +TEST= 395 +KEY= de01816b110499087912a12211f320a808aa5e07a02c552687bade74030b522d +IV= 8c35e0ab9948ff9db4cfe44d83fcc32cf691bd7f8f0afe39 +PT= 38c2fda702f12cb822e91cf521c8e057b90839c7ef016ef9 +CT= 18c91e0c2977fb2889ca751a5a792001a06d1e39de59f528 +TEST= 396 +KEY= 6fbcb44b23b50b8761dbbf2e3884db8081602b1dfa55752727d7c04ddd52a705 +IV= 18c91e0c2977fb2889ca751a5a792001a06d1e39de59f528 +PT= b1ab4b093dcb41674ec6c4e057f68ce8b1bd352032b1928f +CT= a9032464772fb9281a15e413c358edbc63493448dde22e7c +TEST= 397 +KEY= 910cd74689049ddec8d89b4a4fab62a89b75cf0e390d989b449ef40500b08979 +IV= a9032464772fb9281a15e413c358edbc63493448dde22e7c +PT= aa22f8fa052c8a47cd757b90538716cdfeb0630daab19659 +CT= 48294bcd769214767f5e37fbfed9515a572e0336d78c7c26 +TEST= 398 +KEY= 14cf581a317a0e1580f1d087393976dee42bf8f5c7d4c9c113b0f733d73cf55f +IV= 48294bcd769214767f5e37fbfed9515a572e0336d78c7c26 +PT= e32b0db0b295d32df90bb66737db6dba85c38f5cb87e93cb +CT= 0f113b59b3e5e849c6fbd6e4b993fcc5b5ffa2b4071824c6 +TEST= 399 +KEY= 2ab96206ad35066f8fe0ebde8adc9e9722d02e117e473504a64f5587d024d199 +IV= 0f113b59b3e5e849c6fbd6e4b993fcc5b5ffa2b4071824c6 +PT= aab83a1697e042a7e038d47021d9b3893e763a1c9c4f087a +CT= 00dcd8a6c85d770f8b9dba9b01ea8f1549f817f7ff7287b6 diff --git a/flint/test/testvals/cbcme84.txt b/flint/test/testvals/cbcme84.txt new file mode 100644 index 0000000..ba5ef63 --- /dev/null +++ b/flint/test/testvals/cbcme84.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= f47c662282c33c00b6a2180f6bba441ecadea9d7724644be03efb7935b227ff3 +TEST= 1 +KEY= cadea9d7724644be03efb7935b227ff3 +IV= f47c662282c33c00b6a2180f6bba441ecadea9d7724644be03efb7935b227ff3 +PT= 9a6381d469c8cfc39a888fdf385cfac9b006365b67542cafdb5dd06ed0a6d313 +CT= 82e85cbe31496b37fa31302983dbf9bf64256c9a878853f490b5449dd4bf31b8 +TEST= 2 +KEY= aefbc54df5ce174a935af30e8f9d4e4b +IV= 82e85cbe31496b37fa31302983dbf9bf64256c9a878853f490b5449dd4bf31b8 +PT= 05e4129e203bd9e7f7ebe2a7b9397c7e290521bb10ebc31d8c1239dffb880588 +CT= 02be16454a8dfe8167c92f73e115a4077bf2c0bda3d75277b67c00ac142457f0 +TEST= 3 +KEY= d50905f05619453d2526f3a29bb919bb +IV= 02be16454a8dfe8167c92f73e115a4077bf2c0bda3d75277b67c00ac142457f0 +PT= 89b7c9a1193840696b3931da37be44f976a00a44ae3204ab724444537c59b553 +CT= 42cdc49093697822ea7bf9e1d260c414b441678a9b4785633e86335c7662cf6e +TEST= 4 +KEY= 6148627acd5ec05e1ba0c0feeddbd6d5 +IV= 42cdc49093697822ea7bf9e1d260c414b441678a9b4785633e86335c7662cf6e +PT= 95b59af5bbb8f3739e14d3e38ef6de9958d6cd4cdda7dfa8f468bcf9627e208b +CT= 792a06113497cb144c7dcc8daf1b4d6f1048b627648df6383b760b5a4c5106a3 +TEST= 5 +KEY= 7100d45da9d3366620d6cba4a18ad076 +IV= 792a06113497cb144c7dcc8daf1b4d6f1048b627648df6383b760b5a4c5106a3 +PT= 5eef85c6f8251de79cbef1eff4a53449acafecaea4a6e3239997b0a62d00d8ab +CT= cf5688085edd0bccca8e26fe3d770d205b7793a4db17a62f1e373ae9335ef681 +TEST= 6 +KEY= 2a7747f972c490493ee1f14d92d426f7 +IV= cf5688085edd0bccca8e26fe3d770d205b7793a4db17a62f1e373ae9335ef681 +PT= 27bc5d884bb9246761d5f8c8f495382952c0de29f23240366facad03f70fc83e +CT= 2dacbfe6bf3d61f2f1678c101468fa54cb2804a814f392eb15e762c30836dbe8 +TEST= 7 +KEY= e15f4351663702a22b06938e9ae2fd1f +IV= 2dacbfe6bf3d61f2f1678c101468fa54cb2804a814f392eb15e762c30836dbe8 +PT= da8a458e472059ed42fa6a7721d76afc704af87b83da081dada6f2cfc1a33de9 +CT= 6fd17519c36ad17289244b33f8ec78a787ab73d1fa227f5b657a447da173a9ad +TEST= 8 +KEY= 66f430809c157df94e7cd7f33b9154b2 +IV= 6fd17519c36ad17289244b33f8ec78a787ab73d1fa227f5b657a447da173a9ad +PT= fee58cb9b5f40c60a2fd04751b496bc37484043ae96a57cab52c6bbe9089dc1f +CT= 1065286fd94c2212326e41e92c124d036181887474e7add7d7c69000f13860e8 +TEST= 9 +KEY= 0775b8f4e8f2d02e99ba47f3caa9345a +IV= 1065286fd94c2212326e41e92c124d036181887474e7add7d7c69000f13860e8 +PT= a225d73836907e415bd4827a875debc71c8b0c9b3eb72635afb2ffc18ac9dbdc +CT= 6d812805572593d9f3771c1d610d84bbeb634a6ad92f86d77fd5c44876d319f8 +TEST= 10 +KEY= ec16f29e31dd56f9e66f83bbbc7a2da2 +IV= 6d812805572593d9f3771c1d610d84bbeb634a6ad92f86d77fd5c44876d319f8 +PT= 834c2748af39e566c3bcf3ed8a948be467455ab03bd358e958e3ae7fccc1507e +CT= 8918872dca9f3892cd6cb06692ddee7448dc5e6cec7bf9d28a1a53c8b4e98d3f +TEST= 11 +KEY= a4caacf2dda6af2b6c75d0730893a09d +IV= 8918872dca9f3892cd6cb06692ddee7448dc5e6cec7bf9d28a1a53c8b4e98d3f +PT= 3154f72c243242d33eb7b0cd75fe3f3397d098e71bf284f495df698664b432c2 +CT= d5478de757291b38fbff50f7c4b5b6dfeea7b4536708e90093b3d73f7be6654b +TEST= 12 +KEY= 4a6d18a1baae462bffc6074c7375c5d6 +IV= d5478de757291b38fbff50f7c4b5b6dfeea7b4536708e90093b3d73f7be6654b +PT= bc0b95974d4974068460540069edddea074cf252d8c3d6716bf8d5d1d54ed675 +CT= 3132515e26e6738136b434c0c4265b8d2f55bff16bb92436c3f198f2bd8e8270 +TEST= 13 +KEY= 6538a750d117621d3c379fbecefb47a6 +IV= 3132515e26e6738136b434c0c4265b8d2f55bff16bb92436c3f198f2bd8e8270 +PT= 449b1e580c7d5268a61bb0c2f4edd5575f5e25801ea1aaf6d7d4198240a4abe2 +CT= c95dd4835d34b444019899b590bebd7250395c72a47c69dd7163c7ff70130981 +TEST= 14 +KEY= 3501fb22756b0bc04d545841bee84e27 +IV= c95dd4835d34b444019899b590bebd7250395c72a47c69dd7163c7ff70130981 +PT= 239cd089aafa3779ee9e94370efae90490f265c8789bc7cbf816a529f307794d +CT= 019bddf1a46c7af3b51e23068ce30589e2dc914b956e65ee7820f655ceb9a1bc +TEST= 15 +KEY= d7dd6a69e0056e2e3574ae147051ef9b +IV= 019bddf1a46c7af3b51e23068ce30589e2dc914b956e65ee7820f655ceb9a1bc +PT= a94d48d63506feb4f5e395deebb86ed8ebc0722d0af7bc782e0bbf5ef13c2015 +CT= 764bdb43e9a31562709ad6895e05f7f23e44ac394ca09fa8b3f25d2c43a3f389 +TEST= 16 +KEY= e999c650aca5f1868686f33833f21c12 +IV= 764bdb43e9a31562709ad6895e05f7f23e44ac394ca09fa8b3f25d2c43a3f389 +PT= 5085fb2ccbe9dc674520e6f95e67d3a91a0ef78910b9d3c361bf360137f48732 +CT= 06f63a76dc0ec962979c1cb87d8991109b047ebcc012bb49fd4cfc23669bfe35 +TEST= 17 +KEY= 729db8ec6cb74acf7bca0f1b5569e227 +IV= 06f63a76dc0ec962979c1cb87d8991109b047ebcc012bb49fd4cfc23669bfe35 +PT= 9b0bfa92fa31a1c5448fe5a88f1adba6cc589f9df262db7a8d6428e55f3dd825 +CT= 7bc3b2c1edf61b5c5fcc658f2dc7329cf962aaffa00960a8907592dc1a28ac47 +TEST= 18 +KEY= 8bff1213ccbe2a67ebbf9dc74f414e60 +IV= 7bc3b2c1edf61b5c5fcc658f2dc7329cf962aaffa00960a8907592dc1a28ac47 +PT= e8586be51a8aa8ea380be3666b6d2420183b8bccbc22c9808d6dc3724412baf6 +CT= 76d832a8270f04b8a2d812e4fb50968d9d4dd181f1e3dea10fc80927885d3212 +TEST= 19 +KEY= 16b2c3923d5df4c6e47794e0c71c7c72 +IV= 76d832a8270f04b8a2d812e4fb50968d9d4dd181f1e3dea10fc80927885d3212 +PT= f332ae5c9d5a30df59f5f13af1732529f068a60b45601558515eedfff4a1dc32 +CT= eea1dab1bc147850f679ad011960a6440ca8e49b55113f01f0d3187ca4488164 +TEST= 20 +KEY= 1a1a2709684ccbc714a48c9c6354fd16 +IV= eea1dab1bc147850f679ad011960a6440ca8e49b55113f01f0d3187ca4488164 +PT= e58b4af58728822809398ab0c02777cadb2af58ea49a5da9ceb3dadcced456fa +CT= 7bb02cc5f657f9f909ea8497f61d5b911af3f2286d6139016d19558793c6ac9e +TEST= 21 +KEY= 00e9d521052df2c679bdd91bf0925188 +IV= 7bb02cc5f657f9f909ea8497f61d5b911af3f2286d6139016d19558793c6ac9e +PT= 04035cb37034bfb87049a1dddeaeb18bea708359c413133f7f6a66255adf6eca +CT= c224b9af87c9ec1fe859bd58218160d0fde0df95083927afe78a14a76c2bc7cf +TEST= 22 +KEY= fd090ab40d14d5699e37cdbc9cb99647 +IV= c224b9af87c9ec1fe859bd58218160d0fde0df95083927afe78a14a76c2bc7cf +PT= 225ff876e52de53da5bbff566fbeb1a0cd4782e5b801184a823628a9caec8fbc +CT= c552c4e9e6d0473a2e33b395895738765d02ca1d1956c0189896a95a7ee834ad +TEST= 23 +KEY= a00bc0a91442157106a164e6e251a2ea +IV= c552c4e9e6d0473a2e33b395895738765d02ca1d1956c0189896a95a7ee834ad +PT= 432ccb43a763f4cc09aa9007814c79a3d235022c236dc76f0184699a63137d94 +CT= 0f369dcdb45beccb10c6e03f4aed6c6eab890cb72a76c4781ffbf90f3fe574c4 +TEST= 24 +KEY= 0b82cc1e3e34d109195a9de9ddb4d62e +IV= 0f369dcdb45beccb10c6e03f4aed6c6eab890cb72a76c4781ffbf90f3fe574c4 +PT= c43e4539cccb7953dd9b45af48e549bd6582789d00ef14f017d3394c46c5f8c4 +CT= c4b40d9df50465e80883810ea317398b59194ecd2561008bdf99a057d069895b +TEST= 25 +KEY= 529b82d31b55d182c6c33dbe0ddd5f75 +IV= c4b40d9df50465e80883810ea317398b59194ecd2561008bdf99a057d069895b +PT= 53d5d9c2b7efa201c82e80d6eeee3b8fd5db82584ab9476bc59075bb6fb16170 +CT= 6099b1e43cb101f33f71ab55f88acccb7003dac800e8a71fa141b506b9497898 +TEST= 26 +KEY= 2298581b1bbd769d678288b8b49427ed +IV= 6099b1e43cb101f33f71ab55f88acccb7003dac800e8a71fa141b506b9497898 +PT= dcdad626b34a5621dd302cc607f79f52772a7bf9b40fba0b26dfd2f77f739e52 +CT= fbbbd629f0d74fe0a0c60c37c7b6f0853b9cc9dc7c8f5739a98434964397ca26 +TEST= 27 +KEY= 190491c7673221a4ce06bc2ef703edcb +IV= fbbbd629f0d74fe0a0c60c37c7b6f0853b9cc9dc7c8f5739a98434964397ca26 +PT= f1ac268dceee6a8926e9ba92e219c078b1f627f4e0961322ef36a75103e22ea8 +CT= d68ed0e4f9d8ac1a7f1de0e500fbd451635ed0a518507f917bb4f7b4f7482348 +TEST= 28 +KEY= 7a5a41627f625e35b5b24b9a004bce83 +IV= d68ed0e4f9d8ac1a7f1de0e500fbd451635ed0a518507f917bb4f7b4f7482348 +PT= 3968aded6a32315e8795dcf3d6cf3763c7e076b7406ebe908e6748716aa69ae2 +CT= 2bd516f291a1805c284c1df075483fe50a3aa9ac86478a08baf6df1b5e21c953 +TEST= 29 +KEY= 7060e8cef925d43d0f4494815e6a07d0 +IV= 2bd516f291a1805c284c1df075483fe50a3aa9ac86478a08baf6df1b5e21c953 +PT= e1d6b99820e5ae67c1d99455e46b1771c8a1d2912a621be02a69510f1f565300 +CT= 442bc0de6bf8f4294b261eb41f69b0a4312e9e53387b0f8fcd682e97a74422de +TEST= 30 +KEY= 414e769dc15edbb2c22cba16f92e250e +IV= 442bc0de6bf8f4294b261eb41f69b0a4312e9e53387b0f8fcd682e97a74422de +PT= 89605d948c58ddd9a0cc6a3b14dd91de96a72a9ea4dbe347f8bc9d0344b7419f +CT= a3a8fa807b5a753fba41adebcd1a2fe3bb0993e591375deb2a32fc6815ae4383 +TEST= 31 +KEY= fa47e57850698659e81e467eec80668d +IV= a3a8fa807b5a753fba41adebcd1a2fe3bb0993e591375deb2a32fc6815ae4383 +PT= fe4eaacce1154584b3dede94dc984c1196bc47d48cfbb044f72a27a88f8c8000 +CT= 21a19040d72897fa434ecfc889d09b5b2b47fbedad9f0adf8813ea2adf71d0c1 +TEST= 32 +KEY= d1001e95fdf68c86600dac5433f1b64c +IV= 21a19040d72897fa434ecfc889d09b5b2b47fbedad9f0adf8813ea2adf71d0c1 +PT= d92274d7a2875768803eb765f9b9bb423bd182712a8e5f2a046d6fffcd00b829 +CT= f767bf6bd35264e6e40ce94a37bb906a3a37262f5be396d3b620a76ed5805648 +TEST= 33 +KEY= eb3738baa6151a55d62d0b3ae671e004 +IV= f767bf6bd35264e6e40ce94a37bb906a3a37262f5be396d3b620a76ed5805648 +PT= 0d3636e6bf160f7c2d90281076ef58d16d1eb67a77d1caa86da353062e60c8c9 +CT= a5e7ac88a297ff81eb24ac7ca422a9ad9a9b7ae26a7d7dc3a246fe24dec39c4a +TEST= 34 +KEY= 71ac4258cc686796746bf51e38b27c4e +IV= a5e7ac88a297ff81eb24ac7ca422a9ad9a9b7ae26a7d7dc3a246fe24dec39c4a +PT= e4aa315cc7cfd312dc9700f7c451fa899dbd06b9c9a9d55fceed412e8cb8b57e +CT= a1b354b1cb304a502c769e823eb5b4c61f9b7d46637899ce5b149a2a4c0b6780 +TEST= 35 +KEY= 6e373f1eaf10fe582f7f6f3474b91bce +IV= a1b354b1cb304a502c769e823eb5b4c61f9b7d46637899ce5b149a2a4c0b6780 +PT= ffe3945c5d08e124facf1705e844e23f3de306c172fd4a2597be4cb8d0dbeb5f +CT= e9d2edcaf978b057021f3db07c9942d84a4c709e0ce7ac29dd01f1ca627dd9dc +TEST= 36 +KEY= 247b4f80a3f75271f27e9efe16c4c212 +IV= e9d2edcaf978b057021f3db07c9942d84a4c709e0ce7ac29dd01f1ca627dd9dc +PT= 637956f61e9ee13eb6a358aa6cb2fb40d1f7a3644a6541b1dd59b2ee55c48905 +CT= 06921499311143b8208a52f73b0f8f3310d3767642eed2143651990c4526c471 +TEST= 37 +KEY= 34a839f6e1198065c42f07f253e20663 +IV= 06921499311143b8208a52f73b0f8f3310d3767642eed2143651990c4526c471 +PT= cb685b66ac094c4c9d8173550800a224118472db2edb8f8d2d45b91733067a5a +CT= cd7fb10a3a848006ba3f7409684d6cb00daf0c5936680ec66f67e4184791f325 +TEST= 38 +KEY= 390735afd7718ea3ab48e3ea1473f546 +IV= cd7fb10a3a848006ba3f7409684d6cb00daf0c5936680ec66f67e4184791f325 +PT= 1db87261be621f86020d28cd7fc9fa9e7c928a1d412aa3773e7b3ce3e35f379f +CT= 1fca40bba3dfa9972ef17ab5520163ff7648f447f3279d9b0b1ff411a2dc2821 +TEST= 39 +KEY= 4f4fc1e824561338a05717fbb6afdd67 +IV= 1fca40bba3dfa9972ef17ab5520163ff7648f447f3279d9b0b1ff411a2dc2821 +PT= 75741c98b716805133bf2fe4f43c1cfd01d7f3911c09f39befa1fe713921259a +CT= 0555055461a6a7ec27545143a76a09b543fa2233a6b1b90589b2b655191112cb +TEST= 40 +KEY= 0cb5e3db82e7aa3d29e5a1aeafbecfac +IV= 0555055461a6a7ec27545143a76a09b543fa2233a6b1b90589b2b655191112cb +PT= f4e522efd9d2768590883f064b2130838cdb9fe75f98b1b563222b238893b699 +CT= 698ad5ecc4230e71bfa9ebe604d0df86a9764bf8838718c5e2fe23a525dfc03d +TEST= 41 +KEY= a5c3a8230160b2f8cb1b820b8a610f91 +IV= 698ad5ecc4230e71bfa9ebe604d0df86a9764bf8838718c5e2fe23a525dfc03d +PT= cb4d2d576bd9436f1c1fa4a95e0fbe4c234072fdc6abc15b754aedcfade7b6b5 +CT= 76fd197f7e63ec49f267e8675c43186f85911e15ea53cb288258379be0dce643 +TEST= 42 +KEY= 2052b636eb3379d04943b5906abde9d2 +IV= 76fd197f7e63ec49f267e8675c43186f85911e15ea53cb288258379be0dce643 +PT= 427725508ae07e147f04ecc4b13d025e18d09c185e876e281ad4cc35855228d5 +CT= de6c22cf4ed26e3e138e0727ba5b5cdaed5d029dfe345dcb35523e229582c6c6 +TEST= 43 +KEY= cd0fb4ab1507241b7c118bb2ff3f2f14 +IV= de6c22cf4ed26e3e138e0727ba5b5cdaed5d029dfe345dcb35523e229582c6c6 +PT= 5752481c3ba5f2448ac18b46bc2156032847dcee8ffe392c07640e90b939f882 +CT= 1c6cc1f28f791ce0d47b6262378cd8efb074b3c955f5dcb286331b4803452ee2 +TEST= 44 +KEY= 7d7b076240f2f8a9fa2290fafc7a01f6 +IV= 1c6cc1f28f791ce0d47b6262378cd8efb074b3c955f5dcb286331b4803452ee2 +PT= d78b9d2d74b4b346c85ad6808806e9a94d94732edf599f82b710089afe8bdb47 +CT= cd6830df37371bac1fdd2cfdf9b5c6491624a8ea9428e8584aefcbf57a47cbd6 +TEST= 45 +KEY= 6b5faf88d4da10f1b0cd5b0f863dca20 +IV= cd6830df37371bac1fdd2cfdf9b5c6491624a8ea9428e8584aefcbf57a47cbd6 +PT= 5de26bc64b0cfce8741ad7a8027e062e7f797e848822df633df425a7532793c6 +CT= 4464998bd6930b20528e19c30bcd6bb891fe8d09fdf8a27b04a16002128ff773 +TEST= 46 +KEY= faa122812922b28ab46c3b0d94b23d53 +IV= 4464998bd6930b20528e19c30bcd6bb891fe8d09fdf8a27b04a16002128ff773 +PT= ffc29c9dfff1436d41cf786d5171f8a84145af25ac39758c75af898c0e4b777f +CT= 02345490327c3814e89ddd0c3d8ef6b317cdc6c11f61637bd3c2f5f6664d1e7c +TEST= 47 +KEY= ed6ce4403643d1f167aecefbf2ff232f +IV= 02345490327c3814e89ddd0c3d8ef6b317cdc6c11f61637bd3c2f5f6664d1e7c +PT= 096b87ad821eb963525f270a4c9cab0e6a98e46176bd8288de3c4d2dcd283402 +CT= 29016cffaccaefd4e47f77486eeca59297cab300143a485c2188e3d9ef54040e +TEST= 48 +KEY= 7aa65740227999ad46262d221dab2721 +IV= 29016cffaccaefd4e47f77486eeca59297cab300143a485c2188e3d9ef54040e +PT= 73729de5d2ea38881f11bb62f3fd012b7f4aadf3c442e1578d29645ab36a43de +CT= ea3492257198a6515319e5aa5a745c3b03b868cfbf01113843837d7d0718d397 +TEST= 49 +KEY= 791e3f8f9d78889505a5505f1ab3f4b6 +IV= ea3492257198a6515319e5aa5a745c3b03b868cfbf01113843837d7d0718d397 +PT= 800385035f1e83bc18f51756da6f0e5ba151214e2e5a057e50e1b3746d302820 +CT= 4c58eb544a5b74bae39b368d3823474c0631881189509e84802074329073d0b9 +TEST= 50 +KEY= 7f2fb79e142816118585246d8ac0240f +IV= 4c58eb544a5b74bae39b368d3823474c0631881189509e84802074329073d0b9 +PT= ef0b864642061ce01e66652fedbd26cb38b952e9e607d7c8a47a0430365e8569 +CT= 5f3515cf5ec9a88d91ebbb637dc93230bbf35351c37a281ee309a3b0a5b427d3 +TEST= 51 +KEY= c4dce4cfd7523e0f668c87dd2f7403dc +IV= 5f3515cf5ec9a88d91ebbb637dc93230bbf35351c37a281ee309a3b0a5b427d3 +PT= fd7a2ede8a5c1a36d17041de45605c1ab661aab1c0914703eb0735b7c69364c9 +CT= 1c76c30014fdaa176e225a2e502069e783e8efeb38ae123a85f5343ce315de91 +TEST= 52 +KEY= 47340b24effc2c35e379b3e1cc61dd4d +IV= 1c76c30014fdaa176e225a2e502069e783e8efeb38ae123a85f5343ce315de91 +PT= 88844f9e0af9499648e72bfdc6a17c360202c30635466326bdc15486fe3c7886 +CT= fd623aa4211fa9a2f12fc26b1beaf6418c364772aebabbec3cdf7c932c99ee40 +TEST= 53 +KEY= cb024c56414697d9dfa6cf72e0f8330d +IV= fd623aa4211fa9a2f12fc26b1beaf6418c364772aebabbec3cdf7c932c99ee40 +PT= 0ab075f718315d292c3b851b6c349b8387830d95339d22165cdd4d4e0a7e0c50 +CT= f4384e7a3314a84df8f5e337b6e26dc23a166f6b3be4717d3a82c1ab3bc0a701 +TEST= 54 +KEY= f114233d7aa2e6a4e5240ed9db38940c +IV= f4384e7a3314a84df8f5e337b6e26dc23a166f6b3be4717d3a82c1ab3bc0a701 +PT= 4e07814b1b9ee56cd6ffa3b21c69c3e99c729b5973aa7b6b4b84e08daa8efe61 +CT= fca5b6702106c4ab93b9bd1a6e573427ce244c279099e77ab1e07c6c0126a25d +TEST= 55 +KEY= 3f306f1aea3b01de54c472b5da1e3651 +IV= fca5b6702106c4ab93b9bd1a6e573427ce244c279099e77ab1e07c6c0126a25d +PT= a2e014e1da79152ddaefa3e9821fb94e7a1b71a39a317768b15f0729d9d47bae +CT= 6b29c236e68e983d1353f2f55ce2b26207480970e2adc3e64250034e115e25ab +TEST= 56 +KEY= 3878666a0896c238169471fbcb4013fa +IV= 6b29c236e68e983d1353f2f55ce2b26207480970e2adc3e64250034e115e25ab +PT= 0f6d615b18a20d500697bd200623696de12a72fcb6cf1a37701720315d7ee2da +CT= 6276cd81d732d369cb7002347899ec2c269dbf7e2292929106d1432501d758fe +TEST= 57 +KEY= 1ee5d9142a0450a9104532deca974b04 +IV= 6276cd81d732d369cb7002347899ec2c269dbf7e2292929106d1432501d758fe +PT= 76330a98691158dc93906cb232b6993faedb10aab73a656b09dc45a3a8beee26 +CT= c6a8cbcb830ea3ba2f9b2a72332490ba8abfea4fcba4f6b3df8afe9c591021e9 +TEST= 58 +KEY= 945a335be1a0a61acfcfcc4293876aed +IV= c6a8cbcb830ea3ba2f9b2a72332490ba8abfea4fcba4f6b3df8afe9c591021e9 +PT= dd690445ca1c37fb730060de0d6c9275ea80aa563e7331c671bf6d15e879719e +CT= 038066c1c5da61b42632b9dbebb8c7ef5093a3bf24a32e9a82195a46246fac14 +TEST= 59 +KEY= c4c990e4c50388804dd69604b7e8c6f9 +IV= 038066c1c5da61b42632b9dbebb8c7ef5093a3bf24a32e9a82195a46246fac14 +PT= 6f0f62fd19339c0e3d32d60c9d847014aa2c3bc22d0a7b1baeb35ba30cfb5517 +CT= 95927db57db266cb988ac51ce4318a8f02cbe816df8f72fc495b525f6d68dbad +TEST= 60 +KEY= c60278f21a8cfa7c048dc45bda801d54 +IV= 95927db57db266cb988ac51ce4318a8f02cbe816df8f72fc495b525f6d68dbad +PT= 0285cfbf4910eb7593c7775c73ad1bf7adefafa05a84de14d8b6ab786595d136 +CT= 5b7f8521a44bd02a8d1ea1b614be05347e7120a3988960fa5ed574299e420f6a +TEST= 61 +KEY= b873585182059a865a58b07244c2123e +IV= 5b7f8521a44bd02a8d1ea1b614be05347e7120a3988960fa5ed574299e420f6a +PT= 4587d8c80e213ab7a0a964345bb25ab61e36b0ec65938eade7c9b5e826a0249f +CT= 25cfc8438b30846d7b6708bf879fa208eb16c23a5ca69142e229aef4e178ae7f +TEST= 62 +KEY= 53659a6bdea30bc4b8711e86a5babc41 +IV= 25cfc8438b30846d7b6708bf879fa208eb16c23a5ca69142e229aef4e178ae7f +PT= bd96638da541dd9a9f297478ad4609efed64ef23945be810dca968b972d7cd84 +CT= ccce92e41baa9fe0e7361064502ad267c9a612096bc800f74c315ff27254bb31 +TEST= 63 +KEY= 9ac38862b56b0b33f4404174d7ee0770 +IV= ccce92e41baa9fe0e7361064502ad267c9a612096bc800f74c315ff27254bb31 +PT= 9bd89a90b857a5760924749b8e6cc2f4ed28853cb7d85301bb561159751d92c9 +CT= 70cf642ece5987c2370f56dcc549eccc1fec9293c34db96892afb9e6b92d6280 +TEST= 64 +KEY= 852f1af17626b25b66eff8926ec365f0 +IV= 70cf642ece5987c2370f56dcc549eccc1fec9293c34db96892afb9e6b92d6280 +PT= 712bb9e47769fe48b7c38680b1493370b642bca0567cd12a702c625449d3b8db +CT= 058d5ca1ea0536d8b83939484e14b82451287707133b566a5ef6f87e4d32b25d +TEST= 65 +KEY= d4076df6651de431381900ec23f1d7ad +IV= 058d5ca1ea0536d8b83939484e14b82451287707133b566a5ef6f87e4d32b25d +PT= 302f86ed69e5956557f1da4842740e283a63fa3520596091085fa9825f279ab6 +CT= a9352986a999bc25d5aea70c878d9c48209cf7b3c1dd01b5fa9924b640242d02 +TEST= 66 +KEY= f49b9a45a4c0e584c280245a63d5faaf +IV= a9352986a999bc25d5aea70c878d9c48209cf7b3c1dd01b5fa9924b640242d02 +PT= aec2a801ebad45a70c79bed46d084db13a8a88308603e24e2ee83c3a227d398e +CT= 2298d7b648ca6d05050d3877718901aa033421e817e7a56ebc4fac4fd216f79c +TEST= 67 +KEY= f7afbbadb32740ea7ecf8815b1c30d33 +IV= 2298d7b648ca6d05050d3877718901aa033421e817e7a56ebc4fac4fd216f79c +PT= dc1af17a4f9bef816cbfd35193e1d8b9377e155c9d9394ea6fcf3e7b634e4fb6 +CT= 3d95acb1ea2f5a0f9bbec954c2a056c5504f4c21caea90bbef20817037d25803 +TEST= 68 +KEY= a7e0f78c79cdd05191ef096586115530 +IV= 3d95acb1ea2f5a0f9bbec954c2a056c5504f4c21caea90bbef20817037d25803 +PT= eb06d27a5476367d2784bfd4bfba3476ec376bff76ab3f819ff46de1fc677ed2 +CT= 5b0095fc11ed5cf461396a208819dee8e32f3b36a33c46fdbae8d7702c337f34 +TEST= 69 +KEY= 44cfccbadaf196ac2b07de15aa222a04 +IV= 5b0095fc11ed5cf461396a208819dee8e32f3b36a33c46fdbae8d7702c337f34 +PT= 5be680a6f6d1b81c25658a5b9954435ca19be3e314af4fff4d1c19d717f379b6 +CT= 97b46491f5dbe4c233dacf3715f8228a29940432180735d0fce4fc990cf2d63c +TEST= 70 +KEY= 6d5bc888c2f6a37cd7e3228ca6d0fc38 +IV= 97b46491f5dbe4c233dacf3715f8228a29940432180735d0fce4fc990cf2d63c +PT= 9c679d91e894396d7af48c281dce7ab42879f85911864744f095b2504d60b7f7 +CT= 664d2c7d063b47d7c374597c96fbeec6f96707dd918253ed3333a18e71208118 +TEST= 71 +KEY= 943ccf555374f091e4d08302d7f07d20 +IV= 664d2c7d063b47d7c374597c96fbeec6f96707dd918253ed3333a18e71208118 +PT= 3923dffec48917f5cc8791df3229a804efc9fafafbc366eb4dad85060d8708e8 +CT= 1b1cf3a7305a9fd9cd55d871e707b387798a6d1942bb3c0c87f9225f1b8ccad8 +TEST= 72 +KEY= edb6a24c11cfcc9d6329a15dcc7cb7f8 +IV= 1b1cf3a7305a9fd9cd55d871e707b387798a6d1942bb3c0c87f9225f1b8ccad8 +PT= 9e7797f5dfee7dfb4320fdec314b847f10139609d9c2862ea44a281d9f678d0a +CT= 2fc8e5ec2e55f398d8cee0d839b6d671cf54159ffc38b0e2030bb615930779c9 +TEST= 73 +KEY= 22e2b7d3edf77c7f602217485f7bce31 +IV= 2fc8e5ec2e55f398d8cee0d839b6d671cf54159ffc38b0e2030bb615930779c9 +PT= 504a4d65f810cf36055ceb0a8169611f74854866a31a399f9d38a6104e513b81 +CT= 1842794e93e3d4e60c8048b0d85194f9c7fa55e24fbe2e7ae142211fc614b440 +TEST= 74 +KEY= e518e231a249520581603657996f7a71 +IV= 1842794e93e3d4e60c8048b0d85194f9c7fa55e24fbe2e7ae142211fc614b440 +PT= 55eedeeb2d67eb7d123d214f1516623af997fceefa16b5e21e35f9627427108c +CT= 7c4ca0e7ec56a5dd52de93681f97bcfb88cdc4d0ab9bda5549764f856c58a0d5 +TEST= 75 +KEY= 6dd526e109d28850c81679d2f537daa4 +IV= 7c4ca0e7ec56a5dd52de93681f97bcfb88cdc4d0ab9bda5549764f856c58a0d5 +PT= a05879bb99919e48f506dce2df2804843ef7db72806a05435fcfda186d3da4e1 +CT= d8efa82549a1b00101477eae9c090e81a5e1db5087b5a7072a24daac0dd0c91d +TEST= 76 +KEY= c834fdb18e672f57e232a37ef8e713b9 +IV= d8efa82549a1b00101477eae9c090e81a5e1db5087b5a7072a24daac0dd0c91d +PT= b7819b7552ab5b6c8bea9fa53e15ab93c40cc9eace57c9b790f45344447d26b7 +CT= b134243e80e4078d62b30a3d18ca8924474abcd90ee6a407b63f1963406b39ef +TEST= 77 +KEY= 8f7e416880818b50540dba1db88c2a56 +IV= b134243e80e4078d62b30a3d18ca8924474abcd90ee6a407b63f1963406b39ef +PT= e47f7dfdb1334c86a2812c2ab8b4ea99018835fa98ad32795cac4ebd43c4c842 +CT= 6bdf98010371bbce290e97262199ecdf64bcbffdb4ac6c84792805bab1d3a51b +TEST= 78 +KEY= ebc2fe95342de7d42d25bfa7095f8f4d +IV= 6bdf98010371bbce290e97262199ecdf64bcbffdb4ac6c84792805bab1d3a51b +PT= f6aeebca68d984b3e30fa9d5d65c79970526b87ff0ad9c3f5259c603ef34a2ea +CT= f1ce16a02d78fb3155829f2f1a8eda2c10a82006732e6fe090c54e4a485cdb95 +TEST= 79 +KEY= fb6ade9347038834bde0f1ed410354d8 +IV= f1ce16a02d78fb3155829f2f1a8eda2c10a82006732e6fe090c54e4a485cdb95 +PT= cd442fbd6bd0b6405141428dda0925e0953d29abfe0d11d385957c9dbf5f9356 +CT= af97b581fc067efb05788fdeb3ab5e50fcb222aad71aefc99560186b3098a5ec +TEST= 80 +KEY= 07d8fc39901967fd2880e986719bf134 +IV= af97b581fc067efb05788fdeb3ab5e50fcb222aad71aefc99560186b3098a5ec +PT= 0338a75a7af4ae17a58a27f362ba79b728d0d41f7e29424853b04271b391f524 +CT= e440f5c1a1882fedce12b76f66e3fd9d550ecccffef57c6cb78e1487e34d6e4b +TEST= 81 +KEY= 52d630f66eec1b919f0efd0192d69f7f +IV= e440f5c1a1882fedce12b76f66e3fd9d550ecccffef57c6cb78e1487e34d6e4b +PT= fe60e092534e4e754c586f36fc631878c75f41d7a7470c04081cc88d0168d382 +CT= f688f1d92ed43fc5824a867e285463fb868c998c7c208adcc6006a7e12eb6a30 +TEST= 82 +KEY= d45aa97a12cc914d590e977f803df54f +IV= f688f1d92ed43fc5824a867e285463fb868c998c7c208adcc6006a7e12eb6a30 +PT= bcd6d9773fd90b615dd967833fc465b892905a544f0afe8e97c9eafd08a8b1bd +CT= c714647c86ee961333b15eee0584df01891b7e928f6aa1b13843f9bd67326278 +TEST= 83 +KEY= 5d41d7e89da630fc614d6ec2e70f9737 +IV= c714647c86ee961333b15eee0584df01891b7e928f6aa1b13843f9bd67326278 +PT= 9b5427a26e7c95bf4a198d6b110a7b0e20cc09b272b26ca08ed4b3ee1abf4e51 +CT= 066233919b1f5af41265224dfdcca2c377bccb974d5691e66b40f3d26eb74002 +TEST= 84 +KEY= 2afd1c7fd0f0a11a0a0d9d1089b8d735 +IV= 066233919b1f5af41265224dfdcca2c377bccb974d5691e66b40f3d26eb74002 +PT= 0501f7e632b2b5090f88d4506bc65f180c18548d5dbda7cb2dc8c513fcb6cceb +CT= c6fd283f935f1e1d7352c3132ca529106255a4ab0963a0bfd8199fb4d7693ddb +TEST= 85 +KEY= 48a8b8d4d99301a5d21402a45ed1eaee +IV= c6fd283f935f1e1d7352c3132ca529106255a4ab0963a0bfd8199fb4d7693ddb +PT= 711d1781d808f5cc255e48461705e2ff4b0268da21434c3c0e6b58f7cd61a88d +CT= e2429976108deb4a687f529acf9e574ce45fbcbad0b14ef929bf6dabf68bf221 +TEST= 86 +KEY= acf7046e09224f5cfbab6f0fa85a18cf +IV= e2429976108deb4a687f529acf9e574ce45fbcbad0b14ef929bf6dabf68bf221 +PT= 2c3c29fab82b55381de0f086ab00e9604fd3581f4953687df0b767d77cd9c864 +CT= 5b59ccd4968f5fa1b8c8410dd7431366b5eec433dac3ab23a48258035fe8a38a +TEST= 87 +KEY= 1919c05dd3e1e47f5f29370cf7b2bb45 +IV= 5b59ccd4968f5fa1b8c8410dd7431366b5eec433dac3ab23a48258035fe8a38a +PT= a22cc0762fcc855588147ed47a8caa90ad387718780966b912d18c57cf6b3af5 +CT= 8abd4f2a9c32620d1bc4f4cc3231b7ccab88db0a9bb7317eefffda0a3eb05a3f +TEST= 88 +KEY= b2911b574856d501b0d6ed06c902e17a +IV= 8abd4f2a9c32620d1bc4f4cc3231b7ccab88db0a9bb7317eefffda0a3eb05a3f +PT= 0a63edee90cb4436d1cb1bbfca2a3efc056e8709e5ef7b0a7208f0d0772b6233 +CT= c91a21c2ffca8c058328d0e58621ac21be89c853a86a8b673bfc398d487113e4 +TEST= 89 +KEY= 0c18d304e03c5e668b2ad48b8173f29e +IV= c91a21c2ffca8c058328d0e58621ac21be89c853a86a8b673bfc398d487113e4 +PT= 35ed444c3f7449345d2aa3e636ac9cbee170707bc6e5a2bb169602fdd8dd5c5c +CT= 5ca7927ac45f61b67dbaf81da07da49380db2b25fe8732408455d38c7b8bfda6 +TEST= 90 +KEY= 8cc3f8211ebb6c260f7f0707faf80f38 +IV= 5ca7927ac45f61b67dbaf81da07da49380db2b25fe8732408455d38c7b8bfda6 +PT= 72dd094225f82e689f2a3d169d7de7d9a6f4b83c2fd7fd2acaae6c74d557412b +CT= 7adeee1d4e139620f55251a059e943b5e96537454dda4cbd1fd41ce6766603dd +TEST= 91 +KEY= 65a6cf645361209b10ab1be18c9e0ce5 +IV= 7adeee1d4e139620f55251a059e943b5e96537454dda4cbd1fd41ce6766603dd +PT= bb0d25b04de1ddbf89668140d1b9be23c02cf1c4dbbaf1ce7ff1cf8deaa594ec +CT= d111513fb5e5776ce5c0b7f9aad820208738dd9f532c3a9b9480184a765ca3ce +TEST= 92 +KEY= e29e12fb004d1a00842b03abfac2af2b +IV= d111513fb5e5776ce5c0b7f9aad820208738dd9f532c3a9b9480184a765ca3ce +PT= efc66e621c32577e8041a4729968f4cdc2d4b26a33599a965feb905ae91b23d6 +CT= 74334af372a5499ac321dae822f791b085449313c030535fadbe267b5f9e9701 +TEST= 93 +KEY= 67da81e8c07d495f299525d0a55c382a +IV= 74334af372a5499ac321dae822f791b085449313c030535fadbe267b5f9e9701 +PT= 483d73ba914fb3ef008fd6a7c3f5a01664279e217469adb794f139682acd4d7c +CT= 814f853bc227643b60d7e2a10115a2364a754a9dffbbcfba8c88dcf2dd4f90a7 +TEST= 94 +KEY= 2dafcb753fc686e5a51df9227813a88d +IV= 814f853bc227643b60d7e2a10115a2364a754a9dffbbcfba8c88dcf2dd4f90a7 +PT= 108cbdfcb697521a0d215343d76b094f2000793b704c264bcf659b7815808d15 +CT= 345bc96571eafcb999b0628d14522965e1f2a5b79e3d89e1a068a755c1f881a9 +TEST= 95 +KEY= cc5d6ec2a1fb0f0405755e77b9eb2924 +IV= 345bc96571eafcb999b0628d14522965e1f2a5b79e3d89e1a068a755c1f881a9 +PT= 4c1ed124c3021532ef1a00b06fb50d8a23117a95378898f9ca5b0b58dab5ebce +CT= 734d4a762dd316fe5eacd09b80b25441e74fd229883ec15cbe23a38c66b0c6d7 +TEST= 96 +KEY= 2b12bceb29c5ce58bb56fdfbdf5beff3 +IV= 734d4a762dd316fe5eacd09b80b25441e74fd229883ec15cbe23a38c66b0c6d7 +PT= 52fa594dc10225bf9891a49d5d4a38964e199d9ecafc6cb250bd1a015b79dfcf +CT= 81419dec957a1d33a2e2af3c83b61033b2c83fc7587c485d1f81fa715a9e352f +TEST= 97 +KEY= 99da832c71b98605a4d7078a85c5dadc +IV= 81419dec957a1d33a2e2af3c83b61033b2c83fc7587c485d1f81fa715a9e352f +PT= 5ec089e83073e0f95352df9421e7b90d93c8c0e27dd46b0258d8d2331d12e753 +CT= 55bd6030f7735c5922ab1f3c68b22c37653aee5816304cfbd1894e1320927c9f +TEST= 98 +KEY= fce06d746789cafe755e4999a557a643 +IV= 55bd6030f7735c5922ab1f3c68b22c37653aee5816304cfbd1894e1320927c9f +PT= 20d8c33be2ed5e783728dbb822cea69053031b4b45b9fdf8b2c9c67d5e5ef6b1 +CT= 8de3a2fb83eae7371d48c6ec9e81e0f00b8a8e76234ba708487df824cd7e7618 +TEST= 99 +KEY= f76ae30244c26df63d23b1bd6829d05b +IV= 8de3a2fb83eae7371d48c6ec9e81e0f00b8a8e76234ba708487df824cd7e7618 +PT= 6adbeefa28c6ea48d2cc10bc0044595a8222df080686b3aa279e88b5310e835b +CT= c86e8667267295745bcadf7f6b3a459c0d785d70a2f82a47032a2fbb7bc3ca6e +TEST= 100 +KEY= fa12be72e63a47b13e099e0613ea1a35 +IV= c86e8667267295745bcadf7f6b3a459c0d785d70a2f82a47032a2fbb7bc3ca6e +PT= 1d784d88c54437e3a2161f731678533cb549b6fc95558ae318bfc3f3e013d75a +CT= 22f8cc3ba3ac4de8500f0add95f4664e9e6d3a19f26a238a9b1595769c1b2255 +TEST= 101 +KEY= 647f846b1450643ba51c0b708ff13860 +IV= 22f8cc3ba3ac4de8500f0add95f4664e9e6d3a19f26a238a9b1595769c1b2255 +PT= 21d6568f70fb1f8b59a28811706f9474898f0d519f22d84ce9cd171f9a570852 +CT= 5ec5bbdfed66cb7215824508f170c4d26f79119ee64ce07522ff311bf2e9c337 +TEST= 102 +KEY= 0b0695f5f21c844e87e33a6b7d18fb57 +IV= 5ec5bbdfed66cb7215824508f170c4d26f79119ee64ce07522ff311bf2e9c337 +PT= b60a4800fed12d2ae89cc779c497915c4153688271d61f4070724253f87bc78c +CT= a012122a3bd5d8391b6b0cd522ed4645bc6cf1007c6809d4da4dc4d07e416e37 +TEST= 103 +KEY= b76a64f58e748d9a5daefebb03599560 +IV= a012122a3bd5d8391b6b0cd522ed4645bc6cf1007c6809d4da4dc4d07e416e37 +PT= c9eb2c85189bb41f313997a39a759382f6ff600b2ee001826e244099184b9b78 +CT= 95940f95de5681216f8b81b957282b936a8222c80e12368a74cb2e75d15a3679 +TEST= 104 +KEY= dde8463d8066bb102965d0ced203a319 +IV= 95940f95de5681216f8b81b957282b936a8222c80e12368a74cb2e75d15a3679 +PT= 4593f6341027f6bd4eb2ef40c49aa6a110e2c1d8b8d733772a74ba47fb1b04f1 +CT= 36592fc20ae1d12d91b3a86574f880bd05f3913fd556339da46f675895125ee7 +TEST= 105 +KEY= d81bd7025530888d8d0ab7964711fdfe +IV= 36592fc20ae1d12d91b3a86574f880bd05f3913fd556339da46f675895125ee7 +PT= 71c29d5740146ff85360170fdedb6f0f9ab4dbaa49898599027c691893d41d7d +CT= 53d30ea9179849071f2e0caeec2a4332ced98e5451bf6666870fd8c5595fc846 +TEST= 106 +KEY= 16c25956048feeeb0a056f531e4e35b8 +IV= 53d30ea9179849071f2e0caeec2a4332ced98e5451bf6666870fd8c5595fc846 +PT= 9df84f32e68e9ccfa201c680534a510cf9406baafe0109d7b9d53bbb0d5ed55a +CT= e71fe076463da351ade0200aa675f283067bbc6db6fdd80aab02601adefa89db +TEST= 107 +KEY= 10b9e53bb27236e1a1070f49c0b4bc63 +IV= e71fe076463da351ade0200aa675f283067bbc6db6fdd80aab02601adefa89db +PT= 1a3728378181885dc39da634a9ae2fb5d73aeb32be47e1baca54979a5ddd3fa3 +CT= dc65adca3da87fea49c03513a5d1449a5bc496fa3f51cae735f7e3124340d302 +TEST= 108 +KEY= 4b7d73c18d23fc0694f0ec5b83f46f61 +IV= dc65adca3da87fea49c03513a5d1449a5bc496fa3f51cae735f7e3124340d302 +PT= f80b1e3813d2f0a7711f77358a97527b481f48772972ac45df7c82cc3293ad30 +CT= 5d1087d3524857f5e37f8571d5320cff9f544bda011192c756c8aadab0af574b +TEST= 109 +KEY= d429381b8c326ec1c2384681335b382a +IV= 5d1087d3524857f5e37f8571d5320cff9f544bda011192c756c8aadab0af574b +PT= 8184654f908c59507de97e111e2f62b2ad5ab35982cdb10a911b0cc2f9516d34 +CT= 6734d25c91bfa1f6fd2a80b7618dc4fb81a572bd6e1ba5ec8f83ff5bc96fec0d +TEST= 110 +KEY= 558c4aa6e229cb2d4dbbb9dafa34d427 +IV= 6734d25c91bfa1f6fd2a80b7618dc4fb81a572bd6e1ba5ec8f83ff5bc96fec0d +PT= 2dc58d27998cef9b7db1408c2936dc606680ca4c50729e3b378ecfc9d872595c +CT= ea6a4c464ec59345072781d00ab22a156a1ba08ef58038ad2488a1642706871e +TEST= 111 +KEY= 3f97ea2817a9f380693318bedd325339 +IV= ea6a4c464ec59345072781d00ab22a156a1ba08ef58038ad2488a1642706871e +PT= 14ad9e301709e1acd7c55f44827992f4842f4caf53e724d44a0a97502144876a +CT= 8eab5a0fbf6965e98a202fd10186eec2f91686fd0aad2ad0722c125d9015a8ca +TEST= 112 +KEY= c6816cd51d04d9501b1f0ae34d27fbf3 +IV= 8eab5a0fbf6965e98a202fd10186eec2f91686fd0aad2ad0722c125d9015a8ca +PT= 3bbd85d0ef9a924467157b525d3040306e2d2c9ed16949abd06fed6556d9ff27 +CT= 87831d9b681069d4e48c2568919d81c8600a5342ade3cad8c956d0a69c2d4e69 +TEST= 113 +KEY= a68b3f97b0e71388d249da45d10ab59a +IV= 87831d9b681069d4e48c2568919d81c8600a5342ade3cad8c956d0a69c2d4e69 +PT= 01be7327b05e1124c3c9b9965b199b8ee3581615e847d3efacf33b360913f4b2 +CT= 588c2255af0217f86fbbb1b18ac62f615b5b5a9a36873bb931933fcd103322ec +TEST= 114 +KEY= fdd0650d86602831e3dae588c1399776 +IV= 588c2255af0217f86fbbb1b18ac62f615b5b5a9a36873bb931933fcd103322ec +PT= 53046877fcad1a55c04a2c93630c2b93034b49576a52ac9ae752a4aa0259279c +CT= a7c190f998b1eca8e1346b2b5edb046fa8280bb764c3d8cbec920a770e392bd0 +TEST= 115 +KEY= 55f86ebae2a3f0fa0f48efffcf00bca6 +IV= a7c190f998b1eca8e1346b2b5edb046fa8280bb764c3d8cbec920a770e392bd0 +PT= 70c4dccbd67f8fa8a3a90f81179164254a1f187fff284f32b0c8b8a7cc8c5b93 +CT= c44714f58d4c5fc187257e49e18193de9a38728bbf6e5cf0645fe6e5543f86b6 +TEST= 116 +KEY= cfc01c315dcdac0a6b17091a9b3f3a10 +IV= c44714f58d4c5fc187257e49e18193de9a38728bbf6e5cf0645fe6e5543f86b6 +PT= de7e28265fe6aeb59dcdc7bb4ed6bddee487ac1b8b5663aa42c347714e128f3f +CT= 934485564da0a3ce19a5fe9f93534595ebf0438c5c2eef1fe18dc7cdeb6f22c6 +TEST= 117 +KEY= 24305fbd01e343158a9aced7705018d6 +IV= 934485564da0a3ce19a5fe9f93534595ebf0438c5c2eef1fe18dc7cdeb6f22c6 +PT= f4cf24f5d108a4f5e09e6ce2b139d0e54886d44650a18f0013772f64c67c6b2c +CT= a61912ba5d10bead84dccc321a091e1df1ad18fa7341cde6065951113d1907b7 +TEST= 118 +KEY= d59d474772a28ef38cc39fc64d491f61 +IV= a61912ba5d10bead84dccc321a091e1df1ad18fa7341cde6065951113d1907b7 +PT= 70a2acd68053b2c337763380a9bb011c80ee6ddb3ca6283cc7521846383c4348 +CT= 88cec8afa841385389a68511316baf409b0264a49e9e9be67454c4f2441acb52 +TEST= 119 +KEY= 4e9f23e3ec3c1515f8975b340953d433 +IV= 88cec8afa841385389a68511316baf409b0264a49e9e9be67454c4f2441acb52 +PT= f7334c6b4e3ddae96f975399c658ecffbcf00a7d5692c58e4551c36a14796a23 +CT= 22a336b010f64228f49cfa5e08cc8289df16543eddabbd960071e56eb76297f4 +TEST= 120 +KEY= 918977dd3197a883f8e6be5abe3143c7 +IV= 22a336b010f64228f49cfa5e08cc8289df16543eddabbd960071e56eb76297f4 +PT= 29076f1344805e22c2546bbf795941368a5cb27df299a0e214c349cc69dd6644 +CT= 15b9cf955ef26d6e774b064f9d0ab7f3711ab075e35a05ffc6b69fd74c4f86ec +TEST= 121 +KEY= e093c7a8d2cdad7c3e50218df27ec52b +IV= 15b9cf955ef26d6e774b064f9d0ab7f3711ab075e35a05ffc6b69fd74c4f86ec +PT= e71877aef1e10c194a30fbe660ede0746d74e51f74f9f0c9e40d3e41b082656a +CT= 2f8f4202600cf526b548aeb20e8501c79488225e4286733a313be2eabe6bf2ec +TEST= 122 +KEY= 741be5f6904bde460f6bc3674c1537c7 +IV= 2f8f4202600cf526b548aeb20e8501c79488225e4286733a313be2eabe6bf2ec +PT= e7e6b4d188a25c05a7f40f2c26447502452da1c923a1e64d58fa61c4091cee88 +CT= fbf1394734751eaa1d261cd2db85f8f795b0ba80de54011e3eb783297d9769fd +TEST= 123 +KEY= e1ab5f764e1fdf5831dc404e31825e3a +IV= fbf1394734751eaa1d261cd2db85f8f795b0ba80de54011e3eb783297d9769fd +PT= 3925518f277828b67fd4a3b6f7cd3f24580f12fae41b01bdf225f2fe8b08d601 +CT= 708b5bd4e35a79134b0564f4d7e07478f41407b648f95084922e71740e1910da +TEST= 124 +KEY= 15bf58c006e68fdca3f2313a3f9b4ee0 +IV= 708b5bd4e35a79134b0564f4d7e07478f41407b648f95084922e71740e1910da +PT= 143087e7f55a1c858b88b54fc9f956a1e8d9deb7589c9a597c13ed796e0c29b8 +CT= 6a268e7428e58e77a90dcfa871c756b1df100e5e2b053c1ed21b5a3bd0ea89c0 +TEST= 125 +KEY= caaf569e2de3b3c271e96b01ef71c720 +IV= 6a268e7428e58e77a90dcfa871c756b1df100e5e2b053c1ed21b5a3bd0ea89c0 +PT= d400d45f5ea73f85768551018586f0aa185001884de13bef85eabda7e91372d3 +CT= 72c8b56b3932171357d2d43161cdf92ac29b70b8048ae40c8ac2602bef3cbc92 +TEST= 126 +KEY= 08342626296957cefb2b0b2a004d7bb2 +IV= 72c8b56b3932171357d2d43161cdf92ac29b70b8048ae40c8ac2602bef3cbc92 +PT= cf0e3f9a2c977f199b6885cfc6aed13d02cf3526697dd470a385c2ee8b1262b3 +CT= 3ccbe0838e92445442539fe716f68c7b166e866ea600d4e7e8582f5972f00231 +TEST= 127 +KEY= 1e5aa0488f6983291373247372bd7983 +IV= 3ccbe0838e92445442539fe716f68c7b166e866ea600d4e7e8582f5972f00231 +PT= 02e0bd86d472b407dd35bb4275753b96dc29af78003e5d80b8065901435e9989 +CT= 616fc5d1dc7fd3486d77efa1422fdab1249648ff6956a138b0206a854940c21d +TEST= 128 +KEY= 3acce8b7e63f2211a3534ef63bfdbb9e +IV= 616fc5d1dc7fd3486d77efa1422fdab1249648ff6956a138b0206a854940c21d +PT= d5ba78fe56e353b784429d0f759bdbb5323b1b211595183d95e1ef92b0fc1d97 +CT= 85bc312760b02fa410a24bab5888672d67a03688a6a2f39ef7533638b9e582ad +TEST= 129 +KEY= 5d6cde3f409dd18f540078ce82183933 +IV= 85bc312760b02fa410a24bab5888672d67a03688a6a2f39ef7533638b9e582ad +PT= 7435fe55516ef14d412bfec000f35255de2afe35bc38cd9344bedafc67a3b565 +CT= e287ea181b4601444c62ce392c115bf2fae56e5dd6ef4341053aabc95f5aea18 +TEST= 130 +KEY= a789b062967292ce513ad307dd42d32b +IV= e287ea181b4601444c62ce392c115bf2fae56e5dd6ef4341053aabc95f5aea18 +PT= 3cabb91c969b2ff051982e284e1add34bad5c4f7114094060650de2a89e392e5 +CT= 0ec8249bda336ba1dfe0f8f024b1480ef874954e530bc3dcf48c807862cf1c6a +TEST= 131 +KEY= 5ffd252cc5795112a5b6537fbf8dcf41 +IV= 0ec8249bda336ba1dfe0f8f024b1480ef874954e530bc3dcf48c807862cf1c6a +PT= e2adefcaec5471c7d8e89dc1e7db7ebd9b87fcb845e82759fc9d28b42b3745cc +CT= 003277574815858a3b59683cf5dda1b8197dec6b7488173f13f241eee4d40a06 +TEST= 132 +KEY= 4680c947b1f1462db64412915b59c547 +IV= 003277574815858a3b59683cf5dda1b8197dec6b7488173f13f241eee4d40a06 +PT= 2c8b8c054ac6489c426e60da60642aebd327d665678094b5e67f2add80fbf4a2 +CT= b30dddef4f3c5beb1bbd3a0285dc1442c597284be2351c8d7c258af9f337c431 +TEST= 133 +KEY= 8317e10c53c45aa0ca619868a86e0176 +IV= b30dddef4f3c5beb1bbd3a0285dc1442c597284be2351c8d7c258af9f337c431 +PT= cec8482cc0f557ca29106584b21d8cad1465b659f81c493826b229369236742e +CT= f1666562cadf65f8c4a551b5e00a502f189524d0ad50173d7413b2bdd7316893 +TEST= 134 +KEY= 9b82c5dcfe944d9dbe722ad57f5f69e5 +IV= f1666562cadf65f8c4a551b5e00a502f189524d0ad50173d7413b2bdd7316893 +PT= d82d58489e2aca271d0932602469f461270884938be632a728bbbc1b24bdc712 +CT= 3716f5eea80a30f81cb3307078176794124354bce232db916829b2c299c67d8b +TEST= 135 +KEY= 89c191601ca6960cd65b9817e699146e +IV= 3716f5eea80a30f81cb3307078176794124354bce232db916829b2c299c67d8b +PT= 9f6b5b057c6a8c867c24afca0da24e28d0dff9d904334d2e7705eec5797cfcc0 +CT= 52d42b8d7f517fb7ddd8967a123db0ea033b1a2e2ce295e1f1f897d1400d4528 +TEST= 136 +KEY= 8afa8b4e304403ed27a30fc6a6945146 +IV= 52d42b8d7f517fb7ddd8967a123db0ea033b1a2e2ce295e1f1f897d1400d4528 +PT= 54c3cc4eee857e94a23d563fe1600f300fdef151537a46b5d79badecc3301cc0 +CT= 45321424745cfdaae40f30115efe1037e97662070bd684e3491bc65182541a84 +TEST= 137 +KEY= 638ce9493b92870e6eb8c99724c04bc2 +IV= 45321424745cfdaae40f30115efe1037e97662070bd684e3491bc65182541a84 +PT= 4a4c97e4b71c5d91e8c59f6f5cfeb6751b43ac81090e85489970000375916f58 +CT= 409e0a8754bd67edbb3f754a8145658acf26992e7566ad51e74e1d147d28264e +TEST= 138 +KEY= acaa70674ef42a5f89f6d48359e86d8c +IV= 409e0a8754bd67edbb3f754a8145658acf26992e7566ad51e74e1d147d28264e +PT= f572a1c60bfb72c24f739662723cb180563bd7d1851b55ce37f58fbc4093fd51 +CT= f5467d6e0d784a1c5c71d22cb1772d62c291b8e338334cee1de0a6d46ffb46b7 +TEST= 139 +KEY= 6e3bc88476c766b19416725736132b3b +IV= f5467d6e0d784a1c5c71d22cb1772d62c291b8e338334cee1de0a6d46ffb46b7 +PT= fb803c83ba7b187135503ce7fe26ba9d3daab8900c79ddcadad4ab0f463e1c25 +CT= 96a24f26e372c07f7b3a4bd54730ede13656dfed24866d72b66eaef8bea8f476 +TEST= 140 +KEY= 586d176952410bc32278dcaf88bbdf4d +IV= 96a24f26e372c07f7b3a4bd54730ede13656dfed24866d72b66eaef8bea8f476 +PT= f65dfa5001c7f7580819eae1476f60fe15f78a1a3c456ab86d005cb90c9905c5 +CT= 8b03f8f1d7074efc22bf7e9516b326d340fb37f3083a8a83a8dd6b0bb6de07c2 +TEST= 141 +KEY= 1896209a5a7b81408aa5b7a43e65d88f +IV= 8b03f8f1d7074efc22bf7e9516b326d340fb37f3083a8a83a8dd6b0bb6de07c2 +PT= 3a69745fcd5e86e722c91f09a585f58e85c108c4aecfba3a50a5ba839537b1aa +CT= 7bae7e41ca1daa190345d2d456628f94af75e0526f02b27fda8903654c52324e +TEST= 142 +KEY= b7e3c0c83579333f502cb4c17237eac1 +IV= 7bae7e41ca1daa190345d2d456628f94af75e0526f02b27fda8903654c52324e +PT= 57db1b10b536a4650782e13ec6b62a53b9a82f7c6137087c05f86e17d661f336 +CT= 89750d36ae2121ff287b38ac3c3c8852256ab9b0bd96bd415d15f6c19127d434 +TEST= 143 +KEY= 9289797888ef8e7e0d394200e3103ef5 +IV= 89750d36ae2121ff287b38ac3c3c8852256ab9b0bd96bd415d15f6c19127d434 +PT= 455db3b7b3f5917323962c16fb594b617fa02c11d82aafc4d1ee826fe162ff09 +CT= db64231156918fe888981207d976100e3d67f4c528ff4f456604f7d87af924e6 +TEST= 144 +KEY= afee8dbda010c13b6b3db5d899e91a13 +IV= db64231156918fe888981207d976100e3d67f4c528ff4f456604f7d87af924e6 +PT= ace692c580d387e59b7538d950fb85c95ff73ef37bcf0299c9d2525feb1469c4 +CT= df0203e6a487c0b976c20a91cece5a3766f493d0829beb2ae50af93cd890ea7c +TEST= 145 +KEY= c91a1e6d228b2a118e374ce44179f06f +IV= df0203e6a487c0b976c20a91cece5a3766f493d0829beb2ae50af93cd890ea7c +PT= 69dd99567e5357e43e067e131aa0a3f55475f90b8068dbf04c6f267bac82d9b2 +CT= a5fbed99d1b2af6dbf3ca3d6b543539f33753732415d94fc1d9206f6ee7991e7 +TEST= 146 +KEY= fa6f295f63d6beed93a54a12af006188 +IV= a5fbed99d1b2af6dbf3ca3d6b543539f33753732415d94fc1d9206f6ee7991e7 +PT= c4b25e4d6f9eef33f2b55bd5f0f55f600dcfa18ef396124d654dc3c4ddf8a336 +CT= 2bdd97834e37116475f70f08b6f8a11aebe28d1501a49dc1ff5e36f4908cb3cb +TEST= 147 +KEY= 118da44a6272232c6cfb7ce63f8cd243 +IV= 2bdd97834e37116475f70f08b6f8a11aebe28d1501a49dc1ff5e36f4908cb3cb +PT= 175869c3ff753089d1032c64a98ed8fef557c415b71ba44e5a3e309c2886315a +CT= 04f4b4d5bdefee4eefcfd9eca9f838f2b7309bfa80dd170b59ec2d1fbd68dc60 +TEST= 148 +KEY= a6bd3fb0e2af3427351751f982e40e23 +IV= 04f4b4d5bdefee4eefcfd9eca9f838f2b7309bfa80dd170b59ec2d1fbd68dc60 +PT= 8296b5206a9d5c27c8080b1f11d45d4899d99c712b686d8814f927264aadeffd +CT= 4966cc51b177857b068c132cb9033a59a7f3757166be7516475abb23cdaa1cac +TEST= 149 +KEY= 014e4ac184114131724deada4f4e128f +IV= 4966cc51b177857b068c132cb9033a59a7f3757166be7516475abb23cdaa1cac +PT= f51af303f9374a2e877fa047e61e60fae03257fb3a103e839c04db797a36f988 +CT= 03039181ed85231c15cc204135dc19c231bdcf6d167f79a278bc6b05a3003ee5 +TEST= 150 +KEY= 30f385ac926e38930af181dfec4e2c6a +IV= 03039181ed85231c15cc204135dc19c231bdcf6d167f79a278bc6b05a3003ee5 +PT= 4bdb668ba2ede0c1e7f973682fea28f83be554151ad9a79ee9701da51f47eb05 +CT= d45d7ac7799da61d29afd52d4fd0d489738645044ab5ad19b2ee9d8088a943fa +TEST= 151 +KEY= 4375c0a8d8db958ab81f1c5f64e76f90 +IV= d45d7ac7799da61d29afd52d4fd0d489738645044ab5ad19b2ee9d8088a943fa +PT= cb3088426850307c7a03738c380b84a39c75d2bebf482fdc07970e13daf56d28 +CT= ed80765f7206cf2c3e037824f3ea6804e2d40bc127b513650a044a64c0be6239 +TEST= 152 +KEY= a1a1cb69ff6e86efb21b563ba4590da9 +IV= ed80765f7206cf2c3e037824f3ea6804e2d40bc127b513650a044a64c0be6239 +PT= 480c58aec334fe544b14b2e368e64aa38b04fbee11dbdfddef90cb81f1bd94f9 +CT= 73d3b2c53878d136d12df4dd55232e2575c25e04db478d144ffee72b8e484224 +TEST= 153 +KEY= d463956d24290bfbfde5b1102a114f8d +IV= 73d3b2c53878d136d12df4dd55232e2575c25e04db478d144ffee72b8e484224 +PT= 24166bfdefbd596c6958b944684566164f44037b0aaaed88ecf2bd4b6d353cb9 +CT= 46b374a38d9207783979b5c0ba783b486309f8a4e42851de32f6b320f146d45c +TEST= 154 +KEY= b76a6dc9c0015a25cf130230db579bd1 +IV= 46b374a38d9207783979b5c0ba783b486309f8a4e42851de32f6b320f146d45c +PT= 2b4580afeaf2197a4420f0910f6fd7de1b26cc8591ba73ed95d840e37b2c4076 +CT= ea1c42cf1cbc332256d7568cc09a5ebcb68c233228c2a1bc786a415694448555 +TEST= 155 +KEY= 01e64efbe8c3fb99b77943664f131e84 +IV= ea1c42cf1cbc332256d7568cc09a5ebcb68c233228c2a1bc786a415694448555 +PT= c70b0c971899991bce828d43e77d896253835e94966dc42b585255c5e5d97fe7 +CT= 5bd4e9f6ac5096315030c95b25e6f5d2430dbd572e76bf8e087208747142bf35 +TEST= 156 +KEY= 42ebf3acc6b54417bf0b4b123e51a1b1 +IV= 5bd4e9f6ac5096315030c95b25e6f5d2430dbd572e76bf8e087208747142bf35 +PT= 96ccd84751acd8b98f1371d85606377a893e30c4aea672b8af308e2997b13fdd +CT= 9ba9fb4d5280636eac6bfd92280311eba8d0a6bbdb8ec0027b169ba428cc2c85 +TEST= 157 +KEY= ea3b55171d3b8415c41dd0b6169d8d34 +IV= 9ba9fb4d5280636eac6bfd92280311eba8d0a6bbdb8ec0027b169ba428cc2c85 +PT= 345e23dc33d1ae50e52b973f932f2d876f445a9a1024a99590b407c9852c4c43 +CT= 67b8ddf29e2073a0ecd6a1fe2fa33bdb61180324d1b61dbf44ecfe5e54af61a1 +TEST= 158 +KEY= 8b235633cc8d99aa80f12ee84232ec95 +IV= 67b8ddf29e2073a0ecd6a1fe2fa33bdb61180324d1b61dbf44ecfe5e54af61a1 +PT= 29775f93f956e92c81fc0583c45dcc4cb22d596463b23fb18361c972183ac9fb +CT= 4c871735d32258d7e7c816cbbebc9b132f8bf49c668f4b2eb17b4f0c9d3ff92f +TEST= 159 +KEY= a4a8a2afaa02d284318a61e4df0d15ba +IV= 4c871735d32258d7e7c816cbbebc9b132f8bf49c668f4b2eb17b4f0c9d3ff92f +PT= d9fd31bbd74558b1b3dc0f5d0b0602468be4ab7a19d3269edb5b15ce379dee70 +CT= c48f1ccee99cdbea593661d7cf4da6d532b0133528909cd8b5e526f2879da19e +TEST= 160 +KEY= 9618b19a82924e5c846f47165890b424 +IV= c48f1ccee99cdbea593661d7cf4da6d532b0133528909cd8b5e526f2879da19e +PT= e2fa17447bcbbc65e968c2811c335de10bc75219356e5a1c4e95988037cf1330 +CT= e5e0cb2a8c6b1bd42ef038b54ddc9011a1178d795894045f41db153628846f74 +TEST= 161 +KEY= 370f3ce3da064a03c5b452207014db50 +IV= e5e0cb2a8c6b1bd42ef038b54ddc9011a1178d795894045f41db153628846f74 +PT= 1ee06c2ea1e0d774a9c2e432401b1037eb966e4e37cff72837a2ce556a6a9f37 +CT= 2d8cfbda38627bc97af12c1f1a5f0f82cfd194691ab93205a57b1dbe1b0d3b42 +TEST= 162 +KEY= f8dea88ac0bf780660cf4f9e6b19e012 +IV= 2d8cfbda38627bc97af12c1f1a5f0f82cfd194691ab93205a57b1dbe1b0d3b42 +PT= 45217090874b0c745218e58cf739be117c7c678706ee56019a02feefa99e1882 +CT= 84972fcd944ce27de0e950d18f9ae5eb82bba19d0e0fccdf0d3853243bb3690a +TEST= 163 +KEY= 7a650917ceb0b4d96df71cba50aa8918 +IV= 84972fcd944ce27de0e950d18f9ae5eb82bba19d0e0fccdf0d3853243bb3690a +PT= 33935a23bb4770708522e3abc5735989fa185e04212b52a446c6de2fe914d437 +CT= 40c313bf5ddf455f2b236728af20f7585548a38a06b721ae902ead3d2f3b631d +TEST= 164 +KEY= 2f2daa9dc8079577fdd9b1877f91ea05 +IV= 40c313bf5ddf455f2b236728af20f7585548a38a06b721ae902ead3d2f3b631d +PT= 101710761ebbf13516e2f2f3da1883a846a5d8adfeb61c924de568ba6741062a +CT= 3211a598c66aa6165d789a7df552a3d4bee293c1bd7195acb36e531f2458db50 +TEST= 165 +KEY= 91cf395c757600db4eb7e2985bc93155 +IV= 3211a598c66aa6165d789a7df552a3d4bee293c1bd7195acb36e531f2458db50 +PT= ca7650075dab76784a4e7e6b684dabd5e1a667ce2d3a59c00517ab79f69fd7bf +CT= 94fee6746e6900b5bc7c71ff51b7c7c8501da57285487157e4565cc787f53d51 +TEST= 166 +KEY= c1d29c2ef03e718caae1be5fdc3c0c04 +IV= 94fee6746e6900b5bc7c71ff51b7c7c8501da57285487157e4565cc787f53d51 +PT= 78dcfabceb8617f71353e7b26fdc4bbd385043e59ae5e34056cfffb2f8b3a4a3 +CT= 53538479ba12ac90bad48feb221740e143366e9425b3a2bbfb5f71df5703e48d +TEST= 167 +KEY= 82e4f2bad58dd33751becf808b3fe889 +IV= 53538479ba12ac90bad48feb221740e143366e9425b3a2bbfb5f71df5703e48d +PT= 46849e11bf8a7cf30206ed2394c05f60111a82daf4c217fd1e224ca835a39a80 +CT= d8f577ab3e64bfe5917aa7fc81ea3243b54edcb103f6fc16232b79e3615ebdd9 +TEST= 168 +KEY= 37aa2e0bd67b2f217295b663ea615550 +IV= d8f577ab3e64bfe5917aa7fc81ea3243b54edcb103f6fc16232b79e3615ebdd9 +PT= 3554f540a65fba5ca2658690f8066e87fbc1d6caae05ff2d569afa4582bc5fc7 +CT= be5440ffc99f0f78ecca684fcb9cdb335a38247b07c84e62d1b1d9db2a680bc2 +TEST= 169 +KEY= 6d920a70d1b36143a3246fb8c0095e92 +IV= be5440ffc99f0f78ecca684fcb9cdb335a38247b07c84e62d1b1d9db2a680bc2 +PT= 8d2cb1f8312a99597c450ddd20e66a28cacf19beef1b4a312d6edd40453d8135 +CT= 944ed548d3de2b476cf1dd62255b2ad0118c791792a680d299f58bc6f026c7f8 +TEST= 170 +KEY= 7c1e73674315e1913ad1e47e302f996a +IV= 944ed548d3de2b476cf1dd62255b2ad0118c791792a680d299f58bc6f026c7f8 +PT= 524a3cb97e4bd0ec6da1dd6b2d875c3f099706d7c73c88b37cf786f023b753ed +CT= 91242aab746af040bab16719448a20d018ab0b84ba2fbeb7ab6df1895a031615 +TEST= 171 +KEY= 64b578e3f93a5f2691bc15f76a2c8f7f +IV= 91242aab746af040bab16719448a20d018ab0b84ba2fbeb7ab6df1895a031615 +PT= fc7bcafa53f2f189df0ef43bd389203da9c75e02a5486f8c0c573a9fcc77348b +CT= 9825d0cc22c0fd34476d3485f0eb1ae9563c82c7b5085835ea34789dbf8deb21 +TEST= 172 +KEY= 3289fa244c3207137b886d6ad5a1645e +IV= 9825d0cc22c0fd34476d3485f0eb1ae9563c82c7b5085835ea34789dbf8deb21 +PT= 4b900396397276c48dee8d0b03f35bfd96c1ba43a1b2de031f005d43c47626c5 +CT= d7ed13d97692178d724b83637f43dcd70147c78816edd8808716aee4c22b9308 +TEST= 173 +KEY= 33ce3dac5adfdf93fc9ec38e178af756 +IV= d7ed13d97692178d724b83637f43dcd70147c78816edd8808716aee4c22b9308 +PT= da0831bb15bc498734e9d1e779c396b48afb76692631d1f213a2d7a450fd7c33 +CT= 248df0647b7c52a55ef8c3967d5317de55ff7b8713392e71c1282e36f2fc5cd7 +TEST= 174 +KEY= 6631462b49e6f1e23db6edb8e576ab81 +IV= 248df0647b7c52a55ef8c3967d5317de55ff7b8713392e71c1282e36f2fc5cd7 +PT= 6c019a63e3845c402f4fb4c912b3e3587bde9f0275f8648933ade49db309344e +CT= e5b58293bfb631ba04ad506b3500dbad894d4c8905be6756bbd202ce17cf3ff5 +TEST= 175 +KEY= ef7c0aa24c5896b48664ef76f2b99474 +IV= e5b58293bfb631ba04ad506b3500dbad894d4c8905be6756bbd202ce17cf3ff5 +PT= 41bcbd9dec209b23bebc42b9c4ead3cc7cf9f8bfc14ce6b8a6f2a78628e79112 +CT= efb1757bf38be245aa6604511ad73860f889a800482bdb6fe98f436ba398eb0e +TEST= 176 +KEY= 17f5a2a204734ddb6febac1d51217f7a +IV= efb1757bf38be245aa6604511ad73860f889a800482bdb6fe98f436ba398eb0e +PT= 613c07d401518a16ab3e9ed00deff6e5c792df23b54b5b270d22920d93197521 +CT= 86b909fcbd1f7452321aff4d9b7bd57f0425c39230445aa25a896ef39e719629 +TEST= 177 +KEY= 13d06130343717793562c2eecf50e953 +IV= 86b909fcbd1f7452321aff4d9b7bd57f0425c39230445aa25a896ef39e719629 +PT= 48b2f5ffd7fac054ac3b0233ef87b91ad102e6adc2a91e795cac678dc550bda0 +CT= 82ab33300e96b10310d46164555981362d4fdb32aee2b23ee3e0e3fb8d2f6c36 +TEST= 178 +KEY= 3e9fba029ad5a547d6822115427f8565 +IV= 82ab33300e96b10310d46164555981362d4fdb32aee2b23ee3e0e3fb8d2f6c36 +PT= 4f952d93fadd1a8e9450ec69861570244ea455f618dfddf6ecab6cc909b518e9 +CT= ecc243c8235f77596253c0737636b33b131bb478125386a148de6c9adeaa33d1 +TEST= 179 +KEY= 2d840e7a888623e69e5c4d8f9cd5b6b4 +IV= ecc243c8235f77596253c0737636b33b131bb478125386a148de6c9adeaa33d1 +PT= 00b27bde687e4f04c1dba01c0b84be6bb47f4764118e117c9779652443c55f29 +CT= 6395fdcdd7dd4fe9624a48450ca80f0756f023a773adcebfd35b6f39eb96ab63 +TEST= 180 +KEY= 7b742dddfb2bed594d0722b677431dd7 +IV= 6395fdcdd7dd4fe9624a48450ca80f0756f023a773adcebfd35b6f39eb96ab63 +PT= 677cc7bb40dd914c6da4737adac564e3d5f1fcbc2fd07d665ad7447f40b73764 +CT= 92bc6f289336cf2b6d1f13b312af2f87c1ea7246499bbe5dedf06ab6c7473c13 +TEST= 181 +KEY= ba9e5f9bb2b05304a0f74800b00421c4 +IV= 92bc6f289336cf2b6d1f13b312af2f87c1ea7246499bbe5dedf06ab6c7473c13 +PT= 10e48159ade577f60366be0c56921d0a6029bfe21482440ae8ac2c85ef3edc0f +CT= 5660380dcd224f1aa7d8f55b114cf39c1e58640b2d752ae333afe7010dc435ee +TEST= 182 +KEY= a4c63b909fc579e79358af01bdc0142a +IV= 5660380dcd224f1aa7d8f55b114cf39c1e58640b2d752ae333afe7010dc435ee +PT= f7e508af9a346e35083ca99af68153b8f6fd557246a3fd3be150d6e74a8f73ca +CT= 02612eaee3adc3e65f5ba5b95dbe5c5ff7552ba85a9d258fdee9f6aa9afcacea +TEST= 183 +KEY= 53931038c5585c684db159ab273cb8c0 +IV= 02612eaee3adc3e65f5ba5b95dbe5c5ff7552ba85a9d258fdee9f6aa9afcacea +PT= 8af49558ca91de5ae9131b3e13c3498c60b0dd7f46385eed26ecb99889da7fe2 +CT= 517dabdbf0efae38b4e165709373ead9040dcc082bfba38673cf98abdae83673 +TEST= 184 +KEY= 579edc30eea3ffee3e7ec100fdd48eb3 +IV= 517dabdbf0efae38b4e165709373ead9040dcc082bfba38673cf98abdae83673 +PT= e51964bef50e9c870e832dcc664d49c7803d5793d6fb981cd19177ab09f07519 +CT= afc5859b95267b64d1862b63cd42e4a7e4ea2f92dcb37d6061d1bac7dc46145c +TEST= 185 +KEY= b374f3a23210828e5faf7bc721929aef +IV= afc5859b95267b64d1862b63cd42e4a7e4ea2f92dcb37d6061d1bac7dc46145c +PT= cea76a308aec3257f665017daa479445292c8df570a05bf9e9b0d35509ddcef2 +CT= 63d36cdf8cecf5bddda76e18d735e9b9b305414be28c91a8d75900750e379d59 +TEST= 186 +KEY= 0071b2e9d09c132688f67bb22fa507b6 +IV= 63d36cdf8cecf5bddda76e18d735e9b9b305414be28c91a8d75900750e379d59 +PT= 65f744bcc4d9d9b64aa63412adf6ff5ae392192cec049f7384b45db91023e774 +CT= e066d3bf9d3822f0d0be2b00b65fb04af4296bf27ff4bf2a05df6ebf47d1114f +TEST= 187 +KEY= f458d91baf68ac0c8d29150d687416f9 +IV= e066d3bf9d3822f0d0be2b00b65fb04af4296bf27ff4bf2a05df6ebf47d1114f +PT= 13c694d5c79a092093160d788a98696a2c52f2ee8bf8d7aafac4cee9d41a224c +CT= 8d396529eb7b4ed69242e9c511d3ed3ca8dff18460782f2b6659679da05f42cf +TEST= 188 +KEY= 5c87289fcf108327eb707290c82b5436 +IV= 8d396529eb7b4ed69242e9c511d3ed3ca8dff18460782f2b6659679da05f42cf +PT= 6cdaefaba9087ac6fc69a5d6eb9dad35fff5264166a4a1924f7439a62ab166eb +CT= c833eebfb5e28fad27be3225928d3acf7b850846be491845f3f44a7192bc32f5 +TEST= 189 +KEY= 270220d971599b62188438e15a9766c3 +IV= c833eebfb5e28fad27be3225928d3acf7b850846be491845f3f44a7192bc32f5 +PT= 85490b8db01eeaecd208d3aabcf1421efc2627bc293eb6c70bf281480a9a8fc0 +CT= 965f8e3c06fd85d1a590c674244772149f448eb97cea5238b8d2d5eae340419c +TEST= 190 +KEY= b846ae600db3c95aa056ed0bb9d7275f +IV= 965f8e3c06fd85d1a590c674244772149f448eb97cea5238b8d2d5eae340419c +PT= 620b88e6636c76cbfa2dc6f5d21a151fb3a87b3f4baf89bda5510b498a1e69cc +CT= 2335a1635307c37832c39201eb19b92b9a16d2d61c50de60c2e2d0bf99d3ef04 +TEST= 191 +KEY= 22507cb611e3173a62b43db42004c85b +IV= 2335a1635307c37832c39201eb19b92b9a16d2d61c50de60c2e2d0bf99d3ef04 +PT= 750f6b9f04535b20d4fe12fc05200d1caecd2cd0e993d9f24a76a5dfc4e01dc0 +CT= 3f4a8d9a3c78afa2ebdf11bff5050b74d7f4b4d0a4f4a7292f9145988c5f8225 +TEST= 192 +KEY= f5a4c866b517b0134d25782cac5b4a7e +IV= 3f4a8d9a3c78afa2ebdf11bff5050b74d7f4b4d0a4f4a7292f9145988c5f8225 +PT= b717900b82d82b4d3eb813bf701486b19046c801245604fbe54048059f314a86 +CT= d4c7fc230c91c28ed5d09afd8226a25e72b37329106005a781a716a92a20f9c0 +TEST= 193 +KEY= 8717bb4fa577b5b4cc826e85867bb3be +IV= d4c7fc230c91c28ed5d09afd8226a25e72b37329106005a781a716a92a20f9c0 +PT= a0f3e6be8e2a9d4164270d1602bc9a9f9f98c5968627a34f265ed02a9aadff0d +CT= 2729edc472638f7bdc5109bb2c89afd0642a377083e65a3b4c121f23e5431238 +TEST= 194 +KEY= e33d8c3f2691ef8f809071a66338a186 +IV= 2729edc472638f7bdc5109bb2c89afd0642a377083e65a3b4c121f23e5431238 +PT= 2d2f1ae4e4964645df276a7cc08f8409005bd9513d63501a8b2c1312fa6ec60b +CT= edb51548fd2431cf42067867e380d7470976165124d2b5f874abcca5024ff230 +TEST= 195 +KEY= ea4b9a6e02435a77f43bbd03617753b6 +IV= edb51548fd2431cf42067867e380d7470976165124d2b5f874abcca5024ff230 +PT= fa537e15536e2b3dd6099bb919dd9afe4415c0b040a0d94544470997e3d9991a +CT= 37a6f6fce1c827a0bf1fae987b36095f775c89bb2b5918a9c69c4e815f586f75 +TEST= 196 +KEY= 9d1713d5291a42de32a7f3823e2f3cc3 +IV= 37a6f6fce1c827a0bf1fae987b36095f775c89bb2b5918a9c69c4e815f586f75 +PT= e427d1a71d2b51413b0ea91f98791b35073e59e533df03c90b5766bb1009eabf +CT= 1d22a008fac5616cb9a777d688cef3df7c1752c5d2d733608332d5212b316540 +TEST= 197 +KEY= e1004110fbcd71beb19526a3151e5983 +IV= 1d22a008fac5616cb9a777d688cef3df7c1752c5d2d733608332d5212b316540 +PT= 1786541d6b338eaf2a63727c2138805c1c0d0843fe185012f7e9a9f97bde00a7 +CT= 6f0ec1694665367af35252f9e9ef6a5d6b2b9dacea6545ee6621c91ce4a340a5 +TEST= 198 +KEY= 8a2bdcbc11a83450d7b4efbff1bd1926 +IV= 6f0ec1694665367af35252f9e9ef6a5d6b2b9dacea6545ee6621c91ce4a340a5 +PT= 9cbd38b3a45a6c8934971320dbf87c6de67044c6cceb743bb33bb0af7a9a8b51 +CT= 5aae3ea3e4a8ef4e3ab9695fd2ede9951b2cefc3e4dc56df9a4da84e732059a3 +TEST= 199 +KEY= 9107337ff574628f4df947f1829d4085 +IV= 5aae3ea3e4a8ef4e3ab9695fd2ede9951b2cefc3e4dc56df9a4da84e732059a3 +PT= 67f06a22fa5284ac42a41dab99556af35499ece09f5e712c687c314588793e37 +CT= 873f161eec86d4428c13e368b879dceaebb8c1962cfcdc1bd68e38a68d5e0514 +TEST= 200 +KEY= 7abff2e9d988be949b777f570fc34591 +IV= 873f161eec86d4428c13e368b879dceaebb8c1962cfcdc1bd68e38a68d5e0514 +PT= f5cd69152e2fd0f6da97ba24f2d412b98eab90da2cd44771e1cb2db6e696df8d +CT= 99a1524c671608952cc71789dac38088bbda9c4ddf58185b4bea2a8d3a393e7f +TEST= 201 +KEY= c1656ea406d0a6cfd09d55da35fa7bee +IV= 99a1524c671608952cc71789dac38088bbda9c4ddf58185b4bea2a8d3a393e7f +PT= bd7e8fbc8953f8f4cf6d63d0040627c1515522bb47dded740d4b24166a52478e +CT= 94469eb60161ff1d27f61342b4ba5831fedbcb430b0bfea460f752eec70c8ded +TEST= 202 +KEY= 3fbea5e70ddb586bb06a0734f2f6f603 +IV= 94469eb60161ff1d27f61342b4ba5831fedbcb430b0bfea460f752eec70c8ded +PT= d5dd1d0047e1bc6ac9ff9d7da53120c1455d5297108bc0c3d4517cfe4f45677d +CT= 7e7e65503c7f91c8f715142fde2fad21f12328e49f48d1f064eca8fdf8f8e285 +TEST= 203 +KEY= ce9d8d039293899bd486afc90a0e1486 +IV= 7e7e65503c7f91c8f715142fde2fad21f12328e49f48d1f064eca8fdf8f8e285 +PT= 52087c816b82ea54a045080c0737453e33e0286c9be0766efe0cc02416440be1 +CT= 051eda3b72898f3d30e8d651a4b63786d08515e24d4920ddc60f28220cf00c1b +TEST= 204 +KEY= 1e1898e1dfdaa946128987eb06fe189d +IV= 051eda3b72898f3d30e8d651a4b63786d08515e24d4920ddc60f28220cf00c1b +PT= 8e5fc7f74a23358f4e82ccad5600dc7f740d608406f3c5d31b91e978f2a87d93 +CT= d77f9c8af9654131d65ef71be7ee17017925fb37e8b3ea09aae4c4944214c673 +TEST= 205 +KEY= 673d63d63769434fb86d437f44eadeee +IV= d77f9c8af9654131d65ef71be7ee17017925fb37e8b3ea09aae4c4944214c673 +PT= 9d2b142311cf6f51eeb72beb65cfb32322ba38e4f79ef6bcf1eb5899de1e38b0 +CT= 494e81c1f92b9d2bbbe29ef0982ce5916f1257dc1fa2e94d05d88705bfe8dcbc +TEST= 206 +KEY= 082f340a28cbaa02bdb5c47afb020252 +IV= 494e81c1f92b9d2bbbe29ef0982ce5916f1257dc1fa2e94d05d88705bfe8dcbc +PT= 974e4c7a4c925c114356fe6e45315edcfd9c96f74ed86b263e0a7bac7804bbfd +CT= d5dc76648e1fdaaa9b70e26bc29838547897289db17a80fcca2f064d8a8e7b92 +TEST= 207 +KEY= 70b81c9799b12afe779ac237718c79c0 +IV= d5dc76648e1fdaaa9b70e26bc29838547897289db17a80fcca2f064d8a8e7b92 +PT= 0be6f473d5b80bb6f54aa957e811a49ec38e2c8c542ee3772ceaae2a813cbc4d +CT= 2abe5a1c9628001e8ccffc94f532467f4796c5a80fc324cf5751180ecc787b06 +TEST= 208 +KEY= 372ed93f96720e3120cbda39bdf402c6 +IV= 2abe5a1c9628001e8ccffc94f532467f4796c5a80fc324cf5751180ecc787b06 +PT= d8a151b48ff5d05a91da7671cd0416fe8f22d8fafdb871ca589ca174d612ce99 +CT= 73eb0097e442dc70b2504344ca44d57a78bccc6c0d92e151af4d12d4c6c798ea +TEST= 209 +KEY= 4f9215539be0ef608f86c8ed7b339a2c +IV= 73eb0097e442dc70b2504344ca44d57a78bccc6c0d92e151af4d12d4c6c798ea +PT= bce747478f07881e6e900f95efaebab67e469304320a30b2eb24f16b1d2087ef +CT= 74076e513e091e5afbe41288b7b543ab5b97424413cf9473d18e001c54f260fc +TEST= 210 +KEY= 14055717882f7b135e08c8f12fc1fad0 +IV= 74076e513e091e5afbe41288b7b543ab5b97424413cf9473d18e001c54f260fc +PT= 74f550f710a9a9ad006096e8814bc98b044cdb02609ff390eeea7d58605c3370 +CT= a38a0ee17b816ea0d505d1597f08c156d25fa06ba9dcb04c8779220202a9c5a3 +TEST= 211 +KEY= c65af77c21f3cb5fd971eaf32d683f73 +IV= a38a0ee17b816ea0d505d1597f08c156d25fa06ba9dcb04c8779220202a9c5a3 +PT= bb38fbec4f7d716c6afb47b3ae3c4793617813d6f202de2e73e70448b6bed2ca +CT= deeb941230ed9f196c1afaa0ace9afb068fe2120d192cfc0cb32184e8a8179e9 +TEST= 212 +KEY= aea4d65cf061049f1243f2bda7e9469a +IV= deeb941230ed9f196c1afaa0ace9afb068fe2120d192cfc0cb32184e8a8179e9 +PT= ccf66ef99beaa956c3cf878018c95af2d13dba1921b52b64b0c98cd5538cfc21 +CT= ae8d70de91ddc79aea8b9289d012caf7d07f6d0840c282ffec111524ac38f5e2 +TEST= 213 +KEY= 7edbbb54b0a38660fe52e7990bd1b378 +IV= ae8d70de91ddc79aea8b9289d012caf7d07f6d0840c282ffec111524ac38f5e2 +PT= b2f3226ec31c0b9b35b24757ed4f700a72dc09ce84e7e46ee442f3aefb42cc26 +CT= da5307da4b0e72bf5fee84bbb58f2205e403ac63408f026c22570136d369f900 +TEST= 214 +KEY= 9ad81737f02c840cdc05e6afd8b84a78 +IV= da5307da4b0e72bf5fee84bbb58f2205e403ac63408f026c22570136d369f900 +PT= 886a32f330fd1f34ad4440f97af417a990b8e7ff0b84c72723ee3d4908c717b8 +CT= e0230e9d9ab30b269ef1ff67d8f3e60b8f8fe7748303009318f8c2c7a0e83b9a +TEST= 215 +KEY= 1557f043732f849fc4fd2468785071e2 +IV= e0230e9d9ab30b269ef1ff67d8f3e60b8f8fe7748303009318f8c2c7a0e83b9a +PT= 61d606782ce5d6901dbd3e6747ea5a5e1c7c2a16643aa869f6578777e727b78b +CT= aeb01f78d21ee40efbe0c2f32a8995bc8788346a206cc09fb8bc8c3dce83b06f +TEST= 216 +KEY= 92dfc429534344007c41a855b6d3c18d +IV= aeb01f78d21ee40efbe0c2f32a8995bc8788346a206cc09fb8bc8c3dce83b06f +PT= 5f23f719e16cf7dc0302f20856d46ea16d7fd1bb536bd0666bf3f37c5ea4f621 +CT= 48343a4e6bfa1b5d4cb98b7ff946f89e8da227656488b4f2c31168f31134972f +TEST= 217 +KEY= 1f7de34c37cbf0f2bf50c0a6a7e756a2 +IV= 48343a4e6bfa1b5d4cb98b7ff946f89e8da227656488b4f2c31168f31134972f +PT= 39ea036a5152a363e6abb164bcc23ecde739b72827f7fdaba1ea58bc6a676502 +CT= 79d2c4846c00518cb6f235081a3dac03c9bc04799bff0b3fbd67cad0b9be23e2 +TEST= 218 +KEY= d6c1e735ac34fbcd02370a761e597540 +IV= 79d2c4846c00518cb6f235081a3dac03c9bc04799bff0b3fbd67cad0b9be23e2 +PT= 2eb7de2c03ca3d7498651429a48dbc911a74b59b52ba6de9973e022054242ac4 +CT= 7ad69b26c1083d4f740dbdfe350be0e53055db287a0b953c81d36b1790e52d48 +TEST= 219 +KEY= e6943c1dd63f6ef183e461618ebc5808 +IV= 7ad69b26c1083d4f740dbdfe350be0e53055db287a0b953c81d36b1790e52d48 +PT= 8eb4857278e3f359089251efa9c79c009ffa737a77e6d033e9a343486bf64a19 +CT= 22a656f5c4b0b77401d8288069971fef06e43d888be7382db70edf34ffdec721 +TEST= 220 +KEY= e07001955dd856dc34eabe5571629f29 +IV= 22a656f5c4b0b77401d8288069971fef06e43d888be7382db70edf34ffdec721 +PT= a7215d62705c525a96271db2ace301c58a0a5f3c1b7acb0cae32d68530c0e72c +CT= 4a8aa196c3756dd5531c7ef2fe013b4327ec04196de0ee6eb461333d11c25def +TEST= 221 +KEY= c79c058c3038b8b2808b8d6860a0c2c6 +IV= 4a8aa196c3756dd5531c7ef2fe013b4327ec04196de0ee6eb461333d11c25def +PT= 52743ba9597fa1edaa45566819b5667734cf1369ab89a4afab7535f784110a88 +CT= 3a4c2822c4720fecc5f5ea17d36b1a17439f41cf7342f782b1acec8b9038883a +TEST= 222 +KEY= 84034443437a4f30312761e3f0984afc +IV= 3a4c2822c4720fecc5f5ea17d36b1a17439f41cf7342f782b1acec8b9038883a +PT= bcfe0e838b40daa936622d9a01e059eea4e0d6ff35a87029da7246d7134eb983 +CT= f238e9236627b0eb51013204516af1c71f9ac33749ad6ffee5c2bb4b83475315 +TEST= 223 +KEY= 9b9987740ad720ced4e5daa873df19e9 +IV= f238e9236627b0eb51013204516af1c71f9ac33749ad6ffee5c2bb4b83475315 +PT= 468a0e3c86a9f6d4654fc9ac06aa3682e13bb66a0105b73e539df3c59fa1312f +CT= 2535972b9c4221102a8329b6527bc90b8b5588da5265c77816d6e91c2819d067 +TEST= 224 +KEY= 10cc0fae58b2e7b6c23333b45bc6c98e +IV= 2535972b9c4221102a8329b6527bc90b8b5588da5265c77816d6e91c2819d067 +PT= cf4cebd6d6535b07e494716a6fef0cdd1a3f5a1337db61a50bc2f81e1d71e63c +CT= ad4521b500830e3380e5ae3ed6e294114890f8b837e13adade3acd01d16e103d +TEST= 225 +KEY= 585cf7166f53dd6c1c09feb58aa8d9b3 +IV= ad4521b500830e3380e5ae3ed6e294114890f8b837e13adade3acd01d16e103d +PT= 1aea1ffb3311a335e02aa2369a8a1e3eed9b3890c1fcd2191a588a9423afbbe9 +CT= 67ee1952c7a768dc90925077cc6e73647e844fd88eca4856c94630a2172161b8 +TEST= 226 +KEY= 26d8b8cee199953ad54fce179d89b80b +IV= 67ee1952c7a768dc90925077cc6e73647e844fd88eca4856c94630a2172161b8 +PT= 6efbd01643eaecc5a0ef61f77e828d64ad3be59e8c00e5892603090e720d7288 +CT= 8d7a8ad754d3f07c0b0fa27ae6f51beaa93a4b093c002dfaee83cbd57ba11230 +TEST= 227 +KEY= 8fe2f3c7dd99b8c03bcc05c2e628aa3b +IV= 8d7a8ad754d3f07c0b0fa27ae6f51beaa93a4b093c002dfaee83cbd57ba11230 +PT= be9bc5189ac9d86e2e2659a583d8670950ff5495fa6f8540c3c9aa23bf7ebf75 +CT= a9bd3a7dff935be22b5ca4446ad7d43200179e4af291a79ad071e1dd278c8453 +TEST= 228 +KEY= 8ff56d8d2f081f5aebbde41fc1a42e68 +IV= a9bd3a7dff935be22b5ca4446ad7d43200179e4af291a79ad071e1dd278c8453 +PT= 5745473faa9ff6d63a4d57ea363ec0a535ef4f283f5d5a948ac45f11eefad24b +CT= c90988847e3616f6cc39f1ba44347d9822f7e362839c05184c7d1c5936850ea8 +TEST= 229 +KEY= ad028eefac941a42a7c0f846f72120c0 +IV= c90988847e3616f6cc39f1ba44347d9822f7e362839c05184c7d1c5936850ea8 +PT= 6e4412942fba19392593c65f8ec59e723caefd2519f6ff773fa735282d36c74f +CT= 2bbd4ec9871d443b951e4f2815498fb866cd238da5413346d245823a8ed7a1bf +TEST= 230 +KEY= cbcfad6209d5290475857a7c79f6817f +IV= 2bbd4ec9871d443b951e4f2815498fb866cd238da5413346d245823a8ed7a1bf +PT= 12a51b9f62fcfb59ef3a2014e81d4e77d8e32ac6cc92cee4b14169b90b19277c +CT= eacdd6c9ad5f08e26a65cae9f419c21d98d4a0796b01b500b698a878d3d44acf +TEST= 231 +KEY= 531b0d1b62d49c04c31dd204aa22cbb0 +IV= eacdd6c9ad5f08e26a65cae9f419c21d98d4a0796b01b500b698a878d3d44acf +PT= 540d5c00be227b6dbff7f5ffb0eb4e6b8fed043f7922bc99b513b37cd71f5def +CT= 1520146c88199c576af67ed7cd52291df404c35f116fc328432a21e13ee558de +TEST= 232 +KEY= a71fce4473bb5f2c8037f3e594c7936e +IV= 1520146c88199c576af67ed7cd52291df404c35f116fc328432a21e13ee558de +PT= 9c4dbbecc1363fd302cb099e02e3e63e341a9ffc0425e57ef2f6867053d8d7d9 +CT= f0448bc2bcaae79094f01b888503c3e563a8bf939723dc98462620d7478003fc +TEST= 233 +KEY= c4b771d7e49883b4c611d332d3479092 +IV= f0448bc2bcaae79094f01b888503c3e563a8bf939723dc98462620d7478003fc +PT= 0b405c1f3743d7addb92468d3b0e6bfa8d7ad8e268b549e8f79ea32adeb4ed32 +CT= 5d5cc306890646bdfc198f086854f0e720e8076758630530ffe0df628abbf4b2 +TEST= 234 +KEY= e45f76b0bcfb868439f10c5059fc6420 +IV= 5d5cc306890646bdfc198f086854f0e720e8076758630530ffe0df628abbf4b2 +PT= d0313c51ddc8bf2788e5684368f29ff08963ae33f9d3aaf0b364c3b8276e8f19 +CT= 67f2d7dd7ce3a058ded11aea4330da881bf64bf531efc18420b743909407b5d7 +TEST= 235 +KEY= ffa93d458d14470019464fc0cdfbd1f7 +IV= 67f2d7dd7ce3a058ded11aea4330da881bf64bf531efc18420b743909407b5d7 +PT= ffd08d749cfb6024687bbb8ca32d0a2a1651720391200196a3caa4e44ac827af +CT= 94f44f4e1e63c9fc46b3cd4a2bd3960f0aa0ce2d1c71e8a307cea89d3f8a5909 +TEST= 236 +KEY= f509f3689165afa31e88e75df27188fe +IV= 94f44f4e1e63c9fc46b3cd4a2bd3960f0aa0ce2d1c71e8a307cea89d3f8a5909 +PT= 19d8325abba846a3578f5fe26a9495e2ddd368662014f417549fc203f737862b +CT= caf66e7141a34bd2e700476c564216830768c4686692a994b465e2a1a85d11cf +TEST= 237 +KEY= f2613700f7f70637aaed05fc5a2c9931 +IV= caf66e7141a34bd2e700476c564216830768c4686692a994b465e2a1a85d11cf +PT= 877bf8ce6d9010637bee5d48fbf4adcec85b0b99c490e986f5a58fafa117321d +CT= 188eb29a0a7be5b108ff578b9fa5f38846972c6a60c673e8328616458751ab2c +TEST= 238 +KEY= b4f61b6a973175df986b13b9dd7d321d +IV= 188eb29a0a7be5b108ff578b9fa5f38846972c6a60c673e8328616458751ab2c +PT= 19072ec0746f3735b5dbe7ff5668cea2d2f96bc2c694eba7c3974499dd286c7d +CT= 0eead89c85316f92429a574afd896a92996320451bc1bb0fc326b18e52fb25b7 +TEST= 239 +KEY= 2d953b2f8cf0ced05b4da2378f8617aa +IV= 0eead89c85316f92429a574afd896a92996320451bc1bb0fc326b18e52fb25b7 +PT= a9b7f41660c44483b7e469c7cf24f063aa5ae760bd95219b4ea5aa3defe256ea +CT= d87fd50e47b52b11dcf6aa0d09eaef07c749affa3eaecd2a986dfe53dd11fb6e +TEST= 240 +KEY= eadc94d5b25e03fac3205c645297ecc4 +IV= d87fd50e47b52b11dcf6aa0d09eaef07c749affa3eaecd2a986dfe53dd11fb6e +PT= 6324da85b194c9cc93abccca4a51c72b13fadfde72846c162dd739f240cef3e3 +CT= f5d4f7673fa466b93690ac2495fb234d7d59a4faa98c7c9a4ba99ab97c42cb7e +TEST= 241 +KEY= 9785302f1bd27f608889c6dd2ed527ba +IV= f5d4f7673fa466b93690ac2495fb234d7d59a4faa98c7c9a4ba99ab97c42cb7e +PT= d56be64d5d50e8913719a246babc9bac92ab1abde66a29aaad54f82de44eb3d9 +CT= 5f45b815207f2c59f0334a1949bfcd0375eac43f85c279e8e2593cae55a6d45a +TEST= 242 +KEY= e26ff4109e1006886ad0fa737b73f3e0 +IV= 5f45b815207f2c59f0334a1949bfcd0375eac43f85c279e8e2593cae55a6d45a +PT= a84f89af37421c484accc1d241ff20dc53e1b140c4fbf976aba9dc89e982c1f1 +CT= dcab35b8d8af7cfb1e8cb749c5b94f1cb0eec791f7a4b38fb530eae0d106f63c +TEST= 243 +KEY= 5281338169b4b507dfe01093aa7505dc +IV= dcab35b8d8af7cfb1e8cb749c5b94f1cb0eec791f7a4b38fb530eae0d106f63c +PT= 4adc0954d96d95a7b44ffbdceee7a84da5ab3bffe6273db88c836ff3ff7e1b3b +CT= c50cf38663ca993c51f1d5284f2c633815cb8822fd81baf4066adb39038078c7 +TEST= 244 +KEY= 474abba394350ff3d98acbaaa9f57d1b +IV= c50cf38663ca993c51f1d5284f2c633815cb8822fd81baf4066adb39038078c7 +PT= 8243a731de9fa0efdef1c97e40a058bdb41e630ea8ead67337ecee30b2be75e7 +CT= 95699bf955966e58012df24adeddbbf2bd394e8d3afc0e5216208641abaa67d5 +TEST= 245 +KEY= fa73f52eaec901a1cfaa4deb025f1ace +IV= 95699bf955966e58012df24adeddbbf2bd394e8d3afc0e5216208641abaa67d5 +PT= ac724b47f56151b2b6250a3716cd40c577efb3123a5ab02d512abb3320f196d1 +CT= 24cc3bd4f6215aec7cd37920ddcd45bd412aef3acc4eb17300e17a0ca3eba101 +TEST= 246 +KEY= bb591a146287b0d2cf4b37e7a1b4bbcf +IV= 24cc3bd4f6215aec7cd37920ddcd45bd412aef3acc4eb17300e17a0ca3eba101 +PT= f7a734f8eaa3ca67981da89f586407ee987a7ad23103294d62b753afba6b2d8a +CT= ada1d3d4dc9e47885f62673c8d014fc446fd70245e768019e54db0301e7f9798 +TEST= 247 +KEY= fda46a303cf130cb2a0687d7bfcb2c57 +IV= ada1d3d4dc9e47885f62673c8d014fc446fd70245e768019e54db0301e7f9798 +PT= 4ffa4f4926246204c8a352b2e4a19656180c89523888e280c33a7e373ad6d917 +CT= bfb44e541cc131369bdc6c141ebc8570d073bbf0476420d0c99ca48dc40e890a +TEST= 248 +KEY= 2dd7d1c07b95101be39a235a7bc5a55d +IV= bfb44e541cc131369bdc6c141ebc8570d073bbf0476420d0c99ca48dc40e890a +PT= 7e401f7b4fc4e43becf3bd2c4bb179699ffd6d8bdd503e4e90b757432c56b475 +CT= fca3072f9cb7014c227da2bee6cc26f26eaea532b19bdfcbe17807faa1290863 +TEST= 249 +KEY= 437974f2ca0ecfd002e224a0daecad3e +IV= fca3072f9cb7014c227da2bee6cc26f26eaea532b19bdfcbe17807faa1290863 +PT= d7d4c78e9d7afca41fc17a7a4aa16ff9d8a4974007eea66b3f82424ce77e18e4 +CT= 16b2503dee567e17e1c05db3e0520c764d617bbd16ec18494efdbbb947db9886 +TEST= 250 +KEY= 0e180f4fdce2d7994c1f9f199d3735b8 +IV= 16b2503dee567e17e1c05db3e0520c764d617bbd16ec18494efdbbb947db9886 +PT= 62293cf72535585e2c1d16b0081cc0075ecddf779ab28bc17805b6b7237e186c +CT= 894900ea64c0d3155c71ba5d3841424272e3f82090df8fa38c4c0d652f630817 +TEST= 251 +KEY= 7cfbf76f4c3d583ac053927cb2543daf +IV= 894900ea64c0d3155c71ba5d3841424272e3f82090df8fa38c4c0d652f630817 +PT= 9f3a6aca3a140def81fb7249b71009c78624b59fd8d5ae502ceda0c3e67d5908 +CT= dd096c9e7fdbf47d2fb28aebbbb9862f27f7faf8c05eb763749b71827d98041c +TEST= 252 +KEY= 5b0c0d978c63ef59b4c8e3fecfcc39b3 +IV= dd096c9e7fdbf47d2fb28aebbbb9862f27f7faf8c05eb763749b71827d98041c +PT= 31c93c00880c13151b910a071dd5e3bb0de596dfca70317221f9a6dede1a707b +CT= f005ea2e161455997675346deff078dc410bde3afbf267197ec422142d447603 +TEST= 253 +KEY= 1a07d3ad77918840ca0cc1eae2884fb0 +IV= f005ea2e161455997675346deff078dc410bde3afbf267197ec422142d447603 +PT= 072c443bd651fa0ca7d0bcb2c220e8068eaf3eb4dae738a94c0fb35999343075 +CT= cc4c6e46c1d714b5a603d1227d603dc17767b1d92c6c1f3f513e112b4cfad770 +TEST= 254 +KEY= 6d6062745bfd977f9b32d0c1ae7298c0 +IV= cc4c6e46c1d714b5a603d1227d603dc17767b1d92c6c1f3f513e112b4cfad770 +PT= 922bc7bb01c66799713e31f7af6116ab39e3bbff607911578ef6553483866a57 +CT= 41b59adb52fde29f73ed19aade7b79ab0a22edc52a68392e02217f49de1e864b +TEST= 255 +KEY= 67428fb17195ae519913af88706c1e8b +IV= 41b59adb52fde29f73ed19aade7b79ab0a22edc52a68392e02217f49de1e864b +PT= 71c512e52588e3767f84f64a89a8a538f3d25328750fd61b0ef0b864d57e4110 +CT= 9b3b0ff28d00166c29df74c4d486992eb075b47b213cb9a9a7fb90823f743933 +TEST= 256 +KEY= d7373bca50a917f83ee83f0a4f1827b8 +IV= 9b3b0ff28d00166c29df74c4d486992eb075b47b213cb9a9a7fb90823f743933 +PT= ef94a606dad19f4d50dec92589ad8d68851a83f5d0d3b0e2080f191d71c99742 +CT= 74a708b275a1b8be87b0605cbdc2f9dcb36bc4f7b87e42cb38c9ce469996f8f9 +TEST= 257 +KEY= 645cff3de8d755330621f14cd68edf41 +IV= 74a708b275a1b8be87b0605cbdc2f9dcb36bc4f7b87e42cb38c9ce469996f8f9 +PT= 7832b438d2fb00c85a23f93fefb2ee49454321f67584dc717e2b787a226d6c23 +CT= b7fb0c6ef0e2c230c58e9f2a2f6ed1bd56d41b6683195594dc727d6c1b2feccc +TEST= 258 +KEY= 3288e45b6bce00a7da538c20cda1338d +IV= b7fb0c6ef0e2c230c58e9f2a2f6ed1bd56d41b6683195594dc727d6c1b2feccc +PT= 5080018828806775f7edeeea18f987e67247705034bafc6438ad50f0988203f8 +CT= 7d9948409350c1e1a9608d3242f5738b238dd83983667e6b39f5057ae0d03ce0 +TEST= 259 +KEY= 11053c62e8a87ecce3a6895a2d710f6d +IV= 7d9948409350c1e1a9608d3242f5738b238dd83983667e6b39f5057ae0d03ce0 +PT= 1cfffe9cbabe2cb2b55a16d468fabd191fffab71e3ad9c37beeb17a50781cc9b +CT= 9f2d3047dca2afa6cd4dceba90b8aaf3c013ba87fddbdf458df25a3a76578236 +TEST= 260 +KEY= d11686e51573a1896e54d3605b268d5b +IV= 9f2d3047dca2afa6cd4dceba90b8aaf3c013ba87fddbdf458df25a3a76578236 +PT= 14ccef85776236d2cedb294eccbdad9fddb0c92c223d693db02f7ffc6b53ae23 +CT= b8c7e8bbc552483569c4d65392693e4d6e7f7eff63c7c4109c2ca450376fa885 +TEST= 261 +KEY= bf69f81a76b46599f27877306c4925de +IV= b8c7e8bbc552483569c4d65392693e4d6e7f7eff63c7c4109c2ca450376fa885 +PT= 4d17dbbdcf2f9da616b325040dc5357e0f6d7b6eb5031374120315f14eb48c5e +CT= aa6f631772fde990f7aff28f22ffc12f36d6b1e53adea3eb736a1a283ba364fb +TEST= 262 +KEY= 89bf49ff4c6ac67281126d1857ea4125 +IV= aa6f631772fde990f7aff28f22ffc12f36d6b1e53adea3eb736a1a283ba364fb +PT= 893a9046ac8f3ebf16a2c3e961e2ff662eadcb2befee84cfa4a9fc6f2a7ac59a +CT= ea42371cbd9a2920a87b63ae78714864d2e25d9f9ae2f089992a9febe853d2b7 +TEST= 263 +KEY= 5b5d1460d68836fb1838f2f3bfb99392 +IV= ea42371cbd9a2920a87b63ae78714864d2e25d9f9ae2f089992a9febe853d2b7 +PT= 74a71db1fc18e49de2ff8c7cad50951b83f1080daaf27cd004ba8b72642a5fdf +CT= 27a4e361bff3ec6d096d964083bef9969a78b5ea30a3f854858b6377e3cbf2bd +TEST= 264 +KEY= c125a18ae62bceaf9db391845c72612f +IV= 27a4e361bff3ec6d096d964083bef9969a78b5ea30a3f854858b6377e3cbf2bd +PT= ef034ba8730afe31de881e6f7fab871062a4bf715884c2179697725f6196fbe7 +CT= 22a46d284d06169e99e14778a81fa5b7fb9cc08eee3118fa62fe90a7c55fd634 +TEST= 265 +KEY= 3ab96104081ad655ff4d0123992db71b +IV= 22a46d284d06169e99e14778a81fa5b7fb9cc08eee3118fa62fe90a7c55fd634 +PT= 1079d397eb5ef6a1f27bdbf6f78dae219f8911f78e54a10f0227d1f3a7dc724c +CT= 5821ffab3a76fa0d48fe9cf204ca1a383ea5505f3f63d68d68a414e834170ec8 +TEST= 266 +KEY= 041c315b377900d897e915cbad3ab9d3 +IV= 5821ffab3a76fa0d48fe9cf204ca1a383ea5505f3f63d68d68a414e834170ec8 +PT= 9fd85266acf9654fffb47a482139cfa598be4ba87b24ce7f9c491b1970cd7594 +CT= 231fd8db27a6fe72cac5d4e73a37ab2eb4a7be3420aa3b98722d01d93a241003 +TEST= 267 +KEY= b0bb8f6f17d33b40e5c41412971ea9d0 +IV= 231fd8db27a6fe72cac5d4e73a37ab2eb4a7be3420aa3b98722d01d93a241003 +PT= c5322c47480d401aa149dcd4cf25b694b6e3ad450f9d639ded1201cc9b9046b5 +CT= a46cfd64146497d815beacd65dc2b26533b6189c42d0f7e202423aab22221e8a +TEST= 268 +KEY= 830d97f35503cca2e7862eb9b53cb75a +IV= a46cfd64146497d815beacd65dc2b26533b6189c42d0f7e202423aab22221e8a +PT= ccd263c248fc85e3eab401dc39b7ad90ac354d9282d2a55d5f51355225fb7cee +CT= efb5a15c5895764b5d634d87017f7a18b421b58d2dd20c08bbbcd4db9a9b07f1 +TEST= 269 +KEY= 372c227e78d1c0aa5c3afa622fa7b0ab +IV= efb5a15c5895764b5d634d87017f7a18b421b58d2dd20c08bbbcd4db9a9b07f1 +PT= 50f5a95d914fe99a776bf1066ffa0dc59e0c363913b5da61f76e68d0179fcd8d +CT= bfb2197a1a1f22fe922cb3fb0fee6d2320402e1b2999920a81b68eab819ba9f5 +TEST= 270 +KEY= 176c0c65514852a0dd8c74c9ae3c195e +IV= bfb2197a1a1f22fe922cb3fb0fee6d2320402e1b2999920a81b68eab819ba9f5 +PT= 42e25c715f34d0a540a9834caed1ccb2a2e49c566ca23a62e075460bace7ba15 +CT= 6074f4b3cfe2afde4a93ea21467beb857b9c0037d36d8fb9ae4e0529ac6bb200 +TEST= 271 +KEY= 6cf00c528225dd1973c271e00257ab5e +IV= 6074f4b3cfe2afde4a93ea21467beb857b9c0037d36d8fb9ae4e0529ac6bb200 +PT= 1e25ca64aa5eeb2d19ae875af99c630e8776be67267e937a1e9eeab99cebbb8d +CT= 2c03ac5925ddbd803dcabad5bf8e1f3b7b55e9d2d2a5c4fad44890cfa7c438e4 +TEST= 272 +KEY= 17a5e580508019e3a78ae12fa59393ba +IV= 2c03ac5925ddbd803dcabad5bf8e1f3b7b55e9d2d2a5c4fad44890cfa7c438e4 +PT= e4d3e64062d3461de26a72744aee57bbacb4614479f01e142755278d7fecd904 +CT= b5b0e122a4ac4557bc92f6f34d6209da089eca75ce4ae9b407ca878d05e5bc40 +TEST= 273 +KEY= 1f3b2ff59ecaf057a04066a2a0762ffa +IV= b5b0e122a4ac4557bc92f6f34d6209da089eca75ce4ae9b407ca878d05e5bc40 +PT= dc48840156970fd077250594bd804dfd8add9aab066875a58252afce05ab01b7 +CT= 314c7ea7e05dadbf81c8fc5899b965f5089d0d2f3aecd54b22031ea3a7373adc +TEST= 274 +KEY= 17a622daa426251c8243780107411526 +IV= 314c7ea7e05dadbf81c8fc5899b965f5089d0d2f3aecd54b22031ea3a7373adc +PT= ca3b9b93747c40eabba5eed7654e0fa8547bbf4f3d1c55aadbcbfd4aac9f4fb3 +CT= 8e6c1fada428908da187abd6b8fa75fa5b8a5066312fb4ffbc711978772022fb +TEST= 275 +KEY= 4c2c72bc950991e33e326179706137dd +IV= 8e6c1fada428908da187abd6b8fa75fa5b8a5066312fb4ffbc711978772022fb +PT= 34cd4ce3cb8b0acf006988c7e7fb9e0c6bb31a3e9d2de103907065b5fdde0f6c +CT= cd7cb958853db74a3f8d9f27ab821f1aeab5a334622880a8711207bd04c3ea68 +TEST= 276 +KEY= a699d188f721114b4f2066c474a2ddb5 +IV= cd7cb958853db74a3f8d9f27ab821f1aeab5a334622880a8711207bd04c3ea68 +PT= e1ea5d2635dc2f54c20133e737098524cd942c48151978fa3b6f8268d4f0d4bf +CT= 67f5238d34a24ab3b34e455e00966087bcfc1c35b0d6d28ce890da357fbe9e54 +TEST= 277 +KEY= 1a65cdbd47f7c3c7a7b0bcf10b1c43e1 +IV= 67f5238d34a24ab3b34e455e00966087bcfc1c35b0d6d28ce890da357fbe9e54 +PT= 93f694f2d8dbbc68894572460e3f40673ca33576cf34839859a04190eabfdfee +CT= 3b2396686969b292e284f0e1f1d1f0b1c5916b62699db834d9d11892700b6fce +TEST= 278 +KEY= dff4a6df2e6a7bf37e61a4637b172c2f +IV= 3b2396686969b292e284f0e1f1d1f0b1c5916b62699db834d9d11892700b6fce +PT= 86112307f88aef16db36786a6ba4f30930356b3f8ddff5001d8784ad54e1b8bd +CT= ed9a138fe0f6406cabc181d806936a33be72397c1b7009b0535a5a2848ed4a32 +TEST= 279 +KEY= 61869fa3351a72432d3bfe4b33fa661d +IV= ed9a138fe0f6406cabc181d806936a33be72397c1b7009b0535a5a2848ed4a32 +PT= d6fc4ae6f170323e3d7849497e6653e7b14a6f384b4c352106fb90805e681239 +CT= 076962c85d8559d0dba41ebe28cceca34a387233509f1e72c5cb1d300ad90316 +TEST= 280 +KEY= 2bbeed9065856c31e8f0e37b3923650b +IV= 076962c85d8559d0dba41ebe28cceca34a387233509f1e72c5cb1d300ad90316 +PT= 344c701e9c92709d63aad837d7ca88dbd85c37fba94d842d2f8880cae2d34a83 +CT= a206581d39a72ea053385b9a717390069f7b7972dc447b345651565d61297848 +TEST= 281 +KEY= b4c594e2b9c11705bea1b526580a1d43 +IV= a206581d39a72ea053385b9a717390069f7b7972dc447b345651565d61297848 +PT= 7cdadc76489188a0748e740ab157938f435256fcfac710ecd5c2bfd0a099c756 +CT= 505065589287dbc57610ab8710fb4361838162119d0824da02778cc87a12f279 +TEST= 282 +KEY= 3744f6f324c933dfbcd639ee2218ef3a +IV= 505065589287dbc57610ab8710fb4361838162119d0824da02778cc87a12f279 +PT= 136dee4674d58de0768b053587b1ddf1617b0d3891eefda00718c0397a830199 +CT= 32dbf8f08b7fe61609bac25df232c15e11c44558a127fe08a902861a19a25d50 +TEST= 283 +KEY= 2680b3ab85eecdd715d4bff43bbab26a +IV= 32dbf8f08b7fe61609bac25df232c15e11c44558a127fe08a902861a19a25d50 +PT= 938ef06d55b78c0023a969cc4ee09e4715367582e9b490199fe3d07b1be70122 +CT= c535485ea91723ee00c568f267b3b26315cdac7b6a44e330431ec8e0b774a5fb +TEST= 284 +KEY= 334d1fd0efaa2ee756ca77148cce1791 +IV= c535485ea91723ee00c568f267b3b26315cdac7b6a44e330431ec8e0b774a5fb +PT= a5873ee71e273c241e1869184211c45ba34922c449a5aff6bf9232654f4d70cd +CT= a5a476def35b9c2e0b73b7a9a1af8b8290f6ceef46566db8a9aa20083d153d95 +TEST= 285 +KEY= a3bbd13fa9fc435fff60571cb1db2a04 +IV= a5a476def35b9c2e0b73b7a9a1af8b8290f6ceef46566db8a9aa20083d153d95 +PT= c60a5b14be5a105171d96b4a272dd906fb2fea1f7aff7ddda63b9eb0eb78d5ae +CT= 1f3e84632bc6f11cb338fb2201cc37e9fc2f39f67e7c1ef496cb37fb0ef28992 +TEST= 286 +KEY= 5f94e8c9d7805dab69ab60e7bf29a396 +IV= 1f3e84632bc6f11cb338fb2201cc37e9fc2f39f67e7c1ef496cb37fb0ef28992 +PT= d3ac5d4ac312dd331e76a42250ff43b29919550a9ddecac775c1ce0ae555aa19 +CT= 918cbdc6e117a14653ed35af081caa680af3067c0cbace88349f731d376e5e06 +TEST= 287 +KEY= 5567eeb5db3a93235d3413fa8847fd90 +IV= 918cbdc6e117a14653ed35af081caa680af3067c0cbace88349f731d376e5e06 +PT= 462e43d92caebcf9324e681b51b99fa7163e4e953b5618c5b34eb3d8bc69e756 +CT= 5e069e5466e515b222681e30e28a804b489ab6826ed2f5afe8f8e01b53ea4a2c +TEST= 288 +KEY= 1dfd5837b5e8668cb5ccf3e1dbadb7bc +IV= 5e069e5466e515b222681e30e28a804b489ab6826ed2f5afe8f8e01b53ea4a2c +PT= 303264a4057c530587570727a6401db37b779f331c76b5fbd4d2163b3e29b87c +CT= 7d0d699a2c99dc9a73ce7a8870f75640ef090e5cc96b486f714feebd31b4a420 +TEST= 289 +KEY= f2f4566b7c832ee3c4831d5cea19139c +IV= 7d0d699a2c99dc9a73ce7a8870f75640ef090e5cc96b486f714feebd31b4a420 +PT= e50b243701bb01d59fa02f2dc5ab82de4b484b339b1848797f63aba468a3fd4d +CT= b351f01b873ea081e1e7adac696c356ce8ccc463eda17598d1874dc28b0587e9 +TEST= 290 +KEY= 1a38920891225b7b1504509e611c9475 +IV= b351f01b873ea081e1e7adac696c356ce8ccc463eda17598d1874dc28b0587e9 +PT= 4b3e565b183cb1633c762ac586b5319542438a9aa6dab6df40ac4909ef5b3005 +CT= 68b1658ec12275fc2f389bf5f99daf23342db5af2e90f0df9a0f5c6182751c51 +TEST= 291 +KEY= 2e1527a7bfb2aba48f0b0cffe3698824 +IV= 68b1658ec12275fc2f389bf5f99daf23342db5af2e90f0df9a0f5c6182751c51 +PT= 1448cf0158a4f9f475862f4145ae3abb506fbd4df031db23a89b992d9d646a31 +CT= 3970fabcff37f1505fd70e7b09ba98ec9f5fc199bf6977f320b4491d496fc1e4 +TEST= 292 +KEY= b14ae63e00dbdc57afbf45e2aa0649c0 +IV= 3970fabcff37f1505fd70e7b09ba98ec9f5fc199bf6977f320b4491d496fc1e4 +PT= be7fd0909fcfba41d6664e94295c213b59c17e3e22caaba4b4fedcf16b710dba +CT= 4bb4c327221e519a2e9ec5b8d7ae79333edef47b23aa60bedb5bdb85d61f4ebb +TEST= 293 +KEY= 8f9412452371bce974e49e677c19077b +IV= 4bb4c327221e519a2e9ec5b8d7ae79333edef47b23aa60bedb5bdb85d61f4ebb +PT= 4164b0173cf8dba2d0051152ca458ef998ce0f8fc2cebeafb569a9ee23d5a3ab +CT= b47a90684d017bcfcd0ce4e038dbd4541990b410bda72dacbddfc7475748e0ff +TEST= 294 +KEY= 9604a6559ed69145c93b59202b51e784 +IV= b47a90684d017bcfcd0ce4e038dbd4541990b410bda72dacbddfc7475748e0ff +PT= 6261786d9bbba31980a2ddd8c4c7e5d6f8ed275ddd5cc4f88fc6173aa6b0f7fd +CT= 3b90e0f56d2b12e34a0958c5a4a354b9d3b91e461064672eb5e884c42f3f6c34 +TEST= 295 +KEY= 45bdb8138eb2f66b7cd3dde4046e8bb0 +IV= 3b90e0f56d2b12e34a0958c5a4a354b9d3b91e461064672eb5e884c42f3f6c34 +PT= e6f8d9565224a6964d3a72155223575d00c69a1817138a385a046ee8eb842817 +CT= 04daa7b04795980a1f076678897c756d9ee3e7dfeb217a7f9dd622a146eeda0a +TEST= 296 +KEY= db5e5fcc65938c14e105ff45428051ba +IV= 04daa7b04795980a1f076678897c756d9ee3e7dfeb217a7f9dd622a146eeda0a +PT= 40419ac9ed8bee774c1ac86c0b08311241228162a76719952e21f7cb547ce19b +CT= 061d89fd50f2354bdc4c7819fcd0aad2139aa47ff498acd3a78fe22eac500c96 +TEST= 297 +KEY= c8c4fbb3910b20c7468a1d6beed05d2c +IV= 061d89fd50f2354bdc4c7819fcd0aad2139aa47ff498acd3a78fe22eac500c96 +PT= 9792a98813f784362b5fe8c7f303455f25e61868502c088ba94bcd74d1d8a911 +CT= 36ff26677ff9e28b57db59a86fda1f48e3b0f869607eec0a10ced3edaa0e2075 +TEST= 298 +KEY= 2b7403daf175cccd5644ce8644de7d59 +IV= 36ff26677ff9e28b57db59a86fda1f48e3b0f869607eec0a10ced3edaa0e2075 +PT= 112c3da6cbc9b20aba92895c270ef453efe84cac2c07ef539cf06c4c47a69d55 +CT= ffd78b64ae007baa5bed09d666b1f4f49f47dca827a4f163267bd2d30297df5b +TEST= 299 +KEY= b433df72d6d13dae703f1c554649a202 +IV= ffd78b64ae007baa5bed09d666b1f4f49f47dca827a4f163267bd2d30297df5b +PT= d174fb01b93e33ec7bf41bc939108ac52494bfb44ca17b4c223667ba18113497 +CT= cbb265d44dbf5179381212f1dd853057245166ebd64cc174a3524ec12d066793 +TEST= 300 +KEY= 9062b999009dfcdad36d52946b4fc591 +IV= cbb265d44dbf5179381212f1dd853057245166ebd64cc174a3524ec12d066793 +PT= f4b06075d66705fdd0a30469b3e77db01b45ea41568a07d060c06adeb5e6c5db +CT= 16de136c17d319cae246fb0111d150a0a925ec00b75e530ae76c271cad6417c0 +TEST= 301 +KEY= 39475599b7c3afd034017588c62bd251 +IV= 16de136c17d319cae246fb0111d150a0a925ec00b75e530ae76c271cad6417c0 +PT= 5681a9a33288cf5dc2c9c8e56c33e6c16a5daf9d0c33ddc27ae0720136537658 +CT= 23ce0687db44120c55b6c54b69a034231415e59203a25b34f18e8763c312e0ed +TEST= 302 +KEY= 2d52b00bb461f4e4c58ff2eb053932bc +IV= 23ce0687db44120c55b6c54b69a034231415e59203a25b34f18e8763c312e0ed +PT= e4cfddfbcdc98e6bce811765966b50502ab14f9d1ec886e87ffaf899ccc62534 +CT= 471efe2afa0df71cb349897a0f8bd86b26b5923caccf04eed32be74f962b0a90 +TEST= 303 +KEY= 0be7223718aef00a16a415a49312382c +IV= 471efe2afa0df71cb349897a0f8bd86b26b5923caccf04eed32be74f962b0a90 +PT= 9963c4163e06957678aafe8b5a115dc8089455f08e0c63c51f4729fc0add64ca +CT= ade6fc9e1a8431182dffcdb04be265577beb168c340e3d87746b05273110c3aa +TEST= 304 +KEY= 700c34bb2ca0cd8d62cf1083a202fb86 +IV= ade6fc9e1a8431182dffcdb04be265577beb168c340e3d87746b05273110c3aa +PT= 9c692af905de6a86829ec6d6f948a98cb36aee5504dce1ff2d3079e1c09a170e +CT= d023bc36c8dcd58f39365e27a1ddbfa6c8016877c817987c9989a9fa706c47bc +TEST= 305 +KEY= b80d5ccce4b755f1fb46b979d26ebc3a +IV= d023bc36c8dcd58f39365e27a1ddbfa6c8016877c817987c9989a9fa706c47bc +PT= 0ec71d03a373a3d2a68ae92a45b3ecd7e6f3b91a39283e4ad8649527303077d8 +CT= d237f0fd8a62f6d19361efecc1642eb71b816eaac998f0e68757a6b34b7bfbef +TEST= 306 +KEY= a38c32662d2fa5177c111fca991547d5 +IV= d237f0fd8a62f6d19361efecc1642eb71b816eaac998f0e68757a6b34b7bfbef +PT= e539594cff99a7b682d56fbfd0882453ba3808c208a44ff61cc39e4db04a2e2e +CT= 85b94e4c60432df13861d191c4e45f9ad38153f80c19c19f66f9505a5179d220 +TEST= 307 +KEY= 700d619e213664881ae84f90c86c95f5 +IV= 85b94e4c60432df13861d191c4e45f9ad38153f80c19c19f66f9505a5179d220 +PT= 7cf1e3e18507de4ee29ecfcaf3469cc1b25c5ecfb166cc1f98be92756059557f +CT= d0ae9057a358e141cafa2e98b1e5682a9004460ea31572a9ada86f726ddd533d +TEST= 308 +KEY= e009279082231621b74020e2a5b1c6c8 +IV= d0ae9057a358e141cafa2e98b1e5682a9004460ea31572a9ada86f726ddd533d +PT= 9b6e31a125749196df14ffaaef53f5008aa5dbe2f02df520290e306c62802773 +CT= 615267d46241390edd9cf4953016ff5358f8c171acfdacf2e6de41aba4133f8c +TEST= 309 +KEY= b8f1e6e12edebad3519e614901a2f944 +IV= 615267d46241390edd9cf4953016ff5358f8c171acfdacf2e6de41aba4133f8c +PT= cbb1865c52cd9282c1b96029ea974be39215b0338b003efedbd77d700e0bbd3c +CT= b5d21b3c8551ce8b2efc8a7ee6024ecb5d83d25ab1a150b424204b18e7a734cd +TEST= 310 +KEY= e57234bb9f7fea6775be2a51e605cd89 +IV= b5d21b3c8551ce8b2efc8a7ee6024ecb5d83d25ab1a150b424204b18e7a734cd +PT= be05eb0d93619fe6435781a38fe29e41f823dfa422beb0582b3e58d3efb86ce3 +CT= dc2dbe8dbd95dec5d1fdcc5a5b5252b0ff94f4ee25dfba52c41882d56a2699d3 +TEST= 311 +KEY= 1ae6c055baa05035b1a6a8848c23545a +IV= dc2dbe8dbd95dec5d1fdcc5a5b5252b0ff94f4ee25dfba52c41882d56a2699d3 +PT= a8e27a47e24cb0cec28232402919a98f01215f2f0ddf0e11a0558ee34f8ec24f +CT= bc2b8e4b1294d23f4f890f293ae9684ab38b4644749bbb8991eeadd3e6ef61f1 +TEST= 312 +KEY= a96d8611ce3bebbc204805576acc35ab +IV= bc2b8e4b1294d23f4f890f293ae9684ab38b4644749bbb8991eeadd3e6ef61f1 +PT= 91d38f9600c73e1bb6edc62e9eceafc720f7f17575f6bd8b7e0a0365246f9fa7 +CT= a1f291811dac4fa91dc45bf905e5640dc8812ef86dea4cdcd565c79af7b7887d +TEST= 313 +KEY= 61eca8e9a3d1a760f52dc2cd9d7bbdd6 +IV= a1f291811dac4fa91dc45bf905e5640dc8812ef86dea4cdcd565c79af7b7887d +PT= 5898bdaf31065311f02e64fdc7113c073c76110b86d32972524d0e69bbc4865d +CT= aa3257440d4720c712f12c9f2dd55778d203d20e1aaa118c9b87f7624cce20bf +TEST= 314 +KEY= b3ef7ae7b97bb6ec6eaa35afd1b59d69 +IV= aa3257440d4720c712f12c9f2dd55778d203d20e1aaa118c9b87f7624cce20bf +PT= 4a8ff06af1c4cdc97fd22d30164424e9874154da6e90b0ee261f3ef642c4cfbb +CT= 5de8071eaf03fd7038c9a5219a497a809db3736f535dda010e4e66a5ab5479cd +TEST= 315 +KEY= 2e5c0988ea266ced60e4530a7ae1e4a4 +IV= 5de8071eaf03fd7038c9a5219a497a809db3736f535dda010e4e66a5ab5479cd +PT= e651c69d0a80d06654dc0d2f6716fb2ccbbb757530ae74ee8d9c306ad2a7c1ef +CT= 3e447f91b6de4c98d5da1fb61d87886a3c96fd8d31ca3677331549c1a03bd284 +TEST= 316 +KEY= 12caf405dbec5a9a53f11acbdada3620 +IV= 3e447f91b6de4c98d5da1fb61d87886a3c96fd8d31ca3677331549c1a03bd284 +PT= 4862a328b7ace5cacec23c552767e3f2ff82893427177a6461376c5d2d3612c5 +CT= 5daa9fc6664931b79cbe4f6a7a8d45ae73bedc05b95d9f92082678eb890863b7 +TEST= 317 +KEY= 6174280062b1c5085bd7622053d25597 +IV= 5daa9fc6664931b79cbe4f6a7a8d45ae73bedc05b95d9f92082678eb890863b7 +PT= 59ea3c33f9d9a0a3d23770e2b2601dd3b307c40bcb3ee13bd93a0e0e10b685be +CT= 3112d020b131e2b9896fcfc30607ea380dba3714f9cc3a4c3779dcdff6d1c965 +TEST= 318 +KEY= 6cce1f149b7dff446caebeffa5039cf2 +IV= 3112d020b131e2b9896fcfc30607ea380dba3714f9cc3a4c3779dcdff6d1c965 +PT= 5b2f8f83404da8a382a085e8d8abe76d0a369e545516a42cf14bc10d2cb2d53b +CT= 51b71ec31c67e0083a5679f050843838391111aafed98f78f06757e15c2b0676 +TEST= 319 +KEY= 55df0ebe65a4703c9cc9e91ef9289a84 +IV= 51b71ec31c67e0083a5679f050843838391111aafed98f78f06757e15c2b0676 +PT= ebf68e2a9dddd799267b4a3319de26737a6afeaa5958d70600b858c80d472d22 +CT= 3e92d88f1020649cd5064ad64c690619e3bb1e06add4efd18b55c3dc8b8abb0b +TEST= 320 +KEY= b66410b8c8709fed179c2ac272a2218f +IV= 3e92d88f1020649cd5064ad64c690619e3bb1e06add4efd18b55c3dc8b8abb0b +PT= 84076b0f20098c9c334f59da97c1241b5ffa0665e5c7b2ea80ed6d067223640d +CT= 94a8b91328446680e9672c408456d067e652cd1c169ff0035cdfe108446ee4a9 +TEST= 321 +KEY= 5036dda4deef6fee4b43cbca36ccc526 +IV= 94a8b91328446680e9672c408456d067e652cd1c169ff0035cdfe108446ee4a9 +PT= bc94c78be7f11fdbb2ce9c09862fc896108138bc9f4e1c146b9b5ededc7f916c +CT= b5655723fd360d5239151d254d1ba3b5b240b7b3065adece9a09fd11ad7c0769 +TEST= 322 +KEY= e2766a17d8b5b120d14a36db9bb0c24f +IV= b5655723fd360d5239151d254d1ba3b5b240b7b3065adece9a09fd11ad7c0769 +PT= c730766fe2a33b64bd74c6afd399d4e93ffd2e378da560757e8aa0dee50a1328 +CT= 08b14ffc8befddaf1b32f3f6ccdfacfc8eb201554cf39f322e4f3b13fa76152e +TEST= 323 +KEY= 6cc46b4294462e12ff050dc861c6d761 +IV= 08b14ffc8befddaf1b32f3f6ccdfacfc8eb201554cf39f322e4f3b13fa76152e +PT= 4b3cd03f341e1d2c9b6b30eaa67fbfd247053736b7077956421912080945afff +CT= 61d85dcf9149937ddcc8c801c755c90570c8a55a8bd7a82569a6e13d09a88dea +TEST= 324 +KEY= 1c0cce181f91863796a3ecf5686e5a8b +IV= 61d85dcf9149937ddcc8c801c755c90570c8a55a8bd7a82569a6e13d09a88dea +PT= 512f480533e8c94136a2bcdd5fb81da37b455d508f1565327025f3d7b9f99f6e +CT= 866efd381c85012f23568ddf5a8377ec21a1892bea16c66a3d6466050eb98c5f +TEST= 325 +KEY= 3dad4733f587405dabc78af066d7d6d4 +IV= 866efd381c85012f23568ddf5a8377ec21a1892bea16c66a3d6466050eb98c5f +PT= 624df4122f26d5b69dc25ac754fb55c9e9158f9eebc018bf089b9fc25676c2ae +CT= 2efa49d6b9fa7baaa99ebbc7b268490bab4e84c1630a242f36a76f65676cbcbf +TEST= 326 +KEY= 96e3c3f2968d64729d60e59501bb6a6b +IV= 2efa49d6b9fa7baaa99ebbc7b268490bab4e84c1630a242f36a76f65676cbcbf +PT= 9ffcacea4ece025cca5ddf08b81cd2509a0e6f8caf694bba9c874e1ab2f7bfd1 +CT= 0292eba24b39ba5d18c5e3fdc2e9dbe56886b55d641ce34fd983afc0327e1a9b +TEST= 327 +KEY= fe6576aff291873d44e34a5533c570f0 +IV= 0292eba24b39ba5d18c5e3fdc2e9dbe56886b55d641ce34fd983afc0327e1a9b +PT= d2b9490914e3577cf0a1dd9731984b0e733fd3afe187a7f61bb7cc5b7027e005 +CT= 199490074c3c90984172f741e237a9a0e138c20fa4cc06e585cc9ed0b6fb6e4b +TEST= 328 +KEY= 1f5db4a0565d81d8c12fd485853e1ebb +IV= 199490074c3c90984172f741e237a9a0e138c20fa4cc06e585cc9ed0b6fb6e4b +PT= c1b9bca8a91e40ac08eece20d06464e1969bcbdb93e29568f9d16bc8f56ffdbd +CT= b96066777dc5061a393bce18da9ad0b6c2277ce47350c3f380075ae44b26f783 +TEST= 329 +KEY= dd7ac844250d422b41288e61ce18e938 +IV= b96066777dc5061a393bce18da9ad0b6c2277ce47350c3f380075ae44b26f783 +PT= 9599d2e9a5f735bebe6f72340b7b73502eced31187d33eec873b400b4a1ba8e8 +CT= 9657bbbb63158d9640a840fd60912413363fd66724a085e85edb26547942b199 +TEST= 330 +KEY= eb451e2301adc7c31ff3a835b75a58a1 +IV= 9657bbbb63158d9640a840fd60912413363fd66724a085e85edb26547942b199 +PT= e95fc1f8baba7f94d8d8facc5d282d3d367dc47c38da4c086f49d4e1bb506048 +CT= d242077e262d373b7dce79562d03a6ad3121f218c5deddd9a144874062844ced +TEST= 331 +KEY= da64ec3bc4731a1abeb72f75d5de144c +IV= d242077e262d373b7dce79562d03a6ad3121f218c5deddd9a144874062844ced +PT= 528051e688fbf19374731c4d765d79e256d2c16b4dc6b332c29a488a8938faf5 +CT= 8dd58456048cd7f1d4c22d999feb6e3694e4785426d72836230781525ef0fa88 +TEST= 332 +KEY= 4e80946fe2a4322c9db0ae278b2eeec4 +IV= 8dd58456048cd7f1d4c22d999feb6e3694e4785426d72836230781525ef0fa88 +PT= 2725a481f3dd9b2dd7217c35d6093f8d8e981fce85f8e41d388bcc7f228a4bff +CT= 6fad99104e6495a141ff852ca82e168ab22935237ef4ed19721c49b5e51b736c +TEST= 333 +KEY= fca9a14c9c50df35eface7926e359da8 +IV= 6fad99104e6495a141ff852ca82e168ab22935237ef4ed19721c49b5e51b736c +PT= 62a04ee365a01c25cb3e11bf986129402781270ab9875c582256a2b9bc083b1d +CT= a68dcd362d75ed82ff94aeaf7b7768de2885dde2e9758b9c138e59f8d1fd3ff0 +TEST= 334 +KEY= d42c7cae752554a9fc22be6abfc8a258 +IV= a68dcd362d75ed82ff94aeaf7b7768de2885dde2e9758b9c138e59f8d1fd3ff0 +PT= 75c60b2b0d9e4b6243c42c349868418e26317783a2b406c1baff4a4c6f8465ea +CT= 6a0ad312c6940ae43be247ee70c7beef19e7485d5fa1ea0ccd859c72fbac6da0 +TEST= 335 +KEY= cdcb34f32a84bea531a722184464cff8 +IV= 6a0ad312c6940ae43be247ee70c7beef19e7485d5fa1ea0ccd859c72fbac6da0 +PT= ebc75f9032a73d8b8c4f6e5842ac27ca795f327bf43b256b41d432cfad209d51 +CT= 1377836758ef53e55ada9e3a791418bca91a335571071e2339d8209829b29127 +TEST= 336 +KEY= 64d107a65b83a086087f02806dd65edf +IV= 1377836758ef53e55ada9e3a791418bca91a335571071e2339d8209829b29127 +PT= dac63136dfa2b345322d1df1f7fb26640cda95f302c0afd319ab3c1e8d92fd83 +CT= 7346aff23bc4cf7c40302f35bb9abe660e00ecd474b3275d04f955d071266c5b +TEST= 337 +KEY= 6ad1eb722f3087db0c8657501cf03284 +IV= 7346aff23bc4cf7c40302f35bb9abe660e00ecd474b3275d04f955d071266c5b +PT= 4d249e76d27fdbc8f3393ebdacd18a86c653155816ae3a6ead4b3e2313c9994c +CT= 485c9f441dda2168b144ed326e10cea8150f5635a0ae6d35e4f57cec33aa9c9e +TEST= 338 +KEY= 7fdebd478f9eeaeee8732bbc2f5aae1a +IV= 485c9f441dda2168b144ed326e10cea8150f5635a0ae6d35e4f57cec33aa9c9e +PT= 7f20b783b5ada6feed2256d60ac06bd441adbabd592245d133bce610fe000405 +CT= 7ff0652040cd5f9ce027da64805f2bda2b67d621641fa2b4634c65017ea73128 +TEST= 339 +KEY= 54b96b66eb81485a8b3f4ebd51fd9f32 +IV= 7ff0652040cd5f9ce027da64805f2bda2b67d621641fa2b4634c65017ea73128 +PT= 52aa8b8f0ffb2aac826e307b99e582438e33430fbfcdd1b7523c6b1954bbeb6a +CT= fba594dad973e73bd911381af7ec6233c35dbe364b2034dff4820c760da8049e +TEST= 340 +KEY= 97e4d550a0a17c857fbd42cb5c559bac +IV= fba594dad973e73bd911381af7ec6233c35dbe364b2034dff4820c760da8049e +PT= a146c627ab8906f0d1b5859b6b477762cde8c05f7e5d31c1f22d59b0ed98be15 +CT= 7f8f702c5dd949a79281d1baf4041a4a1fc22aaa7b8751bbc31ce8b81c2611bc +TEST= 341 +KEY= 8826fffadb262d3ebca1aa7340738a10 +IV= 7f8f702c5dd949a79281d1baf4041a4a1fc22aaa7b8751bbc31ce8b81c2611bc +PT= 48eea8e1257bd9acb4ab31972674727ea73695fb09e0cb63105686e96fce33ab +CT= a6005fb5564669a2a7fd14fd93f311fb39fcda8d63baa697a42fb92b029bb49a +TEST= 342 +KEY= b1da2577b89c8ba9188e135842e83e8a +IV= a6005fb5564669a2a7fd14fd93f311fb39fcda8d63baa697a42fb92b029bb49a +PT= 603ce950141518404c77e24d06fd990f9a792f8311e86089723a2686d945fbc7 +CT= 9f72405f79482386d4ea320a2b6a54c7082204b7734f6ceca2133f6fac5261e8 +TEST= 343 +KEY= b9f821c0cbd3e745ba9d2c37eeba5f62 +IV= 9f72405f79482386d4ea320a2b6a54c7082204b7734f6ceca2133f6fac5261e8 +PT= 368832010422336f19b9e8992df76ca75158c6d79369cf8824195c3918e1215a +CT= 824cc75478d68a2002644c17f1651bdf9504be307ecebbc0613c7d727e08e8e7 +TEST= 344 +KEY= 2cfc9ff0b51d5c85dba1514590b2b785 +IV= 824cc75478d68a2002644c17f1651bdf9504be307ecebbc0613c7d727e08e8e7 +PT= 82a3db24679fc5c7041f89c642f8a4557b461ce3618a5acf4be33e3c4d3a0e65 +CT= f6c7b22e56f9deafc0efdcf4bef63f4e3d09f7810dfc000ebe73d6a5991d2a52 +TEST= 345 +KEY= 11f56871b8e15c8b65d287e009af9dd7 +IV= f6c7b22e56f9deafc0efdcf4bef63f4e3d09f7810dfc000ebe73d6a5991d2a52 +PT= f415210678f5f2bf497f51b72852f6e86f5876ad17694c4f47e3f52ae77c0a4f +CT= 2a5066a342a583fe6d99edf12f065d3728b2c12d0c23a39dd86c71de18fd3c16 +TEST= 346 +KEY= 3947a95cb4c2ff16bdbef63e1152a1c1 +IV= 2a5066a342a583fe6d99edf12f065d3728b2c12d0c23a39dd86c71de18fd3c16 +PT= 34820a471f8db7d2c41a18acd04b8c7b5e6c7089c1aad73907a3dbe6713f4513 +CT= 0ec4503f861b90325736b0fd389238bda8dde435a02875ec39cff1034a70f543 +TEST= 347 +KEY= 919a4d6914ea8afa8471073d5b225482 +IV= 0ec4503f861b90325736b0fd389238bda8dde435a02875ec39cff1034a70f543 +PT= 84ec6e404dd835b9589ef4c8a13bef7721ef7c0acdc6c07ffa9f8d3a17241bab +CT= ab10ae624e787d49e14883c325227c161c20f0b6497859112458fddd514dae35 +TEST= 348 +KEY= 8dbabddf5d92d3eba029fae00a6ffab7 +IV= ab10ae624e787d49e14883c325227c161c20f0b6497859112458fddd514dae35 +PT= 3b15cd247893c51a3a6f435911f628f5c90d1cdafdb8996982a8929c67e54560 +CT= 92e2cfcc36b5bd00039f89c3bf3873c779d53c4214a5103a3baa9ab8aa7864d5 +TEST= 349 +KEY= f46f819d4937c3d19b836058a0179e62 +IV= 92e2cfcc36b5bd00039f89c3bf3873c779d53c4214a5103a3baa9ab8aa7864d5 +PT= 867023d7bd0e93f04a74fe1a6a4dce1ccb66e331c3bd283358ad0a7b6d83a0a7 +CT= 54b8e78540405e43bfbb77b8e4fed2e21e9ae6ccba63af335e182b577c8ed2fa +TEST= 350 +KEY= eaf56751f3546ce2c59b4b0fdc994c98 +IV= 54b8e78540405e43bfbb77b8e4fed2e21e9ae6ccba63af335e182b577c8ed2fa +PT= a14e47d53a53bf465fe5574e96de609ef33979da3266c6f987cd3a131c09556f +CT= 3d73467bba0cfb2f140fdf0186fe56a5898dd89b06b2dc91f8b48de28ce661f2 +TEST= 351 +KEY= 6378bfcaf5e6b0733d2fc6ed507f2d6a +IV= 3d73467bba0cfb2f140fdf0186fe56a5898dd89b06b2dc91f8b48de28ce661f2 +PT= 32393b21455c1f72bfb1b17f2a2b0be7fefa76364882283231b3a5ecf6d89486 +CT= 8f372f4cafc74e8d987cb27871a2f13adba9ff8314cd914de05c135763e33fd0 +TEST= 352 +KEY= b8d14049e12b213edd73d5ba339c12ba +IV= 8f372f4cafc74e8d987cb27871a2f13adba9ff8314cd914de05c135763e33fd0 +PT= 735f303868f186e2f0833d2dbfe9523a9d5121dbd00f2c65652722b282f1dc2c +CT= a41108be1fddcb841b7cca7e8b890c2263abf79fd45f181f8157948c790dd4e3 +TEST= 353 +KEY= db7ab7d6357439215c2441364a91c659 +IV= a41108be1fddcb841b7cca7e8b890c2263abf79fd45f181f8157948c790dd4e3 +PT= fd551da026f5ea3fe40ec16d92304b49b78b3202fd1d44be0128a175b0125615 +CT= aecba89003f4340025d4513422306c35d7daa983f5fedcb61878b2ac80b50b10 +TEST= 354 +KEY= 0ca01e55c08ae597445cf39aca24cd49 +IV= aecba89003f4340025d4513422306c35d7daa983f5fedcb61878b2ac80b50b10 +PT= 0df1f30044e8bdc922712383a522ab66fabf78f8baf9606a91c207afb1804825 +CT= 09c926befedad84b3babde3f427af8ed8c98fc9d442e0f2d4dd806c2ef1024ff +TEST= 355 +KEY= 8038e2c884a4eaba0984f5582534e9b6 +IV= 09c926befedad84b3babde3f427af8ed8c98fc9d442e0f2d4dd806c2ef1024ff +PT= 83debab4e944901ee3522ffd93877dab5cc492d16d0fead814950aab02263a6f +CT= 05cdcb0b29caeadfb9e7fc28ad9af4cbe8ab4402cfd9e2776f2595a771f2dfe5 +TEST= 356 +KEY= 6893a6ca4b7d08cd66a160ff54c63653 +IV= 05cdcb0b29caeadfb9e7fc28ad9af4cbe8ab4402cfd9e2776f2595a771f2dfe5 +PT= 74bdd0abc4251047703957cd3878b2220c2b2bc27f36ea3c8baf594f4792bbc5 +CT= 7fddbbaa7a2ca262ab91e133674e695136f20707390f1e58f403dea4a6f2aa2a +TEST= 357 +KEY= 5e61a1cd7272169592a2be5bf2349c79 +IV= 7fddbbaa7a2ca262ab91e133674e695136f20707390f1e58f403dea4a6f2aa2a +PT= 411424130922fe4917872395b73cc8eb2e291db1678ff8ffd7191014cd0c2bbe +CT= f80bd7b02ba32e63f4a13ced6c87ac82265d07416b489b43411a68919fd98e07 +TEST= 358 +KEY= 783ca68c193a8dd6d3b8d6ca6ded127e +IV= f80bd7b02ba32e63f4a13ced6c87ac82265d07416b489b43411a68919fd98e07 +PT= 2f8f5c7c60fe863f4560708e3b00105cacbcb2c3954e1c914d95f0da4fcbf33e +CT= 6dbf58d5b555198674063f2b3813ee817dff9968db79771a50e4445a44e2acf5 +TEST= 359 +KEY= 05c33fe4c243facc835c9290290fbe8b +IV= 6dbf58d5b555198674063f2b3813ee817dff9968db79771a50e4445a44e2acf5 +PT= 7440f34df9aa5626ca0487310dd1ab49afbde653761cefc7cdcb8b8961f52047 +CT= c3dd0aa8aa4dffcd491fb200079a5201014ec66758ae7cf3311a9d93f01bc652 +TEST= 360 +KEY= 048df9839aed863fb2460f03d91478d9 +IV= c3dd0aa8aa4dffcd491fb200079a5201014ec66758ae7cf3311a9d93f01bc652 +PT= ade00ab241a3a508098a3cb7e35b55becca0c303f00f824311e5db956bf9f682 +CT= 25f545a3eebf11eea63e2689ffa43d7010283824ff0041dd5df616597bc723fc +TEST= 361 +KEY= 14a5c1a765edc7e2efb0195aa2d35b25 +IV= 25f545a3eebf11eea63e2689ffa43d7010283824ff0041dd5df616597bc723fc +PT= 7de110bbed856289830d18c2d92c6596884e9c1ce1a308ad716b8a35a0e675d1 +CT= 432403390c84a2e06b5445899b34f409c27cfcdb2716e1c44ad4e34a232d705c +TEST= 362 +KEY= d6d93d7c42fb2626a564fa1081fe2b79 +IV= 432403390c84a2e06b5445899b34f409c27cfcdb2716e1c44ad4e34a232d705c +PT= 51741d58e7abe41ac1b8642ce92582ecd939aee602a425324f59d32a4703f7ac +CT= e5923da01adf85fe0ae22022caddd8f2e96c88c5be69099f362094acfa803d03 +TEST= 363 +KEY= 3fb5b5b9fc922fb993446ebc7b7e167a +IV= e5923da01adf85fe0ae22022caddd8f2e96c88c5be69099f362094acfa803d03 +PT= 3316f8bc8d93662b9389fe9770509b91b4979d118f485d9732f3e15f7f195fa6 +CT= 143c6dd15164c3d9b4784ac93e5f10fc32ae09da0c98f1a37ba9f3da7dbd3153 +TEST= 364 +KEY= 0d1bbc63f00ade1ae8ed9d6606c32729 +IV= 143c6dd15164c3d9b4784ac93e5f10fc32ae09da0c98f1a37ba9f3da7dbd3153 +PT= fd82a71bd6c5b72bf3cf9e29f1c61e1d74dc029d9ba3e071f8ef9137bb5da88a +CT= ee604d39250503f0660de42d9471163fd51e0dbbbfca2d5887ae515f41dd5ae3 +TEST= 365 +KEY= d805b1d84fc0f3426f43cc39471e7dca +IV= ee604d39250503f0660de42d9471163fd51e0dbbbfca2d5887ae515f41dd5ae3 +PT= f59ef3b258c2e8750dcd68fed4c855109944308a040735d3f13908fb4eb8e75a +CT= 8383958925a80e8c05c2780365be60315b17eb87654f6ba6270ff2275d12a755 +TEST= 366 +KEY= 83125a5f2a8f98e4484c3e1e1a0cda9f +IV= 8383958925a80e8c05c2780365be60315b17eb87654f6ba6270ff2275d12a755 +PT= b25b6bd2c02d740060a55bc69d0d0f619e5a8627ae5157542837a753f322695d +CT= bb36f941aba0965ea6ccd5d99cfdd5fd1b92b56b1ad3e250c3dc2c7b1c6c8b57 +TEST= 367 +KEY= 9880ef34305c7ab48b901265066051c8 +IV= bb36f941aba0965ea6ccd5d99cfdd5fd1b92b56b1ad3e250c3dc2c7b1c6c8b57 +PT= 8ebef71df7e25c37f68da90b09ebb7aab80b6e5b66f2bf94ea74af29a18aa321 +CT= c2f188136ef04f9130aba45587b3c2b411e6affd70ff7233b09f2a755b09c090 +TEST= 368 +KEY= 896640c940a308873b0f38105d699158 +IV= c2f188136ef04f9130aba45587b3c2b411e6affd70ff7233b09f2a755b09c090 +PT= cce92d4d068d93d211dca2328581a974a7b270a7a599a9f9734bbaa090f194d5 +CT= 14e65edc5ff6a4ed31027e4660f04f8d6e2b5b8a93b2ca23965a3e9739771d3f +TEST= 369 +KEY= e74d1b43d311c2a4ad550687641e8c67 +IV= 14e65edc5ff6a4ed31027e4660f04f8d6e2b5b8a93b2ca23965a3e9739771d3f +PT= 279ec2610d8e95330b9e5070689bc8b759d38594d9328b0edae9d77c9cc2a8a7 +CT= 2b6363f6d9422b3d868a861eb5857d891958c924eb04b52b11937f67652373fe +TEST= 370 +KEY= fe15d2673815778fbcc679e0013dff99 +IV= 2b6363f6d9422b3d868a861eb5857d891958c924eb04b52b11937f67652373fe +PT= 2e1b466ef8be54177a03e5d9101fb5c2e3f7ff889b20a73a35dd2c2ec7989a5e +CT= cecbf7e11185857b56eda3c576e9cdb18295b42b4e125290105b717d1c8b9ba2 +TEST= 371 +KEY= 7c80664c7607251fac9d089d1db6643b +IV= cecbf7e11185857b56eda3c576e9cdb18295b42b4e125290105b717d1c8b9ba2 +PT= 15aa92a74e3d8c7a8ed741d3631b337349bd72ff3d81a814938ab4d4edb0d07d +CT= f30bf40bc674d1fc05b888e384e118cff58af3bb6e7a74c98799dba9823491b5 +TEST= 372 +KEY= 890a95f7187d51d62b04d3349f82f58e +IV= f30bf40bc674d1fc05b888e384e118cff58af3bb6e7a74c98799dba9823491b5 +PT= 032e1fb5a0730712951a1632f7586ece1a68e307259b44f14befc8725e7f1c1d +CT= 6a3ad8ef4af139a5be6ea5a2b4ce782cfb76e160c1a84723c06641aa117914d2 +TEST= 373 +KEY= 727c7497d9d516f5eb62929e8efbe15c +IV= 6a3ad8ef4af139a5be6ea5a2b4ce782cfb76e160c1a84723c06641aa117914d2 +PT= 49fa4dc834dc94fc69fb372707f9ec63c86421e46b36436b88890b1db284ff0d +CT= 6b4ae2395c96949c896a5dbdbd0e44688f58eab7a3fadf8684a7ecd591e6d125 +TEST= 374 +KEY= fd249e207a2fc9736fc57e4b1f1d3079 +IV= 6b4ae2395c96949c896a5dbdbd0e44688f58eab7a3fadf8684a7ecd591e6d125 +PT= 374699abeab11bff4ff40758cf1e512021b22fe965a6de1dd88e58deb517aa7d +CT= 604122bb9813372c6a32f35eb2c23aae67cfff7a79b5b1714d4df9ca36b2f1d3 +TEST= 375 +KEY= 9aeb615a039a78022288878129afc1aa +IV= 604122bb9813372c6a32f35eb2c23aae67cfff7a79b5b1714d4df9ca36b2f1d3 +PT= 307ab32686733df4e77d01ceef59c8369a18778deade857348b1e03fdb9508b7 +CT= 7e2defee4bcbe2ae3248fb5e462fdfd6f2456a7a67a6bcf169e969156aa2de29 +TEST= 376 +KEY= 68ae0b20643cc4f34b61ee94430d1f83 +IV= 7e2defee4bcbe2ae3248fb5e462fdfd6f2456a7a67a6bcf169e969156aa2de29 +PT= 88972c92d3392489821f5d4747099c6758c28b7b383e8ffc04d508f77c975ee0 +CT= ad762319a754797246857586167c9afbd7d862ad974359d0efd0cb57832e7347 +TEST= 377 +KEY= bf76698df37f9d23a4b125c3c0236cc4 +IV= ad762319a754797246857586167c9afbd7d862ad974359d0efd0cb57832e7347 +PT= 74e212513dd8ffacf2a2cf97a2d06f457585e131f840e2b44b5ded2cd70b6456 +CT= 413ade21349c09459ddaa9332b495d54c21e07159825947dbb27459836c74205 +TEST= 378 +KEY= 7d686e986b5a095e1f96605bf6e42ec1 +IV= 413ade21349c09459ddaa9332b495d54c21e07159825947dbb27459836c74205 +PT= dbc7db33fd4ec3057efd90f6f7aaa16d9aa0a31510fc1a9164e0b71f3dc249de +CT= 780178b1a772425c3ae906e058900f9e41bd6b180a83a79d585b5d1a653993f5 +TEST= 379 +KEY= 3cd5058061d9aec347cd3d4193ddbd34 +IV= 780178b1a772425c3ae906e058900f9e41bd6b180a83a79d585b5d1a653993f5 +PT= e83b8fea02891bb76a3767bc0e5b56bb67cd4c320a4501efe276368168b5b0d5 +CT= 749a5ac7586247cc4558be31f2400d278805dc16023ec4274a3260a635a3bdc2 +TEST= 380 +KEY= b4d0d99663e76ae40dff5de7a67e00f6 +IV= 749a5ac7586247cc4558be31f2400d278805dc16023ec4274a3260a635a3bdc2 +PT= 633def653a33be02455396c617e588e0440fa378653d723eb1b0ab38c3ae360d +CT= 2f310b2b5a721e21b21aa9ce7a4eb7b8471b24aa303aae021bbf3eb827adeee5 +TEST= 381 +KEY= f3cbfd3c53ddc4e61640635f81d3ee13 +IV= 2f310b2b5a721e21b21aa9ce7a4eb7b8471b24aa303aae021bbf3eb827adeee5 +PT= de4e2f208bee2cdaafdeeb7fb546323c2c4fd53f105dbec3f4b7c8dc6c549062 +CT= ac95aa24f58f187c0fed29f4909899fd2f921dcaef7755ad77ad6781880f58eb +TEST= 382 +KEY= dc59e0f6bcaa914b61ed04de09dcb6f8 +IV= ac95aa24f58f187c0fed29f4909899fd2f921dcaef7755ad77ad6781880f58eb +PT= 5f8234b66708e635af02fffbc2f2782a8305f5cdc679302e99e9ab479ed963c5 +CT= 984966e3ca26650b1fb7ec416bf50b868aede420edc5075c598b2b7cbcde7877 +TEST= 383 +KEY= 56b404d6516f961738662fa2b502ce8f +IV= 984966e3ca26650b1fb7ec416bf50b868aede420edc5075c598b2b7cbcde7877 +PT= c74d76b2cff2b94c45443fc0c0be762bd9a24a906b2324b61a883c1839c96b6c +CT= eaf7e97e27ea4b4f75c6c7821a8d282a7f83adc6a170d4e479f45bc6edee8390 +TEST= 384 +KEY= 2937a910f01f42f34192746458ec4d1f +IV= eaf7e97e27ea4b4f75c6c7821a8d282a7f83adc6a170d4e479f45bc6edee8390 +PT= 5457ebeb4f15026a9809b8628706fcb0069fb8f54fbd2d56dbf588a06f8df2bf +CT= 61e100dc89b5e55143b8f1bee81791706441015f4971e897b1f8b8bbfa3b6821 +TEST= 385 +KEY= 4d76a84fb96eaa64f06accdfa2d7253e +IV= 61e100dc89b5e55143b8f1bee81791706441015f4971e897b1f8b8bbfa3b6821 +PT= 51add270403a60e412cf70c05d042e7e93f0a0ff446daf5143328ea149fad547 +CT= e94172b58bfc2a4e0435a22cc66702cf49228ff425d7d95757b4b6ea0fab7ee8 +TEST= 386 +KEY= 045427bb9cb97333a7de7a35ad7c5bd6 +IV= e94172b58bfc2a4e0435a22cc66702cf49228ff425d7d95757b4b6ea0fab7ee8 +PT= 944ea865e652470c70b7b9839dd8e17da97871c2a6b9a0d20b23bbe273e589e7 +CT= dc88389cdec31da0f9de26e25fec4e13d952f4135f9fe049ba64b156565067c0 +TEST= 387 +KEY= dd06d3a8c326937a1dbacb63fb2c3c16 +IV= dc88389cdec31da0f9de26e25fec4e13d952f4135f9fe049ba64b156565067c0 +PT= ffa636dceef71adaa50e4ca44ffd71ced3f6ab184bad1b4dafce2fb27ffcce73 +CT= e81d001225683b60612d1f883ae975295543fb1ceca12fbcc738cd2aa3f61fff +TEST= 388 +KEY= 884528b42f87bcc6da82064958da23e9 +IV= e81d001225683b60612d1f883ae975295543fb1ceca12fbcc738cd2aa3f61fff +PT= 264c13c6087dbd79caf12e45ced3aeb0edc076d59bb66ce6046d3f50e060be56 +CT= 1bc2fd42fbeabbd44b556f754f54364b36a73bf4488f4afea35b9d89efb8c890 +TEST= 389 +KEY= bee213406708f63879d99bc0b762eb79 +IV= 1bc2fd42fbeabbd44b556f754f54364b36a73bf4488f4afea35b9d89efb8c890 +PT= 2537a2efc8199fbe5244f90ef3ed9ba96678849616a688a4da6696d1cd1d78cc +CT= 4a6c37b615448f9be5de45bfcb72a160018dc1f1cf95dfae1b54ee90da52cb8b +TEST= 390 +KEY= bf6fd2b1a89d2996628d75506d3020f2 +IV= 4a6c37b615448f9be5de45bfcb72a160018dc1f1cf95dfae1b54ee90da52cb8b +PT= 49f586314d32721d426b6e669fc280bda340eb3069af53f09ad5fa5b99d25874 +CT= a7a16ec522e08d8e4f582e256da0b9b296830047909f9a34fb95ce67761a7c08 +TEST= 391 +KEY= 29ecd2f63802b3a29918bb371b2a5cfa +IV= a7a16ec522e08d8e4f582e256da0b9b296830047909f9a34fb95ce67761a7c08 +PT= 8d2d2e79e9a3a471dbced3370b5a1d98c196044934fa5c50cf41df6e42e64d61 +CT= 91126796514f966f72c09914a21aa957bb424ec77d6d137feb0475d0bc024713 +TEST= 392 +KEY= 92ae9c31456fa0dd721ccee7a7281be9 +IV= 91126796514f966f72c09914a21aa957bb424ec77d6d137feb0475d0bc024713 +PT= 9c425cdf68d17d12fb10e4e91d1d2a0221c416e63bd1fabd55b343ef5c3d4e5a +CT= fb1b07f9c2eeacba4e93fc844535fdf2e308bc66d5d3421d606e7367a91c2898 +TEST= 393 +KEY= 71a6205790bce2c01272bd800e343371 +IV= fb1b07f9c2eeacba4e93fc844535fdf2e308bc66d5d3421d606e7367a91c2898 +PT= 2d51bbe18515e4f11849aa5dcf1b0e976c75e4727b666b7a509cf1dea29b5863 +CT= 5e70c6377db8f872e852b5b4db596492aeb64b13ef6a31956cc026b69f5c632b +TEST= 394 +KEY= df106b447fd6d3557eb29b369168505a +IV= 5e70c6377db8f872e852b5b4db596492aeb64b13ef6a31956cc026b69f5c632b +PT= dc3001f4b058fa5d20a91093cc3c761551eaf3f6a535f6f3a711fb7186d9aa65 +CT= f5837b61a9cd94313e0db9dd31a8b6f62733609eee026801722f84857938c6eb +TEST= 395 +KEY= f8230bda91d4bb540c9d1fb3e85096b1 +IV= f5837b61a9cd94313e0db9dd31a8b6f62733609eee026801722f84857938c6eb +PT= bab96bdad6c1093c840f4113900b31386845321a35cc5f70250558aabd5504ed +CT= 22020d30779a18c269f1d579abe49d3b9d68290f8e73d3a2c4bb24def39e94b6 +TEST= 396 +KEY= 654b22d51fa768f6c8263b6d1bce0207 +IV= 22020d30779a18c269f1d579abe49d3b9d68290f8e73d3a2c4bb24def39e94b6 +PT= 820f70c2678d9f2174f761c03fa762ac622f75f4d9e801145b0491d19b4a3d85 +CT= 1d06314244c12f58a72bde557b9aa337b03865a6f79807384c2a7207684c8fa6 +TEST= 397 +KEY= d5734773e83f6fce840c496a73828da1 +IV= 1d06314244c12f58a72bde557b9aa337b03865a6f79807384c2a7207684c8fa6 +PT= 3495a13227ef08b77b5afa5a7bb9c1ae84622b4d258d11f82e2e0c1708f0ee35 +CT= 747d43c88d03b2abfab7a1077cd705ecb04ecb7816e54144496315d518103dfe +TEST= 398 +KEY= 653d8c0bfeda2e8acd6f5cbf6b92b05f +IV= 747d43c88d03b2abfab7a1077cd705ecb04ecb7816e54144496315d518103dfe +PT= 47b950e3a64246d0a0d903fffd5f9e15fb89f7954f6af0cd9c3e6bd10a659f9a +CT= f3dbe886e9f895b525507f5d22d876ed99ff79e0c6d3a73080200bf3da73438f +TEST= 399 +KEY= fcc2f5eb380989ba4d4f574cb1e1f3d0 +IV= f3dbe886e9f895b525507f5d22d876ed99ff79e0c6d3a73080200bf3da73438f +PT= fb4881610ebe4528987cfefbe80eb4770633ed85e50efe443d6ff198c692b36e +CT= 71c7129c9c6ad3d9bb9c0c708eafe664605fd18d196dceaecb9fd4f588b1db3c diff --git a/flint/test/testvals/cbcme86.txt b/flint/test/testvals/cbcme86.txt new file mode 100644 index 0000000..722eabd --- /dev/null +++ b/flint/test/testvals/cbcme86.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 2a05884f8b38c19bab07e0a4fb0a0b95de91171d4174ba07add7ae2275678a0f +TEST= 1 +KEY= ab07e0a4fb0a0b95de91171d4174ba07add7ae2275678a0f +IV= 2a05884f8b38c19bab07e0a4fb0a0b95de91171d4174ba07add7ae2275678a0f +PT= a3b58161c69a8b125d0e370a10f5b4764d88a657c0e430b1b2c066a3aa13b5c8 +CT= db6e8250b11482d41ce428bdc72f75868f7a47d479632a185b56c71e7dfd9454 +TEST= 2 +KEY= b7e3c8193c257e1351eb50c93817901ff681693c089a1e5b +IV= db6e8250b11482d41ce428bdc72f75868f7a47d479632a185b56c71e7dfd9454 +PT= d869072d0a29dcb1d269a81f85c4c19c01c8ee84189fa5eb83c21cef20f1f8c3 +CT= 6802592169fedb3fc33af63e2567f34ee77361d8b22be6a48c69391db45554ca +TEST= 3 +KEY= 74d93e2719428d5db69831118a3c76bb7ae85021bccf4a91 +IV= 6802592169fedb3fc33af63e2567f34ee77361d8b22be6a48c69391db45554ca +PT= 6fc24c001e88b93200a5f2aab37bb37e79d98526404148d394718130978f7931 +CT= da4387d1dcfb1b30bb001a4164657ce451bb1a8f1e9b644c9ee1ca0f023a8c06 +TEST= 4 +KEY= cfd924667d27f1b9e7232b9e94a712f7e4099a2ebef5c697 +IV= da4387d1dcfb1b30bb001a4164657ce451bb1a8f1e9b644c9ee1ca0f023a8c06 +PT= 77f3514f9d5f627db66ba17d735b1385ba6e807fd7bd0030596a836cd617c2b1 +CT= b93d17bbdabe27e39547e11b653fd0f72d585875b2cee58e87c29d717af13e52 +TEST= 5 +KEY= 5a9ec57d1818214eca7b73eb2669f77963cb075fc404f8c5 +IV= b93d17bbdabe27e39547e11b653fd0f72d585875b2cee58e87c29d717af13e52 +PT= 5b1a97222d0b42e0e6850b37285531aca217373c5f701ae2ca736f025a0c026f +CT= 0b9118dde37aad96fdf82756376551121c427b27a432d461788bd56e0e23b4b7 +TEST= 6 +KEY= a766e22b2f7d705cd63908cc825b23181b40d231ca274c72 +IV= 0b9118dde37aad96fdf82756376551121c427b27a432d461788bd56e0e23b4b7 +PT= fd0470b77d55335b9a7893b35dba73f66dd198154521b0c561e50e09846c7f73 +CT= 398c0c03eb939cc99c1811e9293915799d0c04a0a75ff6b74444a2e99d1f1f2a +TEST= 7 +KEY= 3b7ef3c2064465254b350c6c2504d5af5f0470d857385358 +IV= 398c0c03eb939cc99c1811e9293915799d0c04a0a75ff6b74444a2e99d1f1f2a +PT= 42d160bf89f0add0e6aaa3073e7f75587a15aa14e2ed4af0e45e905c8d2c28bb +CT= ee88023049b4942f96f137ce818c9464c3cea172c4ed720a99cc5d58de502176 +TEST= 8 +KEY= ad8fc40c87c8f14188fbad1ee1e9a7a5c6c82d808968722e +IV= ee88023049b4942f96f137ce818c9464c3cea172c4ed720a99cc5d58de502176 +PT= 83b7a983d0c68aac6454aeff368cd19255c0447e1c484320d894c0dca0b2e74d +CT= 7feb6c8f20f162559e58bb06259ec5fb283802d198958a42eb80e5af61b21115 +TEST= 9 +KEY= 33d77f0aa25634baa0c3afcf797c2de72d48c82fe8da633b +IV= 7feb6c8f20f162559e58bb06259ec5fb283802d198958a42eb80e5af61b21115 +PT= aa746c396f9f6ec043043a4500f3380ac5a08879b6b89c9ccf7558b8b2d62cb3 +CT= 9b31583d7d7c0a5241d4fd86dba5ac41495cc6751e7c707c5e468cc3dd84667b +TEST= 10 +KEY= 7203828c79f398fbe99f69ba67005d9b730e44ec355e0540 +IV= 9b31583d7d7c0a5241d4fd86dba5ac41495cc6751e7c707c5e468cc3dd84667b +PT= cabca9eb5eebe905bfcb9daf08efbebbd542f6f1f0ead87b95c0e528ff0a69a2 +CT= 85f6bdfa3bc390ed19994bcb21d799b49c4a7e68229634b66a23022c3bd2c281 +TEST= 11 +KEY= 6b9ac9475824014f75d517d24596692d192d46c00e8cc7c1 +IV= 85f6bdfa3bc390ed19994bcb21d799b49c4a7e68229634b66a23022c3bd2c281 +PT= 1315635daf78e52392833dfa91f679d3d3aa0a875d5201e7b14ccfafecb4178b +CT= 701a5d533860c0c9bfc8b3ebd7812e76479be20324afd763bc219c6d4c651a87 +TEST= 12 +KEY= d4527aac8fa52f39324ef5d16139be4ea50cdaad42e9dd46 +IV= 701a5d533860c0c9bfc8b3ebd7812e76479be20324afd763bc219c6d4c651a87 +PT= f437d18c3b1047dec771cc9912340b2be558e9372d092b87b9b81c16462f0736 +CT= d605f5c79d67819f00cdcf2bb21da55aad58c9da1b76531b9c3636c8cd1e44d9 +TEST= 13 +KEY= d49fb5873db88a639f163c0b7a4fed55393aec658ff7999f +IV= d605f5c79d67819f00cdcf2bb21da55aad58c9da1b76531b9c3636c8cd1e44d9 +PT= 2fb0939d6360499393fe642c0db307796754106fc7623415b7c1cc349319f2f4 +CT= 65437bf494f68282e4c569ab475ded6a7e7ed2df531388fdd6f3705a9939bdbd +TEST= 14 +KEY= 305adc2c7ae56709e168eed4295c65a8efc99c3f16ce2422 +IV= 65437bf494f68282e4c569ab475ded6a7e7ed2df531388fdd6f3705a9939bdbd +PT= 2e9a034aa0473493bcb8181d388744a37ad47506d2196586381ab43c49b640fa +CT= 64902f7cd76b73e6537d86a30bb16ef394781598b369a9793aed3ee77da8a7e9 +TEST= 15 +KEY= 63275a8f715409fa7510fb4c9a35ccd1d524a2d86b6683cb +IV= 64902f7cd76b73e6537d86a30bb16ef394781598b369a9793aed3ee77da8a7e9 +PT= a39ada1c9749ef18e84609baeb467d84d75ac35fc8e0151968278d3df35e5152 +CT= 0e8bb1a14741be219570bf3596b4e94a6291d2b94fb88efd249b325518b6ec9c +TEST= 16 +KEY= f657e5bae7e0e0b0178129f5d58d422cf1bf908d73d06f57 +IV= 0e8bb1a14741be219570bf3596b4e94a6291d2b94fb88efd249b325518b6ec9c +PT= 500e9f19fc071197742bcbcc7639cf2b171a7e7ae659cb10d07deea2119c84b1 +CT= c1c91009e12bac6839d43d5df1d13efe9f7e25c92df73950b97aadeefafb4027 +TEST= 17 +KEY= cf83d8e71631de4e88ff0c3cf87a7b7c48c53d63892b2f70 +IV= c1c91009e12bac6839d43d5df1d13efe9f7e25c92df73950b97aadeefafb4027 +PT= 0a6e488d4a2f8bd585fdeca885b60614f4be700fd165b91eb58d1022bf094b6c +CT= 49fe41f8df31994f2243767973a85f23d3714588ed971bba181d80a8c190c6d1 +TEST= 18 +KEY= edc0ae9e6599816d5b8e49b415ed60c650d8bdcb48bbe9a1 +IV= 49fe41f8df31994f2243767973a85f23d3714588ed971bba181d80a8c190c6d1 +PT= f7605f81314b96fe45c93cebfe264ac3b9003bfcf74589278d473411723e4361 +CT= 97e0ac7e92bf9db91516e4679c3fbc78363fe29056b8ee822e14c5405e6e7593 +TEST= 19 +KEY= f8d64af9f9a63d156db1ab2443558e447ecc788b16d59c32 +IV= 97e0ac7e92bf9db91516e4679c3fbc78363fe29056b8ee822e14c5405e6e7593 +PT= bc167ca2bbc7ec1450c589d7c9042c3ab44a9ee406abc37e6068f1ce7fe8e3a9 +CT= 4ba0244900f138cbd9fde0df1e4fad3a9051aebf8cd9341f6bf1ebf15955cd28 +TEST= 20 +KEY= 212baa26e7e9902ffde0059bcf8cba5b153d937a4f80511a +IV= 4ba0244900f138cbd9fde0df1e4fad3a9051aebf8cd9341f6bf1ebf15955cd28 +PT= 61fce72112692b41d994eb6d1d27e761b9b87d952063d6223d5a36c53b778aa7 +CT= 8fff339d7ec1da1756aa6e708ae58c8cd42cffa0a892a9f58df7216e18b8d50d +TEST= 21 +KEY= 7781c4566d0c1ca329ccfa3b671e13ae98cab21457388417 +IV= 8fff339d7ec1da1756aa6e708ae58c8cd42cffa0a892a9f58df7216e18b8d50d +PT= 60bad92c2a73f63011245e751b02611cb0221f2e4aaeb6b1b2d408009b697336 +CT= cb0498a3f720965b1bac94c78810784e33892c8f22c8a6da3b967e21c3fb9067 +TEST= 22 +KEY= 6c2d5091e51c64ed1a45d6b445d6b574a35ccc3594c31470 +IV= cb0498a3f720965b1bac94c78810784e33892c8f22c8a6da3b967e21c3fb9067 +PT= b7de03f5fb87af0b9bf91d58bf2addaa28308d57e1fe8642f061aebcc07cef5c +CT= 5ee28222093c7d40481f54b654faf95683cd8b0cf05480e967bfdfecc4264fdb +TEST= 23 +KEY= 24320427b1e69dbb99885db8b582359dc4e313d950e55bab +IV= 5ee28222093c7d40481f54b654faf95683cd8b0cf05480e967bfdfecc4264fdb +PT= 487c589c2c955a1ea0df7b73b70918d7a5ff03ee287d5b615e56abb1534637cd +CT= 03b8ef78b979b05ad4b5ccb52f7471fe41212f8bca1a69bc52d856de343a7af1 +TEST= 24 +KEY= f087c8929e92ec45d8a972337f985c21963b450764df215a +IV= 03b8ef78b979b05ad4b5ccb52f7471fe41212f8bca1a69bc52d856de343a7af1 +PT= 69143603339112e66018676b2424a7159e9a75baa9b49cd13eab82aabec2460f +CT= f1f49d84a0cb82240fd11a0f5b84026e1bd9f72b2a85372195a4d9791de2e8b3 +TEST= 25 +KEY= ff56d29dc516ee2bc3708518551d6b00039f9c7e793dc9e9 +IV= f1f49d84a0cb82240fd11a0f5b84026e1bd9f72b2a85372195a4d9791de2e8b3 +PT= a94a1f66529b98ee38827b7c6ccb45d720389283364d749cdea04896ba363407 +CT= f08c1788280ea4053d9d6cc78c57758ef664c89928a63ecebb7a53f06551b8e5 +TEST= 26 +KEY= c2cbbe5a49419ba535144d817dbb55ceb8e5cf8e1c6c710c +IV= f08c1788280ea4053d9d6cc78c57758ef664c89928a63ecebb7a53f06551b8e5 +PT= 1b17f62d490d735e86f6c9616f146123b20a1d0727d4ff983ee8361811b9db91 +CT= 285e9d91eeee1e20a1475abcdf17ac8add5553bf480ba4ca6c9ad9d9710bf7d6 +TEST= 27 +KEY= 638ce4e69656372fe8411e3e35b0f104d47f16576d6786da +IV= 285e9d91eeee1e20a1475abcdf17ac8add5553bf480ba4ca6c9ad9d9710bf7d6 +PT= 2eba74902fe479cd30dac0b6da97f68ad20dc4f863bcdb6a580b0375a94570c6 +CT= f288c322e1e3c118b285ac12913c0cda54928c2de2abc682a5256b110c2bf5ac +TEST= 28 +KEY= d10948f4076a3bf5bcd39213d71b3786715a7d46614c7376 +IV= f288c322e1e3c118b285ac12913c0cda54928c2de2abc682a5256b110c2bf5ac +PT= d42489e727f8ee63d48d3591a2e86c73f8715d020922473d26e9bee155d64b27 +CT= 8c87cafaa60df64dcd13889683c4c3d63f007e4b99e7eff4ffd2e405834c58c5 +TEST= 29 +KEY= 1c1ac06284aef82383d3ec584efcd8728e889943e2002bb3 +IV= 8c87cafaa60df64dcd13889683c4c3d63f007e4b99e7eff4ffd2e405834c58c5 +PT= bec4686d48d111e02b037919c19a3a438d1e39d10453726a4b1a81c62851738c +CT= 151de018a06661f0b4ac00fac908ab818fb85906a9cf35ba067a7a9de62abafe +TEST= 30 +KEY= a8b6c0984da653a20c6bb55ee733edc888f2e3de042a914d +IV= 151de018a06661f0b4ac00fac908ab818fb85906a9cf35ba067a7a9de62abafe +PT= b4c56c1114946eabf14e7202879061bff4461e722344515e1fc5986cb82d64eb +CT= b1f9868b79de5221650cc7acd29f24dfdeef982f1cd78deb709335a28a9b6424 +TEST= 31 +KEY= cdba07349f39777dd2842d71fbe46023f861d67c8eb1f569 +IV= b1f9868b79de5221650cc7acd29f24dfdeef982f1cd78deb709335a28a9b6424 +PT= 9ba60bd18262adfc28726dff7c8002f0a062f7d1b41a4920973ccb9a791c01c0 +CT= b9c2077701b214239f1257251ccf5fdacac2943f93b1e679b2ba30568ecf56ee +TEST= 32 +KEY= 52a8501183f628a71846b94e6855865a4adbe62a007ea387 +IV= b9c2077701b214239f1257251ccf5fdacac2943f93b1e679b2ba30568ecf56ee +PT= c0f50fc8a7ab9d444b5ddba474e77ebcd29a9e02b3e2e174d4a3969d9e0ad077 +CT= 67246dc9d70a82cec85243e00520f224f9bf135a98d2dc37aa28c6d70204d920 +TEST= 33 +KEY= 9afa13f186d6da83e1f9aa14f0875a6de0f320fd027a7aa7 +IV= 67246dc9d70a82cec85243e00520f224f9bf135a98d2dc37aa28c6d70204d920 +PT= 9943a872705ff3784ba25a04a0b855d5221e6758185001560b639e5071d3be95 +CT= 662be1805e50e0781cbe6e33fefed4ed59c1c38b729caa0c177bf23f93055198 +TEST= 34 +KEY= 86447dc278280e6eb838699f821bf061f788d2c2917f2b3f +IV= 662be1805e50e0781cbe6e33fefed4ed59c1c38b729caa0c177bf23f93055198 +PT= 9c934d445d88c4155540b14df3734c26d249d35739eb1dbb5f87df668430ea46 +CT= baa1bdb6cc55ed996f582659fe2811c8d8dcf40d68e1d2fbf49d0f21b4276bdc +TEST= 35 +KEY= e91c5b9b86001fa660e49d92eafa229a0315dde3255840e3 +IV= baa1bdb6cc55ed996f582659fe2811c8d8dcf40d68e1d2fbf49d0f21b4276bdc +PT= 49ff5f5c0ab50eac45682521be90bc587462154a57000e2edd5446b910f74ded +CT= b068114c022641a16a929945a763f979cf0decdf48e5d3b803e0127bac7684c9 +TEST= 36 +KEY= 838ec2de2163e6dfafe9714da21ff12200f5cf98892ec42a +IV= b068114c022641a16a929945a763f979cf0decdf48e5d3b803e0127bac7684c9 +PT= 12ae419ce207f65327224d84b9b81e8476edfa6ab05bc7213994a530a43fefff +CT= 5577a7e49cfa374ca70b6c4f41651bf760964b2f69a7acc58dce1d6f36dcfad6 +TEST= 37 +KEY= 2485ae916006fd28cf7f3a62cbb85de78d3bd2f7bff23efc +IV= 5577a7e49cfa374ca70b6c4f41651bf760964b2f69a7acc58dce1d6f36dcfad6 +PT= 17cacb7bfbe45e614d3fe554226b4e5f65f1453961b94d92f5d2cca78d16a94c +CT= 8fead09716f88dd3889bbcfc4f35f94cf64896ae5dae968c76a40f758b6300c7 +TEST= 38 +KEY= ac1e126d2f3304643937accc9616cb6bfb9fdd8234913e3b +IV= 8fead09716f88dd3889bbcfc4f35f94cf64896ae5dae968c76a40f758b6300c7 +PT= 527c8e54d8bc4ff7ad333187ade7bb1e1a9e641eb821614725bb59509958b635 +CT= cef06018e35fa22620543e522bb8ede60dec0fd73d808ab9a5d33f73ce3d394d +TEST= 39 +KEY= 8c4a2c3f048be98234dba31bab9641d25e4ce2f1faac0776 +IV= cef06018e35fa22620543e522bb8ede60dec0fd73d808ab9a5d33f73ce3d394d +PT= 08d0ba561c78b6cb86f1e4be7217bb62a9f13be51c062d75c1672f6f9427c6fb +CT= 7b0dbb534cd12582e0db5e1b757c398cd1369c105b6e2777bbaf8ed98419dc5f +TEST= 40 +KEY= 6c91722471f7d00ee5ed3f0bf0f866a5e5e36c287eb5db29 +IV= 7b0dbb534cd12582e0db5e1b757c398cd1369c105b6e2777bbaf8ed98419dc5f +PT= 3d5ef28d24e7249acec7a7579f5290277f5ab6b7f145934ead2d8184be4d0edc +CT= d6fed62e934f5beb09f426118bddb194e097a29a372ce5c39c0b888610be297b +TEST= 41 +KEY= 65655435fa2a619a057a9d91c7d4836679e8e4ae6e0bf252 +IV= d6fed62e934f5beb09f426118bddb194e097a29a372ce5c39c0b888610be297b +PT= 01a90d5518ceeddb811735937c3e74daaff739d4c120e2c25798e9fc9c0c8962 +CT= 0c443df71332174a2af9645d3a439cf0506af9dd0c8e0cfeb1cfbee0ed9085bc +TEST= 42 +KEY= 4f9c3068c069fd6a5510644ccb5a8f98c8275a4e839b77ee +IV= 0c443df71332174a2af9645d3a439cf0506af9dd0c8e0cfeb1cfbee0ed9085bc +PT= 019c9e7ebef32c653d4dd812bd8bd126350d10665aadf7ce7e9218c3963275f6 +CT= 3c1fc7eedb8c304c568556af63097f20e310bb763083025638a0db28f705bde4 +TEST= 43 +KEY= 191966c7a360824ab600df3afbd98dcef0878166749eca0a +IV= 3c1fc7eedb8c304c568556af63097f20e310bb763083025638a0db28f705bde4 +PT= 2e7d6be93984c145c330cdf8601a02b251476a201b79ba47ea9b9882602dc353 +CT= 69f2b2ea031c1ad97209ef6945f618aec672300e3ff0cc5779c54be7ed92574b +TEST= 44 +KEY= 6b1089aee6969ae47072ef34c42941998942ca81990c9d41 +IV= 69f2b2ea031c1ad97209ef6945f618aec672300e3ff0cc5779c54be7ed92574b +PT= 12a32e51e316b0890d78615c62219b68107edc9d87e04423a874ca345ec594a3 +CT= f62bf17533722ab86d4f63c6efec195d1966aca4e79935e313ec5a625b8e02a8 +TEST= 45 +KEY= 065fea68097a83b96914439023b0747a9aae90e3c2829fe9 +IV= f62bf17533722ab86d4f63c6efec195d1966aca4e79935e313ec5a625b8e02a8 +PT= 1dd55bc0eadd6a8e3df600feab456a9eb0efeb88f6a5a7a0fdba1562f5706fc6 +CT= f170dc18c3162e6cd41fcfb819f4d6400bc0d05a6ec69f80c8ba5cf42a71c079 +TEST= 46 +KEY= d24025d0108e55f962d493ca4d76ebfa5214cc17e8f35f90 +IV= f170dc18c3162e6cd41fcfb819f4d6400bc0d05a6ec69f80c8ba5cf42a71c079 +PT= 9108f2cc05579416e987e46d99114a9c686e31c918c2a0e01628378ceff7a257 +CT= 729941b00de0591c7992cfa8e01607e376fd9b4cb9ba3e0030f091d4171126a0 +TEST= 47 +KEY= abd2ea78f098521a14290886f4ccd5fa62e45dc3ffe27930 +IV= 729941b00de0591c7992cfa8e01607e376fd9b4cb9ba3e0030f091d4171126a0 +PT= 08fee857b9d79c8b579df7c86e9a9955c53ed51d002c9928a9a4fc7b78435326 +CT= 7ec79c50e898cfcd3a1167ef7c3df59daebf42080a106c325c11714754f62802 +TEST= 48 +KEY= 91c38d978ca5a787ba964a8efedcb9c83ef52c84ab145132 +IV= 7ec79c50e898cfcd3a1167ef7c3df59daebf42080a106c325c11714754f62802 +PT= 193247f460b055bc6df33456c136b6365e391b873877fecdcd42a9a92378588a +CT= 85c0f28ec5b92a1ad37ea8c1290585415d41c087b8198ca4b43b0a4542504f5d +TEST= 49 +KEY= 42bd2556a5a022c6e7d78a0946c5356c8ace26c1e9441e6f +IV= 85c0f28ec5b92a1ad37ea8c1290585415d41c087b8198ca4b43b0a4542504f5d +PT= 4c0cacd9fd82563d12bbc03f67f7d6220d97678d36933e885802ed8f4e342881 +CT= 7f5bb21ee48d5f292a70fb9723da3d1dee6d5d37a6f468400be255dc655dc8f1 +TEST= 50 +KEY= 68cddec1867a1fdb09bad73ee0315d2c812c731d8c19d69e +IV= 7f5bb21ee48d5f292a70fb9723da3d1dee6d5d37a6f468400be255dc655dc8f1 +PT= e0c78d947a72cf226cc3cda70dad7bd5848d8750025943d9397ce51136c00821 +CT= f8eb3207ce0314682b751e8a5b0c7616819a7af77913bf0ef9ab1cb12d44e068 +TEST= 51 +KEY= 43b8c04bdd7669cd8820adc99922e22278876faca15d36f6 +IV= f8eb3207ce0314682b751e8a5b0c7616819a7af77913bf0ef9ab1cb12d44e068 +PT= ce62a8aab369fe3c93177893eb71f473161d743de1920715864045ed1da1531a +CT= 3b3ced923d1c3071b330ab1a3e3c982bfb20c7961c4cdb5809a037777a07cc47 +TEST= 52 +KEY= f0886b51e34af1e673006a5f856e397a712758dbdb5afab1 +IV= 3b3ced923d1c3071b330ab1a3e3c982bfb20c7961c4cdb5809a037777a07cc47 +PT= 4643313d4094ace97ccfb86a4cba9f25865baca8f9dfd68ac7d30290840b360a +CT= 167a4339fd90c07d56fb346be506223b50248c11cc3b5268fad0c347e05ee586 +TEST= 53 +KEY= a6735f3a064cd3dd2324e64e49556b128bf79b9c3b041f37 +IV= 167a4339fd90c07d56fb346be506223b50248c11cc3b5268fad0c347e05ee586 +PT= 6b5c855da0368ed45df48ad496f090a4e7945528a6e91d8f3da3c921af352621 +CT= bfdb5f12c953d07038cf0801076f6dc4d8eef9dfcf4d5da593b7d1619d65033a +TEST= 54 +KEY= 9ebc573b0123be19fbca1f91861836b718404afda6611c0d +IV= bfdb5f12c953d07038cf0801076f6dc4d8eef9dfcf4d5da593b7d1619d65033a +PT= 951074a499487d29749e48f28c1a9f1359e1995034b66b9887102fe725dcd4f7 +CT= 59e6449661620773ad5db873cc4a21948896e767075d3b09cee78905600ff862 +TEST= 55 +KEY= 33e1ef48cd699f8d735cf8f681450dbed6a7c3f8c66ee46f +IV= 59e6449661620773ad5db873cc4a21948896e767075d3b09cee78905600ff862 +PT= 68cfa7a9745b7ac23a1a9116a15aa536e87a7d4679c817de06d7fcd87f2f7c94 +CT= a93a4b0e04c8c9acc095006020fcddd486488f12933bdf03c2866cfe83c2ac70 +TEST= 56 +KEY= f374ef28ed954259f51477e4127ed2bd1421af0645ac481f +IV= a93a4b0e04c8c9acc095006020fcddd486488f12933bdf03c2866cfe83c2ac70 +PT= 691eb3bef9b0d1f7d4085584cd2c1c66426bf5f6f8ab65232d394c96ffba0bff +CT= e8377069d83c216ffa0f25ccdc1f0c66a3aa98a5ea588346b539c8d45975454b +TEST= 57 +KEY= 097bcae4318a4e3f56beef41f82651fba11867d21cd90d54 +IV= e8377069d83c216ffa0f25ccdc1f0c66a3aa98a5ea588346b539c8d45975454b +PT= ddbd2e46b7a97f488295f0599703bd34dc3a08a8c70f12880e8538f2a9bec2a7 +CT= 88d2e1d26ddcd854d675fd295e08c00156c8c5d26cc85f0dd6276ddc8f6cc52e +TEST= 58 +KEY= df0e37cd6f828e3e00762a9394ee0ef6773f0a0e93b5c87a +IV= 88d2e1d26ddcd854d675fd295e08c00156c8c5d26cc85f0dd6276ddc8f6cc52e +PT= 7c7a72fa8c5560b15eee79343a4f773e11989079be35e870a610a8313d20f82a +CT= af887cf6e0851cbe874b8278b03505c9893224964576f1d593ce58b59da6e45d +TEST= 59 +KEY= 5845b5b5dfb78bf789440e05d198ff23e4f152bb0e132c27 +IV= af887cf6e0851cbe874b8278b03505c9893224964576f1d593ce58b59da6e45d +PT= e0a91e50081c8feedd2497264c280e52dd749e32341c476c37d2d078cdc20108 +CT= f80f552a5c643e580b8f7f26ce1329ff487db94ef4cb5dd1e88971cb290eb5f5 +TEST= 60 +KEY= 53caca9311a4a208c139b74b2553a2f20c782370271d99d2 +IV= f80f552a5c643e580b8f7f26ce1329ff487db94ef4cb5dd1e88971cb290eb5f5 +PT= 34f9ab92e33ddebf03a7157e4d1663344c2186e8c4f29efe45b3f7c1ffca7ad4 +CT= 8abb57b33fe3de08b4b2d0a71aacf214bf33eff691aae2a37593f89875e37d20 +TEST= 61 +KEY= e7781a340b08501c7e0a58bdb4f9405179ebdbe852fee4f2 +IV= 8abb57b33fe3de08b4b2d0a71aacf214bf33eff691aae2a37593f89875e37d20 +PT= 713243b9772cc1b965d08a7d854279bc46100328ebe0bb928ebead6189bffd36 +CT= 9836af511c1424a409373c0a8c80a7cfeae9e69d9844e7a7baeb9e084411cf47 +TEST= 62 +KEY= ee4f263e8788f7d394e3be202cbda7f6c30045e016ef2bb5 +IV= 9836af511c1424a409373c0a8c80a7cfeae9e69d9844e7a7baeb9e084411cf47 +PT= e47df1052f5a659a74b0ed8ecc5c05150d487d85e9c8388f29696418734dadc2 +CT= cc793acd356bddfb9e93bb52545ee90df38cbaacc9b464d375648b579a2c1daa +TEST= 63 +KEY= 70dc9d6cd3d61ede676f048ce509c325b664ceb78cc3361f +IV= cc793acd356bddfb9e93bb52545ee90df38cbaacc9b464d375648b579a2c1daa +PT= b14c91e11b9a16f78feee564a5cc2da55d8c0dfc976947b63e577fd92d72ce4b +CT= 8258f55b30c06fddf18fc7395688d1979a048508227d75e584714db85844617d +TEST= 64 +KEY= 81535a55855ecf49fd6b8184c774b6c03215830fd4875762 +IV= 8258f55b30c06fddf18fc7395688d1979a048508227d75e584714db85844617d +PT= b490af89a9e30b64231d9f14e5293cb5405c118658251ad5bc573505c81c6423 +CT= d46a59ac4c48794391942e597c5a56fcca0e799809ff83e8d3ab4b217622f704 +TEST= 65 +KEY= 10c7740cf90499b53765f81cce8b3528e1bec82ea2a5a066 +IV= d46a59ac4c48794391942e597c5a56fcca0e799809ff83e8d3ab4b217622f704 +PT= 28ad03c96afb18d8533210d82e8901dde6d8eb790ed29608b101a5a3d0a82163 +CT= a968dc0f36864f85d480ac00a4f75357674fe615fbfd2a3e2b04bc5caedcf381 +TEST= 66 +KEY= c447d80c5df3cae2502a1e0935761f16caba74720c7953e7 +IV= a968dc0f36864f85d480ac00a4f75357674fe615fbfd2a3e2b04bc5caedcf381 +PT= dc0b8857a3f4deb255c8254003694488e5ee0d92e524e676708d2bfe3c14884c +CT= 2db4abab3aee46687fb3835d4653432ffd9e539f0f8790b6d9c8ee800d200d06 +TEST= 67 +KEY= bbf45b511ba089cdadb44d963af18fa013729af201595ee1 +IV= 2db4abab3aee46687fb3835d4653432ffd9e539f0f8790b6d9c8ee800d200d06 +PT= 0f88f00e76d0cf1b76af18659253ede915e549529283c344ca64fc6696279926 +CT= c85ff5462b7d0235a847429e45291aea29ac09b0bd8c6514cfcc2bc6eca604af +TEST= 68 +KEY= 13b319cf5e89932784184426877deab4dcbeb134edff5a4e +IV= c85ff5462b7d0235a847429e45291aea29ac09b0bd8c6514cfcc2bc6eca604af +PT= 30e11699d6f16d9ae7d407913e5d001e711f05ffdc0def0a345fa98c0b248f7b +CT= 5406d82e15384a277f981f402fce3c8aff08c931401974f07c0a0de92ef54741 +TEST= 69 +KEY= 6c2b068f7147afad7b108d17c7649e44a0b4bcddc30a1d0f +IV= 5406d82e15384a277f981f402fce3c8aff08c931401974f07c0a0de92ef54741 +PT= 0445c0ed1f8d75ea234e40824990cacbb19d3c8462e9f316612c57a4625028ac +CT= 74c57102dc82ba1d3dd836f594b86eeeab811d39295d70a18ce744341a028bfa +TEST= 70 +KEY= 51f3307ae5ffc143d091902eee39eee52c53f8e9d90896f5 +IV= 74c57102dc82ba1d3dd836f594b86eeeab811d39295d70a18ce744341a028bfa +PT= 9fc67f2065fe21c5d7b20907189e8ac841142b4dc6a25412c9905683cd2bd2ab +CT= 48ebb85dd925d08d10277d1ab5abed5b05d738486054dd519731a838203b5e49 +TEST= 71 +KEY= 41d44d6050542c18d546a8668e6d33b4bb6250d1f933c8bc +IV= 48ebb85dd925d08d10277d1ab5abed5b05d738486054dd519731a838203b5e49 +PT= 935432d98fbbc5f783a531da7064cfbf2fae5b93dc2c36a93a758baf91ff7846 +CT= d0d3185e2f156e96e6bdc6fb377a78de9da397434573b898479c5e762dc3e6b6 +TEST= 72 +KEY= a7698b9b672e54c648e53f25cb1e8b2cfcfe0ea7d4f02e0a +IV= d0d3185e2f156e96e6bdc6fb377a78de9da397434573b898479c5e762dc3e6b6 +PT= a18ce60ce0d4c83228a1c07f56530e440137f0e80969514c3d94cb27ba271c43 +CT= ed7f6d84524d645a0258d2d5515bc04fd89aa92d0ae4c7b8a2d04016a69b3c41 +TEST= 73 +KEY= a531594e36759489907f9608c1fa4c945e2e4eb1726b124b +IV= ed7f6d84524d645a0258d2d5515bc04fd89aa92d0ae4c7b8a2d04016a69b3c41 +PT= b0e52320dd91ef196ed17cae745aba2cb21cf8690dd39530bdd43f4017f68932 +CT= 9edf04288c7993c3342abc83f7263328ed2ab298197cb499ec6b20230ddda23f +TEST= 74 +KEY= 911be5cdc153a7a17d552490d886f80db2456e927fb6b074 +IV= 9edf04288c7993c3342abc83f7263328ed2ab298197cb499ec6b20230ddda23f +PT= ce4599daafe43e0824c78d06f252a34dcef7ba50a1b22198ad86fba482a10514 +CT= b31d769de13958f0574ac2dd6777cd3c44c714b5bf24795c4eb0a1bb4e8fbbae +TEST= 75 +KEY= c6512710a6246a9d3992302567a28151fcf5cf2931390bda +IV= b31d769de13958f0574ac2dd6777cd3c44c714b5bf24795c4eb0a1bb4e8fbbae +PT= 951e632caee20570104c5f39e6b7b74b046900d15a00dc95711ead8f76347c77 +CT= 5b71cad56ee1fc61e0828af95e402ccad86790cd9da59ddddbaf11dd726842a8 +TEST= 76 +KEY= 26d3ade9f8644657e1f5a0e8fa071c8c275adef443514972 +IV= 5b71cad56ee1fc61e0828af95e402ccad86790cd9da59ddddbaf11dd726842a8 +PT= acbaadc9b5539215890aaac280dd104f87dc5a748fb2402d0eca72006064d0ef +CT= 1b02387f84b27ad19e63bffba314218c20d24fdbe3d5c058289d7943d03e4422 +TEST= 77 +KEY= b8b012125b7067dbc127ef3319d2dcd40fc7a7b7936f0d50 +IV= 1b02387f84b27ad19e63bffba314218c20d24fdbe3d5c058289d7943d03e4422 +PT= 57fe2ad6bc763b2129053a1297af2317841cab00c99feab23e0cb7c46235384e +CT= 0a282fe2b00b20bde510fd81289be3d50bcc84bd72832bd56863287ece5e4a3a +TEST= 78 +KEY= 5da0ef9373eb840ecaeb6b8e6b51f70167a48fc95d31476a +IV= 0a282fe2b00b20bde510fd81289be3d50bcc84bd72832bd56863287ece5e4a3a +PT= 87c2a3bc66a437cf201b7e566b2e8f9669b31d8c4fee60901df687182db9c59a +CT= 5bc55ba73f34209a0be6527bd70f625547ad464284520c868cb2e62df74a8dc0 +TEST= 79 +KEY= 5646bde8a4e4e65b8d462dccef03fb87eb1669e4aa7bcaaa +IV= 5bc55ba73f34209a0be6527bd70f625547ad464284520c868cb2e62df74a8dc0 +PT= 38b45299ad3333d0bb947a738934c0fee902f3c0620f048bb1a4d83bd4139bc3 +CT= 98d7d11a7de56733c9a59a3a14f6becd2869795a282c37d3fb3dca53f44f17d7 +TEST= 80 +KEY= 9fe327d2b0125896a52f5496c72fcc54102ba3b75e34dd7d +IV= 98d7d11a7de56733c9a59a3a14f6becd2869795a282c37d3fb3dca53f44f17d7 +PT= 251f4fb8e3a64ed1d64a7bf406ef148dab6fa4ef89f599fcf71d1a62dd5a452c +CT= 33ce3bae9a7910e2bb16c034a0a8caa634b5471fa78566a88faf1d949121c0b1 +TEST= 81 +KEY= 24f5e7e610ba9230919a138960aaaafc9f84be23cf151dcc +IV= 33ce3bae9a7910e2bb16c034a0a8caa634b5471fa78566a88faf1d949121c0b1 +PT= a551a1073b34be53c82c4dd586543696da0b95cf3f9dde941b940c1acdc861b7 +CT= 1622e6a068edb880fd7ba4b329e0673baf0fc928a17b3172a1637b59e1ea8741 +TEST= 82 +KEY= d98e4355395af50b3e95daa1c1d19b8e3ee7c57a2eff9a8d +IV= 1622e6a068edb880fd7ba4b329e0673baf0fc928a17b3172a1637b59e1ea8741 +PT= b8268053da1a851243afc7d8e97cbc2b1e1dafba9ed594c93c7002668c2486f4 +CT= a2cbdd828e4455ded17b7c8bd911dc4b00547f9a5382dc260bbf521578cc1697 +TEST= 83 +KEY= 08f53fdee04b29403ec1a53b925347a83558976f56338c1a +IV= a2cbdd828e4455ded17b7c8bd911dc4b00547f9a5382dc260bbf521578cc1697 +PT= f7155665e0b28ec71a21fdf74ac65c22bfaec9fc8d27fb45a36f9c9584159abb +CT= 7df430185d23fb8b752cd74b2413eee0db9d421b0c68d45abcdbd3f5c961c526 +TEST= 84 +KEY= 7dd9e895c458c7a0e55ce7209e3b93f28983449a9f52493c +IV= 7df430185d23fb8b752cd74b2413eee0db9d421b0c68d45abcdbd3f5c961c526 +PT= 3db049256c126bdc10b48a0f660f4431a646347ef22d4373a27e1d92b86736f0 +CT= b7a22166678a3cb9a621c0dde2f4d15f2988ff51e836dbff03376abbd00c2d77 +TEST= 85 +KEY= dbf8284826ac16ffccd41871760d480d8ab42e214f5e644b +IV= b7a22166678a3cb9a621c0dde2f4d15f2988ff51e836dbff03376abbd00c2d77 +PT= e3b29f7cbe8db71a95f11a967f3f65563b3a515b03a5a0a781110fcbfae89bff +CT= 9f9e5e057be1aaa90e2c7672cf7d02a633e8085a2b193ab84bc83182bb0336fb +TEST= 86 +KEY= d5d45e3ae9d11459ff3c102b5d1472b5c17c1fa3f45d52b0 +IV= 9f9e5e057be1aaa90e2c7672cf7d02a633e8085a2b193ab84bc83182bb0336fb +PT= a40674e1025d1674a26a25a18505ff51066dbcefb2786bad3b3602f5dae52f2e +CT= d9fb0ad99dd6b0a8fa60cd9938696e3bebcff42153edaa96a8abab857808555f +TEST= 87 +KEY= 2fb493a3d1b87a6214f3e40a0ef9d82369d7b4268c5507ef +IV= d9fb0ad99dd6b0a8fa60cd9938696e3bebcff42153edaa96a8abab857808555f +PT= 425ecc89d31fcc854330777d7fa1cafe20b7cf37c8e9d1d90f6decc17302552c +CT= 48597e26faf9c2a2bdd8fe0ab516ba4f1b52bb61375e9c3a415e9587837c07d1 +TEST= 88 +KEY= 926c6da964aec02d0fa15f6b39a74419288921a10f29003e +IV= 48597e26faf9c2a2bdd8fe0ab516ba4f1b52bb61375e9c3a415e9587837c07d1 +PT= a25524a4ec3d6405f770bcc6acd93c8ea2df0c1245383cb6e5f2eef48918657e +CT= cb848740f57fb4c59b85ef5ff021c3fcf60a3b590c373a3c16241184f16dea86 +TEST= 89 +KEY= 09e982f6948f03d1f9ab643235907e253ead3025fe44eab8 +IV= cb848740f57fb4c59b85ef5ff021c3fcf60a3b590c373a3c16241184f16dea86 +PT= a07b90b8d75ec277adbcbb051432d052163fa641f37ec6c4c8c2d11b7401e397 +CT= c99b35e1c5d57d1349bd5b7ff5205b75d41fbf4f0ce41c02d494a8cac595edc7 +TEST= 90 +KEY= 4054d98961af58a42db4db7d39746227ea3998ef3bd1077f +IV= c99b35e1c5d57d1349bd5b7ff5205b75d41fbf4f0ce41c02d494a8cac595edc7 +PT= 76f46dad8fd36bc43da3ade778be188f01faeabf487df0decc22e7224595eced +CT= 561042d74c57b695ac5c1ead42600dd5400cc0c688a165cbbeff5ea2864cac38 +TEST= 91 +KEY= ec08c72423cf55716db81bbbb1d507ec54c6c64dbd9dab47 +IV= 561042d74c57b695ac5c1ead42600dd5400cc0c688a165cbbeff5ea2864cac38 +PT= b8340bd81cda43b5ffa92568c8697f851bf4ec1b403f0c59c9625fadf78e7fed +CT= 28960bdfc9604374d935d6e615e37b6dbf82beaf8c376d1923909cb55266c6d8 +TEST= 92 +KEY= 353d11c2362c2e1cd23aa5143de26af577565af8effb6d9f +IV= 28960bdfc9604374d935d6e615e37b6dbf82beaf8c376d1923909cb55266c6d8 +PT= 372de7f5a4a7dfcca3d1142a77b87131fb6707688b30cf03aaed2791c77163e4 +CT= 4fd0bd529e0831fbd216239366b3302b126d7545063e7bdb1907452b133fdbff +TEST= 93 +KEY= e72b3251509f1e37c057d0513bdc112e6e511fd3fcc4b660 +IV= 4fd0bd529e0831fbd216239366b3302b126d7545063e7bdb1907452b133fdbff +PT= 024298412dbe3ebf61b8e675a8dd78bfbe97863985b46e2a877e1b3bdd7f6af0 +CT= 1d437ca625755064e465b6218bfbe26375251b2be40dd982ea42b4ab4cce5fb4 +TEST= 94 +KEY= 034e8470db64fc54b572cb7adfd1c8ac8413ab78b00ae9d4 +IV= 1d437ca625755064e465b6218bfbe26375251b2be40dd982ea42b4ab4cce5fb4 +PT= 13c61a17219f5acb1fbed70e2b75464f9ecb2f88e00719b58a8ceb76beab6a19 +CT= 07ebdcc52c49ab7dc3e7f77f9caa938adf6187dac9c7508a67b0335dc757b1be +TEST= 95 +KEY= c0a9730f47ce6fde6a134ca016169826e3a39825775d586a +IV= 07ebdcc52c49ab7dc3e7f77f9caa938adf6187dac9c7508a67b0335dc757b1be +PT= e3cb8d0bd4f2d5c11af2aa467e9ac197880523b4a1d9caa7efff3e0251f4dab6 +CT= e21bb0147b51d944f75fbf18ed37d1740cd9a303c688381869aca9c9a9c066e2 +TEST= 96 +KEY= 37f6cc17aaf9beaa66caefa3d09ea03e8a0f31ecde9d3e88 +IV= e21bb0147b51d944f75fbf18ed37d1740cd9a303c688381869aca9c9a9c066e2 +PT= 4d5544ade585bd1e9a93a925ae574137b0f7983201169d5c7b42bb0998a6f931 +CT= 023570680c1ecdb314c75254cc54405abf4067415cb8c54e741b49005b7c34d0 +TEST= 97 +KEY= 23319e4366adfef0d98a88e28c266570fe1478ec85e10a58 +IV= 023570680c1ecdb314c75254cc54405abf4067415cb8c54e741b49005b7c34d0 +PT= 1fd29ac0194cbd0dac6a6cee43416b96ad0d7da80162d8525f8effb1e3572463 +CT= b6413cba824941b76d7445c261be46a57cfef0899ef42442c59a383095a4b76b +TEST= 98 +KEY= 4e45db810713b855a574786b12d241323b8e40dc1045bd33 +IV= b6413cba824941b76d7445c261be46a57cfef0899ef42442c59a383095a4b76b +PT= 72f84d19df070fa1248bb7bbc6361f2f8ef63f3bdd121a5dcdb8dbfee9730e07 +CT= fda33a193d2955e1a89b7795db1a7a08f0edb8b0504c74de22cf7273ea23191b +TEST= 99 +KEY= e6deac14dc09c25d5599c0db429e35ec194132affa66a428 +IV= fda33a193d2955e1a89b7795db1a7a08f0edb8b0504c74de22cf7273ea23191b +PT= c2013a7a6ec9c6b83a8ccfb8c9000cb7589c7f1265ccda376bc6fe3f985f76cb +CT= 6645ce48e0b8d8e8848fc2ab0073ae1b0689b3f56d2b5c4d03d531204cb528c9 +TEST= 100 +KEY= 62516ebfdc7a6c465310732e2fb569a11a94038fb6d38ce1 +IV= 6645ce48e0b8d8e8848fc2ab0073ae1b0689b3f56d2b5c4d03d531204cb528c9 +PT= 134a506afceaff3d642c4226bdeaf054e70435cbbb5b68fc7cdca073622346f1 +CT= eb75d39191f98563ef6966f038e7321fd384c99a6b222656193e65971068e80f +TEST= 101 +KEY= 8d38084fe49d5e598094bab444974ff703aa6618a6bb64ee +IV= eb75d39191f98563ef6966f038e7321fd384c99a6b222656193e65971068e80f +PT= adee6094bf670c480ddee65c5feea2e44b4def7c5b9c32f19cf688323c424133 +CT= e55820abe035d753bc994a3b54a56f782c09241e1ab73900a86b57db72e888d0 +TEST= 102 +KEY= 31a14274b0383121ac9d9eaa5e2076f7abc131c3d453ec3e +IV= e55820abe035d753bc994a3b54a56f782c09241e1ab73900a86b57db72e888d0 +PT= 6db218a7273a99cd0d776496b4f4340c2fcdef3c356749c55c36332cb0b6ac78 +CT= c68c94615f9bdb1bfc5b10f50ab060787d82a1929a16ee8377a24652ef684a90 +TEST= 103 +KEY= cdfa5281ba885159d11f3f38c4369874dc6377913b3ba6ae +IV= c68c94615f9bdb1bfc5b10f50ab060787d82a1929a16ee8377a24652ef684a90 +PT= 683491da75a80cd42c47f8b36c3b2a5011a86edae4c4ffb4725d610cbf2651f5 +CT= 032a0caabffefc504c79307e091db1984ce91a4afb78bfa56189c897f9641767 +TEST= 104 +KEY= 818362ffb395e0c19df625723f4e27d1bdeabf06c25fb1c9 +IV= 032a0caabffefc504c79307e091db1984ce91a4afb78bfa56189c897f9641767 +PT= bd2873f44e6627f7a60971601379a666fbc84b6ea5a302f244202ef0b1c0b133 +CT= 913908a46e33263423c91fe3f0ca2ccc78038fde6726eb6a98e9344cc103bcce +TEST= 105 +KEY= a24a7d1c435fcc0de5f5aaac5868ccbb25038b4a035c0d07 +IV= 913908a46e33263423c91fe3f0ca2ccc78038fde6726eb6a98e9344cc103bcce +PT= eb8d57c5b0012df7876d8dc995a83ecb55e3a3e3d710471ddc476d479ea7f9f3 +CT= 36492f80cf336a656e34f8d20187d2ce7a2fb5605d006e8c2057780410922393 +TEST= 106 +KEY= cc7e85ce42d81ec39fda1fcc0568a2370554f34e13ce2e94 +IV= 36492f80cf336a656e34f8d20187d2ce7a2fb5605d006e8c2057780410922393 +PT= a9e7e44811f0ba3c9af04fb401cfac35a95dfcbeb7f8965b0332c4f9cc42b8e1 +CT= cc2ff4f45ca9da6425c5363a0b3e62fe8505f05ce629ebbbda17346be66c221e +TEST= 107 +KEY= e9bbb3f449e67c3d1adfef90e341498cdf43c725f5a20c8a +IV= cc2ff4f45ca9da6425c5363a0b3e62fe8505f05ce629ebbbda17346be66c221e +PT= a3e7551cce2a881a1d41c3d86d048bd85bb5c62b56981e8853d47f1bf8a27c23 +CT= f3d6554415ecc03fdb7ee0a450db90de3b58cfccf44609c8eea3512505330658 +TEST= 108 +KEY= 32c55350193dece32187205c1707404431e09600f0910ad2 +IV= f3d6554415ecc03fdb7ee0a450db90de3b58cfccf44609c8eea3512505330658 +PT= ee275d7f990f2eaaeaf223cdd2750be2ff73c78afbdccd7438989892bbc5492d +CT= 2e0f88ba7b18ccf7345002666dee91385b07ca7664e25e159da9ec3531cbdcd9 +TEST= 109 +KEY= 0695513674d37ddb7a80ea2a73e51e51ac497a35c15ad60b +IV= 2e0f88ba7b18ccf7345002666dee91385b07ca7664e25e159da9ec3531cbdcd9 +PT= b7f251bd9532c29c90b215e2eeb61236898b70180e2f97cda29b2612827db28e +CT= e1994dc7038d38768286e9e18f75721c2273dc0e28cf3e5b2d09e52d4192fcea +TEST= 110 +KEY= 8413b8d7fba60fc758f336245b2a200a81409f1880c82ae1 +IV= e1994dc7038d38768286e9e18f75721c2273dc0e28cf3e5b2d09e52d4192fcea +PT= d35851aa0c872d16c833108ea92c19525451fccab643b89757848bfcb25f8d7a +CT= d92308c790e9a1fdbd876ea1f062c1a939066bbc802fe73d13f558c4e9b20ea1 +TEST= 111 +KEY= 3994d6760bc4ce6e61f55d98db05c73792b5c7dc697a2440 +IV= d92308c790e9a1fdbd876ea1f062c1a939066bbc802fe73d13f558c4e9b20ea1 +PT= c85cc97de700cbc1d1eff153d5428fe547aead8069331bbc6ff03aacc6705d0d +CT= 3c1047e65ad4eb416a18a1e9ef20373a720b8aefea852f47a1367c09e6e0c49f +TEST= 112 +KEY= 538c779fe4e4f95413fed7773180e8703383bbd58f9ae0df +IV= 3c1047e65ad4eb416a18a1e9ef20373a720b8aefea852f47a1367c09e6e0c49f +PT= c9a7b671f3f922132e0c37e3e7020055ae1fbae1015327a048f07dc3ed4b1b18 +CT= 27ceb68f3d88e28b2b473849d5e32de128474ccf5626c0a52233274fbaf66f67 +TEST= 113 +KEY= 78cb4fd63107d4b53bb99bb867a628d511b09c9a356c8fb8 +IV= 27ceb68f3d88e28b2b473849d5e32de128474ccf5626c0a52233274fbaf66f67 +PT= 03ebb8a32ad8c43ab2b0b16475163b6a37abecc10b4dc2e9fb7b90ab3e15dd5d +CT= 1e00ebe19e76cd052487363a54f46f22b9b5c482383d97ca6763129e96d9a8d1 +TEST= 114 +KEY= 5c4c79ec65f3bb97820c5f3a5f9bbf1f76d38e04a3b52769 +IV= 1e00ebe19e76cd052487363a54f46f22b9b5c482383d97ca6763129e96d9a8d1 +PT= 040a33d6f3b452ac2ad1e48f5586a554fd3cfd42335e8f1224af9250c7d8b1b0 +CT= b66d4c585e15536d46701aa26df8b923290c3f74e0579f7fada4b87a7577439f +TEST= 115 +KEY= 1a3c634e080b02b4ab00604ebfcc2060db77367ed6c264f6 +IV= b66d4c585e15536d46701aa26df8b923290c3f74e0579f7fada4b87a7577439f +PT= 409afcf2a7a79dd98579eb4917a864748e848a8120f0c8cb424834ec46b3e9fb +CT= a94429965cd16c3544875314da698ddda1e530fca72b1be9ecd8516c1959b5e5 +TEST= 116 +KEY= 5ebb305ad2628f690ae550b218e73b8937af6712cf9bd113 +IV= a94429965cd16c3544875314da698ddda1e530fca72b1be9ecd8516c1959b5e5 +PT= 09bb77c33f5b347917f9798742afa9cb0bfc5af616bba5254b014fcbb47e123c +CT= 117d657aab972ddb31457e0461c9273c8b8bf0dd6e384da46459f337d55727a9 +TEST= 117 +KEY= 6ffe4e5eb3aba855816ea06f76df762d53f694251accf6ba +IV= 117d657aab972ddb31457e0461c9273c8b8bf0dd6e384da46459f337d55727a9 +PT= 310b7f0b5dd8a33b316401adc5053b7a55eb774c4ec93a9a8f378eff373bd342 +CT= 826b7c2eeb0809f6792dcc7b38ae59336f00db5968d1ba07bef8c019f1caa296 +TEST= 118 +KEY= 16d382258b05f166ee6e7b361e0ecc2aed0e543ceb06542c +IV= 826b7c2eeb0809f6792dcc7b38ae59336f00db5968d1ba07bef8c019f1caa296 +PT= 14dd214048d90aafc830864d7a9213eba1774fa358ac4410e8c04bf1c8d367b0 +CT= 513607f5a56e1c159a812b724773731a83f39390c7251c70e017d187435015eb +TEST= 119 +KEY= 8c52a957cc76827c6d9de8a6d92bd05a0d1985bba85641c7 +IV= 513607f5a56e1c159a812b724773731a83f39390c7251c70e017d187435015eb +PT= c3a1b9da46d4b4c142f6b2b24bffa450be0384642f190af329b45621a6b0bdf6 +CT= b95d5ffc91b4390855139a0ba10add671117f4ef8762e8292e9b5c98eb22675c +TEST= 120 +KEY= d941335c6d7c5f1b7c8a1c495e4938732382d9234374269b +IV= b95d5ffc91b4390855139a0ba10add671117f4ef8762e8292e9b5c98eb22675c +PT= 653002983d38bf453ec26ff0fc11df6f1e33e022438d5fa9f06e1c78f4386936 +CT= a1122863a970b323b12e6abc217c5a0ab87cca64c24c5a8001d98aff6e370769 +TEST= 121 +KEY= 686f59e04c000511c4f6d62d9c0562f3225b53dc2d4321f2 +IV= a1122863a970b323b12e6abc217c5a0ab87cca64c24c5a8001d98aff6e370769 +PT= d71db8d134a69b490937f0b4409cf491ab0db9c73d74a70692ca3d8a84ad3ed1 +CT= 4f9ef01e58555dfb9825bc0b9a93167f8879009d9cf284f4e62a006b52b7aaeb +TEST= 122 +KEY= f04ae5ebd693136e4c8fd6b000f7e607c47153b77ff48b19 +IV= 4f9ef01e58555dfb9825bc0b9a93167f8879009d9cf284f4e62a006b52b7aaeb +PT= cf43643f800f8e4c089bba51233729d830047149d750620d05c38df5866b33d1 +CT= d1670ed3a692cb81ef2859fb4f4619dab027eac929407c7fc0fdd2c525957a9c +TEST= 123 +KEY= 1f62bc1099d50ab4fca83c7929b79a78048c81725a61f185 +IV= d1670ed3a692cb81ef2859fb4f4619dab027eac929407c7fc0fdd2c525957a9c +PT= 2bf9d9c336bd6b4b72e0a4c20debdedd603a114c78b3840efddc3af69d260953 +CT= 928ad1d038cbb7c695a071b54d6ba6f3c18e5aa8b4a0e57b9a27c1e79bd4ee02 +TEST= 124 +KEY= 8ac2cda5d4beac473d2666d19d177f039eab4095c1b51f87 +IV= 928ad1d038cbb7c695a071b54d6ba6f3c18e5aa8b4a0e57b9a27c1e79bd4ee02 +PT= 4e28d405382f5154b18fd710f163bdcc15a43b3f2e7c6035e812edbbad494b80 +CT= 2f6d5e8c67df98c5ef8159dd51ca0ba8565334753c5651b2a8c18d27c67e9cbc +TEST= 125 +KEY= 654394788574a7ef6b7552a4a1412eb1366acdb207cb833b +IV= 2f6d5e8c67df98c5ef8159dd51ca0ba8565334753c5651b2a8c18d27c67e9cbc +PT= 02482fa907a275da29a81f917555a7b43b60087a97e64f614e1c2809589dc9ee +CT= ece02008311237b5a48d23778178c3b59bb222052ed8305f108a6467e3f86cd6 +TEST= 126 +KEY= c1ceb70f040c645af0c770a18f991eee26e0a9d5e433efed +IV= ece02008311237b5a48d23778178c3b59bb222052ed8305f108a6467e3f86cd6 +PT= d822fd70227c86e8a43e711668cd960e3823ad043ceaf4a70aae8e30620c264c +CT= af2f791ddf4b54af2f4cc9a556ee2f96722ed14f4a7d4bd4c66b678ff286978d +TEST= 127 +KEY= ee827eaa52e24bcc82e9a1eec5e4553ae08bce5a16b57860 +IV= af2f791ddf4b54af2f4cc9a556ee2f96722ed14f4a7d4bd4c66b678ff286978d +PT= e53398d5fe90dc34c6888636de26073d90e9c5c118e6166fc686846e0d3f53f3 +CT= 22e44880f469b1370d9c54e678c754179d90af78366019775aa1bf96a0c04a18 +TEST= 128 +KEY= e31e2a4c2a251fdb1f790e96f3844c4dba2a71ccb6753278 +IV= 22e44880f469b1370d9c54e678c754179d90af78366019775aa1bf96a0c04a18 +PT= e1bac3e8e69fb2b5acdab82693016ff7bc605976efb91766da8cb9c60a57d0cc +CT= 013b4146b43e6e120b84c7c48cccbe03729fe6ed1ecf9133684a1bf54f84a046 +TEST= 129 +KEY= e89aed88a6e9a1d86de6e87bed4bdd7ed2606a39f9f1923e +IV= 013b4146b43e6e120b84c7c48cccbe03729fe6ed1ecf9133684a1bf54f84a046 +PT= fba28a66e260cb3dd1467d4baf39ad3f73d7daf161cbd5d7e7c0cceb076e3171 +CT= 98bf1f8901ff4d69aca55e73a7c923bbc0b46f5cf836be85b206b9652a65de18 +TEST= 130 +KEY= 443fb3fb01208263ad528727157d63fb6066d35cd3944c26 +IV= 98bf1f8901ff4d69aca55e73a7c923bbc0b46f5cf836be85b206b9652a65de18 +PT= 8b89eab335de3f5fd7657437167df37c81bda6bf15fbfae1f456205b9e60dbc2 +CT= d394782ef59a5e833aa55722b965af54a9797eed5dbd9245558a6aacf16db1bb +TEST= 131 +KEY= 7e9ae4d9b8452d37042bf9ca48c0f1be35ecb9f022f9fd9d +IV= d394782ef59a5e833aa55722b965af54a9797eed5dbd9245558a6aacf16db1bb +PT= 42289701a8ef6728841e6445f7b103ce61bc048388e604a06d1d80015df40c4d +CT= 8c235f7b7204547e0ef283fc663b0dd9aacb135b4eced37f24919ac49b8dd16a +TEST= 132 +KEY= 70686725de7e20eeaee0ea91060e22c1117d2334b9742cf7 +IV= 8c235f7b7204547e0ef283fc663b0dd9aacb135b4eced37f24919ac49b8dd16a +PT= 7c8686e7a5812012428f21d15d8989b6dc47e1ed723fee782497bf229fea5b15 +CT= b0411bbb67e1a2806444f4f96b3ba9bba7537785f9137e7957093485c04696ca +TEST= 133 +KEY= 142c93dcb545895509b39d14ff1d5cb8467417b17932ba3d +IV= b0411bbb67e1a2806444f4f96b3ba9bba7537785f9137e7957093485c04696ca +PT= 44906c9cb2d8ea5e7ceed5ad1d583d8d44cc5b34a7612a6fa691624585d09c03 +CT= 57aabbca797e73be8fa7f4b6872e2dc29d68417a5bec3fef64145ae0701b720a +TEST= 134 +KEY= 9b8b676a326ba49794dbdc6ea4f1635722604d510929c837 +IV= 57aabbca797e73be8fa7f4b6872e2dc29d68417a5bec3fef64145ae0701b720a +PT= f7714a4960ee75aa0684d7af745d61c7f11fdc239b02553c200770ef7e8c7fd4 +CT= 5e13a3208df7cd00a192d25afef46914b75ac85f0d30ef134cd53150b7e0e720 +TEST= 135 +KEY= 3a19b530cc9fcd8323811431a9c18c446eb57c01bec92f17 +IV= 5e13a3208df7cd00a192d25afef46914b75ac85f0d30ef134cd53150b7e0e720 +PT= b3e8f4a415ec4f521c022fa30ea3329f6e7992ad105bebe68397480518183fb1 +CT= 8b3ed38610c6dcf41a4c4441b794c397f330013ce5fc310908143a37922b8886 +TEST= 136 +KEY= 2055f1717b0b0e14d0b1150d4c3dbd4d66a146362ce2a791 +IV= 8b3ed38610c6dcf41a4c4441b794c397f330013ce5fc310908143a37922b8886 +PT= 11558031ae6798760f38f54ab4499ba517e1da8ff2112fd27ea18290b6847548 +CT= 1e37bec9363422cb8d6dbf1241d1a4f91013ab77bd9c4199f257dec706f6e814 +TEST= 137 +KEY= ad384e633adaaaedc0a2be7af1a1fcd494f698f12a144f85 +IV= 1e37bec9363422cb8d6dbf1241d1a4f91013ab77bd9c4199f257dec706f6e814 +PT= 561ee5dd1715578674e5e4ab76d47c19582fc736c48b0f724cb05459f445305c +CT= d36ff91489bd4ed0156161b96f1394ec36826c8ed8620ea8bfa9dc82fd95f879 +TEST= 138 +KEY= b8592fda55c93e01f620d2f429c3f27c2b5f4473d781b7fc +IV= d36ff91489bd4ed0156161b96f1394ec36826c8ed8620ea8bfa9dc82fd95f879 +PT= 472c70ad34ee316983c7213c46ac0d4f6f3041b017f3b602bb5905ed904dcb48 +CT= 50eb56d90f9d445ba8b8a0371390a8bba572f9a1d71d3d39edd8bd103e1a659e +TEST= 139 +KEY= 10e18fed465996ba53522b55fedecf45c687f963e99bd262 +IV= 50eb56d90f9d445ba8b8a0371390a8bba572f9a1d71d3d39edd8bd103e1a659e +PT= 86edcc43dd50933caf3d714463ae9ef02579662fefb558fed40162af35cb7817 +CT= 3ff58c31fb7695e026cc253fccb49f840ba810ce8c643a0ee501b82501da896b +TEST= 140 +KEY= 362daad28aed093e58fa3b9b72baf54b23864146e8415b09 +IV= 3ff58c31fb7695e026cc253fccb49f840ba810ce8c643a0ee501b82501da896b +PT= 831b4328b9b94bbb074cfea0fb50aaf1dda65758ccba6aae00498ace73f1f364 +CT= 5a1fae2dd0d5e1ef5a6e1d0928df5602deaad423362b3e062b9dc5a71e3f4fa0 +TEST= 141 +KEY= 6c43b7dba2325f3c8650efb84491cb4d081b84e1f67e14a9 +IV= 5a1fae2dd0d5e1ef5a6e1d0928df5602deaad423362b3e062b9dc5a71e3f4fa0 +PT= 94e516d66bb0f1aaf2012548d4c284cbd08dc1d1ecf754684c0acebc11b69fac +CT= 707b460448e28b50bf81812603b74728797ce98aeae06d92e825d5f5b3c6acb7 +TEST= 142 +KEY= d3c236fda1851814ff2c0632ae71a6dfe03e511445b8b81e +IV= 707b460448e28b50bf81812603b74728797ce98aeae06d92e825d5f5b3c6acb7 +PT= fad0e1723d4b9b7d1a9144ed1993547c481a0a958a00dfd85764faa9bb6f36c0 +CT= 1976f869e08c0fe95d65b07d29117c50a0d4b6f545c24d4040cd30903acca15d +TEST= 143 +KEY= 8ea78680889464445ff8b0c7ebb3eb9fa0f361847f741943 +IV= 1976f869e08c0fe95d65b07d29117c50a0d4b6f545c24d4040cd30903acca15d +PT= d1542a13d4f03fd524c8a4529cdbf9b6dc874ee2943cbbdb95fd207d32cb7399 +CT= 32367bbfde4e0becd204f906d73ec9d23989ae71d45f9bdd7a58b62b0b346077 +TEST= 144 +KEY= 5ca37f865faaad9666711eb63fec7042daabd7af74407934 +IV= 32367bbfde4e0becd204f906d73ec9d23989ae71d45f9bdd7a58b62b0b346077 +PT= b4f6ad0d961aedd42a89bbfe55476f79459014ba5e99b2556d438a6d02b22d44 +CT= d1b7448c984e67c8cbf09d41f68ca2e64baf341888ac1f54a36130719d9e67bc +TEST= 145 +KEY= 9753e2c7a9260f702dde2aaeb7406f1679cae7dee9de1e88 +IV= d1b7448c984e67c8cbf09d41f68ca2e64baf341888ac1f54a36130719d9e67bc +PT= 99f7c4c2ca3b0094f2ab224004161c860688dc4e267a8fda042fd615e5105509 +CT= 7d4190b2946eb9886e06c96921228907aa8d80447718318083523d37c792a2f2 +TEST= 146 +KEY= f9552bae880486778753aaeac0585e96fa98dae92e4cbc7a +IV= 7d4190b2946eb9886e06c96921228907aa8d80447718318083523d37c792a2f2 +PT= 1807676803d5714f2fb7d54457fe48bdaef009cc4f8c9f46f118fc9ddfa92d87 +CT= dde3f5592d28e315738abb94d4b85167811465bec68f0732f688efa3c1e01a00 +TEST= 147 +KEY= 8adf903a5cbcd7100647cf5406d759a40c10354aefaca67a +IV= dde3f5592d28e315738abb94d4b85167811465bec68f0732f688efa3c1e01a00 +PT= 7fc4b7f256dd305f26696f0036b8fbd2e71c397fe5445f32e6a0e3f066ee697a +CT= bbdfb288edc7a8080b1ce504e5fc8201f3d3a3e9b3e87fe627917e0cfcc86edb +TEST= 148 +KEY= 81c3753eb9405511f5946cbdb53f26422b814b461364c8a1 +IV= bbdfb288edc7a8080b1ce504e5fc8201f3d3a3e9b3e87fe627917e0cfcc86edb +PT= a4fafe4e99adc20c89a412a3d39f5ad66dae6c15d575bcda65477e3dc42d7b83 +CT= f61c6ac6be868e6384504126828ec18432d39e1d90924015b6017c6675fe9ec4 +TEST= 149 +KEY= 059334183bce9495c747f2a025ad66579d803720669a5665 +IV= f61c6ac6be868e6384504126828ec18432d39e1d90924015b6017c6675fe9ec4 +PT= d24bb3ac00805bb1caed9714f4db20dbd09e5a817a359028defb3e7584b1fc13 +CT= 1ff67b4e202c44243eaf7c19ebef83bdc28de97f49335fba3b1809a88ab0f3f9 +TEST= 150 +KEY= 3b3c4801d021172805ca1bdf6c9e39eda6983e88ec2aa59c +IV= 1ff67b4e202c44243eaf7c19ebef83bdc28de97f49335fba3b1809a88ab0f3f9 +PT= fa0004a6bd4110827ac9f984831a0acc370b9708646979bbea4af05064667a07 +CT= 25d6366a7e2bf110b1f1e590d6a7a7f6b9942e4d43cd0eeb87518badc6ed54d0 +TEST= 151 +KEY= 8acdad910686b0debc5e35922f53370621c9b5252ac7f14c +IV= 25d6366a7e2bf110b1f1e590d6a7a7f6b9942e4d43cd0eeb87518badc6ed54d0 +PT= 461d7c8b7f19994b988ae44a1dddeafdc3183a7b4a3bcb1533fbf51093cb81f6 +CT= 9e12fe9453175540df906573e631afa60fc3cb9b21728c6f271db694c6cb30f0 +TEST= 152 +KEY= 555dc8e2e0b71f78b39dfe090e21bb6906d403b1ec0cc1bc +IV= 9e12fe9453175540df906573e631afa60fc3cb9b21728c6f271db694c6cb30f0 +PT= dc22499e3c632634ff230914403d173f7e91bb5ee2d1ec562d2f22f2fa3edd08 +CT= 2e04df68d8b2b20cc87e08be9766cd2a32e49ab026eb69e9edf1205dfd7eab4a +TEST= 153 +KEY= 9d23c05c77d1d252817964b928cad280eb2523ec11726af6 +IV= 2e04df68d8b2b20cc87e08be9766cd2a32e49ab026eb69e9edf1205dfd7eab4a +PT= 75f57d6dd77e5c7da0a496e2dfc19ce84977079cce14d3f87fea8a3cf6d064d5 +CT= 07065d0e73b8fe12d1afa2228b530bf1fe821aa8407525ff7f73a78701c28459 +TEST= 154 +KEY= 4c8c627efc82d9a37ffb7e1168bff77f9456846b10b0eeaf +IV= 07065d0e73b8fe12d1afa2228b530bf1fe821aa8407525ff7f73a78701c28459 +PT= 83cf6957fa872e9e18e8d06c3705789c9c6953cc7baaa926cd2de788966e418b +CT= ccf91a17f46995335c56080a6d25ef0d5df25b1114556542adf57ed70c9e393b +TEST= 155 +KEY= 10da6a7491a736ae220925007cea923d39a3fabc1c2ed794 +IV= ccf91a17f46995335c56080a6d25ef0d5df25b1114556542adf57ed70c9e393b +PT= 3d4424be0ac40208a12b987625cd6950c9dbe853c1fe62c522380acf5d7e812d +CT= 8c07f9d40fdbce71a70db6a4cc272209c20b2b04e6c8def530573e96be9d8dc5 +TEST= 156 +KEY= b7d7dcd05d8014a7e0020e049a224cc809f4c42aa2b35a51 +IV= 8c07f9d40fdbce71a70db6a4cc272209c20b2b04e6c8def530573e96be9d8dc5 +PT= 65fecc5dee47b0200c6fa2a61cf2bc0a8cc4232433c2dad28d9d6a7b9026b34c +CT= e613ae1a363fef604b1720b0aff8f13585d7cad8a915d9cbffdf276c9b3022ad +TEST= 157 +KEY= fcc0fc60f278e59265d5c4dc33379503f62be346398378fc +IV= e613ae1a363fef604b1720b0aff8f13585d7cad8a915d9cbffdf276c9b3022ad +PT= d41fcd1f3c963d142a5357f4e8734736ca6ec681f6db7ae3b9266f9c2d7429a4 +CT= 9900e82749c1897c7d3fc111b9e20d9cfa58dcca79e1f46ddc5cc581eab3228a +TEST= 158 +KEY= 81ff3d714b9ae80e9f8d18164ad6616e2a7726c7d3305a76 +IV= 9900e82749c1897c7d3fc111b9e20d9cfa58dcca79e1f46ddc5cc581eab3228a +PT= 610002d954bcebc795fb23cd49dd8866a09371898e4a920759dc06c14d623689 +CT= aedb8f07975325da7aa16e5781d596bec679525732b4a0243b7e2d7fedc2bd53 +TEST= 159 +KEY= fb5e5326ca4f7eb059f44a417862c14a11090bb83ef2e725 +IV= aedb8f07975325da7aa16e5781d596bec679525732b4a0243b7e2d7fedc2bd53 +PT= 9834dc55cb1148e773549dc4cf3ea2a3c71b9a3da77aae9ad30bb8d3f182d46b +CT= 973230d20335c3e758c243e10cc3978697a868ce8b00375081f56fc464fcf51b +TEST= 160 +KEY= a39c10c7c68ce936ce5c228ff362f61a90fc647c5a0e123e +IV= 973230d20335c3e758c243e10cc3978697a868ce8b00375081f56fc464fcf51b +PT= 13de0c28236a8e7478b28e2afe64022d0952751eca87089c1b3f3ce844f9b5dc +CT= a18f55e36ca096c23173f35a3bfdf1ceabffa25a7562e86600370581156562bd +TEST= 161 +KEY= 92efe39dfd7118f865a380d586001e7c90cb61fd4f6b7083 +IV= a18f55e36ca096c23173f35a3bfdf1ceabffa25a7562e86600370581156562bd +PT= 6e941aeda85c5ba61adcb5457296fe47fefcc57343dddcc5a36c494932b731ba +CT= d6601b6e4c0d002237962804390046641f9a9489ca2ed4619aa2fcef8f63e3ca +TEST= 162 +KEY= a579cb99c4715e9c7a39145c4c2eca1d0a699d12c0089349 +IV= d6601b6e4c0d002237962804390046641f9a9489ca2ed4619aa2fcef8f63e3ca +PT= 0175bd6d16143e8d673dd4ab17467f9f2254d1cbb86b532143ea8720476b4463 +CT= 9d4b4043d1acd1cce7d936f2c5d68d93ddd775359c9ee64671d7df936c583a11 +TEST= 163 +KEY= 42a0fd6b01a7d30fa7ee6169d0b02c5b7bbe4281ac50a958 +IV= 9d4b4043d1acd1cce7d936f2c5d68d93ddd775359c9ee64671d7df936c583a11 +PT= 4393718562b5de99acdabace9c237517f003901587396ebfae05b715f3e3d312 +CT= 74d756fc2c7a0a4128151096f6c784e728ab82f9b2077076bb6aec24d73e4add +TEST= 164 +KEY= 6ab5edfdf76057e88f45e39062b75c2dc0d4aea57b6ee385 +IV= 74d756fc2c7a0a4128151096f6c784e728ab82f9b2077076bb6aec24d73e4add +PT= 6a2ac7b99203478a0f719f7557f684e42b320ba3ca04a6042d64a0ea86b5fa1d +CT= 27094365d12da8a3d3df581b39dceb1942c5ada850c760ac3fc0241885dbaaeb +TEST= 165 +KEY= b96ab5e6cebcbcf1cd804e3832703c81ff148abdfeb5496e +IV= 27094365d12da8a3d3df581b39dceb1942c5ada850c760ac3fc0241885dbaaeb +PT= 87a46190a99cbf12745cae2085bc14b04c74aa239818ed88c68e4d9a4368bff3 +CT= 516c89c84d809025c7d5a5f6b0cc7f88942642b72be25c8900e584a85f9bcd5b +TEST= 166 +KEY= 7ebf10107e70c37959a60c8f19926008fff10e15a12e8435 +IV= 516c89c84d809025c7d5a5f6b0cc7f88942642b72be25c8900e584a85f9bcd5b +PT= b11c6667da35f1686ef5e838c95b40817b1a679847303dc61610caf37565d6ba +CT= 1c308773ce7b4f5d1fc391057492f259a5c58e0371a9666b17b93f6fa9042898 +TEST= 167 +KEY= 617c81150ae23120fc63828c683b0663e848317a082aacad +IV= 1c308773ce7b4f5d1fc391057492f259a5c58e0371a9666b17b93f6fa9042898 +PT= 881baa5d45cd88fac88d5402d0d876311817f770e19a8a98c4436cb583de85f4 +CT= 8fc6786e074d356a1d1e9f8bcd803fff6ebee25e1fd2e46337a79ce122acfad1 +TEST= 168 +KEY= 7c621e9ec7620edf92dd60d277e9e200dfefad9b2a86567c +IV= 8fc6786e074d356a1d1e9f8bcd803fff6ebee25e1fd2e46337a79ce122acfad1 +PT= f764ba3ffcd237fdc85ecc28195521f00d0bbbf618bd889514842ea08d270ba6 +CT= 19ac984f1eafdca44c6a32a53f5d38a66f857bd103b8b221cf4599c82abbd81d +TEST= 169 +KEY= 30082c3bf83f3679fd581b037451502110aa3453003d8e61 +IV= 19ac984f1eafdca44c6a32a53f5d38a66f857bd103b8b221cf4599c82abbd81d +PT= e7343397c6d9d8949dd501a6c640989c476ab55dbf11b1abd4e90647ba0888e6 +CT= 71074aff341be24ec52d2fa61b6e3010749ab6b0edc7115b2db543209b8be949 +TEST= 170 +KEY= f525039de351066989c2adb39996417a3d1f77739bb66728 +IV= 71074aff341be24ec52d2fa61b6e3010749ab6b0edc7115b2db543209b8be949 +PT= 613c6645a082db83d31b43ba1ac7a474fdc22408d908502404c4870414f460bb +CT= 05884a242e2946be25f30d3e60907a536de96a00789fa0cfb016feebd0951955 +TEST= 171 +KEY= d0d60ea383c17c3ae42bc7b3e109e1b58d0989984b237e7d +IV= 05884a242e2946be25f30d3e60907a536de96a00789fa0cfb016feebd0951955 +PT= 6f6e7e07c99469b7134a256c6ba866eaccb6b3e785e3b017f3d3588149bf6dcb +CT= 76a63bb9074bc82e4ec38bc0515634bea93838922515053d5cef3c6f5786bb42 +TEST= 172 +KEY= 9e158563d29748844d13ff21c41ce488d1e6b5f71ca5c53f +IV= 76a63bb9074bc82e4ec38bc0515634bea93838922515053d5cef3c6f5786bb42 +PT= 22017c94e141ff3d43f48fd01e25f3504a7f738fd61b809ab7f88bfc4541de39 +CT= 3f860cd00e37d07a01b6e52bfaf0844b49d5bc681adafb0980a10dfbdd31a693 +TEST= 173 +KEY= 9fa360482867cccf04c64349dec61f815147b80cc19463ac +IV= 3f860cd00e37d07a01b6e52bfaf0844b49d5bc681adafb0980a10dfbdd31a693 +PT= 055746b112b9ba40ab356c747fe8d919788ac0370290bda5c00a09006991514d +CT= f23316faacc82eb40fe7489bf1b840e749d8a95d187a8f67d01d6178d00c16c8 +TEST= 174 +KEY= 904428d3d9df8c284d1eea14c6bc90e6815ad97411987564 +IV= f23316faacc82eb40fe7489bf1b840e749d8a95d187a8f67d01d6178d00c16c8 +PT= 78698d9f91e609cece1adf252d7ed331933743dcd070ed53661f3da42d1c2ee0 +CT= 6d0186c387c6fb0461dc3780e6be73cdae3e9b7403353d31e201674cf545b3d8 +TEST= 175 +KEY= f1981f533f61ffe5e3207160c589add7635bbe38e4ddc6bc +IV= 6d0186c387c6fb0461dc3780e6be73cdae3e9b7403353d31e201674cf545b3d8 +PT= decfcca8894d08788fee816570b6b395f437355d04c5c8256d6de27a07f162ce +CT= c7514a426be9b01dcde6bae488cc619dbf0e161f043ee314a439dccae497a1f1 +TEST= 176 +KEY= 3c7ea5b7b7ad9e785c2e677fc1b74ec3c76262f2004a674d +IV= c7514a426be9b01dcde6bae488cc619dbf0e161f043ee314a439dccae497a1f1 +PT= 33bd7e182c72be00cfb383b5fd00be32afe2789cd201b9bd018799ebb4323209 +CT= a8fbea5cf94018764fb0681acff8fac8ca16bc336bac5d89da1f959685803fea +TEST= 177 +KEY= 73cecdad785564b09638db4caa1b134a1d7df76485ca58a7 +IV= a8fbea5cf94018764fb0681acff8fac8ca16bc336bac5d89da1f959685803fea +PT= 6e5650dac7fb973feea15ec71b30760cf0da42b9e7e40d7dd58484bc40f52e5b +CT= c808eceb46fe4c3796c2179ac870d20f0885485b464bc299475b37a088b5b27c +TEST= 178 +KEY= e50cda37b025b6bf9ebd9317ec50d1d35a26c0c40d7feadb +IV= c808eceb46fe4c3796c2179ac870d20f0885485b464bc299475b37a088b5b27c +PT= 9435c96230847f395637a7579df70eb0067a97410b732f99444ad7970b1a530a +CT= 9d24f6e83bc7a614345dec0188199b346ba8f039d874c0f383a307fae3ad5e00 +TEST= 179 +KEY= d1513636383c2d8bf515632e34241120d985c73eeed2b4db +IV= 9d24f6e83bc7a614345dec0188199b346ba8f039d874c0f383a307fae3ad5e00 +PT= 4f426eb0202fcdaa25d17883cfa2586eb5849932d921eae5dbd76605b3226502 +CT= 2b78d25608b9f9da780e704056d2f109e2bc2c53fd777c9347d5654f81204c1b +TEST= 180 +KEY= a95f46766eeedc8217a94f7dc9536db39e50a2716ff2f8c0 +IV= 2b78d25608b9f9da780e704056d2f109e2bc2c53fd777c9347d5654f81204c1b +PT= 2e6ad94fe436ac10c49625797dcd59a8b9692183bfa90be7b973526e5765d840 +CT= 6cca4cd763116c876a429260112a3e2a7a0d8500bc5098a727c43e61a4e496b6 +TEST= 181 +KEY= c31dd4167fc4e2a86da4ca7d7503f514b9949c10cb166e76 +IV= 6cca4cd763116c876a429260112a3e2a7a0d8500bc5098a727c43e61a4e496b6 +PT= a96e08830a5fb375b5096951d6bfe1be6f65b57012b201193270585f876114a4 +CT= fc5892907eeef11ff7ab188632b14ee7b44842b8f9da55db8f6be7454f286bdd +TEST= 182 +KEY= 34b6cc904d75ac4fd9ec88c58cd9a0cf36ff7b55843e05ab +IV= fc5892907eeef11ff7ab188632b14ee7b44842b8f9da55db8f6be7454f286bdd +PT= e40f014af446f9335c1d662430d7d18d11cff1362bedd14881806d8e4456585f +CT= 06775d5bcb9c6ffd7eaabe7ebab6943732245e2f4f1ec048947b827633ce5349 +TEST= 183 +KEY= 4a1c72eef7c33878ebc8d6eac3c76087a284f923b7f056e2 +IV= 06775d5bcb9c6ffd7eaabe7ebab6943732245e2f4f1ec048947b827633ce5349 +PT= 7732c5b1705b043677dd26c04a2faa4fdaf296e102093051c9c58f11f2cbd5ab +CT= 23eee46754b1685f87a9ed788fa8ba09722d9c94dad1aef8f0b71c75eba59107 +TEST= 184 +KEY= cdb59f96786b827199e54a7e1916ce7f5233e5565c55c7e5 +IV= 23eee46754b1685f87a9ed788fa8ba09722d9c94dad1aef8f0b71c75eba59107 +PT= 64266ae2c8500e2b8b377869605546bf5296f7b386683420cc179cc477c8cee5 +CT= 0ba0574376026ff32cf40ea008f6048677e59f0d18af6ab7068f2a7f0c8060a1 +TEST= 185 +KEY= e1419136709d86f7ee00d57301b9a4c854bccf2950d5a744 +IV= 0ba0574376026ff32cf40ea008f6048677e59f0d18af6ab7068f2a7f0c8060a1 +PT= 83caefec8bfb862b16059e3cf5b50fd7f82904e217f1a52407e61384fae26c84 +CT= 0c458f57b87a2bec93f18d62c1bfe6a6c31881c932c779db37ee9798a36a743d +TEST= 186 +KEY= 72b01c54b12260512d1854ba337edd13635258b1f3bfd379 +IV= 0c458f57b87a2bec93f18d62c1bfe6a6c31881c932c779db37ee9798a36a743d +PT= 698371e3f712b09ccf20552613245ba89889dd11d704522811e4865a2d103d37 +CT= 122840208f0366ca70d0465422e6168f03de13cb3ff96804dac6e20468d641bb +TEST= 187 +KEY= 02605a0093c476de2ec647710c87b517b994bab59b6992c2 +IV= 122840208f0366ca70d0465422e6168f03de13cb3ff96804dac6e20468d641bb +PT= 1d12ae26c64370e4be2cabb0ee14aef0aaf74d068cc91927f158e9ed64dd9b2c +CT= 7419692d92b8c2a31ff062b796d6b3dc7c67e52192a5209011fecd92e4b9c677 +TEST= 188 +KEY= 1d9038b70512c50252a1a2509e229587a86a77277fd054b5 +IV= 7419692d92b8c2a31ff062b796d6b3dc7c67e52192a5209011fecd92e4b9c677 +PT= f8c253dc74def47becaf5c53e94cc96ad18657d87820829c9ffe35def2719967 +CT= 0da706b563e381344e2c058fb46e5dcac4ad890135513297ecf362e2ca872f03 +TEST= 189 +KEY= 53bc3d38b17c98c8960c2b51ab73a710449915c5b5577bb6 +IV= 0da706b563e381344e2c058fb46e5dcac4ad890135513297ecf362e2ca872f03 +PT= 53f37b95a5523fc94e84f7bb0fc2b4ebd0a18c274f723e77dba8c25da5e9f0ba +CT= befe4c1882eb489867db3b7d259d3163a3c987019828dbc7d523193aea592e83 +TEST= 190 +KEY= 3467064594e1a9ab35c5ac50335b7cd791ba0cff5f0e5535 +IV= befe4c1882eb489867db3b7d259d3163a3c987019828dbc7d523193aea592e83 +PT= 2dca2b695724b787321b41ab1d27056649ea79ba19d82df3ed0abbd2d8c9e1bc +CT= 584b67f489f75c0ab103cb6c5a9cc58733fdb1a7374571def2645db204647cdc +TEST= 191 +KEY= 8564cd29ce7d6c2c06381df7041e0d0963de514d5b6a29e9 +IV= 584b67f489f75c0ab103cb6c5a9cc58733fdb1a7374571def2645db204647cdc +PT= 2460536979bb6cd31f34896dec0ff285ce32c31d8a99d23eae9cdbca1d055488 +CT= 3e629511598a032189036841e69c36dd89cbc0a88be0d8b3b0431bfdc52f584b +TEST= 192 +KEY= 0c67a56828e15af18ff3dd5f8ffed5bad39d4ab09e4571a2 +IV= 3e629511598a032189036841e69c36dd89cbc0a88be0d8b3b0431bfdc52f584b +PT= 530484157695ae50a058b3f1030af416466369b6461c9273fe97dd2f878b7cf2 +CT= 478037efe63b9b5b344542db94d130beeea885390a8e2bb2911381aa3a49bb35 +TEST= 193 +KEY= 3822e7b3bc306a4f615b58668570fe08428ecb1aa40cca97 +IV= 478037efe63b9b5b344542db94d130beeea885390a8e2bb2911381aa3a49bb35 +PT= ad091471c07d283e6e9475c0a483c59c198da7b82184ff16fedbce77b2f2036d +CT= b6942a188d40bbfeb97520fdf6492e6dc2aeeeb2b6fb0d23dc70a285907aaf37 +TEST= 194 +KEY= 8157c74e4a794422a3f5b6d4338bf32b9efe699f347665a0 +IV= b6942a188d40bbfeb97520fdf6492e6dc2aeeeb2b6fb0d23dc70a285907aaf37 +PT= 91554d7485bed536fceeffb117ce7c74caefb897a6e105806da5fd194bb2eced +CT= 0bd8d93b1ab28de76660f02cc669e92fb48f8e7b408a955819fbc58a65e82d3c +TEST= 195 +KEY= e73737628c10ad0d177a38af730166738705ac15519e489c +IV= 0bd8d93b1ab28de76660f02cc669e92fb48f8e7b408a955819fbc58a65e82d3c +PT= cf591a693d1239d5016053274cce7bb678269b1c00f6ca486cbbd36a8ec89be2 +CT= cabd54ba35775fa1b30bbba99896c9663d17b0787b90b0f74f5f46bcf58367cd +TEST= 196 +KEY= 543c8ccb1486646b2a6d88d70891d684c85aeaa9a41d2f51 +IV= cabd54ba35775fa1b30bbba99896c9663d17b0787b90b0f74f5f46bcf58367cd +PT= 87fca41a1fe334b4248e4ce19e25e9f5d9107c7cdcafb0aa2f5b125a2c68f8c7 +CT= c543fd13db10c95438141eee7660a78b7dd70bdd8f42a6c0fc0cda2f47309580 +TEST= 197 +KEY= 6c28922562e6c3e057ba830a87d3704434563086e32dbad1 +IV= c543fd13db10c95438141eee7660a78b7dd70bdd8f42a6c0fc0cda2f47309580 +PT= 7f8b4fa914107340909058bc9dc34f7241e0eedd60bae430a956e4ce01455eac +CT= 9093b20e3b0f9fdd2f7befdaae3ba01c8048f184c8bd979244ed8418ba5e5827 +TEST= 198 +KEY= 43537dffccdd63fcd7f2728e4f6ee7d670bbb49e5973e2f6 +IV= 9093b20e3b0f9fdd2f7befdaae3ba01c8048f184c8bd979244ed8418ba5e5827 +PT= 1a12e3aa5826d32796c98e906e2da05bcec12e566c40e10cc8518252712311fa +CT= 9481cefb893470888e7aedb2c994125a6b5116abaadf7f2403f264f764765d24 +TEST= 199 +KEY= cd29904d054971a6bca36425e5b198f27349d0693d05bfd2 +IV= 9481cefb893470888e7aedb2c994125a6b5116abaadf7f2403f264f764765d24 +PT= 6844f9d0dfcae2e637937cb7f2c078713e568c54b0d178d88426024182a5a9e1 +CT= dc2a28905da6ca623f38d9faf77385623f2239da698014c9043e00042d48629e +TEST= 200 +KEY= f21149b7f23af4c483815dff8c318c3b7777d06d104ddd4c +IV= dc2a28905da6ca623f38d9faf77385623f2239da698014c9043e00042d48629e +PT= 0e2efa6e99a6977f239fb942720dcea610e7fd22d111282b05240c67eb2bc83a +CT= 2669886ccea0876f3691da7824d7fa3b8a5af8f77e540e956bb3c6cfa3fb1d42 +TEST= 201 +KEY= c48093cfd6ed0eff09dba508f26582ae1cc416a2b3b6c00e +IV= 2669886ccea0876f3691da7824d7fa3b8a5af8f77e540e956bb3c6cfa3fb1d42 +PT= 4042f726daa4f9797c218d7d1302955516281add83c78390929490f6ecea605c +CT= c21464805801960ef5586f9127da98adcb8fe54c0087bdf3fe2cc53ae550fcbd +TEST= 202 +KEY= 31d8fc5ef1379652c2544044f2e23f5de2e8d39856e63cb3 +IV= c21464805801960ef5586f9127da98adcb8fe54c0087bdf3fe2cc53ae550fcbd +PT= f9b7ca9a986c4ea659ed01c8dcb722c5fcdd298bb547c66bd826ed5fdeb33ebf +CT= b6258b121d2b94c90eca15a68c0a4f96a5e4506d8d0fe46a7257d316ab5c4bf4 +TEST= 203 +KEY= 3f12e9f87d3dd9c467b010297feddb3790bf008efdba7747 +IV= b6258b121d2b94c90eca15a68c0a4f96a5e4506d8d0fe46a7257d316ab5c4bf4 +PT= c0e791d1db5e9589b580bcf18d5736046ff545a5dee9c97edb9893ee8035e1a1 +CT= 5af157a59c75b437ddfe18b7d3c474e0fdbb32818cf2cf2d4096646d3de8d5af +TEST= 204 +KEY= e2ecf14faef9ad249a0b22a8f31f141ad02964e3c052a2e8 +IV= 5af157a59c75b437ddfe18b7d3c474e0fdbb32818cf2cf2d4096646d3de8d5af +PT= a7f12419471ff3e47ae0b4428fe8915e0ab94c34ebf263db527bd33c01c2b51d +CT= eec7677a6f2aff9c70ba93ee78050eb02bcded18bb625c7aadcb60ef40ecc58b +TEST= 205 +KEY= 925662a1d6fca394b1c6cfb0487d48607de2040c80be6763 +IV= eec7677a6f2aff9c70ba93ee78050eb02bcded18bb625c7aadcb60ef40ecc58b +PT= 4ca7bef9cf8a641903322d9dbf1be3aec6d11ff7acaae0dce4487a9cd49784cb +CT= 2b12c1381bf34bbf6fd5dcc22bec66e3e62a08e23c7b79ce16e08eae8f19b78a +TEST= 206 +KEY= fd83be63fd10c57757ecc752740631ae6b028aa20fa7d0e9 +IV= 2b12c1381bf34bbf6fd5dcc22bec66e3e62a08e23c7b79ce16e08eae8f19b78a +PT= e45cc6214da08fbeb7cb92dc7197bafed8a5d5692fa1cd41ed61c748cc21ac7a +CT= fe6845b9ce818cad7d3b5c5f1ac6b994e2f94fb5a9be1ff7e860007ff4494a76 +TEST= 207 +KEY= 80b8e23ce7d67ce3b51588e7ddb82e5983628addfbee9a9f +IV= fe6845b9ce818cad7d3b5c5f1ac6b994e2f94fb5a9be1ff7e860007ff4494a76 +PT= d280ccf66456bd42bfa57a4471c52aa0d6b116fdf893443101f0a4e4db192268 +CT= 76dcda613a74c12e23e9989e60f9588c6999bfc3eded96592bbb52c44d9f3b56 +TEST= 208 +KEY= a3517aa2872f246fdc8c37243055b800a8d9d819b671a1c9 +IV= 76dcda613a74c12e23e9989e60f9588c6999bfc3eded96592bbb52c44d9f3b56 +PT= 8ebcd51bc3852b9f43f7cefe0f2b866f2e6d64a46b6c90ace0b67a8d622fded2 +CT= 940266c8378b68287ed3aeff53dc3ef350f7e4ad802e6ab935bb786c79940d2a +TEST= 209 +KEY= dd82d45dd4f31a9c8c7bd389b07bd2b99d62a075cfe5ace3 +IV= 940266c8378b68287ed3aeff53dc3ef350f7e4ad802e6ab935bb786c79940d2a +PT= c863604d89c33fa5d86eafefef95b26b24a273d50b1a3647735b255df3f8fe10 +CT= 5ba2da13ce1c6f62ce018f361d07cd2f54a4b3190178ccdcbc71873191002428 +TEST= 210 +KEY= 13835b6bc9f4d7b3d8df6090b1031e65211327445ee588cb +IV= 5ba2da13ce1c6f62ce018f361d07cd2f54a4b3190178ccdcbc71873191002428 +PT= 65155731386307f2319d3347a6b51bc5ce2fcb7d4844b993a9382b4fd2bfebbe +CT= 4b8edb1f693cfb1464de73693fb33174760acb1430711d40ae151c40f0dfde2e +TEST= 211 +KEY= 775d2802f647e6c7aed5ab84817203258f063b04ae3a56e5 +IV= 4b8edb1f693cfb1464de73693fb33174760acb1430711d40ae151c40f0dfde2e +PT= 253a81a46d3071e75e616bbcc1647372ee39593fefc70d7c9c886202dcc7d8a9 +CT= 99f419355eb5b12a0f1d6de8af89cfc77d0e4546d1a26f0ffbe68d3df273fcf8 +TEST= 212 +KEY= 784045ea59ce2900d3dbeec250d06c2a74e0b6395c49aa1d +IV= 99f419355eb5b12a0f1d6de8af89cfc77d0e4546d1a26f0ffbe68d3df273fcf8 +PT= d627d9ee148d59bd0380e4f64a12123c4398e6d5fb5fc5dca6afa4cde0f34bad +CT= 6e99e040fd8f33ba7c7b2f7658396f00c15332b0614e1b4bc1ba984f10b8f6c9 +TEST= 213 +KEY= 043b6a9c01f746001288dc72319e7761b55a2e764cf15cd4 +IV= 6e99e040fd8f33ba7c7b2f7658396f00c15332b0614e1b4bc1ba984f10b8f6c9 +PT= 611a81a768ddb2ddecb134e5f38ec1d701b3b6be48057314a310576ba2485cc2 +CT= 14fcb99a184e94aa26a6eff3ff52eeec355b332e93cfa248e211d3e3aadd06da +TEST= 214 +KEY= 229d856ffea5a8ec27d3ef5ca251d529574bfd95e62c5a0e +IV= 14fcb99a184e94aa26a6eff3ff52eeec355b332e93cfa248e211d3e3aadd06da +PT= 1a81a8f5c32335f8077e69c4b001be186aec482c032770e1ac6b3381f3133cde +CT= 31a93d8da928e3eebf4d645b44189c6cff22ceade225422d20c6d5027ecf146d +TEST= 215 +KEY= 9dd0e134babd3480d8f121f140749704778d289798e34e63 +IV= 31a93d8da928e3eebf4d645b44189c6cff22ceade225422d20c6d5027ecf146d +PT= 841e2be570edb67bbca871a835299b65e5b1b836d83b053ee922a562bd6ce289 +CT= c1ff7aef824c7e8b8db36369e7d5d2e4b3931c5ee0d7b250df4f23efbe08bfff +TEST= 216 +KEY= 1063825d5d68e6646b623dafa0a32554a8c20b7826ebf19c +IV= c1ff7aef824c7e8b8db36369e7d5d2e4b3931c5ee0d7b250df4f23efbe08bfff +PT= 1b8ca1db14dca7758c7e6a0f0a0489188d4678e6594d9373cf460dab42ec7018 +CT= 070b5b33dba9a777fd6c7a5e14b6c8095bd09bd67b42ea09cfa59b9b2b2ac2fe +TEST= 217 +KEY= ed0ff80349de2e6d30b2a679dbe1cf5d676790e30dc13362 +IV= 070b5b33dba9a777fd6c7a5e14b6c8095bd09bd67b42ea09cfa59b9b2b2ac2fe +PT= 1b959476718f8f1522466dd57292d6ad8127ef1b597f45ed97c972292b4428d5 +CT= 67250ab892c6c4e8fbb694cef8f69bb6be7ca16c9046f0b05f957954a9854eb9 +TEST= 218 +KEY= 16b96ccdb128b5db8ece07154ba73fed38f2e9b7a4447ddb +IV= 67250ab892c6c4e8fbb694cef8f69bb6be7ca16c9046f0b05f957954a9854eb9 +PT= 20fcb268f37597bf680c782cbe31b614260cf8cdc27a83fd66c35d66c0662ea6 +CT= 0b419e4ff4e6bfdf574f6730237a604b12cf063caffb348960b1b0645e11eaca +TEST= 219 +KEY= 41f60bfd9252d5909c010129e45c0b64584359d3fa559711 +IV= 0b419e4ff4e6bfdf574f6730237a604b12cf063caffb348960b1b0645e11eaca +PT= d9e810b65009ef5cae2983a5bf994f1d736ffbadfaa272b01a43f7c10906ffc3 +CT= 78d9f626eb3bdc5c1076274b586739ae158e5c3d3008ed24a256b1528f190b0e +TEST= 220 +KEY= 51802cb6ca35ec3e898f5d14d454e640fa15e881754c9c1f +IV= 78d9f626eb3bdc5c1076274b586739ae158e5c3d3008ed24a256b1528f190b0e +PT= 007157370eec361a512293d5a4a290d660cb9dee8877d9447626f5eae6c96e18 +CT= e43dfe91179d040279379c38238759b3ac83f94b2fe6746e7c352139a065cd1f +TEST= 221 +KEY= 28b7b08ee9b2b58d250ca45ffbb2922e8620c9b8d5295100 +IV= e43dfe91179d040279379c38238759b3ac83f94b2fe6746e7c352139a065cd1f +PT= f805e3f265151d7009f2c780a73007a6653c6949e7d13775df93b1d5f18eb83a +CT= a19ce800961c4028f7cd73d5e1e949789cb4139f8a4463e4f445f107e15f994a +TEST= 222 +KEY= df7ac35b085bfcf5b9b8b7c071f6f1ca726538bf3476c84a +IV= a19ce800961c4028f7cd73d5e1e949789cb4139f8a4463e4f445f107e15f994a +PT= 3c255730cdbdbe5d4423a60e457f75afc2436054f728b20cf4ce8988db2eff60 +CT= 7eb1bd278751f27331dbafef74ccfa191d4669d300b20920fd185b80a86165fa +TEST= 223 +KEY= eea16cb47c9706eca4fede137144f8ea8f7d633f9c17adb0 +IV= 7eb1bd278751f27331dbafef74ccfa191d4669d300b20920fd185b80a86165fa +PT= 1cfcb3993f4e9fe7197e1733cdff0b3790f2f8cfad9787b8b5a9e3ae0edb01ea +CT= 9d2a61b5351f51065c402790463a3e1db959f298f7427d4b3a11e81c3c255a7a +TEST= 224 +KEY= b2e14b243aad38f11da72c8b860685a1b56c8b23a032f7ca +IV= 9d2a61b5351f51065c402790463a3e1db959f298f7427d4b3a11e81c3c255a7a +PT= a76571a335eef8dee2be685835a1ff68568c036fa50c5f4e1738ac2c7fd096cc +CT= ee9af9cb1dc70783e277f6607b4ffa2cdac5a1467c307961cee74d0ab88028c7 +TEST= 225 +KEY= 5096bd4441e2c2ddc7628dcdfa36fcc07b8bc62918b2df0d +IV= ee9af9cb1dc70783e277f6607b4ffa2cdac5a1467c307961cee74d0ab88028c7 +PT= b91930e7f4f259505fa06b75084823c74fb0f04055938e64ab627e31b9e66811 +CT= d7b5bc8d63d5123eda4dd898aafe6635789fe058ac5b6b2b024e3ade890fb0ce +TEST= 226 +KEY= 8adb65dceb1ca4e8bffd6d95566d97eb79c5fcf791bd6fc3 +IV= d7b5bc8d63d5123eda4dd898aafe6635789fe058ac5b6b2b024e3ade890fb0ce +PT= 55c818a7136baf4c0c76c360ae5779fbb8b78719a04e0619c01697c05ce1a4ad +CT= 8dedcd09bcd284f599e88560e0d9a47e60472dc1290ed77231dce8668f1c65c0 +TEST= 227 +KEY= 1333e0bc0bc50096dfba40547f634099481914911ea10a03 +IV= 8dedcd09bcd284f599e88560e0d9a47e60472dc1290ed77231dce8668f1c65c0 +PT= 8a02f60bed80b74899f0972eb0c75ea9512b53ed1fa515aa9565945c9fdfbdff +CT= e6a79fec5ac34fdff8d290204ea02a7d8478273a5368dc78cc81392108fa7c60 +TEST= 228 +KEY= ebe1709c45652aeb5bc2676e2c0b9ce184982db0165b7663 +IV= e6a79fec5ac34fdff8d290204ea02a7d8478273a5368dc78cc81392108fa7c60 +PT= 344234b1e2ada8f7eb03d387875b8aea1e9f10b834a9aa86dec4cb66ac2c5409 +CT= cb144a77f12ac80cde86449ef54118ee82607dff4026be55aca56d0600ba9650 +TEST= 229 +KEY= 35673402b0243205d9a21a916c2d22b4283d40b616e1e033 +IV= cb144a77f12ac80cde86449ef54118ee82607dff4026be55aca56d0600ba9650 +PT= 9187bf16c3754290cb0f25fc80df2254e5d30d5e570aa3159411725f493f660b +CT= 434d68a1e6ddef20a166b6bd7544a3a55376392ff7f4f423a08e6338259584cc +TEST= 230 +KEY= 940182bfc56091a08ad423be9bd9d69788b3238e337464ff +IV= 434d68a1e6ddef20a166b6bd7544a3a55376392ff7f4f423a08e6338259584cc +PT= 02c442166f627978624792a902d03ef6b33a575fc6d55dd2b39a38ab6d0fa979 +CT= 49acb8143d6a02c26d9365f90d0debe237dc609df459a9aa40d1570ca9e83e8a +TEST= 231 +KEY= f992e746c86d7a42bd0843236f807f3dc86274829a9c5a75 +IV= 49acb8143d6a02c26d9365f90d0debe237dc609df459a9aa40d1570ca9e83e8a +PT= 7130bcd9d53ea347a2dba022b485a1bb9653fc79b23f3452853a9e5a81b7f202 +CT= 1b816365191af7db6cdf030dc8d09b0974f32c67c3e93b6eb2ccdc8334bbf8e0 +TEST= 232 +KEY= 954de44b00bde14bc9fb6f44ac6944537aaea801ae27a295 +IV= 1b816365191af7db6cdf030dc8d09b0974f32c67c3e93b6eb2ccdc8334bbf8e0 +PT= 1b49c0dfab3417c447c8898c796476d4f6c9651b51b68401b73ceb82e6ad7e07 +CT= 0c2b77f4e2a74ef601b29efc3512f44c4ecdb48dabedf2d16c7d4569a9f3e0fe +TEST= 233 +KEY= 94ff7ab735af15078736dbc90784b68216d3ed6807d4426b +IV= 0c2b77f4e2a74ef601b29efc3512f44c4ecdb48dabedf2d16c7d4569a9f3e0fe +PT= 06a305213910c53c1cfd2a1b2859757ae54c697472d29ca9cdf370a42a136dd8 +CT= 498de15ac0e818074c5b026954a6c760a6d85fdd14d721326dd84d228bd04029 +TEST= 234 +KEY= d8a478de6109d26721ee8414135397b07b0ba04a8c040242 +IV= 498de15ac0e818074c5b026954a6c760a6d85fdd14d721326dd84d228bd04029 +PT= 10b09678a9329100fdcd6a7f5a61909c5b7cbd95f6c6409fb2071e0741691bc6 +CT= fc4afa248bcb3051928c5dcf973a4c1f319244c7f1e69681268a33a554f12e70 +TEST= 235 +KEY= 4a282511f6339e78107cc0d3e2b501315d8193efd8f52c32 +IV= fc4afa248bcb3051928c5dcf973a4c1f319244c7f1e69681268a33a554f12e70 +PT= 9971920cc2251055a0015bd5132234c753cedcff59e797d110ba5e47959f10cf +CT= ff06c7426ed868d41281a98c0f82ba4aaf9fd3a2665ad03ae951be4042ec5d80 +TEST= 236 +KEY= 58a98c9df9b12432bfe3137184efd10bb4d02daf9a1971b2 +IV= ff06c7426ed868d41281a98c0f82ba4aaf9fd3a2665ad03ae951be4042ec5d80 +PT= 468f6d6bfbc9e7b6d8338f1c87f8074dc5f268a1da0d9aefd4c7fcb324149e6b +CT= 096cc28f7eec03071feb68db06ba0a6f49dcac54a26d51ebd20f3738bea12f73 +TEST= 237 +KEY= 4742e446ff0b2e5df63fbf25268280e066df1a9724b85ec1 +IV= 096cc28f7eec03071feb68db06ba0a6f49dcac54a26d51ebd20f3738bea12f73 +PT= e13bd2e56c5c7192da322a8e68d42303e95dc66779e121efa66001f9ec0cb062 +CT= d4cd636d9cb4835ad34ab7d53c891938467e13acf910551248a49336838b905c +TEST= 238 +KEY= 94085393c3823765b041ac89df92d5f22e7b89a1a733ce9d +IV= d4cd636d9cb4835ad34ab7d53c891938467e13acf910551248a49336838b905c +PT= bf9bd476adf21e28b6e2c6e8b663a8e500706608d3f994b4b21a52264f0d98a9 +CT= be2a664e977746d9f0db9edf38d086514754f04adcfa8bec870c4610ad7996cf +TEST= 239 +KEY= 64d3cd4cfb52b134f7155cc303685e1ea977cfb10a4a5852 +IV= be2a664e977746d9f0db9edf38d086514754f04adcfa8bec870c4610ad7996cf +PT= 57b2b58de53495df8061b31a2942ace8733afbde95397ce4cf49a72fa0ea05cd +CT= 7c54ab75d031b97b208be4e19455b945e370f5511a911ea8cbc6230aec39c43e +TEST= 240 +KEY= 445829ad6f0708711465a99219f940b662b1ecbbe6739c6c +IV= 7c54ab75d031b97b208be4e19455b945e370f5511a911ea8cbc6230aec39c43e +PT= e5cd2193d66e8c85a1106d72c1b7a0b596be7b6e16d35344dea7ae9719e08f25 +CT= a442fde8db0f5f227b4356a91d9f2dffb55078f90346327191619f5e4e3e96f7 +TEST= 241 +KEY= 3f1b7f047298258ea135d16b1abf72c7f3d073e5a84d0a9b +IV= a442fde8db0f5f227b4356a91d9f2dffb55078f90346327191619f5e4e3e96f7 +PT= 9902e620cf7f0afbe61fc752df9a0b1051f606ef7eadbf786ae78054b881c5bf +CT= f0c186701ac020ab31d6464f9128f83e5f10ffded2f103e97aa268401de0c760 +TEST= 242 +KEY= 0ecd394be3b0ddb0fe252eb5c84e712e89721ba5b5adcdfb +IV= f0c186701ac020ab31d6464f9128f83e5f10ffded2f103e97aa268401de0c760 +PT= 847140cc7aecfcc4ee233e00881bcd01a0709003df163a405f95bccbf7f46f46 +CT= d6e59d97925813b5971ef54bcf45b47bf01ce7ff3a261a11921f67ba3ad509d2 +TEST= 243 +KEY= 99d3cc002cf569cb0e39c94af2686b3f1b6d7c1f8f78c429 +IV= d6e59d97925813b5971ef54bcf45b47bf01ce7ff3a261a11921f67ba3ad509d2 +PT= bfbd93923a086deb01290ad2f2570c0feb91798de6b93337cd624eac22ba7ab1 +CT= 440572a3dd0811be30b09e6b74bd8d8cf8744e8810408e996a4028da2772acc1 +TEST= 244 +KEY= a963526b5848e447f64d87c2e228e5a6712d54c5a80a68e8 +IV= 440572a3dd0811be30b09e6b74bd8d8cf8744e8810408e996a4028da2772acc1 +PT= 781fc5cb463a7ac0e3dd6d44ab77b0e255e8d7f745120dd4074cb1cd7d3b5f4d +CT= 524e22a7ea7e6319a4ad8970246da958685c8e9d2e6e9d2e65cbfcd37a00d522 +TEST= 245 +KEY= 0dcedb1b7c254d1f9e11095fcc46788814e6a816d20abdca +IV= 524e22a7ea7e6319a4ad8970246da958685c8e9d2e6e9d2e65cbfcd37a00d522 +PT= 89823cb8edf57396e6f3ec460673f191396915f0cd2a32dfc99c35deebb2e36a +CT= b6fc832ded88af878932c0eb7e006ca7fdba98f8bb54144da73c9f9cb4c7c532 +TEST= 246 +KEY= 84fc1bf0022521b863ab91a777126cc5b3da378a66cd78f8 +IV= b6fc832ded88af878932c0eb7e006ca7fdba98f8bb54144da73c9f9cb4c7c532 +PT= eb05929d71d700ba647d15fb3708014eaff652d9feb1195323b529b47b82ec0e +CT= 4f4590296b40b4569dc0fbc89969bff23963731128f555bb5a4ac6fd429b9cbc +TEST= 247 +KEY= 193ce0389b4c9e4a5ac8e2b65fe7397ee990f1772456e444 +IV= 4f4590296b40b4569dc0fbc89969bff23963731128f555bb5a4ac6fd429b9cbc +PT= 4eedf977676152c03711e01ba0d76e3ba970e625168b410e1553bf37e7053e47 +CT= 211e6ce886ca047a23285e6d081e9c40cfe68f4d61b8aa14c37796d03b05968c +TEST= 248 +KEY= 3a14be559352020a952e6dfb3e5f936a2ae767a71f5372c8 +IV= 211e6ce886ca047a23285e6d081e9c40cfe68f4d61b8aa14c37796d03b05968c +PT= d4e056aaf5221b2d06390769bbe2a38b3012f8794f77472fbdd61dad52015477 +CT= bb0bcc300f596707cae112d9e6b99f7c3d45d9bbc22ff370ea85f7d922d6b05e +TEST= 249 +KEY= f0f5ac8c75eb9d76a86bb440fc70601ac062907e3d85c296 +IV= bb0bcc300f596707cae112d9e6b99f7c3d45d9bbc22ff370ea85f7d922d6b05e +PT= d66ba9abe8082dc8c379df264f8ce5aa89c76feae07fe694fd1ccf98adf7b9d5 +CT= ee43e7713552b7d370a7b4775b757aa7acf2705243b82c90f63e72c710ab01e9 +TEST= 250 +KEY= 805218fb2e9ee7d10499c412bfc84c8a365ce2b92d2ec37f +IV= ee43e7713552b7d370a7b4775b757aa7acf2705243b82c90f63e72c710ab01e9 +PT= 2e8ed878db8163063592abe1ce0a4f670259a16d2513b3fa9d1c18264f198cf2 +CT= 0a354e0aebba0add3409ede02a2348a941057b094c88ef60910175ef5600b73a +TEST= 251 +KEY= b45bf51b04bdaf78459cbf1bf340a3eaa75d97567b2e7445 +IV= 0a354e0aebba0add3409ede02a2348a941057b094c88ef60910175ef5600b73a +PT= 96165c32c5201fbb59a944dfd2d654cc191c4866185bede1cdfb36a4fa5501d2 +CT= 5655f5d47a9accabd39c72b24289fa70a37c52c09bd98c8cf1045048d2ad8fca +TEST= 252 +KEY= 67c787a946345508e6e0eddb68992f665659c71ea983fb8f +IV= 5655f5d47a9accabd39c72b24289fa70a37c52c09bd98c8cf1045048d2ad8fca +PT= 9f2b72cce7cc912e188c886d53b0f85ff8e64906797049c39aacfbe04db480f4 +CT= 533412778a2a6772db960f6e019f83e42b5c44b4b80d932403e00e1ba9d9d7b6 +TEST= 253 +KEY= bc5188c747abd6eccdbca96fd094bc4255b9c905005a2c39 +IV= 533412778a2a6772db960f6e019f83e42b5c44b4b80d932403e00e1ba9d9d7b6 +PT= a870bd3876a0929fd76c18d5c6bf8ad93c5061ba9e611ab83e1ff0059fef7db2 +CT= 75a97c3a65ec15105c9528bbfd71b7edee06ebbfb7cb18a5805bb504c733f0f1 +TEST= 254 +KEY= e0c4a07cbada610123ba42d0675fa4e7d5e27c01c769dcc8 +IV= 75a97c3a65ec15105c9528bbfd71b7edee06ebbfb7cb18a5805bb504c733f0f1 +PT= 1f618eee4da3e5c60b7ecf5de5f5cb8ed1cc32018708fc7d5e3dbb809c55d226 +CT= 3d456e00f7ed6a4d9d0a0d71a75b402b73a8c22533bf924c3c79f8eea5f6087f +TEST= 255 +KEY= 7dcead0d1d81212a501280f554e036abe99b84ef629fd4b7 +IV= 3d456e00f7ed6a4d9d0a0d71a75b402b73a8c22533bf924c3c79f8eea5f6087f +PT= 7f868edbc1fe900727843bb1e37a2ed81549ad0512b19c1fd1734b345ffab4c4 +CT= 9b621624b7c490473df66bf1748c662817a5ee8c52628312ca27bf1084f5cd7f +TEST= 256 +KEY= 4038c6fc690d470247b76e790682b5b923bc3bffe66a19c8 +IV= 9b621624b7c490473df66bf1748c662817a5ee8c52628312ca27bf1084f5cd7f +PT= 30cb473d3a3ff265390bf625672b6a2ce23d1620dc6c8170583ee3e645472888 +CT= d93350299069ff13bb239d8dc1a1099b29562ec157295d108afb042b9bf7a458 +TEST= 257 +KEY= fb1b5b71a8ac4e996ee140b851abe8a9a9473fd47d9dbd90 +IV= d93350299069ff13bb239d8dc1a1099b29562ec157295d108afb042b9bf7a458 +PT= cab04d5ee90e8186ef9c6d02773da3964fc77f294a513110c39040625edbfcbd +CT= ea5937fadb90f2b2108ddbee742f27bfff5b5e9bc1977c9583617d904463e4a0 +TEST= 258 +KEY= eb96809fdc83692691ba1e23903c943c2a26424439fe5930 +IV= ea5937fadb90f2b2108ddbee742f27bfff5b5e9bc1977c9583617d904463e4a0 +PT= b3bc809b3e765cdd8945ba67c9488380412958e3c61c83007050c9590a36e295 +CT= e74bb9dd41d92026cea326f777dedc9d294dca09b7838a7f0195451ab35b6ab6 +TEST= 259 +KEY= 2535a668ab5db5bbb8f7d42a27bf1e432bb3075e8aa53386 +IV= e74bb9dd41d92026cea326f777dedc9d294dca09b7838a7f0195451ab35b6ab6 +PT= aa060da0c336f37df142c279c83618243033979bd0e01a14268197c3ebf8bba8 +CT= fd611388945ef6a161284d488eab1cab151ad14bf2a1b18119fabfe39c9ca806 +TEST= 260 +KEY= 441deb2025f6a910aded0561d51eafc23249b8bd16399b80 +IV= fd611388945ef6a161284d488eab1cab151ad14bf2a1b18119fabfe39c9ca806 +PT= 5f4ea288fc7146ba016db39de222be150b61aaec4f5ddb14f0907bc40a3dce12 +CT= acc9e6ba05bbf5fbc8aae3b42d869ac5d2c1df4bde443978268132bc75537e10 +TEST= 261 +KEY= 8cb70894087033d57f2cda2a0b5a96ba14c88a01636ae590 +IV= acc9e6ba05bbf5fbc8aae3b42d869ac5d2c1df4bde443978268132bc75537e10 +PT= 4317e4496d6205be6885590c539a758b2aa064ac6266524e11b3ad4b38caaa82 +CT= fcb2e3d7f99767ee85f434193ebdf1fa3a69dd1729787cd5d270ee8a130aea89 +TEST= 262 +KEY= 09433c8d36cdc22f4545073d2222ea6fc6b8648b70600f19 +IV= fcb2e3d7f99767ee85f434193ebdf1fa3a69dd1729787cd5d270ee8a130aea89 +PT= f58fb7de33256cd9362a9b358d5370d09b43bd5a8dd29f4f2d07d25bf2fcc253 +CT= 85d1abf483e1f01e390372cba7312f064f7685064053d595b49f6a035ed8bb47 +TEST= 263 +KEY= 30404e4691fced290a33823b62713ffa72270e882eb8b45e +IV= 85d1abf483e1f01e390372cba7312f064f7685064053d595b49f6a035ed8bb47 +PT= 4ae220539b30b06c6e97df578670beae5201dce4b1b4bdd4fa789321a5ce8135 +CT= de499055348bf1c74d6f17192ae5e466319a6d02f40fd72dce9c2826edb9afca +TEST= 264 +KEY= 7d2f595fbb19094f3ba9ef39967ee8d7bcbb26aec3011b94 +IV= de499055348bf1c74d6f17192ae5e466319a6d02f40fd72dce9c2826edb9afca +PT= 2a9846a9cc52522d71905f5bd06ff5e19fe840f3c2f4e55742d0a90e7302e532 +CT= 00fd2926509e32e8e5c55d3943c60c1cfd9ba87f8eab751ed23fb0fb7cf4fa40 +TEST= 265 +KEY= 98ea0466f8df0553c632474618d59dc96e849655bff5e1d4 +IV= 00fd2926509e32e8e5c55d3943c60c1cfd9ba87f8eab751ed23fb0fb7cf4fa40 +PT= 16fba43e0f865085aeb0204316ff6a98966a47370ea47a6b2840aeac1d4b3fae +CT= 0c58c90db11db8c0571bc65d3aa4ca3defd4d75e6cd803ae9dc819f3ca0fece6 +TEST= 266 +KEY= cff1c23bc27bcf6e29e69018740d9e67f34c8fa675fa0d32 +IV= 0c58c90db11db8c0571bc65d3aa4ca3defd4d75e6cd803ae9dc819f3ca0fece6 +PT= 6bff3f75c78b1968e9285c327e225a2e43993de7ecc45760c1d609c768435dfa +CT= 6e447de4d090431ca05857d4a04efd1db46cdc1f794823640d4ea7f283cb9ba8 +TEST= 267 +KEY= 6fa995ef623532739d8a4c070d45bd03fe022854f631969a +IV= 6e447de4d090431ca05857d4a04efd1db46cdc1f794823640d4ea7f283cb9ba8 +PT= 5bd59bce8e65409ce6ab902b0d025f507280ea0a4d87140eb615e6ef18f9ce36 +CT= 7f2ae3e93ab420c06770139162693b962df5af6ad725b5dee0e6267cd9132241 +TEST= 268 +KEY= 08d9867e005c09e5b07fe36dda6008dd1ee40e282f22b4db +IV= 7f2ae3e93ab420c06770139162693b962df5af6ad725b5dee0e6267cd9132241 +PT= 7bd37376db71bf06e0d247232a0a4793eeba3375a94ddd4f196897e177fbd71a +CT= 0e1ea0d39e1b35a24efe50fde795dc09cb2256923438195fcf09650ecc67ce95 +TEST= 269 +KEY= 4627d683e7c9d5ec7b5db5ffee581182d1ed6b26e3457a4e +IV= 0e1ea0d39e1b35a24efe50fde795dc09cb2256923438195fcf09650ecc67ce95 +PT= d940ff5bc7b87333c2d556c6dd9826c2282144ca03054d5f1b2ba702bc02a57c +CT= 859b66c99c65bf882420b87d45dabae7b082fa9382c84b514ebcad8bd8a846e6 +TEST= 270 +KEY= 62076efea2136f0bcbdf4f6c6c905ad39f51c6ad3bed3ca8 +IV= 859b66c99c65bf882420b87d45dabae7b082fa9382c84b514ebcad8bd8a846e6 +PT= 75c742a24222d82110db32aac3885a6ab2e9b8f6995dede63eb01d2e98c8d7a3 +CT= 5acf87be5bc0dc725eaf4d25e9842d40754768e8ef9b7f8bc5de47af4734ac8b +TEST= 271 +KEY= 3ca823db4b97424bbe982784830b25585a8f81027cd99023 +IV= 5acf87be5bc0dc725eaf4d25e9842d40754768e8ef9b7f8bc5de47af4734ac8b +PT= a26d00df610d0af83d94cafea53772ab480d0a97708bf09e2e1e0b1e756c045f +CT= 88979822d6395b1790ee896abd5e93b5e539ba88e4545c88b46bc6b73a9f31bc +TEST= 272 +KEY= ac46aab1f6c9d1fe5ba19d0c675f79d0eee447b54646a19f +IV= 88979822d6395b1790ee896abd5e93b5e539ba88e4545c88b46bc6b73a9f31bc +PT= 91864a034e79f3ee2f9663d0bdbf05c5d96ca19b27a162a40055d1ec98e46a38 +CT= aacbeaa7723ec1079ddec6abf0b4cf5c1289b04a4912b2da36ab4d8b005c57c3 +TEST= 273 +KEY= 31986c1a067d1ea249282d462e4dcb0ad84f0a3e461af65c +IV= aacbeaa7723ec1079ddec6abf0b4cf5c1289b04a4912b2da36ab4d8b005c57c3 +PT= f40cf74ed9cf46d7b3255f0c467a0854c4a483021ca4a5fb3c26e45c4dddf03f +CT= b04ffe8e0d14eb24afbf2cb1649350c0940c92592c05f8685ed40a270055a07e +TEST= 274 +KEY= 9e2740ab62ee4e62dd24bf1f02483362869b0019464f5622 +IV= b04ffe8e0d14eb24afbf2cb1649350c0940c92592c05f8685ed40a270055a07e +PT= 019df29b804a374bbaa44a78d832dfc93ab771f29fa57e4ab613a47b42c747bd +CT= 325aedbd3cb53f0f44f8b291b989a3bd205fc295d7991bed4ee33dc2baee2ad2 +TEST= 275 +KEY= dadff23adb67eddffd7b7d8ad5d1288fc8783ddbfca17cf0 +IV= 325aedbd3cb53f0f44f8b291b989a3bd205fc295d7991bed4ee33dc2baee2ad2 +PT= e0397be4d2dd7257ed9485fac1d38de2236a30bdbd20ccf7c6cfa9d2cf0d0126 +CT= 337a2a289f274fbcb582083cf0fcb2caceef383a33544247d766bb68858e2eb4 +TEST= 276 +KEY= 6f5dfa062b9b5f15339445b0e6856ac81f1e86b3792f5244 +IV= 337a2a289f274fbcb582083cf0fcb2caceef383a33544247d766bb68858e2eb4 +PT= 41d1c6ef85164638c9086d5bd1f4f3adf0660799f65704ab5f481a3e53c30dae +CT= 491f1b6b4989c3faca40f730796d4f4c132f9d19af76e423cf32f052bc2413c1 +TEST= 277 +KEY= a51d0d3652f6105920bbd8a949f38eebd02c76e1c50b4185 +IV= 491f1b6b4989c3faca40f730796d4f4c132f9d19af76e423cf32f052bc2413c1 +PT= d62b3fb3fc0f0c5e45fde674913db6163eef5c8b7db5aedd8f14940ca688d8bf +CT= 16b4036ea6cc93fd84eb14139262b3e2eefb60e544984b570fd71906c891e58f +TEST= 278 +KEY= 21f61925c094a3bbce40b84c0d6bc5bcdffb6fe70d9aa40a +IV= 16b4036ea6cc93fd84eb14139262b3e2eefb60e544984b570fd71906c891e58f +PT= c5f7c1cfee5ee04ef3d48644b57b86872603648f15307c5b188be3a8fd242329 +CT= e143402b2f8b111ddb56c091d7b81d067c930372791ef0803a3b6229e72ffd9e +TEST= 279 +KEY= faa0d9b4172cbebdb2d3bb3e7475353ce5c00dceeab55994 +IV= e143402b2f8b111ddb56c091d7b81d067c930372791ef0803a3b6229e72ffd9e +PT= fcf4411b8206612f4add16e3cf866bee6a6c89f32b07068b0b622b26254a578f +CT= 94cbc657e88554182b0baab33a269891659dfc49c5ecf7bdb51fd0bb342cc371 +TEST= 280 +KEY= d1ab73072d0a262cd74e4777b199c28150dfdd75de999ae5 +IV= 94cbc657e88554182b0baab33a269891659dfc49c5ecf7bdb51fd0bb342cc371 +PT= b5e9e47569d9a3b67dae72216c1c4769b5c113d16b7142f40decd2ff298da61f +CT= 7407bc623f1a0040df2c840f079da0cf465b414a2f4ee044bcc44f79c4a9b14e +TEST= 281 +KEY= 0e87f7082a9786e39115063d9ed722c5ec1b920c1a302bab +IV= 7407bc623f1a0040df2c840f079da0cf465b414a2f4ee044bcc44f79c4a9b14e +PT= d23111d77adab2bddb7e2926971521c9acb352ec5d05180bd1b90f013565431a +CT= d4b28d893956a65f7c3b2d3dcfccbd0514a7975ef82daebf18263a8264b15c10 +TEST= 282 +KEY= 72bcda35e55b3be685b2916366fa8c7af43da88e7e8177bb +IV= d4b28d893956a65f7c3b2d3dcfccbd0514a7975ef82daebf18263a8264b15c10 +PT= d8c66194ec838b891a0a27ae9dc657294b65fcc44f63d65ea91d71d16f0c1a87 +CT= 670f6b69c174568d513f6ce57985c9f773d364b3673d31ce3c3b26084eb48fc6 +TEST= 283 +KEY= 2383b6d09cdef211f661f5d001c7bdb4c8068e863035f87d +IV= 670f6b69c174568d513f6ce57985c9f773d364b3673d31ce3c3b26084eb48fc6 +PT= 12c09c94b23277500ed11ca86d8871d84cc44f3fbd33d4e5e10a60b3eb5c15ab +CT= a6386c01ff4397bbaec0f1c86028d60532ee061fa39a87d598da9de7b8951028 +TEST= 284 +KEY= 8d434718fcf62414c48ff3cfa25d3a6150dc136188a0e855 +IV= a6386c01ff4397bbaec0f1c86028d60532ee061fa39a87d598da9de7b8951028 +PT= 31f1914d5b972c3d245cbc3402e499ec311f892f04ef14f15933ab5981746020 +CT= 684feab99cafa89230e746f2b92b903f4ba60d9c8b52cfdd13087dffe641e565 +TEST= 285 +KEY= bda401ea45ddb42b8f29fe53290ff5bc43d46e9e6ee10d30 +IV= 684feab99cafa89230e746f2b92b903f4ba60d9c8b52cfdd13087dffe641e565 +PT= 138bdd30af2b36f4113cb1832216ffb575b41b5e83c462a4038ac4133808babf +CT= 060c117db57e6e5bbb3c7cd6b7812b4b30f35d13e5105da8781ec999824277c2 +TEST= 286 +KEY= 06987d3cf25c9f60bfdaa340cc1fa8143bcaa707eca37af2 +IV= 060c117db57e6e5bbb3c7cd6b7812b4b30f35d13e5105da8781ec999824277c2 +PT= 1ec878ca59187ca59f339a6be3f00f92214f860a28862ab414167453c7ec62b5 +CT= 3d16fb33707cd957972d5a45ec00591c9cf3b1d0c3ab087fa3c643345f11c854 +TEST= 287 +KEY= 91b527791e5cc67c232912900fb4a06b980ce433b3b2b2a6 +IV= 3d16fb33707cd957972d5a45ec00591c9cf3b1d0c3ab087fa3c643345f11c854 +PT= 33395fd66336a39d1dd139b18243b30fd7e80c8be580d6d4c3750fe1269e99b7 +CT= d21b3242b7b23f7cafe34ae2976f27154c0f1ca25fd39dab6c6daba657166cb1 +TEST= 288 +KEY= 3e566d9b8933e1696f260e3250673dc0f4614f95e4a4de17 +IV= d21b3242b7b23f7cafe34ae2976f27154c0f1ca25fd39dab6c6daba657166cb1 +PT= 01a9c35a500b3ee22f8a7d46f7e7ba8b9661c35479f5095caa370f66bddec964 +CT= 37223771148d85e6d92214cc8c2d5d595bf06fe97c2873ffcc30ae59e17af23e +TEST= 289 +KEY= e7747957051ebc3034d661db2c4f4e3f3851e1cc05de2c29 +IV= 37223771148d85e6d92214cc8c2d5d595bf06fe97c2873ffcc30ae59e17af23e +PT= 32e5f0f7ff97c43e9d4e1ac50be680dd55fb8f2a5ab664ca8a18ec681de66fd1 +CT= 40197b6b8527c295126df93162338e00aa0998a590de4c819947e6744ebf1b77 +TEST= 290 +KEY= f5198066672d32309edff97ebc9102bea11607b84b61375e +IV= 40197b6b8527c295126df93162338e00aa0998a590de4c819947e6744ebf1b77 +PT= 745c91a66b6848b0c97620449c1fa5b89540374ea0ad26673860428794b979a2 +CT= 675125fe1be1e04ae728981aba029e9fff8b04625fa844710d200a48c19b943c +TEST= 291 +KEY= 1231187cdd2facaf6154fd1ce33946cfac360df08afaa362 +IV= 675125fe1be1e04ae728981aba029e9fff8b04625fa844710d200a48c19b943c +PT= b9a034ffc39b18c38196413640eb4a95fc017fa16c06f5bb85684a2f20aea97c +CT= 722dbe8e6bf41b8f0ccb2eb923dbe53a4979fac797e59700fb595c0cb26d8c1d +TEST= 292 +KEY= 1efa36c5fef44995282d07db74dcd1cf576f51fc38972f7f +IV= 722dbe8e6bf41b8f0ccb2eb923dbe53a4979fac797e59700fb595c0cb26d8c1d +PT= 2332a39250da5ea44646ca77e948c25eb8d38d4817eda40d57b0ce8eee9856ce +CT= fa5ef5184fae0c1c02ebe8e6ea92a8595068f3588595773d7e6f4dd64dd27522 +TEST= 293 +KEY= 1c11de231466e1cc7845f483f149a6f229001c2a75455a5d +IV= fa5ef5184fae0c1c02ebe8e6ea92a8595068f3588595773d7e6f4dd64dd27522 +PT= d0d4280e59db7cdbb82fd2d50ca8c352a548042d48c0a48ecd64cc945ceda8e8 +CT= aa7b963f38ed44bfb91b0135ac6ba551c061d8311275054359f0864f137ba619 +TEST= 294 +KEY= a50adf16b80d449db8242cb2e33ca3b170f09a65663efc44 +IV= aa7b963f38ed44bfb91b0135ac6ba551c061d8311275054359f0864f137ba619 +PT= b4684ac65ee603ff90182f3439939d21a4593ec5b761e4f4a01d2f737d4ba5a9 +CT= 2e82b88f4b314ebd5f6d3893fdd8a59a3fb5d9304b5781b0627cacef33e048a1 +TEST= 295 +KEY= fa67e78545d5e1078791f582a86b2201128c368a55deb4e5 +IV= 2e82b88f4b314ebd5f6d3893fdd8a59a3fb5d9304b5781b0627cacef33e048a1 +PT= 4db289f5c50038271eb4c43b4b633ad32760e9f7fcc05751cdf357e4b8a38c35 +CT= 5974e5c18af5889e887a518547e5e3c82b39f3f1f268c22c3aa721333d84aff2 +TEST= 296 +KEY= 721db600023002cfaca806735a03e02d282b17b9685a1b17 +IV= 5974e5c18af5889e887a518547e5e3c82b39f3f1f268c22c3aa721333d84aff2 +PT= 6f82d442603a40b5da3ef69edb772f641494f5a6a610ad4aed46ade179e09565 +CT= aa4a8895606f12824975db987c3e0095edbc5ff837e40f7bddcc246b4071c9b8 +TEST= 297 +KEY= 3b686d987e0e025a4114598b6de7ef56f5e733d2282bd2af +IV= aa4a8895606f12824975db987c3e0095edbc5ff837e40f7bddcc246b4071c9b8 +PT= 8230b8216507b5a5490d9148c70f982841af148a080f77fa40430bb2f2e1e932 +CT= 0e87a3c1b145af5d510ca68a42d29fd86dbec426a003b37d8fde2cbd5343b166 +TEST= 298 +KEY= 6a64cb123cdc9d822caa9dadcde45c2b7a391f6f7b6863c9 +IV= 0e87a3c1b145af5d510ca68a42d29fd86dbec426a003b37d8fde2cbd5343b166 +PT= 643d93244070756015310b1d72811a4e9a59455ea18f5dbe5187169601b3e574 +CT= a8fd4ef1ca22682d423285c21a85806d3e7e3c0ea7906253cfcd47723726e416 +TEST= 299 +KEY= 28564ed026591def12d4a1a36a743e78b5f4581d4c4e87df +IV= a8fd4ef1ca22682d423285c21a85806d3e7e3c0ea7906253cfcd47723726e416 +PT= ee6de102e6c51987e022e5e98c8c5ab24b4dc6106e00c008a15406a353601e48 +CT= 12af42bf3129adb01cf928152d7f9ba6f38d04cb17b774b89b52b93056dba41a +TEST= 300 +KEY= 34af66c50b268649e159a5687dc34ac02ea6e12d1a9523c5 +IV= 12af42bf3129adb01cf928152d7f9ba6f38d04cb17b774b89b52b93056dba41a +PT= 325cf351b68404ffb0476fa67d8951627dca0ac6466cd304f2b7b76844387d6a +CT= 788892ffd1314006e027b56fb01a0c97d82866ed76965ce77a1132f5f90fb82f +TEST= 301 +KEY= d488d3aabb3c8ade3971c3850b55162754b7d3d8e39a9bea +IV= 788892ffd1314006e027b56fb01a0c97d82866ed76965ce77a1132f5f90fb82f +PT= 4c8bb58c7c5b9d39ed3d4ceb1fe1a4ea4e2d0cda19e4d7587ff09a578e11b383 +CT= 9b651902dce23c5632c799d0e3b2d1636a602c3626e8f24500aa755d303ee145 +TEST= 302 +KEY= e64f4a7a588e5bbd5311efb32dbde462541da685d3a47aaf +IV= 9b651902dce23c5632c799d0e3b2d1636a602c3626e8f24500aa755d303ee145 +PT= a07f727bd62d0825fce40fb4aec0d192bc26d71e68329ad2115ef809b7ed9a6f +CT= d548ab77c91979abb341cf22f0810252455d0e2507fbbbe18590231e5be320d1 +TEST= 303 +KEY= 550e8558a80f59ef164ce1962a465f83d18d859b88475a7e +IV= d548ab77c91979abb341cf22f0810252455d0e2507fbbbe18590231e5be320d1 +PT= 797b67fd915b0d92e332a7399a9382a92bb6ecc0f149d3168ea043c8f3d326de +CT= 8176e332a9322240c86534cb382c2a712b15044d2f5f90b6753c910368e11a90 +TEST= 304 +KEY= 9d6bb1939023739e3d59e5db0519cf35a4b11498e0a640ee +IV= 8176e332a9322240c86534cb382c2a712b15044d2f5f90b6753c910368e11a90 +PT= da9b3f0a79e9e60db5c492ff556b1a50bf2b687eca92336c25c5346a4e092b61 +CT= 0804b08232da747ddb66ef5a45c6e4454ea29c0c7bcad4dd24cc9d2c7da01cec +TEST= 305 +KEY= 460d5ec9d5e597db73fb79d77ed31be8807d89b49d065c02 +IV= 0804b08232da747ddb66ef5a45c6e4454ea29c0c7bcad4dd24cc9d2c7da01cec +PT= 3d40c96bedb5c17654dceffabbc732863481804a9e8cca3353e6a72616f80ade +CT= 90f8fd1456af07c13b4169f19e6f16985a60e8bead71d2f1e055ca4b3a49360f +TEST= 306 +KEY= 7d4c37384b8a8143299b9169d3a2c919602843ffa74f6a0d +IV= 90f8fd1456af07c13b4169f19e6f16985a60e8bead71d2f1e055ca4b3a49360f +PT= 8f9bd886b66d259c7acddc7d035f5a6889783f36860cf76b4266d4b37e931837 +CT= fb7f2639d6b258f25c8edf6c8fee94e2dc2519c46782df590f0eb1aa87193b8e +TEST= 307 +KEY= 21c2e854c46415a1f5be88adb42016406f26f25520565183 +IV= fb7f2639d6b258f25c8edf6c8fee94e2dc2519c46782df590f0eb1aa87193b8e +PT= 8dfd483c270e3f8f59767a9a9cd71b50035398db144641d2b398b635191f2523 +CT= a1df56205a92f6378c5454a2e8c99f7090162085621072717dd579488d369a96 +TEST= 308 +KEY= ad96bcf62cad8ad165a8a828d630643112f38b1dad60cb15 +IV= a1df56205a92f6378c5454a2e8c99f7090162085621072717dd579488d369a96 +PT= bc8bd1a3f7b18e15dd86d4e86fa2b4ceef95f62d3372a850c78463c37ea17c65 +CT= 9665e7108ee452cff827bce4fd671c76640a6220bbb23d56a1e1a2d4771ead64 +TEST= 309 +KEY= 55b10012d1ca96a701a2ca086d825967b31229c9da7e6671 +IV= 9665e7108ee452cff827bce4fd671c76640a6220bbb23d56a1e1a2d4771ead64 +PT= 5b533cf87294897c1ac5c264c956b57718b8f95860b06f495a12d6de2714538c +CT= 8b7fbcb85039e382f73b5092543f1b2d5438b395e25640df61442008da224d45 +TEST= 310 +KEY= a28a508085f58d8a559a799d8fd419b8d25609c1005c2b34 +IV= 8b7fbcb85039e382f73b5092543f1b2d5438b395e25640df61442008da224d45 +PT= 5102c83e550927f391ac99eec2e0aded32f9babc0059a9d5ea4e566af7ab222f +CT= b3d368b2b5a38412c3cde0ab3f1678375a6b199fdeacdee1854810f61c7e36aa +TEST= 311 +KEY= 6147b02bbae3f5bd0ff160025178c759571e19371c221d9e +IV= b3d368b2b5a38412c3cde0ab3f1678375a6b199fdeacdee1854810f61c7e36aa +PT= 8cf19d1167b48f7116c87d2893b8db5618218d14d3ec17dc97815e5bc151d847 +CT= 65392c6e2b02adbc899579051e72fcc5c5fef7bc77f47ce764a6cb3e302678d5 +TEST= 312 +KEY= e8d2c92ea4910978ca0f97be268cbbbe33b8d2092c04654b +IV= 65392c6e2b02adbc899579051e72fcc5c5fef7bc77f47ce764a6cb3e302678d5 +PT= b68bd80c1d7dfb24649b39bff222a3ffeeeecb79e1b8312c66642b6172a7fecf +CT= 25ece207d9c3e58bcd20b74980c5a2c215a3bc1e537e1019c203d788e09abf22 +TEST= 313 +KEY= 25f27e672454abbadfac2ba075f2aba7f1bb0581cc9eda69 +IV= 25ece207d9c3e58bcd20b74980c5a2c215a3bc1e537e1019c203d788e09abf22 +PT= bf4df5b2f6f320990a3a9a59c1aae09423956a0d7f0e4d24e79d9df1101fec2f +CT= 9dc89e9c0d60e9f8890018c48585c47b4c48a9b0991ed7335e34e357534ce0fe +TEST= 314 +KEY= acf266a3a1d16fc193e48210ecec7c94af8fe6d69fd23a97 +IV= 9dc89e9c0d60e9f8890018c48585c47b4c48a9b0991ed7335e34e357534ce0fe +PT= c8957b743d8487f4572f66f2ee3841d2b5349d58df1c8de33fe1888100322294 +CT= ebff3276053c715cfb895100139ec637d5c8c8ab6d637e38025ffb1123333195 +TEST= 315 +KEY= 577b37a3b24fa9f6462c4abb818f02acadd01dc7bce10b02 +IV= ebff3276053c715cfb895100139ec637d5c8c8ab6d637e38025ffb1123333195 +PT= c754da4a25449fbf5c115be4b8faa9a8c9cb71541193099c296d4b5152212e90 +CT= 70a5ca858338c13d4811e1a73256f99efea9f14b66d40e7a6a1a27ec2b660eb3 +TEST= 316 +KEY= 1f6ad60480195068b885bbf0e75b0cd6c7ca3a2b978705b1 +IV= 70a5ca858338c13d4811e1a73256f99efea9f14b66d40e7a6a1a27ec2b660eb3 +PT= 58fe3a90673852ef336df05218893b795106685e8f31404c2a93526d3d4df793 +CT= 406ba101abc423744a905088595dd18a0297906bd5c055cb1d57d3c56a273aea +TEST= 317 +KEY= 55fa868cd94481e2ba122b9b329b591dda9de9eefda03f5b +IV= 406ba101abc423744a905088595dd18a0297906bd5c055cb1d57d3c56a273aea +PT= 79e01b4f62853f4133226579f3465a5673981976efd86fefb371ef189f9f5b8e +CT= 6df31e8e2fa41af13170ef2eff9b172e5b80762a4cd8eb7e2235f02ee544848a +TEST= 318 +KEY= 648a69a226df96cce1925db17e43b263f8a819c018e4bbd1 +IV= 6df31e8e2fa41af13170ef2eff9b172e5b80762a4cd8eb7e2235f02ee544848a +PT= cfd83b2272536324e78d5cda2a527016c4c1cbe194d5a5f7246eb9d6c9357114 +CT= eb150f1d11bab2004998637c4ab09092eaa12c93e92c8618435b7ce0a08e5a8f +TEST= 319 +KEY= 2d120ade6c6f065e0b337122976f347bbbf36520b86ae15e +IV= eb150f1d11bab2004998637c4ab09092eaa12c93e92c8618435b7ce0a08e5a8f +PT= 3f654662493aad9cd7fe43b5f56ca6d415c7428279a7f560af170e46033f9d6b +CT= 3689e366ab5b5b29f31f6a0ff21b380c459fb56979d7035fb5978bb2c9fef04b +TEST= 320 +KEY= de0d60d19e743e524eacc44beeb837240e64ee9271941115 +IV= 3689e366ab5b5b29f31f6a0ff21b380c459fb56979d7035fb5978bb2c9fef04b +PT= 1575c6ceb26d0d8c3dc7da169ea13ade989ec4617c5a38acd3ded3e2e9102194 +CT= ea78497adda1af527782456145d6f18e105a7f08cc646f974b7fb1ca20ea06bc +TEST= 321 +KEY= a98f25b0dba2cfdc5ef6bb4322dc58b3451b5f58517e17a9 +IV= ea78497adda1af527782456145d6f18e105a7f08cc646f974b7fb1ca20ea06bc +PT= 5a113fe727961eec7498b6649a085d805718e5d58f04800773154a9f65b0325d +CT= a25fa050a81dc2e60dc139099650870e608975771fdb3703d72dd0d17642266a +TEST= 322 +KEY= a44e1cb94df248d23e7fce343d076fb092368f89273c31c3 +IV= a25fa050a81dc2e60dc139099650870e608975771fdb3703d72dd0d17642266a +PT= 840625addbd4eb2c7a56bd25372abecbacc88b9a0cbb798fd5a9007ae70b5afb +CT= 9366ebb3dfe792ec8f6c3599d02659c0f021dd1ec5f591f08f70d9e4fc503216 +TEST= 323 +KEY= 2b2229209dd41112ce5e132af8f2fe401d46566ddb6c03d5 +IV= 9366ebb3dfe792ec8f6c3599d02659c0f021dd1ec5f591f08f70d9e4fc503216 +PT= 1b1dcf81cd2fdfd82c7ca30c4d8cf1d725fd5048367deb14eebb1416c7ec36c7 +CT= 38472eb0e41671eef61154f869ee122fbda99c6193b6e3444a7d8d01533d9269 +TEST= 324 +KEY= dd337dd8f43a033d73f78f4b6b441d04573bdb6c885191bc +IV= 38472eb0e41671eef61154f869ee122fbda99c6193b6e3444a7d8d01533d9269 +PT= 42e9f1849fe8d86394621c212a5806ef60342554df18fd6db124d51a780e0c3b +CT= c1184e16ea49e633fb9ebf1ab32187c99a6beb16a64020e2a16a8942dae81fa2 +TEST= 325 +KEY= 26adc2c2471b84f4e99c645dcd043de6f651522e52b98e1e +IV= c1184e16ea49e633fb9ebf1ab32187c99a6beb16a64020e2a16a8942dae81fa2 +PT= 6e898d080e199b6d7b7cfbe2891b4bfadf990d7d8bb3867ca7ff7635446570dd +CT= 8964c1726043db9a425e989b7ec67e6cc05cd334bf30ab22519088482a9269b9 +TEST= 326 +KEY= 64f35a5939ddfa9829c0b769723496c4a7c1da66782be7a7 +IV= 8964c1726043db9a425e989b7ec67e6cc05cd334bf30ab22519088482a9269b9 +PT= 3d5d0e93a65ccfd07e9e68a6cc5d700c7747b772299889afa4a338d70775eb82 +CT= 0a44c764b42fe6e710a0a62d8c4810cefbe8c7fdade879953cfef9f49bdc625e +TEST= 327 +KEY= 7453fc74b595ea56d2287094dfdcef519b3f2392e3f785f9 +IV= 0a44c764b42fe6e710a0a62d8c4810cefbe8c7fdade879953cfef9f49bdc625e +PT= be5e99cff09af64d502d0189a45984c2421531f2b5636eacb5276198d2c128a9 +CT= f4e5e5a05b4717eafc227d48c9c30be869b364698d2d1df1a53219e7f644320b +TEST= 328 +KEY= 8871813c7c56e1bebb9b14fd52f1f2a03e0d3a7515b3b7f2 +IV= f4e5e5a05b4717eafc227d48c9c30be869b364698d2d1df1a53219e7f644320b +PT= 906fd682b55557fda0cc846dcac7b1e5549db464b4bc4f0dac8f1ae65b5c7bb1 +CT= e480c51b4ef067153b28e0e1d8b462cc9f7879f4878fbbf0f002ac9de03fb23f +TEST= 329 +KEY= b35961dda4e2837224e36d09d57e4950ce0f96e8f58c05cd +IV= e480c51b4ef067153b28e0e1d8b462cc9f7879f4878fbbf0f002ac9de03fb23f +PT= 7c9b7848186a3f4822d600c7f95c09af9ca55a26e01b882db8e840f4552286c6 +CT= ddc875e2761a2152fd391002a16f924ebfab154d9aad8cdec6e022ce2e249861 +TEST= 330 +KEY= 4e6071df058d113c9b4878444fd3c58e08efb426dba89dac +IV= ddc875e2761a2152fd391002a16f924ebfab154d9aad8cdec6e022ce2e249861 +PT= 591be8819e8bb64efb2a4388397ef5f9d5630b79366be5088fe96bf9698d42b7 +CT= 8fef8ebc7f52955a87b83c6c9383840b90d9b538aa873f5dd9e060670d8e3f2a +TEST= 331 +KEY= c9d84db3960e95370b91cd7ce554fad3d10fd441d626a286 +IV= 8fef8ebc7f52955a87b83c6c9383840b90d9b538aa873f5dd9e060670d8e3f2a +PT= aea1a619db9f915570710dbeba2670f31cc21a4f06ee2ebcd143e0aa9db67a9f +CT= 3f1583b18869b5834d8a525efd76aafb965e74751fa407e9aaad72a1926350f2 +TEST= 332 +KEY= 84521fed6b783fcc9dcfb909faf0fd3a7ba2a6e04445f274 +IV= 3f1583b18869b5834d8a525efd76aafb965e74751fa407e9aaad72a1926350f2 +PT= 37ae7dabd7ab3a2041c1e244d47660824e0c23d8362b86d468b2da8004c5b377 +CT= db4ecd5b8090025a0fdee75c7e1b2327f65fc6f5d7426a6e4eba46a824bbf961 +TEST= 333 +KEY= 8b8cf8b115631ceb6b907ffc2db297543518e04860fe0b15 +IV= db4ecd5b8090025a0fdee75c7e1b2327f65fc6f5d7426a6e4eba46a824bbf961 +PT= aa784db1f6cb04142b05257240f17b6f2b2f07a1e7c6a98dea28dcaaf6d3abe8 +CT= f3f70df1598d1db68a6c0f16fa9430e2837fa6668d3c00027a45e38b2bc149ce +TEST= 334 +KEY= 01e0f7a7eff72c09e8efd99aa08e97564f5d03c34b3f42db +IV= f3f70df1598d1db68a6c0f16fa9430e2837fa6668d3c00027a45e38b2bc149ce +PT= 13450a38f4f63e56e50c9ccae631c6b1c3b5e9055d64357e8054a2e390f1534d +CT= 85c006b2a8ea82c06b5388b1b184bc4c9dc63f896b6d63a9ccc25eeb790f8c1d +TEST= 335 +KEY= 6ab37f165e7390457529e613cbe3f4ff839f5d283230cec6 +IV= 85c006b2a8ea82c06b5388b1b184bc4c9dc63f896b6d63a9ccc25eeb790f8c1d +PT= eaf117f0726e05a656e4a0c948e406023c43d3bf34301a0598714fdbc4eac548 +CT= 6ea5b344e4aadc844e896cac29e4a483887307dcde8397de4cb0023b91b5baf8 +TEST= 336 +KEY= 243a13ba779734c6fd5ae1cf15606321cf2f5f13a385743e +IV= 6ea5b344e4aadc844e896cac29e4a483887307dcde8397de4cb0023b91b5baf8 +PT= 4b6466bc41bb3ed1355a0a41d603d435b5822b8ec14b9ff95de53d59b174d1a1 +CT= c2ca2f33eee43893b9102367cf6a3c2e1b71fe75d0faadfabf388f5a7bc1901c +TEST= 337 +KEY= 9d2a30ddb8fd08e8e62b1fbac59acedb7017d049d844e422 +IV= c2ca2f33eee43893b9102367cf6a3c2e1b71fe75d0faadfabf388f5a7bc1901c +PT= 184b0b27735de7c9c94bd42874bad0182b5a6ec20e683dcc21762535e2a8da51 +CT= c76eec28768ec28a7829d619f2949634a16449f82006a03777e96adf19c1bb8b +TEST= 338 +KEY= e503e6c44a699edc474f5642e59c6eec07feba96c1855fa9 +IV= c76eec28768ec28a7829d619f2949634a16449f82006a03777e96adf19c1bb8b +PT= 9e8c706962843b7d772277e2901aa3888137c8a178a7f67413023fbaa2514c2c +CT= d99215a97e438cbdae7b7a009d3c3ec39c64e258b1837082a38b0fe2f95116f8 +TEST= 339 +KEY= 4b789cc4d755a01fdb2bb41a541f1e6ea475b57438d44951 +IV= d99215a97e438cbdae7b7a009d3c3ec39c64e258b1837082a38b0fe2f95116f8 +PT= 857d3d0a186703f2c3c8b9f3a258b44cb0b50d37125dcd217c70925f09bbb5d8 +CT= dfb13d178af83c94da095beb71fc597a333fa85e27f99c5a709975027b6655d1 +TEST= 340 +KEY= 9171c72fa6a9f965e8141c4473e68234d4ecc07643b21c80 +IV= dfb13d178af83c94da095beb71fc597a333fa85e27f99c5a709975027b6655d1 +PT= 0af50e160033413f31c60a7f073bd0bbf9a97f03fd43f565f5d522172719f284 +CT= 20a0a518df9e2621940d86e2b8f64aee42f708b9d9122e54cc2c3f5079095399 +TEST= 341 +KEY= 057c41cd1e5fb38baae314fdaaf4ac6018c0ff263abb4f19 +IV= 20a0a518df9e2621940d86e2b8f64aee42f708b9d9122e54cc2c3f5079095399 +PT= 7b12635a57d7be0883590d233661cd2cf7cbc6a5fc2e48d1e5d7916ff3141360 +CT= 45ab288165fe4d7f0e81463f900ff979d7ccb5b05b599a7626b6974f7d826279 +TEST= 342 +KEY= 0bfd07f28e504af27d2fa14df1ad36163e76686947392d60 +IV= 45ab288165fe4d7f0e81463f900ff979d7ccb5b05b599a7626b6974f7d826279 +PT= 547f1b12887e2b6539cd88336f40cd3dae75f36f92eb2ffb1a8aa2e6bb74af56 +CT= 7954aff1b6687303a096ca177ef9e2f4442b711e541667df08f99c2803a00e17 +TEST= 343 +KEY= ab6bcde5f0a9a8063904d053a5bb51c9368ff44144992377 +IV= 7954aff1b6687303a096ca177ef9e2f4442b711e541667df08f99c2803a00e17 +PT= 31b57a6254b24a55b72c4cfb64ceb62e978e9247f9bab0aa1d7eceab5cc3d287 +CT= d1c349f498e233d829ce31e213ea11eae55c4a1894920f10c69341799fd3e6b0 +TEST= 344 +KEY= 82a5fc07e343b9ecdc589a4b31295ed9f01cb538db4ac5c7 +IV= d1c349f498e233d829ce31e213ea11eae55c4a1894920f10c69341799fd3e6b0 +PT= e5424ee3646a397c3c961fafaef73c8058aea3c6794f08f4b37e4867dcddc3b9 +CT= b566e309b04119e9dd5e2603a1bde03bdcfa6ba11c168cfd46eef5e4ec5b2483 +TEST= 345 +KEY= 5ffbda0442fe59d700a2f1ea2d3fd224b6f240dc3711e144 +IV= b566e309b04119e9dd5e2603a1bde03bdcfa6ba11c168cfd46eef5e4ec5b2483 +PT= 0722c8f5457c7ea1d21fd326e90399305a0f562c434dec295c492bf960d513e2 +CT= c14433a74bce665260d7b6ab373cf65d16f9334e3cfc64d705b1878283db35a5 +TEST= 346 +KEY= 3f2c6caf75c2af8a165bc2a411c3b6f3b343c75eb4cad4e1 +IV= c14433a74bce665260d7b6ab373cf65d16f9334e3cfc64d705b1878283db35a5 +PT= e0f1316335b5cf3a508ae730ab815e8a6d0136143cedcdce8502d791641de51c +CT= 65a7e9041db589821b55a82cc17b34d2c0228eb6c72e7d3988ec64f746be5170 +TEST= 347 +KEY= 2479c483b4b99b58d6794c12d6edcbca3bafa3a9f2748591 +IV= 65a7e9041db589821b55a82cc17b34d2c0228eb6c72e7d3988ec64f746be5170 +PT= 8caea5fcee9f6cc4e3dbc2e2197616fa86a4a3b431a1503bc3b4d88b7fa34c33 +CT= e67c51783cb0954dc283bfa8b832c40210be4f2ae56d5df7522cd0dddad8cfde +TEST= 348 +KEY= e6fa7b2b0c8b5f5ac6c703383380963d6983737428ac4a4f +IV= e67c51783cb0954dc283bfa8b832c40210be4f2ae56d5df7522cd0dddad8cfde +PT= a99b079b2e51565ac6ba455bc1a0342e804690a208139a25b9298b054f93f75d +CT= 9af22ad0298e7bf835b57fdae5261341d01cbb0b3befe4f779ca6c67183cca51 +TEST= 349 +KEY= d34f04f1e9ad4c1b16dbb833086f72ca10491f133090801e +IV= 9af22ad0298e7bf835b57fdae5261341d01cbb0b3befe4f779ca6c67183cca51 +PT= 39a53b3fedafd79720ccc44277d1438962343b8e2f7d66d9986027c099c52d8b +CT= 09671ac69d087a2c6dab766764bef3e6b1916bb767c1f350edbff77a69092ce1 +TEST= 350 +KEY= bee472968d13bffda74ad3846fae819afdf6e8695999acff +IV= 09671ac69d087a2c6dab766764bef3e6b1916bb767c1f350edbff77a69092ce1 +PT= 95f9651565dc515c074b1007ff0c8fcbaf45ed458c8958bf4ce952ca2927329c +CT= 002ef7a9a6699588426e239266adbbcb055264f47634a886122c803ce80fa07c +TEST= 351 +KEY= fc8a5104ebbe0436a218b770199a291cefda6855b1960c83 +IV= 002ef7a9a6699588426e239266adbbcb055264f47634a886122c803ce80fa07c +PT= 32c2d3f69c14f8e7e52b71234ade735ced67a6e1e71fe2e4c1e1020a21a9b7f5 +CT= d44a4bae3155253a7d221cf3626c1a57cc5043d18a4ee1d550e2f1638bfea989 +TEST= 352 +KEY= 81a84df789d21e616e48f4a193d4c8c9bf3899363a68a50a +IV= d44a4bae3155253a7d221cf3626c1a57cc5043d18a4ee1d550e2f1638bfea989 +PT= 124c320a8a6004452695623c1c9b15b6ddec8e8e171794d259b81983a166676b +CT= 98866e269cad9abba6ab9639a0ca2f9ecd118e5144ed7b69a7ebe90ec120203c +TEST= 353 +KEY= 2703dbce291831ffa3597af0d739b3a018d37038fb488536 +IV= 98866e269cad9abba6ab9639a0ca2f9ecd118e5144ed7b69a7ebe90ec120203c +PT= 1fec35b33ace8e268361410225d484ca16a6671cfe28b36b49f7ea391226b63f +CT= cc90c0084071df8ac6de4e38ff09af6a853f65013a708b0d3f3dea29adba4c2c +TEST= 354 +KEY= e1dd95f6d6119e9526661ff1ed4938ad27ee9a1156f2c91a +IV= cc90c0084071df8ac6de4e38ff09af6a853f65013a708b0d3f3dea29adba4c2c +PT= 591e7fa20ebd1e37ec8ed42870e95fcb9a8ca2d530f86ce4dee1a5d53c170e6c +CT= 61f57c7c50611684dca9a3e41e25a4db6bcc68c8cd7e710ff5ee5aabfbcbf692 +TEST= 355 +KEY= 3d743612c8343a4e4daa7739203749a2d200c0baad393f88 +IV= 61f57c7c50611684dca9a3e41e25a4db6bcc68c8cd7e710ff5ee5aabfbcbf692 +PT= 7cb7af48da64db889e4033880b2a6ff2fd03b6465b03469717402d0e3d1e80c5 +CT= 31bc23aca0a92b3deb37ee178a08a558bbc855952507cc7a0b57323d1fff3bbe +TEST= 356 +KEY= d643d805423c9f16f66222ac053085d8d957f287b2c60436 +IV= 31bc23aca0a92b3deb37ee178a08a558bbc855952507cc7a0b57323d1fff3bbe +PT= e05e49ef17116186f66151a116b9c5e920d92e2b28922bb9c684090c1f72bbe6 +CT= f4b0b594969d2f9867c84031b82f8c826c5f5c9d8f7c720dcf98f81afa7703f2 +TEST= 357 +KEY= b18b9834fa1313949a3d7e318a4cf7d516cf0a9d48b107c4 +IV= f4b0b594969d2f9867c84031b82f8c826c5f5c9d8f7c720dcf98f81afa7703f2 +PT= 2d0dad058ffbf4e7fca1861b0093726925b963cdf279f72e8affc834f2fc840d +CT= c176ccf64cc45ee600c4137a10d3cc7051ba3672dcfa1d7037065a91aa783867 +TEST= 358 +KEY= b14f8b4eeac0dfe4cb87484356b6eaa521c9500ce2c93fa3 +IV= c176ccf64cc45ee600c4137a10d3cc7051ba3672dcfa1d7037065a91aa783867 +PT= 0433e9e71eb3f7efe688786d837c5d0da39db128007f5ac12e51fb0b9ea0cb33 +CT= b220d984477dcade8618109c41f2eecf0ec5eb3988be541c46db46d88a5541f0 +TEST= 359 +KEY= 37579bd2ab32312bc542a37ade08beb9671216d4689c7e53 +IV= b220d984477dcade8618109c41f2eecf0ec5eb3988be541c46db46d88a5541f0 +PT= d0ac35d99bc4b3f821184ae099ac51536fcfb8af52d51137ab0c8777c0d6711e +CT= f5d8ea38a70e336c778ffb835d2b5f918c56daa4061c8f5b24ed7e3bc99b1b64 +TEST= 360 +KEY= 40d86051f6196eba491479ded81431e243ff68efa1076537 +IV= f5d8ea38a70e336c778ffb835d2b5f918c56daa4061c8f5b24ed7e3bc99b1b64 +PT= 0559eed247c9726335f9bcc5227015c9abad893c89c7131dce19c66b944f72fc +CT= b3f092c7cd66d9f25588c932dc1da8e844bbe80bd555beb98878ea7cf0de0b65 +TEST= 361 +KEY= 1550a9632a04c6520daf91d50d418f5bcb87829351d96e52 +IV= b3f092c7cd66d9f25588c932dc1da8e844bbe80bd555beb98878ea7cf0de0b65 +PT= 6f609424d9555a0c75bfe92e7ad035f0d018c840df611db0878a57cdd857e3ab +CT= a1e2c557f39ffb4f21eb19d057fdba825415bf5a25e0590b89d75572b8f352cc +TEST= 362 +KEY= 34bbb0b37df97cd059ba2e8f28a1d6504250d7e1e92a3c9e +IV= a1e2c557f39ffb4f21eb19d057fdba825415bf5a25e0590b89d75572b8f352cc +PT= 3a7893256afd50a4aed2e8d08e8d14f3ce2e887766ae24252fcb4a37303e66f0 +CT= 17a0493df7831cbbb890dc344afd328971ac7dbd41dadf899da2369792b81818 +TEST= 363 +KEY= 8c2b6c8737044e5928165332697b09d9dff2e1767b922486 +IV= 17a0493df7831cbbb890dc344afd328971ac7dbd41dadf899da2369792b81818 +PT= c41c1960143fa0e2bf51b0982b53da2c70cdff66717bd3b45887633d9e20184f +CT= e0e4232daf16e1e8eca2e49475905c93e921cc486df5caa50a357a7d1554ad38 +TEST= 364 +KEY= 60898813429412cac1379f7a048ec37cd5c79b0b6ec689be +IV= e0e4232daf16e1e8eca2e49475905c93e921cc486df5caa50a357a7d1554ad38 +PT= 6b17b409c6c04c93dc239e055f20a74631ebfb18369fa786a6c6fd30d06636ca +CT= 89c9200d8f3b07565269e334df5914ae2cbbc2c3942118d1e443f6c3824c21b6 +TEST= 365 +KEY= 32e06b279dcd0664ed8c5db990afdbad31846dc8ec8aa808 +IV= 89c9200d8f3b07565269e334df5914ae2cbbc2c3942118d1e443f6c3824c21b6 +PT= efd3df8bfd5342025de7dc75cb099f896b9609115c5412c429f7fb1fe6fe9622 +CT= 9c07dc0bda2403472ca4f3efd22b58f50609bb627e9b38530f0545bd86845609 +TEST= 366 +KEY= 1e4498c84fe65e91eb85e6dbee34e3fe3e8128756a0efe01 +IV= 9c07dc0bda2403472ca4f3efd22b58f50609bb627e9b38530f0545bd86845609 +PT= 7684defa071723b2a4046b27e4bc21755e3cd9309e5f14a3ed92ec9b5c95a92e +CT= 444188382e0e082942d453de049d934210c6042c88afc02d0aa0912162c96ace +TEST= 367 +KEY= 5c90cb164b7bcdd3fb43e2f7669b23d33421b95408c794cf +IV= 444188382e0e082942d453de049d934210c6042c88afc02d0aa0912162c96ace +PT= ceef663f6d89ff3536a6ae4858a8cc91ad57fb378a23cb96b894ebafe1073532 +CT= 97d52411eabcb32a5f33887f091bc39a118467ad643cff970dcbb32d7e289ca4 +TEST= 368 +KEY= 03a3436942600e49eac7855a02a7dc4439ea0a7976ef086b +IV= 97d52411eabcb32a5f33887f091bc39a118467ad643cff970dcbb32d7e289ca4 +PT= 4954d2e1371aab70ece79c858d0e6dba8cef10a89c72c3884a4e035744f41cc9 +CT= 0dacdcb34fe339304fcd1aa017fc267f53c464a83b4e6e6ac6177ac031bbf296 +TEST= 369 +KEY= 4c6e59c9559c2836b903e1f239e9b22efffd70b94754fafd +IV= 0dacdcb34fe339304fcd1aa017fc267f53c464a83b4e6e6ac6177ac031bbf296 +PT= d4dbc0832f0abc720740af4659565383be91a407609e85385c003b207f07f067 +CT= 2219f7def77d7bd1dcabe89549cb417c95135cb66b67c5d0a0b187ac76607e44 +TEST= 370 +KEY= 90c5b15c1c57694a2c10bd44528e77fe5f4cf715313484b9 +IV= 2219f7def77d7bd1dcabe89549cb417c95135cb66b67c5d0a0b187ac76607e44 +PT= 0d2eb15d79b6f33e723b075ecce16113c90549f0debddc474c481f61fb6dbd73 +CT= 20b26b08ff89cd9b868645eed51766694050bea746855728e49856c7709f8067 +TEST= 371 +KEY= 1643f4b2c9400f236c4003e3140b20d6bbd4a1d241ab04de +IV= 20b26b08ff89cd9b868645eed51766694050bea746855728e49856c7709f8067 +PT= f9bd599399b9a1885a33d073b8b14aa8274dbecca538dd4d64951331cd7aacb7 +CT= 9efa94cdd602e8257e2f5a3598697e7f9fefe0080cc68a136c82521cb6c45479 +TEST= 372 +KEY= 686cae875129715cf3afe3eb18cdaac5d756f3cef76f50a7 +IV= 9efa94cdd602e8257e2f5a3598697e7f9fefe0080cc68a136c82521cb6c45479 +PT= aeeab5651e27cabfe4345ab4cf1de53ceadd162f767feffd129f30450bd157ef +CT= 7d0608953fe3b71d043438c8bf059d7db0eb21d2c2219c2a308a0605dc0f5035 +TEST= 373 +KEY= 6c58964fee2cec214344c239daec36efe7dcf5cb2b600092 +IV= 7d0608953fe3b71d043438c8bf059d7db0eb21d2c2219c2a308a0605dc0f5035 +PT= 1939a247c2ba5f436574a1666475cefc44e72b5e1f50494918a8371b93d7ce5b +CT= 3ccb1f9dd6b73438bfa6c11221d60f90c94542b0365d8df8250d19eea87c69d3 +TEST= 374 +KEY= d3fe575dcffae3b18a018089ecb1bb17c2d1ec25831c6941 +IV= 3ccb1f9dd6b73438bfa6c11221d60f90c94542b0365d8df8250d19eea87c69d3 +PT= 60a1bda78898ffd09fc508fa31971e74c41cf12c9e49191019c95d710ed0d431 +CT= c483b01310c9efd32c6cf9486913d01c45e6b905d71ebfe49c0200bcbd0c1a0a +TEST= 375 +KEY= ff92ae15a6e933adcfe7398c3baf04f35ed3ec993e10734b +IV= c483b01310c9efd32c6cf9486913d01c45e6b905d71ebfe49c0200bcbd0c1a0a +PT= 46bc6f6eb76bb00070775867bb53535d6145dfd0e71c8a30056575aa1f591674 +CT= 8b96d11baa3db6afaeaecc27963c037a35b7d26215d502c0765cc2d660a10e48 +TEST= 376 +KEY= 513c623230d530d7fa50ebee2e7a0633288f2e4f5eb17d03 +IV= 8b96d11baa3db6afaeaecc27963c037a35b7d26215d502c0765cc2d660a10e48 +PT= 74aa798cd56a0c2bf4c22329b4fb358a98eaffad57d4d67cff456d02c431ba31 +CT= 33e011197ed166f44d3554f6892aaebcc48779d5a3308019514917062e25b6b2 +TEST= 377 +KEY= 1c0936c4b9ff9e6b3ed7923b8d4a862a79c639497094cbb1 +IV= 33e011197ed166f44d3554f6892aaebcc48779d5a3308019514917062e25b6b2 +PT= 0dfed890162fad6883e7eec28bf7b2c1a3fe30507bc9d0a9962907754ee3247b +CT= 711f417185896267143f3e02837b44f0b05bfd7a93f902b4615ae09aa066de09 +TEST= 378 +KEY= 083608c63a84da9b8e8c6f411eb3849e189cd9d3d0f215b8 +IV= 711f417185896267143f3e02837b44f0b05bfd7a93f902b4615ae09aa066de09 +PT= 4dba401526cb1ddf13109a9b382e7e5e2e62e3e7d703ed13205612f46809d2a9 +CT= baaf9822f74f2dd0bd34709130817a94d657373996383d8802215da6c9aaca77 +TEST= 379 +KEY= b50278570a05a00f58db5878888bb9161abd84751958dfcf +IV= baaf9822f74f2dd0bd34709130817a94d657373996383d8802215da6c9aaca77 +PT= ecfcf12a373afc5cc17abe468d15d2ce6a65ae5cb397d8bad7be487788cfcea5 +CT= 9eec5402a328186010b48f1bc987dbc0fcd9d0e10e685be1fc552854fc4713c6 +TEST= 380 +KEY= a5b6f74cc3827bcfa402889986e3e2f7e6e8ac21e51fcc09 +IV= 9eec5402a328186010b48f1bc987dbc0fcd9d0e10e685be1fc552854fc4713c6 +PT= 58257742815e04e8171a4e32a5aa3eb799f709c2e030a2665f1283db010b9bf7 +CT= 80aae65e9d5c9a00ada686087ce9b9cb77a8fc0bedf08b45a504220f38cb5e79 +TEST= 381 +KEY= 08107144bf6bc204d3aa74926b1369b243ec8e2eddd49270 +IV= 80aae65e9d5c9a00ada686087ce9b9cb77a8fc0bedf08b45a504220f38cb5e79 +PT= e6944773cb18f8c3e0222c8aa67e2e618c8e09b5b067e7dccaa565576c16b275 +CT= 79b2e37c551b9a0b6b11d174f5af671f80b317d0e3324cfa218069b3764e632b +TEST= 382 +KEY= 6301a0304ac4a51b5319634288212548626ce79dab9af15b +IV= 79b2e37c551b9a0b6b11d174f5af671f80b317d0e3324cfa218069b3764e632b +PT= 7f91f8f5aaf573e2839f5bdca1b27388e57f47be0bdf446fbe03fd9dc034fcb7 +CT= 90b161d39973a9befd3eba6342939108fd0476da8806d5c75ed80342f7cc1729 +TEST= 383 +KEY= 9e3f1a5308573413ae1d15980027f08f3cb4e4df5c56e672 +IV= 90b161d39973a9befd3eba6342939108fd0476da8806d5c75ed80342f7cc1729 +PT= 06d93f8a53b6451232eb7fa562074a02a60d17df9754730a45df6a209603fb24 +CT= 06b200b764e0b73b8738b77a860334ff064d8eb7c175f9352f2821d944ea50be +TEST= 384 +KEY= 1907ad298e5400eca8509b2fc15209ba139cc50618bcb6cc +IV= 06b200b764e0b73b8738b77a860334ff064d8eb7c175f9352f2821d944ea50be +PT= 3dc40408bb4c66d7b14254090fb9769740134c286bc4a52da0fdd0c77fd64540 +CT= 298294a475dcc7510b18673f7a307ad447cbf39436123972535434daed4ddc5d +TEST= 385 +KEY= 121fca16f4647a38ef9b68bbf74030c840c8f1dcf5f16a91 +IV= 298294a475dcc7510b18673f7a307ad447cbf39436123972535434daed4ddc5d +PT= 23cf8cca17e0c2778455ab48039813176740580f113bca995babf74861d5a6ae +CT= 09b608c91eb066ac85ac31e19101ddaa8daa77fc21993ba9ee87038f3ef49f8f +TEST= 386 +KEY= 97b3fbf76565a79262311f47d6d90b61ae4ff253cb05f51e +IV= 09b608c91eb066ac85ac31e19101ddaa8daa77fc21993ba9ee87038f3ef49f8f +PT= 388beef958a9b0d16726ddba9e8cb6bcf0d4d8475e762c36ae14eea1488fa201 +CT= 3be48032fef3cbedadad75b0c27a8929fdd480ba36fa9f6c96b10e80784a2a36 +TEST= 387 +KEY= 3a1e8e47a71f2ebb9fe59ffde023940d38fefcd3b34fdf28 +IV= 3be48032fef3cbedadad75b0c27a8929fdd480ba36fa9f6c96b10e80784a2a36 +PT= b3933e0bd860a2ac5fd00d73cf5aef5c75001d5f939962a3a2df4a3c1d506be1 +CT= 71acb672f91bdd5836599ce45aa9366327e84219cabd46b7d7a562c21d5cb1a5 +TEST= 388 +KEY= 0c4712a3fdb618d8b80ddde42a9ed2baef5b9e11ae136e8d +IV= 71acb672f91bdd5836599ce45aa9366327e84219cabd46b7d7a562c21d5cb1a5 +PT= 17b05f776795fdc7490aaf0579116a501cddc10bc1d318f7cef406d4a35a2482 +CT= c5c86d2756f34d1b776035d02d93c9ebfa65a2a058ccd007f12f54bb83568b20 +TEST= 389 +KEY= 7b272773d025d13342687f44725202bd1e74caaa2d45e5ad +IV= c5c86d2756f34d1b776035d02d93c9ebfa65a2a058ccd007f12f54bb83568b20 +PT= f973936cdf8958ad7fa757154dd9d9ceef9f4f6209da3775abedc87f6ad94284 +CT= 16d67f74d9a6bad09563014c5c7ca59d2ef420616347e972f5aa2978cfaa51ad +TEST= 390 +KEY= ee44263f8c5974ae6c9c5f251115ebcfebdee3d2e2efb400 +IV= 16d67f74d9a6bad09563014c5c7ca59d2ef420616347e972f5aa2978cfaa51ad +PT= 260e28e7eb3c7fdc47a66383f3ad7600d4aad363bad8267e87cdc0965abde53d +CT= b96115c1edaf9151c3bdea29f51c5ae6564ab1138542e378ac903cad0ad722f1 +TEST= 391 +KEY= 2df9cc1679452e483ad6ee36945708b7474edf7fe83896f1 +IV= b96115c1edaf9151c3bdea29f51c5ae6564ab1138542e378ac903cad0ad722f1 +PT= 1abeb7e71f96fe020b94b79940df6706353428c1a2ef2d6046e8c955c597fc31 +CT= 35eb4527ef5de98f76bca573bdf2e2fc3288b00a039fa705f22bcf9f66d17202 +TEST= 392 +KEY= 5b456965c4b7ccb4085e5e3c97c8afb2b56510e08ee9e4f3 +IV= 35eb4527ef5de98f76bca573bdf2e2fc3288b00a039fa705f22bcf9f66d17202 +PT= 061443f238ed543f3b9ae28edefd1de23a53fd58bf4471a921ac75c4b22ac316 +CT= be5b0d916164923afcac6ee1348e435442534e714cccbe79a99f4b3f0437f10f +TEST= 393 +KEY= a7e90784f0398fe04a0d104ddb0411cb1cfa5bdf8ade15fc +IV= be5b0d916164923afcac6ee1348e435442534e714cccbe79a99f4b3f0437f10f +PT= 39ff988c998259eda7690d0943d3e909b90f0b5e9778b582eea4d84c40675f4d +CT= 55c263412e96c486a63297aad892a6319c6001d0991f40ac5b190ee6d4a72f39 +TEST= 394 +KEY= 01db902e28ab29d1d66d119d421b516747e355395e793ac5 +IV= 55c263412e96c486a63297aad892a6319c6001d0991f40ac5b190ee6d4a72f39 +PT= 802d1d0fd09cbc9d740eef09d575ba6e2fac8d15cce6f243e2034d5049434ace +CT= 35dfbe58958ad99ac3e548ac37395d4f4f716d0537e96298e6f11b159032e0ba +TEST= 395 +KEY= c23ed8821f92749e991c7c9875f233ffa1124e2cce4bda7f +IV= 35dfbe58958ad99ac3e548ac37395d4f4f716d0537e96298e6f11b159032e0ba +PT= ced087cff1d2b6398d8d4e13d4a041bcdd185df300776a7d529699413b5402f5 +CT= 7d11b7b0cd5e53888c74f8f02145c6e94b7ffe43cb7b4be870da5330bfec0d6e +TEST= 396 +KEY= 4e4a20723ed7b277d26382dbbe897817d1c81d1c71a7d711 +IV= 7d11b7b0cd5e53888c74f8f02145c6e94b7ffe43cb7b4be870da5330bfec0d6e +PT= 22b11a25943b6db8036dbb5a747ffe6ca08deaa72271dd5bfb8bd3b63a9f2cdb +CT= 92e8cf9abf17c4579d53d73de766e7cc5734af3edadd1877d3d81bc4df9e8dc1 +TEST= 397 +KEY= d319f74fd9b155bb85572de564546060021006d8ae395ad0 +IV= 92e8cf9abf17c4579d53d73de766e7cc5734af3edadd1877d3d81bc4df9e8dc1 +PT= 609cbda2b5b1d9c24c8a591caf52dac250f476da0a118014d03454bfcd23abb0 +CT= 917a931a42078463348fe80f8a9adeb648ab19fcd73da02aca9bfe84625487ce +TEST= 398 +KEY= e7961f40532b8b0dcdfc3419b369c04ac88bf85ccc6ddd1e +IV= 917a931a42078463348fe80f8a9adeb648ab19fcd73da02aca9bfe84625487ce +PT= 8cfd2a5906ba30a4786b0175df63373d0667c4936672dd0d04693a613e775844 +CT= dc38d7b0e3820337d327260634e3823710a0942be8207016c9991da40b7dd52b +TEST= 399 +KEY= 34b1394667c8093add5ca0325b49b05c0112e5f8c7100835 +IV= dc38d7b0e3820337d327260634e3823710a0942be8207016c9991da40b7dd52b +PT= 9c2c2c40a9a96a2250f02b58e86fd12c5afeaabdd02e35e6182d1c0a74976baa +CT= 018912b7c41ebe5279df03b7cbbb178bbcc61270fca8a43b67df542802fb715d diff --git a/flint/test/testvals/cbcme88.txt b/flint/test/testvals/cbcme88.txt new file mode 100644 index 0000000..f0f6afa --- /dev/null +++ b/flint/test/testvals/cbcme88.txt @@ -0,0 +1,2010 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: CBC Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: cbcme88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +IV= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 15e7b50bbabf7be1e798360ae157793f773c64dff722fde25394c4695f6b6324 +TEST= 1 +KEY= 15e7b50bbabf7be1e798360ae157793f773c64dff722fde25394c4695f6b6324 +IV= 15e7b50bbabf7be1e798360ae157793f773c64dff722fde25394c4695f6b6324 +PT= a3095d9c5563eb4aa3525752f995edd7e810843b73fecc239752df8849a8f98b +CT= 55984806fcc26ace49b9d0495faab296c90d1cdba403a726f880f7077892b277 +TEST= 2 +KEY= 407ffd0d467d112fae21e643befdcba9be31780453215ac4ab14336e27f9d153 +IV= 55984806fcc26ace49b9d0495faab296c90d1cdba403a726f880f7077892b277 +PT= 9916ffb01c062b95c242e82786ae0ec6c350e71df7ead08c1c65b9704f44a81b +CT= d9c815765d362ee5688619403fcb3a924cd243128df3a6c04e00f5cdb24d5833 +TEST= 3 +KEY= 99b7e87b1b4b3fcac6a7ff038136f13bf2e33b16ded2fc04e514c6a395b48960 +IV= d9c815765d362ee5688619403fcb3a924cd243128df3a6c04e00f5cdb24d5833 +PT= 7a88950edf42fdd7205f59a24a19171ee14fb9708cbfe65ecf49540cd38de8d2 +CT= 64b0e0f7b5de35ebcfc1c7dfc6ceba15710dce4ddee1ee674fff363d766aef78 +TEST= 4 +KEY= fd07088cae950a21096638dc47f84b2e83eef55b00331263aaebf09ee3de6618 +IV= 64b0e0f7b5de35ebcfc1c7dfc6ceba15710dce4ddee1ee674fff363d766aef78 +PT= d6f4ef484d1f223e5c68630d10f67a7d04da9b76d0f2e339540d97c366f97f0f +CT= e590c122625c5aabeb1b6c085bdcaa47418868572e29dbf2c16a54e161aefc81 +TEST= 5 +KEY= 1897c9aeccc9508ae27d54d41c24e169c2669d0c2e1ac9916b81a47f82709a99 +IV= e590c122625c5aabeb1b6c085bdcaa47418868572e29dbf2c16a54e161aefc81 +PT= 9618e84ce52be7762fc0cf1e0ec5a8982dc19959f6a5eda4517904fd2a009f68 +CT= 1ead1c06dbef9045f9d467ea04f3070a18f01f88d6eb123eeeb6d5db9fdc6232 +TEST= 6 +KEY= 063ad5a81726c0cf1ba9333e18d7e663da968284f8f1dbaf853771a41dacf8ab +IV= 1ead1c06dbef9045f9d467ea04f3070a18f01f88d6eb123eeeb6d5db9fdc6232 +PT= 8ba72d37e2a403fb060660e6775abc43bb8787c7925171cef0085e336084b975 +CT= 23ef59bbc6b4176230e4b668be71382b1db8c1c43be66d945d55e4faf0e62360 +TEST= 7 +KEY= 25d58c13d192d7ad2b4d8556a6a6de48c72e4340c317b63bd862955eed4adbcb +IV= 23ef59bbc6b4176230e4b668be71382b1db8c1c43be66d945d55e4faf0e62360 +PT= b4ff220f4d415c4b4b035015c3bf0199291afb07b2202b82da491e5087c35ae9 +CT= a26b24c334dc70178638e44e039c5ff252ab27a7faba4325a68ef9cb32aebf7e +TEST= 8 +KEY= 87bea8d0e54ea7baad756118a53a81ba958564e739adf51e7eec6c95dfe464b5 +IV= a26b24c334dc70178638e44e039c5ff252ab27a7faba4325a68ef9cb32aebf7e +PT= d2dae1a9761d1ca337f2b093302e78ac415bbc3faa55df23981fa5c413557f76 +CT= 8f934d87a13a173dce9cdb639c3ac260e3836b60aa5f5044b7818755c79926cb +TEST= 9 +KEY= 082de5574474b08763e9ba7b390043da76060f8793f2a55ac96debc0187d427e +IV= 8f934d87a13a173dce9cdb639c3ac260e3836b60aa5f5044b7818755c79926cb +PT= 5441b03e3a35860567f70dc795b3b00cfde83d36279128ac6e904722a3928b79 +CT= 98b62ec4e598de076c41990a195b1b7130f142ba2c9d21b7168ff60293fba170 +TEST= 10 +KEY= 909bcb93a1ec6e800fa82371205b58ab46f74d3dbf6f84eddfe21dc28b86e30e +IV= 98b62ec4e598de076c41990a195b1b7130f142ba2c9d21b7168ff60293fba170 +PT= 4d4b688654f9a123a4aef1f05b5704d2366a4f4966e354388bc4b28e75da03a4 +CT= 63f95f7f4679335e38b8efdf20b8b072c2b86d95618c1d4f2b2d5552da4400d4 +TEST= 11 +KEY= f36294ece7955dde3710ccae00e3e8d9844f20a8dee399a2f4cf489051c2e3da +IV= 63f95f7f4679335e38b8efdf20b8b072c2b86d95618c1d4f2b2d5552da4400d4 +PT= d2819bc98eb40021b272ced1e85c9a295349a1f23cc8ce5217a4eb04ca5ea5b6 +CT= 2e848eb0de0b0bc7743d7bb4f8329338a0026f9bc98a5721905a70ae5033af80 +TEST= 12 +KEY= dde61a5c399e5619432db71af8d17be1244d4f331769ce836495383e01f14c5a +IV= 2e848eb0de0b0bc7743d7bb4f8329338a0026f9bc98a5721905a70ae5033af80 +PT= e37c4f863130ff68903af64f24d09eb33648d7418707dfbfd68ba26cac0c2ad4 +CT= 6494cbae427148cf0c7779341ba89a9f2f021c96020b4bb18c72147e45bc1dc8 +TEST= 13 +KEY= b972d1f27bef1ed64f5ace2ee379e17e0b4f53a515628532e8e72c40444d5192 +IV= 6494cbae427148cf0c7779341ba89a9f2f021c96020b4bb18c72147e45bc1dc8 +PT= 7cfe4e4f47b1b5382f17b449d695eeeaa5e602edd33a6b4645bef88f04935b26 +CT= aa68274cc05978b5f68cf72c29a3fc2aa288f43457bc525353d2682355d58ad0 +TEST= 14 +KEY= 131af6bebbb66663b9d63902cada1d54a9c7a79142ded761bb3544631198db42 +IV= aa68274cc05978b5f68cf72c29a3fc2aa288f43457bc525353d2682355d58ad0 +PT= d1361d0654a78ecca54fb1fa3c9097f157c8f7d339cfc86f3b05a1cfd4349f1a +CT= 1940a44e82541d5d3ae531700cd8ad7dd487ec258ae13e27ce2bf22104480bd3 +TEST= 15 +KEY= 0a5a52f039e27b3e83330872c602b0297d404bb4c83fe946751eb64215d0d091 +IV= 1940a44e82541d5d3ae531700cd8ad7dd487ec258ae13e27ce2bf22104480bd3 +PT= 4fa22dc2eb0a0ecaf9a7f76d4fee0de1a007d1401f801f99b646d605eb5fbd8a +CT= 4e91efd78494eeb7d9fc4994af0a1a56c1e539d232b9d515c1e6a858d5515571 +TEST= 16 +KEY= 44cbbd27bd7695895acf41e66908aa7fbca57266fa863c53b4f81e1ac08185e0 +IV= 4e91efd78494eeb7d9fc4994af0a1a56c1e539d232b9d515c1e6a858d5515571 +PT= 692c2e418670bb509b6916fea13a25e736124349b2b262997e53b7c5097dbbb0 +CT= 4f2a887b9a2a95adce75d29b99a474ecbec9b33a3e307164b4a75249b14da5df +TEST= 17 +KEY= 0be1355c275c002494ba937df0acde93026cc15cc4b64d37005f4c5371cc203f +IV= 4f2a887b9a2a95adce75d29b99a474ecbec9b33a3e307164b4a75249b14da5df +PT= 9a47a200b8f529cadcb1225ee9d9783f00377f700d517987c12f18106d58af3e +CT= 569e39a013949682ff43c87d9e97a687f72eedca20d67aae95fb27c7185551bb +TEST= 18 +KEY= 5d7f0cfc34c896a66bf95b006e3b7814f5422c96e460379995a46b9469997184 +IV= 569e39a013949682ff43c87d9e97a687f72eedca20d67aae95fb27c7185551bb +PT= 436ad662eb852cb06417560ad0fcc780cc7767feead3569df9bf338a43059da7 +CT= f7fdfc1dd111e16faa1cd54809efe606c0de333f007e8a7e1bb0da423bb0eb67 +TEST= 19 +KEY= aa82f0e1e5d977c9c1e58e4867d49e12359c1fa9e41ebde78e14b1d652299ae3 +IV= f7fdfc1dd111e16faa1cd54809efe606c0de333f007e8a7e1bb0da423bb0eb67 +PT= bd1655cdba39d15efd071bfa35b9eaf13f5016dc7d7c65a55396afdb7714c3d1 +CT= 87c2be6d1b9d568cb2fea9fd4b0f918dc4809d4a61b011e7919e3bf4cb810790 +TEST= 20 +KEY= 2d404e8cfe442145731b27b52cdb0f9ff11c82e385aeac001f8a8a2299a89d73 +IV= 87c2be6d1b9d568cb2fea9fd4b0f918dc4809d4a61b011e7919e3bf4cb810790 +PT= 07415990ee6238958b0fabd1f9c042b4581ac48092fb8d33bb15245ff08234ad +CT= 99ddf13f4000d9de3000ea3627123bf040fa51d1d47f7283b0eafeda3366f6a2 +TEST= 21 +KEY= b49dbfb3be44f89b431bcd830bc9346fb1e6d33251d1de83af6074f8aace6bd1 +IV= 99ddf13f4000d9de3000ea3627123bf040fa51d1d47f7283b0eafeda3366f6a2 +PT= fe77e69eb653d5494410202229df42dccc2cc708b008d58408090faa2fb6cbd4 +CT= d60bc133569c901ead2d22dcd9b47272e2b91786686e89374fb4e1ba0e1b9846 +TEST= 22 +KEY= 62967e80e8d86885ee36ef5fd27d461d535fc4b439bf57b4e0d49542a4d5f397 +IV= d60bc133569c901ead2d22dcd9b47272e2b91786686e89374fb4e1ba0e1b9846 +PT= 593b311bc5e3397ce6201678534d99b9cbdfdce6629c6670d793748d526b34c6 +CT= ec545f2970c95c93e5972cd3957ce35e11d74e60ec9b63a5d06e780190b2b2e6 +TEST= 23 +KEY= 8ec221a9981134160ba1c38c4701a54342888ad4d524341130baed4334674171 +IV= ec545f2970c95c93e5972cd3957ce35e11d74e60ec9b63a5d06e780190b2b2e6 +PT= 97a3a60a62275e6c14435f042a4bcbb65d36fab536013061c5754fe7f9f2e9e3 +CT= 73c1cf1227b500dc24189f34f4af14e87054049fba9336f8ba3c4c3c8b64578a +TEST= 24 +KEY= fd03eebbbfa434ca2fb95cb8b3aeb1ab32dc8e4b6fb702e98a86a17fbf0316fb +IV= 73c1cf1227b500dc24189f34f4af14e87054049fba9336f8ba3c4c3c8b64578a +PT= b3f2431d5219136ad1c0e24bcaac4b7bdc0ba2a9e51c811429b03ac163c495a6 +CT= 39126a2f44df1276a9d3a031a47b2390d485d3c2713fb34ddbe7720ce6863f07 +TEST= 25 +KEY= c4118494fb7b26bc866afc8917d5923be6595d891e88b1a45161d373598529fc +IV= 39126a2f44df1276a9d3a031a47b2390d485d3c2713fb34ddbe7720ce6863f07 +PT= 6fd9691f8ba372fe61a3ae3645ed59c608a910856cb73fb3b8cad569709cf2b1 +CT= 8937da9c2c68017b5c4fd0659734814ffd6335ab32b5ef178703b1a95396a466 +TEST= 26 +KEY= 4d265e08d71327c7da252cec80e113741b3a68222c3d5eb3d66262da0a138d9a +IV= 8937da9c2c68017b5c4fd0659734814ffd6335ab32b5ef178703b1a95396a466 +PT= e6733a5f34769306d7236f637d8fa3d30a812f6397c0bbc09faccab5751a8377 +CT= 0b80e06db6b56afad09d916cc8729079744037f2f14c57e704f3711d7f01ad0b +TEST= 27 +KEY= 46a6be6561a64d3d0ab8bd804893830d6f7a5fd0dd710954d29113c775122091 +IV= 0b80e06db6b56afad09d916cc8729079744037f2f14c57e704f3711d7f01ad0b +PT= d3aecf95252c94945154f3ae1be1eb4b274f36e25f6ea1e8567ff1a9a520cbfa +CT= 0b0b4d114196aeb45b1c6d2d5b0fa2efbad9fb9bcab87538fe29f0ec0ee0eb75 +TEST= 28 +KEY= 4dadf3742030e38951a4d0ad139c21e2d5a3a44b17c97c6c2cb8e32b7bf2cbe4 +IV= 0b0b4d114196aeb45b1c6d2d5b0fa2efbad9fb9bcab87538fe29f0ec0ee0eb75 +PT= a059cf110d9a94a99a9ac0dd10197a80bee00bbea2745094e2ca1eebfb828512 +CT= 6c6fe1c26bbd7dc10612ff86533fd83ba46f0f4a69a9d501fd959f70fd190331 +TEST= 29 +KEY= 21c212b64b8d9e4857b62f2b40a3f9d971ccab017e60a96dd12d7c5b86ebc8d5 +IV= 6c6fe1c26bbd7dc10612ff86533fd83ba46f0f4a69a9d501fd959f70fd190331 +PT= 178bfa4c44742ad36b32c90fa8aff608bed9d5c3c3dfb4128377f84f9f64d171 +CT= 8e63fc731f9481714c3ad33048bade88bc21e9c763be188502e7b0e7fab63116 +TEST= 30 +KEY= afa1eec554191f391b8cfc1b08192751cded42c61ddeb1e8d3caccbc7c5df9c3 +IV= 8e63fc731f9481714c3ad33048bade88bc21e9c763be188502e7b0e7fab63116 +PT= f36fce79cda6721e91eba2dea73dd108acf93274c046e3ac408f04fd5fc723c8 +CT= c010eb8d50ff5ad5a1475f1a0a6b6be14519a66daf41a1e2dbca7cd1b2ecdead +TEST= 31 +KEY= 6fb1054804e645ecbacba30102724cb088f4e4abb29f100a0800b06dceb1276e +IV= c010eb8d50ff5ad5a1475f1a0a6b6be14519a66daf41a1e2dbca7cd1b2ecdead +PT= 49fd3923daf5a8d7d4d574983ecba645287d9b41f41aeb10fe8056e0cc6b5fe0 +CT= 15a31f2df4fde3b0a4b04f795617a37bdc3ab8efc84fd258857b71745979b2d3 +TEST= 32 +KEY= 7a121a65f01ba65c1e7bec785465efcb54ce5c447ad0c2528d7bc11997c895bd +IV= 15a31f2df4fde3b0a4b04f795617a37bdc3ab8efc84fd258857b71745979b2d3 +PT= 54aa2a228b487d04e68bfb2517702978d286e49ae2ff4aca9b539641cc8e2233 +CT= 523e65cb539bcc2d2ccb0e9d8e579e64034f2cfe502acf0c98343dfc17d2ac9a +TEST= 33 +KEY= 282c7faea3806a7132b0e2e5da3271af578170ba2afa0d5e154ffce5801a3927 +IV= 523e65cb539bcc2d2ccb0e9d8e579e64034f2cfe502acf0c98343dfc17d2ac9a +PT= 0b878526d633de1a36960931498c5b033f1e6d82c02355f8d9049e0a744d0ab3 +CT= 3e3c00373ea07ebd5924e2c4bc48ae1aba1fbfc5bcd4db708f2b6b6f468aa3ae +TEST= 34 +KEY= 16107f999d2014cc6b940021667adfb5ed9ecf7f962ed62e9a64978ac6909a89 +IV= 3e3c00373ea07ebd5924e2c4bc48ae1aba1fbfc5bcd4db708f2b6b6f468aa3ae +PT= 79fccec566c67b3cdf3058881059ca250d5d7c9dfb992a453cce992de9c82303 +CT= 6c263669d6b800b32c824f2d77ecf20c3b4b65e2db5214c31f012fe7b284c07f +TEST= 35 +KEY= 7a3649f04b98147f47164f0c11962db9d6d5aa9d4d7cc2ed8565b86d74145af6 +IV= 6c263669d6b800b32c824f2d77ecf20c3b4b65e2db5214c31f012fe7b284c07f +PT= 83cbfd213ffe99ed3d3e00453302326c86c54aa52475861bc7f5f8f0d9831ac7 +CT= 540907238cb4e81da3517d39b83fe6f4e081271d957bbd5caf7ca415bc3f35b7 +TEST= 36 +KEY= 2e3f4ed3c72cfc62e4473235a9a9cb4d36548d80d8077fb12a191c78c82b6f41 +IV= 540907238cb4e81da3517d39b83fe6f4e081271d957bbd5caf7ca415bc3f35b7 +PT= 9d2e0bf2119b4cd273227a8532e565f572ded43702a6d3b1b463a2602dcc9a03 +CT= cf93549c8d1bd22de677fbdd344cd4eda63f8ac4de0638b14103a379cc4e2cd4 +TEST= 37 +KEY= e1ac1a4f4a372e4f0230c9e89de51fa0906b0744060147006b1abf0104654395 +IV= cf93549c8d1bd22de677fbdd344cd4eda63f8ac4de0638b14103a379cc4e2cd4 +PT= 57ffa103738ee2e1a79245f2b8e5a179864066141b5d81f603f9401de30fc72d +CT= 9034ec340a56c05f6c957e0c4361ee4e2c7ca21452a1c46a6ebea5dc55bb4ac4 +TEST= 38 +KEY= 7198f67b4061ee106ea5b7e4de84f1eebc17a55054a0836a05a41add51de0951 +IV= 9034ec340a56c05f6c957e0c4361ee4e2c7ca21452a1c46a6ebea5dc55bb4ac4 +PT= 5b91c78b0d083be07395e15c92db0e335cbcee76acce78db5f887e8c806ef9ea +CT= 4df2ece20a840eb8a693e0007a19aa7536b060bf36b8a1af1c8d7538cb711ed5 +TEST= 39 +KEY= 3c6a1a994ae5e0a8c83657e4a49d5b9b8aa7c5ef621822c519296fe59aaf1784 +IV= 4df2ece20a840eb8a693e0007a19aa7536b060bf36b8a1af1c8d7538cb711ed5 +PT= 3da96d2e4cd4cf54b53f073e3ee1eb1b548bbcecedac46bb581ba345cb7b28e0 +CT= 2f524cefaf7583a481bae08d66d3bd5668c166ae803d4b9b821f113c8a79d0eb +TEST= 40 +KEY= 13385676e590630c498cb769c24ee6cde266a341e225695e9b367ed910d6c76f +IV= 2f524cefaf7583a481bae08d66d3bd5668c166ae803d4b9b821f113c8a79d0eb +PT= a945e3f9758bb4719906708882eb30ba5467d6270f6efaa579b0d32d3fa6dc61 +CT= e6d6cc10b0f70720472ab5351cbcf9bbff79787d330551fae23024336f74f2d2 +TEST= 41 +KEY= f5ee9a665567642c0ea6025cdef21f761d1fdb3cd12038a479065aea7fa235bd +IV= e6d6cc10b0f70720472ab5351cbcf9bbff79787d330551fae23024336f74f2d2 +PT= a65d1964177e4a429d256fe0721dc11db2ff2b1cb07cc8fa3a0dcbf3e61394fa +CT= b91159ceb179a5d8dfa4e8885ba22e17921e031c014b7f3dff4e3a09047236d7 +TEST= 42 +KEY= 4cffc3a8e41ec1f4d102ead4855031618f01d820d06b4799864860e37bd0036a +IV= b91159ceb179a5d8dfa4e8885ba22e17921e031c014b7f3dff4e3a09047236d7 +PT= d53cd1112dbd0c8b0e1cb56431b2b311c275f6db2199e528bd50fa664963679b +CT= 39638ebb0c40deb5a18426f425989548f77b78cc0e9758aa45ef424fbd092b3d +TEST= 43 +KEY= 759c4d13e85e1f417086cc20a0c8a429787aa0ecdefc1f33c3a722acc6d92857 +IV= 39638ebb0c40deb5a18426f425989548f77b78cc0e9758aa45ef424fbd092b3d +PT= 4ccb1ae7dd589d6775091f86f5d336262c8dd24590a1d8490974849ce7c26c6f +CT= e979bf327978f41e90e70fb51d1bc1fc73706855cdd23c883e54ac325e6bffcf +TEST= 44 +KEY= 9ce5f2219126eb5fe061c395bdd365d50b0ac8b9132e23bbfdf38e9e98b2d798 +IV= e979bf327978f41e90e70fb51d1bc1fc73706855cdd23c883e54ac325e6bffcf +PT= 840472137c0db9819705027507f822b116401b66caebe7205abf224ffd57b0f1 +CT= e6e54d0db4d459c0c37e52c0d7afc2c460d198d4bed8217d99975fad82ae63e1 +TEST= 45 +KEY= 7a00bf2c25f2b29f231f91556a7ca7116bdb506dadf602c66464d1331a1cb479 +IV= e6e54d0db4d459c0c37e52c0d7afc2c460d198d4bed8217d99975fad82ae63e1 +PT= 2a150615f81b4b8d94a6e50dee6e1c0430cb7e3b082a16204fc319b1cdb5c27f +CT= 9371d8050f02a949248ebdb0dc3e9d303a81da52e6788b1a00dbc7651cf7c0a9 +TEST= 46 +KEY= e97167292af01bd607912ce5b6423a21515a8a3f4b8e89dc64bf165606eb74d0 +IV= 9371d8050f02a949248ebdb0dc3e9d303a81da52e6788b1a00dbc7651cf7c0a9 +PT= 0a14882a47f3de47714c8da62b485cf222a0a3a74666b803c11208415fb16cb0 +CT= ed8d86d71f2b84e9ee78d367c031f3668ede0aca88b3367a88393c3a73b4ad77 +TEST= 47 +KEY= 04fce1fe35db9f3fe9e9ff827673c947df8480f5c33dbfa6ec862a6c755fd9a7 +IV= ed8d86d71f2b84e9ee78d367c031f3668ede0aca88b3367a88393c3a73b4ad77 +PT= deb45941f974ca5c08f4aaa1d66bdf340130f9ee1172a55e9b76a6d4857c5d5a +CT= 269b5a10ad6a9a53dc6a0ab65df75a88916e0d9b4eca2af5c0d0bdc8da13ca44 +TEST= 48 +KEY= 2267bbee98b1056c3583f5342b8493cf4eea8d6e8df795532c5697a4af4c13e3 +IV= 269b5a10ad6a9a53dc6a0ab65df75a88916e0d9b4eca2af5c0d0bdc8da13ca44 +PT= b64483e5f5ed4d670c48dfb91181fcd64bbe5e387a165ff694a17caec04341e7 +CT= 3a0c39d26b3d93c86bdc270d22b6b7a20b4a0ba7570d8d6bbdc09117636edbb3 +TEST= 49 +KEY= 186b823cf38c96a45e5fd2390932246d45a086c9dafa1838919606b3cc22c850 +IV= 3a0c39d26b3d93c86bdc270d22b6b7a20b4a0ba7570d8d6bbdc09117636edbb3 +PT= ea03004d7d62009cdcbc1efc70b366707949d255d056ffa91b0cff695121cc1a +CT= 74ca7726a0febd1cd58451f33bbcf3353505c6afe5c2b8f35306d9eda986828c +TEST= 50 +KEY= 6ca1f51a53722bb88bdb83ca328ed75870a540663f38a0cbc290df5e65a44adc +IV= 74ca7726a0febd1cd58451f33bbcf3353505c6afe5c2b8f35306d9eda986828c +PT= 8084cc311456a854b5605d1134ad45ca0305952f722aa4b1415cde0b242578e3 +CT= e306d4a562e130f98108afa1a25473ca614f5967b9991bc80aef4770f29c88e3 +TEST= 51 +KEY= 8fa721bf31931b410ad32c6b90daa49211ea190186a1bb03c87f982e9738c23f +IV= e306d4a562e130f98108afa1a25473ca614f5967b9991bc80aef4770f29c88e3 +PT= a375c6f4aa265a90e5ce818351f0c806711d3b28f87d960d8d857382dfb528c6 +CT= bba6eede79e917a34867e7d4041087dd7f5f1aaa0d871ba807a864b24bae3453 +TEST= 52 +KEY= 3401cf61487a0ce242b4cbbf94ca234f6eb503ab8b26a0abcfd7fc9cdc96f66c +IV= bba6eede79e917a34867e7d4041087dd7f5f1aaa0d871ba807a864b24bae3453 +PT= b194c9a25ccf0777612934fe63430ef243fbfaaedbc6f4a5458b389a421a35ce +CT= 6a867a0ac5ea735ff12e7a5dd2006bedf8a8c76ed7cc1fd2e16c81fcac1df548 +TEST= 53 +KEY= 5e87b56b8d907fbdb39ab1e246ca48a2961dc4c55ceabf792ebb7d60708b0324 +IV= 6a867a0ac5ea735ff12e7a5dd2006bedf8a8c76ed7cc1fd2e16c81fcac1df548 +PT= 8d0599320cc80c237722932bc922425451a69d152c21e2fbf7a3a575488c6f4d +CT= b1c6521a526c06aace5f29515f3368e6b10bf9f86b02a7bf90be4f19172de132 +TEST= 54 +KEY= ef41e771dffc79177dc598b319f9204427163d3d37e818c6be05327967a6e216 +IV= b1c6521a526c06aace5f29515f3368e6b10bf9f86b02a7bf90be4f19172de132 +PT= a20bcf7f9cd6b7f77b071ba4a6b309faa07ea312a061c4c0549b5ac17004458a +CT= 946daa7ceffd585467b6a739be5435e141040bca559ddf8007aa7cf7d4ce7f72 +TEST= 55 +KEY= 7b2c4d0d300121431a733f8aa7ad15a5661236f76275c746b9af4e8eb3689d64 +IV= 946daa7ceffd585467b6a739be5435e141040bca559ddf8007aa7cf7d4ce7f72 +PT= 70be4670ea94e09835806980cd55e18d4a00305f10e1b853b5d999dd8bdf4001 +CT= 2cb8fb2e5f66bc5ed78595e101382e0ca07f855f6273a803e312627351233ed4 +TEST= 56 +KEY= 5794b6236f679d1dcdf6aa6ba6953ba9c66db3a800066f455abd2cfde24ba3b0 +IV= 2cb8fb2e5f66bc5ed78595e101382e0ca07f855f6273a803e312627351233ed4 +PT= 49b785b1ddf9cefa1a8e4513e09c145d41a390dd05c37c1d9f51af0dbea7590f +CT= 4787529349e000fc3ef20cf5ac9d7126067dea024412e79e727fda7f9f2d4739 +TEST= 57 +KEY= 1013e4b026879de1f304a69e0a084a8fc01059aa441488db28c2f6827d66e489 +IV= 4787529349e000fc3ef20cf5ac9d7126067dea024412e79e727fda7f9f2d4739 +PT= a2f944e927ca58f8d2958b452aa3847efea06d38cd81f5177431856f033cadbd +CT= 53259caef45f848edb3d53565d259e9aa4066e3554ee09df856940b0abec717f +TEST= 58 +KEY= 4336781ed2d8196f2839f5c8572dd4156416379f10fa8104adabb632d68a95f6 +IV= 53259caef45f848edb3d53565d259e9aa4066e3554ee09df856940b0abec717f +PT= 043e21a7bfcac1822e052c07bcaa5b645741cf37b957256322f712e26bcdaea5 +CT= 95e6b35b267c55760356676345c7e55313c9b69c02b285d87b023dacfd92ecb5 +TEST= 59 +KEY= d6d0cb45f4a44c192b6f92ab12ea314677df8103124804dcd6a98b9e2b187943 +IV= 95e6b35b267c55760356676345c7e55313c9b69c02b285d87b023dacfd92ecb5 +PT= 14dcc264b5e45202c0e77317ee3d49f999bbb797ae1edc6acee2d2e2d8322435 +CT= e6c7934eaab01fe3239f7327e0a3f553dd34f76dc9af5ea5909e4fccfd047948 +TEST= 60 +KEY= 3017580b5e1453fa08f0e18cf249c415aaeb766edbe75a794637c452d61c000b +IV= e6c7934eaab01fe3239f7327e0a3f553dd34f76dc9af5ea5909e4fccfd047948 +PT= 90d11ddc8f103b16b269ecd989de5a2b0df184802ee8b4a815b10c7c446bd32c +CT= 7544ac341e9edeedfe816b4175f469f3a6922e6b41fffca448b87cdcf09c6c01 +TEST= 61 +KEY= 4553f43f408a8d17f6718acd87bdade60c7958059a18a6dd0e8fb88e26806c0a +IV= 7544ac341e9edeedfe816b4175f469f3a6922e6b41fffca448b87cdcf09c6c01 +PT= 8193f4a39835b7f718b09bfb7bcef01b6fa8c2276a6aaf92ae300d7d296d06b6 +CT= b2b4420484720c400bdd5f016de22fc4b4598029a1943f6592780a379487c42e +TEST= 62 +KEY= f7e7b63bc4f88157fdacd5ccea5f8222b820d82c3b8c99b89cf7b2b9b207a824 +IV= b2b4420484720c400bdd5f016de22fc4b4598029a1943f6592780a379487c42e +PT= e8ecbe1d83fa665c9506fb473b15710e5a2f5486579c244a2fab547ac824a41f +CT= 3630ca053604b5eb1ceb1007cb181b67150c97d1c2a5d113387f86904ddeadf7 +TEST= 63 +KEY= c1d77c3ef2fc34bce147c5cb21479945ad2c4ffdf92948aba4883429ffd905d3 +IV= 3630ca053604b5eb1ceb1007cb181b67150c97d1c2a5d113387f86904ddeadf7 +PT= 7004a258040b151fffaee9cb0d596febe5404c7e54034dca2b3162ca4f3bff3a +CT= e852e37a002efbfc1b3fb6f9ecf8cb3ee0b81333da9f8e9e6e08f5511545e491 +TEST= 64 +KEY= 29859f44f2d2cf40fa787332cdbf527b4d945cce23b6c635ca80c178ea9ce142 +IV= e852e37a002efbfc1b3fb6f9ecf8cb3ee0b81333da9f8e9e6e08f5511545e491 +PT= 32d22f74ade524dade7cf99d981ac222194d83d618c1ebda120e3c0383beb81e +CT= bc4e585ca927301848023898cfa8f7f9cc068bc1dce77aaa5c844bc2d6f224fe +TEST= 65 +KEY= 95cbc7185bf5ff58b27a4baa0217a5828192d70fff51bc9f96048aba3c6ec5bc +IV= bc4e585ca927301848023898cfa8f7f9cc068bc1dce77aaa5c844bc2d6f224fe +PT= a02bed038afa04a73c74a223e5f06a66871a03fecdac52c9c7f4d970a9f7537c +CT= 198aa7bb6b74f320337cd7c9e4c5fc5e406640f41598fc032ff8c20caa33992d +TEST= 66 +KEY= 8c4160a330810c7881069c63e6d259dcc1f497fbeac9409cb9fc48b6965d5c91 +IV= 198aa7bb6b74f320337cd7c9e4c5fc5e406640f41598fc032ff8c20caa33992d +PT= d0f229a25e32a2beacbb0d2661cc8af00d10915f7e719759ec0d99a5fd701e15 +CT= 2a21acc10515d9abaf30f13c3a969b1675a66c0e1927cb5ef754faee6d3549dd +TEST= 67 +KEY= a660cc623594d5d32e366d5fdc44c2cab452fbf5f3ee8bc24ea8b258fb68154c +IV= 2a21acc10515d9abaf30f13c3a969b1675a66c0e1927cb5ef754faee6d3549dd +PT= 6b929868aa16009c7f0c78f555e171f2a5068c23df1f2130cecf7a6a08081ee7 +CT= 8f9c3284e05dc0d3740468cabbf92460e3aff45f07572db8720c54b6e9368802 +TEST= 68 +KEY= 29fcfee6d5c915005a32059567bde6aa57fd0faaf4b9a67a3ca4e6ee125e9d4e +IV= 8f9c3284e05dc0d3740468cabbf92460e3aff45f07572db8720c54b6e9368802 +PT= 61e560b475b33260e42589cc78c56a47b582a85af409719a0c739b798a3d594a +CT= 815500ef78257b4e787ce5e48bb4740771236d130fc363d0b7fa581774c83996 +TEST= 69 +KEY= a8a9fe09adec6e4e224ee071ec0992ad26de62b9fb7ac5aa8b5ebef96696a4d8 +IV= 815500ef78257b4e787ce5e48bb4740771236d130fc363d0b7fa581774c83996 +PT= 7e53b133bea5ca07309512726bd626e3dc7303c2a8c0dbcda050509abf9a1fd7 +CT= 16179aae5cbab94ee3a15bae211f2dc8e4bb6078b2e036b38f625b613e5e2778 +TEST= 70 +KEY= bebe64a7f156d700c1efbbdfcd16bf65c26502c1499af319043ce59858c883a0 +IV= 16179aae5cbab94ee3a15bae211f2dc8e4bb6078b2e036b38f625b613e5e2778 +PT= 2a66f6cbed857c8b8404f690afd61d99e20dc292f87a2f8751a4d0d1b242cc39 +CT= d79b4073ff273efcc3bca8166e6bf0e1ad8adec7686961c078985b1eb35d3aac +TEST= 71 +KEY= 692524d40e71e9fc025313c9a37d4f846fefdc0621f392d97ca4be86eb95b90c +IV= d79b4073ff273efcc3bca8166e6bf0e1ad8adec7686961c078985b1eb35d3aac +PT= fd82949ef39fed5aac452652a26c9348465e9d96761756a216bc1b6cfb222713 +CT= 56a420dc11c5a1f63f3c4b4ddd7d75785e4438977411d5a5706e6d971cf93f63 +TEST= 72 +KEY= 3f8104081fb4480a3d6f58847e003afc31abe49155e2477c0ccad311f76c866f +IV= 56a420dc11c5a1f63f3c4b4ddd7d75785e4438977411d5a5706e6d971cf93f63 +PT= a2a261e03ea3ca5a1b77e9a4f188ca5a5ba55012d4018f78c8290a5393475d13 +CT= 9f66022f645bb63c2fe75fdc46158fb8080ae41a940495e6e7ff9cb33771475a +TEST= 73 +KEY= a0e706277beffe36128807583815b54439a1008bc1e6d29aeb354fa2c01dc135 +IV= 9f66022f645bb63c2fe75fdc46158fb8080ae41a940495e6e7ff9cb33771475a +PT= 11b1e2b73dc803023e3dd3562b49e7c17275602d0d0c667f08663aacb4bfb61e +CT= 6ee43d1add6ace355adb172254c223fd6c1ae8c549a10b667f3681954f4ba2cf +TEST= 74 +KEY= ce033b3da68530034853107a6cd796b955bbe84e8847d9fc9403ce378f5663fa +IV= 6ee43d1add6ace355adb172254c223fd6c1ae8c549a10b667f3681954f4ba2cf +PT= 44603dd35003fec92db056cac53022ee9f6402e3724be1476a05860167a542cd +CT= 3f2e278fcf4c451805d9db91ae4269d32d7723718a95bcc9450aec078e45628d +TEST= 75 +KEY= f12d1cb269c9751b4d8acbebc295ff6a78cccb3f02d26535d109223001130177 +IV= 3f2e278fcf4c451805d9db91ae4269d32d7723718a95bcc9450aec078e45628d +PT= ebeda504fbeac0d1d81a31b703dd078f03553a4107bf6a72825e70d1b66c2d96 +CT= c18fa1c4e40b116ec999e95942cb0715f387b38222674e80ab70a8d5f7a18211 +TEST= 76 +KEY= 30a2bd768dc26475841322b2805ef87f8b4b78bd20b52bb57a798ae5f6b28366 +IV= c18fa1c4e40b116ec999e95942cb0715f387b38222674e80ab70a8d5f7a18211 +PT= ebfb3919da87f844769a108e1edb22b1b0998f9a54b940c987dbc8aedf0230ec +CT= df644ce298b391b8980ad3bcb032ce25cfb682c02c5eb86439ba23e22e74579d +TEST= 77 +KEY= efc6f1941571f5cd1c19f10e306c365a44fdfa7d0ceb93d143c3a907d8c6d4fb +IV= df644ce298b391b8980ad3bcb032ce25cfb682c02c5eb86439ba23e22e74579d +PT= c1ccbe914c361b93e10aa6476f6a75a666131329f6cd017e22a6220b0b8d0e92 +CT= e6f3a02df2b770fa7afa64a0c3249d81a4820290b6bcc2e0f44b6c66954c2484 +TEST= 78 +KEY= 093551b9e7c6853766e395aef348abdbe07ff8edba575131b788c5614d8af07f +IV= e6f3a02df2b770fa7afa64a0c3249d81a4820290b6bcc2e0f44b6c66954c2484 +PT= 08b47a9b32617a92b0a41e12b6ecdfa13c393c9f2eb8177cdf24cc07f4df9476 +CT= 1317f60b562f43fbd8af605a6e7513b95d69e07a005bd6f745f5cb71ede2a9a3 +TEST= 79 +KEY= 1a22a7b2b1e9c6ccbe4cf5f49d3db862bd161897ba0c87c6f27d0e10a06859dc +IV= 1317f60b562f43fbd8af605a6e7513b95d69e07a005bd6f745f5cb71ede2a9a3 +PT= 7a91c3a44f4f47f0f23a9d7b8918470591db1a6b420123731442635f82c505a4 +CT= 1d91385839daf037dcfe1f18b3e103861633fcd11e2854e685689fef88e4dd9f +TEST= 80 +KEY= 07b39fea883336fb62b2eaec2edcbbe4ab25e446a424d320771591ff288c8443 +IV= 1d91385839daf037dcfe1f18b3e103861633fcd11e2854e685689fef88e4dd9f +PT= d432842ac9c068a24eb06926d060da41d0fa33d190c2a91bacacfce1329a3a75 +CT= dd242499095773d163fd9bb73c20134434e70a3f6db3fd72e210935eabb9c225 +TEST= 81 +KEY= da97bb738164452a014f715b12fca8a09fc2ee79c9972e52950502a183354666 +IV= dd242499095773d163fd9bb73c20134434e70a3f6db3fd72e210935eabb9c225 +PT= b731ddc9176908ea01d2de72c80c3f0229c902cc62a9dd703f2865fd1ff2ca64 +CT= a5625617a30b4643128c34f0e1a8eed669cb2d7e51d7c616bd6b51f49b636c6f +TEST= 82 +KEY= 7ff5ed64226f036913c345abf3544676f609c3079840e844286e535518562a09 +IV= a5625617a30b4643128c34f0e1a8eed669cb2d7e51d7c616bd6b51f49b636c6f +PT= d8dbf6582b0a9d22ea2c2d025888ae29042e1458fe9256112771fc27a9e0340a +CT= c517b0655625ab4043e26c3b7a1bd11e8f16133518e46489c9a52fc1b46ab675 +TEST= 83 +KEY= bae25d01744aa82950212990894f9768791fd03280a48ccde1cb7c94ac3c9c7c +IV= c517b0655625ab4043e26c3b7a1bd11e8f16133518e46489c9a52fc1b46ab675 +PT= c7a09256a49cbcd26a5daaebbd4e65363adc260f523e86b09ab78aae98f477fd +CT= 4f8f784c469f18166a3ef48df7250b2ab98f584d040ff99f0595a2f23c14a0dc +TEST= 84 +KEY= f56d254d32d5b03f3a1fdd1d7e6a9c42c090887f84ab7552e45ede6690283ca0 +IV= 4f8f784c469f18166a3ef48df7250b2ab98f584d040ff99f0595a2f23c14a0dc +PT= 744d3c234d92e37c35dd3a067ada00b01e1468aa3200c7fb446a417b89466b4a +CT= 42f1b8fd084e4239dc9b65af63679eea593b9de123d9b565da9266c73e46d64f +TEST= 85 +KEY= b79c9db03a9bf206e684b8b21d0d02a899ab159ea772c0373eccb8a1ae6eeaef +IV= 42f1b8fd084e4239dc9b65af63679eea593b9de123d9b565da9266c73e46d64f +PT= ec0d17dabe4b0d74b975480a02e4e8c349b2a62cffe22f843ffb46050b468d9f +CT= b46f3eb36c8286d0bdbe32077e9d9d443dfdc0c68f4a136dd90fc11c96ab47a3 +TEST= 86 +KEY= 03f3a303561974d65b3a8ab563909feca456d5582838d35ae7c379bd38c5ad4c +IV= b46f3eb36c8286d0bdbe32077e9d9d443dfdc0c68f4a136dd90fc11c96ab47a3 +PT= 23fa67a140706d9d49804e2f72f5c4a7ec745755da0f8429699e00cde920c14b +CT= a5daf94b0ff49c2672a5a8bcc1389ba115eb8e441ee9e29173256170363c1bba +TEST= 87 +KEY= a6295a4859ede8f0299f2209a2a8044db1bd5b1c36d131cb94e618cd0ef9b6f6 +IV= a5daf94b0ff49c2672a5a8bcc1389ba115eb8e441ee9e29173256170363c1bba +PT= 22258058e532ae5534371d97afe8c284259f71166cd3fbcc5528698aa0dcf819 +CT= de63b58f8672082498d3da597eebfa84b708736655a42ed11c66ee045cf25bae +TEST= 88 +KEY= 784aefc7df9fe0d4b14cf850dc43fec906b5287a63751f1a8880f6c9520bed58 +IV= de63b58f8672082498d3da597eebfa84b708736655a42ed11c66ee045cf25bae +PT= 771535c3400979a255e5140d9a1a27a4cf14fce3353e1965d1a46ac4f9dc03d3 +CT= 1ba2b0b749502105cd45060296b79556343eacdff5b966ea0f7b191eac9fce7e +TEST= 89 +KEY= 63e85f7096cfc1d17c09fe524af46b9f328b84a596cc79f087fbefd7fe942326 +IV= 1ba2b0b749502105cd45060296b79556343eacdff5b966ea0f7b191eac9fce7e +PT= fe67c82b1eae4aeb4532a3b677c6d92856efc73f69784b6f8803f32de2c51e48 +CT= 4fc013a15bbba1183e440e3481cd7b6111e31d0b076bb94af5c8de67b39f1890 +TEST= 90 +KEY= 2c284cd1cd7460c9424df066cb3910fe236899ae91a7c0ba723331b04d0b3bb6 +IV= 4fc013a15bbba1183e440e3481cd7b6111e31d0b076bb94af5c8de67b39f1890 +PT= 746220371ed67b6de6bbb1bc9fe073200cde5b61855472ea09ab283e08aa00f1 +CT= 9ec19e49c67b8977345ee34bf242a7d028104c3a1e9fc4541f028cd94ac8c73b +TEST= 91 +KEY= b2e9d2980b0fe9be7613132d397bb72e0b78d5948f3804ee6d31bd6907c3fc8d +IV= 9ec19e49c67b8977345ee34bf242a7d028104c3a1e9fc4541f028cd94ac8c73b +PT= 24bb9e26abff71932c804ae855b0b506e843305be1a89cdd0668e0c34b841683 +CT= c77212a7fa65829041a5bb0829995e263ecb52ee50306a948096ab7f3519d678 +TEST= 92 +KEY= 759bc03ff16a6b2e37b6a82510e2e90835b3877adf086e7aeda7161632da2af5 +IV= c77212a7fa65829041a5bb0829995e263ecb52ee50306a948096ab7f3519d678 +PT= 184fdc29113a8e4c6926a7c1c64ba6604caa24a9ed542529fe698a142fea707b +CT= 2683187e85d5a8ffb9e4ba95d235390fbdf7f0d0c55b76a25b129d09cf23024b +TEST= 93 +KEY= 5318d84174bfc3d18e5212b0c2d7d007884477aa1a5318d8b6b58b1ffdf928be +IV= 2683187e85d5a8ffb9e4ba95d235390fbdf7f0d0c55b76a25b129d09cf23024b +PT= aae1b9c21c90880760646779ead316ca18fe0765696b5d68e681980ff0f9f6c5 +CT= 0f5c1be1e072f9df6332e0f2ef70080fe86300c0a57cc5b14447c4efad3ce4cc +TEST= 94 +KEY= 5c44c3a094cd3a0eed60f2422da7d8086027776abf2fdd69f2f24ff050c5cc72 +IV= 0f5c1be1e072f9df6332e0f2ef70080fe86300c0a57cc5b14447c4efad3ce4cc +PT= a4787e92cc109ea407365fd177e8e2a6bcbed580d1cc6c07e8b3867cdb1a4b26 +CT= dfc4383f7dd57d98c52e315308cb6d3f31059d3e9598403b32dfce8c0b760ef1 +TEST= 95 +KEY= 8380fb9fe9184796284ec311256cb5375122ea542ab79d52c02d817c5bb3c283 +IV= dfc4383f7dd57d98c52e315308cb6d3f31059d3e9598403b32dfce8c0b760ef1 +PT= 8497d2c5225bd4c9bca0f5cec93b0927c92dfa0dc81f0091e0f7a2548a7bee18 +CT= d52f8cdf9ac43b3ae1778e9dec23488e34e58164adc3d0361ab543f7cdada820 +TEST= 96 +KEY= 56af774073dc7cacc9394d8cc94ffdb965c76b3087744d64da98c28b961e6aa3 +IV= d52f8cdf9ac43b3ae1778e9dec23488e34e58164adc3d0361ab543f7cdada820 +PT= a2d8158288796ea6ea2a0f42758917eae971ffa22f17860c6bd4ef67388ec6ca +CT= c2399c8ff685abd366a648a5ef015072bd027ea4549d5f9ef0ece90034838deb +TEST= 97 +KEY= 9496ebcf8559d77faf9f0529264eadcbd8c51594d3e912fa2a742b8ba29de748 +IV= c2399c8ff685abd366a648a5ef015072bd027ea4549d5f9ef0ece90034838deb +PT= 84793b27129bd4115bc6a9ab8f5d28d1feb193a8cf282d8b0f40f2bef63c397a +CT= 1586fdc171a8dd7113683e3233c6685a72a430008d51ea4c1ff26401c2cb3a9b +TEST= 98 +KEY= 8110160ef4f10a0ebcf73b1b1588c591aa6125945eb8f8b635864f8a6056ddd3 +IV= 1586fdc171a8dd7113683e3233c6685a72a430008d51ea4c1ff26401c2cb3a9b +PT= 37c60b42e19b69422351a2bad109cecaed61a3c88ce0e49eabb683c6c750c43b +CT= f22fd5e4eb5b024a7881ebff049441f99023854b3c552d6caf17eba5756d599a +TEST= 99 +KEY= 733fc3ea1faa0844c476d0e4111c84683a42a0df62edd5da9a91a42f153b8449 +IV= f22fd5e4eb5b024a7881ebff049441f99023854b3c552d6caf17eba5756d599a +PT= e5f80190486acd49c13d6c523dd03262c137009e16039ddcca360bb9c80eefbd +CT= c013577e7863d57e702d59ab4737f4095a5785153de9e40369ebe07181ae2574 +TEST= 100 +KEY= b32c949467c9dd3ab45b894f562b7061601525ca5f0431d9f37a445e9495a13d +IV= c013577e7863d57e702d59ab4737f4095a5785153de9e40369ebe07181ae2574 +PT= 0d29760291f1a1bc7befbf142feaf2d167193ea2dcc44dde61db0e91ac679990 +CT= 5d082cdad7d9a0f1c09487b36d2cfd194e39dde3a2eaa02a6caea712b93250d0 +TEST= 101 +KEY= ee24b84eb0107dcb74cf0efc3b078d782e2cf829fdee91f39fd4e34c2da7f1ed +IV= 5d082cdad7d9a0f1c09487b36d2cfd194e39dde3a2eaa02a6caea712b93250d0 +PT= f98c028fb798cd276875b0b1ec7eed85e73dfd9243f7bcc07151dec11e818778 +CT= de0f2a28ab4f525364ca706db7598a8567f4bf84d752c8efac292d4652935f32 +TEST= 102 +KEY= 302b92661b5f2f9810057e918c5e07fd49d847ad2abc591c33fdce0a7f34aedf +IV= de0f2a28ab4f525364ca706db7598a8567f4bf84d752c8efac292d4652935f32 +PT= 3210d2c9061c3009bbac91ec33df662e2a5df5a527bbed357dba9b2a76254357 +CT= 6149a6c08c685334a6ff029c35e4e91485e6ad1d112fc7e78335979ca835e86c +TEST= 103 +KEY= 516234a697377cacb6fa7c0db9baeee9cc3eeab03b939efbb0c85996d70146b3 +IV= 6149a6c08c685334a6ff029c35e4e91485e6ad1d112fc7e78335979ca835e86c +PT= 5d853ddee08ac333c17403ba694c715150f805c10c1f53b2ac84edbcc8be1ebd +CT= 87ffe581926b9f8503700591f34559368c4d14051bab70ee4f52fa28d115fca6 +TEST= 104 +KEY= d69dd127055ce329b58a799c4affb7df4073feb52038ee15ff9aa3be0614ba15 +IV= 87ffe581926b9f8503700591f34559368c4d14051bab70ee4f52fa28d115fca6 +PT= 7bae1e97a391af98d88c7ef71fee09e4ad4770d0528aeb8a174c52f6e27ea5dc +CT= 5b4e9eda2acc480391cdbdf4efb1f6fa7f382e689430f3625fa3cc56490c1a4e +TEST= 105 +KEY= 8dd34ffd2f90ab2a2447c468a54e41253f4bd0ddb4081d77a0396fe84f18a05b +IV= 5b4e9eda2acc480391cdbdf4efb1f6fa7f382e689430f3625fa3cc56490c1a4e +PT= a86d9ff5bbcc8081a20013363b955a5e92597750f4d0d8cc3927bdc20560414b +CT= 57649ab41a7717adb88186464dfec7704904e682ebc2d439d1fb73899d8e2f77 +TEST= 106 +KEY= dab7d54935e7bc879cc6422ee8b08655764f365f5fcac94e71c21c61d2968f2c +IV= 57649ab41a7717adb88186464dfec7704904e682ebc2d439d1fb73899d8e2f77 +PT= d3f846eeaa857b4d8e2a320773075bc155a49f4aca67e62b4440357bd890a6c8 +CT= 9b798d4a34626e80236beffc7e398026625a9d74f9c5e4731d530b4fa0ada5bb +TEST= 107 +KEY= 41ce58030185d207bfadadd2968906731415ab2ba60f2d3d6c91172e723b2a97 +IV= 9b798d4a34626e80236beffc7e398026625a9d74f9c5e4731d530b4fa0ada5bb +PT= d44d52e5bee8469790ba9f8fb570b80e7bd1ba9e4195d807bd20ad9f4f06bed7 +CT= 06fde6cf2519d539df06da6a89e2aaee0567c19166e594e2f5e8ea5c2f44d281 +TEST= 108 +KEY= 4733becc249c073e60ab77b81f6bac9d11726abac0eab9df9979fd725d7ff816 +IV= 06fde6cf2519d539df06da6a89e2aaee0567c19166e594e2f5e8ea5c2f44d281 +PT= 7fdbc4ba86711d63282f70ca63443171086b971734a3bf9420d8900f9f321b0f +CT= 19786b981c91e7c6a580c769c70029c9de2ccccf8cd29f00aaa728d4efd0b9b7 +TEST= 109 +KEY= 5e4bd554380de0f8c52bb0d1d86b8554cf5ea6754c3826df33ded5a6b2af41a1 +IV= 19786b981c91e7c6a580c769c70029c9de2ccccf8cd29f00aaa728d4efd0b9b7 +PT= 86d0b03f20a3a48d4da572928f6d3db1a98a5654dde7d003c3cc9d6bc8ca6cc0 +CT= a26f3d2e199d364db24e954f14af4412f04746271715bfc42c59b9ec3b8d9aab +TEST= 110 +KEY= fc24e87a2190d6b57765259eccc4c1463f19e0525b2d991b1f876c4a8922db0a +IV= a26f3d2e199d364db24e954f14af4412f04746271715bfc42c59b9ec3b8d9aab +PT= afbee553435271dcf20b343309fc4b3784e49c8691bb817048a9e2ba261d398e +CT= 59e1129284c2f28c23ceae38748e94d4d95dc813898a2484e6de38acc61fafb3 +TEST= 111 +KEY= a5c5fae8a552243954ab8ba6b84a5592e6442841d2a7bd9ff95954e64f3d74b9 +IV= 59e1129284c2f28c23ceae38748e94d4d95dc813898a2484e6de38acc61fafb3 +PT= 5cc4f1c85e3f74105ed19f6879621ab61f68e2349edf9b1cdb373f25f42a3f84 +CT= 869083d6c7575b4af06ffd59c40073bdccab6c1a526c0cf40c9f38730cb8cfad +TEST= 112 +KEY= 2355793e62057f73a4c476ff7c4a262f2aef445b80cbb16bf5c66c954385bb14 +IV= 869083d6c7575b4af06ffd59c40073bdccab6c1a526c0cf40c9f38730cb8cfad +PT= 376088ef1f200d8954300fb3fff8604eb8a0071a8f13201caa501e4e362c9246 +CT= c734f7199be440a3490f4c9ba786087eca4c50b21069b4730e81f790194d7de0 +TEST= 113 +KEY= e4618e27f9e13fd0edcb3a64dbcc2e51e0a314e990a20518fb479b055ac8c6f4 +IV= c734f7199be440a3490f4c9ba786087eca4c50b21069b4730e81f790194d7de0 +PT= 6176792ccba1279e8a13bda6307e1947d8636dd91986a98e44cef8f65caa96f4 +CT= 04a0edb24f5ee80877bab6df041a69070ae7818d85e760be42ce85def7dcaa3f +TEST= 114 +KEY= e0c16395b6bfd7d89a718cbbdfd64756ea449564154565a6b9891edbad146ccb +IV= 04a0edb24f5ee80877bab6df041a69070ae7818d85e760be42ce85def7dcaa3f +PT= 53d837fb614e1c8d6c35cf10fee19369ee3e3f537c0e4e9c87cf375ed546e954 +CT= 5383a15fa8af6f76040a524be0adce66bcef677799f8544a4afc24dfb3f6fed9 +TEST= 115 +KEY= b342c2ca1e10b8ae9e7bdef03f7b893056abf2138cbd31ecf3753a041ee29212 +IV= 5383a15fa8af6f76040a524be0adce66bcef677799f8544a4afc24dfb3f6fed9 +PT= ce04be3cdb651cdf294e2171a8664a46f6479c8783fe856ad931494cfe41aafe +CT= 956cefca92c9c885cd4a2b0235d0a85ac95085c3ca85d86f9cfd9550a2d30604 +TEST= 116 +KEY= 262e2d008cd9702b5331f5f20aab216a9ffb77d04638e9836f88af54bc319416 +IV= 956cefca92c9c885cd4a2b0235d0a85ac95085c3ca85d86f9cfd9550a2d30604 +PT= 37b0c3c4d42010a1a9e1ccb5294a0eaebbb5309d1346bddb30c84da987dc498d +CT= 8aad16625a1e0a6312578e8f5c298dd6d32a33fd5a845ecba2b7152bf152479a +TEST= 117 +KEY= ac833b62d6c77a4841667b7d5682acbc4cd1442d1cbcb748cd3fba7f4d63d38c +IV= 8aad16625a1e0a6312578e8f5c298dd6d32a33fd5a845ecba2b7152bf152479a +PT= 2e22d33b934f18a9e4b664c285012379c3735f569f2f6ee4f0f7df29262a7aef +CT= 194804bf85c2d99366d95a0295dca09980736531dec1716b1824939dfee13988 +TEST= 118 +KEY= b5cb3fdd5305a3db27bf217fc35e0c25cca2211cc27dc623d51b29e2b382ea04 +IV= 194804bf85c2d99366d95a0295dca09980736531dec1716b1824939dfee13988 +PT= d183ddd466395c2c704bff1c025508bc745b07bfe5ba4d45f39dc307bbbe3933 +CT= 9b89f30c2d63ed2356542d88da7304eb8b1966343125db8f6b4157154f3d6152 +TEST= 119 +KEY= 2e42ccd17e664ef871eb0cf7192d08ce47bb4728f3581dacbe5a7ef7fcbf8b56 +IV= 9b89f30c2d63ed2356542d88da7304eb8b1966343125db8f6b4157154f3d6152 +PT= be41dbe616cdcf103abbf34ef9595035083e8043551ad74643abb0c10d80b152 +CT= d5374bd4f5a76022b690819b08c5504eaba4cb3c381784ac1312a3b5f5bf7c7b +TEST= 120 +KEY= fb7587058bc12edac77b8d6c11e85880ec1f8c14cb4f9900ad48dd420900f72d +IV= d5374bd4f5a76022b690819b08c5504eaba4cb3c381784ac1312a3b5f5bf7c7b +PT= c2549561d783d3a3ae41889a8d3bddcb404d3089f34274b8e77f10e4dde2d051 +CT= f29c102ef7fe9ba6dd94de3f5a7225b6cfe75459231df24bf57b60f9fd42ddc7 +TEST= 121 +KEY= 09e9972b7c3fb57c1aef53534b9a7d3623f8d84de8526b4b5833bdbbf4422aea +IV= f29c102ef7fe9ba6dd94de3f5a7225b6cfe75459231df24bf57b60f9fd42ddc7 +PT= db7e5325b1b5ded737b82ede55de54d91195acfc58ed1f40458fce56319fed6c +CT= da880d36a3fd23099f5d00329d830f1e183e9bddf0946ef2343c16f5002d0b97 +TEST= 122 +KEY= d3619a1ddfc2967585b25361d61972283bc6439018c605b96c0fab4ef46f217d +IV= da880d36a3fd23099f5d00329d830f1e183e9bddf0946ef2343c16f5002d0b97 +PT= 56bb3f8b3a4fa1f3bf39efbf28e7fa8c54adc9e2fb8d2f145bf8f0d000e57fda +CT= cc0bd6b5203f3c872ce42ce65fb18181c93f901e137e180dcfbb77dee962b4c3 +TEST= 123 +KEY= 1f6a4ca8fffdaaf2a9567f8789a8f3a9f2f9d38e0bb81db4a3b4dc901d0d95be +IV= cc0bd6b5203f3c872ce42ce65fb18181c93f901e137e180dcfbb77dee962b4c3 +PT= 4edf037601066289d72d24fdaccc7956085d9f92ac290462d6160b97b6e5a2ca +CT= 4490be046ffed3097536979650898d0246047ef947d7f885e7d9bc455062b79d +TEST= 124 +KEY= 5bfaf2ac900379fbdc60e811d9217eabb4fdad774c6fe531446d60d54d6f2223 +IV= 4490be046ffed3097536979650898d0246047ef947d7f885e7d9bc455062b79d +PT= 1c6d2c41d4a30ea3629a412d153962313bb2a017ac4c6222afd700e267b39ec9 +CT= a2652f2e2d471cd72fe10a7b43285cefad37bd661a1f5d7ef99c6bac9f171e19 +TEST= 125 +KEY= f99fdd82bd44652cf381e26a9a09224419ca10115670b84fbdf10b79d2783c3a +IV= a2652f2e2d471cd72fe10a7b43285cefad37bd661a1f5d7ef99c6bac9f171e19 +PT= 10991f2913ab27dbb92746997524ea9a53b637bbc8c26527aedf55837027708e +CT= 06cd08e5e13353d5fa770a5a1e26215ae29be89375277026984eda24b16f1ad3 +TEST= 126 +KEY= ff52d5675c7736f909f6e830842f031efb51f8822357c86925bfd15d631726e9 +IV= 06cd08e5e13353d5fa770a5a1e26215ae29be89375277026984eda24b16f1ad3 +PT= ccdee03071708513d16c42e9dc57c532ae6d37cdb48e56fa047f1e028cda4a74 +CT= 1fe396931b4b2c26b4a231c494ebd1b95e06d07bbb127e8dfedffe1cf541ac75 +TEST= 127 +KEY= e0b143f4473c1adfbd54d9f410c4d2a7a55728f99845b6e4db602f4196568a9c +IV= 1fe396931b4b2c26b4a231c494ebd1b95e06d07bbb127e8dfedffe1cf541ac75 +PT= c1373ff7014e209911c79dfe4d14febf7a23c21f7a3e7587f549f093e47d3bb2 +CT= c0188ce18370f5c43adc7436edd3f4a5f37825b632b304c59835a6e9f4c1899b +TEST= 128 +KEY= 20a9cf15c44cef1b8788adc2fd172602562f0d4faaf6b221435589a862970307 +IV= c0188ce18370f5c43adc7436edd3f4a5f37825b632b304c59835a6e9f4c1899b +PT= a06c444a7f0b7a50f8217e9bfbe2a490e26474395ef931c15a9fde839d752326 +CT= 6ad2f50f794c2d78b8a7df022b274fc46db9a57706c6313c6307d93a22056b45 +TEST= 129 +KEY= 4a7b3a1abd00c2633f2f72c0d63069c63b96a838ac30831d2052509240926842 +IV= 6ad2f50f794c2d78b8a7df022b274fc46db9a57706c6313c6307d93a22056b45 +PT= b0fc152556e77372be9bee42dcacea3f9d134462c92ca271f6b6fbea3f48ddf8 +CT= 107b5e3eb65dea365c573ef953a480a6ca29ab163e2f74b472e4958527d0e8fa +TEST= 130 +KEY= 5a0064240b5d285563784c398594e960f1bf032e921ff7a952b6c517674280b8 +IV= 107b5e3eb65dea365c573ef953a480a6ca29ab163e2f74b472e4958527d0e8fa +PT= dfcb05ccc6801c9737f8f59a1652956b827d42612af03125de5b9194d114fc72 +CT= 11c313f8f5762c904b196df434bb000d5cbb12a60f967eb8ae956c74cc2fd231 +TEST= 131 +KEY= 4bc377dcfe2b04c5286121cdb12fe96dad0411889d898911fc23a963ab6d5289 +IV= 11c313f8f5762c904b196df434bb000d5cbb12a60f967eb8ae956c74cc2fd231 +PT= 4bb050ec613933399e7a83587812f3d37ce0a377dbeb41a4d6edc22698fd96eb +CT= 61a7b0b08675eaef3be2e2bbeda4f66515b8799749d00098da4234741e820d5f +TEST= 132 +KEY= 2a64c76c785eee2a1383c3765c8b1f08b8bc681fd459898926619d17b5ef5fd6 +IV= 61a7b0b08675eaef3be2e2bbeda4f66515b8799749d00098da4234741e820d5f +PT= 18b65226bfff751b0219191edc90948f663661c66fb0603a1a30c4c337cb38e2 +CT= 5cbf838c53a26a9f57f09bdbca18cf655f1e8342b5be904a76982c800c71c75c +TEST= 133 +KEY= 76db44e02bfc84b5447358ad9693d06de7a2eb5d61e719c350f9b197b99e988a +IV= 5cbf838c53a26a9f57f09bdbca18cf655f1e8342b5be904a76982c800c71c75c +PT= 0147f92e71449ba7b74e71269337377bb583bfafb7ed067eb81d9dd68990f94e +CT= 213d4f6406e17158fc77164b4f162fe4c14884b2f87bd77a7eccd61dae4b5599 +TEST= 134 +KEY= 57e60b842d1df5edb8044ee6d985ff8926ea6fef999cceb92e35678a17d5cd13 +IV= 213d4f6406e17158fc77164b4f162fe4c14884b2f87bd77a7eccd61dae4b5599 +PT= da331b96d41373895196dad947bdb73185cf45008464b1affeef9d7f0a3a4338 +CT= fd18708af557d67d30d25b226941492e07882e0ee32091079d0a36439e78c20d +TEST= 135 +KEY= aafe7b0ed84a239088d615c4b0c4b6a7216241e17abc5fbeb33f51c989ad0f1e +IV= fd18708af557d67d30d25b226941492e07882e0ee32091079d0a36439e78c20d +PT= 75e38f71b067815cf0cec921ccd5fa77dee408951076f768b2abc945a4bcb4af +CT= dc9e2645421c26f80607b3c4131a7f9b4efb39c6a788603d9478ecf46813d6e0 +TEST= 136 +KEY= 76605d4b9a5605688ed1a600a3dec93c6f997827dd343f832747bd3de1bed9fe +IV= dc9e2645421c26f80607b3c4131a7f9b4efb39c6a788603d9478ecf46813d6e0 +PT= 9907f345d118f2b3d4dd62b7295ac5488c36e1925eb0947c98080505939a89e2 +CT= a4d6371b2ac30af5066c57d0b7a2711130dc9b7306e3fa39cbcbd6655864a1f1 +TEST= 137 +KEY= d2b66a50b0950f9d88bdf1d0147cb82d5f45e354dbd7c5baec8c6b58b9da780f +IV= a4d6371b2ac30af5066c57d0b7a2711130dc9b7306e3fa39cbcbd6655864a1f1 +PT= f9aca382f5840ef3b91df7c00d1083eb56bf15a5dab838ac82306dc379f36576 +CT= 5e6ebe77fed81dd322a6a235a1051503299639f69580134b2fb9640d3ba1cb73 +TEST= 138 +KEY= 8cd8d4274e4d124eaa1b53e5b579ad2e76d3daa24e57d6f1c3350f55827bb37c +IV= 5e6ebe77fed81dd322a6a235a1051503299639f69580134b2fb9640d3ba1cb73 +PT= 54f7e01e65f2abaef2c1a20c95c26f784d52111edf359dac9a27d5fc58e0fbfa +CT= a405870233aa4e6f0d8dd526a733dfa3806be4d39b6322a674f5dfc2904ff61e +TEST= 139 +KEY= 28dd53257de75c21a79686c3124a728df6b83e71d534f457b7c0d09712344562 +IV= a405870233aa4e6f0d8dd526a733dfa3806be4d39b6322a674f5dfc2904ff61e +PT= 92643ad64fbf32093ab5e00a031f6b5cec404e39a936240b7adf718860e4e00b +CT= 0dc790fa66bfb779d4ee36d5d0f21e6b6187d1b0dbf12dab5cad1e02553f6213 +TEST= 140 +KEY= 251ac3df1b58eb587378b016c2b86ce6973fefc10ec5d9fceb6dce95470b2771 +IV= 0dc790fa66bfb779d4ee36d5d0f21e6b6187d1b0dbf12dab5cad1e02553f6213 +PT= 29784fdacfc882b5b86d00947d034c05fc24bcd53d00d97277ecc8a9b4c49f02 +CT= 4328f7ada5d0784a3cea806e1c0fd53c849a4f1d1919bae60a6b33739d7b0b3f +TEST= 141 +KEY= 66323472be8893124f923078deb7b9da13a5a0dc17dc631ae106fde6da702c4e +IV= 4328f7ada5d0784a3cea806e1c0fd53c849a4f1d1919bae60a6b33739d7b0b3f +PT= 8385d513818e2ef45c6a53dc52cf876b9bdfe1667aa7b3dbc980dabe089b9292 +CT= dce610e03d1d58940020519819b244d4686abc9d94fbd173d9b1a7b97fef3363 +TEST= 142 +KEY= bad424928395cb864fb261e0c705fd0e7bcf1c418327b26938b75a5fa59f1f2d +IV= dce610e03d1d58940020519819b244d4686abc9d94fbd173d9b1a7b97fef3363 +PT= d32800ecfe234d776dbebd887c252aa0a8bac042aa8f188bbc6bbc716a745739 +CT= 5c0f48e047a18286369c226071a327d5c1a32ab202f4a9c299a028ff7db9918b +TEST= 143 +KEY= e6db6c72c4344900792e4380b6a6dadbba6c36f381d31baba11772a0d8268ea6 +IV= 5c0f48e047a18286369c226071a327d5c1a32ab202f4a9c299a028ff7db9918b +PT= 237237e5d290ed39d75699d4ec42950c2819ae12f978f776e0e245391f4536ab +CT= f436cb85e917ed270427f5260ac551759e76a10b5b8dd210568c6f2b69445051 +TEST= 144 +KEY= 12eda7f72d23a4277d09b6a6bc638bae241a97f8da5ec9bbf79b1d8bb162def7 +IV= f436cb85e917ed270427f5260ac551759e76a10b5b8dd210568c6f2b69445051 +PT= c0e03e4d441995a2e3a96d5523a717f396c47716282d306a847228b40f4c59f8 +CT= f53312a63937cf8392ad7a310eb886c4505caa04a51aa5e5d4458dedf6f6c12d +TEST= 145 +KEY= e7deb55114146ba4efa4cc97b2db0d6a74463dfc7f446c5e23de906647941fda +IV= f53312a63937cf8392ad7a310eb886c4505caa04a51aa5e5d4458dedf6f6c12d +PT= 46108b5a0ef4211a7106c35954a896fe283c8373884072de2504efaaec05069d +CT= 4a7d180cfceb7abd71f6f5220b120581fefe71356554af9ae51c5d705f041505 +TEST= 146 +KEY= ada3ad5de8ff11199e5239b5b9c908eb8ab84cc91a10c3c4c6c2cd1618900adf +IV= 4a7d180cfceb7abd71f6f5220b120581fefe71356554af9ae51c5d705f041505 +PT= 0131ff323a4d805dbfb94d9fd8f6afc7321851bbbd9746ef6264eb1b0ee6338d +CT= abb32eca8f42c17873411d6a9cfb69e58022804a54c1ed0b4afb48a0367ce987 +TEST= 147 +KEY= 0610839767bdd061ed1324df2532610e0a9acc834ed12ecf8c3985b62eece358 +IV= abb32eca8f42c17873411d6a9cfb69e58022804a54c1ed0b4afb48a0367ce987 +PT= 6a339e614d712f760a27dc0e3866c4ab138894c7eef84d6639bd41e6abe5747c +CT= 0c6eff22da8705457dbc3882e55be320263941319aea015f184081129c3c4722 +TEST= 148 +KEY= 0a7e7cb5bd3ad52490af1c5dc069822e2ca38db2d43b2f90947904a4b2d0a47a +IV= 0c6eff22da8705457dbc3882e55be320263941319aea015f184081129c3c4722 +PT= 4489a4dd1847579e4c69be2f7eca863c5bcf4aedaafe815aabd6ae2dae80caa2 +CT= 3615375c267b956a17db49f6b36370c2ebc20bd6e09d2107db2e029c723b5905 +TEST= 149 +KEY= 3c6b4be99b41404e877455ab730af2ecc761866434a60e974f570638c0ebfd7f +IV= 3615375c267b956a17db49f6b36370c2ebc20bd6e09d2107db2e029c723b5905 +PT= ea6ff7e8602d9aef6511efd97926ad412cb2465d61b80a311b7229f33dcd6112 +CT= 1c48fce1da0223b8fb19c1fea1eb647ca686c373c3daa14d69530417e0ab4eef +TEST= 150 +KEY= 2023b708414363f67c6d9455d2e1969061e74517f77cafda2604022f2040b390 +IV= 1c48fce1da0223b8fb19c1fea1eb647ca686c373c3daa14d69530417e0ab4eef +PT= 61f594f1f7b0b88a66b002fcf78b439fd5677febce182e06177f16cafd79cb72 +CT= e9aa779bc1d47be867bae3d10dc7868707e3f6a5509ae24007c8270ddfea9acc +TEST= 151 +KEY= c989c0938097181e1bd77784df2610176604b3b2a7e64d9a21cc2522ffaa295c +IV= e9aa779bc1d47be867bae3d10dc7868707e3f6a5509ae24007c8270ddfea9acc +PT= 395fc8964bb1cc694026c08b21fe77256dde55442626390f2ee762df21fdc22f +CT= 202bc7a5a2eae7df82c2f19927bcaae234dbef570c2398cc6dd1e03e88b2cd52 +TEST= 152 +KEY= e9a20736227dffc19915861df89abaf552df5ce5abc5d5564c1dc51c7718e40e +IV= 202bc7a5a2eae7df82c2f19927bcaae234dbef570c2398cc6dd1e03e88b2cd52 +PT= da1500c6680a435c2bf32d716d8f67dc781ff6d368e632bf81608eec572761c7 +CT= dcd1336ac49008670c979855f12bb626e9fb3226102bde54e531148079a94597 +TEST= 153 +KEY= 3573345ce6edf7a695821e4809b10cd3bb246ec3bbee0b02a92cd19c0eb1a199 +IV= dcd1336ac49008670c979855f12bb626e9fb3226102bde54e531148079a94597 +PT= d206ae257e208f5202cf23fbe7efb7fa41d1096ab40f5aaa624ea98417040cf1 +CT= 36066750d43350a822da7736bc6e7c293843b6d90c2a84233da812327c193246 +TEST= 154 +KEY= 0375530c32dea70eb758697eb5df70fa8367d81ab7c48f219484c3ae72a893df +IV= 36066750d43350a822da7736bc6e7c293843b6d90c2a84233da812327c193246 +PT= 92c52091577d6211eacf8d503f63ce84ffb8288067ff577d7e9e3390c985aeae +CT= 789b07174ad15060649a772d11cd3114690e9a3894ca3c5991608fc8fed31b8a +TEST= 155 +KEY= 7bee541b780ff76ed3c21e53a41241eeea694222230eb37805e44c668c7b8855 +IV= 789b07174ad15060649a772d11cd3114690e9a3894ca3c5991608fc8fed31b8a +PT= 6d4930081923cc56ebe5b643b113bdcf5770c5f983805b70bb2d3ead0402cbb4 +CT= 0f0be0ce8b450fd473d6a16bf115780db6a3aa8b40696bb508903271a5f2ec5f +TEST= 156 +KEY= 74e5b4d5f34af8baa014bf38550739e35ccae8a96367d8cd0d747e172989640a +IV= 0f0be0ce8b450fd473d6a16bf115780db6a3aa8b40696bb508903271a5f2ec5f +PT= 134ffa9d39cc9810c8cb901d8c337f19c13787d4e0324ecf0129efc97acb3e65 +CT= c0f2d7cfece4a23bb545c3e618f8535ea1b9423af692c3bd00f341797343b47a +TEST= 157 +KEY= b417631a1fae5a8115517cde4dff6abdfd73aa9395f51b700d873f6e5acad070 +IV= c0f2d7cfece4a23bb545c3e618f8535ea1b9423af692c3bd00f341797343b47a +PT= 67ea031f7bddf7397cf67cd2573edf753abbd1bcce4e8d9bbb8957b16c5d6fe8 +CT= 28553b362a848b33899606d6587f0af31885a4dc596eedff78e683bf8743f4c4 +TEST= 158 +KEY= 9c42582c352ad1b29cc77a081580604ee5f60e4fcc9bf68f7561bcd1dd8924b4 +IV= 28553b362a848b33899606d6587f0af31885a4dc596eedff78e683bf8743f4c4 +PT= 47d9c1f0ae7938be64d87828845e01b92236e3dd734635e650c7e2c63b2bc597 +CT= d6215d0d1098c603f3897a94c7fe0f39d02b84bf6b1c2d96cb8206b703c9f645 +TEST= 159 +KEY= 4a63052125b217b16f4e009cd27e6f7735dd8af0a787db19bee3ba66de40d2f1 +IV= d6215d0d1098c603f3897a94c7fe0f39d02b84bf6b1c2d96cb8206b703c9f645 +PT= 17e2a216708aa51bf57a0be0555770bc62ee4069f029a17e29e64b673c8974a6 +CT= c1e944d8e23e4fcbb2dabbbe41172fe9e1b0b2f314b3b2c8fd6155080f45d442 +TEST= 160 +KEY= 8b8a41f9c78c587add94bb229369409ed46d3803b33469d14382ef6ed10506b3 +IV= c1e944d8e23e4fcbb2dabbbe41172fe9e1b0b2f314b3b2c8fd6155080f45d442 +PT= f74e9c0dceb35843e8d9a27320689adbe29b6c802cd5e950c9ad7bf87b4b0da9 +CT= d0852500f675c710dcdd30c1d88f6f3281fcbc461d6cb3703dc4856e0a47b62c +TEST= 161 +KEY= 5b0f64f931f99f6a01498be34be62fac55918445ae58daa17e466a00db42b09f +IV= d0852500f675c710dcdd30c1d88f6f3281fcbc461d6cb3703dc4856e0a47b62c +PT= 7d4d9d560295209a6141fbb9b5ca564318f9e87efce02d4ca0d8ee61c5818090 +CT= 5d6223b2edf4810fdc50c7835fe5645dcbf906f7fb42c9212c62e73570f15b37 +TEST= 162 +KEY= 066d474bdc0d1e65dd194c6014034bf19e6882b2551a138052248d35abb3eba8 +IV= 5d6223b2edf4810fdc50c7835fe5645dcbf906f7fb42c9212c62e73570f15b37 +PT= 8c7d2ac7f750b87b01c842f19689797c0d45f38785477314f969db8c2eef6fad +CT= 9872b4ae52fbbc22f36e5525521b7920a286adbbe2c004dfd13d4b1eea0bf83f +TEST= 163 +KEY= 9e1ff3e58ef6a2472e771945461832d13cee2f09b7da175f8319c62b41b81397 +IV= 9872b4ae52fbbc22f36e5525521b7920a286adbbe2c004dfd13d4b1eea0bf83f +PT= 7ea26c7235681e0be5af1f47418fe6bdb97c8ff66aa052113a93467aadc2dfb9 +CT= 3b8d1a40a1aa888793a3e21cb67136089027195ce6438d4caec2183dd0e7312d +TEST= 164 +KEY= a592e9a52f5c2ac0bdd4fb59f06904d9acc9365551999a132ddbde16915f22ba +IV= 3b8d1a40a1aa888793a3e21cb67136089027195ce6438d4caec2183dd0e7312d +PT= f81bd5a059b264a0a89b049e93c049b736bea4f9c8fd30a265150db30f1382db +CT= 54f9271f49291563391ebf5e0f6a97c612f882654322562e269b7983712632e2 +TEST= 165 +KEY= f16bceba66753fa384ca4407ff03931fbe31b43012bbcc3d0b40a795e0791058 +IV= 54f9271f49291563391ebf5e0f6a97c612f882654322562e269b7983712632e2 +PT= 03229ab62591648b17b2ca0597f3c7364c65b5e95a8fde3a58ba5b4e7c3a8adb +CT= 6c056630c4239fb6134276d02c164e428d8e4e1abae858a9e583fe6d51b64abe +TEST= 166 +KEY= 9d6ea88aa256a015978832d7d315dd5d33bffa2aa8539494eec359f8b1cf5ae6 +IV= 6c056630c4239fb6134276d02c164e428d8e4e1abae858a9e583fe6d51b64abe +PT= a0a53ec3241a1f5e4b692d08659c759fc1bac6364fa31dc21a4577286a11b8d7 +CT= ecf94a44bd5677c69786711fb93368edd899ef49d6628cdef36b2b15e983ea58 +TEST= 167 +KEY= 7197e2ce1f00d7d3000e43c86a26b5b0eb2615637e31184a1da872ed584cb0be +IV= ecf94a44bd5677c69786711fb93368edd899ef49d6628cdef36b2b15e983ea58 +PT= 948a232ce87a99853c5c2f0a410389a17bef0c0dd608d46fef5205712ab2cad2 +CT= 5bc1b2bcc789b63da527dfb780b18ca78e634350715f2632a962e3b4e93b9c34 +TEST= 168 +KEY= 2a565072d88961eea5299c7fea973917654556330f6e3e78b4ca9159b1772c8a +IV= 5bc1b2bcc789b63da527dfb780b18ca78e634350715f2632a962e3b4e93b9c34 +PT= cd30b89d0df8bb35c18dc200b8545f57cbc0a3694317474ff2bc5c7dc050621e +CT= 22863d419cca2a559c0329928e2fc35cda6aacf4d0f95cf64e56daed39888ce8 +TEST= 169 +KEY= 08d06d3344434bbb392ab5ed64b8fa4bbf2ffac7df97628efa9c4bb488ffa062 +IV= 22863d419cca2a559c0329928e2fc35cda6aacf4d0f95cf64e56daed39888ce8 +PT= 19a884c7d34b8ecc51d7fe8c2eebfec01e2f77a3c0558d051ac89bb3d6d23831 +CT= 8c20a55e8ab5bc6c2d233d11577bd651d9d3b532a1e201a8515c1813266c9aed +TEST= 170 +KEY= 84f0c86dcef6f7d7140988fc33c32c1a66fc4ff57e756326abc053a7ae933a8f +IV= 8c20a55e8ab5bc6c2d233d11577bd651d9d3b532a1e201a8515c1813266c9aed +PT= bd5de03cf7703cd15f52c2d69450334cbe994186de51e33bc01e546e9096fedd +CT= a45474eee0e88b90c6e658d390982fc9ab533f7fc7dbea9f8864be316613a487 +TEST= 171 +KEY= 20a4bc832e1e7c47d2efd02fa35b03d3cdaf708ab9ae89b923a4ed96c8809e08 +IV= a45474eee0e88b90c6e658d390982fc9ab533f7fc7dbea9f8864be316613a487 +PT= caad0046a040b5ddf2d7b26d37acb2d99a40e058e2d8d2af06493dc81ef3436b +CT= 4c230e11c09c9af16a901da03deb0da0293c0f80f413bbab09e32f1ce4d65a76 +TEST= 172 +KEY= 6c87b292ee82e6b6b87fcd8f9eb00e73e4937f0a4dbd32122a47c28a2c56c47e +IV= 4c230e11c09c9af16a901da03deb0da0293c0f80f413bbab09e32f1ce4d65a76 +PT= 3b7c89b30add708d0f32503cf6d4d72bd1e2fbf9ccc1e7724680f6b3bdb2291c +CT= f39575fe7401b89a2371fd4a16edc17bfc25fd727c13ea0fb203bcf85375214f +TEST= 173 +KEY= 9f12c76c9a835e2c9b0e30c5885dcf0818b6827831aed81d98447e727f23e531 +IV= f39575fe7401b89a2371fd4a16edc17bfc25fd727c13ea0fb203bcf85375214f +PT= 5cf97cc8eec75046639e0c123f7c7141e7d3a1f080585be046899deae6471134 +CT= 809206317bd0a8d859d2f989749eee398aebfcfd97ccda92461d1487f6748c92 +TEST= 174 +KEY= 1f80c15de153f6f4c2dcc94cfcc32131925d7e85a662028fde596af5895769a3 +IV= 809206317bd0a8d859d2f989749eee398aebfcfd97ccda92461d1487f6748c92 +PT= 4e2f4c09ae374a0714d737170571d83fd7ef77f5dd52519dbc068a415cb38487 +CT= ef6f667b7f732344b97f97cbbb9e424c61cb1eefc9be94586d4102512522f6cf +TEST= 175 +KEY= f0efa7269e20d5b07ba35e87475d637df396606a6fdc96d7b31868a4ac759f6c +IV= ef6f667b7f732344b97f97cbbb9e424c61cb1eefc9be94586d4102512522f6cf +PT= e7e2d28d3aff9981c91c6fbeb10a5a91b39e1f1ec6c4a18cf298d012b2b49d86 +CT= 9cc20d7d4c4b32808786ce86ec10d83bbbe7a319a1365419b7924bf3f2f55a6c +TEST= 176 +KEY= 6c2daa5bd26be730fc259001ab4dbb464871c373ceeac2ce048a23575e80c500 +IV= 9cc20d7d4c4b32808786ce86ec10d83bbbe7a319a1365419b7924bf3f2f55a6c +PT= 9f0f2ff3098529d66ad571c8b6557bedddde8da300a885e3ea211d15be997f14 +CT= 312e9a0207c1cc139118b820f5538e4d949f3a98860d22ce3ae5138644647e2c +TEST= 177 +KEY= 5d033059d5aa2b236d3d28215e1e350bdceef9eb48e7e0003e6f30d11ae4bb2c +IV= 312e9a0207c1cc139118b820f5538e4d949f3a98860d22ce3ae5138644647e2c +PT= 2ef3e2d429438e3fca1e81bea73f047288326f991584adfee3e0568e9c09cb2e +CT= fe377dfc09b9bc7772c379f765cb4e9d19087a03eac4735ba4f7398f7881bc61 +TEST= 178 +KEY= a3344da5dc1397541ffe51d63bd57b96c5e683e8a223935b9a98095e6265074d +IV= fe377dfc09b9bc7772c379f765cb4e9d19087a03eac4735ba4f7398f7881bc61 +PT= ecd2429a54fe5f770eea279e465e62006774a611e49b2c7c37d6b9462db60c23 +CT= 4832c98cad6dd390ddfdf44ba5fa5e1fad26e3db27a40b29898ca1b93382cb8b +TEST= 179 +KEY= eb068429717e44c4c203a59d9e2f258968c06033858798721314a8e751e7ccc6 +IV= 4832c98cad6dd390ddfdf44ba5fa5e1fad26e3db27a40b29898ca1b93382cb8b +PT= 5e9bc1c250e6f7cbb730078106f3cdf76c3ab12f725e9d3c585934d32fdfb030 +CT= f50c93707b822f890b71f8ddeba70e69419fc44b215def7786322539adac4dd2 +TEST= 180 +KEY= 1e0a17590afc6b4dc9725d4075882be0295fa478a4da770595268ddefc4b8114 +IV= f50c93707b822f890b71f8ddeba70e69419fc44b215def7786322539adac4dd2 +PT= 41392e0e64db620b7138f7925612c96a21bf753a111efde327d6b34d136871ac +CT= cd0adf80d18720451410a2b04db8a7b8e62a57cf3efada628e180bdb1acf463b +TEST= 181 +KEY= d300c8d9db7b4b08dd62fff038308c58cf75f3b79a20ad671b3e8605e684c72f +IV= cd0adf80d18720451410a2b04db8a7b8e62a57cf3efada628e180bdb1acf463b +PT= 68b73b4090d463181ea53393b6cd8d30d6aedb659a2a22f80aada074b8ec5d61 +CT= 63027361a295d8ecaf4be282edd5448c00ed3e3e3d8503d34e7edeb7c8a95777 +TEST= 182 +KEY= b002bbb879ee93e472291d72d5e5c8d4cf98cd89a7a5aeb4554058b22e2d9058 +IV= 63027361a295d8ecaf4be282edd5448c00ed3e3e3d8503d34e7edeb7c8a95777 +PT= 4c5a3e3017092767d9c1f5deb92de52b9c3dcbd130c9d160cf6affa3d06ee51d +CT= 598fce3fee4b685e191784c447e4159732f0d6ff18d76302356bed8c9b9348ed +TEST= 183 +KEY= e98d758797a5fbba6b3e99b69201dd43fd681b76bf72cdb6602bb53eb5bed8b5 +IV= 598fce3fee4b685e191784c447e4159732f0d6ff18d76302356bed8c9b9348ed +PT= ce391f1494c4b7b5bf8825e382f2585cc4ed4e20232fc54819cb4645fabcb141 +CT= e313ade8a3c2e87faee265d26973bd2c059cee7aafc46d9301f8d0e3c2384687 +TEST= 184 +KEY= 0a9ed86f346713c5c5dcfc64fb72606ff8f4f50c10b6a02561d365dd77869e32 +IV= e313ade8a3c2e87faee265d26973bd2c059cee7aafc46d9301f8d0e3c2384687 +PT= a76edc61e8c49822c7ffdd99319673903a8f1ddfe5ecb833c03193e85a848f66 +CT= c2ba64ea4ddb7d8fb2f991ca30ec9c1c5115638510b561c50ccb7f8fe1562a79 +TEST= 185 +KEY= c824bc8579bc6e4a77256daecb9efc73a9e196890003c1e06d181a5296d0b44b +IV= c2ba64ea4ddb7d8fb2f991ca30ec9c1c5115638510b561c50ccb7f8fe1562a79 +PT= 51acc6075462ba62f417b2eb3b39fcd8590ed60b00873d30bc9c81a149b2587f +CT= 8e74d7e132e50fb029190169ce8b894a0bfaca11df2eb7f9d8b92a1be4cb65d3 +TEST= 186 +KEY= 46506b644b5961fa5e3c6cc705157539a21b5c98df2d7619b5a13049721bd198 +IV= 8e74d7e132e50fb029190169ce8b894a0bfaca11df2eb7f9d8b92a1be4cb65d3 +PT= 9a18ed9d5435051786f7b6db62a426c92058757dd1c01e5ac75108d3f4f1d52c +CT= fd88b5db87f9b91499d8d790812a036f25590ee65b61659e1ca5f6fb5b354c0c +TEST= 187 +KEY= bbd8debfcca0d8eec7e4bb57843f76568742527e844c1387a904c6b2292e9d94 +IV= fd88b5db87f9b91499d8d790812a036f25590ee65b61659e1ca5f6fb5b354c0c +PT= 7d93f6cf3aa7ed1c4fd4ce73e86bc6a4ee9baea114fe412c9902af65be153469 +CT= ceb7d7dd68cddad0dc5afb2289dd5393488a5e9b7dde1bd0d54192f1e687c6a0 +TEST= 188 +KEY= 756f0962a46d023e1bbe40750de225c5cfc80ce5f99208577c455443cfa95b34 +IV= ceb7d7dd68cddad0dc5afb2289dd5393488a5e9b7dde1bd0d54192f1e687c6a0 +PT= c630cc61a419b32d4635dd9b19afea6a8f9616f221b156dcf88cd13272d2cceb +CT= 95adaf3f927a028f9c556819a22c506270760cc3e1468b13e5454a650db08074 +TEST= 189 +KEY= e0c2a65d361700b187eb286cafce75a7bfbe002618d4834499001e26c219db40 +IV= 95adaf3f927a028f9c556819a22c506270760cc3e1468b13e5454a650db08074 +PT= 0e506a0d6487d868bf4342a223937d51f49cfc98e40d4112f1f20051ad569dca +CT= efa32901e6fe4067d6229616d5274d6fdab8c45522af39d9f4e94a627cb393d7 +TEST= 190 +KEY= 0f618f5cd0e940d651c9be7a7ae938c86506c4733a7bba9d6de95444beaa4897 +IV= efa32901e6fe4067d6229616d5274d6fdab8c45522af39d9f4e94a627cb393d7 +PT= 4c65fad8f5f81f6a7a3c85f453f268dc2de32d8788fcd3325050faa7d38f7e8b +CT= 7380dd3c764af5c7b75e9e1f3b899c8d34e5b6209011d38b523038d4f53b9c18 +TEST= 191 +KEY= 7ce15260a6a3b511e69720654160a44551e37253aa6a69163fd96c904b91d48f +IV= 7380dd3c764af5c7b75e9e1f3b899c8d34e5b6209011d38b523038d4f53b9c18 +PT= 7db548bc91f8328596831e93392c9879c824ec5376938b8013a28c5c7135c5b4 +CT= 9637bd00e42172117ea7d06f589055db653e60b2b5c5a216ae636d282639fdc2 +TEST= 192 +KEY= ead6ef604282c7009830f00a19f0f19e34dd12e11fafcb0091ba01b86da8294d +IV= 9637bd00e42172117ea7d06f589055db653e60b2b5c5a216ae636d282639fdc2 +PT= eccad574d80e401aeb2458c948448bf87ae4599dda517d7df52cd721168c89ef +CT= 09d74bd49779506b037c153740c05efe8a07ec18dd970004761364babd8ab340 +TEST= 193 +KEY= e301a4b4d5fb976b9b4ce53d5930af60bedafef9c238cb04e7a96502d0229a0d +IV= 09d74bd49779506b037c153740c05efe8a07ec18dd970004761364babd8ab340 +PT= fcf9aca432b60d08c07b5f5e08ec71992968f5dabfaa1ace21514d88daf2bc5b +CT= e80c073e75cb54010a91479c7c3e6e83773242bf60709867160a0acef5c9c639 +TEST= 194 +KEY= 0b0da38aa030c36a91dda2a1250ec1e3c9e8bc46a2485363f1a36fcc25eb5c34 +IV= e80c073e75cb54010a91479c7c3e6e83773242bf60709867160a0acef5c9c639 +PT= be97855077da8ed56d4762bf678fd03f8e18279be73b76aebbbcc18997e80386 +CT= 7dc31800b8f143db52652c3a8a11e62559a05b88f809e54080d5b290c179f712 +TEST= 195 +KEY= 76cebb8a18c180b1c3b88e9baf1f27c69048e7ce5a41b6237176dd5ce492ab26 +IV= 7dc31800b8f143db52652c3a8a11e62559a05b88f809e54080d5b290c179f712 +PT= 1bc2efc406f5090d4ac690153c35528b1a2ff36e2bcce25ade135ea246f3c094 +CT= 5992a31cd00365d18fbc2f4efd9e235ca9fd38d0225ef6734859fbf54afbe124 +TEST= 196 +KEY= 2f5c1896c8c2e5604c04a1d55281049a39b5df1e781f4050392f26a9ae694a02 +IV= 5992a31cd00365d18fbc2f4efd9e235ca9fd38d0225ef6734859fbf54afbe124 +PT= e3c33ef320cf95a097f73b3974cff7a10183407aed21c3981aefe87db78f7003 +CT= c59ef0e7344af3a8525e641bbee097790f95f3a2c80fdecb2157f77fb8cf51d2 +TEST= 197 +KEY= eac2e871fc8816c81e5ac5ceec6193e336202cbcb0109e9b1878d1d616a61bd0 +IV= c59ef0e7344af3a8525e641bbee097790f95f3a2c80fdecb2157f77fb8cf51d2 +PT= 6d4fc360afcc8f16965cf9fc750efcad498d592a21554bf385084d8006dda814 +CT= 0eb2bf6838852258bc00dfbe61802ce931bb79b6b45facb92f23838fd881e1ee +TEST= 198 +KEY= e4705719c40d3490a25a1a708de1bf0a079b550a044f3222375b5259ce27fa3e +IV= 0eb2bf6838852258bc00dfbe61802ce931bb79b6b45facb92f23838fd881e1ee +PT= 485184f113aae1df77de6ba73b8914e017f999ca095c65e50e2ee72075e0b648 +CT= 837d21c1c82d9c04586f234b6d1ef8a4fa1d27ac69daa9633c0962ba5c0f63b3 +TEST= 199 +KEY= 670d76d80c20a894fa35393be0ff47aefd8672a66d959b410b5230e39228998d +IV= 837d21c1c82d9c04586f234b6d1ef8a4fa1d27ac69daa9633c0962ba5c0f63b3 +PT= 25e46255add8bdf97f0369937b8d561491b54fae3f55e64269a1f08d9b5feaa5 +CT= 3ba85b4448fe14ef81985de8c130f8a641c5e04d406cfb9b06fe5f096ed72050 +TEST= 200 +KEY= 5ca52d9c44debc7b7bad64d321cfbf08bc4392eb2df960da0dac6feafcffb9dd +IV= 3ba85b4448fe14ef81985de8c130f8a641c5e04d406cfb9b06fe5f096ed72050 +PT= 38850faf013e3eaef666ea03baa5d2ce186eccb62869bcfc25b9d75dcf84aeae +CT= 242f6a743187f388885b3a6e2fa6b893ac65efc04d2934813d6f76ff8d3e0c0c +TEST= 201 +KEY= 788a47e875594ff3f3f65ebd0e69079b10267d2b60d0545b30c3191571c1b5d1 +IV= 242f6a743187f388885b3a6e2fa6b893ac65efc04d2934813d6f76ff8d3e0c0c +PT= deeb937b501416556362acacb4f7f93f052dfea6ff393c294b4aba222cbaa3e0 +CT= e12cdad22f681bd4186082354ed697444b3b2d7ecd10db29ca8821380b39cb83 +TEST= 202 +KEY= 99a69d3a5a315427eb96dc8840bf90df5b1d5055adc08f72fa4b382d7af87e52 +IV= e12cdad22f681bd4186082354ed697444b3b2d7ecd10db29ca8821380b39cb83 +PT= 1e95e3a6d376999da4275d973f3b068cfa74a33ae5d82d25926f2ff8878e70cd +CT= 71da19432ad77e522b1103d32c1be6c553da1af3f3e64046fef111fd7b8137d6 +TEST= 203 +KEY= e87c847970e62a75c087df5b6ca4761a08c74aa65e26cf3404ba29d001794984 +IV= 71da19432ad77e522b1103d32c1be6c553da1af3f3e64046fef111fd7b8137d6 +PT= 46b87e94351df109298923579c8b46846bedb0f1205dea6d24f5b579c96dd44d +CT= c4989d384aa3bba261bd15318ef9ec3591bf18ff56e54ea4c0539eb409f54364 +TEST= 204 +KEY= 2ce419413a4591d7a13aca6ae25d9a2f9978525908c38190c4e9b764088c0ae0 +IV= c4989d384aa3bba261bd15318ef9ec3591bf18ff56e54ea4c0539eb409f54364 +PT= 9bc57db24124114ba6e1d3ce44be4389be740f6782d1f173e6d76a6278675b74 +CT= c12a7e5a4461cac112bc080f9e82e9200b66a7106c98c67654056a8f83841c69 +TEST= 205 +KEY= edce671b7e245b16b386c2657cdf730f921ef549645b47e690ecddeb8b081689 +IV= c12a7e5a4461cac112bc080f9e82e9200b66a7106c98c67654056a8f83841c69 +PT= 2734fc05e53aa105324b3b30963c7795ae6933d8fe392e0d6c43d8735b9469fd +CT= 6dc10549cde3f52094bfd8ed9d69a748d499702a5f2e9d4e959304f790bfd091 +TEST= 206 +KEY= 800f6252b3c7ae3627391a88e1b6d447468785633b75daa8057fd91c1bb7c618 +IV= 6dc10549cde3f52094bfd8ed9d69a748d499702a5f2e9d4e959304f790bfd091 +PT= 86d01063174d8544aa565b2c14b1761ee9fcbf357cb33cef3c0a05265d2497d3 +CT= 94971184ce19887203c6f1b1e678e26cab20ec3668d9bc46655d518cc53c5902 +TEST= 207 +KEY= 149873d67dde264424ffeb3907ce362beda7695553ac66ee60228890de8b9f1a +IV= 94971184ce19887203c6f1b1e678e26cab20ec3668d9bc46655d518cc53c5902 +PT= 64d898378adb0cd30d19fadd80cb455304a51d8a66ebcfed3b8dd068c94f68ed +CT= 831b5f5b09daaabc927fffa38c16b3d257da63d23000a9f7384d3c7e478fbeab +TEST= 208 +KEY= 97832c8d74048cf8b680149a8bd885f9ba7d0a8763accf19586fb4ee990421b1 +IV= 831b5f5b09daaabc927fffa38c16b3d257da63d23000a9f7384d3c7e478fbeab +PT= 8239ef9492a60dd201784edfcb8f500a87a18ae08ac03c2d0ce2a91f0413b7fb +CT= 6099da0ce57602dd6856018e04e472a15a01214852f676fef14cf0da0ffb47d0 +TEST= 209 +KEY= f71af68191728e25ded615148f3cf758e07c2bcf315ab9e7a923443496ff6661 +IV= 6099da0ce57602dd6856018e04e472a15a01214852f676fef14cf0da0ffb47d0 +PT= 05e89730874318f00c0915e665695fd89ec4af5f1e9f880fd0e7fadf8019c0c6 +CT= f2aaed8a321f8652146caf2ccfd806d4d22b91cd652c77486ab4a562a14d7acf +TEST= 210 +KEY= 05b01b0ba36d0877cababa3840e4f18c3257ba025476ceafc397e15637b21cae +IV= f2aaed8a321f8652146caf2ccfd806d4d22b91cd652c77486ab4a562a14d7acf +PT= 6061491f7f99a3bd9196949bfde76ddc715a5f536afcd926a6504540b9cf06fe +CT= e75c31dc50b60c8bb92854b98a79930b4c2f60f26da78e6b3bff4803adaef4f3 +TEST= 211 +KEY= e2ec2ad7f3db04fc7392ee81ca9d62877e78daf039d140c4f868a9559a1ce85d +IV= e75c31dc50b60c8bb92854b98a79930b4c2f60f26da78e6b3bff4803adaef4f3 +PT= 5ca864be0a93e4dee3c63e1e131c785f1cb0a5050832f5aa7c674cd06cbeb382 +CT= 5afc1d1a35e71d6a27952d7d0c32e3da8304333bcd10be1105911456d2059bbd +TEST= 212 +KEY= b81037cdc63c19965407c3fcc6af815dfd7ce9cbf4c1fed5fdf9bd03481973e0 +IV= 5afc1d1a35e71d6a27952d7d0c32e3da8304333bcd10be1105911456d2059bbd +PT= 99002fd0c9f26a884d70dda7f3c36175efbbb74cad4685402a80c369026eb433 +CT= a0e403ffa2cf403b4ef413b21aa5a0cc31341c870173c3e089c713523f622f66 +TEST= 213 +KEY= 18f4343264f359ad1af3d04edc0a2191cc48f54cf5b23d35743eae51777b5c86 +IV= a0e403ffa2cf403b4ef413b21aa5a0cc31341c870173c3e089c713523f622f66 +PT= 2ab0703dec35d374daa1cfc8987d8113b043454141451917adcb6fe0b76a3c37 +CT= 6eca0cd10b5755b73f7071339e7edd6996ca6474258b20903604427f1b35aca3 +TEST= 214 +KEY= 763e38e36fa40c1a2583a17d4274fcf85a829138d0391da5423aec2e6c4ef025 +IV= 6eca0cd10b5755b73f7071339e7edd6996ca6474258b20903604427f1b35aca3 +PT= 3bab267363faedc37f447d22d645eb4739c0d5adf7782ad62dd804b2c1b1eecf +CT= 879ae138b4420064e960320f4548bfe07eee2c0fca9078de83b9e67445989425 +TEST= 215 +KEY= f1a4d9dbdbe60c7ecce39372073c4318246cbd371aa9657bc1830a5a29d66400 +IV= 879ae138b4420064e960320f4548bfe07eee2c0fca9078de83b9e67445989425 +PT= b9505ec04777cd668ad9267a1f7421305a1d05b5451054e2828b8571f880f14f +CT= ae9dcd90acb83a75ba34936e30acc48dffe10655f60d934a588928b6b0fe3d09 +TEST= 216 +KEY= 5f39144b775e360b76d7001c37908795db8dbb62eca4f631990a22ec99285909 +IV= ae9dcd90acb83a75ba34936e30acc48dffe10655f60d934a588928b6b0fe3d09 +PT= 27f6543132a4490265f9b80b7e3ffa4a75c4e9b75f0e5e105b176066763b2e3f +CT= 2056172839efa4e6977c0569e98b17449f1768b212e43a0a83d81d966d8e0920 +TEST= 217 +KEY= 7f6f03634eb192ede1ab0575de1b90d1449ad3d0fe40cc3b1ad23f7af4a65029 +IV= 2056172839efa4e6977c0569e98b17449f1768b212e43a0a83d81d966d8e0920 +PT= ca3b8ce0358e2a46a647bb5c2021d7393510aff62b54f7a14d6551f59b1df1b8 +CT= 72b14081003cd1a9f9bcd4db17fae18f0171920154a8b210aeb1ec44cf308b20 +TEST= 218 +KEY= 0dde43e24e8d43441817d1aec9e1715e45eb41d1aae87e2bb463d33e3b96db09 +IV= 72b14081003cd1a9f9bcd4db17fae18f0171920154a8b210aeb1ec44cf308b20 +PT= eb8797a5e85c5fb019516d39c194b6c88119a1d2978fe5119d4915aa3340929a +CT= 82392bb1a7e398535c716f69461d4a2115d83e75a9f294d09bae167d2eabc485 +TEST= 219 +KEY= 8fe76853e96edb174466bec78ffc3b7f50337fa4031aeafb2fcdc543153d1f8c +IV= 82392bb1a7e398535c716f69461d4a2115d83e75a9f294d09bae167d2eabc485 +PT= adb73b093e4ddf36e81d0f1b11b671aa92572f46720f8fd76ab2cd779b296e1f +CT= 2063ea9f66dbe5c614be3f4206bc3f5c15c5b31710033af5fae07eaba3579ea7 +TEST= 220 +KEY= af8482cc8fb53ed150d881858940042345f6ccb31319d00ed52dbbe8b66a812b +IV= 2063ea9f66dbe5c614be3f4206bc3f5c15c5b31710033af5fae07eaba3579ea7 +PT= 202254f83f0d602e1fe91023ccb2dc9a06f9af35900b7896a5b5532b225e375c +CT= aeac6f7c34ef1938f0fd95a147ba37d5faa9411964c33c6831ed497825ffa393 +TEST= 221 +KEY= 0128edb0bb5a27e9a0251424cefa33f6bf5f8daa77daec66e4c0f290939522b8 +IV= aeac6f7c34ef1938f0fd95a147ba37d5faa9411964c33c6831ed497825ffa393 +PT= 45790ea6fdac8b0d373f785dad376bc529a24a6caad141aa473000d0d834c9f9 +CT= cf715abcb794b7eafe0d94a83b501f55dc300f28f98e7a73b61543bd70f481c9 +TEST= 222 +KEY= ce59b70c0cce90035e28808cf5aa2ca3636f82828e54961552d5b12de361a371 +IV= cf715abcb794b7eafe0d94a83b501f55dc300f28f98e7a73b61543bd70f481c9 +PT= aceeceb56121035be4a9be83107a9d507379c3e3f0b963f27fb8c912e2eb5e83 +CT= 6f0397e86b98880fd0f68dbf66b2cf543e54c121b98f24512478468ba5d6790e +TEST= 223 +KEY= a15a20e46756180c8ede0d339318e3f75d3b43a337dbb24476adf7a646b7da7f +IV= 6f0397e86b98880fd0f68dbf66b2cf543e54c121b98f24512478468ba5d6790e +PT= 496f1858a055730a2f4959e8cf33c84c0dcb6667ced0d741e35ce24c44419e65 +CT= eb0e2a1963f49f97960e83f2f5ffff1f72059ad9267d091838de0b740c537342 +TEST= 224 +KEY= 4a540afd04a2879b18d08ec166e71ce82f3ed97a11a6bb5c4e73fcd24ae4a93d +IV= eb0e2a1963f49f97960e83f2f5ffff1f72059ad9267d091838de0b740c537342 +PT= 2d30213e536c118d4e0a30e1b7881a59bcf16ae70d7cf072acec10a432288dd4 +CT= 5f58c51d263e9b4467fa9fd167885f5fbd02cebd04340cf7fb44739741af715d +TEST= 225 +KEY= 150ccfe0229c1cdf7f2a1110016f43b7923c17c71592b7abb5378f450b4bd860 +IV= 5f58c51d263e9b4467fa9fd167885f5fbd02cebd04340cf7fb44739741af715d +PT= 4f290e288e6dfd13e42ba841c0d5fb9dfdd33a9da2abfbc2e9756a75f1e6d93b +CT= 446f4a94ecf6ac0dc4178040497e4089d3fb2ef1a72fad172efa2fc2059c8ca4 +TEST= 226 +KEY= 51638574ce6ab0d2bb3d91504811033e41c73936b2bd1abc9bcda0870ed754c4 +IV= 446f4a94ecf6ac0dc4178040497e4089d3fb2ef1a72fad172efa2fc2059c8ca4 +PT= 09b901f3a8dad498acc21fd48d6787f80be6bccbd83dd20ca22b66fa4c5b69b7 +CT= d82e7ad60f02f195b4fe8bb5ccdce8a7d316ed8276e7c56d9073d0d9ea990a91 +TEST= 227 +KEY= 894dffa2c16841470fc31ae584cdeb9992d1d4b4c45adfd10bbe705ee44e5e55 +IV= d82e7ad60f02f195b4fe8bb5ccdce8a7d316ed8276e7c56d9073d0d9ea990a91 +PT= 28605c9c98e47225009c18b2bf244dfbbf359a10fce5508c3f4832f6f365adab +CT= 192fd1ef419b6d3fbd2d9bab84b1aeeaea5a78d4cc0a4bca7df2625218472517 +TEST= 228 +KEY= 90622e4d80f32c78b2ee814e007c4573788bac600850941b764c120cfc097b42 +IV= 192fd1ef419b6d3fbd2d9bab84b1aeeaea5a78d4cc0a4bca7df2625218472517 +PT= bc56a9ca08d4aaae0639b3fc844875bd9ac6b4e9eb5dad42d4e495f335a084d6 +CT= 95bc9fe161dbb28b2b921daabe981b96d4505e0dd57fe33676ec91549c9a59a1 +TEST= 229 +KEY= 05deb1ace1289ef3997c9ce4bee45ee5acdbf26ddd2f772d00a08358609322e3 +IV= 95bc9fe161dbb28b2b921daabe981b96d4505e0dd57fe33676ec91549c9a59a1 +PT= 504d1471ce2922dd2200be3ee3458fe4051939a7ef390ef2abef4fd481e09c07 +CT= f30135821da95a6574eeeba9511e3eb5a98649200ee88d6571de56112121b7b8 +TEST= 230 +KEY= f6df842efc81c496ed92774deffa6050055dbb4dd3c7fa48717ed54941b2955b +IV= f30135821da95a6574eeeba9511e3eb5a98649200ee88d6571de56112121b7b8 +PT= 10b6290da86199ef1aeaf6d9d0a776f48dd4d54efb643c5a1cc5ca1c2ce5fb8a +CT= 21f591bc95f649ba4eba79c285b22bdd3633a1ad36ad57f476cb0b374437fee8 +TEST= 231 +KEY= d72a159269778d2ca3280e8f6a484b8d336e1ae0e56aadbc07b5de7e05856bb3 +IV= 21f591bc95f649ba4eba79c285b22bdd3633a1ad36ad57f476cb0b374437fee8 +PT= fe3d45dc401db9925411c3ffe35ca55f563ebf84b69f40f07a9a257e4b8b5420 +CT= baba6e681477ecdfa37d4f2066e114c2537540bd0015725d4cb10920f1510631 +TEST= 232 +KEY= 6d907bfa7d0061f3005541af0ca95f4f601b5a5de57fdfe14b04d75ef4d46d82 +IV= baba6e681477ecdfa37d4f2066e114c2537540bd0015725d4cb10920f1510631 +PT= dce117ccc20b4c94b8653dd6f0919919a74bb484ed7ca21b2cbba9a300b192c5 +CT= a967344beb0e8ecf6ff586c17743756b98957cc9f313650479c08a79e702d9f3 +TEST= 233 +KEY= c4f74fb1960eef3c6fa0c76e7bea2a24f88e2694166cbae532c45d2713d6b471 +IV= a967344beb0e8ecf6ff586c17743756b98957cc9f313650479c08a79e702d9f3 +PT= bdf5d52c226aea35deabe7ced47a263de50ee2ae32ac65e25a5609c0646c36bf +CT= 8c01f1c91bf7c111f74a33e4bf0792091b5b65cefd501312b0e20252432aaa60 +TEST= 234 +KEY= 48f6be788df92e2d98eaf48ac4edb82de3d5435aeb3ca9f782265f7550fc1e11 +IV= 8c01f1c91bf7c111f74a33e4bf0792091b5b65cefd501312b0e20252432aaa60 +PT= 6764e536d518b8c9ff3bdd6efe9517ff1403cc848282f8906038a811266a0d4e +CT= 24cfcd61e1ea5c2d86e49f4d6d792f133701afb541dfdefe3e1e968e301381ce +TEST= 235 +KEY= 6c3973196c1372001e0e6bc7a994973ed4d4ecefaae37709bc38c9fb60ef9fdf +IV= 24cfcd61e1ea5c2d86e49f4d6d792f133701afb541dfdefe3e1e968e301381ce +PT= 11d96cc14ea17fdeb2e0629144130680c65b53d1da365005d273317aa636d9ca +CT= b608f7d45d24995df7d4e94e0e9f302b81783ad1994f58e0ab6da40d32febf39 +TEST= 236 +KEY= da3184cd3137eb5de9da8289a70ba71555acd63e33ac2fe917556df6521120e6 +IV= b608f7d45d24995df7d4e94e0e9f302b81783ad1994f58e0ab6da40d32febf39 +PT= 1bb47907eaef216f46e11edab34f98eb2c21257bfe894d08db0fe61133d8f6e4 +CT= 997ea5491a80c1cfff507afa21de739322605ab54093094b0bbffdf5e33b1659 +TEST= 237 +KEY= 434f21842bb72a92168af87386d5d48677cc8c8b733f26a21cea9003b12a36bf +IV= 997ea5491a80c1cfff507afa21de739322605ab54093094b0bbffdf5e33b1659 +PT= 9050a8eabcb36710773089a16a5981d073876011d5e4a700157ac526af4a2562 +CT= 4ab409e09e1865fd5135246435c57236fb197e7635946992491e0874c249187b +TEST= 238 +KEY= 09fb2864b5af4f6f47bfdc17b310a6b08cd5f2fd46ab4f3055f4987773632ec4 +IV= 4ab409e09e1865fd5135246435c57236fb197e7635946992491e0874c249187b +PT= c4ff4c852609c1c07d50171c71373f55918b69311a96b90967aa566c2e2fdecd +CT= 2b33353f70df5a29aaeaf1cc94ab0cc6b9095fa3ae1d9c2450b0451ffe67c6a9 +TEST= 239 +KEY= 22c81d5bc5701546ed552ddb27bbaa7635dcad5ee8b6d3140544dd688d04e86d +IV= 2b33353f70df5a29aaeaf1cc94ab0cc6b9095fa3ae1d9c2450b0451ffe67c6a9 +PT= 3163fbfd8d631f425fc60648b3575d3130aa661ef3d5e1dd736af20cde9e40b7 +CT= 2d83a342b386a81d7d830bcc1cbc242cbd47ce4ab7b4b8c80feb7e2436ea0983 +TEST= 240 +KEY= 0f4bbe1976f6bd5b90d626173b078e5a889b63145f026bdc0aafa34cbbeee1ee +IV= 2d83a342b386a81d7d830bcc1cbc242cbd47ce4ab7b4b8c80feb7e2436ea0983 +PT= 50a96d2a7e2ffa601649a5f0b579225cb94660c500ef7055a162737cc6781924 +CT= 8affff786c120fc375ddd40e024bec427c9e8ce7f1ad4087f32ffdd27ac20e13 +TEST= 241 +KEY= 85b441611ae4b298e50bf219394c6218f405eff3aeaf2b5bf9805e9ec12ceffd +IV= 8affff786c120fc375ddd40e024bec427c9e8ce7f1ad4087f32ffdd27ac20e13 +PT= 40711bf8f54f44e8b71d91390510755d3c2a77218e296a5521d7ddd47887ba2c +CT= fead26c21dee93bbd1a859366718992686d947e6e5b4ae87397ede9d351b3a49 +TEST= 242 +KEY= 7b1967a3070a212334a3ab2f5e54fb3e72dca8154b1b85dcc0fe8003f437d5b4 +IV= fead26c21dee93bbd1a859366718992686d947e6e5b4ae87397ede9d351b3a49 +PT= d78f95e83309430e96e5a5e4d2244028cde36d79f42184541fe5f3f271e8aefe +CT= 80e20f020add18c1f155344510d284916d7030b48f31c77526aa06bbf9a03df2 +TEST= 243 +KEY= fbfb68a10dd739e2c5f69f6a4e867faf1fac98a1c42a42a9e65486b80d97e846 +IV= 80e20f020add18c1f155344510d284916d7030b48f31c77526aa06bbf9a03df2 +PT= ec376874ff7e68402717f877822dfce54a900efae32ce787a2cfa6019749892a +CT= b9bc42338078cccf275e752846dc193c889b5429f0a6727d05561b8a6d5fe6c3 +TEST= 244 +KEY= 42472a928daff52de2a8ea42085a66939737cc88348c30d4e3029d3260c80e85 +IV= b9bc42338078cccf275e752846dc193c889b5429f0a6727d05561b8a6d5fe6c3 +PT= 7bbff5636770cbf92fa11ad2b2f42110ba8f6536b02637dd1fbab3af8b4d9d8a +CT= 5e6662caa05d4dd891ff9c1bb730cf542d2b58e7502ffff8a1d03657fff900df +TEST= 245 +KEY= 1c2148582df2b8f573577659bf6aa9c7ba1c946f64a3cf2c42d2ab659f310e5a +IV= 5e6662caa05d4dd891ff9c1bb730cf542d2b58e7502ffff8a1d03657fff900df +PT= 865f3307fbb63e1bd39cf6f002447869e407c5253478a14360ea012b05a831b6 +CT= 49d89a0cfb38bd1463477bbde951d09e598c74aaf5e35e85db17ac5923c6f3e4 +TEST= 246 +KEY= 55f9d254d6ca05e110100de4563b7959e390e0c5914091a999c5073cbcf7fdbe +IV= 49d89a0cfb38bd1463477bbde951d09e598c74aaf5e35e85db17ac5923c6f3e4 +PT= c84bf0e654e7b12ae2b2e5bac45b5e23f3f1df349cadf7ded7cbdc285eb04248 +CT= d991a9ac46cc55678e216babbcd488a1a5785887dd9284c481c25ea3e69f30f7 +TEST= 247 +KEY= 8c687bf8900650869e31664feaeff1f846e8b8424cd2156d1807599f5a68cd49 +IV= d991a9ac46cc55678e216babbcd488a1a5785887dd9284c481c25ea3e69f30f7 +PT= a198f44691b7be0f04d9113bd6fb17213d64dc85bd27eeb839564e1b3db3c855 +CT= 72cb4a97008494942cec3761c79ed5c357227317c1ebcca7bea34cafc4ecdea0 +TEST= 248 +KEY= fea3316f9082c412b2dd512e2d71243b11cacb558d39d9caa6a415309e8413e9 +IV= 72cb4a97008494942cec3761c79ed5c357227317c1ebcca7bea34cafc4ecdea0 +PT= 1b6914582b0da5dbc6557f0df6e89c77889b273d94edad5152c67d9c8bcf02f7 +CT= 46628ebec108e6df0e54ec0d7794adfecc3eb47e56ce66df596b2c54b3415b92 +TEST= 249 +KEY= b8c1bfd1518a22cdbc89bd235ae589c5ddf47f2bdbf7bf15ffcf39642dc5487b +IV= 46628ebec108e6df0e54ec0d7794adfecc3eb47e56ce66df596b2c54b3415b92 +PT= a185712425b948262e79d8312a31840d50e1b53f1bc342691e23c29b920595c2 +CT= 0c96f753bf426d0aa32dc13b198bae926cf32eae4faf8ab9aaad2b6458f3c54d +TEST= 250 +KEY= b4574882eec84fc71fa47c18436e2757b1075185945835ac5562120075368d36 +IV= 0c96f753bf426d0aa32dc13b198bae926cf32eae4faf8ab9aaad2b6458f3c54d +PT= 9b49d656fb1d7a3598cb1f5315735d062eb2d0d7f3c8ae8a0d7e4a2196bf982b +CT= a0f58f898daba3b19dfa0bf8a2d5d60da2483aa0566603c9e33067b36f69d943 +TEST= 251 +KEY= 14a2c70b6363ec76825e77e0e1bbf15a134f6b25c23e3665b65275b31a5f5475 +IV= a0f58f898daba3b19dfa0bf8a2d5d60da2483aa0566603c9e33067b36f69d943 +PT= 9cad5ca7fc62990b85a37c9c5e24f89722a98e768f23c0a8cdcc47b3bfc05559 +CT= 5141ef24b23224659a1f64982359605ff89cac4487410384ecda53531e79d0e1 +TEST= 252 +KEY= 45e3282fd151c81318411378c2e29105ebd3c761457f35e15a8826e004268494 +IV= 5141ef24b23224659a1f64982359605ff89cac4487410384ecda53531e79d0e1 +PT= 17ba5d754fdb97e0b439a3bbdcd57dd3e7d86a55518ef3640845ffadf8361136 +CT= 692cc879cdf31e45d5d11b45281c282d4c3a069f1ae20eda889fab679c2c015c +TEST= 253 +KEY= 2ccfe0561ca2d656cd90083deafeb928a7e9c1fe5f9d3b3bd2178d87980a85c8 +IV= 692cc879cdf31e45d5d11b45281c282d4c3a069f1ae20eda889fab679c2c015c +PT= 43762e360ff69a3ff35a513d095e5d7d7ba7f17c2266225aa98b65a442c9f63d +CT= 6f210cbcb94af4d97355b2616faa43aa6a9b660aa98e592a8c4a2a75e348ec2b +TEST= 254 +KEY= 43eeeceaa5e8228fbec5ba5c8554fa82cd72a7f4f61362115e5da7f27b4269e3 +IV= 6f210cbcb94af4d97355b2616faa43aa6a9b660aa98e592a8c4a2a75e348ec2b +PT= 8dff3a3c3bfdaa9ee7ef0925fa4159e68383cc2cf684b6858b082c6399e6ec85 +CT= eb85db4a7d19d2d101025823acd4ff9b60ac536d538fd60394b09ef06dd08ece +TEST= 255 +KEY= a86b37a0d8f1f05ebfc7e27f29800519addef499a59cb412caed39021692e72d +IV= eb85db4a7d19d2d101025823acd4ff9b60ac536d538fd60394b09ef06dd08ece +PT= 5c1cee9f48de036225c2de3a7508fe3603b35d3212f42d010dd41b700db2c9d6 +CT= f07f9a90e53e9d7740e594cc2d552293df555186a11a52335addafc8db8960e8 +TEST= 256 +KEY= 5814ad303dcf6d29ff2276b304d5278a728ba51f0486e621903096cacd1b87c5 +IV= f07f9a90e53e9d7740e594cc2d552293df555186a11a52335addafc8db8960e8 +PT= ef2fdd021f53aaca1e505cb8827ca2060fb94dd42c96857b542a2c23cad7296c +CT= ebbb3c5ce59be2086c011594e19fe083844c078354ca164e8eca40df735bab04 +TEST= 257 +KEY= b3af916cd8548f2193236327e54ac709f6c7a29c504cf06f1efad615be402cc1 +IV= ebbb3c5ce59be2086c011594e19fe083844c078354ca164e8eca40df735bab04 +PT= 1bed24c4af20f69050e52a90741db6889bb122e3d909710f41f697ab766b7b4c +CT= b1f4799cec11d8b5f7df179f2d3669dcb50cce44975590fb85bfdd4ffbdc37a9 +TEST= 258 +KEY= 025be8f03445579464fc74b8c87caed543cb6cd8c71960949b450b5a459c1b68 +IV= b1f4799cec11d8b5f7df179f2d3669dcb50cce44975590fb85bfdd4ffbdc37a9 +PT= 8c06b17bfa108a88e5458db9a9fc7798c38655a5ab07700b7775b26f78fe588d +CT= c2ea3b92d703f162683cbe29ecc2a7d6bfa4e1875d75222d9f986283dcc6593e +TEST= 259 +KEY= c0b1d362e346a6f60cc0ca9124be0903fc6f8d5f9a6c42b904dd69d9995a4256 +IV= c2ea3b92d703f162683cbe29ecc2a7d6bfa4e1875d75222d9f986283dcc6593e +PT= b52d3113e1388ef47cc79618b3b375790534a7270ef302384c934e134a804c9e +CT= b2ebf98a8faa2cb1fe5f6791096771d091f464986ce85dfc3706f9110b90bc01 +TEST= 260 +KEY= 725a2ae86cec8a47f29fad002dd978d36d9be9c7f6841f4533db90c892cafe57 +IV= b2ebf98a8faa2cb1fe5f6791096771d091f464986ce85dfc3706f9110b90bc01 +PT= df4f21ca13d98458cc7468d58cde6b64261556cf188a752abc972cd9f5e299fa +CT= 9814d3ff1309c898a5f940ecafa55b7d3aba9cb5e2a25cdfa3f68690544958b3 +TEST= 261 +KEY= ea4ef9177fe542df5766edec827c23ae572175721426439a902d1658c683a6e4 +IV= 9814d3ff1309c898a5f940ecafa55b7d3aba9cb5e2a25cdfa3f68690544958b3 +PT= b0011ab6b2037c9e0fee4ad8981b98a843faf928987b9f9e0ffe0027a6b21918 +CT= 2b34f0628a97472148e9dc46c512827ebfb9fe7c2864015f612995b4f9d87f93 +TEST= 262 +KEY= c17a0975f57205fe1f8f31aa476ea1d0e8988b0e3c4242c5f10483ec3f5bd977 +IV= 2b34f0628a97472148e9dc46c512827ebfb9fe7c2864015f612995b4f9d87f93 +PT= c12828885778a5e5f2cdd0b01430020e27127ad025e46d14241ea1279fa53be8 +CT= f7d403cbfde2a3ee66375c1e50754fc50e674d5d2e31210cb8758dde4baa9c93 +TEST= 263 +KEY= 36ae0abe0890a61079b86db4171bee15e6ffc653127363c949710e3274f145e4 +IV= f7d403cbfde2a3ee66375c1e50754fc50e674d5d2e31210cb8758dde4baa9c93 +PT= c5fb4276a8d464e8b033a1b065a6a4601a7d0a76d972325c5fa68d0148b9db8f +CT= 438f89a6e2fb0ae4de6367b79393321ccaf13e29c42d6de108385f34295bf2da +TEST= 264 +KEY= 75218318ea6bacf4a7db0a038488dc092c0ef87ad65e0e28414951065daab73e +IV= 438f89a6e2fb0ae4de6367b79393321ccaf13e29c42d6de108385f34295bf2da +PT= efbf2894fcf2529d4387a8336ff8b6d9fdc89043aecfec109188e9edc4a3de44 +CT= 6b05a2117ad34586f4ad0fcd9489abc026ebcc4bcfd28d6e258a51b9876c0ee9 +TEST= 265 +KEY= 1e24210990b8e972537605ce100177c90ae53431198c834664c300bfdac6b9d7 +IV= 6b05a2117ad34586f4ad0fcd9489abc026ebcc4bcfd28d6e258a51b9876c0ee9 +PT= 883561a584757cfcea01d0e7db31a4e37fc2614e07aca2cb32a6058cd2b319e5 +CT= 554bad4941cb22b894244e14f3f24e873d6d095a82eaec038b1d7e45077db966 +TEST= 266 +KEY= 4b6f8c40d173cbcac7524bdae3f3394e37883d6b9b666f45efde7efaddbb00b1 +IV= 554bad4941cb22b894244e14f3f24e873d6d095a82eaec038b1d7e45077db966 +PT= 2f223af13074d82cd2210e5d7f5dd98a1a79e1b04cf9b75f15ffdebd8f73ced4 +CT= 06a80f67db3bb7dc8c1c3000e9076aec3649a0d53cb20f651750dc6705b41a44 +TEST= 267 +KEY= 4dc783270a487c164b4e7bda0af453a201c19dbea7d46020f88ea29dd80f1af5 +IV= 06a80f67db3bb7dc8c1c3000e9076aec3649a0d53cb20f651750dc6705b41a44 +PT= 1b4547c827baf46965d2965508d32c882f945918623cbc8a61d431015a79caa9 +CT= f3a53f84cfad3da81af3f158b33ca08bd4c86acd2eba2d6e7b17341ad5bf1594 +TEST= 268 +KEY= be62bca3c5e541be51bd8a82b9c8f329d509f773896e4d4e839996870db00f61 +IV= f3a53f84cfad3da81af3f158b33ca08bd4c86acd2eba2d6e7b17341ad5bf1594 +PT= f988350118e7d4406fa7e4ddac46df06436a996e01722e68804cd898804b40ef +CT= 8e1d6fb570c9adcd05c7ca740ce60a7b01c72258508dddfed33415d8b7153c27 +TEST= 269 +KEY= 307fd316b52cec73547a40f6b52ef952d4ced52bd9e390b050ad835fbaa53346 +IV= 8e1d6fb570c9adcd05c7ca740ce60a7b01c72258508dddfed33415d8b7153c27 +PT= 8931e01b40157fe5ac3835dfd114d3560dafc1d6b4a123d671071cf98089d4db +CT= b7a27e7ee1c556f570bcd6fb8f4689c9ac8f708227b2399f8246b0ea1a49a652 +TEST= 270 +KEY= 87ddad6854e9ba8624c6960d3a68709b7841a5a9fe51a92fd2eb33b5a0ec9514 +IV= b7a27e7ee1c556f570bcd6fb8f4689c9ac8f708227b2399f8246b0ea1a49a652 +PT= 14f97e1c5092ce4e0747b914f6fc2aae5118ac20f4bebdf703b6b31373c74212 +CT= afb584498714f8cedbd341a3d798df53644f1a6b957f462d5162c50f3719a84e +TEST= 271 +KEY= 28682921d3fd4248ff15d7aeedf0afc81c0ebfc26b2eef028389f6ba97f53d5a +IV= afb584498714f8cedbd341a3d798df53644f1a6b957f462d5162c50f3719a84e +PT= 847776afbbe81c572b34f6b32e12ebdde4c48d242beb36634635a7d99005f736 +CT= 5141ebdfe9789a4aba421cfdb6ef286deb1af2f47fc0998d96d47afd56ba3bde +TEST= 272 +KEY= 7929c2fe3a85d8024557cb535b1f87a5f7144d3614ee768f155d8c47c14f0684 +IV= 5141ebdfe9789a4aba421cfdb6ef286deb1af2f47fc0998d96d47afd56ba3bde +PT= 3303191e6588d94e74cd49b7f9c9b5dc9b30ec30af89b618c26eb3919d5c89ac +CT= ec66c4073964d2fde34d6ce5771e8568dc401ac574d2aef1ce1f78a89142e83c +TEST= 273 +KEY= 954f06f903e10affa61aa7b62c0102cd2b5457f3603cd87edb42f4ef500deeb8 +IV= ec66c4073964d2fde34d6ce5771e8568dc401ac574d2aef1ce1f78a89142e83c +PT= d6db73f19de26142236b0bb09b30e9251c10d3286235553fe459dbd13e4ee62e +CT= 15c14b792722fb91e4431d2f932f624f44ef13838eaf8f37f4b3e4b99bae34ff +TEST= 274 +KEY= 808e4d8024c3f16e4259ba99bf2e60826fbb4470ee9357492ff11056cba3da47 +IV= 15c14b792722fb91e4431d2f932f624f44ef13838eaf8f37f4b3e4b99bae34ff +PT= 7eb25f09c896764e1607db681d99e477658182f47b66443d0fd56018865f91cc +CT= 817adf92c33b407ab25862b7c65c285f565172e49fd7912ed7434783059de705 +TEST= 275 +KEY= 01f49212e7f8b114f001d82e797248dd39ea36947144c667f8b257d5ce3e3d42 +IV= 817adf92c33b407ab25862b7c65c285f565172e49fd7912ed7434783059de705 +PT= e29212ba682623871f681155a9707b9aeb7971cb4096228a1ed65de626689a57 +CT= 60fbc06b44d44458e4912176398fdd8388f286d228d56a9867bf5de65bd929b5 +TEST= 276 +KEY= 610f5279a32cf54c1490f95840fd955eb118b0465991acff9f0d0a3395e714f7 +IV= 60fbc06b44d44458e4912176398fdd8388f286d228d56a9867bf5de65bd929b5 +PT= 6131f3211092ce1a5c1caab62cc5579226b2aaf16de7feee2b4b21fcafc7ab84 +CT= 4206889791d4bf1fd968519cbd50e5fc0a540aa927ba02c12711064cf2ebe517 +TEST= 277 +KEY= 2309daee32f84a53cdf8a8c4fdad70a2bb4cbaef7e2bae3eb81c0c7f670cf1e0 +IV= 4206889791d4bf1fd968519cbd50e5fc0a540aa927ba02c12711064cf2ebe517 +PT= 9a831a1bd0431429d6b44ab47355f8e01aa87f32879a8b45bf94c978847779c9 +CT= 5def22f453b111aa6fa7bfaedc3c96aab251e3c5551ff5f1dbfa11945934aa45 +TEST= 278 +KEY= 7ee6f81a61495bf9a25f176a2191e608091d592a2b345bcf63e61deb3e385ba5 +IV= 5def22f453b111aa6fa7bfaedc3c96aab251e3c5551ff5f1dbfa11945934aa45 +PT= 1a34ac515bc9c6da795fe063cadbec52c3cf0409259a75136b1bb8daa243983b +CT= 909ce288f673ba4f149a738c1d135bf2cdd7cc8abb25904f4ca1dcbf1b5ebc89 +TEST= 279 +KEY= ee7a1a92973ae1b6b6c564e63c82bdfac4ca95a09011cb802f47c1542566e72c +IV= 909ce288f673ba4f149a738c1d135bf2cdd7cc8abb25904f4ca1dcbf1b5ebc89 +PT= 3a155ade7ecde6942273a271d4f7f7148ea0664e13b120fb0695118a7325eed6 +CT= d5444679503ae749114431ae838bffcea29ee7f3b356687629cc5c9d20d5a568 +TEST= 280 +KEY= 3b3e5cebc70006ffa7815548bf094234665472532347a3f6068b9dc905b34244 +IV= d5444679503ae749114431ae838bffcea29ee7f3b356687629cc5c9d20d5a568 +PT= 50478a9a540559f25314b9b6643a7f117f3fe224beefb581e8ba6600859d05bf +CT= c8d0e47450c433e30d0bbfc0115505b8c0945c77b913233d5f4dde311bfc9185 +TEST= 281 +KEY= f3eeb89f97c4351caa8aea88ae5c478ca6c02e249a5480cb59c643f81e4fd3c1 +IV= c8d0e47450c433e30d0bbfc0115505b8c0945c77b913233d5f4dde311bfc9185 +PT= 4e747ffee66e482da12f8bbbfc55ca5d364e9258549ee8bf844d4eda2db503f3 +CT= 736dadcb6457732f700ab494b8283adc60f994200663394648a25e42ce6c6a68 +TEST= 282 +KEY= 80831554f3934633da805e1c16747d50c639ba049c37b98d11641dbad023b9a9 +IV= 736dadcb6457732f700ab494b8283adc60f994200663394648a25e42ce6c6a68 +PT= a7b8fb120d0ed7316cb617b35523b230701287cd4c2a123d32133d7aa1a51266 +CT= 573a00c6b976c96250fe6bead9db88824f8ddb819e2c075e8924101f4c7527c1 +TEST= 283 +KEY= d7b915924ae58f518a7e35f6cfaff5d289b46185021bbed398400da59c569e68 +IV= 573a00c6b976c96250fe6bead9db88824f8ddb819e2c075e8924101f4c7527c1 +PT= e759c37fb914cdd468e744afe552ad025cbd0a66dc129cef4587f4cfedf86da3 +CT= 0fd0fa1c4c6e4f42c9fd0d79ca35245b59a76c1025b6f1f174bee4be762e311f +TEST= 284 +KEY= d869ef8e068bc0134383388f059ad189d0130d9527ad4f22ecfee91bea78af77 +IV= 0fd0fa1c4c6e4f42c9fd0d79ca35245b59a76c1025b6f1f174bee4be762e311f +PT= b1df8685168393da54e478a5b919e9446ad55989f1590203f3beda665a3e949f +CT= 2d67ab617ffdf2ed89e9231ade593a54aa707f477b10e7919b1736b09dddccac +TEST= 285 +KEY= f50e44ef797632feca6a1b95dbc3ebdd7a6372d25cbda8b377e9dfab77a563db +IV= 2d67ab617ffdf2ed89e9231ade593a54aa707f477b10e7919b1736b09dddccac +PT= 5226fee0b7085a48275c2336433b400aaed0b1e44cd33f73ed7df741dad85391 +CT= 7a084333c6e91315ecaebece0cd38b5bc821ce8375a6ed8e78bbe5075639518b +TEST= 286 +KEY= 8f0607dcbf9f21eb26c4a55bd7106086b242bc51291b453d0f523aac219c3250 +IV= 7a084333c6e91315ecaebece0cd38b5bc821ce8375a6ed8e78bbe5075639518b +PT= e2507e09113c894d66766f52614a34fb26bb3329d076203eeba61884a9962bc9 +CT= 3be150bb92f62cf0115c630b0aa0d56134fa1028ea5bd8d671c210b0578c9b97 +TEST= 287 +KEY= b4e757672d690d1b3798c650ddb0b5e786b8ac79c3409deb7e902a1c7610a9c7 +IV= 3be150bb92f62cf0115c630b0aa0d56134fa1028ea5bd8d671c210b0578c9b97 +PT= fa283fc92a49023f5d77fbcbbbe063d1d655dcb3dc4151eda101a1a1b86b2b1c +CT= b9add6702d6bc6e0b5cec21b39c53ea0842517e089abbc7309fe41bc70225173 +TEST= 288 +KEY= 0d4a81170002cbfb8256044be4758b47029dbb994aeb2198776e6ba00632f8b4 +IV= b9add6702d6bc6e0b5cec21b39c53ea0842517e089abbc7309fe41bc70225173 +PT= 962744a86a585f3fba92c41ae740ada4987b1f6b0362301eca3ef29e91fb90cc +CT= 242762753e220a61d7a995efeb390433d7d4573b7b9ada80f12aa8c6c590313b +TEST= 289 +KEY= 296de3623e20c19a55ff91a40f4c8f74d549eca23171fb188644c366c3a2c98f +IV= 242762753e220a61d7a995efeb390433d7d4573b7b9ada80f12aa8c6c590313b +PT= 67707690bdcb89bceebfb322c1994d59d53fb56a4e255b2d303e321dfcf011ec +CT= 8a65429bc8e1f2cac9935ef4e95d1499c63d71bd2d62128fe2bfc4f99067e20e +TEST= 290 +KEY= a308a1f9f6c133509c6ccf50e6119bed13749d1f1c13e99764fb079f53c52b81 +IV= 8a65429bc8e1f2cac9935ef4e95d1499c63d71bd2d62128fe2bfc4f99067e20e +PT= 72cd0e75bf7cadd6fc91a716bc0ca402cdb39092d4f09ba6cb387f3b0189518d +CT= 4ebe4b4d9907e939a29c4af15695e1cf6aa08e53baca1519a0e50fb8d16dca26 +TEST= 291 +KEY= edb6eab46fc6da693ef085a1b0847a2279d4134ca6d9fc8ec41e082782a8e1a7 +IV= 4ebe4b4d9907e939a29c4af15695e1cf6aa08e53baca1519a0e50fb8d16dca26 +PT= 93f34e8eee58d0f04623f7709951087736d0c2c20c1968b07c65f707d20bda78 +CT= 6f8116e4b44817589f9466bee73bdc8e9731594800e502adceae3b950ee405a0 +TEST= 292 +KEY= 8237fc50db8ecd31a164e31f57bfa6aceee54a04a63cfe230ab033b28c4ce407 +IV= 6f8116e4b44817589f9466bee73bdc8e9731594800e502adceae3b950ee405a0 +PT= fce38391d7005cc6f970345ffac6b3886e9daa36db182e5382b127bcd1c168a4 +CT= 48695f72f52c262bdbf1fcca8ce902c9800819d08f43fd5c7ac71cbd283be39a +TEST= 293 +KEY= ca5ea3222ea2eb1a7a951fd5db56a4656eed53d4297f037f70772f0fa477079d +IV= 48695f72f52c262bdbf1fcca8ce902c9800819d08f43fd5c7ac71cbd283be39a +PT= 1f95b1a8af6194ef35334b1fbdfeb478e7cd76114780ed88e503ef5e86a2f78d +CT= 7ac7bedf2a9255c5a193570fe5e2f7e5dfe195a1504ee61dc4d004f760787bfd +TEST= 294 +KEY= b0991dfd0430bedfdb0648da3eb45380b10cc6757931e562b4a72bf8c40f7c60 +IV= 7ac7bedf2a9255c5a193570fe5e2f7e5dfe195a1504ee61dc4d004f760787bfd +PT= 5703d3886c99352c9671be7a6df56788e201804053ddae5218f2fdea4e8fda14 +CT= dd12bf1727b8f146323794b255cea1e55c07de7c846546af6b33a3facbb20256 +TEST= 295 +KEY= 6d8ba2ea23884f99e931dc686b7af265ed0b1809fd54a3cddf9488020fbd7e36 +IV= dd12bf1727b8f146323794b255cea1e55c07de7c846546af6b33a3facbb20256 +PT= 197df3133ba53389b2d160148d90cc6e4065210ffdc6ef25dcf92205b8abd856 +CT= f3b697aa60e349b36605977c6eea7d15c3ed4cf8336553826e3d50646fcda688 +TEST= 296 +KEY= 9e3d3540436b062a8f344b1405908f702ee654f1ce31f04fb1a9d8666070d8be +IV= f3b697aa60e349b36605977c6eea7d15c3ed4cf8336553826e3d50646fcda688 +PT= 38ff7d49fb2b23440444e7fedb2a950d6d65b0a73da1953cc83468085935f0ae +CT= 4640b318472d6c6904fb90c9da5e5998593a9ea79ac79d6eef7cbcca2e248404 +TEST= 297 +KEY= d87d865804466a438bcfdbdddfced6e877dcca5654f66d215ed564ac4e545cba +IV= 4640b318472d6c6904fb90c9da5e5998593a9ea79ac79d6eef7cbcca2e248404 +PT= f908a58627adf00a26446fd37813edbd310f6e4084325e487f2162ad06820c5e +CT= 634ed781e2a1b2ba322a9e19b75859938672346550a59abb946e5612320b0021 +TEST= 298 +KEY= bb3351d9e6e7d8f9b9e545c468968f7bf1aefe330453f79acabb32be7c5f5c9b +IV= 634ed781e2a1b2ba322a9e19b75859938672346550a59abb946e5612320b0021 +PT= 4c1327a6d032e576945d7b3a12c14e5d7f6a75bfba24e376613c37f15ca2eed2 +CT= 0c08aa3122e0a11030106903bd2f594e01f4177debc38721dab9528c43e33403 +TEST= 299 +KEY= b73bfbe8c40779e989f52cc7d5b9d635f05ae94eef9070bb100260323fbc6898 +IV= 0c08aa3122e0a11030106903bd2f594e01f4177debc38721dab9528c43e33403 +PT= 83877f6b41bdacb2ed9ea52104a53e036877dc4db4a78e6107a5a3499ffeb095 +CT= 49d024404ef23b97fc89cc3a0c4349fe1bdc2acec19a0e1276c4278548c3dce4 +TEST= 300 +KEY= feebdfa88af5427e757ce0fdd9fa9fcbeb86c3802e0a7ea966c647b7777fb47c +IV= 49d024404ef23b97fc89cc3a0c4349fe1bdc2acec19a0e1276c4278548c3dce4 +PT= dd820ff015253f359ada60621826c0b55f1cdcb935b648b5ffa916ac5c4b4636 +CT= b1fa4aa15e4552cc2dda14df93b972bd4e1573772b93f6ef2141d6f2f3984ff1 +TEST= 301 +KEY= 4f119509d4b010b258a6f4224a43ed76a593b0f7059988464787914584e7fb8d +IV= b1fa4aa15e4552cc2dda14df93b972bd4e1573772b93f6ef2141d6f2f3984ff1 +PT= 56f65a8a4242e5fbda2701b7f3deebd4197c9671ffe1c38aa2b1084afbc2b71c +CT= 103aceae7e459077bd39f4949f17374ed57f130d7092cbe22a819f537e0536a9 +TEST= 302 +KEY= 5f2b5ba7aaf580c5e59f00b6d554da3870eca3fa750b43a46d060e16fae2cd24 +IV= 103aceae7e459077bd39f4949f17374ed57f130d7092cbe22a819f537e0536a9 +PT= 6b9b8278da570fac751a27c59bdd983999250724c57a4552047c6dc868ef94f0 +CT= 29d9e8441da1ef03b6b9cb3cebc68c0cff7cb022381f84b430e758b2fb9de2c2 +TEST= 303 +KEY= 76f2b3e3b7546fc65326cb8a3e9256348f9013d84d14c7105de156a4017f2fe6 +IV= 29d9e8441da1ef03b6b9cb3cebc68c0cff7cb022381f84b430e758b2fb9de2c2 +PT= 396fd6e62d44abda0989b49cbd577f60c146b0ccf22f95090ee3217001e05866 +CT= 0e9019fde217b1dc9260e02e8e6b818cd2441052ed5bbd9514f8d0c2dac99d57 +TEST= 304 +KEY= 7862aa1e5543de1ac1462ba4b0f9d7b85dd4038aa04f7a8549198666dbb6b2b1 +IV= 0e9019fde217b1dc9260e02e8e6b818cd2441052ed5bbd9514f8d0c2dac99d57 +PT= 4f5ea0e3cae9fec4e6718f4ed78ffeb39d34c77a9ae0f3be3874e8453b8bf46a +CT= c27b2a492f14fa6c95b8e5d56af464e8f9991c6e91cea7ff4a0af47fab5325a8 +TEST= 305 +KEY= ba1980577a57247654fece71da0db350a44d1fe43181dd7a0313721970e59719 +IV= c27b2a492f14fa6c95b8e5d56af464e8f9991c6e91cea7ff4a0af47fab5325a8 +PT= 0645de595598db3a6f8c2d5a3f90de634237929c14d658dfed67fccfde6e7184 +CT= 8a9b4d602296c6b7f09a3603eec604facda98ff45ead2c5e0e3ef635230bb3a8 +TEST= 306 +KEY= 3082cd3758c1e2c1a464f87234cbb7aa69e490106f2cf1240d2d842c53ee24b1 +IV= 8a9b4d602296c6b7f09a3603eec604facda98ff45ead2c5e0e3ef635230bb3a8 +PT= 3181844b23184315cb357d4b488feda7f74e216722f5ef5d43cc293281e1f804 +CT= c6fb39804f5da2b7a6849538b532c215874a2bf8d93a9747f05c973674fc84d7 +TEST= 307 +KEY= f679f4b7179c407602e06d4a81f975bfeeaebbe8b6166663fd71131a2712a066 +IV= c6fb39804f5da2b7a6849538b532c215874a2bf8d93a9747f05c973674fc84d7 +PT= e58b0c88ce5a1b578e7d114756dba6ce5092ae769e588bade5af82bf0be6a0b8 +CT= d8602793dd68e4b1df250262bd8e751d813973866908958e63a1ae0c3ae8cd69 +TEST= 308 +KEY= 2e19d324caf4a4c7ddc56f283c7700a26f97c86edf1ef3ed9ed0bd161dfa6d0f +IV= d8602793dd68e4b1df250262bd8e751d813973866908958e63a1ae0c3ae8cd69 +PT= 4beb1f0da8f61471848cddd963f60b1cbfb93dbf68381c652aeb9cd5924014ec +CT= 786f0d64f44412499c7ae23b68851e4bb52a0351de249c187d12e6287c9740d4 +TEST= 309 +KEY= 5676de403eb0b68e41bf8d1354f21ee9dabdcb3f013a6ff5e3c25b3e616d2ddb +IV= 786f0d64f44412499c7ae23b68851e4bb52a0351de249c187d12e6287c9740d4 +PT= f039670cb8fb7a31e2e7af196eb2788ff87f549cf00981d0dc165039a4205060 +CT= ca0d7a7eb5c7e1ea5fd4d3392b12757d94aac5e10268a8273b6994f7c821c523 +TEST= 310 +KEY= 9c7ba43e8b7757641e6b5e2a7fe06b944e170ede0352c7d2d8abcfc9a94ce8f8 +IV= ca0d7a7eb5c7e1ea5fd4d3392b12757d94aac5e10268a8273b6994f7c821c523 +PT= e1aa0aea102f6ec0f9cc361aa9ef8a386aeb8c21a1c4c431644ae8a9885fb822 +CT= 40455f6cd809dad5a86bc23a4eeda1de6b9fc62b83cd19e0ba9539645f04aac7 +TEST= 311 +KEY= dc3efb52537e8db1b6009c10310dca4a2588c8f5809fde32623ef6adf648423f +IV= 40455f6cd809dad5a86bc23a4eeda1de6b9fc62b83cd19e0ba9539645f04aac7 +PT= 357c00df38ccbef9d4f04476547eabc2598c6aba593fe2f9659734a74ae0838c +CT= aa25f55e77dfc1c3a04346d813410e7c9913f11dd46e70b6d1789455d157d3bd +TEST= 312 +KEY= 761b0e0c24a14c721643dac8224cc436bc9b39e854f1ae84b34662f8271f9182 +IV= aa25f55e77dfc1c3a04346d813410e7c9913f11dd46e70b6d1789455d157d3bd +PT= 35981349822652be013d36936afec456ab8111881324d111277e9ea19498b10c +CT= 7340946357b6a9604637edbba41a660550421d2a89b42e6c379743df150e57c3 +TEST= 313 +KEY= 055b9a6f7317e512507437738656a233ecd924c2dd4580e884d121273211c641 +IV= 7340946357b6a9604637edbba41a660550421d2a89b42e6c379743df150e57c3 +PT= f60750cb52c290f61f79b2c9bc08b571744dac7ff80e64cc8950c2ce8870efb0 +CT= b99d74fe2f29589fce069071ce4d18889eb7e76c6019f84b6ec688ad4ab36591 +TEST= 314 +KEY= bcc6ee915c3ebd8d9e72a702481bbabb726ec3aebd5c78a3ea17a98a78a2a3d0 +IV= b99d74fe2f29589fce069071ce4d18889eb7e76c6019f84b6ec688ad4ab36591 +PT= 41507260952a0709fde8416042a127ed957f75b4a5462be14c7679b0c8656e6f +CT= ec2fd9e36060c09140ae8c1a4a9ff74c484118aa1c12008ffddf25edf92415ca +TEST= 315 +KEY= 50e937723c5e7d1cdedc2b1802844df73a2fdb04a14e782c17c88c678186b61a +IV= ec2fd9e36060c09140ae8c1a4a9ff74c484118aa1c12008ffddf25edf92415ca +PT= b2287c91cbae4cb2a1a55cf542538dd6ca055198fec6081deb75c5372c334df4 +CT= d5514b1478d5179afc3301f8e77a45f1f6a1991102b878ce76a2e39ee29370a5 +TEST= 316 +KEY= 85b87c66448b6a8622ef2ae0e5fe0806cc8e4215a3f600e2616a6ff96315c6bf +IV= d5514b1478d5179afc3301f8e77a45f1f6a1991102b878ce76a2e39ee29370a5 +PT= 6db768ba17b4dd3a6cded8683ddfcde981d521fcb93e3a467da91b525c25a298 +CT= 290d5e15082c78636b7017d16208b9f09b630740aa13f9eb289facedb02623b9 +TEST= 317 +KEY= acb522734ca712e5499f3d3187f6b1f657ed455509e5f90949f5c314d333e506 +IV= 290d5e15082c78636b7017d16208b9f09b630740aa13f9eb289facedb02623b9 +PT= 0c36842176581b9ee95daa47461ed7ac80444bfd3f876dcd8bc9d1e641f43f98 +CT= 3f774282b0019d187b08503680c33481e18086e812d19a561a4163537d954832 +TEST= 318 +KEY= 93c260f1fca68ffd32976d0707358577b66dc3bd1b34635f53b4a047aea6ad34 +IV= 3f774282b0019d187b08503680c33481e18086e812d19a561a4163537d954832 +PT= ebb3692eb3ea7acae33a6ffdebe3b89a7084b8f1b0e6ece97af1225697021d20 +CT= 2f41c9d760eab221ebb31de3c5cc1bd6e0af8408f357ec0b67a8922df96aefea +TEST= 319 +KEY= bc83a9269c4c3ddcd92470e4c2f99ea156c247b5e8638f54341c326a57cc42de +IV= 2f41c9d760eab221ebb31de3c5cc1bd6e0af8408f357ec0b67a8922df96aefea +PT= 64ed8a362889b8aff5a8e2f3303b1c1e0cd3ce26122c48ac4e489bb7ed0e75ac +CT= a895aa2674d8047a021e357e183dd378a60ad773a16480f6f65205fbf6d6b7eb +TEST= 320 +KEY= 14160300e89439a6db3a459adac44dd9f0c890c649070fa2c24e3791a11af535 +IV= a895aa2674d8047a021e357e183dd378a60ad773a16480f6f65205fbf6d6b7eb +PT= 151893d9f8af99ca981c43a7ddf88a3b2f92d5c2259b7fa63f4268e1c37e86f3 +CT= df01d6bd1f01fce805883272293c8caff9ec16f62afaef9039258402c3129745 +TEST= 321 +KEY= cb17d5bdf795c54edeb277e8f3f8c1760924863063fde032fb6bb39362086270 +IV= df01d6bd1f01fce805883272293c8caff9ec16f62afaef9039258402c3129745 +PT= 0dc51cf9502db28c54a4ff2cbdf504f48eebd01ec0122fa1eb44a109afb0d0a3 +CT= 90393873f11a83e59a55253152cb5e6feac84893b4d3f8e7f39d77148d4db1f5 +TEST= 322 +KEY= 5b2eedce068f46ab44e752d9a1339f19e3eccea3d72e18d508f6c487ef45d385 +IV= 90393873f11a83e59a55253152cb5e6feac84893b4d3f8e7f39d77148d4db1f5 +PT= 798d91ae8b0a1c4b3b91238edc1d9b5cd3f2fc63d79300393cc9ca4d0e2e43ba +CT= 9980a843e9c6b6f0f4999bece9e140972acc9a7566f05eabbf4514ae51962481 +TEST= 323 +KEY= c2ae458def49f05bb07ec93548d2df8ec92054d6b1de467eb7b3d029bed3f704 +IV= 9980a843e9c6b6f0f4999bece9e140972acc9a7566f05eabbf4514ae51962481 +PT= 5624970a4d009b0edec48df333ded84baf2dbc26914b0bd0b45d305f9925b5ed +CT= e8286589692370439ef78fd22c1974abe2408d872635d9b017e6478fba8a59e6 +TEST= 324 +KEY= 2a862004866a80182e8946e764cbab252b60d95197eb9fcea05597a60459aee2 +IV= e8286589692370439ef78fd22c1974abe2408d872635d9b017e6478fba8a59e6 +PT= 66604504865fbb6d1ebacf68a282bbece2749fac1e978fdba512bee91820fc2f +CT= 90706a115220d7db081ba91c4545d950aa5d3c2efe647b3a45297e882178a1b6 +TEST= 325 +KEY= baf64a15d44a57c32692effb218e7275813de57f698fe4f4e57ce92e25210f54 +IV= 90706a115220d7db081ba91c4545d950aa5d3c2efe647b3a45297e882178a1b6 +PT= 88ab334e156764eff5055f538bf53ae2fa71a84a62bb02f90d982460b3b9d345 +CT= b5a97e7166853746a559631e4747d8d222695df0a9f8e0ceb8d9bf209194e81b +TEST= 326 +KEY= 0f5f3464b2cf608583cb8ce566c9aaa7a354b88fc077043a5da5560eb4b5e74f +IV= b5a97e7166853746a559631e4747d8d222695df0a9f8e0ceb8d9bf209194e81b +PT= a2c93a71d5df316650607af87f1b59c7683bbb14ed1a31f7b64c825a020b051e +CT= d9701b422c1339a104fe7388362e0f6ebdd0405ab1c6567de206b8397e99d6ba +TEST= 327 +KEY= d62f2f269edc59248735ff6d50e7a5c91e84f8d571b15247bfa3ee37ca2c31f5 +IV= d9701b422c1339a104fe7388362e0f6ebdd0405ab1c6567de206b8397e99d6ba +PT= 0c4793391c89a44ac14283f85b89176da97f95ad55be2cf84dcc769716628a29 +CT= 663b9946f474e5823305e82ac6fd0c8571708076b256632d37865464d94c5b0b +TEST= 328 +KEY= b014b6606aa8bca6b4301747961aa94c6ff478a3c3e7316a8825ba5313606afe +IV= 663b9946f474e5823305e82ac6fd0c8571708076b256632d37865464d94c5b0b +PT= 8b999ea579de4d96ccf85193d08e10094d32a163c84d8784a39ec5dc3b5942ca +CT= 5487a659c55bf403dcb0ef64638af0a2ec3afbf75dd8f5b978b058c88ca541f3 +TEST= 329 +KEY= e4931039aff348a56880f823f59059ee83ce83549e3fc4d3f095e29b9fc52b0d +IV= 5487a659c55bf403dcb0ef64638af0a2ec3afbf75dd8f5b978b058c88ca541f3 +PT= a6ad475b19746b2c22392dec27d53cee05d9f3f2d2f1fef3218aad61ec81cefd +CT= 6a7566a223f00784ae7dda55e5c7b095300132c76697e4c89a6ff55eab32f1a3 +TEST= 330 +KEY= 8ee6769b8c034f21c6fd22761057e97bb3cfb193f8a8201b6afa17c534f7daae +IV= 6a7566a223f00784ae7dda55e5c7b095300132c76697e4c89a6ff55eab32f1a3 +PT= 4ae7c5c7e4da8bcdbe421a97d99225f1ca78b6966dd2df0c0cac8db68493b5b5 +CT= 42ec99d8c57a3f36396bb8b1daa50914a3b5165c39c377926293ca9349ca1e9b +TEST= 331 +KEY= cc0aef4349797017ff969ac7caf2e06f107aa7cfc16b57890869dd567d3dc435 +IV= 42ec99d8c57a3f36396bb8b1daa50914a3b5165c39c377926293ca9349ca1e9b +PT= 1e121d02f11f17bbe3b4e3dd357a173e9b1ca67cb610615610d7eb1973d4fd8e +CT= d0fe8963eac17e75a09046065f81365d0331f87268b9ac99e656dc9280029e67 +TEST= 332 +KEY= 1cf46620a3b80e625f06dcc19573d632134b5fbda9d2fb10ee3f01c4fd3f5a52 +IV= d0fe8963eac17e75a09046065f81365d0331f87268b9ac99e656dc9280029e67 +PT= edc5411d4fade4271b585506224fa82b2fddd8926130076e4b6129e28d873818 +CT= 90dee2b10b86ea64fa3e185d8f16bb638bd2fe2541ee30c773b6be3ec78aca8a +TEST= 333 +KEY= 8c2a8491a83ee406a538c49c1a656d519899a198e83ccbd79d89bffa3ab590d8 +IV= 90dee2b10b86ea64fa3e185d8f16bb638bd2fe2541ee30c773b6be3ec78aca8a +PT= c58e84e817b03c24190eb5e42ec92f6bbe544676e277c9cf898b8d08bd0634a7 +CT= 5ef700ab2b17cf422a8927753978922e7ceddfaec3eb489a504585671c7d26b0 +TEST= 334 +KEY= d2dd843a83292b448fb1e3e9231dff7fe4747e362bd7834dcdcc3a9d26c8b668 +IV= 5ef700ab2b17cf422a8927753978922e7ceddfaec3eb489a504585671c7d26b0 +PT= 124fbb4643d6ff7f60e632d2df8a953efecfe4800697f6c49df8583934d6b0b5 +CT= 5b6b68febd3f99925a686cc503d7469d264534c3bc554c566c94fec5c81d1fc4 +TEST= 335 +KEY= 89b6ecc43e16b2d6d5d98f2c20cab9e2c2314af59782cf1ba158c458eed5a9ac +IV= 5b6b68febd3f99925a686cc503d7469d264534c3bc554c566c94fec5c81d1fc4 +PT= 0350b6c06d4143cd619cb416578d1f96a2cac17943bf1c927dd255ea2f55736e +CT= 4f9be2bad1562d0dc26f676697ab092e98a6818e48117dc5529ba82d434bd6a0 +TEST= 336 +KEY= c62d0e7eef409fdb17b6e84ab761b0cc5a97cb7bdf93b2def3c36c75ad9e7f0c +IV= 4f9be2bad1562d0dc26f676697ab092e98a6818e48117dc5529ba82d434bd6a0 +PT= 8edc5a23513c6101b3ae521442c55885ccb25d7ccd1ed45f7124250b58278bfc +CT= d831d0724c0eae3953e0d9c34bff98cbbc8c427a67aea66f526d9fd0553806ba +TEST= 337 +KEY= 1e1cde0ca34e31e244563189fc9e2807e61b8901b83d14b1a1aef3a5f8a679b6 +IV= d831d0724c0eae3953e0d9c34bff98cbbc8c427a67aea66f526d9fd0553806ba +PT= 8b68bc0b76138cdc1ecc1572e19c8e0273c60a5c15180bda0ff46c5390dad3ab +CT= 9c4752ac56aaa00877564a5d292d68741d1f1412da55b291faedad28a471bc97 +TEST= 338 +KEY= 825b8ca0f5e491ea33007bd4d5b34073fb049d136268a6205b435e8d5cd7c521 +IV= 9c4752ac56aaa00877564a5d292d68741d1f1412da55b291faedad28a471bc97 +PT= 41fee6a7a6e5e018819f4bf4610a251264c51efcb0fe5c4be680e64cc5d96b3d +CT= 0a24417d7b547cf89e6d1a0ea995c47d451ed56770eda0165f3cb6fe7f39a8aa +TEST= 339 +KEY= 887fcddd8eb0ed12ad6d61da7c26840ebe1a487412850636047fe87323ee6d8b +IV= 0a24417d7b547cf89e6d1a0ea995c47d451ed56770eda0165f3cb6fe7f39a8aa +PT= 14f4e624ffbc2b01132805d7eaf1babd134f4d9d79970e5f8e1334d75791c98e +CT= 23fec4d0bebc142f7c60ae16b23dfd559c8bcd4e52890139ca509893c362eb60 +TEST= 340 +KEY= ab81090d300cf93dd10dcfccce1b795b2291853a400c070fce2f70e0e08c86eb +IV= 23fec4d0bebc142f7c60ae16b23dfd559c8bcd4e52890139ca509893c362eb60 +PT= a987e85dd8267b3e0b37add77b48570265784e439135b71d13b3ce235ff16124 +CT= c93225872e3c2dd78423eb958e2ee94c4a56511e3fed1ea96466eaa024128fe7 +TEST= 341 +KEY= 62b32c8a1e30d4ea552e24594035901768c7d4247fe119a6aa499a40c49e090c +IV= c93225872e3c2dd78423eb958e2ee94c4a56511e3fed1ea96466eaa024128fe7 +PT= c36fe9596db7dd257e165a062cb3533d49518d640f3a982233bd401d5adc5488 +CT= a19fb5c2dd2322bd12f9854ed49e6c444f42c2046e8979b4041b209ea48e029f +TEST= 342 +KEY= c32c9948c313f65747d7a11794abfc532785162011686012ae52bade60100b93 +IV= a19fb5c2dd2322bd12f9854ed49e6c444f42c2046e8979b4041b209ea48e029f +PT= 02a30a1480e94f46f10967fd953e39d88d161d5b4a835356f63ad30a7155783a +CT= d1021ef4ddf6c72f46ad5989816c28ef05b26225315ff850f485438afdd97dae +TEST= 343 +KEY= 122e87bc1ee53178017af89e15c7d4bc22377405203798425ad7f9549dc9763d +IV= d1021ef4ddf6c72f46ad5989816c28ef05b26225315ff850f485438afdd97dae +PT= 8f64e837344e34520d322df2e8cd410aff044a5441673854d8cd4db4ce6bee0e +CT= 37aa5c1bb0f5cdf289f936a254a6ce228e414c5a5c50ceda5ec7369e40ca247c +TEST= 344 +KEY= 2584dba7ae10fc8a8883ce3c41611a9eac76385f7c6756980410cfcadd035241 +IV= 37aa5c1bb0f5cdf289f936a254a6ce228e414c5a5c50ceda5ec7369e40ca247c +PT= 16228ef510c4fb5d94e099f1b0f7b4371e6dc12487118933b005d9c2fd48c51c +CT= 83eaa8e8d8ba2342aff10c2b1fe9736d78ce4003966e8f5224ff101a97ef3018 +TEST= 345 +KEY= a66e734f76aadfc82772c2175e8869f3d4b8785cea09d9ca20efdfd04aec6259 +IV= 83eaa8e8d8ba2342aff10c2b1fe9736d78ce4003966e8f5224ff101a97ef3018 +PT= 9d99d7de11cc12006c977f1bd5207014f88e4a2e6e2c7ebd65de65422a95ee10 +CT= 56719381d3ee29ab9c0d84a260e8a3cfc2966488e3ef01bffbbc2c3dbc5ce88d +TEST= 346 +KEY= f01fe0cea544f663bb7f46b53e60ca3c162e1cd409e6d875db53f3edf6b08ad4 +IV= 56719381d3ee29ab9c0d84a260e8a3cfc2966488e3ef01bffbbc2c3dbc5ce88d +PT= 98cac7d756173120d7391b72594af07b45e026f32d74af4f53ebf80c8c79344a +CT= efe65fa2ed625f8ef97ca4e24c4564335ac2c2b849055deb4b0202cb6447fcf2 +TEST= 347 +KEY= 1ff9bf6c4826a9ed4203e2577225ae0f4cecde6c40e3859e9051f12692f77626 +IV= efe65fa2ed625f8ef97ca4e24c4564335ac2c2b849055deb4b0202cb6447fcf2 +PT= b8d7a528439303d8c2d4687bd97039b19a94d5fbb16d1b44d1216e8683b8ba42 +CT= a01049ddcc9d7256081d5203dfdf3be142d6da11d8d60654282ae4a95d9fede9 +TEST= 348 +KEY= bfe9f6b184bbdbbb4a1eb054adfa95ee0e3a047d983583cab87b158fcf689bcf +IV= a01049ddcc9d7256081d5203dfdf3be142d6da11d8d60654282ae4a95d9fede9 +PT= aff97761c5a12998d14aa0069cfb885a0b1a97fa51b5cdf9f53344f1d1bd3833 +CT= 2166c5b5435c9e06cbf8a4f4d2c8ad92516af3b890a94f294c5168b9da409c0d +TEST= 349 +KEY= 9e8f3304c7e745bd81e614a07f32387c5f50f7c5089ccce3f42a7d36152807c2 +IV= 2166c5b5435c9e06cbf8a4f4d2c8ad92516af3b890a94f294c5168b9da409c0d +PT= b5821dc63f44358bf8486bb5c7d4409a95a426be8752b846f69272f91261f32b +CT= 6baa5b73811dc84d898d6457565e5dee62e74c19c35d2271adf8a49f3330dfcc +TEST= 350 +KEY= f525687746fa8df0086b70f7296c65923db7bbdccbc1ee9259d2d9a92618d80e +IV= 6baa5b73811dc84d898d6457565e5dee62e74c19c35d2271adf8a49f3330dfcc +PT= aed741de2c3bb4d649bdeb4ffe0317e750dbf666e8183e2faf0de5dab97a880f +CT= 5da8e141c3a3226c9716082ba3100b622281cf5b4360473678de3f8c865c8321 +TEST= 351 +KEY= a88d89368559af9c9f7d78dc8a7c6ef01f36748788a1a9a4210ce625a0445b2f +IV= 5da8e141c3a3226c9716082ba3100b622281cf5b4360473678de3f8c865c8321 +PT= 20320d90805fb6fbd9fdd54899b49e3d64dff79c8d860bf56ee711fb9b167a3a +CT= b353e7e36cc2e8b2729fa242761b3304c7f08e8f041e5006a9795dfcd49c7125 +TEST= 352 +KEY= 1bde6ed5e99b472eede2da9efc675df4d8c6fa088cbff9a28875bbd974d82a0a +IV= b353e7e36cc2e8b2729fa242761b3304c7f08e8f041e5006a9795dfcd49c7125 +PT= 086b2992de83e748a8348100410a3e5ab48e38262d31d809796d2a27e376b167 +CT= e56e2951368cf40ef9711de8f6324f2cdae47ac4bf60a4fa0eda1fcf08836298 +TEST= 353 +KEY= feb04784df17b3201493c7760a5512d8022280cc33df5d5886afa4167c5b4892 +IV= e56e2951368cf40ef9711de8f6324f2cdae47ac4bf60a4fa0eda1fcf08836298 +PT= 05d90808351a8f550f3e9dff5b1821d0ecda6093b61c81f221bd0e4f1ccd4b0f +CT= c48991c6043b2458470df7d69a36326335dfb451a424a63f20e7f3f4e919b626 +TEST= 354 +KEY= 3a39d642db2c9778539e30a0906320bb37fd349d97fbfb67a64857e29542feb4 +IV= c48991c6043b2458470df7d69a36326335dfb451a424a63f20e7f3f4e919b626 +PT= 281fb4e5763a29a2a821064dd569ef0fa4a9d13730ca8016515daf3485d752cb +CT= 6f9945f4c881487ef436b01dc7b5a45ee2a83c5af11e82296aba0c3ee9e4a1ea +TEST= 355 +KEY= 55a093b613addf06a7a880bd57d684e5d55508c766e5794eccf25bdc7ca65f5e +IV= 6f9945f4c881487ef436b01dc7b5a45ee2a83c5af11e82296aba0c3ee9e4a1ea +PT= 40d73cd46bbc54f148fb9e0688f4b51ff8b9b171914e76e5026a4dfdc259ebb4 +CT= 87012744e14079930ae4264fe3ebd5f58fac52195f6b909f638d8b41abe59edf +TEST= 356 +KEY= d2a1b4f2f2eda695ad4ca6f2b43d51105af95ade398ee9d1af7fd09dd743c181 +IV= 87012744e14079930ae4264fe3ebd5f58fac52195f6b909f638d8b41abe59edf +PT= 79becfdf45ee4947a2ad2e7f3b2af74d527673e54c17d6e9b3d1d3fb180217c7 +CT= 21650956f0d6fd7a8e23f4a1a3c306f0ee54f92883f868c33e7acab0d4ff793e +TEST= 357 +KEY= f3c4bda4023b5bef236f525317fe57e0b4ada3f6ba76811291051a2d03bcb8bf +IV= 21650956f0d6fd7a8e23f4a1a3c306f0ee54f92883f868c33e7acab0d4ff793e +PT= 90b59d72c723b425004524f6765067e27a53ad3ade891d40262a8ee4de6b85d8 +CT= ea6621959846234c6450c72f286c6e1703a50910a842b703c916d26735e7c3cf +TEST= 358 +KEY= 19a29c319a7d78a3473f957c3f9239f7b708aae6123436115813c84a365b7b70 +IV= ea6621959846234c6450c72f286c6e1703a50910a842b703c916d26735e7c3cf +PT= 3dbc955f8e2aabc202fb7bc4a31c057466212633aa1c4e695ed15626a2f8d335 +CT= d89f2d3909683d802f323f115365c143f6d5c0b4d279e26c644436b921384e6d +TEST= 359 +KEY= c13db10893154523680daa6d6cf7f8b441dd6a52c04dd47d3c57fef31763351d +IV= d89f2d3909683d802f323f115365c143f6d5c0b4d279e26c644436b921384e6d +PT= 0ced212c11da4c01e7f0989785e9132a579a8daf5ca07c05b44d2cf1dc8021c6 +CT= d07f786f4065a16c5aed4999d35e00c933d911f2d06b037b9e4c6fc93d4e0d0c +TEST= 360 +KEY= 1142c967d370e44f32e0e3f4bfa9f87d72047ba01026d706a21b913a2a2d3811 +IV= d07f786f4065a16c5aed4999d35e00c933d911f2d06b037b9e4c6fc93d4e0d0c +PT= be30d2eb4e1cec8a1d6123f9ba7bd5d74718ffd8fba38e4ee8460de7cd015813 +CT= 99f524d7cbe2680a92b6f24aaa3a6a7f9b2951e712e2c5b30e0d594f58bdab67 +TEST= 361 +KEY= 88b7edb018928c45a05611be15939202e92d2a4702c412b5ac16c87572909376 +IV= 99f524d7cbe2680a92b6f24aaa3a6a7f9b2951e712e2c5b30e0d594f58bdab67 +PT= 50d2925f3c25600e0692f902ab6d04b3fde417f14bbd250ee29b3eec9ebcedd1 +CT= 984948974536a1b87f311b50ae86375d21b7bdfc4b9ef14e8d431c92ba7f5612 +TEST= 362 +KEY= 10fea5275da42dfddf670aeebb15a55fc89a97bb495ae3fb2155d4e7c8efc564 +IV= 984948974536a1b87f311b50ae86375d21b7bdfc4b9ef14e8d431c92ba7f5612 +PT= 1ef45245781f31c92a84d82441853ce832bc03fbd59bcb25ad7f023a4cc93451 +CT= 1da0536ff10f4f5b6ae429fd4ab0fdf804e6be0ab028adea1a0912db67c2f105 +TEST= 363 +KEY= 0d5ef648acab62a6b5832313f1a558a7cc7c29b1f9724e113b5cc63caf2d3461 +IV= 1da0536ff10f4f5b6ae429fd4ab0fdf804e6be0ab028adea1a0912db67c2f105 +PT= 3540fa674f085225251cb70955010540b83f44b8a076361aa377def211576e5b +CT= d14a6201bd9e58986e3f8df7c808c8c241bf302b826b0243936ee359aeb138ad +TEST= 364 +KEY= dc14944911353a3edbbcaee439ad90658dc3199a7b194c52a8322565019c0ccc +IV= d14a6201bd9e58986e3f8df7c808c8c241bf302b826b0243936ee359aeb138ad +PT= 3123a8d04f9f90416c387eae64d17910afaaf02088ea40172877a3ef2b7b1088 +CT= 991be6b9a55fe863df733f24771d15b03c56f9c7d923d0ddfc9c558cb6442ee6 +TEST= 365 +KEY= 450f72f0b46ad25d04cf91c04eb085d5b195e05da23a9c8f54ae70e9b7d8222a +IV= 991be6b9a55fe863df733f24771d15b03c56f9c7d923d0ddfc9c558cb6442ee6 +PT= 604760e1c0a706b758cde5b27cd5061bddb6a3543781554ed79e3a10e988b82d +CT= a2835c276894be726b4ceb9aa241102b73007d0155169d8add29c5a0169a661c +TEST= 366 +KEY= e78c2ed7dcfe6c2f6f837a5aecf195fec2959d5cf72c01058987b549a1424436 +IV= a2835c276894be726b4ceb9aa241102b73007d0155169d8add29c5a0169a661c +PT= 583feb1777a7f898fb67299e9c3249ce5a5bb1f35e2bd37b2d03295c0b5ed933 +CT= 7512adb513a53b3fa0aa6d2f7eadcf0a94e996ac6798dda9062188cb4c5574c9 +TEST= 367 +KEY= 929e8362cf5b5710cf291775925c5af4567c0bf090b4dcac8fa63d82ed1730ff +IV= 7512adb513a53b3fa0aa6d2f7eadcf0a94e996ac6798dda9062188cb4c5574c9 +PT= f28dd073577e6230d7f48f8007e8e8b915a43ae1519d8e4a7ef68bcfac53d43f +CT= bd3117dac64adf886f5e9a72b9c9ebb371075f4c3e3230f67122a5a454531f63 +TEST= 368 +KEY= 2faf94b809118898a0778d072b95b147277b54bcae86ec5afe849826b9442f9c +IV= bd3117dac64adf886f5e9a72b9c9ebb371075f4c3e3230f67122a5a454531f63 +PT= 4fbe8677958c2c45724c2759d1c02aac1e002e9d3d77c33adb6006315bb00262 +CT= b3412bfefb031fa7e012a26befddf5549e8a7a4bf85018c8e6d3ed3991ffe7dd +TEST= 369 +KEY= 9ceebf46f212973f40652f6cc4484413b9f12ef756d6f4921857751f28bbc841 +IV= b3412bfefb031fa7e012a26befddf5549e8a7a4bf85018c8e6d3ed3991ffe7dd +PT= c37f19c5769f25c62f0c07dd8a7a53a4dc8d84f8506f052c13e189ff776665d9 +CT= 3854b18ea073fdc669e03a8d49f854d83261397d339f4c55ff5d48aa5cc231dd +TEST= 370 +KEY= a4ba0ec852616af9298515e18db010cb8b90178a6549b8c7e70a3db57479f99c +IV= 3854b18ea073fdc669e03a8d49f854d83261397d339f4c55ff5d48aa5cc231dd +PT= 902f90447a8273c8b2ae018f60561b6caf7bf697f1ace74e2e263cf1e7a9ccf5 +CT= 0959bb3266c8152ad295974deb89087f044abe433fbbf7186d16ddf34724095e +TEST= 371 +KEY= ade3b5fa34a97fd3fb1082ac663918b48fdaa9c95af24fdf8a1ce046335df0c2 +IV= 0959bb3266c8152ad295974deb89087f044abe433fbbf7186d16ddf34724095e +PT= 1f4d769046d0a487397249c97704f25dd7013d7b0b8fb4b5adbf4d5182b0982d +CT= b2bff0a3dda9015187a06de11efbec9e69395a51aff91de2378bc109224d4381 +TEST= 372 +KEY= 1f5c4559e9007e827cb0ef4d78c2f42ae6e3f398f50b523dbd97214f1110b343 +IV= b2bff0a3dda9015187a06de11efbec9e69395a51aff91de2378bc109224d4381 +PT= e21b060ed39b2dd82f89da88daac09da036ccd92b26078532007069e145a04d3 +CT= 111c8b974e6c30125a07a9bec8c2b7ab44860dd7307fb7686fdcf3bee584ba97 +TEST= 373 +KEY= 0e40cecea76c4e9026b746f3b0004381a265fe4fc574e555d24bd2f1f49409d4 +IV= 111c8b974e6c30125a07a9bec8c2b7ab44860dd7307fb7686fdcf3bee584ba97 +PT= db55b7a918952748005a836b9b4fd1abe7806c7c86f9329f60114a6a09f0ef01 +CT= 09492109a680ee8263cb7bd1957776c3702348ab4b92ad42f7cf1aa89d900da2 +TEST= 374 +KEY= 0709efc701eca012457c3d2225773542d246b6e48ee648172584c85969040476 +IV= 09492109a680ee8263cb7bd1957776c3702348ab4b92ad42f7cf1aa89d900da2 +PT= 405716dbedb02bb93a3ff4491d560465afac3ad5a5d07577ad3a660c64ce1ee2 +CT= 034096462cccde3e69131601102fcd1dadc091ed64f927e9092359007a21febb +TEST= 375 +KEY= 044979812d207e2c2c6f2b233558f85f7f862709ea1f6ffe2ca791591325facd +IV= 034096462cccde3e69131601102fcd1dadc091ed64f927e9092359007a21febb +PT= 668293a65cd1bd9d9cbc69ef1d5210c07e967cd2ffb38291957b1ac4ed4f7390 +CT= a860103e668df05b2b584a835912e00aa78e9df759194761f8f1b55f9d71f26e +TEST= 376 +KEY= ac2969bf4bad8e77073761a06c4a1855d808bafeb306289fd45624068e5408a3 +IV= a860103e668df05b2b584a835912e00aa78e9df759194761f8f1b55f9d71f26e +PT= 063bc0493e4559e5a47e55a32095b46599663340fcfa10fff7717e15a8a0b3a4 +CT= 9926d01fd6c952f66f4aaa5b5d0ec31324ba6575c392adbb6e2e5ccd40819074 +TEST= 377 +KEY= 350fb9a09d64dc81687dcbfb3144db46fcb2df8b70948524ba7878cbced598d7 +IV= 9926d01fd6c952f66f4aaa5b5d0ec31324ba6575c392adbb6e2e5ccd40819074 +PT= b289318952c1371b16bdb6d759fc187e80de7c93321ee853fb45ac84e017118d +CT= 65d85bbee283386a2f197cda2581c35b83903f7fc9b4edda8beac70576bd7e9d +TEST= 378 +KEY= 50d7e21e7fe7e4eb4764b72114c5181d7f22e0f4b92068fe3192bfceb868e64a +IV= 65d85bbee283386a2f197cda2581c35b83903f7fc9b4edda8beac70576bd7e9d +PT= d27bb1e8d2f920635ee7029f591de69f4a0af1eb561d999e97d82294c3db1ff5 +CT= d5b354edf0a63f2e84e7226a46c649f52f2644203bb64d4bdc0725841a730103 +TEST= 379 +KEY= 8564b6f38f41dbc5c383954b520351e85004a4d4829625b5ed959a4aa21be749 +IV= d5b354edf0a63f2e84e7226a46c649f52f2644203bb64d4bdc0725841a730103 +PT= 006bd77dbbdb18a019851623e4de95de1a53179710c480053d7f5b137de7f76a +CT= 43cf07120a317392b2149f2ad8d206ee381d533c7693a68bcd8fc34e2f01dfa4 +TEST= 380 +KEY= c6abb1e18570a85771970a618ad157066819f7e8f405833e201a59048d1a38ed +IV= 43cf07120a317392b2149f2ad8d206ee381d533c7693a68bcd8fc34e2f01dfa4 +PT= e7915d7e9f3031f3a9670f8ab2ad920b2f93d8be788ab154a33005538cf1926a +CT= 756e293642323b8de0cc4a3847de7a868b70d510de4f4cb015e35faef74a0ea0 +TEST= 381 +KEY= b3c598d7c74293da915b4059cd0f2d80e36922f82a4acf8e35f906aa7a50364d +IV= 756e293642323b8de0cc4a3847de7a868b70d510de4f4cb015e35faef74a0ea0 +PT= 70ad797897b887625eb2ccea3090cc6c2f382cfd7aae4828db81a8949051d0f1 +CT= 2414b9086cd5f30e9ff850962f2c7a82b1ed5fe0b2d5926524e0910590d3c320 +TEST= 382 +KEY= 97d121dfab9760d40ea310cfe223570252847d18989f5deb111997afea83f56d +IV= 2414b9086cd5f30e9ff850962f2c7a82b1ed5fe0b2d5926524e0910590d3c320 +PT= 7a9ef3f3d74494731b2cf48a985c99f92bc24647e648370a3659cb83603e0033 +CT= c18f04dc59b729c1cac553d1767e16f3ee142a372b123252de7ba274b3d0b3bd +TEST= 383 +KEY= 565e2503f2204915c466431e945d41f1bc90572fb38d6fb9cf6235db595346d0 +IV= c18f04dc59b729c1cac553d1767e16f3ee142a372b123252de7ba274b3d0b3bd +PT= e3266d13437483fcce4394b73a1857b0d7c2676e6ebd6f9820be39096a2fc4c8 +CT= 0d0b3343ebb91e57babd42d4509a47386d9491100d4f2a673229ce0bb2e851b8 +TEST= 384 +KEY= 5b551640199957427edb01cac4c706c9d104c63fbec245defd4bfbd0ebbb1768 +IV= 0d0b3343ebb91e57babd42d4509a47386d9491100d4f2a673229ce0bb2e851b8 +PT= c0386f47ede462b8210cde14bf6aea55a4eab484de912e44395fada01fd1fae0 +CT= 553c499f07b1fa9f746e74ab88018eccdac77605049d514bf6a06643ea7bc8eb +TEST= 385 +KEY= 0e695fdf1e28addd0ab575614cc688050bc3b03aba5f14950beb9d9301c0df83 +IV= 553c499f07b1fa9f746e74ab88018eccdac77605049d514bf6a06643ea7bc8eb +PT= 0617244f2e9e7a33643ac27d60838391339d5a8fe76c1a29648a49578b85864b +CT= 20490faac7fac86f9aa9130c3a28749c1fd669320ac75da1dd10c2b66f0edc97 +TEST= 386 +KEY= 2e205075d9d265b2901c666d76eefc991415d908b0984934d6fb5f256ece0314 +IV= 20490faac7fac86f9aa9130c3a28749c1fd669320ac75da1dd10c2b66f0edc97 +PT= 2cdeac066b7af6f8c2442efc608391520f12f95c24450595fdd7da9c8b3da919 +CT= f1e1a25f033ce35cc65e4b5083ba5f629965ce0afee1703f888e014b068049f4 +TEST= 387 +KEY= dfc1f22adaee86ee56422d3df554a3fb8d7017024e79390b5e755e6e684e4ae0 +IV= f1e1a25f033ce35cc65e4b5083ba5f629965ce0afee1703f888e014b068049f4 +PT= d02f2732b044cb2e9fa46ddeee73efeadbc5a2769109bb15c264171d713f4c22 +CT= 0145da317c7af9c2c0f39d7a4ed73f5f0f6875a2e5edb9d46de294fa5f9426bb +TEST= 388 +KEY= de84281ba6947f2c96b1b047bb839ca4821862a0ab9480df3397ca9437da6c5b +IV= 0145da317c7af9c2c0f39d7a4ed73f5f0f6875a2e5edb9d46de294fa5f9426bb +PT= 6703e74e087f3ce97b3f7096c84e756ef7a9614e8583d11ba407cdb5953b49ce +CT= 9ad2c44d6961d94d031acd660f33e1aa6f4d50e0a95b94e7dd4ef5beb115418c +TEST= 389 +KEY= 4456ec56cff5a66195ab7d21b4b07d0eed55324002cf1438eed93f2a86cf2dd7 +IV= 9ad2c44d6961d94d031acd660f33e1aa6f4d50e0a95b94e7dd4ef5beb115418c +PT= 07eac0d81083bc23f3e1f648b951b085b2831a30903fc615b677b514d5f2e382 +CT= 53788e5924e6855adf1ef52c10e34b00b9426b6e4661016f98f52fe8d5e27e56 +TEST= 390 +KEY= 172e620feb13233b4ab5880da453360e5417592e44ae1557762c10c2532d5381 +IV= 53788e5924e6855adf1ef52c10e34b00b9426b6e4661016f98f52fe8d5e27e56 +PT= 868340f16a439b81e691d53f8ffb36a5460d341a3c04487f9971c3137429fba7 +CT= 869d6d1821a928ce2a2b1a0e902b6c4d8a52927deecda4b8b51d6eb9412870a4 +TEST= 391 +KEY= 91b30f17caba0bf5609e920334785a43de45cb53aa63b1efc3317e7b12052325 +IV= 869d6d1821a928ce2a2b1a0e902b6c4d8a52927deecda4b8b51d6eb9412870a4 +PT= 224bebf45f4730ada9ee2feb54e7979ad6870f12fc2ab385f517f21a272e591f +CT= 579c277e8833605585536c15e9ff452e03aedf8e1c1790598513fd24d8915d8e +TEST= 392 +KEY= c62f286942896ba0e5cdfe16dd871f6dddeb14ddb67421b64622835fca947eab +IV= 579c277e8833605585536c15e9ff452e03aedf8e1c1790598513fd24d8915d8e +PT= 51028b1cd3e871dbd5643b3946439beccbf1260499f9119e06669c5f4401c630 +CT= 7f191a66ae5382a37905109faca5e5b124033350b82e5c4f8225b67bc259e81b +TEST= 393 +KEY= b936320fecdae9039cc8ee897122fadcf9e8278d0e5a7df9c407352408cd96b0 +IV= 7f191a66ae5382a37905109faca5e5b124033350b82e5c4f8225b67bc259e81b +PT= 2b8b2992112c7c710de138bab16d034bb916b249d56b51134630abfa6b85803d +CT= ab678c867d6573f09ec97a30d1a768d61266aad6a96921eeb5a80ebfc57de888 +TEST= 394 +KEY= 1251be8991bf9af3020194b9a085920aeb8e8d5ba7335c1771af3b9bcdb07e38 +IV= ab678c867d6573f09ec97a30d1a768d61266aad6a96921eeb5a80ebfc57de888 +PT= 773403bb81a42106241866d415830a36f4d5423b4aa19430ce21d76e13412d76 +CT= 9b92b2faa0cda916f4e79e59832f844bbbb835a7142a942ae61abf66bc86ca59 +TEST= 395 +KEY= 89c30c73317233e5f6e60ae023aa16415036b8fcb319c83d97b584fd7136b461 +IV= 9b92b2faa0cda916f4e79e59832f844bbbb835a7142a942ae61abf66bc86ca59 +PT= 68f9451712e1122fc8229ecddfc7580a6a1bb7a37ad5974f3bfcad8d5b158ee8 +CT= 67c1461ad8bcb3fd506d877401e55eed67a0ed64bc35393962c0cce24f34a7bc +TEST= 396 +KEY= ee024a69e9ce8018a68b8d94224f48ac379655980f2cf104f575481f3e0213dd +IV= 67c1461ad8bcb3fd506d877401e55eed67a0ed64bc35393962c0cce24f34a7bc +PT= 33e8fc53d9f8969b89aba8a14cf755911af7f49463d6a3eebb4ddc1809099bac +CT= 805ffe56b4ecc3223b8999f25fcdce4c7c330e3070e3c1400a5b79a41371080a +TEST= 397 +KEY= 6e5db43f5d22433a9d0214667d8286e04ba55ba87fcf3044ff2e31bb2d731bd7 +IV= 805ffe56b4ecc3223b8999f25fcdce4c7c330e3070e3c1400a5b79a41371080a +PT= 832a49679be5773f33711d502b28db0d446e8a3a1005d219118b03507dd2df04 +CT= 579be36f1aba89b1afc5fbc6c44d17df04bb21f1eac8ec79030709361ce7c598 +TEST= 398 +KEY= 39c657504798ca8b32c7efa0b9cf913f4f1e7a599507dc3dfc29388d3194de4f +IV= 579be36f1aba89b1afc5fbc6c44d17df04bb21f1eac8ec79030709361ce7c598 +PT= 3e028190dbcc3ba7f6e446ba63fff0c871c9a1ba7b601a3a1ae9d54d3e846a9e +CT= 5ea008f29896bfba5d8c31851c342e5d685c55cb1ff81fa5c134a0c27564cc6d +TEST= 399 +KEY= 67665fa2df0e75316f4bde25a5fbbf6227422f928affc3983d1d984f44f01222 +IV= 5ea008f29896bfba5d8c31851c342e5d685c55cb1ff81fa5c134a0c27564cc6d +PT= 2b49b9d78b4f3a29617ea1a0f6353dfae5ed107e8194ed3f23baa45906e119ee +CT= 37c2fd5069b9beebe7f74dfbbbcd7ccefea5b3b1327c3e7be89e4ed98ee60c0e diff --git a/flint/test/testvals/ecbmd44.txt b/flint/test/testvals/ecbmd44.txt new file mode 100644 index 0000000..640b01f --- /dev/null +++ b/flint/test/testvals/ecbmd44.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= 44416ac2d1f53c583303917e6be9ebe0 +TEST= 1 +KEY= 44416ac2d1f53c583303917e6be9ebe0 +CT= 44416ac2d1f53c583303917e6be9ebe0 +PT= e3fd51123b48a2e2ab1db29894202222 +TEST= 2 +KEY= a7bc3bd0eabd9eba981e23e6ffc9c9c2 +CT= e3fd51123b48a2e2ab1db29894202222 +PT= 877b88a77aef04f05546539e17259f53 +TEST= 3 +KEY= 20c7b37790529a4acd587078e8ec5691 +CT= 877b88a77aef04f05546539e17259f53 +PT= c7a71c1b46261602eb1ee48fda8155a4 +TEST= 4 +KEY= e760af6cd6748c48264694f7326d0335 +CT= c7a71c1b46261602eb1ee48fda8155a4 +PT= 6b6ac8e00faf7e045eccfc426a137221 +TEST= 5 +KEY= 8c0a678cd9dbf24c788a68b5587e7114 +CT= 6b6ac8e00faf7e045eccfc426a137221 +PT= 3f252821fa79afc3f1798b343aad41ee +TEST= 6 +KEY= b32f4fad23a25d8f89f3e38162d330fa +CT= 3f252821fa79afc3f1798b343aad41ee +PT= 0b55c691e1f97205d137ff34478e5bc9 +TEST= 7 +KEY= b87a893cc25b2f8a58c41cb5255d6b33 +CT= 0b55c691e1f97205d137ff34478e5bc9 +PT= f6ccc1cc18a3199d6427edca0bb2df90 +TEST= 8 +KEY= 4eb648f0daf836173ce3f17f2eefb4a3 +CT= f6ccc1cc18a3199d6427edca0bb2df90 +PT= 0cdd7d9734b1515c73dda60eff28cd89 +TEST= 9 +KEY= 426b3567ee49674b4f3e5771d1c7792a +CT= 0cdd7d9734b1515c73dda60eff28cd89 +PT= 3e813131edd440d9054799cea508ff6f +TEST= 10 +KEY= 7cea0456039d27924a79cebf74cf8645 +CT= 3e813131edd440d9054799cea508ff6f +PT= 8c6859bd0b6e078faa6b686297653232 +TEST= 11 +KEY= f0825deb08f3201de012a6dde3aab477 +CT= 8c6859bd0b6e078faa6b686297653232 +PT= c966a4106c1dce062d1346eb5e5133bb +TEST= 12 +KEY= 39e4f9fb64eeee1bcd01e036bdfb87cc +CT= c966a4106c1dce062d1346eb5e5133bb +PT= 4f4ae38b53fd7800f0e9f5c214e16f2a +TEST= 13 +KEY= 76ae1a703713961b3de815f4a91ae8e6 +CT= 4f4ae38b53fd7800f0e9f5c214e16f2a +PT= c73a033491dc0b6a77fea2fbcc9d305e +TEST= 14 +KEY= b1941944a6cf9d714a16b70f6587d8b8 +CT= c73a033491dc0b6a77fea2fbcc9d305e +PT= c928c2a05bb44816efbe6b13e94bc70e +TEST= 15 +KEY= 78bcdbe4fd7bd567a5a8dc1c8ccc1fb6 +CT= c928c2a05bb44816efbe6b13e94bc70e +PT= a7c1593e7b4baee5256d4081337e7caf +TEST= 16 +KEY= df7d82da86307b8280c59c9dbfb26319 +CT= a7c1593e7b4baee5256d4081337e7caf +PT= 7ecd305ac27aebfa2b8f85f9ac312638 +TEST= 17 +KEY= a1b0b280444a9078ab4a196413834521 +CT= 7ecd305ac27aebfa2b8f85f9ac312638 +PT= a24d1403a58b94798f5f3565abfd3b44 +TEST= 18 +KEY= 03fda683e1c1040124152c01b87e7e65 +CT= a24d1403a58b94798f5f3565abfd3b44 +PT= 5b6e097b3b0e21dcc9ce9970701c7bd5 +TEST= 19 +KEY= 5893aff8dacf25ddeddbb571c86205b0 +CT= 5b6e097b3b0e21dcc9ce9970701c7bd5 +PT= 4e21cea52b3111ac8f6b204a1f5e65e2 +TEST= 20 +KEY= 16b2615df1fe347162b0953bd73c6052 +CT= 4e21cea52b3111ac8f6b204a1f5e65e2 +PT= 806ddc5c37adeebb6fce4730939d7a99 +TEST= 21 +KEY= 96dfbd01c653daca0d7ed20b44a11acb +CT= 806ddc5c37adeebb6fce4730939d7a99 +PT= 3462f7c6d3e071a0d3ace7fd79149776 +TEST= 22 +KEY= a2bd4ac715b3ab6aded235f63db58dbd +CT= 3462f7c6d3e071a0d3ace7fd79149776 +PT= af0fff307b72284e794c8a64c30299d2 +TEST= 23 +KEY= 0db2b5f76ec18324a79ebf92feb7146f +CT= af0fff307b72284e794c8a64c30299d2 +PT= e482b613fbcf9c4422d85e3160b1fb0f +TEST= 24 +KEY= e93003e4950e1f608546e1a39e06ef60 +CT= e482b613fbcf9c4422d85e3160b1fb0f +PT= fadc8ef9c95540ad69897decab2d50d5 +TEST= 25 +KEY= 13ec8d1d5c5b5fcdeccf9c4f352bbfb5 +CT= fadc8ef9c95540ad69897decab2d50d5 +PT= 2a765e237fb5230d792d455596a17118 +TEST= 26 +KEY= 399ad33e23ee7cc095e2d91aa38acead +CT= 2a765e237fb5230d792d455596a17118 +PT= 0887da8012c7f95bd6adb18d1ed3c2db +TEST= 27 +KEY= 311d09be3129859b434f6897bd590c76 +CT= 0887da8012c7f95bd6adb18d1ed3c2db +PT= 3bb831a7b6fac3649176471012fad1c1 +TEST= 28 +KEY= 0aa5381987d346ffd2392f87afa3ddb7 +CT= 3bb831a7b6fac3649176471012fad1c1 +PT= e4f8629ab3489a0945b8b7188b953de5 +TEST= 29 +KEY= ee5d5a83349bdcf69781989f2436e052 +CT= e4f8629ab3489a0945b8b7188b953de5 +PT= 1d4b0b5b321eb711939ab481239e2541 +TEST= 30 +KEY= f31651d806856be7041b2c1e07a8c513 +CT= 1d4b0b5b321eb711939ab481239e2541 +PT= 71a368d5a33665d6ff9f33fecafc6884 +TEST= 31 +KEY= 82b5390da5b30e31fb841fe0cd54ad97 +CT= 71a368d5a33665d6ff9f33fecafc6884 +PT= 8acf418080075ba23b05a52552773b84 +TEST= 32 +KEY= 087a788d25b45593c081bac59f239613 +CT= 8acf418080075ba23b05a52552773b84 +PT= e0e6058735f4fe765e882521d769fb41 +TEST= 33 +KEY= e89c7d0a1040abe59e099fe4484a6d52 +CT= e0e6058735f4fe765e882521d769fb41 +PT= 70dce91f818df2cdc4269f1b4ea0a465 +TEST= 34 +KEY= 9840941591cd59285a2f00ff06eac937 +CT= 70dce91f818df2cdc4269f1b4ea0a465 +PT= e2f809d6dd77d72ef6db5a82c42bf1cf +TEST= 35 +KEY= 7ab89dc34cba8e06acf45a7dc2c138f8 +CT= e2f809d6dd77d72ef6db5a82c42bf1cf +PT= 0741d11ddd877957e753ecf8db91c72b +TEST= 36 +KEY= 7df94cde913df7514ba7b6851950ffd3 +CT= 0741d11ddd877957e753ecf8db91c72b +PT= 03e411012ca3b5b3cc163677d4b52456 +TEST= 37 +KEY= 7e1d5ddfbd9e42e287b180f2cde5db85 +CT= 03e411012ca3b5b3cc163677d4b52456 +PT= 0270d90790ef8347acfb87eb2fec2710 +TEST= 38 +KEY= 7c6d84d82d71c1a52b4a0719e209fc95 +CT= 0270d90790ef8347acfb87eb2fec2710 +PT= 3ae40270512374af4022638e0a7a6d8e +TEST= 39 +KEY= 468986a87c52b50a6b686497e873911b +CT= 3ae40270512374af4022638e0a7a6d8e +PT= 8008d87e928a980feca08caf1ec91dda +TEST= 40 +KEY= c6815ed6eed82d0587c8e838f6ba8cc1 +CT= 8008d87e928a980feca08caf1ec91dda +PT= 1d479a54832ff1a81d30008efdf16a34 +TEST= 41 +KEY= dbc6c4826df7dcad9af8e8b60b4be6f5 +CT= 1d479a54832ff1a81d30008efdf16a34 +PT= 9e731fecd9a767bda0c84b4c4d552bd3 +TEST= 42 +KEY= 45b5db6eb450bb103a30a3fa461ecd26 +CT= 9e731fecd9a767bda0c84b4c4d552bd3 +PT= c2211a6b16cd27c6c73a5c3c1a0132ac +TEST= 43 +KEY= 8794c105a29d9cd6fd0affc65c1fff8a +CT= c2211a6b16cd27c6c73a5c3c1a0132ac +PT= 7e523dd6f25706f971f020f88ffa0cf7 +TEST= 44 +KEY= f9c6fcd350ca9a2f8cfadf3ed3e5f37d +CT= 7e523dd6f25706f971f020f88ffa0cf7 +PT= 0edc01c6c1a8da6a7c9eee3587cb098e +TEST= 45 +KEY= f71afd1591624045f064310b542efaf3 +CT= 0edc01c6c1a8da6a7c9eee3587cb098e +PT= ee479106871da872632794633b1acf0e +TEST= 46 +KEY= 195d6c13167fe8379343a5686f3435fd +CT= ee479106871da872632794633b1acf0e +PT= 7ec1a4578d911f336184daccca92d943 +TEST= 47 +KEY= 679cc8449beef704f2c77fa4a5a6ecbe +CT= 7ec1a4578d911f336184daccca92d943 +PT= 53715f25ae02513f181e3decbb007803 +TEST= 48 +KEY= 34ed976135eca63bead942481ea694bd +CT= 53715f25ae02513f181e3decbb007803 +PT= 304d5764b5206f8204a69d1bed11fa62 +TEST= 49 +KEY= 04a0c00580ccc9b9ee7fdf53f3b76edf +CT= 304d5764b5206f8204a69d1bed11fa62 +PT= 5a7590adef208bfd808499a2bfe9b011 +TEST= 50 +KEY= 5ed550a86fec42446efb46f14c5edece +CT= 5a7590adef208bfd808499a2bfe9b011 +PT= 2502c0f68a721a93ece8d7b6c2097ba4 +TEST= 51 +KEY= 7bd7905ee59e58d7821391478e57a56a +CT= 2502c0f68a721a93ece8d7b6c2097ba4 +PT= 1c814e26a6464086d606c7b4c6dfd85b +TEST= 52 +KEY= 6756de7843d81851541556f348887d31 +CT= 1c814e26a6464086d606c7b4c6dfd85b +PT= 9d55d6ea99ba391190068205dd9ae69c +TEST= 53 +KEY= fa030892da622140c413d4f695129bad +CT= 9d55d6ea99ba391190068205dd9ae69c +PT= 9d1212d0bd8c26422eeff4ddb16b2ef3 +TEST= 54 +KEY= 67111a4267ee0702eafc202b2479b55e +CT= 9d1212d0bd8c26422eeff4ddb16b2ef3 +PT= 54df71e70141e1712449cdc1ac7d07f6 +TEST= 55 +KEY= 33ce6ba566afe673ceb5edea8804b2a8 +CT= 54df71e70141e1712449cdc1ac7d07f6 +PT= af3de6f3510978928c129cfc19fb29b4 +TEST= 56 +KEY= 9cf38d5637a69ee142a7711691ff9b1c +CT= af3de6f3510978928c129cfc19fb29b4 +PT= 830db7014774c7df870c8456bc0162ab +TEST= 57 +KEY= 1ffe3a5770d2593ec5abf5402dfef9b7 +CT= 830db7014774c7df870c8456bc0162ab +PT= 6606c0a36a18beff33485f95b82c30e7 +TEST= 58 +KEY= 79f8faf41acae7c1f6e3aad595d2c950 +CT= 6606c0a36a18beff33485f95b82c30e7 +PT= 4b1e64672b89056df693e73b419e786e +TEST= 59 +KEY= 32e69e933143e2ac00704deed44cb13e +CT= 4b1e64672b89056df693e73b419e786e +PT= 1877deeaff10a5a3f5e9a811bf7595ba +TEST= 60 +KEY= 2a914079ce53470ff599e5ff6b392484 +CT= 1877deeaff10a5a3f5e9a811bf7595ba +PT= a11a48215bf59cc53bc8a009dca3973d +TEST= 61 +KEY= 8b8b085895a6dbcace5145f6b79ab3b9 +CT= a11a48215bf59cc53bc8a009dca3973d +PT= e80535676de8898a3624b8127ec21024 +TEST= 62 +KEY= 638e3d3ff84e5240f875fde4c958a39d +CT= e80535676de8898a3624b8127ec21024 +PT= e2977a804ec9a8b03c85234ad3a95b52 +TEST= 63 +KEY= 811947bfb687faf0c4f0deae1af1f8cf +CT= e2977a804ec9a8b03c85234ad3a95b52 +PT= d776d8bf13f736483862328571c06c61 +TEST= 64 +KEY= 566f9f00a570ccb8fc92ec2b6b3194ae +CT= d776d8bf13f736483862328571c06c61 +PT= 3af7969f3247a0914037209556997164 +TEST= 65 +KEY= 6c98099f97376c29bca5ccbe3da8e5ca +CT= 3af7969f3247a0914037209556997164 +PT= 4f87ddc715cee3a9d67645ad920df74a +TEST= 66 +KEY= 231fd45882f98f806ad38913afa51280 +CT= 4f87ddc715cee3a9d67645ad920df74a +PT= 9e88ca52e6b0c160e52b23f36882dba1 +TEST= 67 +KEY= bd971e0a64494ee08ff8aae0c727c921 +CT= 9e88ca52e6b0c160e52b23f36882dba1 +PT= cad26e5881d9d4e52c7595c773e0fdab +TEST= 68 +KEY= 77457052e5909a05a38d3f27b4c7348a +CT= cad26e5881d9d4e52c7595c773e0fdab +PT= c2d0b3d713cfca5abb7b9ded14429f37 +TEST= 69 +KEY= b595c385f65f505f18f6a2caa085abbd +CT= c2d0b3d713cfca5abb7b9ded14429f37 +PT= dd7aada7524a4878f7c598c4cbcd9cab +TEST= 70 +KEY= 68ef6e22a4151827ef333a0e6b483716 +CT= dd7aada7524a4878f7c598c4cbcd9cab +PT= a0f33b1fcc3f4a4b0982f0823c4ed3c9 +TEST= 71 +KEY= c81c553d682a526ce6b1ca8c5706e4df +CT= a0f33b1fcc3f4a4b0982f0823c4ed3c9 +PT= b22bb23cd68e8779a8c0fc9a350cb756 +TEST= 72 +KEY= 7a37e701bea4d5154e713616620a5389 +CT= b22bb23cd68e8779a8c0fc9a350cb756 +PT= ea4d96ac54bd8387ad36ac8c855a9d44 +TEST= 73 +KEY= 907a71adea195692e3479a9ae750cecd +CT= ea4d96ac54bd8387ad36ac8c855a9d44 +PT= a3b90cfde355723bc94999784534fa74 +TEST= 74 +KEY= 33c37d50094c24a92a0e03e2a26434b9 +CT= a3b90cfde355723bc94999784534fa74 +PT= 55636c86a64383768cb948ff57b29322 +TEST= 75 +KEY= 66a011d6af0fa7dfa6b74b1df5d6a79b +CT= 55636c86a64383768cb948ff57b29322 +PT= b29ccdfd8e7be50892f0d77dd969f97e +TEST= 76 +KEY= d43cdc2b217442d734479c602cbf5ee5 +CT= b29ccdfd8e7be50892f0d77dd969f97e +PT= 9cf0432822eabdf489b57edd9cef7fea +TEST= 77 +KEY= 48cc9f03039eff23bdf2e2bdb050210f +CT= 9cf0432822eabdf489b57edd9cef7fea +PT= aa753b7d38e807d691005899385dc6da +TEST= 78 +KEY= e2b9a47e3b76f8f52cf2ba24880de7d5 +CT= aa753b7d38e807d691005899385dc6da +PT= e4f0681527fa7ad3d1e7c78c03fb79fa +TEST= 79 +KEY= 0649cc6b1c8c8226fd157da88bf69e2f +CT= e4f0681527fa7ad3d1e7c78c03fb79fa +PT= 7923af8e50f378b9c97d2f162348025b +TEST= 80 +KEY= 7f6a63e54c7ffa9f346852bea8be9c74 +CT= 7923af8e50f378b9c97d2f162348025b +PT= 3befab920ca31a6b8b87e11df97b42de +TEST= 81 +KEY= 4485c87740dce0f4bfefb3a351c5deaa +CT= 3befab920ca31a6b8b87e11df97b42de +PT= 4661d6b8004611976a21c69804d102c0 +TEST= 82 +KEY= 02e41ecf409af163d5ce753b5514dc6a +CT= 4661d6b8004611976a21c69804d102c0 +PT= b861df2279f2aee4fcfd7d322ad0be2b +TEST= 83 +KEY= ba85c1ed39685f87293308097fc46241 +CT= b861df2279f2aee4fcfd7d322ad0be2b +PT= 1785745618a541f9454443ffb494f2e9 +TEST= 84 +KEY= ad00b5bb21cd1e7e6c774bf6cb5090a8 +CT= 1785745618a541f9454443ffb494f2e9 +PT= aa7507a80b4ccf33e8b4f09e2d7004f6 +TEST= 85 +KEY= 0775b2132a81d14d84c3bb68e620945e +CT= aa7507a80b4ccf33e8b4f09e2d7004f6 +PT= 433412b8f10f81a557ac461823097fc7 +TEST= 86 +KEY= 4441a0abdb8e50e8d36ffd70c529eb99 +CT= 433412b8f10f81a557ac461823097fc7 +PT= ec3206bdb3765876b74952c411d40373 +TEST= 87 +KEY= a873a61668f8089e6426afb4d4fde8ea +CT= ec3206bdb3765876b74952c411d40373 +PT= f7f994027d328fa3d70c9deabd3be733 +TEST= 88 +KEY= 5f8a321415ca873db32a325e69c60fd9 +CT= f7f994027d328fa3d70c9deabd3be733 +PT= e2a8419bf86a2408ed8d0274a5ce0e10 +TEST= 89 +KEY= bd22738feda0a3355ea7302acc0801c9 +CT= e2a8419bf86a2408ed8d0274a5ce0e10 +PT= 80fb8cd5243c89d77f503b2f16979f90 +TEST= 90 +KEY= 3dd9ff5ac99c2ae221f70b05da9f9e59 +CT= 80fb8cd5243c89d77f503b2f16979f90 +PT= f7773137f233ae2609c2c9ac36f58224 +TEST= 91 +KEY= caaece6d3baf84c42835c2a9ec6a1c7d +CT= f7773137f233ae2609c2c9ac36f58224 +PT= f3d0a1dada4a009e8e4c0ef717469bcd +TEST= 92 +KEY= 397e6fb7e1e5845aa679cc5efb2c87b0 +CT= f3d0a1dada4a009e8e4c0ef717469bcd +PT= 0ac0ff22eb653a26a3f1f0cfe3808609 +TEST= 93 +KEY= 33be90950a80be7c05883c9118ac01b9 +CT= 0ac0ff22eb653a26a3f1f0cfe3808609 +PT= 28ff865ce11720bb1b56ef49d7d1840d +TEST= 94 +KEY= 1b4116c9eb979ec71eded3d8cf7d85b4 +CT= 28ff865ce11720bb1b56ef49d7d1840d +PT= 001faf58e22f5e8ed6bcc7fd581d7c2f +TEST= 95 +KEY= 1b5eb99109b8c049c86214259760f99b +CT= 001faf58e22f5e8ed6bcc7fd581d7c2f +PT= 32b41303a58ab49cb4cb2322b77383b3 +TEST= 96 +KEY= 29eaaa92ac3274d57ca9370720137a28 +CT= 32b41303a58ab49cb4cb2322b77383b3 +PT= 9c52020fcde0306c8e19cdf68fefdf50 +TEST= 97 +KEY= b5b8a89d61d244b9f2b0faf1affca578 +CT= 9c52020fcde0306c8e19cdf68fefdf50 +PT= 2e3452997687d12e3a8c59b9178b09e2 +TEST= 98 +KEY= 9b8cfa0417559597c83ca348b877ac9a +CT= 2e3452997687d12e3a8c59b9178b09e2 +PT= 872cf16dbb7cd6ea8ebb91a60bde0c6f +TEST= 99 +KEY= 1ca00b69ac29437d468732eeb3a9a0f5 +CT= 872cf16dbb7cd6ea8ebb91a60bde0c6f +PT= 7862c78e3b209535e6c6be92f5edf42b +TEST= 100 +KEY= 64c2cce79709d648a0418c7c464454de +CT= 7862c78e3b209535e6c6be92f5edf42b +PT= 9185d8487c1d2db679a52fda2fe5ffcd +TEST= 101 +KEY= f54714afeb14fbfed9e4a3a669a1ab13 +CT= 9185d8487c1d2db679a52fda2fe5ffcd +PT= 77c3af8c81cdb1cdef5c0429cf3e5da4 +TEST= 102 +KEY= 8284bb236ad94a3336b8a78fa69ff6b7 +CT= 77c3af8c81cdb1cdef5c0429cf3e5da4 +PT= 6f36c74290ea6332e98cd23d08aef7f9 +TEST= 103 +KEY= edb27c61fa332901df3475b2ae31014e +CT= 6f36c74290ea6332e98cd23d08aef7f9 +PT= 4a7831538fa1d32e3f8631befd99aa73 +TEST= 104 +KEY= a7ca4d327592fa2fe0b2440c53a8ab3d +CT= 4a7831538fa1d32e3f8631befd99aa73 +PT= 5d2b599d9af9054a99c25577c9286c9e +TEST= 105 +KEY= fae114afef6bff657970117b9a80c7a3 +CT= 5d2b599d9af9054a99c25577c9286c9e +PT= 65e4088200bcc01fcee39c6e42082fd8 +TEST= 106 +KEY= 9f051c2defd73f7ab7938d15d888e87b +CT= 65e4088200bcc01fcee39c6e42082fd8 +PT= 4588e0d3aabbefe611b9576391b903e9 +TEST= 107 +KEY= da8dfcfe456cd09ca62ada764931eb92 +CT= 4588e0d3aabbefe611b9576391b903e9 +PT= a55622f833ff271dd8a8f01cf5828fcf +TEST= 108 +KEY= 7fdbde067693f7817e822a6abcb3645d +CT= a55622f833ff271dd8a8f01cf5828fcf +PT= 8c954010c870b2db7fa44e1debfe6de8 +TEST= 109 +KEY= f34e9e16bee3455a01266477574d09b5 +CT= 8c954010c870b2db7fa44e1debfe6de8 +PT= 58b7bd00ed18fc81e618807de65305b8 +TEST= 110 +KEY= abf9231653fbb9dbe73ee40ab11e0c0d +CT= 58b7bd00ed18fc81e618807de65305b8 +PT= ef82e5f4879039f2a1a4cc2f2044bd14 +TEST= 111 +KEY= 447bc6e2d46b8029469a2825915ab119 +CT= ef82e5f4879039f2a1a4cc2f2044bd14 +PT= 2b6c12307f14fd50b41d8f972b19ac76 +TEST= 112 +KEY= 6f17d4d2ab7f7d79f287a7b2ba431d6f +CT= 2b6c12307f14fd50b41d8f972b19ac76 +PT= c9b6d042ce76892d17f70d4ee00a0d79 +TEST= 113 +KEY= a6a104906509f454e570aafc5a491016 +CT= c9b6d042ce76892d17f70d4ee00a0d79 +PT= 1b08f9293bbfc44ddcf2c1d26a9dd00b +TEST= 114 +KEY= bda9fdb95eb6301939826b2e30d4c01d +CT= 1b08f9293bbfc44ddcf2c1d26a9dd00b +PT= 4fd353b247048faaa728e10c691c70ca +TEST= 115 +KEY= f27aae0b19b2bfb39eaa8a2259c8b0d7 +CT= 4fd353b247048faaa728e10c691c70ca +PT= 0bbb6fdbc62c428b85111bc7c93ae994 +TEST= 116 +KEY= f9c1c1d0df9efd381bbb91e590f25943 +CT= 0bbb6fdbc62c428b85111bc7c93ae994 +PT= 9c1a213a5772de6c15ce7406f84bed03 +TEST= 117 +KEY= 65dbe0ea88ec23540e75e5e368b9b440 +CT= 9c1a213a5772de6c15ce7406f84bed03 +PT= ab3de06bbdb213d64f735ca990dc373c +TEST= 118 +KEY= cee60081355e30824106b94af865837c +CT= ab3de06bbdb213d64f735ca990dc373c +PT= 6c004a1a114e90c7903aa4a0120a2b10 +TEST= 119 +KEY= a2e64a9b2410a045d13c1deaea6fa86c +CT= 6c004a1a114e90c7903aa4a0120a2b10 +PT= 6405a033c294e72119a8955712548121 +TEST= 120 +KEY= c6e3eaa8e6844764c89488bdf83b294d +CT= 6405a033c294e72119a8955712548121 +PT= ae8a3bac7279b1bc152a5ad8ebac3ead +TEST= 121 +KEY= 6869d10494fdf6d8ddbed265139717e0 +CT= ae8a3bac7279b1bc152a5ad8ebac3ead +PT= 4adda9999d2be20d8925f39699563294 +TEST= 122 +KEY= 22b4789d09d614d5549b21f38ac12574 +CT= 4adda9999d2be20d8925f39699563294 +PT= bc5ca33cb2a1a580eb92946c77a63467 +TEST= 123 +KEY= 9ee8dba1bb77b155bf09b59ffd671113 +CT= bc5ca33cb2a1a580eb92946c77a63467 +PT= f7abead301264a3e59eaba0b9606dc92 +TEST= 124 +KEY= 69433172ba51fb6be6e30f946b61cd81 +CT= f7abead301264a3e59eaba0b9606dc92 +PT= 2566114a10be9bf19e0910486dab6be5 +TEST= 125 +KEY= 4c252038aaef609a78ea1fdc06caa664 +CT= 2566114a10be9bf19e0910486dab6be5 +PT= af72e1b179660a1b833d9d4fc8473b6b +TEST= 126 +KEY= e357c189d3896a81fbd78293ce8d9d0f +CT= af72e1b179660a1b833d9d4fc8473b6b +PT= dff968b761d8e154b74c9d568c12008e +TEST= 127 +KEY= 3caea93eb2518bd54c9b1fc5429f9d81 +CT= dff968b761d8e154b74c9d568c12008e +PT= 42df098bcb57d0d25269e29c9bc99de6 +TEST= 128 +KEY= 7e71a0b579065b071ef2fd59d9560067 +CT= 42df098bcb57d0d25269e29c9bc99de6 +PT= 66c34caaefc2009b985d1e622fc61ab4 +TEST= 129 +KEY= 18b2ec1f96c45b9c86afe33bf6901ad3 +CT= 66c34caaefc2009b985d1e622fc61ab4 +PT= 150c1bf943982c5ea1a6839d94f23288 +TEST= 130 +KEY= 0dbef7e6d55c77c2270960a66262285b +CT= 150c1bf943982c5ea1a6839d94f23288 +PT= 048bfbb28879206964c5f3b41264011a +TEST= 131 +KEY= 09350c545d2557ab43cc931270062941 +CT= 048bfbb28879206964c5f3b41264011a +PT= 54d2dc53b87ec949f0fa0e134ee26d50 +TEST= 132 +KEY= 5de7d007e55b9ee2b3369d013ee44411 +CT= 54d2dc53b87ec949f0fa0e134ee26d50 +PT= 1ba46afe1ae87c4f0254bf02df3b6d37 +TEST= 133 +KEY= 4643baf9ffb3e2adb1622203e1df2926 +CT= 1ba46afe1ae87c4f0254bf02df3b6d37 +PT= 7733e74e743c9e997ac2ed36b2e89ce8 +TEST= 134 +KEY= 31705db78b8f7c34cba0cf355337b5ce +CT= 7733e74e743c9e997ac2ed36b2e89ce8 +PT= 670aea160fac67abceca140eb8195eb5 +TEST= 135 +KEY= 567ab7a184231b9f056adb3beb2eeb7b +CT= 670aea160fac67abceca140eb8195eb5 +PT= 7cfd74d510ac894ff5b698280386f4ff +TEST= 136 +KEY= 2a87c374948f92d0f0dc4313e8a81f84 +CT= 7cfd74d510ac894ff5b698280386f4ff +PT= 10d03f32c0694e9fff598e101998105e +TEST= 137 +KEY= 3a57fc4654e6dc4f0f85cd03f1300fda +CT= 10d03f32c0694e9fff598e101998105e +PT= 351d6e8d1c26f36973356f6235b8abad +TEST= 138 +KEY= 0f4a92cb48c02f267cb0a261c488a477 +CT= 351d6e8d1c26f36973356f6235b8abad +PT= 0ddda7aa09fbd986c0b9ea2b018fae4f +TEST= 139 +KEY= 02973561413bf6a0bc09484ac5070a38 +CT= 0ddda7aa09fbd986c0b9ea2b018fae4f +PT= 31c5b68b7a08d1b7320fab052cc3b0d1 +TEST= 140 +KEY= 335283ea3b3327178e06e34fe9c4bae9 +CT= 31c5b68b7a08d1b7320fab052cc3b0d1 +PT= 501b8d9ee91468522029020a39484db5 +TEST= 141 +KEY= 63490e74d2274f45ae2fe145d08cf75c +CT= 501b8d9ee91468522029020a39484db5 +PT= 2714fba566dfd4909b8abf29b1d5a8e8 +TEST= 142 +KEY= 445df5d1b4f89bd535a55e6c61595fb4 +CT= 2714fba566dfd4909b8abf29b1d5a8e8 +PT= 94485381e5088d67bc1335c89fa5c2b8 +TEST= 143 +KEY= d015a65051f016b289b66ba4fefc9d0c +CT= 94485381e5088d67bc1335c89fa5c2b8 +PT= be5bee26d6686a0eb5838c237fef79b7 +TEST= 144 +KEY= 6e4e487687987cbc3c35e7878113e4bb +CT= be5bee26d6686a0eb5838c237fef79b7 +PT= 417f73d46cfbe3c5c9ad513bcbc6d185 +TEST= 145 +KEY= 2f313ba2eb639f79f598b6bc4ad5353e +CT= 417f73d46cfbe3c5c9ad513bcbc6d185 +PT= ae3b07350b3be7d4f9f6fe2f95622449 +TEST= 146 +KEY= 810a3c97e05878ad0c6e4893dfb71177 +CT= ae3b07350b3be7d4f9f6fe2f95622449 +PT= 7bd4231225a7b665953ab034e24a7c7a +TEST= 147 +KEY= fade1f85c5ffcec89954f8a73dfd6d0d +CT= 7bd4231225a7b665953ab034e24a7c7a +PT= 3c1fbe8f3ceb1438b4a64e59faf291cf +TEST= 148 +KEY= c6c1a10af914daf02df2b6fec70ffcc2 +CT= 3c1fbe8f3ceb1438b4a64e59faf291cf +PT= acff7f1e71aa952cf8adb24fee18a7bb +TEST= 149 +KEY= 6a3ede1488be4fdcd55f04b129175b79 +CT= acff7f1e71aa952cf8adb24fee18a7bb +PT= 3c3a6d3fd73b36317417106a92e2b43e +TEST= 150 +KEY= 5604b32b5f8579eda14814dbbbf5ef47 +CT= 3c3a6d3fd73b36317417106a92e2b43e +PT= f34f8c719a4a74dd8f4fa4cbc520827a +TEST= 151 +KEY= a54b3f5ac5cf0d302e07b0107ed56d3d +CT= f34f8c719a4a74dd8f4fa4cbc520827a +PT= 6a5d56fb6c7eba15112af8a093f3e1e1 +TEST= 152 +KEY= cf1669a1a9b1b7253f2d48b0ed268cdc +CT= 6a5d56fb6c7eba15112af8a093f3e1e1 +PT= 8bf39ee3b8ed0f6a6ea92319a81b10e6 +TEST= 153 +KEY= 44e5f742115cb84f51846ba9453d9c3a +CT= 8bf39ee3b8ed0f6a6ea92319a81b10e6 +PT= 2bc796d320c444bbbad466d686f460f6 +TEST= 154 +KEY= 6f2261913198fcf4eb500d7fc3c9fccc +CT= 2bc796d320c444bbbad466d686f460f6 +PT= 2cf595f424ed50b1a146e387b128cba3 +TEST= 155 +KEY= 43d7f4651575ac454a16eef872e1376f +CT= 2cf595f424ed50b1a146e387b128cba3 +PT= 56f2e856045bae66ea003a6c39205344 +TEST= 156 +KEY= 15251c33112e0223a016d4944bc1642b +CT= 56f2e856045bae66ea003a6c39205344 +PT= 31c83401bd83424ba6e94c0d6d453d9a +TEST= 157 +KEY= 24ed2832acad406806ff9899268459b1 +CT= 31c83401bd83424ba6e94c0d6d453d9a +PT= a687f05992ccb57cde61aff8878913ed +TEST= 158 +KEY= 826ad86b3e61f514d89e3761a10d4a5c +CT= a687f05992ccb57cde61aff8878913ed +PT= 16e771193c2473502f415c27fb101d94 +TEST= 159 +KEY= 948da97202458644f7df6b465a1d57c8 +CT= 16e771193c2473502f415c27fb101d94 +PT= c69cdba29c9edc3407c1c73a756a0b6e +TEST= 160 +KEY= 521172d09edb5a70f01eac7c2f775ca6 +CT= c69cdba29c9edc3407c1c73a756a0b6e +PT= 566d82281f48e3217f3852115cf2e944 +TEST= 161 +KEY= 047cf0f88193b9518f26fe6d7385b5e2 +CT= 566d82281f48e3217f3852115cf2e944 +PT= b3febc8f8f0f0b652c4358bcc9bf54df +TEST= 162 +KEY= b7824c770e9cb234a365a6d1ba3ae13d +CT= b3febc8f8f0f0b652c4358bcc9bf54df +PT= bbb84877094b3eb86203d17c92cf5168 +TEST= 163 +KEY= 0c3a040007d78c8cc16677ad28f5b055 +CT= bbb84877094b3eb86203d17c92cf5168 +PT= 2c45e5a3f8c564862da4d8ad428d3e67 +TEST= 164 +KEY= 207fe1a3ff12e80aecc2af006a788e32 +CT= 2c45e5a3f8c564862da4d8ad428d3e67 +PT= 10adc2af56600d95ad8bb579ef5170c9 +TEST= 165 +KEY= 30d2230ca972e59f41491a798529fefb +CT= 10adc2af56600d95ad8bb579ef5170c9 +PT= 1854bb8ac568f3599153be1ac60ba78d +TEST= 166 +KEY= 288698866c1a16c6d01aa46343225976 +CT= 1854bb8ac568f3599153be1ac60ba78d +PT= e641765c80d8812a1a0f4606c639642e +TEST= 167 +KEY= cec7eedaecc297ecca15e265851b3d58 +CT= e641765c80d8812a1a0f4606c639642e +PT= 317ac70ceaa87ae66a15c22bd5e534e5 +TEST= 168 +KEY= ffbd29d6066aed0aa000204e50fe09bd +CT= 317ac70ceaa87ae66a15c22bd5e534e5 +PT= bffb8d7b3d9f54727944abc3f6474362 +TEST= 169 +KEY= 4046a4ad3bf5b978d9448b8da6b94adf +CT= bffb8d7b3d9f54727944abc3f6474362 +PT= 060765d1d9d289b862da274cfdb4d7a0 +TEST= 170 +KEY= 4641c17ce22730c0bb9eacc15b0d9d7f +CT= 060765d1d9d289b862da274cfdb4d7a0 +PT= fbafa4c1d6cef2a45e9e084311fdf858 +TEST= 171 +KEY= bdee65bd34e9c264e500a4824af06527 +CT= fbafa4c1d6cef2a45e9e084311fdf858 +PT= f7f36bfda77362b470b0b074241c58e9 +TEST= 172 +KEY= 4a1d0e40939aa0d095b014f66eec3dce +CT= f7f36bfda77362b470b0b074241c58e9 +PT= 2fc236edcd573a6dcfba7930e9cf4698 +TEST= 173 +KEY= 65df38ad5ecd9abd5a0a6dc687237b56 +CT= 2fc236edcd573a6dcfba7930e9cf4698 +PT= 949a9994dc976595bfaca5f31116a165 +TEST= 174 +KEY= f145a139825aff28e5a6c8359635da33 +CT= 949a9994dc976595bfaca5f31116a165 +PT= 19373ca9d519bf83eaa4c17e1ee8225c +TEST= 175 +KEY= e8729d90574340ab0f02094b88ddf86f +CT= 19373ca9d519bf83eaa4c17e1ee8225c +PT= 685c783918997a7572b0a09315f1f2db +TEST= 176 +KEY= 802ee5a94fda3ade7db2a9d89d2c0ab4 +CT= 685c783918997a7572b0a09315f1f2db +PT= fc0cb1792eadb7e8decb021a435de1e7 +TEST= 177 +KEY= 7c2254d061778d36a379abc2de71eb53 +CT= fc0cb1792eadb7e8decb021a435de1e7 +PT= 797c5e5b4f3b38e7c72ff7aaab270e86 +TEST= 178 +KEY= 055e0a8b2e4cb5d164565c687556e5d5 +CT= 797c5e5b4f3b38e7c72ff7aaab270e86 +PT= a5ab675262ea186f777681647b6aa1f9 +TEST= 179 +KEY= a0f56dd94ca6adbe1320dd0c0e3c442c +CT= a5ab675262ea186f777681647b6aa1f9 +PT= 08cdf6af55bbb247d0de1a69cd041a78 +TEST= 180 +KEY= a8389b76191d1ff9c3fec765c3385e54 +CT= 08cdf6af55bbb247d0de1a69cd041a78 +PT= ded1f3c30ab5ec3455c7b6a756e5ff03 +TEST= 181 +KEY= 76e968b513a8f3cd963971c295dda157 +CT= ded1f3c30ab5ec3455c7b6a756e5ff03 +PT= c759a17b354d668d1ba5541d16241d9f +TEST= 182 +KEY= b1b0c9ce26e595408d9c25df83f9bcc8 +CT= c759a17b354d668d1ba5541d16241d9f +PT= 97e011fe7b327b8292270d4cd18bd9ac +TEST= 183 +KEY= 2650d8305dd7eec21fbb289352726564 +CT= 97e011fe7b327b8292270d4cd18bd9ac +PT= 9f004e4282f790c06681f16262ef78cf +TEST= 184 +KEY= b9509672df207e02793ad9f1309d1dab +CT= 9f004e4282f790c06681f16262ef78cf +PT= 6b34aa95efd874915dae275ce34a04b9 +TEST= 185 +KEY= d2643ce730f80a932494feadd3d71912 +CT= 6b34aa95efd874915dae275ce34a04b9 +PT= 96966d118c50b67849f93b109492b5eb +TEST= 186 +KEY= 44f251f6bca8bceb6d6dc5bd4745acf9 +CT= 96966d118c50b67849f93b109492b5eb +PT= 2ca6f85e4f29be884392a0fedd08d5a7 +TEST= 187 +KEY= 6854a9a8f38102632eff65439a4d795e +CT= 2ca6f85e4f29be884392a0fedd08d5a7 +PT= 21b71d4f23ddc002caafb7426009bd27 +TEST= 188 +KEY= 49e3b4e7d05cc261e450d201fa44c479 +CT= 21b71d4f23ddc002caafb7426009bd27 +PT= bf059f1945e9e51b22b308849757b475 +TEST= 189 +KEY= f6e62bfe95b5277ac6e3da856d13700c +CT= bf059f1945e9e51b22b308849757b475 +PT= 434f4e756a3178472e12b80a1c2ed83e +TEST= 190 +KEY= b5a9658bff845f3de8f1628f713da832 +CT= 434f4e756a3178472e12b80a1c2ed83e +PT= 37db2b0d5967700cde348fb60661a6d4 +TEST= 191 +KEY= 82724e86a6e32f3136c5ed39775c0ee6 +CT= 37db2b0d5967700cde348fb60661a6d4 +PT= d31c5130f8f217ac0014b5f37b9bb86b +TEST= 192 +KEY= 516e1fb65e11389d36d158ca0cc7b68d +CT= d31c5130f8f217ac0014b5f37b9bb86b +PT= 3b8cd15967907f9c617697ebef395b16 +TEST= 193 +KEY= 6ae2ceef3981470157a7cf21e3feed9b +CT= 3b8cd15967907f9c617697ebef395b16 +PT= af17b5e5236bf46576379cd4e5af8a34 +TEST= 194 +KEY= c5f57b0a1aeab364219053f5065167af +CT= af17b5e5236bf46576379cd4e5af8a34 +PT= 88286d6fb237181ec239c1d70c0d6675 +TEST= 195 +KEY= 4ddd1665a8ddab7ae3a992220a5c01da +CT= 88286d6fb237181ec239c1d70c0d6675 +PT= 8a5207bb1283343b3692045183451a7d +TEST= 196 +KEY= c78f11deba5e9f41d53b967389191ba7 +CT= 8a5207bb1283343b3692045183451a7d +PT= 53c12fac4b0185aa0ce067fc67ec5b9c +TEST= 197 +KEY= 944e3e72f15f1aebd9dbf18feef5403b +CT= 53c12fac4b0185aa0ce067fc67ec5b9c +PT= bba2bb9b1ca48d2e97e0c39e500eb9c0 +TEST= 198 +KEY= 2fec85e9edfb97c54e3b3211befbf9fb +CT= bba2bb9b1ca48d2e97e0c39e500eb9c0 +PT= 8ba2341064b7b5184cd7e7a40fa0358e +TEST= 199 +KEY= a44eb1f9894c22dd02ecd5b5b15bcc75 +CT= 8ba2341064b7b5184cd7e7a40fa0358e +PT= 97121eeea68cc6200fbc0b311849e625 +TEST= 200 +KEY= 335caf172fc0e4fd0d50de84a9122a50 +CT= 97121eeea68cc6200fbc0b311849e625 +PT= 027fa370a9412b342043a15f19294961 +TEST= 201 +KEY= 31230c678681cfc92d137fdbb03b6331 +CT= 027fa370a9412b342043a15f19294961 +PT= 72cfbe6ba03ab28a53a6727717d1199a +TEST= 202 +KEY= 43ecb20c26bb7d437eb50daca7ea7aab +CT= 72cfbe6ba03ab28a53a6727717d1199a +PT= 7a15b1b4b4ed35f9c208500fe7c4c1c7 +TEST= 203 +KEY= 39f903b8925648babcbd5da3402ebb6c +CT= 7a15b1b4b4ed35f9c208500fe7c4c1c7 +PT= af46496d09254fab5f381e93eeb4fbb0 +TEST= 204 +KEY= 96bf4ad59b730711e3854330ae9a40dc +CT= af46496d09254fab5f381e93eeb4fbb0 +PT= ada064e0f4324e8b0c062f6e33c7d016 +TEST= 205 +KEY= 3b1f2e356f41499aef836c5e9d5d90ca +CT= ada064e0f4324e8b0c062f6e33c7d016 +PT= 7723a61733bd5bbfab8c559ed379b8b5 +TEST= 206 +KEY= 4c3c88225cfc1225440f39c04e24287f +CT= 7723a61733bd5bbfab8c559ed379b8b5 +PT= 5d210e8f35dd863316e89fada70e8392 +TEST= 207 +KEY= 111d86ad6921941652e7a66de92aabed +CT= 5d210e8f35dd863316e89fada70e8392 +PT= 92b1d20e7d87787950990052de2aba4f +TEST= 208 +KEY= 83ac54a314a6ec6f027ea63f370011a2 +CT= 92b1d20e7d87787950990052de2aba4f +PT= 178e494d23aa6ac13ac180727c47fd2a +TEST= 209 +KEY= 94221dee370c86ae38bf264d4b47ec88 +CT= 178e494d23aa6ac13ac180727c47fd2a +PT= cb9c10817c059d5be4f123576ff459c6 +TEST= 210 +KEY= 5fbe0d6f4b091bf5dc4e051a24b3b54e +CT= cb9c10817c059d5be4f123576ff459c6 +PT= 4934c56cc7baf0a8debb62cfb2b0debf +TEST= 211 +KEY= 168ac8038cb3eb5d02f567d596036bf1 +CT= 4934c56cc7baf0a8debb62cfb2b0debf +PT= f6f2a4b90b357d88401702c968d9ec02 +TEST= 212 +KEY= e0786cba878696d542e2651cfeda87f3 +CT= f6f2a4b90b357d88401702c968d9ec02 +PT= 06a35cad7b36751bee345c33112eb6d1 +TEST= 213 +KEY= e6db3017fcb0e3ceacd6392feff43122 +CT= 06a35cad7b36751bee345c33112eb6d1 +PT= 3244cde10df48795da702cd8c2f4cabd +TEST= 214 +KEY= d49ffdf6f144645b76a615f72d00fb9f +CT= 3244cde10df48795da702cd8c2f4cabd +PT= 47c06f5bea8c3503512e0e200966c546 +TEST= 215 +KEY= 935f92ad1bc8515827881bd724663ed9 +CT= 47c06f5bea8c3503512e0e200966c546 +PT= 68a077d25cbea7f76b88d8c6a414d0ce +TEST= 216 +KEY= fbffe57f4776f6af4c00c3118072ee17 +CT= 68a077d25cbea7f76b88d8c6a414d0ce +PT= ddf110c2c79b46c5132ccef654280d7e +TEST= 217 +KEY= 260ef5bd80edb06a5f2c0de7d45ae369 +CT= ddf110c2c79b46c5132ccef654280d7e +PT= 0ab610a0082813076d052011c12dc924 +TEST= 218 +KEY= 2cb8e51d88c5a36d32292df615772a4d +CT= 0ab610a0082813076d052011c12dc924 +PT= 8c42f49edae1bd6b631e74b68b1b8444 +TEST= 219 +KEY= a0fa118352241e06513759409e6cae09 +CT= 8c42f49edae1bd6b631e74b68b1b8444 +PT= b5a5b6e50b3a066d16df883f353019fe +TEST= 220 +KEY= 155fa766591e186b47e8d17fab5cb7f7 +CT= b5a5b6e50b3a066d16df883f353019fe +PT= 70cfa25afc9919937e2fc90900f0b398 +TEST= 221 +KEY= 6590053ca58701f839c71876abac046f +CT= 70cfa25afc9919937e2fc90900f0b398 +PT= b927a5911ae33deab619dafee22cd0df +TEST= 222 +KEY= dcb7a0adbf643c128fdec2884980d4b0 +CT= b927a5911ae33deab619dafee22cd0df +PT= 10c548438c5b976edd624129b2102d7a +TEST= 223 +KEY= cc72e8ee333fab7c52bc83a1fb90f9ca +CT= 10c548438c5b976edd624129b2102d7a +PT= 4549e45da2f8fe82972dc7df3548caff +TEST= 224 +KEY= 893b0cb391c755fec591447eced83335 +CT= 4549e45da2f8fe82972dc7df3548caff +PT= 2b85505e64089feb6b5763011e778c96 +TEST= 225 +KEY= a2be5cedf5cfca15aec6277fd0afbfa3 +CT= 2b85505e64089feb6b5763011e778c96 +PT= 4b157930f9a6ebe3d9d6ac9faddeb35c +TEST= 226 +KEY= e9ab25dd0c6921f677108be07d710cff +CT= 4b157930f9a6ebe3d9d6ac9faddeb35c +PT= 12341c0fe9eb6757bffcc4bc1a8f2585 +TEST= 227 +KEY= fb9f39d2e58246a1c8ec4f5c67fe297a +CT= 12341c0fe9eb6757bffcc4bc1a8f2585 +PT= 5422d62d794b02fc04be01198ee23ace +TEST= 228 +KEY= afbdefff9cc9445dcc524e45e91c13b4 +CT= 5422d62d794b02fc04be01198ee23ace +PT= 42d43022fd6db571bcb2fde653c9068c +TEST= 229 +KEY= ed69dfdd61a4f12c70e0b3a3bad51538 +CT= 42d43022fd6db571bcb2fde653c9068c +PT= 80bd3aaed5d519b75d22bf060ef1dfc6 +TEST= 230 +KEY= 6dd4e573b471e89b2dc20ca5b424cafe +CT= 80bd3aaed5d519b75d22bf060ef1dfc6 +PT= b72973f9016a348cddccffc2dd291b5a +TEST= 231 +KEY= dafd968ab51bdc17f00ef367690dd1a4 +CT= b72973f9016a348cddccffc2dd291b5a +PT= 5692e61c86a7b2c043abbed712390361 +TEST= 232 +KEY= 8c6f709633bc6ed7b3a54db07b34d2c5 +CT= 5692e61c86a7b2c043abbed712390361 +PT= 75138737269aa27855c2cfd2dcedefc4 +TEST= 233 +KEY= f97cf7a11526ccafe6678262a7d93d01 +CT= 75138737269aa27855c2cfd2dcedefc4 +PT= a022aa28cecc4bb5eb28ba5b7828ab6e +TEST= 234 +KEY= 595e5d89dbea871a0d4f3839dff1966f +CT= a022aa28cecc4bb5eb28ba5b7828ab6e +PT= 17b0bf87ee02aa44705b1b1b4df7d3f4 +TEST= 235 +KEY= 4eeee20e35e82d5e7d1423229206459b +CT= 17b0bf87ee02aa44705b1b1b4df7d3f4 +PT= 095a5a041c43dcfeb5d0df3e7659344a +TEST= 236 +KEY= 47b4b80a29abf1a0c8c4fc1ce45f71d1 +CT= 095a5a041c43dcfeb5d0df3e7659344a +PT= 9dce0d1c572509f3367ee952b89044e5 +TEST= 237 +KEY= da7ab5167e8ef853feba154e5ccf3534 +CT= 9dce0d1c572509f3367ee952b89044e5 +PT= e6075bcc82399a91e52034ea2f197058 +TEST= 238 +KEY= 3c7deedafcb762c21b9a21a473d6456c +CT= e6075bcc82399a91e52034ea2f197058 +PT= 431d243cee96b424b0fa4fec5e707036 +TEST= 239 +KEY= 7f60cae61221d6e6ab606e482da6355a +CT= 431d243cee96b424b0fa4fec5e707036 +PT= 5ef70106a2ea454ca9405a8aa1b54ef0 +TEST= 240 +KEY= 2197cbe0b0cb93aa022034c28c137baa +CT= 5ef70106a2ea454ca9405a8aa1b54ef0 +PT= 09b003cb7e2addd587a2abcdd03d234f +TEST= 241 +KEY= 2827c82bcee14e7f85829f0f5c2e58e5 +CT= 09b003cb7e2addd587a2abcdd03d234f +PT= 3647fac6ef758113dc768e7737098de9 +TEST= 242 +KEY= 1e6032ed2194cf6c59f411786b27d50c +CT= 3647fac6ef758113dc768e7737098de9 +PT= c043bd96a88492c85431b72c708c3c60 +TEST= 243 +KEY= de238f7b89105da40dc5a6541babe96c +CT= c043bd96a88492c85431b72c708c3c60 +PT= 299a25142a6b5d334158d359dd9cd574 +TEST= 244 +KEY= f7b9aa6fa37b00974c9d750dc6373c18 +CT= 299a25142a6b5d334158d359dd9cd574 +PT= 21e56c2202c8d6f81edc63a8a1ea4b6a +TEST= 245 +KEY= d65cc64da1b3d66f524116a567dd7772 +CT= 21e56c2202c8d6f81edc63a8a1ea4b6a +PT= fd3565957e3845065b7aef27a900fdd5 +TEST= 246 +KEY= 2b69a3d8df8b9369093bf982cedd8aa7 +CT= fd3565957e3845065b7aef27a900fdd5 +PT= a4db9120d1ed0419342afc2cbf114647 +TEST= 247 +KEY= 8fb232f80e6697703d1105ae71cccce0 +CT= a4db9120d1ed0419342afc2cbf114647 +PT= 27fddea1e746bd217cfb4cd7a511bace +TEST= 248 +KEY= a84fec59e9202a5141ea4979d4dd762e +CT= 27fddea1e746bd217cfb4cd7a511bace +PT= 6a9189fd46e47b22f151a213d023442b +TEST= 249 +KEY= c2de65a4afc45173b0bbeb6a04fe3205 +CT= 6a9189fd46e47b22f151a213d023442b +PT= 1c729701404c76d5d7a156c39cf52542 +TEST= 250 +KEY= deacf2a5ef8827a6671abda9980b1747 +CT= 1c729701404c76d5d7a156c39cf52542 +PT= 6f97cb4564e0783dfe962dcb13fedf72 +TEST= 251 +KEY= b13b39e08b685f9b998c90628bf5c835 +CT= 6f97cb4564e0783dfe962dcb13fedf72 +PT= f818140a280299b182cda37cbe9b27ab +TEST= 252 +KEY= 49232deaa36ac62a1b41331e356eef9e +CT= f818140a280299b182cda37cbe9b27ab +PT= 20e9f2be7017c2945005fd8a420a5b7d +TEST= 253 +KEY= 69cadf54d37d04be4b44ce947764b4e3 +CT= 20e9f2be7017c2945005fd8a420a5b7d +PT= 60bb97c634161ef6a36056193b6eddb0 +TEST= 254 +KEY= 09714892e76b1a48e824988d4c0a6953 +CT= 60bb97c634161ef6a36056193b6eddb0 +PT= e4b9777b7390ef430a93ff7dd0b68cd4 +TEST= 255 +KEY= edc83fe994fbf50be2b767f09cbce587 +CT= e4b9777b7390ef430a93ff7dd0b68cd4 +PT= e5e3bd960cf15bbdb8a6c08711a884cf +TEST= 256 +KEY= 082b827f980aaeb65a11a7778d146148 +CT= e5e3bd960cf15bbdb8a6c08711a884cf +PT= 71a6aefd0181dce69a116585044c7f66 +TEST= 257 +KEY= 798d2c82998b7250c000c2f289581e2e +CT= 71a6aefd0181dce69a116585044c7f66 +PT= 8e9c1cffdb8972617d74da0e9ed065d1 +TEST= 258 +KEY= f711307d42020031bd7418fc17887bff +CT= 8e9c1cffdb8972617d74da0e9ed065d1 +PT= ce7882ab901a199910fc463a4d1d626a +TEST= 259 +KEY= 3969b2d6d21819a8ad885ec65a951995 +CT= ce7882ab901a199910fc463a4d1d626a +PT= 2334546032e850d0029cb1ad6afcea7a +TEST= 260 +KEY= 1a5de6b6e0f04978af14ef6b3069f3ef +CT= 2334546032e850d0029cb1ad6afcea7a +PT= 88b4cf0d4ab7bd00be98da1626063a69 +TEST= 261 +KEY= 92e929bbaa47f478118c357d166fc986 +CT= 88b4cf0d4ab7bd00be98da1626063a69 +PT= 5a7ff831f28e5ec4a11da524e2323925 +TEST= 262 +KEY= c896d18a58c9aabcb0919059f45df0a3 +CT= 5a7ff831f28e5ec4a11da524e2323925 +PT= df000551ef9bbd914969bd1b353bdc8c +TEST= 263 +KEY= 1796d4dbb752172df9f82d42c1662c2f +CT= df000551ef9bbd914969bd1b353bdc8c +PT= 1eecbc47697208193c354e28d23e8ce9 +TEST= 264 +KEY= 097a689cde201f34c5cd636a1358a0c6 +CT= 1eecbc47697208193c354e28d23e8ce9 +PT= df85cd4b3f821a7411f9f5d1fdf9db85 +TEST= 265 +KEY= d6ffa5d7e1a20540d43496bbeea17b43 +CT= df85cd4b3f821a7411f9f5d1fdf9db85 +PT= 038e765f1910d8c0c1251254605218f2 +TEST= 266 +KEY= d571d388f8b2dd80151184ef8ef363b1 +CT= 038e765f1910d8c0c1251254605218f2 +PT= fba8fe850294eeaee75f56c974bf7de4 +TEST= 267 +KEY= 2ed92d0dfa26332ef24ed226fa4c1e55 +CT= fba8fe850294eeaee75f56c974bf7de4 +PT= 47f9d6f7a3e2a1bfa360ea1ba8b0450e +TEST= 268 +KEY= 6920fbfa59c49291512e383d52fc5b5b +CT= 47f9d6f7a3e2a1bfa360ea1ba8b0450e +PT= fd6f4a4825de5e776bfd569223cb5a2c +TEST= 269 +KEY= 944fb1b27c1acce63ad36eaf71370177 +CT= fd6f4a4825de5e776bfd569223cb5a2c +PT= 10430ed7ee0fdb8fbc348f8e08286622 +TEST= 270 +KEY= 840cbf659215176986e7e121791f6755 +CT= 10430ed7ee0fdb8fbc348f8e08286622 +PT= 4b75d5c573185303b01eb649884758b1 +TEST= 271 +KEY= cf796aa0e10d446a36f95768f1583fe4 +CT= 4b75d5c573185303b01eb649884758b1 +PT= 85cca4271a941517d55d05b4f29527c3 +TEST= 272 +KEY= 4ab5ce87fb99517de3a452dc03cd1827 +CT= 85cca4271a941517d55d05b4f29527c3 +PT= 615ea2d44c52d639b6ad05d621b4a1a6 +TEST= 273 +KEY= 2beb6c53b7cb87445509570a2279b981 +CT= 615ea2d44c52d639b6ad05d621b4a1a6 +PT= 1dfd1e93d34abfe45ba6bf6bd3fbf30e +TEST= 274 +KEY= 361672c0648138a00eafe861f1824a8f +CT= 1dfd1e93d34abfe45ba6bf6bd3fbf30e +PT= b65c3f09ffff752dee2f8f2d441a51ca +TEST= 275 +KEY= 804a4dc99b7e4d8de080674cb5981b45 +CT= b65c3f09ffff752dee2f8f2d441a51ca +PT= 3b36d6fd4f7acad4681ff4398ac7afb3 +TEST= 276 +KEY= bb7c9b34d4048759889f93753f5fb4f6 +CT= 3b36d6fd4f7acad4681ff4398ac7afb3 +PT= f3cdefabe450d887cd585c280bb22367 +TEST= 277 +KEY= 48b1749f30545fde45c7cf5d34ed9791 +CT= f3cdefabe450d887cd585c280bb22367 +PT= ecc49251bad79981ca1b1f683a843531 +TEST= 278 +KEY= a475e6ce8a83c65f8fdcd0350e69a2a0 +CT= ecc49251bad79981ca1b1f683a843531 +PT= 8be43f0a30663108513a0e5f49f9152c +TEST= 279 +KEY= 2f91d9c4bae5f757dee6de6a4790b78c +CT= 8be43f0a30663108513a0e5f49f9152c +PT= db3d559fcebe0faf3b218161ba6b3f07 +TEST= 280 +KEY= f4ac8c5b745bf8f8e5c75f0bfdfb888b +CT= db3d559fcebe0faf3b218161ba6b3f07 +PT= 8f0c3ae11b03433c07cabd26bf47a430 +TEST= 281 +KEY= 7ba0b6ba6f58bbc4e20de22d42bc2cbb +CT= 8f0c3ae11b03433c07cabd26bf47a430 +PT= 73578dc3464ce3ee0314b206e1e9504c +TEST= 282 +KEY= 08f73b792914582ae119502ba3557cf7 +CT= 73578dc3464ce3ee0314b206e1e9504c +PT= 60da2c12b296804c608348a54ee1c60d +TEST= 283 +KEY= 682d176b9b82d866819a188eedb4bafa +CT= 60da2c12b296804c608348a54ee1c60d +PT= a960934724bdc61e5429e59856fc1902 +TEST= 284 +KEY= c14d842cbf3f1e78d5b3fd16bb48a3f8 +CT= a960934724bdc61e5429e59856fc1902 +PT= 6b7e71535c6b7b09bdf19af79cd58c95 +TEST= 285 +KEY= aa33f57fe3546571684267e1279d2f6d +CT= 6b7e71535c6b7b09bdf19af79cd58c95 +PT= b95e0126ef320f1e6f288366db7f2773 +TEST= 286 +KEY= 136df4590c666a6f076ae487fce2081e +CT= b95e0126ef320f1e6f288366db7f2773 +PT= 6403b99d6fe0f85128fdd1f05b81aa6e +TEST= 287 +KEY= 776e4dc46386923e2f973577a763a270 +CT= 6403b99d6fe0f85128fdd1f05b81aa6e +PT= 9eba25f2d6ce5817f4317f3afe6421e7 +TEST= 288 +KEY= e9d46836b548ca29dba64a4d59078397 +CT= 9eba25f2d6ce5817f4317f3afe6421e7 +PT= 5e77aae8a3c5eeaf4732bb310dac3771 +TEST= 289 +KEY= b7a3c2de168d24869c94f17c54abb4e6 +CT= 5e77aae8a3c5eeaf4732bb310dac3771 +PT= 5fd00675371300b60c30efcee0171080 +TEST= 290 +KEY= e873c4ab219e243090a41eb2b4bca466 +CT= 5fd00675371300b60c30efcee0171080 +PT= 482d701dbce3ae108f65836c12a41c2c +TEST= 291 +KEY= a05eb4b69d7d8a201fc19ddea618b84a +CT= 482d701dbce3ae108f65836c12a41c2c +PT= 2966d81642542925891d8f7409051e4a +TEST= 292 +KEY= 89386ca0df29a30596dc12aaaf1da600 +CT= 2966d81642542925891d8f7409051e4a +PT= 2fd6f3db9dd1deded9f32d1806ae69d6 +TEST= 293 +KEY= a6ee9f7b42f87ddb4f2f3fb2a9b3cfd6 +CT= 2fd6f3db9dd1deded9f32d1806ae69d6 +PT= 9b59277165b792790e29adb53ade60db +TEST= 294 +KEY= 3db7b80a274fefa241069207936daf0d +CT= 9b59277165b792790e29adb53ade60db +PT= a4873c5246044200b56c25ffadab15d6 +TEST= 295 +KEY= 99308458614bada2f46ab7f83ec6badb +CT= a4873c5246044200b56c25ffadab15d6 +PT= 9e2bbbd65649eb2a0cd974ad32bf382f +TEST= 296 +KEY= 071b3f8e37024688f8b3c3550c7982f4 +CT= 9e2bbbd65649eb2a0cd974ad32bf382f +PT= f83f4408675892dada4833a43f22ffc8 +TEST= 297 +KEY= ff247b86505ad45222fbf0f1335b7d3c +CT= f83f4408675892dada4833a43f22ffc8 +PT= 19c337ccbf8d06dc68d9a16db294ef44 +TEST= 298 +KEY= e6e74c4aefd7d28e4a22519c81cf9278 +CT= 19c337ccbf8d06dc68d9a16db294ef44 +PT= 433578e0901a4f4b134e6dcf68249fc7 +TEST= 299 +KEY= a5d234aa7fcd9dc5596c3c53e9eb0dbf +CT= 433578e0901a4f4b134e6dcf68249fc7 +PT= 7f317cb0b3279c894b8a08289797fff1 +TEST= 300 +KEY= dae3481accea014c12e6347b7e7cf24e +CT= 7f317cb0b3279c894b8a08289797fff1 +PT= affb4ca21a2a36fd24bb18c5aed17789 +TEST= 301 +KEY= 751804b8d6c037b1365d2cbed0ad85c7 +CT= affb4ca21a2a36fd24bb18c5aed17789 +PT= 394da5ec353a68b844d1bc24a468da5c +TEST= 302 +KEY= 4c55a154e3fa5f09728c909a74c55f9b +CT= 394da5ec353a68b844d1bc24a468da5c +PT= c649c174b98a06351f26c117d14ff290 +TEST= 303 +KEY= 8a1c60205a70593c6daa518da58aad0b +CT= c649c174b98a06351f26c117d14ff290 +PT= 2e122aa7c90b57304a80c19480627dd7 +TEST= 304 +KEY= a40e4a87937b0e0c272a901925e8d0dc +CT= 2e122aa7c90b57304a80c19480627dd7 +PT= 9841ade6a65834ce89959efe8f059ed6 +TEST= 305 +KEY= 3c4fe76135233ac2aebf0ee7aaed4e0a +CT= 9841ade6a65834ce89959efe8f059ed6 +PT= 6b70d74762a4befbd15b9ec6835cb69b +TEST= 306 +KEY= 573f3026578784397fe4902129b1f891 +CT= 6b70d74762a4befbd15b9ec6835cb69b +PT= 2e8b5def53e2294c0c953a9b8bd9399d +TEST= 307 +KEY= 79b46dc90465ad757371aabaa268c10c +CT= 2e8b5def53e2294c0c953a9b8bd9399d +PT= d32d00f78ba00f6cea792598b89779e4 +TEST= 308 +KEY= aa996d3e8fc5a21999088f221affb8e8 +CT= d32d00f78ba00f6cea792598b89779e4 +PT= 7059dcc6cb8d295b95f2978f25927b31 +TEST= 309 +KEY= dac0b1f844488b420cfa18ad3f6dc3d9 +CT= 7059dcc6cb8d295b95f2978f25927b31 +PT= 833a1afa7dc4caf54f5b36981a98d7e3 +TEST= 310 +KEY= 59faab02398c41b743a12e3525f5143a +CT= 833a1afa7dc4caf54f5b36981a98d7e3 +PT= 4cc5a526400b493aaa28909a2f4932bf +TEST= 311 +KEY= 153f0e247987088de989beaf0abc2685 +CT= 4cc5a526400b493aaa28909a2f4932bf +PT= d7134dee2967104d161876a0802b3727 +TEST= 312 +KEY= c22c43ca50e018c0ff91c80f8a9711a2 +CT= d7134dee2967104d161876a0802b3727 +PT= c45db7bc52d7a0d53399b91efb686d32 +TEST= 313 +KEY= 0671f4760237b815cc08711171ff7c90 +CT= c45db7bc52d7a0d53399b91efb686d32 +PT= 2f49ea2a8d7f44909bcf41c3640fd0ab +TEST= 314 +KEY= 29381e5c8f48fc8557c730d215f0ac3b +CT= 2f49ea2a8d7f44909bcf41c3640fd0ab +PT= 6d416059758f4ac555a05d83e9cfc4de +TEST= 315 +KEY= 44797e05fac7b64002676d51fc3f68e5 +CT= 6d416059758f4ac555a05d83e9cfc4de +PT= 2721015ddf85ec87ed8480a87705cd37 +TEST= 316 +KEY= 63587f5825425ac7efe3edf98b3aa5d2 +CT= 2721015ddf85ec87ed8480a87705cd37 +PT= 3b045f5dd5adc6e5d341e2e6a5b919d3 +TEST= 317 +KEY= 585c2005f0ef9c223ca20f1f2e83bc01 +CT= 3b045f5dd5adc6e5d341e2e6a5b919d3 +PT= 85da9719ff16899b343be56fdf9f86bf +TEST= 318 +KEY= dd86b71c0ff915b90899ea70f11c3abe +CT= 85da9719ff16899b343be56fdf9f86bf +PT= 67fd32ac2783c381e77ae0bb8aceeccd +TEST= 319 +KEY= ba7b85b0287ad638efe30acb7bd2d673 +CT= 67fd32ac2783c381e77ae0bb8aceeccd +PT= d8bec715849e6a2a164f0139b8ec038e +TEST= 320 +KEY= 62c542a5ace4bc12f9ac0bf2c33ed5fd +CT= d8bec715849e6a2a164f0139b8ec038e +PT= 6eca9375a207148e36203c8bd885a520 +TEST= 321 +KEY= 0c0fd1d00ee3a89ccf8c37791bbb70dd +CT= 6eca9375a207148e36203c8bd885a520 +PT= a96877a8369b7086ef76d8281c066068 +TEST= 322 +KEY= a567a6783878d81a20faef5107bd10b5 +CT= a96877a8369b7086ef76d8281c066068 +PT= 2d6ddf2c136f5acdc12d33d52ecd6397 +TEST= 323 +KEY= 880a79542b1782d7e1d7dc8429707322 +CT= 2d6ddf2c136f5acdc12d33d52ecd6397 +PT= e2f3eff780eedad7b820cf57f946ab21 +TEST= 324 +KEY= 6af996a3abf9580059f713d3d036d803 +CT= e2f3eff780eedad7b820cf57f946ab21 +PT= d083829ab624dc46bf55f15c2aca2cdc +TEST= 325 +KEY= ba7a14391ddd8446e6a2e28ffafcf4df +CT= d083829ab624dc46bf55f15c2aca2cdc +PT= 637a1328711a701f011b0d66953a11fc +TEST= 326 +KEY= d90007116cc7f459e7b9efe96fc6e523 +CT= 637a1328711a701f011b0d66953a11fc +PT= 9230f9e8c4aa7d697641b4e800aece8b +TEST= 327 +KEY= 4b30fef9a86d893091f85b016f682ba8 +CT= 9230f9e8c4aa7d697641b4e800aece8b +PT= cabc2f3ebcb87aef4550060fb6f95c7d +TEST= 328 +KEY= 818cd1c714d5f3dfd4a85d0ed99177d5 +CT= cabc2f3ebcb87aef4550060fb6f95c7d +PT= 25c93da609bedfd48d88b7e005ea9d4d +TEST= 329 +KEY= a445ec611d6b2c0b5920eaeedc7bea98 +CT= 25c93da609bedfd48d88b7e005ea9d4d +PT= e445c1b43dc6aa0d47c766675676ca29 +TEST= 330 +KEY= 40002dd520ad86061ee78c898a0d20b1 +CT= e445c1b43dc6aa0d47c766675676ca29 +PT= 3f8a99e9d556f0ce0b0f3b4fe89a7c15 +TEST= 331 +KEY= 7f8ab43cf5fb76c815e8b7c662975ca4 +CT= 3f8a99e9d556f0ce0b0f3b4fe89a7c15 +PT= be04197cadbdbc917ab288d85c554d4a +TEST= 332 +KEY= c18ead405846ca596f5a3f1e3ec211ee +CT= be04197cadbdbc917ab288d85c554d4a +PT= 2cf8fe59eed67af15bd6c09c8da37882 +TEST= 333 +KEY= ed765319b690b0a8348cff82b361696c +CT= 2cf8fe59eed67af15bd6c09c8da37882 +PT= ff8cbf98d0b15198acdc53d7247511c5 +TEST= 334 +KEY= 12faec816621e1309850ac55971478a9 +CT= ff8cbf98d0b15198acdc53d7247511c5 +PT= 27794678855bae2bde7eb75487813e28 +TEST= 335 +KEY= 3583aaf9e37a4f1b462e1b0110954681 +CT= 27794678855bae2bde7eb75487813e28 +PT= 5681b2cecde71663a864d0288607d86b +TEST= 336 +KEY= 630218372e9d5978ee4acb2996929eea +CT= 5681b2cecde71663a864d0288607d86b +PT= 8936eb6e65f2cd2b3afd1310b5b2d6c8 +TEST= 337 +KEY= ea34f3594b6f9453d4b7d83923204822 +CT= 8936eb6e65f2cd2b3afd1310b5b2d6c8 +PT= 16045490148187b05cc46b80099a4530 +TEST= 338 +KEY= fc30a7c95fee13e38873b3b92aba0d12 +CT= 16045490148187b05cc46b80099a4530 +PT= fe909ffb1d490b028867288fe682eee9 +TEST= 339 +KEY= 02a0383242a718e100149b36cc38e3fb +CT= fe909ffb1d490b028867288fe682eee9 +PT= 7b3e5c0017089a7842866aba6364ffea +TEST= 340 +KEY= 799e643255af82994292f18caf5c1c11 +CT= 7b3e5c0017089a7842866aba6364ffea +PT= cc263f129618975f204ae499f115c69b +TEST= 341 +KEY= b5b85b20c3b715c662d815155e49da8a +CT= cc263f129618975f204ae499f115c69b +PT= 997ace7eabf6ebf9cc7bbcc2670cf1a0 +TEST= 342 +KEY= 2cc2955e6841fe3faea3a9d739452b2a +CT= 997ace7eabf6ebf9cc7bbcc2670cf1a0 +PT= 88d4a74b19278ed442068d0954dfa8b2 +TEST= 343 +KEY= a4163215716670ebeca524de6d9a8398 +CT= 88d4a74b19278ed442068d0954dfa8b2 +PT= f1cc6407ab254178defef983112d6ac5 +TEST= 344 +KEY= 55da5612da433193325bdd5d7cb7e95d +CT= f1cc6407ab254178defef983112d6ac5 +PT= 689a0e429cdaf1bd1197c160bf962544 +TEST= 345 +KEY= 3d4058504699c02e23cc1c3dc321cc19 +CT= 689a0e429cdaf1bd1197c160bf962544 +PT= 54cf618196d978c0460cf8051df5be18 +TEST= 346 +KEY= 698f39d1d040b8ee65c0e438ded47201 +CT= 54cf618196d978c0460cf8051df5be18 +PT= 4aa0ef106f23b43c3dd371c66404c602 +TEST= 347 +KEY= 232fd6c1bf630cd2581395febad0b403 +CT= 4aa0ef106f23b43c3dd371c66404c602 +PT= a5185cae1718143fc6cc329d9f233e17 +TEST= 348 +KEY= 86378a6fa87b18ed9edfa76325f38a14 +CT= a5185cae1718143fc6cc329d9f233e17 +PT= a2a7e8855d25a0c475961e9b7ed7be35 +TEST= 349 +KEY= 249062eaf55eb829eb49b9f85b243421 +CT= a2a7e8855d25a0c475961e9b7ed7be35 +PT= e0b7536b335fb98f197f762b3b97cece +TEST= 350 +KEY= c4273181c60101a6f236cfd360b3faef +CT= e0b7536b335fb98f197f762b3b97cece +PT= c45c38164083871528d8b3ba7423bfea +TEST= 351 +KEY= 007b0997868286b3daee7c6914904505 +CT= c45c38164083871528d8b3ba7423bfea +PT= 017aebdef43cf9664c582356a4a0c374 +TEST= 352 +KEY= 0101e24972be7fd596b65f3fb0308671 +CT= 017aebdef43cf9664c582356a4a0c374 +PT= bbb48ea21b5edccf5346a7b4e6796bed +TEST= 353 +KEY= bab56ceb69e0a31ac5f0f88b5649ed9c +CT= bbb48ea21b5edccf5346a7b4e6796bed +PT= 3a53dfcb6067f9e98653136a44a4b537 +TEST= 354 +KEY= 80e6b32009875af343a3ebe112ed58ab +CT= 3a53dfcb6067f9e98653136a44a4b537 +PT= 951ba0e2272e46fc8cc3990e002eeff0 +TEST= 355 +KEY= 15fd13c22ea91c0fcf6072ef12c3b75b +CT= 951ba0e2272e46fc8cc3990e002eeff0 +PT= 249202e40bc5892b9cee96279e69432a +TEST= 356 +KEY= 316f1126256c9524538ee4c88caaf471 +CT= 249202e40bc5892b9cee96279e69432a +PT= b90ce5bf126163b37f75032a88afd615 +TEST= 357 +KEY= 8863f499370df6972cfbe7e204052264 +CT= b90ce5bf126163b37f75032a88afd615 +PT= e0bdd9e1ff493d82777bd7fb4035d309 +TEST= 358 +KEY= 68de2d78c844cb155b8030194430f16d +CT= e0bdd9e1ff493d82777bd7fb4035d309 +PT= 0a3a5e377cdb2d1f6cb09e200494f578 +TEST= 359 +KEY= 62e4734fb49fe60a3730ae3940a40415 +CT= 0a3a5e377cdb2d1f6cb09e200494f578 +PT= 483df6e2936389d1fc09921497af8ae7 +TEST= 360 +KEY= 2ad985ad27fc6fdbcb393c2dd70b8ef2 +CT= 483df6e2936389d1fc09921497af8ae7 +PT= 7a90b7b1e493109323a54ad285090ec6 +TEST= 361 +KEY= 5049321cc36f7f48e89c76ff52028034 +CT= 7a90b7b1e493109323a54ad285090ec6 +PT= b6471bf36a24b5b0cac19bdd4c83dc50 +TEST= 362 +KEY= e60e29efa94bcaf8225ded221e815c64 +CT= b6471bf36a24b5b0cac19bdd4c83dc50 +PT= efbdc6ecadce6aa5dbd302e7a0647700 +TEST= 363 +KEY= 09b3ef030485a05df98eefc5bee52b64 +CT= efbdc6ecadce6aa5dbd302e7a0647700 +PT= 783a89b88cc875f743b645ba1449cee7 +TEST= 364 +KEY= 718966bb884dd5aaba38aa7faaace583 +CT= 783a89b88cc875f743b645ba1449cee7 +PT= ead61d2577852d4ea276f3699efb2bdc +TEST= 365 +KEY= 9b5f7b9effc8f8e4184e59163457ce5f +CT= ead61d2577852d4ea276f3699efb2bdc +PT= 9e804d8814af4fc67ba931d1c72774c7 +TEST= 366 +KEY= 05df3616eb67b72263e768c7f370ba98 +CT= 9e804d8814af4fc67ba931d1c72774c7 +PT= 7c383cc27d8c2b117ac72088eb334fd9 +TEST= 367 +KEY= 79e70ad496eb9c331920484f1843f541 +CT= 7c383cc27d8c2b117ac72088eb334fd9 +PT= 9d4be61ececb2e60ec621a6320c0e844 +TEST= 368 +KEY= e4acecca5820b253f542522c38831d05 +CT= 9d4be61ececb2e60ec621a6320c0e844 +PT= 227992adfc526d9aa99ba629e7523198 +TEST= 369 +KEY= c6d57e67a472dfc95cd9f405dfd12c9d +CT= 227992adfc526d9aa99ba629e7523198 +PT= 93a265fb7650be75cbdd8732f65f09a5 +TEST= 370 +KEY= 55771b9cd22261bc97047337298e2538 +CT= 93a265fb7650be75cbdd8732f65f09a5 +PT= 5ab3354b8d28f041c5a7fdab828996bc +TEST= 371 +KEY= 0fc42ed75f0a91fd52a38e9cab07b384 +CT= 5ab3354b8d28f041c5a7fdab828996bc +PT= ba5c6566701bd3791c2da51cdc5ab6dd +TEST= 372 +KEY= b5984bb12f1142844e8e2b80775d0559 +CT= ba5c6566701bd3791c2da51cdc5ab6dd +PT= 2c96ce0653efb1113c6e822dd4ae6200 +TEST= 373 +KEY= 990e85b77cfef39572e0a9ada3f36759 +CT= 2c96ce0653efb1113c6e822dd4ae6200 +PT= 1065f5519472c78badab79ec00bbcaba +TEST= 374 +KEY= 896b70e6e88c341edf4bd041a348ade3 +CT= 1065f5519472c78badab79ec00bbcaba +PT= 049aa7d4b4c1a59c1a16e3e5d8b46515 +TEST= 375 +KEY= 8df1d7325c4d9182c55d33a47bfcc8f6 +CT= 049aa7d4b4c1a59c1a16e3e5d8b46515 +PT= c8f1c4179dd8fcd6942d07af7392f481 +TEST= 376 +KEY= 45001325c1956d545170340b086e3c77 +CT= c8f1c4179dd8fcd6942d07af7392f481 +PT= 9c9ae90afe18822197ea47fe2f48813f +TEST= 377 +KEY= d99afa2f3f8def75c69a73f52726bd48 +CT= 9c9ae90afe18822197ea47fe2f48813f +PT= dfbabe8688391cc868cde134ddffe1f0 +TEST= 378 +KEY= 062044a9b7b4f3bdae5792c1fad95cb8 +CT= dfbabe8688391cc868cde134ddffe1f0 +PT= 72be585f98da4dc03998b5820d5230a9 +TEST= 379 +KEY= 749e1cf62f6ebe7d97cf2743f78b6c11 +CT= 72be585f98da4dc03998b5820d5230a9 +PT= bcf3d47b888599a27ad63d6efd8fb86f +TEST= 380 +KEY= c86dc88da7eb27dfed191a2d0a04d47e +CT= bcf3d47b888599a27ad63d6efd8fb86f +PT= 62f7a2ad05bb46cb81b9601129100455 +TEST= 381 +KEY= aa9a6a20a25061146ca07a3c2314d02b +CT= 62f7a2ad05bb46cb81b9601129100455 +PT= fa4d3b82232d19be14a57422012c7751 +TEST= 382 +KEY= 50d751a2817d78aa78050e1e2238a77a +CT= fa4d3b82232d19be14a57422012c7751 +PT= 40953aaa3d6c1bbe375a1e275754c98c +TEST= 383 +KEY= 10426b08bc1163144f5f1039756c6ef6 +CT= 40953aaa3d6c1bbe375a1e275754c98c +PT= ce9123c6a5a66af788a8515721d646a0 +TEST= 384 +KEY= ded348ce19b709e3c7f7416e54ba2856 +CT= ce9123c6a5a66af788a8515721d646a0 +PT= e45f3483e343f5c3c0ac77e955369ab3 +TEST= 385 +KEY= 3a8c7c4dfaf4fc20075b3687018cb2e5 +CT= e45f3483e343f5c3c0ac77e955369ab3 +PT= 6e7ce5f4be070ec870691cdd494a767e +TEST= 386 +KEY= 54f099b944f3f2e877322a5a48c6c49b +CT= 6e7ce5f4be070ec870691cdd494a767e +PT= 2bb1ee551920a632e90eb9e462280365 +TEST= 387 +KEY= 7f4177ec5dd354da9e3c93be2aeec7fe +CT= 2bb1ee551920a632e90eb9e462280365 +PT= 692e0fa8b1c39cb96a11e21ea1b3365e +TEST= 388 +KEY= 166f7844ec10c863f42d71a08b5df1a0 +CT= 692e0fa8b1c39cb96a11e21ea1b3365e +PT= 345c0de98a9f472b6bcbe241bb346590 +TEST= 389 +KEY= 223375ad668f8f489fe693e130699430 +CT= 345c0de98a9f472b6bcbe241bb346590 +PT= d9d9313dc80fb90608614eccc962207f +TEST= 390 +KEY= fbea4490ae80364e9787dd2df90bb44f +CT= d9d9313dc80fb90608614eccc962207f +PT= 7aee31c488d1dd54b9ad8ee3aefe546c +TEST= 391 +KEY= 810475542651eb1a2e2a53ce57f5e023 +CT= 7aee31c488d1dd54b9ad8ee3aefe546c +PT= 9cf27e1202080d9f3a9b5e02290204ea +TEST= 392 +KEY= 1df60b462459e68514b10dcc7ef7e4c9 +CT= 9cf27e1202080d9f3a9b5e02290204ea +PT= 670085c6d3b95c6017db9163b9d2d565 +TEST= 393 +KEY= 7af68e80f7e0bae5036a9cafc72531ac +CT= 670085c6d3b95c6017db9163b9d2d565 +PT= 2a36e88df74ba4b24283fee52dde5aa4 +TEST= 394 +KEY= 50c0660d00ab1e5741e9624aeafb6b08 +CT= 2a36e88df74ba4b24283fee52dde5aa4 +PT= 81b75b31f130467f4a1fa6ca4a329e5e +TEST= 395 +KEY= d1773d3cf19b58280bf6c480a0c9f556 +CT= 81b75b31f130467f4a1fa6ca4a329e5e +PT= d0a0347102bd11f9e2bd8e8a72d53adc +TEST= 396 +KEY= 01d7094df32649d1e94b4a0ad21ccf8a +CT= d0a0347102bd11f9e2bd8e8a72d53adc +PT= 97f0187509608df1d9b27ab5d005e505 +TEST= 397 +KEY= 96271138fa46c42030f930bf02192a8f +CT= 97f0187509608df1d9b27ab5d005e505 +PT= e60139e36ecd7b24c7c98772c92a1e87 +TEST= 398 +KEY= 702628db948bbf04f730b7cdcb333408 +CT= e60139e36ecd7b24c7c98772c92a1e87 +PT= 7e92e19e07a469e7d49d3d07ef719157 +TEST= 399 +KEY= 0eb4c945932fd6e323ad8aca2442a55f +CT= 7e92e19e07a469e7d49d3d07ef719157 +PT= f5bf8b37136f2e1f6bec6f572021e3ba diff --git a/flint/test/testvals/ecbmd46.txt b/flint/test/testvals/ecbmd46.txt new file mode 100644 index 0000000..1a4baf2 --- /dev/null +++ b/flint/test/testvals/ecbmd46.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= 48e31e9e256718f29229319c19f15ba4 +TEST= 1 +KEY= 9643d8334a63df4d48e31e9e256718f29229319c19f15ba4 +CT= 48e31e9e256718f29229319c19f15ba4 +PT= cc01684be9b29ed01ea7923e7d2380aa +TEST= 2 +KEY= ef334c87288c43de84e276d5ccd586228c8ea3a264d2db0e +CT= cc01684be9b29ed01ea7923e7d2380aa +PT= 8726b4e66d6b8fbaa22d42981a5a40cc +TEST= 3 +KEY= 0891a045bb044b9d03c4c233a1be09982ea3e13a7e889bc2 +CT= 8726b4e66d6b8fbaa22d42981a5a40cc +PT= 83b9a21a0710fdb9c603797613772ed6 +TEST= 4 +KEY= a5233519de914717807d6029a6aef421e8a0984c6dffb514 +CT= 83b9a21a0710fdb9c603797613772ed6 +PT= f15479a2b2c250f7e5c11d333d867cbd +TEST= 5 +KEY= a1cb19726db4c2c77129198b146ca4d60d61857f5079c9a9 +CT= f15479a2b2c250f7e5c11d333d867cbd +PT= c1af401bd4e62d8ba15bec3690f2fb25 +TEST= 6 +KEY= 04b03c15db8324b3b0865990c08a895dac3a6949c08b328c +CT= c1af401bd4e62d8ba15bec3690f2fb25 +PT= 01e01e3b10470286035ebd7502ef11a0 +TEST= 7 +KEY= a1cb0164ab1e88edb16647abd0cd8bdbaf64d43cc264232c +CT= 01e01e3b10470286035ebd7502ef11a0 +PT= a681127825b718411291106ab416779a +TEST= 8 +KEY= 27bfd9cb824c525617e755d3f57a939abdf5c456767254b6 +CT= a681127825b718411291106ab416779a +PT= 5c2eba728589a9caa15e28e7d8e59aa0 +TEST= 9 +KEY= b308e0dce108194c4bc9efa170f33a501cabecb1ae97ce16 +CT= 5c2eba728589a9caa15e28e7d8e59aa0 +PT= e738305279be636648b6d5ffa3e97e4a +TEST= 10 +KEY= fe787701ee66664bacf1dff3094d5936541d394e0d7eb05c +CT= e738305279be636648b6d5ffa3e97e4a +PT= 5af7d4c9439c7412fd7236e7685659df +TEST= 11 +KEY= dd93d742afa0b19cf6060b3a4ad12d24a96f0fa96528e983 +CT= 5af7d4c9439c7412fd7236e7685659df +PT= 30d0681d4060e24d1427d1aac498db1b +TEST= 12 +KEY= d5d19c2fea9dc94bc6d663270ab1cf69bd48de03a1b03298 +CT= 30d0681d4060e24d1427d1aac498db1b +PT= fc9b6752064b1cce75ebfbe91af8f2cd +TEST= 13 +KEY= eb0954ece44620833a4d04750cfad3a7c8a325eabb48c055 +CT= fc9b6752064b1cce75ebfbe91af8f2cd +PT= 61e6ae6e035bcc3c94ef00101216904a +TEST= 14 +KEY= e6e5ab38545b6df75babaa1b0fa11f9b5c4c25faa95e501f +CT= 61e6ae6e035bcc3c94ef00101216904a +PT= bf738a4e55f036126cc9b56ded530b8c +TEST= 15 +KEY= e8c670f71e5b62b6e4d820555a51298930859097440d5b93 +CT= bf738a4e55f036126cc9b56ded530b8c +PT= 6b9cd4c227fc30c14fd881b838d9f8f5 +TEST= 16 +KEY= 23ff647dd75770418f44f4977dad19487f5d112f7cd4a366 +CT= 6b9cd4c227fc30c14fd881b838d9f8f5 +PT= 6173ef2b5c9b569a1bd4b62c7c913844 +TEST= 17 +KEY= db94124b11cc03d9ee371bbc21364fd26489a70300459b22 +CT= 6173ef2b5c9b569a1bd4b62c7c913844 +PT= 709ef90f853e55123a917fb258e900f9 +TEST= 18 +KEY= 4821ca96b50aca049ea9e2b3a4081ac05e18d8b158ac9bdb +CT= 709ef90f853e55123a917fb258e900f9 +PT= 5d73d99e47b1db28e0ed9b9d1c212cfa +TEST= 19 +KEY= fa47c5bf5e688f8bc3da3b2de3b9c1e8bef5432c448db721 +CT= 5d73d99e47b1db28e0ed9b9d1c212cfa +PT= 32016ffcb2aa5ea6ea0c808f60613ca2 +TEST= 20 +KEY= c66a73e0d1261c2cf1db54d151139f4e54f9c3a324ec8b83 +CT= 32016ffcb2aa5ea6ea0c808f60613ca2 +PT= caa3704f7fd76ebacb1d2a266a0899ff +TEST= 21 +KEY= fae8e04094e572a33b78249e2ec4f1f49fe4e9854ee4127c +CT= caa3704f7fd76ebacb1d2a266a0899ff +PT= e32dbd027a1a36b2ec8d0a98c9293e7e +TEST= 22 +KEY= 8f2fbf9e40182950d855999c54dec7467369e31d87cd2c02 +CT= e32dbd027a1a36b2ec8d0a98c9293e7e +PT= 1c117311882c0d5159a9dfd5c3c68d95 +TEST= 23 +KEY= f6fb8f6dfaa034bfc444ea8ddcf2ca172ac03cc8440ba197 +CT= 1c117311882c0d5159a9dfd5c3c68d95 +PT= 5e379c2471db04582cd861e6f8a419d7 +TEST= 24 +KEY= 699dca67f4ef50c49a7376a9ad29ce4f06185d2ebcafb840 +CT= 5e379c2471db04582cd861e6f8a419d7 +PT= 5932a84c6acbd8452ee9ac47ce4b6bd8 +TEST= 25 +KEY= f568b4f126486ce4c341dee5c7e2160a28f1f16972e4d398 +CT= 5932a84c6acbd8452ee9ac47ce4b6bd8 +PT= 00634eed1d18c84ae0a8198cf791de81 +TEST= 26 +KEY= c49e5e8d366b6fe7c3229008dafade40c859e8e585750d19 +CT= 00634eed1d18c84ae0a8198cf791de81 +PT= e10c93b1c466fff0b6eb6db50af271ec +TEST= 27 +KEY= 22b07db9ed443a9d222e03b91e9c21b07eb285508f877cf5 +CT= e10c93b1c466fff0b6eb6db50af271ec +PT= 58a0c680f565e63a7e41c6eac50a3b01 +TEST= 28 +KEY= 2bdf4cce2b4cafdd7a8ec539ebf9c78a00f343ba4a8d47f4 +CT= 58a0c680f565e63a7e41c6eac50a3b01 +PT= 92921b2aa7fc6367199a4c42fae0e2a4 +TEST= 29 +KEY= e2be29f6905d41c5e81cde134c05a4ed19690ff8b06da550 +CT= 92921b2aa7fc6367199a4c42fae0e2a4 +PT= b6ec2a692d2657e5506f2c3ba1912799 +TEST= 30 +KEY= e43634fd3db719c75ef0f47a6123f308490623c311fc82c9 +CT= b6ec2a692d2657e5506f2c3ba1912799 +PT= 23ecd0813b1a7090cf9be874d6b0846c +TEST= 31 +KEY= aca2f21ef46e30b57d1c24fb5a398398869dcbb7c74c06a5 +CT= 23ecd0813b1a7090cf9be874d6b0846c +PT= 04bd52f4c1ab8df4816a6e11f8b54452 +TEST= 32 +KEY= 0130b37afe24d66079a1760f9b920e6c07f7a5a63ff942f7 +CT= 04bd52f4c1ab8df4816a6e11f8b54452 +PT= dfa0074defedb44d0d96ad6020d1a37d +TEST= 33 +KEY= 00ac6bf5e3ad20ffa6017142747fba210a6108c61f28e18a +CT= dfa0074defedb44d0d96ad6020d1a37d +PT= 5ab15057e05f73faaf12c0ec26d3f02f +TEST= 34 +KEY= e3a70ebf3d9167aafcb021159420c9dba573c82a39fb11a5 +CT= 5ab15057e05f73faaf12c0ec26d3f02f +PT= 6ecc2f23ab7854e97f215c52ef1e62e0 +TEST= 35 +KEY= cbcd9116dc78fa64927c0e363f589d32da529478d6e57345 +CT= 6ecc2f23ab7854e97f215c52ef1e62e0 +PT= 930b3ebde0989049056022e83fc9ef1e +TEST= 36 +KEY= fbb5e5462de715180177308bdfc00d7bdf32b690e92c9c5b +CT= 930b3ebde0989049056022e83fc9ef1e +PT= 1ee4abb9acd70b93a83bcd8751f858de +TEST= 37 +KEY= e5d2b1acd8be6df21f939b32731706e877097b17b8d4c485 +CT= 1ee4abb9acd70b93a83bcd8751f858de +PT= fcac610ea0d309c6d36eed5a4bc04036 +TEST= 38 +KEY= 54dd0b6cb083bde8e33ffa3cd3c40f2ea467964df31484b3 +CT= fcac610ea0d309c6d36eed5a4bc04036 +PT= 161d5ee8f50a3f69a11adfeaf1a2a2aa +TEST= 39 +KEY= 28309f7eb99aaee1f522a4d426ce3047057d49a702b62619 +CT= 161d5ee8f50a3f69a11adfeaf1a2a2aa +PT= d9d365b061d2f3bf9df94181837621b4 +TEST= 40 +KEY= e55ecddfae95a2c92cf1c164471cc3f89884082681c007ad +CT= d9d365b061d2f3bf9df94181837621b4 +PT= 938647a6aad455d89a6dfefe60d62331 +TEST= 41 +KEY= c9cee1c9d89df76abf7786c2edc8962002e9f6d8e116249c +CT= 938647a6aad455d89a6dfefe60d62331 +PT= 06a002ddc7dc4f22f9b1d5734c312aaa +TEST= 42 +KEY= b26709109b66c916b9d7841f2a14d902fb5823abad270e36 +CT= 06a002ddc7dc4f22f9b1d5734c312aaa +PT= bb45e9be2237e3288f56edd0d9ad6734 +TEST= 43 +KEY= 2fad2ff32e10680502926da108233a2a740ece7b748a6902 +CT= bb45e9be2237e3288f56edd0d9ad6734 +PT= cf5a1338f5fa7ed4c77f6ea3836f079a +TEST= 44 +KEY= 63d3d62540c790d1cdc87e99fdd944feb371a0d8f7e56e98 +CT= cf5a1338f5fa7ed4c77f6ea3836f079a +PT= 32f2d628117adb46383fc101b58e95a6 +TEST= 45 +KEY= 0df38ce71cf26a19ff3aa8b1eca39fb88b4e61d9426bfb3e +CT= 32f2d628117adb46383fc101b58e95a6 +PT= 3a3ccea99d43887ac64498ab4efc87dd +TEST= 46 +KEY= 7eeeb78a0c9baa9fc506661871e017c24d0af9720c977ce3 +CT= 3a3ccea99d43887ac64498ab4efc87dd +PT= 787dc1c632c4aa77d42324338c510146 +TEST= 47 +KEY= 4df02ee427ae29a1bd7ba7de4324bdb59929dd4180c67da5 +CT= 787dc1c632c4aa77d42324338c510146 +PT= bb0635a471d26b80e5e387e4f14a1626 +TEST= 48 +KEY= d6983f5e8be728d9067d927a32f6d6357cca5aa5718c6b83 +CT= bb0635a471d26b80e5e387e4f14a1626 +PT= 14a9aa3ee6343c2d57e0f2ed7a05dc0d +TEST= 49 +KEY= bd84a7cd471613b512d43844d4c2ea182b2aa8480b89b78e +CT= 14a9aa3ee6343c2d57e0f2ed7a05dc0d +PT= 25e254ad6c33908bc07b3dec4052f549 +TEST= 50 +KEY= e54a2146242aadfb37366ce9b8f17a93eb5195a44bdb42c7 +CT= 25e254ad6c33908bc07b3dec4052f549 +PT= 10e09f426e6f33cd21df1eb748a46088 +TEST= 51 +KEY= 0517b745bce24e0527d6f3abd69e495eca8e8b13037f224f +CT= 10e09f426e6f33cd21df1eb748a46088 +PT= b65d2ffe83f9469aa2b1abc559eaab87 +TEST= 52 +KEY= 8297790c75e8931c918bdc5555670fc4683f20d65a9589c8 +CT= b65d2ffe83f9469aa2b1abc559eaab87 +PT= e743f6441ccf9703ff4b8e3f4921acdf +TEST= 53 +KEY= 7ec47c0c5663cd4c76c82a1149a898c79774aee913b42517 +CT= e743f6441ccf9703ff4b8e3f4921acdf +PT= becc5cf2f2c62a9e7d3cf979a9e96f94 +TEST= 54 +KEY= fbb1f10529fabeb3c80476e3bb6eb259ea485790ba5d4a83 +CT= becc5cf2f2c62a9e7d3cf979a9e96f94 +PT= 3718199958eaa473b980b95f9c76e03f +TEST= 55 +KEY= ee4113d30720269dff1c6f7ae384162a53c8eecf262baabc +CT= 3718199958eaa473b980b95f9c76e03f +PT= d15525b8bbb6d209e0bb3b6f5acb2556 +TEST= 56 +KEY= 488286944dc6b0842e494ac25832c423b373d5a07ce08fea +CT= d15525b8bbb6d209e0bb3b6f5acb2556 +PT= 0270af07dda52df7ca7b0ee7df098a80 +TEST= 57 +KEY= a32a880a84e7edb82c39e5c58597e9d47908db47a3e9056a +CT= 0270af07dda52df7ca7b0ee7df098a80 +PT= 2d380f99a182cd14cffef5e88b93b416 +TEST= 58 +KEY= dbd0fd5053bc52c60101ea5c241524c0b6f62eaf287ab17c +CT= 2d380f99a182cd14cffef5e88b93b416 +PT= 47fe8c67dcbc616e4c984d323ea4a45b +TEST= 59 +KEY= d79f78a4726f5fca46ff663bf8a945aefa6e639d16de1527 +CT= 47fe8c67dcbc616e4c984d323ea4a45b +PT= fa595c69c3286771fb8c921dfbbffc2e +TEST= 60 +KEY= 0c88aad46f951fb6bca63a523b8122df01e2f180ed61e909 +CT= fa595c69c3286771fb8c921dfbbffc2e +PT= 8fa64c511fce6fc987b327d12ebdadad +TEST= 61 +KEY= 762eea21d382067e33007603244f4d168651d651c3dc44a4 +CT= 8fa64c511fce6fc987b327d12ebdadad +PT= 8f52c709508408b40c241fd38e515e76 +TEST= 62 +KEY= ea05788c20fb364ebc52b10a74cb45a28a75c9824d8d1ad2 +CT= 8f52c709508408b40c241fd38e515e76 +PT= 7cfd332b306684ac92279ce06f1287d8 +TEST= 63 +KEY= d4b2582b094d874dc0af822144adc10e18525562229f9d0a +CT= 7cfd332b306684ac92279ce06f1287d8 +PT= 0da14f6619665e0128044355481bd658 +TEST= 64 +KEY= c080e7033fdf1bcfcd0ecd475dcb9f0f305616376a844b52 +CT= 0da14f6619665e0128044355481bd658 +PT= fedebe73aa4047af27e86a8b9e8e2ed7 +TEST= 65 +KEY= c5ba9667999cf2d633d07334f78bd8a017be7cbcf40a6585 +CT= fedebe73aa4047af27e86a8b9e8e2ed7 +PT= 12cd6896129e376aab9c0e980f3b7cd2 +TEST= 66 +KEY= 65ff092a539c4600211d1ba2e515efcabc227224fb311957 +CT= 12cd6896129e376aab9c0e980f3b7cd2 +PT= 04e7939b352f7b5c38b7ec5784ec78c2 +TEST= 67 +KEY= f98e7062f9ebe61c25fa8839d03a949684959e737fdd6195 +CT= 04e7939b352f7b5c38b7ec5784ec78c2 +PT= 0184996278a57e36e608e95616c46964 +TEST= 68 +KEY= 306fbefb3bf4e241247e115ba89feaa0629d7725691908f1 +CT= 0184996278a57e36e608e95616c46964 +PT= 92179e392e05c8b96a0cfac36109b09e +TEST= 69 +KEY= ee641f5db58f9057b6698f62869a221908918de60810b86f +CT= 92179e392e05c8b96a0cfac36109b09e +PT= 7f197b01172c809635198e6b156d13bc +TEST= 70 +KEY= eadb8b255f98fd9dc970f46391b6a28f3d88038d1d7dabd3 +CT= 7f197b01172c809635198e6b156d13bc +PT= 46f6dd79ad079dcfbc451b24ecdda4fa +TEST= 71 +KEY= 47225d75fe68ffa08f86291a3cb13f4081cd18a9f1a00f29 +CT= 46f6dd79ad079dcfbc451b24ecdda4fa +PT= b5daa09e3545f92ff44176187a1f9179 +TEST= 72 +KEY= 7cdecc21e72e54f43a5c898409f4c66f758c6eb18bbf9e50 +CT= b5daa09e3545f92ff44176187a1f9179 +PT= f51a35f3dd410132eec9e9f22a6f6fab +TEST= 73 +KEY= 75d1aafdbfe72c94cf46bc77d4b5c75d9b458743a1d0f1fb +CT= f51a35f3dd410132eec9e9f22a6f6fab +PT= d1cc6d95b58793c342cf14af250d5e40 +TEST= 74 +KEY= 41874c54bd58757a1e8ad1e26132549ed98a93ec84ddafbb +CT= d1cc6d95b58793c342cf14af250d5e40 +PT= a1fab3b352a887a829357528fed4b80e +TEST= 75 +KEY= 1d94704f4a51a5cabf706251339ad336f0bfe6c47a0917b5 +CT= a1fab3b352a887a829357528fed4b80e +PT= cbc6473b3aa4de2d64eed554ca241eac +TEST= 76 +KEY= a41b52e0ae7e568074b6256a093e0d1b94513390b02d0919 +CT= cbc6473b3aa4de2d64eed554ca241eac +PT= 19dc6e89d71dce5dcecd1a6f85c3fbd6 +TEST= 77 +KEY= 85f21bcd70691f596d6a4be3de23c3465a9c29ff35eef2cf +CT= 19dc6e89d71dce5dcecd1a6f85c3fbd6 +PT= ec6974e51b21f26a100e66183c68fd15 +TEST= 78 +KEY= cad0b254a88b669681033f06c502312c4a924fe709860fda +CT= ec6974e51b21f26a100e66183c68fd15 +PT= a16b6f78009b6e30cb758e87ad4d8034 +TEST= 79 +KEY= 8ac49b19582bfcf32068507ec5995f1c81e7c160a4cb8fee +CT= a16b6f78009b6e30cb758e87ad4d8034 +PT= cb5c20aafa898193bc34ff3ee460b313 +TEST= 80 +KEY= 988f8d4f3a66ac99eb3470d43f10de8f3dd33e5e40ab3cfd +CT= cb5c20aafa898193bc34ff3ee460b313 +PT= 397f92c8e69e0916e30dc6889779799e +TEST= 81 +KEY= de2d26c6130e006ed24be21cd98ed799dedef8d6d7d24563 +CT= 397f92c8e69e0916e30dc6889779799e +PT= 9a9cbd9380e2187855cae5a73d58480f +TEST= 82 +KEY= bf6be6d55c04977348d75f8f596ccfe18b141d71ea8a0d6c +CT= 9a9cbd9380e2187855cae5a73d58480f +PT= b67b360ee0ff297d3662f5b7cdb82cb9 +TEST= 83 +KEY= 6582bca895fa1221feac6981b993e69cbd76e8c6273221d5 +CT= b67b360ee0ff297d3662f5b7cdb82cb9 +PT= 2d146ed9236082d2d71810969a1ab1fb +TEST= 84 +KEY= 6ac68bb8bbc7f520d3b807589af3644e6a6ef850bd28902e +CT= 2d146ed9236082d2d71810969a1ab1fb +PT= 4b9f55652c40b6da963a98d875adace4 +TEST= 85 +KEY= 180dab1b14a92db29827523db6b3d294fc546088c8853cca +CT= 4b9f55652c40b6da963a98d875adace4 +PT= fc0a8a3d511f5faff0a3dd13b49e5a13 +TEST= 86 +KEY= 7abd7440d5ee5fe2642dd800e7ac8d3b0cf7bd9b7c1b66d9 +CT= fc0a8a3d511f5faff0a3dd13b49e5a13 +PT= 4231c02ad3231c3eb7aeb9135b95ac4b +TEST= 87 +KEY= 54acae182b5fdacf261c182a348f9105bb590488278eca92 +CT= 4231c02ad3231c3eb7aeb9135b95ac4b +PT= 4c3a949acccbb55f9415c81b1413fd9d +TEST= 88 +KEY= 015706f99e81cc026a268cb0f844245a2f4ccc93339d370f +CT= 4c3a949acccbb55f9415c81b1413fd9d +PT= e9b1ceaf77b64a88cc3e020b16e1bf7e +TEST= 89 +KEY= 929bd0a1cc6450e78397421f8ff26ed2e372ce98257c8871 +CT= e9b1ceaf77b64a88cc3e020b16e1bf7e +PT= 98ffea0827068cb0b508ca520d8b43f7 +TEST= 90 +KEY= 9b81ec47d8442d311b68a817a8f4e262567a04ca28f7cb86 +CT= 98ffea0827068cb0b508ca520d8b43f7 +PT= beda572c3ca3fef97f7071da35414ea1 +TEST= 91 +KEY= 93b211b869cbeccba5b2ff3b94571c9b290a75101db68527 +CT= beda572c3ca3fef97f7071da35414ea1 +PT= 35e8cb8302748c8623a09980909fb516 +TEST= 92 +KEY= bc5320e4025eb960905a34b89623901d0aaaec908d293031 +CT= 35e8cb8302748c8623a09980909fb516 +PT= e136148b2fa5af5cd3f8bc3883566cb8 +TEST= 93 +KEY= c4ec937f948d0b5a716c2033b9863f41d95250a80e7f5c89 +CT= e136148b2fa5af5cd3f8bc3883566cb8 +PT= b7ce40e3e3d30191cdf4ab5be98f347a +TEST= 94 +KEY= 6d381856c149d9dcc6a260d05a553ed014a6fbf3e7f068f3 +CT= b7ce40e3e3d30191cdf4ab5be98f347a +PT= a821e934daae37ff3136e769dac315fb +TEST= 95 +KEY= a3679c5957c656de6e8389e480fb092f25901c9a3d337d08 +CT= a821e934daae37ff3136e769dac315fb +PT= 4227b96a0cc6ca1c21bcf8b1adb3bde1 +TEST= 96 +KEY= be7112453b1df3ec2ca4308e8c3dc333042ce42b9080c0e9 +CT= 4227b96a0cc6ca1c21bcf8b1adb3bde1 +PT= ee36bbfddf19165f9e64ae79b4cf06a9 +TEST= 97 +KEY= aea4a2d5cd0a2fc7c2928b735324d56c9a484a52244fc640 +CT= ee36bbfddf19165f9e64ae79b4cf06a9 +PT= c3dfe088c6767bc939f492c1fa9604cd +TEST= 98 +KEY= a16fc5f22f03984f014d6bfb9552aea5a3bcd893ded9c28d +CT= c3dfe088c6767bc939f492c1fa9604cd +PT= db1202e468119d977868f6e294e3cc3a +TEST= 99 +KEY= a4e0565dd419bdd1da5f691ffd433332dbd42e714a3a0eb7 +CT= db1202e468119d977868f6e294e3cc3a +PT= 6f2f682ba4f95eb8c5b883c7660b2653 +TEST= 100 +KEY= 3caee44d0e85058eb570013459ba6d8a1e6cadb62c3128e4 +CT= 6f2f682ba4f95eb8c5b883c7660b2653 +PT= 1036b4aa6c897d36dfe6658a953e5075 +TEST= 101 +KEY= 4e883a500ca89963a546b59e353310bcc18ac83cb90f7891 +CT= 1036b4aa6c897d36dfe6658a953e5075 +PT= 04fcb3a81e5319a16ccf212719906229 +TEST= 102 +KEY= aded5a405c5c095aa1ba06362b60091dad45e91ba09f1ab8 +CT= 04fcb3a81e5319a16ccf212719906229 +PT= cd79bac069bb58605d43005b927816e5 +TEST= 103 +KEY= 5499b441405d16b06cc3bcf642db517df006e94032e70c5d +CT= cd79bac069bb58605d43005b927816e5 +PT= db5b3c625d1f66cf28a86cc100472398 +TEST= 104 +KEY= d31221246382ca8eb79880941fc437b2d8ae858132a02fc5 +CT= db5b3c625d1f66cf28a86cc100472398 +PT= d8732a2c16ec6ae202371af03a6f91e8 +TEST= 105 +KEY= cdf928e97051f08b6febaab809285d50da999f7108cfbe2d +CT= d8732a2c16ec6ae202371af03a6f91e8 +PT= f0a1a353a8ab9a893f621f0bea3b4f01 +TEST= 106 +KEY= 10cc2eed0ecbd1e69f4a09eba183c7d9e5fb807ae2f4f12c +CT= f0a1a353a8ab9a893f621f0bea3b4f01 +PT= 27e4451bd15e43f301e138713dc12e78 +TEST= 107 +KEY= 03c4f5e1fd3d34d1b8ae4cf070dd842ae41ab80bdf35df54 +CT= 27e4451bd15e43f301e138713dc12e78 +PT= c7fa931da414cb37a9bdb6f128e082ee +TEST= 108 +KEY= cc5d7d36d085e3257f54dfedd4c94f1d4da70efaf7d55dba +CT= c7fa931da414cb37a9bdb6f128e082ee +PT= a6777d51a0a1c94dd74a18795341015f +TEST= 109 +KEY= 9f4ee4750ff3f53ad923a2bc746886509aed1683a4945ce5 +CT= a6777d51a0a1c94dd74a18795341015f +PT= 32a4d930a5597e02d7076e399d18d895 +TEST= 110 +KEY= 8525417bb6d8095beb877b8cd131f8524dea78ba398c8470 +CT= 32a4d930a5597e02d7076e399d18d895 +PT= 1b78fcf274eeb1e597998ee4efff9f8b +TEST= 111 +KEY= 54efa98071f1ef62f0ff877ea5df49b7da73f65ed6731bfb +CT= 1b78fcf274eeb1e597998ee4efff9f8b +PT= 2997fee2823cc84da14e8439449f5c7c +TEST= 112 +KEY= 2505931ce4d41d16d968799c27e381fa7b3d726792ec4787 +CT= 2997fee2823cc84da14e8439449f5c7c +PT= 810534a9e8db2808fee681b13c04411d +TEST= 113 +KEY= c2df863beb4f27ab586d4d35cf38a9f285dbf3d6aee8069a +CT= 810534a9e8db2808fee681b13c04411d +PT= be2380994365f1d7fc8278e86c8b497d +TEST= 114 +KEY= 036c0c95d0c26b66e64ecdac8c5d582579598b3ec2634fe7 +CT= be2380994365f1d7fc8278e86c8b497d +PT= efec3977d5a21dc4ac786e786ca3ece9 +TEST= 115 +KEY= bd05ad63a0a9f1b509a2f4db59ff45e1d521e546aec0a30e +CT= efec3977d5a21dc4ac786e786ca3ece9 +PT= 22a7280d8231895ea4f0b6a39ac583c3 +TEST= 116 +KEY= a16dfa00981597b42b05dcd6dbceccbf71d153e5340520cd +CT= 22a7280d8231895ea4f0b6a39ac583c3 +PT= 0cc61e91b3cbcd0e190d52059e27647a +TEST= 117 +KEY= abc1ad453235832727c3c247680501b168dc01e0aa2244b7 +CT= 0cc61e91b3cbcd0e190d52059e27647a +PT= 5ce91f77f7c8f0ab1bba802d2fff0e9b +TEST= 118 +KEY= 64d40aca0f526ec67b2add309fcdf11a736681cd85dd4a2c +CT= 5ce91f77f7c8f0ab1bba802d2fff0e9b +PT= 255459be5a27e08942a049f6ec44582e +TEST= 119 +KEY= 8bb5c7d8b2b177855e7e848ec5ea119331c6c83b69991202 +CT= 255459be5a27e08942a049f6ec44582e +PT= 28e2e20115c3665d9d88cb74681301ea +TEST= 120 +KEY= 4e30fcc4c182f471769c668fd02977ceac4e034f018a13e8 +CT= 28e2e20115c3665d9d88cb74681301ea +PT= 2e96e6bbcd999f4b1507c7ec9e4b8430 +TEST= 121 +KEY= 906b361e9d72e107580a80341db0e885b949c4a39fc197d8 +CT= 2e96e6bbcd999f4b1507c7ec9e4b8430 +PT= 03ded0a95164e5fa215e9c49c433e95b +TEST= 122 +KEY= f656f5d9d973c02c5bd4509d4cd40d7f981758ea5bf27e83 +CT= 03ded0a95164e5fa215e9c49c433e95b +PT= ad9c16d2567b73fca4866fe16cf09cda +TEST= 123 +KEY= 8811a4acdf37a140f648464f1aaf7e833c91370b3702e259 +CT= ad9c16d2567b73fca4866fe16cf09cda +PT= 68539bff0f8cc23a0a3267796a11b75c +TEST= 124 +KEY= e5af2e8cdbad01589e1bddb01523bcb936a350725d135505 +CT= 68539bff0f8cc23a0a3267796a11b75c +PT= b15f623e5a7d73452a419eb04afcf72e +TEST= 125 +KEY= c9e743cad731a62e2f44bf8e4f5ecffc1ce2cec217efa22b +CT= b15f623e5a7d73452a419eb04afcf72e +PT= 520142afda69e9cfa98d8dd59ccb12bc +TEST= 126 +KEY= 6cf6c656ffbb77807d45fd2195372633b56f43178b24b097 +CT= 520142afda69e9cfa98d8dd59ccb12bc +PT= 7ec2a8430f23a5e183e0032dab5232c5 +TEST= 127 +KEY= 772cee9f934d57d4038755629a1483d2368f403a20768252 +CT= 7ec2a8430f23a5e183e0032dab5232c5 +PT= e5e3a5d968b1ff774b55cca06be3bd65 +TEST= 128 +KEY= 9a4dab93f3c74ebbe664f0bbf2a57ca57dda8c9a4b953f37 +CT= e5e3a5d968b1ff774b55cca06be3bd65 +PT= 9608643d0a34da28372a7e7e34427e1b +TEST= 129 +KEY= ef0f60bcba3374e0706c9486f891a68d4af0f2e47fd7412c +CT= 9608643d0a34da28372a7e7e34427e1b +PT= b22bd410584f29610801b18edab1bd19 +TEST= 130 +KEY= de013a6c3440aff3c2474096a0de8fec42f1436aa566fc35 +CT= b22bd410584f29610801b18edab1bd19 +PT= adec4519f1a7ad74bccecabedcf20d73 +TEST= 131 +KEY= 2b5b547a934a5a376fab058f51792298fe3f89d47994f146 +CT= adec4519f1a7ad74bccecabedcf20d73 +PT= e04d4ff54191beeef5b295a32da2ade5 +TEST= 132 +KEY= bf356f2ffc2c538f8fe64a7a10e89c760b8d1c7754365ca3 +CT= e04d4ff54191beeef5b295a32da2ade5 +PT= 3f9531edd5072f7a9f2a62ecc2cce50a +TEST= 133 +KEY= 7cebd7310cc4791ab0737b97c5efb30c94a77e9b96fab9a9 +CT= 3f9531edd5072f7a9f2a62ecc2cce50a +PT= c3dc95781fae7bb6c02bd08b3617ddf1 +TEST= 134 +KEY= 192741d2ab9c887673afeeefda41c8ba548cae10a0ed6458 +CT= c3dc95781fae7bb6c02bd08b3617ddf1 +PT= f69b837f168b9a9e637e7357b65f2b60 +TEST= 135 +KEY= 38552740a79fb5bf85346d90ccca522437f2dd4716b24f38 +CT= f69b837f168b9a9e637e7357b65f2b60 +PT= 40dcdf58e7efdd62c114a83f8ac898bb +TEST= 136 +KEY= a0aed2c07c2168b6c5e8b2c82b258f46f6e675789c7ad783 +CT= 40dcdf58e7efdd62c114a83f8ac898bb +PT= 27f78f3bd8e04a8646ebf364155a71ed +TEST= 137 +KEY= 2b4faebf17993e12e21f3df3f3c5c5c0b00d861c8920a66e +CT= 27f78f3bd8e04a8646ebf364155a71ed +PT= f305dfc8ead44e786f59b0551c7104f5 +TEST= 138 +KEY= 96819f6e9738209f111ae23b19118bb8df5436499551a29b +CT= f305dfc8ead44e786f59b0551c7104f5 +PT= 2e47f833be7c06ed1e42ac11366f4bef +TEST= 139 +KEY= aaea16bac3e84dd73f5d1a08a76d8d55c1169a58a33ee974 +CT= 2e47f833be7c06ed1e42ac11366f4bef +PT= a9d3a511c3d76779b607aab2556823ad +TEST= 140 +KEY= f66ba47c56ac5a36968ebf1964baea2c771130eaf656cad9 +CT= a9d3a511c3d76779b607aab2556823ad +PT= 153a7cc2387c05289f759c85076cdd88 +TEST= 141 +KEY= 1d892bccfaf3da1083b4c3db5cc6ef04e864ac6ff13a1751 +CT= 153a7cc2387c05289f759c85076cdd88 +PT= 76b6089030d914f0f4c6078193207a7d +TEST= 142 +KEY= daebaf980095a397f502cb4b6c1ffbf41ca2abee621a6d2c +CT= 76b6089030d914f0f4c6078193207a7d +PT= eb71d127848ba397451d45801830461e +TEST= 143 +KEY= 85f86fada92076ab1e731a6ce894586359bfee6e7a2a2b32 +CT= eb71d127848ba397451d45801830461e +PT= b79d9be1b2db808b412413c203c710df +TEST= 144 +KEY= beadda5ce1e7f3d4a9ee818d5a4fd8e8189bfdac79ed3bed +CT= b79d9be1b2db808b412413c203c710df +PT= e6423467c3ca69d94c944fa2a97bb61f +TEST= 145 +KEY= d4664c8dcfa8304d4facb5ea9985b131540fb20ed0968df2 +CT= e6423467c3ca69d94c944fa2a97bb61f +PT= 18eff53b7d62a9d9ed8ab9abe67fc110 +TEST= 146 +KEY= 9ccf1eeaf55fea5a574340d1e4e718e8b9850ba536e94ce2 +CT= 18eff53b7d62a9d9ed8ab9abe67fc110 +PT= 8e6a4ac577153d806ed71a07319cab67 +TEST= 147 +KEY= 7d840184cb9d3a05d9290a1493f22568d75211a20775e785 +CT= 8e6a4ac577153d806ed71a07319cab67 +PT= b7b23d8e7d344f39b3ea0d67ccf37377 +TEST= 148 +KEY= d72f35b6dd825b656e9b379aeec66a5164b81cc5cb8694f2 +CT= b7b23d8e7d344f39b3ea0d67ccf37377 +PT= 3385ad0503af68bfbfbeaa89b1c87736 +TEST= 149 +KEY= 48335f06d7c27c955d1e9a9fed6902eedb06b64c7a4ee3c4 +CT= 3385ad0503af68bfbfbeaa89b1c87736 +PT= 9fc40a6b984beec182ab650b05cef38c +TEST= 150 +KEY= a66149286535fd6ec2da90f47522ec2f59add3477f801048 +CT= 9fc40a6b984beec182ab650b05cef38c +PT= 4cec52c9de143486dfc9d098637dfbb5 +TEST= 151 +KEY= 7ea78450faeef8bf8e36c23dab36d8a9866403df1cfdebfd +CT= 4cec52c9de143486dfc9d098637dfbb5 +PT= eb8e40333acd18efb04dc0a857ddcd7a +TEST= 152 +KEY= 197ddf842baef36e65b8820e91fbc0463629c3774b202687 +CT= eb8e40333acd18efb04dc0a857ddcd7a +PT= f1aff04058f819b0f191398c8022130f +TEST= 153 +KEY= d68841cf848b0f619417724ec903d9f6c7b8fafbcb023588 +CT= f1aff04058f819b0f191398c8022130f +PT= 6df4a95d8d602c0e53f5a5c350d3eb64 +TEST= 154 +KEY= 6dfa0f7b01a2f011f9e3db134463f5f8944d5f389bd1deec +CT= 6df4a95d8d602c0e53f5a5c350d3eb64 +PT= 057d8f9be9260bb3a0382cd2ef7d1fca +TEST= 155 +KEY= 88227c4ad1cbc8f0fc9e5488ad45fe4b347573ea74acc126 +CT= 057d8f9be9260bb3a0382cd2ef7d1fca +PT= d4edaccb9b7b35f2a0690e22c91e25ae +TEST= 156 +KEY= 848b8e3213d366b22873f843363ecbb9941c7dc8bdb2e488 +CT= d4edaccb9b7b35f2a0690e22c91e25ae +PT= a2f61b5bdd9f580b26c329b878bafa3c +TEST= 157 +KEY= fa3a476d1c6e33fd8a85e318eba193b2b2df5470c5081eb4 +CT= a2f61b5bdd9f580b26c329b878bafa3c +PT= 5a0616880cd40b72b58cf268ec8f934b +TEST= 158 +KEY= c9f77d58f58d5fedd083f590e77598c00753a61829878dff +CT= 5a0616880cd40b72b58cf268ec8f934b +PT= 0e42047d7ede2a5fbb37767a69a45b9b +TEST= 159 +KEY= 00a523c700fbb663dec1f1ed99abb29fbc64d0624023d664 +CT= 0e42047d7ede2a5fbb37767a69a45b9b +PT= 2afa823a10bb436a7b00816c80a52711 +TEST= 160 +KEY= 660275323a59e807f43b73d78910f1f5c764510ec086f175 +CT= 2afa823a10bb436a7b00816c80a52711 +PT= b2406f3f9160e25df7c9aa81af6eb449 +TEST= 161 +KEY= 47a4fcdb97d4a383467b1ce8187013a830adfb8f6fe8453c +CT= b2406f3f9160e25df7c9aa81af6eb449 +PT= b1e01d2a401495f8ddaeab7b04beb23d +TEST= 162 +KEY= 2bdd5b54d4eb236af79b01c258648650ed0350f46b56f701 +CT= b1e01d2a401495f8ddaeab7b04beb23d +PT= 390572a9ece28a0e0bbdc729dbe5f79a +TEST= 163 +KEY= 328202460b65d004ce9e736bb4860c5ee6be97ddb0b3009b +CT= 390572a9ece28a0e0bbdc729dbe5f79a +PT= 5d41665811702124c597db4e3bd950e1 +TEST= 164 +KEY= 94457c0a759df4e993df1533a5f62d7a23294c938b6a507a +CT= 5d41665811702124c597db4e3bd950e1 +PT= 689eb1cb1586d127696e8725dee49e58 +TEST= 165 +KEY= 4e0226ca850ddc79fb41a4f8b070fc5d4a47cbb6558ece22 +CT= 689eb1cb1586d127696e8725dee49e58 +PT= a2d9df62ac8bf8a93e7a954416864052 +TEST= 166 +KEY= 659c817a1c10a24d59987b9a1cfb04f4743d5ef243088e70 +CT= a2d9df62ac8bf8a93e7a954416864052 +PT= 507835696f1920bd4a05797563df5769 +TEST= 167 +KEY= 92192d9175187fb409e04ef373e224493e38278720d7d919 +CT= 507835696f1920bd4a05797563df5769 +PT= 2070413f5103482b6c83129304e5ac87 +TEST= 168 +KEY= 6959063fba59ccec29900fcc22e16c6252bb35142432759e +CT= 2070413f5103482b6c83129304e5ac87 +PT= bf7fd1e21b41b1f1c2625c1097f1bcb8 +TEST= 169 +KEY= 5722993710d811b196efde2e39a0dd9390d96904b3c3c926 +CT= bf7fd1e21b41b1f1c2625c1097f1bcb8 +PT= 6e2236654f2999545f50fa9cf63f9f2e +TEST= 170 +KEY= 038fa98e7a226a9ff8cde84b768944c7cf89939845fc5608 +CT= 6e2236654f2999545f50fa9cf63f9f2e +PT= 3f370291cedcb115c8ee409a8eeb46d6 +TEST= 171 +KEY= cacf0199725d5466c7faeadab855f5d20767d302cb1710de +CT= 3f370291cedcb115c8ee409a8eeb46d6 +PT= 84023db96d373ec8315ae78a3b7e82fb +TEST= 172 +KEY= 7b40321cb11520d143f8d763d562cb1a363d3488f0699225 +CT= 84023db96d373ec8315ae78a3b7e82fb +PT= c35064d82a3016fe2c2e2cc0627e7b5c +TEST= 173 +KEY= f045cfec2a6bc7e580a8b3bbff52dde41a1318489217e979 +CT= c35064d82a3016fe2c2e2cc0627e7b5c +PT= d78dffe87c0f95856c31a07bada23084 +TEST= 174 +KEY= 86b3ca5f50cef6c557254c53835d48617622b8333fb5d9fd +CT= d78dffe87c0f95856c31a07bada23084 +PT= 5b5b5d3ca5c6e5cf18f3e4ee802be82b +TEST= 175 +KEY= e6d99dc0c58655b70c7e116f269badae6ed15cddbf9e31d6 +CT= 5b5b5d3ca5c6e5cf18f3e4ee802be82b +PT= db65a82f6eb7a410a367165900e85117 +TEST= 176 +KEY= b8f770cfbe47d070d71bb940482c09becdb64a84bf7660c1 +CT= db65a82f6eb7a410a367165900e85117 +PT= fe8be8484d925043102238ff63fdac57 +TEST= 177 +KEY= ff09adb06fe587192990510805be59fddd94727bdc8bcc96 +CT= fe8be8484d925043102238ff63fdac57 +PT= ac36e01a7ad482a8d89703d2a6528720 +TEST= 178 +KEY= b5c937a4019cdad185a6b1127f6adb55050371a97ad94bb6 +CT= ac36e01a7ad482a8d89703d2a6528720 +PT= 9f3698ce06c6497c89b58ca723f7ecaa +TEST= 179 +KEY= f60caf8fb99b63b21a9029dc79ac92298cb6fd0e592ea71c +CT= 9f3698ce06c6497c89b58ca723f7ecaa +PT= fb8ce2e1d332fe4557b6c5cf1676f2fb +TEST= 180 +KEY= b7cf2babd58b5fdce11ccb3daa9e6c6cdb0038c14f5855e7 +CT= fb8ce2e1d332fe4557b6c5cf1676f2fb +PT= a2631f612698318ad454e9db10319da6 +TEST= 181 +KEY= fd99b4137cafc47f437fd45c8c065de60f54d11a5f69c841 +CT= a2631f612698318ad454e9db10319da6 +PT= fca42b332b5974ee6dfa54b54ec89ac7 +TEST= 182 +KEY= 271ceef189ad367dbfdbff6fa75f290862ae85af11a15286 +CT= fca42b332b5974ee6dfa54b54ec89ac7 +PT= a70dbbdfce54b8648c3fc4a8a58ccdf8 +TEST= 183 +KEY= 7b78f7ecc9b28ec718d644b0690b916cee914107b42d9f7e +CT= a70dbbdfce54b8648c3fc4a8a58ccdf8 +PT= c90ce914f9310f9c3ee065dd95281a51 +TEST= 184 +KEY= 762f521adf6c5f24d1daada4903a9ef0d07124da2105852f +CT= c90ce914f9310f9c3ee065dd95281a51 +PT= 63e8430ce22f531e4a4d4583533f6fc4 +TEST= 185 +KEY= a88a493eb3c28c49b232eea87215cdee9a3c6159723aeaeb +CT= 63e8430ce22f531e4a4d4583533f6fc4 +PT= e7562dc647910a052f4afbf165a68a3a +TEST= 186 +KEY= 1c97343a60ee05035564c36e3584c7ebb5769aa8179c60d1 +CT= e7562dc647910a052f4afbf165a68a3a +PT= 3e070b3f65fd01b49849513b556db199 +TEST= 187 +KEY= c5110692100a332e6b63c8515079c65f2d3fcb9342f1d148 +CT= 3e070b3f65fd01b49849513b556db199 +PT= 3de5a45b2caa4fafac3032f89f15195d +TEST= 188 +KEY= d94d8caa9ebd67f056866c0a7cd389f0810ff96bdde4c815 +CT= 3de5a45b2caa4fafac3032f89f15195d +PT= a36a163e8806b1e053ebe439b0d1302f +TEST= 189 +KEY= 1c1d7a3e9358048cf5ec7a34f4d53810d2e41d526d35f83a +CT= a36a163e8806b1e053ebe439b0d1302f +PT= 67ca4b988ccaba4e4dbee6c387562762 +TEST= 190 +KEY= 9182e40d14973087922631ac781f825e9f5afb91ea63df58 +CT= 67ca4b988ccaba4e4dbee6c387562762 +PT= 9f404f0e1a9fe5a988ce6e4a54fe9e23 +TEST= 191 +KEY= 7d89ecfc0dcffe0a0d667ea2628067f7179495dbbe9d417b +CT= 9f404f0e1a9fe5a988ce6e4a54fe9e23 +PT= d71efd794457c71614e4266c77193444 +TEST= 192 +KEY= ac7a11d29cda0fb6da7883db26d7a0e10370b3b7c984753f +CT= d71efd794457c71614e4266c77193444 +PT= 185dbf418a6834cd118b16eaf381f3cb +TEST= 193 +KEY= 1029d5fa3d38927ec2253c9aacbf942c12fba55d3a0586f4 +CT= 185dbf418a6834cd118b16eaf381f3cb +PT= 737a502dee68ddfa3feecd42ace124ea +TEST= 194 +KEY= f261b484c642750cb15f6cb742d749d62d15681f96e4a21e +CT= 737a502dee68ddfa3feecd42ace124ea +PT= fd11b0f356455913e892928b5b16946b +TEST= 195 +KEY= bccfaf05ff47a5ec4c4edc44149210c5c587fa94cdf23675 +CT= fd11b0f356455913e892928b5b16946b +PT= 4b06f6d6d149baf25d4c76e46eff8571 +TEST= 196 +KEY= 1000a15983b73d6807482a92c5dbaa3798cb8c70a30db304 +CT= 4b06f6d6d149baf25d4c76e46eff8571 +PT= 450713da24492403c48cb16d2f39744e +TEST= 197 +KEY= 306f097e64b634ac424f3948e1928e345c473d1d8c34c74a +CT= 450713da24492403c48cb16d2f39744e +PT= 998ca5e3c80b66eb11ead376fa358a92 +TEST= 198 +KEY= 13965208c3ef77e1dbc39cab2999e8df4dadee6b76014dd8 +CT= 998ca5e3c80b66eb11ead376fa358a92 +PT= f54a34f6f0833ca808d60a8f75bb0585 +TEST= 199 +KEY= 1a6dc3fdd0d1f97c2e89a85dd91ad477457be4e403ba485d +CT= f54a34f6f0833ca808d60a8f75bb0585 +PT= 8760d5cbd1da48807baeaf7f781680f2 +TEST= 200 +KEY= 228897b4e2f16967a9e97d9608c09cf73ed54b9b7bacc8af +CT= 8760d5cbd1da48807baeaf7f781680f2 +PT= ef57df7161e1bc0f7b466a50c576691a +TEST= 201 +KEY= d0e8190e72a305c946bea2e7692120f8459321cbbedaa1b5 +CT= ef57df7161e1bc0f7b466a50c576691a +PT= e01eca338a93ea38e43b2f364314c121 +TEST= 202 +KEY= 087f0486b80659f0a6a068d4e3b2cac0a1a80efdfdce6094 +CT= e01eca338a93ea38e43b2f364314c121 +PT= a7683273638d02272ff6a311bb94256f +TEST= 203 +KEY= 1d807e4730dda3eb01c85aa7803fc8e78e5eadec465a45fb +CT= a7683273638d02272ff6a311bb94256f +PT= 1bcc3df6b07bd2615c13e381f5f877c3 +TEST= 204 +KEY= d4d4f2780d52d7521a04675130441a86d24d4e6db3a23238 +CT= 1bcc3df6b07bd2615c13e381f5f877c3 +PT= d1b3b793d1377e82a2de5d46e53791fb +TEST= 205 +KEY= 86d08d85652db662cbb7d0c2e17364047093132b5695a3c3 +CT= d1b3b793d1377e82a2de5d46e53791fb +PT= 9ac7af9b82621e18e4ff613eaa609f46 +TEST= 206 +KEY= c03996907ac99a7a51707f5963117a1c946c7215fcf53c85 +CT= 9ac7af9b82621e18e4ff613eaa609f46 +PT= 57f3fa35a42c29f33dec4671140264a4 +TEST= 207 +KEY= f8ca52d95c587ef80683856cc73d53efa9803464e8f75821 +CT= 57f3fa35a42c29f33dec4671140264a4 +PT= a887ed8bf6c19f5012f317a4fcf3d7bf +TEST= 208 +KEY= de99cc8f9756c1dcae0468e731fcccbfbb7323c014048f9e +CT= a887ed8bf6c19f5012f317a4fcf3d7bf +PT= a29c8d764bcf211c789158a9b8eb330c +TEST= 209 +KEY= 9228db1b61e0d8670c98e5917a33eda3c3e27b69acefbc92 +CT= a29c8d764bcf211c789158a9b8eb330c +PT= eb6afd9b36315db322ec8c4243043f50 +TEST= 210 +KEY= 24afe14097c2a217e7f2180a4c02b010e10ef72befeb83c2 +CT= eb6afd9b36315db322ec8c4243043f50 +PT= 05c8ac90ccd00e2a3809c68c11d6d65a +TEST= 211 +KEY= 32810943f9313bd0e23ab49a80d2be3ad90731a7fe3d5598 +CT= 05c8ac90ccd00e2a3809c68c11d6d65a +PT= e39991b58c52154166ad09367b04c67a +TEST= 212 +KEY= fbec72a177254ea501a3252f0c80ab7bbfaa3891853993e2 +CT= e39991b58c52154166ad09367b04c67a +PT= cbc8974f72f77a1821fc69b29fe2db60 +TEST= 213 +KEY= c706d206de538439ca6bb2607e77d1639e5651231adb4882 +CT= cbc8974f72f77a1821fc69b29fe2db60 +PT= 1d08f4e2b8dfed1032b6ca5211b3e34c +TEST= 214 +KEY= 9a7eb0a4f8e67f87d7634682c6a83c73ace09b710b68abce +CT= 1d08f4e2b8dfed1032b6ca5211b3e34c +PT= 1888cec22449eff96bdc2c7a242bbbdc +TEST= 215 +KEY= 70ca2cad6a50d22bcfeb8840e2e1d38ac73cb70b2f431012 +CT= 1888cec22449eff96bdc2c7a242bbbdc +PT= 032e6155677b6a72d7f94c7a9a9aa53f +TEST= 216 +KEY= b16697fea247cdb9ccc5e915859ab9f810c5fb71b5d9b52d +CT= 032e6155677b6a72d7f94c7a9a9aa53f +PT= 9b43bbd1c0cebf7593e9bc0abb626e96 +TEST= 217 +KEY= 7a3e844beb897a63578652c44554068d832c477b0ebbdbbb +CT= 9b43bbd1c0cebf7593e9bc0abb626e96 +PT= 8d661e03c61c28d5786ebcebe0d5b63d +TEST= 218 +KEY= e7a1b96efc4d5fb5dae04cc783482e58fb42fb90ee6e6d86 +CT= 8d661e03c61c28d5786ebcebe0d5b63d +PT= f61d5dcbf8f2f3f0eab387149790e079 +TEST= 219 +KEY= 0eda761c06fba0a02cfd110c7bbadda811f17c8479fe8dff +CT= f61d5dcbf8f2f3f0eab387149790e079 +PT= 1f03e0957b6892533bbeab06eb35ad4f +TEST= 220 +KEY= e242ad5b7141916133fef19900d24ffb2a4fd78292cb20b0 +CT= 1f03e0957b6892533bbeab06eb35ad4f +PT= bb9e7343035f88764b229d506e7adc7b +TEST= 221 +KEY= d901a6cf874a6a77886082da038dc78d616d4ad2fcb1fccb +CT= bb9e7343035f88764b229d506e7adc7b +PT= 3934ebf7ad2243c0d09734e30b41c0e4 +TEST= 222 +KEY= 0f488e86e7d92f29b154692daeaf844db1fa7e31f7f03c2f +CT= 3934ebf7ad2243c0d09734e30b41c0e4 +PT= b9ce1a1a9595e7235f5b10fba29accd2 +TEST= 223 +KEY= a7e2cf991692247a089a73373b3a636eeea16eca556af0fd +CT= b9ce1a1a9595e7235f5b10fba29accd2 +PT= 624eba65ee9e3e1bdf8c5aa7e1283a65 +TEST= 224 +KEY= 1de03e09395e56ce6ad4c952d5a45d75312d346db442ca98 +CT= 624eba65ee9e3e1bdf8c5aa7e1283a65 +PT= 375132e5f47da19e80cc8652be5a3692 +TEST= 225 +KEY= 51b6813629efe53c5d85fbb721d9fcebb1e1b23f0a18fc0a +CT= 375132e5f47da19e80cc8652be5a3692 +PT= 8165a4126fe75efc6aff7bfd732f94a6 +TEST= 226 +KEY= 8dd50dff93624339dce05fa54e3ea217db1ec9c2793768ac +CT= 8165a4126fe75efc6aff7bfd732f94a6 +PT= 35012fabd289e6b7fb07946591d18f0d +TEST= 227 +KEY= c7a4f75cb74c7f3de9e1700e9cb744a020195da7e8e6e7a1 +CT= 35012fabd289e6b7fb07946591d18f0d +PT= c26f37d700677ed72f4fc2c8f6aeade2 +TEST= 228 +KEY= 198b572cd0e711352b8e47d99cd03a770f569f6f1e484a43 +CT= c26f37d700677ed72f4fc2c8f6aeade2 +PT= cb29ece41596736b72aed2460aeefba2 +TEST= 229 +KEY= 0a1fb41ca720e357e0a7ab3d8946491c7df84d2914a6b1e1 +CT= cb29ece41596736b72aed2460aeefba2 +PT= 7f7bd6faf9c37d5522a3bf480ccebf20 +TEST= 230 +KEY= 7e383601899dea729fdc7dc7708534495f5bf26118680ec1 +CT= 7f7bd6faf9c37d5522a3bf480ccebf20 +PT= c501e371005df57e0037f41a744d026f +TEST= 231 +KEY= 13acf410865b41e15add9eb670d8c1375f6c067b6c250cae +CT= c501e371005df57e0037f41a744d026f +PT= 624ef8749580108cdc7a020179f81d0f +TEST= 232 +KEY= 75f025072aa2406f389366c2e558d1bb8316047a15dd11a1 +CT= 624ef8749580108cdc7a020179f81d0f +PT= 40d72550603522c67180de6ec3d30139 +TEST= 233 +KEY= c5ed76f88ea65c3d78444392856df37df296da14d60e1098 +CT= 40d72550603522c67180de6ec3d30139 +PT= 96c6f647afb90f804431f9e2f1780f29 +TEST= 234 +KEY= e827dff88d0b1a43ee82b5d52ad4fcfdb6a723f627761fb1 +CT= 96c6f647afb90f804431f9e2f1780f29 +PT= ccb934a501ddad11e994938a214eb189 +TEST= 235 +KEY= f0777d1bff12ee42223b81702b0951ec5f33b07c0638ae38 +CT= ccb934a501ddad11e994938a214eb189 +PT= 07825f2d35e761c76893b697e30e4d08 +TEST= 236 +KEY= 6912b59c06c90d3725b9de5d1eee302b37a006ebe536e330 +CT= 07825f2d35e761c76893b697e30e4d08 +PT= 1f674e97f88eb1da1dd24c0ab4321258 +TEST= 237 +KEY= ae24933526fae5f83ade90cae66081f12a724ae15104f168 +CT= 1f674e97f88eb1da1dd24c0ab4321258 +PT= b6de499ebe0b3c30f1dac8e40fe9f10c +TEST= 238 +KEY= f348f88852cf356c8c00d954586bbdc1dba882055eed0064 +CT= b6de499ebe0b3c30f1dac8e40fe9f10c +PT= 105e31dbde33764b098862af6d0b6cd2 +TEST= 239 +KEY= 83b06cc00a17d3149c5ee88f8658cb8ad220e0aa33e66cb6 +CT= 105e31dbde33764b098862af6d0b6cd2 +PT= 697d6537677b20c188246fbf4997c7cb +TEST= 240 +KEY= a5381a9c91d61a01f5238db8e123eb4b5a048f157a71ab7d +CT= 697d6537677b20c188246fbf4997c7cb +PT= 4fbfb0efba92c1e0189e2c3097aa35ba +TEST= 241 +KEY= fdf831a7d1345afeba9c3d575bb12aab429aa325eddb9ec7 +CT= 4fbfb0efba92c1e0189e2c3097aa35ba +PT= 600288531dceb99b69a7890ce804fa9f +TEST= 242 +KEY= a10ed54e7b2b2b2bda9eb504467f93302b3d2a2905df6458 +CT= 600288531dceb99b69a7890ce804fa9f +PT= ee94d4376d9332c8dcd05c695edb124f +TEST= 243 +KEY= 2f69f01250d7745f340a61332beca1f8f7ed76405b047617 +CT= ee94d4376d9332c8dcd05c695edb124f +PT= 7edc3182c36dc5a172b170a919524888 +TEST= 244 +KEY= fcd5f8fab347624e4ad650b1e8816459855c06e942563e9f +CT= 7edc3182c36dc5a172b170a919524888 +PT= 95fa03c96dfcb9abcff23b5abfbabcde +TEST= 245 +KEY= a9307e62197a747edf2c5378857dddf24aae3db3fdec8241 +CT= 95fa03c96dfcb9abcff23b5abfbabcde +PT= 6ce2c6cfc61667965c20b0be11b55dde +TEST= 246 +KEY= da3b03896ddfde08b3ce95b7436bba64168e8d0dec59df9f +CT= 6ce2c6cfc61667965c20b0be11b55dde +PT= 3dbdfbe63a6fae7572c778108a62a27c +TEST= 247 +KEY= 7d766bad6e536ce38e736e51790414116449f51d663b7de3 +CT= 3dbdfbe63a6fae7572c778108a62a27c +PT= 1c197d3449fed6ed6924e14b43a17bf0 +TEST= 248 +KEY= 36f69c30b0272cab926a136530fac2fc0d6d1456259a0613 +CT= 1c197d3449fed6ed6924e14b43a17bf0 +PT= 0b0ccc6f508c18168284f7976ad81bee +TEST= 249 +KEY= 632661c312b2eb5d9966df0a6076daea8fe9e3c14f421dfd +CT= 0b0ccc6f508c18168284f7976ad81bee +PT= f437b8fd92ce37d8d74550c5be29bf99 +TEST= 250 +KEY= 5fb1bdfc29efe2da6d5167f7f2b8ed3258acb304f16ba264 +CT= f437b8fd92ce37d8d74550c5be29bf99 +PT= 78f6e6f6480a04f5632ea112170f928c +TEST= 251 +KEY= 2b24c5188f4a2e7b15a78101bab2e9c73b821216e66430e8 +CT= 78f6e6f6480a04f5632ea112170f928c +PT= 2fd38831ee4d09dd8db9a84b5825b528 +TEST= 252 +KEY= f816fb720a08828c3a74093054ffe01ab63bba5dbe4185c0 +CT= 2fd38831ee4d09dd8db9a84b5825b528 +PT= ed307697b51cfad7052a3a7b3a564990 +TEST= 253 +KEY= 776b08f4778fab96d7447fa7e1e31acdb31180268417cc50 +CT= ed307697b51cfad7052a3a7b3a564990 +PT= db9952a98f0d4b045c624efa5619caf9 +TEST= 254 +KEY= c7a944c9ba2d5f740cdd2d0e6eee51c9ef73cedcd20e06a9 +CT= db9952a98f0d4b045c624efa5619caf9 +PT= dada40bf0e367af50874bb2628251aa3 +TEST= 255 +KEY= 69b8688d9c1ecd95d6076db160d82b3ce70775fafa2b1c0a +CT= dada40bf0e367af50874bb2628251aa3 +PT= 35dfa85d3f2d7f47dd7865ea0bc73a5c +TEST= 256 +KEY= 7e6c7e90ede36f44e3d8c5ec5ff5547b3a7f1010f1ec2656 +CT= 35dfa85d3f2d7f47dd7865ea0bc73a5c +PT= ee0231f994c2db6c7c04746170f03e54 +TEST= 257 +KEY= 0e56c8fd184ab5d40ddaf415cb378f17467b6471811c1802 +CT= ee0231f994c2db6c7c04746170f03e54 +PT= d9f314fead11122ce8f532ed0c0b129c +TEST= 258 +KEY= 267bc5325796002bd429e0eb66269d3bae8e569c8d170a9e +CT= d9f314fead11122ce8f532ed0c0b129c +PT= 74a32bdff53a59f09aafb328977e05b1 +TEST= 259 +KEY= 889b6087caad1b43a08acb34931cc4cb3421e5b41a690f2f +CT= 74a32bdff53a59f09aafb328977e05b1 +PT= d4ccc3077c15ee470d5efcf815a48410 +TEST= 260 +KEY= f9ae78d077e3f98574460833ef092a8c397f194c0fcd8b3f +CT= d4ccc3077c15ee470d5efcf815a48410 +PT= 29284b0e7776dfb8bb536b3c16399d62 +TEST= 261 +KEY= 71bbcd4b1f4b04265d6e433d987ff534822c727019f4165d +CT= 29284b0e7776dfb8bb536b3c16399d62 +PT= 202326cead57a5c13592ffbffd5bf508 +TEST= 262 +KEY= f6f461c7931cf0317d4d65f3352850f5b7be8dcfe4afe355 +CT= 202326cead57a5c13592ffbffd5bf508 +PT= b9afad0658e1a4a1eecaa25b2863ad53 +TEST= 263 +KEY= bc0d82d3b7909d54c4e2c8f56dc9f45459742f94cccc4e06 +CT= b9afad0658e1a4a1eecaa25b2863ad53 +PT= de7ac7f7381dd34f3148911f306f4161 +TEST= 264 +KEY= 339ffe2e01ab1d621a980f0255d4271b683cbe8bfca30f67 +CT= de7ac7f7381dd34f3148911f306f4161 +PT= f197de9fed1ea08f6c17e631bf5449fe +TEST= 265 +KEY= ec908f9a4f266644eb0fd19db8ca8794042b58ba43f74699 +CT= f197de9fed1ea08f6c17e631bf5449fe +PT= 7e1416c06ed3f56782db5cb536b9b56e +TEST= 266 +KEY= cfe36cccc94f8a5b951bc75dd61972f386f0040f754ef3f7 +CT= 7e1416c06ed3f56782db5cb536b9b56e +PT= be1fe1f7b4cff55d15bbcb6d9313729d +TEST= 267 +KEY= 90690906407fb8ac2b0426aa62d687ae934bcf62e65d816a +CT= be1fe1f7b4cff55d15bbcb6d9313729d +PT= 50e6818c06583d3d1c99c4a127d118cf +TEST= 268 +KEY= 5d2a712578ec47217be2a726648eba938fd20bc3c18c99a5 +CT= 50e6818c06583d3d1c99c4a127d118cf +PT= e1bfd3ed18e9a6d7bf383d590da23b59 +TEST= 269 +KEY= 3ca141ee57d7e0fc9a5d74cb7c671c4430ea369acc2ea2fc +CT= e1bfd3ed18e9a6d7bf383d590da23b59 +PT= 03961127347c141c01f5276cb9bb31f7 +TEST= 270 +KEY= 65e9b8ae22dc52a599cb65ec481b0858311f11f67595930b +CT= 03961127347c141c01f5276cb9bb31f7 +PT= e9a8336dc0b530a86988b2de74edffa1 +TEST= 271 +KEY= 870a30e0f3b836fa7063568188ae38f05897a32801786caa +CT= e9a8336dc0b530a86988b2de74edffa1 +PT= b5fa5e388cfffe2ba33436cc39a73972 +TEST= 272 +KEY= 4b81e55c765f570cc59908b90451c6dbfba395e438df55d8 +CT= b5fa5e388cfffe2ba33436cc39a73972 +PT= cef4896bbc86f1e02312479c40d96dae +TEST= 273 +KEY= 0fab0dcfb6e3e7940b6d81d2b8d7373bd8b1d27878063876 +CT= cef4896bbc86f1e02312479c40d96dae +PT= f195f5321fcaa68b0b0cba83978a8084 +TEST= 274 +KEY= f860076d3847a80bfaf874e0a71d91b0d3bd68fbef8cb8f2 +CT= f195f5321fcaa68b0b0cba83978a8084 +PT= 861575205386223ebc6b48b22c35a2a6 +TEST= 275 +KEY= b2db77dc3e18c3a77ced01c0f49bb38e6fd62049c3b91a54 +CT= 861575205386223ebc6b48b22c35a2a6 +PT= dc074f3d41c62da9d609a982deb9e074 +TEST= 276 +KEY= e632b0c6ee68910ea0ea4efdb55d9e27b9df89cb1d00fa20 +CT= dc074f3d41c62da9d609a982deb9e074 +PT= 6933f4f193b028a22b913453b0b4c9a2 +TEST= 277 +KEY= 88aa3fee5fdfa336c9d9ba0c26edb685924ebd98adb43382 +CT= 6933f4f193b028a22b913453b0b4c9a2 +PT= 56811e665ddfbea07a7c2c762f0d5c73 +TEST= 278 +KEY= 2a0a1fe31adfc64f9f58a46a7b320825e83291ee82b96ff1 +CT= 56811e665ddfbea07a7c2c762f0d5c73 +PT= cff92e47c8c973ada7b57d9fe320b356 +TEST= 279 +KEY= 7958f9d10b6dc91050a18a2db3fb7b884f87ec716199dca7 +CT= cff92e47c8c973ada7b57d9fe320b356 +PT= a55a4f827552761580dc27e0712051b1 +TEST= 280 +KEY= addb73fe13d439caf5fbc5afc6a90d9dcf5bcb9110b98d16 +CT= a55a4f827552761580dc27e0712051b1 +PT= 734b095c3c54fcde26c33659c82caccb +TEST= 281 +KEY= e979af9c739f60ae86b0ccf3fafdf143e998fdc8d89521dd +CT= 734b095c3c54fcde26c33659c82caccb +PT= 122a4f2ade6c69364943658517a56587 +TEST= 282 +KEY= e05bdc75e94eb2a8949a83d924919875a0db984dcf30445a +CT= 122a4f2ade6c69364943658517a56587 +PT= c6ef3170c5ef69b479ac6653e8b7e979 +TEST= 283 +KEY= 67af0be0de572f595275b2a9e17ef1c1d977fe1e2787ad23 +CT= c6ef3170c5ef69b479ac6653e8b7e979 +PT= 51113ff8a1000a5449f24e8e5363fb72 +TEST= 284 +KEY= 7c8dcbb512ae775603648d51407efb959085b09074e45651 +CT= 51113ff8a1000a5449f24e8e5363fb72 +PT= b9341e24a41c9d9ce56d6e4f17a7a311 +TEST= 285 +KEY= eebe49daf88030f5ba509375e462660975e8dedf6343f540 +CT= b9341e24a41c9d9ce56d6e4f17a7a311 +PT= 26a135c466b061791de40a40e9366fc6 +TEST= 286 +KEY= a06a0b9127769ef79cf1a6b182d20770680cd49f8a759a86 +CT= 26a135c466b061791de40a40e9366fc6 +PT= ae832b68c147cf8a70a8e5ccc3ff05f2 +TEST= 287 +KEY= cd394b7808099b2832728dd94395c8fa18a43153498a9f74 +CT= ae832b68c147cf8a70a8e5ccc3ff05f2 +PT= 72747f478e3ae57c6c7d6d4e5c4fce71 +TEST= 288 +KEY= 80d4a1bd538d11434006f29ecdaf2d8674d95c1d15c55105 +CT= 72747f478e3ae57c6c7d6d4e5c4fce71 +PT= 21539022400bee401e8fe7e9f0f7aac3 +TEST= 289 +KEY= c8bcb868e11b46e3615562bc8da4c3c66a56bbf4e532fbc6 +CT= 21539022400bee401e8fe7e9f0f7aac3 +PT= 44149c7c375f07b7169c8a9a14133c8c +TEST= 290 +KEY= dfc35dd4fad95c2a2541fec0bafbc4717cca316ef121c74a +CT= 44149c7c375f07b7169c8a9a14133c8c +PT= 2a7fa9d2eacc0c5444510e7d69eb3fd6 +TEST= 291 +KEY= 73b0b53ee6d591140f3e57125037c825389b3f1398caf89c +CT= 2a7fa9d2eacc0c5444510e7d69eb3fd6 +PT= 9949145b8c88d03bba46febe9856b732 +TEST= 292 +KEY= 7bfbd6a0a317dee996774349dcbf181e82ddc1ad009c4fae +CT= 9949145b8c88d03bba46febe9856b732 +PT= 714e072347ecdea4f8eb2b02746fbc66 +TEST= 293 +KEY= ca326a1d191b2bc6e739446a9b53c6ba7a36eaaf74f3f3c8 +CT= 714e072347ecdea4f8eb2b02746fbc66 +PT= ccf2295814759a5004e8c3e2b97c4958 +TEST= 294 +KEY= 428400f7196d32c62bcb6d328f265cea7ede294dcd8fba90 +CT= ccf2295814759a5004e8c3e2b97c4958 +PT= 12108ab0753eaae007deff2eba8a3ef0 +TEST= 295 +KEY= 3e38f6fa3f49742339dbe782fa18f60a7900d66377058460 +CT= 12108ab0753eaae007deff2eba8a3ef0 +PT= 0109ac127fb55b91bc922edff3c43819 +TEST= 296 +KEY= 07c585abd1c227d638d24b9085adad9bc592f8bc84c1bc79 +CT= 0109ac127fb55b91bc922edff3c43819 +PT= 33ff03f6966e81ee28889cfa0b9ba8b9 +TEST= 297 +KEY= fb823872148252c20b2d486613c32c75ed1a64468f5a14c0 +CT= 33ff03f6966e81ee28889cfa0b9ba8b9 +PT= d8468c180bac0f6d703611ddad951014 +TEST= 298 +KEY= f81900ead21ece3bd36bc47e186f23189d2c759b22cf04d4 +CT= d8468c180bac0f6d703611ddad951014 +PT= 07994906a8377d64f2d32db4bb170ef1 +TEST= 299 +KEY= 2adc8c0244307531d4f28d78b0585e7c6fff582f99d80a25 +CT= 07994906a8377d64f2d32db4bb170ef1 +PT= 48382015f82aa7ec8944c40275595cef +TEST= 300 +KEY= 2e917f5c5bab80939ccaad6d4872f990e6bb9c2dec8156ca +CT= 48382015f82aa7ec8944c40275595cef +PT= d4eee0a1a56118eb8f6ae16fe16f70ed +TEST= 301 +KEY= 126d396b29e0252248244dcced13e17b69d17d420dee2627 +CT= d4eee0a1a56118eb8f6ae16fe16f70ed +PT= 358e5fae4a4ed6b1058e32942ae030db +TEST= 302 +KEY= d390a60684f5c9147daa1262a75d37ca6c5f4fd6270e16fc +CT= 358e5fae4a4ed6b1058e32942ae030db +PT= b9730d311ea8312dac34f444a4560ddc +TEST= 303 +KEY= 0b2a03e62fcd9b06c4d91f53b9f506e7c06bbb9283581b20 +CT= b9730d311ea8312dac34f444a4560ddc +PT= d64f286b32b4058a51b73844bca93dda +TEST= 304 +KEY= 5858183c5713bbd6129637388b41036d91dc83d63ff126fa +CT= d64f286b32b4058a51b73844bca93dda +PT= 78425b7fe64d972c642ed17369ed8844 +TEST= 305 +KEY= c555d9dc23d3a1846ad46c476d0c9441f5f252a5561caebe +CT= 78425b7fe64d972c642ed17369ed8844 +PT= 2de9202f4cd7f67c7b7f94cf7f3b9b5a +TEST= 306 +KEY= 7ba871da6e336cfa473d4c6821db623d8e8dc66a292735e4 +CT= 2de9202f4cd7f67c7b7f94cf7f3b9b5a +PT= a30322ec9a51266b50153995bcebc846 +TEST= 307 +KEY= 55bf35687eba169ae43e6e84bb8a4456de98ffff95ccfda2 +CT= a30322ec9a51266b50153995bcebc846 +PT= 14754b0469683f36e4791fd9b8b1c585 +TEST= 308 +KEY= 0404cae90360f118f04b2580d2e27b603ae1e0262d7d3827 +CT= 14754b0469683f36e4791fd9b8b1c585 +PT= e8592dc147a1dc4f48d43e365b9d63ff +TEST= 309 +KEY= 109e16aa717a4ef4181208419543a72f7235de1076e05bd8 +CT= e8592dc147a1dc4f48d43e365b9d63ff +PT= 47a3bf0743562c7d412563c94c2cd717 +TEST= 310 +KEY= 0a8dc7647f8c06d15fb1b746d6158b523310bdd93acc8ccf +CT= 47a3bf0743562c7d412563c94c2cd717 +PT= 63f8c6a062937471364050815d856793 +TEST= 311 +KEY= cc9b8854c13f73623c4971e6b486ff230550ed586749eb5c +CT= 63f8c6a062937471364050815d856793 +PT= e70443af44bf549607251a86cd83a4d3 +TEST= 312 +KEY= 2d067d896df1e749db4d3249f039abb50275f7deaaca4f8f +CT= e70443af44bf549607251a86cd83a4d3 +PT= acef2ae95ca660aee513bf48bcf7d125 +TEST= 313 +KEY= dec45dd3c0dad30a77a218a0ac9fcb1be7664896163d9eaa +CT= acef2ae95ca660aee513bf48bcf7d125 +PT= 859e9e4001245a50ed76055539672f1a +TEST= 314 +KEY= 6f208e93d9c89ce8f23c86e0adbb914b0a104dc32f5ab1b0 +CT= 859e9e4001245a50ed76055539672f1a +PT= 42b059061fe4c86c7ac2b7c8b62820c2 +TEST= 315 +KEY= 86ec7ce558994e8eb08cdfe6b25f592770d2fa0b99729172 +CT= 42b059061fe4c86c7ac2b7c8b62820c2 +PT= 01c6296f1532450f182d6a3fc8249dd7 +TEST= 316 +KEY= c74b31cec9b31130b14af689a76d1c2868ff903451560ca5 +CT= 01c6296f1532450f182d6a3fc8249dd7 +PT= 14334054946821e3fe8d72d1ef402ee1 +TEST= 317 +KEY= ac636b2ad3699560a579b6dd33053dcb9672e2e5be162244 +CT= 14334054946821e3fe8d72d1ef402ee1 +PT= f09b2fe9a8f17cd847532d4979d2a8c4 +TEST= 318 +KEY= 6f956e3680fc783155e299349bf44113d121cfacc7c48a80 +CT= f09b2fe9a8f17cd847532d4979d2a8c4 +PT= 4c97bd8822e63c7a2ee0e444563af1c8 +TEST= 319 +KEY= c69b2fb718c41b1a197524bcb9127d69ffc12be891fe7b48 +CT= 4c97bd8822e63c7a2ee0e444563af1c8 +PT= 344e85be2c8b36430c8058b310062171 +TEST= 320 +KEY= bffa143b8a18cacf2d3ba10295994b2af341735b81f85a39 +CT= 344e85be2c8b36430c8058b310062171 +PT= ff3f882cb22d13a8631dca6dd702d0e0 +TEST= 321 +KEY= 22f58a0fc077ab5fd204292e27b45882905cb93656fa8ad9 +CT= ff3f882cb22d13a8631dca6dd702d0e0 +PT= 866b2e52cf71505973d9d6642c8178bb +TEST= 322 +KEY= dc8ce7a9130f3662546f077ce8c508dbe3856f527a7bf262 +CT= 866b2e52cf71505973d9d6642c8178bb +PT= 4802741adf67a3811a8aec7008d8827e +TEST= 323 +KEY= 743b09aa8fd3c6a01c6d736637a2ab5af90f832272a3701c +CT= 4802741adf67a3811a8aec7008d8827e +PT= fd3701579815d02be878c74abb98c59b +TEST= 324 +KEY= 865b3ec9efbe27d0e15a7231afb77b7111774468c93bb587 +CT= fd3701579815d02be878c74abb98c59b +PT= 99bca8250d54f3a9a72054af5578f842 +TEST= 325 +KEY= 041c037e08923fff78e6da14a2e388d8b65710c79c434dc5 +CT= 99bca8250d54f3a9a72054af5578f842 +PT= f0da5c0e446547356d5027ba346a831c +TEST= 326 +KEY= fbabce025cf5ff3d883c861ae686cfeddb07377da829ced9 +CT= f0da5c0e446547356d5027ba346a831c +PT= eed0140af408652dd879e3289536c389 +TEST= 327 +KEY= 3f12399a3e5c0f9566ec9210128eaac0037ed4553d1f0d50 +CT= eed0140af408652dd879e3289536c389 +PT= fdc7299a95bdb941a299478b7b409ef8 +TEST= 328 +KEY= d541517b701036e39b2bbb8a87331381a1e793de465f93a8 +CT= fdc7299a95bdb941a299478b7b409ef8 +PT= 5be5aec30578cd03ba7b17e8b16aafbf +TEST= 329 +KEY= 6657840ff425dd8ac0ce1549824bde821b9c8436f7353c17 +CT= 5be5aec30578cd03ba7b17e8b16aafbf +PT= 3c7a9745f48da61cf7875a449e24c735 +TEST= 330 +KEY= 52d29bbd64550dfbfcb4820c76c6789eec1bde726911fb22 +CT= 3c7a9745f48da61cf7875a449e24c735 +PT= 69516de0343f3552830d28ce8b9a282c +TEST= 331 +KEY= 3699b16bb0349b9195e5efec42f94dcc6f16f6bce28bd30e +CT= 69516de0343f3552830d28ce8b9a282c +PT= eb09ee300286690ea65a30526a43b86b +TEST= 332 +KEY= 60e79b9e7c41814e7eec01dc407f24c2c94cc6ee88c86b65 +CT= eb09ee300286690ea65a30526a43b86b +PT= a235384fe517a5f455bbe6b850c05e33 +TEST= 333 +KEY= 11f650282bbcb584dcd93993a56881369cf72056d8083556 +CT= a235384fe517a5f455bbe6b850c05e33 +PT= 41e297350390e91ec00ff875b3ca60ba +TEST= 334 +KEY= 11b449f7ee983ab89d3baea6a6f868285cf8d8236bc255ec +CT= 41e297350390e91ec00ff875b3ca60ba +PT= 5fb9f6408d54401a9a76288ae3a04944 +TEST= 335 +KEY= 54cba9a5782ed91fc28258e62bac2832c68ef0a988621ca8 +CT= 5fb9f6408d54401a9a76288ae3a04944 +PT= 7c9cd2510e96ff37bf75e57e84098535 +TEST= 336 +KEY= 871169f28e704c95be1e8ab7253ad70579fb15d70c6b999d +CT= 7c9cd2510e96ff37bf75e57e84098535 +PT= 8e041b8c74a84d747b02714452b34f11 +TEST= 337 +KEY= 7f44ed6aa755957a301a913b51929a7102f964935ed8d68c +CT= 8e041b8c74a84d747b02714452b34f11 +PT= 3698639f56657a40d52b9b8015448c2a +TEST= 338 +KEY= eeaf09001996ba6e0682f2a407f7e031d7d2ff134b9c5aa6 +CT= 3698639f56657a40d52b9b8015448c2a +PT= 79fb5e4a065d29e1ca3e15897b60032f +TEST= 339 +KEY= d21cca06254a64c97f79acee01aac9d01decea9a30fc5989 +CT= 79fb5e4a065d29e1ca3e15897b60032f +PT= c582f5f8d9d2e9323c769b2b1ae369bd +TEST= 340 +KEY= 29d2f84e4568ba6fbafb5916d87820e2219a71b12a1f3034 +CT= c582f5f8d9d2e9323c769b2b1ae369bd +PT= 916405dc8f2ad50548997d87bccadbfb +TEST= 341 +KEY= 43ac4d54a8a0222f2b9f5cca5752f5e769030c3696d5ebcf +CT= 916405dc8f2ad50548997d87bccadbfb +PT= 0e9ff0e147a47056ec6b09837c9e0e62 +TEST= 342 +KEY= 9af110b8274794772500ac2b10f685b1856805b5ea4be5ad +CT= 0e9ff0e147a47056ec6b09837c9e0e62 +PT= 3b6e3caac358427980e66e3d30d39e4f +TEST= 343 +KEY= 49f910e7957bc95c1e6e9081d3aec7c8058e6b88da987be2 +CT= 3b6e3caac358427980e66e3d30d39e4f +PT= 25cbe5ab4c6785c0f2847cf89f2635ab +TEST= 344 +KEY= 64d90092dd97ac3c3ba5752a9fc94208f70a177045be4e49 +CT= 25cbe5ab4c6785c0f2847cf89f2635ab +PT= 3d9200d39461d8b2ce7874da20bfd9da +TEST= 345 +KEY= c7a8403afb011673063775f90ba89aba397263aa65019793 +CT= 3d9200d39461d8b2ce7874da20bfd9da +PT= e61e7e06a1e1f656ae8f8c29c96e5a16 +TEST= 346 +KEY= 071af635af7a9602e0290bffaa496cec97fdef83ac6fcd85 +CT= e61e7e06a1e1f656ae8f8c29c96e5a16 +PT= 7488bb35f06e94f31a744d1ea95e71d0 +TEST= 347 +KEY= a4b5ecb7047e08d694a1b0ca5a27f81f8d89a29d0531bc55 +CT= 7488bb35f06e94f31a744d1ea95e71d0 +PT= 3912dc00c0ab79c473ca2cc8f69262f0 +TEST= 348 +KEY= bd4478b38a0e9347adb36cca9a8c81dbfe438e55f3a3dea5 +CT= 3912dc00c0ab79c473ca2cc8f69262f0 +PT= c4b546f134a016dada8e7c478b1e7d45 +TEST= 349 +KEY= f7b6f476517483ad69062a3bae2c970124cdf21278bda3e0 +CT= c4b546f134a016dada8e7c478b1e7d45 +PT= 298524c5d468ebfa97defec7b80ee752 +TEST= 350 +KEY= 8e0c5244f7417c2440830efe7a447cfbb3130cd5c0b344b2 +CT= 298524c5d468ebfa97defec7b80ee752 +PT= b27efb90ba3a27a1077c6742d5b68396 +TEST= 351 +KEY= c6e8f264fa0c9a9af2fdf56ec07e5b5ab46f6b971505c724 +CT= b27efb90ba3a27a1077c6742d5b68396 +PT= d02c27a94dd3b772b338c7462379b009 +TEST= 352 +KEY= ad694d243dcc6b7b22d1d2c78dadec280757acd1367c772d +CT= d02c27a94dd3b772b338c7462379b009 +PT= 1ced06084e67ba4bad3c331f4074b9ff +TEST= 353 +KEY= 68aef48d86d395583e3cd4cfc3ca5663aa6b9fce7608ced2 +CT= 1ced06084e67ba4bad3c331f4074b9ff +PT= c0d7811fe8630b3e7c3a60da9042a6b2 +TEST= 354 +KEY= 670a8d40573f598afeeb55d02ba95d5dd651ff14e64a6860 +CT= c0d7811fe8630b3e7c3a60da9042a6b2 +PT= 45f92c84ce2aec6e7953c8aac5901d0f +TEST= 355 +KEY= d44fd97b0d59c923bb127954e583b133af0237be23da756f +CT= 45f92c84ce2aec6e7953c8aac5901d0f +PT= 23a4863c994efe93e7ce1c89fe14143d +TEST= 356 +KEY= 4e08c6a539c74a6598b6ff687ccd4fa048cc2b37ddce6152 +CT= 23a4863c994efe93e7ce1c89fe14143d +PT= 85eb5f46988211e3077fdbe38f1ebe6b +TEST= 357 +KEY= 21b17d5e461224b31d5da02ee44f5e434fb3f0d452d0df39 +CT= 85eb5f46988211e3077fdbe38f1ebe6b +PT= 59cf6ccc81a8bc17a52d7550b40c7514 +TEST= 358 +KEY= 6cc595309f161f3e4492cce265e7e254ea9e8584e6dcaa2d +CT= 59cf6ccc81a8bc17a52d7550b40c7514 +PT= 13df4c2aa74a4b9123b3a57fe94f85be +TEST= 359 +KEY= 77b90151b41b1b7d574d80c8c2ada9c5c92d20fb0f932f93 +CT= 13df4c2aa74a4b9123b3a57fe94f85be +PT= 6dede53ad5dc2a87744da0ea561977a3 +TEST= 360 +KEY= 8e1683c57c1817c23aa065f217718342bd608011598a5830 +CT= 6dede53ad5dc2a87744da0ea561977a3 +PT= f9d912aab5ed1acbd0475411df98f49c +TEST= 361 +KEY= e9fdd94ae4b4fabac3797758a29c99896d27d4008612acac +CT= f9d912aab5ed1acbd0475411df98f49c +PT= 853c907d9fd35b61d2abbe5c1a89db4b +TEST= 362 +KEY= bcc524df4d452ae14645e7253d4fc2e8bf8c6a5c9c9b77e7 +CT= 853c907d9fd35b61d2abbe5c1a89db4b +PT= 874c4bc1993fba12136443b57f9523be +TEST= 363 +KEY= 9f5efa7196589240c109ace4a47078faace829e9e30e5459 +CT= 874c4bc1993fba12136443b57f9523be +PT= e6b6e9133dd0ec2844ef3cc0c2f9e4ac +TEST= 364 +KEY= 2f0731db4fa3024127bf45f799a094d2e807152921f7b0f5 +CT= e6b6e9133dd0ec2844ef3cc0c2f9e4ac +PT= 20b41ee01134041df8d11bb7f86928ea +TEST= 365 +KEY= 7e44d240f06aaa5e070b5b17889490cf10d60e9ed99e981f +CT= 20b41ee01134041df8d11bb7f86928ea +PT= bf6b03096dcdc052b1325cc34bf6e56c +TEST= 366 +KEY= d8d3e3d538c8ca34b860581ee559509da1e4525d92687d73 +CT= bf6b03096dcdc052b1325cc34bf6e56c +PT= 5ed3e40fb5c34dd1f370c3ad72c7c24d +TEST= 367 +KEY= f3df20767cda5e0ce6b3bc11509a1d4c529491f0e0afbf3e +CT= 5ed3e40fb5c34dd1f370c3ad72c7c24d +PT= 3ea6bce2317c5d696df8240c481b34dd +TEST= 368 +KEY= 484932a15d75173fd81500f361e640253f6cb5fca8b48be3 +CT= 3ea6bce2317c5d696df8240c481b34dd +PT= 41d6e077746fe1a9307e1107631a5d2c +TEST= 369 +KEY= ef960956685de1ce99c3e0841589a18c0f12a4fbcbaed6cf +CT= 41d6e077746fe1a9307e1107631a5d2c +PT= d0c6ddef0a623686ba303c278d445964 +TEST= 370 +KEY= 82477d8d682c1d4849053d6b1feb970ab52298dc46ea8fab +CT= d0c6ddef0a623686ba303c278d445964 +PT= eeffa6025d6cafbf9dc18e5b1b99a6ed +TEST= 371 +KEY= 15d8dcf80a26856aa7fa9b69428738b528e316875d732946 +CT= eeffa6025d6cafbf9dc18e5b1b99a6ed +PT= 38e222abaa07cdae9cc02fac84ec0fc1 +TEST= 372 +KEY= 556151278277d7579f18b9c2e880f51bb423392bd99f2687 +CT= 38e222abaa07cdae9cc02fac84ec0fc1 +PT= b00c719e6a320e4385794eb7f23c0d80 +TEST= 373 +KEY= 777f91003e4410572f14c85c82b2fb58315a779c2ba32b07 +CT= b00c719e6a320e4385794eb7f23c0d80 +PT= 0e667ca932023d2efd8ddbded5a43d78 +TEST= 374 +KEY= 130507fc817f14432172b4f5b0b0c676ccd7ac42fe07167f +CT= 0e667ca932023d2efd8ddbded5a43d78 +PT= 6b15da892f0b5916f31bb74fc7d03f9a +TEST= 375 +KEY= d045a84bbf62de2e4a676e7c9fbb9f603fcc1b0d39d729e5 +CT= 6b15da892f0b5916f31bb74fc7d03f9a +PT= ebef6dc298d63bf6e6e46f833b217033 +TEST= 376 +KEY= 7742fb68cdf60735a18803be076da496d928748e02f659d6 +CT= ebef6dc298d63bf6e6e46f833b217033 +PT= 48dc6f65f193afcce559ea6f04fbd79a +TEST= 377 +KEY= 5ce32bc22c77b664e9546cdbf6fe0b5a3c719ee1060d8e4c +CT= 48dc6f65f193afcce559ea6f04fbd79a +PT= d0596880f92716c51e41519c640aefda +TEST= 378 +KEY= 2da6b73c5131e24c390d045b0fd91d9f2230cf7d62076196 +CT= d0596880f92716c51e41519c640aefda +PT= abb7c3e499086f53c4db97640168943b +TEST= 379 +KEY= e41c1a826978491892bac7bf96d172cce6eb5819636ff5ad +CT= abb7c3e499086f53c4db97640168943b +PT= 0cc58b3d0370317e1025e1af97962646 +TEST= 380 +KEY= 501012ee411dcdc59e7f4c8295a143b2f6ceb9b6f4f9d3eb +CT= 0cc58b3d0370317e1025e1af97962646 +PT= 28920aed2b644c4346fc146903887244 +TEST= 381 +KEY= 97b7e8c1147a5062b6ed466fbec50ff1b032addff771a1af +CT= 28920aed2b644c4346fc146903887244 +PT= e7a28da5ec871daf8c2d196c7ed8977f +TEST= 382 +KEY= 988b9928402bcd63514fcbca5242125e3c1fb4b389a936d0 +CT= e7a28da5ec871daf8c2d196c7ed8977f +PT= 013876a92413aed2e360a241fe021b25 +TEST= 383 +KEY= 3432357430acc9135077bd637651bc8cdf7f16f277ab2df5 +CT= 013876a92413aed2e360a241fe021b25 +PT= 10f1a56a8cfda1d5044d5d0e53f6a773 +TEST= 384 +KEY= ce94f859cd3e85f440861809faac1d59db324bfc245d8a86 +CT= 10f1a56a8cfda1d5044d5d0e53f6a773 +PT= 941c717ee6642dd474719f099aeeb1eb +TEST= 385 +KEY= a1bfa52ea232fdf0d49a69771cc8308daf43d4f5beb33b6d +CT= 941c717ee6642dd474719f099aeeb1eb +PT= f31b47230abc94977e14e1080528c1c9 +TEST= 386 +KEY= 37b36a8e7a3b4f2a27812e541674a41ad15735fdbb9bfaa4 +CT= f31b47230abc94977e14e1080528c1c9 +PT= a91264221890ca93541b662f64a11c62 +TEST= 387 +KEY= 04f603f98a9d1ac78e934a760ee46e89854c53d2df3ae6c6 +CT= a91264221890ca93541b662f64a11c62 +PT= 05f5171b639825ec67a37b3671f2f884 +TEST= 388 +KEY= a294ebbbd53d18dd8b665d6d6d7c4b65e2ef28e4aec81e42 +CT= 05f5171b639825ec67a37b3671f2f884 +PT= b6fe84eb2987de956953deba6fd2e029 +TEST= 389 +KEY= e0e38a82f60e8eed3d98d98644fb95f08bbcf65ec11afe6b +CT= b6fe84eb2987de956953deba6fd2e029 +PT= 2741338cf00fbc70c4b1c67c97e85b97 +TEST= 390 +KEY= 2193d386143f6d761ad9ea0ab4f429804f0d302256f2a5fc +CT= 2741338cf00fbc70c4b1c67c97e85b97 +PT= e56c7c453e2e13028ad812f9cdb78e2f +TEST= 391 +KEY= 05ad3bc4f1b29f17ffb5964f8ada3a82c5d522db9b452bd3 +CT= e56c7c453e2e13028ad812f9cdb78e2f +PT= 9a9b49ac0691f1576d515e935f042229 +TEST= 392 +KEY= 1588c005075f4674652edfe38c4bcbd5a8847c48c44109fa +CT= 9a9b49ac0691f1576d515e935f042229 +PT= 143e5f64ad38373d3b54fa24cc7c0af5 +TEST= 393 +KEY= 731083cccb22e7cf711080872173fce893d0866c083d030f +CT= 143e5f64ad38373d3b54fa24cc7c0af5 +PT= 61f6af426601588cb7c525255ec1a06d +TEST= 394 +KEY= dacee3906b98dfc110e62fc54772a4642415a34956fca362 +CT= 61f6af426601588cb7c525255ec1a06d +PT= db5dc1c3b3413f653d72f8744c2dd881 +TEST= 395 +KEY= d9aca0f56dca4fc0cbbbee06f4339b0119675b3d1ad17be3 +CT= db5dc1c3b3413f653d72f8744c2dd881 +PT= 4e9d548da49e992ad3123f53558909c9 +TEST= 396 +KEY= 12c2fe0c57d21c208526ba8b50ad022bca75646e4f58722a +CT= 4e9d548da49e992ad3123f53558909c9 +PT= eb2e835192e64abc30c3f2662b703c47 +TEST= 397 +KEY= 7a43322d6174ba786e0839dac24b4897fab6960864284e6d +CT= eb2e835192e64abc30c3f2662b703c47 +PT= cd0690863f63f2b263d4c11190a7985b +TEST= 398 +KEY= ebc6d71978d39185a30ea95cfd28ba2599625719f48fd636 +CT= cd0690863f63f2b263d4c11190a7985b +PT= c044e800b65ca78559d0642c370c7d3e +TEST= 399 +KEY= a1b6ce2eec5fc386634a415c4b741da0c0b23335c383ab08 +CT= c044e800b65ca78559d0642c370c7d3e +PT= f1a81b68f6e5a6271a8cb24e7d9491ef diff --git a/flint/test/testvals/ecbmd48.txt b/flint/test/testvals/ecbmd48.txt new file mode 100644 index 0000000..e209dfa --- /dev/null +++ b/flint/test/testvals/ecbmd48.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 00000000000000000000000000000000 +PT= 058ccffdbbcb382d1f6f56585d8a4ade +TEST= 1 +KEY= 85c6b2bb2300148f945aebf1f021cf79058ccffdbbcb382d1f6f56585d8a4ade +CT= 058ccffdbbcb382d1f6f56585d8a4ade +PT= 15173a0eb65f5cc05e704efe61d9e346 +TEST= 2 +KEY= 2447ec44111548fbb670b98f182d5dee109bf5f30d9464ed411f18a63c53a998 +CT= 15173a0eb65f5cc05e704efe61d9e346 +PT= 85f083acc676d91edd1abfb43935237a +TEST= 3 +KEY= 85d3e1d750caa89bee274aa7c32c2207956b765fcbe2bdf39c05a71205668ae2 +CT= 85f083acc676d91edd1abfb43935237a +PT= 42c8f0abc58e0beac32911d2dd9fa8c8 +TEST= 4 +KEY= ce86b24954745b2baaf27010202ee7fad7a386f40e6cb6195f2cb6c0d8f9222a +CT= 42c8f0abc58e0beac32911d2dd9fa8c8 +PT= 5e44123d2ca07981b073bb2749f557d6 +TEST= 5 +KEY= cd7bcbba4555a0d034fd7b528a1d042c89e794c922cccf98ef5f0de7910c75fc +CT= 5e44123d2ca07981b073bb2749f557d6 +PT= 8b649458ea90f4f7e13467e509b7f164 +TEST= 6 +KEY= ef28dfaed7794b1c7b892f3c98fcdc9602830091c85c3b6f0e6b6a0298bb8498 +CT= 8b649458ea90f4f7e13467e509b7f164 +PT= f240d1f579da2ca8839f7072df52eba3 +TEST= 7 +KEY= c66605ec92f96b49f08cbc6276a0dc68f0c3d164b18617c78df41a7047e96f3b +CT= f240d1f579da2ca8839f7072df52eba3 +PT= b05297490a394b4a1736de7f8dc12969 +TEST= 8 +KEY= 347403b6e6344e1525b8d2bd4dca343f4091462dbbbf5c8d9ac2c40fca284652 +CT= b05297490a394b4a1736de7f8dc12969 +PT= 8ba49d44b98e67501235ce1c2f26bb28 +TEST= 9 +KEY= b932cd0c70488602c56f92a0da57be27cb35db6902313bdd88f70a13e50efd7a +CT= 8ba49d44b98e67501235ce1c2f26bb28 +PT= 86ce4e4d040c49f2717407157454162e +TEST= 10 +KEY= 28f8b6b4ab2b0b81f3676f6e422d438c4dfb9524063d722ff9830d06915aeb54 +CT= 86ce4e4d040c49f2717407157454162e +PT= 4e9ca7fb0ff9f38fc821ca91052483f9 +TEST= 11 +KEY= 5cd19f4d3c5b58602b101e15b39f51e4036732df09c481a031a2c797947e68ad +CT= 4e9ca7fb0ff9f38fc821ca91052483f9 +PT= 55e49ed59245c1850cb0c17c1ceea05e +TEST= 12 +KEY= e822bb0d1f25f3dca6fe0cb1a8af39f15683ac0a9b8140253d1206eb8890c8f3 +CT= 55e49ed59245c1850cb0c17c1ceea05e +PT= f7f0bfa319ac289c9f64e6fcdd531b44 +TEST= 13 +KEY= 8b64ff354c6e303f14ea34c9f667fec9a17313a9822d68b9a276e01755c3d3b7 +CT= f7f0bfa319ac289c9f64e6fcdd531b44 +PT= 6acb8a177226ae47e2170f77d2fe4923 +TEST= 14 +KEY= 1a9d440ebac3f3625e229b66c5d9249ccbb899bef00bc6fe4061ef60873d9a94 +CT= 6acb8a177226ae47e2170f77d2fe4923 +PT= baa9bb819332a87d6004164927eac699 +TEST= 15 +KEY= 97f92b9ad44a3182ff10e07747c560b37111223f63396e832065f929a0d75c0d +CT= baa9bb819332a87d6004164927eac699 +PT= eb84793e2d68632900b0517392ec4b94 +TEST= 16 +KEY= 2aeeba2ac59870a7b4274b80fe74d55a9a955b014e510daa20d5a85a323b1799 +CT= eb84793e2d68632900b0517392ec4b94 +PT= 6c662fbe2b22394cc1d45453772c72ba +TEST= 17 +KEY= eea4b3c4f96c42e3b7df5a3870c85b69f6f374bf657334e6e101fc0945176523 +CT= 6c662fbe2b22394cc1d45453772c72ba +PT= 70d2bbc1fa7d49848d94112da93a3c3c +TEST= 18 +KEY= f930d1529c654f31549809c6cd5cc4608621cf7e9f0e7d626c95ed24ec2d591f +CT= 70d2bbc1fa7d49848d94112da93a3c3c +PT= 1aff91e67039133946638e4e505310c2 +TEST= 19 +KEY= 5d0f461c1a5ff7ba5c93f0ced9dd49ff9cde5e98ef376e5b2af6636abc7e49dd +CT= 1aff91e67039133946638e4e505310c2 +PT= 8e4358b22de7bcdc8b8409e6250633bf +TEST= 20 +KEY= aa4b475845eb19f601856a40ab517594129d062ac2d0d287a1726a8c99787a62 +CT= 8e4358b22de7bcdc8b8409e6250633bf +PT= 2a79fe5a222c9503954346d6c15ac679 +TEST= 21 +KEY= 9703f4dd85a3be85343ffd15950a266b38e4f870e0fc478434312c5a5822bc1b +CT= 2a79fe5a222c9503954346d6c15ac679 +PT= 0ff812c5b863282c294d7069f830ee86 +TEST= 22 +KEY= 3dd1b2acbc6568851e767d20d82ad324371ceab5589f6fa81d7c5c33a012529d +CT= 0ff812c5b863282c294d7069f830ee86 +PT= d449218625de49d2b9514e032ca096e7 +TEST= 23 +KEY= 95cc16235d3dff4f7db2116d2b380f39e355cb337d41267aa42d12308cb2c47a +CT= d449218625de49d2b9514e032ca096e7 +PT= f951eac3bc78db0ae13fdc33048d2d81 +TEST= 24 +KEY= a6f55afbda7ea939f6f2a28530c416781a0421f0c139fd704512ce03883fe9fb +CT= f951eac3bc78db0ae13fdc33048d2d81 +PT= 7d5a03a955f6403f918ac915ac22b797 +TEST= 25 +KEY= 7c5d39885f4c0f4fcf672321b711c5b7675e225994cfbd4fd4980716241d5e6c +CT= 7d5a03a955f6403f918ac915ac22b797 +PT= ca2e1c274073ad2a3ae35c60eca52a58 +TEST= 26 +KEY= 4e7b914b84bfa1a2d7bd409afadd2edcad703e7ed4bc1065ee7b5b76c8b87434 +CT= ca2e1c274073ad2a3ae35c60eca52a58 +PT= c5048fa0148ced10a06e107269da9c95 +TEST= 27 +KEY= f62d8c4822c5f89d51e3c68695d91ca66874b1dec030fd754e154b04a162e8a1 +CT= c5048fa0148ced10a06e107269da9c95 +PT= cb9b457a7a24577da71ac335f0572dab +TEST= 28 +KEY= c37aad7cb20087f4b98390c59d3ecfb2a3eff4a4ba14aa08e90f88315135c50a +CT= cb9b457a7a24577da71ac335f0572dab +PT= fa60bff170dd30c29df1807c1612cd67 +TEST= 29 +KEY= 1a2c6858b37d0341bf8796fb72d00b72598f4b55cac99aca74fe084d4727086d +CT= fa60bff170dd30c29df1807c1612cd67 +PT= e2facfb5df4e69c911838fcc546d0c8e +TEST= 30 +KEY= 039b73e3a8dcf3c678fbc246aaecdaecbb7584e01587f303657d8781134a04e3 +CT= e2facfb5df4e69c911838fcc546d0c8e +PT= 749ab2b9176afdb8b6714df44bbf2b58 +TEST= 31 +KEY= 773d90ea7eca29dfd9141a42eb2bbc64cfef365902ed0ebbd30cca7558f52fbb +CT= 749ab2b9176afdb8b6714df44bbf2b58 +PT= 0285e58d09a8d33fb196fd16a8df37c0 +TEST= 32 +KEY= 598262b046b44784d977f6be2553c6accd6ad3d40b45dd84629a3763f02a187b +CT= 0285e58d09a8d33fb196fd16a8df37c0 +PT= 1c952c46ae829d8805031a44f9d85521 +TEST= 33 +KEY= afae657d3220cd1e6199a49754525f4ad1ffff92a5c7400c67992d2709f24d5a +CT= 1c952c46ae829d8805031a44f9d85521 +PT= eed0a47e63ff354b4d9c53f7fd75d720 +TEST= 34 +KEY= a61f583bcfd120b8cabe1e4c616f4fc73f2f5becc63875472a057ed0f4879a7a +CT= eed0a47e63ff354b4d9c53f7fd75d720 +PT= 10c1f0f7c32ad36f03aea8dce6aae7bc +TEST= 35 +KEY= fb76d4b83a7f50482a92f5a92cb60f522feeab1b0512a62829abd60c122d7dc6 +CT= 10c1f0f7c32ad36f03aea8dce6aae7bc +PT= 372488df6543180f1f2ae15e5b0c8785 +TEST= 36 +KEY= 35eac2ba73f55570cb727220c027fe6218ca23c46051be27368137524921fa43 +CT= 372488df6543180f1f2ae15e5b0c8785 +PT= 3de420ff3699d68db69966f57d09045a +TEST= 37 +KEY= 48b6e08b9fd9b5c130e1829cd4540d9c252e033b56c868aa801851a73428fe19 +CT= 3de420ff3699d68db69966f57d09045a +PT= 7858f396dc520131c789cb8f8c919ccd +TEST= 38 +KEY= db39c13f29241ff29c5beb839705ad5b5d76f0ad8a9a699b47919a28b8b962d4 +CT= 7858f396dc520131c789cb8f8c919ccd +PT= 07be8bbf9fcd7d04888e61935dd7222f +TEST= 39 +KEY= a5f9b675531ab58c1ffc316c9359ea335ac87b121557149fcf1ffbbbe56e40fb +CT= 07be8bbf9fcd7d04888e61935dd7222f +PT= edd619b7c12e2af6bdaa953b2e7871ef +TEST= 40 +KEY= a02d1f14a64bbc67dd7ee9eab3fb0eadb71e62a5d4793e6972b56e80cb163114 +CT= edd619b7c12e2af6bdaa953b2e7871ef +PT= c748cdb645f1a1e44a63faf00b2c3a45 +TEST= 41 +KEY= 177d7a6843b5abbeb212e68734a7a05c7056af1391889f8d38d69470c03a0b51 +CT= c748cdb645f1a1e44a63faf00b2c3a45 +PT= bd3ed4c8cd7dbf4299ac63fe119d291e +TEST= 42 +KEY= bd9bdc6bd09deed3e75c918be55e5332cd687bdb5cf520cfa17af78ed1a7224f +CT= bd3ed4c8cd7dbf4299ac63fe119d291e +PT= a16b82f958441e90a965427c854eecbb +TEST= 43 +KEY= e6325c33ec76f8ede02707a3ae82f1096c03f92204b13e5f081fb5f254e9cef4 +CT= a16b82f958441e90a965427c854eecbb +PT= e04e642689d1ab78e7cde26d0563901c +TEST= 44 +KEY= b8543db3071ab9f0802d4106fbda59648c4d9d048d609527efd2579f518a5ee8 +CT= e04e642689d1ab78e7cde26d0563901c +PT= 08e59c72c13c030da3c50300861ea097 +TEST= 45 +KEY= ecdd43a6b225db325bffe5462b66e97884a801764c5c962a4c17549fd794fe7f +CT= 08e59c72c13c030da3c50300861ea097 +PT= c224b2efee07aac33f1f6eb1295d9a50 +TEST= 46 +KEY= 741d627c8b47bed4497c71fdc9854912468cb399a25b3ce973083a2efec9642f +CT= c224b2efee07aac33f1f6eb1295d9a50 +PT= 1653ce734d27b44369d4fe582e7a885f +TEST= 47 +KEY= a47bdc62b1d80815ac6bf04481c5601f50df7deaef7c88aa1adcc476d0b3ec70 +CT= 1653ce734d27b44369d4fe582e7a885f +PT= cadc89828b6147faec581ddcff3c0960 +TEST= 48 +KEY= cb91e738f51c111dac2e0a3bf7b076a39a03f468641dcf50f684d9aa2f8fe510 +CT= cadc89828b6147faec581ddcff3c0960 +PT= 49402f0f4afa2518d57c5d1cfcecc0f2 +TEST= 49 +KEY= bda1ffaee7b93edfca4374871a149550d343db672ee7ea4823f884b6d36325e2 +CT= 49402f0f4afa2518d57c5d1cfcecc0f2 +PT= ebff53ab449de5a53edc6e595aa47b10 +TEST= 50 +KEY= 18d865b8e8c779268d3876c22af479fb38bc88cc6a7a0fed1d24eaef89c75ef2 +CT= ebff53ab449de5a53edc6e595aa47b10 +PT= 30073458509f9ac9da21b2df566ab3be +TEST= 51 +KEY= 967e2580238300563a34a6e70d84b4ff08bbbc943ae59524c7055830dfaded4c +CT= 30073458509f9ac9da21b2df566ab3be +PT= 5ab9f90cc2a7603a68e2aca95a2de55d +TEST= 52 +KEY= a469a4e2f0b3847f3b52886fad7dbaf652024598f842f51eafe7f49985800811 +CT= 5ab9f90cc2a7603a68e2aca95a2de55d +PT= f22a13f395b6064172ca9dc572c26b2e +TEST= 53 +KEY= 9ea4946ed73ff8bb8700c18967c01968a028566b6df4f35fdd2d695cf742633f +CT= f22a13f395b6064172ca9dc572c26b2e +PT= 26e44b9f3deba8ee3531ddfa42f1dc14 +TEST= 54 +KEY= 3d25eeeacef18702fd3896283cff8a8386cc1df4501f5bb1e81cb4a6b5b3bf2b +CT= 26e44b9f3deba8ee3531ddfa42f1dc14 +PT= 32d9f05174fff34594e952b7ade09737 +TEST= 55 +KEY= 8bf2a692f6a35980c0cf02ff4650871bb415eda524e0a8f47cf5e6111853281c +CT= 32d9f05174fff34594e952b7ade09737 +PT= 7bef027deb1ff22774ce8a8a101dd41b +TEST= 56 +KEY= c90bf0e1a8b615b4c8bd318260bb80aecffaefd8cfff5ad3083b6c9b084efc07 +CT= 7bef027deb1ff22774ce8a8a101dd41b +PT= cf6b2444dfbbfe5b6a1ca99f2d13de9a +TEST= 57 +KEY= c2a4c82b4aaee0a22315026c6fe396900091cb9c1044a4886227c504255d229d +CT= cf6b2444dfbbfe5b6a1ca99f2d13de9a +PT= 14ad8c7b0f0460a3f48d5cd2cffb385c +TEST= 58 +KEY= bf76e610192e2aef42ff8f487cddc318143c47e71f40c42b96aa99d6eaa61ac1 +CT= 14ad8c7b0f0460a3f48d5cd2cffb385c +PT= a5a850fc44a09c5985ce9661af84f186 +TEST= 59 +KEY= 1e42aec368c600f18cbfa305eb559946b194171b5be0587213640fb74522eb47 +CT= a5a850fc44a09c5985ce9661af84f186 +PT= e2895d416951fda66b695abfa313f89d +TEST= 60 +KEY= 4e9bc121e32849daa501bea4e534d9c2531d4a5a32b1a5d4780d5508e63113da +CT= e2895d416951fda66b695abfa313f89d +PT= 91e93aaecc5fb253f7463f101b2a4132 +TEST= 61 +KEY= acc045a67f680f14d3f8da454c922071c2f470f4feee17878f4b6a18fd1b52e8 +CT= 91e93aaecc5fb253f7463f101b2a4132 +PT= f0f339022b4001e72f3bcc1a140603ad +TEST= 62 +KEY= 4b47d2639b4a04d3c87d35db4e63e563320749f6d5ae1660a070a602e91d5145 +CT= f0f339022b4001e72f3bcc1a140603ad +PT= dbecaff90edd4555a5d9a23817520d51 +TEST= 63 +KEY= c73b1c617be90f2710dff2c3ac60e0f9e9ebe60fdb73533505a9043afe4f5c14 +CT= dbecaff90edd4555a5d9a23817520d51 +PT= 73315a63a8889095afed497aefe657b4 +TEST= 64 +KEY= 7f368758f7b303de356481ed8ebfa46f9adabc6c73fbc3a0aa444d4011a90ba0 +CT= 73315a63a8889095afed497aefe657b4 +PT= 3ab7e2f81d24d857308a1fc785559333 +TEST= 65 +KEY= 6d7ef76412498ab3c70aa3006cc87188a06d5e946edf1bf79ace528794fc9893 +CT= 3ab7e2f81d24d857308a1fc785559333 +PT= 7eaa2814e372f674ab0b6e0e428d1af4 +TEST= 66 +KEY= d626ad50a7b86153bf9215a6a8f7e908dec776808daded8331c53c89d6718267 +CT= 7eaa2814e372f674ab0b6e0e428d1af4 +PT= add212a59ac9ef6a55aeac22d35a1bfe +TEST= 67 +KEY= 4b9c7ed9ac7835c87dab8bef3ed6878b73156425176402e9646b90ab052b9999 +CT= add212a59ac9ef6a55aeac22d35a1bfe +PT= 203ecd34ae1bb2f23bc673dbd74fa07b +TEST= 68 +KEY= e34fbdef9d81b464dd1138093f132051532ba911b97fb01b5fade370d26439e2 +CT= 203ecd34ae1bb2f23bc673dbd74fa07b +PT= 0a18afd5eebbd338299897ea1f01324c +TEST= 69 +KEY= 77bd51d39775121c22343ffc66d40f0b593306c457c463237635749acd650bae +CT= 0a18afd5eebbd338299897ea1f01324c +PT= 2892a6ae9517642a0977942360fb8104 +TEST= 70 +KEY= 2761bf5478726af184c86b45ae331a7e71a1a06ac2d307097f42e0b9ad9e8aaa +CT= 2892a6ae9517642a0977942360fb8104 +PT= 8a4cd7685b9a1e663c3130c34bc418b9 +TEST= 71 +KEY= dd168b81e90d806ff468be5e551f3344fbed77029949196f4373d07ae65a9213 +CT= 8a4cd7685b9a1e663c3130c34bc418b9 +PT= c7c0a15a1a22363b378d5dd27a69d4c2 +TEST= 72 +KEY= 3442c07c0e98f523f9278d934f424bd83c2dd658836b2f5474fe8da89c3346d1 +CT= c7c0a15a1a22363b378d5dd27a69d4c2 +PT= 55a8ef8cae213fe3fd6aa77e7415400a +TEST= 73 +KEY= 291bd1577921b2947bc470c19727f0bd698539d42d4a10b789942ad6e82606db +CT= 55a8ef8cae213fe3fd6aa77e7415400a +PT= 0b07beb71461356645936996ac45eb87 +TEST= 74 +KEY= 46475b4c21f0f4895fefcc67632dbcdc62828763392b25d1cc0743404463ed5c +CT= 0b07beb71461356645936996ac45eb87 +PT= 6dfa5978f740c18cee6f70ff50008bfd +TEST= 75 +KEY= cf89bdde5d363b3c44db6fed2dab47aa0f78de1bce6be45d226833bf146366a1 +CT= 6dfa5978f740c18cee6f70ff50008bfd +PT= 6f58747f0336a2c4d2a397511e06d703 +TEST= 76 +KEY= 85f7d4a4503f7c3d52998384f8b29bef6020aa64cd5d4699f0cba4ee0a65b1a2 +CT= 6f58747f0336a2c4d2a397511e06d703 +PT= 32ac7b1b8ffa7d411f46c129eeffaf13 +TEST= 77 +KEY= cde87d2dfb6198cfc737d93433419757528cd17f42a73bd8ef8d65c7e49a1eb1 +CT= 32ac7b1b8ffa7d411f46c129eeffaf13 +PT= cf5d039714814e72ece7b9d5d1b27d11 +TEST= 78 +KEY= bcb9f75f11496aabfe2633e393b59b449dd1d2e8562675aa036adc12352863a0 +CT= cf5d039714814e72ece7b9d5d1b27d11 +PT= 3455f997002a1818967e2679a07c1d56 +TEST= 79 +KEY= 99e143b3524e724a009533aec659e15ba9842b7f560c6db29514fa6b95547ef6 +CT= 3455f997002a1818967e2679a07c1d56 +PT= 1f2113d44e290f1379a3cec6d57d6279 +TEST= 80 +KEY= 90086c83794d6878ff2ce748eca6edf4b6a538ab182562a1ecb734ad40291c8f +CT= 1f2113d44e290f1379a3cec6d57d6279 +PT= 88866db676aa3b21954afde0a0f33007 +TEST= 81 +KEY= fa254eb868f6cd5965346acae326bd2a3e23551d6e8f598079fdc94de0da2c88 +CT= 88866db676aa3b21954afde0a0f33007 +PT= a1665ad0252764e2691e65fefb609cda +TEST= 82 +KEY= 92032c92feeb0a5cd5d71aaf1bf5f47d9f450fcd4ba83d6210e3acb31bbab052 +CT= a1665ad0252764e2691e65fefb609cda +PT= 988ce348430a206546379a8c684c00f1 +TEST= 83 +KEY= cf32144187f7b98256b5b4204dfabc8807c9ec8508a21d0756d4363f73f6b0a3 +CT= 988ce348430a206546379a8c684c00f1 +PT= 60289f0b6a9add08bf8924aa6d7f4d12 +TEST= 84 +KEY= a7bd244360e3c325f3ea315c86959dd867e1738e6238c00fe95d12951e89fdb1 +CT= 60289f0b6a9add08bf8924aa6d7f4d12 +PT= fa3ea122499d7e083d81f147d9d68b09 +TEST= 85 +KEY= 86213610edc35a883a3364e8d529c6459ddfd2ac2ba5be07d4dce3d2c75f76b8 +CT= fa3ea122499d7e083d81f147d9d68b09 +PT= 8e0b2452ef0515fc554a0aadf107714d +TEST= 86 +KEY= 92cc3ae4a2a68cd93634075e902c66cb13d4f6fec4a0abfb8196e97f365807f5 +CT= 8e0b2452ef0515fc554a0aadf107714d +PT= 463ceae83a50ba54280e792ab6b29b94 +TEST= 87 +KEY= 6d86fa00dbb949a29d4a6166f1ef531e55e81c16fef011afa998905580ea9c61 +CT= 463ceae83a50ba54280e792ab6b29b94 +PT= 416ca710b874e50cc98df842b3435ad1 +TEST= 88 +KEY= c9400c98a04f5041be1c6090a866f7da1484bb064684f4a36015681733a9c6b0 +CT= 416ca710b874e50cc98df842b3435ad1 +PT= 3ba8bb5c572c0404e4b8199528825904 +TEST= 89 +KEY= ed5043e9699b37844033e8bd170588342f2c005a11a8f0a784ad71821b2b9fb4 +CT= 3ba8bb5c572c0404e4b8199528825904 +PT= 1d2812de70aa2d59894da4da7fe906fc +TEST= 90 +KEY= 1964c6c301eeef60b34e8e35175caf8d320412846102ddfe0de0d55864c29948 +CT= 1d2812de70aa2d59894da4da7fe906fc +PT= 2735caafe653442ffc2e878ae2829998 +TEST= 91 +KEY= 567b1e0737d0f72f82eb3a47d17209191531d82b875199d1f1ce52d2864000d0 +CT= 2735caafe653442ffc2e878ae2829998 +PT= 07b5fa4835e5dfc67e02f490a497145d +TEST= 92 +KEY= 89aad6dca6a8973580d02768ebc8372412842263b2b446178fcca64222d7148d +CT= 07b5fa4835e5dfc67e02f490a497145d +PT= a31272ec8623213b015811fae12330ce +TEST= 93 +KEY= 4b4ab47a0dba39907d8e919767e69518b196508f3497672c8e94b7b8c3f42443 +CT= a31272ec8623213b015811fae12330ce +PT= 9132ab51c9738a62cabde4977947e0bf +TEST= 94 +KEY= bec71999aee5517c243b65830d30debb20a4fbdefde4ed4e4429532fbab3c4fc +CT= 9132ab51c9738a62cabde4977947e0bf +PT= 689375ea83b61894631e6efa2d509531 +TEST= 95 +KEY= 77ce2c97a458300d7c95c6871ceb56d648378e347e52f5da27373dd597e351cd +CT= 689375ea83b61894631e6efa2d509531 +PT= aaa5c6c5917dfc103383de6c79eb2ba6 +TEST= 96 +KEY= 0ad691774612f7efa41fe39b8b3a2d14e29248f1ef2f09ca14b4e3b9ee087a6b +CT= aaa5c6c5917dfc103383de6c79eb2ba6 +PT= 29d9945bdb3770ed2a41d2760d0dc51d +TEST= 97 +KEY= 4e1d42adc4cef6bae3a5b9e08f7acd65cb4bdcaa341879273ef531cfe305bf76 +CT= 29d9945bdb3770ed2a41d2760d0dc51d +PT= 2f9b3c4e1fdcdc8f7d5dfbea342284f2 +TEST= 98 +KEY= 2d76a3e35c075db14e40a59f46e07a81e4d0e0e42bc4a5a843a8ca25d7273b84 +CT= 2f9b3c4e1fdcdc8f7d5dfbea342284f2 +PT= ed4cfcf1c8d226ebaccc8ff11b1c81b8 +TEST= 99 +KEY= e7364d0d17d723a69c0ba956778bd0e9099c1c15e3168343ef6445d4cc3bba3c +CT= ed4cfcf1c8d226ebaccc8ff11b1c81b8 +PT= 2f9b5e1392b767e8497f849d00e98193 +TEST= 100 +KEY= 709380c7012cb4272a69f6d4936b163e2607420671a1e4aba61bc149ccd23baf +CT= 2f9b5e1392b767e8497f849d00e98193 +PT= 3be783a4a38efb44150aa7a08e1888f6 +TEST= 101 +KEY= 98ff27b8ab7b91f690231e24608076ef1de0c1a2d22f1fefb31166e942cab359 +CT= 3be783a4a38efb44150aa7a08e1888f6 +PT= f35aed9c83e53d2eadde507345096218 +TEST= 102 +KEY= 24f9d2ff633ee9aaed7321cfcf4d1d20eeba2c3e51ca22c11ecf369a07c3d141 +CT= f35aed9c83e53d2eadde507345096218 +PT= a22bf93fd521a6e59c196022ff252dc2 +TEST= 103 +KEY= 70e491840bc5c42a878655e18e9aaaa74c91d50184eb842482d656b8f8e6fc83 +CT= a22bf93fd521a6e59c196022ff252dc2 +PT= 11e67b52f8cd97d63268485eb546e1fe +TEST= 104 +KEY= 098ff2d6de55ff5c66d5ad7d5949643a5d77ae537c2613f2b0be1ee64da01d7d +CT= 11e67b52f8cd97d63268485eb546e1fe +PT= 1e67af3f7e7fdefb868696e96f718acc +TEST= 105 +KEY= b89ea7cbae57b8ad39f23b22a8f651a44310016c0259cd093638880f22d197b1 +CT= 1e67af3f7e7fdefb868696e96f718acc +PT= 332b0045710b2dd6ec3d619051580c7f +TEST= 106 +KEY= 39f71bc56ebfa91088499dc41a0c5b5b703b01297352e0dfda05e99f73899bce +CT= 332b0045710b2dd6ec3d619051580c7f +PT= 86f3d75d18f7ab31c6c52c19b0c35023 +TEST= 107 +KEY= 417147db03fda0b26beed7fe8a9487d5f6c8d6746ba54bee1cc0c586c34acbed +CT= 86f3d75d18f7ab31c6c52c19b0c35023 +PT= 452e6c2da8b93a1e282f1a86aecb9f15 +TEST= 108 +KEY= c4336c26c20ad7811578044800a51e8eb3e6ba59c31c71f034efdf006d8154f8 +CT= 452e6c2da8b93a1e282f1a86aecb9f15 +PT= 637f010bac28ac108331f4e26b262d3a +TEST= 109 +KEY= d0369c75d40eef29cf7588fb87ee2ed2d099bb526f34dde0b7de2be206a779c2 +CT= 637f010bac28ac108331f4e26b262d3a +PT= 3f3dca8b4c2ddfd556880a17fb575e7b +TEST= 110 +KEY= 4de25218630a678c287ec42f93985d22efa471d923190235e15621f5fdf027b9 +CT= 3f3dca8b4c2ddfd556880a17fb575e7b +PT= 3da8c1d40b51a8bc6e728d7a1e6b3b2e +TEST= 111 +KEY= c0526c3096805b532433c0248e153a00d20cb00d2848aa898f24ac8fe39b1c97 +CT= 3da8c1d40b51a8bc6e728d7a1e6b3b2e +PT= 449b050578191e4c156f7040ef27d5ec +TEST= 112 +KEY= 6a1b7384328baa25b6a857fb12a90fd49697b5085051b4c59a4bdccf0cbcc97b +CT= 449b050578191e4c156f7040ef27d5ec +PT= d58aca128f936803bdd5ec1e6decab04 +TEST= 113 +KEY= 44b7f3eb0ef0ef4325353d30f35c4d71431d7f1adfc2dcc6279e30d16150627f +CT= d58aca128f936803bdd5ec1e6decab04 +PT= 77f1011f968ad46338ca68d5df37959e +TEST= 114 +KEY= e1e6bbd70aeac4d65159422b3dfe82df34ec7e05494808a51f545804be67f7e1 +CT= 77f1011f968ad46338ca68d5df37959e +PT= fc692161766a29c9e6a86c353e2f3fe5 +TEST= 115 +KEY= 5c33a88179175bb12593d6574245a6a6c8855f643f22216cf9fc34318048c804 +CT= fc692161766a29c9e6a86c353e2f3fe5 +PT= f5fd2f77bc4908f470142417048c6233 +TEST= 116 +KEY= e6a3cdd47570aec4fc3b3453f78f253f3d787013836b299889e8102684c4aa37 +CT= f5fd2f77bc4908f470142417048c6233 +PT= fbdc2774d7e426cbd8b62abd0e0eaa6f +TEST= 117 +KEY= 4f5b3edc53366d4c74d94663e17cbdb6c6a45767548f0f53515e3a9b8aca0058 +CT= fbdc2774d7e426cbd8b62abd0e0eaa6f +PT= 796d978c9d724c1c9445ec5bd272ceb0 +TEST= 118 +KEY= 9119ad19e78100b3d04bed87ff5c22b5bfc9c0ebc9fd434fc51bd6c058b8cee8 +CT= 796d978c9d724c1c9445ec5bd272ceb0 +PT= 15ecf7d3f516d3cba0307959287a5bab +TEST= 119 +KEY= 600b4d7604ff2650611c453a50d02275aa2537383ceb9084652baf9970c29543 +CT= 15ecf7d3f516d3cba0307959287a5bab +PT= da67996084e9c74c143310fc3cf207dd +TEST= 120 +KEY= 3b8e0b73bbf745bb360ea50e7da9b3297042ae58b80257c87118bf654c30929e +CT= da67996084e9c74c143310fc3cf207dd +PT= 6e9bc50580d45d54feec74830c0d9516 +TEST= 121 +KEY= 231592d0ce761359ae2e85cc4e4156a01ed96b5d38d60a9c8ff4cbe6403d0788 +CT= 6e9bc50580d45d54feec74830c0d9516 +PT= a4b0f6a50c72c5ee755fa5595334df2e +TEST= 122 +KEY= 7abd82d278910b909b0d6219ef5e0d98ba699df834a4cf72faab6ebf1309d8a6 +CT= a4b0f6a50c72c5ee755fa5595334df2e +PT= 24cdaeeb54a1eb7e2d4a0bee526ea6e0 +TEST= 123 +KEY= 5c8f7b23850bd287f011e257d691f8979ea433136005240cd7e1655141677e46 +CT= 24cdaeeb54a1eb7e2d4a0bee526ea6e0 +PT= 84f24cdc0aa63cea2dde8f94c8776765 +TEST= 124 +KEY= df8eee46309021f6e7d7d41908b6cabe1a567fcf6aa318e6fa3feac589101923 +CT= 84f24cdc0aa63cea2dde8f94c8776765 +PT= eea20542dedb0b99a2144942ffeac820 +TEST= 125 +KEY= 8634a663d618b3bb54f44a5849170acdf4f47a8db478137f582ba38776fad103 +CT= eea20542dedb0b99a2144942ffeac820 +PT= cdd91737753be9f672a60dd722202127 +TEST= 126 +KEY= e41913e97f21a4e6a948abeb45279e0d392d6dbac143fa892a8dae5054daf024 +CT= cdd91737753be9f672a60dd722202127 +PT= e6e2f7846e06bb90f19b21521dd4d238 +TEST= 127 +KEY= 1e63624b5eadbe7d42255f208cc7d348dfcf9a3eaf454119db168f02490e221c +CT= e6e2f7846e06bb90f19b21521dd4d238 +PT= 0110ca2647d43c8bd012976113efb860 +TEST= 128 +KEY= 8476329019aa4d0d91c71e0dfff47906dedf5018e8917d920b0418635ae19a7c +CT= 0110ca2647d43c8bd012976113efb860 +PT= cc9aacc98876387d09565f1a20d329af +TEST= 129 +KEY= db1c0803bc1ad91c5621fa8c54aa83ef1245fcd160e745ef025247797a32b3d3 +CT= cc9aacc98876387d09565f1a20d329af +PT= 55ab296d67deeba179ad8093c1952cc2 +TEST= 130 +KEY= 5c0887ff7c888d7800c43bc9e88d9b3b47eed5bc0739ae4e7bffc7eabba79f11 +CT= 55ab296d67deeba179ad8093c1952cc2 +PT= 27016691505182706848cd5d7a2c5cab +TEST= 131 +KEY= 0ffbe12adfa17f3bf26622c20311d38960efb32d57682c3e13b70ab7c18bc3ba +CT= 27016691505182706848cd5d7a2c5cab +PT= 5e6c9faf480ffe51d7687ade203d5367 +TEST= 132 +KEY= c4c12330bc21062618e2e83ec3755dac3e832c821f67d26fc4df7069e1b690dd +CT= 5e6c9faf480ffe51d7687ade203d5367 +PT= 082ff20dc6afba3888348e5724f5c526 +TEST= 133 +KEY= 3f6bf56a0136c1058924fcd831a65ebc36acde8fd9c868574cebfe3ec54355fb +CT= 082ff20dc6afba3888348e5724f5c526 +PT= 67ae68cdda349a067339f28fa216a188 +TEST= 134 +KEY= 4ab9e8e9b5bb84353006ab43065c6b8f5102b64203fcf2513fd20cb16755f473 +CT= 67ae68cdda349a067339f28fa216a188 +PT= 3316f37f97d679b78a537a0e107923ab +TEST= 135 +KEY= e04de045508423d735b20168c7974cc26214453d942a8be6b58176bf772cd7d8 +CT= 3316f37f97d679b78a537a0e107923ab +PT= 00aeb331686999c5f5fb1e7c6ccf1072 +TEST= 136 +KEY= d4d19e570760468e9703f0e49c4ac9f262baf60cfc431223407a68c31be3c7aa +CT= 00aeb331686999c5f5fb1e7c6ccf1072 +PT= 29a5db93d2ae9b1ed9714213ead9aa1c +TEST= 137 +KEY= 6d6789354d2cc3efa9abfc466f21a6e24b1f2d9f2eed893d990b2ad0f13a6db6 +CT= 29a5db93d2ae9b1ed9714213ead9aa1c +PT= e98426cb0f858a084eb66311188d9200 +TEST= 138 +KEY= 06ed66801b81943bf1640aae222a23c7a29b0b5421680335d7bd49c1e9b7ffb6 +CT= e98426cb0f858a084eb66311188d9200 +PT= 21527326577425261f2d40268c428e29 +TEST= 139 +KEY= 2232758279a806c21870c85273c12fa883c97872761c2613c89009e765f5719f +CT= 21527326577425261f2d40268c428e29 +PT= cc9393a43b8a8194c0ec29f989e597a6 +TEST= 140 +KEY= e7e22c2a6e6d4a1bfe7b706047094af44f5aebd64d96a787087c201eec10e639 +CT= cc9393a43b8a8194c0ec29f989e597a6 +PT= 714846062b262a823b24164900df91ad +TEST= 141 +KEY= 89a78f64bcaee02cac92928134c2567c3e12add066b08d0533583657eccf7794 +CT= 714846062b262a823b24164900df91ad +PT= 1d0ac79d1e9bb36a6a6a8e49538c08ff +TEST= 142 +KEY= 4f6e8d81296c95faa0fe6f2d324a392223186a4d782b3e6f5932b81ebf437f6b +CT= 1d0ac79d1e9bb36a6a6a8e49538c08ff +PT= 403d8b10e0ab31493589affa8e8b1bee +TEST= 143 +KEY= 24e398291cf018e4666728f4f635f74d6325e15d98800f266cbb17e431c86485 +CT= 403d8b10e0ab31493589affa8e8b1bee +PT= 9e0516eda401daaf6ac013841c0d63c8 +TEST= 144 +KEY= f80cf8af1fa463d2ed7c7f59c1b239b0fd20f7b03c81d589067b04602dc5074d +CT= 9e0516eda401daaf6ac013841c0d63c8 +PT= 74b2b200922b21aa20a0c5860cfb7e4d +TEST= 145 +KEY= 577a5456424e1a76c3e113eb82ccdf34899245b0aeaaf42326dbc1e6213e7900 +CT= 74b2b200922b21aa20a0c5860cfb7e4d +PT= 25aff27e13888a638cda2673d7f16afd +TEST= 146 +KEY= 7c623bbd4777e6ef9bc058df5ba27beaac3db7cebd227e40aa01e795f6cf13fd +CT= 25aff27e13888a638cda2673d7f16afd +PT= a54f400ab9c52913d7302ba36bf217dd +TEST= 147 +KEY= a8b33e433720c4b925c4f0315ddb73b00972f7c404e757537d31cc369d3d0420 +CT= a54f400ab9c52913d7302ba36bf217dd +PT= 48a263a07112aa95ea1414ce03545790 +TEST= 148 +KEY= da864b91aed3e2fac25782f4a50c13c841d0946475f5fdc69725d8f89e6953b0 +CT= 48a263a07112aa95ea1414ce03545790 +PT= 541547e924522e59c1721d130b64d92f +TEST= 149 +KEY= eeb5ff6f9c435510e12934f5e806553e15c5d38d51a7d39f5657c5eb950d8a9f +CT= 541547e924522e59c1721d130b64d92f +PT= 5830544939eb4607145538388840248b +TEST= 150 +KEY= 24e609ad29e4c601189cb2fe119767884df587c4684c95984202fdd31d4dae14 +CT= 5830544939eb4607145538388840248b +PT= cbe1f82fd3318448aa36adb5967ef865 +TEST= 151 +KEY= 5a7ebb76c38c2e5f038612a06e84bb2c86147febbb7d11d0e83450668b335671 +CT= cbe1f82fd3318448aa36adb5967ef865 +PT= 3b104547d2d620879e3cb2b5774c0fb4 +TEST= 152 +KEY= 827efcb7bc862c2466b8c79fc297ad3dbd043aac69ab31577608e2d3fc7f59c5 +CT= 3b104547d2d620879e3cb2b5774c0fb4 +PT= b667f7544fe49a07611a160e3312f69a +TEST= 153 +KEY= 9bc6c18805144f98caea7b252b3ee2930b63cdf8264fab501712f4ddcf6daf5f +CT= b667f7544fe49a07611a160e3312f69a +PT= c3e928fdeb5d7ddf7cf32c4dbcfe32f3 +TEST= 154 +KEY= 2bc00df6d26f9a968c3bff47ae761718c88ae505cd12d68f6be1d89073939dac +CT= c3e928fdeb5d7ddf7cf32c4dbcfe32f3 +PT= 72a9cf7aa2edaf1907d77d10a02a45de +TEST= 155 +KEY= 15a0ee054e2d5e7edcf3fc766860accdba232a7f6fff79966c36a580d3b9d872 +CT= 72a9cf7aa2edaf1907d77d10a02a45de +PT= 97abfaad506940f88fdc8f55ad7ea919 +TEST= 156 +KEY= c56c11f3a96852119c16751963c24cd42d88d0d23f96396ee3ea2ad57ec7716b +CT= 97abfaad506940f88fdc8f55ad7ea919 +PT= dd55a02b1eb01eb091ca6337d0beb5bd +TEST= 157 +KEY= 8634cc7b3416fce337aafa39791d1545f0dd70f9212627de722049e2ae79c4d6 +CT= dd55a02b1eb01eb091ca6337d0beb5bd +PT= c5eb3df5a328b267f3895cecd4a828af +TEST= 158 +KEY= ddc1361e1432ccac3551e2478a321a0035364d0c820e95b981a9150e7ad1ec79 +CT= c5eb3df5a328b267f3895cecd4a828af +PT= 49952dacd97fd5583a7d9c4ff515ec17 +TEST= 159 +KEY= 52658eec2a7441d866cfa15944bb12857ca360a05b7140e1bbd489418fc4006e +CT= 49952dacd97fd5583a7d9c4ff515ec17 +PT= 4971eeef871e935ac470bd770802b04b +TEST= 160 +KEY= 05fc7a181b1935ea8dcec961b0dfc14b35d28e4fdc6fd3bb7fa4343687c6b025 +CT= 4971eeef871e935ac470bd770802b04b +PT= 3db5e9165c24ec3790dc3e53e5e5d2de +TEST= 161 +KEY= 8d2793b7bdcf80338aa39c86008361bc08676759804b3f8cef780a65622362fb +CT= 3db5e9165c24ec3790dc3e53e5e5d2de +PT= 1fdb5d4fbb59f082b3b617c8a23734f1 +TEST= 162 +KEY= 37be37961b77866869826907bb9e9c1717bc3a163b12cf0e5cce1dadc014560a +CT= 1fdb5d4fbb59f082b3b617c8a23734f1 +PT= 8c59775ad3ff7c337b22c8e785321e25 +TEST= 163 +KEY= f3184ea1c8ffe3d436bee076aa999b659be54d4ce8edb33d27ecd54a4526482f +CT= 8c59775ad3ff7c337b22c8e785321e25 +PT= 0cb834fcc0cfdaecaf4afc5a2e38df23 +TEST= 164 +KEY= cacf50d99b066eb84cbfaeec9b0d6769975d79b0282269d188a629106b1e970c +CT= 0cb834fcc0cfdaecaf4afc5a2e38df23 +PT= 229eb7b6a97d91921bcd8c95a0d7c17b +TEST= 165 +KEY= 3fa80e4fb785b9fc3b058cc62d289958b5c3ce06815ff843936ba585cbc95677 +CT= 229eb7b6a97d91921bcd8c95a0d7c17b +PT= 0d7692c281dd4ff35d9b1620e1385c34 +TEST= 166 +KEY= ce2a3a893c96a4f1aa81ad52ebcc3c23b8b55cc40082b7b0cef0b3a52af10a43 +CT= 0d7692c281dd4ff35d9b1620e1385c34 +PT= d3c5fe594f5c8c5a359235448eb20146 +TEST= 167 +KEY= fc8642db8cb42d1b1251cb7fe6aff90d6b70a29d4fde3beafb6286e1a4430b05 +CT= d3c5fe594f5c8c5a359235448eb20146 +PT= 8c0f88460c700d96847249807b84223f +TEST= 168 +KEY= 2a9c9fd184a5b2418fd415a228a5c0afe77f2adb43ae367c7f10cf61dfc7293a +CT= 8c0f88460c700d96847249807b84223f +PT= 5a4237a5c2dabdcda6389d5fc66032f6 +TEST= 169 +KEY= fdb533163e989d2fa32cca5d3cc5d376bd3d1d7e81748bb1d928523e19a71bcc +CT= 5a4237a5c2dabdcda6389d5fc66032f6 +PT= bf8aac6b1536cccceccc9d6be970eb3e +TEST= 170 +KEY= 3c4b3cf0fd0c4292b2497175d4400f8902b7b1159442477d35e4cf55f0d7f0f2 +CT= bf8aac6b1536cccceccc9d6be970eb3e +PT= 97ce58407fd26d63c86765cb05ea6277 +TEST= 171 +KEY= 367862f3e2c5520ea2269392b6139e9c9579e955eb902a1efd83aa9ef53d9285 +CT= 97ce58407fd26d63c86765cb05ea6277 +PT= b411687b044b624077a92d8c130697b9 +TEST= 172 +KEY= 0300af491daf6c607417fb1fd9b1ec612168812eefdb485e8a2a8712e63b053c +CT= b411687b044b624077a92d8c130697b9 +PT= d22e92a5132ea85f4fb25ee19c248008 +TEST= 173 +KEY= 7c92ef49a7d27e97f1884299b635f0adf346138bfcf5e001c598d9f37a1f8534 +CT= d22e92a5132ea85f4fb25ee19c248008 +PT= fd6817cd680a2a8ce93e4b4f9caa72aa +TEST= 174 +KEY= 80eabb1d8c9b5f769fcac87ed8d0c9ca0e2e044694ffca8d2ca692bce6b5f79e +CT= fd6817cd680a2a8ce93e4b4f9caa72aa +PT= 8ddd9b3b9278d2de3453ea6769e1c39c +TEST= 175 +KEY= fb345e2d7bbbed527259faeaea79c05d83f39f7d0687185318f578db8f543402 +CT= 8ddd9b3b9278d2de3453ea6769e1c39c +PT= ae69f5cd8d342e74113e979ace3539f2 +TEST= 176 +KEY= 7d93dc33ff2266770291160cd317c65e2d9a6ab08bb3362709cbef4141610df0 +CT= ae69f5cd8d342e74113e979ace3539f2 +PT= 30e19a4e84997172486dae4fb4c41e58 +TEST= 177 +KEY= 82362ff3e9c1ad93474cf4cabd354e7e1d7bf0fe0f2a475541a6410ef5a513a8 +CT= 30e19a4e84997172486dae4fb4c41e58 +PT= 75b3d07617eb189512dc5161908940c1 +TEST= 178 +KEY= 8efd0fcb3855ccc16bd919fbd17596c768c8208818c15fc0537a106f652c5369 +CT= 75b3d07617eb189512dc5161908940c1 +PT= fd13e89107fafa44998721ad726c620f +TEST= 179 +KEY= 2299d22282c798107f489637dcd479c395dbc8191f3ba584cafd31c217403166 +CT= fd13e89107fafa44998721ad726c620f +PT= c1b0210c0387864717bd7d02063b6a69 +TEST= 180 +KEY= 75e05597a2bbdf23e5bd172c83548c9b546be9151cbc23c3dd404cc0117b5b0f +CT= c1b0210c0387864717bd7d02063b6a69 +PT= 0e442b38e9024cca5dc43a7b8d5f6fcf +TEST= 181 +KEY= 4dbc8dcb8c25b5f4ad374ba3064216555a2fc22df5be6f09808476bb9c2434c0 +CT= 0e442b38e9024cca5dc43a7b8d5f6fcf +PT= 8fd213ec19d62fd2c19e6c91b97e56a0 +TEST= 182 +KEY= e393bad07e955ebc1446b847de5a891ed5fdd1c1ec6840db411a1a2a255a6260 +CT= 8fd213ec19d62fd2c19e6c91b97e56a0 +PT= f52adfd33a68ee198f33708e676d0ce9 +TEST= 183 +KEY= 3f33a76f87db0388c2d66c7f2efaa1b820d70e12d600aec2ce296aa442376e89 +CT= f52adfd33a68ee198f33708e676d0ce9 +PT= 7649eb4283505eeee1be16db6677b3f5 +TEST= 184 +KEY= 04bc65de70c9e01eeeda5a507c218c8d569ee5505550f02c2f977c7f2440dd7c +CT= 7649eb4283505eeee1be16db6677b3f5 +PT= 6fb1c4ad8a5b8a606621a8bf4277f3dc +TEST= 185 +KEY= 8a6ef9710f4ae10eb60c8d25a8f67c50392f21fddf0b7a4c49b6d4c066372ea0 +CT= 6fb1c4ad8a5b8a606621a8bf4277f3dc +PT= 22c2cf9572d708f688291056e2f8e120 +TEST= 186 +KEY= ed6d084d5f8aa4f201f9c20ea26a90e81bedee68addc72bac19fc49684cfcf80 +CT= 22c2cf9572d708f688291056e2f8e120 +PT= 28ac7257911eceb549d910bfa0905ae5 +TEST= 187 +KEY= ba2735927d6a76b952c08a219fbb572233419c3f3cc2bc0f8846d429245f9565 +CT= 28ac7257911eceb549d910bfa0905ae5 +PT= 2a1f3842df988cda0c6415450a657db2 +TEST= 188 +KEY= 53bcc06cccbc31a5bee2ce88e6eaefac195ea47de35a30d58422c16c2e3ae8d7 +CT= 2a1f3842df988cda0c6415450a657db2 +PT= 6055eb3a24de4d87c6ba5073a5bac919 +TEST= 189 +KEY= df88c3cec31c7b88d8ac0c7aaa2ced99790b4f47c7847d524298911f8b8021ce +CT= 6055eb3a24de4d87c6ba5073a5bac919 +PT= cc051ccd37068b41935fd14538dfef82 +TEST= 190 +KEY= 265b351b93ff456d5a1eaadd2bea1296b50e538af082f613d1c7405ab35fce4c +CT= cc051ccd37068b41935fd14538dfef82 +PT= 225b63f455dd72ec87cf6fd5df0fdaf3 +TEST= 191 +KEY= bac4c541e0a693cf8a3892a82f67cd959755307ea55f84ff56082f8f6c5014bf +CT= 225b63f455dd72ec87cf6fd5df0fdaf3 +PT= 64027f6b72f0a11628f66d5c502658e8 +TEST= 192 +KEY= e8f68ef4909a128f331dfefae8560ebcf3574f15d7af25e97efe42d33c764c57 +CT= 64027f6b72f0a11628f66d5c502658e8 +PT= 529aaf9163eda1bc39e66d2556be938b +TEST= 193 +KEY= 1951b1a50bed04096c17e816d4ec6225a1cde084b442845547182ff66ac8dfdc +CT= 529aaf9163eda1bc39e66d2556be938b +PT= f93e85d98eb9bddd7d3844421235fbab +TEST= 194 +KEY= d39af070909fbc0e3226e28041b0286158f3655d3afb39883a206bb478fd2477 +CT= f93e85d98eb9bddd7d3844421235fbab +PT= 16b6b3cc08003ba36c9e84b1ee9cd7cc +TEST= 195 +KEY= b705c6ccd010b980e386b8690c83e96c4e45d69132fb022b56beef059661f3bb +CT= 16b6b3cc08003ba36c9e84b1ee9cd7cc +PT= 301afe66055149fa5775a9ce19f1ff63 +TEST= 196 +KEY= b3c813d4fcbd31ed95e7e71cec15153e7e5f28f737aa4bd101cb46cb8f900cd8 +CT= 301afe66055149fa5775a9ce19f1ff63 +PT= 1090e68f7c8400861589e304a5b815cd +TEST= 197 +KEY= 0ebc30adb6946b6415c0309d636c79f46ecfce784b2e4b571442a5cf2a281915 +CT= 1090e68f7c8400861589e304a5b815cd +PT= 2778f0c712804c0b8d085b196a4d73c4 +TEST= 198 +KEY= 9c5815c6705b39deecb8bdddc9329a0d49b73ebf59ae075c994afed640656ad1 +CT= 2778f0c712804c0b8d085b196a4d73c4 +PT= 14fecb137dc9c38a04d92b60a177a61d +TEST= 199 +KEY= 9d83b41f8f415b5f3b2c08682383471b5d49f5ac2467c4d69d93d5b6e112cccc +CT= 14fecb137dc9c38a04d92b60a177a61d +PT= 0ef1321ea52eaa7624e3f2efd0c886af +TEST= 200 +KEY= 2960cee0af043ed1a549ba223f6c1cf153b8c7b281496ea0b970275931da4a63 +CT= 0ef1321ea52eaa7624e3f2efd0c886af +PT= afa8b2129577ec178b59d42d1b92d313 +TEST= 201 +KEY= 51e0decf48a151021c70ec3ee3ce9008fc1075a0143e82b73229f3742a489970 +CT= afa8b2129577ec178b59d42d1b92d313 +PT= 3351631344e6ef86712327d3c05ebdeb +TEST= 202 +KEY= 5f34a789b0b1185ba7d1bb3ef2677060cf4116b350d86d31430ad4a7ea16249b +CT= 3351631344e6ef86712327d3c05ebdeb +PT= c299d0556b0d15014627cadbccc3dc33 +TEST= 203 +KEY= fc3e420f84f4c75802dcf68abf0030e70dd8c6e63bd57830052d1e7c26d5f8a8 +CT= c299d0556b0d15014627cadbccc3dc33 +PT= ceb83a2b9dd76b649baae48a8b772a5c +TEST= 204 +KEY= c04448ad77dbf33f22a2346c7a40f813c360fccda60213549e87faf6ada2d2f4 +CT= ceb83a2b9dd76b649baae48a8b772a5c +PT= a8c6aec94e82bc68ac8e29a8cb9504f6 +TEST= 205 +KEY= 3fa863ecc4afa141dd7349c44f94fee16ba65204e880af3c3209d35e6637d602 +CT= a8c6aec94e82bc68ac8e29a8cb9504f6 +PT= 1eded55c8d3309f828c17af072c79d7a +TEST= 206 +KEY= 8893e5fb27191ae09e4ab5f062289f117578875865b3a6c41ac8a9ae14f04b78 +CT= 1eded55c8d3309f828c17af072c79d7a +PT= fd2ac22891fb294eb0ad2badfe759c29 +TEST= 207 +KEY= 90ba1205bb7927e86f9895855648d3eb88524570f4488f8aaa658203ea85d751 +CT= fd2ac22891fb294eb0ad2badfe759c29 +PT= 2fe6ae59acd516ee1567a7a1c43fde2a +TEST= 208 +KEY= 278fd88834ea67564f301785c4045d6fa7b4eb29589d9964bf0225a22eba097b +CT= 2fe6ae59acd516ee1567a7a1c43fde2a +PT= 35bec13f159f61c7ef4c860ad3b41a75 +TEST= 209 +KEY= e9d2f23c213d02724737a5e907bfbdf0920a2a164d02f8a3504ea3a8fd0e130e +CT= 35bec13f159f61c7ef4c860ad3b41a75 +PT= 650d65d6ed716da515eaaf1a7447c3fb +TEST= 210 +KEY= 4a0a997634e2d9305795fc90291f6fd9f7074fc0a073950645a40cb28949d0f5 +CT= 650d65d6ed716da515eaaf1a7447c3fb +PT= 7afe0d2f234a6cdedd7103da09147285 +TEST= 211 +KEY= bd671dd81f8fcd9d472564589aa13f5d8df942ef8339f9d898d50f68805da270 +CT= 7afe0d2f234a6cdedd7103da09147285 +PT= 40627620b17313af42ea7dd6cfd900f9 +TEST= 212 +KEY= 5668f777c46bf78dc664e72186626bf5cd9b34cf324aea77da3f72be4f84a289 +CT= 40627620b17313af42ea7dd6cfd900f9 +PT= 0c62985837c8c6fb468bd6e3928f8497 +TEST= 213 +KEY= b82b5d4c3def62cfae064cfdb5d904efc1f9ac9705822c8c9cb4a45ddd0b261e +CT= 0c62985837c8c6fb468bd6e3928f8497 +PT= a1fff4635aaf2ad8ae6ea8c70858ef3b +TEST= 214 +KEY= 6a179ef63528efa2b12dba23d1ec8d21600658f45f2d065432da0c9ad553c925 +CT= a1fff4635aaf2ad8ae6ea8c70858ef3b +PT= 403f8e2d050e2976487bbedd6466357e +TEST= 215 +KEY= 6857720ac4ddcffe8a96b455c973901a2039d6d95a232f227aa1b247b135fc5b +CT= 403f8e2d050e2976487bbedd6466357e +PT= 2dd7eb8476988c850e8d95dc598fc61a +TEST= 216 +KEY= 5b938e230bfe9056471e7c83a6ed03930dee3d5d2cbba3a7742c279be8ba3a41 +CT= 2dd7eb8476988c850e8d95dc598fc61a +PT= 676b96f400ae18138b302fd3d70d490e +TEST= 217 +KEY= 4ce7eca340dec23715c53343eb9162da6a85aba92c15bbb4ff1c08483fb7734f +CT= 676b96f400ae18138b302fd3d70d490e +PT= 620aaa14b94bf6b60a83129085bcf02b +TEST= 218 +KEY= 1024ece618d140cae8b9dfc8eb1de137088f01bd955e4d02f59f1ad8ba0b8364 +CT= 620aaa14b94bf6b60a83129085bcf02b +PT= b701a38325dc282045c6f914394b9f70 +TEST= 219 +KEY= 6b8c6da855e1e72e4a6ac44601b24d60bf8ea23eb0826522b059e3cc83401c14 +CT= b701a38325dc282045c6f914394b9f70 +PT= 808d0b334b775c59f8c34a3524cb4126 +TEST= 220 +KEY= c50a625a89465321daccb9eb40def57d3f03a90dfbf5397b489aa9f9a78b5d32 +CT= 808d0b334b775c59f8c34a3524cb4126 +PT= 4e29c921cc295f6a3082c1bc02acda70 +TEST= 221 +KEY= 973341a4e3db315fa97c7eedf493ea71712a602c37dc661178186845a5278742 +CT= 4e29c921cc295f6a3082c1bc02acda70 +PT= 77bc204e50efca2aebdc16d3f3c3d739 +TEST= 222 +KEY= 639eb8fb16b34b55550705fdcff7c8cc069640626733ac3b93c47e9656e4507b +CT= 77bc204e50efca2aebdc16d3f3c3d739 +PT= a677a7b55aa03eb0587ee00123d047f3 +TEST= 223 +KEY= 610a9602b725e4d87ab2904e91050d90a0e1e7d73d93928bcbba9e9775341788 +CT= a677a7b55aa03eb0587ee00123d047f3 +PT= 09af5421548ac11466370484f8c556de +TEST= 224 +KEY= 314a6e0bd202458489059738917b6678a94eb3f66919539fad8d9a138df14156 +CT= 09af5421548ac11466370484f8c556de +PT= b6cdd2336ab8735ee7a9946a1fe7ee0c +TEST= 225 +KEY= 73658c0f88490f7c3b9f2b7b39551bbf1f8361c503a120c14a240e799216af5a +CT= b6cdd2336ab8735ee7a9946a1fe7ee0c +PT= b5a2f3b47e4ac87bc06612587253930e +TEST= 226 +KEY= 968794dec3e866de4f999c860e9851e9aa2192717debe8ba8a421c21e0453c54 +CT= b5a2f3b47e4ac87bc06612587253930e +PT= 09c9c38bb3348147eb284ffa24d87244 +TEST= 227 +KEY= 205605e66a4be2cf61e13243e104fed9a3e851facedf69fd616a53dbc49d4e10 +CT= 09c9c38bb3348147eb284ffa24d87244 +PT= 9d1edca2674e5a30416df7cc2938dc63 +TEST= 228 +KEY= 9ca7508c83db6e56eff3489f2bd30c573ef68d58a99133cd2007a417eda59273 +CT= 9d1edca2674e5a30416df7cc2938dc63 +PT= e8a2282b47dab6a666a4607bbc857fc6 +TEST= 229 +KEY= 0f98884e85feb533cfc281c2f4437915d654a573ee4b856b46a3c46c5120edb5 +CT= e8a2282b47dab6a666a4607bbc857fc6 +PT= b6675d2263dc1c1e0f04a9a9bc666d2d +TEST= 230 +KEY= 3f3ed6dc6e08df2515d08273832429286033f8518d97997549a76dc5ed468098 +CT= b6675d2263dc1c1e0f04a9a9bc666d2d +PT= d6ff2642fd84c80674eaf8674242248d +TEST= 231 +KEY= 67910c06b57cd52767674b70f59337d8b6ccde13701351733d4d95a2af04a415 +CT= d6ff2642fd84c80674eaf8674242248d +PT= 47d4419a669253c39a0cc96c7cd612c0 +TEST= 232 +KEY= 43ee254e414db89044ee2f703b340f6af1189f89168102b0a7415cced3d2b6d5 +CT= 47d4419a669253c39a0cc96c7cd612c0 +PT= b2b3fd7a1d4b0695b3499430f2e44cea +TEST= 233 +KEY= 89c9881e6d6ceff00ddfc5618655fa4543ab62f30bca04251408c8fe2136fa3f +CT= b2b3fd7a1d4b0695b3499430f2e44cea +PT= 4aad0ae20aff0675cf78992dfd2b685c +TEST= 234 +KEY= 2c24846d047677f89ef73b917962d0fa0906681101350250db7051d3dc1d9263 +CT= 4aad0ae20aff0675cf78992dfd2b685c +PT= c90343412cfe70201ce22d9ad2222788 +TEST= 235 +KEY= 770637f8f8f32915bf7630919d0726aec0052b502dcb7270c7927c490e3fb5eb +CT= c90343412cfe70201ce22d9ad2222788 +PT= 923fe89134faf362802c5a2ebf399d2c +TEST= 236 +KEY= 426891cf6b068fac7ffb5a04874aec78523ac3c11931811247be2667b10628c7 +CT= 923fe89134faf362802c5a2ebf399d2c +PT= 9c08f05026196ba3550a2496049b720b +TEST= 237 +KEY= b66bcca5efaf3f448bdd52dc48f2b904ce3233913f28eab112b402f1b59d5acc +CT= 9c08f05026196ba3550a2496049b720b +PT= 7b487fd67d0c2d987c3defd335c2ef17 +TEST= 238 +KEY= 079ccbc13fcfb0d032293fdfec563f86b57a4c474224c7296e89ed22805fb5db +CT= 7b487fd67d0c2d987c3defd335c2ef17 +PT= cec12158856704ce8abf0ca6c6f3006b +TEST= 239 +KEY= 998afef458902ca632d60843a88d36637bbb6d1fc743c3e7e436e18446acb5b0 +CT= cec12158856704ce8abf0ca6c6f3006b +PT= da19c7c7283add9c5145abba53f1e7e1 +TEST= 240 +KEY= 95edaf196289ee6d24aa752df489defca1a2aad8ef791e7bb5734a3e155d5251 +CT= da19c7c7283add9c5145abba53f1e7e1 +PT= f043a57e686c1fe7dacb858f0c3e6857 +TEST= 241 +KEY= 3050d2c04c0860414427bf5b19792d7651e10fa68715019c6fb8cfb119633a06 +CT= f043a57e686c1fe7dacb858f0c3e6857 +PT= 2fb7b264bb4b3fafa01a6bb93cc2958d +TEST= 242 +KEY= 26186dd7be83659550ba3b52d99975037e56bdc23c5e3e33cfa2a40825a1af8b +CT= 2fb7b264bb4b3fafa01a6bb93cc2958d +PT= d46bbd3abd958da722f3591578c30f5e +TEST= 243 +KEY= de1d625b9c840580fdde57ede82419d1aa3d00f881cbb394ed51fd1d5d62a0d5 +CT= d46bbd3abd958da722f3591578c30f5e +PT= 3d69379ab60535902c38ab5e121dd035 +TEST= 244 +KEY= ff9396cb65ffb9d47ef4e0253fd98bba9754376237ce8604c16956434f7f70e0 +CT= 3d69379ab60535902c38ab5e121dd035 +PT= a5767f4e6c8482290bc7b76d23eef145 +TEST= 245 +KEY= b98b5f1ca9752b1b07514b72c3d585f23222482c5b4a042dcaaee12e6c9181a5 +CT= a5767f4e6c8482290bc7b76d23eef145 +PT= 9388736a82c99337c49bb4f32437b1da +TEST= 246 +KEY= 5f130919fb4ed29397e4781550b1d444a1aa3b46d983971a0e3555dd48a6307f +CT= 9388736a82c99337c49bb4f32437b1da +PT= 915c6c5181e797dadc289f8fff60cd19 +TEST= 247 +KEY= d3f202f140d38545c8a04ec2d0993e2b30f65717586400c0d21dca52b7c6fd66 +CT= 915c6c5181e797dadc289f8fff60cd19 +PT= a61167cdbe95abfad9c1a58bda90f0d4 +TEST= 248 +KEY= fbfa83b249c3b13c83e8fc111611391296e730dae6f1ab3a0bdc6fd96d560db2 +CT= a61167cdbe95abfad9c1a58bda90f0d4 +PT= 9af2b4cf00b037976d0f5cac4201885d +TEST= 249 +KEY= cc24cc54d0889912c7ad2473eba8bbb30c158415e6419cad66d333752f5785ef +CT= 9af2b4cf00b037976d0f5cac4201885d +PT= a9b74046119b6699fd5efd1e476bee64 +TEST= 250 +KEY= f520f18d9faca98e5f57226127fa9b6ba5a2c453f7dafa349b8dce6b683c6b8b +CT= a9b74046119b6699fd5efd1e476bee64 +PT= cd7eaa1ef3b91b69fd3e54fcc5a802e9 +TEST= 251 +KEY= 9bfd59a9f78fb1be6f13b701d7eb0f6268dc6e4d0463e15d66b39a97ad946962 +CT= cd7eaa1ef3b91b69fd3e54fcc5a802e9 +PT= fd7095c419e2722425e6d4ca1a393d8c +TEST= 252 +KEY= c1c39ac5158c8cdbe82cf37d00b7896995acfb891d81937943554e5db7ad54ee +CT= fd7095c419e2722425e6d4ca1a393d8c +PT= 9963ce47eb0322135c5d20b923fc341a +TEST= 253 +KEY= c9e26ae18d08643029c92f11bd3e8aa40ccf35cef682b16a1f086ee4945160f4 +CT= 9963ce47eb0322135c5d20b923fc341a +PT= 11589a1bdd037fababbb9bf5aac859a7 +TEST= 254 +KEY= 2183ff3c1eb1df48db8fa5f87f279f891d97afd52b81cec1b4b3f5113e993953 +CT= 11589a1bdd037fababbb9bf5aac859a7 +PT= b6cee1cd709be6e055041fc2e1a87539 +TEST= 255 +KEY= 738690954b4b92ce2367567b3a960e8dab594e185b1a2821e1b7ead3df314c6a +CT= b6cee1cd709be6e055041fc2e1a87539 +PT= d776658f01ccec460fa7145c6c6cbd42 +TEST= 256 +KEY= 71ab2dbd9923f08e516d8df0cf57cc227c2f2b975ad6c467ee10fe8fb35df128 +CT= d776658f01ccec460fa7145c6c6cbd42 +PT= 0c6d2578060a0a1024230d838aa45234 +TEST= 257 +KEY= 1c0e18c83d74e46ddf65bfc3335cff0d70420eef5cdcce77ca33f30c39f9a31c +CT= 0c6d2578060a0a1024230d838aa45234 +PT= bfd55d67ef4883200fdaeea5d44f0302 +TEST= 258 +KEY= 7da814bd80d8cbbee778e030682e7f34cf975388b3944d57c5e91da9edb6a01e +CT= bfd55d67ef4883200fdaeea5d44f0302 +PT= e821629542650fafef08d94ac889078a +TEST= 259 +KEY= 10490cd6f16d915ce9891c69e10884d827b6311df1f142f82ae1c4e3253fa794 +CT= e821629542650fafef08d94ac889078a +PT= f2f81cd9cbd3e932686b6195a97ee13a +TEST= 260 +KEY= f0114f7c7101931f6a4595a6c3d2f34ad54e2dc43a22abca428aa5768c4146ae +CT= f2f81cd9cbd3e932686b6195a97ee13a +PT= c90348c14450ee3d9bfa30377d4b2440 +TEST= 261 +KEY= c5802b19ba4921d3750a590f02658f621c4d65057e7245f7d9709541f10a62ee +CT= c90348c14450ee3d9bfa30377d4b2440 +PT= 619e907c4e7fd3a723e34b8d3880d71b +TEST= 262 +KEY= 236500ce70ac49e98907dc4edae41cca7dd3f579300d9650fa93deccc98ab5f5 +CT= 619e907c4e7fd3a723e34b8d3880d71b +PT= 932a17e8fda853f6db1c9271ec4fbf56 +TEST= 263 +KEY= 7bb7d14473e7e2d70f3c8c90d4b1035ceef9e291cda5c5a6218f4cbd25c50aa3 +CT= 932a17e8fda853f6db1c9271ec4fbf56 +PT= 549cb80c490e592e18acc04faa933489 +TEST= 264 +KEY= 415ad8391b32f6e61a861b4c8a4bbc6dba655a9d84ab9c8839238cf28f563e2a +CT= 549cb80c490e592e18acc04faa933489 +PT= bf6337bede116d5a60b06da8b270159c +TEST= 265 +KEY= 058f24c125eb3e94b54bb6f1f099501c05066d235abaf1d25993e15a3d262bb6 +CT= bf6337bede116d5a60b06da8b270159c +PT= cbd3d52496e6df0dbd065bd924c5001f +TEST= 266 +KEY= b85b96ec639098c392fd33d11a49251eced5b807cc5c2edfe495ba8319e32ba9 +CT= cbd3d52496e6df0dbd065bd924c5001f +PT= af8879c67df265e118096478fba003ad +TEST= 267 +KEY= 526bf9dcaf4a4dfd05fad0ea3b58131d615dc1c1b1ae4b3efc9cdefbe2432804 +CT= af8879c67df265e118096478fba003ad +PT= c627176029e2d22a51f5630b129a1095 +TEST= 268 +KEY= 553316781f120ee83a2d083d97d19f99a77ad6a1984c9914ad69bdf0f0d93891 +CT= c627176029e2d22a51f5630b129a1095 +PT= f46ac5870c65636d6c200312f2a15be6 +TEST= 269 +KEY= e9a37578c1402447d6cc1161f126d5c7531013269429fa79c149bee202786377 +CT= f46ac5870c65636d6c200312f2a15be6 +PT= 4fbbff3856fc0dec7ee18585ffa4ac16 +TEST= 270 +KEY= 78521b42d0fbe8ea8bb6d44d66ae476d1cabec1ec2d5f795bfa83b67fddccf61 +CT= 4fbbff3856fc0dec7ee18585ffa4ac16 +PT= 8711dae7dd9b3f6d9fad03669c1c8f5e +TEST= 271 +KEY= 851c9a078620280fbcddfb4fd3745c749bba36f91f4ec8f82005380161c0403f +CT= 8711dae7dd9b3f6d9fad03669c1c8f5e +PT= 050e884136e09368defbc43f6b3182cc +TEST= 272 +KEY= 50ccaa51d781b7090285d907e68b1f7a9eb4beb829ae5b90fefefc3e0af1c2f3 +CT= 050e884136e09368defbc43f6b3182cc +PT= cec37197cee3e0d797f441cc0541b851 +TEST= 273 +KEY= dab5ecb43982eae8412102e2b7bc7cea5077cf2fe74dbb47690abdf20fb07aa2 +CT= cec37197cee3e0d797f441cc0541b851 +PT= 197ecc091e5620dca63ba2e6cfbc9f43 +TEST= 274 +KEY= 57974d1c4bbf761c9e09b8dad3e510df49090326f91b9b9bcf311f14c00ce5e1 +CT= 197ecc091e5620dca63ba2e6cfbc9f43 +PT= f2e836dee9668e81d74a3c0f03cf3c10 +TEST= 275 +KEY= e37677110c5a9a59ec06e0968bf5d14ebbe135f8107d151a187b231bc3c3d9f1 +CT= f2e836dee9668e81d74a3c0f03cf3c10 +PT= dd581bb9f4a7bec66cac7916871f55c8 +TEST= 276 +KEY= 2cd760c245e62ea5b477bda094b3ad5166b92e41e4daabdc74d75a0d44dc8c39 +CT= dd581bb9f4a7bec66cac7916871f55c8 +PT= 7b05d43a3be733e0de6e2ce494141b46 +TEST= 277 +KEY= de35bf6bc48e8b8e6a30db886c9d75dd1dbcfa7bdf3d983caab976e9d0c8977f +CT= 7b05d43a3be733e0de6e2ce494141b46 +PT= 1d561dcaa42e92568dd6acd583ff7bce +TEST= 278 +KEY= 8ad7fcada5d092dd5d221532eed3fd1000eae7b17b130a6a276fda3c5337ecb1 +CT= 1d561dcaa42e92568dd6acd583ff7bce +PT= 1e9ab09a76fd91cc33b85390bde631f8 +TEST= 279 +KEY= 534eef6b1450693335980e00cd3cde361e70572b0dee9ba614d789aceed1dd49 +CT= 1e9ab09a76fd91cc33b85390bde631f8 +PT= cbd0e3a07952eac118a81b76d09276fd +TEST= 280 +KEY= 8a39c2221622785e4da9b14daae6adf3d5a0b48b74bc71670c7f92da3e43abb4 +CT= cbd0e3a07952eac118a81b76d09276fd +PT= ac20057b857e6c34f7e68a5765573538 +TEST= 281 +KEY= 50887ad2d325cbc04b5fd69518318bad7980b1f0f1c21d53fb99188d5b149e8c +CT= ac20057b857e6c34f7e68a5765573538 +PT= ddffd26ba5b33aea36a0a6d75eaa047c +TEST= 282 +KEY= 9613965c1776c5baea3cee6154aabc9fa47f639b547127b9cd39be5a05be9af0 +CT= ddffd26ba5b33aea36a0a6d75eaa047c +PT= f0883b6dd3ca0515cb9f1aba646ccb69 +TEST= 283 +KEY= e7f6db8a94597956cee07447f9bb5ca454f758f687bb22ac06a6a4e061d25199 +CT= f0883b6dd3ca0515cb9f1aba646ccb69 +PT= f4e27ca9e27b3e81b981298738c01fda +TEST= 284 +KEY= 0cb665943d6e6e32886a94c070366fb2a015245f65c01c2dbf278d6759124e43 +CT= f4e27ca9e27b3e81b981298738c01fda +PT= b03b2eb7a1e13e1a17c51ff5684e2a72 +TEST= 285 +KEY= 1ea698290e4b1d41b0cc4f3b9a9398ff102e0ae8c4212237a8e29292315c6431 +CT= b03b2eb7a1e13e1a17c51ff5684e2a72 +PT= be133ccce406c1c0bc1707115b5b0c84 +TEST= 286 +KEY= ba38f49fa3d4a74ed41f8da958a953c7ae3d36242027e3f714f595836a0768b5 +CT= be133ccce406c1c0bc1707115b5b0c84 +PT= a15b1c9bcf319aef262e366c142a0dcf +TEST= 287 +KEY= 935f2ceecbbcf3465db9b0db927af4310f662abfef16791832dba3ef7e2d657a +CT= a15b1c9bcf319aef262e366c142a0dcf +PT= 7a8da23874d28eb75261d87d57451eae +TEST= 288 +KEY= b8e67b884e3e229ebb516065499f790275eb88879bc4f7af60ba7b9229687bd4 +CT= 7a8da23874d28eb75261d87d57451eae +PT= 9331c989a7e291fd94ba4c945a79126e +TEST= 289 +KEY= cfb51be6cda499d66e7b36caac220fb7e6da410e3c266652f4003706731169ba +CT= 9331c989a7e291fd94ba4c945a79126e +PT= 70a2f921a8bb0548d91a114478308448 +TEST= 290 +KEY= 19821b21fed0c1659af4e16f49f63b699678b82f949d631a2d1a26420b21edf2 +CT= 70a2f921a8bb0548d91a114478308448 +PT= 8ed8fc98045ba0ef9c15e9565eece5bb +TEST= 291 +KEY= 27da5e31e794d670bdb701f361b8977018a044b790c6c3f5b10fcf1455cd0849 +CT= 8ed8fc98045ba0ef9c15e9565eece5bb +PT= f6621989afc0427e3e84039b6c6c2e75 +TEST= 292 +KEY= 64e8f7c4292df7d0b01bed3fae08da4feec25d3e3f06818b8f8bcc8f39a1263c +CT= f6621989afc0427e3e84039b6c6c2e75 +PT= 68f4804d1e8d383faf4e76f80fb8f92b +TEST= 293 +KEY= ee626affe4997c11cae2714ff96d84b18636dd73218bb9b420c5ba773619df17 +CT= 68f4804d1e8d383faf4e76f80fb8f92b +PT= 2d61f123e2479d56ae5c327a57f6a28b +TEST= 294 +KEY= ea24b2db953084c818b0e6f34ba1584dab572c50c3cc24e28e99880d61ef7d9c +CT= 2d61f123e2479d56ae5c327a57f6a28b +PT= c6cd16e7a122d105ee398e6c7f15b4ef +TEST= 295 +KEY= f209d1ade0869f674f6fedcd3db7d2eb6d9a3ab762eef5e760a006611efac973 +CT= c6cd16e7a122d105ee398e6c7f15b4ef +PT= edd6bba5787da2bf6a1adf297db98281 +TEST= 296 +KEY= 302beb9aa2acb3594d7e50859c187294804c81121a9357580abad94863434bf2 +CT= edd6bba5787da2bf6a1adf297db98281 +PT= 4a51e54f4f81469a06f6001f2f32f4ac +TEST= 297 +KEY= 3270fc87b4dc04fdd3f20c01407be123ca1d645d551211c20c4cd9574c71bf5e +CT= 4a51e54f4f81469a06f6001f2f32f4ac +PT= f7a2303ea59907bcc32aa4fc5a6de448 +TEST= 298 +KEY= c85326465bf46a442bc1e544f9041c4a3dbf5463f08b167ecf667dab161c5b16 +CT= f7a2303ea59907bcc32aa4fc5a6de448 +PT= 2274e43f9f8a7081df74d5225ec28ad8 +TEST= 299 +KEY= a54e889a4d9ffbf993c53a9dd3b951391fcbb05c6f0166ff1012a88948ded1ce +CT= 2274e43f9f8a7081df74d5225ec28ad8 +PT= 0c8358ec431313223b59126bdbb36571 +TEST= 300 +KEY= fa14699c20cffe7db68786e6117f95851348e8b02c1275dd2b4bbae2936db4bf +CT= 0c8358ec431313223b59126bdbb36571 +PT= 03237a81eea2eafbb5ac0b3e635cc1ac +TEST= 301 +KEY= b3744022a5397a735a4271261a2c96df106b9231c2b09f269ee7b1dcf0317513 +CT= 03237a81eea2eafbb5ac0b3e635cc1ac +PT= 409ebf7df31fd9557118b1b5cab5ebe3 +TEST= 302 +KEY= 8c7a22a934dcbc5e084e472dbae4848350f52d4c31af4673efff00693a849ef0 +CT= 409ebf7df31fd9557118b1b5cab5ebe3 +PT= 6cf5c9cf4a62c668b6481f7a12ee43db +TEST= 303 +KEY= db0497ed308c95bc9703265174b654d23c00e4837bcd801b59b71f13286add2b +CT= 6cf5c9cf4a62c668b6481f7a12ee43db +PT= d8a84e93cff3eb9dc891333bda5f3560 +TEST= 304 +KEY= 7a88d30d4cc9ab8efa76139b68f0028ae4a8aa10b43e6b8691262c28f235e84b +CT= d8a84e93cff3eb9dc891333bda5f3560 +PT= 009e0c2454e321326336cc56d0660f91 +TEST= 305 +KEY= 55a78b8839b395b552630641648dfce5e436a634e0dd4ab4f210e07e2253e7da +CT= 009e0c2454e321326336cc56d0660f91 +PT= ebc89334f29560d9b9aeae2f1d9dc65b +TEST= 306 +KEY= b41a907c82ede32c6c1fd0dfed0a232d0ffe350012482a6d4bbe4e513fce2181 +CT= ebc89334f29560d9b9aeae2f1d9dc65b +PT= 4da63e94ebb4da255800c9b25068e47e +TEST= 307 +KEY= 3e428e8a77067008efde7bd6174b05b742580b94f9fcf04813be87e36fa6c5ff +CT= 4da63e94ebb4da255800c9b25068e47e +PT= 6833e2cefa8cf4b5b4607fa49d7b658d +TEST= 308 +KEY= 39d17ae8c7232386f8339427e4a79aac2a6be95a037004fda7def847f2dda072 +CT= 6833e2cefa8cf4b5b4607fa49d7b658d +PT= 41d882b653befeeeb9ae354f5abcc058 +TEST= 309 +KEY= e8d52c97fa4149312a45d3efe0a326086bb36bec50cefa131e70cd08a861602a +CT= 41d882b653befeeeb9ae354f5abcc058 +PT= d54a329bcf56b703be0f02ee3aacb933 +TEST= 310 +KEY= d36faed6cf436a491111890449bc3c66bef959779f984d10a07fcfe692cdd919 +CT= d54a329bcf56b703be0f02ee3aacb933 +PT= 5faaeb95e0f9d0c3c43bf725dadc9595 +TEST= 311 +KEY= 9d7bcbb15816a0a941bbb787d2eea155e153b2e27f619dd3644438c348114c8c +CT= 5faaeb95e0f9d0c3c43bf725dadc9595 +PT= bc699d5e82fd43b45a7b925e8c1a2f3c +TEST= 312 +KEY= f2eb78917ecac2e77c19b892e846ae715d3a2fbcfd9cde673e3faa9dc40b63b0 +CT= bc699d5e82fd43b45a7b925e8c1a2f3c +PT= 773d115b40f0e9ef780b2d10846fa684 +TEST= 313 +KEY= b10b9f0ceca554749ec178f3c63547dd2a073ee7bd6c37884634878d4064c534 +CT= 773d115b40f0e9ef780b2d10846fa684 +PT= 50095809cc96520eb8e3a66f499ee147 +TEST= 314 +KEY= e86e52aeb04de0d3dc85a91e9b10d2677a0e66ee71fa6586fed721e209fa2473 +CT= 50095809cc96520eb8e3a66f499ee147 +PT= 6994cf8ba4c731ca33dafe33d2a0bf94 +TEST= 315 +KEY= 44c3c8a2f0f931926ac73f3e5351b114139aa965d53d544ccd0ddfd1db5a9be7 +CT= 6994cf8ba4c731ca33dafe33d2a0bf94 +PT= 981902a8fd71df8b67d52e6fc2813b90 +TEST= 316 +KEY= 2d309d3d2603ec7e7b4ea626e9bdecfe8b83abcd284c8bc7aad8f1be19dba077 +CT= 981902a8fd71df8b67d52e6fc2813b90 +PT= 35fa9a93ae142f562e62771991752b78 +TEST= 317 +KEY= e80939bcb4db83768ebad3cf2dd3f270be79315e8658a49184ba86a788ae8b0f +CT= 35fa9a93ae142f562e62771991752b78 +PT= a3651dbf8585004f0729af4ca615c674 +TEST= 318 +KEY= bf1a4c57d4434fa59a2e45db589aa16f1d1c2ce103dda4de839329eb2ebb4d7b +CT= a3651dbf8585004f0729af4ca615c674 +PT= af31f082caceb768627b93a4d3e5349a +TEST= 319 +KEY= 6eb47730bacaab2207a3d12b0652b0cdb22ddc63c91313b6e1e8ba4ffd5e79e1 +CT= af31f082caceb768627b93a4d3e5349a +PT= 57b75d2b640f45db2d4a1f71f08545a5 +TEST= 320 +KEY= 3eb0f3d31e648e260fe9f6fa8812add1e59a8148ad1c566dcca2a53e0ddb3c44 +CT= 57b75d2b640f45db2d4a1f71f08545a5 +PT= a812da38d7b82df310366fa62ffd11e6 +TEST= 321 +KEY= 0409a87f024e710c27e456ca170b60184d885b707aa47b9edc94ca9822262da2 +CT= a812da38d7b82df310366fa62ffd11e6 +PT= 447f235914368f2becd5ff98d1a34205 +TEST= 322 +KEY= 7de3a1e7234bf755908324e13df413eb09f778296e92f4b530413500f3856fa7 +CT= 447f235914368f2becd5ff98d1a34205 +PT= 5205860e4562b5cd6748ef89bf2791e9 +TEST= 323 +KEY= 12ee9519335a2d827649d4eb047eb5255bf2fe272bf041785709da894ca2fe4e +CT= 5205860e4562b5cd6748ef89bf2791e9 +PT= 30c0229afdff59e24426acad8d4aefdb +TEST= 324 +KEY= 78ff32a055d51e0a9d6e77d838ae72ad6b32dcbdd60f189a132f7624c1e81195 +CT= 30c0229afdff59e24426acad8d4aefdb +PT= ff467c6e0f82f5d2f9487ddbdb43efb3 +TEST= 325 +KEY= 6e49fa4cdefc70619f739b488dd434969474a0d3d98ded48ea670bff1aabfe26 +CT= ff467c6e0f82f5d2f9487ddbdb43efb3 +PT= 7e375b3d13871b09ca4d3357ac5ebb0e +TEST= 326 +KEY= 90791666c996ff15eed1e20bafb6b4b3ea43fbeeca0af641202a38a8b6f54528 +CT= 7e375b3d13871b09ca4d3357ac5ebb0e +PT= e64a319f6fbd96bd799760c4077f9713 +TEST= 327 +KEY= 7f0d0cab938585cf65726a6cb01de8b00c09ca71a5b760fc59bd586cb18ad23b +CT= e64a319f6fbd96bd799760c4077f9713 +PT= 1487c8488c675bd46faf2eec0bc7ae7e +TEST= 328 +KEY= 7b429e6d59d4d65e16ed325f49e93d9c188e023929d03b2836127680ba4d7c45 +CT= 1487c8488c675bd46faf2eec0bc7ae7e +PT= 1f103e64a4f5239c9157e70487c50941 +TEST= 329 +KEY= af20b02c3c5bd4e33e34359b86bbf2cf079e3c5d8d2518b4a74591843d887504 +CT= 1f103e64a4f5239c9157e70487c50941 +PT= 24c8481dd1a2245735597a18a2433e41 +TEST= 330 +KEY= e4f3ce6aff9926837baab04c311f72a7235674405c873ce3921ceb9c9fcb4b45 +CT= 24c8481dd1a2245735597a18a2433e41 +PT= 3d9e715a686de9af8ee37af54f82aa8a +TEST= 331 +KEY= a9bacbec55aa453a83ff82cfddb7f2f91ec8051a34ead54c1cff9169d049e1cf +CT= 3d9e715a686de9af8ee37af54f82aa8a +PT= b330735d9ab5b96501cdaf61a8ead19f +TEST= 332 +KEY= 5826be9127db557d401af4de6343f8afadf87647ae5f6c291d323e0878a33050 +CT= b330735d9ab5b96501cdaf61a8ead19f +PT= 61ae40475ea11dbcc364f5377673ce37 +TEST= 333 +KEY= a8f0146e46a5391d0663380df9f1fd6fcc563600f0fe7195de56cb3f0ed0fe67 +CT= 61ae40475ea11dbcc364f5377673ce37 +PT= 525c1ed538b23d7cfa4a43114cf35bd4 +TEST= 334 +KEY= 20f90a51e7a0bb9b88ae1dd28c8b484a9e0a28d5c84c4ce9241c882e4223a5b3 +CT= 525c1ed538b23d7cfa4a43114cf35bd4 +PT= c2957e002e35236d455f53006495e4b7 +TEST= 335 +KEY= a71cc695b7aeb0d5148fa622536669385c9f56d5e6796f846143db2e26b64104 +CT= c2957e002e35236d455f53006495e4b7 +PT= 76f9c97a4b414e5de532082bb12f5362 +TEST= 336 +KEY= 617cf5726f26bd9a3b52fc0d902a97ad2a669fafad3821d98471d30597991266 +CT= 76f9c97a4b414e5de532082bb12f5362 +PT= f4d9e814d4c61b2fb1d7cdccbaf14aa1 +TEST= 337 +KEY= d4dbbcc269a61933e4d63c3bda5f522edebf77bb79fe3af635a61ec92d6858c7 +CT= f4d9e814d4c61b2fb1d7cdccbaf14aa1 +PT= 6b51af38b42f226d62474a97bd001fff +TEST= 338 +KEY= 512faf06a5885d032a885ec030af3c18b5eed883cdd1189b57e1545e90684738 +CT= 6b51af38b42f226d62474a97bd001fff +PT= 868c58d6b805cf8f9eb04a8ba123371a +TEST= 339 +KEY= bdd2cb78e9b554fc7feeec05d02309f23362805575d4d714c9511ed5314b7022 +CT= 868c58d6b805cf8f9eb04a8ba123371a +PT= 1752558a1f90975140ca41f68be5333f +TEST= 340 +KEY= 15cc46826bfd5b45abae9b0b2756d39c2430d5df6a444045899b5f23baae431d +CT= 1752558a1f90975140ca41f68be5333f +PT= 68801eab4042e7390e64aa53c38c1d15 +TEST= 341 +KEY= df5fb425c5b25e15ea717736d8abe6644cb0cb742a06a77c87fff57079225e08 +CT= 68801eab4042e7390e64aa53c38c1d15 +PT= 02fe87211909d8954ec90ef53100f26d +TEST= 342 +KEY= cd73fced5eba6038dd8b8a000111bef94e4e4c55330f7fe9c936fb854822ac65 +CT= 02fe87211909d8954ec90ef53100f26d +PT= 3a51fafd22a2cc95b532023a37bbf0fe +TEST= 343 +KEY= ef890ed47d9f1581cc98c88f3bf7f88d741fb6a811adb37c7c04f9bf7f995c9b +CT= 3a51fafd22a2cc95b532023a37bbf0fe +PT= d233a6bbc315ba5f4630ae7f99f77116 +TEST= 344 +KEY= aa9ca1a7dfa24e1936e49d34054f7749a62c1013d2b809233a3457c0e66e2d8d +CT= d233a6bbc315ba5f4630ae7f99f77116 +PT= e6b9619d7b0e1df6cfe79fd51533406b +TEST= 345 +KEY= adc4161b346687f98d4cb5b661662a8a4095718ea9b614d5f5d3c815f35d6de6 +CT= e6b9619d7b0e1df6cfe79fd51533406b +PT= a746d31bcb29f7512e3f6e5efd14fdad +TEST= 346 +KEY= 9c1ca3776c9ed13d220453c8aefa0ecde7d3a295629fe384dbeca64b0e49904b +CT= a746d31bcb29f7512e3f6e5efd14fdad +PT= b2489a51878848ec37e6782fb2110122 +TEST= 347 +KEY= b64a5b45abfdec3ef8164fceae89919e559b38c4e517ab68ec0ade64bc589169 +CT= b2489a51878848ec37e6782fb2110122 +PT= ef77f9367a063fdb874c9fc96983ead1 +TEST= 348 +KEY= aeffdee2501961feeb985134e2b651edbaecc1f29f1194b36b4641add5db7bb8 +CT= ef77f9367a063fdb874c9fc96983ead1 +PT= 4ecff4da51bb2be1ef8e85c4bbe51c69 +TEST= 349 +KEY= 6b28ba96ceb25b3862f413a2cbed4889f4233528ceaabf5284c8c4696e3e67d1 +CT= 4ecff4da51bb2be1ef8e85c4bbe51c69 +PT= 0caeaf484505a1af13bb0adcc665f91c +TEST= 350 +KEY= 2062889724a47dd541f1f0a3fc8c5952f88d9a608baf1efd9773ceb5a85b9ecd +CT= 0caeaf484505a1af13bb0adcc665f91c +PT= 6c75ca469caccce29cae88202e02727c +TEST= 351 +KEY= c2115a8a6ee164b944a8c8128ebab8e694f850261703d21f0bdd46958659ecb1 +CT= 6c75ca469caccce29cae88202e02727c +PT= 567060ceff3aedde8ab5823450e35967 +TEST= 352 +KEY= c3d2704e15936c6916073e234d0012ccc28830e8e8393fc18168c4a1d6bab5d6 +CT= 567060ceff3aedde8ab5823450e35967 +PT= e04f927e409060080ec530d5c344ca24 +TEST= 353 +KEY= 49173a9fb3283181b71264e3fb5591fa22c7a296a8a95fc98fadf47415fe7ff2 +CT= e04f927e409060080ec530d5c344ca24 +PT= 4d473408396c17d4ba3dbb63b46e7727 +TEST= 354 +KEY= 8bf3dddc9217496e29f46e61233d62b66f80969e91c5481d35904f17a19008d5 +CT= 4d473408396c17d4ba3dbb63b46e7727 +PT= bb6779933ac9e435c637cda146a04284 +TEST= 355 +KEY= 6aca3c31248bfbb5bb9fd54c4b31bc21d4e7ef0dab0cac28f3a782b6e7304a51 +CT= bb6779933ac9e435c637cda146a04284 +PT= 5c2129a55114540ed68591c60e45d6cf +TEST= 356 +KEY= 1a270dad402dc752332671216a6c3bff88c6c6a8fa18f82625221370e9759c9e +CT= 5c2129a55114540ed68591c60e45d6cf +PT= 57790b87f69bf1c007e563a82987eeae +TEST= 357 +KEY= 6e39e75268ac2c51abe11ce3ce16caf3dfbfcd2f0c8309e622c770d8c0f27230 +CT= 57790b87f69bf1c007e563a82987eeae +PT= 58790b192c8b90b76f34990e28a6689a +TEST= 358 +KEY= 2367a67114d722a79f9434b5a418beeb87c6c636200899514df3e9d6e8541aaa +CT= 58790b192c8b90b76f34990e28a6689a +PT= 599ca8b58efe301a87ce72540ccb4067 +TEST= 359 +KEY= a4ce195518f7e36d7e0d5c9666802411de5a6e83aef6a94bca3d9b82e49f5acd +CT= 599ca8b58efe301a87ce72540ccb4067 +PT= 4483131c7e03089f898166a5b3e85e3a +TEST= 360 +KEY= 73c5204211d3648daaf5fe071186c0e99ad97d9fd0f5a1d443bcfd27577704f7 +CT= 4483131c7e03089f898166a5b3e85e3a +PT= dbf64c5a0897b343baf7047a6c564d02 +TEST= 361 +KEY= 1a3831aff223bb2fe79c8ef8845e553c412f31c5d8621297f94bf95d3b2149f5 +CT= dbf64c5a0897b343baf7047a6c564d02 +PT= b24420da45e3620b619978cb09f1860c +TEST= 362 +KEY= 31ef243ef87c32148751f8f299151042f36b111f9d81709c98d2819632d0cff9 +CT= b24420da45e3620b619978cb09f1860c +PT= 12b466ef6ae6f28af78ac184db8b3c83 +TEST= 363 +KEY= 9e935e6f5d76bee2e639f2880c8352eee1df77f0f76782166f584012e95bf37a +CT= 12b466ef6ae6f28af78ac184db8b3c83 +PT= 518e89a35cf55d591de8bb924d8f96e7 +TEST= 364 +KEY= c6398957838b02b5948a95dcbfbf2813b051fe53ab92df4f72b0fb80a4d4659d +CT= 518e89a35cf55d591de8bb924d8f96e7 +PT= 1fdf7fe52bd46ef54f1f7a6242b04bd8 +TEST= 365 +KEY= 5764e84d9000518c185717581e0d70e5af8e81b68046b1ba3daf81e2e6642e45 +CT= 1fdf7fe52bd46ef54f1f7a6242b04bd8 +PT= 2c68e67c37b50056e80dc09b9ed84aa8 +TEST= 366 +KEY= 5f8cb51bf30b954b4ac09620b0a20fca83e667cab7f3b1ecd5a2417978bc64ed +CT= 2c68e67c37b50056e80dc09b9ed84aa8 +PT= 14cc2d821b03be21355a779b9066be41 +TEST= 367 +KEY= 50b32e6d62ee3b8ce2dd5797ba70d8d2972a4a48acf00fcde0f836e2e8dadaac +CT= 14cc2d821b03be21355a779b9066be41 +PT= bb09d339888c27294e73326e64ac3b21 +TEST= 368 +KEY= e1b2199caf1c3fa78e973acf5c3ac8702c239971247c28e4ae8b048c8c76e18d +CT= bb09d339888c27294e73326e64ac3b21 +PT= bcfbd8255802cc8233aea86e49089328 +TEST= 369 +KEY= 3403d2498a4562e73734d065e9b44ad890d841547c7ee4669d25ace2c57e72a5 +CT= bcfbd8255802cc8233aea86e49089328 +PT= 5a919ac72f12db1fab8e4876fba8842b +TEST= 370 +KEY= b979fa15f93e5aca1f6e452c9053751bca49db93536c3f7936abe4943ed6f68e +CT= 5a919ac72f12db1fab8e4876fba8842b +PT= bdb03bd29fd3828af1ae8c729f37f88a +TEST= 371 +KEY= a8cdf9fe3c0227a9107c700c404ae39777f9e041ccbfbdf3c70568e6a1e10e04 +CT= bdb03bd29fd3828af1ae8c729f37f88a +PT= 0aac43ce316476f3a532d44b4dfbf4b8 +TEST= 372 +KEY= b4d497fbd5de2ca68ff60c701e208a257d55a38ffddbcb006237bcadec1afabc +CT= 0aac43ce316476f3a532d44b4dfbf4b8 +PT= 853a5ee7cb3c4bb3f0120bb2cffb4436 +TEST= 373 +KEY= a019dcc09a4caaa3772bf4c54c8828e9f86ffd6836e780b39225b71f23e1be8a +CT= 853a5ee7cb3c4bb3f0120bb2cffb4436 +PT= b525599c918446af4ea9f6965f3971ea +TEST= 374 +KEY= 238bf8b851b0864f9bec8e242b7795d14d4aa4f4a763c61cdc8c41897cd8cf60 +CT= b525599c918446af4ea9f6965f3971ea +PT= a8377ec293d41f74a0a2db66ba7d3d2f +TEST= 375 +KEY= af9e313988f294ae6a8155bc76f2514be57dda3634b7d9687c2e9aefc6a5f24f +CT= a8377ec293d41f74a0a2db66ba7d3d2f +PT= 301bd4d318101a02166ebc23ded9c12d +TEST= 376 +KEY= 3b6186f7ace8e9b022dde0ecf5d808d3d5660ee52ca7c36a6a4026cc187c3362 +CT= 301bd4d318101a02166ebc23ded9c12d +PT= 05bd0686be53b94fb1b42ae407be081c +TEST= 377 +KEY= eaded20a0f405d9e3aae404fb074162ed0db086392f47a25dbf40c281fc23b7e +CT= 05bd0686be53b94fb1b42ae407be081c +PT= 7a3af681f2043806edb761f65d9a6c3a +TEST= 378 +KEY= aa6f474f5f5ff513fc992e4232061b75aae1fee260f0422336436dde42585744 +CT= 7a3af681f2043806edb761f65d9a6c3a +PT= 3c297de35ccf4e6e0a800b9a3ee37c95 +TEST= 379 +KEY= 68bfe30863f135a09b81be2800cbbc3796c883013c3f0c4d3cc366447cbb2bd1 +CT= 3c297de35ccf4e6e0a800b9a3ee37c95 +PT= 5f8aac15c74cc7ea87a1ac185103a9d7 +TEST= 380 +KEY= 9093debe66d714180beb8fe51c4807adc9422f14fb73cba7bb62ca5c2db88206 +CT= 5f8aac15c74cc7ea87a1ac185103a9d7 +PT= 083af3af30961fd5a077f5564d55e9e9 +TEST= 381 +KEY= a1e1049159a94df638092c90f7707cd7c178dcbbcbe5d4721b153f0a60ed6bef +CT= 083af3af30961fd5a077f5564d55e9e9 +PT= 89beff6ab40b18ecd9413446e848253a +TEST= 382 +KEY= 7c506732a8863db1bf61efc710f22d2348c623d17feecc9ec2540b4c88a54ed5 +CT= 89beff6ab40b18ecd9413446e848253a +PT= 095b2c04636c9c5bf9735bca21211eaa +TEST= 383 +KEY= 7283413612863ba1e1b5ae93df1318f5419d0fd51c8250c53b275086a984507f +CT= 095b2c04636c9c5bf9735bca21211eaa +PT= e95db3db1e3a478c8a31212b28e0e7bc +TEST= 384 +KEY= be861ced86d725162d938727d7aefc1ba8c0bc0e02b81749b11671ad8164b7c3 +CT= e95db3db1e3a478c8a31212b28e0e7bc +PT= 9927f1d7ef0631500e1df058932bf320 +TEST= 385 +KEY= 45aa89cbce192ceec22bf5f33dde0e8d31e74dd9edbe2619bf0b81f5124f44e3 +CT= 9927f1d7ef0631500e1df058932bf320 +PT= 4b1147179f2af27e5c9dbb7f01cc56a8 +TEST= 386 +KEY= b08a08dabc52884e9ebb310236815bfe7af60ace7294d467e3963a8a1383124b +CT= 4b1147179f2af27e5c9dbb7f01cc56a8 +PT= e9752a7d47734dacac6e74a1a3ec4956 +TEST= 387 +KEY= 34b4424ce75a4a1bce9e6c825f5f0dc1938320b335e799cb4ff84e2bb06f5b1d +CT= e9752a7d47734dacac6e74a1a3ec4956 +PT= ab2d652bcee42804c5155980da02cecc +TEST= 388 +KEY= f9954bb1a793565a79aa2b9df408a34a38ae4598fb03b1cf8aed17ab6a6d95d1 +CT= ab2d652bcee42804c5155980da02cecc +PT= 3c6651362e89f6c6b28c04ca22f110ec +TEST= 389 +KEY= 9548931715fb259e318020e30d68165604c814aed58a470938611361489c853d +CT= 3c6651362e89f6c6b28c04ca22f110ec +PT= 15598364698838475ab96f95cfcf3342 +TEST= 390 +KEY= 1cdb0706417bbe66b559237109353221119197cabc027f4e62d87cf48753b67f +CT= 15598364698838475ab96f95cfcf3342 +PT= d8b3bb941893206e1ca6654b81f403e4 +TEST= 391 +KEY= 8c4ad897b595252b0987673f45ee73f2c9222c5ea4915f207e7e19bf06a7b59b +CT= d8b3bb941893206e1ca6654b81f403e4 +PT= ece471cc2ff45c26c7143c41702f90d2 +TEST= 392 +KEY= a6d3df3279b7405256c0d22da240524125c65d928b650306b96a25fe76882549 +CT= ece471cc2ff45c26c7143c41702f90d2 +PT= ab387ae5a5fc892c311d97c22467940d +TEST= 393 +KEY= 36f250f7c3906c7e0020055422cdb8b28efe27772e998a2a8877b23c52efb144 +CT= ab387ae5a5fc892c311d97c22467940d +PT= ff48c2c77d5f52df27c4060df7f895d7 +TEST= 394 +KEY= 4ff045275860b943ede02c802f34b71b71b6e5b053c6d8f5afb3b431a5172493 +CT= ff48c2c77d5f52df27c4060df7f895d7 +PT= 221bc444e2a6a7f8de9da16ab01eb2ac +TEST= 395 +KEY= e15b4e0e242fbabf1d47e9dbe6d0660253ad21f4b1607f0d712e155b1509963f +CT= 221bc444e2a6a7f8de9da16ab01eb2ac +PT= de252d19973abd9f182049d39455784b +TEST= 396 +KEY= 401023a611a3133c895a3684ab3e7c9d8d880ced265ac292690e5c88815cee74 +CT= de252d19973abd9f182049d39455784b +PT= 843163bd101982ee948039915c8f60d8 +TEST= 397 +KEY= b9ddf52c271f143e523532e45e6f368d09b96f503643407cfd8e6519ddd38eac +CT= 843163bd101982ee948039915c8f60d8 +PT= 6fd9d36b751854c3417f29e8f3b654d9 +TEST= 398 +KEY= ac7f45f8630ce02525f9f4941b4e13206660bc3b435b14bfbcf14cf12e65da75 +CT= 6fd9d36b751854c3417f29e8f3b654d9 +PT= e1268ba8a1473dede6ca64ddf2c8b805 +TEST= 399 +KEY= de11ff0a429e1cd3de016dac294f771187463793e21c29525a3b282cdcad6270 +CT= e1268ba8a1473dede6ca64ddf2c8b805 +PT= 4de0c6df7cb1697284604d60271bc59a diff --git a/flint/test/testvals/ecbmd64.txt b/flint/test/testvals/ecbmd64.txt new file mode 100644 index 0000000..c59b78c --- /dev/null +++ b/flint/test/testvals/ecbmd64.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= 5f1d493cfb44737bd960347948b8ba79309d5d74c0eaa6ad +TEST= 1 +KEY= d960347948b8ba79309d5d74c0eaa6ad +CT= 5f1d493cfb44737bd960347948b8ba79309d5d74c0eaa6ad +PT= c0454e5a8b2189515247d24650bb1c64cde504e78caa2e36 +TEST= 2 +KEY= 8b27e63f1803a61dfd7859934c40889b +CT= c0454e5a8b2189515247d24650bb1c64cde504e78caa2e36 +PT= 97d1f29e38790041e9b196cdb1a6817a5176c0f1fa197767 +TEST= 3 +KEY= 629670f2a9a52767ac0e9962b659fffc +CT= 97d1f29e38790041e9b196cdb1a6817a5176c0f1fa197767 +PT= 6e5c76ed6f052aced269cc7b245580a13048bc521066573d +TEST= 4 +KEY= b0ffbc898df0a7c69c462530a63fa8c1 +CT= 6e5c76ed6f052aced269cc7b245580a13048bc521066573d +PT= 3200d180171c4b5f99e099202d993d46b937553dc142af11 +TEST= 5 +KEY= 291f25a9a0699a802571700d677d07d0 +CT= 3200d180171c4b5f99e099202d993d46b937553dc142af11 +PT= 47b21b4b4a8e18eda97856de72add536e462a88925a66c6c +TEST= 6 +KEY= 80677377d2c44fb6c113d88442db6bbc +CT= 47b21b4b4a8e18eda97856de72add536e462a88925a66c6c +PT= 8fb59dec8a0924ed66ebc18819950a2ec37206057751df30 +TEST= 7 +KEY= e68cb2ffcb5145980261de81358ab48c +CT= 8fb59dec8a0924ed66ebc18819950a2ec37206057751df30 +PT= 33049dbf3329d631d421634777c633768c0862662db7555d +TEST= 8 +KEY= 32add1b8bc9776ee8e69bce7183de1d1 +CT= 33049dbf3329d631d421634777c633768c0862662db7555d +PT= 52e16dd15b3047c0b656d3fc45f4ce0ae543ea583850a92f +TEST= 9 +KEY= 84fb0244f963b8e46b2a56bf206d48fe +CT= 52e16dd15b3047c0b656d3fc45f4ce0ae543ea583850a92f +PT= a3a512dff98edf41ae07e7aee0a4d47c9ce3c0e0822b6d5b +TEST= 10 +KEY= 2afce5ea19c76c98f7c9965fa24625a5 +CT= a3a512dff98edf41ae07e7aee0a4d47c9ce3c0e0822b6d5b +PT= 707b186e23373ca80896e17c00ef99191e1aac642378d3a1 +TEST= 11 +KEY= 226a04961928f581e9d33a3b813ef604 +CT= 707b186e23373ca80896e17c00ef99191e1aac642378d3a1 +PT= fe76d6435bc52fc2d7c56ef9243ee8fff66eb29704d0e61e +TEST= 12 +KEY= f5af6a6f3d161d7e1fbd88ac85ee101a +CT= fe76d6435bc52fc2d7c56ef9243ee8fff66eb29704d0e61e +PT= d0907bc2870242df43a1f772dc5fb37b5f1119363d71bc42 +TEST= 13 +KEY= b60e9d1de149ae0540ac919ab89fac58 +CT= d0907bc2870242df43a1f772dc5fb37b5f1119363d71bc42 +PT= 4b90421b492b31fe11151157f0efda48e4c92a779fb41a8d +TEST= 14 +KEY= a71b8c4a11a6744da465bbed272bb6d5 +CT= 4b90421b492b31fe11151157f0efda48e4c92a779fb41a8d +PT= 141c4bc2ee31c817130b18a9fa1b082b3a3c39f577853263 +TEST= 15 +KEY= b41094e3ebbd7c669e59821850ae84b6 +CT= 141c4bc2ee31c817130b18a9fa1b082b3a3c39f577853263 +PT= 06f22261e36add125a7c666f63e1841fcf01f742d8c41f47 +TEST= 16 +KEY= ee6cf28c885cf8795158755a886a9bf1 +CT= 06f22261e36add125a7c666f63e1841fcf01f742d8c41f47 +PT= 8f3f53e324d356ecbef6358e144fa336c15c92a582002378 +TEST= 17 +KEY= 509ac7029c135b4f9004e7ff0a6ab889 +CT= 8f3f53e324d356ecbef6358e144fa336c15c92a582002378 +PT= 844a7d5a74ed47ef1d2468288758899f62458ae5ca02aef2 +TEST= 18 +KEY= 4dbeaf2a1b4bd2d0f2416d1ac068167b +CT= 844a7d5a74ed47ef1d2468288758899f62458ae5ca02aef2 +PT= 08e78bd11b64fb967c3ab47c39a2e78b493aaf18e579677a +TEST= 19 +KEY= 31841b5622e9355bbb7bc20225117101 +CT= 08e78bd11b64fb967c3ab47c39a2e78b493aaf18e579677a +PT= db5721c83e2b83bb69559ea6ccbcc20100d8a3081b188535 +TEST= 20 +KEY= 58d185f0ee55f75abba3610a3e09f434 +CT= db5721c83e2b83bb69559ea6ccbcc20100d8a3081b188535 +PT= f37cae74f57579f850836c8600f17de2333e217a0e96e113 +TEST= 21 +KEY= 0852e976eea48ab8889d4070309f1527 +CT= f37cae74f57579f850836c8600f17de2333e217a0e96e113 +PT= 934e8c7e190f10e20cc40c6c5afc2214530d28aea688ca59 +TEST= 22 +KEY= 0496e51ab458a8acdb9068de9617df7e +CT= 934e8c7e190f10e20cc40c6c5afc2214530d28aea688ca59 +PT= da6295b6ad15160bfb22c2ea53a490921da1d17b546cada8 +TEST= 23 +KEY= ffb427f0e7fc383ec631b9a5c27b72d6 +CT= da6295b6ad15160bfb22c2ea53a490921da1d17b546cada8 +PT= 67785abb4da1393ae3d90e9457d50903b0ff88141e86b3e7 +TEST= 24 +KEY= 1c6d2964b029313d76ce31b1dcfdc131 +CT= 67785abb4da1393ae3d90e9457d50903b0ff88141e86b3e7 +PT= 4021dcc244ff486f2a005ab6644f5a57d5612dd7f4ab3c85 +TEST= 25 +KEY= 366d73d2d4666b6aa3af1c662856fdb4 +CT= 4021dcc244ff486f2a005ab6644f5a57d5612dd7f4ab3c85 +PT= 540f567849c7de5330480f5cf7a52fc77cb3b1847c75abf8 +TEST= 26 +KEY= 06257c8e23c344addf1cade25423564c +CT= 540f567849c7de5330480f5cf7a52fc77cb3b1847c75abf8 +PT= c1f4c72e3a669dd0a877d08d6108def22aed077308102a57 +TEST= 27 +KEY= ae52ac0342cb9a5ff5f1aa915c337c1b +CT= c1f4c72e3a669dd0a877d08d6108def22aed077308102a57 +PT= d0383abb6820c9d66fc1c0eef61cbf778a2459f57fab47c4 +TEST= 28 +KEY= c1936cedb4d725287fd5f36423983bdf +CT= d0383abb6820c9d66fc1c0eef61cbf778a2459f57fab47c4 +PT= 2662c5b7e316945f858e7fa43e5fd345e1289df0cbb2cc4e +TEST= 29 +KEY= 441d13498a88f66d9efd6e94e82af791 +CT= 2662c5b7e316945f858e7fa43e5fd345e1289df0cbb2cc4e +PT= f767af16f3172a695603b4ab373b3e42b7fb4311c013d7c3 +TEST= 30 +KEY= 121ea7e2bdb3c82f29062d8528392052 +CT= f767af16f3172a695603b4ab373b3e42b7fb4311c013d7c3 +PT= a84dd325f3615c5ef188d388dac80cb55a4144f8939af8e2 +TEST= 31 +KEY= e396746a677bc49a7347697dbba3d8b0 +CT= a84dd325f3615c5ef188d388dac80cb55a4144f8939af8e2 +PT= 36a8964b45d9b56b0e36706b7323819ae6195774859b30bf +TEST= 32 +KEY= eda0040114584500955e3e093e38e80f +CT= 36a8964b45d9b56b0e36706b7323819ae6195774859b30bf +PT= 933ed3043a240f7d2ad241b21e3dcba3a7cec0330664ad50 +TEST= 33 +KEY= c77245b30a658ea33290fe3a385c455f +CT= 933ed3043a240f7d2ad241b21e3dcba3a7cec0330664ad50 +PT= 7dc885e07e0cc46f1e163c2124a329bfd97ff8cf933f463a +TEST= 34 +KEY= d96479922ec6a71cebef06f5ab630365 +CT= 7dc885e07e0cc46f1e163c2124a329bfd97ff8cf933f463a +PT= 5e85bb784391b99bbff6cd6433acdc6c22ddc40b5c2e0606 +TEST= 35 +KEY= 6692b4f61d6a7b70c932c2fef74d0563 +CT= 5e85bb784391b99bbff6cd6433acdc6c22ddc40b5c2e0606 +PT= 0c410fcc5cc07daeb08fd0d44c7c512b0f6777e85a235459 +TEST= 36 +KEY= d61d642251162a5bc655b516ad6e513a +CT= 0c410fcc5cc07daeb08fd0d44c7c512b0f6777e85a235459 +PT= 14c6d508d6e773a7cd41f76fb2f99a0d2658f0095bc0551d +TEST= 37 +KEY= 1b5c934de3efb056e00d451ff6ae0427 +CT= 14c6d508d6e773a7cd41f76fb2f99a0d2658f0095bc0551d +PT= ba2bf6356fa06a9468b2bf8866dc9b698978239ccd3e9596 +TEST= 38 +KEY= 73ee2cc585332b3f697566833b9091b1 +CT= ba2bf6356fa06a9468b2bf8866dc9b698978239ccd3e9596 +PT= 2251bf77d47aa2b7569c596032eb50be1ae748f37cb7ddea +TEST= 39 +KEY= 257275a5b7d87b8173922e7047274c5b +CT= 2251bf77d47aa2b7569c596032eb50be1ae748f37cb7ddea +PT= 23215745b2c39b8a9c63dc925fcb7d16315da4c9b47a8f9e +TEST= 40 +KEY= b911a937e813069742cf8ab9f35dc3c5 +CT= 23215745b2c39b8a9c63dc925fcb7d16315da4c9b47a8f9e +PT= f82649b8ab22223ba385460c9e9f7266e2f58d8e211459cd +TEST= 41 +KEY= 1a94ef3b768c74f1a03a0737d2499a08 +CT= f82649b8ab22223ba385460c9e9f7266e2f58d8e211459cd +PT= 2b3cdcda63856c7f8d49ead4307b0cd99c7bd39a9a6870e0 +TEST= 42 +KEY= 97dd05ef46f778283c41d4ad4821eae8 +CT= 2b3cdcda63856c7f8d49ead4307b0cd99c7bd39a9a6870e0 +PT= b74913dd2c563178ae79bd37d869f8305bb282cd1653458f +TEST= 43 +KEY= 39a4b8d89e9e801867f356605e72af67 +CT= b74913dd2c563178ae79bd37d869f8305bb282cd1653458f +PT= 1f230370917e8cd7533bbb63283d3da68b7a2a92fb8f788d +TEST= 44 +KEY= 6a9f03bbb6a3bdbeec897cf2a5fdd7ea +CT= 1f230370917e8cd7533bbb63283d3da68b7a2a92fb8f788d +PT= 8142d6f2cdd3623811923d5476ffda78cbea0fb01700ca96 +TEST= 45 +KEY= 7b0d3eefc05c67c627637342b2fd1d7c +CT= 8142d6f2cdd3623811923d5476ffda78cbea0fb01700ca96 +PT= 1fd30c39c25b4be66315f3e03ddd75a4b9da44a9249c2f5e +TEST= 46 +KEY= 1818cd0ffd8112629eb937eb96613222 +CT= 1fd30c39c25b4be66315f3e03ddd75a4b9da44a9249c2f5e +PT= 1f262babd33703d3d722fadd6114abb7df8d218f2691b37c +TEST= 47 +KEY= cf3a37d29c95b9d541341664b0f0815e +CT= 1f262babd33703d3d722fadd6114abb7df8d218f2691b37c +PT= 5e521e3868b8ed619aaa6ac88afc84f5a37813967add2e95 +TEST= 48 +KEY= 55905d1a16693d20e24c05f2ca2dafcb +CT= 5e521e3868b8ed619aaa6ac88afc84f5a37813967add2e95 +PT= faca8d4f3e2f2fa331d1d41bf15732a0bd8fd109014f7958 +TEST= 49 +KEY= 64418901e73e0f805fc3d4fbcb62d693 +CT= faca8d4f3e2f2fa331d1d41bf15732a0bd8fd109014f7958 +PT= 201ba80d1497c20d6a91dc3fef72908a2118c423bde2597a +TEST= 50 +KEY= 0ed0553e084c9f0a7edb10d876808fe9 +CT= 201ba80d1497c20d6a91dc3fef72908a2118c423bde2597a +PT= 499c7ee47660f9dbad6f9a772c88802cf70a241ab5719f03 +TEST= 51 +KEY= a3bfcf4924c41f2689d134c2c3f110ea +CT= 499c7ee47660f9dbad6f9a772c88802cf70a241ab5719f03 +PT= d7debc2ccea183fccfab228dc8090d27ab6ca7750591ff7d +TEST= 52 +KEY= 6c14edc4eccd120122bd93b7c660ef97 +CT= d7debc2ccea183fccfab228dc8090d27ab6ca7750591ff7d +PT= 0e90105305179e83095f3b8d99b21386fa6c9152d73a1f82 +TEST= 53 +KEY= 654bd649757f0187d8d102e5115af015 +CT= 0e90105305179e83095f3b8d99b21386fa6c9152d73a1f82 +PT= e9c5daaa2f4abf3c220fada7b45f8d18eea670cfa9aa3b5b +TEST= 54 +KEY= 47447beec1208c9f3677722ab8f0cb4e +CT= e9c5daaa2f4abf3c220fada7b45f8d18eea670cfa9aa3b5b +PT= 19c2fd10965faf5f0c60113ce0d96788e63102ad97753bd7 +TEST= 55 +KEY= 4b246ad221f9eb17d04670872f85f099 +CT= 19c2fd10965faf5f0c60113ce0d96788e63102ad97753bd7 +PT= cc93609684713a949571ac39d2dc2f85eb86807c521710df +TEST= 56 +KEY= de55c6ebf325c4923bc0f0fb7d92e046 +CT= cc93609684713a949571ac39d2dc2f85eb86807c521710df +PT= b959f6b64fcdd5e3759cd9792ddf4eedffac8c1439676b02 +TEST= 57 +KEY= abc91f92defa8a7fc46c7cef44f58b44 +CT= b959f6b64fcdd5e3759cd9792ddf4eedffac8c1439676b02 +PT= 7494494a5f5c59ae8a0755bb39f9a43fac1f953dec6bc94b +TEST= 58 +KEY= 21ce4a29e7032e406873e9d2a89e420f +CT= 7494494a5f5c59ae8a0755bb39f9a43fac1f953dec6bc94b +PT= 105abbf3950447a716b0eb976c6597c8338beafcf3b6288b +TEST= 59 +KEY= 377ea1be8b66b9885bf8032e5b286a84 +CT= 105abbf3950447a716b0eb976c6597c8338beafcf3b6288b +PT= 403b0b15df1f85316a713d38aa620b20f9412336e0e6f41d +TEST= 60 +KEY= 5d0f9c862104b2a8a2b92018bbce9e99 +CT= 403b0b15df1f85316a713d38aa620b20f9412336e0e6f41d +PT= 0f7a3411dba2a01a65f7ed8847388da1a735e3c2e862280e +TEST= 61 +KEY= 38f8710e663c3f09058cc3da53acb697 +CT= 0f7a3411dba2a01a65f7ed8847388da1a735e3c2e862280e +PT= e88e2e980abbb0b9855b4877f37c07c8aa48e56624ef3ecf +TEST= 62 +KEY= bda33979954038c1afc426bc77438858 +CT= e88e2e980abbb0b9855b4877f37c07c8aa48e56624ef3ecf +PT= b7e73499ceb61dbb14a69ece36c73f6389dc657bb2e3ba71 +TEST= 63 +KEY= a905a7b7a38707a2261843c7c5a03229 +CT= b7e73499ceb61dbb14a69ece36c73f6389dc657bb2e3ba71 +PT= 054c9c2b4f6ae404cbd01a0338570870dc1362123a3b7a2f +TEST= 64 +KEY= 62d5bdb49bd00fd2fa0b21d5ff9b4806 +CT= 054c9c2b4f6ae404cbd01a0338570870dc1362123a3b7a2f +PT= b60eadbd014fd72cf78b03177c41008e19b6487752e00f72 +TEST= 65 +KEY= 955ebea3e7910f5ce3bd69a2ad7b4774 +CT= b60eadbd014fd72cf78b03177c41008e19b6487752e00f72 +PT= 160c690ec4e934395a4157cd0e7a7724b21c4584aebf9736 +TEST= 66 +KEY= cf1fe96ee9eb787851a12c2603c4d042 +CT= 160c690ec4e934395a4157cd0e7a7724b21c4584aebf9736 +PT= 9178a968715c63b0c8a743b0c3da5f3b59c6743f8df8eb56 +TEST= 67 +KEY= 07b8aade2a312743086758198e3c3b14 +CT= 9178a968715c63b0c8a743b0c3da5f3b59c6743f8df8eb56 +PT= 41729153a1e3c4b645fb472f17c08a21f152351be604acf6 +TEST= 68 +KEY= 4243edf13df1ad62f9356d02683897e2 +CT= 41729153a1e3c4b645fb472f17c08a21f152351be604acf6 +PT= ce83123f20bb16876278d0aa6de099353fdb211e92c98b82 +TEST= 69 +KEY= 203b3d5b50113457c6ee4c1cfaf11c60 +CT= ce83123f20bb16876278d0aa6de099353fdb211e92c98b82 +PT= eac01d7d03d5096b87fed1f537067b1ef6644f6837b1bd3c +TEST= 70 +KEY= a7c5ecae67174f49308a0374cd40a15c +CT= eac01d7d03d5096b87fed1f537067b1ef6644f6837b1bd3c +PT= 2327450be93f37f9f3bbfc2d2bfe1fec4217bc23e9f0971b +TEST= 71 +KEY= 547e10834ce950a5729dbf5724b03647 +CT= 2327450be93f37f9f3bbfc2d2bfe1fec4217bc23e9f0971b +PT= 385ac463249d52452d7b8e3df3bf4f43e3e09f85dc12102f +TEST= 72 +KEY= 79059ebebf561fe6917d20d2f8a22668 +CT= 385ac463249d52452d7b8e3df3bf4f43e3e09f85dc12102f +PT= 3a80d66e8954c0035dc270b42ca353fcb7b981e9379308ec +TEST= 73 +KEY= 24c7ee0a93f54c1a26c4a13bcf312e84 +CT= 3a80d66e8954c0035dc270b42ca353fcb7b981e9379308ec +PT= b725db6553b0fc3c3f22036c9c124bd0e0d68a653edeb6d0 +TEST= 74 +KEY= 1be5ed660fe707cac6122b5ef1ef9854 +CT= b725db6553b0fc3c3f22036c9c124bd0e0d68a653edeb6d0 +PT= 54be6f596317af7706f160fcfdad6293ae3982ed9652f0b8 +TEST= 75 +KEY= 1d148d9af24a6559682ba9b367bd68ec +CT= 54be6f596317af7706f160fcfdad6293ae3982ed9652f0b8 +PT= b692f0a3e359bf9ae1517ef4cbe514117dd4a0abb07475de +TEST= 76 +KEY= fc45f36e39af714815ff0918d7c91d32 +CT= b692f0a3e359bf9ae1517ef4cbe514117dd4a0abb07475de +PT= c6ccfd1e82fe4f93870eaddeb57ae7e54830ef55132b2941 +TEST= 77 +KEY= 7b4b5eb08cd596ad5dcfe64dc4e23473 +CT= c6ccfd1e82fe4f93870eaddeb57ae7e54830ef55132b2941 +PT= 7bc6e44d009d640eff4828aab7d0d020d478d8bc422e77a3 +TEST= 78 +KEY= 8403761a3b05468d89b73ef186cc43d0 +CT= 7bc6e44d009d640eff4828aab7d0d020d478d8bc422e77a3 +PT= f79080b0c4db0cc7a5e8f36165f4c2e7fdb9ff1d8995acf5 +TEST= 79 +KEY= 21eb857b5ef1846a740ec1ec0f59ef25 +CT= f79080b0c4db0cc7a5e8f36165f4c2e7fdb9ff1d8995acf5 +PT= b9fedc951c523f8228aa8d075548b1a6ea583a6d077ca28c +TEST= 80 +KEY= 0941087c0bb935cc9e56fb8108254da9 +CT= b9fedc951c523f8228aa8d075548b1a6ea583a6d077ca28c +PT= 5cb2701d7ed5e6ff51edd60edcd16c7a91107b52bc2fe4b9 +TEST= 81 +KEY= 58acde72d76859b60f4680d3b40aa910 +CT= 5cb2701d7ed5e6ff51edd60edcd16c7a91107b52bc2fe4b9 +PT= 5f049bba865a1af3913410a45c1893c9919f1271929d6a58 +TEST= 82 +KEY= c998ced68b70ca7f9ed992a22697c348 +CT= 5f049bba865a1af3913410a45c1893c9919f1271929d6a58 +PT= 03ebb47eafebf86e18b1c67e56a01e19ade5af2c42399957 +TEST= 83 +KEY= d12908a8ddd0d466333c3d8e64ae5a1f +CT= 03ebb47eafebf86e18b1c67e56a01e19ade5af2c42399957 +PT= 6615b7caa63ada74ea2b7c398277bb52a26bee163f5f0083 +TEST= 84 +KEY= 3b0274915fa76f349157d3985bf15a9c +CT= 6615b7caa63ada74ea2b7c398277bb52a26bee163f5f0083 +PT= afefd69487c663040ea2075cfefb43caa3a225072a0895f3 +TEST= 85 +KEY= 35a073cda15c2cfe32f5f69f71f9cf6f +CT= afefd69487c663040ea2075cfefb43caa3a225072a0895f3 +PT= 81cb0900f2b7e5a4b4082437dc541fca5e07ef9cc44014d2 +TEST= 86 +KEY= 81a857fa7d0833346cf21903b5b9dbbd +CT= 81cb0900f2b7e5a4b4082437dc541fca5e07ef9cc44014d2 +PT= 25eb9a5faea1ca1e97d40f44bfe98cfca4279373746ae91b +TEST= 87 +KEY= 167c58bec2e1bfc8c8d58a70c1d332a6 +CT= 25eb9a5faea1ca1e97d40f44bfe98cfca4279373746ae91b +PT= e5f8494fc9ed9a461d3354d5ca925644fca230ba79a336df +TEST= 88 +KEY= 0b4f0c6b0873e98c3477bacab8700479 +CT= e5f8494fc9ed9a461d3354d5ca925644fca230ba79a336df +PT= c8dac8b6588aa36a8bc76d199b24105492cf290ad6c97361 +TEST= 89 +KEY= 808861729357f9d8a6b893c06eb97718 +CT= c8dac8b6588aa36a8bc76d199b24105492cf290ad6c97361 +PT= 249b932b7907c1b235dfb3c5816e2b85894325096c966a63 +TEST= 90 +KEY= b557d2b71239d25d2ffbb6c9022f1d7b +CT= 249b932b7907c1b235dfb3c5816e2b85894325096c966a63 +PT= cc7ced3ff0f7c291cc18ec0f87e7c85f02208e8fed6c41cf +TEST= 91 +KEY= 794f3eb895de1a022ddb3846ef435cb4 +CT= cc7ced3ff0f7c291cc18ec0f87e7c85f02208e8fed6c41cf +PT= 2e7a39632d99e9974edef85efa538242ef84ac94ecc2bde1 +TEST= 92 +KEY= 3791c6e66f8d9840c25f94d20381e155 +CT= 2e7a39632d99e9974edef85efa538242ef84ac94ecc2bde1 +PT= 727337a7586f2508336daea4121d591a606440dfd6edc653 +TEST= 93 +KEY= 04fc68427d90c15aa23bd40dd56c2706 +CT= 727337a7586f2508336daea4121d591a606440dfd6edc653 +PT= 3b7ffe59bb3db07a1416b447d3603a66a783fdbae75e34d2 +TEST= 94 +KEY= 10eadc05aef0fb3c05b829b7323213d4 +CT= 3b7ffe59bb3db07a1416b447d3603a66a783fdbae75e34d2 +PT= 4c391d0b4ca08a0de76a421792a715ea4418d013563c7eb0 +TEST= 95 +KEY= f7809e123c57eed641a0f9a4640e6d64 +CT= 4c391d0b4ca08a0de76a421792a715ea4418d013563c7eb0 +PT= 24163132157662d6bb0586f7e3fb0b785e8014be02aa35eb +TEST= 96 +KEY= 4c8518e5dface5ae1f20ed1a66a4588f +CT= 24163132157662d6bb0586f7e3fb0b785e8014be02aa35eb +PT= ad69a3a372ee2e8c6b8a241c7e95a5eb663ef222520e6ab2 +TEST= 97 +KEY= 270f3cf9a1394045791e1f3834aa323d +CT= ad69a3a372ee2e8c6b8a241c7e95a5eb663ef222520e6ab2 +PT= 9f27dcdc1c1fbb3e047d85cec148870540eb7bb9c5d10443 +TEST= 98 +KEY= 2372b9376071c74039f56481f17b367e +CT= 9f27dcdc1c1fbb3e047d85cec148870540eb7bb9c5d10443 +PT= 54c67fabed56478cb88dd9547b2b69278d6e29d6acd76b0b +TEST= 99 +KEY= 9bff60631b5aae67b49b4d575dac5d75 +CT= 54c67fabed56478cb88dd9547b2b69278d6e29d6acd76b0b +PT= 9181e272856cfd6343467e633d5fcf7cfb0b9b17127998c2 +TEST= 100 +KEY= d8b91e002605611b4f90d6404fd5c5b7 +CT= 9181e272856cfd6343467e633d5fcf7cfb0b9b17127998c2 +PT= 59c3e479b67de58083c7c0cb35b68bc0bca3f98f63876d42 +TEST= 101 +KEY= 5b7edecb13b3eadbf3332fcf2c52a8f5 +CT= 59c3e479b67de58083c7c0cb35b68bc0bca3f98f63876d42 +PT= 189e6fceac53fec97c5ab0256a6bfb016fac80567db147c8 +TEST= 102 +KEY= 27246eee79d811da9c9faf9951e3ef3d +CT= 189e6fceac53fec97c5ab0256a6bfb016fac80567db147c8 +PT= 67b75c785513ab732d6c78101f63af82cbd0a3232635cf48 +TEST= 103 +KEY= 0a4816fe66bbbe58574f0cba77d62075 +CT= 67b75c785513ab732d6c78101f63af82cbd0a3232635cf48 +PT= 8ca7fb7a597b21bd960613fcbbf97e07a428acfce4e2b432 +TEST= 104 +KEY= 9c4e0502dd42c05ff367a04693349447 +CT= 8ca7fb7a597b21bd960613fcbbf97e07a428acfce4e2b432 +PT= 076449c3f1c8eee5ba4abc76f15c32863b048348d0e6b3e3 +TEST= 105 +KEY= 2604b9742c1ef2d9c863230e43d227a4 +CT= 076449c3f1c8eee5ba4abc76f15c32863b048348d0e6b3e3 +PT= f1d3d65c82b651f28d16a4edb47ec12bc8f9efde4fefa08c +TEST= 106 +KEY= ab121d99986033f2009accd00c3d8728 +CT= f1d3d65c82b651f28d16a4edb47ec12bc8f9efde4fefa08c +PT= d39538b74bdbccbb35bc415b70b62378a2150a5ac52931c7 +TEST= 107 +KEY= 9eae5cc2e8d6108aa28fc68ac914b6ef +CT= d39538b74bdbccbb35bc415b70b62378a2150a5ac52931c7 +PT= 65783ee8a41f732cee2aac49cbb9f1063ab4b8b40484c5b9 +TEST= 108 +KEY= 7084f08b236fe18c983b7e3ecd907356 +CT= 65783ee8a41f732cee2aac49cbb9f1063ab4b8b40484c5b9 +PT= 2672ea5c237530c87b455b105238255b590f260616904d90 +TEST= 109 +KEY= 0bc1ab9b7157c4d7c1345838db003ec6 +CT= 2672ea5c237530c87b455b105238255b590f260616904d90 +PT= f1e399fc003f7358a2413ec93f4a2fcd1e607f5c6c577c23 +TEST= 110 +KEY= a98095524e1deb1adf542764b75742e5 +CT= f1e399fc003f7358a2413ec93f4a2fcd1e607f5c6c577c23 +PT= 3fec50001147755a45df49466d5a0daa05f3b2ac41d4a9ba +TEST= 111 +KEY= ec5fdc142347e6b0daa795c8f683eb5f +CT= 3fec50001147755a45df49466d5a0daa05f3b2ac41d4a9ba +PT= 5bccb893c506c8a50f6746e99decd10a3aab3dd2b730973e +TEST= 112 +KEY= e3389afdbeab37bae00ca81a41b37c61 +CT= 5bccb893c506c8a50f6746e99decd10a3aab3dd2b730973e +PT= a1f90a23f5419946d46ab1907e02b9822bdd347dae6128e1 +TEST= 113 +KEY= 37522b6dc0a98e38cbd19c67efd25480 +CT= a1f90a23f5419946d46ab1907e02b9822bdd347dae6128e1 +PT= 59997063b879600a701ce71a7f22105dd0694b15aebf6fe7 +TEST= 114 +KEY= 474ecc77bf8b9e651bb8d772416d3b67 +CT= 59997063b879600a701ce71a7f22105dd0694b15aebf6fe7 +PT= f56490b116ba806c717ada15abd56f8e66b67eceeeee862f +TEST= 115 +KEY= 36341662145ef1eb7d0ea9bcaf83bd48 +CT= f56490b116ba806c717ada15abd56f8e66b67eceeeee862f +PT= 8a8244660b8445b09d4e3fe42f97d095d3431f796db9d063 +TEST= 116 +KEY= ab7a29863bc9217eae4db6c5c23a6d2b +CT= 8a8244660b8445b09d4e3fe42f97d095d3431f796db9d063 +PT= 027455860f9d4a8314bc99332f213eb752a4af08ada40253 +TEST= 117 +KEY= bfc6b0b514e81fc9fce919cd6f9e6f78 +CT= 027455860f9d4a8314bc99332f213eb752a4af08ada40253 +PT= 9ab4db5e3038027e00a280caef186aa9531ede60a9d971ac +TEST= 118 +KEY= bf64307ffbf07560aff7c7adc6471ed4 +CT= 9ab4db5e3038027e00a280caef186aa9531ede60a9d971ac +PT= 5f2a23bb872a8a21ecad6539c2947728642f8580853cd7c7 +TEST= 119 +KEY= 53c9554639640248cbd8422d437bc913 +CT= 5f2a23bb872a8a21ecad6539c2947728642f8580853cd7c7 +PT= c9a35c650056af2a93729491e837d5cae8f1cdbb3d8be387 +TEST= 120 +KEY= c0bbc1d7d153d78223298f967ef02a94 +CT= c9a35c650056af2a93729491e837d5cae8f1cdbb3d8be387 +PT= 878ff36adb92f2bc5fc89e21ce2c259c60a3699ab028a452 +TEST= 121 +KEY= 9f735ff61f7ff21e438ae60cced88ec6 +CT= 878ff36adb92f2bc5fc89e21ce2c259c60a3699ab028a452 +PT= 515bd4e13fcd04a8e710d4cc376ebf55c0800e6bee76a13b +TEST= 122 +KEY= 78638b3a28114d4b830ae86720ae2ffd +CT= 515bd4e13fcd04a8e710d4cc376ebf55c0800e6bee76a13b +PT= 1b91328b64df7dc9e2b7dc69e2ffa06aef06bf2f23d0f538 +TEST= 123 +KEY= 9ad45753caeeed216c0c5748037edac5 +CT= 1b91328b64df7dc9e2b7dc69e2ffa06aef06bf2f23d0f538 +PT= a14662d61158571efc917ff6f9385feedf681cd1e754840b +TEST= 124 +KEY= 664528a533d6b2cfb3644b99e42a5ece +CT= a14662d61158571efc917ff6f9385feedf681cd1e754840b +PT= 3694075adbb64ef6926672f8de78352ae40ad1a728f9b5b6 +TEST= 125 +KEY= f4235a5dedae87e5576e9a3eccd3eb78 +CT= 3694075adbb64ef6926672f8de78352ae40ad1a728f9b5b6 +PT= 3eeb892709d15d724fcb7481d8aaa7e81db4b31fb90d3eaf +TEST= 126 +KEY= bbe82edc3504200d4ada292175ded5d7 +CT= 3eeb892709d15d724fcb7481d8aaa7e81db4b31fb90d3eaf +PT= 0a3372376c7554afe34af30f65dcdaddd0ac7cc8ffec28f1 +TEST= 127 +KEY= 58a2ddd350d8fad09a7655e98a32fd26 +CT= 0a3372376c7554afe34af30f65dcdaddd0ac7cc8ffec28f1 +PT= 0dc900c0a61eee4e5b043f9e0a180a44d8e0570b54abc777 +TEST= 128 +KEY= 03a6e24d5ac0f094429602e2de993a51 +CT= 0dc900c0a61eee4e5b043f9e0a180a44d8e0570b54abc777 +PT= 41e293dc272e7706d4a5561c692350459678740dbe8de6c0 +TEST= 129 +KEY= d703b45133e3a0d1d4ee76ef6014dc91 +CT= 41e293dc272e7706d4a5561c692350459678740dbe8de6c0 +PT= 5ff8a2c1f25e23593a8b77fd0a3dbb13c486f1fac0fa0eff +TEST= 130 +KEY= ed88c3ac39de1bc210688715a0eed26e +CT= 5ff8a2c1f25e23593a8b77fd0a3dbb13c486f1fac0fa0eff +PT= 5a8be8d305cb9118b28bbeab363a36f21ef2e5d48df28fe2 +TEST= 131 +KEY= 5f037d070fe42d300e9a62c12d1c5d8c +CT= 5a8be8d305cb9118b28bbeab363a36f21ef2e5d48df28fe2 +PT= a5946a1d0eb3d26cb20cb1ff35c733de94b0b7b456a9f8a6 +TEST= 132 +KEY= ed0fccf83a231eee9a2ad5757bb5a52a +CT= a5946a1d0eb3d26cb20cb1ff35c733de94b0b7b456a9f8a6 +PT= 9b6ea00c5a18286fd6322e3c976b394f83df0d540c4022ee +TEST= 133 +KEY= 3b3de2c4ad4827a119f5d82177f587c4 +CT= 9b6ea00c5a18286fd6322e3c976b394f83df0d540c4022ee +PT= 0dff0d3c48d33edf8475b77f8a487c686ca921af7888ac00 +TEST= 134 +KEY= bf4855bb27005bc9755cf98e0f7d2bc4 +CT= 0dff0d3c48d33edf8475b77f8a487c686ca921af7888ac00 +PT= 5ff999d2d2ac6b3377b03af12e4adcc69de042a54fa50c29 +TEST= 135 +KEY= c8f86f4a094a870fe8bcbb2b40d827ed +CT= 5ff999d2d2ac6b3377b03af12e4adcc69de042a54fa50c29 +PT= e656f3db7a3618288ef4e72c815ca175d0e9aab95de7a76d +TEST= 136 +KEY= 460c88668816267a385511921d3f8080 +CT= e656f3db7a3618288ef4e72c815ca175d0e9aab95de7a76d +PT= da55b64c3e6c73a276dc1b4d1fbc299737cbac4aec63008a +TEST= 137 +KEY= 30d0932b97aa0fed0f9ebdd8f15c800a +CT= da55b64c3e6c73a276dc1b4d1fbc299737cbac4aec63008a +PT= 89a68301f2a8073cbe11b2a1efdcec88f795266feb5aaa5d +TEST= 138 +KEY= 8ec1218a7876e365f80b9bb71a062a57 +CT= 89a68301f2a8073cbe11b2a1efdcec88f795266feb5aaa5d +PT= 62f1f7c952aaee0712d76e71dcee21babaa5d1dce1d03ed5 +TEST= 139 +KEY= 9c164ffba498c2df42ae4a6bfbd61482 +CT= 62f1f7c952aaee0712d76e71dcee21babaa5d1dce1d03ed5 +PT= 981968a7b0f1682d1974e6273d09cecd99035b73afa0df2e +TEST= 140 +KEY= 8562a9dc99910c12dbad11185476cbac +CT= 981968a7b0f1682d1974e6273d09cecd99035b73afa0df2e +PT= e8799c88f3b291378a2b1dde6982186f591cdfe8188b9b5e +TEST= 141 +KEY= 0f49b402f013147d82b1cef04cfd50f2 +CT= e8799c88f3b291378a2b1dde6982186f591cdfe8188b9b5e +PT= 06e18b3650bd311dd83ca337fd57206660db7d4bbc16aa74 +TEST= 142 +KEY= d77517350d44341be26ab3bbf0ebfa86 +CT= 06e18b3650bd311dd83ca337fd57206660db7d4bbc16aa74 +PT= 6d6a2da4ec3d7ba088b3beadc26a000c0e1f22e3cce16e75 +TEST= 143 +KEY= 5fc6a998cf2e3417ec7591583c0a94f3 +CT= 6d6a2da4ec3d7ba088b3beadc26a000c0e1f22e3cce16e75 +PT= 508f633ddd3dbf655bcc1574cb40923306ec8b011566823a +TEST= 144 +KEY= 040abcec046ea624ea991a59296c16c9 +CT= 508f633ddd3dbf655bcc1574cb40923306ec8b011566823a +PT= 2996c91c7390e2453a4453a81230daa457c51b6f4ae2ac0e +TEST= 145 +KEY= 3e4eef44165e7c80bd5c0136638ebac7 +CT= 2996c91c7390e2453a4453a81230daa457c51b6f4ae2ac0e +PT= fe6aef6cd205d9cf6a76c7c872b6cfb7469296975f69588a +TEST= 146 +KEY= 5438288c64e8b337fbce97a13ce7e24d +CT= fe6aef6cd205d9cf6a76c7c872b6cfb7469296975f69588a +PT= 6e2996ffda3c4a6b60cbd48cc34c5f589ed4d12820acbf90 +TEST= 147 +KEY= 34f3fc00a7a4ec6f651a46891c4b5ddd +CT= 6e2996ffda3c4a6b60cbd48cc34c5f589ed4d12820acbf90 +PT= c8e94154c58a6e5fa1a0f3c2ea93f3926a7e10ff1f713d48 +TEST= 148 +KEY= 95530fc24d371ffd0f645676033a6095 +CT= c8e94154c58a6e5fa1a0f3c2ea93f3926a7e10ff1f713d48 +PT= 7042922e96a3786f50208d42f8b3127d77e65c7823568e7c +TEST= 149 +KEY= c5738280b5840d8078820a0e206ceee9 +CT= 7042922e96a3786f50208d42f8b3127d77e65c7823568e7c +PT= e984d5f0c57d71b66edebc7e9c01f8857b115a1b13e2f545 +TEST= 150 +KEY= abad3efe2985f50503935015338e1bac +CT= e984d5f0c57d71b66edebc7e9c01f8857b115a1b13e2f545 +PT= a54cf5b139da6feb38937002b7125e556fcab327470fbfb1 +TEST= 151 +KEY= 933e4efc9e97ab506c59e3327481a41d +CT= a54cf5b139da6feb38937002b7125e556fcab327470fbfb1 +PT= fb57cadcc27038a6eb71fdf77c70f657fb3a9b04fe8e5211 +TEST= 152 +KEY= 784fb30be2e75d07976378368a0ff60c +CT= fb57cadcc27038a6eb71fdf77c70f657fb3a9b04fe8e5211 +PT= 469b3bae6df84c3c390a941ddc63a00784f1b68cf4cdf430 +TEST= 153 +KEY= 414527163e84fd001392ceba7ec2023c +CT= 469b3bae6df84c3c390a941ddc63a00784f1b68cf4cdf430 +PT= 7fa8234877be7fa0de941c56bcd41e10e4e5b6135c808609 +TEST= 154 +KEY= 9fd13b408250e310f77778a922428435 +CT= 7fa8234877be7fa0de941c56bcd41e10e4e5b6135c808609 +PT= a5dc6e8b32c02043c21780a4e25d21ef37cc62ca0297198e +TEST= 155 +KEY= 5dc6bbe4600dc2ffc0bb1a6320d59dbb +CT= a5dc6e8b32c02043c21780a4e25d21ef37cc62ca0297198e +PT= 0c93c98e70ac3d46049229be697e49a1531d6632fe6bda27 +TEST= 156 +KEY= 5954925a09738b5e93a67c51debe479c +CT= 0c93c98e70ac3d46049229be697e49a1531d6632fe6bda27 +PT= e784d1829bd3a034b5db05355cf03010298733edc0365641 +TEST= 157 +KEY= ec8f976f5583bb4eba214fbc1e8811dd +CT= e784d1829bd3a034b5db05355cf03010298733edc0365641 +PT= b66b925792a63ce6a7be72282a3dfc525a039b2527806c88 +TEST= 158 +KEY= 4b31e5477fbe471ce022d49939087d55 +CT= b66b925792a63ce6a7be72282a3dfc525a039b2527806c88 +PT= 458dc0f4a00d72c3b8dfe029abbc0b2a81e062788124530d +TEST= 159 +KEY= f3ee056ed4024c3661c2b6e1b82c2e58 +CT= 458dc0f4a00d72c3b8dfe029abbc0b2a81e062788124530d +PT= c6117fec5dc1ef1c7da8e4bf56bd0769f338ef7079592085 +TEST= 160 +KEY= 8e46e1d182bf4b5f92fa5991c1750edd +CT= c6117fec5dc1ef1c7da8e4bf56bd0769f338ef7079592085 +PT= d6c21c96442c59d94c6b992549dd09beb96b3ffbb7bc31ab +TEST= 161 +KEY= c22d78f4cb6242e12b91666a76c93f76 +CT= d6c21c96442c59d94c6b992549dd09beb96b3ffbb7bc31ab +PT= 16a8b78ebd2126cfceaf82ad9efe3eac91713a57371852dc +TEST= 162 +KEY= 0c82fa59559c7c4dbae05c3d41d16daa +CT= 16a8b78ebd2126cfceaf82ad9efe3eac91713a57371852dc +PT= 8694ccd396b1be5cf2773f96bbc4e5ab291fded447f31d1b +TEST= 163 +KEY= fef5c5cfee5899e693ff82e9062270b1 +CT= 8694ccd396b1be5cf2773f96bbc4e5ab291fded447f31d1b +PT= 880f6431c8832a492dfbddc82fc23317876749ab65e81c55 +TEST= 164 +KEY= d30e1807c19aaaf11498cb4263ca6ce4 +CT= 880f6431c8832a492dfbddc82fc23317876749ab65e81c55 +PT= f7557ab916797fbe1736c0b81a06151d243d908e51f77d1f +TEST= 165 +KEY= c438d8bfdb9cbfec30a55bcc323d11fb +CT= f7557ab916797fbe1736c0b81a06151d243d908e51f77d1f +PT= e240a2b715554d166ce353a84ac26129af955358812b5214 +TEST= 166 +KEY= a8db8b17915edec59f300894b31643ef +CT= e240a2b715554d166ce353a84ac26129af955358812b5214 +PT= 17be6d8c667d46e55aa7a570f7a6a8d7ee7d9f87b2f351e9 +TEST= 167 +KEY= f27c2e6766f87612714d971301e51206 +CT= 17be6d8c667d46e55aa7a570f7a6a8d7ee7d9f87b2f351e9 +PT= 3609b2bb0f94d62f0acc21b9015015fd95e5dd1af09adf18 +TEST= 168 +KEY= f8b00fde67a863efe4a84a09f17fcd1e +CT= 3609b2bb0f94d62f0acc21b9015015fd95e5dd1af09adf18 +PT= a5b7e3a8f9a8140dec4f6d8be3b2ae2c4bf3df47d18db9e6 +TEST= 169 +KEY= 14ff6255841acdc3af5b954e20f274f8 +CT= a5b7e3a8f9a8140dec4f6d8be3b2ae2c4bf3df47d18db9e6 +PT= 4777acaaf6fff0da64ae9764ca95024c688e3909ba69201c +TEST= 170 +KEY= 7051f5314e8fcf8fc7d5ac479a9b54e4 +CT= 4777acaaf6fff0da64ae9764ca95024c688e3909ba69201c +PT= 7ab8fd6d7b1821fed8fe38af46158c412a056031bd970236 +TEST= 171 +KEY= a8afcd9e089a43ceedd0cc76270c56d2 +CT= 7ab8fd6d7b1821fed8fe38af46158c412a056031bd970236 +PT= 0244669f1d03a9ee1c5589bc344afc8319927b4c99513b2c +TEST= 172 +KEY= b4fa44223cd0bf4df442b73abe5d6dfe +CT= 0244669f1d03a9ee1c5589bc344afc8319927b4c99513b2c +PT= c3653b756b64e8e81e384d37ac42434d3e51bfa52eb23309 +TEST= 173 +KEY= aac209159092fc00ca13089f90ef5ef7 +CT= c3653b756b64e8e81e384d37ac42434d3e51bfa52eb23309 +PT= 9005422af4de3aca9f4652e260ce65e2412a8684c3fec95f +TEST= 174 +KEY= 35845bf7f05c99e28b398e1b531197a8 +CT= 9005422af4de3aca9f4652e260ce65e2412a8684c3fec95f +PT= b55259d8f194952a7b40d330b3d2c494eff44f8d22788899 +TEST= 175 +KEY= 4ec488c7438e5d7664cdc19671691f31 +CT= b55259d8f194952a7b40d330b3d2c494eff44f8d22788899 +PT= d4376348a71e608e3d98d122a4be47c9380abc49428a1db4 +TEST= 176 +KEY= 735c59e5e7301abf5cc77ddf33e30285 +CT= d4376348a71e608e3d98d122a4be47c9380abc49428a1db4 +PT= ab28abf606632439b7d200caa79773d668e66e56e16a1fd1 +TEST= 177 +KEY= c48e592f40a7696934211389d2891d54 +CT= ab28abf606632439b7d200caa79773d668e66e56e16a1fd1 +PT= b3e0d813473a827f1493a77787ef2fc140b16041e6530b7a +TEST= 178 +KEY= d01dfe58c74846a8749073c834da162e +CT= b3e0d813473a827f1493a77787ef2fc140b16041e6530b7a +PT= 630dfd4291a93dc14f11362205fef1dddf68d9e7cb3a5edf +TEST= 179 +KEY= 9f0cc87ac2b6b775abf8aa2fffe048f1 +CT= 630dfd4291a93dc14f11362205fef1dddf68d9e7cb3a5edf +PT= 0050792f90ea1f281a01bc214d52f09e4b24686832f4e1d1 +TEST= 180 +KEY= 850d745b8fe447ebe0dcc247cd14a920 +CT= 0050792f90ea1f281a01bc214d52f09e4b24686832f4e1d1 +PT= 78573f6c1803427bf204a3523181d6e3899ab5519d0c35bb +TEST= 181 +KEY= 7709d709be6591086946771650189c9b +CT= 78573f6c1803427bf204a3523181d6e3899ab5519d0c35bb +PT= f8f725a1cef17865e7d3d7312513aeb0896348f9f37c822b +TEST= 182 +KEY= 90da00389b763fb8e0253fefa3641eb0 +CT= f8f725a1cef17865e7d3d7312513aeb0896348f9f37c822b +PT= eb9f1f07b31aa32f50d6c9c7196287dea458175e68c6843e +TEST= 183 +KEY= c00cc9ff8214b866447d28b1cba29a8e +CT= eb9f1f07b31aa32f50d6c9c7196287dea458175e68c6843e +PT= de682d87f93a9791ac856a7796632d42d7b3650de96eb837 +TEST= 184 +KEY= 6c89a3881477952493ce4dbc22cc22b9 +CT= de682d87f93a9791ac856a7796632d42d7b3650de96eb837 +PT= cff1ae38030f62887135fe76942b60da4911e01f77d33ccf +TEST= 185 +KEY= 1dbc5dfe805cf5fedadfada3551f1e76 +CT= cff1ae38030f62887135fe76942b60da4911e01f77d33ccf +PT= e3733e3f34f51e0ffd6a958767cdbcbc990a896a5ca3df91 +TEST= 186 +KEY= e0d6c879e791494243d524c909bcc1e7 +CT= e3733e3f34f51e0ffd6a958767cdbcbc990a896a5ca3df91 +PT= 2cfa1a23c39076794dd6b26b7f5cdc763b4b556de217fc17 +TEST= 187 +KEY= ad007a1298cd9534789e71a4ebab3df0 +CT= 2cfa1a23c39076794dd6b26b7f5cdc763b4b556de217fc17 +PT= 39632fe448d3fc2d54d9cdeccf604bcb541f275481c92ea2 +TEST= 188 +KEY= f9d9b7fe57addeff2c8156f06a621352 +CT= 39632fe448d3fc2d54d9cdeccf604bcb541f275481c92ea2 +PT= 0e6f5ec78e23e9b69fdd3ae23bc8e19ec4016fb2e39bd17b +TEST= 189 +KEY= 66048d1c6c653f61e880394289f9c229 +CT= 0e6f5ec78e23e9b69fdd3ae23bc8e19ec4016fb2e39bd17b +PT= c4d17ce8a9de0fc67083d73056313a76b65c2d8260dcad78 +TEST= 190 +KEY= 16875a2c3a5405175edc14c0e9256f51 +CT= c4d17ce8a9de0fc67083d73056313a76b65c2d8260dcad78 +PT= c1a639fd02c44c5158881d6a511785ea244b14b46736a52b +TEST= 191 +KEY= 4e0f47466b4380fd7a9700748e13ca7a +CT= c1a639fd02c44c5158881d6a511785ea244b14b46736a52b +PT= be35ebbc8976399ecd8e54475689598b21b0b535540f7c48 +TEST= 192 +KEY= 838113013dcad9765b27b541da1cb632 +CT= be35ebbc8976399ecd8e54475689598b21b0b535540f7c48 +PT= a4e3ce5c20e9978fa5f49c17304e791ee20e18874bb9f28c +TEST= 193 +KEY= 26758f160d84a068b929adc691a544be +CT= a4e3ce5c20e9978fa5f49c17304e791ee20e18874bb9f28c +PT= 568b0e08b2fe78c6f4e33448db6b7e1cb3435417bb2fdf1b +TEST= 194 +KEY= d296bb5ed6efde740a6af9d12a8a9ba5 +CT= 568b0e08b2fe78c6f4e33448db6b7e1cb3435417bb2fdf1b +PT= 78b2cf28bc6b6d626a3936e675f59b9004e06a98c2bb1765 +TEST= 195 +KEY= b8af8db8a31a45e40e8a9349e8318cc0 +CT= 78b2cf28bc6b6d626a3936e675f59b9004e06a98c2bb1765 +PT= ec8ca93981d61d9ab6688b9c732ace7421cf7da32929b914 +TEST= 196 +KEY= 0ec70624d0308b902f45eeeac11835d4 +CT= ec8ca93981d61d9ab6688b9c732ace7421cf7da32929b914 +PT= c92aaeadfefac067e2dfbc4d661b3102d1148f798a412e3e +TEST= 197 +KEY= ec18ba69b62bba92fe5161934b591bea +CT= c92aaeadfefac067e2dfbc4d661b3102d1148f798a412e3e +PT= a10c91ee5a5cbe6b15b32f18487cc61f230d7e57e54540be +TEST= 198 +KEY= f9ab9571fe577c8ddd5c1fc4ae1c5b54 +CT= a10c91ee5a5cbe6b15b32f18487cc61f230d7e57e54540be +PT= f394cd06742384cdfc3ba9cd3bc01c6081dc8d3a0745d985 +TEST= 199 +KEY= 05903cbcc59760ed5c8092fea95982d1 +CT= f394cd06742384cdfc3ba9cd3bc01c6081dc8d3a0745d985 +PT= 8a7596de8e453c2530a1f53f653170cc23a832e80fcf8b0c +TEST= 200 +KEY= 3531c983a0a610217f28a016a69609dd +CT= 8a7596de8e453c2530a1f53f653170cc23a832e80fcf8b0c +PT= 39813794efff637b277e0448db24cbdddd5f4d261e60dd94 +TEST= 201 +KEY= 124fcdcb7b82dbfca277ed30b8f6d449 +CT= 39813794efff637b277e0448db24cbdddd5f4d261e60dd94 +PT= 4a73d89a165a6ca1a91c3c9d035f85521abc2246923590fd +TEST= 202 +KEY= bb53f15678dd5eaeb8cbcf762ac344b4 +CT= 4a73d89a165a6ca1a91c3c9d035f85521abc2246923590fd +PT= 63a5609326d03edc4525b9f6e11a3e9db1812eb5304642e0 +TEST= 203 +KEY= fe7648a099c76033094ae1c31a850654 +CT= 63a5609326d03edc4525b9f6e11a3e9db1812eb5304642e0 +PT= c343f6f440577ef24235e21251ab8c38f8781c1d7f4cf3e2 +TEST= 204 +KEY= bc43aab2c86cec0bf132fdde65c9f5b6 +CT= c343f6f440577ef24235e21251ab8c38f8781c1d7f4cf3e2 +PT= 1998f9afb51079829cdfcb3d87d93bbb2668064ff8d94021 +TEST= 205 +KEY= 209c618f4fb5d7b0d75afb919d10b597 +CT= 1998f9afb51079829cdfcb3d87d93bbb2668064ff8d94021 +PT= 37d0de15284448f41e568cbd42638af73f7e940e4cb42e68 +TEST= 206 +KEY= 3ecaed320dd65d47e8246f9fd1a49bff +CT= 37d0de15284448f41e568cbd42638af73f7e940e4cb42e68 +PT= 711f98d324f480733e59db06996a2680046e32578e0345ae +TEST= 207 +KEY= 0093363494bc7bc7ec4a5dc85fa7de51 +CT= 711f98d324f480733e59db06996a2680046e32578e0345ae +PT= a2111bdfcad2315ccc53e7f5a58a37b29c726ba02b557829 +TEST= 208 +KEY= ccc0d1c131364c757038366874f2a678 +CT= a2111bdfcad2315ccc53e7f5a58a37b29c726ba02b557829 +PT= c1f259127d00f3259c60d75a7e180a16f189f7461a5c6006 +TEST= 209 +KEY= 50a0069b4f2e466381b1c12e6eaec67e +CT= c1f259127d00f3259c60d75a7e180a16f189f7461a5c6006 +PT= 1fabf8cf53592c46b0761d0c1083d3bb04758464430f882b +TEST= 210 +KEY= e0d61b975fad95d885c4454a2da14e55 +CT= 1fabf8cf53592c46b0761d0c1083d3bb04758464430f882b +PT= 8e9043b376cfe3b6965202732744e07222899993e9c5a159 +TEST= 211 +KEY= 768419e478e975aaa74ddcd9c464ef0c +CT= 8e9043b376cfe3b6965202732744e07222899993e9c5a159 +PT= dde38434c41b96d57bafdc7f218dc24d6ca1a4d97e086e1b +TEST= 212 +KEY= 0d2bc59b5964b7e7cbec7800ba6c8117 +CT= dde38434c41b96d57bafdc7f218dc24d6ca1a4d97e086e1b +PT= aafd42de8649794523cd8d7d94f76c52d34e68f61fa5264a +TEST= 213 +KEY= 2ee648e6cd93dbb518a210f6a5c9a75d +CT= aafd42de8649794523cd8d7d94f76c52d34e68f61fa5264a +PT= bd7d9d378a9b76ff06e67e0545349281993bc7bd0a461796 +TEST= 214 +KEY= 280036e388a749348199d74baf8fb0cb +CT= bd7d9d378a9b76ff06e67e0545349281993bc7bd0a461796 +PT= 5a525cd6d3fa8f7f58090bb3b4418140b864ff70e6f5c7e7 +TEST= 215 +KEY= 70093d503ce6c87439fd283b497a772c +CT= 5a525cd6d3fa8f7f58090bb3b4418140b864ff70e6f5c7e7 +PT= 0c8b1eacb20c897046531c7f95174784337d11adfdbd6543 +TEST= 216 +KEY= 365a212fa9f18ff00a803996b4c7126f +CT= 0c8b1eacb20c897046531c7f95174784337d11adfdbd6543 +PT= bb63800fae39c0c0d348a24ddca860cb2954c4f6e24ff9a4 +TEST= 217 +KEY= e51283627559ef3b23d4fd605688ebcb +CT= bb63800fae39c0c0d348a24ddca860cb2954c4f6e24ff9a4 +PT= a7597d2790e3b95ddaa2a32a4d553ccbb4249b8bb562446e +TEST= 218 +KEY= 3fb02048380cd3f097f066ebe3eaafa5 +CT= a7597d2790e3b95ddaa2a32a4d553ccbb4249b8bb562446e +PT= db1737b927238c1de1c29364c2601d522ed68c0abaeea05a +TEST= 219 +KEY= de72b32cfa6ccea2b926eae159040fff +CT= db1737b927238c1de1c29364c2601d522ed68c0abaeea05a +PT= 0e8bddbb5cb56af58798812c81cd0863968ac2b6b784cd8d +TEST= 220 +KEY= 59ea32007ba1c6c12fac2857ee80c272 +CT= 0e8bddbb5cb56af58798812c81cd0863968ac2b6b784cd8d +PT= 7a60a7cee644f30c6aea84ff28410c43f5c3446ab3313f68 +TEST= 221 +KEY= 3300b6ff53e0ca82da6f6c3d5db1fd1a +CT= 7a60a7cee644f30c6aea84ff28410c43f5c3446ab3313f68 +PT= 8793b2c1f222ad74a50a10eeb9aabcf91342c2196b4c913b +TEST= 222 +KEY= 960aa611ea4a767bc92dae2436fd6c21 +CT= 8793b2c1f222ad74a50a10eeb9aabcf91342c2196b4c913b +PT= 4a46e787e71ebc5b3ddc854daef1ec33a4c7437d644570db +TEST= 223 +KEY= abd6235c44bb9a486deaed5952b81cfa +CT= 4a46e787e71ebc5b3ddc854daef1ec33a4c7437d644570db +PT= ee549e464eb4d6cfc35e31b79d6b5073740fbb6bd6fbd097 +TEST= 224 +KEY= 688812ebd9d0ca3b19e556328443cc6d +CT= ee549e464eb4d6cfc35e31b79d6b5073740fbb6bd6fbd097 +PT= f17614738234d10a452e4dbaeef891c381845cf2d8887209 +TEST= 225 +KEY= 2da65f5137285bf898610ac05ccbbe64 +CT= f17614738234d10a452e4dbaeef891c381845cf2d8887209 +PT= c3027bc4707a85a1f468be1bcbcfdcd69bc5bd0c51352ffd +TEST= 226 +KEY= d9cee14afce7872e03a4b7cc0dfe9199 +CT= c3027bc4707a85a1f468be1bcbcfdcd69bc5bd0c51352ffd +PT= 25345cb6515271770c5566d7dec868800a004353078d14eb +TEST= 227 +KEY= d59b879d222fefae09a4f49f0a738572 +CT= 25345cb6515271770c5566d7dec868800a004353078d14eb +PT= 234a2d430ac70ab6342c4a5871880719573dc8b2a27151e2 +TEST= 228 +KEY= e1b7cdc553a7e8b75e993c2da802d490 +CT= 234a2d430ac70ab6342c4a5871880719573dc8b2a27151e2 +PT= 41c01b6d9d53a23e1914af92540abc3d5efaf130c850df85 +TEST= 229 +KEY= f8a3625707ad548a0063cd1d60520b15 +CT= 41c01b6d9d53a23e1914af92540abc3d5efaf130c850df85 +PT= afa0ccd3db06aafd78b4ed9d3f5ca655114ef48337c136e5 +TEST= 230 +KEY= 80178fca38f1f2df112d399e57933df0 +CT= afa0ccd3db06aafd78b4ed9d3f5ca655114ef48337c136e5 +PT= 9a3d8aea7dc837aec0b3327a08454df69473dcfb04460aa8 +TEST= 231 +KEY= 40a4bdb030b4bf29855ee56553d53758 +CT= 9a3d8aea7dc837aec0b3327a08454df69473dcfb04460aa8 +PT= 504cdece04223d392d3563d8c18039433e446b70fc522dcb +TEST= 232 +KEY= 6d91de68f134866abb1a8e15af871a93 +CT= 504cdece04223d392d3563d8c18039433e446b70fc522dcb +PT= 1724113044bbc46468d4a9514eaf838aba263c465ca727f1 +TEST= 233 +KEY= 05457739bf9b05e0013cb253f3203d62 +CT= 1724113044bbc46468d4a9514eaf838aba263c465ca727f1 +PT= b143b184a0cb853282faaff1c80a3a7d373662e448b6fdbe +TEST= 234 +KEY= 87bfd8c877913f9d360ad0b7bb96c0dc +CT= b143b184a0cb853282faaff1c80a3a7d373662e448b6fdbe +PT= df902abd90335564ffb41e10220bef2a6acf479c0bd29eb9 +TEST= 235 +KEY= 780bc6d8559ad0b75cc5972bb0445e65 +CT= df902abd90335564ffb41e10220bef2a6acf479c0bd29eb9 +PT= 7c11a9c27ea028cb804d74c74c8155f9dc193556919423ab +TEST= 236 +KEY= f846b21f191b854e80dca27d21d07dce +CT= 7c11a9c27ea028cb804d74c74c8155f9dc193556919423ab +PT= 9de2eab769ef10738d90d2a0f0489ac910c6ff243a22d176 +TEST= 237 +KEY= 75d660bfe9531f87901a5d591bf2acb8 +CT= 9de2eab769ef10738d90d2a0f0489ac910c6ff243a22d176 +PT= f5ce6a4d3720d07032a621bcb38ada092302efc7eb67c5c1 +TEST= 238 +KEY= 477041035ad9c58eb318b29ef0956979 +CT= f5ce6a4d3720d07032a621bcb38ada092302efc7eb67c5c1 +PT= a51831d033e735abc2f8eec1131ba6c45f413c3a8db0e944 +TEST= 239 +KEY= 8588afc249c2634aec598ea47d25803d +CT= a51831d033e735abc2f8eec1131ba6c45f413c3a8db0e944 +PT= 74d87b80bf3be874754f0880116ea23be61d360d081194de +TEST= 240 +KEY= f0c7a74258acc1710a44b8a9753414e3 +CT= 74d87b80bf3be874754f0880116ea23be61d360d081194de +PT= 38bb25ae601476f52832f6c2c9581af4464f49ae29c3e34e +TEST= 241 +KEY= d8f5518091f4db854c0bf1075cf7f7ad +CT= 38bb25ae601476f52832f6c2c9581af4464f49ae29c3e34e +PT= 97c35da573a1fd8646a757ea6f2764f926f992a8413602d1 +TEST= 242 +KEY= 9e52066afed3bf7c6af263af1dc1f57c +CT= 97c35da573a1fd8646a757ea6f2764f926f992a8413602d1 +PT= bc6d41701cd2baab8d8a9233c7674bce0a1b46d664eda072 +TEST= 243 +KEY= 13d8945939b4f4b260e92579792c550e +CT= bc6d41701cd2baab8d8a9233c7674bce0a1b46d664eda072 +PT= bc83115f11ad9af8cf88d1b57732e7f2275790f539e3a72a +TEST= 244 +KEY= dc5045ec4e86134047beb58c40cff224 +CT= bc83115f11ad9af8cf88d1b57732e7f2275790f539e3a72a +PT= 3c891e93525dc852f41a4b458b57e5160526c00704776111 +TEST= 245 +KEY= 284a0ea9c5d1f6564298758b44b89335 +CT= 3c891e93525dc852f41a4b458b57e5160526c00704776111 +PT= ddb942355c29ebf5a9b86331a1a725b430931ff888a306c1 +TEST= 246 +KEY= 81f26d986476d3e2720b6a73cc1b95f4 +CT= ddb942355c29ebf5a9b86331a1a725b430931ff888a306c1 +PT= 99e07864f5c052414a91ce730fdd6493e71a49aefb1e056e +TEST= 247 +KEY= cb63a3eb6babb771951123dd3705909a +CT= 99e07864f5c052414a91ce730fdd6493e71a49aefb1e056e +PT= d1b584fc6b5ee1d1d46472e4f93129bfda57c51854c0f478 +TEST= 248 +KEY= 1f07d10f929a9ece4f46e6c563c564e2 +CT= d1b584fc6b5ee1d1d46472e4f93129bfda57c51854c0f478 +PT= eb503ae785112cb1dadf94d8a1e403048f0c984bc9baa1f2 +TEST= 249 +KEY= c5d845d7337e9dcac04a7e8eaa7fc510 +CT= eb503ae785112cb1dadf94d8a1e403048f0c984bc9baa1f2 +PT= 936b42691028cdfa619fc173825a372f1309ae313e976d25 +TEST= 250 +KEY= a44784a4b124aae5d343d0bf94e8a835 +CT= 936b42691028cdfa619fc173825a372f1309ae313e976d25 +PT= ab150d3e161b3c6d23f2d5b053fc33fd1ebeb4b2e8780cfe +TEST= 251 +KEY= 87b55114e2d89918cdfd640d7c90a4cb +CT= ab150d3e161b3c6d23f2d5b053fc33fd1ebeb4b2e8780cfe +PT= 8b9f78b787a84df185b3f225e08ddc4927c9afeab2830af1 +TEST= 252 +KEY= 0206a33102554551ea34cbe7ce13ae3a +CT= 8b9f78b787a84df185b3f225e08ddc4927c9afeab2830af1 +PT= 49cb420290b890716f6721838402721688c3eba39eeb20a1 +TEST= 253 +KEY= 6d6182b28657374762f7204450f88e9b +CT= 49cb420290b890716f6721838402721688c3eba39eeb20a1 +PT= df4f600c59304726679312e0420fd114ca2507bddb8b17a7 +TEST= 254 +KEY= 0af29052c458e653a8d227f98b73993c +CT= df4f600c59304726679312e0420fd114ca2507bddb8b17a7 +PT= fd5ecad7f0082ea727ed823219fd7dca719543b473172ce9 +TEST= 255 +KEY= 2d1f1260dda59b99d947644df864b5d5 +CT= fd5ecad7f0082ea727ed823219fd7dca719543b473172ce9 +PT= d64e743fa05755c581bcf2260d60765690d766e98bc0a020 +TEST= 256 +KEY= aca3e046d0c5edcf499002a473a415f5 +CT= d64e743fa05755c581bcf2260d60765690d766e98bc0a020 +PT= d395cb64565f94608198045d43e7c8efded6b36658c9c9e7 +TEST= 257 +KEY= 2d3be41b932225209746b1c22b6ddc12 +CT= d395cb64565f94608198045d43e7c8efded6b36658c9c9e7 +PT= f7768b71cba5baa3ea8292541f2364edea1523f8c01f020f +TEST= 258 +KEY= c7b9764f8c0141cd7d53923aeb72de1d +CT= f7768b71cba5baa3ea8292541f2364edea1523f8c01f020f +PT= c99c7540a2eb04816b2d9921e428d7661cdb93578af8f127 +TEST= 259 +KEY= ac94ef6e682996ab6188016d618a2f3a +CT= c99c7540a2eb04816b2d9921e428d7661cdb93578af8f127 +PT= 931094a2663b829c30176230505ec9e2c044b4603955de49 +TEST= 260 +KEY= 9c838d5e38775f49a1ccb50d58dff173 +CT= 931094a2663b829c30176230505ec9e2c044b4603955de49 +PT= 9d438cc6587c000f80b6ea1441584542949a72ab139ec056 +TEST= 261 +KEY= 1c35674a792f1a0b3556c7a64b413125 +CT= 9d438cc6587c000f80b6ea1441584542949a72ab139ec056 +PT= 22c32b3eceacb9f5e089c6bc14f772bbbfe7b182d9fb4c99 +TEST= 262 +KEY= fcbca1f66dd868b08ab1762492ba7dbc +CT= 22c32b3eceacb9f5e089c6bc14f772bbbfe7b182d9fb4c99 +PT= 7d919b351ae5364f126bf9aba19f380dd012e6eb2f2c760c +TEST= 263 +KEY= eed7585dcc4750bd5aa390cfbd960bb0 +CT= 7d919b351ae5364f126bf9aba19f380dd012e6eb2f2c760c +PT= 45b3b64f57b5450a9feab5922c4d61bd4a8058b4da61ec11 +TEST= 264 +KEY= 713dedcfe00a31001023c87b67f7e7a1 +CT= 45b3b64f57b5450a9feab5922c4d61bd4a8058b4da61ec11 +PT= f5a47a53e1483531a2a3b6e46eaf71b4886b8c2899acf7f3 +TEST= 265 +KEY= d39e5b2b8ea540b498484453fe5b1052 +CT= f5a47a53e1483531a2a3b6e46eaf71b4886b8c2899acf7f3 +PT= 518aeb35bbb327256bb3f39a3230887ccb92a5fe69de2834 +TEST= 266 +KEY= b82da8b1bc95c8c853dae1ad97853866 +CT= 518aeb35bbb327256bb3f39a3230887ccb92a5fe69de2834 +PT= 8906840e28385e28d9552f23e9d15252c32a4390c5a2c910 +TEST= 267 +KEY= 6178879255449a9a90f0a23d5227f176 +CT= 8906840e28385e28d9552f23e9d15252c32a4390c5a2c910 +PT= 82cc7c19a2df09cfdff461e37fa15b90fb5020c5041f884e +TEST= 268 +KEY= be8ce6712ae5c10a6ba082f856387938 +CT= 82cc7c19a2df09cfdff461e37fa15b90fb5020c5041f884e +PT= efdd56b2682c50f9bc7a65041f5a04ab874e172504795b34 +TEST= 269 +KEY= 02f6837535bfc5a1ecee95dd5241220c +CT= efdd56b2682c50f9bc7a65041f5a04ab874e172504795b34 +PT= 66d232b5e4eddc89c5dce0899ff22d4a82390600c0b657bd +TEST= 270 +KEY= c72a63fcaa4de8eb6ed793dd92f775b1 +CT= 66d232b5e4eddc89c5dce0899ff22d4a82390600c0b657bd +PT= 49a67624b25c4e0e70948a404bf618db09e7ad1e7686fb12 +TEST= 271 +KEY= b7bee9bce1bbf03067303ec3e4718ea3 +CT= 49a67624b25c4e0e70948a404bf618db09e7ad1e7686fb12 +PT= 755e30a359221a8de224024a1634fcd6f8948da513258423 +TEST= 272 +KEY= 559aebf6f78f0ce69fa4b366f7540a80 +CT= 755e30a359221a8de224024a1634fcd6f8948da513258423 +PT= 0300bc792476a2cfaf6b4c577313e60247b2a9340e65724d +TEST= 273 +KEY= faf1a7a1849ceae4d8161a52f93178cd +CT= 0300bc792476a2cfaf6b4c577313e60247b2a9340e65724d +PT= 493de51987413e0ef4a72fbf475e20d94884f09da263a9ac +TEST= 274 +KEY= 0e56881ec3c2ca3d9092eacf5b52d161 +CT= 493de51987413e0ef4a72fbf475e20d94884f09da263a9ac +PT= 31349f56e3a06b02196ad7f610ce97b6ad248107f5ad7e53 +TEST= 275 +KEY= 173c5fe8d30c5d8b3db66bc8aeffaf32 +CT= 31349f56e3a06b02196ad7f610ce97b6ad248107f5ad7e53 +PT= 380c7e7efff4fbf735d9088a469feea912e35f5fb3ea4cd9 +TEST= 276 +KEY= 22e557629593b3222f5534971d15e3eb +CT= 380c7e7efff4fbf735d9088a469feea912e35f5fb3ea4cd9 +PT= 8357a85d29a8ec63706ec765dcc6ee0d6526f26221206a34 +TEST= 277 +KEY= 528b900749555d2f4a73c6f53c3589df +CT= 8357a85d29a8ec63706ec765dcc6ee0d6526f26221206a34 +PT= 791c107a0052cfb569fe3ac4380b09e282889640f324e5e8 +TEST= 278 +KEY= 3b75aac3715e54cdc8fb50b5cf116c37 +CT= 791c107a0052cfb569fe3ac4380b09e282889640f324e5e8 +PT= 0cdea51f370d3d736a9f13126bc214641358a588b349bf1e +TEST= 279 +KEY= 51eab9d11a9c40a9dba3f53d7c58d329 +CT= 0cdea51f370d3d736a9f13126bc214641358a588b349bf1e +PT= 786783e97c60e0ed2f1d3c34acea90f0b2ba8915c9fa18b9 +TEST= 280 +KEY= 7ef785e5b676d05969197c28b5a2cb90 +CT= 786783e97c60e0ed2f1d3c34acea90f0b2ba8915c9fa18b9 +PT= 40eea6226d457432fe1e915de53c15bb133dedd02cbd563a +TEST= 281 +KEY= 80e914b8534ac5e27a2491f8991f9daa +CT= 40eea6226d457432fe1e915de53c15bb133dedd02cbd563a +PT= 7f3a2898f246ad14c7b3e7aa52f65f2e2b2803431b55fcb9 +TEST= 282 +KEY= 475af31201bc9acc510c92bb824a6113 +CT= 7f3a2898f246ad14c7b3e7aa52f65f2e2b2803431b55fcb9 +PT= 07e9defa1facd826324ac973cef8bff2f26c27ff11370919 +TEST= 283 +KEY= 75103a61cf44253ea360b544937d680a +CT= 07e9defa1facd826324ac973cef8bff2f26c27ff11370919 +PT= 84cda934d8d9ed88e2e2fbd2f3826694748563f11f573ca0 +TEST= 284 +KEY= 97f2c1b33cc643aad7e5d6b58c2a54aa +CT= 84cda934d8d9ed88e2e2fbd2f3826694748563f11f573ca0 +PT= c3971cebc6ac8dac8f5c5b386739f29c474e58dc01202532 +TEST= 285 +KEY= 18ae9a8b5bffb13690ab8e698d0a7198 +CT= c3971cebc6ac8dac8f5c5b386739f29c474e58dc01202532 +PT= f7d725503b0569b81433adf541b2735957d3f506c509f83e +TEST= 286 +KEY= 0c9d377e1a4dc26fc7787b6f480389a6 +CT= f7d725503b0569b81433adf541b2735957d3f506c509f83e +PT= ad240f01e1091ee92065cfcf86a8620cd5c043d21346e79b +TEST= 287 +KEY= 2cf8f8b19ce5a06312b838bd5b456e3d +CT= ad240f01e1091ee92065cfcf86a8620cd5c043d21346e79b +PT= 356f53187bebb3d3ccd39c1eefa8b81a1313bb5154fa4d86 +TEST= 288 +KEY= e02b64af734d187901ab83ec0fbf23bb +CT= 356f53187bebb3d3ccd39c1eefa8b81a1313bb5154fa4d86 +PT= 0937b408e7a00a6e14edb60b8f1c6401a4933bb5cba29a34 +TEST= 289 +KEY= f4c6d2a4fc517c78a538b859c41db98f +CT= 0937b408e7a00a6e14edb60b8f1c6401a4933bb5cba29a34 +PT= 5e5ddb78d6d76e3b4eb2a4327da9f5a5c9dfa3b76d57ff3e +TEST= 290 +KEY= ba74769681f889dd6ce71beea94a46b1 +CT= 5e5ddb78d6d76e3b4eb2a4327da9f5a5c9dfa3b76d57ff3e +PT= 13c41222023295e8d30cde74a6ee000810673614b7c5119f +TEST= 291 +KEY= 6978a8e2271689d57c802dfa1e8f572e +CT= 13c41222023295e8d30cde74a6ee000810673614b7c5119f +PT= 656573d9f1ab366ffb05afd53d36d9b43e2ff59bfe73630f +TEST= 292 +KEY= 927d07371a20506142afd861e0fc3421 +CT= 656573d9f1ab366ffb05afd53d36d9b43e2ff59bfe73630f +PT= f20c6303ef25ffd476063d715ac4fe9c6e9dd66a6298d02e +TEST= 293 +KEY= e47b3a4640e4aefd2c320e0b8264e40f +CT= f20c6303ef25ffd476063d715ac4fe9c6e9dd66a6298d02e +PT= 2b366d51ac785c99dfe6a9c7097e05bb9f4bd7d1130f1efd +TEST= 294 +KEY= 3b9d9381499aab46b379d9da916bfaf2 +CT= 2b366d51ac785c99dfe6a9c7097e05bb9f4bd7d1130f1efd +PT= b3a521aaa332ad718bbf5c181f445b0a62c46955eb6e22e8 +TEST= 295 +KEY= b022cf9956def04cd1bdb08f7a05d81a +CT= b3a521aaa332ad718bbf5c181f445b0a62c46955eb6e22e8 +PT= fae7ba5180e95871aec5423eb4259e2f5517e8c8a436c3a4 +TEST= 296 +KEY= 1ee78da7e2fb6e6384aa5847de331bbe +CT= fae7ba5180e95871aec5423eb4259e2f5517e8c8a436c3a4 +PT= 4238b49c8fdd8a5a31c9be1124f032f1086b6dab10405d51 +TEST= 297 +KEY= 2f2e33b6c60b5c928cc135ecce7346ef +CT= 4238b49c8fdd8a5a31c9be1124f032f1086b6dab10405d51 +PT= 04d50bdb6574ff26d7d77a29f762e18f02fa59f6ba310b13 +TEST= 298 +KEY= f8f9499f3169bd1d8e3b6c1a74424dfc +CT= 04d50bdb6574ff26d7d77a29f762e18f02fa59f6ba310b13 +PT= 11390a3669fc69c3243ec91d5a55c903db8ad6607cfb8baa +TEST= 299 +KEY= dcc780826b3c741e55b1ba7a08b9c656 +CT= 11390a3669fc69c3243ec91d5a55c903db8ad6607cfb8baa +PT= 570cfcc64939c2cd24917e2d524769ab8a84726e4205ff56 +TEST= 300 +KEY= f856feaf397b1db5df35c8144abc3900 +CT= 570cfcc64939c2cd24917e2d524769ab8a84726e4205ff56 +PT= 3459e595e4378421e56db9298d10a58f9db50cbea8f17ff6 +TEST= 301 +KEY= 1d3b4786b46bb83a4280c4aae24d46f6 +CT= 3459e595e4378421e56db9298d10a58f9db50cbea8f17ff6 +PT= d7cf8ec87416b8d3f2be2be8cbe695774f62df7d01253ee3 +TEST= 302 +KEY= ef856c6e7f8d2d4d0de21bd7e3687815 +CT= d7cf8ec87416b8d3f2be2be8cbe695774f62df7d01253ee3 +PT= 1495f0eade617b5d1ac03c03bdd7ed1d93ea7275886c0da7 +TEST= 303 +KEY= f545506dc25ac0509e0869a26b0475b2 +CT= 1495f0eade617b5d1ac03c03bdd7ed1d93ea7275886c0da7 +PT= 3b20ac02ed95e887c2398b85534a8ee22e4325da748c71da +TEST= 304 +KEY= 377cdbe891104eb2b04b4c781f880468 +CT= 3b20ac02ed95e887c2398b85534a8ee22e4325da748c71da +PT= db02a7582db24d66a6f3c727c8c68badfc7c1711b7da0e82 +TEST= 305 +KEY= 918f1ccf59d6c51f4c375b69a8520aea +CT= db02a7582db24d66a6f3c727c8c68badfc7c1711b7da0e82 +PT= 35646333b2ec6e94ffbdf852ad85b9fdf00a350b9094cad6 +TEST= 306 +KEY= 6e32e49df4537ce2bc3d6e6238c6c03c +CT= 35646333b2ec6e94ffbdf852ad85b9fdf00a350b9094cad6 +PT= 0ef708d283310c9996d104ba27c7e2a711c7d7ff692bbdf0 +TEST= 307 +KEY= f8e3e027d3949e45adfab99d51ed7dcc +CT= 0ef708d283310c9996d104ba27c7e2a711c7d7ff692bbdf0 +PT= 0efb055fae14c9a90ec54b1676917ee19377d2edc04488fd +TEST= 308 +KEY= f626ab31a505e0a43e8d6b7091a9f531 +CT= 0efb055fae14c9a90ec54b1676917ee19377d2edc04488fd +PT= 668602109731619671c98f192a9202aad9a641b21eaeeb1a +TEST= 309 +KEY= 87ef24288f97e20ee72b2ac28f071e2b +CT= 668602109731619671c98f192a9202aad9a641b21eaeeb1a +PT= 0054c3ac5d885d3541bd98204053bc6326c9a6bb0aa0fd32 +TEST= 310 +KEY= c652bc08cfc45e6dc1e28c7985a7e319 +CT= 0054c3ac5d885d3541bd98204053bc6326c9a6bb0aa0fd32 +PT= 40d5a973ff5c6194d16317bebc7776cde3abdd7214ecd94b +TEST= 311 +KEY= 1731abb673b328a02249510b914b3a52 +CT= 40d5a973ff5c6194d16317bebc7776cde3abdd7214ecd94b +PT= 6b4ca74fa589e1fba0adefe5eb4957352d93a0c9a8740ca0 +TEST= 312 +KEY= b79c445398fa7f950fdaf1c2393f36f2 +CT= 6b4ca74fa589e1fba0adefe5eb4957352d93a0c9a8740ca0 +PT= 115af56b32b98f68b1a37460a008e0f48a9f20cb61de1a3b +TEST= 313 +KEY= 063f303338f29f618545d10958e12cc9 +CT= 115af56b32b98f68b1a37460a008e0f48a9f20cb61de1a3b +PT= 7a4c6c55f0be5482c2bac524c69c1270427fdf1677f0abb1 +TEST= 314 +KEY= c485f517fe6e8d11c73a0e1f2f118778 +CT= 7a4c6c55f0be5482c2bac524c69c1270427fdf1677f0abb1 +PT= cdc3fa3ef4817050c21ae8707aa42811cffaa02bcaf0e35b +TEST= 315 +KEY= 069f1d6784caa50008c0ae34e5e16423 +CT= cdc3fa3ef4817050c21ae8707aa42811cffaa02bcaf0e35b +PT= a3b7c4edb4be6cb406ce3f5f971828cf19231edb3c379d68 +TEST= 316 +KEY= 0051223813d28dcf11e3b0efd9d6f94b +CT= a3b7c4edb4be6cb406ce3f5f971828cf19231edb3c379d68 +PT= 6b6f667cb8eb75e47afd19346835fd3d71686532e1f68fa2 +TEST= 317 +KEY= 7aac3b0c7be770f2608bd5dd382076e9 +CT= 6b6f667cb8eb75e47afd19346835fd3d71686532e1f68fa2 +PT= 228e3ed9bbcbc7a3ad9be0b5c53a4648015b6608f816cbd2 +TEST= 318 +KEY= d737dbb9bedd36ba61d0b3d5c036bd3b +CT= 228e3ed9bbcbc7a3ad9be0b5c53a4648015b6608f816cbd2 +PT= 8e5488cdbbcfe19992754cd6e2d977488cb657e54e75ba50 +TEST= 319 +KEY= 4542976f5c0441f2ed66e4308e43076b +CT= 8e5488cdbbcfe19992754cd6e2d977488cb657e54e75ba50 +PT= 520c0a1fa0988cb2e24112f94155945eb906ce49331c6ca5 +TEST= 320 +KEY= a70385961d51d5ac54602a79bd5f6bce +CT= 520c0a1fa0988cb2e24112f94155945eb906ce49331c6ca5 +PT= 528a1d12225829d209fb7a0868d6bfbdfa0098e2f8abf59e +TEST= 321 +KEY= aef8ff9e75876a11ae60b29b45f49e50 +CT= 528a1d12225829d209fb7a0868d6bfbdfa0098e2f8abf59e +PT= c07937c0167f069d55bbf9e537cd2565461a8451b0233204 +TEST= 322 +KEY= fb43067b424a4f74e87a36caf5d7ac54 +CT= c07937c0167f069d55bbf9e537cd2565461a8451b0233204 +PT= 6195d6aa403af661991ab094524a80e31b56c17d37c110ad +TEST= 323 +KEY= 6259b6ef1000cf97f32cf7b7c216bcf9 +CT= 6195d6aa403af661991ab094524a80e31b56c17d37c110ad +PT= 4daf266decfc10dcb4ef78b7c53e728faf145fcbfc6e0919 +TEST= 324 +KEY= d6b6ce58d53ebd185c38a87c3e78b5e0 +CT= 4daf266decfc10dcb4ef78b7c53e728faf145fcbfc6e0919 +PT= 093587897be21ea82b1c2e98ba44900e4276cfb6c24b5387 +TEST= 325 +KEY= fdaae0c06f7a2d161e4e67cafc33e667 +CT= 093587897be21ea82b1c2e98ba44900e4276cfb6c24b5387 +PT= b1276719c3f6a1db9cf39894c6a189b76aa4630a3b3d5a0a +TEST= 326 +KEY= 61597854a9dba4a174ea04c0c70ebc6d +CT= b1276719c3f6a1db9cf39894c6a189b76aa4630a3b3d5a0a +PT= bf998133a65b0dbd9a0ff1968401528489fe1c2159b2f8de +TEST= 327 +KEY= fb5689c22ddaf625fd1418e19ebc44b3 +CT= bf998133a65b0dbd9a0ff1968401528489fe1c2159b2f8de +PT= 83a15fca895fb58ebc58d5215f3ad13dd0fc2e1d1d5b8c1e +TEST= 328 +KEY= 470e5ce372e027182de836fc83e7c8ad +CT= 83a15fca895fb58ebc58d5215f3ad13dd0fc2e1d1d5b8c1e +PT= b1c0253b145f7a2f0b467b7d4d1be80fff367c4abedf0469 +TEST= 329 +KEY= 4c48279e3ffbcf17d2de4ab63d38ccc4 +CT= b1c0253b145f7a2f0b467b7d4d1be80fff367c4abedf0469 +PT= 2de6aeb3ea2c563f679d64aea7eba6c45f313e126eef0e15 +TEST= 330 +KEY= 2bd54330981069d38def74a453d7c2d1 +CT= 2de6aeb3ea2c563f679d64aea7eba6c45f313e126eef0e15 +PT= 899a58042eb5fcdbdb1d551628bcbeba1e55e26531b4ece1 +TEST= 331 +KEY= f0c81626b0acd76993ba96c162632e30 +CT= 899a58042eb5fcdbdb1d551628bcbeba1e55e26531b4ece1 +PT= a1e097471f2217b6f65e9fbdc7864fd2dde6ecac894f3256 +TEST= 332 +KEY= 0696899b772a98bb4e5c7a6deb2c1c66 +CT= a1e097471f2217b6f65e9fbdc7864fd2dde6ecac894f3256 +PT= 9617e69ef901ce02fff97623a821b952716981c4df848b62 +TEST= 333 +KEY= f96fffb8df0b21e93f35fba934a89704 +CT= 9617e69ef901ce02fff97623a821b952716981c4df848b62 +PT= 1f58df229bd0863aac75fc4909c0c214b9e1858622b56b9d +TEST= 334 +KEY= 551a03f1d6cbe3fd86d47e2f161dfc99 +CT= 1f58df229bd0863aac75fc4909c0c214b9e1858622b56b9d +PT= 4877b49ad526b78f57d6e636135490686afa95fba9cd43ad +TEST= 335 +KEY= 02cce5c7c59f7395ec2eebd4bfd0bf34 +CT= 4877b49ad526b78f57d6e636135490686afa95fba9cd43ad +PT= 62dc212da8b87912dc50c4f4483f5492f87b8e9f4b826514 +TEST= 336 +KEY= de9c21338da027071455654bf452da20 +CT= 62dc212da8b87912dc50c4f4483f5492f87b8e9f4b826514 +PT= fd9f44d4ae5116d5137ddc4a0adab9287c11889fa36266bd +TEST= 337 +KEY= cde1fd79877a9e2f6844edd45730bc9d +CT= fd9f44d4ae5116d5137ddc4a0adab9287c11889fa36266bd +PT= a986911ef614e39814b81f278790bcb5675a3d3136c740c4 +TEST= 338 +KEY= d959e25e00ea229a0f1ed0e561f7fc59 +CT= a986911ef614e39814b81f278790bcb5675a3d3136c740c4 +PT= ef4ea3ea93df83baa72096e7b9d031e3401a94301bfa2345 +TEST= 339 +KEY= 7e7974b9b93a13794f0444d57a0ddf1c +CT= ef4ea3ea93df83baa72096e7b9d031e3401a94301bfa2345 +PT= 6f026c1ff0033b51ee0573c1237ff7e3e2894a4052bebda7 +TEST= 340 +KEY= 907c07789a45e49aad8d0e9528b362bb +CT= 6f026c1ff0033b51ee0573c1237ff7e3e2894a4052bebda7 +PT= 80bb13a0cccea6b1f911232635f7063216b26f75707351f8 +TEST= 341 +KEY= 696d245eafb2e2a8bb3f61e058c03343 +CT= 80bb13a0cccea6b1f911232635f7063216b26f75707351f8 +PT= 0571be64c2ea67f956de87eae4090ed4ba0381daf8cd32ba +TEST= 342 +KEY= 3fb3a3b44bbbec7c013ce03aa00d01f9 +CT= 0571be64c2ea67f956de87eae4090ed4ba0381daf8cd32ba +PT= 45d09e3793b99a47c72d01a0417a88b55ae175f219c17eb4 +TEST= 343 +KEY= f89ea2140ac164c95bdd95c8b9cc7f4d +CT= 45d09e3793b99a47c72d01a0417a88b55ae175f219c17eb4 +PT= 23ac80ddffdbd4d97dfb3bf4fedc8f707f071ec9fd5c74a4 +TEST= 344 +KEY= 856599e0f41debb924da8b0144900be9 +CT= 23ac80ddffdbd4d97dfb3bf4fedc8f707f071ec9fd5c74a4 +PT= c80d161c8e141af8ad1d64ec57f44b09f56ccdedde160c49 +TEST= 345 +KEY= 2878fd0ca3e9a0b0d1b646ec9a8607a0 +CT= c80d161c8e141af8ad1d64ec57f44b09f56ccdedde160c49 +PT= 29582d14e90f4202184329beb902ee9965f29e0029043ff3 +TEST= 346 +KEY= 303bd4b21aeb4e29b444d8ecb3823853 +CT= 29582d14e90f4202184329beb902ee9965f29e0029043ff3 +PT= 3a4e096049e83ba66202a7974cc930d3464de95d0e4d230f +TEST= 347 +KEY= 5239732556227efaf20931b1bdcf1b5c +CT= 3a4e096049e83ba66202a7974cc930d3464de95d0e4d230f +PT= 1c0c5b5c7b3122618ae7fd4c29a27c320a2c311a7e56652d +TEST= 348 +KEY= d8de8e697f8002c8f82500abc3997e71 +CT= 1c0c5b5c7b3122618ae7fd4c29a27c320a2c311a7e56652d +PT= 713c3f9c031b00012d601c287d56b37ebed678e3724094c7 +TEST= 349 +KEY= f5be924102d6b1b646f37848b1d9eab6 +CT= 713c3f9c031b00012d601c287d56b37ebed678e3724094c7 +PT= e702c209d1d3cddcb9ee774cbd74356b40681f4c1c22e982 +TEST= 350 +KEY= 4c50e50dbfa284dd069b6704adfb0334 +CT= e702c209d1d3cddcb9ee774cbd74356b40681f4c1c22e982 +PT= e0fbfc9057f9dfa451088a60006f536b99d0c35de3c82f5b +TEST= 351 +KEY= 1d586f6dbfcdd7b69f4ba4594e332c6f +CT= e0fbfc9057f9dfa451088a60006f536b99d0c35de3c82f5b +PT= 0d699164762723253db32bdfc873714854ee733464ff8aa9 +TEST= 352 +KEY= 20eb44b277bea6fecba5d76d2acca6c6 +CT= 0d699164762723253db32bdfc873714854ee733464ff8aa9 +PT= c8db376958ab95f7155abf48e5e0cc4ca94fdbcf8fe1dae0 +TEST= 353 +KEY= 35b1fbfa925e6ab262ea0ca2a52d7c26 +CT= c8db376958ab95f7155abf48e5e0cc4ca94fdbcf8fe1dae0 +PT= d5decbb32fe777fadbbf042454d43c751c377d14712573b4 +TEST= 354 +KEY= ee0effdec68a56c77edd71b6d4080f92 +CT= d5decbb32fe777fadbbf042454d43c751c377d14712573b4 +PT= 821de091b0e456586f1e97d8454f0fe4e71cb6f05589a847 +TEST= 355 +KEY= 8110680683c5592399c1c7468181a7d5 +CT= 821de091b0e456586f1e97d8454f0fe4e71cb6f05589a847 +PT= 441c7e2691e9ab7f1f51d72602bbd90a020f8cdd3558320d +TEST= 356 +KEY= 9e41bf20817e80299bce4b9bb4d995d8 +CT= 441c7e2691e9ab7f1f51d72602bbd90a020f8cdd3558320d +PT= e35ed51be4eed5774858f0924e4faf34156cb0088a0b7efc +TEST= 357 +KEY= d6194fb2cf312f1d8ea2fb933ed2eb24 +CT= e35ed51be4eed5774858f0924e4faf34156cb0088a0b7efc +PT= db62c879d9e543293c1f7629e202d9f75cddcc38eac91044 +TEST= 358 +KEY= ea06399b2d33f6ead27f37abd41bfb60 +CT= db62c879d9e543293c1f7629e202d9f75cddcc38eac91044 +PT= dee22a9b051cfb69f32968a711c19f8e7ee3e1f2e63c8339 +TEST= 359 +KEY= 192f513c3cf26964ac9cd65932277859 +CT= dee22a9b051cfb69f32968a711c19f8e7ee3e1f2e63c8339 +PT= a7d352ba435bfc9f334609ea317d7e6e2edc8fb728c5418f +TEST= 360 +KEY= 2a6958d60d8f170a824059ee1ae239d6 +CT= a7d352ba435bfc9f334609ea317d7e6e2edc8fb728c5418f +PT= 42aafe89e4f64d5f7ac1a96b258415152a56a4969beadbcf +TEST= 361 +KEY= 50a8f1bd280b021fa816fd788108e219 +CT= 42aafe89e4f64d5f7ac1a96b258415152a56a4969beadbcf +PT= ac5df0ac6e5078cf661663614f287a687345ffba7200fb8d +TEST= 362 +KEY= 36be92dc67237877db5302c2f3081994 +CT= ac5df0ac6e5078cf661663614f287a687345ffba7200fb8d +PT= 72a677c2ec493f65ac442fa8b84ff06975e6abc5ac47d528 +TEST= 363 +KEY= 9afabd74df6c881eaeb5a9075f4fccbc +CT= 72a677c2ec493f65ac442fa8b84ff06975e6abc5ac47d528 +PT= e9a31a9d034cd60e1ffc901ee150e998129dc82bb9245e8e +TEST= 364 +KEY= 85062d6a3e3c6186bc28612ce66b9232 +CT= e9a31a9d034cd60e1ffc901ee150e998129dc82bb9245e8e +PT= 14da116405d49f71b901e2615150c5a4c1545c582765d4e1 +TEST= 365 +KEY= 3c07cf0b6f6ca4227d7c3d74c10e46d3 +CT= 14da116405d49f71b901e2615150c5a4c1545c582765d4e1 +PT= 46fafd9c4ce1e279967acb983f7a12c57aa5953899c1f8e2 +TEST= 366 +KEY= aa7d04935016b6e707d9a84c58cfbe31 +CT= 46fafd9c4ce1e279967acb983f7a12c57aa5953899c1f8e2 +PT= 74b3bd32c3eee5132786e54f3898f27764f7c472d92287cb +TEST= 367 +KEY= 8dfbe1dc688e4490632e6c3e81ed39fa +CT= 74b3bd32c3eee5132786e54f3898f27764f7c472d92287cb +PT= 2f1f07b3b79a647ef3e666b9f10653f665a95f3f3045691a +TEST= 368 +KEY= 7e1d87659988176606873301b1a850e0 +CT= 2f1f07b3b79a647ef3e666b9f10653f665a95f3f3045691a +PT= b867adee1dc27441c6769dfff4f69b055d24beb9943221d6 +TEST= 369 +KEY= b86b1a9a6d7e8c635ba38db8259a7136 +CT= b867adee1dc27441c6769dfff4f69b055d24beb9943221d6 +PT= 90ba79994efc4124256eaddb5c8e1793258b9ef78341f052 +TEST= 370 +KEY= 9d05b74131f09bf07e28134fa6db8164 +CT= 90ba79994efc4124256eaddb5c8e1793258b9ef78341f052 +PT= c98d1827e403d422c1fc25c7792b8c508c62993287348008 +TEST= 371 +KEY= 5cf9928648db17a0f24a8a7d21ef016c +CT= c98d1827e403d422c1fc25c7792b8c508c62993287348008 +PT= 28357b79ff305e5cc9012fc0de263ebe7edd90d2b73a232c +TEST= 372 +KEY= 95f8bd4696fd291e8c971aaf96d52240 +CT= 28357b79ff305e5cc9012fc0de263ebe7edd90d2b73a232c +PT= 56946f2bab151c2838acfa4d45f91114aa312a35cf3f263d +TEST= 373 +KEY= ad54470bd304380a26a6309a59ea047d +CT= 56946f2bab151c2838acfa4d45f91114aa312a35cf3f263d +PT= 8b78e73b35250c899c9e569bd1e41b0715f7a6855c83ec1c +TEST= 374 +KEY= 31ca119002e0230d3351961f0569e861 +CT= 8b78e73b35250c899c9e569bd1e41b0715f7a6855c83ec1c +PT= 919d9405a7e4daa3b00b52139a55a17a00d6cb1051903988 +TEST= 375 +KEY= 81c1438398b5827733875d0f54f9d1e9 +CT= 919d9405a7e4daa3b00b52139a55a17a00d6cb1051903988 +PT= 3c54e2300359636767a6ff8f4c097789410e9e5006c78416 +TEST= 376 +KEY= e667bc0cd4bcf5fe7289c35f523e55ff +CT= 3c54e2300359636767a6ff8f4c097789410e9e5006c78416 +PT= 549fd01cf2553f498dc51af42d99f95f841cc14f44af8b21 +TEST= 377 +KEY= 6ba2a6f8f9250ca1f69502101691dede +CT= 549fd01cf2553f498dc51af42d99f95f841cc14f44af8b21 +PT= b32ea19c49fefd67c048c3f3dfa22cb59165ace1c376517f +TEST= 378 +KEY= abea650b2687201467f0aef1d5e78fa1 +CT= b32ea19c49fefd67c048c3f3dfa22cb59165ace1c376517f +PT= 7f731522f80946d3a6377652a6d34a9f4768761d47d315f0 +TEST= 379 +KEY= 0ddd135980546a8b2098d8ec92349a51 +CT= 7f731522f80946d3a6377652a6d34a9f4768761d47d315f0 +PT= f76eec631fd41fe50407262362d0a773d1261748b4f29f03 +TEST= 380 +KEY= 09da357ae284cdf8f1becfa426c60552 +CT= f76eec631fd41fe50407262362d0a773d1261748b4f29f03 +PT= 1f5ded284bc6413ae7bd477d76641843040b2da47f917c54 +TEST= 381 +KEY= ee67720794e0d5bbf5b5e20059577906 +CT= 1f5ded284bc6413ae7bd477d76641843040b2da47f917c54 +PT= 7fd9b887750c6584b89e40bcc9171148d16c519ca11f29f8 +TEST= 382 +KEY= 56f932bb5df7c4f324d9b39cf84850fe +CT= 7fd9b887750c6584b89e40bcc9171148d16c519ca11f29f8 +PT= f96c71aadc5306aca4cdf5980c719eeaf27ef29916d1edbb +TEST= 383 +KEY= f234c72351865a19d6a74105ee99bd45 +CT= f96c71aadc5306aca4cdf5980c719eeaf27ef29916d1edbb +PT= aa1075fb1f22b6cdaca1b674f1b0e43cd4e7b0413bab45f6 +TEST= 384 +KEY= 5e957157a036be250240f144d532f8b3 +CT= aa1075fb1f22b6cdaca1b674f1b0e43cd4e7b0413bab45f6 +PT= 14499351304817ffc57659fc2f4ea4a9e801b215565dab65 +TEST= 385 +KEY= 9be328ab8f781a8cea414351836f53d6 +CT= 14499351304817ffc57659fc2f4ea4a9e801b215565dab65 +PT= 9a3a41a3d6816db0f751840b48cc11e3d19f5747e4b16fd0 +TEST= 386 +KEY= 6cb2aca0c7b40b6f3bde141667de3c06 +CT= 9a3a41a3d6816db0f751840b48cc11e3d19f5747e4b16fd0 +PT= c22630bb44a32ebc63db44b928903feb4307286b6025c315 +TEST= 387 +KEY= 0f69e819ef24348478d93c7d07fbff13 +CT= c22630bb44a32ebc63db44b928903feb4307286b6025c315 +PT= df725d18c4c3f8982ad6211b3f93a3c9201fb89a12d03935 +TEST= 388 +KEY= 25bfc902d0b7974d58c684e7152bc626 +CT= df725d18c4c3f8982ad6211b3f93a3c9201fb89a12d03935 +PT= a044234f58fd1913d2d739d05763f4e8fd1d63a910667e69 +TEST= 389 +KEY= f768f0d287d463a5a5dbe74e054db84f +CT= a044234f58fd1913d2d739d05763f4e8fd1d63a910667e69 +PT= 25f1560e0d74a922fbf68a578309b1cc22f7bdb3f4081388 +TEST= 390 +KEY= 0c9e7a8504ddd269872c5afdf145abc7 +CT= 25f1560e0d74a922fbf68a578309b1cc22f7bdb3f4081388 +PT= 6a7e46b005c2630421084c87e464323940116e24aff0d461 +TEST= 391 +KEY= 2d963602e0b9e050c73d34d95eb57fa6 +CT= 6a7e46b005c2630421084c87e464323940116e24aff0d461 +PT= a18b23cee4fba9a12be71f7e53fc9be1ebe307be3dd1d0c9 +TEST= 392 +KEY= 0671297cb3457bb12cde33676364af6f +CT= a18b23cee4fba9a12be71f7e53fc9be1ebe307be3dd1d0c9 +PT= 8e70ac3c0b4e8ca4e60af377a0732454049cff81033fa861 +TEST= 393 +KEY= e07bda0b13365fe52842cce6605b070e +CT= 8e70ac3c0b4e8ca4e60af377a0732454049cff81033fa861 +PT= 07c68469ae8158627554e2fbb242ded6958530851281e648 +TEST= 394 +KEY= 952f38f0a1748133bdc7fc6372dae146 +CT= 07c68469ae8158627554e2fbb242ded6958530851281e648 +PT= d51ca941174e68ccf64b7f13aa91f5effdb1e717d0bd6482 +TEST= 395 +KEY= 636447e30be574dc40761b74a26785c4 +CT= d51ca941174e68ccf64b7f13aa91f5effdb1e717d0bd6482 +PT= 53c825a74b9308780b7f43b616909bb73fb4c158f13dda4d +TEST= 396 +KEY= 681b04551d75ef6b7fc2da2c535a5f89 +CT= 53c825a74b9308780b7f43b616909bb73fb4c158f13dda4d +PT= 8d2254515da13de6b14ccc1ebc9bb9b10d712048979727ce +TEST= 397 +KEY= d957c84ba1ee56da72b3fa64c4cd7847 +CT= 8d2254515da13de6b14ccc1ebc9bb9b10d712048979727ce +PT= 0925325ad3d80b9d51a7b3d7a8de39d2e62cb5136919f458 +TEST= 398 +KEY= 88f07b9c09306f08949f4f77add48c1f +CT= 0925325ad3d80b9d51a7b3d7a8de39d2e62cb5136919f458 +PT= 985a13dcc0f07b861affb4c6533fb759b2861aff384d9a80 +TEST= 399 +KEY= 920fcf5a5a0fd851261955889599169f +CT= 985a13dcc0f07b861affb4c6533fb759b2861aff384d9a80 +PT= 42f398cac1821da84300fb49de3cc0fe4f0a9bafbf726085 diff --git a/flint/test/testvals/ecbmd66.txt b/flint/test/testvals/ecbmd66.txt new file mode 100644 index 0000000..602e186 --- /dev/null +++ b/flint/test/testvals/ecbmd66.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= 7567eeb8cb4862b711170819d5d22e8db6ed237746aa8539 +TEST= 1 +KEY= 7567eeb8cb4862b711170819d5d22e8db6ed237746aa8539 +CT= 7567eeb8cb4862b711170819d5d22e8db6ed237746aa8539 +PT= a009d17d09eae26139dd3f0eb2a174b7d283901c6959d5ec +TEST= 2 +KEY= d56e3fc5c2a280d628ca371767735a3a646eb36b2ff350d5 +CT= a009d17d09eae26139dd3f0eb2a174b7d283901c6959d5ec +PT= 14e94ce7c1e42f8180a2bdcecded8e25c7a427412bf9cb0b +TEST= 3 +KEY= c18773220346af57a8688ad9aa9ed41fa3ca942a040a9bde +CT= 14e94ce7c1e42f8180a2bdcecded8e25c7a427412bf9cb0b +PT= c979feb9fab3a81dbd717c79ab9d08aa62d21c46ba6a3ac6 +TEST= 4 +KEY= 08fe8d9bf9f5074a1519f6a00103dcb5c118886cbe60a118 +CT= c979feb9fab3a81dbd717c79ab9d08aa62d21c46ba6a3ac6 +PT= 07c5491759b0d6dbe128e0e3c3913abc14fc63c27946d552 +TEST= 5 +KEY= 0f3bc48ca045d191f4311643c292e609d5e4ebaec726744a +CT= 07c5491759b0d6dbe128e0e3c3913abc14fc63c27946d552 +PT= 844292786bac10abf5c69d31e93f5f146c424a2f34d544a7 +TEST= 6 +KEY= 8b7956f4cbe9c13a01f78b722badb91db9a6a181f3f330ed +CT= 844292786bac10abf5c69d31e93f5f146c424a2f34d544a7 +PT= 65361b3277cb0d3d2ca801f6abf0e1bf0aa63d17cc8ccdfe +TEST= 7 +KEY= ee4f4dc6bc22cc072d5f8a84805d58a2b3009c963f7ffd13 +CT= 65361b3277cb0d3d2ca801f6abf0e1bf0aa63d17cc8ccdfe +PT= 16945a39fefd3f85094dedd9aff04af97220dc2572c8c01f +TEST= 8 +KEY= f8db17ff42dff3822412675d2fad125bc12040b34db73d0c +CT= 16945a39fefd3f85094dedd9aff04af97220dc2572c8c01f +PT= bc817f059864238ee89815705de194176a6ef982f51ce91d +TEST= 9 +KEY= 445a68fadabbd00ccc8a722d724c864cab4eb931b8abd411 +CT= bc817f059864238ee89815705de194176a6ef982f51ce91d +PT= 32a21ed5f224958a15fc4aad1720421b9db133beb79e9aa6 +TEST= 10 +KEY= 76f8762f289f4586d9763880656cc45736ff8a8f0f354eb7 +CT= 32a21ed5f224958a15fc4aad1720421b9db133beb79e9aa6 +PT= 1578d8a18858fd66a7299fedaf837d8bea5e7a2f30d7e009 +TEST= 11 +KEY= 6380ae8ea0c7b8e07e5fa76dcaefb9dcdca1f0a03fe2aebe +CT= 1578d8a18858fd66a7299fedaf837d8bea5e7a2f30d7e009 +PT= d84b18acf7a4adfc0e4dd2cce4a1a3173db37f00dc253a11 +TEST= 12 +KEY= bbcbb6225763151c701275a12e4e1acbe1128fa0e3c794af +CT= d84b18acf7a4adfc0e4dd2cce4a1a3173db37f00dc253a11 +PT= b065b12dce013c3a0bc411ae0b3f62cceb9ea0fc5e64648f +TEST= 13 +KEY= 0bae070f996229267bd6640f257178070a8c2f5cbda3f020 +CT= b065b12dce013c3a0bc411ae0b3f62cceb9ea0fc5e64648f +PT= 86e67effa88140889285e21225f9f7509127ec210e76816a +TEST= 14 +KEY= 8d4879f031e369aee953861d00888f579babc37db3d5714a +CT= 86e67effa88140889285e21225f9f7509127ec210e76816a +PT= 56f95d1fd46b2344e91c67ba72320fa8fb72a095ec171c76 +TEST= 15 +KEY= dbb124efe5884aea004fe1a772ba80ff60d963e85fc26d3c +CT= 56f95d1fd46b2344e91c67ba72320fa8fb72a095ec171c76 +PT= 635d62ac3cbf44eac27f8af431f1aa3a0c05b776531a1abe +TEST= 16 +KEY= b8ec4643d9370e00c2306b53434b2ac56cdcd49e0cd87782 +CT= 635d62ac3cbf44eac27f8af431f1aa3a0c05b776531a1abe +PT= 283fc78a921b2bc9022cf34814f8289583b32f9aac992354 +TEST= 17 +KEY= 90d381c94b2c25c9c01c981b57b30250ef6ffb04a04154d6 +CT= 283fc78a921b2bc9022cf34814f8289583b32f9aac992354 +PT= 4bc11d7ba6431888d2fa9d5fddd15b359d63bc96e40caa38 +TEST= 18 +KEY= db129cb2ed6f3d4112e605448a625965720c4792444dfeee +CT= 4bc11d7ba6431888d2fa9d5fddd15b359d63bc96e40caa38 +PT= aee00abf59241375c1d5ddb1593476ba77c351d68c9be491 +TEST= 19 +KEY= 75f2960db44b2e34d333d8f5d3562fdf05cf1644c8d61a7f +CT= aee00abf59241375c1d5ddb1593476ba77c351d68c9be491 +PT= 695ecd6c30ce7d455821cd7e5a2d840bfd945a8475c2ed8b +TEST= 20 +KEY= 1cac5b61848553718b12158b897babd4f85b4cc0bd14f7f4 +CT= 695ecd6c30ce7d455821cd7e5a2d840bfd945a8475c2ed8b +PT= 1e5e0a9a07a5d49f8805b2dae16dae26d7f780b81428b8e4 +TEST= 21 +KEY= 02f251fb832087ee0317a751681605f22faccc78a93c4f10 +CT= 1e5e0a9a07a5d49f8805b2dae16dae26d7f780b81428b8e4 +PT= 2be8e919fc5bba2726db97ce2232696aaba647dea174253d +TEST= 22 +KEY= 291ab8e27f7b3dc925cc309f4a246c98840a8ba608486a2d +CT= 2be8e919fc5bba2726db97ce2232696aaba647dea174253d +PT= c4e9009154d7f82b4ea4b8d31466b95dcba027ea968b627a +TEST= 23 +KEY= edf3b8732bacc5e26b68884c5e42d5c54faaac4c9ec30857 +CT= c4e9009154d7f82b4ea4b8d31466b95dcba027ea968b627a +PT= 86c0f37364d001924ec9d42f6501bef2422f9d54f279fb56 +TEST= 24 +KEY= 6b334b004f7cc47025a15c633b436b370d8531186cbaf301 +CT= 86c0f37364d001924ec9d42f6501bef2422f9d54f279fb56 +PT= d2953998cfadfbfa7d2ae2aaf0dfeb75fc5836b2d8794caa +TEST= 25 +KEY= b9a6729880d13f8a588bbec9cb9c8042f1dd07aab4c3bfab +CT= d2953998cfadfbfa7d2ae2aaf0dfeb75fc5836b2d8794caa +PT= f092c1f4cb41f7eaba5bd637d2fe8cbb5683dbf1833e7497 +TEST= 26 +KEY= 4934b36c4b90c860e2d068fe19620cf9a75edc5b37fdcb3c +CT= f092c1f4cb41f7eaba5bd637d2fe8cbb5683dbf1833e7497 +PT= 3664024d5c4f475813054eb5d896e8d0ba9d44b1f06287b8 +TEST= 27 +KEY= 7f50b12117df8f38f1d5264bc1f4e4291dc398eac79f4c84 +CT= 3664024d5c4f475813054eb5d896e8d0ba9d44b1f06287b8 +PT= 3b132362d618062c9074be17a2d37815d79c0f7edc3c8ba4 +TEST= 28 +KEY= 44439243c1c7891461a1985c63279c3cca5f97941ba3c720 +CT= 3b132362d618062c9074be17a2d37815d79c0f7edc3c8ba4 +PT= 2df6ad24240537067889b518c67a34872b7af6ae3a5f6935 +TEST= 29 +KEY= 69b53f67e5c2be1219282d44a55da8bbe125613a21fcae15 +CT= 2df6ad24240537067889b518c67a34872b7af6ae3a5f6935 +PT= 43f0a35e4d457d738e2ef160b5c238728e5833f0540cbb89 +TEST= 30 +KEY= 2a459c39a887c3619706dc24109f90c96f7d52ca75f0159c +CT= 43f0a35e4d457d738e2ef160b5c238728e5833f0540cbb89 +PT= fdf7db287fd6df3a18d7a38ccd45b48f80314f2e8651abb8 +TEST= 31 +KEY= d7b24711d7511c5b8fd17fa8ddda2446ef4c1de4f3a1be24 +CT= fdf7db287fd6df3a18d7a38ccd45b48f80314f2e8651abb8 +PT= 92844d306c9a853164e5e6c305cecc75bdba90abbec7a688 +TEST= 32 +KEY= 45360a21bbcb996aeb34996bd814e83352f68d4f4d6618ac +CT= 92844d306c9a853164e5e6c305cecc75bdba90abbec7a688 +PT= ef45085549b31fe135798bc8e34c7dc3c339a51cf8cde6ee +TEST= 33 +KEY= aa730274f278868bde4d12a33b5895f091cf2853b5abfe42 +CT= ef45085549b31fe135798bc8e34c7dc3c339a51cf8cde6ee +PT= 3507dfd6ff41171ad9e1ed9ad2829c70548525feed0dc85b +TEST= 34 +KEY= 9f74dda20d39919107acff39e9da0980c54a0dad58a63619 +CT= 3507dfd6ff41171ad9e1ed9ad2829c70548525feed0dc85b +PT= fed192956f8018a5a7c736311baf77a54fd7314d9446f870 +TEST= 35 +KEY= 61a54f3762b98934a06bc908f2757e258a9d3ce0cce0ce69 +CT= fed192956f8018a5a7c736311baf77a54fd7314d9446f870 +PT= 7b13a78e39911759b4210d269d3072943f13a5cb67335302 +TEST= 36 +KEY= 1ab6e8b95b289e6d144ac42e6f450cb1b58e992babd39d6b +CT= 7b13a78e39911759b4210d269d3072943f13a5cb67335302 +PT= 8cce9dea335ffa2a802fba569636eb295f49fe5dc733f08c +TEST= 37 +KEY= 967875536877644794657e78f973e798eac767766ce06de7 +CT= 8cce9dea335ffa2a802fba569636eb295f49fe5dc733f08c +PT= eb8e60a85206f9912587af17d7c65b183db9ca6d2cf64ff0 +TEST= 38 +KEY= 7df615fb3a719dd6b1e2d16f2eb5bc80d77ead1b40162217 +CT= eb8e60a85206f9912587af17d7c65b183db9ca6d2cf64ff0 +PT= 233bbe07adce60af4327373f8a816a49bb4ade44b178b420 +TEST= 39 +KEY= 5ecdabfc97bffd79f2c5e650a434d6c96c34735ff16e9637 +CT= 233bbe07adce60af4327373f8a816a49bb4ade44b178b420 +PT= aaf239df5bee092770a1ba7767fbffce7f46bcc6fd07b244 +TEST= 40 +KEY= f43f9223cc51f45e82645c27c3cf29071372cf990c692473 +CT= aaf239df5bee092770a1ba7767fbffce7f46bcc6fd07b244 +PT= 024e50fc7ac48121b74594f7f37c086e4ae2b8bc5ac8beeb +TEST= 41 +KEY= f671c2dfb695757f3521c8d030b321695990772556a19a98 +CT= 024e50fc7ac48121b74594f7f37c086e4ae2b8bc5ac8beeb +PT= c0bc0363bcdb7ef8e7983707a541563d8b566c1fa41cfb5b +TEST= 42 +KEY= 36cdc1bc0a4e0b87d2b9ffd795f27754d2c61b3af2bd61c3 +CT= c0bc0363bcdb7ef8e7983707a541563d8b566c1fa41cfb5b +PT= 4dd5299876299280e134d45ce80faff2605f869869a6664c +TEST= 43 +KEY= 7b18e8247c679907338d2b8b7dfdd8a6b2999da29b1b078f +CT= 4dd5299876299280e134d45ce80faff2605f869869a6664c +PT= d126095f0f4e4815680a51b67e847692c1d0b631a7798832 +TEST= 44 +KEY= aa3ee17b7329d1125b877a3d0379ae3473492b933c628fbd +CT= d126095f0f4e4815680a51b67e847692c1d0b631a7798832 +PT= a5c44724d23cce372c4147e65b4fb81233a3b0e2f0a00a43 +TEST= 45 +KEY= 0ffaa65fa1151f2577c63ddb5836162640ea9b71ccc285fe +CT= a5c44724d23cce372c4147e65b4fb81233a3b0e2f0a00a43 +PT= 4ba20c3496e896a3e66d14491d99a5ae3fa39a91b86836cd +TEST= 46 +KEY= 4458aa6b37fd898691ab299245afb3887f4901e074aab333 +CT= 4ba20c3496e896a3e66d14491d99a5ae3fa39a91b86836cd +PT= b0fa94acde95b12ee51d96790ea8972e4e4a2fd0c9ab5348 +TEST= 47 +KEY= f4a23ec7e96838a874b6bfeb4b0724a631032e30bd01e07b +CT= b0fa94acde95b12ee51d96790ea8972e4e4a2fd0c9ab5348 +PT= 4da9503bdd35fa0c73cebb525e860cb8abb3e79d1ee8c324 +TEST= 48 +KEY= b90b6efc345dc2a4077804b91581281e9ab0c9ada3e9235f +CT= 4da9503bdd35fa0c73cebb525e860cb8abb3e79d1ee8c324 +PT= fdf0c020b85ed54a30a66e2c4a5a730a50f82e031da8c318 +TEST= 49 +KEY= 44fbaedc8c0317ee37de6a955fdb5b14ca48e7aebe41e047 +CT= fdf0c020b85ed54a30a66e2c4a5a730a50f82e031da8c318 +PT= 5fed4f1f7a2f58390a9c70138d764ed9ab88f73fc81d404c +TEST= 50 +KEY= 1b16e1c3f62c4fd73d421a86d2ad15cd61c01091765ca00b +CT= 5fed4f1f7a2f58390a9c70138d764ed9ab88f73fc81d404c +PT= dfa064240f1dbd458915c25765147f68a2fed3426448ea4a +TEST= 51 +KEY= c4b685e7f931f292b457d8d1b7b96aa5c33ec3d312144a41 +CT= dfa064240f1dbd458915c25765147f68a2fed3426448ea4a +PT= 91af7d337eff53b3df831cfc643a7276fa80628ec8650dad +TEST= 52 +KEY= 5519f8d487cea1216bd4c42dd38318d339bea15dda7147ec +CT= 91af7d337eff53b3df831cfc643a7276fa80628ec8650dad +PT= b3537b2e56f9e934e7019efbd8887eb5bc81c8f8880ea38d +TEST= 53 +KEY= e64a83fad13748158cd55ad60b0b6666853f69a5527fe461 +CT= b3537b2e56f9e934e7019efbd8887eb5bc81c8f8880ea38d +PT= c00d525b481de3417b622bc828193de12fb5d4c1c2bf1542 +TEST= 54 +KEY= 2647d1a1992aab54f7b7711e23125b87aa8abd6490c0f123 +CT= c00d525b481de3417b622bc828193de12fb5d4c1c2bf1542 +PT= 5d9e7b65dbaf62e7d0640fa7d5b5272ac532b678b3bc19d3 +TEST= 55 +KEY= 7bd9aac44285c9b327d37eb9f6a77cad6fb80b1c237ce8f0 +CT= 5d9e7b65dbaf62e7d0640fa7d5b5272ac532b678b3bc19d3 +PT= 51373b89b5f996d4e0b7ae29ec036688aac8cc1f3a2bf40e +TEST= 56 +KEY= 2aee914df77c5f67c764d0901aa41a25c570c70319571cfe +CT= 51373b89b5f996d4e0b7ae29ec036688aac8cc1f3a2bf40e +PT= 6276fb4cc8e75657eacbd3d110e9529fc32fbb9342e419dc +TEST= 57 +KEY= 48986a013f9b09302daf03410a4d48ba065f7c905bb30522 +CT= 6276fb4cc8e75657eacbd3d110e9529fc32fbb9342e419dc +PT= ca016ec1916bcb655849f770851f0128aa75e807796e5067 +TEST= 58 +KEY= 829904c0aef0c25575e6f4318f524992ac2a949722dd5545 +CT= ca016ec1916bcb655849f770851f0128aa75e807796e5067 +PT= 11048bdaee05a1e293eb230c5257a4e90b257c36ced79d17 +TEST= 59 +KEY= 939d8f1a40f563b7e60dd73ddd05ed7ba70fe8a1ec0ac852 +CT= 11048bdaee05a1e293eb230c5257a4e90b257c36ced79d17 +PT= 29d469ca33b186b0ce19731b9e2fceac2250aa1c503fd0a7 +TEST= 60 +KEY= ba49e6d07344e5072814a426432a23d7855f42bdbc3518f5 +CT= 29d469ca33b186b0ce19731b9e2fceac2250aa1c503fd0a7 +PT= f50a8c86a6695e421ca25da683c2bd311829e04996acc5e7 +TEST= 61 +KEY= 4f436a56d52dbb4534b6f980c0e89ee69d76a2f42a99dd12 +CT= f50a8c86a6695e421ca25da683c2bd311829e04996acc5e7 +PT= 86391f4def4fcfe61266f377b8a7595b587124b9318023a0 +TEST= 62 +KEY= c97a751b3a6274a326d00af7784fc7bdc507864d1b19feb2 +CT= 86391f4def4fcfe61266f377b8a7595b587124b9318023a0 +PT= d6ae6027fa9aae630621ddb66dec7a5834be26889c477ea6 +TEST= 63 +KEY= 1fd4153cc0f8dac020f1d74115a3bde5f1b9a0c5875e8014 +CT= d6ae6027fa9aae630621ddb66dec7a5834be26889c477ea6 +PT= b2cbc30fbaad6677ee67e1ae7690af646374a22997c4db66 +TEST= 64 +KEY= ad1fd6337a55bcb7ce9636ef6333128192cd02ec109a5b72 +CT= b2cbc30fbaad6677ee67e1ae7690af646374a22997c4db66 +PT= 0c0ee4f3550a43ba7d280a82bd148089570c8347391da555 +TEST= 65 +KEY= a11132c02f5fff0db3be3c6dde279208c5c181ab2987fe27 +CT= 0c0ee4f3550a43ba7d280a82bd148089570c8347391da555 +PT= eb4dc3dffe6c58a7d5de16d9605d95715f53185996fbe204 +TEST= 66 +KEY= 4a5cf11fd133a7aa66602ab4be7a07799a9299f2bf7c1c23 +CT= eb4dc3dffe6c58a7d5de16d9605d95715f53185996fbe204 +PT= 733494afa2c915014afd3c9fb0f69f563f70f78579d352e8 +TEST= 67 +KEY= 396865b073fab2ab2c9d162b0e8c982fa5e26e77c6af4ecb +CT= 733494afa2c915014afd3c9fb0f69f563f70f78579d352e8 +PT= 3705854f61b6eb49ffa008aa315ba5d1a653b11f800ed4b4 +TEST= 68 +KEY= 0e6de0ff124c59e2d33d1e813fd73dfe03b1df6846a19a7f +CT= 3705854f61b6eb49ffa008aa315ba5d1a653b11f800ed4b4 +PT= fa40064f122eaf4fe82e760cc1346c39ecbe284c642768bd +TEST= 69 +KEY= f42de6b00062f6ad3b13688dfee351c7ef0ff7242286f2c2 +CT= fa40064f122eaf4fe82e760cc1346c39ecbe284c642768bd +PT= a9236037ea4657cc23bf898a1056eaf35c934f6acd20a920 +TEST= 70 +KEY= 5d0e8687ea24a16118ace107eeb5bb34b39cb84eefa65be2 +CT= a9236037ea4657cc23bf898a1056eaf35c934f6acd20a920 +PT= 62b76069bf2b0bcc08b4018119874924dc0ad4e5eddd1148 +TEST= 71 +KEY= 3fb9e6ee550faaad1018e086f732f2106f966cab027b4aaa +CT= 62b76069bf2b0bcc08b4018119874924dc0ad4e5eddd1148 +PT= e3cb1a4408f0a70859f3906619b2564b34686e0e5738ce51 +TEST= 72 +KEY= dc72fcaa5dff0da549eb70e0ee80a45b5bfe02a5554384fb +CT= e3cb1a4408f0a70859f3906619b2564b34686e0e5738ce51 +PT= 6dec3acbf912731396531c5be7e6699ec699209328c6f512 +TEST= 73 +KEY= b19ec661a4ed7eb6dfb86cbb0966cdc59d6722367d8571e9 +CT= 6dec3acbf912731396531c5be7e6699ec699209328c6f512 +PT= 691b2eb5d3df19ceea0988283d28d8eb523bc4ba432e2c0b +TEST= 74 +KEY= d885e8d47732677835b1e493344e152ecf5ce68c3eab5de2 +CT= 691b2eb5d3df19ceea0988283d28d8eb523bc4ba432e2c0b +PT= 86bebf577da7fa9ade612a889f40cc8aaaa2843859790ce3 +TEST= 75 +KEY= 5e3b57830a959de2ebd0ce1bab0ed9a465fe62b467d25101 +CT= 86bebf577da7fa9ade612a889f40cc8aaaa2843859790ce3 +PT= d015ef39b194061420896bae2de8617e8920d73540e0a287 +TEST= 76 +KEY= 8e2eb8babb019bf6cb59a5b586e6b8daecdeb5812732f386 +CT= d015ef39b194061420896bae2de8617e8920d73540e0a287 +PT= effcebb56d953dcd3c5437851342d5ab5c9294c86fdd2685 +TEST= 77 +KEY= 61d2530fd694a63bf70d923095a46d71b04c214948efd503 +CT= effcebb56d953dcd3c5437851342d5ab5c9294c86fdd2685 +PT= 0567f269224fe6df20c1c708b141ede36cdf2a8505951661 +TEST= 78 +KEY= 64b5a166f4db40e4d7cc553824e58092dc930bcc4d7ac362 +CT= 0567f269224fe6df20c1c708b141ede36cdf2a8505951661 +PT= 64b6061b35964fc9d98317c6fc187a2a33c34d31a3dd7161 +TEST= 79 +KEY= 0003a77dc14d0f2d0e4f42fed8fdfab8ef5046fdeea7b203 +CT= 64b6061b35964fc9d98317c6fc187a2a33c34d31a3dd7161 +PT= 3f6f763963f249e27633610abd52da45fa9528285e0fa884 +TEST= 80 +KEY= 3f6cd144a2bf46cf787c23f465af20fd15c56ed5b0a81a87 +CT= 3f6f763963f249e27633610abd52da45fa9528285e0fa884 +PT= f97cb4d20e5eb0b35c652270e2347555d99fdbada99058a6 +TEST= 81 +KEY= c6106596ace1f67c24190184879b55a8cc5ab57819384221 +CT= f97cb4d20e5eb0b35c652270e2347555d99fdbada99058a6 +PT= 43d72db933d41e449213c2b0d8dd19a219c44d206d618a91 +TEST= 82 +KEY= 85c7482f9f35e838b60ac3345f464c0ad59ef8587459c8b0 +CT= 43d72db933d41e449213c2b0d8dd19a219c44d206d618a91 +PT= eb36263f7615a3939bec3623c05ab37824b9a085955b76b9 +TEST= 83 +KEY= 6ef16e10e9204bab2de6f5179f1cff72f12758dde102be09 +CT= eb36263f7615a3939bec3623c05ab37824b9a085955b76b9 +PT= 14d5ec62753ce3e56688d162e0e0b28bf2e1d8a18920feb8 +TEST= 84 +KEY= 7a2482729c1ca84e4b6e24757ffc4df903c6807c682240b1 +CT= 14d5ec62753ce3e56688d162e0e0b28bf2e1d8a18920feb8 +PT= 6df3233fd76a06cd5b140a90823d36e0c5ded5a84770cb06 +TEST= 85 +KEY= 17d7a14d4b76ae83107a2ee5fdc17b19c61855d42f528bb7 +CT= 6df3233fd76a06cd5b140a90823d36e0c5ded5a84770cb06 +PT= 14de1324d069ecc3b1475dd61a45e26d1005a45cbe76e1da +TEST= 86 +KEY= 0309b2699b1f4240a13d7333e7849974d61df18891246a6d +CT= 14de1324d069ecc3b1475dd61a45e26d1005a45cbe76e1da +PT= 51d181e8da2734de506e33e6ff42d631b7ab76bc5d0aa633 +TEST= 87 +KEY= 52d833814138769ef15340d518c64f4561b68734cc2ecc5e +CT= 51d181e8da2734de506e33e6ff42d631b7ab76bc5d0aa633 +PT= 6601b502dcec4d4f54cfbbb9b3f34853001fa6670400dd31 +TEST= 88 +KEY= 34d986839dd43bd1a59cfb6cab35071661a92153c82e116f +CT= 6601b502dcec4d4f54cfbbb9b3f34853001fa6670400dd31 +PT= 49e9af523e3c761a6da8362bbe1e5bcf4d459f1fb576e8e1 +TEST= 89 +KEY= 7d3029d1a3e84dcbc834cd47152b5cd92cecbe4c7d58f98e +CT= 49e9af523e3c761a6da8362bbe1e5bcf4d459f1fb576e8e1 +PT= ab18e1fcf5c9a140472443fcfb669f7fae6373dbc169d2aa +TEST= 90 +KEY= d628c82d5621ec8b8f108ebbee4dc3a6828fcd97bc312b24 +CT= ab18e1fcf5c9a140472443fcfb669f7fae6373dbc169d2aa +PT= 341af11dc8fb8f7ba8309e711e6770dd8dd8d01901d546e2 +TEST= 91 +KEY= e23239309eda63f0272010caf02ab37b0f571d8ebde46dc6 +CT= 341af11dc8fb8f7ba8309e711e6770dd8dd8d01901d546e2 +PT= ad1262bc58cb1c25a6e71c8f741cbd81db881ff4e1a74069 +TEST= 92 +KEY= 4f205b8cc6117fd581c70c4584360efad4df027a5c432daf +CT= ad1262bc58cb1c25a6e71c8f741cbd81db881ff4e1a74069 +PT= 59e89a8917dae922eed25d86faf3a5d15c103964c327b6f9 +TEST= 93 +KEY= 16c8c105d1cb96f76f1551c37ec5ab2b88cf3b1e9f649b56 +CT= 59e89a8917dae922eed25d86faf3a5d15c103964c327b6f9 +PT= 2caa02f0b401a52f57d0afc470d53289a872e4e7747d6ba8 +TEST= 94 +KEY= 3a62c3f565ca33d838c5fe070e1099a220bddff9eb19f0fe +CT= 2caa02f0b401a52f57d0afc470d53289a872e4e7747d6ba8 +PT= 50a2a06eb7a5bd00b252f8a4d659df71de708945314d358f +TEST= 95 +KEY= 6ac0639bd26f8ed88a9706a3d84946d3fecd56bcda54c571 +CT= 50a2a06eb7a5bd00b252f8a4d659df71de708945314d358f +PT= 5166fbad2c22c9d4b47c7dab57e163cd3b9f4a002f813744 +TEST= 96 +KEY= 3ba69836fe4d470c3eeb7b088fa8251ec5521cbcf5d5f235 +CT= 5166fbad2c22c9d4b47c7dab57e163cd3b9f4a002f813744 +PT= dab30caab4560362c16fcbfa175f8f177f5b153628f7cfa4 +TEST= 97 +KEY= e115949c4a1b446eff84b0f298f7aa09ba09098add223d91 +CT= dab30caab4560362c16fcbfa175f8f177f5b153628f7cfa4 +PT= b562e3f634aea93fd6ff31da01464b7b1072b3666ac4a3eb +TEST= 98 +KEY= 5477776a7eb5ed51297b812899b1e172aa7bbaecb7e69e7a +CT= b562e3f634aea93fd6ff31da01464b7b1072b3666ac4a3eb +PT= 6b11e9778d652558e4b8eae327a6a67892ac2f55ed8fb4af +TEST= 99 +KEY= 3f669e1df3d0c809cdc36bcbbe17470a38d795b95a692ad5 +CT= 6b11e9778d652558e4b8eae327a6a67892ac2f55ed8fb4af +PT= 1685aa3ecd8fbeb8523bee8aaa810a5e552caca9e7483547 +TEST= 100 +KEY= 29e334233e5f76b19ff8854114964d546dfb3910bd211f92 +CT= 1685aa3ecd8fbeb8523bee8aaa810a5e552caca9e7483547 +PT= 357dc554c17d2b27d04fd04232b552a0d1c7f57fa483ca52 +TEST= 101 +KEY= 1c9ef177ff225d964fb7550326231ff4bc3ccc6f19a2d5c0 +CT= 357dc554c17d2b27d04fd04232b552a0d1c7f57fa483ca52 +PT= e39775f4609c93817f9a95037ff2b23774630f7a9d8fc386 +TEST= 102 +KEY= ff0984839fbece17302dc00059d1adc3c85fc315842d1646 +CT= e39775f4609c93817f9a95037ff2b23774630f7a9d8fc386 +PT= 3625c3a2dd5f36e6dcabc498f696afca846b07e5efa890c3 +TEST= 103 +KEY= c92c472142e1f8f1ec860498af4702094c34c4f06b858685 +CT= 3625c3a2dd5f36e6dcabc498f696afca846b07e5efa890c3 +PT= a927ff126a50769c61852a0571a7abf9a729538c029cf14c +TEST= 104 +KEY= 600bb83328b18e6d8d032e9ddee0a9f0eb1d977c691977c9 +CT= a927ff126a50769c61852a0571a7abf9a729538c029cf14c +PT= fb28f2d78b43b1a2f17496fdca05413301f37202bd8e8cf3 +TEST= 105 +KEY= 9b234ae4a3f23fcf7c77b86014e5e8c3eaeee57ed497fb3a +CT= fb28f2d78b43b1a2f17496fdca05413301f37202bd8e8cf3 +PT= 3db222baa4d374bfd36d4a75c3066656f3ae0adab123259a +TEST= 106 +KEY= a691685e07214b70af1af215d7e38e951940efa465b4dea0 +CT= 3db222baa4d374bfd36d4a75c3066656f3ae0adab123259a +PT= 18522a6d2a9cee7e9726d4db051514df76d9ccafbbdbdbc8 +TEST= 107 +KEY= bec342332dbda50e383c26ced2f69a4a6f99230bde6f0568 +CT= 18522a6d2a9cee7e9726d4db051514df76d9ccafbbdbdbc8 +PT= aaedebaad0aab7775151ba6f429573464a3cc3ca608902cc +TEST= 108 +KEY= 142ea999fd171279696d9ca19063e90c25a5e0c1bee607a4 +CT= aaedebaad0aab7775151ba6f429573464a3cc3ca608902cc +PT= 978e7136324e228d86778c8632c5c8413840af8c155b672d +TEST= 109 +KEY= 83a0d8afcf5930f4ef1a1027a2a6214d1de54f4dabbd6089 +CT= 978e7136324e228d86778c8632c5c8413840af8c155b672d +PT= 5d47b7aa399e301282bde3f96cec53d5580637d4d22cacde +TEST= 110 +KEY= dee76f05f6c700e66da7f3dece4a729845e378997991cc57 +CT= 5d47b7aa399e301282bde3f96cec53d5580637d4d22cacde +PT= 5c88e329b6c33c89bc7f8d436d044903d4bba9330b8a2a50 +TEST= 111 +KEY= 826f8c2c40043c6fd1d87e9da34e3b9b9158d1aa721be607 +CT= 5c88e329b6c33c89bc7f8d436d044903d4bba9330b8a2a50 +PT= 9a38dee0043b767de38736a3321b2e53b564331b7124671f +TEST= 112 +KEY= 185752cc443f4a12325f483e915515c8243ce2b1033f8118 +CT= 9a38dee0043b767de38736a3321b2e53b564331b7124671f +PT= eb2045f19e1480f6e1b7d532fb304f6f8ba371f4a7712f2e +TEST= 113 +KEY= f377173dda2bcae4d3e89d0c6a655aa7af9f9345a44eae36 +CT= eb2045f19e1480f6e1b7d532fb304f6f8ba371f4a7712f2e +PT= af3f123b2ae486857729047dc64a2894af1def3e924cb751 +TEST= 114 +KEY= 5c480506f0cf4c61a4c19971ac2f723300827c7b36021967 +CT= af3f123b2ae486857729047dc64a2894af1def3e924cb751 +PT= 46175dc4913d1fcd082b884bd4645dd1b458641553e1ec75 +TEST= 115 +KEY= 1a5f58c261f253acacea113a784b2fe2b4da186e65e3f512 +CT= 46175dc4913d1fcd082b884bd4645dd1b458641553e1ec75 +PT= cc561fa712e3053da1338fbaa215f65a3d57167f682753d8 +TEST= 116 +KEY= d6094765731156910dd99e80da5ed9b8898d0e110dc4a6ca +CT= cc561fa712e3053da1338fbaa215f65a3d57167f682753d8 +PT= 91dcd20c262fab9ffdf18d98f92fa273ee01226387bb9ae1 +TEST= 117 +KEY= 47d59569553efd0ef028131823717bcb678c2c728a7f3c2b +CT= 91dcd20c262fab9ffdf18d98f92fa273ee01226387bb9ae1 +PT= 35ad71030db4fa4e144ad289f245347955b74af7bbd056b1 +TEST= 118 +KEY= 7278e46a588a0740e462c191d1344fb2323b668531af6a9a +CT= 35ad71030db4fa4e144ad289f245347955b74af7bbd056b1 +PT= 195bce281804b3ffc8e0909f790b607db7fb9cdbd9ce0fdd +TEST= 119 +KEY= 6b232a42408eb4bf2c82510ea83f2fcf85c0fa5ee8616547 +CT= 195bce281804b3ffc8e0909f790b607db7fb9cdbd9ce0fdd +PT= a1aba75b810abb785db9c35ebf0f15928839d3d8b9e63730 +TEST= 120 +KEY= ca888d19c1840fc7713b925017303a5d0df9298651875277 +CT= a1aba75b810abb785db9c35ebf0f15928839d3d8b9e63730 +PT= 45778fb4b7a7740a04e240fb5967845d3001f2739e1d77bb +TEST= 121 +KEY= 8fff02ad76237bcd75d9d2ab4e57be003df8dbf5cf9a25cc +CT= 45778fb4b7a7740a04e240fb5967845d3001f2739e1d77bb +PT= b3a3a3ef6bae8615534ea019c84cecd063d8887554b50c8c +TEST= 122 +KEY= 3c5ca1421d8dfdd8269772b2861b52d05e2053809b2f2940 +CT= b3a3a3ef6bae8615534ea019c84cecd063d8887554b50c8c +PT= 124e44d69ec9e6c07e2b46b10f2ba60a7ccabac1c96d69b8 +TEST= 123 +KEY= 2e12e59483441b1858bc34038930f4da22eae941524240f8 +CT= 124e44d69ec9e6c07e2b46b10f2ba60a7ccabac1c96d69b8 +PT= d8b52a182566962495a2a9b7757a6c579c654d13d04d49b3 +TEST= 124 +KEY= f6a7cf8ca6228d3ccd1e9db4fc4a988dbe8fa452820f094b +CT= d8b52a182566962495a2a9b7757a6c579c654d13d04d49b3 +PT= f39b91107e2fadda4937f0c323d74e7088330d978b8c6881 +TEST= 125 +KEY= 053c5e9cd80d20e684296d77df9dd6fd36bca9c5098361ca +CT= f39b91107e2fadda4937f0c323d74e7088330d978b8c6881 +PT= 5298eaa7a51e7f89e3d3c63998f789bac04511d497b0ca7a +TEST= 126 +KEY= 57a4b43b7d135f6f67faab4e476a5f47f6f9b8119e33abb0 +CT= 5298eaa7a51e7f89e3d3c63998f789bac04511d497b0ca7a +PT= dfa8405b4a68d19d5f40a132966d48ffceec3ffd5bd524c2 +TEST= 127 +KEY= 880cf460377b8ef238ba0a7cd10717b8381587ecc5e68f72 +CT= dfa8405b4a68d19d5f40a132966d48ffceec3ffd5bd524c2 +PT= 1c22367748c4dd9b187e6822ac9eafbe518aee025368ce39 +TEST= 128 +KEY= 942ec2177fbf536920c4625e7d99b806699f69ee968e414b +CT= 1c22367748c4dd9b187e6822ac9eafbe518aee025368ce39 +PT= 0b756c47a8d3548346eb6fbf34c92655e6885f0530bdc221 +TEST= 129 +KEY= 9f5bae50d76c07ea662f0de149509e538f1736eba633836a +CT= 0b756c47a8d3548346eb6fbf34c92655e6885f0530bdc221 +PT= 26a3fb32da4b3660245b632e420668446e94ad3ae6318165 +TEST= 130 +KEY= b9f855620d27318a42746ecf0b56f617e1839bd14002020f +CT= 26a3fb32da4b3660245b632e420668446e94ad3ae6318165 +PT= 93ca0f1610ee19665d129e4895b979b9347055e84bf519d4 +TEST= 131 +KEY= 2a325a741dc928ec1f66f0879eef8faed5f3ce390bf71bdb +CT= 93ca0f1610ee19665d129e4895b979b9347055e84bf519d4 +PT= a51415ebd680d96bbfa3f023540aad04c8c7e9708fd6778d +TEST= 132 +KEY= 8f264f9fcb49f187a0c500a4cae522aa1d34274984216c56 +CT= a51415ebd680d96bbfa3f023540aad04c8c7e9708fd6778d +PT= 7f7e3bdabefa6fcc1eb81963999e186a42ca80d03fdd10bf +TEST= 133 +KEY= f058744575b39e4bbe7d19c7537b3ac05ffea799bbfc7ce9 +CT= 7f7e3bdabefa6fcc1eb81963999e186a42ca80d03fdd10bf +PT= 31e92ee806bfa39e5802fbf2c126bbdce4e57f73010558be +TEST= 134 +KEY= c1b15aad730c3dd5e67fe235925d811cbb1bd8eabaf92457 +CT= 31e92ee806bfa39e5802fbf2c126bbdce4e57f73010558be +PT= 2950f3339010cea26ae3842ff3b7680d79cad416f18aaa22 +TEST= 135 +KEY= e8e1a99ee31cf3778c9c661a61eae911c2d10cfc4b738e75 +CT= 2950f3339010cea26ae3842ff3b7680d79cad416f18aaa22 +PT= ecf862509bfc713c90177309b30a4d528edd421a6d13cccd +TEST= 136 +KEY= 0419cbce78e0824b1c8b1513d2e0a4434c0c4ee6266042b8 +CT= ecf862509bfc713c90177309b30a4d528edd421a6d13cccd +PT= d8534694b9a47002a6029d512e1c3b1356eb728a910cc5f5 +TEST= 137 +KEY= dc4a8d5ac144f249ba898842fcfc9f501ae73c6cb76c874d +CT= d8534694b9a47002a6029d512e1c3b1356eb728a910cc5f5 +PT= 241972be2464023e6f0b90cda93a6e68e4a9ef1c3d650448 +TEST= 138 +KEY= f853ffe4e520f077d582188f55c6f138fe4ed3708a098305 +CT= 241972be2464023e6f0b90cda93a6e68e4a9ef1c3d650448 +PT= 9a81c5ed31ffa86dfba5e0e583023f7577eb057fd59bdaad +TEST= 139 +KEY= 62d23a09d4df581a2e27f86ad6c4ce4d89a5d60f5f9259a8 +CT= 9a81c5ed31ffa86dfba5e0e583023f7577eb057fd59bdaad +PT= 871dd210f20c1ac526cb8c2ffcda1cd8b4a1e6978c10a715 +TEST= 140 +KEY= e5cfe81926d342df08ec74452a1ed2953d043098d382febd +CT= 871dd210f20c1ac526cb8c2ffcda1cd8b4a1e6978c10a715 +PT= 514548209f585e00a975a4929ccea004f942c8b1dd989120 +TEST= 141 +KEY= b48aa039b98b1cdfa199d0d7b6d07291c446f8290e1a6f9d +CT= 514548209f585e00a975a4929ccea004f942c8b1dd989120 +PT= 3cac589ac3d6d75b263b7b36b9287e3728c463e9b7d0b48e +TEST= 142 +KEY= 8826f8a37a5dcb8487a2abe10ff80ca6ec829bc0b9cadb13 +CT= 3cac589ac3d6d75b263b7b36b9287e3728c463e9b7d0b48e +PT= a662cb3b9e23b89ad5bee2308dc3037776027b73a5f6ec17 +TEST= 143 +KEY= 2e443398e47e731e521c49d1823b0fd19a80e0b31c3c3704 +CT= a662cb3b9e23b89ad5bee2308dc3037776027b73a5f6ec17 +PT= b2e8521e28295ad09512e49bf3b9a23cb3e0453bad8e5541 +TEST= 144 +KEY= 9cac6186cc5729cec70ead4a7182aded2960a588b1b26245 +CT= b2e8521e28295ad09512e49bf3b9a23cb3e0453bad8e5541 +PT= a7f2b2dfdeba0e5720aa47778ca5e84d6eb6619a919034ab +TEST= 145 +KEY= 3b5ed35912ed2799e7a4ea3dfd2745a047d6c412202256ee +CT= a7f2b2dfdeba0e5720aa47778ca5e84d6eb6619a919034ab +PT= f1bb92398e4f25e68d6f151f5dc31dedbb316d421cdcb307 +TEST= 146 +KEY= cae541609ca2027f6acbff22a0e4584dfce7a9503cfee5e9 +CT= f1bb92398e4f25e68d6f151f5dc31dedbb316d421cdcb307 +PT= f579da2d4dccbb20dcdf52266af5ce6008bc74bef5de1e45 +TEST= 147 +KEY= 3f9c9b4dd16eb95fb614ad04ca11962df45bddeec920fbac +CT= f579da2d4dccbb20dcdf52266af5ce6008bc74bef5de1e45 +PT= 4727291b17b1afda63c924c57224e27eabd214e28fef70dc +TEST= 148 +KEY= 78bbb256c6df1685d5dd89c1b83574535f89c90c46cf8b70 +CT= 4727291b17b1afda63c924c57224e27eabd214e28fef70dc +PT= 2d2603472bc8202070af2f3bd1dcdaf7bc0dd36912964c85 +TEST= 149 +KEY= 559db111ed1736a5a572a6fa69e9aea4e3841a655459c7f5 +CT= 2d2603472bc8202070af2f3bd1dcdaf7bc0dd36912964c85 +PT= 65f895d8382c04c565d9e06d76cae6529dc62e6163b2c987 +TEST= 150 +KEY= 306524c9d53b3260c0ab46971f2348f67e42340437eb0e72 +CT= 65f895d8382c04c565d9e06d76cae6529dc62e6163b2c987 +PT= af1693e72c2a8f4bad123c3894c553695ab6ec63cf0eebcd +TEST= 151 +KEY= 9f73b72ef911bd2b6db97aaf8be61b9f24f4d867f8e5e5bf +CT= af1693e72c2a8f4bad123c3894c553695ab6ec63cf0eebcd +PT= 3162d0506d78d71be62398c1b536eade730de81275be676d +TEST= 152 +KEY= ae11677e94696a308b9ae26e3ed0f14157f930758d5b82d2 +CT= 3162d0506d78d71be62398c1b536eade730de81275be676d +PT= 9d6367453a48f80ae31a6c3b72096130e07d754ff7c0659c +TEST= 153 +KEY= 3372003bae21923a68808e554cd99071b784453a7a9be74e +CT= 9d6367453a48f80ae31a6c3b72096130e07d754ff7c0659c +PT= e415bc65590cd91cde99f5a6c4a0f4d6ab5a3fdb257c963b +TEST= 154 +KEY= d767bc5ef72d4b26b6197bf3887964a71cde7ae15fe77175 +CT= e415bc65590cd91cde99f5a6c4a0f4d6ab5a3fdb257c963b +PT= 20953379902a3630a6d9cc32a888bd73a8b92beb93557063 +TEST= 155 +KEY= f7f28f2767077d1610c0b7c120f1d9d4b467510accb20116 +CT= 20953379902a3630a6d9cc32a888bd73a8b92beb93557063 +PT= 7b7adad52c044abe8d5f30b5880679a9c3599106bbff0175 +TEST= 156 +KEY= 8c8855f24b0337a89d9f8774a8f7a07d773ec00c774d0063 +CT= 7b7adad52c044abe8d5f30b5880679a9c3599106bbff0175 +PT= 14d79be495cefb6880da18b271136a0ed22ba04f9d827f68 +TEST= 157 +KEY= 985fce16decdccc01d459fc6d9e4ca73a5156043eacf7f0b +CT= 14d79be495cefb6880da18b271136a0ed22ba04f9d827f68 +PT= c739ad5225106d411d45905742717abf89b89f01c9f39683 +TEST= 158 +KEY= 5f666344fbdda18100000f919b95b0cc2cadff42233ce988 +CT= c739ad5225106d411d45905742717abf89b89f01c9f39683 +PT= 4e348babf0d89500fe33b01fbc419030d4fe801e477e60dc +TEST= 159 +KEY= 1152e8ef0b053481fe33bf8e27d420fcf8537f5c64428954 +CT= 4e348babf0d89500fe33b01fbc419030d4fe801e477e60dc +PT= e3da45b725c02e77eaaf6d491ef03a2ff259e2e5b40c98bc +TEST= 160 +KEY= f288ad582ec51af6149cd2c739241ad30a0a9db9d04e11e8 +CT= e3da45b725c02e77eaaf6d491ef03a2ff259e2e5b40c98bc +PT= e687a6e37c4092ab0b019376283eda5a9807a898b995304d +TEST= 161 +KEY= 140f0bbb5285885d1f9d41b1111ac089920d352169db21a5 +CT= e687a6e37c4092ab0b019376283eda5a9807a898b995304d +PT= 5944b9eb925791683dc7355963e12303a6fb904a04ee0911 +TEST= 162 +KEY= 4d4bb250c0d21935225a74e872fbe38a34f6a56b6d3528b4 +CT= 5944b9eb925791683dc7355963e12303a6fb904a04ee0911 +PT= 5662b86a5784212d9a456bc67dd9aa66d6c4951eb3dd2a3c +TEST= 163 +KEY= 1b290a3a97563818b81f1f2e0f2249ece2323075dee80288 +CT= 5662b86a5784212d9a456bc67dd9aa66d6c4951eb3dd2a3c +PT= 6c39eb8ce898689951571a88367db0cc7340f34b27248975 +TEST= 164 +KEY= 7710e1b67fce5081e94805a6395ff9209172c33ef9cc8bfd +CT= 6c39eb8ce898689951571a88367db0cc7340f34b27248975 +PT= b7b2db4a9d9396435ce5d870720d8aca12bb1b56aba1bfba +TEST= 165 +KEY= c0a23afce25dc6c2b5adddd64b5273ea83c9d868526d3447 +CT= b7b2db4a9d9396435ce5d870720d8aca12bb1b56aba1bfba +PT= 68e2e0694df952e387a093e92095b8e55231b725981e0bc8 +TEST= 166 +KEY= a840da95afa49421320d4e3f6bc7cb0fd1f86f4dca733f8f +CT= 68e2e0694df952e387a093e92095b8e55231b725981e0bc8 +PT= e3556f76c1ecc570030fcf4d5e46435b1cbbb7fd6c589ddc +TEST= 167 +KEY= 4b15b5e36e4851513102817235818854cd43d8b0a62ba253 +CT= e3556f76c1ecc570030fcf4d5e46435b1cbbb7fd6c589ddc +PT= 3aeee7d0e40c2289133579433d35876c611e10f3052dac89 +TEST= 168 +KEY= 71fb52338a4473d82237f83108b40f38ac5dc843a3060eda +CT= 3aeee7d0e40c2289133579433d35876c611e10f3052dac89 +PT= 55a1f2558ed14d5e100956c4d6aff68e22c601f8c88fb0db +TEST= 169 +KEY= 245aa06604953e86323eaef5de1bf9b68e9bc9bb6b89be01 +CT= 55a1f2558ed14d5e100956c4d6aff68e22c601f8c88fb0db +PT= 6a5218c0d6cf57eb803477ff9a8a5e63ee62f411fdd003bc +TEST= 170 +KEY= 4e08b8a6d25a696db20ad90a4491a7d560f93daa9659bdbd +CT= 6a5218c0d6cf57eb803477ff9a8a5e63ee62f411fdd003bc +PT= df117eeb6f3541bff3c1dbd2b19ec7bf843902ff4c1e0555 +TEST= 171 +KEY= 9119c64dbd6f28d241cb02d8f50f606ae4c03f55da47b8e8 +CT= df117eeb6f3541bff3c1dbd2b19ec7bf843902ff4c1e0555 +PT= 1f8eadc8d57a3478aa629a669c66de59f0714c659b882b05 +TEST= 172 +KEY= 8e976b8568151caaeba998be6969be3314b1733041cf93ed +CT= 1f8eadc8d57a3478aa629a669c66de59f0714c659b882b05 +PT= fd8be323a780f9973f82f330cd32ffcc48dc7bb1a53aa7f3 +TEST= 173 +KEY= 731c88a6cf95e53dd42b6b8ea45b41ff5c6d0881e4f5341e +CT= fd8be323a780f9973f82f330cd32ffcc48dc7bb1a53aa7f3 +PT= fbaced6334ff8b2b12ae1e2b63c5e8a0e16d1cc92c364c3b +TEST= 174 +KEY= 88b065c5fb6a6e16c68575a5c79ea95fbd001448c8c37825 +CT= fbaced6334ff8b2b12ae1e2b63c5e8a0e16d1cc92c364c3b +PT= e29803477f255b45f8ea3f4c6934ccf646afd4e533eb9315 +TEST= 175 +KEY= 6a286682844f35533e6f4ae9aeaa65a9fbafc0adfb28eb30 +CT= e29803477f255b45f8ea3f4c6934ccf646afd4e533eb9315 +PT= 87d36a7346b228ef7361c727e78c946b33ce480eaa409a9a +TEST= 176 +KEY= edfb0cf1c2fd1dbc4d0e8dce4926f1c2c86188a3516871aa +CT= 87d36a7346b228ef7361c727e78c946b33ce480eaa409a9a +PT= 436ae46a3c1f07ee44b0bc58c246b21838012c35fd06106b +TEST= 177 +KEY= ae91e89bfee21a5209be31968b6043daf060a496ac6e61c1 +CT= 436ae46a3c1f07ee44b0bc58c246b21838012c35fd06106b +PT= a3458dedfe41bd0952e0bd489a217cc21bd92817f51c78c7 +TEST= 178 +KEY= 0dd4657600a3a75b5b5e8cde11413f18ebb98c8159721906 +CT= a3458dedfe41bd0952e0bd489a217cc21bd92817f51c78c7 +PT= 972da9fd6de74788bc6cd5bff508594cc6efe0f307366e1b +TEST= 179 +KEY= 9af9cc8b6d44e0d3e7325961e44966542d566c725e44771d +CT= 972da9fd6de74788bc6cd5bff508594cc6efe0f307366e1b +PT= cf10225f765b83f25824a6fb23c8e78db4cb66b5c1298ea2 +TEST= 180 +KEY= 55e9eed41b1f6321bf16ff9ac78181d9999d0ac79f6df9bf +CT= cf10225f765b83f25824a6fb23c8e78db4cb66b5c1298ea2 +PT= 6c10b0cff2500213bcc1f0598ef6f3263e04d624bf5928ee +TEST= 181 +KEY= 39f95e1be94f613203d70fc3497772ffa799dce32034d151 +CT= 6c10b0cff2500213bcc1f0598ef6f3263e04d624bf5928ee +PT= c3a4ed56b3263f2d063ab08c5d1cfc331ca8c5b6aaf021de +TEST= 182 +KEY= fa5db34d5a695e1f05edbf4f146b8eccbb3119558ac4f08f +CT= c3a4ed56b3263f2d063ab08c5d1cfc331ca8c5b6aaf021de +PT= 02492a332dc8791f6d58f61877c46475d257d7075748411e +TEST= 183 +KEY= f814997e77a1270068b5495763afeab96966ce52dd8cb191 +CT= 02492a332dc8791f6d58f61877c46475d257d7075748411e +PT= b861fac53b59e6ededd363250fe9749ce82e22511d989594 +TEST= 184 +KEY= 407563bb4cf8c1ed85662a726c469e258148ec03c0142405 +CT= b861fac53b59e6ededd363250fe9749ce82e22511d989594 +PT= 209b1cbfde5e33b6576b7b125a8a1bf7963c7cc0ff937a19 +TEST= 185 +KEY= 60ee7f0492a6f25bd20d516036cc85d2177490c33f875e1c +CT= 209b1cbfde5e33b6576b7b125a8a1bf7963c7cc0ff937a19 +PT= e98fdd43701abcd1cf9cbee02c45049af8808829637a28ea +TEST= 186 +KEY= 8961a247e2bc4e8a1d91ef801a898148eff418ea5cfd76f6 +CT= e98fdd43701abcd1cf9cbee02c45049af8808829637a28ea +PT= 8abb1e27d90757376156adf5ef328514654aa1c1a69caebf +TEST= 187 +KEY= 03dabc603bbb19bd7cc74275f5bb045c8abeb92bfa61d849 +CT= 8abb1e27d90757376156adf5ef328514654aa1c1a69caebf +PT= 55b1d96281addb0bf0a7363d209d156650c703edaece5442 +TEST= 188 +KEY= 566b6502ba16c2b68c607448d526113ada79bac654af8c0b +CT= 55b1d96281addb0bf0a7363d209d156650c703edaece5442 +PT= f9342c1c66561f0ab10f1b891aa9d4487057f0619b0ce408 +TEST= 189 +KEY= af5f491edc40ddbc3d6f6fc1cf8fc572aa2e4aa7cfa36803 +CT= f9342c1c66561f0ab10f1b891aa9d4487057f0619b0ce408 +PT= ac8324a5cfc6fddd3ef6a0183ff235d768fccc71f7ca848a +TEST= 190 +KEY= 03dc6dbb138620610399cfd9f07df0a5c2d286d63869ec89 +CT= ac8324a5cfc6fddd3ef6a0183ff235d768fccc71f7ca848a +PT= 01f619196f1c8d88c49eb6bc6355e5fe9a37e0131d3ecea2 +TEST= 191 +KEY= 022a74a27c9aade9c70779659328155b58e566c52557222b +CT= 01f619196f1c8d88c49eb6bc6355e5fe9a37e0131d3ecea2 +PT= 1d88c180c5db8713b377acff9f72541d17a8d4087adb4655 +TEST= 192 +KEY= 1fa2b522b9412afa7470d59a0c5a41464f4db2cd5f8c647e +CT= 1d88c180c5db8713b377acff9f72541d17a8d4087adb4655 +PT= 4eec94611c757a3937a6e38d55ee3d076f8e22cbf79a4859 +TEST= 193 +KEY= 514e2143a53450c343d6361759b47c4120c39006a8162c27 +CT= 4eec94611c757a3937a6e38d55ee3d076f8e22cbf79a4859 +PT= 59ceadae507e04a064b28b104ca17980016c5f34d9a448c6 +TEST= 194 +KEY= 08808cedf54a54632764bd07151505c121afcf3271b264e1 +CT= 59ceadae507e04a064b28b104ca17980016c5f34d9a448c6 +PT= 1b1dc5295eff24db390df9eecab9eea08015b23b8a298c86 +TEST= 195 +KEY= 139d49c4abb570b81e6944e9dfaceb61a1ba7d09fb9be867 +CT= 1b1dc5295eff24db390df9eecab9eea08015b23b8a298c86 +PT= a13e7dafd430967ae56d8229deff51b07ca05a3c6b2147b9 +TEST= 196 +KEY= b2a3346b7f85e6c2fb04c6c00153bad1dd1a273590baafde +CT= a13e7dafd430967ae56d8229deff51b07ca05a3c6b2147b9 +PT= 7c246e9a30a5b72000c270182f02788117073b4f2ca3c408 +TEST= 197 +KEY= ce875af14f2051e2fbc6b6d82e51c250ca1d1c7abc196bd6 +CT= 7c246e9a30a5b72000c270182f02788117073b4f2ca3c408 +PT= a6e0d5dae6ec9c01ec07c359d784eac8cf23cad6ccfeddf7 +TEST= 198 +KEY= 68678f2ba9cccde317c17581f9d52898053ed6ac70e7b621 +CT= a6e0d5dae6ec9c01ec07c359d784eac8cf23cad6ccfeddf7 +PT= a75fd8cdffcac63b646e751754984a98e03b11015f7f7df4 +TEST= 199 +KEY= cf3857e656060bd873af0096ad4d6200e505c7ad2f98cbd5 +CT= a75fd8cdffcac63b646e751754984a98e03b11015f7f7df4 +PT= b4856d787a88b65c91eabbf7b568db481e92506d5e94d401 +TEST= 200 +KEY= 7bbd3a9e2c8ebd84e245bb611825b948fb9797c0710c1fd4 +CT= b4856d787a88b65c91eabbf7b568db481e92506d5e94d401 +PT= 46341fd97c33d75c36ce273b3f4c9983789d20cd0e379b07 +TEST= 201 +KEY= 3d89254750bd6ad8d48b9c5a276920cb830ab70d7f3b84d3 +CT= 46341fd97c33d75c36ce273b3f4c9983789d20cd0e379b07 +PT= 80b18d973d2c4d40fc4b72d3816bcb9764a98b975893ec86 +TEST= 202 +KEY= bd38a8d06d91279828c0ee89a602eb5ce7a33c9a27a86855 +CT= 80b18d973d2c4d40fc4b72d3816bcb9764a98b975893ec86 +PT= 73716eba8d6a977024c923498b629a01dbf8f68b5cda4170 +TEST= 203 +KEY= ce49c66ae0fbb0e80c09cdc02d60715d3c5bca117b722925 +CT= 73716eba8d6a977024c923498b629a01dbf8f68b5cda4170 +PT= b99c3f0cb4f65c22ecc2c7a04b9d1cf22eaa159f33a003f2 +TEST= 204 +KEY= 77d5f966540deccae0cb0a6066fd6daf12f1df8e48d22ad7 +CT= b99c3f0cb4f65c22ecc2c7a04b9d1cf22eaa159f33a003f2 +PT= 940018ae20ee434566e8f1a1b7927460e99b3b25bf6bf281 +TEST= 205 +KEY= e3d5e1c874e3af8f8623fbc1d16f19cffb6ae4abf7b9d856 +CT= 940018ae20ee434566e8f1a1b7927460e99b3b25bf6bf281 +PT= 0c1df80250ab77e26e03b7e77ba6b8de402ee63b5f0da9ba +TEST= 206 +KEY= efc819ca2448d86de8204c26aac9a111bb440290a8b471ec +CT= 0c1df80250ab77e26e03b7e77ba6b8de402ee63b5f0da9ba +PT= dd6c4e2b013b9ed24c337f908e6c2f6db72c43208a653222 +TEST= 207 +KEY= 32a457e1257346bfa41333b624a58e7c0c6841b022d143ce +CT= dd6c4e2b013b9ed24c337f908e6c2f6db72c43208a653222 +PT= 6078a4c8e82f914992cba58b043aa490b8e5a804581642ec +TEST= 208 +KEY= 52dcf329cd5cd7f636d8963d209f2aecb48de9b47ac70122 +CT= 6078a4c8e82f914992cba58b043aa490b8e5a804581642ec +PT= d28e9dd2027c2581ffba7ac588a8857557d8b7535f14ba59 +TEST= 209 +KEY= 80526efbcf20f277c962ecf8a837af99e3555ee725d3bb7b +CT= d28e9dd2027c2581ffba7ac588a8857557d8b7535f14ba59 +PT= fd0a0c41485f87e707f14b2a5246c12862ff4bae89140ab1 +TEST= 210 +KEY= 7d5862ba877f7590ce93a7d2fa716eb181aa1549acc7b1ca +CT= fd0a0c41485f87e707f14b2a5246c12862ff4bae89140ab1 +PT= d1ca2a51a1902afb992fde9294845ec066abe914a1133990 +TEST= 211 +KEY= ac9248eb26ef5f6b57bc79406ef53071e701fc5d0dd4885a +CT= d1ca2a51a1902afb992fde9294845ec066abe914a1133990 +PT= ff6147d8301993422475dcb7b1369cb8e13ff80ff84a8447 +TEST= 212 +KEY= 53f30f3316f6cc2973c9a5f7dfc3acc9063e0452f59e0c1d +CT= ff6147d8301993422475dcb7b1369cb8e13ff80ff84a8447 +PT= dbf8ed2ea78c22e998c729e64c047dd505cb40d0499a7ac9 +TEST= 213 +KEY= 880be21db17aeec0eb0e8c1193c7d11c03f54482bc0476d4 +CT= dbf8ed2ea78c22e998c729e64c047dd505cb40d0499a7ac9 +PT= dbc006e75eba523ccec1256a88dd1610e197cbabc48cb520 +TEST= 214 +KEY= 53cbe4faefc0bcfc25cfa97b1b1ac70ce2628f297888c3f4 +CT= dbc006e75eba523ccec1256a88dd1610e197cbabc48cb520 +PT= 32696a493de9a90fafaa9c82141975b131ab54451cceaeca +TEST= 215 +KEY= 61a28eb3d22915f38a6535f90f03b2bdd3c9db6c64466d3e +CT= 32696a493de9a90fafaa9c82141975b131ab54451cceaeca +PT= 0fd2ad9f8ba395f663636e21feaef60895a8e574a308a0b8 +TEST= 216 +KEY= 6e70232c598a8005e9065bd8f1ad44b546613e18c74ecd86 +CT= 0fd2ad9f8ba395f663636e21feaef60895a8e574a308a0b8 +PT= 4a2e7720be1dd039262318fc2b8fe329bd951793f00fdc60 +TEST= 217 +KEY= 245e540ce797503ccf254324da22a79cfbf4298b374111e6 +CT= 4a2e7720be1dd039262318fc2b8fe329bd951793f00fdc60 +PT= da65afb4240c35c217f13cff6d041eea434a9c36e0071785 +TEST= 218 +KEY= fe3bfbb8c39b65fed8d47fdbb726b976b8beb5bdd7460663 +CT= da65afb4240c35c217f13cff6d041eea434a9c36e0071785 +PT= 8d058fa4e35eb167b24f6f26889ec3ef64f7303a924086b5 +TEST= 219 +KEY= 733e741c20c5d4996a9b10fd3fb87a99dc498587450680d6 +CT= 8d058fa4e35eb167b24f6f26889ec3ef64f7303a924086b5 +PT= c88faa4eb19ef085ea3e84d1eac6d373ef7b4627df3bb014 +TEST= 220 +KEY= bbb1de52915b241c80a5942cd57ea9ea3332c3a09a3d30c2 +CT= c88faa4eb19ef085ea3e84d1eac6d373ef7b4627df3bb014 +PT= 8bdecc8978df6f49eae76c0620a8f5b76b16c792dc6da392 +TEST= 221 +KEY= 306f12dbe9844b556a42f82af5d65c5d5824043246509350 +CT= 8bdecc8978df6f49eae76c0620a8f5b76b16c792dc6da392 +PT= df2c532d5ee93d85b6b3d50f6498c85c9c79af5a878bdb6a +TEST= 222 +KEY= ef4341f6b76d76d0dcf12d25914e9401c45dab68c1db483a +CT= df2c532d5ee93d85b6b3d50f6498c85c9c79af5a878bdb6a +PT= b674988cfc3ebe77b320e6e26d6ffa23ac361fe9c073e305 +TEST= 223 +KEY= 5937d97a4b53c8a76fd1cbc7fc216e22686bb48101a8ab3f +CT= b674988cfc3ebe77b320e6e26d6ffa23ac361fe9c073e305 +PT= d749a1b6cf98694d8e9b1412e246920a91d90db8559139a1 +TEST= 224 +KEY= 8e7e78cc84cba1eae14adfd51e67fc28f9b2b9395439929e +CT= d749a1b6cf98694d8e9b1412e246920a91d90db8559139a1 +PT= 181a8c51748627edb88620d1b9eccdcbd7c6974404c6fea9 +TEST= 225 +KEY= 9664f49df04d860759ccff04a78b31e32e742e7d50ff6c37 +CT= 181a8c51748627edb88620d1b9eccdcbd7c6974404c6fea9 +PT= 405bd9a07b9376cf63a1a36003062269463aa464a5fbb4ec +TEST= 226 +KEY= d63f2d3d8bdef0c83a6d5c64a48d138a684e8a19f504d8db +CT= 405bd9a07b9376cf63a1a36003062269463aa464a5fbb4ec +PT= 53b95a5f65dd9c82ca790422eb5e709552541481dfccedb5 +TEST= 227 +KEY= 85867762ee036c4af01458464fd3631f3a1a9e982ac8356e +CT= 53b95a5f65dd9c82ca790422eb5e709552541481dfccedb5 +PT= e8ecd4241eeb5f02e7154519ce8905f92dad2aaf419b847d +TEST= 228 +KEY= 6d6aa346f0e8334817011d5f815a66e617b7b4376b53b113 +CT= e8ecd4241eeb5f02e7154519ce8905f92dad2aaf419b847d +PT= bf92612c500a180dfbb4fbfa0e905fd643de304b9e10e7b4 +TEST= 229 +KEY= d2f8c26aa0e22b45ecb5e6a58fca39305469847cf54356a7 +CT= bf92612c500a180dfbb4fbfa0e905fd643de304b9e10e7b4 +PT= 42f333238f35e402a828afebd9d1a44f98458a15404e33be +TEST= 230 +KEY= 900bf1492fd7cf47449d494e561b9d7fcc2c0e69b50d6519 +CT= 42f333238f35e402a828afebd9d1a44f98458a15404e33be +PT= 5ee96591f4d16395321f5d1c7f5ffc00795fb4ff94129063 +TEST= 231 +KEY= cee294d8db06acd2768214522944617fb573ba96211ff57a +CT= 5ee96591f4d16395321f5d1c7f5ffc00795fb4ff94129063 +PT= c349dca3ad506198d5d97a81b573fe700f2e36d817b19b75 +TEST= 232 +KEY= 0dab487b7656cd4aa35b6ed39c379f0fba5d8c4e36ae6e0f +CT= c349dca3ad506198d5d97a81b573fe700f2e36d817b19b75 +PT= 11b2762de70505f44ed9a428fcc27b4acf5a297232cb7ccc +TEST= 233 +KEY= 1c193e569153c8beed82cafb60f5e4457507a53c046512c3 +CT= 11b2762de70505f44ed9a428fcc27b4acf5a297232cb7ccc +PT= b2afbcda19820ce7bf8760aa17c0b09202cd1fe363959d03 +TEST= 234 +KEY= aeb6828c88d1c4595205aa51773554d777cabadf67f08fc0 +CT= b2afbcda19820ce7bf8760aa17c0b09202cd1fe363959d03 +PT= ad0ed546ae1209de7e89022b0c9a5e20d1938ba7ef308d79 +TEST= 235 +KEY= 03b857ca26c3cd872c8ca87a7baf0af7a659317888c002b9 +CT= ad0ed546ae1209de7e89022b0c9a5e20d1938ba7ef308d79 +PT= bfff2d6c56d63c95933140df3206895936c6c6fa63c7cd5e +TEST= 236 +KEY= bc477aa67015f112bfbde8a549a983ae909ff782eb07cfe7 +CT= bfff2d6c56d63c95933140df3206895936c6c6fa63c7cd5e +PT= 973ce65ea857cb2107ea7830b067a2433013d61687dc3a9c +TEST= 237 +KEY= 2b7b9cf8d8423a33b8579095f9ce21eda08c21946cdbf57b +CT= 973ce65ea857cb2107ea7830b067a2433013d61687dc3a9c +PT= f7463d7c2b688a1af09eaf33c2f3fbba06224cefd2394f8b +TEST= 238 +KEY= dc3da184f32ab02948c93fa63b3dda57a6ae6d7bbee2baf0 +CT= f7463d7c2b688a1af09eaf33c2f3fbba06224cefd2394f8b +PT= cf1f7f6b366223baa2076711e41a1f82549e6a6a9004af7b +TEST= 239 +KEY= 1322deefc5489393eace58b7df27c5d5f23007112ee6158b +CT= cf1f7f6b366223baa2076711e41a1f82549e6a6a9004af7b +PT= 1613ec1c4cc153fa6c1232c2753f8053a19df817f96bd5a3 +TEST= 240 +KEY= 053132f38989c06986dc6a75aa18458653adff06d78dc028 +CT= 1613ec1c4cc153fa6c1232c2753f8053a19df817f96bd5a3 +PT= 792cb8fb216b065726e34921f1544aa7be8db700ccba5ac1 +TEST= 241 +KEY= 7c1d8a08a8e2c63ea03f23545b4c0f21ed2048061b379ae9 +CT= 792cb8fb216b065726e34921f1544aa7be8db700ccba5ac1 +PT= 59424f075a7769cb3172ae61b8b831f49e5ba7295697bf80 +TEST= 242 +KEY= 255fc50ff295aff5914d8d35e3f43ed5737bef2f4da02569 +CT= 59424f075a7769cb3172ae61b8b831f49e5ba7295697bf80 +PT= 3f3b54b203eab09ec82316d08ef119e2d1b51a5ef651b0e3 +TEST= 243 +KEY= 1a6491bdf17f1f6b596e9be56d052737a2cef571bbf1958a +CT= 3f3b54b203eab09ec82316d08ef119e2d1b51a5ef651b0e3 +PT= 3eb71c719f6b418b0d65a1dec1a2940e256c44bbaf9ddd50 +TEST= 244 +KEY= 24d38dcc6e145ee0540b3a3baca7b33987a2b1ca146c48da +CT= 3eb71c719f6b418b0d65a1dec1a2940e256c44bbaf9ddd50 +PT= 07158d59c16fcb0e1388a5f6dabbe1e586cf0eb15540f41c +TEST= 245 +KEY= 23c60095af7b95ee47839fcd761c52dc016dbf7b412cbcc6 +CT= 07158d59c16fcb0e1388a5f6dabbe1e586cf0eb15540f41c +PT= 128abd1df61a8c55d2c934595d26b2081afd47d0b93db71a +TEST= 246 +KEY= 314cbd88596119bb954aab942b3ae0d41b90f8abf8110bdc +CT= 128abd1df61a8c55d2c934595d26b2081afd47d0b93db71a +PT= 3c8bca88c7622f9bd4dd525d9447b08fe76e52f5ebd0db23 +TEST= 247 +KEY= 0dc777009e0336204197f9c9bf7d505bfcfeaa5e13c1d0ff +CT= 3c8bca88c7622f9bd4dd525d9447b08fe76e52f5ebd0db23 +PT= 690074600b17d25bb031a691f33c3ca80e321a9ab0a200ef +TEST= 248 +KEY= 64c703609514e47bf1a65f584c416cf3f2ccb0c4a363d010 +CT= 690074600b17d25bb031a691f33c3ca80e321a9ab0a200ef +PT= fea1fe5bba5c942e1050786212635d8dc018195fa3d2f17f +TEST= 249 +KEY= 9a66fd3b2f487055e1f6273a5e22317e32d4a99b00b1216f +CT= fea1fe5bba5c942e1050786212635d8dc018195fa3d2f17f +PT= 041c7d116744c35e882b6218d690f60bfdc38e13ba34c56e +TEST= 250 +KEY= 9e7a802a480cb30b69dd452288b2c775cf172788ba85e401 +CT= 041c7d116744c35e882b6218d690f60bfdc38e13ba34c56e +PT= 5953d7e2196102870f6982c78118068d5f1909ff883b524d +TEST= 251 +KEY= c72957c8516db18c66b4c7e509aac1f8900e2e7732beb64c +CT= 5953d7e2196102870f6982c78118068d5f1909ff883b524d +PT= 41959bd231a1a81217cedcd2df9a37129bf9e5b93f1a032e +TEST= 252 +KEY= 86bccc1a60cc199e717a1b37d630f6ea0bf7cbce0da4b562 +CT= 41959bd231a1a81217cedcd2df9a37129bf9e5b93f1a032e +PT= 6412319b69b72bddd6e7e1b553c8ded29680a0b6aa88d287 +TEST= 253 +KEY= e2aefd81097b3243a79dfa8285f828389d776b78a72c67e5 +CT= 6412319b69b72bddd6e7e1b553c8ded29680a0b6aa88d287 +PT= 4a8515c0a99868e4189787403b62703c8a7f2cbfcdd38576 +TEST= 254 +KEY= a82be841a0e35aa7bf0a7dc2be9a5804170847c76affe293 +CT= 4a8515c0a99868e4189787403b62703c8a7f2cbfcdd38576 +PT= 8746ecdf7b915f405b3715778cb22dd59f62f7795d1f503e +TEST= 255 +KEY= 2f6d049edb7205e7e43d68b5322875d1886ab0be37e0b2ad +CT= 8746ecdf7b915f405b3715778cb22dd59f62f7795d1f503e +PT= ecb9e8bf9d0d7614f38699fd6810163db25fdf3e29b692ec +TEST= 256 +KEY= c3d4ec21467f73f317bbf1485a3863ec3a356f801e562041 +CT= ecb9e8bf9d0d7614f38699fd6810163db25fdf3e29b692ec +PT= 40cbd1f41c3a7ef9e8b55afad25b86ac187301fb2d6086ec +TEST= 257 +KEY= 831f3dd55a450d0aff0eabb28863e54022466e7b3336a6ad +CT= 40cbd1f41c3a7ef9e8b55afad25b86ac187301fb2d6086ec +PT= 43c8f4861b114917a10b0aa11fd24969c49a97626f6ccdb1 +TEST= 258 +KEY= c0d7c9534154441d5e05a11397b1ac29e6dcf9195c5a6b1c +CT= 43c8f4861b114917a10b0aa11fd24969c49a97626f6ccdb1 +PT= 84e6e0a92a14b8b03eb5a8e0a23fa0d1d355f93ee38a3a1e +TEST= 259 +KEY= 443129fa6b40fcad60b009f3358e0cf835890027bfd05102 +CT= 84e6e0a92a14b8b03eb5a8e0a23fa0d1d355f93ee38a3a1e +PT= a9e458aeaf1a7aeac689427dd185b796a008ff71270124bd +TEST= 260 +KEY= edd57154c45a8647a6394b8ee40bbb6e9581ff5698d175bf +CT= a9e458aeaf1a7aeac689427dd185b796a008ff71270124bd +PT= ff4a7510fd1bce5348b4adc81af5caa4e7eafc8f163ba3d6 +TEST= 261 +KEY= 129f044439414814ee8de646fefe71ca726b03d98eead669 +CT= ff4a7510fd1bce5348b4adc81af5caa4e7eafc8f163ba3d6 +PT= 20441b0e2cca14c8b3db5ff15b17493c93e5a73250cd542f +TEST= 262 +KEY= 32db1f4a158b5cdc5d56b9b7a5e938f6e18ea4ebde278246 +CT= 20441b0e2cca14c8b3db5ff15b17493c93e5a73250cd542f +PT= 19682174a0ff2e8004fe3e56fd0f5093dc822b8e13a36c22 +TEST= 263 +KEY= 2bb33e3eb574725c59a887e158e668653d0c8f65cd84ee64 +CT= 19682174a0ff2e8004fe3e56fd0f5093dc822b8e13a36c22 +PT= f2ba78f0bc1c6dd629505cbe65efc436b37ab6264d55f847 +TEST= 264 +KEY= d90946ce09681f8a70f8db5f3d09ac538e76394380d11623 +CT= f2ba78f0bc1c6dd629505cbe65efc436b37ab6264d55f847 +PT= 9b1956c70bae0d89d15a79f4e117a7b7f13d3aa0d74494f9 +TEST= 265 +KEY= 4210100902c61203a1a2a2abdc1e0be47f4b03e3579582da +CT= 9b1956c70bae0d89d15a79f4e117a7b7f13d3aa0d74494f9 +PT= 6a463f8009f57e4e2cac3cd2051887d704279c0a5e549d52 +TEST= 266 +KEY= 28562f890b336c4d8d0e9e79d9068c337b6c9fe909c11f88 +CT= 6a463f8009f57e4e2cac3cd2051887d704279c0a5e549d52 +PT= 93777fe19e4268be857d82e294458e53ebcf85095e353caa +TEST= 267 +KEY= bb215068957104f308731c9b4d43026090a31ae057f42322 +CT= 93777fe19e4268be857d82e294458e53ebcf85095e353caa +PT= 4ed812d553ea15362d3799d2ef94878ca11a5ecb572c6de2 +TEST= 268 +KEY= f5f942bdc69b11c525448549a2d785ec31b9442b00d84ec0 +CT= 4ed812d553ea15362d3799d2ef94878ca11a5ecb572c6de2 +PT= 0bb8ca04eec2f6fb6daf7e08ba677f793e49b272c1398687 +TEST= 269 +KEY= fe4188b92859e73e48ebfb4118b0fa950ff0f659c1e1c847 +CT= 0bb8ca04eec2f6fb6daf7e08ba677f793e49b272c1398687 +PT= 6a6263750991dde3aba7aa915d0ffc7ef94c283f7baa84a1 +TEST= 270 +KEY= 9423ebcc21c83adde34c51d045bf06ebf6bcde66ba4b4ce6 +CT= 6a6263750991dde3aba7aa915d0ffc7ef94c283f7baa84a1 +PT= 8ce46c96dffd7f6b3402c021d70f8050eee2e07b6cee6900 +TEST= 271 +KEY= 18c7875afe3545b6d74e91f192b086bb185e3e1dd6a525e6 +CT= 8ce46c96dffd7f6b3402c021d70f8050eee2e07b6cee6900 +PT= b48021e1daf44173327861c83176abdddb7358258a5a7478 +TEST= 272 +KEY= ac47a6bb24c104c5e536f039a3c62d66c32d66385cff519e +CT= b48021e1daf44173327861c83176abdddb7358258a5a7478 +PT= f086bba6d784bb93fb34120d591e170210f0d83bf8395659 +TEST= 273 +KEY= 5cc11d1df345bf561e02e234fad83a64d3ddbe03a4c607c7 +CT= f086bba6d784bb93fb34120d591e170210f0d83bf8395659 +PT= 3d773e74db23eb96a7e6b6ba3306b843672706c995291555 +TEST= 274 +KEY= 61b62369286654c0b9e4548ec9de8227b4fab8ca31ef1292 +CT= 3d773e74db23eb96a7e6b6ba3306b843672706c995291555 +PT= a188a30322fbe1a0467bbb328c058ba35fc95f8ed947e951 +TEST= 275 +KEY= c03e806a0a9db560ff9fefbc45db0984eb33e744e8a8fbc3 +CT= a188a30322fbe1a0467bbb328c058ba35fc95f8ed947e951 +PT= 9d7f6fd931c7948f5c20b358a48adf9f829e30003790da88 +TEST= 276 +KEY= 5d41efb33b5a21efa3bf5ce4e151d61b69add744df38214b +CT= 9d7f6fd931c7948f5c20b358a48adf9f829e30003790da88 +PT= f9b9d118d57772677a591febea9d472bcb53836c48a95748 +TEST= 277 +KEY= a4f83eabee2d5388d9e6430f0bcc9130a2fe542897917603 +CT= f9b9d118d57772677a591febea9d472bcb53836c48a95748 +PT= b26d55717867bc66dd5f5080245b5521d60f32c81c5d6cc4 +TEST= 278 +KEY= 16956bda964aefee04b9138f2f97c41174f166e08bcc1ac7 +CT= b26d55717867bc66dd5f5080245b5521d60f32c81c5d6cc4 +PT= d4d623a8751f3bda37f2d6df781617329e71be9fe1eae65d +TEST= 279 +KEY= c2434872e355d434334bc5505781d323ea80d87f6a26fc9a +CT= d4d623a8751f3bda37f2d6df781617329e71be9fe1eae65d +PT= 57b3ac01ee492f369dc80edc293b4e1c07085d6c626c1da5 +TEST= 280 +KEY= 95f0e4730d1cfb02ae83cb8c7eba9d3fed888513084ae13f +CT= 57b3ac01ee492f369dc80edc293b4e1c07085d6c626c1da5 +PT= a14b73ec70bc47efcec6d1f3fb6162e50a8924781d8b9f79 +TEST= 281 +KEY= 34bb979f7da0bced60451a7f85dbffdae701a16b15c17e46 +CT= a14b73ec70bc47efcec6d1f3fb6162e50a8924781d8b9f79 +PT= f14c7d5ea4b4a438532da45de1afbc747e7c8d6aba73a26b +TEST= 282 +KEY= c5f7eac1d91418d53368be22647443ae997d2c01afb2dc2d +CT= f14c7d5ea4b4a438532da45de1afbc747e7c8d6aba73a26b +PT= 43a2404c5113dd041169bb1fd94ba20d182fa539657b2999 +TEST= 283 +KEY= 8655aa8d8807c5d12201053dbd3fe1a381528938cac9f5b4 +CT= 43a2404c5113dd041169bb1fd94ba20d182fa539657b2999 +PT= 7e625898047f4cae230dd1642ea4993d16f8bd5ab15d96e7 +TEST= 284 +KEY= f837f2158c78897f010cd459939b789e97aa34627b946353 +CT= 7e625898047f4cae230dd1642ea4993d16f8bd5ab15d96e7 +PT= 5ee5ec30817501d03206e6901327b5768ce8e81271cbb01b +TEST= 285 +KEY= a6d21e250d0d88af330a32c980bccde81b42dc700a5fd348 +CT= 5ee5ec30817501d03206e6901327b5768ce8e81271cbb01b +PT= 64617cf980ec77f86ac7df3c1fe5704011c09f9dcdf8e3ce +TEST= 286 +KEY= c2b362dc8de1ff5759cdedf59f59bda80a8243edc7a73086 +CT= 64617cf980ec77f86ac7df3c1fe5704011c09f9dcdf8e3ce +PT= 3a54b800067e3dcefc0e1d339e0126c43654cbd479c540ac +TEST= 287 +KEY= f8e7dadc8b9fc299a5c3f0c601589b6c3cd68839be62702a +CT= 3a54b800067e3dcefc0e1d339e0126c43654cbd479c540ac +PT= 5784c73f0eefc1f44eed8d11f09f5afafb8b9a01547a7abe +TEST= 288 +KEY= af631de38570036deb2e7dd7f1c7c196c75d1238ea180a94 +CT= 5784c73f0eefc1f44eed8d11f09f5afafb8b9a01547a7abe +PT= bd2f8e9eb5658b4281bf1ba5b28b257ee92348b72c690629 +TEST= 289 +KEY= 124c937d3015882f6a916672434ce4e82e7e5a8fc6710cbd +CT= bd2f8e9eb5658b4281bf1ba5b28b257ee92348b72c690629 +PT= 6c1b1e337cf510aaf07c4a6f54054c4c86346104ba9f2d12 +TEST= 290 +KEY= 7e578d4e4ce098859aed2c1d1749a8a4a84a3b8b7cee21af +CT= 6c1b1e337cf510aaf07c4a6f54054c4c86346104ba9f2d12 +PT= 349d9a5ac6f5b1fc99d5d361e8de0316ac72eda529e75db1 +TEST= 291 +KEY= 4aca17148a1529790338ff7cff97abb20438d62e55097c1e +CT= 349d9a5ac6f5b1fc99d5d361e8de0316ac72eda529e75db1 +PT= ff37c217ab43e7bd0de3c9b9066d434fa89330b8d65e6d10 +TEST= 292 +KEY= b5fdd5032156cec40edb36c5f9fae8fdacabe6968357110e +CT= ff37c217ab43e7bd0de3c9b9066d434fa89330b8d65e6d10 +PT= a2f9d4aa9aaef546475ba1c9230972ba062b0e6425a4f768 +TEST= 293 +KEY= 170401a9bbf83b824980970cdaf39a47aa80e8f2a6f3e666 +CT= a2f9d4aa9aaef546475ba1c9230972ba062b0e6425a4f768 +PT= c41f88473ecf7af07c7be3e7201ff7b96624bdd32dc4080e +TEST= 294 +KEY= d31b89ee8537417235fb74ebfaec6dfecca455218b37ee68 +CT= c41f88473ecf7af07c7be3e7201ff7b96624bdd32dc4080e +PT= 38c02a94a32cc84b6f11e477877fb16e191f7e488c7ede99 +TEST= 295 +KEY= ebdba37a261b89395aea909c7d93dc90d5bb2b69074930f1 +CT= 38c02a94a32cc84b6f11e477877fb16e191f7e488c7ede99 +PT= 1592fe748357a5d79dccd7a719d2ce9b09ceb513dbcb79ab +TEST= 296 +KEY= fe495d0ea54c2ceec726473b6441120bdc759e7adc82495a +CT= 1592fe748357a5d79dccd7a719d2ce9b09ceb513dbcb79ab +PT= f9845baf9d178d0ffa136b121314d055da0bf31e463a9a31 +TEST= 297 +KEY= 07cd06a1385ba1e13d352c297755c25e067e6d649ab8d36b +CT= f9845baf9d178d0ffa136b121314d055da0bf31e463a9a31 +PT= 6639ae6a4aaf0772dc44d6229f54697684e0e8305bb32e27 +TEST= 298 +KEY= 61f4a8cb72f4a693e171fa0be801ab28829e8554c10bfd4c +CT= 6639ae6a4aaf0772dc44d6229f54697684e0e8305bb32e27 +PT= 25b78072ac34b9cfc4019a763262e724a9f68e7c943174ea +TEST= 299 +KEY= 444328b9dec01f5c2570607dda634c0c2b680b28553a89a6 +CT= 25b78072ac34b9cfc4019a763262e724a9f68e7c943174ea +PT= a62074abb911b5798077d89f6824e9b20209c47259c277bc +TEST= 300 +KEY= e2635c1267d1aa25a507b8e2b247a5be2961cf5a0cf8fe1a +CT= a62074abb911b5798077d89f6824e9b20209c47259c277bc +PT= 109e46d21fd9ac6257c850a0c7e3a9ffe897435b84586ae1 +TEST= 301 +KEY= f2fd1ac078080647f2cfe84275a40c41c1f68c0188a094fb +CT= 109e46d21fd9ac6257c850a0c7e3a9ffe897435b84586ae1 +PT= d8306abcd3a64a350d98fc59c1692df74c046dcf6d9ea3af +TEST= 302 +KEY= 2acd707cabae4c72ff57141bb4cd21b68df2e1cee53e3754 +CT= d8306abcd3a64a350d98fc59c1692df74c046dcf6d9ea3af +PT= f3857b789836ef4806ec00992238f2ddc18895ac8cb630d4 +TEST= 303 +KEY= d9480b043398a33af9bb148296f5d36b4c7a746269880780 +CT= f3857b789836ef4806ec00992238f2ddc18895ac8cb630d4 +PT= 1f0b69b112595d2c3f2bd2302471d7b72a6532f83e05681e +TEST= 304 +KEY= c64362b521c1fe16c690c6b2b28404dc661f469a578d6f9e +CT= 1f0b69b112595d2c3f2bd2302471d7b72a6532f83e05681e +PT= bc9c15af94c7f68286613ef05caf548acd4c26e9c4c39483 +TEST= 305 +KEY= 7adf771ab506089440f1f842ee2b5056ab536073934efb1d +CT= bc9c15af94c7f68286613ef05caf548acd4c26e9c4c39483 +PT= def923058b3f53672f0fffb18a87bb773527078a53a8f5f8 +TEST= 306 +KEY= a426541f3e395bf36ffe07f364aceb219e7467f9c0e60ee5 +CT= def923058b3f53672f0fffb18a87bb773527078a53a8f5f8 +PT= fea8b5c7632fd2512fbebbcf344d930653fbc97e1b9c1ff2 +TEST= 307 +KEY= 5a8ee1d85d1689a24040bc3c50e17827cd8fae87db7a1117 +CT= fea8b5c7632fd2512fbebbcf344d930653fbc97e1b9c1ff2 +PT= 385a9bda6632c100587cd16a0c4f488a1bda9abacab6fb4e +TEST= 308 +KEY= 62d47a023b2448a2183c6d565cae30add655343d11ccea59 +CT= 385a9bda6632c100587cd16a0c4f488a1bda9abacab6fb4e +PT= aac47d1b0caa46c96caafab11343e62a009600bde01d7b55 +TEST= 309 +KEY= c8100719378e0e6b749697e74fedd687d6c33480f1d1910c +CT= aac47d1b0caa46c96caafab11343e62a009600bde01d7b55 +PT= 0ba47bcc47396d813c9e02249a697207eed89c8ab60a147c +TEST= 310 +KEY= c3b47cd570b763ea480895c3d584a480381ba80a47db8570 +CT= 0ba47bcc47396d813c9e02249a697207eed89c8ab60a147c +PT= 1801fe7a736166fbb65c9134eea498c94abf3b9ad94d2b7e +TEST= 311 +KEY= dbb582af03d60511fe5404f73b203c4972a493909e96ae0e +CT= 1801fe7a736166fbb65c9134eea498c94abf3b9ad94d2b7e +PT= d68cfe056ee71ba59e2a3164afa9e5070dc19486d3f69830 +TEST= 312 +KEY= 0d397caa6d311eb4607e35939489d94e7f6507164d60363e +CT= d68cfe056ee71ba59e2a3164afa9e5070dc19486d3f69830 +PT= 5b6afdc1508db354d6d7e2804cc384ef77c612cf6fa4cde8 +TEST= 313 +KEY= 5653816b3dbcade0b6a9d713d84a5da108a315d922c4fbd6 +CT= 5b6afdc1508db354d6d7e2804cc384ef77c612cf6fa4cde8 +PT= 5febe36d781bb805321cf271b84cf45a984d36e4640aa902 +TEST= 314 +KEY= 09b8620645a715e584b525626006a9fb90ee233d46ce52d4 +CT= 5febe36d781bb805321cf271b84cf45a984d36e4640aa902 +PT= 4cd79ccc125ff893ff598374a33784c4e3b9cb7285a153ee +TEST= 315 +KEY= 456ffeca57f8ed767beca616c3312d3f7357e84fc36f013a +CT= 4cd79ccc125ff893ff598374a33784c4e3b9cb7285a153ee +PT= 25c65377556ecb66edaa46831a207bf6988f1f66b315a9f5 +TEST= 316 +KEY= 60a9adbd029626109646e095d91156c9ebd8f729707aa8cf +CT= 25c65377556ecb66edaa46831a207bf6988f1f66b315a9f5 +PT= a750189c84b427a558c893f9e63e4590beff46cd21adb9e7 +TEST= 317 +KEY= c7f9b521862201b5ce8e736c3f2f13595527b1e451d71128 +CT= a750189c84b427a558c893f9e63e4590beff46cd21adb9e7 +PT= 8f703a4745756f37a8d323ffe95e1621b7e18b5551fdc939 +TEST= 318 +KEY= 48898f66c3576e82665d5093d6710578e2c63ab1002ad811 +CT= 8f703a4745756f37a8d323ffe95e1621b7e18b5551fdc939 +PT= da718ca67585076cf4a34c1768e2634d973cbac97d544488 +TEST= 319 +KEY= 92f803c0b6d269ee92fe1c84be93663575fa80787d7e9c99 +CT= da718ca67585076cf4a34c1768e2634d973cbac97d544488 +PT= 0e7965fa2bbdf099181ba21a35b724f388b0b72a6ff27e1f +TEST= 320 +KEY= 9c81663a9d6f99778ae5be9e8b2442c6fd4a3752128ce286 +CT= 0e7965fa2bbdf099181ba21a35b724f388b0b72a6ff27e1f +PT= 1d308657a9624e043dc4f192001e62ff884bf1109839cd52 +TEST= 321 +KEY= 81b1e06d340dd773b7214f0c8b3a20397501c6428ab52fd4 +CT= 1d308657a9624e043dc4f192001e62ff884bf1109839cd52 +PT= be17f75d793525771936abfc719f8223774dba1148a4dcf3 +TEST= 322 +KEY= 3fa617304d38f204ae17e4f0faa5a21a024c7c53c211f327 +CT= be17f75d793525771936abfc719f8223774dba1148a4dcf3 +PT= 87199bd4863a489edc127704a72236f4a65d145b389ce8c7 +TEST= 323 +KEY= b8bf8ce4cb02ba9a720593f45d8794eea4116808fa8d1be0 +CT= 87199bd4863a489edc127704a72236f4a65d145b389ce8c7 +PT= 6bc8ac8b73f412311e5a3b9788901b218eb4e4b9ebed0744 +TEST= 324 +KEY= d377206fb8f6a8ab6c5fa863d5178fcf2aa58cb111601ca4 +CT= 6bc8ac8b73f412311e5a3b9788901b218eb4e4b9ebed0744 +PT= fcded064c2394d787728e69d4b1a8c34b5dc613db88486fc +TEST= 325 +KEY= 2fa9f00b7acfe5d31b774efe9e0d03fb9f79ed8ca9e49a58 +CT= fcded064c2394d787728e69d4b1a8c34b5dc613db88486fc +PT= 55e4d034293348b49aa60590bd601278fed463849eb8ffa3 +TEST= 326 +KEY= 7a4d203f53fcad6781d14b6e236d118361ad8e08375c65fb +CT= 55e4d034293348b49aa60590bd601278fed463849eb8ffa3 +PT= f1d2fcde7dc00d923d6ec12ec7e276377edbe84ea5608ebb +TEST= 327 +KEY= 8b9fdce12e3ca0f5bcbf8a40e48f67b41f766646923ceb40 +CT= f1d2fcde7dc00d923d6ec12ec7e276377edbe84ea5608ebb +PT= b18aa1ef077bf037aa0a130db510bea53791c9245d858087 +TEST= 328 +KEY= 3a157d0e294750c216b5994d519fd91128e7af62cfb96bc7 +CT= b18aa1ef077bf037aa0a130db510bea53791c9245d858087 +PT= d480b9ca101c35b303f77865fe317e5a11958e8c5e7d122c +TEST= 329 +KEY= ee95c4c4395b65711542e128afaea74b397221ee91c479eb +CT= d480b9ca101c35b303f77865fe317e5a11958e8c5e7d122c +PT= 9cb547384f8102e032e4e1424601b4d6c70fd0248c138956 +TEST= 330 +KEY= 722083fc76da679127a6006ae9af139dfe7df1ca1dd7f0bd +CT= 9cb547384f8102e032e4e1424601b4d6c70fd0248c138956 +PT= 6e197999f6ac662a47f99c335930e9a9813ddd36e2e5689b +TEST= 331 +KEY= 1c39fa65807601bb605f9c59b09ffa347f402cfcff329826 +CT= 6e197999f6ac662a47f99c335930e9a9813ddd36e2e5689b +PT= 157ed1ecff946db18d6356eb6e675acbece50bc2e22ba77f +TEST= 332 +KEY= 09472b897fe26c0aed3ccab2def8a0ff93a5273e1d193f59 +CT= 157ed1ecff946db18d6356eb6e675acbece50bc2e22ba77f +PT= 1f6ad8455b300230382cb25b2433b1743aa1996f343c64c2 +TEST= 333 +KEY= 162df3cc24d26e3ad51078e9facb118ba904be5129255b9b +CT= 1f6ad8455b300230382cb25b2433b1743aa1996f343c64c2 +PT= aad002a40cc54f206888e69da93f3db33910e72ace3c0c9f +TEST= 334 +KEY= bcfdf1682817211abd989e7453f42c389014597be7195704 +CT= aad002a40cc54f206888e69da93f3db33910e72ace3c0c9f +PT= b749f9812809f9ca51375662107001c83b8b479242ffd07c +TEST= 335 +KEY= 0bb408e9001ed8d0ecafc81643842df0ab9f1ee9a5e68778 +CT= b749f9812809f9ca51375662107001c83b8b479242ffd07c +PT= 5fa0031d3eeba6954d08910e8fa6faa55b4e68be630dbbf1 +TEST= 336 +KEY= 54140bf43ef57e45a1a75918cc22d755f0d17657c6eb3c89 +CT= 5fa0031d3eeba6954d08910e8fa6faa55b4e68be630dbbf1 +PT= 447822e9741de72a0a84c77fdfa08a22348bdf292e5e540f +TEST= 337 +KEY= 106c291d4ae8996fab239e6713825d77c45aa97ee8b56886 +CT= 447822e9741de72a0a84c77fdfa08a22348bdf292e5e540f +PT= 0925ae8a4db43eba64456368c060df74ad150ad4209f9081 +TEST= 338 +KEY= 19498797075ca7d5cf66fd0fd3e28203694fa3aac82af807 +CT= 0925ae8a4db43eba64456368c060df74ad150ad4209f9081 +PT= c0a52db8bfd9a0d614828ce627abfe65d7c95d355fb77b80 +TEST= 339 +KEY= d9ecaa2fb8850703dbe471e9f4497c66be86fe9f979d8387 +CT= c0a52db8bfd9a0d614828ce627abfe65d7c95d355fb77b80 +PT= 7e5f514c30879e69fd4b5f56683557821b8db49418d6cc4d +TEST= 340 +KEY= a7b3fb638802996a26af2ebf9c7c2be4a50b4a0b8f4b4fca +CT= 7e5f514c30879e69fd4b5f56683557821b8db49418d6cc4d +PT= a639cd8dbdf1aff5f34f1065f92450866b9dfa427611ab34 +TEST= 341 +KEY= 018a36ee35f3369fd5e03eda65587b62ce96b049f95ae4fe +CT= a639cd8dbdf1aff5f34f1065f92450866b9dfa427611ab34 +PT= 1cb7e0e28c39bf8667f4b8d85a2ab1a597230c4ee599e977 +TEST= 342 +KEY= 1d3dd60cb9ca8919b21486023f72cac759b5bc071cc30d89 +CT= 1cb7e0e28c39bf8667f4b8d85a2ab1a597230c4ee599e977 +PT= a666d712ab2d777c24f2e166397a09065e90554fd895eb00 +TEST= 343 +KEY= bb5b011e12e7fe6596e667640608c3c10725e948c456e689 +CT= a666d712ab2d777c24f2e166397a09065e90554fd895eb00 +PT= 15f0b2b797d7446958ec3635a8b0a6b29980186ee0427e0e +TEST= 344 +KEY= aeabb3a98530ba0cce0a5151aeb865739ea5f12624149887 +CT= 15f0b2b797d7446958ec3635a8b0a6b29980186ee0427e0e +PT= d7c4f0a2c42eff4ef84db42200edab3103f7c6c3e4945638 +TEST= 345 +KEY= 796f430b411e45423647e573ae55ce429d5237e5c080cebf +CT= d7c4f0a2c42eff4ef84db42200edab3103f7c6c3e4945638 +PT= e558ee18fd97ec936c722d003b6090bdb8a3f6daa415355d +TEST= 346 +KEY= 9c37ad13bc89a9d15a35c87395355eff25f1c13f6495fbe2 +CT= e558ee18fd97ec936c722d003b6090bdb8a3f6daa415355d +PT= 9176a5461df1a33ac3f47253166e069b3c797dc4aed87bc0 +TEST= 347 +KEY= 0d410855a1780aeb99c1ba20835b58641988bcfbca4d8022 +CT= 9176a5461df1a33ac3f47253166e069b3c797dc4aed87bc0 +PT= c0f6ba499618379c49792932cc3e09f603900a23806de773 +TEST= 348 +KEY= cdb7b21c37603d77d0b893124f6551921a18b6d84a206751 +CT= c0f6ba499618379c49792932cc3e09f603900a23806de773 +PT= 332af0f7d4633c4ca8233e10480419c146c474c6b77c4c83 +TEST= 349 +KEY= fe9d42ebe303013b789bad02076148535cdcc21efd5c2bd2 +CT= 332af0f7d4633c4ca8233e10480419c146c474c6b77c4c83 +PT= f6ac35d726aab4dea4851c8d81b1567ab0ac304d4522c5e0 +TEST= 350 +KEY= 0831773cc5a9b5e5dc1eb18f86d01e29ec70f253b87eee32 +CT= f6ac35d726aab4dea4851c8d81b1567ab0ac304d4522c5e0 +PT= 04b2714f019261b39b5ecdbc37970c443bad12315aff53a3 +TEST= 351 +KEY= 0c830673c43bd45647407c33b147126dd7dde062e281bd91 +CT= 04b2714f019261b39b5ecdbc37970c443bad12315aff53a3 +PT= f4a969f6594100e5cc0d044c82f757c7f94b3fa62647f4d5 +TEST= 352 +KEY= f82a6f859d7ad4b38b4d787f33b045aa2e96dfc4c4c64944 +CT= f4a969f6594100e5cc0d044c82f757c7f94b3fa62647f4d5 +PT= 34ada1918dfb170b98d725964a24374dfef6fe609743cce4 +TEST= 353 +KEY= cc87ce141081c3b8139a5de9799472e7d06021a4538585a0 +CT= 34ada1918dfb170b98d725964a24374dfef6fe609743cce4 +PT= 6944a41d3052a7255080f57e560e833b12fcf3c743ee3e80 +TEST= 354 +KEY= a5c36a0920d3649d431aa8972f9af1dcc29cd263106bbb20 +CT= 6944a41d3052a7255080f57e560e833b12fcf3c743ee3e80 +PT= 10dda0e17c5184bc5ac903e12a05314ec659d48565e4b6fa +TEST= 355 +KEY= b51ecae85c82e02119d3ab76059fc09204c506e6758f0dda +CT= 10dda0e17c5184bc5ac903e12a05314ec659d48565e4b6fa +PT= e0d94a664874fc42599d924f1e29136e725c42c8ea2d9844 +TEST= 356 +KEY= 55c7808e14f61c63404e39391bb6d3fc7699442e9fa2959e +CT= e0d94a664874fc42599d924f1e29136e725c42c8ea2d9844 +PT= b208496d7a4594e7a3de13809f9f377cd39f7d6d77d3e791 +TEST= 357 +KEY= e7cfc9e36eb38884e3902ab98429e480a5063943e871720f +CT= b208496d7a4594e7a3de13809f9f377cd39f7d6d77d3e791 +PT= b6d0329408785eb5ef6bd955040aaac793b651364c60ebaf +TEST= 358 +KEY= 511ffb7766cbd6310cfbf3ec80234e4736b06875a41199a0 +CT= b6d0329408785eb5ef6bd955040aaac793b651364c60ebaf +PT= dc35f31843688941b20d085fa880cd99422571e8b973fe19 +TEST= 359 +KEY= 8d2a086f25a35f70bef6fbb328a383de7495199d1d6267b9 +CT= dc35f31843688941b20d085fa880cd99422571e8b973fe19 +PT= 6cb7795de5acbb4749728662bbfead3d6964c038fdf456c6 +TEST= 360 +KEY= e19d7132c00fe437f7847dd1935d2ee31df1d9a5e096317f +CT= 6cb7795de5acbb4749728662bbfead3d6964c038fdf456c6 +PT= 2870201cd6699bdb64062361b2c5971a5b8504eb5dda8b91 +TEST= 361 +KEY= c9ed512e16667fec93825eb02198b9f94674dd4ebd4cbaee +CT= 2870201cd6699bdb64062361b2c5971a5b8504eb5dda8b91 +PT= 710d30636e6b6038fbd4761b3f08b4171d614c343b109053 +TEST= 362 +KEY= b8e0614d780d1fd4685628ab1e900dee5b15917a865c2abd +CT= 710d30636e6b6038fbd4761b3f08b4171d614c343b109053 +PT= 044bfd95ee761007e7108ae246d14892a872dd6833613bd3 +TEST= 363 +KEY= bcab9cd8967b0fd38f46a2495841457cf3674c12b53d116e +CT= 044bfd95ee761007e7108ae246d14892a872dd6833613bd3 +PT= f54c60187b67b8a71a3c82c1e0c34a326c5fef0b0444fef8 +TEST= 364 +KEY= 49e7fcc0ed1cb774957a2088b8820f4e9f38a319b179ef96 +CT= f54c60187b67b8a71a3c82c1e0c34a326c5fef0b0444fef8 +PT= a3e0c9707b124d4cb17d4b8b85f3612e940f5f7286f6210a +TEST= 365 +KEY= ea0735b0960efa3824076b033d716e600b37fc6b378fce9c +CT= a3e0c9707b124d4cb17d4b8b85f3612e940f5f7286f6210a +PT= 7f3cda7b8bb41509e5e0f14f215e6dbce795f82d1e01e852 +TEST= 366 +KEY= 953befcb1dbaef31c1e79a4c1c2f03dceca20446298e26ce +CT= 7f3cda7b8bb41509e5e0f14f215e6dbce795f82d1e01e852 +PT= 3306d8d101cf6dfef17828c43b6034245d3a627944bd50fd +TEST= 367 +KEY= a63d371a1c7582cf309fb288274f37f8b198663f6d337633 +CT= 3306d8d101cf6dfef17828c43b6034245d3a627944bd50fd +PT= c52d32fff3859c6c435996ec1081d977932bde7394f0ba9b +TEST= 368 +KEY= 631005e5eff01ea373c6246437ceee8f22b3b84cf9c3cca8 +CT= c52d32fff3859c6c435996ec1081d977932bde7394f0ba9b +PT= 6fadd807c2f13dcdf078bd07c52ccefdd9481398af6c804f +TEST= 369 +KEY= 0cbddde22d01236e83be9963f2e22072fbfbabd456af4ce7 +CT= 6fadd807c2f13dcdf078bd07c52ccefdd9481398af6c804f +PT= a1688f297b8da24788c8482958339b25a71f908671eda42a +TEST= 370 +KEY= add552cb568c81290b76d14aaad1bb575ce43b522742e8cd +CT= a1688f297b8da24788c8482958339b25a71f908671eda42a +PT= 9fd4ec8887af0b9e83b7c7812295fada799a785c5bca1621 +TEST= 371 +KEY= 3201be43d1238ab788c116cb8844418d257e430e7c88feec +CT= 9fd4ec8887af0b9e83b7c7812295fada799a785c5bca1621 +PT= 52e2e42d31a1eca2c56e64d99920483a16165924eb42d849 +TEST= 372 +KEY= 60e35a6ee08266154daf7212116409b733681a2a97ca26a5 +CT= 52e2e42d31a1eca2c56e64d99920483a16165924eb42d849 +PT= b56a6d7f3d11cbd9a02f3a0aef7b5ab5ae9af305b3a92f1a +TEST= 373 +KEY= d5893711dd93adcced804818fe1f53029df2e92f246309bf +CT= b56a6d7f3d11cbd9a02f3a0aef7b5ab5ae9af305b3a92f1a +PT= cf52db1c2ddfbbbea03f6247cff33f326977c29106877267 +TEST= 374 +KEY= 1adbec0df04c16724dbf2a5f31ec6c30f4852bbe22e47bd8 +CT= cf52db1c2ddfbbbea03f6247cff33f326977c29106877267 +PT= cf4015452147e160d3e5e39e65631edabec493b32799cabf +TEST= 375 +KEY= d59bf948d10bf7129e5ac9c1548f72ea4a41b80d057db167 +CT= cf4015452147e160d3e5e39e65631edabec493b32799cabf +PT= b434c32480468db8bf98222da68fb4498465a4de3e550666 +TEST= 376 +KEY= 61af3a6c514d7aaa21c2ebecf200c6a3ce241cd33b28b701 +CT= b434c32480468db8bf98222da68fb4498465a4de3e550666 +PT= 79fb2e5f135f4c49784760b1bcde61cf0ad3c8ecba02f48b +TEST= 377 +KEY= 18541433421236e359858b5d4edea76cc4f7d43f812a438a +CT= 79fb2e5f135f4c49784760b1bcde61cf0ad3c8ecba02f48b +PT= b0daa5d292bc9d4fa8dbd7fef672d6bd72dec8d113a3fbbf +TEST= 378 +KEY= a88eb1e1d0aeabacf15e5ca3b8ac71d1b6291cee9289b835 +CT= b0daa5d292bc9d4fa8dbd7fef672d6bd72dec8d113a3fbbf +PT= d4015a685ed9cc35a2776ddd7ff5fd3e3b6ac8f6c79a121e +TEST= 379 +KEY= 7c8feb898e7767995329317ec7598cef8d43d4185513aa2b +CT= d4015a685ed9cc35a2776ddd7ff5fd3e3b6ac8f6c79a121e +PT= 263893ad2c027e2d983064ddcfc00b5f4cf8ecb6061b3fa9 +TEST= 380 +KEY= 5ab77824a27519b4cb1955a3089987b0c1bb38ae53089582 +CT= 263893ad2c027e2d983064ddcfc00b5f4cf8ecb6061b3fa9 +PT= 7b181bdeec57f0ae6c977f08443775934ad56ce7b5927405 +TEST= 381 +KEY= 21af63fa4e22e91aa78e2aab4caef2238b6e5449e69ae187 +CT= 7b181bdeec57f0ae6c977f08443775934ad56ce7b5927405 +PT= d1f5820858daa098f185453c0e527171b55ba6e87ced28ea +TEST= 382 +KEY= f05ae1f216f84982560b6f9742fc83523e35f2a19a77c96d +CT= d1f5820858daa098f185453c0e527171b55ba6e87ced28ea +PT= 74c6f158c6925cccbdb8dbf98ebd4f9f345af507dab75bc1 +TEST= 383 +KEY= 849c10aad06a154eebb3b46ecc41cccd0a6f07a640c092ac +CT= 74c6f158c6925cccbdb8dbf98ebd4f9f345af507dab75bc1 +PT= 1e4727e68d11c4085507dbe8ce3efcc859c6d45a64646022 +TEST= 384 +KEY= 9adb374c5d7bd146beb46f86027f300553a9d3fc24a4f28e +CT= 1e4727e68d11c4085507dbe8ce3efcc859c6d45a64646022 +PT= 02f006074b514bea37586bfd2d49fb5cb57967b2776f6e7a +TEST= 385 +KEY= 982b314b162a9aac89ec047b2f36cb59e6d0b44e53cb9cf4 +CT= 02f006074b514bea37586bfd2d49fb5cb57967b2776f6e7a +PT= 1b623f07f73fe7b8dd05940df9647f6d8fe68632aa8d7fc9 +TEST= 386 +KEY= 83490e4ce1157d1454e99076d652b4346936327cf946e33d +CT= 1b623f07f73fe7b8dd05940df9647f6d8fe68632aa8d7fc9 +PT= 658bef1cad24b51afafd9381b202f07c4b80c173dee9d13b +TEST= 387 +KEY= e6c2e1504c31c80eae1403f76450444822b6f30f27af3206 +CT= 658bef1cad24b51afafd9381b202f07c4b80c173dee9d13b +PT= 8c3135a19fd38e5f51b568669f8382e22dbd19b9a5256c92 +TEST= 388 +KEY= 6af3d4f1d3e24651ffa16b91fbd3c6aa0f0beab6828a5e94 +CT= 8c3135a19fd38e5f51b568669f8382e22dbd19b9a5256c92 +PT= 21da327b5ae812c04db04367f95985f6a2cbdb22a156b666 +TEST= 389 +KEY= 4b29e68a890a5491b21128f6028a435cadc0319423dce8f2 +CT= 21da327b5ae812c04db04367f95985f6a2cbdb22a156b666 +PT= 745adde8211c5eed2573e3bc6c91af0363f5057fe5e01e30 +TEST= 390 +KEY= 3f733b62a8160a7c9762cb4a6e1bec5fce3534ebc63cf6c2 +CT= 745adde8211c5eed2573e3bc6c91af0363f5057fe5e01e30 +PT= 3948cf69a0fe551d1c38474f906ee2df4fe69fe56280bcdc +TEST= 391 +KEY= 063bf40b08e85f618b5a8c05fe750e8081d3ab0ea4bc4a1e +CT= 3948cf69a0fe551d1c38474f906ee2df4fe69fe56280bcdc +PT= 4eac96897937e154e055952505246b477885a5b80d005400 +TEST= 392 +KEY= 4897628271dfbe356b0f1920fb5165c7f9560eb6a9bc1e1e +CT= 4eac96897937e154e055952505246b477885a5b80d005400 +PT= eab87fba15cfb1391fa5e8ee4d9716f269dd42fb604c62bb +TEST= 393 +KEY= a22f1d3864100f0c74aaf1ceb6c67335908b4c4dc9f07ca5 +CT= eab87fba15cfb1391fa5e8ee4d9716f269dd42fb604c62bb +PT= 012924fc9cc8c083d9679f7ee929706d32acf01a8a8b988f +TEST= 394 +KEY= a30639c4f8d8cf8fadcd6eb05fef0358a227bc57437be42a +CT= 012924fc9cc8c083d9679f7ee929706d32acf01a8a8b988f +PT= 0683b6a27aafa04dff51f8db2f14793dbcbfbc587caec490 +TEST= 395 +KEY= a5858f6682776fc2529c966b70fb7a651e98000f3fd520ba +CT= 0683b6a27aafa04dff51f8db2f14793dbcbfbc587caec490 +PT= d8972245195425c1c7099e0aceb7e837d80718fa746062cf +TEST= 396 +KEY= 7d12ad239b234a0395950861be4c9252c69f18f54bb54275 +CT= d8972245195425c1c7099e0aceb7e837d80718fa746062cf +PT= 2871e77b6c2132c32da56fa38808e6e083900de9a15570a9 +TEST= 397 +KEY= 55634a58f70278c0b83067c2364474b2450f151ceae032dc +CT= 2871e77b6c2132c32da56fa38808e6e083900de9a15570a9 +PT= db8e23b1a3040680725aa6aea48a903f5bb5f3535eb50d0c +TEST= 398 +KEY= 8eed69e954067e40ca6ac16c92cee48d1ebae64fb4553fd0 +CT= db8e23b1a3040680725aa6aea48a903f5bb5f3535eb50d0c +PT= 89d83804f8a64711e844a43ec0327768b6755e5aaabba9b8 +TEST= 399 +KEY= 073551edaca03951222e655252fc93e5a8cfb8151eee9668 +CT= 89d83804f8a64711e844a43ec0327768b6755e5aaabba9b8 +PT= ae5aeb53d3f5de94cb1060b7daf292195ffdbe77e75e822e diff --git a/flint/test/testvals/ecbmd68.txt b/flint/test/testvals/ecbmd68.txt new file mode 100644 index 0000000..e6474c8 --- /dev/null +++ b/flint/test/testvals/ecbmd68.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 000000000000000000000000000000000000000000000000 +PT= e4daf06dfca09ae9221d744b1efb00eca5e9b770b856fae9 +TEST= 1 +KEY= 21fdeb71e15bcd3be4daf06dfca09ae9221d744b1efb00eca5e9b770b856fae9 +CT= e4daf06dfca09ae9221d744b1efb00eca5e9b770b856fae9 +PT= 9a7fa2bdfad7f2e9b7d309be61396d54f31c3ca6863543c8 +TEST= 2 +KEY= c95a461f7590e2d37ea552d00677680095ce7df57fc26db856f58bd63e63b921 +CT= 9a7fa2bdfad7f2e9b7d309be61396d54f31c3ca6863543c8 +PT= 3d945b2aefcdf94b183cd2e39df17db9b76b7ed015f22ef7 +TEST= 3 +KEY= 32944bf82528a0bc433109fae9ba914b8df2af16e2331001e19ef5062b9197d6 +CT= 3d945b2aefcdf94b183cd2e39df17db9b76b7ed015f22ef7 +PT= 857300b8a0639333ffc4299be5d40970138abe08312a2fbb +TEST= 4 +KEY= 6463569c19a69809c642094249d902787236868d07e71971f2144b0e1abbb86d +CT= 857300b8a0639333ffc4299be5d40970138abe08312a2fbb +PT= 67de19a52e68fcd647a70343de71da246bcdec589a5d717c +TEST= 5 +KEY= 607da22c63bc14b7a19c10e767b1feae359185ced996c35599d9a75680e6c911 +CT= 67de19a52e68fcd647a70343de71da246bcdec589a5d717c +PT= aed6dbbeac0590e99a74068f2825696f3334f03d18c31bf0 +TEST= 6 +KEY= d221dc37ab73f3740f4acb59cbb46e47afe58341f1b3aa3aaaed576b9825d2e1 +CT= aed6dbbeac0590e99a74068f2825696f3334f03d18c31bf0 +PT= 6ea5cea9669b080a997883939c8d32e570588b3a5da13441 +TEST= 7 +KEY= 14aa5c6c0f696be761ef05f0ad2f664d369d00d26d3e98dfdab5dc51c584e6a0 +CT= 6ea5cea9669b080a997883939c8d32e570588b3a5da13441 +PT= 90a2b82ebba2522f4ce81bd84e642f0bb902f7b808bb0e13 +TEST= 8 +KEY= 56e48aa15454f41cf14dbdde168d34627a751b0a235ab7d463b72be9cd3fe8b3 +CT= 90a2b82ebba2522f4ce81bd84e642f0bb902f7b808bb0e13 +PT= b03d77295ea22a81ae7aa701f44fef10a4ac8e59b377dedf +TEST= 9 +KEY= 4ab2802a6365da044170caf7482f1ee3d40fbc0bd71558c4c71ba5b07e48366c +CT= b03d77295ea22a81ae7aa701f44fef10a4ac8e59b377dedf +PT= 04c6ed0a3a343bab7310e092af6f28e1874e867d4135a1b2 +TEST= 10 +KEY= 6528ec0b203b8e8e45b627fd721b2548a71f5c99787a7025405523cd3f7d97de +CT= 04c6ed0a3a343bab7310e092af6f28e1874e867d4135a1b2 +PT= 480723048d2d0e4b274ba9b7566cb77880cc250b10158c97 +TEST= 11 +KEY= 712c2bc9bcfbe0560db104f9ff362b038054f52e2e16c75dc09906c62f681b49 +CT= 480723048d2d0e4b274ba9b7566cb77880cc250b10158c97 +PT= cd71f78d194166b5b6c9b05a42268590f4169ef992ffcad0 +TEST= 12 +KEY= d725c638471f3dd5c0c0f374e6774db6369d45746c3042cd348f983fbd97d199 +CT= cd71f78d194166b5b6c9b05a42268590f4169ef992ffcad0 +PT= d862b7c711aff2056b26641e85b6017dd91dc7d2a9ffdb26 +TEST= 13 +KEY= a03a1709a9fb25ab18a244b3f7d8bfb35dbb216ae98643b0ed925fed14680abf +CT= d862b7c711aff2056b26641e85b6017dd91dc7d2a9ffdb26 +PT= d47ad4562c59f1e663357fde0ac018c7c2a16e24fea66f99 +TEST= 14 +KEY= c8c00725cb54bf2dccd890e5db814e553e8e5eb4e3465b772f3331c9eace6526 +CT= d47ad4562c59f1e663357fde0ac018c7c2a16e24fea66f99 +PT= 754b68be88ed420e706b24ae684beaf88f4c2fd19e0e3c86 +TEST= 15 +KEY= 513e8dd35a1905beb993f85b536c0c5b4ee57a1a8b0db18fa07f1e1874c059a0 +CT= 754b68be88ed420e706b24ae684beaf88f4c2fd19e0e3c86 +PT= 7087dcc865d0f1797698534ca88c520094785a86cb8d4ca1 +TEST= 16 +KEY= 62d8f4a6b13808a2c914249336bcfd22387d29562381e38f3407449ebf4d1501 +CT= 7087dcc865d0f1797698534ca88c520094785a86cb8d4ca1 +PT= dfedc014dc72671423f91adca127de0ba0bbe0d43c12c2a2 +TEST= 17 +KEY= ce7b27adfb1c0c0116f9e487eace9a361b84338a82a63d8494bca44a835fd7a3 +CT= dfedc014dc72671423f91adca127de0ba0bbe0d43c12c2a2 +PT= 54f460c19576912cb31d41966a8f71bcd60ef8bb562e4820 +TEST= 18 +KEY= 977957c45f02b0fd420d84467fb80b1aa899721ce8294c3842b25cf1d5719f83 +CT= 54f460c19576912cb31d41966a8f71bcd60ef8bb562e4820 +PT= 1863add9db7b20095b0e8499b04f7944e04fd2d2e8ccd073 +TEST= 19 +KEY= 388767d6815c2adb5a6e299fa4c32b13f397f6855866357ca2fd8e233dbd4ff0 +CT= 1863add9db7b20095b0e8499b04f7944e04fd2d2e8ccd073 +PT= 0ef81e4f26d1e10be5d6ed1b2236cb6fa2d038d62ae2fc75 +TEST= 20 +KEY= 51e6d2e65255dc41549637d08212ca1816411b9e7a50fe13002db6f5175fb385 +CT= 0ef81e4f26d1e10be5d6ed1b2236cb6fa2d038d62ae2fc75 +PT= a891444926210509217fa4bbc522603e3d021673d5665a8a +TEST= 21 +KEY= a6ca531bc0d0c5defc077399a433cf11373ebf25bf729e2d3d2fa086c239e90f +CT= a891444926210509217fa4bbc522603e3d021673d5665a8a +PT= 20f577feb3ad531ce7ef6b88dfa8c6048c3e4d291f5b7a4b +TEST= 22 +KEY= 9b16752076fc99bbdcf20467179e9c0dd0d1d4ad60da5829b111edafdd629344 +CT= 20f577feb3ad531ce7ef6b88dfa8c6048c3e4d291f5b7a4b +PT= 91328541c986d1fabb0552130f1a58d53ce1a780154b32ed +TEST= 23 +KEY= 71e7fdade01c8c8d4dc08126de184df76bd486be6fc000fc8df04a2fc829a1a9 +CT= 91328541c986d1fabb0552130f1a58d53ce1a780154b32ed +PT= 6f6cf525b132a61bc4edeea38a7e74d3681341647606539d +TEST= 24 +KEY= b3e6130e1f225e5022ac74036f2aebecaf39681de5be742fe5e30b4bbe2ff234 +CT= 6f6cf525b132a61bc4edeea38a7e74d3681341647606539d +PT= f8c6547b7774eee022cac3982319947d32665e56e8d0f6a2 +TEST= 25 +KEY= a31060f0885a852ada6a2078185e050c8df3ab85c6a7e052d785551d56ff0496 +CT= f8c6547b7774eee022cac3982319947d32665e56e8d0f6a2 +PT= 22a9e864b6878fb001c45fa1330b2a6ea6dfde8fd730e72f +TEST= 26 +KEY= 764f3df4b7151b7ef8c3c81caed98abc8c37f424f5acca3c715a8b9281cfe3b9 +CT= 22a9e864b6878fb001c45fa1330b2a6ea6dfde8fd730e72f +PT= 0eb1a28feb4537a9cbe28e065e67e2673f1412527da3aba0 +TEST= 27 +KEY= 43b5f1129d1f0d00f6726a93459cbd1547d57a22abcb285b4e4e99c0fc6c4819 +CT= 0eb1a28feb4537a9cbe28e065e67e2673f1412527da3aba0 +PT= 16ef264ec0d2f7f81888b944136f0ec56f03c64c26617b4c +TEST= 28 +KEY= 595d9eb78322fe0ee09d4cdd854e4aed5f5dc366b8a4269e214d5f8cda0d3355 +CT= 16ef264ec0d2f7f81888b944136f0ec56f03c64c26617b4c +PT= cbb312ddcd16fd15e220f2058c5cbabfea7e7e34991d3151 +TEST= 29 +KEY= 725b0de2985b2a4f2b2e5e004858b7f8bd7d316334f89c21cb3321b843100204 +CT= cbb312ddcd16fd15e220f2058c5cbabfea7e7e34991d3151 +PT= 36cc007c9046217f34d7b31280a367a2fedbd204afca096c +TEST= 30 +KEY= ec3c37ddd4b041091de25e7cd81e968789aa8271b45bfb8335e8f3bcecda0b68 +CT= 36cc007c9046217f34d7b31280a367a2fedbd204afca096c +PT= 4421a52cc79f37c9d1a4b2989954d239628a90dcf2182f81 +TEST= 31 +KEY= 75bc311a28f06d3259c3fb501f81a14e580e30e92d0f29ba576263601ec224e9 +CT= 4421a52cc79f37c9d1a4b2989954d239628a90dcf2182f81 +PT= e2e8af2350ae8d8ad35df40fa0066b8a217aab117d873014 +TEST= 32 +KEY= fc30a7d122d0d296bb2b54734f2f2cc48b53c4e68d0942307618c871634514fd +CT= e2e8af2350ae8d8ad35df40fa0066b8a217aab117d873014 +PT= f8f7069cd22a6e36eb90143cabd29b909d3ffe743ffe4391 +TEST= 33 +KEY= 91c738db5a5defa843dc52ef9d0542f260c3d0da26dbd9a0eb2736055cbb576c +CT= f8f7069cd22a6e36eb90143cabd29b909d3ffe743ffe4391 +PT= 24322f90d344065bef8392a55a275a79b81855dc2d51bd7f +TEST= 34 +KEY= 2d99c1d306e9c1ab67ee7d7f4e4144a98f40427f7cfc83d9533f63d971eaea13 +CT= 24322f90d344065bef8392a55a275a79b81855dc2d51bd7f +PT= 2ef0ccffa676ef3d6b98a9c3cf744cf48f134ce994377815 +TEST= 35 +KEY= 14a62af36dc1c0d8491eb180e837ab94e4d8ebbcb388cf2ddc2c2f30e5dd9206 +CT= 2ef0ccffa676ef3d6b98a9c3cf744cf48f134ce994377815 +PT= 68cf742225944b29e8f2b4b4f31715ec315a2aa93dc0eda3 +TEST= 36 +KEY= 421f51eaf7b2739e21d1c5a2cda3e0bd0c2a5f08409fdac1ed760599d81d7fa5 +CT= 68cf742225944b29e8f2b4b4f31715ec315a2aa93dc0eda3 +PT= 51c5346f1425ce7f8053240ae47d67f8c76b734c54b9b057 +TEST= 37 +KEY= 6de75d928a699bea7014f1cdd9862ec28c797b02a4e2bd392a1d76d58ca4cff2 +CT= 51c5346f1425ce7f8053240ae47d67f8c76b734c54b9b057 +PT= 23aaad124249ab0141471d19eb18b5669f712c47bbb0f1d1 +TEST= 38 +KEY= 3330aed75a78f2bc53be5cdf9bcf85c3cd3e661b4ffa085fb56c5a9237143e23 +CT= 23aaad124249ab0141471d19eb18b5669f712c47bbb0f1d1 +PT= 64e4b24189f88713fbf3e6d7f836aa019ead44690a4cd640 +TEST= 39 +KEY= 2a533e7da7505d60375aee9e123702d036cd80ccb7cca25e2bc11efb3d58e863 +CT= 64e4b24189f88713fbf3e6d7f836aa019ead44690a4cd640 +PT= f704b66c7e353e90ce618316624ec0ff459d4cdcd16b8bbb +TEST= 40 +KEY= 1ae37de05d047412c05e58f26c023c40f8ac03dad58262a16e5c5227ec3363d8 +CT= f704b66c7e353e90ce618316624ec0ff459d4cdcd16b8bbb +PT= 40cc9e089b0a1eca515241536542e0d61beeeb0b88f266f9 +TEST= 41 +KEY= 5eac23a3681c85628092c6faf708228aa9fe4289b0c0827775b2b92c64c10521 +CT= 40cc9e089b0a1eca515241536542e0d61beeeb0b88f266f9 +PT= 9a227da2717beae1675cca43711ec1daaee0dd8969464903 +TEST= 42 +KEY= e72e2abacd17a42f1ab0bb588673c86bcea288cac1de43addb5264a50d874c22 +CT= 9a227da2717beae1675cca43711ec1daaee0dd8969464903 +PT= 54e7fd4ba4cfd4ab2d1978edc686057e697f9ac6eb3c3e3f +TEST= 43 +KEY= 30af9ee13ece5a874e57461322bc1cc0e3bbf027075846d3b22dfe63e6bb721d +CT= 54e7fd4ba4cfd4ab2d1978edc686057e697f9ac6eb3c3e3f +PT= c8b9831ccdd1c6aca8870261eeab5ab2dc1d2b942123f688 +TEST= 44 +KEY= 6852e8eaceab337386eec50fef6dda6c4b3cf246e9f31c616e30d5f7c7988495 +CT= c8b9831ccdd1c6aca8870261eeab5ab2dc1d2b942123f688 +PT= 6fbc53aa8b386d9a1c8a9f15f8dee8114525e5bac6c7b8ca +TEST= 45 +KEY= 3996b3d75ecfa103e95296a56455b7f657b66d53112df4702b15304d015f3c5f +CT= 6fbc53aa8b386d9a1c8a9f15f8dee8114525e5bac6c7b8ca +PT= 1d183d03f47b768000fd43d72c35f967e6c5399f16c42c0d +TEST= 46 +KEY= a58e5b4f3d56a68df44aaba6902ec176574b2e843d180d17cdd009d2179b1052 +CT= 1d183d03f47b768000fd43d72c35f967e6c5399f16c42c0d +PT= 97650e7a6f847f0310079be4ebd7332f6b8a45f27100f566 +TEST= 47 +KEY= d451bcc9aecb6ed6632fa5dcffaabe75474cb560d6cf3e38a65a4c20669be534 +CT= 97650e7a6f847f0310079be4ebd7332f6b8a45f27100f566 +PT= 6abf575eeb2ae15e4d19e1f0a00c46f266286191e3db933c +TEST= 48 +KEY= 96e816673609c0460990f28214805f2b0a55549076c378cac0722db185407608 +CT= 6abf575eeb2ae15e4d19e1f0a00c46f266286191e3db933c +PT= 85547b2bf85a81e409db5769dfb0f2b448b6d4f5de029e0d +TEST= 49 +KEY= 30dce5c511c78ee78cc489a9ecdadecf038e03f9a9738a7e88c4f9445b42e805 +CT= 85547b2bf85a81e409db5769dfb0f2b448b6d4f5de029e0d +PT= 2c2178db129c86c4756eea6a0fded30fd8f1511414e3e34d +TEST= 50 +KEY= 220b4f2e07243405a0e5f172fe46580b76e0e993a6ad59715035a8504fa10b48 +CT= 2c2178db129c86c4756eea6a0fded30fd8f1511414e3e34d +PT= 490cb98278a25d94e6c4a1191b416f65080624c3a704cb9d +TEST= 51 +KEY= da25ed03f30a90abe9e948f086e4059f9024488abdec361458338c93e8a5c0d5 +CT= 490cb98278a25d94e6c4a1191b416f65080624c3a704cb9d +PT= d1d23c611e6a8149cb4962dad275df070b2e064cef8c4e78 +TEST= 52 +KEY= c223afce35e1c7ac383b7491988e84d65b6d2a506f99e913531d8adf07298ead +CT= d1d23c611e6a8149cb4962dad275df070b2e064cef8c4e78 +PT= 25cfaa56298cf9985036d3624d86c741606567e624d81a20 +TEST= 53 +KEY= defff0df8b46ee7c1df4dec7b1027d4e0b5bf932221f2e523378ed3923f1948d +CT= 25cfaa56298cf9985036d3624d86c741606567e624d81a20 +PT= 41b4e38cb09eeffb9c661f8d385585d28f64dc3c61175553 +TEST= 54 +KEY= d4eae12bcadbd0f85c403d4b019c92b5973de6bf1a4aab80bc1c310542e6c1de +CT= 41b4e38cb09eeffb9c661f8d385585d28f64dc3c61175553 +PT= 0345f7d1e882b1dbbcdeaac4d9844bab2433753e6eca0431 +TEST= 55 +KEY= 783bf997d9e55d355f05ca9ae91e236e2be34c7bc3cee02b982f443b2c2cc5ef +CT= 0345f7d1e882b1dbbcdeaac4d9844bab2433753e6eca0431 +PT= e90ea6c6c563960d1721d701e72baa1e6561f2b0183f6feb +TEST= 56 +KEY= b609c499da0e4d08b60b6c5c2c7db5633cc29b7a24e54a35fd4eb68b3413aa04 +CT= e90ea6c6c563960d1721d701e72baa1e6561f2b0183f6feb +PT= dfcfc34287d8905766da99e48a9f114949274134f71863eb +TEST= 57 +KEY= 8b3042a2fda6a36469c4af1eaba525345a18029eae7a5b7cb469f7bfc30bc9ef +CT= dfcfc34287d8905766da99e48a9f114949274134f71863eb +PT= 7fe0f896fcc8494416d590b68c89b847bbdabc518003f95d +TEST= 58 +KEY= 247f6978e6da443016245788576d6c704ccd922822f3e33b0fb34bee430830b2 +CT= 7fe0f896fcc8494416d590b68c89b847bbdabc518003f95d +PT= 2895e225c04bf5e48f49459e4f44a060c28d25dbb83f3d7b +TEST= 59 +KEY= 140df9fac76f58643eb1b5ad97269994c384d7b66db7435bcd3e6e35fb370dc9 +CT= 2895e225c04bf5e48f49459e4f44a060c28d25dbb83f3d7b +PT= 791293f82267ba28cda710b4c26002cf9c248eae1c68137a +TEST= 60 +KEY= deb3a71c2d2b32f247a32655b54123bc0e23c702afd74194511ae09be75f1eb3 +CT= 791293f82267ba28cda710b4c26002cf9c248eae1c68137a +PT= da46f4e0e15cef13021c8dc777be1a788dd420928cc56ebf +TEST= 61 +KEY= fcbd980559ce4a819de5d2b5541dccaf0c3f4ac5d8695becdccec0096b9a700c +CT= da46f4e0e15cef13021c8dc777be1a788dd420928cc56ebf +PT= 08a85bd7b8ace0b96bbb6fbef641a33fea80135dba94704e +TEST= 62 +KEY= 8c6503ad0980bd8e954d8962ecb12c166784257b2e28f8d3364ed354d10e0042 +CT= 08a85bd7b8ace0b96bbb6fbef641a33fea80135dba94704e +PT= acf6c81ed74e035153a08f622f1dc82bc27b391acdca4c26 +TEST= 63 +KEY= eccc752f928418eb39bb417c3bff2f473424aa19013530f8f435ea4e1cc44c64 +CT= acf6c81ed74e035153a08f622f1dc82bc27b391acdca4c26 +PT= ea2f020a70d41758c73fabee0c8caea34c7b5b6f9ed22801 +TEST= 64 +KEY= cb1ef0f70214c3ebd39443764b2b381ff31b01f70db99e5bb84eb12182166465 +CT= ea2f020a70d41758c73fabee0c8caea34c7b5b6f9ed22801 +PT= 3d94554ed5c4d00a9ef9104331087d91d4a28095e039c24b +TEST= 65 +KEY= 5c4e839eec66675bee0016389eefe8156de211b43cb1e3ca6cec31b4622fa62e +CT= 3d94554ed5c4d00a9ef9104331087d91d4a28095e039c24b +PT= 2310c983f1afb2bd04fc362f0ca4ac16f9886f43a48ef122 +TEST= 66 +KEY= 2fc1738818826de6cd10dfbb6f405aa8691e279b30154fdc95645ef7c6a1570c +CT= 2310c983f1afb2bd04fc362f0ca4ac16f9886f43a48ef122 +PT= 16204cf96ae2e9c118550b53385371a7af61ce7261560862 +TEST= 67 +KEY= 470bda77aab29775db30934205a2b369714b2cc808463e7b3a059085a7f75f6e +CT= 16204cf96ae2e9c118550b53385371a7af61ce7261560862 +PT= e3f09aca77bf3f9ee1e222c19d2a84b824b4b556f0a60a50 +TEST= 68 +KEY= 667db40e9ea82e6538c00988721d8cf790a90e09956cbac31eb125d35751553e +CT= e3f09aca77bf3f9ee1e222c19d2a84b824b4b556f0a60a50 +PT= 4bf72eba42b369008260362a2d9f6af58e6494d0e7cb680f +TEST= 69 +KEY= 020181b067b1f38a7337273230aee5f712c93823b8f3d03690d5b103b09a3d31 +CT= 4bf72eba42b369008260362a2d9f6af58e6494d0e7cb680f +PT= ae8773fd25bdeeb7a03fe8e05b25b5a075e861a035c4e8d7 +TEST= 70 +KEY= 383ba40c42fe68d7ddb054cf15130b40b2f6d0c3e3d66596e53dd0a3855ed5e6 +CT= ae8773fd25bdeeb7a03fe8e05b25b5a075e861a035c4e8d7 +PT= 6aa4181bd76483f234e1bb0f2aae0a561750279bbf44db91 +TEST= 71 +KEY= 9ec1ada1a8317c81b7144cd4c27788b286176bccc9786fc0f26df7383a1a0e77 +CT= 6aa4181bd76483f234e1bb0f2aae0a561750279bbf44db91 +PT= 7e7106e82eb8c87bddf0b19b6abacb403536640caf5d9f06 +TEST= 72 +KEY= ac31bee8f9b86a01c9654a3ceccf40c95be7da57a3c2a480c75b933495479171 +CT= 7e7106e82eb8c87bddf0b19b6abacb403536640caf5d9f06 +PT= 7051cec51a5d73b67d0fe48563290519502d759f248a48d4 +TEST= 73 +KEY= e105fe4082a0ae43b93484f9f692337f26e83ed2c0eba1999776e6abb1cdd9a5 +CT= 7051cec51a5d73b67d0fe48563290519502d759f248a48d4 +PT= 2a136a04a4bf64b41850c19e229a50d6da45c69403344b2a +TEST= 74 +KEY= 7b2b6e99752fcba29327eefd522d57cb3eb8ff4ce271f14f4d33203fb2f9928f +CT= 2a136a04a4bf64b41850c19e229a50d6da45c69403344b2a +PT= 482bd854bd0c6f720659f82db8213d60c1602d9839a187f4 +TEST= 75 +KEY= ea0d4d621feb0d90db0c36a9ef2138b938e107615a50cc2f8c530da78b58157b +CT= 482bd854bd0c6f720659f82db8213d60c1602d9839a187f4 +PT= 12c5faae188f2f7c543adf76a7ce34146d79c1b50b49649e +TEST= 76 +KEY= 38b7c7c67bf157bac9c9cc07f7ae17c56cdbd817fd9ef83be12acc12801171e5 +CT= 12c5faae188f2f7c543adf76a7ce34146d79c1b50b49649e +PT= 49d4d19123aa974265951d4dc8afad1a46b8f3606a6b9cb4 +TEST= 77 +KEY= 7aa0e3d935d67bed801d1d96d4048087094ec55a35315521a7923f72ea7aed51 +CT= 49d4d19123aa974265951d4dc8afad1a46b8f3606a6b9cb4 +PT= 9b36fe4abc0a864ea16bedf61dea6a3d7a5130ea7ecc015e +TEST= 78 +KEY= 6da9c4d9bbda95a21b2be3dc680e06c9a82528ac28db3f1cddc30f9894b6ec0f +CT= 9b36fe4abc0a864ea16bedf61dea6a3d7a5130ea7ecc015e +PT= b32d4c7dc1815b51d5b92992393184a08ce4bd1a2294b149 +TEST= 79 +KEY= 15880adaaa3f3c4aa806afa1a98f5d987d9c013e11eabbbc5127b282b6225d46 +CT= b32d4c7dc1815b51d5b92992393184a08ce4bd1a2294b149 +PT= ba80588f6031bcc895a0645bbcad5d4f603ff6b8942788ec +TEST= 80 +KEY= bdd9863c8a1f0a0e1286f72ec9bee150e83c6565ad47e6f33118443a2205d5aa +CT= ba80588f6031bcc895a0645bbcad5d4f603ff6b8942788ec +PT= 7b14b492455211f0acb8a717993f06a96ce27d2990d78bf4 +TEST= 81 +KEY= 3e7e5458e16dd534699243bc8cecf0a04484c2723478e05a5dfa3913b2d25e5e +CT= 7b14b492455211f0acb8a717993f06a96ce27d2990d78bf4 +PT= 082678ad2e2ac37a1648a1c695647c9a61e175f45451498f +TEST= 82 +KEY= c671f8e1c7ed701e61b43b11a2c633da52cc63b4a11c9cc03c1b4ce7e68317d1 +CT= 082678ad2e2ac37a1648a1c695647c9a61e175f45451498f +PT= 6f7fd179c404820465eeb7ebe816d28929152a0a03843ede +TEST= 83 +KEY= 17aea1b19866a2de0ecbea6866c2b1de3722d45f490a4e49150e66ede507290f +CT= 6f7fd179c404820465eeb7ebe816d28929152a0a03843ede +PT= 1af26c94d3bcc74c79ab6af5b71df939dc8ade2294dc8c0f +TEST= 84 +KEY= 31025561cb26ce8e143986fcb57e76924e89beaafe17b770c984b8cf71dba500 +CT= 1af26c94d3bcc74c79ab6af5b71df939dc8ade2294dc8c0f +PT= eec055fabc57e69a4855d352494524e4060f7f2b8f50cd33 +TEST= 85 +KEY= 4cb4c52bf973abedfaf9d3060929900806dc6df8b7529394cf8bc7e4fe8b6833 +CT= eec055fabc57e69a4855d352494524e4060f7f2b8f50cd33 +PT= a6f21741efbfe9ef482c68a1f8455b5f358dbf8e77cea331 +TEST= 86 +KEY= 277352d4b54b39d75c0bc447e69679e74ef005594f17c8cbfa06786a8945cb02 +CT= a6f21741efbfe9ef482c68a1f8455b5f358dbf8e77cea331 +PT= f9e2bdbddab0a81f92f372835399025af3dbacfd0e79a3be +TEST= 87 +KEY= bee70657346c1e65a5e979fa3c26d1f8dc0377da1c8eca9109ddd497873c68bc +CT= f9e2bdbddab0a81f92f372835399025af3dbacfd0e79a3be +PT= 51ac0d5357d5a02db502ea7190fa6f91f21828967a696572 +TEST= 88 +KEY= 2e3879af9c7c98c6f44574a96bf371d569019dab8c74a500fbc5fc01fd550dce +CT= 51ac0d5357d5a02db502ea7190fa6f91f21828967a696572 +PT= 2db76637e2778a8b874703dff2f2a4e84fa61dbd86411792 +TEST= 89 +KEY= 79de908cff852ef5d9f2129e8984fb5eee469e747e8601e8b463e1bc7b141a5c +CT= 2db76637e2778a8b874703dff2f2a4e84fa61dbd86411792 +PT= ecf0aa45e748adb77d5a30ea926d0803cf4b9ed85157f390 +TEST= 90 +KEY= 5c7952218deabdd93502b8db6ecc56e9931cae9eeceb09eb7b287f642a43e9cc +CT= ecf0aa45e748adb77d5a30ea926d0803cf4b9ed85157f390 +PT= 40377ecf71735e17f58da2f66c554dd4f007ff5b011a1155 +TEST= 91 +KEY= 5bc3d3b1d106c4287535c6141fbf08fe66910c6880be443f8b2f803f2b59f899 +CT= 40377ecf71735e17f58da2f66c554dd4f007ff5b011a1155 +PT= 1a7d86b780765a06ea45d2413a1e38798186f055db6c4046 +TEST= 92 +KEY= e4b0fce577d293da6f4840a39fc952f88cd4de29baa07c460aa9706af035b8df +CT= 1a7d86b780765a06ea45d2413a1e38798186f055db6c4046 +PT= e40c87ffeb3bdb1d4b5267cecc9c39ba69aae833e67228c4 +TEST= 93 +KEY= ee600454c59c7fac8b44c75c74f289e5c786b9e7763c45fc630398591647901b +CT= e40c87ffeb3bdb1d4b5267cecc9c39ba69aae833e67228c4 +PT= 8625122f6de6eebda7fbc8a73610912e8dc650de3bf8cf6f +TEST= 94 +KEY= f84103860e0b303d0d61d57319146758607d7140402cd4d2eec5c8872dbf5f74 +CT= 8625122f6de6eebda7fbc8a73610912e8dc650de3bf8cf6f +PT= 687a67068bb52e8cb3d93048c3624a333577c9beede711bd +TEST= 95 +KEY= a814bccd7678058c651bb27592a149d4d3a44108834e9ee1dbb20139c0584ec9 +CT= 687a67068bb52e8cb3d93048c3624a333577c9beede711bd +PT= 88c2c77f2d9d51d79ce7b2bb2c3f4211676edcd0dac8c8c2 +TEST= 96 +KEY= ceb37fdeb9818f18edd9750abf3c18034f43f3b3af71dcf0bcdcdde91a90860b +CT= 88c2c77f2d9d51d79ce7b2bb2c3f4211676edcd0dac8c8c2 +PT= 820a1f443032b742c20d061b2afd697bdab7a3b5b63077ea +TEST= 97 +KEY= b154fefc1822b1d86fd36a4e8f0eaf418d4ef5a8858cb58b666b7e5caca0f1e1 +CT= 820a1f443032b742c20d061b2afd697bdab7a3b5b63077ea +PT= 9f04438d8a97254472843e00ac7fda9743f73369544f8231 +TEST= 98 +KEY= da563d1ae5bb4ac0f0d729c305998a05ffcacba829f36f1c259c4d35f8ef73d0 +CT= 9f04438d8a97254472843e00ac7fda9743f73369544f8231 +PT= 182145ea39731d07522891c6a0104c1caddf067758d7e45e +TEST= 99 +KEY= 621c042a3e8d204de8f66c293cea9702ade25a6e89e3230088434b42a038978e +CT= 182145ea39731d07522891c6a0104c1caddf067758d7e45e +PT= 1bb3b0ae49bd804ed2444ff3441345ef91e1cf012636a9f9 +TEST= 100 +KEY= 610d40c98362d825f345dc877557174c7fa6159dcdf066ef19a28443860e3e77 +CT= 1bb3b0ae49bd804ed2444ff3441345ef91e1cf012636a9f9 +PT= 02673c4740c448e3bd26e9369a904843cdc66f11c5657191 +TEST= 101 +KEY= 35fd92dd550cbdc0f122e0c035935fafc280fcab57602eacd464eb52436b4fe6 +CT= 02673c4740c448e3bd26e9369a904843cdc66f11c5657191 +PT= 92dd12714831a91f6443159aa47ffd619d56f3d632e54ef0 +TEST= 102 +KEY= 621b917a4cb354a263fff2b17da2f6b0a6c3e931f31fd3cd49321884718e0116 +CT= 92dd12714831a91f6443159aa47ffd619d56f3d632e54ef0 +PT= 5e13f4771de769a17d5664c2cc265d3a41a5cc8a81f05e31 +TEST= 103 +KEY= 432999cbfc4465313dec06c660459f11db958df33f398ef70897d40ef07e5f27 +CT= 5e13f4771de769a17d5664c2cc265d3a41a5cc8a81f05e31 +PT= dcdb47ef303adffd0e04aef9c1581c20e3ef31ac2875a915 +TEST= 104 +KEY= d347a167ecf75961e1374129507f40ecd591230afe6192d7eb78e5a2d80bf632 +CT= dcdb47ef303adffd0e04aef9c1581c20e3ef31ac2875a915 +PT= 1117ee4adc54ab6ed7413cdc4fbad17267641588acd5fdb1 +TEST= 105 +KEY= e6650f50077138e0f020af638c2beb8202d01fd6b1db43a58c1cf02a74de0b83 +CT= 1117ee4adc54ab6ed7413cdc4fbad17267641588acd5fdb1 +PT= 05c8d8513759af9423fbac1041febb58ecb1abac5dfa5c59 +TEST= 106 +KEY= 42a7dc77099d84bbf5e87732bb724416212bb3c6f025f8fd60ad5b86292457da +CT= 05c8d8513759af9423fbac1041febb58ecb1abac5dfa5c59 +PT= ef629b45f71d1af9ce15e438db2899cd7220b3e7de4254ba +TEST= 107 +KEY= 776322ee76d7df1b1a8aec774c6f5eefef3e57fe2b0d6130128de861f7660360 +CT= ef629b45f71d1af9ce15e438db2899cd7220b3e7de4254ba +PT= 5ae8503151d6feabd7fd0cfd21f12d46e92df4ed6858ac46 +TEST= 108 +KEY= 0d7acd11a00c28dd4062bc461db9a04438c35b030afc4c76fba01c8c9f3eaf26 +CT= 5ae8503151d6feabd7fd0cfd21f12d46e92df4ed6858ac46 +PT= e65daa5724010cf6fe677122cf3f728de5cd9d7e21ad2985 +TEST= 109 +KEY= 69ae1b52dae4bfd2a63f161139b8acb2c6a42a21c5c33efb1e6d81f2be9386a3 +CT= e65daa5724010cf6fe677122cf3f728de5cd9d7e21ad2985 +PT= 942b17bb583a1f8d6c0bfd340292c6bf30652803c818f78d +TEST= 110 +KEY= 054c7ad26492ed31321401aa6182b33faaafd715c751f8442e08a9f1768b712e +CT= 942b17bb583a1f8d6c0bfd340292c6bf30652803c818f78d +PT= 955f44bbef944b98305b1b60b2354cf40bad7f5e7a1b9360 +TEST= 111 +KEY= 20f53a93b3374d15a74b45118e16f8a79af4cc757564b4b025a5d6af0c90e24e +CT= 955f44bbef944b98305b1b60b2354cf40bad7f5e7a1b9360 +PT= 6475c90fb016c203db4cf32f66ff691a9a618abd060faa41 +TEST= 112 +KEY= a00d751e2a23ad47c33e8c1e3e003aa441b83f5a139bddaabfc45c120a9f480f +CT= 6475c90fb016c203db4cf32f66ff691a9a618abd060faa41 +PT= a6ab33f9a3bde4aa8f7a650f15af90693aa76cccda821fb8 +TEST= 113 +KEY= 036df48196401d3a6595bfe79dbdde0ecec25a5506344dc3856330ded01d57b7 +CT= a6ab33f9a3bde4aa8f7a650f15af90693aa76cccda821fb8 +PT= 0d8e224857b937942967339793d656a0989c43e751fcf3ae +TEST= 114 +KEY= 69521f03857b5f03681b9dafca04e99ae7a569c295e21b631dff733981e1a419 +CT= 0d8e224857b937942967339793d656a0989c43e751fcf3ae +PT= c6fa13fa479d1a990c03b7e43f3a0212ba15383525aed153 +TEST= 115 +KEY= 3ddd60bf7246569aaee18e558d99f303eba6de26aad81971a7ea4b0ca44f754a +CT= c6fa13fa479d1a990c03b7e43f3a0212ba15383525aed153 +PT= b9382959c11aa53e76536ac370e774da0f3e59a9618f9750 +TEST= 116 +KEY= a29d5c4eada6c82117d9a70c4c83563d9df5b4e5da3f6daba8d412a5c5c0e21a +CT= b9382959c11aa53e76536ac370e774da0f3e59a9618f9750 +PT= 432a1ac30ce634b398be56ce3d027de1c083a0c4b067c6af +TEST= 117 +KEY= bf9657b7d044b41554f3bdcf4065628e054be22be73d104a6857b26175a724b5 +CT= 432a1ac30ce634b398be56ce3d027de1c083a0c4b067c6af +PT= 8ff40e8abf28682ba5c198b64471f260b627027ce97c242a +TEST= 118 +KEY= 2d6d850ea86c68e1db07b345ff4d0aa5a08a7a9da34ce22ade70b01d9cdb009f +CT= 8ff40e8abf28682ba5c198b64471f260b627027ce97c242a +PT= b7e4fb03baf51846028f99c6ae4fd9ce704dc794914cab19 +TEST= 119 +KEY= 3d3636f700de83f16ce3484645b812e3a205e35b0d033be4ae3d77890d97ab86 +CT= b7e4fb03baf51846028f99c6ae4fd9ce704dc794914cab19 +PT= 782ef7f695444fc0fc10689d2780d832201d0afa491a867f +TEST= 120 +KEY= 3c77f804ce5d4b6914cdbfb0d0fc5d235e158bc62a83e3d68e207d73448d2df9 +CT= 782ef7f695444fc0fc10689d2780d832201d0afa491a867f +PT= 454949f03f4ec3ab5e82f79c6694b866d8fcd8303c1861e4 +TEST= 121 +KEY= 07ed717ef3976c8e5184f640efb29e8800977c5a4c175bb056dca54378954c1d +CT= 454949f03f4ec3ab5e82f79c6694b866d8fcd8303c1861e4 +PT= 3ed3c9a050215d29703587d8cde33ddd654373acac3da85b +TEST= 122 +KEY= 606fa7f1fdef500d6f573fe0bf93c3a170a2fb8281f4666d339fd6efd4a8e446 +CT= 3ed3c9a050215d29703587d8cde33ddd654373acac3da85b +PT= 8db36587495762dcff30693b5b6b9635733b9bea7ef5abfc +TEST= 123 +KEY= 986d22339fed083be2e45a67f6c4a17d8f9292b9da9ff05840a44d05aa5d4fba +CT= 8db36587495762dcff30693b5b6b9635733b9bea7ef5abfc +PT= a1e9664e2c93923c44a4514b87fb9a2ed8a5a1ef427142c5 +TEST= 124 +KEY= 458414fc3c531cf9430d3c29da573341cb36c3f25d646a769801eceae82c0d7f +CT= a1e9664e2c93923c44a4514b87fb9a2ed8a5a1ef427142c5 +PT= bf0aae7b620946db04624819ba83098f6df0b1c13ba087d5 +TEST= 125 +KEY= 164b00db6629f784fc079252b85e759acf548bebe7e763f9f5f15d2bd38c8aaa +CT= bf0aae7b620946db04624819ba83098f6df0b1c13ba087d5 +PT= 4f8c1060296ec4f61ad755962c56a945410152d704d9c8b5 +TEST= 126 +KEY= 1723d46d0373ba58b38b82329130b16cd583de7dcbb1cabcb4f00ffcd755421f +CT= 4f8c1060296ec4f61ad755962c56a945410152d704d9c8b5 +PT= 647291c343b9f3e7a5ff6e11a4c2f18be127a055518928b6 +TEST= 127 +KEY= b46f3dbba5fe86e5d7f913f1d289428b707cb06c6f733b3755d7afa986dc6aa9 +CT= 647291c343b9f3e7a5ff6e11a4c2f18be127a055518928b6 +PT= efa9bfe0166d7ff09ae0ed5571ffb5332cda33da7f9cabbd +TEST= 128 +KEY= 45fe80a4c8c2e5ee3850ac11c4e43d7bea9c5d391e8c8e04790d9c73f940c114 +CT= efa9bfe0166d7ff09ae0ed5571ffb5332cda33da7f9cabbd +PT= 955184224eb2bee968d4de33689c095252a56115d5422ade +TEST= 129 +KEY= 04c926f4f6e6f037ad0128338a5683928248830a761087562ba8fd662c02ebca +CT= 955184224eb2bee968d4de33689c095252a56115d5422ade +PT= dd78342e7d62ef5917e2e650a1019a9b4cca48ec51f67dde +TEST= 130 +KEY= 9b13be8c54e10c9170791c1df7346ccb95aa655ad7111dcd6762b58a7df49614 +CT= dd78342e7d62ef5917e2e650a1019a9b4cca48ec51f67dde +PT= 721ce136e8df3173de357589a2cf3e73d598f32c9c30f733 +TEST= 131 +KEY= d599db7687ad98620265fd2b1feb5db84b9f10d375de23beb2fa46a6e1c46127 +CT= 721ce136e8df3173de357589a2cf3e73d598f32c9c30f733 +PT= b5f4fc2512578f3adbbfeb97e68d61338056ab5fcfc7a7c9 +TEST= 132 +KEY= cb2be9dd6e9ce147b791010e0dbcd2829020fb449353428d32acedf92e03c6ee +CT= b5f4fc2512578f3adbbfeb97e68d61338056ab5fcfc7a7c9 +PT= d9cfc2a6168b555f285c98d1f9c91c9c131f5067be5ded67 +TEST= 133 +KEY= ad5c4b0f663c091e6e5ec3a81b3787ddb87c63956a9a5e1121b3bd9e905e2b89 +CT= d9cfc2a6168b555f285c98d1f9c91c9c131f5067be5ded67 +PT= c4faf84061689c317f652736d645164f53fe69f113fb61f1 +TEST= 134 +KEY= 37b5ebb902db2ba8aaa43be87a5f1becc71944a3bcdf485e724dd46f83a54a78 +CT= c4faf84061689c317f652736d645164f53fe69f113fb61f1 +PT= 7a1a21c5ef48a700f0be992486748fc193f4ff1621b9c8cd +TEST= 135 +KEY= e45e9f5c418b3194d0be1a2d9517bcec37a7dd873aabc79fe1b92b79a21c82b5 +CT= 7a1a21c5ef48a700f0be992486748fc193f4ff1621b9c8cd +PT= 44f0e3e14610677bbec5194711d8ea5632cd03d4e3931cf4 +TEST= 136 +KEY= 7b527e4827b94ee8944ef9ccd307db978962c4c02b732dc9d37428ad418f9e41 +CT= 44f0e3e14610677bbec5194711d8ea5632cd03d4e3931cf4 +PT= bc3ee0afa6abf31892d00d71302e9fe203a37d426d1f3f0c +TEST= 137 +KEY= c039a271c0a412d42870196375ac288f1bb2c9b11b5db22bd0d755ef2c90a14d +CT= bc3ee0afa6abf31892d00d71302e9fe203a37d426d1f3f0c +PT= f5ce41d4aad4b3bb7b823c724fae2eee3ffa8c16692e28b9 +TEST= 138 +KEY= a0b5706cbcb35f93ddbe58b7df789b346030f5c354f39cc5ef2dd9f945be89f4 +CT= f5ce41d4aad4b3bb7b823c724fae2eee3ffa8c16692e28b9 +PT= 0dce6cc202d8e6a9e990fd95f1d5b809a66a09d50e4aa4b8 +TEST= 139 +KEY= 05b9ff7b95448d0fd0703475dda07d9d89a00856a52624cc4947d02c4bf42d4c +CT= 0dce6cc202d8e6a9e990fd95f1d5b809a66a09d50e4aa4b8 +PT= e067de9ef24d543acfa3b71194f97c1f5b8169f3bf48dad4 +TEST= 140 +KEY= f9704272c2d612373017eaeb2fed29a74603bf4731df58d312c6b9dff4bcf798 +CT= e067de9ef24d543acfa3b71194f97c1f5b8169f3bf48dad4 +PT= 5afd1d76521495eecaa14523705bca5744814f210af49d39 +TEST= 141 +KEY= 73e4afb8f5b8282c6aeaf79d7df9bc498ca2fa64418492845647f6fefe486aa1 +CT= 5afd1d76521495eecaa14523705bca5744814f210af49d39 +PT= 4207625dd3b2654c5a57eadf7ebe8d369f69e38b657328ed +TEST= 142 +KEY= 632fb52bea9f3cb128ed95c0ae4bd905d6f510bb3f3a1fb2c92e15759b3b424c +CT= 4207625dd3b2654c5a57eadf7ebe8d369f69e38b657328ed +PT= afaab796d430ab2244375cb1ef93e02cb89d64785a2e4984 +TEST= 143 +KEY= b732c72f91d5d99a874722567a7b722792c24c0ad0a9ff9e71b3710dc1150bc8 +CT= afaab796d430ab2244375cb1ef93e02cb89d64785a2e4984 +PT= 453d477baaa264879345c81c13354f13686f9773213ab827 +TEST= 144 +KEY= 389a0b801673c9c9c27a652dd0d916a001878416c39cb08d19dce67ee02fb3ef +CT= 453d477baaa264879345c81c13354f13686f9773213ab827 +PT= 825e2349cf0959e6f1ee99485c308b66b1a691ef8fecd9a7 +TEST= 145 +KEY= b65f93cb23efed36402446641fd04f46f0691d5e9fac3beba87a77916fc36a48 +CT= 825e2349cf0959e6f1ee99485c308b66b1a691ef8fecd9a7 +PT= 57038d917ce497c246bdf9486e63d36438a7b5f048f6a9e2 +TEST= 146 +KEY= 12bc01b45d4c03d91727cbf56334d884b6d4e416f1cfe88f90ddc2612735c3aa +CT= 57038d917ce497c246bdf9486e63d36438a7b5f048f6a9e2 +PT= c563b03881b184b515025d545b0811e7a5ff5693bb4a89a4 +TEST= 147 +KEY= 36d01d1dfc73b093d2447bcde2855c31a3d6b942aac7f968352294f29c7f4a0e +CT= c563b03881b184b515025d545b0811e7a5ff5693bb4a89a4 +PT= 6c0eba442fc91c6f740e994b7c9a3c91c28d1cfc7ab493da +TEST= 148 +KEY= 36dce38a4f167e46be4ac189cd4c405ed7d82009d65dc5f9f7af880ee6cbd9d4 +CT= 6c0eba442fc91c6f740e994b7c9a3c91c28d1cfc7ab493da +PT= 1afbc11a3d876fd046625d67888785f98660c4cf825dd2db +TEST= 149 +KEY= d59fffaf45057be8a4b10093f0cb2f8e91ba7d6e5eda400071cf4cc164960b0f +CT= 1afbc11a3d876fd046625d67888785f98660c4cf825dd2db +PT= d9325f3e5595118cf1e71a4a56ca3b2f463be7b772ad4186 +TEST= 150 +KEY= cb25465651223b3f7d835fada55e3e02605d672408107b2f37f4ab76163b4a89 +CT= d9325f3e5595118cf1e71a4a56ca3b2f463be7b772ad4186 +PT= cc4781646ddf72e2a49dcd3eaf2076fe47eb16ccea06032f +TEST= 151 +KEY= e7dd54aa27ee3a08b1c4dec9c8814ce0c4c0aa1aa7300dd1701fbdbafc3d49a6 +CT= cc4781646ddf72e2a49dcd3eaf2076fe47eb16ccea06032f +PT= 162d30109cba5743e2f9071e7542544c97dd8479fdc6b7f5 +TEST= 152 +KEY= ba86a7f143ebd0dca7e9eed9543b1ba32639ad04d272599de7c239c301fbfe53 +CT= 162d30109cba5743e2f9071e7542544c97dd8479fdc6b7f5 +PT= fee84c5e2cbd065e069c84053b4f60be89f5b8769719077b +TEST= 153 +KEY= dd1b4281ae4c60495901a28778861dfd20a52901e93d39236e3781b596e2f928 +CT= fee84c5e2cbd065e069c84053b4f60be89f5b8769719077b +PT= 9911c8360819edcbc2f156666c1d068a95ed71321d5dd1b6 +TEST= 154 +KEY= 8542545adebdf642c0106ab1709ff036e2547f6785203fa9fbdaf0878bbf289e +CT= 9911c8360819edcbc2f156666c1d068a95ed71321d5dd1b6 +PT= c091f0502e390ef714c98ad5f9f3beaa127b988a4ec81f39 +TEST= 155 +KEY= cbf7322e17fa104c00819ae15ea6fec1f69df5b27cd38103e9a1680dc57737a7 +CT= c091f0502e390ef714c98ad5f9f3beaa127b988a4ec81f39 +PT= 019a512bd3b527c59b6aba8d70786da5ef0c16f49a5dda41 +TEST= 156 +KEY= 455043a18084bb79011bcbca8d13d9046df74f3f0cabeca606ad7ef95f2aede6 +CT= 019a512bd3b527c59b6aba8d70786da5ef0c16f49a5dda41 +PT= 6c6106469fee97090ea0bb7b18adfc30af18852843f584a5 +TEST= 157 +KEY= d089438f2a0e17d66d7acd8c12fd4e0d6357f44414061096a9b5fbd11cdf6943 +CT= 6c6106469fee97090ea0bb7b18adfc30af18852843f584a5 +PT= dacaadbc98728766e53181d4b33c803026d4083e31f4d96f +TEST= 158 +KEY= e288803e0cdb71dfb7b060308a8fc96b86667590a73a90a68f61f3ef2d2bb02c +CT= dacaadbc98728766e53181d4b33c803026d4083e31f4d96f +PT= 7fc747ff3ed640cf48ec644fd9f28c43fd158cf6b7247b9c +TEST= 159 +KEY= d2cbf2c91e1aafb4c87727cfb45989a4ce8a11df7ec81ce572747f199a0fcbb0 +CT= 7fc747ff3ed640cf48ec644fd9f28c43fd158cf6b7247b9c +PT= cd3b6d4d0e58ddf8aa86fdd947adcdbfe9e6ff62945d7d48 +TEST= 160 +KEY= 5ff2f9e601dabb89054c4a82ba01545c640cec063965d15a9b92807b0e52b6f8 +CT= cd3b6d4d0e58ddf8aa86fdd947adcdbfe9e6ff62945d7d48 +PT= a87525c54eb4d14dd6a98acf4346788cbbec8210530d1a53 +TEST= 161 +KEY= 88e0f939d0afea01ad396f47f4b58511b2a566c97a23a9d6207e026b5d5facab +CT= a87525c54eb4d14dd6a98acf4346788cbbec8210530d1a53 +PT= 4240f56fc3e909b35e966132f91d0aaa55cecea52fbce4a0 +TEST= 162 +KEY= 0c8e162ada457c1cef799a28375c8ca2ec3307fb833ea37c75b0ccce72e3480b +CT= 4240f56fc3e909b35e966132f91d0aaa55cecea52fbce4a0 +PT= a58993abfd5ca2c561527934102b0112294c8c5a7865f77b +TEST= 163 +KEY= 8ae1292ce208ba2e4af00983ca002e678d617ecf9315a26e5cfc40940a86bf70 +CT= a58993abfd5ca2c561527934102b0112294c8c5a7865f77b +PT= 51bd59761453adb94c7f160702050dbeef9b6bffc15e0ee1 +TEST= 164 +KEY= 1b63b192089932131b4d50f5de5383dec11e68c89110afd0b3672b6bcbd8b191 +CT= 51bd59761453adb94c7f160702050dbeef9b6bffc15e0ee1 +PT= 6a93657691d5396eb79d267ec331f650c604e2baad357b8e +TEST= 165 +KEY= ef6e5a59ff1ff5e371de35834f86bab076834eb6522159807563c9d166edca1f +CT= 6a93657691d5396eb79d267ec331f650c604e2baad357b8e +PT= 3e61ef07997e34e75527a6ddf3ca5a0009b439514583f1c7 +TEST= 166 +KEY= f3f4c699cb080c2f4fbfda84d6f88e5723a4e86ba1eb03807cd7f080236e3bd8 +CT= 3e61ef07997e34e75527a6ddf3ca5a0009b439514583f1c7 +PT= d9f8c7b86004bbf259cdacb74ad76182228f85f281253364 +TEST= 167 +KEY= 34932a50b9098d5b96471d3cb6fc35a57a6944dceb3c62025e587572a24b08bc +CT= d9f8c7b86004bbf259cdacb74ad76182228f85f281253364 +PT= 352931db2bd4fd5b43f4415ef929153eec3533811d3325c8 +TEST= 168 +KEY= 5138a4cc8d4e6840a36e2ce79d28c8fe399d05821215773cb26d46f3bf782d74 +CT= 352931db2bd4fd5b43f4415ef929153eec3533811d3325c8 +PT= 7eeae9cd80a1dd7eecb37cb06f6d99b47948183aaa097a8d +TEST= 169 +KEY= 25b98f8cfdf4e6a2dd84c52a1d891580d52e79327d78ee88cb255ec9157157f9 +CT= 7eeae9cd80a1dd7eecb37cb06f6d99b47948183aaa097a8d +PT= 1a5ab66ceb057ae03e7cb77fe075256c307b7149705825b3 +TEST= 170 +KEY= 2080793dc48ee9c7c7de7346f68c6f60eb52ce4d9d0dcbe4fb5e2f806529724a +CT= 1a5ab66ceb057ae03e7cb77fe075256c307b7149705825b3 +PT= 4b93e9a58e9a889e04fe54a9e614a5a82791d51ee4f71c85 +TEST= 171 +KEY= 56340af0522e237d8c4d9ae37816e7feefac9ae47b196e4cdccffa9e81de6ecf +CT= 4b93e9a58e9a889e04fe54a9e614a5a82791d51ee4f71c85 +PT= 08985313c9a1aadd7422fbf029ebfa8f3ba47374503662bd +TEST= 172 +KEY= c129d8cb0313f51884d5c9f0b1b74d239b8e611452f294c3e76b89ead1e80c72 +CT= 08985313c9a1aadd7422fbf029ebfa8f3ba47374503662bd +PT= 73ee475cb22a9b96937b49d64a9b1848d27c80b3389871b6 +TEST= 173 +KEY= 15e479d1edf697b8f73b8eac039dd6b508f528c218698c8b35170959e9707dc4 +CT= 73ee475cb22a9b96937b49d64a9b1848d27c80b3389871b6 +PT= 6d3f8baa6470ebaefecade412730336b9d1d2ca2b406d6e3 +TEST= 174 +KEY= 19d9400e7f9bf3d59a04050667ed3d1bf63ff6833f59bfe0a80a25fb5d76ab27 +CT= 6d3f8baa6470ebaefecade412730336b9d1d2ca2b406d6e3 +PT= ada75ce54b4ae7b8f673e1ec6c2ddc9e836801c3d3890401 +TEST= 175 +KEY= af7b5fa0b09f7b6937a359e32ca7daa3004c176f5374637e2b6224388effaf26 +CT= ada75ce54b4ae7b8f673e1ec6c2ddc9e836801c3d3890401 +PT= 0032527739f9d58e71e65b1aa45eff079d84682135350d01 +TEST= 176 +KEY= 6c20dfab95cd647b37910b94155e0f2d71aa4c75f72a9c79b6e64c19bbcaa227 +CT= 0032527739f9d58e71e65b1aa45eff079d84682135350d01 +PT= 8ed9aaa430318f0827337560d244f6f378746c37326e20a0 +TEST= 177 +KEY= 01f486873bdeff1bb948a130256f802556993915256e6a8ace92202e89a48287 +CT= 8ed9aaa430318f0827337560d244f6f378746c37326e20a0 +PT= 9e6e4280b29358b23764a3794c6b6f5b6ecc61f7ee1ee8f3 +TEST= 178 +KEY= fd0b495fc19be03e2726e3b097fcd89761fd9a6c690505d1a05e41d967ba6a74 +CT= 9e6e4280b29358b23764a3794c6b6f5b6ecc61f7ee1ee8f3 +PT= 5cef1067f90880c9a5410f15f3cf067c2b5f4caff73c80d3 +TEST= 179 +KEY= 671a2d980451ffff7bc9f3d76ef4585ec4bc95799aca03ad8b010d769086eaa7 +CT= 5cef1067f90880c9a5410f15f3cf067c2b5f4caff73c80d3 +PT= ab9c2a03b74354a0339ab7f3388d212360af92fb457954c1 +TEST= 180 +KEY= 5e85f148c2b53f30d055d9d4d9b70cfef726228aa247228eebae9f8dd5ffbe66 +CT= ab9c2a03b74354a0339ab7f3388d212360af92fb457954c1 +PT= 7259b598cd3acc8e6aa06c79d04fdd06d114cb9e862d1145 +TEST= 181 +KEY= f5db0667b6928f44a20c6c4c148dc0709d864ef37208ff883aba541353d2af23 +CT= 7259b598cd3acc8e6aa06c79d04fdd06d114cb9e862d1145 +PT= f151570587dca6cc1e3ee7f1f6d8c3f5325d457b1f123011 +TEST= 182 +KEY= 4469821d20ddcd3c535d3b49935166bc83b8a90284d03c7d08e711684cc09f32 +CT= f151570587dca6cc1e3ee7f1f6d8c3f5325d457b1f123011 +PT= 44eb88011d93d01cbc6f5e8c8d5ba7affab9889058cfe848 +TEST= 183 +KEY= 44a26ade19d6729f17b6b3488ec2b6a03fd7f78e098b9bd2f25e99f8140f777a +CT= 44eb88011d93d01cbc6f5e8c8d5ba7affab9889058cfe848 +PT= 336399bf1f21f7e8526d783011a01b6b15a5d9a595a96e2d +TEST= 184 +KEY= ec3ef9f97f98371b24d52af791e341486dba8fbe182b80b9e7fb405d81a61957 +CT= 336399bf1f21f7e8526d783011a01b6b15a5d9a595a96e2d +PT= 7e18e89b63ce2fb576956e3d8fe968b3786b599634bdf098 +TEST= 185 +KEY= e170745986b64db35acdc26cf22d6efd1b2fe18397c2e80a9f9019cbb51be9cf +CT= 7e18e89b63ce2fb576956e3d8fe968b3786b599634bdf098 +PT= 7a1cfa7f9e76aaf2f36002277b30f3cb9af554a596f2f5a6 +TEST= 186 +KEY= 0bed45405406c53d20d138136c5bc40fe84fe3a4ecf21bc105654d6e23e91c69 +CT= 7a1cfa7f9e76aaf2f36002277b30f3cb9af554a596f2f5a6 +PT= 70e16aa31d8805b711f6a12ea4e7166428633c733beb43e7 +TEST= 187 +KEY= 64b6fbd9e5c9ab08503052b071d3c1b8f9b9428a48150da52d06711d18025f8e +CT= 70e16aa31d8805b711f6a12ea4e7166428633c733beb43e7 +PT= 1cdfbab2666e13e239933b17f1a10748c5976f5f2294b47f +TEST= 188 +KEY= 9dd2d0626accb1604cefe80217bdd25ac02a799db9b40aede8911e423a96ebf1 +CT= 1cdfbab2666e13e239933b17f1a10748c5976f5f2294b47f +PT= c198ad700b2e48680c9730f39e1588592f9b77c5acaed7c3 +TEST= 189 +KEY= 88c19acaab2a32258d7745721c939a32ccbd496e27a182b4c70a698796383c32 +CT= c198ad700b2e48680c9730f39e1588592f9b77c5acaed7c3 +PT= 20f6da258476ae152493189f32d68fb349a8cde735419bef +TEST= 190 +KEY= 3a41194b7dfe32caad819f5798e53427e82e51f115770d078ea2a460a379a7dd +CT= 20f6da258476ae152493189f32d68fb349a8cde735419bef +PT= 16c6f54cf02180a0c9449dccb9f91b56352446c258da531e +TEST= 191 +KEY= 5b8a85c3279da5f1bb476a1b68c4b487216acc3dac8e1651bb86e2a2fba3f4c3 +CT= 16c6f54cf02180a0c9449dccb9f91b56352446c258da531e +PT= 814bf6b85a42715226cbec0ae6d265b8e3bb90bb5475e214 +TEST= 192 +KEY= 206d32d4badbda133a0c9ca33286c5d507a120374a5c73e9583d7219afd616d7 +CT= 814bf6b85a42715226cbec0ae6d265b8e3bb90bb5475e214 +PT= 963716e3180a686a1aa394842647a37643c7c3c821740d04 +TEST= 193 +KEY= d6a2bf86e872d47dac3b8a402a8cadbf1d02b4b36c1bd09f1bfab1d18ea21bd3 +CT= 963716e3180a686a1aa394842647a37643c7c3c821740d04 +PT= ea4a4b4093812508db9797e91754789f7fcff57774946449 +TEST= 194 +KEY= 1c074d2178514f654671c100b90d88b7c695235a7b4fa800643544a6fa367f9a +CT= ea4a4b4093812508db9797e91754789f7fcff57774946449 +PT= d0942cc68f0267568d16c41500c40fa7c84d505878855643 +TEST= 195 +KEY= 07921f77069ec51d96e5edc6360fefe14b83e74f7b8ba7a7ac7814fe82b329d9 +CT= d0942cc68f0267568d16c41500c40fa7c84d505878855643 +PT= cc1f3700d3a1ee5c4bf2d2a677e314e65bc3de5982689829 +TEST= 196 +KEY= b189e5575a5fa1595afadac6e5ae01bd007135e90c68b341f7bbcaa700dbb1f0 +CT= cc1f3700d3a1ee5c4bf2d2a677e314e65bc3de5982689829 +PT= 5744365a73185b874d18c977cec069b88c8f9f535c3ffe1b +TEST= 197 +KEY= 5c543f0642f1e2840dbeec9c96b65a3a4d69fc9ec2a8daf97b3455f45ce44feb +CT= 5744365a73185b874d18c977cec069b88c8f9f535c3ffe1b +PT= f3195167eafe3a4737837366ecc40f29dd69ffced602ee82 +TEST= 198 +KEY= 590660b949baf23bfea7bdfb7c48607d7aea8ff82e6cd5d0a65daa3a8ae6a169 +CT= f3195167eafe3a4737837366ecc40f29dd69ffced602ee82 +PT= af1caa2572e377820344369abbe841bd8fdba62ce02f88bb +TEST= 199 +KEY= ff1961ee9efdb16e51bb17de0eab17ff79aeb9629584946d29860c166ac929d2 +CT= af1caa2572e377820344369abbe841bd8fdba62ce02f88bb +PT= c31babe55daf3bfa97fcbb27c824b847c76d16c2228f6339 +TEST= 200 +KEY= d1d2cd2a03e9a4b792a0bc3b53042c05ee5202455da02c2aeeeb1ad448464aeb +CT= c31babe55daf3bfa97fcbb27c824b847c76d16c2228f6339 +PT= d088ba6cf71dbc3ebfc62eab123fde7d590d3a84c7690741 +TEST= 201 +KEY= 963e470419eba29a42280657a419903b51942cee4f9ff257b7e620508f2f4daa +CT= d088ba6cf71dbc3ebfc62eab123fde7d590d3a84c7690741 +PT= 84a604469f19b8f148b8d3244a832d0176693c61b01ebf27 +TEST= 202 +KEY= 4a4a99b2c5185647c68e02113b0028ca192cffca051cdf56c18f1c313f31f28d +CT= 84a604469f19b8f148b8d3244a832d0176693c61b01ebf27 +PT= 349c2619b4094c72a56f66f28af4432dcc41d3fe1c7132b3 +TEST= 203 +KEY= eed7dc496b82ed97f21224088f0964b8bc4399388fe89c7b0dcecfcf2340c03e +CT= 349c2619b4094c72a56f66f28af4432dcc41d3fe1c7132b3 +PT= 8f147a741c17714f8c4d41fa85c93245ffb65747fe1a90c3 +TEST= 204 +KEY= 0546085d8214788e7d065e7c931e15f7300ed8c20a21ae3ef2789888dd5a50fd +CT= 8f147a741c17714f8c4d41fa85c93245ffb65747fe1a90c3 +PT= 3c3980a152e83697b0a7f0ec168dbb82a13581fd724ededc +TEST= 205 +KEY= bb61542b19a707a4413fdeddc1f6236080a9282e1cac15bc534d1975af148e21 +CT= 3c3980a152e83697b0a7f0ec168dbb82a13581fd724ededc +PT= d6b6c2a32c677638d0e2153101a9817d7064cd8d8528db57 +TEST= 206 +KEY= 129d1ac09d1d693f97891c7eed915558504b3d1f1d0594c12329d4f82a3c5576 +CT= d6b6c2a32c677638d0e2153101a9817d7064cd8d8528db57 +PT= 601f27eaa63de7251273f546a132c862b214f108a39f5b51 +TEST= 207 +KEY= 1fe0a226304e65b6f7963b944bacb27d4238c859bc375ca3913d25f089a30e27 +CT= 601f27eaa63de7251273f546a132c862b214f108a39f5b51 +PT= d187f8d1760442049623ffc451b4093bbb5041335495865a +TEST= 208 +KEY= 1549dee9020497b82611c3453da8f079d41b379ded8355982a6d64c3dd36887d +CT= d187f8d1760442049623ffc451b4093bbb5041335495865a +PT= 4315b15cbd7120f1f888c6ad344cc7550df995c2fb17884a +TEST= 209 +KEY= 1a1ff44a5dd763f76504721980d9d0882c93f130d9cf92cd2794f10126210037 +CT= 4315b15cbd7120f1f888c6ad344cc7550df995c2fb17884a +PT= 7530ccde46b9440a4cbb8d35142a7ee41edc142cb7b76bb7 +TEST= 210 +KEY= 5a41c8252a5f88b31034bec7c660948260287c05cde5ec293948e52d91966b80 +CT= 7530ccde46b9440a4cbb8d35142a7ee41edc142cb7b76bb7 +PT= b7932dcdb304d94fb9ec414a3b5a72c979cdf2ccce58b8d3 +TEST= 211 +KEY= df497620814dd6efa7a7930a75644dcdd9c43d4ff6bf9ee0408517e15fced353 +CT= b7932dcdb304d94fb9ec414a3b5a72c979cdf2ccce58b8d3 +PT= f852fc791c54b9d464975c5d90fe412dc26a5e03d543fe83 +TEST= 212 +KEY= 1c04d6bdb72df4a65ff56f736930f419bd5361126641dfcd82ef49e28a8d2dd0 +CT= f852fc791c54b9d464975c5d90fe412dc26a5e03d543fe83 +PT= ab39a95bd22ce92e920abadd68ed7f7375261d014b2b8128 +TEST= 213 +KEY= fa3a073488767891f4ccc628bb1c1d372f59dbcf0eaca0bef7c954e3c1a6acf8 +CT= ab39a95bd22ce92e920abadd68ed7f7375261d014b2b8128 +PT= d39539584c0d8f0b5d4516d1dbcc53b42657a4dc3256eb72 +TEST= 214 +KEY= 15f29e46b3497c9d2759ff70f711923c721ccd1ed560f30ad19ef03ff3f0478a +CT= d39539584c0d8f0b5d4516d1dbcc53b42657a4dc3256eb72 +PT= 72ff5571ca30455e58f8e7aa8f3bb7328ccc5b313dd10ff0 +TEST= 215 +KEY= eeb1aef7b73d5a0255a6aa013d21d7622ae42ab45a5b44385d52ab0ece21487a +CT= 72ff5571ca30455e58f8e7aa8f3bb7328ccc5b313dd10ff0 +PT= 64c3a8c5f1744034b600361e817a8fe90fab7e03a721f994 +TEST= 216 +KEY= df742a61209df918316502c4cc5597569ce41caadb21cbd152f9d50d6900b1ee +CT= 64c3a8c5f1744034b600361e817a8fe90fab7e03a721f994 +PT= f8f3b9fa9400318db285165d590c226dd5d769340e351bc8 +TEST= 217 +KEY= 7a0446b9b98e5f3ec996bb3e5855a6db2e610af7822de9bc872ebc396735aa26 +CT= f8f3b9fa9400318db285165d590c226dd5d769340e351bc8 +PT= 807e33dee0416e24e1228a7af4d1378f751203cf7c648ce4 +TEST= 218 +KEY= 5478b6910a84e7a249e888e0b814c8ffcf43808d76fcde33f23cbff61b5126c2 +CT= 807e33dee0416e24e1228a7af4d1378f751203cf7c648ce4 +PT= 147c44dc73a3131104c370b8b8a96926e2ae6c2be58dfa40 +TEST= 219 +KEY= 12d4ed7d70a9ab065d94cc3ccbb7dbeecb80f035ce55b7151092d3ddfedcdc82 +CT= 147c44dc73a3131104c370b8b8a96926e2ae6c2be58dfa40 +PT= 4533f4cd72c7c627ab534f0c624baf2e97a2a0d8867fdba4 +TEST= 220 +KEY= 20dd4d138d7f042518a738f1b9701dc960d3bf39ac1e183b8730730578a30726 +CT= 4533f4cd72c7c627ab534f0c624baf2e97a2a0d8867fdba4 +PT= 6b2f89565a175fc99c05e8b9eabc0957ef12edce1516d04d +TEST= 221 +KEY= 358eb9355545fd317388b1a7e3674200fcd6578046a2116c68229ecb6db5d76b +CT= 6b2f89565a175fc99c05e8b9eabc0957ef12edce1516d04d +PT= adc8f47a62014d6966e9a31e85946ecd116d565c3c384c8c +TEST= 222 +KEY= 0df06c8f3be8e399de4045dd81660f699a3ff49ec3367fa1794fc897518d9be7 +CT= adc8f47a62014d6966e9a31e85946ecd116d565c3c384c8c +PT= 10b93758f41ee2a0d604dc5bce53a62bcaa4759b3331770a +TEST= 223 +KEY= b9a460c3fbe09c19cef972857578edc94c3b28c50d65d98ab3ebbd0c62bceced +CT= 10b93758f41ee2a0d604dc5bce53a62bcaa4759b3331770a +PT= e2ef9912854904111f869284163f7b4f2c24e05a56e60776 +TEST= 224 +KEY= ff44a04bf062c5f62c16eb97f031e9d853bdba411b5aa2c59fcf5d56345aeb9b +CT= e2ef9912854904111f869284163f7b4f2c24e05a56e60776 +PT= aa79088a7c6ef202c1b0170c83fd260fa039386898825aeb +TEST= 225 +KEY= 1141ad9cf2893932866fe31d8c5f1bda920dad4d98a784ca3ff6653eacd8b170 +CT= aa79088a7c6ef202c1b0170c83fd260fa039386898825aeb +PT= 45fa92366b4e674fab317a564c743f403e8789a01a30b3b2 +TEST= 226 +KEY= e6489e17359e001fc395712be7117c95393cd71bd4d3bb8a0171ec9eb6e802c2 +CT= 45fa92366b4e674fab317a564c743f403e8789a01a30b3b2 +PT= 41605e6c6b8e12dc315d72caa3c52a2b9e1ad5c64b28ce73 +TEST= 227 +KEY= bed98e2d5620187882f52f478c9f6e490861a5d1771691a19f6b3958fdc0ccb1 +CT= 41605e6c6b8e12dc315d72caa3c52a2b9e1ad5c64b28ce73 +PT= 8550cbeedbe371356a3f1065296f910857a56e0ecbbd3e1c +TEST= 228 +KEY= 0c6c4ca99d0f804a07a5e4a9577c1f7c625eb5b45e7900a9c8ce5756367df2ad +CT= 8550cbeedbe371356a3f1065296f910857a56e0ecbbd3e1c +PT= 300a7399c89c17ecd59d105999ae980af35a9c395465c4f0 +TEST= 229 +KEY= da5f67c12ea2bd7b37af97309fe00890b7c3a5edc7d798a33b94cb6f6218365d +CT= 300a7399c89c17ecd59d105999ae980af35a9c395465c4f0 +PT= 9654edee2a9e51458381d84cdb6aeba17e0c5d6c54ce4aef +TEST= 230 +KEY= 534b8c17757ac9eba1fb7adeb57e59d534427da11cbd73024598960336d67cb2 +CT= 9654edee2a9e51458381d84cdb6aeba17e0c5d6c54ce4aef +PT= d3895f46f4e6fef3444f0967b7cecadfd7cc92f29f5367c3 +TEST= 231 +KEY= df146ac8435a6f06727225984198a726700d74c6ab73b9dd925404f1a9851b71 +CT= d3895f46f4e6fef3444f0967b7cecadfd7cc92f29f5367c3 +PT= f389eb12d34c2d5fd5c056d1222e025d91c45ea656fa5b4f +TEST= 232 +KEY= 601d0dfca0720ac781fbce8a92d48a79a5cd2217895dbb8003905a57ff7f403e +CT= f389eb12d34c2d5fd5c056d1222e025d91c45ea656fa5b4f +PT= 9754e9f1da1ad8640f827e4feafbd6eb518d100666cc548a +TEST= 233 +KEY= 531f837aefbd394016af277b48ce521daa4f5c5863a66d6b521d4a5199b314b4 +CT= 9754e9f1da1ad8640f827e4feafbd6eb518d100666cc548a +PT= 52ba03e69fe40259ad8aec20894ace80489cac4f1c5af20b +TEST= 234 +KEY= cd2b7789d00879a74415249dd72a504407c5b078eaeca3eb1a81e61e85e9e6bf +CT= 52ba03e69fe40259ad8aec20894ace80489cac4f1c5af20b +PT= 6dcac93de32459c8cf4704eb744ecd72c5a18cf5009f0b22 +TEST= 235 +KEY= e98036e25d84680c29dfeda0340e098cc882b4939ea26e99df206aeb8576ed9d +CT= 6dcac93de32459c8cf4704eb744ecd72c5a18cf5009f0b22 +PT= 7fb96cadcbc52c727ee860c13187013a311eef6c48cc1e2b +TEST= 236 +KEY= 01911f5e62178ced5666810dffcb25feb66ad452af256fa3ee3e8587cdbaf3b6 +CT= 7fb96cadcbc52c727ee860c13187013a311eef6c48cc1e2b +PT= 7ff49d3c953ec17896c15834fb5fdaf5bf74233d0975fafc +TEST= 237 +KEY= 1794ee9496c89b5529921c316af5e48620ab8c66547ab556514aa6bac4cf094a +CT= 7ff49d3c953ec17896c15834fb5fdaf5bf74233d0975fafc +PT= 4807dfa8f3ef9813af8d9034e2ef5f53de0792d5f1e734fa +TEST= 238 +KEY= 82991753d66098896195c399991a7c958f261c52b695ea058f4d346f35283db0 +CT= 4807dfa8f3ef9813af8d9034e2ef5f53de0792d5f1e734fa +PT= 2078081a9ef008c420382534d5c316607012a0e3135ba3c3 +TEST= 239 +KEY= c067085af13a53e641edcb8307ea7451af1e39666356fc65ff5f948c26739e73 +CT= 2078081a9ef008c420382534d5c316607012a0e3135ba3c3 +PT= c6c6a88f49d1e505532a61a4a8e405901a0c390061348484 +TEST= 240 +KEY= 94bd618edce6dcb5872b630c4e3b9154fc3458c2cbb2f9f5e553ad8c47471af7 +CT= c6c6a88f49d1e505532a61a4a8e405901a0c390061348484 +PT= 836d7d84515111df586c32946256aa3827b59dc74512a79c +TEST= 241 +KEY= 0775f0c77891a74204461e881f6a808ba4586a56a9e453cdc2e6304b0255bd6b +CT= 836d7d84515111df586c32946256aa3827b59dc74512a79c +PT= b26bf82e10c5bbf50bdfb3b040e92e72c9711130d9920bc7 +TEST= 242 +KEY= 56117fea4a1a71beb62de6a60faf3b7eaf87d9e6e90d7dbf0b97217bdbc7b6ac +CT= b26bf82e10c5bbf50bdfb3b040e92e72c9711130d9920bc7 +PT= e384dd92b6b042afb2dff176f2b127904f456ae804b1d4b4 +TEST= 243 +KEY= b723b2b17010fa7455a93b34b91f79d11d5828901bbc5a2f44d24b93df766218 +CT= e384dd92b6b042afb2dff176f2b127904f456ae804b1d4b4 +PT= ebdc4ebb9f68295e564ed369f93ed8e4b4f561e2ed5e87ba +TEST= 244 +KEY= d54d90ef7d611260be75758f2677508f4b16fbf9e28282cbf0272a713228e5a2 +CT= ebdc4ebb9f68295e564ed369f93ed8e4b4f561e2ed5e87ba +PT= daa74bed862ccbc8d9c985a2521060626827819900db117c +TEST= 245 +KEY= 25a41ccfa054922664d23e62a05b9b4792df7e5bb092e2a99800abe832f3f4de +CT= daa74bed862ccbc8d9c985a2521060626827819900db117c +PT= 0fd01ec1816ef54de961aadc80e897c75f3404a5b41feddb +TEST= 246 +KEY= c0489b12e2fd16446b0220a321356e0a7bbed487307a756ec734af4d86ec1905 +CT= 0fd01ec1816ef54de961aadc80e897c75f3404a5b41feddb +PT= 4bbdc77fd0834e330b4b79cb4dab1f193cf048e86bb523aa +TEST= 247 +KEY= 3cd3aae701e9525020bfe7dcf1b6203970f5ad4c7dd16a77fbc4e7a5ed593aaf +CT= 4bbdc77fd0834e330b4b79cb4dab1f193cf048e86bb523aa +PT= defe5d206cd2446a0542e69d563aa54b87e84bc8b87e2371 +TEST= 248 +KEY= 2ee63fe45cf2c288fe41bafc9d64645375b74bd12bebcf3c7c2cac6d552719de +CT= defe5d206cd2446a0542e69d563aa54b87e84bc8b87e2371 +PT= ae22fa053c30eca80e07fdedde97b3aecf7c634252be5ce0 +TEST= 249 +KEY= 8f782a137d01acc1506340f9a15488fb7bb0b63cf57c7c92b350cf2f0799453e +CT= ae22fa053c30eca80e07fdedde97b3aecf7c634252be5ce0 +PT= f9b7b0194fd02ac74524a7b420b17a9ac9e178beeb5b9d1b +TEST= 250 +KEY= 93191aa1902757a7a9d4f0e0ee84a23c3e941188d5cd06087ab1b791ecc2d825 +CT= f9b7b0194fd02ac74524a7b420b17a9ac9e178beeb5b9d1b +PT= 3df9b8122e0aabb62b4f055f3a42de6a158ea77599529c67 +TEST= 251 +KEY= 1a58476eb6485a24942d48f2c08e098a15db14d7ef8fd8626f3f10e475904442 +CT= 3df9b8122e0aabb62b4f055f3a42de6a158ea77599529c67 +PT= 1016bed19487a28573267733d71dc97fd1b24bf9842e7eb1 +TEST= 252 +KEY= 176b3f9b22a2add7843bf6235409ab0f66fd63e43892111dbe8d5b1df1be3af3 +CT= 1016bed19487a28573267733d71dc97fd1b24bf9842e7eb1 +PT= 61ba9ed21a2e72e5868ea0eaf9e00b14324c1519999d4038 +TEST= 253 +KEY= 432797faef9e9ffee58168f14e27d9eae073c30ec1721a098cc14e0468237acb +CT= 61ba9ed21a2e72e5868ea0eaf9e00b14324c1519999d4038 +PT= 2b5459edf1c35992571527461f8b910033d9e8c1114bb943 +TEST= 254 +KEY= 2f1cf31c701a4bfeced5311cbfe48078b766e448def98b09bf18a6c57968c388 +CT= 2b5459edf1c35992571527461f8b910033d9e8c1114bb943 +PT= 9879050de16eb7a2770c6bc7db42301d87e6545521623c59 +TEST= 255 +KEY= bda048d67da86eba56ac34115e8a37dac06a8f8f05bbbb1438fef290580affd1 +CT= 9879050de16eb7a2770c6bc7db42301d87e6545521623c59 +PT= fa20f97e4425d1675b2235c6c6f9179a0e7ba4e92af082b3 +TEST= 256 +KEY= 9655d33ce17e74d0ac8ccd6f1aafe6bd9b48ba49c342ac8e3685567972fa7d62 +CT= fa20f97e4425d1675b2235c6c6f9179a0e7ba4e92af082b3 +PT= 8bf4a737e15b49d4adacd99254e936c8abdf2ae8ead0ab45 +TEST= 257 +KEY= e467d1450cc2072027786a58fbf4af6936e463db97ab9a469d5a7c91982ad627 +CT= 8bf4a737e15b49d4adacd99254e936c8abdf2ae8ead0ab45 +PT= aa57d24b5e084af850ace0b852f6b7e3d652e742631f64ab +TEST= 258 +KEY= 3f1dcb1139839c1b8d2fb813a5fce59166488363c55d2da54b089bd3fb35b28c +CT= aa57d24b5e084af850ace0b852f6b7e3d652e742631f64ab +PT= f048f589917eea2aed06d24905ed5d3ce9936a5a17d9bb5d +TEST= 259 +KEY= 71059cb77a50e1047d674d9a34820fbb8b4e512ac0b07099a29bf189ecec09d1 +CT= f048f589917eea2aed06d24905ed5d3ce9936a5a17d9bb5d +PT= cd764826e5ecfd47d660e83756e8f961c388225775c88486 +TEST= 260 +KEY= 0cf8afc14e405dc2b01105bcd16ef2fc5d2eb91d965889f86113d3de99248d57 +CT= cd764826e5ecfd47d660e83756e8f961c388225775c88486 +PT= bef0613e0bcdb2437d85f8d045032f2e959bd9fe63a5089e +TEST= 261 +KEY= a3153b61418455b80ee16482daa340bf20ab41cdd35ba6d6f4880a20fa8185c9 +CT= bef0613e0bcdb2437d85f8d045032f2e959bd9fe63a5089e +PT= 8a20c31e2471bb06fe1402a1a8974cfeff693f5a6190180b +TEST= 262 +KEY= ecd6f0610b2df17c84c1a79cfed2fbb9debf436c7bccea280be1357a9b119dc2 +CT= 8a20c31e2471bb06fe1402a1a8974cfeff693f5a6190180b +PT= 56889cc2c80d292f0de68799c491b81bde9492fe222ba8e3 +TEST= 263 +KEY= e7a9c0e0cf6be5a2d2493b5e36dfd296d359c4f5bf5d5233d575a784b93a3521 +CT= 56889cc2c80d292f0de68799c491b81bde9492fe222ba8e3 +PT= 2254ecde70e13da51f473fe3797edd5d9d0a89d87e4e67c3 +TEST= 264 +KEY= bbf0cfb1a173124af01dd780463eef33cc1efb16c6238f6e487f2e5cc77452e2 +CT= 2254ecde70e13da51f473fe3797edd5d9d0a89d87e4e67c3 +PT= 25e129388786bb482e2242236d861713af271299ea95b9bb +TEST= 265 +KEY= 6d63d0670696ba09d5fcfeb8c1b8547be23cb935aba5987de7583cc52de1eb59 +CT= 25e129388786bb482e2242236d861713af271299ea95b9bb +PT= 36d284e03d34609c9e6c95fa08f2423b2129c0ee4f2b4f8e +TEST= 266 +KEY= dd9500ae7e0d97f5e32e7a58fc8c34e77c502ccfa357da46c671fc2b62caa4d7 +CT= 36d284e03d34609c9e6c95fa08f2423b2129c0ee4f2b4f8e +PT= 7426d83cf87a799587b595546738669f1390f403d60c4aa9 +TEST= 267 +KEY= 355c2372cccce5ab9708a26404f64d72fbe5b99bc46fbcd9d5e10828b4c6ee7e +CT= 7426d83cf87a799587b595546738669f1390f403d60c4aa9 +PT= 4e404026ba4937be92908d648dd3badd279a274122d9c426 +TEST= 268 +KEY= 53911cc6c239ad4ad948e242bebf7acc697534ff49bc0604f27b2f69961f2a58 +CT= 4e404026ba4937be92908d648dd3badd279a274122d9c426 +PT= 15c88237064ffe791494e5a5b88b2f784746c2af86cda661 +TEST= 269 +KEY= 2063b5c902705f3fcc806075b8f084b57de1d15af137297cb53dedc610d28c39 +CT= 15c88237064ffe791494e5a5b88b2f784746c2af86cda661 +PT= a7cff1d1fd5cd3854cdd27d5d65ab35a59f10597a53f4fc8 +TEST= 270 +KEY= 787022dadff92de56b4f91a445ac5730313cf68f276d9a26eccce851b5edc3f1 +CT= a7cff1d1fd5cd3854cdd27d5d65ab35a59f10597a53f4fc8 +PT= 2039447a03c90c8eacd2a6f3dc3eec722a4b60e904e058e9 +TEST= 271 +KEY= 5548d65730a6081a4b76d5de46655bbe9dee507cfb537654c68788b8b10d9b18 +CT= 2039447a03c90c8eacd2a6f3dc3eec722a4b60e904e058e9 +PT= 0ce8865a0ec6e978ed3cdb971369b2fec399ece18055903c +TEST= 272 +KEY= 00c591ae33baa486479e538448a3b2c670d28bebe83ac4aa051e645931580b24 +CT= 0ce8865a0ec6e978ed3cdb971369b2fec399ece18055903c +PT= 8af610a9f254ccab78a49b2af054bd88338bfa9e7ce99cbe +TEST= 273 +KEY= f980a48a26ab0cd8cd68432dbaf77e6d087610c1186e792236959ec74db1979a +CT= 8af610a9f254ccab78a49b2af054bd88338bfa9e7ce99cbe +PT= e346927183a63f0beeca8f7929dbf5fc65f087df654de3d2 +TEST= 274 +KEY= 3f36c6d87418e5182e2ed15c39514166e6bc9fb831b58cde5365191828fc7448 +CT= e346927183a63f0beeca8f7929dbf5fc65f087df654de3d2 +PT= 21ad1bf8f101a3dc878f4dd9f53fc97831b4b2e8431fef78 +TEST= 275 +KEY= 40f9725d4993c9620f83caa4c850e2ba6133d261c48a45a662d1abf06be39b30 +CT= 21ad1bf8f101a3dc878f4dd9f53fc97831b4b2e8431fef78 +PT= ccaa80e4f4fe4a414c9127e2e956fd49c4b92053dd00fd3f +TEST= 276 +KEY= 35f91cf0bb364249c3294a403caea8fb2da2f5832ddcb8efa6688ba3b6e3660f +CT= ccaa80e4f4fe4a414c9127e2e956fd49c4b92053dd00fd3f +PT= b7979ac91ba39ee3a5acf7fe6a2e3206229bcd0cc8bc7e6e +TEST= 277 +KEY= 066a9507ed97882574bed089270d3618880e027d47f28ae984f346af7e5f1861 +CT= b7979ac91ba39ee3a5acf7fe6a2e3206229bcd0cc8bc7e6e +PT= d60544265a55bee54db98d40dbabefe5c60417e0ac48e347 +TEST= 278 +KEY= 8da6596a464033c8a2bb94af7d5888fdc5b78f3d9c59650c42f7514fd217fb26 +CT= d60544265a55bee54db98d40dbabefe5c60417e0ac48e347 +PT= 9d06d4423e4664dcca86454a1d7e1b62a09895ca28a6f0dd +TEST= 279 +KEY= b81c950f8b7eb4333fbd40ed431eec210f31ca7781277e6ee26fc485fab10bfb +CT= 9d06d4423e4664dcca86454a1d7e1b62a09895ca28a6f0dd +PT= c4eeb86c90155f49d24e32f8964fee8337421e51aa406f0a +TEST= 280 +KEY= 7f28dc352b072189fb53f881d30bb368dd7ff88f176890edd52ddad450f164f1 +CT= c4eeb86c90155f49d24e32f8964fee8337421e51aa406f0a +PT= e3adb7750d34b18b55143b29cf84791b2d947529572fddc4 +TEST= 281 +KEY= 2344d18877ded8ce18fe4ff4de3f02e3886bc3a6d8ece9f6f8b9affd07deb935 +CT= e3adb7750d34b18b55143b29cf84791b2d947529572fddc4 +PT= 63120587f5064d492f54a16883c76ca9d8828e0a907c20c6 +TEST= 282 +KEY= 8ff46dc3cbe878ba7bec4a732b394faaa73f62ce5b2b855f203b21f797a299f3 +CT= 63120587f5064d492f54a16883c76ca9d8828e0a907c20c6 +PT= 028db407ce56035b3e4ba972254636b4d5bb17d134c33ae4 +TEST= 283 +KEY= ff449764542d21a27961fe74e56f4cf19974cbbc7e6db3ebf5803626a361a317 +CT= 028db407ce56035b3e4ba972254636b4d5bb17d134c33ae4 +PT= 9ac1d0bafadc2334f6850faa76c0815d4bb9512fbe692868 +TEST= 284 +KEY= ea7c4c364bce6b51e3a02ece1fb36fc56ff1c41608ad32b6be3967091d088b7f +CT= 9ac1d0bafadc2334f6850faa76c0815d4bb9512fbe692868 +PT= a8a109ca008f803d7f97778ea830ffb45acf2a4c1d418eb9 +TEST= 285 +KEY= af593885e9d65a7c4b0127041f3ceff81066b398a09dcd02e4f64d45004905c6 +CT= a8a109ca008f803d7f97778ea830ffb45acf2a4c1d418eb9 +PT= 3787d804870fc03d814e8279c357b8fc11e0cd702301f521 +TEST= 286 +KEY= 680b5804414a11777c86ff0098332fc5912831e163ca75fef51680352348f0e7 +CT= 3787d804870fc03d814e8279c357b8fc11e0cd702301f521 +PT= aa64cb24376710d5af9eb56bd047737c208bdfe6ed3e1af7 +TEST= 287 +KEY= e84ce0ece6ace71fd6e23424af543f103eb6848ab38d0682d59d5fd3ce76ea10 +CT= aa64cb24376710d5af9eb56bd047737c208bdfe6ed3e1af7 +PT= 044993db8c94a8a6121ec7c48500375d527fb7943f04b168 +TEST= 288 +KEY= 8a6c5433f0df78d8d2aba7ff23c097b62ca8434e368d31df87e2e847f1725b78 +CT= 044993db8c94a8a6121ec7c48500375d527fb7943f04b168 +PT= a58dd15b92db40cfe8656aa1fd2fff73e00b511e048155f8 +TEST= 289 +KEY= ae88f37e9a606945772676a4b11bd779c4cd29efcba2ceac67e9b959f5f30e80 +CT= a58dd15b92db40cfe8656aa1fd2fff73e00b511e048155f8 +PT= efbce8c7bddf4c3bad07ed4d73b10e7514ac70056ac2d8a2 +TEST= 290 +KEY= 5fb567eca79f6252989a9e630cc49b4269cac4a2b813c0d97345c95c9f31d622 +CT= efbce8c7bddf4c3bad07ed4d73b10e7514ac70056ac2d8a2 +PT= c4ada0624a38c2ccec2a28607f59b482d098bea40b5a5c62 +TEST= 291 +KEY= adffb38c18d686535c373e0146fc598e85e0ecc2c74a745ba3dd77f8946b8a40 +CT= c4ada0624a38c2ccec2a28607f59b482d098bea40b5a5c62 +PT= 3aa4e5e9482698f46e17b1510a4c95ad4219f001f463c64f +TEST= 292 +KEY= c56de13fccf7b59c6693dbe80edac17aebf75d93cd06e1f6e1c487f960084c0f +CT= 3aa4e5e9482698f46e17b1510a4c95ad4219f001f463c64f +PT= c39e167b10ccd5b7f423ea563d09872314330f5fc8071e64 +TEST= 293 +KEY= c67c51ddd106917fa50dcd931e1614cd1fd4b7c5f00f66d5f5f788a6a80f526b +CT= c39e167b10ccd5b7f423ea563d09872314330f5fc8071e64 +PT= 6f50ddab7926be67ddd8cf49eee7eae5509bea5f1b812ea9 +TEST= 294 +KEY= ec8c7e98004f892dca5d10386730aaaac20c788c1ee88c30a56c62f9b38e7cc2 +CT= 6f50ddab7926be67ddd8cf49eee7eae5509bea5f1b812ea9 +PT= de191d1b072934eb94b866991e0836d826b312f1e0ad7d76 +TEST= 295 +KEY= b79d2ff63dfe786d14440d2360199e4156b41e1500e0bae883df7008532301b4 +CT= de191d1b072934eb94b866991e0836d826b312f1e0ad7d76 +PT= 2f66a3c8dd13341fd6b9229391a5c9a2d3c5db7bab1c2546 +TEST= 296 +KEY= e35a67b85283b34c3b22aeebbd0aaa5e800d3c869145734a501aab73f83f24f2 +CT= 2f66a3c8dd13341fd6b9229391a5c9a2d3c5db7bab1c2546 +PT= 0dcd3964855716bf8eebffbd67e7d775502b6d24fc5cac8f +TEST= 297 +KEY= 204a92100fe1e38836ef978f385dbce10ee6c33bf6a2a43f0031c6570463887d +CT= 0dcd3964855716bf8eebffbd67e7d775502b6d24fc5cac8f +PT= d7210da554a24b6e96801b1625ab28b813c70707534b77fe +TEST= 298 +KEY= d26e9907e2d0a382e1ce9a2a6cfff78f9866d82dd3098c8713f6c1505728ff83 +CT= d7210da554a24b6e96801b1625ab28b813c70707534b77fe +PT= 31ff95b35ca0d6e470537fbc78d424f078ca4ca55c898d5a +TEST= 299 +KEY= d0a90581aa03f5ebd0310f99305f216be835a791abdda8776b3c8df50ba172d9 +CT= 31ff95b35ca0d6e470537fbc78d424f078ca4ca55c898d5a +PT= 026c9dc34afc0d4adb8ec52856678a1d56d0db12289e3b71 +TEST= 300 +KEY= 3165824de1009a64d25d925a7aa32c2133bb62b9fdba226a3dec56e7233f49a8 +CT= 026c9dc34afc0d4adb8ec52856678a1d56d0db12289e3b71 +PT= 58298cb0efafceb41340f5c45399fb975ba08cf5e76acb0f +TEST= 301 +KEY= 2500468898df449d8a741eea950ce29520fb977dae23d9fd664cda12c45582a7 +CT= 58298cb0efafceb41340f5c45399fb975ba08cf5e76acb0f +PT= cb3279fbe491a7f2cb6b15b963d58414a3acab3e1b31483c +TEST= 302 +KEY= 073757e79b66b45041466711719d4567eb9082c4cdf65de9c5e0712cdf64ca9b +CT= cb3279fbe491a7f2cb6b15b963d58414a3acab3e1b31483c +PT= bb27ec750ca16ceeb0a11c655a9aba9a5248f355c7b4f85d +TEST= 303 +KEY= fbad8d47f2657487fa618b647d3c29895b319ea1976ce77397a8827918d032c6 +CT= bb27ec750ca16ceeb0a11c655a9aba9a5248f355c7b4f85d +PT= 1acb8a91a78da4d2da9600b79b3a7bb9df47eae2a054baf3 +TEST= 304 +KEY= 3de0e8efbb4e4a75e0aa01f5dab18d5b81a79e160c569cca48ef689bb8848835 +CT= 1acb8a91a78da4d2da9600b79b3a7bb9df47eae2a054baf3 +PT= 0ccd5d7f979d772f394f1d2c64ee2bdeccae7211864e01bb +TEST= 305 +KEY= 204609a0ec7fcadeec675c8a4d2cfa74b8e8833a68b8b71484411a8a3eca898e +CT= 0ccd5d7f979d772f394f1d2c64ee2bdeccae7211864e01bb +PT= 6210bb150ce918e0928520cdc6f327e185e753f98cb6b32f +TEST= 306 +KEY= 95f6968fbd5b05f48e77e79f41c5e2942a6da3f7ae4b90f501a64973b27c3aa1 +CT= 6210bb150ce918e0928520cdc6f327e185e753f98cb6b32f +PT= 95c7d22067c3117beb056e9f7d6e447ff14916671e92c281 +TEST= 307 +KEY= 1b3f713bdeddacac1bb035bf2606f3efc168cd68d325d48af0ef5f14aceef820 +CT= 95c7d22067c3117beb056e9f7d6e447ff14916671e92c281 +PT= 909274d99326490c0a80d535c4b08a3fc8777299533b8c62 +TEST= 308 +KEY= 6eaa085ee65040768b224166b520bae3cbe8185d17955eb538982d8dffd57442 +CT= 909274d99326490c0a80d535c4b08a3fc8777299533b8c62 +PT= e415c21e563ef760eacf42fb33bbc4a9446df10e2050072b +TEST= 309 +KEY= 0b44e53a62508ee36f378378e31e4d8321275aa6242e9a1c7cf5dc83df857369 +CT= e415c21e563ef760eacf42fb33bbc4a9446df10e2050072b +PT= 8252ff092246cecb96f623c6c8392ac4a366c0602213ae31 +TEST= 310 +KEY= c08b8ead794aa554ed657c71c1588348b7d17960ec17b0d8df931ce3fd96dd58 +CT= 8252ff092246cecb96f623c6c8392ac4a366c0602213ae31 +PT= e7f4b62d8ed7b7a0273dc36e704fbd7c8776ba2af842ad06 +TEST= 311 +KEY= eee4ca013dca9f1b0a91ca5c4f8f34e890ecba0e9c580da458e5a6c905d4705e +CT= e7f4b62d8ed7b7a0273dc36e704fbd7c8776ba2af842ad06 +PT= b8c4e0f3e8386779fdc87a9ba79fe1b1acc86cf646de643c +TEST= 312 +KEY= 178182b482e50900b2552aafa7b753916d24c0953bc7ec15f42dca3f430a1462 +CT= b8c4e0f3e8386779fdc87a9ba79fe1b1acc86cf646de643c +PT= a0b080f7465002db086ba06777f84857abbade7175b4b3d8 +TEST= 313 +KEY= 4388e0e7efcbe9cd12e5aa58e1e7514a654f60f24c3fa4425f97144e36bea7ba +CT= a0b080f7465002db086ba06777f84857abbade7175b4b3d8 +PT= 052ee28bd0de63078b69fa9a5a2ac5df04f214503bcdd49c +TEST= 314 +KEY= 6d38bcc463f54f3d17cb48d33139324dee269a681615619d5b65001e0d737326 +CT= 052ee28bd0de63078b69fa9a5a2ac5df04f214503bcdd49c +PT= 65a6ec1fefb4729000a74c94c59176aa035bc72ec135549a +TEST= 315 +KEY= e1cbf0ef2c20b5c5726da4ccde8d40ddee81d6fcd3841737583ec730cc4627bc +CT= 65a6ec1fefb4729000a74c94c59176aa035bc72ec135549a +PT= 90be492c9b6d00373ad9a18c6210a7d351afe85368f8cf2e +TEST= 316 +KEY= 4b31f110726735a9e2d3ede045e040ead4587770b194b0e409912f63a4bee892 +CT= 90be492c9b6d00373ad9a18c6210a7d351afe85368f8cf2e +PT= a54d2acc767a483f5ced1631922d1d976ebbafefed786d06 +TEST= 317 +KEY= e426e333c3a2ac29479ec72c339a08d588b5614123b9ad73672a808c49c68594 +CT= a54d2acc767a483f5ced1631922d1d976ebbafefed786d06 +PT= 271d78ef0ab91ff2075d70ed11447087714705f1200fc8e9 +TEST= 318 +KEY= 5f8621579b47b6ae6083bfc3392317278fe811ac32fdddf4166d857d69c94d7d +CT= 271d78ef0ab91ff2075d70ed11447087714705f1200fc8e9 +PT= a29f435d9ef303384d600230b8b74a5a70f4b051ce1e2bc1 +TEST= 319 +KEY= bfbf1d7153360be9c21cfc9ea7d0141fc288139c8a4a97ae6699352ca7d766bc +CT= a29f435d9ef303384d600230b8b74a5a70f4b051ce1e2bc1 +PT= 35d9f3588a12b6406afb86d7a54634c67079f7dc83015370 +TEST= 320 +KEY= 9a55bdaae25851f0f7c50fc62dc2a25fa873954b2f0ca36816e0c2f024d635cc +CT= 35d9f3588a12b6406afb86d7a54634c67079f7dc83015370 +PT= 0fab31e33e5a5920d434a0c3637eed741fac4731103cada5 +TEST= 321 +KEY= d80b1337cdc47e9cf86e3e251398fb7f7c4735884c724e1c094c85c134ea9869 +CT= 0fab31e33e5a5920d434a0c3637eed741fac4731103cada5 +PT= af93dc40b07462b273dfe3395412a651752f508b301eef39 +TEST= 322 +KEY= a7ef518c7d098a1b57fde265a3ec99cd0f98d6b11860e84d7c63d54a04f47750 +CT= af93dc40b07462b273dfe3395412a651752f508b301eef39 +PT= d7fb9bb07bc481e9bd0f3baa880729b5fb33f1b128b0029c +TEST= 323 +KEY= c24a35901f10027e800679d5d8281824b297ed1b9067c1f8875024fb2c4475cc +CT= d7fb9bb07bc481e9bd0f3baa880729b5fb33f1b128b0029c +PT= feb2546daa1d2cac3161bd77642595fb008a7bca71d55076 +TEST= 324 +KEY= bc3bad0ebe3019b07eb42db87235348883f6506cf442540387da5f315d9125ba +CT= feb2546daa1d2cac3161bd77642595fb008a7bca71d55076 +PT= 7902cf5703a69f5ae912a36b1d0f6b64bd80190508987ba6 +TEST= 325 +KEY= 6e67276a0ed2afa907b6e2ef7193abd26ae4f307e94d3f673a5a463455095e1c +CT= 7902cf5703a69f5ae912a36b1d0f6b64bd80190508987ba6 +PT= 02ed4a10501b429ce1b5896469e2baad440601ae42f3a3b0 +TEST= 326 +KEY= e385edc4cc3248cf055ba8ff2188e94e8b517a6380af85ca7e5c479a17fafdac +CT= 02ed4a10501b429ce1b5896469e2baad440601ae42f3a3b0 +PT= acdd46505452582133b35b500754fb52d75dd6bfea7a9745 +TEST= 327 +KEY= 004c84286768849ea986eeaf75dab16fb8e2213387fb7e98a9019125fd806ae9 +CT= acdd46505452582133b35b500754fb52d75dd6bfea7a9745 +PT= c5e82ff87d6e255e2a6ba09e8d4cb78e609a3632f495622a +TEST= 328 +KEY= dabb4d6d4c8e7fef6c6ec15708b49431928981ad0ab7c916c99ba717091508c3 +CT= c5e82ff87d6e255e2a6ba09e8d4cb78e609a3632f495622a +PT= 57d44df7c6604fd09d88b22ca4ae0aa06dbcaded490ac8a2 +TEST= 329 +KEY= 708e61b37646462c3bba8ca0ced4dbe10f013381ae19c3b6a4270afa401fc061 +CT= 57d44df7c6604fd09d88b22ca4ae0aa06dbcaded490ac8a2 +PT= d079bf953c78794e72f126cf39b4d750f28faa7c0b375888 +TEST= 330 +KEY= e1794cd881e608f8ebc33335f2aca2af7df0154e97ad14e656a8a0864b2898e9 +CT= d079bf953c78794e72f126cf39b4d750f28faa7c0b375888 +PT= 35b10452355d514365e7107df6e018ffc09e50c399d76f05 +TEST= 331 +KEY= 8048da162e2b9763de723767c7f1f3ec18170533614d0c199636f045d2fff7ec +CT= 35b10452355d514365e7107df6e018ffc09e50c399d76f05 +PT= f77df8768e0e215c9fda2989bd6546658a86e9a4da9ddc98 +TEST= 332 +KEY= 99b91ffbbdd8724c290fcf1149ffd2b087cd2cbadc284a7c1cb019e108622b74 +CT= f77df8768e0e215c9fda2989bd6546658a86e9a4da9ddc98 +PT= 6d4e250748636357ed41a3196449ee8c67ca780ec22d7853 +TEST= 333 +KEY= 50da7a704185494a4441ea16019cb1e76a8c8fa3b861a4f07b7a61efca4f5327 +CT= 6d4e250748636357ed41a3196449ee8c67ca780ec22d7853 +PT= 40cf381905f167561004a9b89822ab86e026e5cb95e5ea0e +TEST= 334 +KEY= 558cb7886293aab1048ed20f046dd6b17a88261b20430f769b5c84245faab929 +CT= 40cf381905f167561004a9b89822ab86e026e5cb95e5ea0e +PT= 9567658ab6d3ae3223de3bb04005eccbbae847d0476e4615 +TEST= 335 +KEY= fdf4730e02cc70ac91e9b785b2be788359561dab6046e3bd21b4c3f418c4ff3c +CT= 9567658ab6d3ae3223de3bb04005eccbbae847d0476e4615 +PT= 7aa9a0d266fdca2430119dccb43c53c8b60cefeb6a7bac4d +TEST= 336 +KEY= 34e3181e888515dceb401757d443b2a769478067d47ab07597b82c1f72bf5371 +CT= 7aa9a0d266fdca2430119dccb43c53c8b60cefeb6a7bac4d +PT= e09b7d6532b986478870fdae5e3b2f2a898507e0eef43651 +TEST= 337 +KEY= 843c727d845716100bdb6a32e6fa34e0e1377dc98a419f5f1e3d2bff9c4b6520 +CT= e09b7d6532b986478870fdae5e3b2f2a898507e0eef43651 +PT= 501c4edd40a26a186a73335ade41645f4a615671fc05f897 +TEST= 338 +KEY= e971d3a5475091565bc724efa6585ef88b444e935400fb00545c7d8e604e9db7 +CT= 501c4edd40a26a186a73335ade41645f4a615671fc05f897 +PT= 8a772ad12bcd7ba7860e24a37930705c9c79ae49346416c2 +TEST= 339 +KEY= aa510710cc3be3d6d1b00e3e8d95255f0d4a6a302d308b5cc825d3c7542a8b75 +CT= 8a772ad12bcd7ba7860e24a37930705c9c79ae49346416c2 +PT= 780d8ad6a2f5a162aabe3dbbb96ef4f99b98f5421799c849 +TEST= 340 +KEY= 69d42109619ded2fa9bd84e82f60843da7f4578b945e7fa553bd268543b3433c +CT= 780d8ad6a2f5a162aabe3dbbb96ef4f99b98f5421799c849 +PT= ae11b0db9dd06d18fee7881b6e2b65a7275f3f0979090231 +TEST= 341 +KEY= 34c1a53128d3b28407ac3433b2b0e9255913df90fa751a0274e2198c3aba410d +CT= ae11b0db9dd06d18fee7881b6e2b65a7275f3f0979090231 +PT= 180ade81c397cb6d33780729863a289ededf93a9c3692e29 +TEST= 342 +KEY= d355af1e58bd84451fa6eab2712722486a6bd8b97c4f329caa3d8a25f9d36f24 +CT= 180ade81c397cb6d33780729863a289ededf93a9c3692e29 +PT= 833f118f808360451aecb954f4b6e5e4efa7c7da7ea71979 +TEST= 343 +KEY= a0fa15cb174110ee9c99fb3df1a4420d708761ed88f9d778459a4dff8774765d +CT= 833f118f808360451aecb954f4b6e5e4efa7c7da7ea71979 +PT= 626d35163ab7a3cf8be7809a61cf58ec1a4e7a86f4fdac1a +TEST= 344 +KEY= ce914067f9b3b4cdfef4ce2bcb13e1c2fb60e177e9368f945fd437797389da47 +CT= 626d35163ab7a3cf8be7809a61cf58ec1a4e7a86f4fdac1a +PT= 48358ef593d597b60ac526746005ed50ee7f1bb0ae076e41 +TEST= 345 +KEY= 6a798fd40cd93508b6c140de58c67674f1a5c703893362c4b1ab2cc9dd8eb406 +CT= 48358ef593d597b60ac526746005ed50ee7f1bb0ae076e41 +PT= 9882357e845a4ff459b159e10c2b9047b4986c8aa444ce9d +TEST= 346 +KEY= 456dd8ff720fed262e4375a0dc9c3980a8149ee28518f2830533404379ca7a9b +CT= 9882357e845a4ff459b159e10c2b9047b4986c8aa444ce9d +PT= 9a99c31c9ab400200dc3340ae2027b28b38cba70126485c0 +TEST= 347 +KEY= b5d6767afdbb7118b4dab6bc462839a0a5d7aae8671a89abb6bffa336baeff5b +CT= 9a99c31c9ab400200dc3340ae2027b28b38cba70126485c0 +PT= e3e51f154e5b1d3944cee3ac38aaf778361b852febe5f812 +TEST= 348 +KEY= aa935d4a9bb6802b573fa9a908732499e11949445fb07ed380a47f1c804b0749 +CT= e3e51f154e5b1d3944cee3ac38aaf778361b852febe5f812 +PT= 26d846ef1373630afe231899873ffff4f6a9113be7613553 +TEST= 349 +KEY= 00698da43a9e47ad71e7ef461b0047931f3a51ddd88f8127760d6e27672a321a +CT= 26d846ef1373630afe231899873ffff4f6a9113be7613553 +PT= 667e56173afbec3f63e2027d1d61507e1f7b6068b098fb21 +TEST= 350 +KEY= 4bb0a6f3705c775b1799b95121fbabac7cd853a0c5eed15969760e4fd7b2c93b +CT= 667e56173afbec3f63e2027d1d61507e1f7b6068b098fb21 +PT= e9f46c1ef993b4154ae5ef0c8d61a9a97758ebef04b21e77 +TEST= 351 +KEY= d7fad0ec16e93e14fe6dd54fd8681fb9363dbcac488f78f01e2ee5a0d300d74c +CT= e9f46c1ef993b4154ae5ef0c8d61a9a97758ebef04b21e77 +PT= b00a1e3ff460914d53cee66e5ebbcfe7bc0481375b91931f +TEST= 352 +KEY= 69466f0e7781a2e54e67cb702c088ef465f35ac21634b717a22a649788914453 +CT= b00a1e3ff460914d53cee66e5ebbcfe7bc0481375b91931f +PT= cb98816d46f4113bc9554d359d0625eaf75cc7f1d45108bd +TEST= 353 +KEY= 88967247584b72d685ff4a1d6afc9fcfaca617f78b3292fd5576a3665cc04cee +CT= cb98816d46f4113bc9554d359d0625eaf75cc7f1d45108bd +PT= 83e2edfd2c450b1a64574aa2d754fd67c9376d47f465f812 +TEST= 354 +KEY= 75007b6312754872061da7e046b994d5c8f15d555c666f9a9c41ce21a8a5b4fc +CT= 83e2edfd2c450b1a64574aa2d754fd67c9376d47f465f812 +PT= 6590555bf6f917ed7867b41a57d1cbebe344fbc11c3b06fb +TEST= 355 +KEY= 2146d0c2fe806070638df2bbb0408338b096e94f0bb7a4717f0535e0b49eb207 +CT= 6590555bf6f917ed7867b41a57d1cbebe344fbc11c3b06fb +PT= bff79f203d84d23c9a767a7fe4a07688c48db3167a89854d +TEST= 356 +KEY= 42e62e1d67fa81ecdc7a6d9b8dc451042ae09330ef17d2f9bb8886f6ce17374a +CT= bff79f203d84d23c9a767a7fe4a07688c48db3167a89854d +PT= c0c17033e72a7bb1326c9030a90612d878f54fdcca21a347 +TEST= 357 +KEY= 457980552c2bdbb81cbb1da86aee2ab5188c03004611c021c37dc92a0436940d +CT= c0c17033e72a7bb1326c9030a90612d878f54fdcca21a347 +PT= e9d5e0f1a07b82db2751cd47fa9fb422b79f655d1b1ab0c6 +TEST= 358 +KEY= 11fa74633b8637e6f56efd59ca95a86e3fddce47bc8e740374e2ac771f2c24cb +CT= e9d5e0f1a07b82db2751cd47fa9fb422b79f655d1b1ab0c6 +PT= a258984abe2c9288a4e775c8ad0a816111eece154f3738dd +TEST= 359 +KEY= 501dfb50ab9a9f595736651374b93ae69b3abb8f1184f562650c6262501b1c16 +CT= a258984abe2c9288a4e775c8ad0a816111eece154f3738dd +PT= 336d3ccad83d3fa30d0d8f5d338d6c4ac4d93387edf40125 +TEST= 360 +KEY= a1ac5caac4f70ae6645b59d9ac840545963734d222099928a1d551e5bdef1d33 +CT= 336d3ccad83d3fa30d0d8f5d338d6c4ac4d93387edf40125 +PT= 4289b2c353399ef810beed15de9b71c6068d063d669f96f3 +TEST= 361 +KEY= 1380eb75957404d526d2eb1affbd9bbd8689d9c7fc92e8eea75857d8db708bc0 +CT= 4289b2c353399ef810beed15de9b71c6068d063d669f96f3 +PT= 61bde51f797be95f0dabe19c8fb543b4f484809134c31c7d +TEST= 362 +KEY= 0e0aa190a95d2709476f0e0586c672e28b22385b7327ab5a53dcd749efb397bd +CT= 61bde51f797be95f0dabe19c8fb543b4f484809134c31c7d +PT= 036c50c13ead1149738540eb0a9849205fbdca1361b64d01 +TEST= 363 +KEY= c2ac98f97aba657144035ec4b86b63abf8a778b079bfe27a0c611d5a8e05dabc +CT= 036c50c13ead1149738540eb0a9849205fbdca1361b64d01 +PT= ad42e4adb869f7ac4b1b23e2d70ddb3dbe3beca25320b0c8 +TEST= 364 +KEY= c2ee3c6795a988c3e941ba6900029407b3bc5b52aeb23947b25af1f8dd256a74 +CT= ad42e4adb869f7ac4b1b23e2d70ddb3dbe3beca25320b0c8 +PT= 921d03326e05daf001943c1211d1873e0b9439ff982ec35d +TEST= 365 +KEY= 6b17be1e0b711bd37b5cb95b6e074ef7b2286740bf63be79b9cec807450ba929 +CT= 921d03326e05daf001943c1211d1873e0b9439ff982ec35d +PT= 16a3202dc8b96a8974e6245615d1b10262cee735e192f573 +TEST= 366 +KEY= 218ea1a981bd0fcd6dff9976a6be247ec6ce4316aab20f7bdb002f32a4995c5a +CT= 16a3202dc8b96a8974e6245615d1b10262cee735e192f573 +PT= 1864b87ff099e54dfa9737f7dfefad95de9590f8486613c0 +TEST= 367 +KEY= 71d69f820c57d57d759b21095627c1333c5974e1755da2ee0595bfcaecff4f9a +CT= 1864b87ff099e54dfa9737f7dfefad95de9590f8486613c0 +PT= c7540b442843c21fb94b3f141cd765ec6c26ec900e4c5fd7 +TEST= 368 +KEY= ddb0d598a0138141b2cf2a4d7e64032c85124bf5698ac70269b3535ae2b3104d +CT= c7540b442843c21fb94b3f141cd765ec6c26ec900e4c5fd7 +PT= cc892d7c0bf803c81b155bea9aa6d36ff873b0e8c85cd3fe +TEST= 369 +KEY= bd64709ef3565f5e7e460731759c00e49e07101ff32c146d91c0e3b22aefc3b3 +CT= cc892d7c0bf803c81b155bea9aa6d36ff873b0e8c85cd3fe +PT= c8f584770a86fb8b32b5f330f785cb43b3d054608f2ccc95 +TEST= 370 +KEY= 4e6ddbf5a78948d7b6b383467f1afb6facb2e32f04a9df2e2210b7d2a5c30f26 +CT= c8f584770a86fb8b32b5f330f785cb43b3d054608f2ccc95 +PT= 5d589144ce51d81500b457949afc535676451cf04d5b4881 +TEST= 371 +KEY= 30ca21b2e626c421ebeb1202b14b237aac06b4bb9e558c785455ab22e89847a7 +CT= 5d589144ce51d81500b457949afc535676451cf04d5b4881 +PT= f14b472f9b72ca4c661d50c09ae1354edf2df405ed1eef28 +TEST= 372 +KEY= 421798d68560dd031aa0552d2a39e936ca1be47b04b4b9368b785f270586a88f +CT= f14b472f9b72ca4c661d50c09ae1354edf2df405ed1eef28 +PT= 52449b82b29606dc4cb7217d725264dae3e3b7a6ad5e44c7 +TEST= 373 +KEY= 9ff6b1c296acdced48e4ceaf98afefea86acc50676e6ddec689be881a8d8ec48 +CT= 52449b82b29606dc4cb7217d725264dae3e3b7a6ad5e44c7 +PT= 542da6c7d61b3c6e38a99d83a04febee4356a7ba727571f6 +TEST= 374 +KEY= fcfc2b210e9d23af1cc968684eb4d384be055885d6a936022bcd4f3bdaad9dbe +CT= 542da6c7d61b3c6e38a99d83a04febee4356a7ba727571f6 +PT= 9fba7a318b726a6a49368bc78596db5ca88084f149d57c27 +TEST= 375 +KEY= 2c54a680ac7500fe83731259c5c6b9eef733d342533fed5e834dcbca9378e199 +CT= 9fba7a318b726a6a49368bc78596db5ca88084f149d57c27 +PT= d4761934dd755e671a565aef1619bd5041f4df74c2dfade6 +TEST= 376 +KEY= 02eb7e874d75e80e57050b6d18b3e789ed6589ad4526500ec2b914be51a74c7f +CT= d4761934dd755e671a565aef1619bd5041f4df74c2dfade6 +PT= 82f9eda6a2ddfcca8669a0ce5b7476d3762020d17b614508 +TEST= 377 +KEY= 9744439289dc9e24d5fce6cbba6e1b436b0c29631e5226ddb499346f2ac60977 +CT= 82f9eda6a2ddfcca8669a0ce5b7476d3762020d17b614508 +PT= ad336173bda754f9d354d73d05e687a655c58e41bd112afb +TEST= 378 +KEY= d9e9e40b4353b5a178cf87b807c94fbab858fe5e1bb4a17be15cba2e97d7238c +CT= ad336173bda754f9d354d73d05e687a655c58e41bd112afb +PT= 4ab61a79634a4df4c12cda14c0bc8445289c871704f6e0e7 +TEST= 379 +KEY= e082f006a443325432799dc16483024e7974244adb08253ec9c03d399321c36b +CT= 4ab61a79634a4df4c12cda14c0bc8445289c871704f6e0e7 +PT= a421b68f4143bd2ccc7ffa5b03479a25b55a996ab188ddce +TEST= 380 +KEY= b55e8c65fdb419bf96582b4e25c0bf62b50bde11d84fbf1b7c9aa45322a91ea5 +CT= a421b68f4143bd2ccc7ffa5b03479a25b55a996ab188ddce +PT= a0373cb2e95352e3f497e5a38b152abe49f86fed40f2df84 +TEST= 381 +KEY= f7b1fe163b7dcd3e366f17fccc93ed81419c3bb2535a95a53562cbbe625bc121 +CT= a0373cb2e95352e3f497e5a38b152abe49f86fed40f2df84 +PT= 0aa386bd9fe620af5629fba00305ad7faafe4ee87a8cefd1 +TEST= 382 +KEY= 70ba399913a6a6393ccc91415375cd2e17b5c012505f38da9f9c855618d72ef0 +CT= 0aa386bd9fe620af5629fba00305ad7faafe4ee87a8cefd1 +PT= 6403581b7e7beb3f6bbe1b4ab1bfe2e6b4a595db1d986488 +TEST= 383 +KEY= b533a66ff671ff9958cfc95a2d0e26117c0bdb58e1e0da3c2b39108d054f4a78 +CT= 6403581b7e7beb3f6bbe1b4ab1bfe2e6b4a595db1d986488 +PT= 85531d1abcbca4f66bcbc0b80aaec377ee90efdfe9b6853f +TEST= 384 +KEY= f1088de6ed31d3e3dd9cd44091b282e717c01be0eb4e194bc5a9ff52ecf9cf47 +CT= 85531d1abcbca4f66bcbc0b80aaec377ee90efdfe9b6853f +PT= 8cd3e83067affe3d461967ec8b6f84c725806d7be88fdeea +TEST= 385 +KEY= d8ce45dcfe10148b514f3c70f61d7cda51d97c0c60219d8ce0299229047611ad +CT= 8cd3e83067affe3d461967ec8b6f84c725806d7be88fdeea +PT= 66e806590757ade3aabf0a4e4b066831232c806ee16f0de1 +TEST= 386 +KEY= 728415faebc2c41237a73a29f14ad139fb6676422b27f5bdc3051247e5191c4c +CT= 66e806590757ade3aabf0a4e4b066831232c806ee16f0de1 +PT= b87907a009d3a1b6a2bb3b8ba70ee76aa18caa9ee78db9a8 +TEST= 387 +KEY= 966cf91ae358772a8fde3d89f899708f59dd4dc98c2912d76289b8d90294a5e4 +CT= b87907a009d3a1b6a2bb3b8ba70ee76aa18caa9ee78db9a8 +PT= 6ec3179198477abe469f5af031f2d44011ac1b17e0298fb7 +TEST= 388 +KEY= 2ebf847ae43d34a0e11d2a1860de0a311f421739bddbc6977325a3cee2bd2a53 +CT= 6ec3179198477abe469f5af031f2d44011ac1b17e0298fb7 +PT= 27c06c2421e9b043f6c35fd312baf9ed1248379678799cb9 +TEST= 389 +KEY= 9309c02f47efd883c6dd463c4137ba72e98148eaaf613f7a616d94589ac4b6ea +CT= 27c06c2421e9b043f6c35fd312baf9ed1248379678799cb9 +PT= 7e6985a6846b50d05b341b3b5a81fb135ceb3ed9f89eb3e4 +TEST= 390 +KEY= 3380d0877f1b104db8b4c39ac55ceaa2b2b553d1f5e0c4693d86aa81625a050e +CT= 7e6985a6846b50d05b341b3b5a81fb135ceb3ed9f89eb3e4 +PT= a827bab8808524465d566f3d9456af6de7dfb2e8ba45f655 +TEST= 391 +KEY= 3916aa3a006779911093792245d9cee4efe33cec61b66b04da591869d81ff35b +CT= a827bab8808524465d566f3d9456af6de7dfb2e8ba45f655 +PT= 6a5696d4fb0bbd37eb2de451ad97c40c84a1d84f4316b7f8 +TEST= 392 +KEY= 6a8f172835fe877c7ac5eff6bed273d304ced8bdcc21af085ef8c0269b0944a3 +CT= 6a5696d4fb0bbd37eb2de451ad97c40c84a1d84f4316b7f8 +PT= 1421ee7fbddbbdf05d4c7b482b555e09a711502adfb02e0e +TEST= 393 +KEY= 49bd53abf9cec2f06ee401890309ce235982a3f5e774f101f9e9900c44b96aad +CT= 1421ee7fbddbbdf05d4c7b482b555e09a711502adfb02e0e +PT= 886e5cbd388a6bf5f6a3c0b24e2996a3c3f2f7b8e7d01ac5 +TEST= 394 +KEY= 76dfb1aa97f04e6ee68a5d343b83a5d6af216347a95d67a23a1b67b4a3697068 +CT= 886e5cbd388a6bf5f6a3c0b24e2996a3c3f2f7b8e7d01ac5 +PT= 0dcd5858b9425c730318fd08e4a51352e38a9d83433ebf2d +TEST= 395 +KEY= 2085e770900dabe7eb47056c82c1f9a5ac399e4f4df874f0d991fa37e057cf45 +CT= 0dcd5858b9425c730318fd08e4a51352e38a9d83433ebf2d +PT= 0b77c261351f1fcda5165bfb4a2a66d8b71fb819318b3240 +TEST= 396 +KEY= 1af9e08b6e7d05a0e030c70db7dee668092fc5b407d212286e8e422ed1dcfd05 +CT= 0b77c261351f1fcda5165bfb4a2a66d8b71fb819318b3240 +PT= a94df4b2850842b78e259b93ddf175aad461a42e37714ada +TEST= 397 +KEY= 3c418d4553f8bf10497d33bf32d6a4df870a5e27da236782baefe600e6adb7df +CT= a94df4b2850842b78e259b93ddf175aad461a42e37714ada +PT= c352aa7deaf3efc63dafb9b9a2c7eda3e86fe1bc0a827e9b +TEST= 398 +KEY= 54e06c70f3e995a18a2f99c2d8254b19baa5e79e78e48a21528007bcec2fc944 +CT= c352aa7deaf3efc63dafb9b9a2c7eda3e86fe1bc0a827e9b +PT= c8573e7ed3875c19b5fa442e5f3c56191234f68366f582f4 +TEST= 399 +KEY= ab712b2cb4d7d1354278a7bc0ba217000f5fa3b027d8dc3840b4f13f8ada4bb0 +CT= c8573e7ed3875c19b5fa442e5f3c56191234f68366f582f4 +PT= a69128cfdae5eff043600b8992193799375eadcf7b6dd909 diff --git a/flint/test/testvals/ecbmd84.txt b/flint/test/testvals/ecbmd84.txt new file mode 100644 index 0000000..91899cb --- /dev/null +++ b/flint/test/testvals/ecbmd84.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= b55bedc7cf87d170e12efbb6e0f87a686b3d51a10d971a253d6744eed4ad47fc +TEST= 1 +KEY= 6b3d51a10d971a253d6744eed4ad47fc +CT= b55bedc7cf87d170e12efbb6e0f87a686b3d51a10d971a253d6744eed4ad47fc +PT= 1ff442d1117a4e699e9fd7dfbce5715820b62a5a67f104e5b0caa5b3e1893396 +TEST= 2 +KEY= 4b8b7bfb6a661ec08dade15d3524746a +CT= 1ff442d1117a4e699e9fd7dfbce5715820b62a5a67f104e5b0caa5b3e1893396 +PT= 244f9729ca6dde970cf8c61805992a8b8092af8e98ffd5041e34e8506ab2dbbb +TEST= 3 +KEY= cb19d475f299cbc49399090d5f96afd1 +CT= 244f9729ca6dde970cf8c61805992a8b8092af8e98ffd5041e34e8506ab2dbbb +PT= 00510604f81431df84f37930d8e717d56ae8b3816d5ca68ea4d152117e6697e0 +TEST= 4 +KEY= a1f167f49fc56d4a37485b1c21f03831 +CT= 00510604f81431df84f37930d8e717d56ae8b3816d5ca68ea4d152117e6697e0 +PT= ff2115183aadbde0c1e30d3b2ffd53eaa4b3da41e5c4ec391f5b7dd1e8f7ccc8 +TEST= 5 +KEY= 0542bdb57a018173281326cdc907f4f9 +CT= ff2115183aadbde0c1e30d3b2ffd53eaa4b3da41e5c4ec391f5b7dd1e8f7ccc8 +PT= 80872125e5e94be93697142f07ff52581d0329b2e275d2e788a44788d65590a7 +TEST= 6 +KEY= 1841940798745394a0b761451f52645e +CT= 80872125e5e94be93697142f07ff52581d0329b2e275d2e788a44788d65590a7 +PT= 6f389b7e7435c1891824a71782f1c3267d29bd6f7da3010d542b86d0ca2ddf72 +TEST= 7 +KEY= 65682968e5d75299f49ce795d57fbb2c +CT= 6f389b7e7435c1891824a71782f1c3267d29bd6f7da3010d542b86d0ca2ddf72 +PT= 6e47cd9620b25858e2f4fb869e9e2163d5a0a7f484aa7b7e45e5535ee9080bc7 +TEST= 8 +KEY= b0c88e9c617d29e7b179b4cb3c77b0eb +CT= 6e47cd9620b25858e2f4fb869e9e2163d5a0a7f484aa7b7e45e5535ee9080bc7 +PT= a2c47bc297a3e463c63ff114ffd009ad2b8aa315fd7b8ed176fbfc3418997613 +TEST= 9 +KEY= 9b422d899c06a736c78248ff24eec6f8 +CT= a2c47bc297a3e463c63ff114ffd009ad2b8aa315fd7b8ed176fbfc3418997613 +PT= 2f8a9599bba56c09a6363efe020f5f7396baab73cba347038faa609be719f6f1 +TEST= 10 +KEY= 0df886fa57a5e03548282864c3f73009 +CT= 2f8a9599bba56c09a6363efe020f5f7396baab73cba347038faa609be719f6f1 +PT= eb3f1520015271cacc260efbba13e1cd6caa96cedab4ff4580207997ebe25c5e +TEST= 11 +KEY= 615210348d111f70c80851f328156c57 +CT= eb3f1520015271cacc260efbba13e1cd6caa96cedab4ff4580207997ebe25c5e +PT= 92993a55d7f03eaeabc94c1bddd8ccad096c984b945bf22715967c7d2056fac7 +TEST= 12 +KEY= 683e887f194aed57dd9e2d8e08439690 +CT= 92993a55d7f03eaeabc94c1bddd8ccad096c984b945bf22715967c7d2056fac7 +PT= e2cf30d3b2ad409f5ee2d4613e651a7c06a5cf41f937f6ce2a88da7622341170 +TEST= 13 +KEY= 6e9b473ee07d1b99f716f7f82a7787e0 +CT= e2cf30d3b2ad409f5ee2d4613e651a7c06a5cf41f937f6ce2a88da7622341170 +PT= c61cb3f97cdeffb5450f7124a31ced4d49a82c133834ede98a1e8b3eaf561266 +TEST= 14 +KEY= 27336b2dd849f6707d087cc685219586 +CT= c61cb3f97cdeffb5450f7124a31ced4d49a82c133834ede98a1e8b3eaf561266 +PT= 858853b7a62d26616ee80fff25d5dfe93db1bbce5ee964b0e3a17a877904b6a0 +TEST= 15 +KEY= 1a82d0e386a092c09ea90641fc252326 +CT= 858853b7a62d26616ee80fff25d5dfe93db1bbce5ee964b0e3a17a877904b6a0 +PT= 2a7cff2013150fada9567dbeb875fc51486a580b509949ec1c2fc3caa30c7bbb +TEST= 16 +KEY= 52e888e8d639db2c8286c58b5f29589d +CT= 2a7cff2013150fada9567dbeb875fc51486a580b509949ec1c2fc3caa30c7bbb +PT= fd3b0971d2591f54c92d90073dd1b3145cd633c9df555c4f5fd713251ce50619 +TEST= 17 +KEY= 0e3ebb21096c8763dd51d6ae43cc5e84 +CT= fd3b0971d2591f54c92d90073dd1b3145cd633c9df555c4f5fd713251ce50619 +PT= 4d2c5f708097b0313083af160ba3df65868aea57dea9f248d930fd1509e52c3f +TEST= 18 +KEY= 88b45176d7c5752b04612bbb4a2972bb +CT= 4d2c5f708097b0313083af160ba3df65868aea57dea9f248d930fd1509e52c3f +PT= c249cc5026a688b055e7bc50a0e2a118f563ec79d9d14e3dd443f4fc35951414 +TEST= 19 +KEY= 7dd7bd0f0e143b16d022df477fbc66af +CT= c249cc5026a688b055e7bc50a0e2a118f563ec79d9d14e3dd443f4fc35951414 +PT= c288b0c73fbd2f41a1e3f16fced0f95cbdefe70a10fd2b2ced33921e376ae833 +TEST= 20 +KEY= c0385a051ee9103a3d114d5948d68e9c +CT= c288b0c73fbd2f41a1e3f16fced0f95cbdefe70a10fd2b2ced33921e376ae833 +PT= cfbd67664c907900aaf272a18737cbe47b7d3436154d64e42d13b4fab8188fdc +TEST= 21 +KEY= bb456e330ba474de1002f9a3f0ce0140 +CT= cfbd67664c907900aaf272a18737cbe47b7d3436154d64e42d13b4fab8188fdc +PT= 255f664f785eed509b1c632080459abe9c8d368141154dc24078fbac9082d309 +TEST= 22 +KEY= 27c858b24ab1391c507a020f604cd249 +CT= 255f664f785eed509b1c632080459abe9c8d368141154dc24078fbac9082d309 +PT= 3a90b148668a2c1269e47041bfce0f9ab9954f1ffda4e32adc5a879ea37674b0 +TEST= 23 +KEY= 9e5d17adb715da368c208591c33aa6f9 +CT= 3a90b148668a2c1269e47041bfce0f9ab9954f1ffda4e32adc5a879ea37674b0 +PT= 873c29487232e293059b62ec8020761b0665ff5c8126cd99b55f23c63dc35fe8 +TEST= 24 +KEY= 9838e8f1363317af397fa657fef9f911 +CT= 873c29487232e293059b62ec8020761b0665ff5c8126cd99b55f23c63dc35fe8 +PT= 26e410f71301a372a2e4ad43767294407268466f125c5bfe00880274561119b5 +TEST= 25 +KEY= ea50ae9e246f4c5139f7a423a8e8e0a4 +CT= 26e410f71301a372a2e4ad43767294407268466f125c5bfe00880274561119b5 +PT= 81a2e9221efe782d7c2a277002d9c7478be4c2bb6a6cd29f0ffa9991edbaae4d +TEST= 26 +KEY= 61b46c254e039ece360d3db245524ee9 +CT= 81a2e9221efe782d7c2a277002d9c7478be4c2bb6a6cd29f0ffa9991edbaae4d +PT= 6d804487517b14b880e81dd8158e29d786f51b54c1e8200ad1accd8d4a315b63 +TEST= 27 +KEY= e74177718febbec4e7a1f03f0f63158a +CT= 6d804487517b14b880e81dd8158e29d786f51b54c1e8200ad1accd8d4a315b63 +PT= 05d731ad6feaa6a7277ba03845873b9967be997efe42a81f7094a891a07cc6da +TEST= 28 +KEY= 80ffee0f71a916db973558aeaf1fd350 +CT= 05d731ad6feaa6a7277ba03845873b9967be997efe42a81f7094a891a07cc6da +PT= 7c78be957b118de00ac0ecd561a51b117d8dcdaf52b19cccfd68d810a821e3f5 +TEST= 29 +KEY= fd7223a023188a176a5d80be073e30a5 +CT= 7c78be957b118de00ac0ecd561a51b117d8dcdaf52b19cccfd68d810a821e3f5 +PT= 677f101781b54976ad43273c5cec2e5b48f5433970742e43011fa0214d172505 +TEST= 30 +KEY= b5876099536ca4546b42209f4a2915a0 +CT= 677f101781b54976ad43273c5cec2e5b48f5433970742e43011fa0214d172505 +PT= 890c24e0c1789c84ad4fed2b7c94d55af724baa74e90da66dedf6093b984c51d +TEST= 31 +KEY= 42a3da3e1dfc7e32b59d400cf3add0bd +CT= 890c24e0c1789c84ad4fed2b7c94d55af724baa74e90da66dedf6093b984c51d +PT= 6fe850741e4908cf23a4da7edaf88665a965e215f4b2343dfe381c30ff7b10fe +TEST= 32 +KEY= ebc6382be94e4a0f4ba55c3c0cd6c043 +CT= 6fe850741e4908cf23a4da7edaf88665a965e215f4b2343dfe381c30ff7b10fe +PT= a6a89a469bcb5a527a179e3471af13f9f91426708e583ef1bf6d8014a6daa943 +TEST= 33 +KEY= 12d21e5b671674fef4c8dc28aa0c6900 +CT= a6a89a469bcb5a527a179e3471af13f9f91426708e583ef1bf6d8014a6daa943 +PT= e76374e202971813d7ba5180723ad9cf63ba13ba70c11ee36734611b6c2331c4 +TEST= 34 +KEY= 71680de117d76a1d93fcbd33c62f58c4 +CT= e76374e202971813d7ba5180723ad9cf63ba13ba70c11ee36734611b6c2331c4 +PT= 525afc6781d8cef1dfc917e2a827bc90ad52e17409d1b82c2feaefb50054403d +TEST= 35 +KEY= dc3aec951e06d231bc165286c67b18f9 +CT= 525afc6781d8cef1dfc917e2a827bc90ad52e17409d1b82c2feaefb50054403d +PT= 737df89fe3ccb2b9af6d1dd2849152ca57f4c5e41b783462283cbe3dd6f04d76 +TEST= 36 +KEY= 8bce2971057ee653942aecbb108b558f +CT= 737df89fe3ccb2b9af6d1dd2849152ca57f4c5e41b783462283cbe3dd6f04d76 +PT= c62ab481324241806f97fc631e86ac9c3304e3c8d19afd96d079f55102cabe16 +TEST= 37 +KEY= b8cacab9d4e41bc5445319ea1241eb99 +CT= c62ab481324241806f97fc631e86ac9c3304e3c8d19afd96d079f55102cabe16 +PT= 1508344e14f849efac93fc637b2e6ab4af9dde2afe68b754522cf1c81e914719 +TEST= 38 +KEY= 175714932a8cac91167fe8220cd0ac80 +CT= 1508344e14f849efac93fc637b2e6ab4af9dde2afe68b754522cf1c81e914719 +PT= 8950d9c2c9dc9de7805943f0099df6e9043cae34866e29908f1f1bffbece4af6 +TEST= 39 +KEY= 136bbaa7ace285019960f3ddb21ee676 +CT= 8950d9c2c9dc9de7805943f0099df6e9043cae34866e29908f1f1bffbece4af6 +PT= dc0b8d329a7e36d2318d52a46bd68d51cbc047b5ee5dd93b6be42a8f3073891b +TEST= 40 +KEY= d8abfd1242bf5c3af284d952826d6f6d +CT= dc0b8d329a7e36d2318d52a46bd68d51cbc047b5ee5dd93b6be42a8f3073891b +PT= 892b1f66c3a33e965b1172debb74f77f4420ccb8ca37bdf41c89556a9f5dc847 +TEST= 41 +KEY= 9c8b31aa8888e1ceee0d8c381d30a72a +CT= 892b1f66c3a33e965b1172debb74f77f4420ccb8ca37bdf41c89556a9f5dc847 +PT= 04551d819e3ebd35d3d988e517fe1d6f010b676b30a9e4f63481062a46233c91 +TEST= 42 +KEY= 9d8056c1b8210538da8c8a125b139bbb +CT= 04551d819e3ebd35d3d988e517fe1d6f010b676b30a9e4f63481062a46233c91 +PT= a2273f893c39f22f7b7f6ffdf31d31679e67d8bbff0f69b7034312cb929a9bc6 +TEST= 43 +KEY= 03e78e7a472e6c8fd9cf98d9c989007d +CT= a2273f893c39f22f7b7f6ffdf31d31679e67d8bbff0f69b7034312cb929a9bc6 +PT= 9239257b64521d4ff683b49bb0af8aa2628fbd9365057c4b2a68b1903deaacb6 +TEST= 44 +KEY= 616833e9222b10c4f3a72949f463accb +CT= 9239257b64521d4ff683b49bb0af8aa2628fbd9365057c4b2a68b1903deaacb6 +PT= ac663f8f0a387f26b2f845122f88af0da68627a400c00da65fcb106c43551212 +TEST= 45 +KEY= c7ee144d22eb1d62ac6c3925b736bed9 +CT= ac663f8f0a387f26b2f845122f88af0da68627a400c00da65fcb106c43551212 +PT= 150fc91803bec487baaff025a2d740cc310ef410e8bfc849ac8f1810179b6926 +TEST= 46 +KEY= f6e0e05dca54d52b00e32135a0add7ff +CT= 150fc91803bec487baaff025a2d740cc310ef410e8bfc849ac8f1810179b6926 +PT= 34c26b39271f5f436fcf6b6ee896641dd22c5041c7fb223ef5640d1a625a9deb +TEST= 47 +KEY= 24ccb01c0daff715f5872c2fc2f74a14 +CT= 34c26b39271f5f436fcf6b6ee896641dd22c5041c7fb223ef5640d1a625a9deb +PT= ef85e4b47ccd61612defe6d2af22eabb4a2bd3fed6e8c443cd509bc353ba3237 +TEST= 48 +KEY= 6ee763e2db47335638d7b7ec914d7823 +CT= ef85e4b47ccd61612defe6d2af22eabb4a2bd3fed6e8c443cd509bc353ba3237 +PT= 6dbb80de4df56072d8aa31fe75b5e58aff39cc7536f30c4c17bffdb9807c5532 +TEST= 49 +KEY= 91deaf97edb43f1a2f684a5511312d11 +CT= 6dbb80de4df56072d8aa31fe75b5e58aff39cc7536f30c4c17bffdb9807c5532 +PT= 40264733eb7408c70bf08c8285649e0093cc99a21f8558d28846e860991924ac +TEST= 50 +KEY= 02123635f23167c8a72ea235882809bd +CT= 40264733eb7408c70bf08c8285649e0093cc99a21f8558d28846e860991924ac +PT= da5e8a35f1187d36a1cb1d1ef681c94f5888bb4a9191ad8ae6fa1fd5e5f844aa +TEST= 51 +KEY= 5a9a8d7f63a0ca4241d4bde06dd04d17 +CT= da5e8a35f1187d36a1cb1d1ef681c94f5888bb4a9191ad8ae6fa1fd5e5f844aa +PT= 23d532bd7d7c5b9526ce0d68c550ab130ea724721c792f7f62dc2262934286f7 +TEST= 52 +KEY= 543da90d7fd9e53d23089f82fe92cbe0 +CT= 23d532bd7d7c5b9526ce0d68c550ab130ea724721c792f7f62dc2262934286f7 +PT= 191da67c96fbe07bfc2a2685cd52fa9fec2e5c71b7bb1f5f593fe859afa9b720 +TEST= 53 +KEY= b813f57cc862fa627a3777db513b7cc0 +CT= 191da67c96fbe07bfc2a2685cd52fa9fec2e5c71b7bb1f5f593fe859afa9b720 +PT= 6d80dc8374462ae1917440c14411cbedf8a189463aa395e2afa351a6a63a9b7a +TEST= 54 +KEY= 40b27c3af2c16f80d594267df701e7ba +CT= 6d80dc8374462ae1917440c14411cbedf8a189463aa395e2afa351a6a63a9b7a +PT= 45c8e977f3159036859c62d00e08c33daee61889151eabb9f3406d3424def20f +TEST= 55 +KEY= ee5464b3e7dfc43926d44b49d3df15b5 +CT= 45c8e977f3159036859c62d00e08c33daee61889151eabb9f3406d3424def20f +PT= 49e90fb088d992b5340f94a256ceebca7c8aeee2b0da97d8f8016570cc7ca90b +TEST= 56 +KEY= 92de8a51570553e1ded52e391fa3bcbe +CT= 49e90fb088d992b5340f94a256ceebca7c8aeee2b0da97d8f8016570cc7ca90b +PT= 9d01672d3fbcdc58209eab7680a01f3665e2c09956f536eea4483e29a35cbcd2 +TEST= 57 +KEY= f73c4ac801f0650f7a9d1010bcff006c +CT= 9d01672d3fbcdc58209eab7680a01f3665e2c09956f536eea4483e29a35cbcd2 +PT= 0928929d5ea48c6a8e980f2c3a14297172497f6b1967e652258c1c336905249c +TEST= 58 +KEY= 857535a31897835d5f110c23d5fa24f0 +CT= 0928929d5ea48c6a8e980f2c3a14297172497f6b1967e652258c1c336905249c +PT= 4163034a5f8a0f9cb4a4b00974545a2098ab16e8bbea6c06ed312257004898d8 +TEST= 59 +KEY= 1dde234ba37def5bb2202e74d5b2bc28 +CT= 4163034a5f8a0f9cb4a4b00974545a2098ab16e8bbea6c06ed312257004898d8 +PT= c1c99b213e794b96591c1542573629b761a79d290794f5d7c9b4b8e25e79ace6 +TEST= 60 +KEY= 7c79be62a4e91a8c7b9496968bcb10ce +CT= c1c99b213e794b96591c1542573629b761a79d290794f5d7c9b4b8e25e79ace6 +PT= 91f25646e88b4a44ad1a6938ef97693fe2dca3830313b22a45d7b7c26860fe40 +TEST= 61 +KEY= 9ea51de1a7faa8a63e432154e3abee8e +CT= 91f25646e88b4a44ad1a6938ef97693fe2dca3830313b22a45d7b7c26860fe40 +PT= 44bdae66c0774efce7e89f0da7621bade05c20913c838b20b71b2c8d88c029e6 +TEST= 62 +KEY= 7ef93d709b79238689580dd96b6bc768 +CT= 44bdae66c0774efce7e89f0da7621bade05c20913c838b20b71b2c8d88c029e6 +PT= 3e1e65ef9c33bba7d7f6ec875b0b0588da3455a5f19a3df3b2311e78c371d09e +TEST= 63 +KEY= a4cd68d56ae31e753b6913a1a81a17f6 +CT= 3e1e65ef9c33bba7d7f6ec875b0b0588da3455a5f19a3df3b2311e78c371d09e +PT= 8c616d9b80dd669c57880c9a8c2ec080a96d6251e08ab8d161ff22ea2a39c316 +TEST= 64 +KEY= 0da00a848a69a6a45a96314b8223d4e0 +CT= 8c616d9b80dd669c57880c9a8c2ec080a96d6251e08ab8d161ff22ea2a39c316 +PT= f9dca50ee513393764d9906ddea7f0538bb3ce39dc4c67b86fbcedf5e0b43cf6 +TEST= 65 +KEY= 8613c4bd5625c11c352adcbe6297e816 +CT= f9dca50ee513393764d9906ddea7f0538bb3ce39dc4c67b86fbcedf5e0b43cf6 +PT= be4a27bd10a2819d4ea07ea3cfcb30963a16dbc72404f326428bc73587bed6da +TEST= 66 +KEY= bc051f7a7221323a77a11b8be5293ecc +CT= be4a27bd10a2819d4ea07ea3cfcb30963a16dbc72404f326428bc73587bed6da +PT= 99dd13cd3932c9081211d8578311eab9c1b09fc0b68b2b631358eb1674738e8a +TEST= 67 +KEY= 7db580bac4aa195964f9f09d915ab046 +CT= 99dd13cd3932c9081211d8578311eab9c1b09fc0b68b2b631358eb1674738e8a +PT= 34bd464d1acd82d3076216221a244d71f5e70b2fafe681b0d49fb5f82c2fe26c +TEST= 68 +KEY= 88528b956b4c98e9b0664565bd75522a +CT= 34bd464d1acd82d3076216221a244d71f5e70b2fafe681b0d49fb5f82c2fe26c +PT= 83705a1851224cea8059f2959233ca8bab2bf49071c88002bd3c6ad7b4596ef8 +TEST= 69 +KEY= 23797f051a8418eb0d5a2fb2092c3cd2 +CT= 83705a1851224cea8059f2959233ca8bab2bf49071c88002bd3c6ad7b4596ef8 +PT= 5ba1f7a872f1f2343fa783b46c970492386cd5e232b18f53787c345f14fb110d +TEST= 70 +KEY= 1b15aae7283597b875261bed1dd72ddf +CT= 5ba1f7a872f1f2343fa783b46c970492386cd5e232b18f53787c345f14fb110d +PT= 4e393cb448f30761ef6e90ebff32ac21de5914ec540a4f250db54ee787acbccc +TEST= 71 +KEY= c54cbe0b7c3fd89d7893550a9a7b9113 +CT= 4e393cb448f30761ef6e90ebff32ac21de5914ec540a4f250db54ee787acbccc +PT= 1f9ebf443f756e8be7a1db985147e16416f9f002758c33fab0076fc674f4afd0 +TEST= 72 +KEY= d3b54e0909b3eb67c8943accee8f3ec3 +CT= 1f9ebf443f756e8be7a1db985147e16416f9f002758c33fab0076fc674f4afd0 +PT= 7dea3740605a7eacc19c4b352e9f7d6e9ff9e091edef5e6246ede66066935328 +TEST= 73 +KEY= 4c4cae98e45cb5058e79dcac881c6deb +CT= 7dea3740605a7eacc19c4b352e9f7d6e9ff9e091edef5e6246ede66066935328 +PT= c37b61794934e7b0ca5275a278a0641125e34e69eb9c66df3cd1c8f5d771cce9 +TEST= 74 +KEY= 69afe0f10fc0d3dab2a814595f6da102 +CT= c37b61794934e7b0ca5275a278a0641125e34e69eb9c66df3cd1c8f5d771cce9 +PT= 9e528073a274501881c03f3c273a9805a7a1becbca1dfb5d0184f5500294268a +TEST= 75 +KEY= ce0e5e3ac5dd2887b32ce1095df98788 +CT= 9e528073a274501881c03f3c273a9805a7a1becbca1dfb5d0184f5500294268a +PT= 628b1580fdd385c7c1d6ff42f3f660c038becb36e8f95c877ef1f0106201557b +TEST= 76 +KEY= f6b0950c2d247400cddd11193ff8d2f3 +CT= 628b1580fdd385c7c1d6ff42f3f660c038becb36e8f95c877ef1f0106201557b +PT= 8a6ca68c2540edba829e2050bc6948ae8576cae35b3080abb4cb121b59f2a78c +TEST= 77 +KEY= 73c65fef7614f4ab79160302660a757f +CT= 8a6ca68c2540edba829e2050bc6948ae8576cae35b3080abb4cb121b59f2a78c +PT= 223b05d7f14d0764517b9bc59496fee29f90c4c6f1cb1a33df18414eb271849d +TEST= 78 +KEY= ec569b2987dfee98a60e424cd47bf1e2 +CT= 223b05d7f14d0764517b9bc59496fee29f90c4c6f1cb1a33df18414eb271849d +PT= bb18f636979b97b3705e30be182d7c7a41d3728c125ccfc24b910946eb488a9e +TEST= 79 +KEY= ad85e9a59583215aed9f4b0a3f337b7c +CT= bb18f636979b97b3705e30be182d7c7a41d3728c125ccfc24b910946eb488a9e +PT= 6c9cfe8334c7de769dfc7893d5b8de1a27f6595aa43595ee49857ab96a17efff +TEST= 80 +KEY= 8a73b0ff31b6b4b4a41a31b355249483 +CT= 6c9cfe8334c7de769dfc7893d5b8de1a27f6595aa43595ee49857ab96a17efff +PT= 22e8392136c80a537cba6d46c75c3a3174e15c1fb8bee99ac031139c96109c29 +TEST= 81 +KEY= fe92ece089085d2e642b222fc33408aa +CT= 22e8392136c80a537cba6d46c75c3a3174e15c1fb8bee99ac031139c96109c29 +PT= 1141db02730affdf63ee4b5c60873a15362e806186140169907126c9a9572647 +TEST= 82 +KEY= c8bc6c810f1c5c47f45a04e66a632eed +CT= 1141db02730affdf63ee4b5c60873a15362e806186140169907126c9a9572647 +PT= c58fb650b2d3f54745cdd2f1d2a48cbc5b76aa2122d5e47f589f27563c53abc4 +TEST= 83 +KEY= 93cac6a02dc9b838acc523b056308529 +CT= c58fb650b2d3f54745cdd2f1d2a48cbc5b76aa2122d5e47f589f27563c53abc4 +PT= 850f3ab2056f042a1f40757db072b96900aca2c12f190ce4c14bba577d76576a +TEST= 84 +KEY= 9366646102d0b4dc6d8e99e72b46d243 +CT= 850f3ab2056f042a1f40757db072b96900aca2c12f190ce4c14bba577d76576a +PT= 36ea1e863e6b502dfeb81b3395e78601596cf43460533c60b0669a0e7bcd54b8 +TEST= 85 +KEY= ca0a9055628388bcdde803e9508b86fb +CT= 36ea1e863e6b502dfeb81b3395e78601596cf43460533c60b0669a0e7bcd54b8 +PT= b6450cb06e1cc94b0b78411dfe58346d0a7995229c4dce2c17955c813794dd5f +TEST= 86 +KEY= c0730577fece4690ca7d5f68671f5ba4 +CT= b6450cb06e1cc94b0b78411dfe58346d0a7995229c4dce2c17955c813794dd5f +PT= f4b2f8934a93670d3ae4f9b50d420c9ac2ebd2d6a8c4761741fcf974413d2cc1 +TEST= 87 +KEY= 0298d7a1560a30878b81a61c26227765 +CT= f4b2f8934a93670d3ae4f9b50d420c9ac2ebd2d6a8c4761741fcf974413d2cc1 +PT= 0f503610064ab469d889aee31de6f2890a5e950a30f0f77b3f107101f4a2b326 +TEST= 88 +KEY= 08c642ab66fac7fcb491d71dd280c443 +CT= 0f503610064ab469d889aee31de6f2890a5e950a30f0f77b3f107101f4a2b326 +PT= f9bd080e8287b0e80011ac979e1f3b466718649143ddb21b30ab428d501b9bdc +TEST= 89 +KEY= 6fde263a252775e7843a9590829b5f9f +CT= f9bd080e8287b0e80011ac979e1f3b466718649143ddb21b30ab428d501b9bdc +PT= 7bdace24f7a756d17e0afcb329c39411fac38682b32af21e64ec66e8887b78a7 +TEST= 90 +KEY= 951da0b8960d87f9e0d6f3780ae02738 +CT= 7bdace24f7a756d17e0afcb329c39411fac38682b32af21e64ec66e8887b78a7 +PT= 95bc822a6dbfa589bb792acda44be235cf11ef8944de2b22f33f6a79119279f3 +TEST= 91 +KEY= 5a0c4f31d2d3acdb13e999011b725ecb +CT= 95bc822a6dbfa589bb792acda44be235cf11ef8944de2b22f33f6a79119279f3 +PT= 674797e7b619dcbd905a5946854d865e43a63f0c9c80936a34531b89844af39d +TEST= 92 +KEY= 19aa703d4e533fb127ba82889f38ad56 +CT= 674797e7b619dcbd905a5946854d865e43a63f0c9c80936a34531b89844af39d +PT= 46cbf7fdcdfafc08fd76eafd3c0b7e85e0398770364e3d4b56586d202819fc1a +TEST= 93 +KEY= f993f74d781d02fa71e2efa8b721514c +CT= 46cbf7fdcdfafc08fd76eafd3c0b7e85e0398770364e3d4b56586d202819fc1a +PT= f50eb3722538c247f4d98c4f32de9312c6015512fdd4cddc5c1b4a42d3594f09 +TEST= 94 +KEY= 3f92a25f85c9cf262df9a5ea64781e45 +CT= f50eb3722538c247f4d98c4f32de9312c6015512fdd4cddc5c1b4a42d3594f09 +PT= 9352e08ca9baca253e2b566ce8a7000d5673f01b98a6966ada2fef934a32c830 +TEST= 95 +KEY= 69e152441d6f594cf7d64a792e4ad675 +CT= 9352e08ca9baca253e2b566ce8a7000d5673f01b98a6966ada2fef934a32c830 +PT= 3b554ebfbb135179faa7cb4f61b8b4c448fd6c3ef323ff584522bf89ab2dfbb8 +TEST= 96 +KEY= 211c3e7aee4ca614b2f4f5f085672dcd +CT= 3b554ebfbb135179faa7cb4f61b8b4c448fd6c3ef323ff584522bf89ab2dfbb8 +PT= 263f13616c84d84b3b6be97a4c6a58e24a9ebab089c8543aa54f9e870002bf5f +TEST= 97 +KEY= 6b8284ca6784f22e17bb6b7785659292 +CT= 263f13616c84d84b3b6be97a4c6a58e24a9ebab089c8543aa54f9e870002bf5f +PT= 446ab549ba578b773de5e3d946a15bb28d004357acc1a558c5662aa87ea06a9e +TEST= 98 +KEY= e682c79dcb455776d2dd41dffbc5f80c +CT= 446ab549ba578b773de5e3d946a15bb28d004357acc1a558c5662aa87ea06a9e +PT= 897afd7bea4f01363c43e29c7c2e444fd4ba952657c1865d5ff4cad599d45281 +TEST= 99 +KEY= 323852bb9c84d12b8d298b0a6211aa8d +CT= 897afd7bea4f01363c43e29c7c2e444fd4ba952657c1865d5ff4cad599d45281 +PT= b707299c637ee1887e9ba4d5aea2955add116dd54245dfe13b3416c084c7d4a7 +TEST= 100 +KEY= ef293f6edec10ecab61d9dcae6d67e2a +CT= b707299c637ee1887e9ba4d5aea2955add116dd54245dfe13b3416c084c7d4a7 +PT= 65868e52d8b97b2c9efa1c2dfb9bad51bbca06f5c0b6ad24165a457b2133d256 +TEST= 101 +KEY= 54e3399b1e77a3eea047d8b1c7e5ac7c +CT= 65868e52d8b97b2c9efa1c2dfb9bad51bbca06f5c0b6ad24165a457b2133d256 +PT= c4ba46494825b4edb5559ace4e747a102e8839cc5aa625ff7194ffac65b948bb +TEST= 102 +KEY= 7a6b005744d18611d1d3271da25ce4c7 +CT= c4ba46494825b4edb5559ace4e747a102e8839cc5aa625ff7194ffac65b948bb +PT= 8ad89d558681eebdb501b3db65dcebe935336a9d072792ba01cc0129501f209b +TEST= 103 +KEY= 4f586aca43f614abd01f2634f243c45c +CT= 8ad89d558681eebdb501b3db65dcebe935336a9d072792ba01cc0129501f209b +PT= 3070ad51b8fad536faedda0ce8817e7a33bbe3c5e4aef606d6460e4854cbdda5 +TEST= 104 +KEY= 7ce3890fa758e2ad0659287ca68819f9 +CT= 3070ad51b8fad536faedda0ce8817e7a33bbe3c5e4aef606d6460e4854cbdda5 +PT= 4d6381022a22ef8c83352e812b77bce9fd01cf3fdc0b8939c66749d2fee24888 +TEST= 105 +KEY= 81e246307b536b94c03e61ae586a5171 +CT= 4d6381022a22ef8c83352e812b77bce9fd01cf3fdc0b8939c66749d2fee24888 +PT= 092733e5e5febf3f73d43ce9c5b06880ced2a55d29931f3c79cbf69a512a7255 +TEST= 106 +KEY= 4f30e36d52c074a8b9f5973409402324 +CT= 092733e5e5febf3f73d43ce9c5b06880ced2a55d29931f3c79cbf69a512a7255 +PT= ed9a74df8b58bad9d6f0618bb08bac6077847ceb5e1667f749bd2926bcc06b9d +TEST= 107 +KEY= 38b49f860cd6135ff048be12b58048b9 +CT= ed9a74df8b58bad9d6f0618bb08bac6077847ceb5e1667f749bd2926bcc06b9d +PT= 259d9bb23242e4d00dee1dd5cc6f46ee1a83691da392b9cdeea838c14991fef5 +TEST= 108 +KEY= 2237f69baf44aa921ee086d3fc11b64c +CT= 259d9bb23242e4d00dee1dd5cc6f46ee1a83691da392b9cdeea838c14991fef5 +PT= 0a565df9ce4271734a6de8f7dd9d3e52ba997ca7f7d7406db905cd02fe723a05 +TEST= 109 +KEY= 98ae8a3c5893eaffa7e54bd102638c49 +CT= 0a565df9ce4271734a6de8f7dd9d3e52ba997ca7f7d7406db905cd02fe723a05 +PT= 059ea1dde5bdee988c35ce9b131eb6a8c2cc5232410652cfcccb7b9eb123eb90 +TEST= 110 +KEY= 5a62d80e1995b8306b2e304fb34067d9 +CT= 059ea1dde5bdee988c35ce9b131eb6a8c2cc5232410652cfcccb7b9eb123eb90 +PT= a487b8aaa1a769c53bc4e28d4f706d4d9f85b8e2bfd7093637dbd7071a1c96fe +TEST= 111 +KEY= c5e760eca642b1065cf5e748a95cf127 +CT= a487b8aaa1a769c53bc4e28d4f706d4d9f85b8e2bfd7093637dbd7071a1c96fe +PT= 405f2be6e2e035a4925a08206bbddb1839d5b16ffe1e7bb53c7d647062afb936 +TEST= 112 +KEY= fc32d183585ccab360888338cbf34811 +CT= 405f2be6e2e035a4925a08206bbddb1839d5b16ffe1e7bb53c7d647062afb936 +PT= 754c1f35004fb133e0109f2767d9b827b1d8644f9908de463b078d4bd1785a25 +TEST= 113 +KEY= 4deab5ccc15414f55b8f0e731a8b1234 +CT= 754c1f35004fb133e0109f2767d9b827b1d8644f9908de463b078d4bd1785a25 +PT= 4b6e1b68e009544cac2e5f62ca86fb2ee49ab7553cf998b9820decf8e59462b4 +TEST= 114 +KEY= a9700299fdad8c4cd982e28bff1f7080 +CT= 4b6e1b68e009544cac2e5f62ca86fb2ee49ab7553cf998b9820decf8e59462b4 +PT= c2d0e77ec0ea1b8c41b9e3e2b8177107926db7ba427b9e17dba3b966b3ac7144 +TEST= 115 +KEY= 3b1db523bfd6125b02215bed4cb301c4 +CT= c2d0e77ec0ea1b8c41b9e3e2b8177107926db7ba427b9e17dba3b966b3ac7144 +PT= 4a838fc48d5ddccf5495ae0f7dcec1086cc6dc4ab6e4fe11792c3c736a8eebd0 +TEST= 116 +KEY= 57db69690932ec4a7b0d679e263dea14 +CT= 4a838fc48d5ddccf5495ae0f7dcec1086cc6dc4ab6e4fe11792c3c736a8eebd0 +PT= 7d0e40439efe9dce16e31c746cbe6809241a834be80ce8e91627b42d685dadbb +TEST= 117 +KEY= 73c1ea22e13e04a36d2ad3b34e6047af +CT= 7d0e40439efe9dce16e31c746cbe6809241a834be80ce8e91627b42d685dadbb +PT= 242700bd7c27c4a8cc164a9bba2543aeaabb4a9865c95d9408ba57780e91a1ca +TEST= 118 +KEY= d97aa0ba84f75937659084cb40f1e665 +CT= 242700bd7c27c4a8cc164a9bba2543aeaabb4a9865c95d9408ba57780e91a1ca +PT= c26f24157e19f704c42b9cdce2c5dfd577066a2e6e169fe23302517008f3c003 +TEST= 119 +KEY= ae7cca94eae1c6d55692d5bb48022666 +CT= c26f24157e19f704c42b9cdce2c5dfd577066a2e6e169fe23302517008f3c003 +PT= 8f3ecd4715d5ea618cc589a2ecccf0e455880fa24b77ca1364a991f6570dcaab +TEST= 120 +KEY= fbf4c536a1960cc6323b444d1f0feccd +CT= 8f3ecd4715d5ea618cc589a2ecccf0e455880fa24b77ca1364a991f6570dcaab +PT= 37c1fee82c9dc9883a7721871e0ddf3a6a20b4d5c694532145aba18fb597fb79 +TEST= 121 +KEY= 91d471e367025fe77790e5c2aa9817b4 +CT= 37c1fee82c9dc9883a7721871e0ddf3a6a20b4d5c694532145aba18fb597fb79 +PT= bb7159191bd04b85a13107fa4c950f5e16dd728746920a8c8070955531f16b12 +TEST= 122 +KEY= 870903642190556bf7e070979b697ca6 +CT= bb7159191bd04b85a13107fa4c950f5e16dd728746920a8c8070955531f16b12 +PT= d8a60a7ba4d96d4f5de50a2330f06d9f3b7e767536a0ed23f7c25ae54acaf006 +TEST= 123 +KEY= bc7775111730b84800222a72d1a38ca0 +CT= d8a60a7ba4d96d4f5de50a2330f06d9f3b7e767536a0ed23f7c25ae54acaf006 +PT= e275c0ff1ffc68a8dc824869a4980924f4a5daf4ccfc3f259a8d427960022b87 +TEST= 124 +KEY= 48d2afe5dbcc876d9aaf680bb1a1a727 +CT= e275c0ff1ffc68a8dc824869a4980924f4a5daf4ccfc3f259a8d427960022b87 +PT= e944c4fb8f1b76b0201faca729b59105434867f5fa1e0f67cd3845cc86a65039 +TEST= 125 +KEY= 0b9ac81021d2880a57972dc73707f71e +CT= e944c4fb8f1b76b0201faca729b59105434867f5fa1e0f67cd3845cc86a65039 +PT= 128b0be29df51c3951e996ba5680e6359e124fdabfdb9075a66f4a7a1b238283 +TEST= 126 +KEY= 958887ca9e09187ff1f867bd2c24759d +CT= 128b0be29df51c3951e996ba5680e6359e124fdabfdb9075a66f4a7a1b238283 +PT= 6ad19037c4c7479d173a4d1beb749594bd48e7c35cadcf8fa631dc709b557032 +TEST= 127 +KEY= 28c06009c2a4d7f057c9bbcdb77105af +CT= 6ad19037c4c7479d173a4d1beb749594bd48e7c35cadcf8fa631dc709b557032 +PT= 65b310cc2cc53d9655e3a6ea960eebe8238297ce5896dd2ab0a7b9e1fe42b93b +TEST= 128 +KEY= 0b42f7c79a320adae76e022c4933bc94 +CT= 65b310cc2cc53d9655e3a6ea960eebe8238297ce5896dd2ab0a7b9e1fe42b93b +PT= a5955e4b08bf7a816a5fedf6a1c313a77a4f5e0a39c57d32bfa6e3e13f4d2717 +TEST= 129 +KEY= 710da9cda3f777e858c8e1cd767e9b83 +CT= a5955e4b08bf7a816a5fedf6a1c313a77a4f5e0a39c57d32bfa6e3e13f4d2717 +PT= 43d3b0abce96148caaa2745728ea7223233e214aea4ad81992af8c9e2f1dea45 +TEST= 130 +KEY= 5233888749bdaff1ca676d53596371c6 +CT= 43d3b0abce96148caaa2745728ea7223233e214aea4ad81992af8c9e2f1dea45 +PT= 27c3ce7552bea33124732ac5af040752b1c09712e555ef063eeaa38521421d40 +TEST= 131 +KEY= e3f31f95ace840f7f48dced678216c86 +CT= 27c3ce7552bea33124732ac5af040752b1c09712e555ef063eeaa38521421d40 +PT= 7ef8d2861c31788cfd6848e342bba3a9678a39aa4ad4f3c61959020f5bb35e65 +TEST= 132 +KEY= 8479263fe63cb331edd4ccd9239232e3 +CT= 7ef8d2861c31788cfd6848e342bba3a9678a39aa4ad4f3c61959020f5bb35e65 +PT= 651f9869454c37ec876627646982f8ed05f779b1ad670e6d79b8011c9ef4299b +TEST= 133 +KEY= 818e5f8e4b5bbd5c946ccdc5bd661b78 +CT= 651f9869454c37ec876627646982f8ed05f779b1ad670e6d79b8011c9ef4299b +PT= f7753930c49725b30e60eefa1ebc39958ddbca1e37bda64ff0456a4c0549b950 +TEST= 134 +KEY= 0c5595907ce61b136429a789b82fa228 +CT= f7753930c49725b30e60eefa1ebc39958ddbca1e37bda64ff0456a4c0549b950 +PT= 5cef0506455a41f4cd7cb859c8b6160449a6d25eddb1fc76b662120e90bef88a +TEST= 135 +KEY= 45f347cea157e765d24bb58728915aa2 +CT= 5cef0506455a41f4cd7cb859c8b6160449a6d25eddb1fc76b662120e90bef88a +PT= 2d91c01ce11f963a1eb62687507a1ebfbbdd60dc3161d5906dd96f88a1a2f906 +TEST= 136 +KEY= fe2e2712903632f5bf92da0f8933a3a4 +CT= 2d91c01ce11f963a1eb62687507a1ebfbbdd60dc3161d5906dd96f88a1a2f906 +PT= 9283aee2b105007bd776c16682a7005724cdad0cbbbb59cb0c0548695b86c858 +TEST= 137 +KEY= dae38a1e2b8d6b3eb3979266d2b56bfc +CT= 9283aee2b105007bd776c16682a7005724cdad0cbbbb59cb0c0548695b86c858 +PT= c7c060a200a415ca655a1565831f1e2d892716763b58f4fdc0f788e423734f1b +TEST= 138 +KEY= 53c49c6810d59fc373601a82f1c624e7 +CT= c7c060a200a415ca655a1565831f1e2d892716763b58f4fdc0f788e423734f1b +PT= 9c78e38badf5d4ba6a1a4c5acb36dabcac24c82e282027d523eb140587a4a882 +TEST= 139 +KEY= ffe0544638f5b816508b0e8776628c65 +CT= 9c78e38badf5d4ba6a1a4c5acb36dabcac24c82e282027d523eb140587a4a882 +PT= 9dfd74a1ebf26422ea79c31144a872a5334937072d79bb35a7fa241dfd2580e1 +TEST= 140 +KEY= cca96341158c0323f7712a9a8b470c84 +CT= 9dfd74a1ebf26422ea79c31144a872a5334937072d79bb35a7fa241dfd2580e1 +PT= 747823e9527aab925b677d90d2e16aa41f2ab8328931048294524520cc69387e +TEST= 141 +KEY= d383db739cbd07a163236fba472e34fa +CT= 747823e9527aab925b677d90d2e16aa41f2ab8328931048294524520cc69387e +PT= e6a9992caffe826f357400eb377f145eb5bea815a1dd2cbf9c88c60413d2baac +TEST= 142 +KEY= 663d73663d602b1effaba9be54fc8e56 +CT= e6a9992caffe826f357400eb377f145eb5bea815a1dd2cbf9c88c60413d2baac +PT= d17425e485c6e2fc85a137bb101b9743db5d7a71de298690b9977fa4cf0f6b94 +TEST= 143 +KEY= bd600917e349ad8e463cd61a9bf3e5c2 +CT= d17425e485c6e2fc85a137bb101b9743db5d7a71de298690b9977fa4cf0f6b94 +PT= dcd9662aaf76c0526221313f0a9a54223d734b23f7fff38f1c22bfba64264acb +TEST= 144 +KEY= 8013423414b65e015a1e69a0ffd5af09 +CT= dcd9662aaf76c0526221313f0a9a54223d734b23f7fff38f1c22bfba64264acb +PT= cdc812c0c5ac583cadfd23a01f2ffab0f014c62f9fc65b041a41d795c6ad65b1 +TEST= 145 +KEY= 7007841b8b700505405fbe353978cab8 +CT= cdc812c0c5ac583cadfd23a01f2ffab0f014c62f9fc65b041a41d795c6ad65b1 +PT= e2b119fcb96d4e843b3999a05c68a55867232dac31defe4177227e537ad71986 +TEST= 146 +KEY= 1724a9b7baaefb44377dc06643afd33e +CT= e2b119fcb96d4e843b3999a05c68a55867232dac31defe4177227e537ad71986 +PT= 100eba6606157946b2c694612a0f202720a9733300884709d57ed24e9e710433 +TEST= 147 +KEY= 378dda84ba26bc4de2031228ddded70d +CT= 100eba6606157946b2c694612a0f202720a9733300884709d57ed24e9e710433 +PT= 863014b1ac653da7148d0e132aaa0a0197f8d0e8260ff15300f85b4ea54501cd +TEST= 148 +KEY= a0750a6c9c294d1ee2fb4966789bd6c0 +CT= 863014b1ac653da7148d0e132aaa0a0197f8d0e8260ff15300f85b4ea54501cd +PT= ad51e206d8c5e481e97f2d19d8fe99405ef0b15245507d46944a47c26747f18b +TEST= 149 +KEY= fe85bb3ed979305876b10ea41fdc274b +CT= ad51e206d8c5e481e97f2d19d8fe99405ef0b15245507d46944a47c26747f18b +PT= 2de28a0662b8cae8392e6e95648871ca83d8d098ef1c4a4e0273fafd871bef0d +TEST= 150 +KEY= 7d5d6ba636657a1674c2f45998c7c846 +CT= 2de28a0662b8cae8392e6e95648871ca83d8d098ef1c4a4e0273fafd871bef0d +PT= b2b63c5d4bd46b7a88cbedeeb0ceb03dd2d5fe8c8e05d72836b742a2b399b587 +TEST= 151 +KEY= af88952ab860ad3e4275b6fb2b5e7dc1 +CT= b2b63c5d4bd46b7a88cbedeeb0ceb03dd2d5fe8c8e05d72836b742a2b399b587 +PT= b814369453f98e823349c8ccafedda851353445b2ccdba6f995fe1057ed5e24f +TEST= 152 +KEY= bcdbd17194ad1751db2a57fe558b9f8e +CT= b814369453f98e823349c8ccafedda851353445b2ccdba6f995fe1057ed5e24f +PT= fd096255ba4804ce4b2c5e13358eb36ebb3de4960479c20b9dbae046b3248432 +TEST= 153 +KEY= 07e635e790d4d55a4690b7b8e6af1bbc +CT= fd096255ba4804ce4b2c5e13358eb36ebb3de4960479c20b9dbae046b3248432 +PT= 9e68bad0ec3422df21d6786eb184253fe47697ee5b1d88a8d467c80ed0040c1e +TEST= 154 +KEY= e390a209cbc95df292f77fb636ab17a2 +CT= 9e68bad0ec3422df21d6786eb184253fe47697ee5b1d88a8d467c80ed0040c1e +PT= 672f1b2c359cb1ab2ce65510195993adc5708b2977dd1c89e26ee8f866f9926b +TEST= 155 +KEY= 26e02920bc14417b7099974e505285c9 +CT= 672f1b2c359cb1ab2ce65510195993adc5708b2977dd1c89e26ee8f866f9926b +PT= 2b0dcfd343c9623c1ea841f3982eb8b162a90a54e63c9dc53676acb0333b0f18 +TEST= 156 +KEY= 444923745a28dcbe46ef3bfe63698ad1 +CT= 2b0dcfd343c9623c1ea841f3982eb8b162a90a54e63c9dc53676acb0333b0f18 +PT= 905a9f460f3df1c6dcc4d240f51acd879c123abee6dd731fb9b63d9200c6a449 +TEST= 157 +KEY= d85b19cabcf5afa1ff59066c63af2e98 +CT= 905a9f460f3df1c6dcc4d240f51acd879c123abee6dd731fb9b63d9200c6a449 +PT= afc864b49a073d84527c05d36552915e2026d6972b3fe27062758938f6f24ef6 +TEST= 158 +KEY= f87dcf5d97ca4dd19d2c8f54955d606e +CT= afc864b49a073d84527c05d36552915e2026d6972b3fe27062758938f6f24ef6 +PT= d83b34e7aae8168e946bf7a710c50184db5d537ca49ac645f6712dd852a39cd5 +TEST= 159 +KEY= 23209c2133508b946b5da28cc7fefcbb +CT= d83b34e7aae8168e946bf7a710c50184db5d537ca49ac645f6712dd852a39cd5 +PT= 3133c4243ae2c74cc023edf99729f375aad5720e63961530a11a185b96cc484c +TEST= 160 +KEY= 89f5ee2f50c69ea4ca47bad75132b4f7 +CT= 3133c4243ae2c74cc023edf99729f375aad5720e63961530a11a185b96cc484c +PT= 4f86fdcad376c1be0649fce2bd30012fcd95abb8fd53fd95efa6b5405d8cc0f3 +TEST= 161 +KEY= 44604597ad95633125e10f970cbe7404 +CT= 4f86fdcad376c1be0649fce2bd30012fcd95abb8fd53fd95efa6b5405d8cc0f3 +PT= 9e9b189c4767ec20398af92cd0191b5a460adafd456a3f5af07cdcac5c30dc7e +TEST= 162 +KEY= 026a9f6ae8ff5c6bd59dd33b508ea87a +CT= 9e9b189c4767ec20398af92cd0191b5a460adafd456a3f5af07cdcac5c30dc7e +PT= 784e196e098dde5dc1150ef15138ecc3ef50c97c5712f7c65ba78308e64bc04d +TEST= 163 +KEY= ed3a5616bfedabad8e3a5033b6c56837 +CT= 784e196e098dde5dc1150ef15138ecc3ef50c97c5712f7c65ba78308e64bc04d +PT= 432a4c954b439ddc97784a18366a598320e105fbcce590359e6eb3eb7b34592d +TEST= 164 +KEY= cddb53ed73083b981054e3d8cdf1311a +CT= 432a4c954b439ddc97784a18366a598320e105fbcce590359e6eb3eb7b34592d +PT= 2e6e1aa67d486e12d44ff94cbfe57801c621b331fa93f5f68a446c9f399a68f5 +TEST= 165 +KEY= 0bfae0dc899bce6e9a108f47f46b59ef +CT= 2e6e1aa67d486e12d44ff94cbfe57801c621b331fa93f5f68a446c9f399a68f5 +PT= 83da2150402fbb400cd16b490e3891da0798770a4c7bf7655e4f573430040b0c +TEST= 166 +KEY= 0c6297d6c5e0390bc45fd873c46f52e3 +CT= 83da2150402fbb400cd16b490e3891da0798770a4c7bf7655e4f573430040b0c +PT= 33357b6dc9027492f04f189515b068e3ed5b657d2e9b5be6a0087c4cdc058390 +TEST= 167 +KEY= e139f2abeb7b62ed6457a43f186ad173 +CT= 33357b6dc9027492f04f189515b068e3ed5b657d2e9b5be6a0087c4cdc058390 +PT= 00f596e3de8a67f665c4ae2da02b6ab51e461b10870c642ba3ca1b49fcf41449 +TEST= 168 +KEY= ff7fe9bb6c7706c6c79dbf76e49ec53a +CT= 00f596e3de8a67f665c4ae2da02b6ab51e461b10870c642ba3ca1b49fcf41449 +PT= f3aebe390ddaaeece3ef94c7bedc9113e4a0e383a846522db682d5215e2d3352 +TEST= 169 +KEY= 1bdf0a38c43154eb711f6a57bab3f668 +CT= f3aebe390ddaaeece3ef94c7bedc9113e4a0e383a846522db682d5215e2d3352 +PT= 99316933f3b686cbcd44b4bc3e29f51290ad29fecabd008d4525b89078fc217d +TEST= 170 +KEY= 8b7223c60e8c5466343ad2c7c24fd715 +CT= 99316933f3b686cbcd44b4bc3e29f51290ad29fecabd008d4525b89078fc217d +PT= 2b03428bd6d45dc2001875c24ab39ca2961b4810f4dab593983f13f74efd64d2 +TEST= 171 +KEY= 1d696bd6fa56e1f5ac05c1308cb2b3c7 +CT= 2b03428bd6d45dc2001875c24ab39ca2961b4810f4dab593983f13f74efd64d2 +PT= 3b48a874d5d5df74b1de4a726967d7db6f5495142fe536bd1736506aae27d26a +TEST= 172 +KEY= 723dfec2d5b3d748bb33915a229561ad +CT= 3b48a874d5d5df74b1de4a726967d7db6f5495142fe536bd1736506aae27d26a +PT= 8f5a61fa8da402510e3f9ba9b0bc6021d8115c9d3c9dd555b424301d65067ed6 +TEST= 173 +KEY= aa2ca25fe92e021d0f17a14747931f7b +CT= 8f5a61fa8da402510e3f9ba9b0bc6021d8115c9d3c9dd555b424301d65067ed6 +PT= f8a723ef49ee6a778bb8062d1de53fd2959b6015a5bcee8127054cdb4c9563b5 +TEST= 174 +KEY= 3fb7c24a4c92ec9c2812ed9c0b067cce +CT= f8a723ef49ee6a778bb8062d1de53fd2959b6015a5bcee8127054cdb4c9563b5 +PT= 25879a527336e86a08c7ab740a0bcb7eab283c74357640364ba9d552e32a9b18 +TEST= 175 +KEY= 949ffe3e79e4acaa63bb38cee82ce7d6 +CT= 25879a527336e86a08c7ab740a0bcb7eab283c74357640364ba9d552e32a9b18 +PT= 9544b36c3c17cc89ec2d0801996615ba1f3c1cca407703030ec76a373d2d4f4a +TEST= 176 +KEY= 8ba3e2f43993afa96d7c52f9d501a89c +CT= 9544b36c3c17cc89ec2d0801996615ba1f3c1cca407703030ec76a373d2d4f4a +PT= 08cb01271dc3455a069242ce6dd486099d7d1da9b72647005e6cd317c004a4d3 +TEST= 177 +KEY= 16deff5d8eb5e8a9331081ee15050c4f +CT= 08cb01271dc3455a069242ce6dd486099d7d1da9b72647005e6cd317c004a4d3 +PT= f9335472fe47d56610b95e1d44f8a4b8becae755db16cefea4934faa7dc5a32a +TEST= 178 +KEY= a814180855a326579783ce4468c0af65 +CT= f9335472fe47d56610b95e1d44f8a4b8becae755db16cefea4934faa7dc5a32a +PT= 70ca476b337424f2d504eb3fd342bd9a8c068cafd16ab5b6152f598484d22d21 +TEST= 179 +KEY= 241294a784c993e182ac97c0ec128244 +CT= 70ca476b337424f2d504eb3fd342bd9a8c068cafd16ab5b6152f598484d22d21 +PT= 95f724205f1bf0b1f3fefdec8c71426f2851a22dff3cd18fcc763d03e25f92c5 +TEST= 180 +KEY= 0c43368a7bf5426e4edaaac30e4d1081 +CT= 95f724205f1bf0b1f3fefdec8c71426f2851a22dff3cd18fcc763d03e25f92c5 +PT= 75bf517df78599a705afdba525c710d1606353b89a925437c519209f15c8867e +TEST= 181 +KEY= 6c206532e16716598bc38a5c1b8596ff +CT= 75bf517df78599a705afdba525c710d1606353b89a925437c519209f15c8867e +PT= 60f64ab824092bade003291690689b9941a1ae0c4a49290cf3a0a330453d301f +TEST= 182 +KEY= 2d81cb3eab2e3f557863296c5eb8a6e0 +CT= 60f64ab824092bade003291690689b9941a1ae0c4a49290cf3a0a330453d301f +PT= 64e648e4d4f9211ea2afc0fa3179932f0ba43d01286246524df94baac2bda710 +TEST= 183 +KEY= 2625f63f834c7907359a62c69c0501f0 +CT= 64e648e4d4f9211ea2afc0fa3179932f0ba43d01286246524df94baac2bda710 +PT= da64224c8b203181736c30a4cbc9aa793c81d8dd9f5d8ff592c8ed89c7017def +TEST= 184 +KEY= 1aa42ee21c11f6f2a7528f4f5b047c1f +CT= da64224c8b203181736c30a4cbc9aa793c81d8dd9f5d8ff592c8ed89c7017def +PT= a4ac806b278c7324cfc67c17e77fc6fb8065491b1afa0c43aba17c3daf3a5de2 +TEST= 185 +KEY= 9ac167f906ebfab10cf3f372f43e21fd +CT= a4ac806b278c7324cfc67c17e77fc6fb8065491b1afa0c43aba17c3daf3a5de2 +PT= 522adf1817b01b076976064838753b83ce84affb47f787ce881c35a34ecd30c7 +TEST= 186 +KEY= 5445c802411c7d7f84efc6d1baf3113a +CT= 522adf1817b01b076976064838753b83ce84affb47f787ce881c35a34ecd30c7 +PT= 8843281fcddc096e0be6f96cb4af23c8f2415900b4d6a48b8c4546cb8673a4ce +TEST= 187 +KEY= a6049102f5cad9f408aa801a3c80b5f4 +CT= 8843281fcddc096e0be6f96cb4af23c8f2415900b4d6a48b8c4546cb8673a4ce +PT= 1e78f2e29b290490ff7df7a4885e5b586e929c27a67b776dd04b2737565e9134 +TEST= 188 +KEY= c8960d2553b1ae99d8e1a72d6ade24c0 +CT= 1e78f2e29b290490ff7df7a4885e5b586e929c27a67b776dd04b2737565e9134 +PT= eb87af9dbd96cf9e157db0e11da53b27556ed186c721d714ccd4def7a03d47ab +TEST= 189 +KEY= 9df8dca39490798d143579dacae3636b +CT= eb87af9dbd96cf9e157db0e11da53b27556ed186c721d714ccd4def7a03d47ab +PT= b7774099b52c80b9167c803d9696a574e609a8609d791688266bb7851f629cd1 +TEST= 190 +KEY= 7bf174c309e96f05325ece5fd581ffba +CT= b7774099b52c80b9167c803d9696a574e609a8609d791688266bb7851f629cd1 +PT= d5ae3671a9adbb02b81c658854a3a4522ddfea10183fabbf19df3ee7393896b1 +TEST= 191 +KEY= 562e9ed311d6c4ba2b81f0b8ecb9690b +CT= d5ae3671a9adbb02b81c658854a3a4522ddfea10183fabbf19df3ee7393896b1 +PT= 875cfca356e97dc1cbc1cd38da91700396e17de23ada1771b9eff85dcccc9115 +TEST= 192 +KEY= c0cfe3312b0cd3cb926e08e52075f81e +CT= 875cfca356e97dc1cbc1cd38da91700396e17de23ada1771b9eff85dcccc9115 +PT= 71d221bacb36c83935faae0d8ec5709304e0833c10d053d940cc7072174ae3ef +TEST= 193 +KEY= c42f600d3bdc8012d2a27897373f1bf1 +CT= 71d221bacb36c83935faae0d8ec5709304e0833c10d053d940cc7072174ae3ef +PT= 4277eaea8f6f44a6383497aa15a8d6764ef19b5d9407bef8269edec2820c30d5 +TEST= 194 +KEY= 8adefb50afdb3eeaf43ca655b5332b24 +CT= 4277eaea8f6f44a6383497aa15a8d6764ef19b5d9407bef8269edec2820c30d5 +PT= 2552231fa82b6142dda5ec3dc04d2028ab1ecc168d9a9a99ca32e7d96615c042 +TEST= 195 +KEY= 21c037462241a4733e0e418cd326eb66 +CT= 2552231fa82b6142dda5ec3dc04d2028ab1ecc168d9a9a99ca32e7d96615c042 +PT= 42ac108f520585655cf039ccb13174f427a35a3377254190a07a602bd2386a08 +TEST= 196 +KEY= 06636d755564e5e39e7421a7011e816e +CT= 42ac108f520585655cf039ccb13174f427a35a3377254190a07a602bd2386a08 +PT= d3e9457733bd516dce8b7705e9d43cd08a8fb5f19ff416260eeee152a91de49e +TEST= 197 +KEY= 8cecd884ca90f3c5909ac0f5a80365f0 +CT= d3e9457733bd516dce8b7705e9d43cd08a8fb5f19ff416260eeee152a91de49e +PT= 1c94707b88963043e9614078cee2c1a17b3c249178ecd3f02ce26f7a8e027473 +TEST= 198 +KEY= f7d0fc15b27c2035bc78af8f26011183 +CT= 1c94707b88963043e9614078cee2c1a17b3c249178ecd3f02ce26f7a8e027473 +PT= 6ba0fec8a8be59f3662fd3fc5e942ec2926d6b61ca247dfe85b4c2f19c8acf08 +TEST= 199 +KEY= 65bd977478585dcb39cc6d7eba8bde8b +CT= 6ba0fec8a8be59f3662fd3fc5e942ec2926d6b61ca247dfe85b4c2f19c8acf08 +PT= 442e21c19280f423c0d36aa5111e030cdec3603916505ad597493152d2132144 +TEST= 200 +KEY= bb7ef74d6e08071eae855c2c6898ffcf +CT= 442e21c19280f423c0d36aa5111e030cdec3603916505ad597493152d2132144 +PT= 4ecf3177cba0db4d464038eb576d6055141ed490e5a5747cf0368778e06f51c4 +TEST= 201 +KEY= af6023dd8bad73625eb3db5488f7ae0b +CT= 4ecf3177cba0db4d464038eb576d6055141ed490e5a5747cf0368778e06f51c4 +PT= 49c4a8bec49837f147d07bcd56bc8494c3dbfe852d3035e55af6819f21fa83fe +TEST= 202 +KEY= 6cbbdd58a69d468704455acba90d2df5 +CT= 49c4a8bec49837f147d07bcd56bc8494c3dbfe852d3035e55af6819f21fa83fe +PT= d1be406496547a52abdf69ec83cd3b0a8685ebc6dcf49c60229231fdbf97be44 +TEST= 203 +KEY= ea3e369e7a69dae726d76b36169a93b1 +CT= d1be406496547a52abdf69ec83cd3b0a8685ebc6dcf49c60229231fdbf97be44 +PT= 44f1cb632128b55ed9e5897f1ac260fcebb3347b7818c7f23fa6adb0e8bd5a4f +TEST= 204 +KEY= 018d02e502711d151971c686fe27c9fe +CT= 44f1cb632128b55ed9e5897f1ac260fcebb3347b7818c7f23fa6adb0e8bd5a4f +PT= 3884371f71f4bae0a6ae5bffaf320f8ba8a8f9954ae1e4d6917a60ee179ccc42 +TEST= 205 +KEY= a925fb704890f9c3880ba668e9bb05bc +CT= 3884371f71f4bae0a6ae5bffaf320f8ba8a8f9954ae1e4d6917a60ee179ccc42 +PT= a816c7e75fa2150d12a5783bc230d542999d59fca2731eecae9f9a9df9341e5a +TEST= 206 +KEY= 30b8a28ceae3e72f26943cf5108f1be6 +CT= a816c7e75fa2150d12a5783bc230d542999d59fca2731eecae9f9a9df9341e5a +PT= 8073d55dfd74d826137b0e5b6a9318caddbebdc7095bb684d0ed1552a716890b +TEST= 207 +KEY= ed061f4be3b851abf67929a7b79992ed +CT= 8073d55dfd74d826137b0e5b6a9318caddbebdc7095bb684d0ed1552a716890b +PT= 06e4255d318633d2b50bd3f3f837e865641cbecb50f6fd9c9b628ac5ad6b1c8d +TEST= 208 +KEY= 891aa180b34eac376d1ba3621af28e60 +CT= 06e4255d318633d2b50bd3f3f837e865641cbecb50f6fd9c9b628ac5ad6b1c8d +PT= 8f6726c15cbb4627b8b5b8b10d110239a7e33a21c6ccaa92e8e518cdda22119b +TEST= 209 +KEY= 2ef99ba1758206a585febbafc0d09ffb +CT= 8f6726c15cbb4627b8b5b8b10d110239a7e33a21c6ccaa92e8e518cdda22119b +PT= 2bf19205ea4a4dd692559b74793d9b11e6794bb87d88ee1c00135a96da3a5bab +TEST= 210 +KEY= c880d019080ae8b985ede1391aeac450 +CT= 2bf19205ea4a4dd692559b74793d9b11e6794bb87d88ee1c00135a96da3a5bab +PT= 8bd220f024f5b69482e3f158f0818587d007e80d403317f7b6d5859912912ce4 +TEST= 211 +KEY= 188738144839ff4e333864a0087be8b4 +CT= 8bd220f024f5b69482e3f158f0818587d007e80d403317f7b6d5859912912ce4 +PT= e8e59c3bcaff16e3a913e890b7b02a9f384c520aac8e74865063df51d9e0251c +TEST= 212 +KEY= 20cb6a1ee4b78bc8635bbbf1d19bcda8 +CT= e8e59c3bcaff16e3a913e890b7b02a9f384c520aac8e74865063df51d9e0251c +PT= 1f27816cad6ef74f0d2465ab5ca21c04ff5fabdd8372c03d1911834de2f4d0e8 +TEST= 213 +KEY= df94c1c367c54bf57a4a38bc336f1d40 +CT= 1f27816cad6ef74f0d2465ab5ca21c04ff5fabdd8372c03d1911834de2f4d0e8 +PT= 4cff8232c4d346f1b0122cc9d7100a0ce86d96700567e30a17648e0c57d73189 +TEST= 214 +KEY= 37f957b362a2a8ff6d2eb6b064b82cc9 +CT= 4cff8232c4d346f1b0122cc9d7100a0ce86d96700567e30a17648e0c57d73189 +PT= a1b85b706e3fa4ccf3d0db547fe627708971c048afd1b3d67a59ccbc9be244ce +TEST= 215 +KEY= be8897fbcd731b2917777a0cff5a6807 +CT= a1b85b706e3fa4ccf3d0db547fe627708971c048afd1b3d67a59ccbc9be244ce +PT= c83ed872ed7ec864ece2d2539830f33d77e290895768f29ca9a2a8535054f767 +TEST= 216 +KEY= c96a07729a1be9b5bed5d25faf0e9f60 +CT= c83ed872ed7ec864ece2d2539830f33d77e290895768f29ca9a2a8535054f767 +PT= e6b008035044f1f7e0162f618c04c8267a8b1dd085f4ac09ff7c86c3ace5b36d +TEST= 217 +KEY= b3e11aa21fef45bc41a9549c03eb2c0d +CT= e6b008035044f1f7e0162f618c04c8267a8b1dd085f4ac09ff7c86c3ace5b36d +PT= 1ea9546104b8c12e543b0365967f366a4ebd9d8654f5cf0973700b209f5eda88 +TEST= 218 +KEY= fd5c87244b1a8ab532d95fbc9cb5f685 +CT= 1ea9546104b8c12e543b0365967f366a4ebd9d8654f5cf0973700b209f5eda88 +PT= 972e8f139a11fb2deb518dc59bf18e432a451886b8b8a64e7fae82aa3d4422b8 +TEST= 219 +KEY= d7199fa2f3a22cfb4d77dd16a1f1d43d +CT= 972e8f139a11fb2deb518dc59bf18e432a451886b8b8a64e7fae82aa3d4422b8 +PT= e7ec22dc8f63e241af7bd8675d2c7889616ccdcc7775c1792e50422ec3611d87 +TEST= 220 +KEY= b675526e84d7ed8263279f386290c9ba +CT= e7ec22dc8f63e241af7bd8675d2c7889616ccdcc7775c1792e50422ec3611d87 +PT= cb5d82cd15cb52b75ed95d7e07edcce1625c3b9b909b52f85b33dbc125f79975 +TEST= 221 +KEY= d42969f5144cbf7a381444f9476750cf +CT= cb5d82cd15cb52b75ed95d7e07edcce1625c3b9b909b52f85b33dbc125f79975 +PT= 53db3c5f08adf4cb693c276e3a334146d0d852aee5429b87e16b2c9cb6b08ba8 +TEST= 222 +KEY= 04f13b5bf10e24fdd97f6865f1d7db67 +CT= 53db3c5f08adf4cb693c276e3a334146d0d852aee5429b87e16b2c9cb6b08ba8 +PT= df5eaf5990f18df6023caee879cbd669adc27b14d8e7f20021737adbb82bc405 +TEST= 223 +KEY= a933404f29e9d6fdf80c12be49fc1f62 +CT= df5eaf5990f18df6023caee879cbd669adc27b14d8e7f20021737adbb82bc405 +PT= 62c7025377aca9ab446fb8c8621e4117cf06818630dc56a74c132f577ddfe409 +TEST= 224 +KEY= 6635c1c91935805ab41f3de93423fb6b +CT= 62c7025377aca9ab446fb8c8621e4117cf06818630dc56a74c132f577ddfe409 +PT= 769088a6445672312f0d2deade05ac37c7d1d001e73c23f092e68e60494e1138 +TEST= 225 +KEY= a1e411c8fe09a3aa26f9b3897d6dea53 +CT= 769088a6445672312f0d2deade05ac37c7d1d001e73c23f092e68e60494e1138 +PT= 98fd892871c13f8e52c764890bf5443d913090b14f98cd628afa23a3d4a7ecb6 +TEST= 226 +KEY= 30d48179b1916ec8ac03902aa9ca06e5 +CT= 98fd892871c13f8e52c764890bf5443d913090b14f98cd628afa23a3d4a7ecb6 +PT= 078e409ea5d9f0d77a6d58328a5a6b9c1d47cb9b5f0213c2467a07be942f4079 +TEST= 227 +KEY= 2d934ae2ee937d0aea7997943de5469c +CT= 078e409ea5d9f0d77a6d58328a5a6b9c1d47cb9b5f0213c2467a07be942f4079 +PT= ef13465bff01f1206cb663647e1dc119ed68ddcf2a41e74165fd056a2fb4e715 +TEST= 228 +KEY= c0fb972dc4d29a4b8f8492fe1251a189 +CT= ef13465bff01f1206cb663647e1dc119ed68ddcf2a41e74165fd056a2fb4e715 +PT= ecbaf480dde37b0f90f5dda43581e340f34dd8b95b9113278171795609175af1 +TEST= 229 +KEY= 33b64f949f43896c0ef5eba81b46fb78 +CT= ecbaf480dde37b0f90f5dda43581e340f34dd8b95b9113278171795609175af1 +PT= e7ebc4ecc0b562641ae4408012ae7c1d189e0318f2282dd652bc99ffebdcebb9 +TEST= 230 +KEY= 2b284c8c6d6ba4ba5c497257f09a10c1 +CT= e7ebc4ecc0b562641ae4408012ae7c1d189e0318f2282dd652bc99ffebdcebb9 +PT= 719d7b1a4db9553e7add3336994df16ce275691c67c04753045cda3bb14b9ce4 +TEST= 231 +KEY= c95d25900aabe3e95815a86c41d18c25 +CT= 719d7b1a4db9553e7add3336994df16ce275691c67c04753045cda3bb14b9ce4 +PT= 13f5f8273ed6ce5a940a40c7c0f5ff173e932e2aeb7bae5515e40994c65a57d3 +TEST= 232 +KEY= f7ce0bbae1d04dbc4df1a1f8878bdbf6 +CT= 13f5f8273ed6ce5a940a40c7c0f5ff173e932e2aeb7bae5515e40994c65a57d3 +PT= 440e4c00f8a23110c81e6402a8e1dedccc2b8fc2a286f3451e9bf7e3df4afa63 +TEST= 233 +KEY= 3be584784356bef9536a561b58c12195 +CT= 440e4c00f8a23110c81e6402a8e1dedccc2b8fc2a286f3451e9bf7e3df4afa63 +PT= 4a6474417c7c5b5f12e667e5f6b44665d74a1028071215545f80d2b5d138fa57 +TEST= 234 +KEY= ecaf94504444abad0cea84ae89f9dbc2 +CT= 4a6474417c7c5b5f12e667e5f6b44665d74a1028071215545f80d2b5d138fa57 +PT= 80a6d5afeac99b8fd4ca4e6088d30a75bfe02ef67fa88a39381b3b1e9433edb4 +TEST= 235 +KEY= 534fbaa63bec219434f1bfb01dca3676 +CT= 80a6d5afeac99b8fd4ca4e6088d30a75bfe02ef67fa88a39381b3b1e9433edb4 +PT= a99ac1cf2f60196fd23e730161f87e3dd8a0a1b442ba7bc85b01c54cf1d7dd02 +TEST= 236 +KEY= 8bef1b1279565a5c6ff07afcec1deb74 +CT= a99ac1cf2f60196fd23e730161f87e3dd8a0a1b442ba7bc85b01c54cf1d7dd02 +PT= d0bb8dd4e6fb1ee2f888cf250ad303c5beabe10d750e95d6b778f921ae81e629 +TEST= 237 +KEY= 3544fa1f0c58cf8ad88883dd429c0d5d +CT= d0bb8dd4e6fb1ee2f888cf250ad303c5beabe10d750e95d6b778f921ae81e629 +PT= c649c2bf69541e74e80798c0f19f44d0dceb4b92edf50ab11f8c738f947f5380 +TEST= 238 +KEY= e9afb18de1adc53bc704f052d6e35edd +CT= c649c2bf69541e74e80798c0f19f44d0dceb4b92edf50ab11f8c738f947f5380 +PT= 4d815dff34fe2bad5e64b52d00a2505e195c290c69b032bd05d8001e1875b007 +TEST= 239 +KEY= f0f39881881df786c2dcf04cce96eeda +CT= 4d815dff34fe2bad5e64b52d00a2505e195c290c69b032bd05d8001e1875b007 +PT= dfee3e841dede49f4094572c4d5d9ceadbedee900a6cb811177f003c442a0785 +TEST= 240 +KEY= 2b1e761182714f97d5a3f0708abce95f +CT= dfee3e841dede49f4094572c4d5d9ceadbedee900a6cb811177f003c442a0785 +PT= 07f296b330742a01c4c889c91265a831dfc1f7a06f597c97034ba232d07bc144 +TEST= 241 +KEY= f4df81b1ed283300d6e852425ac7281b +CT= 07f296b330742a01c4c889c91265a831dfc1f7a06f597c97034ba232d07bc144 +PT= b1960a4c551cdf9772ab59c896d0e570d053af41b6f9c81f3f4fd2fe3ce2d8ba +TEST= 242 +KEY= 248c2ef05bd1fb1fe9a780bc6625f0a1 +CT= b1960a4c551cdf9772ab59c896d0e570d053af41b6f9c81f3f4fd2fe3ce2d8ba +PT= 181f94e051ac833061ddfb3e8d9fac59a0015c1ae0f8d744c317710a8006aa9b +TEST= 243 +KEY= 848d72eabb292c5b2ab0f1b6e6235a3a +CT= 181f94e051ac833061ddfb3e8d9fac59a0015c1ae0f8d744c317710a8006aa9b +PT= 0cc05ebda47b00edaf1e06ff8d5a43d4419cb7688a36eb89a33727f2e2a28eaa +TEST= 244 +KEY= c511c582311fc7d28987d6440481d490 +CT= 0cc05ebda47b00edaf1e06ff8d5a43d4419cb7688a36eb89a33727f2e2a28eaa +PT= 983ce76629b44c267b8b81ed65da012497217e5b61029a61d6c9f84e7eda2f29 +TEST= 245 +KEY= 5230bbd9501d5db35f4e2e0a7a5bfbb9 +CT= 983ce76629b44c267b8b81ed65da012497217e5b61029a61d6c9f84e7eda2f29 +PT= f8be000d06d62e97564f567ff654ef8300508a9f36a85c40e2f98af85a027c31 +TEST= 246 +KEY= 5260314666b501f3bdb7a4f220598788 +CT= f8be000d06d62e97564f567ff654ef8300508a9f36a85c40e2f98af85a027c31 +PT= c7444b8f104eb0dc0db0383d48902c91da365b206f0db30d8e158f9aaac980cf +TEST= 247 +KEY= 88566a6609b8b2fe33a22b688a900747 +CT= c7444b8f104eb0dc0db0383d48902c91da365b206f0db30d8e158f9aaac980cf +PT= 3ecdfdc17cdc5c5a6be7d52c9424ee06de80121226220f8b81352c32810a76f6 +TEST= 248 +KEY= 56d678742f9abd75b297075a0b9a71b1 +CT= 3ecdfdc17cdc5c5a6be7d52c9424ee06de80121226220f8b81352c32810a76f6 +PT= 1d074610a62f16ce13280a5dcbf50693cf5f4adc01e25d53f349bf67ace8c987 +TEST= 249 +KEY= 998932a82e78e02641deb83da772b836 +CT= 1d074610a62f16ce13280a5dcbf50693cf5f4adc01e25d53f349bf67ace8c987 +PT= fbfd15f09a584de5a4f093e0e9273a3c8f7154acd08785a7ea11fb750c25c520 +TEST= 250 +KEY= 16f86604feff6581abcf4348ab577d16 +CT= fbfd15f09a584de5a4f093e0e9273a3c8f7154acd08785a7ea11fb750c25c520 +PT= fd287e13b5f6ca48dbc163bc4d3d51d82ee21a94e236facaea3552fc732143ca +TEST= 251 +KEY= 381a7c901cc99f4b41fa11b4d8763edc +CT= fd287e13b5f6ca48dbc163bc4d3d51d82ee21a94e236facaea3552fc732143ca +PT= 327f4119af8efb67af95540fdb62f0fb88f7900ac771676240a1f11fba36ebb8 +TEST= 252 +KEY= b0edec9adbb8f829015be0ab6240d564 +CT= 327f4119af8efb67af95540fdb62f0fb88f7900ac771676240a1f11fba36ebb8 +PT= 7a4833db8b2f36d43f8d3128238baf8167ecef1f57cdc30693d552c04c5f0881 +TEST= 253 +KEY= d70103858c753b2f928eb26b2e1fdde5 +CT= 7a4833db8b2f36d43f8d3128238baf8167ecef1f57cdc30693d552c04c5f0881 +PT= de85ce6cb2535d443c93e17918a095e3ce8f5441725e132d172b2fc9c90f7e4b +TEST= 254 +KEY= 198e57c4fe2b280285a59da2e710a3ae +CT= de85ce6cb2535d443c93e17918a095e3ce8f5441725e132d172b2fc9c90f7e4b +PT= 86590889ac0b734170c70b5089e5197ebb4b8f564503039685258f5a622f6857 +TEST= 255 +KEY= a2c5d892bb282b94008012f8853fcbf9 +CT= 86590889ac0b734170c70b5089e5197ebb4b8f564503039685258f5a622f6857 +PT= adb8894947f56e9ca3ee1e469676630766f1665f6e64a66dd7edb04ce5352dd0 +TEST= 256 +KEY= c434becdd54c8df9d76da2b4600ae629 +CT= adb8894947f56e9ca3ee1e469676630766f1665f6e64a66dd7edb04ce5352dd0 +PT= e07a7928b7d8191632bed2c34069cdb86d34a1fb7416285b68d67da060160696 +TEST= 257 +KEY= a9001f36a15aa5a2bfbbdf14001ce0bf +CT= e07a7928b7d8191632bed2c34069cdb86d34a1fb7416285b68d67da060160696 +PT= bad288e28c7bb15078dd65062355baa4d4408daff3751a063b504537dfba0703 +TEST= 258 +KEY= 7d409299522fbfa484eb9a23dfa6e7bc +CT= bad288e28c7bb15078dd65062355baa4d4408daff3751a063b504537dfba0703 +PT= c2d4c16b15106cacba4f9527d86086cecaf9cf544db9a46cbe2a83e0b930137b +TEST= 259 +KEY= b7b95dcd1f961bc83ac119c36696f4c7 +CT= c2d4c16b15106cacba4f9527d86086cecaf9cf544db9a46cbe2a83e0b930137b +PT= 4d4bd829be57c84f4fa5e35843558c08316dde81e715160c5f570a9ca288e955 +TEST= 260 +KEY= 86d4834cf8830dc46596135fc41e1d92 +CT= 4d4bd829be57c84f4fa5e35843558c08316dde81e715160c5f570a9ca288e955 +PT= 08f55cd7636ca6bd1527ecb4a55d4f284ef2cfe0d00c9eaa5337ec21a337bd02 +TEST= 261 +KEY= c8264cac288f936e36a1ff7e6729a090 +CT= 08f55cd7636ca6bd1527ecb4a55d4f284ef2cfe0d00c9eaa5337ec21a337bd02 +PT= a69fb3f0b2dd41820e1b02e1c999dab6bd99d720f9fa44c7a26888a3b94bc317 +TEST= 262 +KEY= 75bf9b8cd175d7a994c977ddde626387 +CT= a69fb3f0b2dd41820e1b02e1c999dab6bd99d720f9fa44c7a26888a3b94bc317 +PT= f2348a0e2a792e250a1918c4595c441c0b8a75254d5a9bfb8e0e1aae07567353 +TEST= 263 +KEY= 7e35eea99c2f4c521ac76d73d93410d4 +CT= f2348a0e2a792e250a1918c4595c441c0b8a75254d5a9bfb8e0e1aae07567353 +PT= 4c85c7e0d0d8d627fc21baabc83e29e283113c15e19b848e40c676d0fa8171a9 +TEST= 264 +KEY= fd24d2bc7db4c8dc5a011ba323b5617d +CT= 4c85c7e0d0d8d627fc21baabc83e29e283113c15e19b848e40c676d0fa8171a9 +PT= 5565f6715e9418fe932b8bb4b6f35a015f65d691dbf951733b46dbb42209c05d +TEST= 265 +KEY= a241042da64d99af6147c01701bca120 +CT= 5565f6715e9418fe932b8bb4b6f35a015f65d691dbf951733b46dbb42209c05d +PT= d593b12e2c301cf4a0765504c2d7622e25ca0a3d5e64af33956c3a6c49a1d34d +TEST= 266 +KEY= 878b0e10f829369cf42bfa7b481d726d +CT= d593b12e2c301cf4a0765504c2d7622e25ca0a3d5e64af33956c3a6c49a1d34d +PT= 33b195d6184bf9c96f2e6c759259fb7c44c7675c2cc143e303bc1cfe80afd7c3 +TEST= 267 +KEY= c34c694cd4e8757ff797e685c8b2a5ae +CT= 33b195d6184bf9c96f2e6c759259fb7c44c7675c2cc143e303bc1cfe80afd7c3 +PT= 3abf64c651ec6277dae2b85392c2babd7b483e7a5fcf34eb32c0e54816ad6c49 +TEST= 268 +KEY= b80457368b274194c55703cdde1fc9e7 +CT= 3abf64c651ec6277dae2b85392c2babd7b483e7a5fcf34eb32c0e54816ad6c49 +PT= b0c8c98f2c437e6c56ee8cf7e53abb00400b38b4736e68d7f0c416cb5ab2da36 +TEST= 269 +KEY= f80f6f82f84929433593150684ad13d1 +CT= b0c8c98f2c437e6c56ee8cf7e53abb00400b38b4736e68d7f0c416cb5ab2da36 +PT= 9e68fe53d7faab354b9d0f6f194688862ceb2bb9e33ce41190dfd7a97ef36701 +TEST= 270 +KEY= d4e4443b1b75cd52a54cc2affa5e74d0 +CT= 9e68fe53d7faab354b9d0f6f194688862ceb2bb9e33ce41190dfd7a97ef36701 +PT= cf5e504869a60b0bf59687a30197772036200afe7bf5d5337e12a45d525fca7f +TEST= 271 +KEY= e2c44ec560801861db5e66f2a801beaf +CT= cf5e504869a60b0bf59687a30197772036200afe7bf5d5337e12a45d525fca7f +PT= 2c3de8964fd78d9e03542077147992de45cfb4ccab6ed5f2e5ba141bba359cb0 +TEST= 272 +KEY= a70bfa09cbeecd933ee472e91234221f +CT= 2c3de8964fd78d9e03542077147992de45cfb4ccab6ed5f2e5ba141bba359cb0 +PT= 7ad0f1ccebb420e22f9af62e2cf9608aadeaf6b8f56a51fe1e3bf7f4d1d4d52f +TEST= 273 +KEY= 0ae10cb13e849c6d20df851dc3e0f730 +CT= 7ad0f1ccebb420e22f9af62e2cf9608aadeaf6b8f56a51fe1e3bf7f4d1d4d52f +PT= 649a191dc429c97551bbb6c7fb71c34418d213fd40f74796f46092b20f2a907d +TEST= 274 +KEY= 12331f4c7e73dbfbd4bf17afccca674d +CT= 649a191dc429c97551bbb6c7fb71c34418d213fd40f74796f46092b20f2a907d +PT= e712cdfe30b3e169339ee1160601ba2412b59220743644119adff86daea4b9da +TEST= 275 +KEY= 00868d6c0a459fea4e60efc2626ede97 +CT= e712cdfe30b3e169339ee1160601ba2412b59220743644119adff86daea4b9da +PT= dd77b36c9b393e5a1b5cbf0ba5b92d874ab766633630f8a61b5ccc42544e4e63 +TEST= 276 +KEY= 4a31eb0f3c75674c553c2380362090f4 +CT= dd77b36c9b393e5a1b5cbf0ba5b92d874ab766633630f8a61b5ccc42544e4e63 +PT= 639dcaac7eff8cb22057c59fb1d6cc948bd5398c73316de008602056b5ab518b +TEST= 277 +KEY= c1e4d2834f440aac5d5c03d6838bc17f +CT= 639dcaac7eff8cb22057c59fb1d6cc948bd5398c73316de008602056b5ab518b +PT= 424bdcc71c8ca2fa695b8619d6aed7a1f8bafee5fba9fc59df7fddf2dded1cf6 +TEST= 278 +KEY= 395e2c66b4edf6f58223de245e66dd89 +CT= 424bdcc71c8ca2fa695b8619d6aed7a1f8bafee5fba9fc59df7fddf2dded1cf6 +PT= 26a98c1a1827e1268c5ad6ca6b5efac0f04aee6211e458f7fb8a5ba030af94bc +TEST= 279 +KEY= c914c204a509ae0279a985846ec94935 +CT= 26a98c1a1827e1268c5ad6ca6b5efac0f04aee6211e458f7fb8a5ba030af94bc +PT= 5c93581e402770676ed62d711b1f6e8bd130da83389f27518791ec94bf3c4247 +TEST= 280 +KEY= 182418879d968953fe386910d1f50b72 +CT= 5c93581e402770676ed62d711b1f6e8bd130da83389f27518791ec94bf3c4247 +PT= e885772b55e808d507f2ccc52ce30ca38c32f84a709587abfe791cf081bc33cb +TEST= 281 +KEY= 9416e0cded030ef8004175e0504938b9 +CT= e885772b55e808d507f2ccc52ce30ca38c32f84a709587abfe791cf081bc33cb +PT= 57514c446b54b4b4d74bdac15cd203ad02f75448198cc3ffe74a1a384d95195d +TEST= 282 +KEY= 96e1b485f48fcd07e70b6fd81ddc21e4 +CT= 57514c446b54b4b4d74bdac15cd203ad02f75448198cc3ffe74a1a384d95195d +PT= 32396349d37f7e146f55692618b3614b7f7621d1df8bebe0145f980559589c34 +TEST= 283 +KEY= e99795542b0426e7f354f7dd4484bdd0 +CT= 32396349d37f7e146f55692618b3614b7f7621d1df8bebe0145f980559589c34 +PT= ccb6437a9ebd8086e6c733de945e5fc7ffc4a7efc8060490508743c8ae860211 +TEST= 284 +KEY= 165332bbe3022277a3d3b415ea02bfc1 +CT= ccb6437a9ebd8086e6c733de945e5fc7ffc4a7efc8060490508743c8ae860211 +PT= 7ae8c37c68d3916754d24baed635517923b5c7bf2c8926d71717e72a57fe7502 +TEST= 285 +KEY= 35e6f504cf8b04a0b4c4533fbdfccac3 +CT= 7ae8c37c68d3916754d24baed635517923b5c7bf2c8926d71717e72a57fe7502 +PT= f644b424456cf37913e3dc14c8891e75e6b9b8bfeab1d36428eb59b255bdf9c7 +TEST= 286 +KEY= d35f4dbb253ad7c49c2f0a8de8413304 +CT= f644b424456cf37913e3dc14c8891e75e6b9b8bfeab1d36428eb59b255bdf9c7 +PT= a59ba2de870a7f7867ffcfba6ede8e78219c2ff85c4baf8169266a3ba0aad00d +TEST= 287 +KEY= f2c3624379717845f50960b648ebe309 +CT= a59ba2de870a7f7867ffcfba6ede8e78219c2ff85c4baf8169266a3ba0aad00d +PT= 77ec89b642bc2791c4ead477f1130fd9fe508faa22b1857a542e65fd4bce7b3b +TEST= 288 +KEY= 0c93ede95bc0fd3fa127054b03259832 +CT= 77ec89b642bc2791c4ead477f1130fd9fe508faa22b1857a542e65fd4bce7b3b +PT= c607e76435e104c7690dc4834e3fe7a247c7d2ec83e6ebc88915cf080d0101da +TEST= 289 +KEY= 4b543f05d82616f72832ca430e2499e8 +CT= c607e76435e104c7690dc4834e3fe7a247c7d2ec83e6ebc88915cf080d0101da +PT= b368b0cc59452fdb8b5f230ce9289b12af05ac931578495f053cafe9d6c48cd2 +TEST= 290 +KEY= e4519396cd5e5fa82d0e65aad8e0153a +CT= b368b0cc59452fdb8b5f230ce9289b12af05ac931578495f053cafe9d6c48cd2 +PT= 98eeddc7e5369e07ed277bacd6eb3bcffae48a1412402fcd62d04c2108c0513e +TEST= 291 +KEY= 1eb51982df1e70654fde298bd0204404 +CT= 98eeddc7e5369e07ed277bacd6eb3bcffae48a1412402fcd62d04c2108c0513e +PT= ef249ae049f9dc3e8f6a9bc5449c58aa72d068d0d24d697355aaa92172bb741e +TEST= 292 +KEY= 6c6571520d5319161a7480aaa29b301a +CT= ef249ae049f9dc3e8f6a9bc5449c58aa72d068d0d24d697355aaa92172bb741e +PT= 72203d4ec0e19f0f7e65db3f5f11caa8c3e5dedf6c19d054f4df7f8bb7a7183d +TEST= 293 +KEY= af80af8d614ac942eeabff21153c2827 +CT= 72203d4ec0e19f0f7e65db3f5f11caa8c3e5dedf6c19d054f4df7f8bb7a7183d +PT= e1bda5b96910f517558b66da18c1b02b4b876e494d1f9087e0e8518948f1d674 +TEST= 294 +KEY= e407c1c42c5559c50e43aea85dcdfe53 +CT= e1bda5b96910f517558b66da18c1b02b4b876e494d1f9087e0e8518948f1d674 +PT= fdb7940f37a74911460d4123db6d43ce4a670291205c8177743ced191392d2b5 +TEST= 295 +KEY= ae60c3550c09d8b27a7f43b14e5f2ce6 +CT= fdb7940f37a74911460d4123db6d43ce4a670291205c8177743ced191392d2b5 +PT= 8ade31953bfc8fb729635744cdb6dd79f42766c1c72d08335dd4fda6def7f0c8 +TEST= 296 +KEY= 5a47a594cb24d08127abbe1790a8dc2e +CT= 8ade31953bfc8fb729635744cdb6dd79f42766c1c72d08335dd4fda6def7f0c8 +PT= 71853fca56e68277d5f385cf1d9c09a46eb4a1e539679ff2f9e5f7d3d200655b +TEST= 297 +KEY= 34f30471f2434f73de4e49c442a8b975 +CT= 71853fca56e68277d5f385cf1d9c09a46eb4a1e539679ff2f9e5f7d3d200655b +PT= e45b06b60c52991fd97721dae404eb06dd9b235e3958ae97118d3c3fbbea1551 +TEST= 298 +KEY= e968272fcb1be1e4cfc375fbf942ac24 +CT= e45b06b60c52991fd97721dae404eb06dd9b235e3958ae97118d3c3fbbea1551 +PT= f0f62f7c88748179b7b3ab84bccb377286ad9d2fad5ebbcad1eadab7ca02fdcf +TEST= 299 +KEY= 6fc5ba0066455a2e1e29af4c334051eb +CT= f0f62f7c88748179b7b3ab84bccb377286ad9d2fad5ebbcad1eadab7ca02fdcf +PT= 3e147e7df62eec4f02b4a45c97fd621af54e5deb9a4bc771db50bd4386bdfa61 +TEST= 300 +KEY= 9a8be7ebfc0e9d5fc579120fb5fdab8a +CT= 3e147e7df62eec4f02b4a45c97fd621af54e5deb9a4bc771db50bd4386bdfa61 +PT= 1b87e5d0caecb6e8b68a0bfa8e774e86fe29cc4b7806acabe9b568ffefd218e0 +TEST= 301 +KEY= 64a22ba0840831f42ccc7af05a2fb36a +CT= 1b87e5d0caecb6e8b68a0bfa8e774e86fe29cc4b7806acabe9b568ffefd218e0 +PT= a7a4db046d04ec76669de3082f8bc4fab084c1e845cfb8825a734e9732490949 +TEST= 302 +KEY= d426ea48c1c7897676bf34676866ba23 +CT= a7a4db046d04ec76669de3082f8bc4fab084c1e845cfb8825a734e9732490949 +PT= 394054cadbb72f2986e3a2c6eeea1a13b1ba4daa3184da024b04eb1506f5f6c6 +TEST= 303 +KEY= 659ca7e2f04353743dbbdf726e934ce5 +CT= 394054cadbb72f2986e3a2c6eeea1a13b1ba4daa3184da024b04eb1506f5f6c6 +PT= c4c106c6067e43472ee5aa2194c7cfef515d1f15050f1893dc3e39f0a067a0f4 +TEST= 304 +KEY= 34c1b8f7f54c4be7e185e682cef4ec11 +CT= c4c106c6067e43472ee5aa2194c7cfef515d1f15050f1893dc3e39f0a067a0f4 +PT= c56ccfc497840c9a65059cfa4efb2dd6962c5e9f610c85d1c9662bf58577d55e +TEST= 305 +KEY= a2ede6689440ce3628e3cd774b83394f +CT= c56ccfc497840c9a65059cfa4efb2dd6962c5e9f610c85d1c9662bf58577d55e +PT= 24355b178a55d0116e5a30f2e9d62de8abce7e0de558766a6801e775f809ec60 +TEST= 306 +KEY= 092398657118b85c40e22a02b38ad52f +CT= 24355b178a55d0116e5a30f2e9d62de8abce7e0de558766a6801e775f809ec60 +PT= bdd65f8f22998450b4d58204293ebc403fbfdfb5baea3961a38043bf93f457c4 +TEST= 307 +KEY= 369c47d0cbf2813de36269bd207e82eb +CT= bdd65f8f22998450b4d58204293ebc403fbfdfb5baea3961a38043bf93f457c4 +PT= 1f41fe6aaa7a66c67172333c995be972d374b307ed9986c4efbe02edbf53c3a1 +TEST= 308 +KEY= e5e8f4d7266b07f90cdc6b509f2d414a +CT= 1f41fe6aaa7a66c67172333c995be972d374b307ed9986c4efbe02edbf53c3a1 +PT= 9193e8b764a58c392f3b2f8288b6e556954aab3c4de48455b32f6597aecf1d35 +TEST= 309 +KEY= 70a25feb6b8f83acbff30ec731e25c7f +CT= 9193e8b764a58c392f3b2f8288b6e556954aab3c4de48455b32f6597aecf1d35 +PT= 2422ea50881bd7da1a3861810f2ddddf2b49e5fb1905166d0b160bcb7e4371ef +TEST= 310 +KEY= 5bebba10728a95c1b4e5050c4fa12d90 +CT= 2422ea50881bd7da1a3861810f2ddddf2b49e5fb1905166d0b160bcb7e4371ef +PT= 2f20974a7321c65193280d25a0d6a646ed84d81fea17ffb4f59f369bbdcdb7e1 +TEST= 311 +KEY= b66f620f989d6a75417a3397f26c9a71 +CT= 2f20974a7321c65193280d25a0d6a646ed84d81fea17ffb4f59f369bbdcdb7e1 +PT= 4ec564d5b39510540f7f6faf2a1d4b45ab24902ee7490d64b59aed8db22db27c +TEST= 312 +KEY= 1d4bf2217fd46711f4e0de1a4041280d +CT= 4ec564d5b39510540f7f6faf2a1d4b45ab24902ee7490d64b59aed8db22db27c +PT= 1c877d82b258e8a3799f25310c1b718465c97f7dadeeaf621d62011504424873 +TEST= 313 +KEY= 78828d5cd23ac873e982df0f4403607e +CT= 1c877d82b258e8a3799f25310c1b718465c97f7dadeeaf621d62011504424873 +PT= 8fcd4656302dac150992e3ff888fa58063c343dccd41428aac8a09b08af1c86b +TEST= 314 +KEY= 1b41ce801f7b8af94508d6bfcef2a815 +CT= 8fcd4656302dac150992e3ff888fa58063c343dccd41428aac8a09b08af1c86b +PT= 5e2d0eb5dda0f2c74db1b2cd47affe4495607a271e64763cdf88e5808cb0c28f +TEST= 315 +KEY= 8e21b4a7011ffcc59a80333f42426a9a +CT= 5e2d0eb5dda0f2c74db1b2cd47affe4495607a271e64763cdf88e5808cb0c28f +PT= 467e846b9309a9d727dbae68fb3d07f2053aad1134e9f6edb0a558afa5b18f06 +TEST= 316 +KEY= 8b1b19b635f60a282a256b90e7f3e59c +CT= 467e846b9309a9d727dbae68fb3d07f2053aad1134e9f6edb0a558afa5b18f06 +PT= c928877d17afadf2646a806244d0e1d3dbdb68355886d1a9909786ad75519de5 +TEST= 317 +KEY= 50c071836d70db81bab2ed3d92a27879 +CT= c928877d17afadf2646a806244d0e1d3dbdb68355886d1a9909786ad75519de5 +PT= 00e8c7531461e55536d69ecf6e6f7be177b39934ca4e758ba06cdb5b9103c804 +TEST= 318 +KEY= 2773e8b7a73eae0a1ade366603a1b07d +CT= 00e8c7531461e55536d69ecf6e6f7be177b39934ca4e758ba06cdb5b9103c804 +PT= 674580a0ee04b4b8ed9a97f8aa80aa1a61a915592ecfb54894b768cd44544b6d +TEST= 319 +KEY= 46dafdee89f11b428e695eab47f5fb10 +CT= 674580a0ee04b4b8ed9a97f8aa80aa1a61a915592ecfb54894b768cd44544b6d +PT= c5c92779e0c779901fbc1b20e8612ff7be40998fa79666264f67f23cc5f7a972 +TEST= 320 +KEY= f89a64612e677d64c10eac9782025262 +CT= c5c92779e0c779901fbc1b20e8612ff7be40998fa79666264f67f23cc5f7a972 +PT= facebba6992f8b086af078ae14a1f5ab6debb39e092f53502f6df9474fe1a9b0 +TEST= 321 +KEY= 9571d7ff27482e34ee6355d0cde3fbd2 +CT= facebba6992f8b086af078ae14a1f5ab6debb39e092f53502f6df9474fe1a9b0 +PT= dc12026887cc59fe4613f7f064dedf1f915fbc1fcb7eef4306b843fb9f8124d3 +TEST= 322 +KEY= 042e6be0ec36c177e8db162b5262df01 +CT= dc12026887cc59fe4613f7f064dedf1f915fbc1fcb7eef4306b843fb9f8124d3 +PT= ef632a4c624cddb45bba715f9be35af881ab7cd9fe89a7df977e8a9280c9be3c +TEST= 323 +KEY= 8585173912bf66a87fa59cb9d2ab613d +CT= ef632a4c624cddb45bba715f9be35af881ab7cd9fe89a7df977e8a9280c9be3c +PT= f34b69ea38c104538ad95809ce5179e08757bd3794461858d5fbc0ed9c24dbc8 +TEST= 324 +KEY= 02d2aa0e86f97ef0aa5e5c544e8fbaf5 +CT= f34b69ea38c104538ad95809ce5179e08757bd3794461858d5fbc0ed9c24dbc8 +PT= d0caca0f254835a0924c339b100e73f35e433c87b2972369f00e0e5ae53dc494 +TEST= 325 +KEY= 5c919689346e5d995a50520eabb27e61 +CT= d0caca0f254835a0924c339b100e73f35e433c87b2972369f00e0e5ae53dc494 +PT= afc23241e48733f2640394f7b9049b8a445ff5ee4c3f263245db1f7660c273d7 +TEST= 326 +KEY= 18ce636778517bab1f8b4d78cb700db6 +CT= afc23241e48733f2640394f7b9049b8a445ff5ee4c3f263245db1f7660c273d7 +PT= a2a2a111fc14ab774096d5ad96a851f8114bc426ba3541175ad7f4523b1df198 +TEST= 327 +KEY= 0985a741c2643abc455cb92af06dfc2e +CT= a2a2a111fc14ab774096d5ad96a851f8114bc426ba3541175ad7f4523b1df198 +PT= 5299cfb8b1f0e8a563b5e7e30ba794d76c68e8ea0660f86dbe5c28151caa2156 +TEST= 328 +KEY= 65ed4fabc404c2d1fb00913fecc7dd78 +CT= 5299cfb8b1f0e8a563b5e7e30ba794d76c68e8ea0660f86dbe5c28151caa2156 +PT= 61072661413da0cb2480d3c27e00def96b91f3fde33f1ff39bcb9b1ec9c21ee5 +TEST= 329 +KEY= 0e7cbc56273bdd2260cb0a212505c39d +CT= 61072661413da0cb2480d3c27e00def96b91f3fde33f1ff39bcb9b1ec9c21ee5 +PT= 06be70069e451611000cd7c9688bdddabbb04eded92aaac0b4d30e460752acde +TEST= 330 +KEY= b5ccf288fe1177e2d418046722576f43 +CT= 06be70069e451611000cd7c9688bdddabbb04eded92aaac0b4d30e460752acde +PT= e14a197ad41aeb1c920751ca5d69ed22cfca4da8e9718004941705f2ec1e9762 +TEST= 331 +KEY= 7a06bf201760f7e6400f0195ce49f821 +CT= e14a197ad41aeb1c920751ca5d69ed22cfca4da8e9718004941705f2ec1e9762 +PT= afc5987e4fd26844dbfa767c800a3cce73c47f35fae543bff96c413188d6689e +TEST= 332 +KEY= 09c2c015ed85b459b96340a4469f90bf +CT= afc5987e4fd26844dbfa767c800a3cce73c47f35fae543bff96c413188d6689e +PT= 225cde5e3260ca1e7f95fe187e9d6a1e5966d5d4fb286a19e0dc4dcd8a86eaaa +TEST= 333 +KEY= 50a415c116adde4059bf0d69cc197a15 +CT= 225cde5e3260ca1e7f95fe187e9d6a1e5966d5d4fb286a19e0dc4dcd8a86eaaa +PT= affec992f1fd4f02bcea9626d53f1a33fb6103f05141d38da9c8f0b51dba52e2 +TEST= 334 +KEY= abc5163147ec0dcdf077fddcd1a328f7 +CT= affec992f1fd4f02bcea9626d53f1a33fb6103f05141d38da9c8f0b51dba52e2 +PT= a575629257c8f76f414ea2ae825b5681093e1b3467c70256b95b4e9e29110026 +TEST= 335 +KEY= a2fb0d05202b0f9b492cb342f8b228d1 +CT= a575629257c8f76f414ea2ae825b5681093e1b3467c70256b95b4e9e29110026 +PT= 5729243207b89964608b9da671b06c23a4812c6ad2fd2d52db7d0a85a71fceeb +TEST= 336 +KEY= 067a216ff2d622c99251b9c75fade63a +CT= 5729243207b89964608b9da671b06c23a4812c6ad2fd2d52db7d0a85a71fceeb +PT= 0102cc480366cec16d5ec95984287530aeb0a4b2e28e92398168b8c981d508f4 +TEST= 337 +KEY= a8ca85dd1058b0f01339010ede78eece +CT= 0102cc480366cec16d5ec95984287530aeb0a4b2e28e92398168b8c981d508f4 +PT= 05bc558a64d4f1a226af191b543ff28bd9f4a1b583621c7d21dc2205745e46d9 +TEST= 338 +KEY= 713e2468933aac8d32e5230baa26a817 +CT= 05bc558a64d4f1a226af191b543ff28bd9f4a1b583621c7d21dc2205745e46d9 +PT= 5991bdcea804576234fd65922605beccc6e26f70181a9b608efbbeda18ffae81 +TEST= 339 +KEY= b7dc4b188b2037edbc1e9dd1b2d90696 +CT= 5991bdcea804576234fd65922605beccc6e26f70181a9b608efbbeda18ffae81 +PT= 5725e70ffe8f61f42ee0347d309570d2cc98e8556e15a26a12e32d96d6f1d04c +TEST= 340 +KEY= 7b44a34de5359587aefdb0476428d6da +CT= 5725e70ffe8f61f42ee0347d309570d2cc98e8556e15a26a12e32d96d6f1d04c +PT= 6416da8e81714f36ced4df84fe17ddf3763b78b447e1b743e28433e4a9a52771 +TEST= 341 +KEY= 0d7fdbf9a2d422c44c7983a3cd8df1ab +CT= 6416da8e81714f36ced4df84fe17ddf3763b78b447e1b743e28433e4a9a52771 +PT= 463767e0723b6f7a0e83b66f4c18f0d90c1c6889aa0f514bcdabff91b158658e +TEST= 342 +KEY= 0163b37008db738f81d27c327cd59425 +CT= 463767e0723b6f7a0e83b66f4c18f0d90c1c6889aa0f514bcdabff91b158658e +PT= 288864f0a1cdd11d13ea70ac4ec28ef8227fe45d8e9fa39de2d3d72024316f52 +TEST= 343 +KEY= 231c572d8644d0126301ab1258e4fb77 +CT= 288864f0a1cdd11d13ea70ac4ec28ef8227fe45d8e9fa39de2d3d72024316f52 +PT= dd7111d55147767d9c7ca0ee47efe502d3e3f0a4c5942ad6c6c6be9a77739bda +TEST= 344 +KEY= f0ffa78943d0fac4a5c715882f9760ad +CT= dd7111d55147767d9c7ca0ee47efe502d3e3f0a4c5942ad6c6c6be9a77739bda +PT= 7c5866d7e31963b5b643e4e038c0724ccdfb36c4ca157319caed8b79e5883b92 +TEST= 345 +KEY= 3d04914d89c589dd6f2a9ef1ca1f5b3f +CT= 7c5866d7e31963b5b643e4e038c0724ccdfb36c4ca157319caed8b79e5883b92 +PT= f7307b90c8fba96337b109bab483375ad88cfb61a2d4f64e2337d72c13c95bd9 +TEST= 346 +KEY= e5886a2c2b117f934c1d49ddd9d600e6 +CT= f7307b90c8fba96337b109bab483375ad88cfb61a2d4f64e2337d72c13c95bd9 +PT= df85d772a856311f5c7b837df3be28a7afd1b1aea0838b211a0ca067ffbc3661 +TEST= 347 +KEY= 4a59db828b92f4b25611e9ba266a3687 +CT= df85d772a856311f5c7b837df3be28a7afd1b1aea0838b211a0ca067ffbc3661 +PT= 42b30c8aa65e9bf492b3d3a4ed1f266e4e016615ffd029e67b7c102c2e538734 +TEST= 348 +KEY= 0458bd977442dd542d6df9960839b1b3 +CT= 42b30c8aa65e9bf492b3d3a4ed1f266e4e016615ffd029e67b7c102c2e538734 +PT= 31a3ff1ff697f02349b2a51e93fe48c62d4c5fdd3cbdb09067ac5c6c2d798283 +TEST= 349 +KEY= 2914e24a48ff6dc44ac1a5fa25403330 +CT= 31a3ff1ff697f02349b2a51e93fe48c62d4c5fdd3cbdb09067ac5c6c2d798283 +PT= 2701fb4af7fe116848ab6d8f132202f1f068a5cef5dc53476bc1c666024b2209 +TEST= 350 +KEY= d97c4784bd233e832100639c270b1139 +CT= 2701fb4af7fe116848ab6d8f132202f1f068a5cef5dc53476bc1c666024b2209 +PT= afd984174b50c835d5c32cb7e0cd4332867e0593ebbfc1f5caf18cb8c50f8f3f +TEST= 351 +KEY= 5f024217569cff76ebf1ef24e2049e06 +CT= afd984174b50c835d5c32cb7e0cd4332867e0593ebbfc1f5caf18cb8c50f8f3f +PT= a717887a854c691447043ab63c1f6666cb81630507af3976db5faed67c465e55 +TEST= 352 +KEY= 948321125133c60030ae41f29e42c053 +CT= a717887a854c691447043ab63c1f6666cb81630507af3976db5faed67c465e55 +PT= e0e42159b1e68ad507c0d6943fcd63ffe4320d24f0233ce3e188fffbfe0dd579 +TEST= 353 +KEY= 70b12c36a110fae3d126be09604f152a +CT= e0e42159b1e68ad507c0d6943fcd63ffe4320d24f0233ce3e188fffbfe0dd579 +PT= 944a219191d4841e3275f4d2eadb42cb06381adf9f0368993188d1edb1b88028 +TEST= 354 +KEY= 768936e93e13927ae0ae6fe4d1f79502 +CT= 944a219191d4841e3275f4d2eadb42cb06381adf9f0368993188d1edb1b88028 +PT= ced6e20bbc567a679552a1f9caa3b6c0a57bf37430cbf205ab2fe5ae14ece98c +TEST= 355 +KEY= d3f2c59d0ed8607f4b818a4ac51b7c8e +CT= ced6e20bbc567a679552a1f9caa3b6c0a57bf37430cbf205ab2fe5ae14ece98c +PT= cd91831864c38bebdebe3900043df88d999cfe330f1a8aa2fbda6f993549739d +TEST= 356 +KEY= 4a6e3bae01c2eaddb05be5d3f0520f13 +CT= cd91831864c38bebdebe3900043df88d999cfe330f1a8aa2fbda6f993549739d +PT= 938def659f6593b7b3d1333b951ac959d6e73ceca0c121a2c818092b962a2dd8 +TEST= 357 +KEY= 9c890742a103cb7f7843ecf8667822cb +CT= 938def659f6593b7b3d1333b951ac959d6e73ceca0c121a2c818092b962a2dd8 +PT= 59aaef68234b88b0f8efc750e1fddca3f6be08ee19534738161d46636e348645 +TEST= 358 +KEY= 6a370facb8508c476e5eaa9b084ca48e +CT= 59aaef68234b88b0f8efc750e1fddca3f6be08ee19534738161d46636e348645 +PT= b9aa5e273b3285736b4301ed618631a3002ceb8bfb592f32db308782d3a187a7 +TEST= 359 +KEY= 6a1be4274309a375b56e2d19dbed2329 +CT= b9aa5e273b3285736b4301ed618631a3002ceb8bfb592f32db308782d3a187a7 +PT= d7d9368514cd8f8cf7996d8025db665fd4ff253d0f67e242fba86be559f0257a +TEST= 360 +KEY= bee4c11a4c6e41374ec646fc821d0653 +CT= d7d9368514cd8f8cf7996d8025db665fd4ff253d0f67e242fba86be559f0257a +PT= ea3bc617cafb1178dcfc2b1739484dfbfd4b25ee6d34db66c9b0b3d7a8ee28b6 +TEST= 361 +KEY= 43afe4f4215a9a518776f52b2af32ee5 +CT= ea3bc617cafb1178dcfc2b1739484dfbfd4b25ee6d34db66c9b0b3d7a8ee28b6 +PT= 44981478e2e72d13d5c009f4ac6944cd8ccc24961392f8e7834e7b3fb4d9a0fb +TEST= 362 +KEY= cf63c06232c862b604388e149e2a8e1e +CT= 44981478e2e72d13d5c009f4ac6944cd8ccc24961392f8e7834e7b3fb4d9a0fb +PT= 403879eba03e445debc4fcf98ca4459f5c804afa603e690716d1878aedad5acd +TEST= 363 +KEY= 93e38a9852f60bb112e9099e7387d4d3 +CT= 403879eba03e445debc4fcf98ca4459f5c804afa603e690716d1878aedad5acd +PT= f584082effc0f2a19ddabb02513cc3d3661bb65858b182632ce24753e39adae0 +TEST= 364 +KEY= f5f83cc00a4789d23e0b4ecd901d0e33 +CT= f584082effc0f2a19ddabb02513cc3d3661bb65858b182632ce24753e39adae0 +PT= df854b2f49b4f4f2c101cafd65f0d262b667f535b256653adab9c33559cdfd67 +TEST= 365 +KEY= 439fc9f5b811ece8e4b28df8c9d0f354 +CT= df854b2f49b4f4f2c101cafd65f0d262b667f535b256653adab9c33559cdfd67 +PT= 2edf19b7dbfc0c4c9b2c207778a90aba28e03718a70b4f1c830014afb3a13993 +TEST= 366 +KEY= 6b7ffeed1f1aa3f467b299577a71cac7 +CT= 2edf19b7dbfc0c4c9b2c207778a90aba28e03718a70b4f1c830014afb3a13993 +PT= fd243523a5c0585dd3640bec60bae2856d666edcbb2630ac0b52ac8a4cb97dbb +TEST= 367 +KEY= 06199031a43c93586ce035dd36c8b77c +CT= fd243523a5c0585dd3640bec60bae2856d666edcbb2630ac0b52ac8a4cb97dbb +PT= 1fe01c9cc124c67c2a542c129a3b0de2d293e647bc14582ba9bfb8f05f404815 +TEST= 368 +KEY= d48a76761828cb73c55f8d2d6988ff69 +CT= 1fe01c9cc124c67c2a542c129a3b0de2d293e647bc14582ba9bfb8f05f404815 +PT= dd7c846b2ed25b83b4c63ee656d7d5484d65888431439a05382138a6da819fa0 +TEST= 369 +KEY= 99effef2296b5176fd7eb58bb30960c9 +CT= dd7c846b2ed25b83b4c63ee656d7d5484d65888431439a05382138a6da819fa0 +PT= 50ae2e607c3f48a6adeac51890241114b046a836f2ceff3e65f16cebdbdb0a51 +TEST= 370 +KEY= 29a956c4dba5ae48988fd96068d26a98 +CT= 50ae2e607c3f48a6adeac51890241114b046a836f2ceff3e65f16cebdbdb0a51 +PT= 208eb28a496c80323af93a149b1390a317e9086202deca857e8a616c24fb15df +TEST= 371 +KEY= 3e405ea6d97b64cde605b80c4c297f47 +CT= 208eb28a496c80323af93a149b1390a317e9086202deca857e8a616c24fb15df +PT= 471644b4ccb5f15d5e75533a2f417cd039cf4515782d66810ba6a075c2436adf +TEST= 372 +KEY= 078f1bb3a156024ceda318798e6a1598 +CT= 471644b4ccb5f15d5e75533a2f417cd039cf4515782d66810ba6a075c2436adf +PT= e971dc3bf987ff8bdb6d058a074ae7822b1e00f7589665d556ecc0d6c1bcb115 +TEST= 373 +KEY= 2c911b44f9c06799bb4fd8af4fd6a48d +CT= e971dc3bf987ff8bdb6d058a074ae7822b1e00f7589665d556ecc0d6c1bcb115 +PT= 65d9da65a8e703d79e454e3ed5fb4b16aa2860303258f1c77132358413597dc5 +TEST= 374 +KEY= 86b97b74cb98965eca7ded2b5c8fd948 +CT= 65d9da65a8e703d79e454e3ed5fb4b16aa2860303258f1c77132358413597dc5 +PT= 186837f2506e70bfceec44b50208afa41edcfa4876e91ac7524f7437efb93f13 +TEST= 375 +KEY= 9865813cbd718c999832991cb336e65b +CT= 186837f2506e70bfceec44b50208afa41edcfa4876e91ac7524f7437efb93f13 +PT= 5a9f06466094bd8281289f2058d451e9d39c53ada390048549d08cd23b4c0c00 +TEST= 376 +KEY= 4bf9d2911ee1881cd1e215ce887aea5b +CT= 5a9f06466094bd8281289f2058d451e9d39c53ada390048549d08cd23b4c0c00 +PT= e5de441ae25df37342f4256eb9ca3d74498843f91eeca478fd14e47e65a3fdc3 +TEST= 377 +KEY= 02719168000d2c642cf6f1b0edd91798 +CT= e5de441ae25df37342f4256eb9ca3d74498843f91eeca478fd14e47e65a3fdc3 +PT= 25accc84e1fc353a2b1ba0c2346d2422f3177ff71bcd98c5b89c137ec6e187c4 +TEST= 378 +KEY= f166ee9f1bc0b4a1946ae2ce2b38905c +CT= 25accc84e1fc353a2b1ba0c2346d2422f3177ff71bcd98c5b89c137ec6e187c4 +PT= 1587f02b24c886c664676482c89473392950bb5fd491117e243fd1ecff714d6a +TEST= 379 +KEY= d83655c0cf51a5dfb0553322d449dd36 +CT= 1587f02b24c886c664676482c89473392950bb5fd491117e243fd1ecff714d6a +PT= 02257a8de0f2b7f76de24401dea317c1e3462912bfe2ddbbc97c1b9a25f6eac2 +TEST= 380 +KEY= 3b707cd270b37864792928b8f1bf37f4 +CT= 02257a8de0f2b7f76de24401dea317c1e3462912bfe2ddbbc97c1b9a25f6eac2 +PT= e66241bfb8569d521e2e9c1e9d470ce35888d03c2f04aa0396ae29cd6c8ab9a7 +TEST= 381 +KEY= 63f8acee5fb7d267ef8701759d358e53 +CT= e66241bfb8569d521e2e9c1e9d470ce35888d03c2f04aa0396ae29cd6c8ab9a7 +PT= 6f6b06586120d2a2369897b183d815cf5652befc66a7ae3366d0e99646b18ca0 +TEST= 382 +KEY= 35aa121239107c548957e8e3db8402f3 +CT= 6f6b06586120d2a2369897b183d815cf5652befc66a7ae3366d0e99646b18ca0 +PT= 82480013b8568429351917c661b08f0f942e649ec01e32b6bc8744535b9c3ca2 +TEST= 383 +KEY= a184768cf90e4ee235d0acb080183e51 +CT= 82480013b8568429351917c661b08f0f942e649ec01e32b6bc8744535b9c3ca2 +PT= e5f1bc069bbea4b754b947b55669e2353e532bb5db96e27ea4755dfc67636d18 +TEST= 384 +KEY= 9fd75d392298ac9c91a5f14ce77b5349 +CT= e5f1bc069bbea4b754b947b55669e2353e532bb5db96e27ea4755dfc67636d18 +PT= f2af6051b3a617fab36690985ebcdd515c155ad6125055da35c718eec932258d +TEST= 385 +KEY= c3c207ef30c8f946a462e9a22e4976c4 +CT= f2af6051b3a617fab36690985ebcdd515c155ad6125055da35c718eec932258d +PT= e1f140a62231c7978f076d64abf8afd9d6225d4e7560c155b8e5b1556b669c0f +TEST= 386 +KEY= 15e05aa145a838131c8758f7452feacb +CT= e1f140a62231c7978f076d64abf8afd9d6225d4e7560c155b8e5b1556b669c0f +PT= 5d0bcd2447bd16102b534d40d4b33549ae8522530d6590d5778932a79046da4c +TEST= 387 +KEY= bb6578f248cda8c66b0e6a50d5693087 +CT= 5d0bcd2447bd16102b534d40d4b33549ae8522530d6590d5778932a79046da4c +PT= 29a01d8d209987074edd894bbe47f8e41f69aea30555976c971f2fef60b1cfb8 +TEST= 388 +KEY= a40cd6514d983faafc1145bfb5d8ff3f +CT= 29a01d8d209987074edd894bbe47f8e41f69aea30555976c971f2fef60b1cfb8 +PT= 2588fdf32fbe143952d21c1f214715eeb85b409db65bc2407840659a57b30cf6 +TEST= 389 +KEY= 1c5796ccfbc3fdea84512025e26bf3c9 +CT= 2588fdf32fbe143952d21c1f214715eeb85b409db65bc2407840659a57b30cf6 +PT= 9277cacd21ea501709cc347bd5800f6710a705c886a99a0178488b69f186500a +TEST= 390 +KEY= 0cf093047d6a67ebfc19ab4c13eda3c3 +CT= 9277cacd21ea501709cc347bd5800f6710a705c886a99a0178488b69f186500a +PT= 5d4295dba65951cd35553fc18855f1e72d4f34f2196a9636353fc7b61c704e74 +TEST= 391 +KEY= 21bfa7f66400f1ddc9266cfa0f9dedb7 +CT= 5d4295dba65951cd35553fc18855f1e72d4f34f2196a9636353fc7b61c704e74 +PT= 3a660bb0ff245a27c05627d6cb9459193a6fd733bffe9e3f3d9194daeb80a28a +TEST= 392 +KEY= 1bd070c5dbfe6fe2f4b7f820e41d4f3d +CT= 3a660bb0ff245a27c05627d6cb9459193a6fd733bffe9e3f3d9194daeb80a28a +PT= 4f7f85cfa7afc794aa8114ca61f77d8a0f0a9310229c5cdc1a3bf68f597de360 +TEST= 393 +KEY= 14dae3d5f962333eee8c0eafbd60ac5d +CT= 4f7f85cfa7afc794aa8114ca61f77d8a0f0a9310229c5cdc1a3bf68f597de360 +PT= 817d644e4c4fc97fd660dec73e013cd8959afdc368d9503780b163b38848cf87 +TEST= 394 +KEY= 81401e1691bb63096e3d6d1c352863da +CT= 817d644e4c4fc97fd660dec73e013cd8959afdc368d9503780b163b38848cf87 +PT= dafcbe20539f9288ff2e9df65f0b8f0164b0b4557614f7681ba6f4ca7b6847b3 +TEST= 395 +KEY= e5f0aa43e7af9461759b99d64e402469 +CT= dafcbe20539f9288ff2e9df65f0b8f0164b0b4557614f7681ba6f4ca7b6847b3 +PT= 2036ace4af11ba04cd75d7cc422e160517a3c52787c7b82ba0421ed4f7196c0c +TEST= 396 +KEY= f2536f6460682c4ad5d98702b9594865 +CT= 2036ace4af11ba04cd75d7cc422e160517a3c52787c7b82ba0421ed4f7196c0c +PT= e413b92f2fc886113351aced5eba3f3eb0989e9e6a0c7402647c9530ec072dc0 +TEST= 397 +KEY= 42cbf1fa0a645848b1a51232555e65a5 +CT= e413b92f2fc886113351aced5eba3f3eb0989e9e6a0c7402647c9530ec072dc0 +PT= 59c4d9f5a93f5dce67b1192111f7eb2fd79dc8522d56f870037df2aae7b36269 +TEST= 398 +KEY= 955639a82732a038b2d8e098b2ed07cc +CT= 59c4d9f5a93f5dce67b1192111f7eb2fd79dc8522d56f870037df2aae7b36269 +PT= b24fa6f45592a046ee7bd332b8076ca19e53e3e8ad700ba95e2ee7a0227739cc +TEST= 399 +KEY= 0b05da408a42ab91ecf60738909a3e00 +CT= b24fa6f45592a046ee7bd332b8076ca19e53e3e8ad700ba95e2ee7a0227739cc +PT= 207dbbb0cee2e66561da7f249f1ab269bdcd3feb1512425a99128b92611e1bda diff --git a/flint/test/testvals/ecbmd86.txt b/flint/test/testvals/ecbmd86.txt new file mode 100644 index 0000000..4d69394 --- /dev/null +++ b/flint/test/testvals/ecbmd86.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 764c9c47af97beb7c0112b37905ae47cb2e6529608d76dd7e976dcb536474f6d +TEST= 1 +KEY= c0112b37905ae47cb2e6529608d76dd7e976dcb536474f6d +CT= 764c9c47af97beb7c0112b37905ae47cb2e6529608d76dd7e976dcb536474f6d +PT= 2aa2efe7a3ed05fdd3a0d21f022ad3b2a10837fa222257370806e5786898c120 +TEST= 2 +KEY= 13b1f928927037ce13ee656c2af53ae0e17039cd5edf8e4d +CT= 2aa2efe7a3ed05fdd3a0d21f022ad3b2a10837fa222257370806e5786898c120 +PT= 82d9be5331baeb48f3a3c24a3dd371519797abf8879d970b6524375fc610cc44 +TEST= 3 +KEY= e0123b62afa3469f8479ce94ad68adeb84540e9298cf4209 +CT= 82d9be5331baeb48f3a3c24a3dd371519797abf8879d970b6524375fc610cc44 +PT= f0864324e3bfe397004f29892398f9c53c05f72517212319510ad67931ff9cfe +TEST= 4 +KEY= e05d12eb8c3bbf5ab87c39b1ba498ef2d55ed8eba930def7 +CT= f0864324e3bfe397004f29892398f9c53c05f72517212319510ad67931ff9cfe +PT= 8b326498ae588ec0a7f0cdd30612bf940fdbe1636231bc73de0d62e1b4dd3568 +TEST= 5 +KEY= 47addf388a2900ceb7a7d8d2d87832810b53ba0a1dedeb9f +CT= 8b326498ae588ec0a7f0cdd30612bf940fdbe1636231bc73de0d62e1b4dd3568 +PT= 2e64cabd79974a419596b11099584805fc652a7ddc92ffa28dd543792fe8e6de +TEST= 6 +KEY= d23b6e28137148cb4bc2f2af04eacd238686f97332050d41 +CT= 2e64cabd79974a419596b11099584805fc652a7ddc92ffa28dd543792fe8e6de +PT= e5a4feafcbd5a1934834802f9429d9aed29bf5c4dadd137aaf835c1a67e12fce +TEST= 7 +KEY= 9a0fee07875891659959076bde37de592905a56955e4228f +CT= e5a4feafcbd5a1934834802f9429d9aed29bf5c4dadd137aaf835c1a67e12fce +PT= ccf2c81ab9131f32d0ff275fc55e761cca3febdc21d7e19361371dc8a274450d +TEST= 8 +KEY= 4af0c9584206e7795366ecb7ffe03fca4832b8a1f7906782 +CT= ccf2c81ab9131f32d0ff275fc55e761cca3febdc21d7e19361371dc8a274450d +PT= 7cdd9228ba650356dc27e53a020b7fddb99f2498b18b710754e5eb18c1fc0b73 +TEST= 9 +KEY= 96d72c62400d98a4eaf9c82f4e6b4ecd1cd753b9366c6cf1 +CT= 7cdd9228ba650356dc27e53a020b7fddb99f2498b18b710754e5eb18c1fc0b73 +PT= 9b96e86bd569d3633caf3fdd1bf9a265cf6c66321fe859a78f5e5182232fc839 +TEST= 10 +KEY= aa7813bf5bf43ac12595ae1d5183176a9389023b1543a4c8 +CT= 9b96e86bd569d3633caf3fdd1bf9a265cf6c66321fe859a78f5e5182232fc839 +PT= ca0f12fe7d21453c68666859890efa4cf4d1cd35aab7da893f7bcea05f0e6e91 +TEST= 11 +KEY= c21e7be6d2fac08dd1446328fb34cde3acf2cc9b4a4dca59 +CT= ca0f12fe7d21453c68666859890efa4cf4d1cd35aab7da893f7bcea05f0e6e91 +PT= 21b743ba294e2d0e6bec34215b85c924692c53f1c59fdf1bbde5a28ef30bcf47 +TEST= 12 +KEY= a9f24fc7897f09a9b86830d93eab12f811176e15b946051e +CT= 21b743ba294e2d0e6bec34215b85c924692c53f1c59fdf1bbde5a28ef30bcf47 +PT= 43ae9ffaeccab2eba9f191e5043fc0a80f7c09de87d11fe824cbe5954fb21722 +TEST= 13 +KEY= 0003de228d40c901b7143907b97a0d1035dc8b80f6f4123c +CT= 43ae9ffaeccab2eba9f191e5043fc0a80f7c09de87d11fe824cbe5954fb21722 +PT= 6b8c9ba0d10ab973286186e95afae998424c1f63fe91ed2568a941d50514b1e7 +TEST= 14 +KEY= 286258cbd7ba2099f558266447ebe0355d75ca55f3e0a3db +CT= 6b8c9ba0d10ab973286186e95afae998424c1f63fe91ed2568a941d50514b1e7 +PT= cd74160a4f4832800cfd7a77306c329829a2b583e824db2e5c8315ebb01e3360 +TEST= 15 +KEY= 249f22bce7d61201dcfa93e7afcf3b1b01f6dfbe43fe90bb +CT= cd74160a4f4832800cfd7a77306c329829a2b583e824db2e5c8315ebb01e3360 +PT= 4476c68a1624a3ffb9d091553a6b6bbfa03eb9f65f2d95ebee3589ae20e5d109 +TEST= 16 +KEY= 9d4fb3e9ddbd79be7cc42a11f0e2aef0efc35610631b41b2 +CT= 4476c68a1624a3ffb9d091553a6b6bbfa03eb9f65f2d95ebee3589ae20e5d109 +PT= 0ff54d2df8b820877595e6f933df61c29759c1ef9e7e2fcf57d29a4bfca22d06 +TEST= 17 +KEY= e8da5510ee62187ceb9debfe6e9c813fb811cc5b9fb96cb4 +CT= 0ff54d2df8b820877595e6f933df61c29759c1ef9e7e2fcf57d29a4bfca22d06 +PT= a9b05aec20ace8a5da76650a4a979fc1f4a2e1fbdb49b9463bf9ccbf8b32518d +TEST= 18 +KEY= 32ac301aa4f587bd1f3f0a05b5d5387983e800e4148b3d39 +CT= a9b05aec20ace8a5da76650a4a979fc1f4a2e1fbdb49b9463bf9ccbf8b32518d +PT= d1936959dab22798e2519f39d49e2c55c5c3b124d973fffeb25e94376e579b20 +TEST= 19 +KEY= d0fdaf23706babe8dafcbb216ca6c78731b694d37adca619 +CT= d1936959dab22798e2519f39d49e2c55c5c3b124d973fffeb25e94376e579b20 +PT= aaff3621484e2d2200ae06a29ae90ed4e1ed92973c711856b8bd1073288e0196 +TEST= 20 +KEY= d053a981ea82a53c3b1129b650d7dfd1890b84a05252a78f +CT= aaff3621484e2d2200ae06a29ae90ed4e1ed92973c711856b8bd1073288e0196 +PT= 871c6fde8edb2e3aa91252b88ff2c3de0b38dce748bea493dd3e9668aca3e9c2 +TEST= 21 +KEY= 7941fb39657066e23029f55118697b42543512c8fef14e4d +CT= 871c6fde8edb2e3aa91252b88ff2c3de0b38dce748bea493dd3e9668aca3e9c2 +PT= 6a3767e7c9068ca5e0761b67706be5e52c5c8442f470dc65278107e7ff2010c7 +TEST= 22 +KEY= 9937e05e151b83071c757113ec19a72773b4152f01d15e8a +CT= 6a3767e7c9068ca5e0761b67706be5e52c5c8442f470dc65278107e7ff2010c7 +PT= 3692cf2603aa9d1e060ab70e5d7b819aa0b5681272b99fcd74b5950ed71bfe0f +TEST= 23 +KEY= 9f3d57504860029dbcc019019ea038ea07018021d6caa085 +CT= 3692cf2603aa9d1e060ab70e5d7b819aa0b5681272b99fcd74b5950ed71bfe0f +PT= a8382115c993f0c5f702e446c92a30f519eb2a6e9fff2722915334e4708618a5 +TEST= 24 +KEY= 683fb316814a3268a52b336f015f1fc89652b4c5a64cb820 +CT= a8382115c993f0c5f702e446c92a30f519eb2a6e9fff2722915334e4708618a5 +PT= 52b9fc4e1f7a7600e3403e1040aca1407775df3ca13edc6af5e823564541fb25 +TEST= 25 +KEY= 8b7f8d06c1e69328d25eec53a061c3a263ba9793e30d4305 +CT= 52b9fc4e1f7a7600e3403e1040aca1407775df3ca13edc6af5e823564541fb25 +PT= 3b6b33c12416fdec63eebb01a3871743f2da034a8d2bb712ffbd652fe2044ee9 +TEST= 26 +KEY= e89136076261846b2084ef192d4a74b09c07f2bc01090dec +CT= 3b6b33c12416fdec63eebb01a3871743f2da034a8d2bb712ffbd652fe2044ee9 +PT= 0d88e34969c820956a64137929db9299f873d12f515af61064059db878baaf3f +TEST= 27 +KEY= 82f5257e4bba16f2d8f73e367c1082a0f8026f0479b3a2d3 +CT= 0d88e34969c820956a64137929db9299f873d12f515af61064059db878baaf3f +PT= 0e1fe73b5b8e997c14e048ce096384850339e1d85860c83cf039d5baa173a63a +TEST= 28 +KEY= 96156db042d99277dbcedfee24704a9c083bbabed8c004e9 +CT= 0e1fe73b5b8e997c14e048ce096384850339e1d85860c83cf039d5baa173a63a +PT= 135315223fe9b3bdfeafa4ce97d8ae6881af789044c01b1da997a8097f27cfcb +TEST= 29 +KEY= 68bac97ed5013c1f5a61a77e60b05181a1ac12b7a7e7cb22 +CT= 135315223fe9b3bdfeafa4ce97d8ae6881af789044c01b1da997a8097f27cfcb +PT= 760985f3502e64f78237f865583c775e2589ecf7363b0f0cf7e78a4216517080 +TEST= 30 +KEY= ea8d311b8d3d4b417fe84b89568b5e8d564b98f5b1b6bba2 +CT= 760985f3502e64f78237f865583c775e2589ecf7363b0f0cf7e78a4216517080 +PT= 305feb5d023457c93846c4a0116f79fba75de9e266f4d9d79e011f47bd1de9da +TEST= 31 +KEY= d2cbf5bb9c5232bad8b5a26b307f875ac84a87b20cab5278 +CT= 305feb5d023457c93846c4a0116f79fba75de9e266f4d9d79e011f47bd1de9da +PT= 34c95a911b5b62d024f5b6ef9dd68b640595138107620fc3d979d5e2c9555758 +TEST= 32 +KEY= f63e43540184b9dedd20b1ea371d889911335250c5fe0520 +CT= 34c95a911b5b62d024f5b6ef9dd68b640595138107620fc3d979d5e2c9555758 +PT= 17320251b0c35ed97b3dd1e65909902678e83bd766793522f88ec47bccb56ac1 +TEST= 33 +KEY= 8d0392b2588d29f8a5c88a3d5164bdbbe9bd962b094b6fe1 +CT= 17320251b0c35ed97b3dd1e65909902678e83bd766793522f88ec47bccb56ac1 +PT= ad7b2b51dea094a5d5bbd6c29c2c7ca714d411d7035c1c0fe95ad305775d0289 +TEST= 34 +KEY= 58b84470c4a1555fb11c9bea5238a1b400e7452e7e166d68 +CT= ad7b2b51dea094a5d5bbd6c29c2c7ca714d411d7035c1c0fe95ad305775d0289 +PT= 59b4d46555464721cc3701bf41820f9ba924966b45cd0361aa6187f78b364b9d +TEST= 35 +KEY= 948f45cf85235ac418380d8117f5a2d5aa86c2d9f52026f5 +CT= 59b4d46555464721cc3701bf41820f9ba924966b45cd0361aa6187f78b364b9d +PT= a254ec350c3e83d13d7bbdca27abd9a8c07373a134a00a9149e99d34086951dc +TEST= 36 +KEY= a9f4f805a288836cd84b7e202355a844e36f5fedfd497729 +CT= a254ec350c3e83d13d7bbdca27abd9a8c07373a134a00a9149e99d34086951dc +PT= cb3266812b1865d4758bf8f31c17600c1639cc3d599f2319ff87821fc71a9e48 +TEST= 37 +KEY= dc7f00f6be9fe360ce72b21d7aca8b5d1ce8ddf23a53e961 +CT= cb3266812b1865d4758bf8f31c17600c1639cc3d599f2319ff87821fc71a9e48 +PT= 9b0def2726c0434fb1bad66ac40363c352ac9bea2c9db82d3a9cbfe4a8661585 +TEST= 38 +KEY= 6dc5d69c7a9c80a39cde29f756573370267462169235fce4 +CT= 9b0def2726c0434fb1bad66ac40363c352ac9bea2c9db82d3a9cbfe4a8661585 +PT= 5bf749d6982c1a59c7b60e0bf79050a6f8aafc709495db32191619ece65a2073 +TEST= 39 +KEY= aa73d8978d0cd0056474d587c2c2e8423f627bfa746fdc97 +CT= 5bf749d6982c1a59c7b60e0bf79050a6f8aafc709495db32191619ece65a2073 +PT= df7c1a31bd5138c8baf580a61a0b303c21133a7e5e52e797827f07ee291bbd92 +TEST= 40 +KEY= 108658319707e0394567eff99c900fd5bd1d7c145d746105 +CT= df7c1a31bd5138c8baf580a61a0b303c21133a7e5e52e797827f07ee291bbd92 +PT= 1f81132930363e302fbe6941ca1e4ecb1e2fb0bb2d4f807325661914efdf912c +TEST= 41 +KEY= 3f3831705d19aef25b485f42b1df8fa6987b6500b2abf029 +CT= 1f81132930363e302fbe6941ca1e4ecb1e2fb0bb2d4f807325661914efdf912c +PT= 499ec1ef329fbca36c5bcb897b4f60cc120f10fe7008000420a1cb1a1225ac1a +TEST= 42 +KEY= 5363faf92656ce3e49474fbcc1d78fa2b8daae1aa08e5c33 +CT= 499ec1ef329fbca36c5bcb897b4f60cc120f10fe7008000420a1cb1a1225ac1a +PT= 7e7e2c45f3df0dd08b21fbdeaf60ad568894ded66a38e7c8b3eb68b1847ab35f +TEST= 43 +KEY= d842012789366368c1d3916aabef686a0b31c6ab24f4ef6c +CT= 7e7e2c45f3df0dd08b21fbdeaf60ad568894ded66a38e7c8b3eb68b1847ab35f +PT= 78f4983dd3fdfd093228c1871f02e1d171683eda233105cccfbb635d34f63ee7 +TEST= 44 +KEY= ea6ac0a0963482b9b0bbafb088de6da6c48aa5f61002d18b +CT= 78f4983dd3fdfd093228c1871f02e1d171683eda233105cccfbb635d34f63ee7 +PT= 431c322ec0dfe9a283cfc6b01bd6383bf2effe240b2c75b46100bc41fcc158c3 +TEST= 45 +KEY= 69a506108de2ba824254519483f21812a58a19b7ecc38948 +CT= 431c322ec0dfe9a283cfc6b01bd6383bf2effe240b2c75b46100bc41fcc158c3 +PT= de7eb3537c82665b90e5d3dcbe6dcb5e89ad6edb21ddcb089713546e6f6adeba +TEST= 46 +KEY= f940d5cc338f71dccbf93f4fa22fd31a32994dd983a957f2 +CT= de7eb3537c82665b90e5d3dcbe6dcb5e89ad6edb21ddcb089713546e6f6adeba +PT= aaf1229a8308b5704916734811456037e351880ef039ed0ad80587ab6bb7a034 +TEST= 47 +KEY= b056a68422ca11eb28a8b74152163e10ea9cca72e81ef7c6 +CT= aaf1229a8308b5704916734811456037e351880ef039ed0ad80587ab6bb7a034 +PT= 14cd364c6f371efd6ce02fc6c4a4b5876c09d4ea9d96285048eca348f3a0ee94 +TEST= 48 +KEY= dcb68942e66ea46c44a163abcf801640a270693a1bbe1952 +CT= 14cd364c6f371efd6ce02fc6c4a4b5876c09d4ea9d96285048eca348f3a0ee94 +PT= 8eac05f5c967cc413a09461603c353bbdf236d019c5b1a30d124000c322c5e38 +TEST= 49 +KEY= e6bfcf54e5adf7d79b820eaa53db0c70735469362992476a +CT= 8eac05f5c967cc413a09461603c353bbdf236d019c5b1a30d124000c322c5e38 +PT= 6ca12b793a18b86839f0777a4f4e80529e0fa567d97559948f008598be66b99b +TEST= 50 +KEY= df4fb82eaae37785058dabcd8aae55e4fc54ecae97f4fef1 +CT= 6ca12b793a18b86839f0777a4f4e80529e0fa567d97559948f008598be66b99b +PT= 88599e227fa6900649fc4ba7081a852c316637d570abb1bd76390a0dbb724539 +TEST= 51 +KEY= 96b3f389a2f9f2a934eb9c18fa05e4598a6de6a32c86bbc8 +CT= 88599e227fa6900649fc4ba7081a852c316637d570abb1bd76390a0dbb724539 +PT= cbaed48724e835ef90550261d77414dd83941e2dc28f28d362710ebb49a862ae +TEST= 52 +KEY= 06e6f1e8758de674b77f8235388acc8ae81ce818652ed966 +CT= cbaed48724e835ef90550261d77414dd83941e2dc28f28d362710ebb49a862ae +PT= 716083f21d5c0c0f0f90380a4570a0680bfdc7561b65d73ac9ddcf6c211feda3 +TEST= 53 +KEY= 0976c9e230fd461cbc82456323ef1bb021c12774443134c5 +CT= 716083f21d5c0c0f0f90380a4570a0680bfdc7561b65d73ac9ddcf6c211feda3 +PT= 021cbb55290b8433e98b6a24bd6b2694f9376cc2f32a0f958ade03a38332f123 +TEST= 54 +KEY= e0fda3c68d96608845b529a1d0c51425ab1f24d7c703c5e6 +CT= 021cbb55290b8433e98b6a24bd6b2694f9376cc2f32a0f958ade03a38332f123 +PT= 50f2d42e394cc41f9d1c454e8e81a9094c63d99164c8f7e53d230e47fd7b7fa9 +TEST= 55 +KEY= 7de1e6880317c98109d6f030b40de3c0963c2a903a78ba4f +CT= 50f2d42e394cc41f9d1c454e8e81a9094c63d99164c8f7e53d230e47fd7b7fa9 +PT= 67e40352dfce86f129bb5994137490ce003669941d11d68a3c75f77ee92b7bad +TEST= 56 +KEY= 545abf1c1063594f09e099a4a91c354aaa49ddeed353c1e2 +CT= 67e40352dfce86f129bb5994137490ce003669941d11d68a3c75f77ee92b7bad +PT= 2dd2c85fc6c6c43ee7c761ed751422652f35c031346ec4dcda4ce73649052e67 +TEST= 57 +KEY= b39ddef165777b2a26d559959d72f19670053ad89a56ef85 +CT= 2dd2c85fc6c6c43ee7c761ed751422652f35c031346ec4dcda4ce73649052e67 +PT= c79640c24d103fc3f6af6495c261e1ade8261cada290a9bbdbcf665c925d5e5b +TEST= 58 +KEY= 4532ba64a7169a87cef345383fe2582dabca5c84080bb1de +CT= c79640c24d103fc3f6af6495c261e1ade8261cada290a9bbdbcf665c925d5e5b +PT= fb27316588af12469bb900f6a4aa89dd9618930aff2761ed748d9ad276c7fa3c +TEST= 59 +KEY= de8bba9203bc135a58ebd632c0c539c0df47c6567ecc4be2 +CT= fb27316588af12469bb900f6a4aa89dd9618930aff2761ed748d9ad276c7fa3c +PT= c55823ec37ba1d640295115df6f9d082243df832fa06eda676ff7ecc54cf60bb +TEST= 60 +KEY= dc1eabcff545c3d87cd62e003ac3d466a9b8b89a2a032b59 +CT= c55823ec37ba1d640295115df6f9d082243df832fa06eda676ff7ecc54cf60bb +PT= c131f431493f9a475f8741dc40fc17f2e55631d0a9112d8ebff1b34cf546e28c +TEST= 61 +KEY= 8399ea13b5b9d42a99801fd093d2f9e816490bd6df45c9d5 +CT= c131f431493f9a475f8741dc40fc17f2e55631d0a9112d8ebff1b34cf546e28c +PT= 5a7aa3850dde8c7e00f4c0864039204dca6f5d01d4a7d994c20769a8d7bbc81f +TEST= 62 +KEY= 836d2a95f580f46753ef42d14775207cd44e627e08fe01ca +CT= 5a7aa3850dde8c7e00f4c0864039204dca6f5d01d4a7d994c20769a8d7bbc81f +PT= 55d9a1d5567a6780243b2f206dff99b84744c7a09bcd2bd567fa115815ee5464 +TEST= 63 +KEY= a75605b5987f6ddf14ab8571dcb80ba9b3b473261d1055ae +CT= 55d9a1d5567a6780243b2f206dff99b84744c7a09bcd2bd567fa115815ee5464 +PT= 71b0b3840fd3fe9e606d55a03d52753960781d5b951775a6a7f7e80bc8d9aa7b +TEST= 64 +KEY= c73b5015a52d18e674d3982a49af7e0f14439b2dd5c9ffd5 +CT= 71b0b3840fd3fe9e606d55a03d52753960781d5b951775a6a7f7e80bc8d9aa7b +PT= 6c315468ce9aa352af428c5b4cbe36d51e3f94800b6ce9deeb28b7614ad0fa92 +TEST= 65 +KEY= 6879dc4ee9932e336aec0caa42c397d1ff6b2c4c9f190547 +CT= 6c315468ce9aa352af428c5b4cbe36d51e3f94800b6ce9deeb28b7614ad0fa92 +PT= 582cf1111eff1bc504ee89c1d848767aaca0f5621178cb399fcaafaf84d733c9 +TEST= 66 +KEY= 6c97558f31db5849c64cf9c853bb5ce860a183e31bce368e +CT= 582cf1111eff1bc504ee89c1d848767aaca0f5621178cb399fcaafaf84d733c9 +PT= 43a4eba0e6f85ec5ca749dc6f6e2e9a30d1eb39c4768638a47edabde42db73e3 +TEST= 67 +KEY= a6e3c849c739b1eacb524a5414d33f62274c283d5915456d +CT= 43a4eba0e6f85ec5ca749dc6f6e2e9a30d1eb39c4768638a47edabde42db73e3 +PT= dca54bc77901f50cd78e4f50eb6b77fedc2a22e03349906fe0287daaeb3a0a63 +TEST= 68 +KEY= 716d87192c52c614177868b4279aaf0dc7645597b22f4f0e +CT= dca54bc77901f50cd78e4f50eb6b77fedc2a22e03349906fe0287daaeb3a0a63 +PT= 3d77688457a2b2602985756d68c4828cbaabfea01721ed2109d08c62a5e140e7 +TEST= 69 +KEY= 58e8f27444964498add3961430bb422cceb4d9f517ce0fe9 +CT= 3d77688457a2b2602985756d68c4828cbaabfea01721ed2109d08c62a5e140e7 +PT= 6295a50ebcf9045139e83ac54c08b679b9fe0f2da7ff66d30bc7db45cf808641 +TEST= 70 +KEY= 6100c8b1089ef2e1142d9939974424ffc57302b0d84e89a8 +CT= 6295a50ebcf9045139e83ac54c08b679b9fe0f2da7ff66d30bc7db45cf808641 +PT= c6ff5989046307a9ade41f47c6aa1ed857e98668623a9e4f840e58cb3bd9c8dd +TEST= 71 +KEY= cce4d7f6ce34ec3943c41f51f57ebab0417d5a7be3974175 +CT= c6ff5989046307a9ade41f47c6aa1ed857e98668623a9e4f840e58cb3bd9c8dd +PT= ee98164a28fee15393e8b0c04207da9f9d821b8b84001c81a04c058651c7be5a +TEST= 72 +KEY= 5f0c67368c3336a6de4604da717ea631e1315ffdb250ff2f +CT= ee98164a28fee15393e8b0c04207da9f9d821b8b84001c81a04c058651c7be5a +PT= ddbfe5b6d2613c8901277f7f7117c1537f72a953c62761cd414d491325eacbf1 +TEST= 73 +KEY= 5e2b1849fd24f7f5a134ad89b759c7fca07c16ee97ba34de +CT= ddbfe5b6d2613c8901277f7f7117c1537f72a953c62761cd414d491325eacbf1 +PT= 7cdd252a8e64c14939fc06c165be5299c73108b2172503cab9296b9c1f0cb9c0 +TEST= 74 +KEY= 67d71e88989aa56c6605a53ba07cc43619557d7288b68d1e +CT= 7cdd252a8e64c14939fc06c165be5299c73108b2172503cab9296b9c1f0cb9c0 +PT= 6041d4d260675a8ad29580e5d41cc1c5cdefe1cd4966690779b3f500d1c60ea9 +TEST= 75 +KEY= b5429e6d4c8664a9abea44f6e91aad3160e68872597083b7 +CT= 6041d4d260675a8ad29580e5d41cc1c5cdefe1cd4966690779b3f500d1c60ea9 +PT= 4f755baa79d360c3670b1a4fa0da1e6d111497ba15841febb57b38b001528a6f +TEST= 76 +KEY= d2498422ec5c7ac4bafed34cfc9eb2dad59db0c2582209d8 +CT= 4f755baa79d360c3670b1a4fa0da1e6d111497ba15841febb57b38b001528a6f +PT= 0d184a4df2577c6c63ed46263ee9edf4692de64eb22a501e7c4382a745b8eed3 +TEST= 77 +KEY= b1a4c204d2b59730d3d335024eb4e2c4a9de32651d9ae70b +CT= 0d184a4df2577c6c63ed46263ee9edf4692de64eb22a501e7c4382a745b8eed3 +PT= 46a013e218f45e34a0aaa1786fe84f309b67c5b97fb099561887e8dcdcf40362 +TEST= 78 +KEY= 110e637cbd5dd80048b4f0bb31047b92b159dab9c16ee469 +CT= 46a013e218f45e34a0aaa1786fe84f309b67c5b97fb099561887e8dcdcf40362 +PT= 47665e69d83b426a98cc959eeeee49b42227a42f577bcf233867f1fe09b3f9a8 +TEST= 79 +KEY= 89c2f6e253b391b46a935494667fb4b1893e2b47c8dd1dc1 +CT= 47665e69d83b426a98cc959eeeee49b42227a42f577bcf233867f1fe09b3f9a8 +PT= 2320282dffb56bdc6fa56e934a52d6e58748f330f8d62df6e025487139e5dbc2 +TEST= 80 +KEY= e667987119e14751eddba7a49ea99947691b6336f138c603 +CT= 2320282dffb56bdc6fa56e934a52d6e58748f330f8d62df6e025487139e5dbc2 +PT= f6598a5681dc4d464f39d4b987d335122f8c16aac458ac5e7df3303587682796 +TEST= 81 +KEY= a95e4cc89e327243c257b10e5af1351914e853037650e195 +CT= f6598a5681dc4d464f39d4b987d335122f8c16aac458ac5e7df3303587682796 +PT= b932efc8a4c3ba8728e3e55214a0c1df37248ebbcc552f2cb8e0389570309cf5 +TEST= 82 +KEY= 81bda99a8a92b39cf5733fb596a41a35ac086b9606607d60 +CT= b932efc8a4c3ba8728e3e55214a0c1df37248ebbcc552f2cb8e0389570309cf5 +PT= 6f92c4c9b2fec2a88513500d898d9ae05b104023f209414f1122e7fc9b5717a9 +TEST= 83 +KEY= 04aef997031f297cae637f9664ad5b7abd2a8c6a9d376ac9 +CT= 6f92c4c9b2fec2a88513500d898d9ae05b104023f209414f1122e7fc9b5717a9 +PT= e900681ba4971ea8d797ca435dbbaad94c0b99bb4f96abfe9b113530ba07e1b8 +TEST= 84 +KEY= d33933d45ea483a5e268e62d2b3bf084263bb95a27308b71 +CT= e900681ba4971ea8d797ca435dbbaad94c0b99bb4f96abfe9b113530ba07e1b8 +PT= 9d028003d7af83d1c640b2b4df137788762692821464b724635a275856be26ee +TEST= 85 +KEY= 1579816081b7f42d944e74af3f5f47a045619e02718ead9f +CT= 9d028003d7af83d1c640b2b4df137788762692821464b724635a275856be26ee +PT= 6274c00885c55bdf3038625dbd9b27bdd14f12f5d0f695c8692cc27e84610f63 +TEST= 86 +KEY= 2541e33d3c2cd3904501665aefa9d2682c4d5c7cf5efa2fc +CT= 6274c00885c55bdf3038625dbd9b27bdd14f12f5d0f695c8692cc27e84610f63 +PT= 4d30e87744a73b1278a6b0e15d6fdc75f642e21d0f8d9dfb4da0e292f0b4f1cb +TEST= 87 +KEY= 5de753dc61430fe5b3438447e0244f9361edbeee055b5337 +CT= 4d30e87744a73b1278a6b0e15d6fdc75f642e21d0f8d9dfb4da0e292f0b4f1cb +PT= ac1c46cf68e58d6552626535b4961bcba987070265e4a22e08e4f1b5c74b1cfa +TEST= 88 +KEY= 0f8536e9d5d5142e1ac4834585c0edbd69094f5bc2104fcd +CT= ac1c46cf68e58d6552626535b4961bcba987070265e4a22e08e4f1b5c74b1cfa +PT= ca74db59670a23a014dc2d8bb5dd95be41a60e1cfba0b60abc8849824cc77a19 +TEST= 89 +KEY= 1b591b62600881905b628d597e605bb7d58106d98ed735d4 +CT= ca74db59670a23a014dc2d8bb5dd95be41a60e1cfba0b60abc8849824cc77a19 +PT= 29438c68c9e9ec3735d069d62bf94af20775c7994d93430e7d7eabb8741e4b08 +TEST= 90 +KEY= 2e8972b44bf1cb625c174ac033f318b9a8ffad61fac97edc +CT= 29438c68c9e9ec3735d069d62bf94af20775c7994d93430e7d7eabb8741e4b08 +PT= b9bb4f634017e0d0aee62dfff4694dda1030101bad01a36376b7fe51e1df7da0 +TEST= 91 +KEY= 806f5f4bbf9886b84c275adb9ef2bbdade4853301b16037c +CT= b9bb4f634017e0d0aee62dfff4694dda1030101bad01a36376b7fe51e1df7da0 +PT= a8274b6c9a7a74878d36ee1fd3a6994ac233f2421d19b758dc07996bd93414d2 +TEST= 92 +KEY= 0d59b1546c3e1ff28e14a89983eb0c82024fca5bc22217ae +CT= a8274b6c9a7a74878d36ee1fd3a6994ac233f2421d19b758dc07996bd93414d2 +PT= 6308f9d0b8eb969ad7bf14a3c8280016ca77b4a18cc82564a6a006564b42474e +TEST= 93 +KEY= dae6a5f7a4161fe444631c380f2329e6a4efcc0d896050e0 +CT= 6308f9d0b8eb969ad7bf14a3c8280016ca77b4a18cc82564a6a006564b42474e +PT= a94652e0dd6b413a402b883c191b1e448367616b07f24f2fc100c587ab5f42eb +TEST= 94 +KEY= 9acd2dcbbd0d01a0c7047d5308d166c965ef098a223f120b +CT= a94652e0dd6b413a402b883c191b1e448367616b07f24f2fc100c587ab5f42eb +PT= 86c0b9f53f65ab93330db4dede4d997c0f8967bcb4c359ab4778e93b3f9616d5 +TEST= 95 +KEY= a9c09915634098dcc88d1aefbc123f622297e0b11da904de +CT= 86c0b9f53f65ab93330db4dede4d997c0f8967bcb4c359ab4778e93b3f9616d5 +PT= 82139220cf76bc562ceca2fa75b292aeae88f763745334f73fa6374e0fac84f1 +TEST= 96 +KEY= 852c3bef16f20a726605ed8cc8410b951d31d7ff1205802f +CT= 82139220cf76bc562ceca2fa75b292aeae88f763745334f73fa6374e0fac84f1 +PT= 6d548d0910b99f73c64898bb8638712f05487c6df3f97834685829109f1ea7d7 +TEST= 97 +KEY= 4364a35490ca7b5d634d91e13bb873a17569feef8d1b27f8 +CT= 6d548d0910b99f73c64898bb8638712f05487c6df3f97834685829109f1ea7d7 +PT= f4fb72fa41dfb320828143b961c79af976e2ebdd182d017b661d4823717594ef +TEST= 98 +KEY= c1e5e0edf10de1a415af7a3c239572da1374b6ccfc6eb317 +CT= f4fb72fa41dfb320828143b961c79af976e2ebdd182d017b661d4823717594ef +PT= c5afbb7171957669730cf45e03397922c9b248a50f32b3b3e9b532f1438f979a +TEST= 99 +KEY= b2e914b3f2349886dc1d32992ca7c169fac1843dbfe1248d +CT= c5afbb7171957669730cf45e03397922c9b248a50f32b3b3e9b532f1438f979a +PT= 0a92814956fe3cf7b68822ca11330e27e2b3804b70a2c0d4407a3598c05b48d9 +TEST= 100 +KEY= 04613679e30796a13eaeb2d25c0501bdbabbb1a57fba6c54 +CT= 0a92814956fe3cf7b68822ca11330e27e2b3804b70a2c0d4407a3598c05b48d9 +PT= 14d642a664e2b7c2cb7f122a1bf21655e7652bb0f04f472af2cde159c604c1d3 +TEST= 101 +KEY= cf1e2453f8f580f4d9cb9962ac4a4697487650fcb9bead87 +CT= 14d642a664e2b7c2cb7f122a1bf21655e7652bb0f04f472af2cde159c604c1d3 +PT= bf8e7edde9199153785eec7e4e08fc19d9316d6bc18474e1c387e8da57ad4f23 +TEST= 102 +KEY= b740c82db6fd7ced00faf4096dce32768bf1b826ee13e2a4 +CT= bf8e7edde9199153785eec7e4e08fc19d9316d6bc18474e1c387e8da57ad4f23 +PT= 9f4a220ca3afbe5f1d4146689deab4b1fc22a0f340d771bd20d9dc6db93b04dc +TEST= 103 +KEY= aa018e452b17c85cfcd854fa2d1943cbab28644b5728e678 +CT= 9f4a220ca3afbe5f1d4146689deab4b1fc22a0f340d771bd20d9dc6db93b04dc +PT= 490a741dfe3237c718f13abde8f9008297da18dc3c90cb48972958de586755cf +TEST= 104 +KEY= b2f0b4f8c3eec8de6b024c26118988833c013c950f4fb3b7 +CT= 490a741dfe3237c718f13abde8f9008297da18dc3c90cb48972958de586755cf +PT= 35f634f2bba48b2adfd5e71b000ac203a418fca710bc0dba4552fd47a699102f +TEST= 105 +KEY= 6d2553e3c3e40addcf1ab081013585397953c1d2a9d6a398 +CT= 35f634f2bba48b2adfd5e71b000ac203a418fca710bc0dba4552fd47a699102f +PT= 0ca81439cb3af2125ef1503628e3a035ec4f548e7ae7d7b2699e49eb278ba399 +TEST= 106 +KEY= 33d403d5eb07aae82355e40f7bd2528b10cd88398e5d0001 +CT= 0ca81439cb3af2125ef1503628e3a035ec4f548e7ae7d7b2699e49eb278ba399 +PT= e052b8d9a9d65d6afa8e2204f5099eb71cfa193d45c5134e3622f0ea7fa3cf4d +TEST= 107 +KEY= c95a21d11e0e345f3faffd323e1741c526ef78d3f1fecf4c +CT= e052b8d9a9d65d6afa8e2204f5099eb71cfa193d45c5134e3622f0ea7fa3cf4d +PT= 3b1f17c8c427db10e6498f1efa179cd39e9962479de3a6702a0c84434c6ba0f3 +TEST= 108 +KEY= 2f13aecfe419a88ca1369f75a3f4e7b50ce3fc90bd956fbf +CT= 3b1f17c8c427db10e6498f1efa179cd39e9962479de3a6702a0c84434c6ba0f3 +PT= 7efda605fba14936508ada8032e3a0184c6af80a437408c3196e60d5ef0b9240 +TEST= 109 +KEY= 7f99744fd6fa0894ed5c677fe080ef76158d9c45529efdff +CT= 7efda605fba14936508ada8032e3a0184c6af80a437408c3196e60d5ef0b9240 +PT= 6c71016ac755ea406ea139a2d27c49ec14c44406ce3cd9327be18deef86f5a91 +TEST= 110 +KEY= 11384ded04864178f99823792ebc36446e6c11abaaf1a76e +CT= 6c71016ac755ea406ea139a2d27c49ec14c44406ce3cd9327be18deef86f5a91 +PT= e77682c9fa1cdf0ac235c2a2e4a1b196c8198ce254eeba313f6b4abe5aaeb3f9 +TEST= 111 +KEY= d30d8f4fe027f0ee3181af9b7a528c7551075b15f05f1497 +CT= e77682c9fa1cdf0ac235c2a2e4a1b196c8198ce254eeba313f6b4abe5aaeb3f9 +PT= 5663d872f79a1db69644f2bbb115a6c411634415e9a0a2b988e5177c61244929 +TEST= 112 +KEY= 45497df45132562a20e2eb8e93f22eccd9e24c69917b5dbe +CT= 5663d872f79a1db69644f2bbb115a6c411634415e9a0a2b988e5177c61244929 +PT= 14a8b4a83d85ad59ee255256078fd7d6bcc795edaacb6bbdf4d643dd55fbd8fb +TEST= 113 +KEY= ab6c2fa256bd81fc9c257e63393945712d340fb4c4808545 +CT= 14a8b4a83d85ad59ee255256078fd7d6bcc795edaacb6bbdf4d643dd55fbd8fb +PT= d25c100fd42eb20b5e3530a4c644222e76fbdb45c19b9ed6dead4472101e42ff +TEST= 114 +KEY= f5591f0690f9a3d2eadea526f8a2dba7f3994bc6d49ec7ba +CT= d25c100fd42eb20b5e3530a4c644222e76fbdb45c19b9ed6dead4472101e42ff +PT= a0311e741a63a01ff5c2a88faa4165bd3d36d8314b211f368e5bc8a71eecd3ab +TEST= 115 +KEY= 009bb7893ab8c66fd7e87d17b383c4917dc28361ca721411 +CT= a0311e741a63a01ff5c2a88faa4165bd3d36d8314b211f368e5bc8a71eecd3ab +PT= f3507e6ac86d7473036bd58bc088af336d3e667686c02b98a2cdb8c537612012 +TEST= 116 +KEY= 03f06202fa30695cbad61b613543ef09df0f3ba4fd133403 +CT= f3507e6ac86d7473036bd58bc088af336d3e667686c02b98a2cdb8c537612012 +PT= c4cc35a4f5e10a110780e30c1f3347f94ae09fbbf0ba83b80a689489dc8309e0 +TEST= 117 +KEY= 0470810ee5032ea5f03684dac5f96cb1d567af2d21903de3 +CT= c4cc35a4f5e10a110780e30c1f3347f94ae09fbbf0ba83b80a689489dc8309e0 +PT= 226b64aa1ddc4b36e2a70e874bdbc30073953080eae3a674e4357f3e4744a899 +TEST= 118 +KEY= e6d78f89aed8eda583a3b45a2f1acac53152d01366d4957a +CT= 226b64aa1ddc4b36e2a70e874bdbc30073953080eae3a674e4357f3e4744a899 +PT= 2c6d8204ec66173a2e9e85c075313f0ea70e1774c62ae92a3462af436b9ab310 +TEST= 119 +KEY= c8490a49dbe9d2ab24ada32ee93023ef05307f500d4e266a +CT= 2c6d8204ec66173a2e9e85c075313f0ea70e1774c62ae92a3462af436b9ab310 +PT= 73272fe5794f790d5a21b83ff597e064e6de0a155bc5cd11dc005f992e0986d6 +TEST= 120 +KEY= 9268b2762e7e32cfc273a93bb2f5eefed93020c92347a0bc +CT= 73272fe5794f790d5a21b83ff597e064e6de0a155bc5cd11dc005f992e0986d6 +PT= 0bd12622264b4b09741c24ba06980a73ecbad69014646c03978e59f208ec243b +TEST= 121 +KEY= e67496cc28e638bc2ec97faba69182fd4ebe793b2bab8487 +CT= 0bd12622264b4b09741c24ba06980a73ecbad69014646c03978e59f208ec243b +PT= 7d41fa92abafaf4550b815c82135e58a8765511c19b961f119dd1a3358a705d0 +TEST= 122 +KEY= b6cc830409d3dd36a9ac2eb7bf28e30c57636308730c8157 +CT= 7d41fa92abafaf4550b815c82135e58a8765511c19b961f119dd1a3358a705d0 +PT= dbb6f4f2a390417d82badea6d8e2447e631b61f7cf6dc66bf7e48c834738e205 +TEST= 123 +KEY= 34765da2d1319948cab74f4070452567a087ef8b34346352 +CT= dbb6f4f2a390417d82badea6d8e2447e631b61f7cf6dc66bf7e48c834738e205 +PT= ec96603eadb7a1b7466b8e5d73c2125973cf6b9458bab54566fd9829f1c49078 +TEST= 124 +KEY= 721dd3ffa2f38b11b97824d428ff9022c67a77a2c5f0f32a +CT= ec96603eadb7a1b7466b8e5d73c2125973cf6b9458bab54566fd9829f1c49078 +PT= fd28749d613f01c986e3d1234e7a73882fc26184d4e8ac763f5b40f5eaf140f6 +TEST= 125 +KEY= f4fe02dcec89f89996ba4550fc173c54f92137572f01b3dc +CT= fd28749d613f01c986e3d1234e7a73882fc26184d4e8ac763f5b40f5eaf140f6 +PT= 14498fd2e6f5f36efb2b710bfc058d1796086dba4e6658a5327e00b28075371b +TEST= 126 +KEY= 0fd573d7108c758e00b228eab27164f1cb5f37e5af7484c7 +CT= 14498fd2e6f5f36efb2b710bfc058d1796086dba4e6658a5327e00b28075371b +PT= c17a8ca1783fae787b57a23c45efbf21d0a641c5412460f02ced1f1399157880 +TEST= 127 +KEY= 7482d1eb5563caafd014692ff3550401e7b228f63661fc47 +CT= c17a8ca1783fae787b57a23c45efbf21d0a641c5412460f02ced1f1399157880 +PT= d8e412c5f1fa5d2fe3c07501fe0b6e38173ee21fa9d62df5547f489790413251 +TEST= 128 +KEY= 9742a4eaab68a497c72a8b305a8329f4b3cd6061a620ce16 +CT= d8e412c5f1fa5d2fe3c07501fe0b6e38173ee21fa9d62df5547f489790413251 +PT= 1e73b391fdc940804a8deed55c8410fe4c557b6f88522fe4fb8eded7cfa483bd +TEST= 129 +KEY= ddcf4a3ff7ecb4698b7ff05fd2d106104843beb669844dab +CT= 1e73b391fdc940804a8deed55c8410fe4c557b6f88522fe4fb8eded7cfa483bd +PT= 1102fd6c85f4ab5981457b196eb370ab5a8454cb0f3388652a68c7bb3f7a9775 +TEST= 130 +KEY= 5c8a3126995fc4c2d1fba494dde28e75622b790d56fedade +CT= 1102fd6c85f4ab5981457b196eb370ab5a8454cb0f3388652a68c7bb3f7a9775 +PT= 0e2a5b2d5ff37d4c5398ce63468f0dd7ae5ade2305a0ed8e2b6284973c77a333 +TEST= 131 +KEY= 0f12ff45dfd0c9157fa17ab7d84263fb4949fd9a6a8979ed +CT= 0e2a5b2d5ff37d4c5398ce63468f0dd7ae5ade2305a0ed8e2b6284973c77a333 +PT= bf44fe52df69e22fdde23e8c4e2afae2d0d02ed71508d65a6c986c9127e208a0 +TEST= 132 +KEY= d2f0c1c991fa33f7af715460cd4ab5a125d1910b4d6b714d +CT= bf44fe52df69e22fdde23e8c4e2afae2d0d02ed71508d65a6c986c9127e208a0 +PT= a01d28a611e58c9bea2b743a9c927362514a95429346544bc510cff425d17833 +TEST= 133 +KEY= 38dbb5f30d684095fe3bc1225e0ce1eae0c15eff68ba097e +CT= a01d28a611e58c9bea2b743a9c927362514a95429346544bc510cff425d17833 +PT= 7bab89e9905c36f1befa7c986dddb0d980a7d67633c2b6080ed8a1b027b41dea +TEST= 134 +KEY= 8621c96b60b5f04c7e9c17546dce57e2ee19ff4f4f0e1494 +CT= 7bab89e9905c36f1befa7c986dddb0d980a7d67633c2b6080ed8a1b027b41dea +PT= 8566ffab215751ce3da8b0710fc7be474fa440792c0f24073dbada1641d2fa4e +TEST= 135 +KEY= bb89791a6f724e0b3138572d41c173e5d3a325590edceeda +CT= 8566ffab215751ce3da8b0710fc7be474fa440792c0f24073dbada1641d2fa4e +PT= 4900d13cce4440ab1d9c4481b0510d346fae1c75f4858fface71e20df39ef4d2 +TEST= 136 +KEY= a6153d9bdf23433f5e964b58b544fc1f1dd2c754fd421a08 +CT= 4900d13cce4440ab1d9c4481b0510d346fae1c75f4858fface71e20df39ef4d2 +PT= 0c3a19a19b3fc1a4683871648ed584fd93a0c6d7db4852f1e09050a718d61f7d +TEST= 137 +KEY= ce2d4cff51f6c7c2cd368d8f6e0caeeefd4297f3e5940575 +CT= 0c3a19a19b3fc1a4683871648ed584fd93a0c6d7db4852f1e09050a718d61f7d +PT= ee5d3702695c9b7728a4a26ce2078b73fb58c9ad067a180b4be9dc582125e5b3 +TEST= 138 +KEY= e689ee93b3f14cb1366e44226876b6e5b6ab4babc4b1e0c6 +CT= ee5d3702695c9b7728a4a26ce2078b73fb58c9ad067a180b4be9dc582125e5b3 +PT= d3d7efd224cc2aa59015f203c4fb9a9f90ba2d66ddd34b8b8e9fa480eb6a3443 +TEST= 139 +KEY= 769c1c90770ad62ea6d46944b5a5fd6e3834ef2b2fdbd485 +CT= d3d7efd224cc2aa59015f203c4fb9a9f90ba2d66ddd34b8b8e9fa480eb6a3443 +PT= ba16bfb006d92dea2506be6815c7dab7f0a2e51523d90eb60162cc06de82da00 +TEST= 140 +KEY= 539aa2f862cd0c9956768c51967cf3d83956232df1590e85 +CT= ba16bfb006d92dea2506be6815c7dab7f0a2e51523d90eb60162cc06de82da00 +PT= 7d8e67996d8a650e60385d527136a1449ac96a8253f67fd7e4024fa7c2d130fb +TEST= 141 +KEY= 33a2ffaa13fbadddccbfe6d3c58a8c0fdd546c8a33883e7e +CT= 7d8e67996d8a650e60385d527136a1449ac96a8253f67fd7e4024fa7c2d130fb +PT= bbf4a01d8b41cd91deb773943f1b049480f87ff26ddb979c8864a3d977130356 +TEST= 142 +KEY= ed158c3e2ce0a9494c479921a8511b935530cf53449b3d28 +CT= bbf4a01d8b41cd91deb773943f1b049480f87ff26ddb979c8864a3d977130356 +PT= 4a981dc7bc7682aadd6f6ac63ec8a2c78c654f3a2ba340b7f382d9e9cd762738 +TEST= 143 +KEY= 307ae6f812280b8ec022d61b83f25b24a6b216ba89ed1a10 +CT= 4a981dc7bc7682aadd6f6ac63ec8a2c78c654f3a2ba340b7f382d9e9cd762738 +PT= 4d472b403e941d9d8ac9947d26fb48991492fadb18b9e20825e7b8ff6d0da782 +TEST= 144 +KEY= bab3728534d34317d4b02cc09b4bb92c8355ae45e4e0bd92 +CT= 4d472b403e941d9d8ac9947d26fb48991492fadb18b9e20825e7b8ff6d0da782 +PT= 85352bd5fb4819777c3f20700165ce8bd8bd63cc396b0287eae06cd902cca572 +TEST= 145 +KEY= c68c52f535b68d9c0c0d4f0ca220bbab69b5c29ce62c18e0 +CT= 85352bd5fb4819777c3f20700165ce8bd8bd63cc396b0287eae06cd902cca572 +PT= f27d79f2c39e46782ae32ef9f4262df33fa83832f97bd467d8065c68ecdf35fa +TEST= 146 +KEY= ec6f7c0cc190a06f33a5773e5b5b6fccb1b39ef40af32d1a +CT= f27d79f2c39e46782ae32ef9f4262df33fa83832f97bd467d8065c68ecdf35fa +PT= 9df0fc92d99db85109bc350ada4aed85c8c7dccb87e2ad93dccdba9cdeb16c13 +TEST= 147 +KEY= e5d349061bda4deafb62abf5dcb9c25f6d7e2468d4424109 +CT= 9df0fc92d99db85109bc350ada4aed85c8c7dccb87e2ad93dccdba9cdeb16c13 +PT= 0fa13aec717aee0c2975ca589dba2bac005e1689eb6b8d1232356a131aea6120 +TEST= 148 +KEY= cca6835e86606646fb3cbd7c37d24f4d5f4b4e7bcea82029 +CT= 0fa13aec717aee0c2975ca589dba2bac005e1689eb6b8d1232356a131aea6120 +PT= c67b14133499fced70186e999a5a71bf027010145058137b31f827367b648580 +TEST= 149 +KEY= bcbeedc71c3a17f9f94cad68678a5c366eb3694db5cca5a9 +CT= c67b14133499fced70186e999a5a71bf027010145058137b31f827367b648580 +PT= d573877905d31299e24cad239cdf32ad8e38a206e23cbc4ceaabfde99f9b27c5 +TEST= 150 +KEY= 5ef240e480e5255477740f6e85b6e07a841894a42a57826c +CT= d573877905d31299e24cad239cdf32ad8e38a206e23cbc4ceaabfde99f9b27c5 +PT= de0eb27d638709895f07ee0bba05277843bf1073952b153092b45f6e0d990e4b +TEST= 151 +KEY= 01f5aeef3ae0022c34cb1f1d109df54a16accbca27ce8c27 +CT= de0eb27d638709895f07ee0bba05277843bf1073952b153092b45f6e0d990e4b +PT= 555ebe9992ad1fd42889efded5655ccf2a827fd984dbaab5e68b97da8e57dfc6 +TEST= 152 +KEY= 297c4131ef855ee31e4960c494465ffff0275c10a99953e1 +CT= 555ebe9992ad1fd42889efded5655ccf2a827fd984dbaab5e68b97da8e57dfc6 +PT= f73a89cab9c08f0e4f10397bb69679ed4f08d048d1c8b70b85e78e2c69c50009 +TEST= 153 +KEY= 666c784a5913270e5141b08c458ee8f475c0d23cc05c53e8 +CT= f73a89cab9c08f0e4f10397bb69679ed4f08d048d1c8b70b85e78e2c69c50009 +PT= 0ad129ad3e7b9bb04716a53bea089496bfc62eaa9e8913cfbb9cd7a2e670d641 +TEST= 154 +KEY= 217add71b31bb398ee879e26db07fb3bce5c059e262c85a9 +CT= 0ad129ad3e7b9bb04716a53bea089496bfc62eaa9e8913cfbb9cd7a2e670d641 +PT= 266c8b90e2b18c6841febf7a23088c5383dcada9a6e6af4792e5938bc61fef08 +TEST= 155 +KEY= 6084620b90133fcb6d5b338f7de1547c5cb99615e0336aa1 +CT= 266c8b90e2b18c6841febf7a23088c5383dcada9a6e6af4792e5938bc61fef08 +PT= fc8d722b2a3411967d07ea53a0bf9a2a1120d3a1168d9371509f8d662b02b867 +TEST= 156 +KEY= 1d83885830aca5e17c7be02e6b6cc70d0c261b73cb31d2c6 +CT= fc8d722b2a3411967d07ea53a0bf9a2a1120d3a1168d9371509f8d662b02b867 +PT= fb21d8772a4ff8040d50b2297b98a441e46ceea3079b8b8f3360f292cec1b26f +TEST= 157 +KEY= 10d33a714b3401a098170e8d6cf74c823f46e9e105f060a9 +CT= fb21d8772a4ff8040d50b2297b98a441e46ceea3079b8b8f3360f292cec1b26f +PT= 2ac8f3393e6082efb3abb5e91e1dee83d0722a61f84484a6d6eac172f52896da +TEST= 158 +KEY= a3788f985529ef23486524ec94b3c824e9ac2893f0d8f673 +CT= 2ac8f3393e6082efb3abb5e91e1dee83d0722a61f84484a6d6eac172f52896da +PT= cb245e7e9cb7c6ec259e9882e1d357a4f35ac34a8eab0592f483100b0a0c9a82 +TEST= 159 +KEY= 86e6171ab4fab887bb3fe7a61a18cdb61d2f3898fad46cf1 +CT= cb245e7e9cb7c6ec259e9882e1d357a4f35ac34a8eab0592f483100b0a0c9a82 +PT= ef6f0a62140c9159438f3387360e2e0fee83c2a3c2673c1aeadfe234476a11d8 +TEST= 160 +KEY= c569249d82f4968855bc2505d87ff1acf7f0daacbdbe7d29 +CT= ef6f0a62140c9159438f3387360e2e0fee83c2a3c2673c1aeadfe234476a11d8 +PT= 231ea0fd1d400730f34ce40caa661ec7d7551d5e07d55ae1cb0f27530c7e1ebd +TEST= 161 +KEY= 3625c0912892884f82e9385bdfaaab4d3cfffdffb1c06394 +CT= 231ea0fd1d400730f34ce40caa661ec7d7551d5e07d55ae1cb0f27530c7e1ebd +PT= 2da00854e2e78a6c569a9f087c3cbed8d87d5b3bc52421bfec4b5b625cf22023 +TEST= 162 +KEY= 60bf5f9954ae36975a9463601a8e8af2d0b4a69ded3243b7 +CT= 2da00854e2e78a6c569a9f087c3cbed8d87d5b3bc52421bfec4b5b625cf22023 +PT= c8726f9bf754061bfba736ff0b524a227ff8b7e96d7782a19c194a88860e4b47 +TEST= 163 +KEY= 9b1869665ffc7cb5256cd48977f908534cadec156b3c08f0 +CT= c8726f9bf754061bfba736ff0b524a227ff8b7e96d7782a19c194a88860e4b47 +PT= 2ff0324c7da9bdb62c6a17a618d11679e17bd6671341369c4a7b93a6e6de71f6 +TEST= 164 +KEY= b7727ec0472d6accc41702ee64b83ecf06d67fb38de27906 +CT= 2ff0324c7da9bdb62c6a17a618d11679e17bd6671341369c4a7b93a6e6de71f6 +PT= dfbb1b49b7c3d39e3139287e1837ee7856cc94479b76cf9a6086c487890b7763 +TEST= 165 +KEY= 864b56be5f1a84b492db96a9ffcef1556650bb3404e90e65 +CT= dfbb1b49b7c3d39e3139287e1837ee7856cc94479b76cf9a6086c487890b7763 +PT= 1587893abb7e1f3cdfcb285dadda9be39977a22c0d21345ed3ac61f1e1f2d272 +TEST= 166 +KEY= 59807ee3f2c01f570bac3485f2efc50bb5fcdac5e51bdc17 +CT= 1587893abb7e1f3cdfcb285dadda9be39977a22c0d21345ed3ac61f1e1f2d272 +PT= 084712a012cd5934eed7759b28a920409efdb414aeba1141f4a36d39ec8673f2 +TEST= 167 +KEY= b7570b78da693f17955180915c55d44a415fb7fc099dafe5 +CT= 084712a012cd5934eed7759b28a920409efdb414aeba1141f4a36d39ec8673f2 +PT= 6ff7787352667f32bd55d4e5c55cccd816cac80c1274e236f9da069e4969eaa9 +TEST= 168 +KEY= 0a02df9d1f35f3cf839b489d4e21367cb885b16240f4454c +CT= 6ff7787352667f32bd55d4e5c55cccd816cac80c1274e236f9da069e4969eaa9 +PT= 5309911ed86baa9fdf4a4ab62ecc1707b8fe4412788f6cc6476fe8efeabc196d +TEST= 169 +KEY= d548952b31f9e4c83b650c8f36ae5abaffea598daa485c21 +CT= 5309911ed86baa9fdf4a4ab62ecc1707b8fe4412788f6cc6476fe8efeabc196d +PT= 12a99c6fd83ce741aace1b2eeb20a493e732c767be5733f4bb35c99024e0d771 +TEST= 170 +KEY= 7f868e05dad9405bdc57cbe888f9694e44df901d8ea88b50 +CT= 12a99c6fd83ce741aace1b2eeb20a493e732c767be5733f4bb35c99024e0d771 +PT= 174998ce6570a2aa11083c7e642c4c6c22098150c5de150ec9f8a5248e18015d +TEST= 171 +KEY= 6e8eb27bbef50c37fe5e4ab84d277c408d27353900b08a0d +CT= 174998ce6570a2aa11083c7e642c4c6c22098150c5de150ec9f8a5248e18015d +PT= 66ec7ee2f97d506fce6e9f5c113853a1acb56ceecbcf40c3930303f01de965a6 +TEST= 172 +KEY= a0e02d27afcd5f9652eb265686e83c831e2436c91d59efab +CT= 66ec7ee2f97d506fce6e9f5c113853a1acb56ceecbcf40c3930303f01de965a6 +PT= 7f3f2002c89429fab379d909076abae36311429372b1678bc9fb7b2cf664188f +TEST= 173 +KEY= 1399f42ea8a7e57531fa64c5f4595b08d7df4de5eb3df724 +CT= 7f3f2002c89429fab379d909076abae36311429372b1678bc9fb7b2cf664188f +PT= ad55a4f1e6b46136878abc354a071ac33c17d5adb2e1bd8abfb31ec772ee93e0 +TEST= 174 +KEY= 9413481be2a0ffb60dedb16846b8e682686c532299d364c4 +CT= ad55a4f1e6b46136878abc354a071ac33c17d5adb2e1bd8abfb31ec772ee93e0 +PT= bc7cf6584f9f7c6c72fdaa8c1900227e4d8d3716566db190aa9405ad6c4faf15 +TEST= 175 +KEY= e6eee297fba0ddc84060867e10d55712c2f8568ff59ccbd1 +CT= bc7cf6584f9f7c6c72fdaa8c1900227e4d8d3716566db190aa9405ad6c4faf15 +PT= e0f2044e0cff6cd1df82443e99c50ef6ad3cce64f00658f35cc20060e4d5be52 +TEST= 176 +KEY= 396ca6a96265d33eed5c481ae0d30fe19e3a56ef11497583 +CT= e0f2044e0cff6cd1df82443e99c50ef6ad3cce64f00658f35cc20060e4d5be52 +PT= 80e3bc12bfd49a6e47cc6758acef1cc36c5ee36a6bef5ed52ea8babd0744014b +TEST= 177 +KEY= 7ea0c1f1ce8acffd8102ab708b3c5134b092ec52160d74c8 +CT= 80e3bc12bfd49a6e47cc6758acef1cc36c5ee36a6bef5ed52ea8babd0744014b +PT= 96313967113c0d7c3158c1baad1b02c15e81fa694229f0a77f468083d239037f +TEST= 178 +KEY= 4ff8004b6391cd3cdf835119c915a193cfd46cd1c43477b7 +CT= 96313967113c0d7c3158c1baad1b02c15e81fa694229f0a77f468083d239037f +PT= e788cd26b362e89b6cbeb61214f0ff02aee151b05d4174ec57aed26b869e1457 +TEST= 179 +KEY= 2346b6597761323e716200a99454d57f987abeba42aa63e0 +CT= e788cd26b362e89b6cbeb61214f0ff02aee151b05d4174ec57aed26b869e1457 +PT= 69dca0dbbb3392962da38b3c7fbc0841be69831afc9f9b2c0d6ae0984930245b +TEST= 180 +KEY= 0ee53d6508dd3a7fcf0b83b368cb4e5395105e220b9a47bb +CT= 69dca0dbbb3392962da38b3c7fbc0841be69831afc9f9b2c0d6ae0984930245b +PT= 67b9a147e62821ff9082dd28ea5efa1dbf0291265eec9b6c3fbc500a125ebfcd +TEST= 181 +KEY= 9e67e04de283c062700912953627d53faaac0e2819c4f876 +CT= 67b9a147e62821ff9082dd28ea5efa1dbf0291265eec9b6c3fbc500a125ebfcd +PT= b262b09d93cdef7a606c39c2f30caa63c1d407eff6d6187e5bc344c5100e8ae1 +TEST= 182 +KEY= fe0bd98f118f6a01b1dd157ac0f1cd41f16f4aed09ca7297 +CT= b262b09d93cdef7a606c39c2f30caa63c1d407eff6d6187e5bc344c5100e8ae1 +PT= ef94ef16be2b92250aebd3f21b6bb9acdf7b2be83e2a0dea5b20591c1443ae20 +TEST= 183 +KEY= f4e00a7d0ae4d3ad6ea63e92fedbc0abaa4f13f11d89dcb7 +CT= ef94ef16be2b92250aebd3f21b6bb9acdf7b2be83e2a0dea5b20591c1443ae20 +PT= c732f97d52e56ee59c90c5918e83c14d5610f3196fe136655dae9d8815476e5f +TEST= 184 +KEY= 6870cfec846712e038b6cd8b913af6cef7e18e7908ceb2e8 +CT= c732f97d52e56ee59c90c5918e83c14d5610f3196fe136655dae9d8815476e5f +PT= a2cabe1cefcac28b93d82129c5b83b096949e5d940c35d685c5f7d736a4fc259 +TEST= 185 +KEY= fba8eec541df29e951ff2852d1f9aba6abbef30a628170b1 +CT= a2cabe1cefcac28b93d82129c5b83b096949e5d940c35d685c5f7d736a4fc259 +PT= f6f0e7f7aa9e72b206791b2a64b4f1b71bd9503c616e7e2d866529e047ce2181 +TEST= 186 +KEY= fdd1f5ef256bd85e4a26786eb097d58b2ddbdaea254f5130 +CT= f6f0e7f7aa9e72b206791b2a64b4f1b71bd9503c616e7e2d866529e047ce2181 +PT= 4e18e9d781249210469ba309bdff5225ee19acf4c497fdfe40fc4d03da4c7730 +TEST= 187 +KEY= bb4a56e698948a7ba43fd49a740028756d2797e9ff032600 +CT= 4e18e9d781249210469ba309bdff5225ee19acf4c497fdfe40fc4d03da4c7730 +PT= f0ddb285a70fa09d3bf7019c5c3c4ea0a935b14b5c8af5d1ad45c5172d1ff3e4 +TEST= 188 +KEY= 80bd577ac4a8c4db0d0a65d1288adda4c06252fed21cd5e4 +CT= f0ddb285a70fa09d3bf7019c5c3c4ea0a935b14b5c8af5d1ad45c5172d1ff3e4 +PT= 0d5026e203f59c94286a43533290c3b2a404f87136b49b0fc82ac4f466bc2559 +TEST= 189 +KEY= a8d71429f6380769a90e9da01e3e46ab0848960ab4a0f0bd +CT= 0d5026e203f59c94286a43533290c3b2a404f87136b49b0fc82ac4f466bc2559 +PT= b622cdc7ba8552a15419c812b4965adf8eef9784c3b69f15cf35b575b413e7da +TEST= 190 +KEY= fccedc3b42ae5db627e10a24dd88d9bec77d237f00b31767 +CT= b622cdc7ba8552a15419c812b4965adf8eef9784c3b69f15cf35b575b413e7da +PT= 8823b6ef673144e67fd521c4f0fefcd155846427598a65fd52fb1bf133a045ff +TEST= 191 +KEY= 831bfdffb250a16772656e038402bc439586388e33135298 +CT= 8823b6ef673144e67fd521c4f0fefcd155846427598a65fd52fb1bf133a045ff +PT= 0511d298e69137df45bfda51f5a59b7359779edcad19008d37680bba5641f39d +TEST= 192 +KEY= c6a427ae47f53a142b12f0df291bbccea2ee33346552a105 +CT= 0511d298e69137df45bfda51f5a59b7359779edcad19008d37680bba5641f39d +PT= 49c7d9c693942fb3411195dceac2e11a14e6c796ba5a70d925d71f6678d6a70a +TEST= 193 +KEY= 87b5b272ad37db0e3ff437499341cc1787392c521d84060f +CT= 49c7d9c693942fb3411195dceac2e11a14e6c796ba5a70d925d71f6678d6a70a +PT= e776c574c4e78ed3e73121d236cf43b14657aee5cee44d9fb677067dd84b3b97 +TEST= 194 +KEY= 608493a09bf898bf79a399ac5da58188314e2a2fc5cf3d98 +CT= e776c574c4e78ed3e73121d236cf43b14657aee5cee44d9fb677067dd84b3b97 +PT= 47ed4aba27a38f5284b5e0dffc3090979b4f1581715a80d1704c2c0738505e16 +TEST= 195 +KEY= e431737f67c80828e2ec8c2d2cff015941020628fd9f638e +CT= 47ed4aba27a38f5284b5e0dffc3090979b4f1581715a80d1704c2c0738505e16 +PT= db625d7c56c85682ee6a38be59863a0385d3fd4d61cd82d13aef6dcf77a392c3 +TEST= 196 +KEY= 0a5b4bc13e4e322b673f71604d3283887bed6be78a3cf14d +CT= db625d7c56c85682ee6a38be59863a0385d3fd4d61cd82d13aef6dcf77a392c3 +PT= 7290af4605bb53db0b202d28d2cf4c1f81a1c656a4f29611e06ec5585cd0531c +TEST= 197 +KEY= 017b66e9ec817e34e69eb736e9c015999b83aebfd6eca251 +CT= 7290af4605bb53db0b202d28d2cf4c1f81a1c656a4f29611e06ec5585cd0531c +PT= 6db5b4a8fa010b52caaba18e070ddcce95c4496f10e883a3d955f77be1f20ffb +TEST= 198 +KEY= cbd0c767eb8ca2fa735afe59f928963a42d659c4371eadaa +CT= 6db5b4a8fa010b52caaba18e070ddcce95c4496f10e883a3d955f77be1f20ffb +PT= 0a0a349115282dc2788c55fa224c45eb413d07f47553e03ec2e21b7e513ae965 +TEST= 199 +KEY= b35c929dc9c0e7113267f9ad8c7b7604803442ba662444cf +CT= 0a0a349115282dc2788c55fa224c45eb413d07f47553e03ec2e21b7e513ae965 +PT= 1358da6c028171cde9e9222957d36ca0e2f1b313b0d7b24952081b84e7693f49 +TEST= 200 +KEY= 5ab5b0b49e138bb1d0964abe3cacc44dd23c593e814d7b86 +CT= 1358da6c028171cde9e9222957d36ca0e2f1b313b0d7b24952081b84e7693f49 +PT= 9735d873d580dbf6c1a53747d61d7faa3bac3b9b8aa78b91bb30b3e0dcd8f025 +TEST= 201 +KEY= 9b1087f3480ef41beb3a7125b60b4fdc690ceade5d958ba3 +CT= 9735d873d580dbf6c1a53747d61d7faa3bac3b9b8aa78b91bb30b3e0dcd8f025 +PT= 1719922192edb01c849c9c5f9ab5c1ddc5bce794094921404053f7d3cf40509a +TEST= 202 +KEY= 1f8c1bacd2bb35c62e8696b1bf426e9c295f1d0d92d5db39 +CT= 1719922192edb01c849c9c5f9ab5c1ddc5bce794094921404053f7d3cf40509a +PT= 5d361289fa5e93fa14c37079f8829fdff57a7210f16516c1dfbad108dc316c8a +TEST= 203 +KEY= 0b4f6bd52a39aa19dbfce4a14e27785df6e5cc054ee4b7b3 +CT= 5d361289fa5e93fa14c37079f8829fdff57a7210f16516c1dfbad108dc316c8a +PT= 336bf50701c9fba5335d396441a54db8225dbb55f9b7b2db17492f30965e68ea +TEST= 204 +KEY= 381252b16b9ce7a1f9a15ff4b790ca86e1ace335d8badf59 +CT= 336bf50701c9fba5335d396441a54db8225dbb55f9b7b2db17492f30965e68ea +PT= fca2de5419ac375d2caa9f2e752e5ea93b3a2f7d629a213b67c34372e8b06db5 +TEST= 205 +KEY= 14b8cd9f1eb2b908c29b7089d50aebbd866fa047300ab2ec +CT= fca2de5419ac375d2caa9f2e752e5ea93b3a2f7d629a213b67c34372e8b06db5 +PT= 88f345021bbb4f02419ba4f8a7e2222940a3c973e057ab60c82e587289192d0e +TEST= 206 +KEY= 55236967b9509b218238b9fa355d40dd4e41f835b9139fe2 +CT= 88f345021bbb4f02419ba4f8a7e2222940a3c973e057ab60c82e587289192d0e +PT= fe71139d4bcf7ac231567e8c1f2a179098750557906eeddf4ef85a70abca3af2 +TEST= 207 +KEY= 647517eba67a8cb11a4dbcada533ad0200b9a24512d9a510 +CT= fe71139d4bcf7ac231567e8c1f2a179098750557906eeddf4ef85a70abca3af2 +PT= 4cfe971519e59bc0330f95cf871e51268def3887df13b1adc0f029330220d73a +TEST= 208 +KEY= 577a82242164dd9797a2842a7a201cafc0498b7610f9722a +CT= 4cfe971519e59bc0330f95cf871e51268def3887df13b1adc0f029330220d73a +PT= 5639befe5ba0a886c9eee7d45034c0351907c263870ec3ff956c7e3281734a14 +TEST= 209 +KEY= 9e9465f071501da28ea54649fd2edf505525f544918a383e +CT= 5639befe5ba0a886c9eee7d45034c0351907c263870ec3ff956c7e3281734a14 +PT= 6e73c09239092ac1ffad714c259a5d537e1fea30f7605dee25a0e38dbdf99c83 +TEST= 210 +KEY= 613914bc54ca40f1f0baac790a4e82be708516c92c73a4bd +CT= 6e73c09239092ac1ffad714c259a5d537e1fea30f7605dee25a0e38dbdf99c83 +PT= 05aca8c5056827463d4d9d5009cc5f90f02fd79b72ae2515b5daf77e772a0b56 +TEST= 211 +KEY= 5c7489ec5d061f6100957be278e0a7abc55fe1b75b59afeb +CT= 05aca8c5056827463d4d9d5009cc5f90f02fd79b72ae2515b5daf77e772a0b56 +PT= 7ab0cc5e54507db45e7f28fbd39595351efd2d375f698af816fff96303e90c5c +TEST= 212 +KEY= 020ba1178e938a541e6856d527892d53d3a018d458b0a3b7 +CT= 7ab0cc5e54507db45e7f28fbd39595351efd2d375f698af816fff96303e90c5c +PT= 244952629450c3ef7737133fa6f7a84a9f9b21e297ecaea109bc9dafb2a9c51a +TEST= 213 +KEY= 753cb2282864221e81f37737b06583f2da1c857bea1966ad +CT= 244952629450c3ef7737133fa6f7a84a9f9b21e297ecaea109bc9dafb2a9c51a +PT= 35144e63c0013135b7fc80ec9f7df06f0a42f9818dd8dfcad7109d5f959ac5fe +TEST= 214 +KEY= c2c032c4b719d2718bb18eb63dbd5c380d0c18247f83a353 +CT= 35144e63c0013135b7fc80ec9f7df06f0a42f9818dd8dfcad7109d5f959ac5fe +PT= 9954a4a5ca1f6eff8538ebf1adf3c167d21f005267b00e77388577779fd67614 +TEST= 215 +KEY= 47f8d9351aea131659ae8ee45a0d524f35896f53e055d547 +CT= 9954a4a5ca1f6eff8538ebf1adf3c167d21f005267b00e77388577779fd67614 +PT= 4fa686ea23dd963ce50734151bbf3e3679599101e07db0a90f441b61ee43d2d8 +TEST= 216 +KEY= a2ffed2001552d2020f71fe5ba70e2e63acd74320e16079f +CT= 4fa686ea23dd963ce50734151bbf3e3679599101e07db0a90f441b61ee43d2d8 +PT= fc45033729ecc6901b5cb22e4268e0830aa7abfaed7f25a2e923a37f69cad5b4 +TEST= 217 +KEY= b9a35f0e433dcda32a50b41f570fc744d3eed74d67dcd22b +CT= fc45033729ecc6901b5cb22e4268e0830aa7abfaed7f25a2e923a37f69cad5b4 +PT= a1884a5315a33fda260c2a88a05714cb595f0b786754683c8726545f973e8ab0 +TEST= 218 +KEY= 9faf7586e36ad968730fbf67305baf7854c88312f0e2589b +CT= a1884a5315a33fda260c2a88a05714cb595f0b786754683c8726545f973e8ab0 +PT= ea8c9823ddc93f3e4f44d3826b27ed3643f682095ab7741d943dcee94dcf1f0b +TEST= 219 +KEY= d0eba604884d345e30f93d6e6aecdb65c0f54dfbbd2d4790 +CT= ea8c9823ddc93f3e4f44d3826b27ed3643f682095ab7741d943dcee94dcf1f0b +PT= 23c5fb5360e96a7c1e1fad300c1c1d09a9a295eaed407aaf6d0d123429d3d697 +TEST= 220 +KEY= cef40b3484512957995ba88487aca1caadf85fcf94fe9107 +CT= 23c5fb5360e96a7c1e1fad300c1c1d09a9a295eaed407aaf6d0d123429d3d697 +PT= e95079b736f9e68795c9a7943e22c5979746617b66119ea09617ced1d8afcdf9 +TEST= 221 +KEY= 5b3daca0ba73ecc00e1dc9ffe1bd3f6a3bef911e4c515cfe +CT= e95079b736f9e68795c9a7943e22c5979746617b66119ea09617ced1d8afcdf9 +PT= 12ebabb68eff5b2d7136d679215fbbd58383e8ac3334851353df376379d9ac74 +TEST= 222 +KEY= 2a0b7ad99b2c57158d9e2153d289ba796830a67d3588f08a +CT= 12ebabb68eff5b2d7136d679215fbbd58383e8ac3334851353df376379d9ac74 +PT= 0ef0046d5c493e4acd73f9212ca98ee764641c3189d475751c86890216e314bd +TEST= 223 +KEY= e77883f8b785d9f2e9fa3d625b5dcf0c74b62f7f236be437 +CT= 0ef0046d5c493e4acd73f9212ca98ee764641c3189d475751c86890216e314bd +PT= 87bc45bc41b6a67cad995be9ff12b94e02e43344484703445f35e0978498e680 +TEST= 224 +KEY= 4ae1d811489760bceb1e0e26131acc482b83cfe8a7f302b7 +CT= 87bc45bc41b6a67cad995be9ff12b94e02e43344484703445f35e0978498e680 +PT= 03110774a5092067b772fc37551eb825737343148142cd99b100d0171c61599e +TEST= 225 +KEY= fd9324261d89d899986d4d32925801d19a831fffbb925b29 +CT= 03110774a5092067b772fc37551eb825737343148142cd99b100d0171c61599e +PT= 915b29db943c25adcd1a4635a41937c1c154cc741d61f1e6cac14544db708786 +TEST= 226 +KEY= 30896213b990ef58593981468f39f03750425abb60e2dcaf +CT= 915b29db943c25adcd1a4635a41937c1c154cc741d61f1e6cac14544db708786 +PT= e99c2f0dde19410ff102d194c87217cca9cb483cae3f52c2f611f8c5f4503a7b +TEST= 227 +KEY= c18bb38771e2f894f0f2c97a2106a2f5a653a27e94b2e6d4 +CT= e99c2f0dde19410ff102d194c87217cca9cb483cae3f52c2f611f8c5f4503a7b +PT= 6c124f56810f86efdc0f75892378a0f92b1872617fe72c91e04c41c206711d38 +TEST= 228 +KEY= 1d84c60e529a586ddbeabb1b5ee18e64461fe3bc92c3fbec +CT= 6c124f56810f86efdc0f75892378a0f92b1872617fe72c91e04c41c206711d38 +PT= b95a1afd71ce3fabff1be057f4e3d07517f0e901fdc5fba70f29c1cdcac9dc44 +TEST= 229 +KEY= e29f2659a6798818cc1a521aa32475c349362271580a27a8 +CT= b95a1afd71ce3fabff1be057f4e3d07517f0e901fdc5fba70f29c1cdcac9dc44 +PT= 603b751d46ce506502cbffa02e7435efa91dadc8e17b088f58677d39ed32f7a2 +TEST= 230 +KEY= e054d9f9880dbdf76507ffd2425f7d4c11515f48b538d00a +CT= 603b751d46ce506502cbffa02e7435efa91dadc8e17b088f58677d39ed32f7a2 +PT= 3746fa95b6a93350f8d561aad6e8cb1c77a40e6cdfb385ee3f78800668f8cbd4 +TEST= 231 +KEY= 1881b8535ee576eb12a3f1be9decf8a22e29df4eddc01bde +CT= 3746fa95b6a93350f8d561aad6e8cb1c77a40e6cdfb385ee3f78800668f8cbd4 +PT= bbfe908458801b6758238f0465526701a28313b74988ff94ccedb5c90ff30709 +TEST= 232 +KEY= 40a237573bb711eab020e209d4640736e2c46a87d2331cd7 +CT= bbfe908458801b6758238f0465526701a28313b74988ff94ccedb5c90ff30709 +PT= 332147237c136a0bf0bb9720f8f707e68de4aa8e1564c3e48ebfe0a133b2b205 +TEST= 233 +KEY= b019a077c340160c3dc44887c100c4d26c7b8a26e181aed2 +CT= 332147237c136a0bf0bb9720f8f707e68de4aa8e1564c3e48ebfe0a133b2b205 +PT= 9e159f90b0b04e11dbe1ec7a5895ddea947b344cf322634614c2e20b42cd025c +TEST= 234 +KEY= 6bf84c0d9bd5cbe6a9bf7ccb3222a79478b9682da34cac8e +CT= 9e159f90b0b04e11dbe1ec7a5895ddea947b344cf322634614c2e20b42cd025c +PT= c6c96d3b651aa3b868960ebce955746faf7927e9e257a4f50e33380f6c0872e2 +TEST= 235 +KEY= 036e42b17280bf8906c65b22d0750361768a5022cf44de6c +CT= c6c96d3b651aa3b868960ebce955746faf7927e9e257a4f50e33380f6c0872e2 +PT= ca435d51aa760fbb5955e0c0344e31fd55fadaa0cbea820f7f20bb6deca75c76 +TEST= 236 +KEY= 5a3ba27146ce8e74533c81821b9f816e09aaeb4f23e3821a +CT= ca435d51aa760fbb5955e0c0344e31fd55fadaa0cbea820f7f20bb6deca75c76 +PT= 20afe1ed27892d0c61f40683a8650412ef4aa9a0e4267fe6f29d65f914ba9881 +TEST= 237 +KEY= 3bcfa4f2eeab8a66bc762822ffb9fe88fb378eb637591a9b +CT= 20afe1ed27892d0c61f40683a8650412ef4aa9a0e4267fe6f29d65f914ba9881 +PT= 8057383bec9488dfcd9a5ef8e87cf56c3ffdcf42da5d0f3c1aee542e19cc966f +TEST= 238 +KEY= f655fa0a06d77f0a838be76025e4f1b4e1d9da982e958cf4 +CT= 8057383bec9488dfcd9a5ef8e87cf56c3ffdcf42da5d0f3c1aee542e19cc966f +PT= 8eb8d190297f599782702f36078ac87e0fd12f9b3a223169a1ca0d8569f12820 +TEST= 239 +KEY= 7425d53c015db7748c5ac8fb1fc6c0dd4013d71d4764a4d4 +CT= 8eb8d190297f599782702f36078ac87e0fd12f9b3a223169a1ca0d8569f12820 +PT= 06104f030f888dc271ffa3389cc9dca589f912e485364619f84b46ca92527749 +TEST= 240 +KEY= 05da76049d946bd105a3da1f9af086c4b85891d7d536d39d +CT= 06104f030f888dc271ffa3389cc9dca589f912e485364619f84b46ca92527749 +PT= 2441d4f7ca0c86cced6c553b63b3921fb9101e6e8e37700f4c2da4c313d8766c +TEST= 241 +KEY= e8b6233ffe27f9cebcb3c47114c7f6cbf4753514c6eea5f1 +CT= 2441d4f7ca0c86cced6c553b63b3921fb9101e6e8e37700f4c2da4c313d8766c +PT= 6dca6fde0258d6a0df4e89ca76fea6b8872066d3a1708412eb514332ce91028c +TEST= 242 +KEY= 37f8aaf588d95f763b93a2a2b5b772d91f247626087fa77d +CT= 6dca6fde0258d6a0df4e89ca76fea6b8872066d3a1708412eb514332ce91028c +PT= 94da33a137137111f0ace92fb4f6ce23720123e746a242544863c6decef1a8d5 +TEST= 243 +KEY= c75443da3c2f915549928145f315308d5747b0f8c68e0fa8 +CT= 94da33a137137111f0ace92fb4f6ce23720123e746a242544863c6decef1a8d5 +PT= d14642a76e20b7575e0bddbbfa57e20889b5dd81d369c75f12902234161c2315 +TEST= 244 +KEY= 995f9e61c678735dc0275cc4207cf7d245d792ccd0922cbd +CT= d14642a76e20b7575e0bddbbfa57e20889b5dd81d369c75f12902234161c2315 +PT= fa153f0cfed41c538e60c42e1e87be7ebde3314ddc0cfb9eb00bd0d595dcc09e +TEST= 245 +KEY= 173f5a4fd8ffcd237dc46d89fc700c4cf5dc4219454eec23 +CT= fa153f0cfed41c538e60c42e1e87be7ebde3314ddc0cfb9eb00bd0d595dcc09e +PT= ac6e9aad360c9fcc4c661e109404e5bcecf7fb213bf3f5afb39acf07cbf74dc2 +TEST= 246 +KEY= 5b59445f4cfb289f913396a8c783f9e346468d1e8eb9a1e1 +CT= ac6e9aad360c9fcc4c661e109404e5bcecf7fb213bf3f5afb39acf07cbf74dc2 +PT= c9c013767ae4f212405e56eea1455ab198d2e361872d62797f8780ea1ef467bc +TEST= 247 +KEY= 1b0712b1edbe722e09e175c940ae9b9a39c10df4904dc65d +CT= c9c013767ae4f212405e56eea1455ab198d2e361872d62797f8780ea1ef467bc +PT= ec0216cdd9bd94006fccab0024cb7414693c276a5577a3b9d4502a47cd7e77a5 +TEST= 248 +KEY= 74cbb9b1c975063a60dd52a315d93823ed9127b35d33b1f8 +CT= ec0216cdd9bd94006fccab0024cb7414693c276a5577a3b9d4502a47cd7e77a5 +PT= 52c63c721afdb071cdd97ee5dba6dd64149bd02fb92d32e8ec8487d58e33ade4 +TEST= 249 +KEY= b912c75412d3db5e7446828cacf40acb0115a066d3001c1c +CT= 52c63c721afdb071cdd97ee5dba6dd64149bd02fb92d32e8ec8487d58e33ade4 +PT= 0fee63f5ee857887c7611d78bf2222a890593514758e37a31cfa6ad423dcc3af +TEST= 250 +KEY= 7e73da2cadf1f9f6e41fb798d97a3d681defcab2f0dcdfb3 +CT= 0fee63f5ee857887c7611d78bf2222a890593514758e37a31cfa6ad423dcc3af +PT= 6663e8508efe3af63921790c24aa9819ce7c6fec365d689bc84d1dbeb67d0d5f +TEST= 251 +KEY= 4752a320895b61ef2a63d874ef2755f3d5a2d70c46a1d2ec +CT= 6663e8508efe3af63921790c24aa9819ce7c6fec365d689bc84d1dbeb67d0d5f +PT= 9dd4986d7c08259c67f57c6cf07093310ef072cedb565b1c431df38034c37bdc +TEST= 252 +KEY= 20a7df4c792bf2de2493aaba34710eef96bf248c7262a930 +CT= 9dd4986d7c08259c67f57c6cf07093310ef072cedb565b1c431df38034c37bdc +PT= e39d33852a9106f06649902453b39e9dee0e2cbcdf29db39eb16706bd2603bb1 +TEST= 253 +KEY= 46ee4f682a986c43ca9d8606eb58d5d67da954e7a0029281 +CT= e39d33852a9106f06649902453b39e9dee0e2cbcdf29db39eb16706bd2603bb1 +PT= f768c74860be3f9615b1fb67079c9c0469430183d3b7d38a88ec85221def847c +TEST= 254 +KEY= 535fb40f2d04f047a3de878538ef065cf545d1c5bded16fd +CT= f768c74860be3f9615b1fb67079c9c0469430183d3b7d38a88ec85221def847c +PT= 7eed45d3abb99d43c0ee491d92f8f799ec582bb6e50a7bdb11ce2cf37f26c451 +TEST= 255 +KEY= 93b1fd12bffc07de4f86ac33dde57d87e48bfd36c2cbd2ac +CT= 7eed45d3abb99d43c0ee491d92f8f799ec582bb6e50a7bdb11ce2cf37f26c451 +PT= 3e282beba344be9f12ff00816c8d95bbe872b870437e0fb4269cdaf4f95007ef +TEST= 256 +KEY= 814efd93d3719265a7f414439e9b7233c21727c23b9bd543 +CT= 3e282beba344be9f12ff00816c8d95bbe872b870437e0fb4269cdaf4f95007ef +PT= c42186ad3a4b83f39ec699ed2177034f60a7a06fc84700d3cff2339802dc3645 +TEST= 257 +KEY= 1f88647ef206912ac753b42c56dc72e00de5145a3947e306 +CT= c42186ad3a4b83f39ec699ed2177034f60a7a06fc84700d3cff2339802dc3645 +PT= f2966a82665741f0570be237390dd33f349d76136c661f485a7b2a43bd2cbc27 +TEST= 258 +KEY= 48838649cb0b4215f3cec23f3aba6da8579e3e19846b5f21 +CT= f2966a82665741f0570be237390dd33f349d76136c661f485a7b2a43bd2cbc27 +PT= 1d48dad49389255685a5fdbc37f4b32842c75dda809ce36212c507861654b78c +TEST= 259 +KEY= cd267bf5fcfff13db1099fe5ba268eca455b399f923fe8ad +CT= 1d48dad49389255685a5fdbc37f4b32842c75dda809ce36212c507861654b78c +PT= 4d93c228e2b7951e28526a7f8b74b24807e5eec795e078d24c7666c4aaff2076 +TEST= 260 +KEY= e574118a778b4375b6ec71222fc6f618092d5f5b38c0c8db +CT= 4d93c228e2b7951e28526a7f8b74b24807e5eec795e078d24c7666c4aaff2076 +PT= b01cf9ca0d7662734fa3c382e884025042e0c7ad1c2c996effbce1617d3c1f96 +TEST= 261 +KEY= aad7d2089f0f4125f40cb68f33ea6f76f691be3a45fcd74d +CT= b01cf9ca0d7662734fa3c382e884025042e0c7ad1c2c996effbce1617d3c1f96 +PT= 9fa62783f3de84b9bef123c19b56b5cc368164f314cd8e9421ca00f3d859115d +TEST= 262 +KEY= 1426f1c90459f4e9c28dd27c2727e1e2d75bbec99da5c610 +CT= 9fa62783f3de84b9bef123c19b56b5cc368164f314cd8e9421ca00f3d859115d +PT= 425dbc674fd76c7e303c6cb7510c076c8c210fbc372e89360a52ebee6447ce42 +TEST= 263 +KEY= 241a9d7e5555f3854eacddc0100968d4dd095527f9e20852 +CT= 425dbc674fd76c7e303c6cb7510c076c8c210fbc372e89360a52ebee6447ce42 +PT= cdfbc6474b28203871e18fd60b71437c30c0f6c5cb9bcb46ff13e17350a1a693 +TEST= 264 +KEY= 55fb12a85e24b0f97e6c2b05db92a392221ab454a943aec1 +CT= cdfbc6474b28203871e18fd60b71437c30c0f6c5cb9bcb46ff13e17350a1a693 +PT= c8a25543c24838d3d073c9ed7552f40fc5a38a8d322dd8aee716674259d5a241 +TEST= 265 +KEY= 8588db452b7644f6bbcfa188e9bf7b3cc50cd316f0960c80 +CT= c8a25543c24838d3d073c9ed7552f40fc5a38a8d322dd8aee716674259d5a241 +PT= e28b7fbce8280de53a0229b409fa22ff81c47da869bef09cfe238ca8394d0f42 +TEST= 266 +KEY= bf8af2f1228c66093a0bdc2080018ba03b2f5fbec9db03c2 +CT= e28b7fbce8280de53a0229b409fa22ff81c47da869bef09cfe238ca8394d0f42 +PT= 3e1dbccabd3eb7f395055b851154d25c8edc17e40bd3d3b40af4226c9fca951e +TEST= 267 +KEY= 2a8fa97433d8b455b4d7cbc48bd2581431db7dd2561196dc +CT= 3e1dbccabd3eb7f395055b851154d25c8edc17e40bd3d3b40af4226c9fca951e +PT= 7ee24219f05de0bbd63832dbec9b2765a4dc93ebd80316b37c8b48df984da4f9 +TEST= 268 +KEY= fcb79bafdf439330100b582f53d14ea74d50350dce5c3225 +CT= 7ee24219f05de0bbd63832dbec9b2765a4dc93ebd80316b37c8b48df984da4f9 +PT= abc25145288b0fd3d7f5d4f5ad98e25d0fda2ae8b036b84fbb3969cddb774e1b +TEST= 269 +KEY= 2b424f5a72db716d1fd172c7e3e7f6e8f6695cc0152b7c3e +CT= abc25145288b0fd3d7f5d4f5ad98e25d0fda2ae8b036b84fbb3969cddb774e1b +PT= 47a6221cfb31ec749428d2b3e7f666fcdb12b36ef5dd20f7e9883b369d77cbec +TEST= 270 +KEY= bf6a9de9952d1791c4c3c1a9163ad61f1fe167f6885cb7d2 +CT= 47a6221cfb31ec749428d2b3e7f666fcdb12b36ef5dd20f7e9883b369d77cbec +PT= 516228e9ed4b785e8d8dcc5fe1379a9bc1a5eb05f3b352b2805b39e7d2da8af1 +TEST= 271 +KEY= 32e751b6741a8d0a05662aace58984ad9fba5e115a863d23 +CT= 516228e9ed4b785e8d8dcc5fe1379a9bc1a5eb05f3b352b2805b39e7d2da8af1 +PT= a925b20419077151819c179b5a464344e32411a4bc7b25c39cb02ce3d692daad +TEST= 272 +KEY= b37b462d2e5cce4ee6423b0859f2a16e030a72f28c14e78e +CT= a925b20419077151819c179b5a464344e32411a4bc7b25c39cb02ce3d692daad +PT= 58f85ae6b018b1fbda9fb24ff7fbd053ae647efe5fec77d142963c2e204b9742 +TEST= 273 +KEY= 69e4f462d9a71e1d482645f6061ed6bf419c4edcac5f70cc +CT= 58f85ae6b018b1fbda9fb24ff7fbd053ae647efe5fec77d142963c2e204b9742 +PT= 7499ebf0c9de142170f8dba77cec4e0089078bf9a7fdc30bced4779c41e6d57a +TEST= 274 +KEY= 191c2fc5a54b501dc121ce0fa1e315b48f483940edb9a5b6 +CT= 7499ebf0c9de142170f8dba77cec4e0089078bf9a7fdc30bced4779c41e6d57a +PT= cda5fdf22b3dfb0f3d893c8fd39b7a6b6763b6825edf236d03e5f0f112b04c11 +TEST= 275 +KEY= 2495134a76d02a76a642788dff3c36d98cadc9b1ff09e9a7 +CT= cda5fdf22b3dfb0f3d893c8fd39b7a6b6763b6825edf236d03e5f0f112b04c11 +PT= 9b171f3f8a3df5f638ca43f8ba2b33c8a301da910c1e0e8833429be84d0855cd +TEST= 276 +KEY= 1c5f50b2ccfb19be0543a21cf3223851bfef5259b201bc6a +CT= 9b171f3f8a3df5f638ca43f8ba2b33c8a301da910c1e0e8833429be84d0855cd +PT= 5db1b679136e5ac513ecfc62c6645d4c6866eda0408784c581a95049d16150b6 +TEST= 277 +KEY= 0fb3acd00a9f44f26d254fbcb3a5bc943e4602106360ecdc +CT= 5db1b679136e5ac513ecfc62c6645d4c6866eda0408784c581a95049d16150b6 +PT= d1aadc2297a6221f8edc07674546bbba70d05f45292f53de5fcee89a87c3309b +TEST= 278 +KEY= 816fabb74fd9ff481df510f99a8aef4a6188ea8ae4a3dc47 +CT= d1aadc2297a6221f8edc07674546bbba70d05f45292f53de5fcee89a87c3309b +PT= 9787fd72a7206a13f2e461949955fa5c74036364b2b34cfc214e427b9dfc4a76 +TEST= 279 +KEY= 738bca23d68c051469f6739d2839a3b640c6a8f1795f9631 +CT= 9787fd72a7206a13f2e461949955fa5c74036364b2b34cfc214e427b9dfc4a76 +PT= 31d2f6ae548f153d72dc69a6157e5f98f59771bc824a9467fa617c4a48f19a26 +TEST= 280 +KEY= 0157a385c3f25a8c9c610221aa7337d1baa7d4bb31ae0c17 +CT= 31d2f6ae548f153d72dc69a6157e5f98f59771bc824a9467fa617c4a48f19a26 +PT= e389c9f0ad4a00781b86149711cef977229005e6615b25babb0094e8a04c36f0 +TEST= 281 +KEY= 1ad1b712d23ca3fbbef107c7cb28126b01a7405391e23ae7 +CT= e389c9f0ad4a00781b86149711cef977229005e6615b25babb0094e8a04c36f0 +PT= 49ae85d978eab7472063941301e40442f256bcc2f9a44a00da4c10906f0870b9 +TEST= 282 +KEY= 3ab22301d3d8a7b94ca7bb05328c586bdbeb50c3feea4a5e +CT= 49ae85d978eab7472063941301e40442f256bcc2f9a44a00da4c10906f0870b9 +PT= 943c756abb9f37b310d773c2247c90ffc326241355110f1b296ce75f938992f8 +TEST= 283 +KEY= 2a6550c3f7a437468f819f16679d5770f287b79c6d63d8a6 +CT= 943c756abb9f37b310d773c2247c90ffc326241355110f1b296ce75f938992f8 +PT= 76769151beb5f494640d1eab796f9a4dd2e0c480b0ac5c33a98990da1ef293ad +TEST= 284 +KEY= 4e684e688ecbad0b5d615b96d7310b435b0e274673914b0b +CT= 76769151beb5f494640d1eab796f9a4dd2e0c480b0ac5c33a98990da1ef293ad +PT= 94dabb897c3dd51a10c814b51bd7adb4532ca6ca84191b71a8916bcd6a36f45f +TEST= 285 +KEY= 5ea05add951c00bf0e4dfd5c53281032f39f4c8b19a7bf54 +CT= 94dabb897c3dd51a10c814b51bd7adb4532ca6ca84191b71a8916bcd6a36f45f +PT= f39e045f1cb27c6e6b7171083d30062b5d88aead3e6b0bdabc0c3eec42ba6b50 +TEST= 286 +KEY= 35d12bd5a82c069453c553f16d431be84f9372675b1dd404 +CT= f39e045f1cb27c6e6b7171083d30062b5d88aead3e6b0bdabc0c3eec42ba6b50 +PT= e4d63bed38aae6b75f6dd5760acb273172acc36f63986be47029e567117e80ad +TEST= 287 +KEY= 6abcfea3a2e721a52169909e0edb700c3fba97004a6354a9 +CT= e4d63bed38aae6b75f6dd5760acb273172acc36f63986be47029e567117e80ad +PT= 5628022e41942db8f93e6b50f17ea393b5dfbc09eb4d1802dc4ab76de74f8049 +TEST= 288 +KEY= 938295f35399823694b62c97e596680ee3f0206dad2cd4e0 +CT= 5628022e41942db8f93e6b50f17ea393b5dfbc09eb4d1802dc4ab76de74f8049 +PT= 8ca0df6c9c0c6cc2c8b9e5b2b6b1fafaec3b95b5fc789356a55479d7f2d5ecea +TEST= 289 +KEY= 5b3b7041e52878cc788db92219eefb5846a459ba5ff9380a +CT= 8ca0df6c9c0c6cc2c8b9e5b2b6b1fafaec3b95b5fc789356a55479d7f2d5ecea +PT= 8944ec92002252d549369c071631700d88b743630501f8709268987484ad7672 +TEST= 290 +KEY= 120dec46f31908c1f03afa411cef0328d4ccc1cedb544e78 +CT= 8944ec92002252d549369c071631700d88b743630501f8709268987484ad7672 +PT= e32a16cb5648d2170a54be88ec9b395efcd94825c1681c21889289ad11199dd0 +TEST= 291 +KEY= 185952ce1f82319f0ce3b264dd871f095c5e4863ca4dd3a8 +CT= e32a16cb5648d2170a54be88ec9b395efcd94825c1681c21889289ad11199dd0 +PT= 14b32203811249e6a28bbd6083df03a5843855dbd5ceb6842d68347d25bffc7f +TEST= 292 +KEY= bad2efae9c5d323a88dbe7bf0849a98d71367c1eeff22fd7 +CT= 14b32203811249e6a28bbd6083df03a5843855dbd5ceb6842d68347d25bffc7f +PT= 2bfc39b68a23079437d8c71cb2d576f3b652734e786f8434f8a10e71dc1ed740 +TEST= 293 +KEY= 8d0a28b22e8844c93e8994f170262db98997726f33ecf897 +CT= 2bfc39b68a23079437d8c71cb2d576f3b652734e786f8434f8a10e71dc1ed740 +PT= 20e3842b031ea1edd1f9b129e2899af2ae64d5da29be0e3e6fb890a57ad1c52a +TEST= 294 +KEY= 5cf3999bcc01de3b90ed412b59982387e62fe2ca493d3dbd +CT= 20e3842b031ea1edd1f9b129e2899af2ae64d5da29be0e3e6fb890a57ad1c52a +PT= f7bcc8d5a5b299a27d29826789597ba272878fb5503890fdeadf760232967886 +TEST= 295 +KEY= 21da1bfc4558a599e26ace9e09a0b37a0cf094c87bab453b +CT= f7bcc8d5a5b299a27d29826789597ba272878fb5503890fdeadf760232967886 +PT= 111059b650ae7b35181721566bd7e7d1784f2d15093c9c015225c7702901589a +TEST= 296 +KEY= 39cd3aaa2e8f42489a25e38b009c2f7b5ed553b852aa1da1 +CT= 111059b650ae7b35181721566bd7e7d1784f2d15093c9c015225c7702901589a +PT= 325e2bd38e50981f52f11312fe33c080dd20faa97c6ee9c1f4bc42df95b45b60 +TEST= 297 +KEY= 6b3c29b8d0bc82c8470519227cf2c6baaa691167c71e46c1 +CT= 325e2bd38e50981f52f11312fe33c080dd20faa97c6ee9c1f4bc42df95b45b60 +PT= 08a4a8c4f87c9901c46de38a29ec1c7c70634122de3627660b9ed953cb082bae +TEST= 298 +KEY= af51ca32f9509eb437665800a2c4e1dca1f7c8340c166d6f +CT= 08a4a8c4f87c9901c46de38a29ec1c7c70634122de3627660b9ed953cb082bae +PT= 4718b2d7456eeac897e3e18da93b2ed5790ca06ca63a12179aff00d76d982b68 +TEST= 299 +KEY= 38b22bbf506bb0614e6af86c04fef3cb3b08c8e3618e4607 +CT= 4718b2d7456eeac897e3e18da93b2ed5790ca06ca63a12179aff00d76d982b68 +PT= 11f46503d89e8bad77c25bb690595eddf99d82934b2d03f25f2364fd7804b5fa +TEST= 300 +KEY= 4f707009c032eebcb7f77aff4fd3f039642bac1e198af3fd +CT= 11f46503d89e8bad77c25bb690595eddf99d82934b2d03f25f2364fd7804b5fa +PT= 36967e982b5e588286aa17a0fd910e0fe138c167cd784dcdaab8ad4867d111b3 +TEST= 301 +KEY= c9da67a93da3e0b356cfbb9882abbdf4ce9301567e5be24e +CT= 36967e982b5e588286aa17a0fd910e0fe138c167cd784dcdaab8ad4867d111b3 +PT= e2f086b0c884e3add1d202041e4c99f2b4d415a00e7c20ed77414d9479122c28 +TEST= 302 +KEY= 180865ad23ef7941e21bae388cd79d19b9d24cc20749ce66 +CT= e2f086b0c884e3add1d202041e4c99f2b4d415a00e7c20ed77414d9479122c28 +PT= 0646e2937a983e56a4425dca422e26b0e0488ab584a044a9ab6c9ec36163b1dc +TEST= 303 +KEY= bc4a386761c15ff10253248d0877d9b012bed201662a7fba +CT= 0646e2937a983e56a4425dca422e26b0e0488ab584a044a9ab6c9ec36163b1dc +PT= a2961468436d2ba2ae2073790869c4ad5bf0752fac7a2cdf5e11a572666e3f84 +TEST= 304 +KEY= 126a4b1e69a89b5c59a351a2a40df56f4caf77730044403e +CT= a2961468436d2ba2ae2073790869c4ad5bf0752fac7a2cdf5e11a572666e3f84 +PT= a0c97b1a3908fc955d519b1568e09fe48e1b9937656881bae61d19e8e275576b +TEST= 305 +KEY= 4f3bd00b014804b8d7b8c895c16574d5aab26e9be2311755 +CT= a0c97b1a3908fc955d519b1568e09fe48e1b9937656881bae61d19e8e275576b +PT= 424db8b48dbc808cd767d701fe855a28a4a6827299af1d8595a4650e84fae8d8 +TEST= 306 +KEY= 985c070affcd5e90731e4ae758ca69503f160b9566cbff8d +CT= 424db8b48dbc808cd767d701fe855a28a4a6827299af1d8595a4650e84fae8d8 +PT= e72fc185c5e9eb0dd2bc420a3912b10237ab2efbf20257120c1fbf1586ee8735 +TEST= 307 +KEY= 4ae04500c6dfef9244b5641caac83e423309b480e02578b8 +CT= e72fc185c5e9eb0dd2bc420a3912b10237ab2efbf20257120c1fbf1586ee8735 +PT= fdcfc43141039cf7dd0f8e7dfed82ff76dec56c1e0348d7155a40fd03c25c7bb +TEST= 308 +KEY= 97efcb7d3807c065295932dd4afcb33366adbb50dc00bf03 +CT= fdcfc43141039cf7dd0f8e7dfed82ff76dec56c1e0348d7155a40fd03c25c7bb +PT= 3a83c07e7708fd0ff9efd6b4f457fb8cb3b747cb4d764037a1d5f80fd31887ec +TEST= 309 +KEY= 6e001dc9cc503be99aee7516078af304c778435f0f1838ef +CT= 3a83c07e7708fd0ff9efd6b4f457fb8cb3b747cb4d764037a1d5f80fd31887ec +PT= 5de40cd99f49058c4f85a63ff673dbd0b18059460c4de0ce6364c9c46baa40e2 +TEST= 310 +KEY= 2185bbf63a23e0392b6e2c500bc713caa41c8a9b64b2780d +CT= 5de40cd99f49058c4f85a63ff673dbd0b18059460c4de0ce6364c9c46baa40e2 +PT= 4e5194b690921f2a37c37453978c81ccbf185203bd87137b4a6f918ca90ab589 +TEST= 311 +KEY= 1646cfa5adaf61f594767e53b64000b1ee731b17cdb8cd84 +CT= 4e5194b690921f2a37c37453978c81ccbf185203bd87137b4a6f918ca90ab589 +PT= 09f4173d102686cf56056d37b6c323c38f9d175e65793cd0e8cb73958957d616 +TEST= 312 +KEY= 4043a2921b6c42361beb690dd3393c6106b8688244ef1b92 +CT= 09f4173d102686cf56056d37b6c323c38f9d175e65793cd0e8cb73958957d616 +PT= 00a8f725708232bfed6826116f2b761c5cc2d5aaf6db4f717ea384b05c926b0f +TEST= 313 +KEY= ad2b84837447342a4729bca725e27310781bec32187d709d +CT= 00a8f725708232bfed6826116f2b761c5cc2d5aaf6db4f717ea384b05c926b0f +PT= e3479984c96ea0864c6d4c978d05c16187ceaba09fdb8159d26e1de1632faae5 +TEST= 314 +KEY= e146c814f942f54bc0e71707ba39f249aa75f1d37b52da78 +CT= e3479984c96ea0864c6d4c978d05c16187ceaba09fdb8159d26e1de1632faae5 +PT= ffe22c4308db99c0ff97b2e530477d8e032b348e86655efc7f23e35659349074 +TEST= 315 +KEY= 1ed17af1c90588c5c3cc23893c5cacb5d556128522664a0c +CT= ffe22c4308db99c0ff97b2e530477d8e032b348e86655efc7f23e35659349074 +PT= 3b1677dfe143117d6638287d0c8f546605167c8853183a1c67124edeb3674c16 +TEST= 316 +KEY= 78e9528cc58adca3c6da5f016f4496a9b2445c5b9101061a +CT= 3b1677dfe143117d6638287d0c8f546605167c8853183a1c67124edeb3674c16 +PT= 35ad37b0b80e936b6c6a0921b006f74e379349ef4b3abf3d41102b4e1b0e6759 +TEST= 317 +KEY= 14835bad758c2bedf14916ee247e2994f35477158a0f6143 +CT= 35ad37b0b80e936b6c6a0921b006f74e379349ef4b3abf3d41102b4e1b0e6759 +PT= 5d43b3733d50c45708d6aa1a9a3bb145647f20c6b74fc230c18d16440410f22e +TEST= 318 +KEY= 1c55f1b7efb79aa8953636289331eba432d961518e1f936d +CT= 5d43b3733d50c45708d6aa1a9a3bb145647f20c6b74fc230c18d16440410f22e +PT= e42920b1aa1dc3bb96e1279da25868003f1f794e76bb6028e661a1ef22f889ad +TEST= 319 +KEY= 8ab4d62a4deff2a8aa294f66e58a8b8cd4b8c0beace71ac0 +CT= e42920b1aa1dc3bb96e1279da25868003f1f794e76bb6028e661a1ef22f889ad +PT= 0b3a29f8bd3e498837be5973485972bc50b1fbb82766fcc6c5d9ce0d7f157e30 +TEST= 320 +KEY= bd0a8f5905b68014fa98b4dec2ec774a11610eb3d3f264f0 +CT= 0b3a29f8bd3e498837be5973485972bc50b1fbb82766fcc6c5d9ce0d7f157e30 +PT= a1ad53ef30cd776433305c0fd740680101f1ab6e951801499575191cade6910b +TEST= 321 +KEY= 8e3ad356d2f6e815fb691fb057f47603841417af7e14f5fb +CT= a1ad53ef30cd776433305c0fd740680101f1ab6e951801499575191cade6910b +PT= 1964f3eddde3b1648f89e9b56bcb3aebdfad6d221c40c990742078f60b104fcd +TEST= 322 +KEY= 01b33ae3b93dd2fe24c472924bb4bf93f0346f597504ba36 +CT= 1964f3eddde3b1648f89e9b56bcb3aebdfad6d221c40c990742078f60b104fcd +PT= 102c5359518083c162dfa1186cd20b4ab7ef236cffae5ea74e186edea67aeabb +TEST= 323 +KEY= 636c9bfbd5efd9b4932b51feb41ae134be2c0187d37e508d +CT= 102c5359518083c162dfa1186cd20b4ab7ef236cffae5ea74e186edea67aeabb +PT= c3588af037ae98d56ae9495015c913ac3ec2d2ca0f1b96d5da66d90ca9acb284 +TEST= 324 +KEY= 0985d2abc026ca18ade98334bb0177e1644ad88b7ad2e209 +CT= c3588af037ae98d56ae9495015c913ac3ec2d2ca0f1b96d5da66d90ca9acb284 +PT= 1c1edb586be63800a4feb8a2c10865fa40b23476038a5db91951426160750d3a +TEST= 325 +KEY= ad7b6a09012eafe2ed5bb742b88b2a587d1b9aea1aa7ef33 +CT= 1c1edb586be63800a4feb8a2c10865fa40b23476038a5db91951426160750d3a +PT= 59c88d3bc14613de101eeb7761610e64d40303fe39995a806778231cac01adbf +TEST= 326 +KEY= bd65817e604fa1863958b4bc811270d81a63b9f6b6a6428c +CT= 59c88d3bc14613de101eeb7761610e64d40303fe39995a806778231cac01adbf +PT= fd3347aa0b34dfb5330e93868c79473b92c901dcc9fdc29c12b924f5c85f2186 +TEST= 327 +KEY= 8e6b12f8ec36e6bdab91b56048efb24408da9d037ef9630a +CT= fd3347aa0b34dfb5330e93868c79473b92c901dcc9fdc29c12b924f5c85f2186 +PT= a4f1ced1ac6e228949db72ca10111663869f6f6cefffc46df6c27043ef7d456d +TEST= 328 +KEY= c7b06032fc27f0de2d0eda0ca7107629fe18ed4091842667 +CT= a4f1ced1ac6e228949db72ca10111663869f6f6cefffc46df6c27043ef7d456d +PT= 7267a9453c899899978f9c512b1c3825c26076d486fe6b6094ca48887365640e +TEST= 329 +KEY= 503ffc63d73bc8fbef6eacd821ee1d496ad2a5c8e2e14269 +CT= 7267a9453c899899978f9c512b1c3825c26076d486fe6b6094ca48887365640e +PT= ab9bcb4dfde32f1ca6c7a44b404746f3a125ba61c0e3ca0c7c3700117f4ea874 +TEST= 330 +KEY= f6f85828977c8e084e4b16b9e10dd74516e5a5d99dafea1d +CT= ab9bcb4dfde32f1ca6c7a44b404746f3a125ba61c0e3ca0c7c3700117f4ea874 +PT= 3bf720838862b63a00c765fe575fd24e80797af46ebe66b5803adbfb559fdaa2 +TEST= 331 +KEY= f63f3dd6c0235c46ce326c4d8fb3b1f096df7e22c83030bf +CT= 3bf720838862b63a00c765fe575fd24e80797af46ebe66b5803adbfb559fdaa2 +PT= 648691bd3ae9e91fb9384626b1d089345231a1ec48ca89fc3545f12c7a44f7ee +TEST= 332 +KEY= 4f077bf071f3d5729c03cda1c779380ca39a8f0eb274c751 +CT= 648691bd3ae9e91fb9384626b1d089345231a1ec48ca89fc3545f12c7a44f7ee +PT= f032ac3719aa5196f6b9da25c76d9719d4efd091bd61b8f366871cf7d64a4821 +TEST= 333 +KEY= b9bea1d5b69e426b48ec1d307a1880ffc51d93f9643e8f70 +CT= f032ac3719aa5196f6b9da25c76d9719d4efd091bd61b8f366871cf7d64a4821 +PT= a9a716f13298a3e555946721cbeca158252a35b452fb55fd3485348f71c38b11 +TEST= 334 +KEY= ec2ac6f47d72e3336dc6288428e3d502f198a77615fd0461 +CT= a9a716f13298a3e555946721cbeca158252a35b452fb55fd3485348f71c38b11 +PT= e2b5fad0c54dcc00aaca6f5f50fa020df197c6355d7a203a27f371b1b2a00242 +TEST= 335 +KEY= 46e0a9ab2d88e13e9c51eeb17599f538d66bd6c7a75d0623 +CT= e2b5fad0c54dcc00aaca6f5f50fa020df197c6355d7a203a27f371b1b2a00242 +PT= 208a4c4e9b3f78ca053315a04711ddff709e53d387b1ab2b4fa8c6660213830c +TEST= 336 +KEY= 43d3bc0b6a993cc1eccfbd62f2285e1399c310a1a54e852f +CT= 208a4c4e9b3f78ca053315a04711ddff709e53d387b1ab2b4fa8c6660213830c +PT= b9f94290149abdba47d25c95f3dc22daf32fbe245939d7e2c4fcf34fc34d5e1a +TEST= 337 +KEY= 0401e09e99451e1b1fe00346ab1189f15d3fe3ee6603db35 +CT= b9f94290149abdba47d25c95f3dc22daf32fbe245939d7e2c4fcf34fc34d5e1a +PT= 7151e68455bdc12d41aa0f42be81cd6b4da1e8c01df4b983c6a8f60406bcf214 +TEST= 338 +KEY= 45abefdc27c4d3705241eb86b6e530729b9715ea60bf2921 +CT= 7151e68455bdc12d41aa0f42be81cd6b4da1e8c01df4b983c6a8f60406bcf214 +PT= aab1275876b358db463fb4bbe485c8d6dd6aeb119cecf7c9fe45ee45acb75c4f +TEST= 339 +KEY= 03945b67c3411ba68f2b00972a09c7bb65d2fbafcc08756e +CT= aab1275876b358db463fb4bbe485c8d6dd6aeb119cecf7c9fe45ee45acb75c4f +PT= 35560238d54c1c38e4a1267ff3b61994b62d2513909ee6446a7978085656b0e8 +TEST= 340 +KEY= e7357d1830f7023239062584ba9721ff0fab83a79a5ec586 +CT= 35560238d54c1c38e4a1267ff3b61994b62d2513909ee6446a7978085656b0e8 +PT= 0f644e8cefa1fb03a51e78c089b0dff50d7280ef81d8fb0f86ee3245d1a7ef50 +TEST= 341 +KEY= 422b05d8b947ddc73474a56b3b4fdaf08945b1e24bf92ad6 +CT= 0f644e8cefa1fb03a51e78c089b0dff50d7280ef81d8fb0f86ee3245d1a7ef50 +PT= 1cd2ab55ae6d9d51158d289592f1f9181e64695ff21e7c2a89c3db86d485b8a8 +TEST= 342 +KEY= 57a62d4d2bb624df2a10cc34c951a6da00866a649f7c927e +CT= 1cd2ab55ae6d9d51158d289592f1f9181e64695ff21e7c2a89c3db86d485b8a8 +PT= 29556481b6a884959e35be29fa7201536962902397c88cdc5909942620a4cbba +TEST= 343 +KEY= c9939364d1c4258c43725c175e992a06598ffe42bfd859c4 +CT= 29556481b6a884959e35be29fa7201536962902397c88cdc5909942620a4cbba +PT= eed5a806e97e862211ff6dffd694a34bbc2ee9568a64657e4a5f563715ae2f9e +TEST= 344 +KEY= d86cfe9b075086c7ff5cb541d4fd4f7813d0a875aa76765a +CT= eed5a806e97e862211ff6dffd694a34bbc2ee9568a64657e4a5f563715ae2f9e +PT= 44367fc5e0b9eb417b663ef9ecfeef038c0dc2433a28088245ad2053cd2c5a87 +TEST= 345 +KEY= a30ac062ebae69c473517702eed547fa567d8826675a2cdd +CT= 44367fc5e0b9eb417b663ef9ecfeef038c0dc2433a28088245ad2053cd2c5a87 +PT= 242e99948c1b056b37cc225e4d859fb567b42508f3948e1461a150e6d524180e +TEST= 346 +KEY= 94c6e23ca62bf67114e5520a1d41c9ee37dcd8c0b27e34d3 +CT= 242e99948c1b056b37cc225e4d859fb567b42508f3948e1461a150e6d524180e +PT= d652f50d518675fdeb4bf279d4d977172999392fc4a1cb40ff169ca915ab680a +TEST= 347 +KEY= 7f8d104572f281663d7c6b25d9e002aec8ca4469a7d55cd9 +CT= d652f50d518675fdeb4bf279d4d977172999392fc4a1cb40ff169ca915ab680a +PT= 19bee2e489159d411d6f135d204a5861613df6fdb54faaa3b8f86d068cc65076 +TEST= 348 +KEY= 62e2031852b8d9075c419dd86cafa80d7032296f2b130caf +CT= 19bee2e489159d411d6f135d204a5861613df6fdb54faaa3b8f86d068cc65076 +PT= 9245222be508d9a9bf04a695a0d9ea3d2b623741c2784fecd2ae3ae90cbee8dd +TEST= 349 +KEY= dde6a58df261333a7723aa99aed7e7e1a29c138627ade472 +CT= 9245222be508d9a9bf04a695a0d9ea3d2b623741c2784fecd2ae3ae90cbee8dd +PT= 43f52c2012eb5bdc3710d70bb4b8eb0b155c28255c618b339c121b41a04da4b6 +TEST= 350 +KEY= eaf6728646d9d831627f82bcf2b66cd23e8e08c787e040c4 +CT= 43f52c2012eb5bdc3710d70bb4b8eb0b155c28255c618b339c121b41a04da4b6 +PT= d768b81722a45c4cac999f4b4b6a8e82c68a737d01661e73b48b1843c2cf4eb3 +TEST= 351 +KEY= 466fedcd0db356b3a4f5f1c1f3d072a18a051084452f0e77 +CT= d768b81722a45c4cac999f4b4b6a8e82c68a737d01661e73b48b1843c2cf4eb3 +PT= 6b84ef3a6509224ca373f6b9656b9edf1796fc55ea018e4759e92330211ac339 +TEST= 352 +KEY= e51c1b7468d8c86cb3630d9419d1fce6d3ec33b46435cd4e +CT= 6b84ef3a6509224ca373f6b9656b9edf1796fc55ea018e4759e92330211ac339 +PT= 6acd64832ce3e9cee14014df92758e80dfdec7442c7db9ba594e6359f615e723 +TEST= 353 +KEY= 045c0fabfaad46ec6cbdcad035ac455c8aa250ed92202a6d +CT= 6acd64832ce3e9cee14014df92758e80dfdec7442c7db9ba594e6359f615e723 +PT= 0e5238e5c0ea8b45783f59e5159a1970fa2aa5eda66b65e5e5db385d74076047 +TEST= 354 +KEY= 7c63564eef375f9c96976f3d93c720b96f7968b0e6274a2a +CT= 0e5238e5c0ea8b45783f59e5159a1970fa2aa5eda66b65e5e5db385d74076047 +PT= 3efcbe60503de1f82efd765d4bf105a6b428135a78aa40c363d3976297e2acd0 +TEST= 355 +KEY= 529e2013a4c65a3a22bf7c67eb6d607a0caaffd271c5e6fa +CT= 3efcbe60503de1f82efd765d4bf105a6b428135a78aa40c363d3976297e2acd0 +PT= 8214363f3c3197b43d652e2c183dadccbcc437a4967e991a839b2a4cd25aa66d +TEST= 356 +KEY= 6ffb0e3fbcfbf7f69e7b4bc37d13f9608f31d59ea39f4097 +CT= 8214363f3c3197b43d652e2c183dadccbcc437a4967e991a839b2a4cd25aa66d +PT= 8831944bf3599db906cf8029bd69e162d39d16f81127a1c4c26d35047ed577a0 +TEST= 357 +KEY= 69348e16019216944de65d3b6c3458a44d5ce09add4a3737 +CT= 8831944bf3599db906cf8029bd69e162d39d16f81127a1c4c26d35047ed577a0 +PT= 6862133a2282fcff86de195f43e1fdc04a61e8e25bd3e2f310333394cd4928fb +TEST= 358 +KEY= efea97494273eb540787b5d937e7ba575d6fd30e10031fcc +CT= 6862133a2282fcff86de195f43e1fdc04a61e8e25bd3e2f310333394cd4928fb +PT= a5a7afa433381bbc78e9f62560254b061c2ad1c467334c40c195381ccfccbf57 +TEST= 359 +KEY= 9703616c2256a0521bad641d50d4f6179cfaeb12dfcfa09b +CT= a5a7afa433381bbc78e9f62560254b061c2ad1c467334c40c195381ccfccbf57 +PT= dcff6d60d8a203a5235f296c4e7c132436fc64cf43c996e74bac6dc1b5799bff +TEST= 360 +KEY= b45c48006c2ab3762d5100d2131d60f0d75686d36ab63b64 +CT= dcff6d60d8a203a5235f296c4e7c132436fc64cf43c996e74bac6dc1b5799bff +PT= 3bf5869cfe7ac9eb10f68515b9d27ae744e2b7285e595c2352d64e64444568ca +TEST= 361 +KEY= a4aacd15d5f8c99169b3b7fa4d443cd38580c8b72ef353ae +CT= 3bf5869cfe7ac9eb10f68515b9d27ae744e2b7285e595c2352d64e64444568ca +PT= dc2f578fde18624e37b961cd27b3b0784d977dae5cfcfd729795ff5d0825d955 +TEST= 362 +KEY= 9313acd8f24b79e92424ca5411b8c1a1121537ea26d68afb +CT= dc2f578fde18624e37b961cd27b3b0784d977dae5cfcfd729795ff5d0825d955 +PT= 35c109e37076ef25924ba8fe0a646f8ab5ab528313b0fb40b724511ad1a6e4e7 +TEST= 363 +KEY= 01580426f82f1663918f98d702083ae1a53166f0f7706e1c +CT= 35c109e37076ef25924ba8fe0a646f8ab5ab528313b0fb40b724511ad1a6e4e7 +PT= d3893e16598e9d1ea3070be8bf1f8f79afad6fe84ec5f7c6cbd3514a3cfd2c4d +TEST= 364 +KEY= a25f0fce4730991a3e22f73f4ccdcd276ee237bacb8d4251 +CT= d3893e16598e9d1ea3070be8bf1f8f79afad6fe84ec5f7c6cbd3514a3cfd2c4d +PT= e9a9df9be5df9b4ec5b2087ff83ba830a24e0fe12d73f47721bd46dcb03baa7d +TEST= 365 +KEY= 67ed07b1bf0b312a9c6cf8de61be39504f5f71667bb6e82c +CT= e9a9df9be5df9b4ec5b2087ff83ba830a24e0fe12d73f47721bd46dcb03baa7d +PT= c9334808ba5b54e024cc0e9e7cd1674eeed94d3cdb9acb265d06522278e0f26d +TEST= 366 +KEY= 4321092fc3da566472b5b5e2ba24f2761259234403561a41 +CT= c9334808ba5b54e024cc0e9e7cd1674eeed94d3cdb9acb265d06522278e0f26d +PT= 8ff2b6c0c84a618118a0364a3dfa08f47f41a76222a4230fc93666535a21a62a +TEST= 367 +KEY= 5b813f65fe205e900df412809880d179db6f45175977bc6b +CT= 8ff2b6c0c84a618118a0364a3dfa08f47f41a76222a4230fc93666535a21a62a +PT= ffa4f801fff2dbaf01ceac932f128abc8fb7073bf194066b3bd937547c31209f +TEST= 368 +KEY= 5a4f93f6d132d42c824315bb6914d712e0b6724325469cf4 +CT= ffa4f801fff2dbaf01ceac932f128abc8fb7073bf194066b3bd937547c31209f +PT= cce8a65bd5dd123164af60786d5c58ae6b1882501f7b583b87eb9de082fe1194 +TEST= 369 +KEY= 3ee0f38ebc6e8c82e95b97eb766f8f29675defa3a7b88d60 +CT= cce8a65bd5dd123164af60786d5c58ae6b1882501f7b583b87eb9de082fe1194 +PT= f28925387755f528ea37426c66abad6b758d245563e9d088db01f4ed9223721c +TEST= 370 +KEY= d4d7b1e2dac521e99cd6b3be15865fa1bc5c1b4e359bff7c +CT= f28925387755f528ea37426c66abad6b758d245563e9d088db01f4ed9223721c +PT= 15c7c595bce5a7a8d62145b946f9e3a67ed3174e1ca763337fa0d2db6f5f0a1e +TEST= 371 +KEY= 02f6f45b9c3cc24fe205a4f009213c92c3fcc9955ac4f562 +CT= 15c7c595bce5a7a8d62145b946f9e3a67ed3174e1ca763337fa0d2db6f5f0a1e +PT= 837475b3f40d0d31a272a50e13a31bc80e0a9fecd5c41bfe2b801472c51e65a0 +TEST= 372 +KEY= a08451558f9fd987ec0f3b1cdce5276ce87cdde79fda90c2 +CT= 837475b3f40d0d31a272a50e13a31bc80e0a9fecd5c41bfe2b801472c51e65a0 +PT= 7912041a0b8262ff7e58d3ad1aba38af33be9c7e637a748683cf821047f0586a +TEST= 373 +KEY= dedc82f89525e128dfb1a762bf9f53ea6bb35ff7d82ac8a8 +CT= 7912041a0b8262ff7e58d3ad1aba38af33be9c7e637a748683cf821047f0586a +PT= 79c6ae86870a3019a7288419aedf4cc478da34458e300efea6d0f8582e7f620e +TEST= 374 +KEY= 79f406e13bfaadeca76b932731af5d14cd63a7aff655aaa6 +CT= 79c6ae86870a3019a7288419aedf4cc478da34458e300efea6d0f8582e7f620e +PT= ad86dc8ef4a841b5b7551af0fe0fdd5ed15b1ab16d00ba8e3070dde6425afec2 +TEST= 375 +KEY= cea11c11c5f570b2763089965cafe79afd137a49b40f5464 +CT= ad86dc8ef4a841b5b7551af0fe0fdd5ed15b1ab16d00ba8e3070dde6425afec2 +PT= a58957781ac9dd2d1f91299937b41fd160bc08a82f1e4791d1800bca53c3fef4 +TEST= 376 +KEY= d1303588f2416f63168c813e73b1a00b2c937183e7ccaa90 +CT= a58957781ac9dd2d1f91299937b41fd160bc08a82f1e4791d1800bca53c3fef4 +PT= 8eed667bcfc1a85c0f9b2c1ba44f9908a0823e77612bef192fc2977e73f58738 +TEST= 377 +KEY= deab1993560ef66bb60ebf49129a4f120351e6fd94392da8 +CT= 8eed667bcfc1a85c0f9b2c1ba44f9908a0823e77612bef192fc2977e73f58738 +PT= 468cd0d84b885b486eaee94d154a0dd12cd18a1f4195385254ef658c2b9556e5 +TEST= 378 +KEY= b005f0de4344fbba9adf3556530f774057be8371bfac7b4d +CT= 468cd0d84b885b486eaee94d154a0dd12cd18a1f4195385254ef658c2b9556e5 +PT= d9bcacd0214e05b9b8437433b2619d43c4b5aee23f1937331cbf349c543c3621 +TEST= 379 +KEY= 084684edf12566f95e6a9bb46c1640734b01b7edeb904d6c +CT= d9bcacd0214e05b9b8437433b2619d43c4b5aee23f1937331cbf349c543c3621 +PT= f0c7412d99ca95c074425727fb06af1193fc3f020ce848c3e6da58e1f6b8b907 +TEST= 380 +KEY= 7c04d3ca0a23c9e8cd96a4b660fe08b0addbef0c1d28f46b +CT= f0c7412d99ca95c074425727fb06af1193fc3f020ce848c3e6da58e1f6b8b907 +PT= 1f2402f2e7402f0fffa43efdb16102cc68dd16dd9a1ee6eee6204aa134c3d7b5 +TEST= 381 +KEY= 83a0ed37bb42cb24a54bb26bfae0ee5e4bfba5ad29eb23de +CT= 1f2402f2e7402f0fffa43efdb16102cc68dd16dd9a1ee6eee6204aa134c3d7b5 +PT= ca5a9de8d032b911fa6131f6fc7be79a88cd1e6e5141c7933e0c3c5491054fdc +TEST= 382 +KEY= 79c1dcc147392cbe2d86ac05aba129cd75f799f9b8ee6c02 +CT= ca5a9de8d032b911fa6131f6fc7be79a88cd1e6e5141c7933e0c3c5491054fdc +PT= 91a8351642460eca97dd6bba8528688656f4255702a92b3abe8422d5f3d1cab5 +TEST= 383 +KEY= ee1cb77bc21144387b728952a90802f7cb73bb2c4b3fa6b7 +CT= 91a8351642460eca97dd6bba8528688656f4255702a92b3abe8422d5f3d1cab5 +PT= 68978a353acf39fefccc3f38d61ae37259dba37015d9816ea18df8a335ae4250 +TEST= 384 +KEY= 12d08843140ba74a22a92a22bcd183996afe438f7e91e4e7 +CT= 68978a353acf39fefccc3f38d61ae37259dba37015d9816ea18df8a335ae4250 +PT= a4be855957157cd50f200ef2ed4f6ed89aaf55d8cfc251a5761e16a71bfb515b +TEST= 385 +KEY= 1df086b1f944c992b8067ffa7313d23c1ce05528656ab5bc +CT= a4be855957157cd50f200ef2ed4f6ed89aaf55d8cfc251a5761e16a71bfb515b +PT= 91ee7819ac5be2e5bf04e873376806427a621ba0ac13f7a976e0d2aaef4076bc +TEST= 386 +KEY= a2f46ec2ce2ccfd0c264645adf0025956a0087828a2ac300 +CT= 91ee7819ac5be2e5bf04e873376806427a621ba0ac13f7a976e0d2aaef4076bc +PT= ce4903b02225eec13c68b00bc7baa606f2a801a7d830f693205a4352fe651219 +TEST= 387 +KEY= 9e9cdec9099669d630cc65fd0730d3064a5ac4d0744fd119 +CT= ce4903b02225eec13c68b00bc7baa606f2a801a7d830f693205a4352fe651219 +PT= cfb0ca78381cdf168f6f19bee7e511f7d1c94f756b450bfb9ee041b6eb320377 +TEST= 388 +KEY= 11f3c777ee737821e1052a886c75d8fdd4ba85669f7dd26e +CT= cfb0ca78381cdf168f6f19bee7e511f7d1c94f756b450bfb9ee041b6eb320377 +PT= 01a568a6cd8774e4a08ca7d385717834531abf0ea1af4fb96e61f6f0d0b00d6e +TEST= 389 +KEY= b17f60a46b020015b21f9586cdda9744badb73964fcddf00 +CT= 01a568a6cd8774e4a08ca7d385717834531abf0ea1af4fb96e61f6f0d0b00d6e +PT= fe278113752032634c561966de4410da1a2c8720c3076d576e290d4c53bb076a +TEST= 390 +KEY= fd2979c2b54610cfa83312a60eddfa13d4f27eda1c76d86a +CT= fe278113752032634c561966de4410da1a2c8720c3076d576e290d4c53bb076a +PT= 64823e12a5ccea08a5743ad04437299ce1cbcbe39d9e7f4a334bf29107b9f25d +TEST= 391 +KEY= 585d4312f171395349f8d94593438559e7b98c4b1bcf2a37 +CT= 64823e12a5ccea08a5743ad04437299ce1cbcbe39d9e7f4a334bf29107b9f25d +PT= 48fd29833f67a36cabc1856998779b02aa3f5397c5ad5fe4b1b65838c58d43aa +TEST= 392 +KEY= f39cc67b6906a251e3c78ad256eedabd560fd473de42699d +CT= 48fd29833f67a36cabc1856998779b02aa3f5397c5ad5fe4b1b65838c58d43aa +PT= 7b54fff8d08b4ac2a25b63fd036b833c9792ddaeb79e38e926efa3329d4250ef +TEST= 393 +KEY= 51c7a5866a6d216d7455577ce170e25470e0774143003972 +CT= 7b54fff8d08b4ac2a25b63fd036b833c9792ddaeb79e38e926efa3329d4250ef +PT= f2ff8acb9a8c4a3282537f1f24cc5cb23eb0292c6edc543d145f8f919eb078bd +TEST= 394 +KEY= d394da994ea17ddf4ae57e508facb66964bff8d0ddb041cf +CT= f2ff8acb9a8c4a3282537f1f24cc5cb23eb0292c6edc543d145f8f919eb078bd +PT= c26651e066dfa70edc13d47dac6e597c50334c05e39440a7f5717e8911ff80b2 +TEST= 395 +KEY= 0f870ee4e2cf24a31ad632556c38f6ce91ce8659cc4fc17d +CT= c26651e066dfa70edc13d47dac6e597c50334c05e39440a7f5717e8911ff80b2 +PT= 786a711219ecc05808d383da57b433ee233b7284b21ce0fce8a93fbdf66bc436 +TEST= 396 +KEY= 07548d3eb57b174d39ed40d1de2416327967b9e43a24054b +CT= 786a711219ecc05808d383da57b433ee233b7284b21ce0fce8a93fbdf66bc436 +PT= b24daa514b2eb030894abe64d18652876e15dab64a5ad2fabcaca463928e2fbb +TEST= 397 +KEY= 8e1e335a64fd45ca57f89a67947ec4c8c5cb1d87a8aa2af0 +CT= b24daa514b2eb030894abe64d18652876e15dab64a5ad2fabcaca463928e2fbb +PT= ff7a78a7dff4a7de43ff4411f3d02862ac431ca71948d073ec7594540c316101 +TEST= 398 +KEY= cde1774b972d6da8fbbb86c08d3614bb29be89d3a49b4bf1 +CT= ff7a78a7dff4a7de43ff4411f3d02862ac431ca71948d073ec7594540c316101 +PT= 786fbd14a4efd571fd1b9c6bd4d365eb9c6d34f086db5153d0e68b723f2479a7 +TEST= 399 +KEY= 30faeb2043fe084367d6b2300bed45e8f95802a19bbf3256 +CT= 786fbd14a4efd571fd1b9c6bd4d365eb9c6d34f086db5153d0e68b723f2479a7 +PT= beb2aad7d8e3a9a325731c527f398da594e5a25a3cc19342bc38563b9c2e7307 diff --git a/flint/test/testvals/ecbmd88.txt b/flint/test/testvals/ecbmd88.txt new file mode 100644 index 0000000..5c827df --- /dev/null +++ b/flint/test/testvals/ecbmd88.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Decryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbmd88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 0000000000000000000000000000000000000000000000000000000000000000 +PT= e1909b80a7e4700fd9dc581060568db2521ba439ccc0573459bf4db5acfd7d99 +TEST= 1 +KEY= e1909b80a7e4700fd9dc581060568db2521ba439ccc0573459bf4db5acfd7d99 +CT= e1909b80a7e4700fd9dc581060568db2521ba439ccc0573459bf4db5acfd7d99 +PT= 7c1a4d432b77d8803b95da440d1f1daf43b9fd24ee550208654267d4e2e5671c +TEST= 2 +KEY= 9d8ad6c38c93a88fe24982546d49901d11a2591d2295553c3cfd2a614e181a85 +CT= 7c1a4d432b77d8803b95da440d1f1daf43b9fd24ee550208654267d4e2e5671c +PT= 370ed2a3e7f35d0b1ac721f23c1dcf5c704a4e6e4fa7d831b2e3e3c90933942e +TEST= 3 +KEY= aa8404606b60f584f88ea3a651545f4161e817736d328d0d8e1ec9a8472b8eab +CT= 370ed2a3e7f35d0b1ac721f23c1dcf5c704a4e6e4fa7d831b2e3e3c90933942e +PT= 230011d2ef30014f744ac047d0b8324a4442f6f96f0fd02a0f780543175c06da +TEST= 4 +KEY= 898415b28450f4cb8cc463e181ec6d0b25aae18a023d5d278166cceb50778871 +CT= 230011d2ef30014f744ac047d0b8324a4442f6f96f0fd02a0f780543175c06da +PT= 3105269b429d26a793b313ac8d8fdc5ef7b1f4f3e34063e7b28d060905818eb2 +TEST= 5 +KEY= b8813329c6cdd26c1f77704d0c63b155d21b1579e17d3ec033ebcae255f606c3 +CT= 3105269b429d26a793b313ac8d8fdc5ef7b1f4f3e34063e7b28d060905818eb2 +PT= e25385cdd2075da1dfffe9e5d7c3388ebfdf4400ab034d948660e5e0d82a6468 +TEST= 6 +KEY= 5ad2b6e414ca8fcdc08899a8dba089db6dc451794a7e7354b58b2f028ddc62ab +CT= e25385cdd2075da1dfffe9e5d7c3388ebfdf4400ab034d948660e5e0d82a6468 +PT= 1d3299cfa22870fa224fbef78e247ffb7f67b59411e8e0e6c1ffddcdbe54665a +TEST= 7 +KEY= 47e02f2bb6e2ff37e2c7275f5584f62012a3e4ed5b9693b27474f2cf338804f1 +CT= 1d3299cfa22870fa224fbef78e247ffb7f67b59411e8e0e6c1ffddcdbe54665a +PT= c239c1adb4e7ae8d21bf7f5b6ff6edae02147c4204f03da1b2fd81a8cd2f3782 +TEST= 8 +KEY= 85d9ee86020551bac37858043a721b8e10b798af5f66ae13c6897367fea73373 +CT= c239c1adb4e7ae8d21bf7f5b6ff6edae02147c4204f03da1b2fd81a8cd2f3782 +PT= 221502837153d1589ac11cec362634e9dd300b7b7c1a7e7ec686051bf6a4d97f +TEST= 9 +KEY= a7ccec05735680e259b944e80c542f67cd8793d4237cd06d000f767c0803ea0c +CT= 221502837153d1589ac11cec362634e9dd300b7b7c1a7e7ec686051bf6a4d97f +PT= 164506c535f127df82a711b273b8fa3372bf1f7d2506f2080090af9444b3889f +TEST= 10 +KEY= b189eac046a7a73ddb1e555a7fecd554bf388ca9067a2265009fd9e84cb06293 +CT= 164506c535f127df82a711b273b8fa3372bf1f7d2506f2080090af9444b3889f +PT= de66a0dcd5ac192b9d080d231a37ec669ff6bb8c86c8526f224f17e8889df27e +TEST= 11 +KEY= 6fef4a1c930bbe164616587965db393220ce372580b2700a22d0ce00c42d90ed +CT= de66a0dcd5ac192b9d080d231a37ec669ff6bb8c86c8526f224f17e8889df27e +PT= e6834a74280af0684682b44f71c47bccda5d0ad589fd2b5342f7ce86e440afe9 +TEST= 12 +KEY= 896c0068bb014e7e0094ec36141f42fefa933df0094f5b5960270086206d3f04 +CT= e6834a74280af0684682b44f71c47bccda5d0ad589fd2b5342f7ce86e440afe9 +PT= 17a943fce4a7741222749dd3f784b8a4a3683a9933949e4c4fa5e9e2d37f64a0 +TEST= 13 +KEY= 9ec543945fa63a6c22e071e5e39bfa5a59fb07693adbc5152f82e964f3125ba4 +CT= 17a943fce4a7741222749dd3f784b8a4a3683a9933949e4c4fa5e9e2d37f64a0 +PT= 9268689149719276ad2110ccbef5ca3bf72b3f0f736fb99c96f9db28b15cfe68 +TEST= 14 +KEY= 0cad2b0516d7a81a8fc161295d6e3061aed0386649b47c89b97b324c424ea5cc +CT= 9268689149719276ad2110ccbef5ca3bf72b3f0f736fb99c96f9db28b15cfe68 +PT= b2169521ed4d46f1790d7adf5370bba017c5200f1813282e31618441b7eb6294 +TEST= 15 +KEY= bebbbe24fb9aeeebf6cc1bf60e1e8bc1b915186951a754a7881ab60df5a5c758 +CT= b2169521ed4d46f1790d7adf5370bba017c5200f1813282e31618441b7eb6294 +PT= 72aa2c67b665cca256824c3f57b7952f7325ccf92e0f430b8b1f39eb87c7751d +TEST= 16 +KEY= cc1192434dff2249a04e57c959a91eeeca30d4907fa817ac03058fe67262b245 +CT= 72aa2c67b665cca256824c3f57b7952f7325ccf92e0f430b8b1f39eb87c7751d +PT= 60f530061f0de00b044875945bb5a47103ee1ff5f50c847f9faec8ce1637b45d +TEST= 17 +KEY= ace4a24552f2c242a406225d021cba9fc9decb658aa493d39cab472864550618 +CT= 60f530061f0de00b044875945bb5a47103ee1ff5f50c847f9faec8ce1637b45d +PT= a7437df13fcd61a4ebcaa87759f2cf7e455803d1804ca542086bbed4aec4aa09 +TEST= 18 +KEY= 0ba7dfb46d3fa3e64fcc8a2a5bee75e18c86c8b40ae8369194c0f9fcca91ac11 +CT= a7437df13fcd61a4ebcaa87759f2cf7e455803d1804ca542086bbed4aec4aa09 +PT= 99c229e582b211998b33c7341a20594bc2ff5d074007da884d7498d8529d7816 +TEST= 19 +KEY= 9265f651ef8db27fc4ff4d1e41ce2caa4e7995b34aefec19d9b46124980cd407 +CT= 99c229e582b211998b33c7341a20594bc2ff5d074007da884d7498d8529d7816 +PT= 9015f6233025979dbcc2539d371ee465496faf6251d5eb0e231f9a494e0af0ec +TEST= 20 +KEY= 02700072dfa825e2783d1e8376d0c8cf07163ad11b3a0717faabfb6dd60624eb +CT= 9015f6233025979dbcc2539d371ee465496faf6251d5eb0e231f9a494e0af0ec +PT= e7db2aa9adef5d2ee6c06759cedf6b38da4e9a076f98c927092e13c7f33f887f +TEST= 21 +KEY= e5ab2adb724778cc9efd79dab80fa3f7dd58a0d674a2ce30f385e8aa2539ac94 +CT= e7db2aa9adef5d2ee6c06759cedf6b38da4e9a076f98c927092e13c7f33f887f +PT= fd42aa3ffcec665e528b9f76b1461dfcf4d367b9531046030110a24b3040668f +TEST= 22 +KEY= 18e980e48eab1e92cc76e6ac0949be0b298bc76f27b28833f2954ae11579ca1b +CT= fd42aa3ffcec665e528b9f76b1461dfcf4d367b9531046030110a24b3040668f +PT= b2a832b2c18058f9225ea2e12e3a99b84523bbe881b194101bc3d41277dbe504 +TEST= 23 +KEY= aa41b2564f2b466bee28444d277327b36ca87c87a6031c23e9569ef362a22f1f +CT= b2a832b2c18058f9225ea2e12e3a99b84523bbe881b194101bc3d41277dbe504 +PT= 7fa9447d24316c8dc7dc6bd0fe8a7e3f51b2ae729586d33b5ab76ae276ab6088 +TEST= 24 +KEY= d5e8f62b6b1a2ae629f42f9dd9f9598c3d1ad2f53385cf18b3e1f41114094f97 +CT= 7fa9447d24316c8dc7dc6bd0fe8a7e3f51b2ae729586d33b5ab76ae276ab6088 +PT= c04e09d88bcc4f6330cf304f8704a2792d7d161a23535e9b206c1d97d99e0816 +TEST= 25 +KEY= 15a6fff3e0d66585193b1fd25efdfbf51067c4ef10d69183938de986cd974781 +CT= c04e09d88bcc4f6330cf304f8704a2792d7d161a23535e9b206c1d97d99e0816 +PT= 6c4e793e2cdf69423befb5eca122f708616863522b6136a9a70976bfe711cde8 +TEST= 26 +KEY= 79e886cdcc090cc722d4aa3effdf0cfd710fa7bd3bb7a72a34849f392a868a69 +CT= 6c4e793e2cdf69423befb5eca122f708616863522b6136a9a70976bfe711cde8 +PT= e9a22b37143073f7cdc5123e3eaaaec3e5ee2515efed3b598040b11c2de17ab3 +TEST= 27 +KEY= 904aadfad8397f30ef11b800c175a23e94e182a8d45a9c73b4c42e250767f0da +CT= e9a22b37143073f7cdc5123e3eaaaec3e5ee2515efed3b598040b11c2de17ab3 +PT= d25bd6f3854433082ffcf0414687257bd30cd27c0259917f2338514a862bd81e +TEST= 28 +KEY= 42117b095d7d4c38c0ed484187f2874547ed50d4d6030d0c97fc7f6f814c28c4 +CT= d25bd6f3854433082ffcf0414687257bd30cd27c0259917f2338514a862bd81e +PT= 45ef1af82896414a21ee69ab489fddb889e1af9624c002a27b4dfed1cf4a9322 +TEST= 29 +KEY= 07fe61f175eb0d72e10321eacf6d5afdce0cff42f2c30faeecb181be4e06bbe6 +CT= 45ef1af82896414a21ee69ab489fddb889e1af9624c002a27b4dfed1cf4a9322 +PT= 3e893842634837b02aac245908ebf3b21c7ce813bab92364184d134c45231f1e +TEST= 30 +KEY= 397759b316a33ac2cbaf05b3c786a94fd2701751487a2ccaf4fc92f20b25a4f8 +CT= 3e893842634837b02aac245908ebf3b21c7ce813bab92364184d134c45231f1e +PT= e4417ca6977dac87d44aef2d31bc1da5a5fdc4525bff4b5db0e723ac1bc9d95e +TEST= 31 +KEY= dd36251581de96451fe5ea9ef63ab4ea778dd30313856797441bb15e10ec7da6 +CT= e4417ca6977dac87d44aef2d31bc1da5a5fdc4525bff4b5db0e723ac1bc9d95e +PT= 28bc05dbc50c0db2dfab1d4d39490ebc4e7d59d0f776264134d2a46798d6fe33 +TEST= 32 +KEY= f58a20ce44d29bf7c04ef7d3cf73ba5639f08ad3e4f341d670c91539883a8395 +CT= 28bc05dbc50c0db2dfab1d4d39490ebc4e7d59d0f776264134d2a46798d6fe33 +PT= e761135f8a9d34d760362b6c1cebc715c1f30649ab9b699e619a39a69ab0785a +TEST= 33 +KEY= 12eb3391ce4faf20a078dcbfd3987d43f8038c9a4f68284811532c9f128afbcf +CT= e761135f8a9d34d760362b6c1cebc715c1f30649ab9b699e619a39a69ab0785a +PT= ba4e45db3313ed6f6104ea8c7caba3698bfb89852a189ac593a3829d07aaa414 +TEST= 34 +KEY= a8a5764afd5c424fc17c3633af33de2a73f8051f6570b28d82f0ae0215205fdb +CT= ba4e45db3313ed6f6104ea8c7caba3698bfb89852a189ac593a3829d07aaa414 +PT= 20e9b47317f69d280c58fa294cdb114708707e63c6c307fa2c17f6a1b19de55e +TEST= 35 +KEY= 884cc239eaaadf67cd24cc1ae3e8cf6d7b887b7ca3b3b577aee758a3a4bdba85 +CT= 20e9b47317f69d280c58fa294cdb114708707e63c6c307fa2c17f6a1b19de55e +PT= 3824eb031a4cf64883eb31e4820208537ffc658aa5b726cfabbe6df61a9bb811 +TEST= 36 +KEY= b068293af0e6292f4ecffdfe61eac73e04741ef6060493b805593555be260294 +CT= 3824eb031a4cf64883eb31e4820208537ffc658aa5b726cfabbe6df61a9bb811 +PT= a27c48aac61c3c1d0831b13b39860376f709e55d2169afd49f474e546fc4b940 +TEST= 37 +KEY= 1214619036fa153246fe4cc5586cc448f37dfbab276d3c6c9a1e7b01d1e2bbd4 +CT= a27c48aac61c3c1d0831b13b39860376f709e55d2169afd49f474e546fc4b940 +PT= e77661f08d3ea8ebaa1a071260e2c4d632eced889a8b26f6998fb9b744a3a116 +TEST= 38 +KEY= f5620060bbc4bdd9ece44bd7388e009ec1911623bde61a9a0391c2b695411ac2 +CT= e77661f08d3ea8ebaa1a071260e2c4d632eced889a8b26f6998fb9b744a3a116 +PT= acf6a1fa2bd0d65c73b7c978534485c090f4a5d5509fd5c330ea0040a9e40e74 +TEST= 39 +KEY= 5994a19a90146b859f5382af6bca855e5165b3f6ed79cf59337bc2f63ca514b6 +CT= acf6a1fa2bd0d65c73b7c978534485c090f4a5d5509fd5c330ea0040a9e40e74 +PT= f4ffcb7d66f35a5d5991902a2ad2e74a0cc0edb30df39b2d78d2adc4ef6568ad +TEST= 40 +KEY= ad6b6ae7f6e731d8c6c21285411862145da55e45e08a54744ba96f32d3c07c1b +CT= f4ffcb7d66f35a5d5991902a2ad2e74a0cc0edb30df39b2d78d2adc4ef6568ad +PT= ec2ed39f2531ef6b8b1f24f5d3e319d51e33230068c6e719d9aead2e62bf3c94 +TEST= 41 +KEY= 4145b978d3d6deb34ddd367092fb7bc143967d45884cb36d9207c21cb17f408f +CT= ec2ed39f2531ef6b8b1f24f5d3e319d51e33230068c6e719d9aead2e62bf3c94 +PT= 64e827a6e6b9de2dfb61ac29a1b949e9746bf28cd26de540a094c61075d469e6 +TEST= 42 +KEY= 25ad9ede356f009eb6bc9a593342322837fd8fc95a21562d3293040cc4ab2969 +CT= 64e827a6e6b9de2dfb61ac29a1b949e9746bf28cd26de540a094c61075d469e6 +PT= 98917ba8ac61d9a3d1e4ddc7165439120c426942a65c6ac58312471135d67dfc +TEST= 43 +KEY= bd3ce576990ed93d6758479e25160b3a3bbfe68bfc7d3ce8b181431df17d5495 +CT= 98917ba8ac61d9a3d1e4ddc7165439120c426942a65c6ac58312471135d67dfc +PT= 38027ccb1a2dcb2af901c6ab2270c0e10b6ff9ecb5193bad43daf2a0d1a604b2 +TEST= 44 +KEY= 853e99bd832312179e5981350766cbdb30d01f6749640745f25bb1bd20db5027 +CT= 38027ccb1a2dcb2af901c6ab2270c0e10b6ff9ecb5193bad43daf2a0d1a604b2 +PT= e08a04ed45605e781f0f892d12ff9de1e4c6394b76fee07520970f118fc28d67 +TEST= 45 +KEY= 65b49d50c6434c6f815608181599563ad416262c3f9ae730d2ccbeacaf19dd40 +CT= e08a04ed45605e781f0f892d12ff9de1e4c6394b76fee07520970f118fc28d67 +PT= 1ceaf8ffd5e718f03d646b0beef1cd05477969a8586a05dfa48a4508b7a4a862 +TEST= 46 +KEY= 795e65af13a4549fbc326313fb689b3f936f4f8467f0e2ef7646fba418bd7522 +CT= 1ceaf8ffd5e718f03d646b0beef1cd05477969a8586a05dfa48a4508b7a4a862 +PT= 9373120533cd677dd5c2360d147cb1bcaf45ec0db2e3b6f80d15b9691fbc4f0d +TEST= 47 +KEY= ea2d77aa206933e269f0551eef142a833c2aa389d51354177b5342cd07013a2f +CT= 9373120533cd677dd5c2360d147cb1bcaf45ec0db2e3b6f80d15b9691fbc4f0d +PT= c80eca1de9303160f40cf713e47a02a0ba1a721cead60fb0ea52fd17be001f66 +TEST= 48 +KEY= 2223bdb7c95902829dfca20d0b6e28238630d1953fc55ba79101bfdab9012549 +CT= c80eca1de9303160f40cf713e47a02a0ba1a721cead60fb0ea52fd17be001f66 +PT= 298822050d379504ffbb5a7a7e1804e3654ec9d91963e846b199eb82a6e3bfb7 +TEST= 49 +KEY= 0bab9fb2c46e97866247f87775762cc0e37e184c26a6b3e1209854581fe29afe +CT= 298822050d379504ffbb5a7a7e1804e3654ec9d91963e846b199eb82a6e3bfb7 +PT= b98dac2225d80093b7f7ac6ed16a39a665d1e70a12a0b3467175842404add414 +TEST= 50 +KEY= b2263390e1b69715d5b05419a41c156686afff46340600a751edd07c1b4f4eea +CT= b98dac2225d80093b7f7ac6ed16a39a665d1e70a12a0b3467175842404add414 +PT= 533fbf433f3aa774e16c606affa53b05d8a52551c4e1165e0a52501a29c390f2 +TEST= 51 +KEY= e1198cd3de8c306134dc34735bb92e635e0ada17f0e716f95bbf8066328cde18 +CT= 533fbf433f3aa774e16c606affa53b05d8a52551c4e1165e0a52501a29c390f2 +PT= 470888655481ec826c8db1926af22aef9a2aaacd6cf5ff8d36880e0c829a81ec +TEST= 52 +KEY= a61104b68a0ddce3585185e1314b048cc42070da9c12e9746d378e6ab0165ff4 +CT= 470888655481ec826c8db1926af22aef9a2aaacd6cf5ff8d36880e0c829a81ec +PT= 213858595f81b8eccfa80ac8dc51df57674c9243f35efc9d8f2b6b4ac2967e80 +TEST= 53 +KEY= 87295cefd58c640f97f98f29ed1adbdba36ce2996f4c15e9e21ce52072802174 +CT= 213858595f81b8eccfa80ac8dc51df57674c9243f35efc9d8f2b6b4ac2967e80 +PT= 42b5612396131eae0d79f2c4bded69613385f297d86808f1742b0f3e1a9a1fae +TEST= 54 +KEY= c59c3dcc439f7aa19a807ded50f7b2ba90e9100eb7241d189637ea1e681a3eda +CT= 42b5612396131eae0d79f2c4bded69613385f297d86808f1742b0f3e1a9a1fae +PT= 3615af93ba8af6d5984c38cc2fe7e6d9ca18f1fd2c40a7f836cf503c151f4a57 +TEST= 55 +KEY= f389925ff9158c7402cc45217f1054635af1e1f39b64bae0a0f8ba227d05748d +CT= 3615af93ba8af6d5984c38cc2fe7e6d9ca18f1fd2c40a7f836cf503c151f4a57 +PT= d7299a13f8c6bd5444ea95a2000f9752e20b57be139f684f90e06624aa561542 +TEST= 56 +KEY= 24a0084c01d331204626d0837f1fc331b8fab64d88fbd2af3018dc06d75361cf +CT= d7299a13f8c6bd5444ea95a2000f9752e20b57be139f684f90e06624aa561542 +PT= 4ab851dd2745a38874c8b0867345234eadfbe952b41d14f3debbb233b717184e +TEST= 57 +KEY= 6e185991269692a832ee60050c5ae07f15015f1f3ce6c65ceea36e3560447981 +CT= 4ab851dd2745a38874c8b0867345234eadfbe952b41d14f3debbb233b717184e +PT= b24acdd30c648936f3fba9bbddd054272cbd6d2815054a2459e67d81f50aa09b +TEST= 58 +KEY= dc5294422af21b9ec115c9bed18ab45839bc323729e38c78b74513b4954ed91a +CT= b24acdd30c648936f3fba9bbddd054272cbd6d2815054a2459e67d81f50aa09b +PT= 906db58a6c054250ea15bfa28c4a931c145ba7b85aedd04dedc4264b02c72841 +TEST= 59 +KEY= 4c3f21c846f759ce2b00761c5dc027442de7958f730e5c355a8135ff9789f15b +CT= 906db58a6c054250ea15bfa28c4a931c145ba7b85aedd04dedc4264b02c72841 +PT= 0d58a1c8d256d0a5e24f4b77d7d35eaf235fc6a348fda45b9364ae2745cdb2c1 +TEST= 60 +KEY= 4167800094a1896bc94f3d6b8a1379eb0eb8532c3bf3f86ec9e59bd8d244439a +CT= 0d58a1c8d256d0a5e24f4b77d7d35eaf235fc6a348fda45b9364ae2745cdb2c1 +PT= 829127acbaa2c43d92d44149a6c27bba1972fbde91a3ed65917da57651b8e4ee +TEST= 61 +KEY= c3f6a7ac2e034d565b9b7c222cd1025117caa8f2aa50150b58983eae83fca774 +CT= 829127acbaa2c43d92d44149a6c27bba1972fbde91a3ed65917da57651b8e4ee +PT= 6437472de7228ae368d2816ef8a0ebb5f2d156b38bbf3fb1d9a96fd92b23b458 +TEST= 62 +KEY= a7c1e081c921c7b53349fd4cd471e9e4e51bfe4121ef2aba81315177a8df132c +CT= 6437472de7228ae368d2816ef8a0ebb5f2d156b38bbf3fb1d9a96fd92b23b458 +PT= 1bad6b2305dcde16bc47fc55d18d75dbc08ee98c96d1b9c6612ee0d5ea088356 +TEST= 63 +KEY= bc6c8ba2ccfd19a38f0e011905fc9c3f259517cdb73e937ce01fb1a242d7907a +CT= 1bad6b2305dcde16bc47fc55d18d75dbc08ee98c96d1b9c6612ee0d5ea088356 +PT= b7a402bdac612cba0ee964b57e049a69713fba567d05d1f76107410e4e752e2a +TEST= 64 +KEY= 0bc8891f609c351981e765ac7bf8065654aaad9bca3b428b8118f0ac0ca2be50 +CT= b7a402bdac612cba0ee964b57e049a69713fba567d05d1f76107410e4e752e2a +PT= 0f052d6c1710f5bb297aeda09ae2c7bd8ebf0120230053ac16d7afb40c11af7f +TEST= 65 +KEY= 04cda473778cc0a2a89d880ce11ac1ebda15acbbe93b112797cf5f1800b3112f +CT= 0f052d6c1710f5bb297aeda09ae2c7bd8ebf0120230053ac16d7afb40c11af7f +PT= 933263c349fc13ac1478c51c3f6cf006c0b335bfeb6fc91de7aaa9ce5e1b8dbc +TEST= 66 +KEY= 97ffc7b03e70d30ebce54d10de7631ed1aa699040254d83a7065f6d65ea89c93 +CT= 933263c349fc13ac1478c51c3f6cf006c0b335bfeb6fc91de7aaa9ce5e1b8dbc +PT= 7f872d189d98a5e7776d78608598b42fffbc334cf36262da6526bbfa0a8d9d26 +TEST= 67 +KEY= e878eaa8a3e876e9cb8835705bee85c2e51aaa48f136bae015434d2c542501b5 +CT= 7f872d189d98a5e7776d78608598b42fffbc334cf36262da6526bbfa0a8d9d26 +PT= e781b4db6897ed7699e94212afdbb2a0009eafaff5e034f30bc02da8c8175f95 +TEST= 68 +KEY= 0ff95e73cb7f9b9f52617762f4353762e58405e704d68e131e8360849c325e20 +CT= e781b4db6897ed7699e94212afdbb2a0009eafaff5e034f30bc02da8c8175f95 +PT= 3c909c745d8adddb8044662b093e00e72ef3431362bbb4071eb4e9534be7b6cf +TEST= 69 +KEY= 3369c20796f54644d2251149fd0b3785cb7746f4666d3a14003789d7d7d5e8ef +CT= 3c909c745d8adddb8044662b093e00e72ef3431362bbb4071eb4e9534be7b6cf +PT= b5d9f9c30066b0892ebb48548a779e440950ce122fca484592adf218696367dc +TEST= 70 +KEY= 86b03bc49693f6cdfc9e591d777ca9c1c22788e649a77251929a7bcfbeb68f33 +CT= b5d9f9c30066b0892ebb48548a779e440950ce122fca484592adf218696367dc +PT= c760ad6f5c87e0a73b7ce10cb132935fa681ed65d71e079859f6160e3a79aa2a +TEST= 71 +KEY= 41d096abca14166ac7e2b811c64e3a9e64a665839eb975c9cb6c6dc184cf2519 +CT= c760ad6f5c87e0a73b7ce10cb132935fa681ed65d71e079859f6160e3a79aa2a +PT= 0c9195bdf62b2e2db60205b106f63d4319a8d06b0e58d3b688cfab9e0cdfeab1 +TEST= 72 +KEY= 4d4103163c3f384771e0bda0c0b807dd7d0eb5e890e1a67f43a3c65f8810cfa8 +CT= 0c9195bdf62b2e2db60205b106f63d4319a8d06b0e58d3b688cfab9e0cdfeab1 +PT= b28a4bf50e05abf9f3653f4bea74608a645697220e4033dea9ae48bb8572956c +TEST= 73 +KEY= ffcb48e3323a93be828582eb2acc6757195822ca9ea195a1ea0d8ee40d625ac4 +CT= b28a4bf50e05abf9f3653f4bea74608a645697220e4033dea9ae48bb8572956c +PT= 678084e87f7cfe35fd5133dd298eda18c97796c1df518765b5bede8b7f8a482b +TEST= 74 +KEY= 984bcc0b4d466d8b7fd4b1360342bd4fd02fb40b41f012c45fb3506f72e812ef +CT= 678084e87f7cfe35fd5133dd298eda18c97796c1df518765b5bede8b7f8a482b +PT= b5348fe0382dd1bb4d68ed1d2589dc82a9384a618f9a3eaf9f486aa89a93ea7e +TEST= 75 +KEY= 2d7f43eb756bbc3032bc5c2b26cb61cd7917fe6ace6a2c6bc0fb3ac7e87bf891 +CT= b5348fe0382dd1bb4d68ed1d2589dc82a9384a618f9a3eaf9f486aa89a93ea7e +PT= ed8109355dfbb89b538cc776fd22e42f893bd051064149c9ced8060011f16899 +TEST= 76 +KEY= c0fe4ade289004ab61309b5ddbe985e2f02c2e3bc82b65a20e233cc7f98a9008 +CT= ed8109355dfbb89b538cc776fd22e42f893bd051064149c9ced8060011f16899 +PT= 95f36d934159dcaf25c7a153532039beb033870efe01199b0cb5bfb48c3bbe4d +TEST= 77 +KEY= 550d274d69c9d80444f73a0e88c9bc5c401fa935362a7c390296837375b12e45 +CT= 95f36d934159dcaf25c7a153532039beb033870efe01199b0cb5bfb48c3bbe4d +PT= 1b3a48d6d942e0822943f64962760bcb2b6e5f6bf0b9f02489e958c2377cdb92 +TEST= 78 +KEY= 4e376f9bb08b38866db4cc47eabfb7976b71f65ec6938c1d8b7fdbb142cdf5d7 +CT= 1b3a48d6d942e0822943f64962760bcb2b6e5f6bf0b9f02489e958c2377cdb92 +PT= 915f3fc87936d4c65297d31dbbafb12c963643cbfa210cd0ed472fa44ff245df +TEST= 79 +KEY= df685053c9bdec403f231f5a511006bbfd47b5953cb280cd6638f4150d3fb008 +CT= 915f3fc87936d4c65297d31dbbafb12c963643cbfa210cd0ed472fa44ff245df +PT= 01ca8c04816a671ed2889205c356e2f87685bb20e85d89b862e199ab59ef1a07 +TEST= 80 +KEY= dea2dc5748d78b5eedab8d5f9246e4438bc20eb5d4ef097504d96dbe54d0aa0f +CT= 01ca8c04816a671ed2889205c356e2f87685bb20e85d89b862e199ab59ef1a07 +PT= bf15f63c5d7483d38c189ac55f893c42ddc73199cf696c75843812ab2bf0689f +TEST= 81 +KEY= 61b72a6b15a3088d61b3179acdcfd80156053f2c1b86650080e17f157f20c290 +CT= bf15f63c5d7483d38c189ac55f893c42ddc73199cf696c75843812ab2bf0689f +PT= 222eb8bec89b4331de57246f2ab1e0d5dc0e88cab97f5c933c8fab7766bc0637 +TEST= 82 +KEY= 439992d5dd384bbcbfe433f5e77e38d48a0bb7e6a2f93993bc6ed462199cc4a7 +CT= 222eb8bec89b4331de57246f2ab1e0d5dc0e88cab97f5c933c8fab7766bc0637 +PT= 0298a8118b4cfdff6ac23f394fd19041f3fa1b627d2c62460e379797c846b548 +TEST= 83 +KEY= 41013ac45674b643d5260ccca8afa89579f1ac84dfd55bd5b25943f5d1da71ef +CT= 0298a8118b4cfdff6ac23f394fd19041f3fa1b627d2c62460e379797c846b548 +PT= 1e398eed54bfc9120c5194d0faa5e96d87cf30a407a484ac0b4ab9960b888ef3 +TEST= 84 +KEY= 5f38b42902cb7f51d977981c520a41f8fe3e9c20d871df79b913fa63da52ff1c +CT= 1e398eed54bfc9120c5194d0faa5e96d87cf30a407a484ac0b4ab9960b888ef3 +PT= c90e61cfc6293ff11aaeb38d16c84fe2724ff1b2d849556cf74edf50d3111792 +TEST= 85 +KEY= 9636d5e6c4e240a0c3d92b9144c20e1a8c716d9200388a154e5d25330943e88e +CT= c90e61cfc6293ff11aaeb38d16c84fe2724ff1b2d849556cf74edf50d3111792 +PT= 664038c981838b7f0185c80ab846ac7b0a558bc647e2e8717591b6bc36f99437 +TEST= 86 +KEY= f076ed2f4561cbdfc25ce39bfc84a2618624e65447da62643bcc938f3fba7cb9 +CT= 664038c981838b7f0185c80ab846ac7b0a558bc647e2e8717591b6bc36f99437 +PT= 35ac730664ffadadd0d3b6edd47eb7d83ec4bbf66725ba568dbd12e0c027442f +TEST= 87 +KEY= c5da9e29219e6672128f557628fa15b9b8e05da220ffd832b671816fff9d3896 +CT= 35ac730664ffadadd0d3b6edd47eb7d83ec4bbf66725ba568dbd12e0c027442f +PT= 6d58754cc4d4b2ea5bd851c9035085b223eabfdcc4edd450c23098dfad4ff3e3 +TEST= 88 +KEY= a882eb65e54ad498495704bf2baa900b9b0ae27ee4120c62744119b052d2cb75 +CT= 6d58754cc4d4b2ea5bd851c9035085b223eabfdcc4edd450c23098dfad4ff3e3 +PT= 82b9e5da0b68d37de1aac0aa3bb06f514e62c3aceb5da907c93845082d2749cb +TEST= 89 +KEY= 2a3b0ebfee2207e5a8fdc415101aff5ad56821d20f4fa565bd795cb87ff582be +CT= 82b9e5da0b68d37de1aac0aa3bb06f514e62c3aceb5da907c93845082d2749cb +PT= a64622e50ae8ac6ade18c6aeed86470ba0e0aa2154f24e3b048b87e90647c4d1 +TEST= 90 +KEY= 8c7d2c5ae4caab8f76e502bbfd9cb85175888bf35bbdeb5eb9f2db5179b2466f +CT= a64622e50ae8ac6ade18c6aeed86470ba0e0aa2154f24e3b048b87e90647c4d1 +PT= e28d47057281c71b702bc9389c59d47f9fbb02556bc94ce12788ce4dddcc2838 +TEST= 91 +KEY= 6ef06b5f964b6c9406cecb8361c56c2eea3389a63074a7bf9e7a151ca47e6e57 +CT= e28d47057281c71b702bc9389c59d47f9fbb02556bc94ce12788ce4dddcc2838 +PT= 9308dd1d3eca586566e535be458082c7265be34daef4ffcbbce54c4f846bfe5e +TEST= 92 +KEY= fdf8b642a88134f1602bfe3d2445eee9cc686aeb9e805874229f595320159009 +CT= 9308dd1d3eca586566e535be458082c7265be34daef4ffcbbce54c4f846bfe5e +PT= ca1bba3e7c2c2e2ad1caf385212ffd5732e35b13a385e6da75b64665c5d12efb +TEST= 93 +KEY= 37e30c7cd4ad1adbb1e10db8056a13befe8b31f83d05beae57291f36e5c4bef2 +CT= ca1bba3e7c2c2e2ad1caf385212ffd5732e35b13a385e6da75b64665c5d12efb +PT= de1254150b1a55c7adb87a68cbd4c7732099919a8bd5f60ef879319ce59b9d90 +TEST= 94 +KEY= e9f15869dfb74f1c1c5977d0cebed4cdde12a062b6d048a0af502eaa005f2362 +CT= de1254150b1a55c7adb87a68cbd4c7732099919a8bd5f60ef879319ce59b9d90 +PT= b30055ca4fe9c81bf0aa1a474d79710eb35608d653fd80b64d23f4a8332a6b2d +TEST= 95 +KEY= 5af10da3905e8707ecf36d9783c7a5c36d44a8b4e52dc816e273da023375484f +CT= b30055ca4fe9c81bf0aa1a474d79710eb35608d653fd80b64d23f4a8332a6b2d +PT= 6c036fbfeb1123eebb4f54669be2156966f481385a0ba172f63d86843d7a72c8 +TEST= 96 +KEY= 36f2621c7b4fa4e957bc39f11825b0aa0bb0298cbf266964144e5c860e0f3a87 +CT= 6c036fbfeb1123eebb4f54669be2156966f481385a0ba172f63d86843d7a72c8 +PT= 3d0903afb432817cba05bbb5b5999cbab86dc1ad2c7901498e9841c1ff7fd29a +TEST= 97 +KEY= 0bfb61b3cf7d2595edb98244adbc2c10b3dde821935f682d9ad61d47f170e81d +CT= 3d0903afb432817cba05bbb5b5999cbab86dc1ad2c7901498e9841c1ff7fd29a +PT= 35247b71de42256ce9af07c057989b0d3cdf92dda70d9d79f9401e9719f244c9 +TEST= 98 +KEY= 3edf1ac2113f00f904168584fa24b71d8f027afc3452f554639603d0e882acd4 +CT= 35247b71de42256ce9af07c057989b0d3cdf92dda70d9d79f9401e9719f244c9 +PT= 82b126586f76ace0f17065a22f64848ff7e0df5ba82853b18b5cdd43ddd7072b +TEST= 99 +KEY= bc6e3c9a7e49ac19f566e026d540339278e2a5a79c7aa6e5e8cade933555abff +CT= 82b126586f76ace0f17065a22f64848ff7e0df5ba82853b18b5cdd43ddd7072b +PT= 0e2bb94b4c1e174092ec18ff9dac240a50ef0183030bf72f064301ec4bb16766 +TEST= 100 +KEY= b24585d13257bb59678af8d948ec1798280da4249f7151caee89df7f7ee4cc99 +CT= 0e2bb94b4c1e174092ec18ff9dac240a50ef0183030bf72f064301ec4bb16766 +PT= da32ef0ef49bf55c3e48b90b7b62e4e9a23cb52d1de4c380744b427d4e7e7bb3 +TEST= 101 +KEY= 68776adfc6cc4e0559c241d2338ef3718a3111098295924a9ac29d02309ab72a +CT= da32ef0ef49bf55c3e48b90b7b62e4e9a23cb52d1de4c380744b427d4e7e7bb3 +PT= ee7bf731d1090320a82d5edcb67608eba7a717ffa3e53ffdf5fe74360693f736 +TEST= 102 +KEY= 860c9dee17c54d25f1ef1f0e85f8fb9a2d9606f62170adb76f3ce9343609401c +CT= ee7bf731d1090320a82d5edcb67608eba7a717ffa3e53ffdf5fe74360693f736 +PT= 99777f18a6c9407981ab8fa03109228f91e578580d9cfd3b5fc1c77ed6b6c906 +TEST= 103 +KEY= 1f7be2f6b10c0d5c704490aeb4f1d915bc737eae2cec508c30fd2e4ae0bf891a +CT= 99777f18a6c9407981ab8fa03109228f91e578580d9cfd3b5fc1c77ed6b6c906 +PT= ef8df50cdcdb18f1701ff5583a5f744a0c4f689927a3772eb150dc7583bf7456 +TEST= 104 +KEY= f0f617fa6dd715ad005b65f68eaead5fb03c16370b4f27a281adf23f6300fd4c +CT= ef8df50cdcdb18f1701ff5583a5f744a0c4f689927a3772eb150dc7583bf7456 +PT= 8c14bad8c9564d09255de12a6d57eb7f1fa648f0ec6c794c1ea1f1262c84692c +TEST= 105 +KEY= 7ce2ad22a48158a4250684dce3f94620af9a5ec7e7235eee9f0c03194f849460 +CT= 8c14bad8c9564d09255de12a6d57eb7f1fa648f0ec6c794c1ea1f1262c84692c +PT= 42de7e93ba81238c71d39807677a0a2935c99cb58c2b36776ec90e7c2c6c3dd2 +TEST= 106 +KEY= 3e3cd3b11e007b2854d51cdb84834c099a53c2726b086899f1c50d6563e8a9b2 +CT= 42de7e93ba81238c71d39807677a0a2935c99cb58c2b36776ec90e7c2c6c3dd2 +PT= 137978493a8a166cede8971cf38bb72b3989fc45537d9cf8af5e8dd0014d534b +TEST= 107 +KEY= 2d45abf8248a6d44b93d8bc77708fb22a3da3e373875f4615e9b80b562a5faf9 +CT= 137978493a8a166cede8971cf38bb72b3989fc45537d9cf8af5e8dd0014d534b +PT= 9a9525d2db6f7448752c3cce7b3cc4e25d7e0536da16c40f42c24c69ee5eb478 +TEST= 108 +KEY= b7d08e2affe5190ccc11b7090c343fc0fea43b01e263306e1c59ccdc8cfb4e81 +CT= 9a9525d2db6f7448752c3cce7b3cc4e25d7e0536da16c40f42c24c69ee5eb478 +PT= 312e53667311dd06b06a67ffd0c7618a161fa436d692f65be4c0e5a1faee7b71 +TEST= 109 +KEY= 86fedd4c8cf4c40a7c7bd0f6dcf35e4ae8bb9f3734f1c635f899297d761535f0 +CT= 312e53667311dd06b06a67ffd0c7618a161fa436d692f65be4c0e5a1faee7b71 +PT= 11b6b4efe67c62d7108115044938507698fbec30a2f29553b0234ec8342e0ce9 +TEST= 110 +KEY= 974869a36a88a6dd6cfac5f295cb0e3c704073079603536648ba67b5423b3919 +CT= 11b6b4efe67c62d7108115044938507698fbec30a2f29553b0234ec8342e0ce9 +PT= e8590aa803e919d68322e855332f71844476ad8b001969266cc92826a1ae1ec1 +TEST= 111 +KEY= 7f11630b6961bf0befd82da7a6e47fb83436de8c961a3a4024734f93e39527d8 +CT= e8590aa803e919d68322e855332f71844476ad8b001969266cc92826a1ae1ec1 +PT= 764d8c3f02a74fb9cc13d8ccdb59cefa0a31801b54dcd3b67c160f7fda6a53b7 +TEST= 112 +KEY= 095cef346bc6f0b223cbf56b7dbdb1423e075e97c2c6e9f6586540ec39ff746f +CT= 764d8c3f02a74fb9cc13d8ccdb59cefa0a31801b54dcd3b67c160f7fda6a53b7 +PT= 5d6deea7520c8d48ef5e292ed5376bf6b56c0f3152e0940644e9722cc1993d00 +TEST= 113 +KEY= 5431019339ca7dfacc95dc45a88adab48b6b51a690267df01c8c32c0f866496f +CT= 5d6deea7520c8d48ef5e292ed5376bf6b56c0f3152e0940644e9722cc1993d00 +PT= 6ef9ead3ae0e3e172d6c11878321b99ce170fc59e0042725f1ca5c361afa9384 +TEST= 114 +KEY= 3ac8eb4097c443ede1f9cdc22bab63286a1badff70225ad5ed466ef6e29cdaeb +CT= 6ef9ead3ae0e3e172d6c11878321b99ce170fc59e0042725f1ca5c361afa9384 +PT= 07b3c197fcbd423949881cc3cfb82ababce51133060b89594370fa6e849ff5c0 +TEST= 115 +KEY= 3d7b2ad76b7901d4a871d101e4134992d6febccc7629d38cae36949866032f2b +CT= 07b3c197fcbd423949881cc3cfb82ababce51133060b89594370fa6e849ff5c0 +PT= 371ceead17ab4aa6d50cbbd9021756e04db28811d0f63951ba411d882601da99 +TEST= 116 +KEY= 0a67c47a7cd24b727d7d6ad8e6041f729b4c34dda6dfeadd147789104002f5b2 +CT= 371ceead17ab4aa6d50cbbd9021756e04db28811d0f63951ba411d882601da99 +PT= 5c3459d68f513adf99fd0a21225e265272685062b3fa1d398e8610a94c93e025 +TEST= 117 +KEY= 56539dacf38371ade48060f9c45a3920e92464bf1525f7e49af199b90c911597 +CT= 5c3459d68f513adf99fd0a21225e265272685062b3fa1d398e8610a94c93e025 +PT= 5f851cdcb465570b0093f140de4b3839182b130caafd60e06b220e342140e881 +TEST= 118 +KEY= 09d6817047e626a6e41391b91a110119f10f77b3bfd89704f1d3978d2dd1fd16 +CT= 5f851cdcb465570b0093f140de4b3839182b130caafd60e06b220e342140e881 +PT= 8a5c849bbdaecacdff1c81c6f8b99bb4d01fb9c0fec59f08df39fe3a62917272 +TEST= 119 +KEY= 838a05ebfa48ec6b1b0f107fe2a89aad2110ce73411d080c2eea69b74f408f64 +CT= 8a5c849bbdaecacdff1c81c6f8b99bb4d01fb9c0fec59f08df39fe3a62917272 +PT= 5b5f8d26c839c21c43622fdb02a2fbc045daefe81fcf0655946052fa12fc955e +TEST= 120 +KEY= d8d588cd32712e77586d3fa4e00a616d64ca219b5ed20e59ba8a3b4d5dbc1a3a +CT= 5b5f8d26c839c21c43622fdb02a2fbc045daefe81fcf0655946052fa12fc955e +PT= e4981cd1232cc29c942af9279cd0f1d2bf042e6760e634d19f6178224c6ae800 +TEST= 121 +KEY= 3c4d941c115decebcc47c6837cda90bfdbce0ffc3e343a8825eb436f11d6f23a +CT= e4981cd1232cc29c942af9279cd0f1d2bf042e6760e634d19f6178224c6ae800 +PT= f17aa0e676a03a34c3abe7f3210dac2f69ba02f8d7daf47c1fb14732d867046a +TEST= 122 +KEY= cd3734fa67fdd6df0fec21705dd73c90b2740d04e9eecef43a5a045dc9b1f650 +CT= f17aa0e676a03a34c3abe7f3210dac2f69ba02f8d7daf47c1fb14732d867046a +PT= aba04e48b59a8ebd8623a816ff64d0470c8660c39be7f5bdc9e4ae1f3ce5784c +TEST= 123 +KEY= 66977ab2d267586289cf8966a2b3ecd7bef26dc772093b49f3beaa42f5548e1c +CT= aba04e48b59a8ebd8623a816ff64d0470c8660c39be7f5bdc9e4ae1f3ce5784c +PT= 7e18e8bbdb2d583ef7d253d0435966129376d02c5b463d58c4cc2aa188b8780f +TEST= 124 +KEY= 188f9209094a005c7e1ddab6e1ea8ac52d84bdeb294f0611377280e37decf613 +CT= 7e18e8bbdb2d583ef7d253d0435966129376d02c5b463d58c4cc2aa188b8780f +PT= 75edceb4efb7e779d3546f46c9b276f21f39c8a7564a90c301ddfd368047d0d9 +TEST= 125 +KEY= 6d625cbde6fde725ad49b5f02858fc3732bd754c7f0596d236af7dd5fdab26ca +CT= 75edceb4efb7e779d3546f46c9b276f21f39c8a7564a90c301ddfd368047d0d9 +PT= 06fe26379781c0c9e542a807821668df7e3504d2afdb3fc3a274ef9ea319383f +TEST= 126 +KEY= 6b9c7a8a717c27ec480b1df7aa4e94e84c88719ed0dea91194db924b5eb21ef5 +CT= 06fe26379781c0c9e542a807821668df7e3504d2afdb3fc3a274ef9ea319383f +PT= 5ccf5fb7963bb3732852a57df50eccd0a673ba5b49dcb99e36c4ab99347056d2 +TEST= 127 +KEY= 3753253de747949f6059b88a5f405838eafbcbc59902108fa21f39d26ac24827 +CT= 5ccf5fb7963bb3732852a57df50eccd0a673ba5b49dcb99e36c4ab99347056d2 +PT= 3675b1e3fff19ad33e57bf626902fdac5894892f2481fbd25dab05291a7a2171 +TEST= 128 +KEY= 012694de18b60e4c5e0e07e83642a594b26f42eabd83eb5dffb43cfb70b86956 +CT= 3675b1e3fff19ad33e57bf626902fdac5894892f2481fbd25dab05291a7a2171 +PT= ca2bd24c3ac26a4f5d3d7d2709ce6963ee5338160a92c809b37af0d4b2d98c54 +TEST= 129 +KEY= cb0d46922274640303337acf3f8cccf75c3c7afcb71123544ccecc2fc261e502 +CT= ca2bd24c3ac26a4f5d3d7d2709ce6963ee5338160a92c809b37af0d4b2d98c54 +PT= d9ed82084041f63dae17fb12540e820336a3119add781ed18848ba3e239bc52b +TEST= 130 +KEY= 12e0c49a6235923ead2481dd6b824ef46a9f6b666a693d85c4867611e1fa2029 +CT= d9ed82084041f63dae17fb12540e820336a3119add781ed18848ba3e239bc52b +PT= bfceb71f80560d8023c13fd91f3c66cf7fd6ed868db3c11fa9fee48d85cc45f6 +TEST= 131 +KEY= ad2e7385e2639fbe8ee5be0474be283b154986e0e7dafc9a6d78929c643665df +CT= bfceb71f80560d8023c13fd91f3c66cf7fd6ed868db3c11fa9fee48d85cc45f6 +PT= 74559da768c3cf37feed190265b918fa1f076a2e17ac83e877883cb2e4f027cb +TEST= 132 +KEY= d97bee228aa050897008a706110730c10a4eeccef0767f721af0ae2e80c64214 +CT= 74559da768c3cf37feed190265b918fa1f076a2e17ac83e877883cb2e4f027cb +PT= aa160b3b8f126782267ad1c6926fc23c4fd9a8cfd0ff6f40560e25f05b4f32e4 +TEST= 133 +KEY= 736de51905b2370b567276c08368f2fd45974401208910324cfe8bdedb8970f0 +CT= aa160b3b8f126782267ad1c6926fc23c4fd9a8cfd0ff6f40560e25f05b4f32e4 +PT= 881531b1f07b016de0d7357a8536a2685dc149ef677bcb9b1fd1a6e0b884762b +TEST= 134 +KEY= fb78d4a8f5c93666b6a543ba065e509518560dee47f2dba9532f2d3e630d06db +CT= 881531b1f07b016de0d7357a8536a2685dc149ef677bcb9b1fd1a6e0b884762b +PT= 0359a774d18da5243810d256eece7915482eac78139d380848fe15cc9077f243 +TEST= 135 +KEY= f82173dc244493428eb591ece89029805078a196546fe3a11bd138f2f37af498 +CT= 0359a774d18da5243810d256eece7915482eac78139d380848fe15cc9077f243 +PT= a70ee1bc63cb6421610526ad51d471331848389f2f4451f619a78d6770b6cb46 +TEST= 136 +KEY= 5f2f9260478ff763efb0b741b94458b3483099097b2bb2570276b59583cc3fde +CT= a70ee1bc63cb6421610526ad51d471331848389f2f4451f619a78d6770b6cb46 +PT= 05f72c43d49cba7ba7606bd9246815d48546b85f0534d6676544e2b2f335bc93 +TEST= 137 +KEY= 5ad8be2393134d1848d0dc989d2c4d67cd7621567e1f64306732572770f9834d +CT= 05f72c43d49cba7ba7606bd9246815d48546b85f0534d6676544e2b2f335bc93 +PT= 88e62cb80dacbd305b551e95fc42a006b9d85e62a200ba316196331f4ee4d518 +TEST= 138 +KEY= d23e929b9ebff0281385c20d616eed6174ae7f34dc1fde0106a464383e1d5655 +CT= 88e62cb80dacbd305b551e95fc42a006b9d85e62a200ba316196331f4ee4d518 +PT= 5b5a84f5cc65fc026a7f4c5f028ab6de1105d6766e93478547a303fa7ecf021f +TEST= 139 +KEY= 8964166e52da0c2a79fa8e5263e45bbf65aba942b28c9984410767c240d2544a +CT= 5b5a84f5cc65fc026a7f4c5f028ab6de1105d6766e93478547a303fa7ecf021f +PT= 39e649d2d6a46cbdb59ba60a75aec46219bdaebca0dd7cc749705059a5211bea +TEST= 140 +KEY= b0825fbc847e6097cc612858164a9fdd7c1607fe1251e5430877379be5f34fa0 +CT= 39e649d2d6a46cbdb59ba60a75aec46219bdaebca0dd7cc749705059a5211bea +PT= d97ea2d3d5fd0817ae467ab4f5cc87b537d5c8a58cdeabba11fed3fad124dad0 +TEST= 141 +KEY= 69fcfd6f51836880622752ece38618684bc3cf5b9e8f4ef91989e46134d79570 +CT= d97ea2d3d5fd0817ae467ab4f5cc87b537d5c8a58cdeabba11fed3fad124dad0 +PT= d08416b78621dd58c3696aa8f6a789e0f483e8804888ab8ddab0e580ca55eec3 +TEST= 142 +KEY= b978ebd8d7a2b5d8a14e384415219188bf4027dbd607e574c33901e1fe827bb3 +CT= d08416b78621dd58c3696aa8f6a789e0f483e8804888ab8ddab0e580ca55eec3 +PT= 77ff061f2a51603c97d94a57175e1d64a080ef7d5946b4ac518d17ce84e5cafd +TEST= 143 +KEY= ce87edc7fdf3d5e436977213027f8cec1fc0c8a68f4151d892b4162f7a67b14e +CT= 77ff061f2a51603c97d94a57175e1d64a080ef7d5946b4ac518d17ce84e5cafd +PT= e8d4c7e401ca5ffbffc41e650d5ef1a90aa326109e0b59fac7997f4febfd6e1e +TEST= 144 +KEY= 26532a23fc398a1fc9536c760f217d451563eeb6114a0822552d6960919adf50 +CT= e8d4c7e401ca5ffbffc41e650d5ef1a90aa326109e0b59fac7997f4febfd6e1e +PT= bffc9597ba1f1afd005ab4fc93a6503ed1905dc4d3c00e8e6ac1d95259583f33 +TEST= 145 +KEY= 99afbfb4462690e2c909d88a9c872d7bc4f3b372c28a06ac3fecb032c8c2e063 +CT= bffc9597ba1f1afd005ab4fc93a6503ed1905dc4d3c00e8e6ac1d95259583f33 +PT= 90432e386c8d3c1484f571f913fcd6d6203909c709644a4f600772353f5cea3a +TEST= 146 +KEY= 09ec918c2aabacf64dfca9738f7bfbade4cabab5cbee4ce35febc207f79e0a59 +CT= 90432e386c8d3c1484f571f913fcd6d6203909c709644a4f600772353f5cea3a +PT= 6a58927514ec40876fc777f7ee98c474ab55a698223d6e42a24f45e12f2c024c +TEST= 147 +KEY= 63b403f93e47ec71223bde8461e33fd94f9f1c2de9d322a1fda487e6d8b20815 +CT= 6a58927514ec40876fc777f7ee98c474ab55a698223d6e42a24f45e12f2c024c +PT= 97c0257abbb4a771c45f2d89452feea3aed2326d993f686102a7d2e5003ab863 +TEST= 148 +KEY= f474268385f34b00e664f30d24ccd17ae14d2e4070ec4ac0ff035503d888b076 +CT= 97c0257abbb4a771c45f2d89452feea3aed2326d993f686102a7d2e5003ab863 +PT= 9d5f08ff2ac6444be4864e689ddcd1d9119ed1a2136dd9c6449a90f0c7b58d03 +TEST= 149 +KEY= 692b2e7caf350f4b02e2bd65b91000a3f0d3ffe263819306bb99c5f31f3d3d75 +CT= 9d5f08ff2ac6444be4864e689ddcd1d9119ed1a2136dd9c6449a90f0c7b58d03 +PT= 1bdeba41a0ac722f30408230e18ab3a78332fcee644ed75bce677dc26130908c +TEST= 150 +KEY= 72f5943d0f997d6432a23f55589ab30473e1030c07cf445d75feb8317e0dadf9 +CT= 1bdeba41a0ac722f30408230e18ab3a78332fcee644ed75bce677dc26130908c +PT= 00a0593ee424dcd3f9aacaf225d524ede3f662a7098e65152d59ebddf20f659c +TEST= 151 +KEY= 7255cd03ebbda1b7cb08f5a77d4f97e9901761ab0e41214858a753ec8c02c865 +CT= 00a0593ee424dcd3f9aacaf225d524ede3f662a7098e65152d59ebddf20f659c +PT= 18c582f4c0cd8986745936ee215afdc7b3fab108240a2c03c690254d705ae877 +TEST= 152 +KEY= 6a904ff72b702831bf51c3495c156a2e23edd0a32a4b0d4b9e3776a1fc582012 +CT= 18c582f4c0cd8986745936ee215afdc7b3fab108240a2c03c690254d705ae877 +PT= 5200a9c0d3887f8ffd88f729705e1b168cb7f163bb9a4a20b389100af178bc88 +TEST= 153 +KEY= 3890e637f8f857be42d934602c4b7138af5a21c091d1476b2dbe66ab0d209c9a +CT= 5200a9c0d3887f8ffd88f729705e1b168cb7f163bb9a4a20b389100af178bc88 +PT= 62118fd8a25891f2fb826c281aae29ba579ed15e31dc24f0eb13047a89d3ab0c +TEST= 154 +KEY= 5a8169ef5aa0c64cb95b584836e55882f8c4f09ea00d639bc6ad62d184f33796 +CT= 62118fd8a25891f2fb826c281aae29ba579ed15e31dc24f0eb13047a89d3ab0c +PT= 1f9fdfa43908c766f631a9e8a948b57a86336b48f310f0d17df5952f876329c9 +TEST= 155 +KEY= 451eb64b63a8012a4f6af1a09fadedf87ef79bd6531d934abb58f7fe03901e5f +CT= 1f9fdfa43908c766f631a9e8a948b57a86336b48f310f0d17df5952f876329c9 +PT= 9009b40c982f4c696976da01c42e4e1c26e9cb689d7b6ec0f32e9eb2c22a0155 +TEST= 156 +KEY= d5170247fb874d43261c2ba15b83a3e4581e50bece66fd8a4876694cc1ba1f0a +CT= 9009b40c982f4c696976da01c42e4e1c26e9cb689d7b6ec0f32e9eb2c22a0155 +PT= 335b3aaf2da526a75a6a65ad6427b38ef1a8cccd63e1d50ca657d2c3a6b80d9b +TEST= 157 +KEY= e64c38e8d6226be47c764e0c3fa4106aa9b69c73ad872886ee21bb8f67021291 +CT= 335b3aaf2da526a75a6a65ad6427b38ef1a8cccd63e1d50ca657d2c3a6b80d9b +PT= f6433b3f7425add8cfa7475d1a7704d52e3d298db984a48107699668f4923986 +TEST= 158 +KEY= 100f03d7a207c63cb3d1095125d314bf878bb5fe14038c07e9482de793902b17 +CT= f6433b3f7425add8cfa7475d1a7704d52e3d298db984a48107699668f4923986 +PT= 6c0822e9f3fa6045ea5ee648994d577cf327630fbd110ff3289010254f8360e8 +TEST= 159 +KEY= 7c07213e51fda679598fef19bc9e43c374acd6f1a91283f4c1d83dc2dc134bff +CT= 6c0822e9f3fa6045ea5ee648994d577cf327630fbd110ff3289010254f8360e8 +PT= 8c4b2b48e1373647663a538dd53b2811ead35b5829336a0df15e6d11e8af81f4 +TEST= 160 +KEY= f04c0a76b0ca903e3fb5bc9469a56bd29e7f8da98021e9f9308650d334bcca0b +CT= 8c4b2b48e1373647663a538dd53b2811ead35b5829336a0df15e6d11e8af81f4 +PT= 8c2007a002e0ff20f01c78e3604fd5a2bdd5f55dfd06b8af6b8f34d9d9849ce2 +TEST= 161 +KEY= 7c6c0dd6b22a6f1ecfa9c47709eabe7023aa78f47d2751565b09640aed3856e9 +CT= 8c2007a002e0ff20f01c78e3604fd5a2bdd5f55dfd06b8af6b8f34d9d9849ce2 +PT= 135f40db08b7560418c615d4fda22f44a98220afffb47c9ea0f8fcd167b053bf +TEST= 162 +KEY= 6f334d0dba9d391ad76fd1a3f44891348a28585b82932dc8fbf198db8a880556 +CT= 135f40db08b7560418c615d4fda22f44a98220afffb47c9ea0f8fcd167b053bf +PT= d74813d8b1f8884be803bb0d4befeab06e4e5022cee3b4a6371fe2e737c1874c +TEST= 163 +KEY= b87b5ed50b65b1513f6c6aaebfa77b84e46608794c70996eccee7a3cbd49821a +CT= d74813d8b1f8884be803bb0d4befeab06e4e5022cee3b4a6371fe2e737c1874c +PT= 1215b5856004c9d559b98df8345fc3d56ce81ed3d8a5f5e1beeaf9fd07e2e1e4 +TEST= 164 +KEY= aa6eeb506b61788466d5e7568bf8b851888e16aa94d56c8f720483c1baab63fe +CT= 1215b5856004c9d559b98df8345fc3d56ce81ed3d8a5f5e1beeaf9fd07e2e1e4 +PT= 911c4b5e147e21c7026c4300a60d3148ff7d82a016a73f4288747060a82b4f51 +TEST= 165 +KEY= 3b72a00e7f1f594364b9a4562df5891977f3940a827253cdfa70f3a112802caf +CT= 911c4b5e147e21c7026c4300a60d3148ff7d82a016a73f4288747060a82b4f51 +PT= f7e3b7e3e79233f8963edcb9df824ac176e164ee046d14efd9e02fd27d1f79cd +TEST= 166 +KEY= cc9117ed988d6abbf28778eff277c3d80112f0e4861f47222390dc736f9f5562 +CT= f7e3b7e3e79233f8963edcb9df824ac176e164ee046d14efd9e02fd27d1f79cd +PT= 1abe2a654c20c981d6189b7e85502d23ba33201be9b62233010e6598eb811eae +TEST= 167 +KEY= d62f3d88d4ada33a249fe3917727eefbbb21d0ff6fa96511229eb9eb841e4bcc +CT= 1abe2a654c20c981d6189b7e85502d23ba33201be9b62233010e6598eb811eae +PT= e1306af01acbbd3b8490e0ba50c96089b995be317f68dcc8369b905df9fad190 +TEST= 168 +KEY= 371f5778ce661e01a00f032b27ee8e7202b46ece10c1b9d9140529b67de49a5c +CT= e1306af01acbbd3b8490e0ba50c96089b995be317f68dcc8369b905df9fad190 +PT= fea14d7aa851ba627f36f9d9f18ab404ad0bdfedfecda93dc9f4e0b5edab768b +TEST= 169 +KEY= c9be1a026637a463df39faf2d6643a76afbfb123ee0c10e4ddf1c903904fecd7 +CT= fea14d7aa851ba627f36f9d9f18ab404ad0bdfedfecda93dc9f4e0b5edab768b +PT= 3d74b74b2d3049197d2d2f7b636ef80257566f43cc88c723e13600ee227dce6f +TEST= 170 +KEY= f4caad494b07ed7aa214d589b50ac274f8e9de602284d7c73cc7c9edb23222b8 +CT= 3d74b74b2d3049197d2d2f7b636ef80257566f43cc88c723e13600ee227dce6f +PT= 911a846e231807437702f0e1726619dd49d829c8c8ec06f9787b866335590ed5 +TEST= 171 +KEY= 65d02927681fea39d5162568c76cdba9b131f7a8ea68d13e44bc4f8e876b2c6d +CT= 911a846e231807437702f0e1726619dd49d829c8c8ec06f9787b866335590ed5 +PT= 8abff7338023e6c5771171aea35a20889a170cd6938a297d114087280f1ec4a0 +TEST= 172 +KEY= ef6fde14e83c0cfca20754c66436fb212b26fb7e79e2f84355fcc8a68875e8cd +CT= 8abff7338023e6c5771171aea35a20889a170cd6938a297d114087280f1ec4a0 +PT= 86d4c6794f9bfcd880ceb50182cabb5e2354254751778ffcce30796846f6ca6a +TEST= 173 +KEY= 69bb186da7a7f02422c9e1c7e6fc407f0872de39289577bf9bccb1cece8322a7 +CT= 86d4c6794f9bfcd880ceb50182cabb5e2354254751778ffcce30796846f6ca6a +PT= 651a696a6d642a2cdcc8498be394a90a184be7f8464b8a65b0ac672982074e2b +TEST= 174 +KEY= 0ca17107cac3da08fe01a84c0568e975103939c16edefdda2b60d6e74c846c8c +CT= 651a696a6d642a2cdcc8498be394a90a184be7f8464b8a65b0ac672982074e2b +PT= cc72a47ead84b3a29e210fefdec53c11c6970e5dc394eb27c69b82ac3cf463bd +TEST= 175 +KEY= c0d3d579674769aa6020a7a3dbadd564d6ae379cad4a16fdedfb544b70700f31 +CT= cc72a47ead84b3a29e210fefdec53c11c6970e5dc394eb27c69b82ac3cf463bd +PT= d78df0b9cb6b884de09d8ca63c5dee07a0c97ad4dada3bc66e8edcc393da2288 +TEST= 176 +KEY= 175e25c0ac2ce1e780bd2b05e7f03b6376674d4877902d3b83758888e3aa2db9 +CT= d78df0b9cb6b884de09d8ca63c5dee07a0c97ad4dada3bc66e8edcc393da2288 +PT= 2fb2bea6497e8bd1e2915f5ca98042f806003cae4b31f6ca2746f74bd353434c +TEST= 177 +KEY= 38ec9b66e5526a36622c74594e70799b706771e63ca1dbf1a4337fc330f96ef5 +CT= 2fb2bea6497e8bd1e2915f5ca98042f806003cae4b31f6ca2746f74bd353434c +PT= d0dd0190e8523bf555443a733670b698b57173083d80dd7e38f836ad6006e0fd +TEST= 178 +KEY= e8319af60d0051c337684e2a7800cf03c51602ee0121068f9ccb496e50ff8e08 +CT= d0dd0190e8523bf555443a733670b698b57173083d80dd7e38f836ad6006e0fd +PT= 42103ff4ea1029cddc9c42d8849adaa6b7a6d2bbb2c25b304a50eea559107bf4 +TEST= 179 +KEY= aa21a502e710780eebf40cf2fc9a15a572b0d055b3e35dbfd69ba7cb09eff5fc +CT= 42103ff4ea1029cddc9c42d8849adaa6b7a6d2bbb2c25b304a50eea559107bf4 +PT= 7a49a163eaade1666d4b597253a1a42dd4aaf011fd7c65737eadcd2af58c504a +TEST= 180 +KEY= d06804610dbd996886bf5580af3bb188a61a20444e9f38cca8366ae1fc63a5b6 +CT= 7a49a163eaade1666d4b597253a1a42dd4aaf011fd7c65737eadcd2af58c504a +PT= 38ba1b8769e0cec0342433de91c3e892d8984f50fa8e3eb349736d65a20c9cf1 +TEST= 181 +KEY= e8d21fe6645d57a8b29b665e3ef8591a7e826f14b411067fe14507845e6f3947 +CT= 38ba1b8769e0cec0342433de91c3e892d8984f50fa8e3eb349736d65a20c9cf1 +PT= f3e682edfcfc0bee287c96ca128941ef9556237085c44be37aef0676a8e1a67e +TEST= 182 +KEY= 1b349d0b98a15c469ae7f0942c7118f5ebd44c6431d54d9c9baa01f2f68e9f39 +CT= f3e682edfcfc0bee287c96ca128941ef9556237085c44be37aef0676a8e1a67e +PT= 369674c622c2899bebe3e6374172d38efc5c265f646b3e3e5d2594063c7bcd91 +TEST= 183 +KEY= 2da2e9cdba63d5dd710416a36d03cb7b17886a3b55be73a2c68f95f4caf552a8 +CT= 369674c622c2899bebe3e6374172d38efc5c265f646b3e3e5d2594063c7bcd91 +PT= 6bec2fe18e39c733a534abc292bda29c96d729b380aae747f55ece5374dad410 +TEST= 184 +KEY= 464ec62c345a12eed430bd61ffbe69e7815f4388d51494e533d15ba7be2f86b8 +CT= 6bec2fe18e39c733a534abc292bda29c96d729b380aae747f55ece5374dad410 +PT= 8a6f60aecde0e121e985dc77a2d9977df96010cb7b569b30cd382e3896b3a4f4 +TEST= 185 +KEY= cc21a682f9baf3cf3db561165d67fe9a783f5343ae420fd5fee9759f289c224c +CT= 8a6f60aecde0e121e985dc77a2d9977df96010cb7b569b30cd382e3896b3a4f4 +PT= 343af4f7f6ead93d4f02cf5b136ba46559ec80ceeb96610b89116f1217ed587d +TEST= 186 +KEY= f81b52750f502af272b7ae4d4e0c5aff21d3d38d45d46ede77f81a8d3f717a31 +CT= 343af4f7f6ead93d4f02cf5b136ba46559ec80ceeb96610b89116f1217ed587d +PT= 541b87d816332f0e6056ca384d612bb45226649c95afdf1cd5a3e2830435dbde +TEST= 187 +KEY= ac00d5ad196305fc12e16475036d714b73f5b711d07bb1c2a25bf80e3b44a1ef +CT= 541b87d816332f0e6056ca384d612bb45226649c95afdf1cd5a3e2830435dbde +PT= 023863f6dea3d91aca646a06d5b877fd607be80d8e64b002afa9c60e98f6b93b +TEST= 188 +KEY= ae38b65bc7c0dce6d8850e73d6d506b6138e5f1c5e1f01c00df23e00a3b218d4 +CT= 023863f6dea3d91aca646a06d5b877fd607be80d8e64b002afa9c60e98f6b93b +PT= 61207ebd214759455755c3babd88b873fb9b0ad8dc0e0f0e4c22a3158baebf2a +TEST= 189 +KEY= cf18c8e6e68785a38fd0cdc96b5dbec5e81555c482110ece41d09d15281ca7fe +CT= 61207ebd214759455755c3babd88b873fb9b0ad8dc0e0f0e4c22a3158baebf2a +PT= 98d9c9809b3dc6252455b04d9d4892a2bd4026e16a58c589de0296a18daa9a2e +TEST= 190 +KEY= 57c101667dba4386ab857d84f6152c6755557325e849cb479fd20bb4a5b63dd0 +CT= 98d9c9809b3dc6252455b04d9d4892a2bd4026e16a58c589de0296a18daa9a2e +PT= 99071ba3993aa2a31b590f4f3224477ed554fc80bf73f0fa825144df932436bd +TEST= 191 +KEY= cec61ac5e480e125b0dc72cbc4316b1980018fa5573a3bbd1d834f6b36920b6d +CT= 99071ba3993aa2a31b590f4f3224477ed554fc80bf73f0fa825144df932436bd +PT= 37513fe74d0063f36f21dd173e7f5a1d0de5cfdda0d5987476875f49b974653f +TEST= 192 +KEY= f9972522a98082d6dffdafdcfa4e31048de44078f7efa3c96b0410228fe66e52 +CT= 37513fe74d0063f36f21dd173e7f5a1d0de5cfdda0d5987476875f49b974653f +PT= f09b6df93ff43e817709f3f98a2fa346bde38591c7ef2a5ab92c36bc529034a2 +TEST= 193 +KEY= 090c48db9674bc57a8f45c25706192423007c5e930008993d228269edd765af0 +CT= f09b6df93ff43e817709f3f98a2fa346bde38591c7ef2a5ab92c36bc529034a2 +PT= 56164c74e03b248960d2d9709fe69eb518ff7fce7fa21834ca15dcd722f841c3 +TEST= 194 +KEY= 5f1a04af764f98dec8268555ef870cf728f8ba274fa291a7183dfa49ff8e1b33 +CT= 56164c74e03b248960d2d9709fe69eb518ff7fce7fa21834ca15dcd722f841c3 +PT= 06c93264c8abc006ebfa1e9872644c1b1fdb4c71a6c2fd761ea88fc94119053a +TEST= 195 +KEY= 59d336cbbee458d823dc9bcd9de340ec3723f656e9606cd106957580be971e09 +CT= 06c93264c8abc006ebfa1e9872644c1b1fdb4c71a6c2fd761ea88fc94119053a +PT= 49a2bec8f92491b43aeafed98f646533554ff01bb2b9a87f0c41ecba4e3498db +TEST= 196 +KEY= 1071880347c0c96c19366514128725df626c064d5bd9c4ae0ad4993af0a386d2 +CT= 49a2bec8f92491b43aeafed98f646533554ff01bb2b9a87f0c41ecba4e3498db +PT= 2df7d37ec8df509197161312cc54081380f8a07746c92c93d04f346cf5a17d07 +TEST= 197 +KEY= 3d865b7d8f1f99fd8e207606ded32dcce294a63a1d10e83dda9bad560502fbd5 +CT= 2df7d37ec8df509197161312cc54081380f8a07746c92c93d04f346cf5a17d07 +PT= b4f8b186ed0ba54c8c0603aad3dba5a6700a050a4357d5b098dbc4c07fee6880 +TEST= 198 +KEY= 897eeafb62143cb1022675ac0d08886a929ea3305e473d8d424069967aec9355 +CT= b4f8b186ed0ba54c8c0603aad3dba5a6700a050a4357d5b098dbc4c07fee6880 +PT= 43d7d356cbcd1529e217757433c18e684c65e77586bac6c0567727f30088de15 +TEST= 199 +KEY= caa939ada9d92998e03100d83ec90602defb4445d8fdfb4d14374e657a644d40 +CT= 43d7d356cbcd1529e217757433c18e684c65e77586bac6c0567727f30088de15 +PT= 9b11c1d503bcfd280cfeaeed5b4016c37ce49a495d1b5110414d5148efce254b +TEST= 200 +KEY= 51b8f878aa65d4b0eccfae35658910c1a21fde0c85e6aa5d557a1f2d95aa680b +CT= 9b11c1d503bcfd280cfeaeed5b4016c37ce49a495d1b5110414d5148efce254b +PT= 009f7b92c667743b400a2f313759e959bd00461b5a0c424ea7806f161bd37f47 +TEST= 201 +KEY= 512783ea6c02a08bacc5810452d0f9981f1f9817dfeae813f2fa703b8e79174c +CT= 009f7b92c667743b400a2f313759e959bd00461b5a0c424ea7806f161bd37f47 +PT= c58f2f5860fc227224728566c4909f18814b1b0b16d4b7ff8e254e78a2b241a8 +TEST= 202 +KEY= 94a8acb20cfe82f988b70462964066809e54831cc93e5fec7cdf3e432ccb56e4 +CT= c58f2f5860fc227224728566c4909f18814b1b0b16d4b7ff8e254e78a2b241a8 +PT= 30b2f11093d37806aab66e6843b7317109dbc3128241eb9d73096256b4f44675 +TEST= 203 +KEY= a41a5da29f2dfaff22016a0ad5f757f1978f400e4b7fb4710fd65c15983f1091 +CT= 30b2f11093d37806aab66e6843b7317109dbc3128241eb9d73096256b4f44675 +PT= 22318e2e4324f3a2fe842bef7ce439f0748565555774b1043ac82221f47a68e2 +TEST= 204 +KEY= 862bd38cdc09095ddc8541e5a9136e01e30a255b1c0b0575351e7e346c457873 +CT= 22318e2e4324f3a2fe842bef7ce439f0748565555774b1043ac82221f47a68e2 +PT= 341e371bbdb586e4c4eff621a7ebdac6f8775f6833808d1ee932216e3271a335 +TEST= 205 +KEY= b235e49761bc8fb9186ab7c40ef8b4c71b7d7a332f8b886bdc2c5f5a5e34db46 +CT= 341e371bbdb586e4c4eff621a7ebdac6f8775f6833808d1ee932216e3271a335 +PT= 3da59e3d4f1ad24959095a1c0256ee0ce3cb28471b8f4ae8175ceccb56c66b78 +TEST= 206 +KEY= 8f907aaa2ea65df04163edd80cae5acbf8b652743404c283cb70b39108f2b03e +CT= 3da59e3d4f1ad24959095a1c0256ee0ce3cb28471b8f4ae8175ceccb56c66b78 +PT= 75aec5f633d3361db60c9fd3c7907ca9f6d991a77fa67b153009f83fd69e5953 +TEST= 207 +KEY= fa3ebf5c1d756bedf76f720bcb3e26620e6fc3d34ba2b996fb794baede6ce96d +CT= 75aec5f633d3361db60c9fd3c7907ca9f6d991a77fa67b153009f83fd69e5953 +PT= 279c2cae69c9d8e7a5b8d560929028d7613c7ad6eb34cc33f6487d6a4bd9a00f +TEST= 208 +KEY= dda293f274bcb30a52d7a76b59ae0eb56f53b905a09675a50d3136c495b54962 +CT= 279c2cae69c9d8e7a5b8d560929028d7613c7ad6eb34cc33f6487d6a4bd9a00f +PT= e65b0cf34493ec5afe2c66791fcfadbb61fca6129b264484431dea05295f8dff +TEST= 209 +KEY= 3bf99f01302f5f50acfbc1124661a30e0eaf1f173bb031214e2cdcc1bceac49d +CT= e65b0cf34493ec5afe2c66791fcfadbb61fca6129b264484431dea05295f8dff +PT= 16df0c933caad9493d36c7b2ef42a0edbb6e995ecb62fc57ef66f97d24cca9c9 +TEST= 210 +KEY= 2d2693920c85861991cd06a0a92303e3b5c18649f0d2cd76a14a25bc98266d54 +CT= 16df0c933caad9493d36c7b2ef42a0edbb6e995ecb62fc57ef66f97d24cca9c9 +PT= 4b13da4a0e40d0b9f9838d3cc806c4fd99c82f13540e72b84d76bce323efdb77 +TEST= 211 +KEY= 663549d802c556a0684e8b9c6125c71e2c09a95aa4dcbfceec3c995fbbc9b623 +CT= 4b13da4a0e40d0b9f9838d3cc806c4fd99c82f13540e72b84d76bce323efdb77 +PT= 68b6a95da96c3997ac3b1596c30d420645c7e07725bbb07b5d1e2dad64b6a9c3 +TEST= 212 +KEY= 0e83e085aba96f37c4759e0aa228851869ce492d81670fb5b122b4f2df7f1fe0 +CT= 68b6a95da96c3997ac3b1596c30d420645c7e07725bbb07b5d1e2dad64b6a9c3 +PT= bac40bc79f9eba464d8d2b15c766de388c57fa47b3e8eeff0e84242cd8c6b48f +TEST= 213 +KEY= b447eb423437d57189f8b51f654e5b20e599b36a328fe14abfa690de07b9ab6f +CT= bac40bc79f9eba464d8d2b15c766de388c57fa47b3e8eeff0e84242cd8c6b48f +PT= 541fc85d73bd2e9b9c427ab93773c4be7a7cf6d899db8cc1f839349eb5e4bd92 +TEST= 214 +KEY= e058231f478afbea15bacfa6523d9f9e9fe545b2ab546d8b479fa440b25d16fd +CT= 541fc85d73bd2e9b9c427ab93773c4be7a7cf6d899db8cc1f839349eb5e4bd92 +PT= cc31b2dcb6b39ac90775af940b15e8d9b18d652704c6268c80ef169448c610e4 +TEST= 215 +KEY= 2c6991c3f139612312cf6032592877472e682095af924b07c770b2d4fa9b0619 +CT= cc31b2dcb6b39ac90775af940b15e8d9b18d652704c6268c80ef169448c610e4 +PT= 54a19fd7f30e846d1333345e460e652f798626d8c55cd460d927ae878dd1c7d1 +TEST= 216 +KEY= 78c80e140237e54e01fc546c1f26126857ee064d6ace9f671e571c53774ac1c8 +CT= 54a19fd7f30e846d1333345e460e652f798626d8c55cd460d927ae878dd1c7d1 +PT= 593684eb730d917e0407ab1dbcd5a04bf3a3762cf1bb8db525ff1232622864b0 +TEST= 217 +KEY= 21fe8aff713a743005fbff71a3f3b223a44d70619b7512d23ba80e611562a578 +CT= 593684eb730d917e0407ab1dbcd5a04bf3a3762cf1bb8db525ff1232622864b0 +PT= 30705606b7f0a92f85d3885d3e3bbb85cc929fc3aca4175f608c9e352d15008e +TEST= 218 +KEY= 118edcf9c6cadd1f8028772c9dc809a668dfefa237d1058d5b2490543877a5f6 +CT= 30705606b7f0a92f85d3885d3e3bbb85cc929fc3aca4175f608c9e352d15008e +PT= 698b6801f49e57a68b759d51070d58fbba8af45044877157e24322f289d8f5e1 +TEST= 219 +KEY= 7805b4f832548ab90b5dea7d9ac5515dd2551bf2735674dab967b2a6b1af5017 +CT= 698b6801f49e57a68b759d51070d58fbba8af45044877157e24322f289d8f5e1 +PT= 23ca0905624ae327f90817da521a3fca657527394cb19b1ebf157f842556c112 +TEST= 220 +KEY= 5bcfbdfd501e699ef255fda7c8df6e97b7203ccb3fe7efc40672cd2294f99105 +CT= 23ca0905624ae327f90817da521a3fca657527394cb19b1ebf157f842556c112 +PT= 7a21e7d3985c27c6ca30e06fdf23a1b5eb9e9cfd70bfedcd8a2b5566dd034c04 +TEST= 221 +KEY= 21ee5a2ec8424e5838651dc817fccf225cbea0364f5802098c59984449fadd01 +CT= 7a21e7d3985c27c6ca30e06fdf23a1b5eb9e9cfd70bfedcd8a2b5566dd034c04 +PT= fbdb5f366fdcbb334eabca9065a5a913f9ca21330993cf2577e7dd1effa1e020 +TEST= 222 +KEY= da350518a79ef56b76ced75872596631a574810546cbcd2cfbbe455ab65b3d21 +CT= fbdb5f366fdcbb334eabca9065a5a913f9ca21330993cf2577e7dd1effa1e020 +PT= dbf27c5d617d472d8f4c9d428ad819c7b1ddcdbb93487024b3e7249bbb7a3bc9 +TEST= 223 +KEY= 01c77945c6e3b246f9824a1af8817ff614a94cbed583bd08485961c10d2106e8 +CT= dbf27c5d617d472d8f4c9d428ad819c7b1ddcdbb93487024b3e7249bbb7a3bc9 +PT= 20c9ad0968af47546130a822cf5cdcb57b890ce915cd423b52657a165fd866f2 +TEST= 224 +KEY= 210ed44cae4cf51298b2e23837dda3436f204057c04eff331a3c1bd752f9601a +CT= 20c9ad0968af47546130a822cf5cdcb57b890ce915cd423b52657a165fd866f2 +PT= 33306cd81c1aa9334ade180bff93b8975fa6b631869d07101370bcb5fa521a40 +TEST= 225 +KEY= 123eb894b2565c21d26cfa33c84e1bd43086f66646d3f823094ca762a8ab7a5a +CT= 33306cd81c1aa9334ade180bff93b8975fa6b631869d07101370bcb5fa521a40 +PT= 811a2729ec0bcf74f3ef0b5b6909fa99510541c510eaf126c1f585f6c0e3a8bf +TEST= 226 +KEY= 93249fbd5e5d93552183f168a147e14d6183b7a356390905c8b922946848d2e5 +CT= 811a2729ec0bcf74f3ef0b5b6909fa99510541c510eaf126c1f585f6c0e3a8bf +PT= 45dfb68578ed2a6f9ef6f63ca89e66f9521dbc0846ba9cb3040f13de98995a20 +TEST= 227 +KEY= d6fb293826b0b93abf75075409d987b4339e0bab108395b6ccb6314af0d188c5 +CT= 45dfb68578ed2a6f9ef6f63ca89e66f9521dbc0846ba9cb3040f13de98995a20 +PT= eb809694c32c70dfff6a83ac9dbc855330c3ccc98b9cec6391559a39ea070d59 +TEST= 228 +KEY= 3d7bbface59cc9e5401f84f8946502e7035dc7629b1f79d55de3ab731ad6859c +CT= eb809694c32c70dfff6a83ac9dbc855330c3ccc98b9cec6391559a39ea070d59 +PT= 2219c91feac42002eb70dbb1a8dfea8e5ab1555c72369ef5cbdcf846f272906a +TEST= 229 +KEY= 1f6276b30f58e9e7ab6f5f493cbae86959ec923ee929e720963f5335e8a415f6 +CT= 2219c91feac42002eb70dbb1a8dfea8e5ab1555c72369ef5cbdcf846f272906a +PT= ce272278361b3da13bb942ba61e573342ccf14a51d9d90b87409ee9fc117b268 +TEST= 230 +KEY= d14554cb3943d44690d61df35d5f9b5d7523869bf4b47798e236bdaa29b3a79e +CT= ce272278361b3da13bb942ba61e573342ccf14a51d9d90b87409ee9fc117b268 +PT= 1fc3d86b27362a3e2daa672cbd5dc3437019e157e366c0fb3c744e7273b2236b +TEST= 231 +KEY= ce868ca01e75fe78bd7c7adfe002581e053a67cc17d2b763de42f3d85a0184f5 +CT= 1fc3d86b27362a3e2daa672cbd5dc3437019e157e366c0fb3c744e7273b2236b +PT= f2834e08dec3d56a0cfee412843f98ea13e7e414ebcc2d20f6d7dfd0f718e4d0 +TEST= 232 +KEY= 3c05c2a8c0b62b12b1829ecd643dc0f416dd83d8fc1e9a4328952c08ad196025 +CT= f2834e08dec3d56a0cfee412843f98ea13e7e414ebcc2d20f6d7dfd0f718e4d0 +PT= 2fe3442539729eb176503064694e2a314001035e702ebd3ad56cd542536f18ec +TEST= 233 +KEY= 13e6868df9c4b5a3c7d2aea90d73eac556dc80868c302779fdf9f94afe7678c9 +CT= 2fe3442539729eb176503064694e2a314001035e702ebd3ad56cd542536f18ec +PT= c862d67271f54197febda183b9fd9f12027193f34e76ea4eaf1adb7d2dec64c7 +TEST= 234 +KEY= db8450ff8831f434396f0f2ab48e75d754ad1375c246cd3752e32237d39a1c0e +CT= c862d67271f54197febda183b9fd9f12027193f34e76ea4eaf1adb7d2dec64c7 +PT= dbbc52c2306e5c49bdd6ce6ae95c6854e59cf048ac6f5be0002c8a6219b3ada8 +TEST= 235 +KEY= 0038023db85fa87d84b9c1405dd21d83b131e33d6e2996d752cfa855ca29b1a6 +CT= dbbc52c2306e5c49bdd6ce6ae95c6854e59cf048ac6f5be0002c8a6219b3ada8 +PT= f5093777925ce8229918c148171f5860fbc34f422377eb219e0212df38f6c549 +TEST= 236 +KEY= f531354a2a03405f1da100084acd45e34af2ac7f4d5e7df6cccdba8af2df74ef +CT= f5093777925ce8229918c148171f5860fbc34f422377eb219e0212df38f6c549 +PT= abdc962f7afacf6d5e65911be9481a2b49610ee4e4d8d9a51cf7f576043b1b77 +TEST= 237 +KEY= 5eeda36550f98f3243c49113a3855fc80393a29ba986a453d03a4ffcf6e46f98 +CT= abdc962f7afacf6d5e65911be9481a2b49610ee4e4d8d9a51cf7f576043b1b77 +PT= 90f32d059e4ec1a5cffb43ddb30d23075381fe100061cfed7bf50e22614fc0b8 +TEST= 238 +KEY= ce1e8e60ceb74e978c3fd2ce10887ccf50125c8ba9e76bbeabcf41de97abaf20 +CT= 90f32d059e4ec1a5cffb43ddb30d23075381fe100061cfed7bf50e22614fc0b8 +PT= 0c9de87d6c00b57e60b92bcd2d703633a0763f2a5631cf1a8f2cae55f115572b +TEST= 239 +KEY= c283661da2b7fbe9ec86f9033df84afcf06463a1ffd6a4a424e3ef8b66bef80b +CT= 0c9de87d6c00b57e60b92bcd2d703633a0763f2a5631cf1a8f2cae55f115572b +PT= b8b6caaa7b1bce9163d0842bf925b54babbb74da64fb9800162ca53a111469f2 +TEST= 240 +KEY= 7a35acb7d9ac35788f567d28c4ddffb75bdf177b9b2d3ca432cf4ab177aa91f9 +CT= b8b6caaa7b1bce9163d0842bf925b54babbb74da64fb9800162ca53a111469f2 +PT= dca7ee918053053d5c1bd2791ca8df5a4737091d5eaa452c772a264dafb9bfdf +TEST= 241 +KEY= a692422659ff3045d34daf51d87520ed1ce81e66c587798845e56cfcd8132e26 +CT= dca7ee918053053d5c1bd2791ca8df5a4737091d5eaa452c772a264dafb9bfdf +PT= 8e9fd04e323394508e0b3fb99a7c8570565c2164da9202a337b4bda15faf9f75 +TEST= 242 +KEY= 280d92686bcca4155d4690e84209a59d4ab43f021f157b2b7251d15d87bcb153 +CT= 8e9fd04e323394508e0b3fb99a7c8570565c2164da9202a337b4bda15faf9f75 +PT= e00ab8a6fa0d74c4724bec478bcd7b52102945e47156ac0c16607f3f37cbfeec +TEST= 243 +KEY= c8072ace91c1d0d12f0d7cafc9c4decf5a9d7ae66e43d7276431ae62b0774fbf +CT= e00ab8a6fa0d74c4724bec478bcd7b52102945e47156ac0c16607f3f37cbfeec +PT= 5861c4b1dd02c539a137bdf063cfb0d751b9913a8ff38eb362eb80bf4640d9a0 +TEST= 244 +KEY= 9066ee7f4cc315e88e3ac15faa0b6e180b24ebdce1b0599406da2eddf637961f +CT= 5861c4b1dd02c539a137bdf063cfb0d751b9913a8ff38eb362eb80bf4640d9a0 +PT= f06c6991b292de66beb0afe2c2c844121a01d7122d6fadf451bfc4306e8b438a +TEST= 245 +KEY= 600a87eefe51cb8e308a6ebd68c32a0a11253cceccdff4605765eaed98bcd595 +CT= f06c6991b292de66beb0afe2c2c844121a01d7122d6fadf451bfc4306e8b438a +PT= b9c968ff1a0f0e7356e29fea991db48abeb7c8b5518c8522ce563f21bae1612c +TEST= 246 +KEY= d9c3ef11e45ec5fd6668f157f1de9e80af92f47b9d5371429933d5cc225db4b9 +CT= b9c968ff1a0f0e7356e29fea991db48abeb7c8b5518c8522ce563f21bae1612c +PT= 2859cda2b16416fa80f4860861dda8d746679c5af9a6d271a9f216fb0fbe671b +TEST= 247 +KEY= f19a22b3553ad307e69c775f90033657e9f5682164f5a33330c1c3372de3d3a2 +CT= 2859cda2b16416fa80f4860861dda8d746679c5af9a6d271a9f216fb0fbe671b +PT= fc95342ba5e05d35349e609fdd29ef0fb1fe11edd2e99004cedce517f9d8954b +TEST= 248 +KEY= 0d0f1698f0da8e32d20217c04d2ad958580b79ccb61c3337fe1d2620d43b46e9 +CT= fc95342ba5e05d35349e609fdd29ef0fb1fe11edd2e99004cedce517f9d8954b +PT= 72d05a6d6cf1162d0cdb288fcc03a933acad3bfef1ffbf0c58870617d68bfae7 +TEST= 249 +KEY= 7fdf4cf59c2b981fded93f4f8129706bf4a6423247e38c3ba69a203702b0bc0e +CT= 72d05a6d6cf1162d0cdb288fcc03a933acad3bfef1ffbf0c58870617d68bfae7 +PT= 279dd9d5b3762b7698b71ca7bf23561162094fafc582a33bdbf40456abee27a5 +TEST= 250 +KEY= 584295202f5db369466e23e83e0a267a96af0d9d82612f007d6e2461a95e9bab +CT= 279dd9d5b3762b7698b71ca7bf23561162094fafc582a33bdbf40456abee27a5 +PT= 44b4d5ad8c5c4d6bacc6d530f6310948a3c470550e80ec009c6b647d26f29795 +TEST= 251 +KEY= 1cf6408da301fe02eaa8f6d8c83b2f32356b7dc88ce1c300e105401c8fac0c3e +CT= 44b4d5ad8c5c4d6bacc6d530f6310948a3c470550e80ec009c6b647d26f29795 +PT= a071a3ea3fccd2d81e42f096d2bc2f6e8a905564d1609758017e2339eb5aaebf +TEST= 252 +KEY= bc87e3679ccd2cdaf4ea064e1a87005cbffb28ac5d815458e07b632564f6a281 +CT= a071a3ea3fccd2d81e42f096d2bc2f6e8a905564d1609758017e2339eb5aaebf +PT= eb857eb9811d08d1a236d17a974fb313a9584db4158c22831b6db3da534d65ab +TEST= 253 +KEY= 57029dde1dd0240b56dcd7348dc8b34f16a36518480d76dbfb16d0ff37bbc72a +CT= eb857eb9811d08d1a236d17a974fb313a9584db4158c22831b6db3da534d65ab +PT= 2249701e5bb811c3c3ef910ab25a569e80ab94a4c60e6c87ec15df04a1ff44b0 +TEST= 254 +KEY= 754bedc0466835c89533463e3f92e5d19608f1bc8e031a5c17030ffb9644839a +CT= 2249701e5bb811c3c3ef910ab25a569e80ab94a4c60e6c87ec15df04a1ff44b0 +PT= 7d6003b30ffbd6159625dd2afe917149629979b25a13eb15b004778c2cbcd3ce +TEST= 255 +KEY= 082bee734993e3dd03169b14c1039498f491880ed410f149a7077877baf85054 +CT= 7d6003b30ffbd6159625dd2afe917149629979b25a13eb15b004778c2cbcd3ce +PT= 6db983d5709005337c3d08d5d961278f8cbb4fa8aee04cadeaef9972639e534f +TEST= 256 +KEY= 65926da63903e6ee7f2b93c11862b317782ac7a67af0bde44de8e105d966031b +CT= 6db983d5709005337c3d08d5d961278f8cbb4fa8aee04cadeaef9972639e534f +PT= 9c2e01fd1c46eef7602f03899c88d406fd106e3b5b0822974b9d17f745ce0146 +TEST= 257 +KEY= f9bc6c5b254508191f04904884ea6711853aa99d21f89f730675f6f29ca8025d +CT= 9c2e01fd1c46eef7602f03899c88d406fd106e3b5b0822974b9d17f745ce0146 +PT= eaca7aa9814dd5a2f04cb67881258400e8d9b0a5d98a987a9d13cc9a22dc43b2 +TEST= 258 +KEY= 137616f2a408ddbbef48263005cfe3116de31938f87207099b663a68be7441ef +CT= eaca7aa9814dd5a2f04cb67881258400e8d9b0a5d98a987a9d13cc9a22dc43b2 +PT= 407cf2ba717d737a26b8e0722409f4a21ec94ae949ea7e96a50224f90f5a6aa2 +TEST= 259 +KEY= 530ae448d575aec1c9f0c64221c617b3732a53d1b198799f3e641e91b12e2b4d +CT= 407cf2ba717d737a26b8e0722409f4a21ec94ae949ea7e96a50224f90f5a6aa2 +PT= d8e07cac1b6ead181a3c909746a32e0ccd08c4a492ea7200bf33678369d599e3 +TEST= 260 +KEY= 8bea98e4ce1b03d9d3cc56d5676539bfbe22977523720b9f81577912d8fbb2ae +CT= d8e07cac1b6ead181a3c909746a32e0ccd08c4a492ea7200bf33678369d599e3 +PT= ebc6a190f3d168b7117683ac220976a357bf4d654f87267a62a7e8b596dac8a7 +TEST= 261 +KEY= 602c39743dca6b6ec2bad579456c4f1ce99dda106cf52de5e3f091a74e217a09 +CT= ebc6a190f3d168b7117683ac220976a357bf4d654f87267a62a7e8b596dac8a7 +PT= 8edcb7480981f285208f7f0baa6b1ee0b9d76d8917fa282d773ac529def16dad +TEST= 262 +KEY= eef08e3c344b99ebe235aa72ef0751fc504ab7997b0f05c894ca548e90d017a4 +CT= 8edcb7480981f285208f7f0baa6b1ee0b9d76d8917fa282d773ac529def16dad +PT= 587caa3ff5dc36c1faf83bcc52930106bf2f020ccb49e54219abb16f58b63a93 +TEST= 263 +KEY= b68c2403c197af2a18cd91bebd9450faef65b595b046e08a8d61e5e1c8662d37 +CT= 587caa3ff5dc36c1faf83bcc52930106bf2f020ccb49e54219abb16f58b63a93 +PT= 70bfcfd6759aabd8da6add9282407f698172270efe1d3bec823127a65010714b +TEST= 264 +KEY= c633ebd5b40d04f2c2a74c2c3fd42f936e17929b4e5bdb660f50c24798765c7c +CT= 70bfcfd6759aabd8da6add9282407f698172270efe1d3bec823127a65010714b +PT= 91fb49f1095143622317ad55fbd5a0e7c4002275d6f9be26bcff223135029aeb +TEST= 265 +KEY= 57c8a224bd5c4790e1b0e179c4018f74aa17b0ee98a26540b3afe076ad74c697 +CT= 91fb49f1095143622317ad55fbd5a0e7c4002275d6f9be26bcff223135029aeb +PT= 5e2c2d1bb4f3f83d6d78658bcf2f0d757ff46afcaa974efa4ed28e5acdfdf538 +TEST= 266 +KEY= 09e48f3f09afbfad8cc884f20b2e8201d5e3da1232352bbafd7d6e2c608933af +CT= 5e2c2d1bb4f3f83d6d78658bcf2f0d757ff46afcaa974efa4ed28e5acdfdf538 +PT= 311bf79614c3c8e2f24ac537681fc3464b50da16ba39233aa5eca1912991dee9 +TEST= 267 +KEY= 38ff78a91d6c774f7e8241c5633141479eb30004880c08805891cfbd4918ed46 +CT= 311bf79614c3c8e2f24ac537681fc3464b50da16ba39233aa5eca1912991dee9 +PT= f046fcd5ca1fb1df43f2d52c58c4765b3467ba2090f44a95880ff095221bda98 +TEST= 268 +KEY= c8b9847cd773c6903d7094e93bf5371caad4ba2418f84215d09e3f286b0337de +CT= f046fcd5ca1fb1df43f2d52c58c4765b3467ba2090f44a95880ff095221bda98 +PT= 444bf89b54f2a0e4b1071e512dd4f16ea84a26a26c7ecb7cffbcd03a5d25ee7f +TEST= 269 +KEY= 8cf27ce7838166748c778ab81621c672029e9c86748689692f22ef123626d9a1 +CT= 444bf89b54f2a0e4b1071e512dd4f16ea84a26a26c7ecb7cffbcd03a5d25ee7f +PT= b3d65fbd51ab20dfb54e6a8950153f4b216e73347c3504c1c3bf3a5c9ec4669c +TEST= 270 +KEY= 3f24235ad22a46ab3939e0314634f93923f0efb208b38da8ec9dd54ea8e2bf3d +CT= b3d65fbd51ab20dfb54e6a8950153f4b216e73347c3504c1c3bf3a5c9ec4669c +PT= e6cf55e1f8987325ad609197b127d7e8c0f0699fe5124bf3b1460c9a531a1b08 +TEST= 271 +KEY= d9eb76bb2ab2358e945971a6f7132ed1e300862deda1c65b5ddbd9d4fbf8a435 +CT= e6cf55e1f8987325ad609197b127d7e8c0f0699fe5124bf3b1460c9a531a1b08 +PT= bd864fbf8d7db5b38d6f6b5320221fe78c0028ced0e2837ad58027beeb688235 +TEST= 272 +KEY= 646d3904a7cf803d19361af5d73131366f00aee33d434521885bfe6a10902600 +CT= bd864fbf8d7db5b38d6f6b5320221fe78c0028ced0e2837ad58027beeb688235 +PT= 2ed1086b615ab5ef8b24821c0f3cf4dcffddfbb6ed43470f3ef7cf21772ed3a5 +TEST= 273 +KEY= 4abc316fc69535d2921298e9d80dc5ea90dd5555d000022eb6ac314b67bef5a5 +CT= 2ed1086b615ab5ef8b24821c0f3cf4dcffddfbb6ed43470f3ef7cf21772ed3a5 +PT= b3c90b8cbbf1934db58f60a0877efc5c054a5e71d833f26213c3fc12ec4a0f7d +TEST= 274 +KEY= f9753ae37d64a69f279df8495f7339b695970b240833f04ca56fcd598bf4fad8 +CT= b3c90b8cbbf1934db58f60a0877efc5c054a5e71d833f26213c3fc12ec4a0f7d +PT= 807bc9dae3eb0010fd7c2e9454d84043f498f894147d8c539841b5b8332bbd1b +TEST= 275 +KEY= 790ef3399e8fa68fdae1d6dd0bab79f5610ff3b01c4e7c1f3d2e78e1b8df47c3 +CT= 807bc9dae3eb0010fd7c2e9454d84043f498f894147d8c539841b5b8332bbd1b +PT= 1900812363b06d0e5a01f1ae23af73497f5d0e9accf6ca6d560dde9762343d14 +TEST= 276 +KEY= 600e721afd3fcb8180e0277328040abc1e52fd2ad0b8b6726b23a676daeb7ad7 +CT= 1900812363b06d0e5a01f1ae23af73497f5d0e9accf6ca6d560dde9762343d14 +PT= ca52709dad281914ddcf1ccf399980793fe0364381ae3e17a4c00dbf5c2ccd44 +TEST= 277 +KEY= aa5c02875017d2955d2f3bbc119d8ac521b2cb6951168865cfe3abc986c7b793 +CT= ca52709dad281914ddcf1ccf399980793fe0364381ae3e17a4c00dbf5c2ccd44 +PT= 9de4a6d84cf1199bf3985dfeb551189cd2cb7f6374fbcb58a0d23a32e8497544 +TEST= 278 +KEY= 37b8a45f1ce6cb0eaeb76642a4cc9259f379b40a25ed433d6f3191fb6e8ec2d7 +CT= 9de4a6d84cf1199bf3985dfeb551189cd2cb7f6374fbcb58a0d23a32e8497544 +PT= ffbd61da4b996f2ca4fbb0f36e386378cc0ff327c28520670f7029329a5f3039 +TEST= 279 +KEY= c805c585577fa4220a4cd6b1caf4f1213f76472de768635a6041b8c9f4d1f2ee +CT= ffbd61da4b996f2ca4fbb0f36e386378cc0ff327c28520670f7029329a5f3039 +PT= 292086689a2669aed7b5858c44b019de176ae4366043e1ddcca07cb87bf65edc +TEST= 280 +KEY= e12543edcd59cd8cddf9533d8e44e8ff281ca31b872b8287ace1c4718f27ac32 +CT= 292086689a2669aed7b5858c44b019de176ae4366043e1ddcca07cb87bf65edc +PT= ceee6c68d444124efa358ef323887424c9cf85f161cb0e0fc6655200c312debd +TEST= 281 +KEY= 2fcb2f85191ddfc227ccddceadcc9cdbe1d326eae6e08c886a8496714c35728f +CT= ceee6c68d444124efa358ef323887424c9cf85f161cb0e0fc6655200c312debd +PT= f0f402fa00187557f57609b17dd8c2ac1afc7e89c5a2614d7a07ab286a124367 +TEST= 282 +KEY= df3f2d7f1905aa95d2bad47fd0145e77fb2f58632342edc510833d59262731e8 +CT= f0f402fa00187557f57609b17dd8c2ac1afc7e89c5a2614d7a07ab286a124367 +PT= b926cdc09fefdf29bac9834c38cf76f48f666ee368a7dfd926d7f6cad42150b1 +TEST= 283 +KEY= 6619e0bf86ea75bc68735733e8db2883744936804be5321c3654cb93f2066159 +CT= b926cdc09fefdf29bac9834c38cf76f48f666ee368a7dfd926d7f6cad42150b1 +PT= db0928fbe2143021e0fdb117325ae01582dbaec0f11c20afed0750e97e6897df +TEST= 284 +KEY= bd10c84464fe459d888ee624da81c896f6929840baf912b3db539b7a8c6ef686 +CT= db0928fbe2143021e0fdb117325ae01582dbaec0f11c20afed0750e97e6897df +PT= bad967c95663f1663722fe080cc42819b1d0ce29e68861e5a3ab1e1affa26228 +TEST= 285 +KEY= 07c9af8d329db4fbbfac182cd645e08f474256695c71735678f8856073cc94ae +CT= bad967c95663f1663722fe080cc42819b1d0ce29e68861e5a3ab1e1affa26228 +PT= b3eaef11d6afc121fe58da24398822cad4ae23e08aa9b18bcfc0c3a1400a0239 +TEST= 286 +KEY= b423409ce43275da41f4c208efcdc24593ec7589d6d8c2ddb73846c133c69697 +CT= b3eaef11d6afc121fe58da24398822cad4ae23e08aa9b18bcfc0c3a1400a0239 +PT= 393637bdd36671c9d7161f51ab3b4ce201b228c4f894d78b7f6de2bfa6f36109 +TEST= 287 +KEY= 8d1577213754041396e2dd5944f68ea7925e5d4d2e4c1556c855a47e9535f79e +CT= 393637bdd36671c9d7161f51ab3b4ce201b228c4f894d78b7f6de2bfa6f36109 +PT= b909fd70f302328dbe1ee5fd9cd0ec8e54a972d4f00d1175a2b7fd8c0d0d4b56 +TEST= 288 +KEY= 341c8a51c456369e28fc38a4d8266229c6f72f99de4104236ae259f29838bcc8 +CT= b909fd70f302328dbe1ee5fd9cd0ec8e54a972d4f00d1175a2b7fd8c0d0d4b56 +PT= d9b3760e67814f9b1e727b2166669416e1b0bd71ec5d9c9c2f0b175c9494475a +TEST= 289 +KEY= edaffc5fa3d77905368e4385be40f63f274792e8321c98bf45e94eae0cacfb92 +CT= d9b3760e67814f9b1e727b2166669416e1b0bd71ec5d9c9c2f0b175c9494475a +PT= 08c785f0835eb94e2f4dc798cedc79776188e74db2df0e6bad65222fe1f83768 +TEST= 290 +KEY= e56879af2089c04b19c3841d709c8f4846cf75a580c396d4e88c6c81ed54ccfa +CT= 08c785f0835eb94e2f4dc798cedc79776188e74db2df0e6bad65222fe1f83768 +PT= 97030ff52a8b047b1187d61876a466ff81784fccbc1ab0b049bfc266324e1db1 +TEST= 291 +KEY= 726b765a0a02c430084452050638e9b7c7b73a693cd92664a133aee7df1ad14b +CT= 97030ff52a8b047b1187d61876a466ff81784fccbc1ab0b049bfc266324e1db1 +PT= 96fc511dbe18b5f47751f06e4d68c43be2b247ed9ed1402e0bd58113327b6fe0 +TEST= 292 +KEY= e4972747b41a71c47f15a26b4b502d8c25057d84a208664aaae62ff4ed61beab +CT= 96fc511dbe18b5f47751f06e4d68c43be2b247ed9ed1402e0bd58113327b6fe0 +PT= 1e5ef901d29a450876adf611ce49166e2e3a0949cbade8ea961dd6213e909bc5 +TEST= 293 +KEY= fac9de46668034cc09b8547a85193be20b3f74cd69a58ea03cfbf9d5d3f1256e +CT= 1e5ef901d29a450876adf611ce49166e2e3a0949cbade8ea961dd6213e909bc5 +PT= 498950ebd21035b07a182c35d704ad442bf87e7af68741b2ba99c4459cf7ce2e +TEST= 294 +KEY= b3408eadb490017c73a0784f521d96a620c70ab79f22cf1286623d904f06eb40 +CT= 498950ebd21035b07a182c35d704ad442bf87e7af68741b2ba99c4459cf7ce2e +PT= 1fb7d9a785d0881791df281644ced695f3b8ecd56416ce5433e0633494bad131 +TEST= 295 +KEY= acf7570a3140896be27f505916d34033d37fe662fb340146b5825ea4dbbc3a71 +CT= 1fb7d9a785d0881791df281644ced695f3b8ecd56416ce5433e0633494bad131 +PT= fb35e3abb7eb1ec03d3ab5c5b40a0a57691cc491c34f95ef7c0ebcc514bd72fb +TEST= 296 +KEY= 57c2b4a186ab97abdf45e59ca2d94a64ba6322f3387b94a9c98ce261cf01488a +CT= fb35e3abb7eb1ec03d3ab5c5b40a0a57691cc491c34f95ef7c0ebcc514bd72fb +PT= c674572501031a82414e6456d340fb91f81daf9f6c3a3e96c02f0c4346d33449 +TEST= 297 +KEY= 91b6e38487a88d299e0b81ca7199b1f5427e8d6c5441aa3f09a3ee2289d27cc3 +CT= c674572501031a82414e6456d340fb91f81daf9f6c3a3e96c02f0c4346d33449 +PT= b14dc666a3d8ba3482c0e4cd1af793e988c11329c52b1202a3d5ddeeb71d432b +TEST= 298 +KEY= 20fb25e22470371d1ccb65076b6e221ccabf9e45916ab83daa7633cc3ecf3fe8 +CT= b14dc666a3d8ba3482c0e4cd1af793e988c11329c52b1202a3d5ddeeb71d432b +PT= 5ecca363b1f8b952745947de6c06069c0bb968a2114980879cb4810fe36cf875 +TEST= 299 +KEY= 7e37868195888e4f689222d907682480c106f6e7802338ba36c2b2c3dda3c79d +CT= 5ecca363b1f8b952745947de6c06069c0bb968a2114980879cb4810fe36cf875 +PT= 62d7339d83f252372b59c56921575afc8a3052a2ae390e87684337822fac0392 +TEST= 300 +KEY= 1ce0b51c167adc7843cbe7b0263f7e7c4b36a4452e1a363d5e818541f20fc40f +CT= 62d7339d83f252372b59c56921575afc8a3052a2ae390e87684337822fac0392 +PT= deee250ac00fea1bf09e07901d022284db143fe9a7f28016d9f45985c0ae7189 +TEST= 301 +KEY= c20e9016d6753663b355e0203b3d5cf890229bac89e8b62b8775dcc432a1b586 +CT= deee250ac00fea1bf09e07901d022284db143fe9a7f28016d9f45985c0ae7189 +PT= ead441b302944a2ca9bb25442335979bbcbe410c1f8531f746995d968226a484 +TEST= 302 +KEY= 28dad1a5d4e17c4f1aeec5641808cb632c9cdaa0966d87dcc1ec8152b0871102 +CT= ead441b302944a2ca9bb25442335979bbcbe410c1f8531f746995d968226a484 +PT= 0f7f7817ff5a109cbda1467e3406e8495b35f2eb701c636a3f39f7f8d41607ff +TEST= 303 +KEY= 27a5a9b22bbb6cd3a74f831a2c0e232a77a9284be671e4b6fed576aa649116fd +CT= 0f7f7817ff5a109cbda1467e3406e8495b35f2eb701c636a3f39f7f8d41607ff +PT= ce474d4b4f5d021faa27914a9f01b726af130fe2f9f14c9d6cbb5da36890d1d7 +TEST= 304 +KEY= e9e2e4f964e66ecc0d681250b30f940cd8ba27a91f80a82b926e2b090c01c72a +CT= ce474d4b4f5d021faa27914a9f01b726af130fe2f9f14c9d6cbb5da36890d1d7 +PT= a692da5a11d254390eac0118bf2787877fc478fa1466f9c38ae1902f90f8e6fe +TEST= 305 +KEY= 4f703ea375343af503c413480c28138ba77e5f530be651e8188fbb269cf921d4 +CT= a692da5a11d254390eac0118bf2787877fc478fa1466f9c38ae1902f90f8e6fe +PT= 6860a6da9e189b418420067d23ea9cdbfc1c419d011c302669aaad15246001ec +TEST= 306 +KEY= 27109879eb2ca1b487e415352fc28f505b621ece0afa61ce71251633b8992038 +CT= 6860a6da9e189b418420067d23ea9cdbfc1c419d011c302669aaad15246001ec +PT= f5b6a1632a0644dd2714d12f19e417546bd37783ca81b3b4ed695f3f4693a7bd +TEST= 307 +KEY= d2a6391ac12ae569a0f0c41a3626980430b1694dc07bd27a9c4c490cfe0a8785 +CT= f5b6a1632a0644dd2714d12f19e417546bd37783ca81b3b4ed695f3f4693a7bd +PT= d85ad9b5c3ddb51a82b68144a7dfe1373fe8284a31065a1072f2c8629679e205 +TEST= 308 +KEY= 0afce0af02f750732246455e91f979330f594107f17d886aeebe816e68736580 +CT= d85ad9b5c3ddb51a82b68144a7dfe1373fe8284a31065a1072f2c8629679e205 +PT= facdc51eb60736561ba0c42007eb10312b75facfb8e1bed63b637aafe15892a7 +TEST= 309 +KEY= f03125b1b4f0662539e6817e96126902242cbbc8499c36bcd5ddfbc1892bf727 +CT= facdc51eb60736561ba0c42007eb10312b75facfb8e1bed63b637aafe15892a7 +PT= 88170fafab83c66027e4d369927a7d09b1879c943f2f6552afccb7aac8daaf2a +TEST= 310 +KEY= 78262a1e1f73a0451e0252170468140b95ab275c76b353ee7a114c6b41f1580d +CT= 88170fafab83c66027e4d369927a7d09b1879c943f2f6552afccb7aac8daaf2a +PT= 607589c9f49d3e64a86b040d9c5fafa3f42ca929c171ce8d99e5ac7a83ad6a7d +TEST= 311 +KEY= 1853a3d7ebee9e21b669561a9837bba861878e75b7c29d63e3f4e011c25c3270 +CT= 607589c9f49d3e64a86b040d9c5fafa3f42ca929c171ce8d99e5ac7a83ad6a7d +PT= 7df8a933156f1b22e3a31dcf318ce57fce32c687dfb934e1c42fc2298b7a4eac +TEST= 312 +KEY= 65ab0ae4fe81850355ca4bd5a9bb5ed7afb548f2687ba98227db223849267cdc +CT= 7df8a933156f1b22e3a31dcf318ce57fce32c687dfb934e1c42fc2298b7a4eac +PT= 8996d0844a6285117dd905398f93b060a47bbb4da1eeddfbf4cc1861eb3e0fb8 +TEST= 313 +KEY= ec3dda60b4e3001228134eec2628eeb70bcef3bfc9957479d3173a59a2187364 +CT= 8996d0844a6285117dd905398f93b060a47bbb4da1eeddfbf4cc1861eb3e0fb8 +PT= 42bab44d85568436103bc1969c25fc858ed93e61eaba5a73a606f7aa2cb46a55 +TEST= 314 +KEY= ae876e2d31b5842438288f7aba0d12328517cdde232f2e0a7511cdf38eac1931 +CT= 42bab44d85568436103bc1969c25fc858ed93e61eaba5a73a606f7aa2cb46a55 +PT= 48cf291fea42a4c88383b3be95fbae5c638662dfe939fe67ebe788932efe8650 +TEST= 315 +KEY= e6484732dbf720ecbbab3cc42ff6bc6ee691af01ca16d06d9ef64560a0529f61 +CT= 48cf291fea42a4c88383b3be95fbae5c638662dfe939fe67ebe788932efe8650 +PT= 222eca34d4a48cca3a0fa5af8dbc561315d91179dfb3da66ad56cdd3838e1c78 +TEST= 316 +KEY= c4668d060f53ac2681a4996ba24aea7df348be7815a50a0b33a088b323dc8319 +CT= 222eca34d4a48cca3a0fa5af8dbc561315d91179dfb3da66ad56cdd3838e1c78 +PT= 03ac1ef90b7fad4c3d16cdb22ce1344deab63287146b00225130824fbb984b17 +TEST= 317 +KEY= c7ca93ff042c016abcb254d98eabde3019fe8cff01ce0a2962900afc9844c80e +CT= 03ac1ef90b7fad4c3d16cdb22ce1344deab63287146b00225130824fbb984b17 +PT= 7a415da90bf6ceaeaee2b8a99808d6c29babffe4086ff0ade3325e2d7bbdee85 +TEST= 318 +KEY= bd8bce560fdacfc41250ec7016a308f28255731b09a1fa8481a254d1e3f9268b +CT= 7a415da90bf6ceaeaee2b8a99808d6c29babffe4086ff0ade3325e2d7bbdee85 +PT= 65317f40b369c77087df86cb4e819cc4ad8c6daa45342c0ea9667cb17e669010 +TEST= 319 +KEY= d8bab116bcb308b4958f6abb582294362fd91eb14c95d68a28c428609d9fb69b +CT= 65317f40b369c77087df86cb4e819cc4ad8c6daa45342c0ea9667cb17e669010 +PT= ee067f30095db8937023a4c1adfed86259ee6a2b0dcb2604678030b1129c7d0e +TEST= 320 +KEY= 36bcce26b5eeb027e5acce7af5dc4c547637749a415ef08e4f4418d18f03cb95 +CT= ee067f30095db8937023a4c1adfed86259ee6a2b0dcb2604678030b1129c7d0e +PT= c96efde27b292e03bc88a6909f8a52d76ba6cb5f2829c81efcf5118fc20e9abf +TEST= 321 +KEY= ffd233c4cec79e24592468ea6a561e831d91bfc569773890b3b1095e4d0d512a +CT= c96efde27b292e03bc88a6909f8a52d76ba6cb5f2829c81efcf5118fc20e9abf +PT= 9c2d160886156f2f816921bc79d8fcb8c862deddeb0ee9d0e9b103f24d4a0920 +TEST= 322 +KEY= 63ff25cc48d2f10bd84d4956138ee23bd5f361188279d1405a000aac0047580a +CT= 9c2d160886156f2f816921bc79d8fcb8c862deddeb0ee9d0e9b103f24d4a0920 +PT= 6ea02cc06361485ee8e7cdf46f8a22837620d5ba606306b125cd0f279cd78839 +TEST= 323 +KEY= 0d5f090c2bb3b95530aa84a27c04c0b8a3d3b4a2e21ad7f17fcd058b9c90d033 +CT= 6ea02cc06361485ee8e7cdf46f8a22837620d5ba606306b125cd0f279cd78839 +PT= 0f9a8194b6fbddf1871f4cadae056d043e938ba7d4a9899ddf1cb927152cbe8e +TEST= 324 +KEY= 02c588989d4864a4b7b5c80fd201adbc9d403f0536b35e6ca0d1bcac89bc6ebd +CT= 0f9a8194b6fbddf1871f4cadae056d043e938ba7d4a9899ddf1cb927152cbe8e +PT= 14217fd23da57bf25cd803c883170116699d59a3290a4e66158f352dc12ed1b2 +TEST= 325 +KEY= 16e4f74aa0ed1f56eb6dcbc75116acaaf4dd66a61fb9100ab55e89814892bf0f +CT= 14217fd23da57bf25cd803c883170116699d59a3290a4e66158f352dc12ed1b2 +PT= c3a246aaa7e9c4ebcff5dfd929dcefa0aae6112ed68f2ab365e54a9ea528de25 +TEST= 326 +KEY= d546b1e00704dbbd2498141e78ca430a5e3b7788c9363ab9d0bbc31fedba612a +CT= c3a246aaa7e9c4ebcff5dfd929dcefa0aae6112ed68f2ab365e54a9ea528de25 +PT= d8dddd58a367af451989d684c7148d73a310ac612d6ea7e877d410a0040bb8f5 +TEST= 327 +KEY= 0d9b6cb8a46374f83d11c29abfdece79fd2bdbe9e4589d51a76fd3bfe9b1d9df +CT= d8dddd58a367af451989d684c7148d73a310ac612d6ea7e877d410a0040bb8f5 +PT= 54518da8326c95106c381ae114a933877b40313c34d5e5bdcb00b1db90dd4872 +TEST= 328 +KEY= 59cae110960fe1e85129d87bab77fdfe866bead5d08d78ec6c6f6264796c91ad +CT= 54518da8326c95106c381ae114a933877b40313c34d5e5bdcb00b1db90dd4872 +PT= aa5654dc68f628b6f4ff3b98c93903a6bff8b9ef91f3465911b7a4181b05da53 +TEST= 329 +KEY= f39cb5ccfef9c95ea5d6e3e3624efe583993533a417e3eb57dd8c67c62694bfe +CT= aa5654dc68f628b6f4ff3b98c93903a6bff8b9ef91f3465911b7a4181b05da53 +PT= 523f0dd53dd11e03fd70fcf04c5b9bedf51b7ed18ceeb6914eb1ab4f47c20d46 +TEST= 330 +KEY= a1a3b819c328d75d58a61f132e1565b5cc882debcd90882433696d3325ab46b8 +CT= 523f0dd53dd11e03fd70fcf04c5b9bedf51b7ed18ceeb6914eb1ab4f47c20d46 +PT= 3592cf386792f130f3fe4d27fa23f10824534dcee6d55459987a8ce79f05b11d +TEST= 331 +KEY= 94317721a4ba266dab585234d43694bde8db60252b45dc7dab13e1d4baaef7a5 +CT= 3592cf386792f130f3fe4d27fa23f10824534dcee6d55459987a8ce79f05b11d +PT= 2bd5aeec49d0f6c670b51657708a9385b78be72bbc93bb2fba8a79a36a9b968a +TEST= 332 +KEY= bfe4d9cded6ad0abdbed4463a4bc07385f50870e97d6675211999877d035612f +CT= 2bd5aeec49d0f6c670b51657708a9385b78be72bbc93bb2fba8a79a36a9b968a +PT= 10d9b5e0ad769d2dccaedae6fef95fa4e51f7d0982762afd4b985ee2ce67da19 +TEST= 333 +KEY= af3d6c2d401c4d8617439e855a45589cba4ffa0715a04daf5a01c6951e52bb36 +CT= 10d9b5e0ad769d2dccaedae6fef95fa4e51f7d0982762afd4b985ee2ce67da19 +PT= f0728cac0df5f3da2f67281a82ee1432a98753918dcc6cd726827c1bdc9672f2 +TEST= 334 +KEY= 5f4fe0814de9be5c3824b69fd8ab4cae13c8a996986c21787c83ba8ec2c4c9c4 +CT= f0728cac0df5f3da2f67281a82ee1432a98753918dcc6cd726827c1bdc9672f2 +PT= cc554f8dfbc353abd26d51e265ba4d3ef89a6385a0a6e6a987bce587ac0faf18 +TEST= 335 +KEY= 931aaf0cb62aedf7ea49e77dbd110190eb52ca1338cac7d1fb3f5f096ecb66dc +CT= cc554f8dfbc353abd26d51e265ba4d3ef89a6385a0a6e6a987bce587ac0faf18 +PT= d4b72ac7f46d2939d37d360f2c04c1826ad7e49e57dca15fce4b46a720dc0d4d +TEST= 336 +KEY= 47ad85cb4247c4ce3934d1729115c01281852e8d6f16668e357419ae4e176b91 +CT= d4b72ac7f46d2939d37d360f2c04c1826ad7e49e57dca15fce4b46a720dc0d4d +PT= f3967d7fb90b38a6c039a5f6d91ee6d3ea4781db3f00ace2a415635416ad471f +TEST= 337 +KEY= b43bf8b4fb4cfc68f90d7484480b26c16bc2af565016ca6c91617afa58ba2c8e +CT= f3967d7fb90b38a6c039a5f6d91ee6d3ea4781db3f00ace2a415635416ad471f +PT= 1f230be2b53bae342ce1c7851bdd0c47a4c8f32fe66722230d51edb02031fbe4 +TEST= 338 +KEY= ab18f3564e77525cd5ecb30153d62a86cf0a5c79b671e84f9c30974a788bd76a +CT= 1f230be2b53bae342ce1c7851bdd0c47a4c8f32fe66722230d51edb02031fbe4 +PT= 51f0b97664b2d0103710f7cc6633e47dbe7489d089aebea4ac468c354164868c +TEST= 339 +KEY= fae84a202ac5824ce2fc44cd35e5cefb717ed5a93fdf56eb30761b7f39ef51e6 +CT= 51f0b97664b2d0103710f7cc6633e47dbe7489d089aebea4ac468c354164868c +PT= 498d54fa14eef0bb59e8ea7184469a277e66a2646a18dfbcb5ef251423b9435a +TEST= 340 +KEY= b3651eda3e2b72f7bb14aebcb1a354dc0f1877cd55c7895785993e6b1a5612bc +CT= 498d54fa14eef0bb59e8ea7184469a277e66a2646a18dfbcb5ef251423b9435a +PT= cc12a0d63899acf1d1e9104cb8e292cd42f03ab09bb83a2481dbef4cd44aaf0f +TEST= 341 +KEY= 7f77be0c06b2de066afdbef00941c6114de84d7dce7fb3730442d127ce1cbdb3 +CT= cc12a0d63899acf1d1e9104cb8e292cd42f03ab09bb83a2481dbef4cd44aaf0f +PT= 5149ee620e144f24cdfd40811168bafbb818311305d686a4208bc0d048ca23fa +TEST= 342 +KEY= 2e3e506e08a69122a700fe7118297ceaf5f07c6ecba935d724c911f786d69e49 +CT= 5149ee620e144f24cdfd40811168bafbb818311305d686a4208bc0d048ca23fa +PT= 71965e90618211aab4408ae59fcae42ccb3561f68de9111b64d6b4b8268435fe +TEST= 343 +KEY= 5fa80efe692480881340749487e398c63ec51d98464024cc401fa54fa052abb7 +CT= 71965e90618211aab4408ae59fcae42ccb3561f68de9111b64d6b4b8268435fe +PT= d23dfce8df1ed1a3db7683def8bd39d7405d64acdf2cf20d0baff2a0eebd3cae +TEST= 344 +KEY= 8d95f216b63a512bc836f74a7f5ea1117e987934996cd6c14bb057ef4eef9719 +CT= d23dfce8df1ed1a3db7683def8bd39d7405d64acdf2cf20d0baff2a0eebd3cae +PT= fd7bf3ff4ba470f934057936d7aae5489d94bbcbdc6a4faa28a7f00e19cd0970 +TEST= 345 +KEY= 70ee01e9fd9e21d2fc338e7ca8f44459e30cc2ff4506996b6317a7e157229e69 +CT= fd7bf3ff4ba470f934057936d7aae5489d94bbcbdc6a4faa28a7f00e19cd0970 +PT= 0dc5d34acc4e8f4b586ff6e3230f463c531a58ed5da7c8e5887df17c71d95d53 +TEST= 346 +KEY= 7d2bd2a331d0ae99a45c789f8bfb0265b0169a1218a1518eeb6a569d26fbc33a +CT= 0dc5d34acc4e8f4b586ff6e3230f463c531a58ed5da7c8e5887df17c71d95d53 +PT= 7dc34fd1a5610b30458ea2509fb5670b2312a20e1d8ea987200e892019aadbb3 +TEST= 347 +KEY= 00e89d7294b1a5a9e1d2dacf144e656e9304381c052ff809cb64dfbd3f511889 +CT= 7dc34fd1a5610b30458ea2509fb5670b2312a20e1d8ea987200e892019aadbb3 +PT= f006eb40168e4687ab89d263850997718736e6232d853f9dc8bb4d584c970fec +TEST= 348 +KEY= f0ee7632823fe32e4a5b08ac9147f21f1432de3f28aac79403df92e573c61765 +CT= f006eb40168e4687ab89d263850997718736e6232d853f9dc8bb4d584c970fec +PT= cf7b3a8e2550b1d7689c0ecdd81d216bac02a5f8797d9859f65e561cfee82eb4 +TEST= 349 +KEY= 3f954cbca76f52f922c70661495ad374b8307bc751d75fcdf581c4f98d2e39d1 +CT= cf7b3a8e2550b1d7689c0ecdd81d216bac02a5f8797d9859f65e561cfee82eb4 +PT= 6bdd7225188c4c831a2ebcb7c9d423cabe07a5e1b3791f7dfe5c8e0a67c06311 +TEST= 350 +KEY= 54483e99bfe31e7a38e9bad6808ef0be0637de26e2ae40b00bdd4af3eaee5ac0 +CT= 6bdd7225188c4c831a2ebcb7c9d423cabe07a5e1b3791f7dfe5c8e0a67c06311 +PT= bad3cbd264679001fa9f78b7175dfb4632761b17fe4ee17e9ceab7cc96cead8e +TEST= 351 +KEY= ee9bf54bdb848e7bc276c26197d30bf83441c5311ce0a1ce9737fd3f7c20f74e +CT= bad3cbd264679001fa9f78b7175dfb4632761b17fe4ee17e9ceab7cc96cead8e +PT= 88aab68b63fd2c05b49274d07e94a2cc13b2f087d2fb4840f021243188095d96 +TEST= 352 +KEY= 663143c0b879a27e76e4b6b1e947a93427f335b6ce1be98e6716d90ef429aad8 +CT= 88aab68b63fd2c05b49274d07e94a2cc13b2f087d2fb4840f021243188095d96 +PT= 973b6b960f945829a619181743c6e7f895af6be2119fc76c0bb3c1b1617fea76 +TEST= 353 +KEY= f10a2856b7edfa57d0fdaea6aa814eccb25c5e54df842ee26ca518bf955640ae +CT= 973b6b960f945829a619181743c6e7f895af6be2119fc76c0bb3c1b1617fea76 +PT= e38bdb74c9df8b6bf14af8044d093575fdaffb60fd3055117e96a8e38e78551b +TEST= 354 +KEY= 1281f3227e32713c21b756a2e7887bb94ff3a53422b47bf31233b05c1b2e15b5 +CT= e38bdb74c9df8b6bf14af8044d093575fdaffb60fd3055117e96a8e38e78551b +PT= 4ceff3a18a297c2a375eeb0bab3aad8bd6aa2549d377835ce1df9eada8035ec5 +TEST= 355 +KEY= 5e6e0083f41b0d1616e9bda94cb2d6329959807df1c3f8aff3ec2ef1b32d4b70 +CT= 4ceff3a18a297c2a375eeb0bab3aad8bd6aa2549d377835ce1df9eada8035ec5 +PT= e0d30a2802b15bb1333cd9142f82a350204028f7b3589f88c976be3dc5b2678a +TEST= 356 +KEY= bebd0aabf6aa56a725d564bd63307562b919a88a429b67273a9a90cc769f2cfa +CT= e0d30a2802b15bb1333cd9142f82a350204028f7b3589f88c976be3dc5b2678a +PT= a5a7b587d7df8b26e35e077158c0b9b8c65f2a772a1101f0a396e39a0ba30fe1 +TEST= 357 +KEY= 1b1abf2c2175dd81c68b63cc3bf0ccda7f4682fd688a66d7990c73567d3c231b +CT= a5a7b587d7df8b26e35e077158c0b9b8c65f2a772a1101f0a396e39a0ba30fe1 +PT= 2382b6df3342354de77e4e93554ffca4a34018ec429ea1a7b2fcb2b8fd6bc47d +TEST= 358 +KEY= 389809f31237e8cc21f52d5f6ebf307edc069a112a14c7702bf0c1ee8057e766 +CT= 2382b6df3342354de77e4e93554ffca4a34018ec429ea1a7b2fcb2b8fd6bc47d +PT= 73557183cf6808e05b280b05b8314ec7c8cbd9f7d96550be08c1a37fbebd1552 +TEST= 359 +KEY= 4bcd7870dd5fe02c7add265ad68e7eb914cd43e6f37197ce233162913eeaf234 +CT= 73557183cf6808e05b280b05b8314ec7c8cbd9f7d96550be08c1a37fbebd1552 +PT= abbb0a31ce2ee5c9ccb87e0c66c3053029843dc27078f2ad2a78e8686b76326a +TEST= 360 +KEY= e0767241137105e5b6655856b04d7b893d497e248309656309498af9559cc05e +CT= abbb0a31ce2ee5c9ccb87e0c66c3053029843dc27078f2ad2a78e8686b76326a +PT= 2ae8837bb3e0191e6a02f2e64d7d0c8571e9ad217450b45b348601a23241de51 +TEST= 361 +KEY= ca9ef13aa0911cfbdc67aab0fd30770c4ca0d305f759d1383dcf8b5b67dd1e0f +CT= 2ae8837bb3e0191e6a02f2e64d7d0c8571e9ad217450b45b348601a23241de51 +PT= 5c727591a61ca0d14d30df141fd8c919dc7e1491cf94206c120fc23f37b81d42 +TEST= 362 +KEY= 96ec84ab068dbc2a915775a4e2e8be1590dec79438cdf1542fc049645065034d +CT= 5c727591a61ca0d14d30df141fd8c919dc7e1491cf94206c120fc23f37b81d42 +PT= 2c7bc528e289098a0c099c965cea68e38a5a9c563ee69ef9e69caabd6427fafe +TEST= 363 +KEY= ba974183e404b5a09d5ee932be02d6f61a845bc2062b6fadc95ce3d93442f9b3 +CT= 2c7bc528e289098a0c099c965cea68e38a5a9c563ee69ef9e69caabd6427fafe +PT= 63888af48fa3d7c79a8f6a2ea14e4e4c1f713d8eb8d499bfc5ead07f4a86fe80 +TEST= 364 +KEY= d91fcb776ba7626707d1831c1f4c98ba05f5664cbefff6120cb633a67ec40733 +CT= 63888af48fa3d7c79a8f6a2ea14e4e4c1f713d8eb8d499bfc5ead07f4a86fe80 +PT= 0bb44a39f90ea2363e9a11c173688dcd756960a082d44af0863918f16eb1edff +TEST= 365 +KEY= d2ab814e92a9c051394b92dd6c241577709c06ec3c2bbce28a8f2b571075eacc +CT= 0bb44a39f90ea2363e9a11c173688dcd756960a082d44af0863918f16eb1edff +PT= 5c3d338f1f9e402217f529ec74e675b18bed4bd1db0fdf02e2e119389a625398 +TEST= 366 +KEY= 8e96b2c18d3780732ebebb3118c260c6fb714d3de72463e0686e326f8a17b954 +CT= 5c3d338f1f9e402217f529ec74e675b18bed4bd1db0fdf02e2e119389a625398 +PT= 704ca013d92ddebd765caf17dc43a65570f0865b674b3a2df2b1a2725827b7f9 +TEST= 367 +KEY= feda12d2541a5ece58e21426c481c6938b81cb66806f59cd9adf901dd2300ead +CT= 704ca013d92ddebd765caf17dc43a65570f0865b674b3a2df2b1a2725827b7f9 +PT= 4524f236b66a372f3cff299665534fbcd83487af540b121791d09c95cf85f366 +TEST= 368 +KEY= bbfee0e4e27069e1641d3db0a1d2892f53b54cc9d4644bda0b0f0c881db5fdcb +CT= 4524f236b66a372f3cff299665534fbcd83487af540b121791d09c95cf85f366 +PT= d32f35b294c5f2a4b79139b5409972f3249ad98bc8cfab1466d697022994cc4a +TEST= 369 +KEY= 68d1d55676b59b45d38c0405e14bfbdc772f95421cabe0ce6dd99b8a34213181 +CT= d32f35b294c5f2a4b79139b5409972f3249ad98bc8cfab1466d697022994cc4a +PT= 9678307a53b6b65736779bf47c54bf4cc0df993eb4254c1dd1343184b146ae3b +TEST= 370 +KEY= fea9e52c25032d12e5fb9ff19d1f4490b7f00c7ca88eacd3bcedaa0e85679fba +CT= 9678307a53b6b65736779bf47c54bf4cc0df993eb4254c1dd1343184b146ae3b +PT= 7e38601fac9df92dbdab6e1f7999f1d35fab7ea7d283db86d2c21c65bdb12896 +TEST= 371 +KEY= 80918533899ed43f5850f1eee486b543e85b72db7a0d77556e2fb66b38d6b72c +CT= 7e38601fac9df92dbdab6e1f7999f1d35fab7ea7d283db86d2c21c65bdb12896 +PT= 578077ce6db58071335d2ac67b5ae65a083a0d8f4a80db6ce984eeef6f8ab39e +TEST= 372 +KEY= d711f2fde42b544e6b0ddb289fdc5319e0617f54308dac3987ab5884575c04b2 +CT= 578077ce6db58071335d2ac67b5ae65a083a0d8f4a80db6ce984eeef6f8ab39e +PT= 371fb470232eb0cf45cf656f662727f0b99cccbfa8fda6bf169803f095170382 +TEST= 373 +KEY= e00e468dc705e4812ec2be47f9fb74e959fdb3eb98700a8691335b74c24b0730 +CT= 371fb470232eb0cf45cf656f662727f0b99cccbfa8fda6bf169803f095170382 +PT= 0fbb968f102955f8b478ea8e607dad6bf35eda2b4f880a95d18e33e2748ed227 +TEST= 374 +KEY= efb5d002d72cb1799aba54c99986d982aaa369c0d7f8001340bd6896b6c5d517 +CT= 0fbb968f102955f8b478ea8e607dad6bf35eda2b4f880a95d18e33e2748ed227 +PT= f980c4fd22932a2f75e0b09b11b9d949751fa7b1f79c4907a2677d32f23b1715 +TEST= 375 +KEY= 163514fff5bf9b56ef5ae452883f00cbdfbcce7120644914e2da15a444fec202 +CT= f980c4fd22932a2f75e0b09b11b9d949751fa7b1f79c4907a2677d32f23b1715 +PT= 9165a1bdad9109cf6a79097083002d7fd029ad56d010c2da0c07aabdc0321bd7 +TEST= 376 +KEY= 8750b542582e92998523ed220b3f2db40f956327f0748bceeeddbf1984ccd9d5 +CT= 9165a1bdad9109cf6a79097083002d7fd029ad56d010c2da0c07aabdc0321bd7 +PT= 92aaf85f6f6c96d2f6f5ba051709e28cc8477f10a06ba316b04e104127f1cd3c +TEST= 377 +KEY= 15fa4d1d3742044b73d657271c36cf38c7d21c37501f28d85e93af58a33d14e9 +CT= 92aaf85f6f6c96d2f6f5ba051709e28cc8477f10a06ba316b04e104127f1cd3c +PT= 62dbc987e665fb21940519273e6e2ffc0aa96e482e0de4d8410af67e01343b1d +TEST= 378 +KEY= 7721849ad127ff6ae7d34e002258e0c4cd7b727f7e12cc001f995926a2092ff4 +CT= 62dbc987e665fb21940519273e6e2ffc0aa96e482e0de4d8410af67e01343b1d +PT= dd5b917e28714a6849d6ebbd5622dabf596144d5f6845780faf08e405e55d30c +TEST= 379 +KEY= aa7a15e4f956b502ae05a5bd747a3a7b941a36aa88969b80e569d766fc5cfcf8 +CT= dd5b917e28714a6849d6ebbd5622dabf596144d5f6845780faf08e405e55d30c +PT= 4c83fc6bc7445f78a0eaa39379a98c7a2a372f29b61bddda142260c6f1e42fc2 +TEST= 380 +KEY= e6f9e98f3e12ea7a0eef062e0dd3b601be2d19833e8d465af14bb7a00db8d33a +CT= 4c83fc6bc7445f78a0eaa39379a98c7a2a372f29b61bddda142260c6f1e42fc2 +PT= 4d693b2d784f9e7e4a1f179ce4069d99e5ddbb71418e05fc5dcbdfe03c05c59e +TEST= 381 +KEY= ab90d2a2465d740444f011b2e9d52b985bf0a2f27f0343a6ac80684031bd16a4 +CT= 4d693b2d784f9e7e4a1f179ce4069d99e5ddbb71418e05fc5dcbdfe03c05c59e +PT= 64ca5df3d87d6fc5d6762d65828d6872e0279db454f1ebcdfdf01aa30e2c1dc0 +TEST= 382 +KEY= cf5a8f519e201bc192863cd76b5843eabbd73f462bf2a86b517072e33f910b64 +CT= 64ca5df3d87d6fc5d6762d65828d6872e0279db454f1ebcdfdf01aa30e2c1dc0 +PT= 1baf9cfd6ad4d3875d8589393e228d3e1396228dce34e6a57269dd67521bd591 +TEST= 383 +KEY= d4f513acf4f4c846cf03b5ee557aced4a8411dcbe5c64ece2319af846d8adef5 +CT= 1baf9cfd6ad4d3875d8589393e228d3e1396228dce34e6a57269dd67521bd591 +PT= 4849b8f1db064b6ca10fd3b728ccfa5d58d4048f4500d06157e6b87eec0a3ff4 +TEST= 384 +KEY= 9cbcab5d2ff2832a6e0c66597db63489f0951944a0c69eaf74ff17fa8180e101 +CT= 4849b8f1db064b6ca10fd3b728ccfa5d58d4048f4500d06157e6b87eec0a3ff4 +PT= b5d1fa6e62a35ca28b332cd4bf0d26ea0a14cd43e51e72043c2e7f2ab93c202d +TEST= 385 +KEY= 296d51334d51df88e53f4a8dc2bb1263fa81d40745d8ecab48d168d038bcc12c +CT= b5d1fa6e62a35ca28b332cd4bf0d26ea0a14cd43e51e72043c2e7f2ab93c202d +PT= aa509a2233cf206d89f33d9804b547f47ba260e71baf713b3a2496d3c0830166 +TEST= 386 +KEY= 833dcb117e9effe56ccc7715c60e55978123b4e05e779d9072f5fe03f83fc04a +CT= aa509a2233cf206d89f33d9804b547f47ba260e71baf713b3a2496d3c0830166 +PT= 68c6e54e055003ef59aecdfb01f04bd10cd1838b114bbd0b37217e92a75104b8 +TEST= 387 +KEY= ebfb2e5f7bcefc0a3562baeec7fe1e468df2376b4f3c209b45d480915f6ec4f2 +CT= 68c6e54e055003ef59aecdfb01f04bd10cd1838b114bbd0b37217e92a75104b8 +PT= d85e36035aa2726568138eb9c17f513f3a41ded73d42fd656eca0ff43bdf1ad2 +TEST= 388 +KEY= 33a5185c216c8e6f5d71345706814f79b7b3e9bc727eddfe2b1e8f6564b1de20 +CT= d85e36035aa2726568138eb9c17f513f3a41ded73d42fd656eca0ff43bdf1ad2 +PT= bdaf0a892f0e3ed195776e7e3d555d0ddddf6cfcde14ecb8eab90cd23e2d8404 +TEST= 389 +KEY= 8e0a12d50e62b0bec8065a293bd412746a6c8540ac6a3146c1a783b75a9c5a24 +CT= bdaf0a892f0e3ed195776e7e3d555d0ddddf6cfcde14ecb8eab90cd23e2d8404 +PT= 9275ea26a51429121b6c8556671fd7dc982ebbe57013b74870f9990bafb8528e +TEST= 390 +KEY= 1c7ff8f3ab7699acd36adf7f5ccbc5a8f2423ea5dc79860eb15e1abcf52408aa +CT= 9275ea26a51429121b6c8556671fd7dc982ebbe57013b74870f9990bafb8528e +PT= 43fed374d0a248f950e2ae7fd031df4f54c81d6a74145173970772124872c7ee +TEST= 391 +KEY= 5f812b877bd4d155838871008cfa1ae7a68a23cfa86dd77d265968aebd56cf44 +CT= 43fed374d0a248f950e2ae7fd031df4f54c81d6a74145173970772124872c7ee +PT= 4a8ecba5c7d87a39e1e16e876482ff0f022a8c4628ef99f0f92c7ca7478cad39 +TEST= 392 +KEY= 150fe022bc0cab6c62691f87e878e5e8a4a0af8980824e8ddf751409fada627d +CT= 4a8ecba5c7d87a39e1e16e876482ff0f022a8c4628ef99f0f92c7ca7478cad39 +PT= c92ef6c555e2d42aeff8a695d65ddff69c45ba31e2e491d73402b840ecc73f37 +TEST= 393 +KEY= dc2116e7e9ee7f468d91b9123e253a1e38e515b86266df5aeb77ac49161d5d4a +CT= c92ef6c555e2d42aeff8a695d65ddff69c45ba31e2e491d73402b840ecc73f37 +PT= a7db70510314785c1648d87aceebd21fbdcadb5c994634b7c64fd676478d3473 +TEST= 394 +KEY= 7bfa66b6eafa071a9bd96168f0cee801852fcee4fb20ebed2d387a3f51906939 +CT= a7db70510314785c1648d87aceebd21fbdcadb5c994634b7c64fd676478d3473 +PT= df6f70f85363cec4402aa48c32b50d1d7787da3dc5a0997f7775fd57c2c0fe30 +TEST= 395 +KEY= a495164eb999c9dedbf3c5e4c27be51cf2a814d93e8072925a4d876893509709 +CT= df6f70f85363cec4402aa48c32b50d1d7787da3dc5a0997f7775fd57c2c0fe30 +PT= 0dd3acd43ad1b7b93f29e1bcb1781731e111d544accfde42ed3907567395d097 +TEST= 396 +KEY= a946ba9a83487e67e4da24587303f22d13b9c19d924facd0b774803ee0c5479e +CT= 0dd3acd43ad1b7b93f29e1bcb1781731e111d544accfde42ed3907567395d097 +PT= 5e0b885a21ac7fece4396d784cc9cccb81459b34a1d90c8dc7742d3251efa145 +TEST= 397 +KEY= f74d32c0a2e4018b00e349203fca3ee692fc5aa93396a05d7000ad0cb12ae6db +CT= 5e0b885a21ac7fece4396d784cc9cccb81459b34a1d90c8dc7742d3251efa145 +PT= 9768466d16ae009d2fe0e4de906ea0ecda55061a2b1b9277e52cf1f1e9204563 +TEST= 398 +KEY= 602574adb44a01162f03adfeafa49e0a48a95cb3188d322a952c5cfd580aa3b8 +CT= 9768466d16ae009d2fe0e4de906ea0ecda55061a2b1b9277e52cf1f1e9204563 +PT= 72957842e5ac8c31f7f5cf2dbbf505139798c5cfa9d0d07e2b0c42208947ff08 +TEST= 399 +KEY= 12b00cef51e68d27d8f662d314519b19df31997cb15de254be201eddd14d5cb0 +CT= 72957842e5ac8c31f7f5cf2dbbf505139798c5cfa9d0d07e2b0c42208947ff08 +PT= e473b9305024d2fe35f42e0ca61e323b9f70d70d31c429657b46cec9aad1cf0c diff --git a/flint/test/testvals/ecbme44.txt b/flint/test/testvals/ecbme44.txt new file mode 100644 index 0000000..421ec84 --- /dev/null +++ b/flint/test/testvals/ecbme44.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= c34c052cc0da8d73451afe5f03be297f +TEST= 1 +KEY= c34c052cc0da8d73451afe5f03be297f +PT= c34c052cc0da8d73451afe5f03be297f +CT= 0ac15a9afbb24d54ad99e987208272e2 +TEST= 2 +KEY= c98d5fb63b68c027e88317d8233c5b9d +PT= 0ac15a9afbb24d54ad99e987208272e2 +CT= a3d43bffa65d0e80092f67a314857870 +TEST= 3 +KEY= 6a5964499d35cea7e1ac707b37b923ed +PT= a3d43bffa65d0e80092f67a314857870 +CT= 355f697e8b868b65b25a04e18d782afa +TEST= 4 +KEY= 5f060d3716b345c253f6749abac10917 +PT= 355f697e8b868b65b25a04e18d782afa +CT= acc863637868e3e068d2fd6e3508454a +TEST= 5 +KEY= f3ce6e546edba6223b2489f48fc94c5d +PT= acc863637868e3e068d2fd6e3508454a +CT= 665f9f12a824f3d52a1c71d6210d5470 +TEST= 6 +KEY= 9591f146c6ff55f71138f822aec4182d +PT= 665f9f12a824f3d52a1c71d6210d5470 +CT= 9b27361dbc8e5618e8e98036f5ad40b0 +TEST= 7 +KEY= 0eb6c75b7a7103eff9d178145b69589d +PT= 9b27361dbc8e5618e8e98036f5ad40b0 +CT= 21d9bd7eba0163a293f2d56c316cbd36 +TEST= 8 +KEY= 2f6f7a25c070604d6a23ad786a05e5ab +PT= 21d9bd7eba0163a293f2d56c316cbd36 +CT= 3e8037a9988e28ff81f2a7154acd91be +TEST= 9 +KEY= 11ef4d8c58fe48b2ebd10a6d20c87415 +PT= 3e8037a9988e28ff81f2a7154acd91be +CT= 014ee14f1aa8c0d4a47a72f197f4dcb0 +TEST= 10 +KEY= 10a1acc3425688664fab789cb73ca8a5 +PT= 014ee14f1aa8c0d4a47a72f197f4dcb0 +CT= 0b542083dbc03a96aa00c1a5ae58c9f1 +TEST= 11 +KEY= 1bf58c409996b2f0e5abb93919646154 +PT= 0b542083dbc03a96aa00c1a5ae58c9f1 +CT= 7340b59e1e3bb9211ce167f2debdb090 +TEST= 12 +KEY= 68b539de87ad0bd1f94adecbc7d9d1c4 +PT= 7340b59e1e3bb9211ce167f2debdb090 +CT= 67e05f75135ba834cbcdcff068541bbe +TEST= 13 +KEY= 0f5566ab94f6a3e53287113baf8dca7a +PT= 67e05f75135ba834cbcdcff068541bbe +CT= 8bd5553105c3507b0a07fdb351b25b4f +TEST= 14 +KEY= 8480339a9135f39e3880ec88fe3f9135 +PT= 8bd5553105c3507b0a07fdb351b25b4f +CT= 649f061f95c0a79bd3066effe5b27cab +TEST= 15 +KEY= e01f358504f55405eb8682771b8ded9e +PT= 649f061f95c0a79bd3066effe5b27cab +CT= 697f4eb0603340e90fe91c27b6d9ceaa +TEST= 16 +KEY= 89607b3564c614ece46f9e50ad542334 +PT= 697f4eb0603340e90fe91c27b6d9ceaa +CT= a8cbba624fa28a7f8637324e1e20cb9c +TEST= 17 +KEY= 21abc1572b649e936258ac1eb374e8a8 +PT= a8cbba624fa28a7f8637324e1e20cb9c +CT= 73b852132de715872a40eb25b1133c00 +TEST= 18 +KEY= 5213934406838b144818473b0267d4a8 +PT= 73b852132de715872a40eb25b1133c00 +CT= 1328a1c2f386bb3e4d4be0942b8249a2 +TEST= 19 +KEY= 413b3286f505302a0553a7af29e59d0a +PT= 1328a1c2f386bb3e4d4be0942b8249a2 +CT= 06f72dea0067f543aa8c342cc9191745 +TEST= 20 +KEY= 47cc1f6cf562c569afdf9383e0fc8a4f +PT= 06f72dea0067f543aa8c342cc9191745 +CT= 110b6011b60c94382c2321bfcaa62a1c +TEST= 21 +KEY= 56c77f7d436e515183fcb23c2a5aa053 +PT= 110b6011b60c94382c2321bfcaa62a1c +CT= 80c90ef6794361dfa400efe922f45a59 +TEST= 22 +KEY= d60e718b3a2d308e27fc5dd508aefa0a +PT= 80c90ef6794361dfa400efe922f45a59 +CT= f8df0ac62ee229245db1f300f2e5b143 +TEST= 23 +KEY= 2ed17b4d14cf19aa7a4daed5fa4b4b49 +PT= f8df0ac62ee229245db1f300f2e5b143 +CT= 45390146539e773b502e84a0c29ad5b0 +TEST= 24 +KEY= 6be87a0b47516e912a632a7538d19ef9 +PT= 45390146539e773b502e84a0c29ad5b0 +CT= b07721757865838bdfc2329998b5174f +TEST= 25 +KEY= db9f5b7e3f34ed1af5a118eca06489b6 +PT= b07721757865838bdfc2329998b5174f +CT= b83f3b7a9ffba35df1d6661a0f8ad0f4 +TEST= 26 +KEY= 63a06004a0cf4e4704777ef6afee5942 +PT= b83f3b7a9ffba35df1d6661a0f8ad0f4 +CT= 7098c99b1b245de623b78f1b07d08ebe +TEST= 27 +KEY= 1338a99fbbeb13a127c0f1eda83ed7fc +PT= 7098c99b1b245de623b78f1b07d08ebe +CT= 58a095ef9268b923920238486d0b13e1 +TEST= 28 +KEY= 4b983c702983aa82b5c2c9a5c535c41d +PT= 58a095ef9268b923920238486d0b13e1 +CT= 97dd8052ce0d87715075a42942c120ed +TEST= 29 +KEY= dc45bc22e78e2df3e5b76d8c87f4e4f0 +PT= 97dd8052ce0d87715075a42942c120ed +CT= f480b5a67dafcb9524dc21453af66faf +TEST= 30 +KEY= 28c509849a21e666c16b4cc9bd028b5f +PT= f480b5a67dafcb9524dc21453af66faf +CT= 71ce64ce8c98367f2f12e6851ac70ff3 +TEST= 31 +KEY= 590b6d4a16b9d019ee79aa4ca7c584ac +PT= 71ce64ce8c98367f2f12e6851ac70ff3 +CT= 81c3aa693cc1c647399701da17d5fdd5 +TEST= 32 +KEY= d8c8c7232a78165ed7eeab96b0107979 +PT= 81c3aa693cc1c647399701da17d5fdd5 +CT= 5bb93103f6ddf0415592ee2217704d41 +TEST= 33 +KEY= 8371f620dca5e61f827c45b4a7603438 +PT= 5bb93103f6ddf0415592ee2217704d41 +CT= 87b8b17ff9079829ab5c47e055ffcee3 +TEST= 34 +KEY= 04c9475f25a27e3629200254f29ffadb +PT= 87b8b17ff9079829ab5c47e055ffcee3 +CT= 615fe7d34154f42d6ce9d647904295e0 +TEST= 35 +KEY= 6596a08c64f68a1b45c9d41362dd6f3b +PT= 615fe7d34154f42d6ce9d647904295e0 +CT= a60c213cdf9b54df9041948f98585ce2 +TEST= 36 +KEY= c39a81b0bb6ddec4d588409cfa8533d9 +PT= a60c213cdf9b54df9041948f98585ce2 +CT= fb126c61071eb9167b6ff28e5244e624 +TEST= 37 +KEY= 3888edd1bc7367d2aee7b212a8c1d5fd +PT= fb126c61071eb9167b6ff28e5244e624 +CT= 8a79ce45f030b91b53d1591d10ff1b02 +TEST= 38 +KEY= b2f123944c43dec9fd36eb0fb83eceff +PT= 8a79ce45f030b91b53d1591d10ff1b02 +CT= be20190bae15162f43e93f67a580192b +TEST= 39 +KEY= 0cd13a9fe256c8e6bedfd4681dbed7d4 +PT= be20190bae15162f43e93f67a580192b +CT= 0107d3e3511f91545d02b498a9e3c318 +TEST= 40 +KEY= 0dd6e97cb34959b2e3dd60f0b45d14cc +PT= 0107d3e3511f91545d02b498a9e3c318 +CT= 2a832a1205d6b5fcf1b20126ee59dd9d +TEST= 41 +KEY= 2755c36eb69fec4e126f61d65a04c951 +PT= 2a832a1205d6b5fcf1b20126ee59dd9d +CT= f362782f550dcbfc49cef15c3a0aba7a +TEST= 42 +KEY= d437bb41e39227b25ba1908a600e732b +PT= f362782f550dcbfc49cef15c3a0aba7a +CT= 51a8a0c6434a3be8c939b6ddd56eaa53 +TEST= 43 +KEY= 859f1b87a0d81c5a92982657b560d978 +PT= 51a8a0c6434a3be8c939b6ddd56eaa53 +CT= 89d3f1086f3d96c18a76c61f25a52221 +TEST= 44 +KEY= 0c4cea8fcfe58a9b18eee04890c5fb59 +PT= 89d3f1086f3d96c18a76c61f25a52221 +CT= a5f7e0a5fa70ddb718ef970f50eb7b86 +TEST= 45 +KEY= a9bb0a2a3595572c00017747c02e80df +PT= a5f7e0a5fa70ddb718ef970f50eb7b86 +CT= 7bb64305538e71afbf993b5bd23d5523 +TEST= 46 +KEY= d20d492f661b2683bf984c1c1213d5fc +PT= 7bb64305538e71afbf993b5bd23d5523 +CT= e6bf8f5338568603ec668c6d15331fa5 +TEST= 47 +KEY= 34b2c67c5e4da08053fec0710720ca59 +PT= e6bf8f5338568603ec668c6d15331fa5 +CT= 27644649fcdf52085cdb20e3dee1e2f6 +TEST= 48 +KEY= 13d68035a292f2880f25e092d9c128af +PT= 27644649fcdf52085cdb20e3dee1e2f6 +CT= 7629aacaed7f49938373c83410ad1744 +TEST= 49 +KEY= 65ff2aff4fedbb1b8c5628a6c96c3feb +PT= 7629aacaed7f49938373c83410ad1744 +CT= d440fc6e9a65819934faf8641c05a17c +TEST= 50 +KEY= b1bfd691d5883a82b8acd0c2d5699e97 +PT= d440fc6e9a65819934faf8641c05a17c +CT= fbee29fefd725e1852b58502d3076c46 +TEST= 51 +KEY= 4a51ff6f28fa649aea1955c0066ef2d1 +PT= fbee29fefd725e1852b58502d3076c46 +CT= e345a47a6c89be4350cdd8c9d319529d +TEST= 52 +KEY= a9145b154473dad9bad48d09d577a04c +PT= e345a47a6c89be4350cdd8c9d319529d +CT= 1c6a7cbaf21e483b6025db6da573c5c6 +TEST= 53 +KEY= b57e27afb66d92e2daf156647004658a +PT= 1c6a7cbaf21e483b6025db6da573c5c6 +CT= 2b05f4d8eb50d851a013798753b65a1f +TEST= 54 +KEY= 9e7bd3775d3d4ab37ae22fe323b23f95 +PT= 2b05f4d8eb50d851a013798753b65a1f +CT= cefe04978228a0dbcce9ee42b21dd34a +TEST= 55 +KEY= 5085d7e0df15ea68b60bc1a191afecdf +PT= cefe04978228a0dbcce9ee42b21dd34a +CT= 7b41df8cd85b61ea800536648dbda2ae +TEST= 56 +KEY= 2bc4086c074e8b82360ef7c51c124e71 +PT= 7b41df8cd85b61ea800536648dbda2ae +CT= 08688872151d18cd19e2fc14b9e4c962 +TEST= 57 +KEY= 23ac801e1253934f2fec0bd1a5f68713 +PT= 08688872151d18cd19e2fc14b9e4c962 +CT= f08c88be5e748c4d82d2e7d7813a33af +TEST= 58 +KEY= d32008a04c271f02ad3eec0624ccb4bc +PT= f08c88be5e748c4d82d2e7d7813a33af +CT= 319b7d38ab1ac3aea0a0490c341f4f20 +TEST= 59 +KEY= e2bb7598e73ddcac0d9ea50a10d3fb9c +PT= 319b7d38ab1ac3aea0a0490c341f4f20 +CT= ee70748772e8d88b2717d78f31f0ea86 +TEST= 60 +KEY= 0ccb011f95d504272a8972852123111a +PT= ee70748772e8d88b2717d78f31f0ea86 +CT= a3a5dc791ea1bbb9d7a2b292572dfd5c +TEST= 61 +KEY= af6edd668b74bf9efd2bc017760eec46 +PT= a3a5dc791ea1bbb9d7a2b292572dfd5c +CT= 255692b06b3a18498bcaf99f7b3ee374 +TEST= 62 +KEY= 8a384fd6e04ea7d776e139880d300f32 +PT= 255692b06b3a18498bcaf99f7b3ee374 +CT= 500e492232891293875f50279b5dc5c3 +TEST= 63 +KEY= da3606f4d2c7b544f1be69af966dcaf1 +PT= 500e492232891293875f50279b5dc5c3 +CT= 57c3fcce9b5ba3bc19bbf7bb9b37a9ac +TEST= 64 +KEY= 8df5fa3a499c16f8e8059e140d5a635d +PT= 57c3fcce9b5ba3bc19bbf7bb9b37a9ac +CT= bf06fdfdb687c8b24fb0e2a6d6d37ea5 +TEST= 65 +KEY= 32f307c7ff1bde4aa7b57cb2db891df8 +PT= bf06fdfdb687c8b24fb0e2a6d6d37ea5 +CT= 6d459ed545cf3c6ff2746411cd9b3e31 +TEST= 66 +KEY= 5fb69912bad4e22555c118a3161223c9 +PT= 6d459ed545cf3c6ff2746411cd9b3e31 +CT= c74e0704a9d9ec2d90f75b34fc95cd32 +TEST= 67 +KEY= 98f89e16130d0e08c5364397ea87eefb +PT= c74e0704a9d9ec2d90f75b34fc95cd32 +CT= 0453d4fbc2d7f8e0ad0ad90f98d1ec5c +TEST= 68 +KEY= 9cab4aedd1daf6e8683c9a98725602a7 +PT= 0453d4fbc2d7f8e0ad0ad90f98d1ec5c +CT= 5bba052d6c39dc1e9553b7646cb7344b +TEST= 69 +KEY= c7114fc0bde32af6fd6f2dfc1ee136ec +PT= 5bba052d6c39dc1e9553b7646cb7344b +CT= 9870ffe04984426501ecb55ffbb363cb +TEST= 70 +KEY= 5f61b020f4676893fc8398a3e5525527 +PT= 9870ffe04984426501ecb55ffbb363cb +CT= 1363d65f7c943fc4512e41a717d3704d +TEST= 71 +KEY= 4c02667f88f35757adadd904f281256a +PT= 1363d65f7c943fc4512e41a717d3704d +CT= 664762aed6bc5fb74a646a928837fc83 +TEST= 72 +KEY= 2a4504d15e4f08e0e7c9b3967ab6d9e9 +PT= 664762aed6bc5fb74a646a928837fc83 +CT= 655cb6bab4b0532273689e4dc9234c42 +TEST= 73 +KEY= 4f19b26beaff5bc294a12ddbb39595ab +PT= 655cb6bab4b0532273689e4dc9234c42 +CT= e8aae0e0b9d2be6259aebc478dc90fd9 +TEST= 74 +KEY= a7b3528b532de5a0cd0f919c3e5c9a72 +PT= e8aae0e0b9d2be6259aebc478dc90fd9 +CT= fecacaf43dd920fa3078256c6a587741 +TEST= 75 +KEY= 5979987f6ef4c55afd77b4f05404ed33 +PT= fecacaf43dd920fa3078256c6a587741 +CT= 11f3f56529b8b172d87a4c86bb90f3b6 +TEST= 76 +KEY= 488a6d1a474c7428250df876ef941e85 +PT= 11f3f56529b8b172d87a4c86bb90f3b6 +CT= b44340d44f1aba37cb09fe57fc771a9e +TEST= 77 +KEY= fcc92dce0856ce1fee04062113e3041b +PT= b44340d44f1aba37cb09fe57fc771a9e +CT= c49f12b88c34a0d696fe283b01d5710c +TEST= 78 +KEY= 38563f7684626ec978fa2e1a12367517 +PT= c49f12b88c34a0d696fe283b01d5710c +CT= 58d6d2d36c14ddbda7604ab740918d76 +TEST= 79 +KEY= 6080eda5e876b374df9a64ad52a7f861 +PT= 58d6d2d36c14ddbda7604ab740918d76 +CT= 21f735f77b0ead7551ce06900a568eb3 +TEST= 80 +KEY= 4177d85293781e018e54623d58f176d2 +PT= 21f735f77b0ead7551ce06900a568eb3 +CT= fe2e9bdb393bf6d1bbf108b8ac3b6818 +TEST= 81 +KEY= bf594389aa43e8d035a56a85f4ca1eca +PT= fe2e9bdb393bf6d1bbf108b8ac3b6818 +CT= fecfcd3722c6c8e6608258341220e739 +TEST= 82 +KEY= 41968ebe88852036552732b1e6eaf9f3 +PT= fecfcd3722c6c8e6608258341220e739 +CT= 10a8bb234c9d9a22dec7887e931f85bd +TEST= 83 +KEY= 513e359dc418ba148be0bacf75f57c4e +PT= 10a8bb234c9d9a22dec7887e931f85bd +CT= 767eb7dba70bc7094df7a5bdd233eb5c +TEST= 84 +KEY= 2740824663137d1dc6171f72a7c69712 +PT= 767eb7dba70bc7094df7a5bdd233eb5c +CT= fcd7184f3f4db7ca182225b9a358209d +TEST= 85 +KEY= db979a095c5ecad7de353acb049eb78f +PT= fcd7184f3f4db7ca182225b9a358209d +CT= a5cd025aebf0380eac66ef034806179f +TEST= 86 +KEY= 7e5a9853b7aef2d97253d5c84c98a010 +PT= a5cd025aebf0380eac66ef034806179f +CT= fe46f4a72c7031fe8d900152cd20b95f +TEST= 87 +KEY= 801c6cf49bdec327ffc3d49a81b8194f +PT= fe46f4a72c7031fe8d900152cd20b95f +CT= cf1acb502a4b608c61364891e34f93a0 +TEST= 88 +KEY= 4f06a7a4b195a3ab9ef59c0b62f78aef +PT= cf1acb502a4b608c61364891e34f93a0 +CT= 95ab1367ff6c03de87ffa282a3e52200 +TEST= 89 +KEY= daadb4c34ef9a075190a3e89c112a8ef +PT= 95ab1367ff6c03de87ffa282a3e52200 +CT= 762b6393252b347f55af3e4ca16f2fc9 +TEST= 90 +KEY= ac86d7506bd2940a4ca500c5607d8726 +PT= 762b6393252b347f55af3e4ca16f2fc9 +CT= a63491a22e23ad921adab9cc0da20521 +TEST= 91 +KEY= 0ab246f245f13998567fb9096ddf8207 +PT= a63491a22e23ad921adab9cc0da20521 +CT= c0852a5e7ceeafb5fa87c440b598bfd6 +TEST= 92 +KEY= ca376cac391f962dacf87d49d8473dd1 +PT= c0852a5e7ceeafb5fa87c440b598bfd6 +CT= 485747c528b08033169e991e98e4cbb5 +TEST= 93 +KEY= 82602b6911af161eba66e45740a3f664 +PT= 485747c528b08033169e991e98e4cbb5 +CT= 415b95b222161a8c9ed20cf99c26848c +TEST= 94 +KEY= c33bbedb33b90c9224b4e8aedc8572e8 +PT= 415b95b222161a8c9ed20cf99c26848c +CT= 7e673e6348c38cd40c9b11f4c9f3e3a0 +TEST= 95 +KEY= bd5c80b87b7a8046282ff95a15769148 +PT= 7e673e6348c38cd40c9b11f4c9f3e3a0 +CT= b88508e55279aff0d848c38dbec76b2c +TEST= 96 +KEY= 05d9885d29032fb6f0673ad7abb1fa64 +PT= b88508e55279aff0d848c38dbec76b2c +CT= 3902b5dc34e815ba50a53db9c8ffaa92 +TEST= 97 +KEY= 3cdb3d811deb3a0ca0c2076e634e50f6 +PT= 3902b5dc34e815ba50a53db9c8ffaa92 +CT= fef57f51360547ea6b88085b8656a1d0 +TEST= 98 +KEY= c22e42d02bee7de6cb4a0f35e518f126 +PT= fef57f51360547ea6b88085b8656a1d0 +CT= 94d052e1f097106a5b714add0ef79e64 +TEST= 99 +KEY= 56fe1031db796d8c903b45e8ebef6f42 +PT= 94d052e1f097106a5b714add0ef79e64 +CT= 7fd3ef411360e5270f63a8bacccc74c0 +TEST= 100 +KEY= 292dff70c81988ab9f58ed5227231b82 +PT= 7fd3ef411360e5270f63a8bacccc74c0 +CT= f572692de6efbc2309b947d1a75be009 +TEST= 101 +KEY= dc5f965d2ef6348896e1aa838078fb8b +PT= f572692de6efbc2309b947d1a75be009 +CT= bfd3233c513448c283c05311b8085b5c +TEST= 102 +KEY= 638cb5617fc27c4a1521f9923870a0d7 +PT= bfd3233c513448c283c05311b8085b5c +CT= 078739f570071aa1a96a1f00f31e05fd +TEST= 103 +KEY= 640b8c940fc566ebbc4be692cb6ea52a +PT= 078739f570071aa1a96a1f00f31e05fd +CT= 947ca236277cdd0ac13c194b99e8cf16 +TEST= 104 +KEY= f0772ea228b9bbe17d77ffd952866a3c +PT= 947ca236277cdd0ac13c194b99e8cf16 +CT= 34de5f2d355bc4ace54ad0cb8c008cb8 +TEST= 105 +KEY= c4a9718f1de27f4d983d2f12de86e684 +PT= 34de5f2d355bc4ace54ad0cb8c008cb8 +CT= e5729cbd84c89b914f35412f902a2ca3 +TEST= 106 +KEY= 21dbed32992ae4dcd7086e3d4eacca27 +PT= e5729cbd84c89b914f35412f902a2ca3 +CT= eb326d6abafc93eadbec9b05ce4aaf0c +TEST= 107 +KEY= cae9805823d677360ce4f53880e6652b +PT= eb326d6abafc93eadbec9b05ce4aaf0c +CT= 9f088089f8d8e8e28a9a2a1ff50f2ed3 +TEST= 108 +KEY= 55e100d1db0e9fd4867edf2775e94bf8 +PT= 9f088089f8d8e8e28a9a2a1ff50f2ed3 +CT= c8d2bf3d6adb57f478656d4808142160 +TEST= 109 +KEY= 9d33bfecb1d5c820fe1bb26f7dfd6a98 +PT= c8d2bf3d6adb57f478656d4808142160 +CT= 062016811215b9dbdd3c794a15fbebba +TEST= 110 +KEY= 9b13a96da3c071fb2327cb2568068122 +PT= 062016811215b9dbdd3c794a15fbebba +CT= 71f9f04e9aed1c302e5ed2ad36b5c7f5 +TEST= 111 +KEY= eaea5923392d6dcb0d7919885eb346d7 +PT= 71f9f04e9aed1c302e5ed2ad36b5c7f5 +CT= 253982568f6c3fdfde173e46b614989c +TEST= 112 +KEY= cfd3db75b6415214d36e27cee8a7de4b +PT= 253982568f6c3fdfde173e46b614989c +CT= 6d51d51276a6fa9c933e4d4496d0455e +TEST= 113 +KEY= a2820e67c0e7a88840506a8a7e779b15 +PT= 6d51d51276a6fa9c933e4d4496d0455e +CT= b9a6924f773ce826bbbc6ddbfa4e146a +TEST= 114 +KEY= 1b249c28b7db40aefbec075184398f7f +PT= b9a6924f773ce826bbbc6ddbfa4e146a +CT= 474943c523162bc81186779a07144bc6 +TEST= 115 +KEY= 5c6ddfed94cd6b66ea6a70cb832dc4b9 +PT= 474943c523162bc81186779a07144bc6 +CT= 20128a092b99b4bc212b1107c3ba1df9 +TEST= 116 +KEY= 7c7f55e4bf54dfdacb4161cc4097d940 +PT= 20128a092b99b4bc212b1107c3ba1df9 +CT= 90330b8fb5a50e958250a953ef5145c7 +TEST= 117 +KEY= ec4c5e6b0af1d14f4911c89fafc69c87 +PT= 90330b8fb5a50e958250a953ef5145c7 +CT= c1b788d0eb2c8c7b9e020cc2beacd595 +TEST= 118 +KEY= 2dfbd6bbe1dd5d34d713c45d116a4912 +PT= c1b788d0eb2c8c7b9e020cc2beacd595 +CT= ef87960dabbe82f6cfa8045ce4a9eed0 +TEST= 119 +KEY= c27c40b64a63dfc218bbc001f5c3a7c2 +PT= ef87960dabbe82f6cfa8045ce4a9eed0 +CT= 405c8408d5027df90cbe3159701d161a +TEST= 120 +KEY= 8220c4be9f61a23b1405f15885deb1d8 +PT= 405c8408d5027df90cbe3159701d161a +CT= fcab7f88e85d6573a98d23d684a5a5f3 +TEST= 121 +KEY= 7e8bbb36773cc748bd88d28e017b142b +PT= fcab7f88e85d6573a98d23d684a5a5f3 +CT= 191e6f1eecbf5149f4d49446e97d8820 +TEST= 122 +KEY= 6795d4289b839601495c46c8e8069c0b +PT= 191e6f1eecbf5149f4d49446e97d8820 +CT= c77128f53d48594194efba67e46c6b23 +TEST= 123 +KEY= a0e4fcdda6cbcf40ddb3fcaf0c6af728 +PT= c77128f53d48594194efba67e46c6b23 +CT= dfb898170571450cc5e2244ae4d3af43 +TEST= 124 +KEY= 7f5c64caa3ba8a4c1851d8e5e8b9586b +PT= dfb898170571450cc5e2244ae4d3af43 +CT= 3bd1633b5053609a3b42cc098f9f5d87 +TEST= 125 +KEY= 448d07f1f3e9ead6231314ec672605ec +PT= 3bd1633b5053609a3b42cc098f9f5d87 +CT= ac15b23f205aeb10470f853ba18361e0 +TEST= 126 +KEY= e898b5ced3b301c6641c91d7c6a5640c +PT= ac15b23f205aeb10470f853ba18361e0 +CT= 2da73ba6e01b1adfbeeafa2e37942078 +TEST= 127 +KEY= c53f8e6833a81b19daf66bf9f1314474 +PT= 2da73ba6e01b1adfbeeafa2e37942078 +CT= c5b3d7089173958b32340b88d35b738b +TEST= 128 +KEY= 008c5960a2db8e92e8c26071226a37ff +PT= c5b3d7089173958b32340b88d35b738b +CT= 8318baa96569f3adcd30c08d54494392 +TEST= 129 +KEY= 8394e3c9c7b27d3f25f2a0fc7623746d +PT= 8318baa96569f3adcd30c08d54494392 +CT= 4f6f2a06a1a344b261084563bccc5a5a +TEST= 130 +KEY= ccfbc9cf6611398d44fae59fcaef2e37 +PT= 4f6f2a06a1a344b261084563bccc5a5a +CT= 07ec18166362bf049a48d146a63ff378 +TEST= 131 +KEY= cb17d1d905738689deb234d96cd0dd4f +PT= 07ec18166362bf049a48d146a63ff378 +CT= 81cb17abac28a3ed135442454c212646 +TEST= 132 +KEY= 4adcc672a95b2564cde6769c20f1fb09 +PT= 81cb17abac28a3ed135442454c212646 +CT= c1cbde45e27b9b1198ce93a51e38d9c5 +TEST= 133 +KEY= 8b1718374b20be755528e5393ec922cc +PT= c1cbde45e27b9b1198ce93a51e38d9c5 +CT= 8e4eb89ddfee065784556fa0b426954a +TEST= 134 +KEY= 0559a0aa94ceb822d17d8a998aefb786 +PT= 8e4eb89ddfee065784556fa0b426954a +CT= 6a966414cc6fe52f957e9de7012ec4bd +TEST= 135 +KEY= 6fcfc4be58a15d0d4403177e8bc1733b +PT= 6a966414cc6fe52f957e9de7012ec4bd +CT= 7c88474d963bfdfe61f052f51d1796ef +TEST= 136 +KEY= 134783f3ce9aa0f325f3458b96d6e5d4 +PT= 7c88474d963bfdfe61f052f51d1796ef +CT= 6269f5da04b09d442ddcb46001573ae9 +TEST= 137 +KEY= 712e7629ca2a3db7082ff1eb9781df3d +PT= 6269f5da04b09d442ddcb46001573ae9 +CT= fbd2965ace0b360a12ef39873a8f3805 +TEST= 138 +KEY= 8afce07304210bbd1ac0c86cad0ee738 +PT= fbd2965ace0b360a12ef39873a8f3805 +CT= 5b46ef12c9be55dcd5571d82e5bc6ff1 +TEST= 139 +KEY= d1ba0f61cd9f5e61cf97d5ee48b288c9 +PT= 5b46ef12c9be55dcd5571d82e5bc6ff1 +CT= 403defdb60876f3161cf02f319f5ea9a +TEST= 140 +KEY= 9187e0baad183150ae58d71d51476253 +PT= 403defdb60876f3161cf02f319f5ea9a +CT= 70fd321c583c1b54ed6ad3a79721e84a +TEST= 141 +KEY= e17ad2a6f5242a04433204bac6668a19 +PT= 70fd321c583c1b54ed6ad3a79721e84a +CT= 32ae26e948d563782532ac711bfab644 +TEST= 142 +KEY= d3d4f44fbdf1497c6600a8cbdd9c3c5d +PT= 32ae26e948d563782532ac711bfab644 +CT= ecf948f5ebb98e4c7286046e0f7af127 +TEST= 143 +KEY= 3f2dbcba5648c7301486aca5d2e6cd7a +PT= ecf948f5ebb98e4c7286046e0f7af127 +CT= 818f87efa0b5e4098e737ad44db537ba +TEST= 144 +KEY= bea23b55f6fd23399af5d6719f53fac0 +PT= 818f87efa0b5e4098e737ad44db537ba +CT= 029f170737413f1bfbe02c292d506e44 +TEST= 145 +KEY= bc3d2c52c1bc1c226115fa58b2039484 +PT= 029f170737413f1bfbe02c292d506e44 +CT= 77a7c520912761121373e35fd3b5af0f +TEST= 146 +KEY= cb9ae972509b7d307266190761b63b8b +PT= 77a7c520912761121373e35fd3b5af0f +CT= d407b965c368e1f77195ed446beeba73 +TEST= 147 +KEY= 1f9d501793f39cc703f3f4430a5881f8 +PT= d407b965c368e1f77195ed446beeba73 +CT= d1f304e0b3614a4840f128aa364ba6a3 +TEST= 148 +KEY= ce6e54f72092d68f4302dce93c13275b +PT= d1f304e0b3614a4840f128aa364ba6a3 +CT= 69b748543ee72474d0cc301bdbd50a6c +TEST= 149 +KEY= a7d91ca31e75f2fb93ceecf2e7c62d37 +PT= 69b748543ee72474d0cc301bdbd50a6c +CT= ba471d91dbc6d27eba7b510e67830c3f +TEST= 150 +KEY= 1d9e0132c5b3208529b5bdfc80452108 +PT= ba471d91dbc6d27eba7b510e67830c3f +CT= 7c0cf396d078e01a741613b1e1d7a9cb +TEST= 151 +KEY= 6192f2a415cbc09f5da3ae4d619288c3 +PT= 7c0cf396d078e01a741613b1e1d7a9cb +CT= 6f670a289398f49c75acbbe9eac2abfc +TEST= 152 +KEY= 0ef5f88c86533403280f15a48b50233f +PT= 6f670a289398f49c75acbbe9eac2abfc +CT= c392ef479528bf1b02296e6c894e4fdd +TEST= 153 +KEY= cd6717cb137b8b182a267bc8021e6ce2 +PT= c392ef479528bf1b02296e6c894e4fdd +CT= c4226c8c98d5f137a4c6a239e04b0fb3 +TEST= 154 +KEY= 09457b478bae7a2f8ee0d9f1e2556351 +PT= c4226c8c98d5f137a4c6a239e04b0fb3 +CT= 2382714fc945ad4a1e03858b63973b9e +TEST= 155 +KEY= 2ac70a0842ebd76590e35c7a81c258cf +PT= 2382714fc945ad4a1e03858b63973b9e +CT= e41f350ac9320a8a23e27c0349978168 +TEST= 156 +KEY= ced83f028bd9ddefb3012079c855d9a7 +PT= e41f350ac9320a8a23e27c0349978168 +CT= 7e9137997cb7676f3d0141797c6f31a8 +TEST= 157 +KEY= b049089bf76eba808e006100b43ae80f +PT= 7e9137997cb7676f3d0141797c6f31a8 +CT= 4bf7ebc15369a757981ee4a0b7f55706 +TEST= 158 +KEY= fbbee35aa4071dd7161e85a003cfbf09 +PT= 4bf7ebc15369a757981ee4a0b7f55706 +CT= ec677e86a8d2a5935d33d6471a58a781 +TEST= 159 +KEY= 17d99ddc0cd5b8444b2d53e719971888 +PT= ec677e86a8d2a5935d33d6471a58a781 +CT= f31066d48884bc9b37f218fcf385344b +TEST= 160 +KEY= e4c9fb08845104df7cdf4b1bea122cc3 +PT= f31066d48884bc9b37f218fcf385344b +CT= 51cfea4e482a7b7bcf4d31da5ced4370 +TEST= 161 +KEY= b5061146cc7b7fa4b3927ac1b6ff6fb3 +PT= 51cfea4e482a7b7bcf4d31da5ced4370 +CT= 89f3cd1590669a16f8460991bfd3cf5c +TEST= 162 +KEY= 3cf5dc535c1de5b24bd47350092ca0ef +PT= 89f3cd1590669a16f8460991bfd3cf5c +CT= 9930da8e5dbc1f6c87b0b41bd386e2e0 +TEST= 163 +KEY= a5c506dd01a1fadecc64c74bdaaa420f +PT= 9930da8e5dbc1f6c87b0b41bd386e2e0 +CT= 41a8cb583e5b9d2ba7cda3763b6529c0 +TEST= 164 +KEY= e46dcd853ffa67f56ba9643de1cf6bcf +PT= 41a8cb583e5b9d2ba7cda3763b6529c0 +CT= 53479dcfb0c69624b42b9c272b0a1a85 +TEST= 165 +KEY= b72a504a8f3cf1d1df82f81acac5714a +PT= 53479dcfb0c69624b42b9c272b0a1a85 +CT= e72f27ae86e913ef55309120358bad35 +TEST= 166 +KEY= 500577e409d5e23e8ab2693aff4edc7f +PT= e72f27ae86e913ef55309120358bad35 +CT= 9b1ef901bacc70819dbc627c7cdc8cd9 +TEST= 167 +KEY= cb1b8ee5b31992bf170e0b46839250a6 +PT= 9b1ef901bacc70819dbc627c7cdc8cd9 +CT= 9546c7b789345e4c32ee84bce8e78c7e +TEST= 168 +KEY= 5e5d49523a2dccf325e08ffa6b75dcd8 +PT= 9546c7b789345e4c32ee84bce8e78c7e +CT= 33700b93e03ce8202bac7e64e3255108 +TEST= 169 +KEY= 6d2d42c1da1124d30e4cf19e88508dd0 +PT= 33700b93e03ce8202bac7e64e3255108 +CT= 44246615bca5c0a8dcb7e63729398f0a +TEST= 170 +KEY= 290924d466b4e47bd2fb17a9a16902da +PT= 44246615bca5c0a8dcb7e63729398f0a +CT= 3215fc55fee5a30bfa11f8ebbc912652 +TEST= 171 +KEY= 1b1cd8819851477028eaef421df82488 +PT= 3215fc55fee5a30bfa11f8ebbc912652 +CT= 796c9136407bc4f484b253daeb206912 +TEST= 172 +KEY= 627049b7d82a8384ac58bc98f6d84d9a +PT= 796c9136407bc4f484b253daeb206912 +CT= b18977b404f0671c10aa979389408cca +TEST= 173 +KEY= d3f93e03dcdae498bcf22b0b7f98c150 +PT= b18977b404f0671c10aa979389408cca +CT= b2592621ee947d4ed9ad4295e0675f93 +TEST= 174 +KEY= 61a01822324e99d6655f699e9fff9ec3 +PT= b2592621ee947d4ed9ad4295e0675f93 +CT= 62d3b7e28765da8f83ebe19c97293c0a +TEST= 175 +KEY= 0373afc0b52b4359e6b4880208d6a2c9 +PT= 62d3b7e28765da8f83ebe19c97293c0a +CT= f417d650d6b7631542cff8f95fc81c9b +TEST= 176 +KEY= f7647990639c204ca47b70fb571ebe52 +PT= f417d650d6b7631542cff8f95fc81c9b +CT= 700a5de153d6b438fff7ba902dec32ff +TEST= 177 +KEY= 876e2471304a94745b8cca6b7af28cad +PT= 700a5de153d6b438fff7ba902dec32ff +CT= 67dc08a48f1ec7e32121b8693bb23621 +TEST= 178 +KEY= e0b22cd5bf5453977aad72024140ba8c +PT= 67dc08a48f1ec7e32121b8693bb23621 +CT= 90038bb156a7f7992e260e9cbfac0d82 +TEST= 179 +KEY= 70b1a764e9f3a40e548b7c9efeecb70e +PT= 90038bb156a7f7992e260e9cbfac0d82 +CT= c6bb1407c2d037bf238bec772ba95352 +TEST= 180 +KEY= b60ab3632b2393b1770090e9d545e45c +PT= c6bb1407c2d037bf238bec772ba95352 +CT= 8c3d249574ff74f84053977219d69f5e +TEST= 181 +KEY= 3a3797f65fdce7493753079bcc937b02 +PT= 8c3d249574ff74f84053977219d69f5e +CT= 131f7fc5a1528ad5dcb167afaa8bfd47 +TEST= 182 +KEY= 2928e833fe8e6d9cebe2603466188645 +PT= 131f7fc5a1528ad5dcb167afaa8bfd47 +CT= 6e68ae6fdf2c10b42b85486d3efbceb9 +TEST= 183 +KEY= 4740465c21a27d28c067285958e348fc +PT= 6e68ae6fdf2c10b42b85486d3efbceb9 +CT= 26808abfa3967d742d64a26cadf8dd70 +TEST= 184 +KEY= 61c0cce38234005ced038a35f51b958c +PT= 26808abfa3967d742d64a26cadf8dd70 +CT= 8bbcba5e4c219d000a2f6b701cda09c3 +TEST= 185 +KEY= ea7c76bdce159d5ce72ce145e9c19c4f +PT= 8bbcba5e4c219d000a2f6b701cda09c3 +CT= 5d707bb328beff51c8c1d984c1608aa0 +TEST= 186 +KEY= b70c0d0ee6ab620d2fed38c128a116ef +PT= 5d707bb328beff51c8c1d984c1608aa0 +CT= 8d0a485482b914fc282c2da9f7147d0c +TEST= 187 +KEY= 3a06455a641276f107c11568dfb56be3 +PT= 8d0a485482b914fc282c2da9f7147d0c +CT= c5678bc12445627cbaa94177f070f736 +TEST= 188 +KEY= ff61ce9b4057148dbd68541f2fc59cd5 +PT= c5678bc12445627cbaa94177f070f736 +CT= eb9b50846e92c20cd6edba7a3a260684 +TEST= 189 +KEY= 14fa9e1f2ec5d6816b85ee6515e39a51 +PT= eb9b50846e92c20cd6edba7a3a260684 +CT= e2178b471a3f72a271013c4cbe41fa1c +TEST= 190 +KEY= f6ed155834faa4231a84d229aba2604d +PT= e2178b471a3f72a271013c4cbe41fa1c +CT= c10c8084a17d90339e5ed8c638b902a4 +TEST= 191 +KEY= 37e195dc9587341084da0aef931b62e9 +PT= c10c8084a17d90339e5ed8c638b902a4 +CT= 03c839ccf269548279f30a1f45c30556 +TEST= 192 +KEY= 3429ac1067ee6092fd2900f0d6d867bf +PT= 03c839ccf269548279f30a1f45c30556 +CT= 1c5dc5c94b5c7e332d4122a0a4facd96 +TEST= 193 +KEY= 287469d92cb21ea1d06822507222aa29 +PT= 1c5dc5c94b5c7e332d4122a0a4facd96 +CT= e7292b7d15e9311f242facfafc0b0b81 +TEST= 194 +KEY= cf5d42a4395b2fbef4478eaa8e29a1a8 +PT= e7292b7d15e9311f242facfafc0b0b81 +CT= ea6df86eee09613104db81b97b949aec +TEST= 195 +KEY= 2530bacad7524e8ff09c0f13f5bd3b44 +PT= ea6df86eee09613104db81b97b949aec +CT= 8fbccdeba43fe3ffde4c3c279bdd4a27 +TEST= 196 +KEY= aa8c7721736dad702ed033346e607163 +PT= 8fbccdeba43fe3ffde4c3c279bdd4a27 +CT= 985971be962c63b0f50d1004963e9bed +TEST= 197 +KEY= 32d5069fe541cec0dbdd2330f85eea8e +PT= 985971be962c63b0f50d1004963e9bed +CT= f2cc0ff4b6d2f88766f1b8be370fe463 +TEST= 198 +KEY= c019096b53933647bd2c9b8ecf510eed +PT= f2cc0ff4b6d2f88766f1b8be370fe463 +CT= fe33f823b7b97fc017b35b6e22415d3e +TEST= 199 +KEY= 3e2af148e42a4987aa9fc0e0ed1053d3 +PT= fe33f823b7b97fc017b35b6e22415d3e +CT= 465d804a6053ec2580b59f0cd645c060 +TEST= 200 +KEY= 787771028479a5a22a2a5fec3b5593b3 +PT= 465d804a6053ec2580b59f0cd645c060 +CT= de05ad28693e3d471b8f39bad1803c0e +TEST= 201 +KEY= a672dc2aed4798e531a56656ead5afbd +PT= de05ad28693e3d471b8f39bad1803c0e +CT= 61eb397d55a2fc3d78974c8a10200ac6 +TEST= 202 +KEY= c799e557b8e564d849322adcfaf5a57b +PT= 61eb397d55a2fc3d78974c8a10200ac6 +CT= bd95d742d81ad795aa4e10fb41f54294 +TEST= 203 +KEY= 7a0c321560ffb34de37c3a27bb00e7ef +PT= bd95d742d81ad795aa4e10fb41f54294 +CT= f43a1e8c6e057e68414d23da6932de2c +TEST= 204 +KEY= 8e362c990efacd25a23119fdd23239c3 +PT= f43a1e8c6e057e68414d23da6932de2c +CT= 8ebb208032245988e851148b34b92f0e +TEST= 205 +KEY= 008d0c193cde94ad4a600d76e68b16cd +PT= 8ebb208032245988e851148b34b92f0e +CT= 2f18b4b14a360e06c50c89a4e6fe6c17 +TEST= 206 +KEY= 2f95b8a876e89aab8f6c84d200757ada +PT= 2f18b4b14a360e06c50c89a4e6fe6c17 +CT= 681e131fa7ea5ebe10b59d3f16009582 +TEST= 207 +KEY= 478babb7d102c4159fd919ed1675ef58 +PT= 681e131fa7ea5ebe10b59d3f16009582 +CT= 376fa31cc9d18e756e96715d61403c5d +TEST= 208 +KEY= 70e408ab18d34a60f14f68b07735d305 +PT= 376fa31cc9d18e756e96715d61403c5d +CT= 519e87e4a1ac61c376842f028d1bd75f +TEST= 209 +KEY= 217a8f4fb97f2ba387cb47b2fa2e045a +PT= 519e87e4a1ac61c376842f028d1bd75f +CT= bfaed9e9964967342808c6c332e02204 +TEST= 210 +KEY= 9ed456a62f364c97afc38171c8ce265e +PT= bfaed9e9964967342808c6c332e02204 +CT= 5a9f55c61a03d6a3196ffd6879cbca02 +TEST= 211 +KEY= c44b036035359a34b6ac7c19b105ec5c +PT= 5a9f55c61a03d6a3196ffd6879cbca02 +CT= 0fd872478223cde765a62036edd6f42f +TEST= 212 +KEY= cb937127b71657d3d30a5c2f5cd31873 +PT= 0fd872478223cde765a62036edd6f42f +CT= 965ed2af7d26cda8a8b7e7b2f1ada768 +TEST= 213 +KEY= 5dcda388ca309a7b7bbdbb9dad7ebf1b +PT= 965ed2af7d26cda8a8b7e7b2f1ada768 +CT= 05599b8d42d92457605a69200c6dc0aa +TEST= 214 +KEY= 5894380588e9be2c1be7d2bda1137fb1 +PT= 05599b8d42d92457605a69200c6dc0aa +CT= 3436a49ee590788f625a6fb44bf72fa3 +TEST= 215 +KEY= 6ca29c9b6d79c6a379bdbd09eae45012 +PT= 3436a49ee590788f625a6fb44bf72fa3 +CT= db181195eff35e307167bada138a837a +TEST= 216 +KEY= b7ba8d0e828a989308da07d3f96ed368 +PT= db181195eff35e307167bada138a837a +CT= 45e06b534233447e3cb696c1dd179477 +TEST= 217 +KEY= f25ae65dc0b9dced346c91122479471f +PT= 45e06b534233447e3cb696c1dd179477 +CT= d2edc4e2b4edd671d984e8aa5babaad7 +TEST= 218 +KEY= 20b722bf74540a9cede879b87fd2edc8 +PT= d2edc4e2b4edd671d984e8aa5babaad7 +CT= db92f4e9f2dd6a61e20a79cfc82cd061 +TEST= 219 +KEY= fb25d656868960fd0fe20077b7fe3da9 +PT= db92f4e9f2dd6a61e20a79cfc82cd061 +CT= 79383629df124fd94a1c36becb711747 +TEST= 220 +KEY= 821de07f599b2f2445fe36c97c8f2aee +PT= 79383629df124fd94a1c36becb711747 +CT= 3f3f592fb3db51cf08b70e6f2174ab43 +TEST= 221 +KEY= bd22b950ea407eeb4d4938a65dfb81ad +PT= 3f3f592fb3db51cf08b70e6f2174ab43 +CT= d34fda2917e9697118502cb7a6cae07c +TEST= 222 +KEY= 6e6d6379fda9179a55191411fb3161d1 +PT= d34fda2917e9697118502cb7a6cae07c +CT= 24d2c38e5c52a404dbe0d8bb6da44aee +TEST= 223 +KEY= 4abfa0f7a1fbb39e8ef9ccaa96952b3f +PT= 24d2c38e5c52a404dbe0d8bb6da44aee +CT= 2ed6a7503b3547c04e0b7b709218cd4a +TEST= 224 +KEY= 646907a79acef45ec0f2b7da048de675 +PT= 2ed6a7503b3547c04e0b7b709218cd4a +CT= 4f11be7a8b5d1a04ab82f60000bc7b50 +TEST= 225 +KEY= 2b78b9dd1193ee5a6b7041da04319d25 +PT= 4f11be7a8b5d1a04ab82f60000bc7b50 +CT= b98b51b76b262cb9ed157567a05770af +TEST= 226 +KEY= 92f3e86a7ab5c2e3866534bda466ed8a +PT= b98b51b76b262cb9ed157567a05770af +CT= d6ca5483f89d5aa01dbcfebe30c26f5e +TEST= 227 +KEY= 4439bce9822898439bd9ca0394a482d4 +PT= d6ca5483f89d5aa01dbcfebe30c26f5e +CT= 7706922eba53937e287084c8fdfeb33f +TEST= 228 +KEY= 333f2ec7387b0b3db3a94ecb695a31eb +PT= 7706922eba53937e287084c8fdfeb33f +CT= 0f2da3b8bfcb1046ca94ec9322320bf9 +TEST= 229 +KEY= 3c128d7f87b01b7b793da2584b683a12 +PT= 0f2da3b8bfcb1046ca94ec9322320bf9 +CT= 29cad5cdc5a2834a5d533335fed2ea81 +TEST= 230 +KEY= 15d858b242129831246e916db5bad093 +PT= 29cad5cdc5a2834a5d533335fed2ea81 +CT= a48a2d319552bf02e84e4662e75884db +TEST= 231 +KEY= b1527583d7402733cc20d70f52e25448 +PT= a48a2d319552bf02e84e4662e75884db +CT= 334560ecd22bb9f660bc4ffab13891c9 +TEST= 232 +KEY= 8217156f056b9ec5ac9c98f5e3dac581 +PT= 334560ecd22bb9f660bc4ffab13891c9 +CT= daaeb8436205dfb6688d9de0a21a6b9d +TEST= 233 +KEY= 58b9ad2c676e4173c411051541c0ae1c +PT= daaeb8436205dfb6688d9de0a21a6b9d +CT= e38798615c2158872704125a7cfc6540 +TEST= 234 +KEY= bb3e354d3b4f19f4e315174f3d3ccb5c +PT= e38798615c2158872704125a7cfc6540 +CT= bacb9ea5499a093f6595e8d1d5cf7e50 +TEST= 235 +KEY= 01f5abe872d510cb8680ff9ee8f3b50c +PT= bacb9ea5499a093f6595e8d1d5cf7e50 +CT= 813b0d4ac4c2b8371a1a132927d24f62 +TEST= 236 +KEY= 80cea6a2b617a8fc9c9aecb7cf21fa6e +PT= 813b0d4ac4c2b8371a1a132927d24f62 +CT= d1ad1ae650b377520ee19370d9e968a9 +TEST= 237 +KEY= 5163bc44e6a4dfae927b7fc716c892c7 +PT= d1ad1ae650b377520ee19370d9e968a9 +CT= 3cec25102a51a5a4c26e7391590d54ed +TEST= 238 +KEY= 6d8f9954ccf57a0a50150c564fc5c62a +PT= 3cec25102a51a5a4c26e7391590d54ed +CT= 505fd54017e89e9faa6376e399f2ff09 +TEST= 239 +KEY= 3dd04c14db1de495fa767ab5d6373923 +PT= 505fd54017e89e9faa6376e399f2ff09 +CT= 1b45550b4e3ab908a2cc72fffb38701a +TEST= 240 +KEY= 2695191f95275d9d58ba084a2d0f4939 +PT= 1b45550b4e3ab908a2cc72fffb38701a +CT= e2469d9d2f91e3aa88dc7970c94e7237 +TEST= 241 +KEY= c4d38482bab6be37d066713ae4413b0e +PT= e2469d9d2f91e3aa88dc7970c94e7237 +CT= 9352c72f2b5093d1af52ba959963f59b +TEST= 242 +KEY= 578143ad91e62de67f34cbaf7d22ce95 +PT= 9352c72f2b5093d1af52ba959963f59b +CT= f26de32f035b270ba42075574056564e +TEST= 243 +KEY= a5eca08292bd0aeddb14bef83d7498db +PT= f26de32f035b270ba42075574056564e +CT= 6ac08b3d91fc31a34b3a81f7c300587e +TEST= 244 +KEY= cf2c2bbf03413b4e902e3f0ffe74c0a5 +PT= 6ac08b3d91fc31a34b3a81f7c300587e +CT= e5e6455304c3b5e2349e2372d6e4b0b8 +TEST= 245 +KEY= 2aca6eec07828eaca4b01c7d2890701d +PT= e5e6455304c3b5e2349e2372d6e4b0b8 +CT= 90524f27c63cca1e4ca9674381786c30 +TEST= 246 +KEY= ba9821cbc1be44b2e8197b3ea9e81c2d +PT= 90524f27c63cca1e4ca9674381786c30 +CT= 44625d68290415039e2c6c05b4954896 +TEST= 247 +KEY= fefa7ca3e8ba51b17635173b1d7d54bb +PT= 44625d68290415039e2c6c05b4954896 +CT= ec401b0d3780fdb4a3952706b07f6cef +TEST= 248 +KEY= 12ba67aedf3aac05d5a0303dad023854 +PT= ec401b0d3780fdb4a3952706b07f6cef +CT= dcedc88021f6fd1c61c08daabf0e73ba +TEST= 249 +KEY= ce57af2efecc5119b460bd97120c4bee +PT= dcedc88021f6fd1c61c08daabf0e73ba +CT= c15c85d8161b97dd61eb8b514cdcffd5 +TEST= 250 +KEY= 0f0b2af6e8d7c6c4d58b36c65ed0b43b +PT= c15c85d8161b97dd61eb8b514cdcffd5 +CT= b68b65e041c84433dea4d9e15e9f98ab +TEST= 251 +KEY= b9804f16a91f82f70b2fef27004f2c90 +PT= b68b65e041c84433dea4d9e15e9f98ab +CT= 8122505a5b6f8d985a8d9d7e9e2ff4f3 +TEST= 252 +KEY= 38a21f4cf2700f6f51a272599e60d863 +PT= 8122505a5b6f8d985a8d9d7e9e2ff4f3 +CT= 8f72f8ffa71d24c900d2bbe8784b9c48 +TEST= 253 +KEY= b7d0e7b3556d2ba65170c9b1e62b442b +PT= 8f72f8ffa71d24c900d2bbe8784b9c48 +CT= 1d541d794774264680cf3689365cd845 +TEST= 254 +KEY= aa84faca12190de0d1bfff38d0779c6e +PT= 1d541d794774264680cf3689365cd845 +CT= cbae9336c5c1f038176b5123cc205bf7 +TEST= 255 +KEY= 612a69fcd7d8fdd8c6d4ae1b1c57c799 +PT= cbae9336c5c1f038176b5123cc205bf7 +CT= c4ce2dc1bae3028392bd8a005a360f56 +TEST= 256 +KEY= a5e4443d6d3bff5b5469241b4661c8cf +PT= c4ce2dc1bae3028392bd8a005a360f56 +CT= 549b7075de975b759a6dae7d761cdc01 +TEST= 257 +KEY= f17f3448b3aca42ece048a66307d14ce +PT= 549b7075de975b759a6dae7d761cdc01 +CT= 2338ffeee2a391b2dafd1ebb0ecf19e3 +TEST= 258 +KEY= d247cba6510f359c14f994dd3eb20d2d +PT= 2338ffeee2a391b2dafd1ebb0ecf19e3 +CT= b27705c512c6849de6012a490f834f36 +TEST= 259 +KEY= 6030ce6343c9b101f2f8be943131421b +PT= b27705c512c6849de6012a490f834f36 +CT= 33a239e0426921192f8c89c6fbcdd23c +TEST= 260 +KEY= 5392f78301a09018dd743752cafc9027 +PT= 33a239e0426921192f8c89c6fbcdd23c +CT= 90ccbe46338c7e9fb25409f82bf81234 +TEST= 261 +KEY= c35e49c5322cee876f203eaae1048213 +PT= 90ccbe46338c7e9fb25409f82bf81234 +CT= 873d1caf1f2c2a56bee419fe8a01489f +TEST= 262 +KEY= 4463556a2d00c4d1d1c427546b05ca8c +PT= 873d1caf1f2c2a56bee419fe8a01489f +CT= 1e9ed35eb85add9ab88b6d85299fd8e7 +TEST= 263 +KEY= 5afd8634955a194b694f4ad1429a126b +PT= 1e9ed35eb85add9ab88b6d85299fd8e7 +CT= 36871f8bd629b27eede04e086fc539c4 +TEST= 264 +KEY= 6c7a99bf4373ab3584af04d92d5f2baf +PT= 36871f8bd629b27eede04e086fc539c4 +CT= 10d10983f98d799235e8142bd67c1fd2 +TEST= 265 +KEY= 7cab903cbafed2a7b14710f2fb23347d +PT= 10d10983f98d799235e8142bd67c1fd2 +CT= 193cedeee0410de79f1b2fc077b14199 +TEST= 266 +KEY= 65977dd25abfdf402e5c3f328c9275e4 +PT= 193cedeee0410de79f1b2fc077b14199 +CT= 1ec99ad6eef155b6b5f61452d2e73a7d +TEST= 267 +KEY= 7b5ee704b44e8af69baa2b605e754f99 +PT= 1ec99ad6eef155b6b5f61452d2e73a7d +CT= 92da7d1858210c87b32c6fea1cc6a0e6 +TEST= 268 +KEY= e9849a1cec6f86712886448a42b3ef7f +PT= 92da7d1858210c87b32c6fea1cc6a0e6 +CT= a06c4acca35de95cfad365349969271d +TEST= 269 +KEY= 49e8d0d04f326f2dd25521bedbdac862 +PT= a06c4acca35de95cfad365349969271d +CT= 4b892cb63a35a3ded0f43ba4309cbb2e +TEST= 270 +KEY= 0261fc667507ccf302a11a1aeb46734c +PT= 4b892cb63a35a3ded0f43ba4309cbb2e +CT= e05f73446706a68a5099088279b58064 +TEST= 271 +KEY= e23e8f2212016a795238129892f3f328 +PT= e05f73446706a68a5099088279b58064 +CT= 542d8314299af433ec549ebffcf2b3d9 +TEST= 272 +KEY= b6130c363b9b9e4abe6c8c276e0140f1 +PT= 542d8314299af433ec549ebffcf2b3d9 +CT= 4935a91590e8a70d9f75489f6d5b70e7 +TEST= 273 +KEY= ff26a523ab7339472119c4b8035a3016 +PT= 4935a91590e8a70d9f75489f6d5b70e7 +CT= c3a4940c6ec7d0e2f11c3cf60ab2c31d +TEST= 274 +KEY= 3c82312fc5b4e9a5d005f84e09e8f30b +PT= c3a4940c6ec7d0e2f11c3cf60ab2c31d +CT= f109ac488d917b5fc28ba28c9720a46f +TEST= 275 +KEY= cd8b9d67482592fa128e5ac29ec85764 +PT= f109ac488d917b5fc28ba28c9720a46f +CT= 65234934641fa21d8c3a3804d09208f3 +TEST= 276 +KEY= a8a8d4532c3a30e79eb462c64e5a5f97 +PT= 65234934641fa21d8c3a3804d09208f3 +CT= de015a71cb9c9a3b11c2c9b744b6b5ed +TEST= 277 +KEY= 76a98e22e7a6aadc8f76ab710aecea7a +PT= de015a71cb9c9a3b11c2c9b744b6b5ed +CT= 973d0c12d7826b45cc7824ef09d82bab +TEST= 278 +KEY= e19482303024c199430e8f9e0334c1d1 +PT= 973d0c12d7826b45cc7824ef09d82bab +CT= ebd2d23b9d08f63385a0d21ff76fac33 +TEST= 279 +KEY= 0a46500bad2c37aac6ae5d81f45b6de2 +PT= ebd2d23b9d08f63385a0d21ff76fac33 +CT= a7a460a555e4c4e53457ae00fc0d9ba8 +TEST= 280 +KEY= ade230aef8c8f34ff2f9f3810856f64a +PT= a7a460a555e4c4e53457ae00fc0d9ba8 +CT= 56f0329103b5238e03c781e2ab0e7a2d +TEST= 281 +KEY= fb12023ffb7dd0c1f13e7263a3588c67 +PT= 56f0329103b5238e03c781e2ab0e7a2d +CT= 0d5710472e980cf439109bac3eab19a8 +TEST= 282 +KEY= f6451278d5e5dc35c82ee9cf9df395cf +PT= 0d5710472e980cf439109bac3eab19a8 +CT= 063cb786ad88ecadc4eac8fe39a84286 +TEST= 283 +KEY= f079a5fe786d30980cc42131a45bd749 +PT= 063cb786ad88ecadc4eac8fe39a84286 +CT= 825bd1e57f0e16d744c2a69233c8654b +TEST= 284 +KEY= 7222741b0763264f480687a39793b202 +PT= 825bd1e57f0e16d744c2a69233c8654b +CT= 8ea54322f26dc051f831a5cbbd07a73c +TEST= 285 +KEY= fc873739f50ee61eb03722682a94153e +PT= 8ea54322f26dc051f831a5cbbd07a73c +CT= 803f3194726f4d5c5bd80d12d1284f0a +TEST= 286 +KEY= 7cb806ad8761ab42ebef2f7afbbc5a34 +PT= 803f3194726f4d5c5bd80d12d1284f0a +CT= 5a1d90e682989ab1a84f01422ce69f82 +TEST= 287 +KEY= 26a5964b05f931f343a02e38d75ac5b6 +PT= 5a1d90e682989ab1a84f01422ce69f82 +CT= 3f5afcd41950eefbc3d7cef744f0c060 +TEST= 288 +KEY= 19ff6a9f1ca9df088077e0cf93aa05d6 +PT= 3f5afcd41950eefbc3d7cef744f0c060 +CT= 2ee3691bd58d7645da91cd4943f10157 +TEST= 289 +KEY= 371c0384c924a94d5ae62d86d05b0481 +PT= 2ee3691bd58d7645da91cd4943f10157 +CT= bef4b188364e87a9e49855cc68c02a50 +TEST= 290 +KEY= 89e8b20cff6a2ee4be7e784ab89b2ed1 +PT= bef4b188364e87a9e49855cc68c02a50 +CT= 2263387a7a52ab73704774d07ea5aa69 +TEST= 291 +KEY= ab8b8a7685388597ce390c9ac63e84b8 +PT= 2263387a7a52ab73704774d07ea5aa69 +CT= 84e68da3e9d999016d0b734dae8c128b +TEST= 292 +KEY= 2f6d07d56ce11c96a3327fd768b29633 +PT= 84e68da3e9d999016d0b734dae8c128b +CT= 978f5f49d7ba1189f16fc0635231df5f +TEST= 293 +KEY= b8e2589cbb5b0d1f525dbfb43a83496c +PT= 978f5f49d7ba1189f16fc0635231df5f +CT= fe59b2f2bde0ab5e1700a1771edf8663 +TEST= 294 +KEY= 46bbea6e06bba641455d1ec3245ccf0f +PT= fe59b2f2bde0ab5e1700a1771edf8663 +CT= a94b982dc50c338e25abfb4113f904a8 +TEST= 295 +KEY= eff07243c3b795cf60f6e58237a5cba7 +PT= a94b982dc50c338e25abfb4113f904a8 +CT= 79a5bb282d8247192ac9f8a3db431ea1 +TEST= 296 +KEY= 9655c96bee35d2d64a3f1d21ece6d506 +PT= 79a5bb282d8247192ac9f8a3db431ea1 +CT= fc339da0d4593cd79d407cd6f1e1e7ed +TEST= 297 +KEY= 6a6654cb3a6cee01d77f61f71d0732eb +PT= fc339da0d4593cd79d407cd6f1e1e7ed +CT= 08eab51652b85c6e9bc07b718e57e144 +TEST= 298 +KEY= 628ce1dd68d4b26f4cbf1a869350d3af +PT= 08eab51652b85c6e9bc07b718e57e144 +CT= 9ea63934609f947aaa926443d0d5befa +TEST= 299 +KEY= fc2ad8e9084b2615e62d7ec543856d55 +PT= 9ea63934609f947aaa926443d0d5befa +CT= 7fe121c45e158ff1f527bafddbeae223 +TEST= 300 +KEY= 83cbf92d565ea9e4130ac438986f8f76 +PT= 7fe121c45e158ff1f527bafddbeae223 +CT= b1b70d5ad08be5dcb8126d8700f25969 +TEST= 301 +KEY= 327cf47786d54c38ab18a9bf989dd61f +PT= b1b70d5ad08be5dcb8126d8700f25969 +CT= 389812fa2d4a6419380a2ac8961ccda6 +TEST= 302 +KEY= 0ae4e68dab9f2821931283770e811bb9 +PT= 389812fa2d4a6419380a2ac8961ccda6 +CT= cef20323ee53a2ba576f4df86a7ac078 +TEST= 303 +KEY= c416e5ae45cc8a9bc47dce8f64fbdbc1 +PT= cef20323ee53a2ba576f4df86a7ac078 +CT= a65611bf1901c940b883d746f1694278 +TEST= 304 +KEY= 6240f4115ccd43db7cfe19c9959299b9 +PT= a65611bf1901c940b883d746f1694278 +CT= 7e43c2a99d11c656351b96cecd400e75 +TEST= 305 +KEY= 1c0336b8c1dc858d49e58f0758d297cc +PT= 7e43c2a99d11c656351b96cecd400e75 +CT= 7de74d06851ad329c60dd1934c34cbe4 +TEST= 306 +KEY= 61e47bbe44c656a48fe85e9414e65c28 +PT= 7de74d06851ad329c60dd1934c34cbe4 +CT= a99b66fe5825c895dcc6be718ab8be34 +TEST= 307 +KEY= c87f1d401ce39e31532ee0e59e5ee21c +PT= a99b66fe5825c895dcc6be718ab8be34 +CT= 4752e30dda44ba393ef197270c111ab7 +TEST= 308 +KEY= 8f2dfe4dc6a724086ddf77c2924ff8ab +PT= 4752e30dda44ba393ef197270c111ab7 +CT= 5a3fc324d12ac30fe5bbe87fc4b655f0 +TEST= 309 +KEY= d5123d69178de70788649fbd56f9ad5b +PT= 5a3fc324d12ac30fe5bbe87fc4b655f0 +CT= 79061587e9d9feef52f753ae9bcdc4b1 +TEST= 310 +KEY= ac1428eefe5419e8da93cc13cd3469ea +PT= 79061587e9d9feef52f753ae9bcdc4b1 +CT= 86c32e69874eaa0d103581199afa813a +TEST= 311 +KEY= 2ad70687791ab3e5caa64d0a57cee8d0 +PT= 86c32e69874eaa0d103581199afa813a +CT= 82a924a5928570e29d18de200f8558dd +TEST= 312 +KEY= a87e2222eb9fc30757be932a584bb00d +PT= 82a924a5928570e29d18de200f8558dd +CT= 2d3e0eccc1fea93736bd205a5217d830 +TEST= 313 +KEY= 85402cee2a616a306103b3700a5c683d +PT= 2d3e0eccc1fea93736bd205a5217d830 +CT= 52fa0fcf771191a4a4c4e48c7b11dc1f +TEST= 314 +KEY= d7ba23215d70fb94c5c757fc714db422 +PT= 52fa0fcf771191a4a4c4e48c7b11dc1f +CT= c2a47519aaca187b97c884d20ed1d825 +TEST= 315 +KEY= 151e5638f7bae3ef520fd32e7f9c6c07 +PT= c2a47519aaca187b97c884d20ed1d825 +CT= 66f1d0799f3c473978c189f745695293 +TEST= 316 +KEY= 73ef86416886a4d62ace5ad93af53e94 +PT= 66f1d0799f3c473978c189f745695293 +CT= 803361a1428eac3e134b0726e5cf0754 +TEST= 317 +KEY= f3dce7e02a0808e839855dffdf3a39c0 +PT= 803361a1428eac3e134b0726e5cf0754 +CT= 2cc85cedee03d7ab279d766d3f2badf4 +TEST= 318 +KEY= df14bb0dc40bdf431e182b92e0119434 +PT= 2cc85cedee03d7ab279d766d3f2badf4 +CT= 706626c1ce6731dd4dba263c4d7eab67 +TEST= 319 +KEY= af729dcc0a6cee9e53a20daead6f3f53 +PT= 706626c1ce6731dd4dba263c4d7eab67 +CT= bd7a59659e3774b85465c91740017628 +TEST= 320 +KEY= 1208c4a9945b9a2607c7c4b9ed6e497b +PT= bd7a59659e3774b85465c91740017628 +CT= f1778330059467556d08223682ec32aa +TEST= 321 +KEY= e37f479991cffd736acfe68f6f827bd1 +PT= f1778330059467556d08223682ec32aa +CT= 7b3c6979dcee500e3fbb2cf4e17b0a3b +TEST= 322 +KEY= 98432ee04d21ad7d5574ca7b8ef971ea +PT= 7b3c6979dcee500e3fbb2cf4e17b0a3b +CT= afebc6e81b90c3d82ece26d788ab2412 +TEST= 323 +KEY= 37a8e80856b16ea57bbaecac065255f8 +PT= afebc6e81b90c3d82ece26d788ab2412 +CT= e4087042ab32b9c43128aadacb4f7fa6 +TEST= 324 +KEY= d3a0984afd83d7614a924676cd1d2a5e +PT= e4087042ab32b9c43128aadacb4f7fa6 +CT= 07e1230bc456a3dce7df8a4ef7265bc8 +TEST= 325 +KEY= d441bb4139d574bdad4dcc383a3b7196 +PT= 07e1230bc456a3dce7df8a4ef7265bc8 +CT= 88f0c30172b9a0ea8cd657ce6847ac94 +TEST= 326 +KEY= 5cb178404b6cd457219b9bf6527cdd02 +PT= 88f0c30172b9a0ea8cd657ce6847ac94 +CT= 710fe26b2dab5a12d147d6446732b272 +TEST= 327 +KEY= 2dbe9a2b66c78e45f0dc4db2354e6f70 +PT= 710fe26b2dab5a12d147d6446732b272 +CT= 9c30630a9adf9b4ebf099452ab75d14a +TEST= 328 +KEY= b18ef921fc18150b4fd5d9e09e3bbe3a +PT= 9c30630a9adf9b4ebf099452ab75d14a +CT= 77526da4d9ae9fd4347aac10ea4728aa +TEST= 329 +KEY= c6dc948525b68adf7baf75f0747c9690 +PT= 77526da4d9ae9fd4347aac10ea4728aa +CT= a9edbd1a190bc67ac91d27bb7f5a1bd1 +TEST= 330 +KEY= 6f31299f3cbd4ca5b2b2524b0b268d41 +PT= a9edbd1a190bc67ac91d27bb7f5a1bd1 +CT= b8700a2baeabcb0c67251c26f82acef7 +TEST= 331 +KEY= d74123b4921687a9d5974e6df30c43b6 +PT= b8700a2baeabcb0c67251c26f82acef7 +CT= ff5f30ba14a8c49276b040b00864be29 +TEST= 332 +KEY= 281e130e86be433ba3270eddfb68fd9f +PT= ff5f30ba14a8c49276b040b00864be29 +CT= b448e87be1e1a41ff94353f6018929c8 +TEST= 333 +KEY= 9c56fb75675fe7245a645d2bfae1d457 +PT= b448e87be1e1a41ff94353f6018929c8 +CT= 9f59d422cb9265c17732e0b16def352a +TEST= 334 +KEY= 030f2f57accd82e52d56bd9a970ee17d +PT= 9f59d422cb9265c17732e0b16def352a +CT= 06fd7db54e62fac3c511f4de5c1e93b9 +TEST= 335 +KEY= 05f252e2e2af7826e8474944cb1072c4 +PT= 06fd7db54e62fac3c511f4de5c1e93b9 +CT= 0dda3e4ad600f8d3ea6b06ae465df3bc +TEST= 336 +KEY= 08286ca834af80f5022c4fea8d4d8178 +PT= 0dda3e4ad600f8d3ea6b06ae465df3bc +CT= 17305fa95d26fb72995165da8a07fcdf +TEST= 337 +KEY= 1f18330169897b879b7d2a30074a7da7 +PT= 17305fa95d26fb72995165da8a07fcdf +CT= 12b56febee2773a2258fc6e0f9115728 +TEST= 338 +KEY= 0dad5cea87ae0825bef2ecd0fe5b2a8f +PT= 12b56febee2773a2258fc6e0f9115728 +CT= 36440d1a561e8f77b89df6ea3d8ec7f5 +TEST= 339 +KEY= 3be951f0d1b08752066f1a3ac3d5ed7a +PT= 36440d1a561e8f77b89df6ea3d8ec7f5 +CT= 752c4d620413c0f4a313cf37eb34cfdd +TEST= 340 +KEY= 4ec51c92d5a347a6a57cd50d28e122a7 +PT= 752c4d620413c0f4a313cf37eb34cfdd +CT= b2a282d0b6a9eb8b7b7c962675aec843 +TEST= 341 +KEY= fc679e42630aac2dde00432b5d4feae4 +PT= b2a282d0b6a9eb8b7b7c962675aec843 +CT= d0c3d785b5507c1460ddc44b123ed5fe +TEST= 342 +KEY= 2ca449c7d65ad039bedd87604f713f1a +PT= d0c3d785b5507c1460ddc44b123ed5fe +CT= 4dae52b77f8001cbab8d1949e73dd578 +TEST= 343 +KEY= 610a1b70a9dad1f215509e29a84cea62 +PT= 4dae52b77f8001cbab8d1949e73dd578 +CT= 29aa82197e8158d88fffe5beafc0c967 +TEST= 344 +KEY= 48a09969d75b892a9aaf7b97078c2305 +PT= 29aa82197e8158d88fffe5beafc0c967 +CT= 58c665aa97945f7d3aa23be8b8dda20d +TEST= 345 +KEY= 1066fcc340cfd657a00d407fbf518108 +PT= 58c665aa97945f7d3aa23be8b8dda20d +CT= 5a104a7093db3308eb4009829b5e26b1 +TEST= 346 +KEY= 4a76b6b3d314e55f4b4d49fd240fa7b9 +PT= 5a104a7093db3308eb4009829b5e26b1 +CT= 8c8ea0bee4640f6bb6d906a7a6ea3810 +TEST= 347 +KEY= c6f8160d3770ea34fd944f5a82e59fa9 +PT= 8c8ea0bee4640f6bb6d906a7a6ea3810 +CT= 1517ed0b6d4ec3b85479ab28df48bfdb +TEST= 348 +KEY= d3effb065a3e298ca9ede4725dad2072 +PT= 1517ed0b6d4ec3b85479ab28df48bfdb +CT= 9546ccbb8094e65e464c38e0809552e3 +TEST= 349 +KEY= 46a937bddaaacfd2efa1dc92dd387291 +PT= 9546ccbb8094e65e464c38e0809552e3 +CT= 7d5ad8dedb92f80d2b28c3458843ae84 +TEST= 350 +KEY= 3bf3ef63013837dfc4891fd7557bdc15 +PT= 7d5ad8dedb92f80d2b28c3458843ae84 +CT= e62676e27ed61d0fd7dfe170e0938361 +TEST= 351 +KEY= ddd599817fee2ad01356fea7b5e85f74 +PT= e62676e27ed61d0fd7dfe170e0938361 +CT= da9865198b9463681c66fb96c2c1daa5 +TEST= 352 +KEY= 074dfc98f47a49b80f300531772985d1 +PT= da9865198b9463681c66fb96c2c1daa5 +CT= 62cd9daa9487f34af168e6e20a0684cf +TEST= 353 +KEY= 6580613260fdbaf2fe58e3d37d2f011e +PT= 62cd9daa9487f34af168e6e20a0684cf +CT= 10ba978fdaba586691946145be246d3c +TEST= 354 +KEY= 753af6bdba47e2946fcc8296c30b6c22 +PT= 10ba978fdaba586691946145be246d3c +CT= 13443cf524213b08776d7f5169b79c0f +TEST= 355 +KEY= 667eca489e66d99c18a1fdc7aabcf02d +PT= 13443cf524213b08776d7f5169b79c0f +CT= 6507336876ed4f6db3e35d6cf5a89a2b +TEST= 356 +KEY= 0379f920e88b96f1ab42a0ab5f146a06 +PT= 6507336876ed4f6db3e35d6cf5a89a2b +CT= b84902b5cbbc6db8111ca45bc5f99991 +TEST= 357 +KEY= bb30fb952337fb49ba5e04f09aedf397 +PT= b84902b5cbbc6db8111ca45bc5f99991 +CT= 20973140a999b8ad9982b9b706f7c32e +TEST= 358 +KEY= 9ba7cad58aae43e423dcbd479c1a30b9 +PT= 20973140a999b8ad9982b9b706f7c32e +CT= ee7ff1177c5e080aa03854a2a819565e +TEST= 359 +KEY= 75d83bc2f6f04bee83e4e9e5340366e7 +PT= ee7ff1177c5e080aa03854a2a819565e +CT= 7a4f74ec2181269ac17d0e48a4da2a88 +TEST= 360 +KEY= 0f974f2ed7716d744299e7ad90d94c6f +PT= 7a4f74ec2181269ac17d0e48a4da2a88 +CT= 5b7a7751f0fd91e203a14ce518838dd7 +TEST= 361 +KEY= 54ed387f278cfc964138ab48885ac1b8 +PT= 5b7a7751f0fd91e203a14ce518838dd7 +CT= 71319fddbacb038354a37a41f1910f94 +TEST= 362 +KEY= 25dca7a29d47ff15159bd10979cbce2c +PT= 71319fddbacb038354a37a41f1910f94 +CT= 81ac58fd503fc3aa78199168ae2c9085 +TEST= 363 +KEY= a470ff5fcd783cbf6d824061d7e75ea9 +PT= 81ac58fd503fc3aa78199168ae2c9085 +CT= 1f668f512038142c1155b950b0b040ec +TEST= 364 +KEY= bb16700eed4028937cd7f93167571e45 +PT= 1f668f512038142c1155b950b0b040ec +CT= 6b27d7791e9b14a5ac3d9582dbdbd929 +TEST= 365 +KEY= d031a777f3db3c36d0ea6cb3bc8cc76c +PT= 6b27d7791e9b14a5ac3d9582dbdbd929 +CT= 9b7151fdc4e135ee93dab2d9eb74d59c +TEST= 366 +KEY= 4b40f68a373a09d84330de6a57f812f0 +PT= 9b7151fdc4e135ee93dab2d9eb74d59c +CT= 1f199945bcfa624b1ad3dcbbd95291b2 +TEST= 367 +KEY= 54596fcf8bc06b9359e302d18eaa8342 +PT= 1f199945bcfa624b1ad3dcbbd95291b2 +CT= e2c82fa8fe98f26283a6e0b75d0a58c6 +TEST= 368 +KEY= b6914067755899f1da45e266d3a0db84 +PT= e2c82fa8fe98f26283a6e0b75d0a58c6 +CT= 5a240ffb99c3594c273b51cacf01b28b +TEST= 369 +KEY= ecb54f9cec9bc0bdfd7eb3ac1ca1690f +PT= 5a240ffb99c3594c273b51cacf01b28b +CT= d01847391534848fb102ca85c97749b1 +TEST= 370 +KEY= 3cad08a5f9af44324c7c7929d5d620be +PT= d01847391534848fb102ca85c97749b1 +CT= dc5cf60ebdf4a8ddddf997e7aca67515 +TEST= 371 +KEY= e0f1feab445becef9185eece797055ab +PT= dc5cf60ebdf4a8ddddf997e7aca67515 +CT= 749e3815fe305b307d9f4db6a7e4658c +TEST= 372 +KEY= 946fc6beba6bb7dfec1aa378de943027 +PT= 749e3815fe305b307d9f4db6a7e4658c +CT= 8152c1e676a4fc8b0cd093feb4b51615 +TEST= 373 +KEY= 153d0758cccf4b54e0ca30866a212632 +PT= 8152c1e676a4fc8b0cd093feb4b51615 +CT= 0847044668710f6e5c93dd248ac921ba +TEST= 374 +KEY= 1d7a031ea4be443abc59eda2e0e80788 +PT= 0847044668710f6e5c93dd248ac921ba +CT= 1d6c3efb413a59ab40f34cefbff25c17 +TEST= 375 +KEY= 00163de5e5841d91fcaaa14d5f1a5b9f +PT= 1d6c3efb413a59ab40f34cefbff25c17 +CT= 5d7c206a79d61868ffe7aa28044996d3 +TEST= 376 +KEY= 5d6a1d8f9c5205f9034d0b655b53cd4c +PT= 5d7c206a79d61868ffe7aa28044996d3 +CT= 78b4de3b84d5d1010245ca3077a41bac +TEST= 377 +KEY= 25dec3b41887d4f80108c1552cf7d6e0 +PT= 78b4de3b84d5d1010245ca3077a41bac +CT= 9e003aacedecdbb077bde832465f40c7 +TEST= 378 +KEY= bbdef918f56b0f4876b529676aa89627 +PT= 9e003aacedecdbb077bde832465f40c7 +CT= eeff9e6c73e6dc5432aa446385aa1499 +TEST= 379 +KEY= 55216774868dd31c441f6d04ef0282be +PT= eeff9e6c73e6dc5432aa446385aa1499 +CT= 03252a19e37d9f040c56e4d712982798 +TEST= 380 +KEY= 56044d6d65f04c18484989d3fd9aa526 +PT= 03252a19e37d9f040c56e4d712982798 +CT= cf59a752ba0e14be23afd09437b39c65 +TEST= 381 +KEY= 995dea3fdffe58a66be65947ca293943 +PT= cf59a752ba0e14be23afd09437b39c65 +CT= 8b08fb7974a77167dfb234f57c8dffe1 +TEST= 382 +KEY= 12551146ab5929c1b4546db2b6a4c6a2 +PT= 8b08fb7974a77167dfb234f57c8dffe1 +CT= dd2a93c1106cfdae4a1684ee02c82fe2 +TEST= 383 +KEY= cf7f8287bb35d46ffe42e95cb46ce940 +PT= dd2a93c1106cfdae4a1684ee02c82fe2 +CT= 38696128584f60636354e9f802590391 +TEST= 384 +KEY= f716e3afe37ab40c9d1600a4b635ead1 +PT= 38696128584f60636354e9f802590391 +CT= 7e552e3ad28729f642d590e3c289d598 +TEST= 385 +KEY= 8943cd9531fd9dfadfc3904774bc3f49 +PT= 7e552e3ad28729f642d590e3c289d598 +CT= 17a40392aa00d7b5a6e9f59007e60c22 +TEST= 386 +KEY= 9ee7ce079bfd4a4f792a65d7735a336b +PT= 17a40392aa00d7b5a6e9f59007e60c22 +CT= a048d6755c2ad24dd8833ddceb145ba6 +TEST= 387 +KEY= 3eaf1872c7d79802a1a9580b984e68cd +PT= a048d6755c2ad24dd8833ddceb145ba6 +CT= 2f1cce852396986ec4b2852e5f684cd2 +TEST= 388 +KEY= 11b3d6f7e441006c651bdd25c726241f +PT= 2f1cce852396986ec4b2852e5f684cd2 +CT= 2c28bd1e98da63b95c0c81202bbcfe39 +TEST= 389 +KEY= 3d9b6be97c9b63d539175c05ec9ada26 +PT= 2c28bd1e98da63b95c0c81202bbcfe39 +CT= 6ae097a8e685b58ba2309b59d6a9eb2b +TEST= 390 +KEY= 577bfc419a1ed65e9b27c75c3a33310d +PT= 6ae097a8e685b58ba2309b59d6a9eb2b +CT= 6efc01751753999843a9bb6749097e0c +TEST= 391 +KEY= 3987fd348d4d4fc6d88e7c3b733a4f01 +PT= 6efc01751753999843a9bb6749097e0c +CT= 6b6b75f78016052e4f89c73ea826d2f2 +TEST= 392 +KEY= 52ec88c30d5b4ae89707bb05db1c9df3 +PT= 6b6b75f78016052e4f89c73ea826d2f2 +CT= 1e9890e8f0aabcbfb8c4edaea0f563ef +TEST= 393 +KEY= 4c74182bfdf1f6572fc356ab7be9fe1c +PT= 1e9890e8f0aabcbfb8c4edaea0f563ef +CT= 143ed9fe6fd7dfb822c31de8a3e868a9 +TEST= 394 +KEY= 584ac1d5922629ef0d004b43d80196b5 +PT= 143ed9fe6fd7dfb822c31de8a3e868a9 +CT= 9c2834aa5c95f2874dc6b267c0469e14 +TEST= 395 +KEY= c462f57fceb3db6840c6f924184708a1 +PT= 9c2834aa5c95f2874dc6b267c0469e14 +CT= 0720377f673352693ee2ef76d4fcfb0f +TEST= 396 +KEY= c342c200a98089017e241652ccbbf3ae +PT= 0720377f673352693ee2ef76d4fcfb0f +CT= e83ed303f4b0abf675c7bbc470b924fe +TEST= 397 +KEY= 2b7c11035d3022f70be3ad96bc02d750 +PT= e83ed303f4b0abf675c7bbc470b924fe +CT= d87add68cbcaea46dfff99ae3723bc94 +TEST= 398 +KEY= f306cc6b96fac8b1d41c34388b216bc4 +PT= d87add68cbcaea46dfff99ae3723bc94 +CT= 2c290ae7c65b6e5bbaa32de577dba343 +TEST= 399 +KEY= df2fc68c50a1a6ea6ebf19ddfcfac887 +PT= 2c290ae7c65b6e5bbaa32de577dba343 +CT= a04377abe259b0d0b5ba2d40a501971b diff --git a/flint/test/testvals/ecbme46.txt b/flint/test/testvals/ecbme46.txt new file mode 100644 index 0000000..84cca39 --- /dev/null +++ b/flint/test/testvals/ecbme46.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= f3f6752ae8d7831138f041560631b114 +TEST= 1 +KEY= aafe47ee82411a2bf3f6752ae8d7831138f041560631b114 +PT= f3f6752ae8d7831138f041560631b114 +CT= 77ba00ed5412dff27c8ed91f3c376172 +TEST= 2 +KEY= a92b07597b52873c844c75c7bcc55ce3447e98493a06d066 +PT= 77ba00ed5412dff27c8ed91f3c376172 +CT= 2d92de893574463412bd7d121a94952f +TEST= 3 +KEY= 5fd632da76165edba9deab4e89b11ad756c3e55b20924549 +PT= 2d92de893574463412bd7d121a94952f +CT= 96650f835912f5e748422727802c6ce1 +TEST= 4 +KEY= 984a4bec5d3474103fbba4cdd0a3ef301e81c27ca0be29a8 +PT= 96650f835912f5e748422727802c6ce1 +CT= 5fccd4b5f125adc5b85a56db32283732 +TEST= 5 +KEY= 6b7edeeac755885f60777078218642f5a6db94a792961e9a +PT= 5fccd4b5f125adc5b85a56db32283732 +CT= ea5b1dae2e4f9fd254a2cc28e128eb9b +TEST= 6 +KEY= ca5585d8c9727f208a2c6dd60fc9dd27f279588f73bef501 +PT= ea5b1dae2e4f9fd254a2cc28e128eb9b +CT= bb87c0ff5db4b2a593b93398407f823a +TEST= 7 +KEY= bada7c0d4a0cdd4631abad29527d6f8261c06b1733c1773b +PT= bb87c0ff5db4b2a593b93398407f823a +CT= d5af7d56281f86e3e079be6b9465dbb4 +TEST= 8 +KEY= ff98ab620a203ffce404d07f7a62e96181b9d57ca7a4ac8f +PT= d5af7d56281f86e3e079be6b9465dbb4 +CT= 511331cca62b067cac47475800ee33cd +TEST= 9 +KEY= 1186a7f46656ea07b517e1b3dc49ef1d2dfe9224a74a9f42 +PT= 511331cca62b067cac47475800ee33cd +CT= 64acdc3579d7871644dd585c582af3a2 +TEST= 10 +KEY= 313adff9712eabe4d1bb3d86a59e680b6923ca78ff606ce0 +PT= 64acdc3579d7871644dd585c582af3a2 +CT= ea3c45fb8a6e548dab14bae07966246c +TEST= 11 +KEY= ddabac02be6c40493b87787d2ff03c86c23770988606488c +PT= ea3c45fb8a6e548dab14bae07966246c +CT= 6bc276c465c9adbe900049a5b58d2dcb +TEST= 12 +KEY= 9a9f7e267c2bfcd150450eb94a3991385237393d338b6547 +PT= 6bc276c465c9adbe900049a5b58d2dcb +CT= e2f0ffa8d6df327ca0fb80a325b21931 +TEST= 13 +KEY= 80246b9fb6224226b2b5f1119ce6a344f2ccb99e16397c76 +PT= e2f0ffa8d6df327ca0fb80a325b21931 +CT= acee4c9b8a00a7760dd9cd2f6c6dfa8c +TEST= 14 +KEY= 60cdc3e8265b71e81e5bbd8a16e60432ff1574b17a5486fa +PT= acee4c9b8a00a7760dd9cd2f6c6dfa8c +CT= 9579e43690fd2800fed810f7442d366b +TEST= 15 +KEY= 9dec584db87d63f48b2259bc861b2c3201cd64463e79b091 +PT= 9579e43690fd2800fed810f7442d366b +CT= 72d4d064851a050d415fc94e3fbb6a1c +TEST= 16 +KEY= bbc1ed636907611ef9f689d80301293f4092ad0801c2da8d +PT= 72d4d064851a050d415fc94e3fbb6a1c +CT= 0ccc3b9b35ce3584d7b78c14905bee55 +TEST= 17 +KEY= ae398529289f7994f53ab24336cf1cbb9725211c919934d8 +PT= 0ccc3b9b35ce3584d7b78c14905bee55 +CT= 66b6a61bf7bcc6392b8fec12152e5363 +TEST= 18 +KEY= 4617e60bd8af29d5938c1458c173da82bcaacd0e84b767bb +PT= 66b6a61bf7bcc6392b8fec12152e5363 +CT= 6c2247ea3bc566a84a30bf0b30ab4eec +TEST= 19 +KEY= 6b762d1391aa17cbffae53b2fab6bc2af69a7205b41c2957 +PT= 6c2247ea3bc566a84a30bf0b30ab4eec +CT= c16fbcdfae34e839ba449d697452550d +TEST= 20 +KEY= 374499a8c09a60da3ec1ef6d548254134cdeef6cc04e7c5a +PT= c16fbcdfae34e839ba449d697452550d +CT= c8b704b4afe68af5c91a810f2873f13f +TEST= 21 +KEY= 09dcc638dd59f37cf676ebd9fb64dee685c46e63e83d8d65 +PT= c8b704b4afe68af5c91a810f2873f13f +CT= fc9c31036b26234ed1cba46e0be944ee +TEST= 22 +KEY= ce2ceb8869d7ec160aeadada9042fda8540fca0de3d4c98b +PT= fc9c31036b26234ed1cba46e0be944ee +CT= dcf13203ad179cd008779f189ebc78f0 +TEST= 23 +KEY= 505fbecf6b0b083cd61be8d93d5561785c7855157d68b17b +PT= dcf13203ad179cd008779f189ebc78f0 +CT= 24aeb937e259d44d352ff39c1a8a79e0 +TEST= 24 +KEY= 1d1649fdb7484dd2f2b551eedf0cb5356957a68967e2c89b +PT= 24aeb937e259d44d352ff39c1a8a79e0 +CT= 19016d033872cb7694a712a84dbc43f2 +TEST= 25 +KEY= 9be41771c0f74bdeebb43cede77e7e43fdf0b4212a5e8b69 +PT= 19016d033872cb7694a712a84dbc43f2 +CT= 0536107fea26ab6a4fe2667ef7fcf16a +TEST= 26 +KEY= ff3619aed9a1f724ee822c920d58d529b212d25fdda27a03 +PT= 0536107fea26ab6a4fe2667ef7fcf16a +CT= 5d35213390fca53ad422dc2ed4bf674d +TEST= 27 +KEY= 59d2f5af4bb6f28bb3b70da19da4701366300e71091d1d4e +PT= 5d35213390fca53ad422dc2ed4bf674d +CT= 04a6f9b1ae64ad03659c4e375a690852 +TEST= 28 +KEY= c8384d35caf0074eb711f41033c0dd1003ac40465374151c +PT= 04a6f9b1ae64ad03659c4e375a690852 +CT= 18ab347efc2f8f93655e16732bb509de +TEST= 29 +KEY= 910ce58f963b684eafbac06ecfef528366f2563578c11cc2 +PT= 18ab347efc2f8f93655e16732bb509de +CT= f6037c06c71793bd14a4fc89a05d918f +TEST= 30 +KEY= 5d1ef94fba1e098459b9bc6808f8c13e7256aabcd89c8d4d +PT= f6037c06c71793bd14a4fc89a05d918f +CT= 75094dd9b2fddac96b49cab676057288 +TEST= 31 +KEY= 61fda8da3ef8949c2cb0f1b1ba051bf7191f600aae99ffc5 +PT= 75094dd9b2fddac96b49cab676057288 +CT= 346f9f9e70c05b53dcdaf736fe59749d +TEST= 32 +KEY= 5c383ccc2dcae66a18df6e2fcac540a4c5c5973c50c08b58 +PT= 346f9f9e70c05b53dcdaf736fe59749d +CT= 1db82cc8ef5b736aaefd1f1b9ce5b67d +TEST= 33 +KEY= 1ec7fdbb8ae4ff05056742e7259e33ce6b388827cc253d25 +PT= 1db82cc8ef5b736aaefd1f1b9ce5b67d +CT= 31b5e80d946ae577268973af865151eb +TEST= 34 +KEY= ffe21fdab07e755034d2aaeab1f4d6b94db1fb884a746cce +PT= 31b5e80d946ae577268973af865151eb +CT= 9fd63eb3ec6a15fc149a4f058eda7080 +TEST= 35 +KEY= 7ec4053a63b2353bab0494595d9ec345592bb48dc4ae1c4e +PT= 9fd63eb3ec6a15fc149a4f058eda7080 +CT= 41730a9e9d197435ac36902c57b16588 +TEST= 36 +KEY= fb6d2fafd47fe8d1ea779ec7c087b770f51d24a1931f79c6 +PT= 41730a9e9d197435ac36902c57b16588 +CT= 08ad282171f0772f85c0a43e8bacec74 +TEST= 37 +KEY= 9531b1bbe0863d44e2dab6e6b177c05f70dd809f18b395b2 +PT= 08ad282171f0772f85c0a43e8bacec74 +CT= 8561e508fa237e4170cecd3a8352cfa4 +TEST= 38 +KEY= 0ab0cf2d1ca2957a67bb53ee4b54be1e00134da59be15a16 +PT= 8561e508fa237e4170cecd3a8352cfa4 +CT= 4470efa3c3172ebf64a064f59ae364a9 +TEST= 39 +KEY= 291fd5c38e400cfa23cbbc4d884390a164b3295001023ebf +PT= 4470efa3c3172ebf64a064f59ae364a9 +CT= fcc5636dfe9e45cb7761dd14a1cf4773 +TEST= 40 +KEY= 114e4def0447e1d5df0edf2076ddd56a13d2f444a0cd79cc +PT= fcc5636dfe9e45cb7761dd14a1cf4773 +CT= 2130ba8736d4933678c3b536aedbc500 +TEST= 41 +KEY= 0c19f74860652278fe3e65a74009465c6b1141720e16bccc +PT= 2130ba8736d4933678c3b536aedbc500 +CT= 1725eecba8f9a542e9956168390c82c2 +TEST= 42 +KEY= ef9e7e57576d8a3ee91b8b6ce8f0e31e8284201a371a3e0e +PT= 1725eecba8f9a542e9956168390c82c2 +CT= 60912d3eedc962d68a29aed73ddaa24d +TEST= 43 +KEY= ce6464925302b9f4898aa652053981c808ad8ecd0ac09c43 +PT= 60912d3eedc962d68a29aed73ddaa24d +CT= 43a8b490bbc75dc8d2d2f060c8672e9e +TEST= 44 +KEY= 8657f15c75c74469ca2212c2befedc00da7f7eadc2a7b2dd +PT= 43a8b490bbc75dc8d2d2f060c8672e9e +CT= 67d856af692a4ba7dec7c8c14a37bd50 +TEST= 45 +KEY= 2d566517dcc2d4ebadfa446dd7d497a704b8b66c88900f8d +PT= 67d856af692a4ba7dec7c8c14a37bd50 +CT= 293c5a05f31e863c6ca26db8018751ca +TEST= 46 +KEY= 826dfa3fd5229b9b84c61e6824ca119b681adbd489175e47 +PT= 293c5a05f31e863c6ca26db8018751ca +CT= 9421bf2e7727f49c252d644b952c76c4 +TEST= 47 +KEY= a5a13e0d1c01d7cf10e7a14653ede5074d37bf9f1c3b2883 +PT= 9421bf2e7727f49c252d644b952c76c4 +CT= cee8f6fcf7caf1c5ea9f746c10bd405b +TEST= 48 +KEY= 923d8ee015266ba8de0f57baa42714c2a7a8cbf30c8668d8 +PT= cee8f6fcf7caf1c5ea9f746c10bd405b +CT= 403220b81e6e0837acceda5acb3730be +TEST= 49 +KEY= b41fa03c1181401a9e3d7702ba491cf50b6611a9c7b15866 +PT= 403220b81e6e0837acceda5acb3730be +CT= 8c5d05679f78f853cf83cb8e5bbeba44 +TEST= 50 +KEY= 00b6d7172075472f126072652531e4a6c4e5da279c0fe222 +PT= 8c5d05679f78f853cf83cb8e5bbeba44 +CT= 6f9c74c0bb40608aad1a1202fcaf62eb +TEST= 51 +KEY= beb1f890b29e8efe7dfc06a59e71842c69ffc82560a080c9 +PT= 6f9c74c0bb40608aad1a1202fcaf62eb +CT= b812db4e295951bb04b1636a9ce91ddb +TEST= 52 +KEY= 9455abc4ac495686c5eeddebb728d5976d4eab4ffc499d12 +PT= b812db4e295951bb04b1636a9ce91ddb +CT= b164574eaecad5a06ffb4f3e6c607d61 +TEST= 53 +KEY= 1e9ccb2a3541f810748a8aa519e2003702b5e4719029e073 +PT= b164574eaecad5a06ffb4f3e6c607d61 +CT= 1433d23c1500edba0effd03d96e18f20 +TEST= 54 +KEY= f4817b9409f1f1d160b958990ce2ed8d0c4a344c06c86f53 +PT= 1433d23c1500edba0effd03d96e18f20 +CT= b81c889b6faf5da800aeba561992853b +TEST= 55 +KEY= 49f7cd1535080039d8a5d002634db0250ce48e1a1f5aea68 +PT= b81c889b6faf5da800aeba561992853b +CT= 5b558b7c5916cf14fa5bc9266cfe875f +TEST= 56 +KEY= fcd5479474ea721783f05b7e3a5b7f31f6bf473c73a46d37 +PT= 5b558b7c5916cf14fa5bc9266cfe875f +CT= 49be310d74a9980e9a78b0a8bb3ba1ab +TEST= 57 +KEY= 6a68208cc7d6782eca4e6a734ef2e73f6cc7f794c89fcc9c +PT= 49be310d74a9980e9a78b0a8bb3ba1ab +CT= 7bd5babad7f1eeaa56e17bf9b6678dc8 +TEST= 58 +KEY= 38de1a69c03ef9c1b19bd0c9990309953a268c6d7ef84154 +PT= 7bd5babad7f1eeaa56e17bf9b6678dc8 +CT= 62448a767c344e7e7cdb02112f475efe +TEST= 59 +KEY= 02634ec657b436a8d3df5abfe53747eb46fd8e7c51bf1faa +PT= 62448a767c344e7e7cdb02112f475efe +CT= f490a20d8b5c53e34c4cf5b7b72a4591 +TEST= 60 +KEY= dcdaab8cbd526850274ff8b26e6b14080ab17bcbe6955a3b +PT= f490a20d8b5c53e34c4cf5b7b72a4591 +CT= acffd7cd5c01b183ab92dbb62dc088f6 +TEST= 61 +KEY= 51eb6b7172c22a248bb02f7f326aa58ba123a07dcb55d2cd +PT= acffd7cd5c01b183ab92dbb62dc088f6 +CT= 0beddfa8e7a1ac84e3e164a59d599bab +TEST= 62 +KEY= 4796b5fa7b22626b805df0d7d5cb090f42c2c4d8560c4966 +PT= 0beddfa8e7a1ac84e3e164a59d599bab +CT= 9cc82e2b6b96254345c1fdbad667275e +TEST= 63 +KEY= d8e112f9657bd2bf1c95defcbe5d2c4c07033962806b6e38 +PT= 9cc82e2b6b96254345c1fdbad667275e +CT= 75926f4d3503411cd3c059da4ffabd62 +TEST= 64 +KEY= a19b892107c4f8f86907b1b18b5e6d50d4c360b8cf91d35a +PT= 75926f4d3503411cd3c059da4ffabd62 +CT= 1073561cf6ba28ec57f4b7e5073d27fa +TEST= 65 +KEY= aefe35f52d8d54a27974e7ad7de445bc8337d75dc8acf4a0 +PT= 1073561cf6ba28ec57f4b7e5073d27fa +CT= 83e161ba51e6f3a4588c94f7a24ba81f +TEST= 66 +KEY= 5e41a6382f88a350fa9586172c02b618dbbb43aa6ae75cbf +PT= 83e161ba51e6f3a4588c94f7a24ba81f +CT= bd693b4c49378f17322d175932b87111 +TEST= 67 +KEY= a2d760ee839234f147fcbd5b6535390fe99654f3585f2dae +PT= bd693b4c49378f17322d175932b87111 +CT= 101a83cf8487bedd2c93180bb5024ec9 +TEST= 68 +KEY= 0f463c72af8e4b5357e63e94e1b287d2c5054cf8ed5d6367 +PT= 101a83cf8487bedd2c93180bb5024ec9 +CT= 757949be62d3328d09e2f45df2ad095a +TEST= 69 +KEY= c3c0a16686a5d66b229f772a8361b55fcce7b8a51ff06a3d +PT= 757949be62d3328d09e2f45df2ad095a +CT= 63ebbf9e15becec1a0885becb3d06bf8 +TEST= 70 +KEY= 3a0b55738cf3b3e94174c8b496df7b9e6c6fe349ac2001c5 +PT= 63ebbf9e15becec1a0885becb3d06bf8 +CT= e176b5c7afce06e8ed0c63a4cf7e3034 +TEST= 71 +KEY= 450f848d964934daa0027d7339117d76816380ed635e31f1 +PT= e176b5c7afce06e8ed0c63a4cf7e3034 +CT= 97b91f0a898e5b3a77a0883140d477bc +TEST= 72 +KEY= f3af781d6ea3529237bb6279b09f264cf6c308dc238a464d +PT= 97b91f0a898e5b3a77a0883140d477bc +CT= 346ad1c470309dfe6cb08dcc24e17470 +TEST= 73 +KEY= 4e43ab584bf1f8c603d1b3bdc0afbbb29a738510076b323d +PT= 346ad1c470309dfe6cb08dcc24e17470 +CT= f8b462fb7d758b3af2cdf7d9244b738f +TEST= 74 +KEY= 5a1f023e8f0987b4fb65d146bdda308868be72c9232041b2 +PT= f8b462fb7d758b3af2cdf7d9244b738f +CT= b44d090fd0b7f762146ff6301c6dbf54 +TEST= 75 +KEY= ffc4bb75031165da4f28d8496d6dc7ea7cd184f93f4dfee6 +PT= b44d090fd0b7f762146ff6301c6dbf54 +CT= 15cb042313710f2cd1c3409b5f3af419 +TEST= 76 +KEY= 8107240e1fb855765ae3dc6a7e1cc8c6ad12c46260770aff +PT= 15cb042313710f2cd1c3409b5f3af419 +CT= 0ab01b03f415a58d52cf7a1e40856275 +TEST= 77 +KEY= 4493743ade27d1d85053c7698a096d4bffddbe7c20f2688a +PT= 0ab01b03f415a58d52cf7a1e40856275 +CT= 05be037c28719b4c4eebea329fac63d5 +TEST= 78 +KEY= f582ec062155016255edc415a278f607b136544ebf5e0b5f +PT= 05be037c28719b4c4eebea329fac63d5 +CT= 74c3c4f42b3f575c6b8d5bad9af0191f +TEST= 79 +KEY= 8faf8eeaa5e2d76b212e00e18947a15bdabb0fe325ae1240 +PT= 74c3c4f42b3f575c6b8d5bad9af0191f +CT= 92cb4a3df34e6711fb56391f26d949ad +TEST= 80 +KEY= 1cad393cc06bc104b3e54adc7a09c64a21ed36fc03775bed +PT= 92cb4a3df34e6711fb56391f26d949ad +CT= 3754bb3d8c3d7370edba842cdf17d5c0 +TEST= 81 +KEY= e3ab53bb36bdfbbb84b1f1e1f634b53acc57b2d0dc608e2d +PT= 3754bb3d8c3d7370edba842cdf17d5c0 +CT= 94eac7fd54d228619791bccbf9f633f4 +TEST= 82 +KEY= 480b1d923e853259105b361ca2e69d5b5bc60e1b2596bdd9 +PT= 94eac7fd54d228619791bccbf9f633f4 +CT= cab29222355968e9cf492d5bf08b0999 +TEST= 83 +KEY= d8f6791107fb3d26dae9a43e97bff5b2948f2340d51db440 +PT= cab29222355968e9cf492d5bf08b0999 +CT= 00837c78b88005288db39452f1eb8f13 +TEST= 84 +KEY= 6521b6b771fe24b2da6ad8462f3ff09a193cb71224f63b53 +PT= 00837c78b88005288db39452f1eb8f13 +CT= 2082f77d48a63e223a79217cd4516854 +TEST= 85 +KEY= 9d9f3198682e2476fae82f3b6799ceb82345966ef0a75307 +PT= 2082f77d48a63e223a79217cd4516854 +CT= c5074d4b3f455346b078dafbc1327ab6 +TEST= 86 +KEY= 61832291235dc7c33fef627058dc9dfe933d4c95319529b1 +PT= c5074d4b3f455346b078dafbc1327ab6 +CT= 72ee56572a2b7cec53fc4e4fc0293d63 +TEST= 87 +KEY= 5c2877854338d45d4d01342772f7e112c0c102daf1bc14d2 +PT= 72ee56572a2b7cec53fc4e4fc0293d63 +CT= 7350039161df9e8e45b360e6139e4226 +TEST= 88 +KEY= a8225cf65297ba953e5137b613287f9c8572623ce22256f4 +PT= 7350039161df9e8e45b360e6139e4226 +CT= 4339288215be1bb87e31af8fb35dedc1 +TEST= 89 +KEY= 51649b52a8458f4b7d681f3406966424fb43cdb3517fbb35 +PT= 4339288215be1bb87e31af8fb35dedc1 +CT= 4d7ab61cc2c930cbb0df43eee92eba1f +TEST= 90 +KEY= 750e4e7e9183e2ff3012a928c45f54ef4b9c8e5db851012a +PT= 4d7ab61cc2c930cbb0df43eee92eba1f +CT= 1090fe663ea77dc2ec30e8f89e662918 +TEST= 91 +KEY= b65fbdf702246e442082574efaf8292da7ac66a526372832 +PT= 1090fe663ea77dc2ec30e8f89e662918 +CT= 14307a2cc40bdfb0413df10f961337ca +TEST= 92 +KEY= 7bec3480aa0a44ff34b22d623ef3f69de69197aab0241ff8 +PT= 14307a2cc40bdfb0413df10f961337ca +CT= 8f378e272d82de8e63ec418912ef8642 +TEST= 93 +KEY= 63921e8700657d6abb85a34513712813857dd623a2cb99ba +PT= 8f378e272d82de8e63ec418912ef8642 +CT= 3947ddc00e3c4d958e508df58ab4982a +TEST= 94 +KEY= 754b2e8355fabcaf82c27e851d4d65860b2d5bd6287f0190 +PT= 3947ddc00e3c4d958e508df58ab4982a +CT= 492db375b3cc640dd8fedbaf2c943535 +TEST= 95 +KEY= e8f8c2450f8597b3cbefcdf0ae81018bd3d3807904eb34a5 +PT= 492db375b3cc640dd8fedbaf2c943535 +CT= d74bd4118d448b674935b80e4b1bfb93 +TEST= 96 +KEY= 34a2c5b010ae479a1ca419e123c58aec9ae638774ff0cf36 +PT= d74bd4118d448b674935b80e4b1bfb93 +CT= e9742b41295bc3ed3aa66e80e8718665 +TEST= 97 +KEY= 0e11d08aa9ec81a4f5d032a00a9e4901a04056f7a7814953 +PT= e9742b41295bc3ed3aa66e80e8718665 +CT= 5fb17bfe146b410f90ec922b1385d0e4 +TEST= 98 +KEY= b15779e61fd27b02aa61495e1ef5080e30acc4dcb40499b7 +PT= 5fb17bfe146b410f90ec922b1385d0e4 +CT= 1b0ccf643f19ddbc0e3ed0eeae83acc1 +TEST= 99 +KEY= 861b580225193dd5b16d863a21ecd5b23e9214321a873576 +PT= 1b0ccf643f19ddbc0e3ed0eeae83acc1 +CT= b3a7d434e30dc0cdee4d17bbc27b855e +TEST= 100 +KEY= b6df2a8726c31d6e02ca520ec2e1157fd0df0389d8fcb028 +PT= b3a7d434e30dc0cdee4d17bbc27b855e +CT= 57de2345d91e26a2ab7ca88aea23a84f +TEST= 101 +KEY= 6976d3780b5f01e25514714b1bff33dd7ba3ab0332df1867 +PT= 57de2345d91e26a2ab7ca88aea23a84f +CT= 7b03541d239b569fee7abd8980f1bd05 +TEST= 102 +KEY= 734cac477a2727542e1725563864654295d9168ab22ea562 +PT= 7b03541d239b569fee7abd8980f1bd05 +CT= 5cb7e72b2e6cff8c18aeb026fe40c2fa +TEST= 103 +KEY= b59171bebc7bfb8672a0c27d16089ace8d77a6ac4c6e6798 +PT= 5cb7e72b2e6cff8c18aeb026fe40c2fa +CT= 50b9186306da92fe785d6eb9223e43a9 +TEST= 104 +KEY= e460ba8a2f82dbb72219da1e10d20830f52ac8156e502431 +PT= 50b9186306da92fe785d6eb9223e43a9 +CT= b3d8ce8b04b99cf2f82571e1588c358b +TEST= 105 +KEY= ce7c790cd4b34c4791c11495146b94c20d0fb9f436dc11ba +PT= b3d8ce8b04b99cf2f82571e1588c358b +CT= 9845f0a5681a40a6dc3d9bca639fe786 +TEST= 106 +KEY= 699fe59b482743180984e4307c71d464d132223e5543f63c +PT= 9845f0a5681a40a6dc3d9bca639fe786 +CT= c7ebf5ceaad5652563a8550020ec7070 +TEST= 107 +KEY= febe2836f5099f53ce6f11fed6a4b141b29a773e75af864c +PT= c7ebf5ceaad5652563a8550020ec7070 +CT= de94a376634fe9856a84e2ee6eed86e8 +TEST= 108 +KEY= 22bcffb0740fc30510fbb288b5eb58c4d81e95d01b4200a4 +PT= de94a376634fe9856a84e2ee6eed86e8 +CT= 64b9917e23328a4fe1f8fdb8ae43e7f3 +TEST= 109 +KEY= e8491afdf41f0dfb744223f696d9d28b39e66868b501e757 +PT= 64b9917e23328a4fe1f8fdb8ae43e7f3 +CT= 2c59820184abc99e82a7f51d4e3a86a8 +TEST= 110 +KEY= 3be5f390d72abe6a581ba1f712721b15bb419d75fb3b61ff +PT= 2c59820184abc99e82a7f51d4e3a86a8 +CT= 387acd0bad539773287c209a0876581f +TEST= 111 +KEY= b7388762f772c83560616cfcbf218c66933dbdeff34d39e0 +PT= 387acd0bad539773287c209a0876581f +CT= f12d3e1f21afb9cacab541efb7334438 +TEST= 112 +KEY= fbd600191276fa5c914c52e39e8e35ac5988fc00447e7dd8 +PT= f12d3e1f21afb9cacab541efb7334438 +CT= 68d2fa1bb635d9d35e4bf440335cbd80 +TEST= 113 +KEY= 1e2b19106450aa2ff99ea8f828bbec7f07c308407722c058 +PT= 68d2fa1bb635d9d35e4bf440335cbd80 +CT= 4532507d5e0227054cb36cbd3c489d53 +TEST= 114 +KEY= c0b60f65bad77da4bcacf88576b9cb7a4b7064fd4b6a5d0b +PT= 4532507d5e0227054cb36cbd3c489d53 +CT= 6db8fd7de7924b7e92cf27bc0ad11d16 +TEST= 115 +KEY= 451836b53318cc33d11405f8912b8004d9bf434141bb401d +PT= 6db8fd7de7924b7e92cf27bc0ad11d16 +CT= a3d5f6a8d4372b66f8d3dd9ff945deca +TEST= 116 +KEY= 0e57235f9b527c5172c1f350451cab62216c9edeb8fe9ed7 +PT= a3d5f6a8d4372b66f8d3dd9ff945deca +CT= bedff233ad31eeb9943eebf52f66aabf +TEST= 117 +KEY= bb7e1c438e5f36a3cc1e0163e82d45dbb552752b97983468 +PT= bedff233ad31eeb9943eebf52f66aabf +CT= 4531edec06570582755199a0c4745ea5 +TEST= 118 +KEY= de70ec87811afd32892fec8fee7a4059c003ec8b53ec6acd +PT= 4531edec06570582755199a0c4745ea5 +CT= f3189383c202a472ce238571d187f8eb +TEST= 119 +KEY= ca2ae67397e9238a7a377f0c2c78e42b0e2069fa826b9226 +PT= f3189383c202a472ce238571d187f8eb +CT= b48952cbac43d0114985a9035dff0382 +TEST= 120 +KEY= 335ef040d622e95bcebe2dc7803b343a47a5c0f9df9491a4 +PT= b48952cbac43d0114985a9035dff0382 +CT= 9b71302fdfbc47df6276ab73d4d0d8b3 +TEST= 121 +KEY= 683cc10dfbc6c09c55cf1de85f8773e525d36b8a0b444917 +PT= 9b71302fdfbc47df6276ab73d4d0d8b3 +CT= 69eed4a0c5428005199df12b338393e2 +TEST= 122 +KEY= b86c9a2f1a978e123c21c9489ac5f3e03c4e9aa138c7daf5 +PT= 69eed4a0c5428005199df12b338393e2 +CT= d0c2aca653e6d7d80d32f445b0dd2347 +TEST= 123 +KEY= ef7e3dcdf05ffa86ece365eec9232438317c6ee4881af9b2 +PT= d0c2aca653e6d7d80d32f445b0dd2347 +CT= f373d4dbd7adafef582621ec8c7cd2a2 +TEST= 124 +KEY= b8059c7a6ba2273e1f90b1351e8e8bd7695a4f0804662b10 +PT= f373d4dbd7adafef582621ec8c7cd2a2 +CT= 0ad37afc8c929513f9bdb976e69c7cf3 +TEST= 125 +KEY= f5c9eccbb672d46f1543cbc9921c1ec490e7f67ee2fa57e3 +PT= 0ad37afc8c929513f9bdb976e69c7cf3 +CT= e80b118dfb34f11db344b6ae34edebc8 +TEST= 126 +KEY= aa67dc18543a7a88fd48da446928efd923a340d0d617bc2b +PT= e80b118dfb34f11db344b6ae34edebc8 +CT= 628d5c42ddeba9ae4983f51d339366b4 +TEST= 127 +KEY= bf0c30a039c0fee89fc58606b4c346776a20b5cde584da9f +PT= 628d5c42ddeba9ae4983f51d339366b4 +CT= 1be2a5a8cca8e065557f6982af3e056f +TEST= 128 +KEY= a219f6b8e2ff1aa3842723ae786ba6123f5fdc4f4abadff0 +PT= 1be2a5a8cca8e065557f6982af3e056f +CT= 5e1187d78aeb34780f07905a84d2ebba +TEST= 129 +KEY= 851ddd078d4b7802da36a479f280926a30584c15ce68344a +PT= 5e1187d78aeb34780f07905a84d2ebba +CT= 31ee3ac2ec79d14ebca71e760326cd74 +TEST= 130 +KEY= e6741084fedeeffeebd89ebb1ef943248cff5263cd4ef93e +PT= 31ee3ac2ec79d14ebca71e760326cd74 +CT= 298e3a00f280bbf8364cf8d6d44cf54e +TEST= 131 +KEY= 8a41136fe9db1fb5c256a4bbec79f8dcbab3aab519020c70 +PT= 298e3a00f280bbf8364cf8d6d44cf54e +CT= 39b7a0416c1f9b19c7b99a1f6a70258c +TEST= 132 +KEY= e1f1b622eb8bc9b1fbe104fa806663c57d0a30aa737229fc +PT= 39b7a0416c1f9b19c7b99a1f6a70258c +CT= b1655fa9ab2c4956e2c56f7a6c421be5 +TEST= 133 +KEY= 0ee0b7e1af7093694a845b532b4a2a939fcf5fd01f303219 +PT= b1655fa9ab2c4956e2c56f7a6c421be5 +CT= 1ad9cbb1a28f7a2a6cbc7ec98ef483fc +TEST= 134 +KEY= 180a2bd07f77d34e505d90e289c550b9f373211991c4b1e5 +PT= 1ad9cbb1a28f7a2a6cbc7ec98ef483fc +CT= 6363be57d6d587ee3aba9fe81f3d3a10 +TEST= 135 +KEY= 848b7408caacf02e333e2eb55f10d757c9c9bef18ef98bf5 +PT= 6363be57d6d587ee3aba9fe81f3d3a10 +CT= 05618580d7915aa7398ef4db7d1f1de3 +TEST= 136 +KEY= e581d7b4f84f2860365fab3588818df0f0474a2af3e69616 +PT= 05618580d7915aa7398ef4db7d1f1de3 +CT= f8d0118087404fd729f96ca6551338ad +TEST= 137 +KEY= 6c81d6873efff763ce8fbab50fc1c227d9be268ca6f5aebb +PT= f8d0118087404fd729f96ca6551338ad +CT= 784913b38d32a7395d73af1378a0dc56 +TEST= 138 +KEY= d971137d872f606eb6c6a90682f3651e84cd899fde5572ed +PT= 784913b38d32a7395d73af1378a0dc56 +CT= d07c418bd183457b6683ae99c457fc0b +TEST= 139 +KEY= 196bba79e35eec7966bae88d53702065e24e27061a028ee6 +PT= d07c418bd183457b6683ae99c457fc0b +CT= 5595d16df7668779825bc135d1408013 +TEST= 140 +KEY= 6f140ec274635fa2332f39e0a416a71c6015e633cb420ef5 +PT= 5595d16df7668779825bc135d1408013 +CT= 1ab9f5075e063403fefd976044c89c95 +TEST= 141 +KEY= 926f3a2aa0bd8c952996cce7fa10931f9ee871538f8a9260 +PT= 1ab9f5075e063403fefd976044c89c95 +CT= 6df413e53fceda296d7aba796179d600 +TEST= 142 +KEY= 740f74bf0e0c38154462df02c5de4936f392cb2aeef34460 +PT= 6df413e53fceda296d7aba796179d600 +CT= 0d0f499b0d51948a9ccbc4b6531a05f7 +TEST= 143 +KEY= 2500c9b63042b24b496d9699c88fddbc6f590f9cbde94197 +PT= 0d0f499b0d51948a9ccbc4b6531a05f7 +CT= 85833a1072b6a0ed932d4d89d53a785a +TEST= 144 +KEY= fcb377c07622271fcceeac89ba397d51fc74421568d339cd +PT= 85833a1072b6a0ed932d4d89d53a785a +CT= 545ede1a4b737f1e51cbdae311e91d5c +TEST= 145 +KEY= bb108abe391c394e98b07293f14a024fadbf98f6793a2491 +PT= 545ede1a4b737f1e51cbdae311e91d5c +CT= da8cc635cf1450685ddaaa5a56bc3bd9 +TEST= 146 +KEY= 34f8623ec93a6c2a423cb4a63e5e5227f06532ac2f861f48 +PT= da8cc635cf1450685ddaaa5a56bc3bd9 +CT= fe73162bf90b52dee7d0ea9d73f8444d +TEST= 147 +KEY= 5e3cb25583365d5ebc4fa28dc75500f917b5d8315c7e5b05 +PT= fe73162bf90b52dee7d0ea9d73f8444d +CT= bc75d12f66c232e1979d0f6c3e1ed8f1 +TEST= 148 +KEY= eabe655116470ae1003a73a2a19732188028d75d626083f4 +PT= bc75d12f66c232e1979d0f6c3e1ed8f1 +CT= 661a3fa0530bf47c266d609fe01daf48 +TEST= 149 +KEY= 97a1b8e97cf217c366204c02f29cc664a645b7c2827d2cbc +PT= 661a3fa0530bf47c266d609fe01daf48 +CT= 791144514cf8e4cc15bc6ade3291f9cd +TEST= 150 +KEY= 5189dc6f535b5a091f310853be6422a8b3f9dd1cb0ecd571 +PT= 791144514cf8e4cc15bc6ade3291f9cd +CT= 4369fdb3626f399a6526c476373a52d4 +TEST= 151 +KEY= 21cd36edb27428ab5c58f5e0dc0b1b32d6df196a87d687a5 +PT= 4369fdb3626f399a6526c476373a52d4 +CT= 4c8869494c044703cfdd09f83b2208aa +TEST= 152 +KEY= 85c08c7d4667ae3710d09ca9900f5c3119021092bcf48f0f +PT= 4c8869494c044703cfdd09f83b2208aa +CT= 06bc45bdb38a7028cb2d189e9e0c3046 +TEST= 153 +KEY= 807182bd7e1f29be166cd91423852c19d22f080c22f8bf49 +PT= 06bc45bdb38a7028cb2d189e9e0c3046 +CT= 74afd5f37f8f0712710585fb8db22ff8 +TEST= 154 +KEY= 1af15d0de00cef3f62c30ce75c0a2b0ba32a8df7af4a90b1 +PT= 74afd5f37f8f0712710585fb8db22ff8 +CT= b1a4ee894a12794e0c1a286ddbc01cfd +TEST= 155 +KEY= e0732ba619dcf2f5d367e26e16185245af30a59a748a8c4c +PT= b1a4ee894a12794e0c1a286ddbc01cfd +CT= 0ea90279135dffc7f58db959f9e8bfe1 +TEST= 156 +KEY= ae8779e669bff77eddcee0170545ad825abd1cc38d6233ad +PT= 0ea90279135dffc7f58db959f9e8bfe1 +CT= 3717c67e520d87778350e62525c01730 +TEST= 157 +KEY= 79d13142be9066a2ead9266957482af5d9edfae6a8a2249d +PT= 3717c67e520d87778350e62525c01730 +CT= a8f96da7ae81ef8810a317ab4c9b82a9 +TEST= 158 +KEY= 597d70828e56003942204bcef9c9c57dc94eed4de439a634 +PT= a8f96da7ae81ef8810a317ab4c9b82a9 +CT= 8c373a065986bac9e345475f5d83fbcf +TEST= 159 +KEY= 96c8cf3884d5da18ce1771c8a04f7fb42a0baa12b9ba5dfb +PT= 8c373a065986bac9e345475f5d83fbcf +CT= 8e4d562cbedc360efb25b857dd4c4ff2 +TEST= 160 +KEY= 5a0a29b58f17f9f9405a27e41e9349bad12e124564f61209 +PT= 8e4d562cbedc360efb25b857dd4c4ff2 +CT= 192ccd79e3b4c8f5617d1f55b789b7a3 +TEST= 161 +KEY= 29a4692ede3eaabe5976ea9dfd27814fb0530d10d37fa5aa +PT= 192ccd79e3b4c8f5617d1f55b789b7a3 +CT= 8a5f181e1748c98121d1c22204591b23 +TEST= 162 +KEY= 5e5ca30210e78677d329f283ea6f48ce9182cf32d726be89 +PT= 8a5f181e1748c98121d1c22204591b23 +CT= 14512a4997094a0536594e63acc5ef4a +TEST= 163 +KEY= 7da5f9c99b68dfb0c778d8ca7d6602cba7db81517be351c3 +PT= 14512a4997094a0536594e63acc5ef4a +CT= f91ba751d5e2adc074fc6cc14476de67 +TEST= 164 +KEY= 658144c57ccfdad83e637f9ba884af0bd327ed903f958fa4 +PT= f91ba751d5e2adc074fc6cc14476de67 +CT= 5f7fed22baba25d48c95c4e2caedb3f4 +TEST= 165 +KEY= 13c5d7a44396f6fd611c92b9123e8adf5fb22972f5783c50 +PT= 5f7fed22baba25d48c95c4e2caedb3f4 +CT= 0fcfb3cb93b2e7fdf7e156486929bd17 +TEST= 166 +KEY= 99dbac1d5d268db06ed32172818c6d22a8537f3a9c518147 +PT= 0fcfb3cb93b2e7fdf7e156486929bd17 +CT= 3e16265a02271ff68ae6310a6bfdee60 +TEST= 167 +KEY= a8876a49e2f1cc5250c5072883ab72d422b54e30f7ac6f27 +PT= 3e16265a02271ff68ae6310a6bfdee60 +CT= 1657bf722b57d083d8864b6447317e05 +TEST= 168 +KEY= 0a615a71bc2be3e94692b85aa8fca257fa330554b09d1122 +PT= 1657bf722b57d083d8864b6447317e05 +CT= 018b742e941e27c547451b9e41f245f5 +TEST= 169 +KEY= 6ae11571e3d54c4b4719cc743ce28592bd761ecaf16f54d7 +PT= 018b742e941e27c547451b9e41f245f5 +CT= 8c5bb61774502b6a9c44bee8d6c44a63 +TEST= 170 +KEY= dce75079013f0865cb427a6348b2aef82132a02227ab1eb4 +PT= 8c5bb61774502b6a9c44bee8d6c44a63 +CT= 361d3b51c751298194cb1aa32c0a86ee +TEST= 171 +KEY= e73232d50d457866fd5f41328fe38779b5f9ba810ba1985a +PT= 361d3b51c751298194cb1aa32c0a86ee +CT= 7b734f34dd4f332cbe5cfc7659c390bf +TEST= 172 +KEY= beef9073227655eb862c0e0652acb4550ba546f7526208e5 +PT= 7b734f34dd4f332cbe5cfc7659c390bf +CT= 63ccc9ce5dada5b5ac68870e6c675943 +TEST= 173 +KEY= 1e9078c198526c1de5e0c7c80f0111e0a7cdc1f93e0551a6 +PT= 63ccc9ce5dada5b5ac68870e6c675943 +CT= 7bbc6f7b62807cbe1c93cadb5e6cae0a +TEST= 174 +KEY= ad26ac70784ff1b99e5ca8b36d816d5ebb5e0b226069ffac +PT= 7bbc6f7b62807cbe1c93cadb5e6cae0a +CT= e95b0c766ef9049163d3a249e196ddb8 +TEST= 175 +KEY= e17835a277f1d1ee7707a4c5037869cfd88da96b81ff2214 +PT= e95b0c766ef9049163d3a249e196ddb8 +CT= 968263cbcdb4582fc9cdfd0c9fd0b4f0 +TEST= 176 +KEY= 22f9eb31e67c62dbe185c70ececc31e0114054671e2f96e4 +PT= 968263cbcdb4582fc9cdfd0c9fd0b4f0 +CT= 9f573a339dfa07b844e4034718a4fe88 +TEST= 177 +KEY= 0fec8766966a42da7ed2fd3d5336365855a45720068b686c +PT= 9f573a339dfa07b844e4034718a4fe88 +CT= a0809ba3a742c0eb1bda613b7472f56a +TEST= 178 +KEY= 98e655519c9a8a95de52669ef474f6b34e7e361b72f99d06 +PT= a0809ba3a742c0eb1bda613b7472f56a +CT= 9bf1d85440818035fa6ac36e5a5f00a7 +TEST= 179 +KEY= a8d37be0eb386f8045a3becab4f57686b414f57528a69da1 +PT= 9bf1d85440818035fa6ac36e5a5f00a7 +CT= 924e309ac04a655c50980360914e9830 +TEST= 180 +KEY= 7d89f156ea181e92d7ed8e5074bf13dae48cf615b9e80591 +PT= 924e309ac04a655c50980360914e9830 +CT= 427819cdae419a046d4586ff5a784a1c +TEST= 181 +KEY= b028a265666f69629595979ddafe89de89c970eae3904f8d +PT= 427819cdae419a046d4586ff5a784a1c +CT= d8b51eec0a6a6d17f1e476c922ad8548 +TEST= 182 +KEY= df20b45b990c5e734d208971d094e4c9782d0623c13dcac5 +PT= d8b51eec0a6a6d17f1e476c922ad8548 +CT= 7823f1bba96105168195cdac34ab5315 +TEST= 183 +KEY= af4c64f7e4aa6de2350378ca79f5e1dff9b8cb8ff59699d0 +PT= 7823f1bba96105168195cdac34ab5315 +CT= 85dd0256bc29eaa867db77c1a049574d +TEST= 184 +KEY= 4047f74604e37a00b0de7a9cc5dc0b779e63bc4e55dfce9d +PT= 85dd0256bc29eaa867db77c1a049574d +CT= 64c1880d34408cb1a92bba354941d5b6 +TEST= 185 +KEY= 9c3bf36e47110c08d41ff291f19c87c63748067b1c9e1b2b +PT= 64c1880d34408cb1a92bba354941d5b6 +CT= 25b80866fe3198c775f64c412e734348 +TEST= 186 +KEY= fae7368f99242159f1a7faf70fad1f0142be4a3a32ed5863 +PT= 25b80866fe3198c775f64c412e734348 +CT= 8d3d7e9a195363c96334c48120bc343a +TEST= 187 +KEY= 5f48bd86a9c4dc897c9a846d16fe7cc8218a8ebb12516c59 +PT= 8d3d7e9a195363c96334c48120bc343a +CT= e886eea0f2d556d693dc94ffc588d1f4 +TEST= 188 +KEY= b7406993c120ea20941c6acde42b2a1eb2561a44d7d9bdad +PT= e886eea0f2d556d693dc94ffc588d1f4 +CT= 76cb89cbb935d422ded9784d4548a84f +TEST= 189 +KEY= 4db740c3fa55f4abe2d7e3065d1efe3c6c8f6209929115e2 +PT= 76cb89cbb935d422ded9784d4548a84f +CT= 93d7ac7b18a1196d5c166203c44a43d3 +TEST= 190 +KEY= 353a0293defb648071004f7d45bfe7513099000a56db5631 +PT= 93d7ac7b18a1196d5c166203c44a43d3 +CT= 8982bd77485524ee9e49769591e922ce +TEST= 191 +KEY= f6fc1f7e838cd8a7f882f20a0deac3bfaed0769fc73274ff +PT= 8982bd77485524ee9e49769591e922ce +CT= 89012a1e3f7669c76c5f5f4987108662 +TEST= 192 +KEY= a1aa84e01ebc3e837183d814329caa78c28f29d64022f29d +PT= 89012a1e3f7669c76c5f5f4987108662 +CT= 139e37ada17990054af8ef5b717e884b +TEST= 193 +KEY= c631229e9871f2ac621defb993e53a7d8877c68d315c7ad6 +PT= 139e37ada17990054af8ef5b717e884b +CT= cec8f9c90b2e393bda4602c2a83f953c +TEST= 194 +KEY= 824604723cd82f95acd5167098cb03465231c44f9963efea +PT= cec8f9c90b2e393bda4602c2a83f953c +CT= 2a2e1344ae4c6ba40568e170bf67fd74 +TEST= 195 +KEY= 2b17489fa71f683b86fb0534368768e25759253f2604129e +PT= 2a2e1344ae4c6ba40568e170bf67fd74 +CT= 7402ac6982dbb0bed678746e4523556c +TEST= 196 +KEY= da9c0cf5a89d3d94f2f9a95db45cd85c81215151632747f2 +PT= 7402ac6982dbb0bed678746e4523556c +CT= 36a36b5b55f950f00b9f3e31156bfd65 +TEST= 197 +KEY= 543619886b56830bc45ac206e1a588ac8abe6f60764cba97 +PT= 36a36b5b55f950f00b9f3e31156bfd65 +CT= d7b36a117e824a49a5944c37bee27f06 +TEST= 198 +KEY= 9494630598e7618213e9a8179f27c2e52f2a2357c8aec591 +PT= d7b36a117e824a49a5944c37bee27f06 +CT= 2d60bc0bc950eee7e36d50e971cf68d0 +TEST= 199 +KEY= b0328218df523a0c3e89141c56772c02cc4773beb961ad41 +PT= 2d60bc0bc950eee7e36d50e971cf68d0 +CT= 49a4643e535f45a1abdef41ababbe268 +TEST= 200 +KEY= 5e3fd7acd8ef334d772d7022052869a3679987a403da4f29 +PT= 49a4643e535f45a1abdef41ababbe268 +CT= d5eeb5cc40af8612708baabe85685e4c +TEST= 201 +KEY= a232d0267d606002a2c3c5ee4587efb117122d1a86b21165 +PT= d5eeb5cc40af8612708baabe85685e4c +CT= 3f5b875de202c5441165fe5c5ca2d258 +TEST= 202 +KEY= 844ed6fafa342bfe9d9842b3a7852af50677d346da10c33d +PT= 3f5b875de202c5441165fe5c5ca2d258 +CT= 9b5f0210e0ec623c6acf1c0bc06ebf51 +TEST= 203 +KEY= 109f8cec689e0f5306c740a3476948c96cb8cf4d1a7e7c6c +PT= 9b5f0210e0ec623c6acf1c0bc06ebf51 +CT= e57015fab0006446e544704db6629059 +TEST= 204 +KEY= d9abcbac4b271b04e3b75559f7692c8f89fcbf00ac1cec35 +PT= e57015fab0006446e544704db6629059 +CT= 85f0df6b1ed933e87f6a9f609d516346 +TEST= 205 +KEY= 09915869ae1f57f766478a32e9b01f67f6962060314d8f73 +PT= 85f0df6b1ed933e87f6a9f609d516346 +CT= 471b931539c155478a1d4b9ba50dce43 +TEST= 206 +KEY= bfb70aa6c4f05c1d215c1927d0714a207c8b6bfb94404130 +PT= 471b931539c155478a1d4b9ba50dce43 +CT= 9ac55c1cc77e7b59cc9204898a38cea7 +TEST= 207 +KEY= 660972d79b056f14bb99453b170f3179b0196f721e788f97 +PT= 9ac55c1cc77e7b59cc9204898a38cea7 +CT= 19b00feb13145f9f356173b42184d516 +TEST= 208 +KEY= f09576eb17fb1a07a2294ad0041b6ee685781cc63ffc5a81 +PT= 19b00feb13145f9f356173b42184d516 +CT= 5f1379e25f6dd8653b73f58e738d6243 +TEST= 209 +KEY= 8d170bbc5e3662befd3a33325b76b683be0be9484c7138c2 +PT= 5f1379e25f6dd8653b73f58e738d6243 +CT= aef55c09e7ad76cc9ba7b83874a0a86b +TEST= 210 +KEY= 1a7bd2572d3cdb8c53cf6f3bbcdbc04f25ac517038d190a9 +PT= aef55c09e7ad76cc9ba7b83874a0a86b +CT= 6bef52e6d86dc15d2a03b5cb3ebab130 +TEST= 211 +KEY= b4bc0603f59be3d038203ddd64b601120fafe4bb066b2199 +PT= 6bef52e6d86dc15d2a03b5cb3ebab130 +CT= fdc093ffed096b7812e77e23ad9c7c71 +TEST= 212 +KEY= c00a0dda74d55250c5e0ae2289bf6a6a1d489a98abf75de8 +PT= fdc093ffed096b7812e77e23ad9c7c71 +CT= 072625cb0c022827e195de8ab4fe7e0c +TEST= 213 +KEY= 6534cbab46880ce0c2c68be985bd424dfcdd44121f0923e4 +PT= 072625cb0c022827e195de8ab4fe7e0c +CT= 11aa47c5557437aee8a8be31a849a047 +TEST= 214 +KEY= c204afe794d81224d36ccc2cd0c975e31475fa23b74083a3 +PT= 11aa47c5557437aee8a8be31a849a047 +CT= 4c91b3031567dffc22829cbc3c419b6d +TEST= 215 +KEY= 01a4820cc4d281b99ffd7f2fc5aeaa1f36f7669f8b0118ce +PT= 4c91b3031567dffc22829cbc3c419b6d +CT= 54c0f95b0179cb753917a2592f58bd77 +TEST= 216 +KEY= b5c1dd77446c8fd1cb3d8674c4d7616a0fe0c4c6a459a5b9 +PT= 54c0f95b0179cb753917a2592f58bd77 +CT= a2a19a98250e432131f9ef4ae473677f +TEST= 217 +KEY= 9fdc1167ac2d1a51699c1cece1d9224b3e192b8c402ac2c6 +PT= a2a19a98250e432131f9ef4ae473677f +CT= 9b5780ca9669a92688f54887e303f2d3 +TEST= 218 +KEY= c734a73f4a32d311f2cb9c2677b08b6db6ec630ba3293015 +PT= 9b5780ca9669a92688f54887e303f2d3 +CT= f1750745d1e74e41a07b99482ecabaaa +TEST= 219 +KEY= 1612b86730f487ef03be9b63a657c52c1697fa438de38abf +PT= f1750745d1e74e41a07b99482ecabaaa +CT= 30f510dbddaec6fc0d2504c11df23cfa +TEST= 220 +KEY= d52e3b50f72b085d334b8bb87bf903d01bb2fe829011b645 +PT= 30f510dbddaec6fc0d2504c11df23cfa +CT= 64998c3018185d722477a2dbfb84abb8 +TEST= 221 +KEY= 7f9f2a23d320792e57d2078863e15ea23fc55c596b951dfd +PT= 64998c3018185d722477a2dbfb84abb8 +CT= 9293a4ff9ed5d57d81bb8a63381bf66a +TEST= 222 +KEY= b529b6e7080e0ae4c541a377fd348bdfbe7ed63a538eeb97 +PT= 9293a4ff9ed5d57d81bb8a63381bf66a +CT= a389abcf609b41f28cc3188b2c126915 +TEST= 223 +KEY= a5c4c3a89459f79566c808b89dafca2d32bdceb17f9c8282 +PT= a389abcf609b41f28cc3188b2c126915 +CT= 5f4bc60608a3df788631ebb66763e7df +TEST= 224 +KEY= f59456291c6cf0c83983cebe950c1555b48c250718ff655d +PT= 5f4bc60608a3df788631ebb66763e7df +CT= efde2113118edfd5a15d4dfa1c1e79b4 +TEST= 225 +KEY= 9a4cd87e44ea7deed65defad8482ca8015d168fd04e11ce9 +PT= efde2113118edfd5a15d4dfa1c1e79b4 +CT= 2526ba56da8a9f9a5799a9d2be96aeba +TEST= 226 +KEY= a19d5dfaec1c9b9df37b55fb5e08551a4248c12fba77b253 +PT= 2526ba56da8a9f9a5799a9d2be96aeba +CT= 83f237712ef89a7b1e84d69defc9b9b9 +TEST= 227 +KEY= c48b0103470544867089628a70f0cf615ccc17b255be0bea +PT= 83f237712ef89a7b1e84d69defc9b9b9 +CT= 13b7e26895feefe2356306d8d822ddd3 +TEST= 228 +KEY= b366b0fe6bb3db17633e80e2e50e208369af116a8d9cd639 +PT= 13b7e26895feefe2356306d8d822ddd3 +CT= bf8c47559b230a3311543beaa90d4da1 +TEST= 229 +KEY= be5a735484b72645dcb2c7b77e2d2ab078fb2a8024919b98 +PT= bf8c47559b230a3311543beaa90d4da1 +CT= d3c9afced64f46ac74fff73302de10eb +TEST= 230 +KEY= 1dfd852fe9f131840f7b6879a8626c1c0c04ddb3264f8b73 +PT= d3c9afced64f46ac74fff73302de10eb +CT= 004386eabd8f3c60971d34b5a5f220f8 +TEST= 231 +KEY= bb9831d80259a5a40f38ee9315ed507c9b19e90683bdab8b +PT= 004386eabd8f3c60971d34b5a5f220f8 +CT= 119a244f6a3ed1947a764cfe96568213 +TEST= 232 +KEY= 93b0f09e78e610741ea2cadc7fd381e8e16fa5f815eb2998 +PT= 119a244f6a3ed1947a764cfe96568213 +CT= 4c8d061bd62737e674ddcacefc37da11 +TEST= 233 +KEY= 43e5036a09590404522fccc7a9f4b60e95b26f36e9dcf389 +PT= 4c8d061bd62737e674ddcacefc37da11 +CT= 7b5efe44536b5ab9cf75a457bb8c2417 +TEST= 234 +KEY= 869cf7bf36fbb5d829713283fa9fecb75ac7cb615250d79e +PT= 7b5efe44536b5ab9cf75a457bb8c2417 +CT= 25771915a1c0f8149634963e1c91bd26 +TEST= 235 +KEY= c9bd373897a760e30c062b965b5f14a3ccf35d5f4ec16ab8 +PT= 25771915a1c0f8149634963e1c91bd26 +CT= 8bb2bc7e7baaea1aaf7a9e285beeb8f1 +TEST= 236 +KEY= d2ee543eaca1592687b497e820f5feb96389c377152fd249 +PT= 8bb2bc7e7baaea1aaf7a9e285beeb8f1 +CT= 05556b6ab68d2dabcdb32fb724d44f57 +TEST= 237 +KEY= 9583438f7194754f82e1fc829678d312ae3aecc031fb9d1e +PT= 05556b6ab68d2dabcdb32fb724d44f57 +CT= a4ce8197b0eae6ad57d5a0630d0cabd0 +TEST= 238 +KEY= a5b96a3efb2ef0c7262f7d15269235bff9ef4ca33cf736ce +PT= a4ce8197b0eae6ad57d5a0630d0cabd0 +CT= 8e40f09865aa8ea114ea7f36e11815c3 +TEST= 239 +KEY= 8e7a04e47969f5dba86f8d8d4338bb1eed053395ddef230d +PT= 8e40f09865aa8ea114ea7f36e11815c3 +CT= 194a76947319ed92d96d292684c29b5a +TEST= 240 +KEY= e52197304b446a01b125fb193021568c34681ab3592db857 +PT= 194a76947319ed92d96d292684c29b5a +CT= 93526bbb6405bdea68ac01f1c807ebf7 +TEST= 241 +KEY= da4552ec2c076dc3227790a25424eb665cc41b42912a53a0 +PT= 93526bbb6405bdea68ac01f1c807ebf7 +CT= 59860971f900b739b36cb97d35b082d1 +TEST= 242 +KEY= e7329ed9491ca8227bf199d3ad245c5fefa8a23fa49ad171 +PT= 59860971f900b739b36cb97d35b082d1 +CT= 92f430d5b1f35b469ecddfdcb2a110f5 +TEST= 243 +KEY= 1adc19560d9aef09e905a9061cd7071971657de3163bc184 +PT= 92f430d5b1f35b469ecddfdcb2a110f5 +CT= f81d2505fd9a569a71502b23894da535 +TEST= 244 +KEY= 6ed932f2bebd486911188c03e14d5183003556c09f7664b1 +PT= f81d2505fd9a569a71502b23894da535 +CT= 93bacd72a0e761d34e8603fc44f6ba5e +TEST= 245 +KEY= f0a52339f0c68f5782a2417141aa30504eb3553cdb80deef +PT= 93bacd72a0e761d34e8603fc44f6ba5e +CT= 631db808708b5ebb54a2de6b62519235 +TEST= 246 +KEY= 0b262e7ea7109c03e1bff97931216eeb1a118b57b9d14cda +PT= 631db808708b5ebb54a2de6b62519235 +CT= c402023da5f2f230feeace1c5f8b5390 +TEST= 247 +KEY= 1e7eb042ca0ea74f25bdfb4494d39cdbe4fb454be65a1f4a +PT= c402023da5f2f230feeace1c5f8b5390 +CT= cad88e79e0ab4a3b324f6d3abbea211c +TEST= 248 +KEY= 215e3e970705be3def65753d7478d6e0d6b428715db03e56 +PT= cad88e79e0ab4a3b324f6d3abbea211c +CT= 1b2303c4feb78105b5bf35bc1c5c2ff9 +TEST= 249 +KEY= 512ce443b55593d9f44676f98acf57e5630b1dcd41ec11af +PT= 1b2303c4feb78105b5bf35bc1c5c2ff9 +CT= 06cae1eed611af829c83216697f8aefa +TEST= 250 +KEY= 533251960972b2bff28c97175cdef867ff883cabd614bf55 +PT= 06cae1eed611af829c83216697f8aefa +CT= 170194a7e4e85b0a339bf86460e5abc6 +TEST= 251 +KEY= b484a158fbc3d31fe58d03b0b836a36dcc13c4cfb6f11493 +PT= 170194a7e4e85b0a339bf86460e5abc6 +CT= af7014d972f55b0cd759cafbc0d9483b +TEST= 252 +KEY= c470759a6962c1934afd1769cac3f8611b4a0e3476285ca8 +PT= af7014d972f55b0cd759cafbc0d9483b +CT= e8bd547419dadd980682b701ccef3c7e +TEST= 253 +KEY= d27a5bf9dd3b6f61a240431dd31925f91dc8b935bac760d6 +PT= e8bd547419dadd980682b701ccef3c7e +CT= e8f9cfaa891a471ebbc5806f03e0e18a +TEST= 254 +KEY= 041c2ff776baf2334ab98cb75a0362e7a60d395ab927815c +PT= e8f9cfaa891a471ebbc5806f03e0e18a +CT= f90f888c03cebfc9a807df2100488b24 +TEST= 255 +KEY= 9bb4307835c91ba4b3b6043b59cddd2e0e0ae67bb96f0a78 +PT= f90f888c03cebfc9a807df2100488b24 +CT= 7874c642b44810334c2cf572da0def68 +TEST= 256 +KEY= 56e742b84f293b68cbc2c279ed85cd1d422613096362e510 +PT= 7874c642b44810334c2cf572da0def68 +CT= 064513bbd5e667b651b93502e86b6c43 +TEST= 257 +KEY= 66e28c26e01570fccd87d1c23863aaab139f260b8b098953 +PT= 064513bbd5e667b651b93502e86b6c43 +CT= d461a03d7d8669bbc32430d00d437e59 +TEST= 258 +KEY= 5674831937969b7619e671ff45e5c310d0bb16db864af70a +PT= d461a03d7d8669bbc32430d00d437e59 +CT= 0a07f858dbd1909ff970c95ed7287fb3 +TEST= 259 +KEY= d45bcd0ff3e14a7013e189a79e34538f29cbdf85516288b9 +PT= 0a07f858dbd1909ff970c95ed7287fb3 +CT= c2e45d29c1df02cb4d768682add73e6b +TEST= 260 +KEY= 40f81ebef03aaaabd105d48e5feb514464bd5907fcb5b6d2 +PT= c2e45d29c1df02cb4d768682add73e6b +CT= 01e21e496061dac195f24f6d1cf22b8a +TEST= 261 +KEY= 99c8875ee8221c3fd0e7cac73f8a8b85f14f166ae0479d58 +PT= 01e21e496061dac195f24f6d1cf22b8a +CT= 71d1c35e1126f6907cdb5414b8c97e84 +TEST= 262 +KEY= f1582613b3466d7fa13609992eac7d158d94427e588ee3dc +PT= 71d1c35e1126f6907cdb5414b8c97e84 +CT= 8b7bbaf63c993d4bbb098a22d00c5608 +TEST= 263 +KEY= 4679a2f69656cfd32a4db36f1235405e369dc85c8882b5d4 +PT= 8b7bbaf63c993d4bbb098a22d00c5608 +CT= 651b19f5c1b67fc52151e7c5f1246485 +TEST= 264 +KEY= a404fc3490dfc7244f56aa9ad3833f9b17cc2f9979a6d151 +PT= 651b19f5c1b67fc52151e7c5f1246485 +CT= 158f0ae36b5585868dfb998520318feb +TEST= 265 +KEY= f7dcca4394981f2d5ad9a079b8d6ba1d9a37b61c59975eba +PT= 158f0ae36b5585868dfb998520318feb +CT= b62ec94231405f3fb0d160fbff2de27e +TEST= 266 +KEY= 1f38711c9b6bd060ecf7693b8996e5222ae6d6e7a6babcc4 +PT= b62ec94231405f3fb0d160fbff2de27e +CT= 464affa35373cee71523ff0afbfb1f51 +TEST= 267 +KEY= 6b846aac0c448654aabd9698dae52bc53fc529ed5d41a395 +PT= 464affa35373cee71523ff0afbfb1f51 +CT= c729ea9a05d5482491ce31dbbc03ce24 +TEST= 268 +KEY= bd539a9b4001b6876d947c02df3063e1ae0b1836e1426db1 +PT= c729ea9a05d5482491ce31dbbc03ce24 +CT= c755c048adad22a628b077163097415f +TEST= 269 +KEY= 18b524eef606589daac1bc4a729d414786bb6f20d1d52cee +PT= c755c048adad22a628b077163097415f +CT= 2dadb8f8fc76d8c997627449e44d14b2 +TEST= 270 +KEY= 3c2c6a047706e3dd876c04b28eeb998e11d91b693598385c +PT= 2dadb8f8fc76d8c997627449e44d14b2 +CT= 2d7109526c2f1b5d08dd356b163498d7 +TEST= 271 +KEY= 40593d776b6c5920aa1d0de0e2c482d319042e0223aca08b +PT= 2d7109526c2f1b5d08dd356b163498d7 +CT= d9c1d988abd5c892b2e5ba7bf4f584d3 +TEST= 272 +KEY= 72b53e4711b3de9873dcd46849114a41abe19479d7592458 +PT= d9c1d988abd5c892b2e5ba7bf4f584d3 +CT= 0a32e78440a8ae4a3ff74b20a3f5f7de +TEST= 273 +KEY= c0bef126899b305b79ee33ec09b9e40b9416df5974acd386 +PT= 0a32e78440a8ae4a3ff74b20a3f5f7de +CT= e7aa36688851d8e4e08e9efe6987c571 +TEST= 274 +KEY= d16257efee63cc399e44058481e83cef749841a71d2b16f7 +PT= e7aa36688851d8e4e08e9efe6987c571 +CT= 0e3e2e99ffa84f8a69caa897017dd09c +TEST= 275 +KEY= 3509e5a7a66648b9907a2b1d7e4073651d52e9301c56c66b +PT= 0e3e2e99ffa84f8a69caa897017dd09c +CT= 96766b7f6e78537994466bdc62607c85 +TEST= 276 +KEY= 46bc3eb6fa22c8ac060c40621038201c891482ec7e36baee +PT= 96766b7f6e78537994466bdc62607c85 +CT= aa42980bbaba21dace6d9fcd28a5b0ba +TEST= 277 +KEY= 26fc66c5e5c6e585ac4ed869aa8201c647791d2156930a54 +PT= aa42980bbaba21dace6d9fcd28a5b0ba +CT= ec057f10222ec91403e1b6cefce3556a +TEST= 278 +KEY= 91fbdf7b24b0feb4404ba77988acc8d24498abefaa705f3e +PT= ec057f10222ec91403e1b6cefce3556a +CT= e6e91ec6b977c3547d08f717f6702e80 +TEST= 279 +KEY= 5bd8360bb35ce209a6a2b9bf31db0b8639905cf85c0071be +PT= e6e91ec6b977c3547d08f717f6702e80 +CT= df9be6a5a61cc4b66c76447202cbfada +TEST= 280 +KEY= e58d0efab72342bd79395f1a97c7cf3055e6188a5ecb8b64 +PT= df9be6a5a61cc4b66c76447202cbfada +CT= 8466fa526e1038cc14a2ec6d85fc4edf +TEST= 281 +KEY= 7eb51dd43b05bb26fd5fa548f9d7f7fc4144f4e7db37c5bb +PT= 8466fa526e1038cc14a2ec6d85fc4edf +CT= 5c5a965e386b16d50f3487d54c04aa6b +TEST= 282 +KEY= 8f4beba429fe57c4a1053316c1bce1294e70733297336fd0 +PT= 5c5a965e386b16d50f3487d54c04aa6b +CT= bcd57b57faa6e3f81660113345cd24f9 +TEST= 283 +KEY= 4a5da421d27e62821dd048413b1a02d158106201d2fe4b29 +PT= bcd57b57faa6e3f81660113345cd24f9 +CT= 7450d38b3a6d8c4987ee3f7f71c68ffc +TEST= 284 +KEY= 77934ae2bb39bc4469809bca01778e98dffe5d7ea338c4d5 +PT= 7450d38b3a6d8c4987ee3f7f71c68ffc +CT= a6d1d5a31bab1ce9f027376539b2aae2 +TEST= 285 +KEY= 2c6fd4455e96f2f6cf514e691adc92712fd96a1b9a8a6e37 +PT= a6d1d5a31bab1ce9f027376539b2aae2 +CT= 10894e2e6275d172259d4c23332508b9 +TEST= 286 +KEY= 2608ab9aa8ced631dfd8004778a943030a442638a9af668e +PT= 10894e2e6275d172259d4c23332508b9 +CT= 53c2ab8e42b4ef7ff659d3fb251453c7 +TEST= 287 +KEY= 68840bd9639ac3128c1aabc93a1dac7cfc1df5c38cbb3549 +PT= 53c2ab8e42b4ef7ff659d3fb251453c7 +CT= 3a9c38d026561b83b0f3e7b566c66cd2 +TEST= 288 +KEY= efcdf07c0e70d051b68693191c4bb7ff4cee1276ea7d599b +PT= 3a9c38d026561b83b0f3e7b566c66cd2 +CT= b9f7e495b96be7c0307d8f7a53200193 +TEST= 289 +KEY= 87dfc62793b45ef60f71778ca520503f7c939d0cb95d5808 +PT= b9f7e495b96be7c0307d8f7a53200193 +CT= 2425fe8aaa7ed06a5ffec11d7b289891 +TEST= 290 +KEY= 5fd78da64a9f50142b5489060f5e8055236d5c11c275c099 +PT= 2425fe8aaa7ed06a5ffec11d7b289891 +CT= 93bc83bcf69dbb256c27af250fdefaeb +TEST= 291 +KEY= 81c88579e065fd16b8e80abaf9c33b704f4af334cdab3a72 +PT= 93bc83bcf69dbb256c27af250fdefaeb +CT= a1af953d4bd1a474b1173d4686ebb8cf +TEST= 292 +KEY= dee7ffe9a3814d2b19479f87b2129f04fe5dce724b4082bd +PT= a1af953d4bd1a474b1173d4686ebb8cf +CT= 00aac1cd74952011a03714a6bb091653 +TEST= 293 +KEY= 8331cc8136829f1e19ed5e4ac687bf155e6adad4f04994ee +PT= 00aac1cd74952011a03714a6bb091653 +CT= 00b92cbffc3589ceb3ecaa7d221c3f0b +TEST= 294 +KEY= ff862ebfecc11e93195472f53ab236dbed8670a9d255abe5 +PT= 00b92cbffc3589ceb3ecaa7d221c3f0b +CT= 2e07858e94ad300a35448efa848a767a +TEST= 295 +KEY= 18b8678c5497708e3753f77bae1f06d1d8c2fe5356dfdd9f +PT= 2e07858e94ad300a35448efa848a767a +CT= b02f0c98f3b7bb7807f35f6dfd925238 +TEST= 296 +KEY= c90d1e18331ca38f877cfbe35da8bda9df31a13eab4d8fa7 +PT= b02f0c98f3b7bb7807f35f6dfd925238 +CT= eaacc8624146d29129ed8b904e89f04a +TEST= 297 +KEY= a08ad721ee869f2e6dd033811cee6f38f6dc2aaee5c47fed +PT= eaacc8624146d29129ed8b904e89f04a +CT= 8949a5a4289b65a32c5116e8a4b55a50 +TEST= 298 +KEY= ced3055cb1ac48cae499962534750a9bda8d3c46417125bd +PT= 8949a5a4289b65a32c5116e8a4b55a50 +CT= b632c5fd8eb9676b5504a8ba13e63e2d +TEST= 299 +KEY= ad1da883effc2f3052ab53d8bacc6df08f8994fc52971b90 +PT= b632c5fd8eb9676b5504a8ba13e63e2d +CT= ef28a1297c07a575686b3429ac9b62d1 +TEST= 300 +KEY= 007f57339ec932ccbd83f2f1c6cbc885e7e2a0d5fe0c7941 +PT= ef28a1297c07a575686b3429ac9b62d1 +CT= c99f15e4000944120d1c3dd283d99bff +TEST= 301 +KEY= 3688fdd4fd7822f2741ce715c6c28c97eafe9d077dd5e2be +PT= c99f15e4000944120d1c3dd283d99bff +CT= 0ac0219e2bd43f9f19f3a0997fcb9fcd +TEST= 302 +KEY= ab54bf259c6f5cee7edcc68bed16b308f30d3d9e021e7d73 +PT= 0ac0219e2bd43f9f19f3a0997fcb9fcd +CT= e27242bc80823bdc09c33c1bdb2ea3be +TEST= 303 +KEY= 9c88f101b483f8399cae84376d9488d4face0185d930decd +PT= e27242bc80823bdc09c33c1bdb2ea3be +CT= 7abf9bd872f54e12fb7f0b11a6d10472 +TEST= 304 +KEY= 971a26707e5b8bc2e6111fef1f61c6c601b10a947fe1dabf +PT= 7abf9bd872f54e12fb7f0b11a6d10472 +CT= 336653e5166f1b4146dbeaed74d72bb7 +TEST= 305 +KEY= 1ffd085658f88f24d5774c0a090edd87476ae0790b36f108 +PT= 336653e5166f1b4146dbeaed74d72bb7 +CT= 4849136d0509ce6c404e5685fbeee9b8 +TEST= 306 +KEY= 411df55702805fe69d3e5f670c0713eb0724b6fcf0d818b0 +PT= 4849136d0509ce6c404e5685fbeee9b8 +CT= 6cf8dcfd53e2ed214a449398d8bf0f6c +TEST= 307 +KEY= 504bff39e24e870ff1c6839a5fe5feca4d602564286717dc +PT= 6cf8dcfd53e2ed214a449398d8bf0f6c +CT= 9c8326b89b3054a46eca3bb76bc2f292 +TEST= 308 +KEY= e4f4b55125d2d1056d45a522c4d5aa6e23aa1ed343a5e54e +PT= 9c8326b89b3054a46eca3bb76bc2f292 +CT= c85479c9e038ba5495f67d6e8b2beb64 +TEST= 309 +KEY= f2e9b605207e0fd4a511dceb24ed103ab65c63bdc88e0e2a +PT= c85479c9e038ba5495f67d6e8b2beb64 +CT= 145607acffa06c08ab958dcb7bc0bdbc +TEST= 310 +KEY= cc0d3f478519145bb147db47db4d7c321dc9ee76b34eb396 +PT= 145607acffa06c08ab958dcb7bc0bdbc +CT= ed7ee0da132d9964be5e7b2581c3c270 +TEST= 311 +KEY= eb3afcdd9aab59705c393b9dc860e556a3979553328d71e6 +PT= ed7ee0da132d9964be5e7b2581c3c270 +CT= 6b576fd09f34ed38774aa383bb88b385 +TEST= 312 +KEY= 866ecc1b3691532d376e544d5754086ed4dd36d08905c263 +PT= 6b576fd09f34ed38774aa383bb88b385 +CT= e540518151453a18c29be22b5de84d5b +TEST= 313 +KEY= 2b3bf12a0a10e6f9d22e05cc061132761646d4fbd4ed8f38 +PT= e540518151453a18c29be22b5de84d5b +CT= 7865de74099d486ecb584be7890f3078 +TEST= 314 +KEY= 3c6ea741634001e0aa4bdbb80f8c7a18dd1e9f1c5de2bf40 +PT= 7865de74099d486ecb584be7890f3078 +CT= 5226b72fa16653187980d265eb6c7c6d +TEST= 315 +KEY= a32e19e0f06cb649f86d6c97aeea2900a49e4d79b68ec32d +PT= 5226b72fa16653187980d265eb6c7c6d +CT= ca0d39d92b042becabf7a14115b3a307 +TEST= 316 +KEY= e48451707115d4a03260554e85ee02ec0f69ec38a33d602a +PT= ca0d39d92b042becabf7a14115b3a307 +CT= ec1658d60f1d94ef514fa8edadab3c1d +TEST= 317 +KEY= 89a589616229672bde760d988af396035e2644d50e965c37 +PT= ec1658d60f1d94ef514fa8edadab3c1d +CT= f278cd13bf2c6a1f2d9a9f0c1113205d +TEST= 318 +KEY= 6013e84efd076e402c0ec08b35dffc1c73bcdbd91f857c6a +PT= f278cd13bf2c6a1f2d9a9f0c1113205d +CT= 0b1a35f604ddb043bcd0573dc0850af0 +TEST= 319 +KEY= 68bce1dc00c592e22714f57d31024c5fcf6c8ce4df00769a +PT= 0b1a35f604ddb043bcd0573dc0850af0 +CT= eac4fe6f8a04871ac434322cb06308e3 +TEST= 320 +KEY= 1be682363f216340cdd00b12bb06cb450b58bec86f637e79 +PT= eac4fe6f8a04871ac434322cb06308e3 +CT= 64b6ba31c6b15be040dc2c0a07ffe60f +TEST= 321 +KEY= 2082c6c0d49b4deca966b1237db790a54b8492c2689c9876 +PT= 64b6ba31c6b15be040dc2c0a07ffe60f +CT= 5ecdc37fea4176145c6a308f91659d43 +TEST= 322 +KEY= 23668eea68987f8cf7ab725c97f6e6b117eea24df9f90535 +PT= 5ecdc37fea4176145c6a308f91659d43 +CT= bb25c81945a062a7d53531593d9910f6 +TEST= 323 +KEY= 10b544566773dd5f4c8eba45d2568416c2db9314c46015c3 +PT= bb25c81945a062a7d53531593d9910f6 +CT= 48d98fffc4e378d42cfc785b53dfc38d +TEST= 324 +KEY= 7f96dd27e1c0b7b7045735ba16b5fcc2ee27eb4f97bfd64e +PT= 48d98fffc4e378d42cfc785b53dfc38d +CT= 7dce20bae8345cb68103461b4afa9f09 +TEST= 325 +KEY= a73354fc47570b2679991500fe81a0746f24ad54dd454947 +PT= 7dce20bae8345cb68103461b4afa9f09 +CT= 099b315b4dd55cab5d02163154da521c +TEST= 326 +KEY= 92a57b873a1d292f7002245bb354fcdf3226bb65899f1b5b +PT= 099b315b4dd55cab5d02163154da521c +CT= 37207c17099989d3ea0d13dbd6df7fef +TEST= 327 +KEY= 7048af52e1763e8e4722584cbacd750cd82ba8be5f4064b4 +PT= 37207c17099989d3ea0d13dbd6df7fef +CT= 7ce37081a6751a1518f03b70fbc1479d +TEST= 328 +KEY= 24e37af6a4bc72403bc128cd1cb86f19c0db93cea4812329 +PT= 7ce37081a6751a1518f03b70fbc1479d +CT= 201bbd8456f70ed0bb4e19a7ae36f1a6 +TEST= 329 +KEY= 17e541a643cb8ee01bda95494a4f61c97b958a690ab7d28f +PT= 201bbd8456f70ed0bb4e19a7ae36f1a6 +CT= 3384168e4f022049b0e3ad6899b71dc9 +TEST= 330 +KEY= 31d5a160b61690a0285e83c7054d4180cb7627019300cf46 +PT= 3384168e4f022049b0e3ad6899b71dc9 +CT= c83aa6ae617cb17e2977d394ebc4ad19 +TEST= 331 +KEY= 6eba775b83d704aae06425696431f0fee201f49578c4625f +PT= c83aa6ae617cb17e2977d394ebc4ad19 +CT= 8ac467890af8e729c7a86a471adeb378 +TEST= 332 +KEY= c1237f715488582e6aa042e06ec917d725a99ed2621ad127 +PT= 8ac467890af8e729c7a86a471adeb378 +CT= b89ce4f733a9d67c8e504bc4bc2f7664 +TEST= 333 +KEY= 0a9e4bdad3e856f1d23ca6175d60c1ababf9d516de35a743 +PT= b89ce4f733a9d67c8e504bc4bc2f7664 +CT= 47b421469b794a5188255ace84d89721 +TEST= 334 +KEY= 4be367b885f7af9195888751c6198bfa23dc8fd85aed3062 +PT= 47b421469b794a5188255ace84d89721 +CT= b6b09dbf9e62c60951368c9c8b63a860 +TEST= 335 +KEY= cdfb62995e4c5d4e23381aee587b4df372ea0344d18e9802 +PT= b6b09dbf9e62c60951368c9c8b63a860 +CT= 68933b4bd0bc23eb3178347dfe68e7f6 +TEST= 336 +KEY= 8887ebf40de51f064bab21a588c76e18439237392fe67ff4 +PT= 68933b4bd0bc23eb3178347dfe68e7f6 +CT= c6f16cddf00c982a927609b559b0bcbd +TEST= 337 +KEY= 221d949b8ca9f4c48d5a4d7878cbf632d1e43e8c7656c349 +PT= c6f16cddf00c982a927609b559b0bcbd +CT= cbee831f7623e3214e72af57706525c7 +TEST= 338 +KEY= 3d35666daceff3c846b4ce670ee815139f9691db0633e68e +PT= cbee831f7623e3214e72af57706525c7 +CT= dfe0297ae9b69f0ad69d6189c1447333 +TEST= 339 +KEY= 43370c9c958216dc9954e71de75e8a19490bf052c77795bd +PT= dfe0297ae9b69f0ad69d6189c1447333 +CT= 59c3b4d6055b9f73064b715cd5213c99 +TEST= 340 +KEY= df43233d68ee5c4ac09753cbe205156a4f40810e1256a924 +PT= 59c3b4d6055b9f73064b715cd5213c99 +CT= 5373f13bb16b3653fcc138fc9a9e8a47 +TEST= 341 +KEY= 472e0a65b06b4f4693e4a2f0536e2339b381b9f288c82363 +PT= 5373f13bb16b3653fcc138fc9a9e8a47 +CT= 9c7514b7fedf2dc26b0c2c1954745077 +TEST= 342 +KEY= 1409e4df955583a00f91b647adb10efbd88d95ebdcbc7314 +PT= 9c7514b7fedf2dc26b0c2c1954745077 +CT= 2480d7c35d6b0207d84a9cefa1c2cfdc +TEST= 343 +KEY= 458552cab6b1a8ac2b116184f0da0cfc00c709047d7ebcc8 +PT= 2480d7c35d6b0207d84a9cefa1c2cfdc +CT= 46de3e51f1355fa76652c8da3642409b +TEST= 344 +KEY= 2065d6f033e1ee2e6dcf5fd501ef535b6695c1de4b3cfc53 +PT= 46de3e51f1355fa76652c8da3642409b +CT= 13f328173d057a64da3917468528db4f +TEST= 345 +KEY= 6d30053e2c95bc5a7e3c77c23cea293fbcacd698ce14271c +PT= 13f328173d057a64da3917468528db4f +CT= 33d71b6cd0a68b685c89c9f2d70fdfce +TEST= 346 +KEY= 59d69c2d25bfb6a34deb6caeec4ca257e0251f6a191bf8d2 +PT= 33d71b6cd0a68b685c89c9f2d70fdfce +CT= 8e9f57b5e945cd7dfc2b9fcd5af96dfb +TEST= 347 +KEY= f41abd021e5c144ec3743b1b05096f2a1c0e80a743e29529 +PT= 8e9f57b5e945cd7dfc2b9fcd5af96dfb +CT= 71295b41b9e5872e1bd4d5c3c4c62d71 +TEST= 348 +KEY= 41c1194732cd4654b25d605abcece80407da55648724b858 +PT= 71295b41b9e5872e1bd4d5c3c4c62d71 +CT= e704fbbaa917788ce906a54b2a56a232 +TEST= 349 +KEY= af58932371569ce655599be015fb9088eedcf02fad721a6a +PT= e704fbbaa917788ce906a54b2a56a232 +CT= 8dba56cf3e019b8ea80ccb772551ca5b +TEST= 350 +KEY= b1e68a05a144f4fad8e3cd2f2bfa0b0646d03b588823d031 +PT= 8dba56cf3e019b8ea80ccb772551ca5b +CT= 18f8a23f785afefc4ecd527ac6dbe609 +TEST= 351 +KEY= 456d39ff40b1622bc01b6f1053a0f5fa081d69224ef83638 +PT= 18f8a23f785afefc4ecd527ac6dbe609 +CT= 073f93a707d6b9a82e99990cb13bd00e +TEST= 352 +KEY= 1ff446993b6927c6c724fcb754764c522684f02effc3e636 +PT= 073f93a707d6b9a82e99990cb13bd00e +CT= 76723e1239356edc37fb5e1eafdf4678 +TEST= 353 +KEY= 0ded89e36c3b06b9b156c2a56d43228e117fae30501ca04e +PT= 76723e1239356edc37fb5e1eafdf4678 +CT= 1b57d35b4e2484d3945b82d59114a531 +TEST= 354 +KEY= e433448eb970d64faa0111fe2367a65d85242ce5c108057f +PT= 1b57d35b4e2484d3945b82d59114a531 +CT= 4466dcb75f6b83885ee32d9fd533a902 +TEST= 355 +KEY= 3751ec4737f029e3ee67cd497c0c25d5dbc7017a143bac7d +PT= 4466dcb75f6b83885ee32d9fd533a902 +CT= a8b62b9fcaa9331a3282899db475aade +TEST= 356 +KEY= 6c1042facd259cc346d1e6d6b6a516cfe94588e7a04e06a3 +PT= a8b62b9fcaa9331a3282899db475aade +CT= dfe1cb42b29f119e44f37f60a8c2bd7c +TEST= 357 +KEY= 640d2db3e708999a99302d94043a0751adb6f787088cbbdf +PT= dfe1cb42b29f119e44f37f60a8c2bd7c +CT= 891b211ee1bea05ad7ba478fdfebc507 +TEST= 358 +KEY= c434ff9bd02bdf6c102b0c8ae584a70b7a0cb008d7677ed8 +PT= 891b211ee1bea05ad7ba478fdfebc507 +CT= 16abb92a1e0f433250c551f84ae177cf +TEST= 359 +KEY= 22a76dafc8a7748e0680b5a0fb8be4392ac9e1f09d860917 +PT= 16abb92a1e0f433250c551f84ae177cf +CT= 1a2f4bf6ed0cadb7fa3fc52f3c6af191 +TEST= 360 +KEY= 5ddedf839cf5c0d11caffe561687498ed0f624dfa1ecf886 +PT= 1a2f4bf6ed0cadb7fa3fc52f3c6af191 +CT= 16ae687ee38fb85c0f70e20f5585f750 +TEST= 361 +KEY= 13d0157c6a30c26c0a019628f508f1d2df86c6d0f4690fd6 +PT= 16ae687ee38fb85c0f70e20f5585f750 +CT= 6cd2d70f641b2a7814014177c4880107 +TEST= 362 +KEY= 6dbff188e61696c966d341279113dbaacb8787a730e10ed1 +PT= 6cd2d70f641b2a7814014177c4880107 +CT= 8cad28041ae53aa64ce0173dbd9046c2 +TEST= 363 +KEY= 44a13b269c44f018ea7e69238bf6e10c8767909a8d714813 +PT= 8cad28041ae53aa64ce0173dbd9046c2 +CT= fc8d4274ba1ef15cc39e750dd1848f7b +TEST= 364 +KEY= b7a8311b81a3b82c16f32b5731e8105044f9e5975cf5c768 +PT= fc8d4274ba1ef15cc39e750dd1848f7b +CT= 01cbdaeaade486cf655401d8f7f7e84e +TEST= 365 +KEY= a3ac668823c917de1738f1bd9c0c969f21ade44fab022f26 +PT= 01cbdaeaade486cf655401d8f7f7e84e +CT= 494c3219700e06ee9c4dcb61ef932fdf +TEST= 366 +KEY= 05cc07dc3cbb1a4b5e74c3a4ec029071bde02f2e449100f9 +PT= 494c3219700e06ee9c4dcb61ef932fdf +CT= bb0e7d5cd93b1839df5caed7996f9560 +TEST= 367 +KEY= 8768468efc3ce954e57abef83539884862bc81f9ddfe9599 +PT= bb0e7d5cd93b1839df5caed7996f9560 +CT= cc1f9a504a67c24621ed127c63ae2a36 +TEST= 368 +KEY= 470e251f98662cec296524a87f5e4a0e43519385be50bfaf +PT= cc1f9a504a67c24621ed127c63ae2a36 +CT= a48d3751956b71f925680073b35bc0a3 +TEST= 369 +KEY= 533c67c061ce6b9e8de813f9ea353bf7663993f60d0b7f0c +PT= a48d3751956b71f925680073b35bc0a3 +CT= 80143ac021e94718146ebc7808a9ddd8 +TEST= 370 +KEY= 0303563b9274349d0dfc2939cbdc7cef72572f8e05a2a2d4 +PT= 80143ac021e94718146ebc7808a9ddd8 +CT= b90ac6adee1b60228096d022ee5c681b +TEST= 371 +KEY= 1e7d3a52cc112bdcb4f6ef9425c71ccdf2c1ffacebfecacf +PT= b90ac6adee1b60228096d022ee5c681b +CT= cb8553b21250642107e824e8fb27caea +TEST= 372 +KEY= 750a36009059323e7f73bc26379778ecf529db4410d90025 +PT= cb8553b21250642107e824e8fb27caea +CT= 9c86da9646fcfea7e778a5498f50e01e +TEST= 373 +KEY= 6876c614c460b02ce3f566b0716b864b12517e0d9f89e03b +PT= 9c86da9646fcfea7e778a5498f50e01e +CT= 1481357ad5690762fd6f3809f1e5f219 +TEST= 374 +KEY= 7ce6b00f6b651faef77453caa4028129ef3e46046e6c1222 +PT= 1481357ad5690762fd6f3809f1e5f219 +CT= 39b64998d4370e0cb47c1dc23edcdd03 +TEST= 375 +KEY= c3f72a84ef6f4a0ccec21a5270358f255b425bc650b0cf21 +PT= 39b64998d4370e0cb47c1dc23edcdd03 +CT= eb1ba96272d7bb044a3381439ba4cd5b +TEST= 376 +KEY= c670185a26e7da4a25d9b33002e234211171da85cb14027a +PT= eb1ba96272d7bb044a3381439ba4cd5b +CT= f87ec3d7f55da25790718e461ba2e194 +TEST= 377 +KEY= 72ecf820ac459d8ddda770e7f7bf9676810054c3d0b6e3ee +PT= f87ec3d7f55da25790718e461ba2e194 +CT= ad7ea1621ad7fba975d6bb0ab9aed116 +TEST= 378 +KEY= ce4ecad1c7d17d1170d9d185ed686ddff4d6efc9691832f8 +PT= ad7ea1621ad7fba975d6bb0ab9aed116 +CT= 473b6484f6eae1fc837a2710ae8d462f +TEST= 379 +KEY= 3273752c9a8682f237e2b5011b828c2377acc8d9c79574d7 +PT= 473b6484f6eae1fc837a2710ae8d462f +CT= 0e3634529e49692762f4d80333738045 +TEST= 380 +KEY= 8c2cfbb98a4e5e3839d4815385cbe504155810daf4e6f492 +PT= 0e3634529e49692762f4d80333738045 +CT= f8efebd78c115cc620f25ab66038f2a0 +TEST= 381 +KEY= 0416dbcafa0850d8c13b6a8409dab9c235aa4a6c94de0632 +PT= f8efebd78c115cc620f25ab66038f2a0 +CT= b4442c38e3b8e87d8aae2c17a5571ce9 +TEST= 382 +KEY= 7a7815a748696e99757f46bcea6251bfbf04667b31891adb +PT= b4442c38e3b8e87d8aae2c17a5571ce9 +CT= 576a20e194015ab069d769fca7d842fc +TEST= 383 +KEY= 3848903cd019b4572215665d7e630b0fd6d30f8796515827 +PT= 576a20e194015ab069d769fca7d842fc +CT= e253d9fb4075b021df452b3ad51204d6 +TEST= 384 +KEY= 3e468d281df03284c046bfa63e16bb2e099624bd43435cf1 +PT= e253d9fb4075b021df452b3ad51204d6 +CT= d9454ae62207e70a34f13b0063498a8f +TEST= 385 +KEY= 860e4e60b132a8851903f5401c115c243d671fbd200ad67e +PT= d9454ae62207e70a34f13b0063498a8f +CT= a21f7da8a298670d631f677d23504757 +TEST= 386 +KEY= 27b82edf5ffd15ddbb1c88e8be893b295e7878c0035a9129 +PT= a21f7da8a298670d631f677d23504757 +CT= 1d239efbabd09a029fe11c59a385c909 +TEST= 387 +KEY= 631bcb74800fd13aa63f16131559a12bc1996499a0df5820 +PT= 1d239efbabd09a029fe11c59a385c909 +CT= c87eb2ab019afa608be99ce77717b333 +TEST= 388 +KEY= ee1326871289985e6e41a4b814c35b4b4a70f87ed7c8eb13 +PT= c87eb2ab019afa608be99ce77717b333 +CT= 528dbf70307431e33815d1aa44c30fa8 +TEST= 389 +KEY= f1d72a84c2fe044f3ccc1bc824b76aa8726529d4930be4bb +PT= 528dbf70307431e33815d1aa44c30fa8 +CT= 6c8014b427ed6331a5c174cf2846b70a +TEST= 390 +KEY= a1610602c8dd2836504c0f7c035a0999d7a45d1bbb4d53b1 +PT= 6c8014b427ed6331a5c174cf2846b70a +CT= 3df4c4be003a13030e73026f7027adb1 +TEST= 391 +KEY= b2418e725a1435dd6db8cbc203601a9ad9d75f74cb6afe00 +PT= 3df4c4be003a13030e73026f7027adb1 +CT= 39c50365300dcc5b47f827054879c642 +TEST= 392 +KEY= 761af29e74671706547dc8a7336dd6c19e2f787183133842 +PT= 39c50365300dcc5b47f827054879c642 +CT= 847f488b3cec2e1e4e1c6b9f37e4f631 +TEST= 393 +KEY= c912116e7b47169ad002802c0f81f8dfd03313eeb4f7ce73 +PT= 847f488b3cec2e1e4e1c6b9f37e4f631 +CT= 9a581179c883c5e057cc560a3df6cd34 +TEST= 394 +KEY= b08b1226353c6bd34a5a9155c7023d3f87ff45e489010347 +PT= 9a581179c883c5e057cc560a3df6cd34 +CT= 799b437c3ef3663efbd6f186edfdf21a +TEST= 395 +KEY= 1ecae821e161a2c833c1d229f9f15b017c29b46264fcf15d +PT= 799b437c3ef3663efbd6f186edfdf21a +CT= 138a858b14fe28d9a47c76bb3fae9aa1 +TEST= 396 +KEY= 3ad2b951e451eea8204b57a2ed0f73d8d855c2d95b526bfc +PT= 138a858b14fe28d9a47c76bb3fae9aa1 +CT= 5e35bc76c5ac8765a6c396dfe5689579 +TEST= 397 +KEY= 791e5f91477e986e7e7eebd428a3f4bd7e965406be3afe85 +PT= 5e35bc76c5ac8765a6c396dfe5689579 +CT= 53f8361bf47a82ef27492322ba6f57ad +TEST= 398 +KEY= 194a170b3d4fa6e62d86ddcfdcd9765259df77240455a928 +PT= 53f8361bf47a82ef27492322ba6f57ad +CT= ff626d77ae144c11480610ec1abb5028 +TEST= 399 +KEY= c9dc82f000187721d2e4b0b872cd3a4311d967c81eeef900 +PT= ff626d77ae144c11480610ec1abb5028 +CT= 4e46f8c5092b29e29a971a0cd1f610fb diff --git a/flint/test/testvals/ecbme48.txt b/flint/test/testvals/ecbme48.txt new file mode 100644 index 0000000..e298326 --- /dev/null +++ b/flint/test/testvals/ecbme48.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 00000000000000000000000000000000 +CT= 8b79eecc93a0ee5dff30b4ea21636da4 +TEST= 1 +KEY= ad3965683e6fa98b5f38ac26653679288b79eecc93a0ee5dff30b4ea21636da4 +PT= 8b79eecc93a0ee5dff30b4ea21636da4 +CT= c737317fe0846f132b23c8c2a672ce22 +TEST= 2 +KEY= 28e79e2afc5f7745fccabe2f6257c2ef4c4edfb37324814ed4137c288711a386 +PT= c737317fe0846f132b23c8c2a672ce22 +CT= e58b82bfba53c0040dc610c642121168 +TEST= 3 +KEY= 0721e93eacf9dc6c870d8133376b7c0da9c55d0cc977414ad9d56ceec503b2ee +PT= e58b82bfba53c0040dc610c642121168 +CT= 10b296abb40504995db71dda0b7e26fb +TEST= 4 +KEY= 0ece1e210ada32ebc497ad50f516602eb977cba77d7245d384627134ce7d9415 +PT= 10b296abb40504995db71dda0b7e26fb +CT= b7198d8e88baa25234c18517e99bb70d +TEST= 5 +KEY= d31313acd90a9bb7d6596deab752003f0e6e4629f5c8e781b0a3f42327e62318 +PT= b7198d8e88baa25234c18517e99bb70d +CT= 6125097db5738c64513e125872ea436c +TEST= 6 +KEY= 488b6a78d9aa23fea7289e250928bde36f4b4f5440bb6be5e19de67b550c6074 +PT= 6125097db5738c64513e125872ea436c +CT= 07ff2ed24b522f1e31d46e94be5c505b +TEST= 7 +KEY= 03ddd56b142ad3b0e4ffd2bac6568e5468b461860be944fbd04988efeb50302f +PT= 07ff2ed24b522f1e31d46e94be5c505b +CT= eb3c1e3328f840b110e934b0129f2f23 +TEST= 8 +KEY= 20f9d92c65b2f00183464197b23be5af83887fb52311044ac0a0bc5ff9cf1f0c +PT= eb3c1e3328f840b110e934b0129f2f23 +CT= 107cb7b403dc3f6f09ec30ec1718d183 +TEST= 9 +KEY= 79cf0bcf8efe3de82e27778923d1aa1993f4c80120cd3b25c94c8cb3eed7ce8f +PT= 107cb7b403dc3f6f09ec30ec1718d183 +CT= ce9db77b1fae0cfec5341fa5af4cde8a +TEST= 10 +KEY= f50adaba26525bfa7bf6eef2402450785d697f7a3f6337db0c789316419b1005 +PT= ce9db77b1fae0cfec5341fa5af4cde8a +CT= 157b5946862da3e9a1a83e45857e207d +TEST= 11 +KEY= 3b6947995411d0ae50645129d13bacc04812263cb94e9432add0ad53c4e53078 +PT= 157b5946862da3e9a1a83e45857e207d +CT= 4ae3583491df78918cab3ac241286855 +TEST= 12 +KEY= aad12f02f5e5681d16236b668ef2c46702f17e082891eca3217b979185cd582d +PT= 4ae3583491df78918cab3ac241286855 +CT= 05400c32dc84f1ab486a9badb1415b50 +TEST= 13 +KEY= ea02eb82d4b2112dd3bd64c1c908cec307b1723af4151d0869110c3c348c037d +PT= 05400c32dc84f1ab486a9badb1415b50 +CT= e4c0781a2ea68d142504739731ef396e +TEST= 14 +KEY= d51a1846dfeb738f0af138f74c968dcce3710a20dab3901c4c157fab05633a13 +PT= e4c0781a2ea68d142504739731ef396e +CT= 44cc8a9c84e6ad66bd24f1ee1f925ec3 +TEST= 15 +KEY= b6401dfc35af21e53cd254431cc639e9a7bd80bc5e553d7af1318e451af164d0 +PT= 44cc8a9c84e6ad66bd24f1ee1f925ec3 +CT= 20af5fddf65856d1a60adc03567ae163 +TEST= 16 +KEY= d1d2e8b5644910077b3edb245f029c0d8712df61a80d6bab573b52464c8b85b3 +PT= 20af5fddf65856d1a60adc03567ae163 +CT= ceb74dd6fbeafdcee54930d58af22aca +TEST= 17 +KEY= 9f932dc2ab83fa5153e7081e7360abb449a592b753e79665b2726293c679af79 +PT= ceb74dd6fbeafdcee54930d58af22aca +CT= 72fb3f7bbbdba9c036c94531a32e937d +TEST= 18 +KEY= 06aabca83922297791c9d07aeb639bdd3b5eadcce83c3fa584bb27a265573c04 +PT= 72fb3f7bbbdba9c036c94531a32e937d +CT= 299b26d5d6dfa2c20824d8a84e98a244 +TEST= 19 +KEY= 6124bc71768de5e9c14d37915d90f1ae12c58b193ee39d678c9fff0a2bcf9e40 +PT= 299b26d5d6dfa2c20824d8a84e98a244 +CT= 0a35c0d4170bde0258d79b668c7c98f4 +TEST= 20 +KEY= 282b067bd441670e11e576f26c4ea67d18f04bcd29e84365d448646ca7b306b4 +PT= 0a35c0d4170bde0258d79b668c7c98f4 +CT= f4e3e981ffc8b50fc9146b85a22e71d4 +TEST= 21 +KEY= 2864e2a3986f99c55ec21c225e3498ecec13a24cd620f66a1d5c0fe9059d7760 +PT= f4e3e981ffc8b50fc9146b85a22e71d4 +CT= 130acf4ceafe3277df057d4d170582ed +TEST= 22 +KEY= 600fd4dfd03132b0db7b2432dbe027c2ff196d003cdec41dc25972a41298f58d +PT= 130acf4ceafe3277df057d4d170582ed +CT= 50001d54f2ea5eaa3be2206f3845d9a9 +TEST= 23 +KEY= c1cbe3a1679d6c1913eabe3400993100af197054ce349ab7f9bb52cb2add2c24 +PT= 50001d54f2ea5eaa3be2206f3845d9a9 +CT= 69f3ee4b230b2db2492fe0e36b949154 +TEST= 24 +KEY= 7c6c63e14606a0b09254a531cacb45a0c6ea9e1fed3fb705b094b2284149bd70 +PT= 69f3ee4b230b2db2492fe0e36b949154 +CT= ceee40f3d2fd9a5521f44ad3ab55198d +TEST= 25 +KEY= 22bb6e21bca0450240db117b028837af0804deec3fc22d509160f8fbea1ca4fd +PT= ceee40f3d2fd9a5521f44ad3ab55198d +CT= 1fa1f1ae7bf2a8c66a6ed6d5f276846b +TEST= 26 +KEY= 7364d9ae40cbb0cca6640b7e542dba2617a52f4244308596fb0e2e2e186a2096 +PT= 1fa1f1ae7bf2a8c66a6ed6d5f276846b +CT= 6d5bd8391c73507d57b902ab3d58d228 +TEST= 27 +KEY= a2d8bf7602fcd22755ada9979b2dd33b7afef77b5843d5ebacb72c852532f2be +PT= 6d5bd8391c73507d57b902ab3d58d228 +CT= 15acd05539318363f275c857fbc5d86c +TEST= 28 +KEY= 3ad56a33ce89d8d3510c4152dee734126f52272e617256885ec2e4d2def72ad2 +PT= 15acd05539318363f275c857fbc5d86c +CT= b54f8d944301a899a2a88440fe8ab631 +TEST= 29 +KEY= 13ed08137c66c2000d3fe9e167387864da1daaba2273fe11fc6a6092207d9ce3 +PT= b54f8d944301a899a2a88440fe8ab631 +CT= 23b4bf936bf383325f0daf0548e32851 +TEST= 30 +KEY= 3c2c53ccdb4721f44b6c057bf758361af9a9152949807d23a367cf97689eb4b2 +PT= 23b4bf936bf383325f0daf0548e32851 +CT= 8b4984c6f39c7fd543b4a8629eac6740 +TEST= 31 +KEY= 95e744b66044529e2dc2b06bf84ff3d672e091efba1c02f6e0d367f5f632d3f2 +PT= 8b4984c6f39c7fd543b4a8629eac6740 +CT= 108834058381578e8aa7988e03942230 +TEST= 32 +KEY= e7715b09238876a93f9858d9548cbea56268a5ea399d55786a74ff7bf5a6f1c2 +PT= 108834058381578e8aa7988e03942230 +CT= ee3974a2ecea5a1e6fc09535323bff29 +TEST= 33 +KEY= 08f25145082684f576933e4df5c63dfe8c51d148d5770f6605b46a4ec79d0eeb +PT= ee3974a2ecea5a1e6fc09535323bff29 +CT= 1ac80f42e3529bca587d4ea828bd3631 +TEST= 34 +KEY= 93d63c9069b415595934fa66c76a9cd09699de0a362594ac5dc924e6ef2038da +PT= 1ac80f42e3529bca587d4ea828bd3631 +CT= e196df1e8a0de844ebd3fd84b307eeb6 +TEST= 35 +KEY= 0f5e4a3907a7bc56aac2cb6f6871674c770f0114bc287ce8b61ad9625c27d66c +PT= e196df1e8a0de844ebd3fd84b307eeb6 +CT= 917ac29c88967ee5c792e72b046a4399 +TEST= 36 +KEY= b935c42a3a93d1e45e94cbe1e232a135e675c38834be020d71883e49584d95f5 +PT= 917ac29c88967ee5c792e72b046a4399 +CT= 9ce3d545895005f3ec432699f17ffda2 +TEST= 37 +KEY= cc3c0dcf9e6e91be48b7f7ae251d1cb37a9616cdbdee07fe9dcb18d0a9326857 +PT= 9ce3d545895005f3ec432699f17ffda2 +CT= 089f0d41397e27b04d3268834adf932c +TEST= 38 +KEY= 29ab63d0ab0e237ba75d250bc67e362472091b8c8490204ed0f97053e3edfb7b +PT= 089f0d41397e27b04d3268834adf932c +CT= 9c364b0cc209389c00824505226b8989 +TEST= 39 +KEY= 7fb99abaccc92d9c8b17cc0066f02f39ee3f5080469918d2d07b3556c18672f2 +PT= 9c364b0cc209389c00824505226b8989 +CT= 767fb14493be17a29839fbf115b9b38b +TEST= 40 +KEY= db08eebd184aeeb002302a3c41e5595b9840e1c4d5270f704842cea7d43fc179 +PT= 767fb14493be17a29839fbf115b9b38b +CT= cbec5b7fb05d673c19ebf0f4b647cdb5 +TEST= 41 +KEY= f7c517c27f319857f1d9da5d29b6b76353acbabb657a684c51a93e5362780ccc +PT= cbec5b7fb05d673c19ebf0f4b647cdb5 +CT= 9721cb9555ef079add547d8de09cc0c7 +TEST= 42 +KEY= 47d5164e15743853c8b0e55ed3a965d6c48d712e30956fd68cfd43de82e4cc0b +PT= 9721cb9555ef079add547d8de09cc0c7 +CT= 5b16109122e874a08a2a48d5b5753256 +TEST= 43 +KEY= 152e7ef1b0fad417da84b4fa0ab560db9f9b61bf127d1b7606d70b0b3791fe5d +PT= 5b16109122e874a08a2a48d5b5753256 +CT= 198a9b7c41c225334176614a16f1d7cb +TEST= 44 +KEY= 81bb271a9f0ce56e452c9fbe4cf09ff88611fac353bf3e4547a16a4121602996 +PT= 198a9b7c41c225334176614a16f1d7cb +CT= 56e255db999afa713020c4e987f4433b +TEST= 45 +KEY= a654aba71b351bcbfd1cb03b5f88ce1ad0f3af18ca25c4347781aea8a6946aad +PT= 56e255db999afa713020c4e987f4433b +CT= 7bf8470233d197839d4fc1b365e79c8d +TEST= 46 +KEY= c700b39660c3c72e15e278b2d22dd528ab0be81af9f453b7eace6f1bc373f620 +PT= 7bf8470233d197839d4fc1b365e79c8d +CT= d7cdf94cbbe5e7ef7e47e4ce9bd5e073 +TEST= 47 +KEY= c49b1589810f1915998c8c79ca2382d87cc611564211b45894898bd558a61653 +PT= d7cdf94cbbe5e7ef7e47e4ce9bd5e073 +CT= a5617b71af28e732a0b69bfa3b90f291 +TEST= 48 +KEY= d37a9390fd2c8d4d01704352bafc2ee2d9a76a27ed39536a343f102f6336e4c2 +PT= a5617b71af28e732a0b69bfa3b90f291 +CT= 156d08f6a2ac3f7202dbee15d53c8bcd +TEST= 49 +KEY= e4e2958608635df83b8e39fd503356d5ccca62d14f956c1836e4fe3ab60a6f0f +PT= 156d08f6a2ac3f7202dbee15d53c8bcd +CT= 1790cb4b9b4e01f4ca3aab588a3b7a51 +TEST= 50 +KEY= b0f77af53fb1faf66a421093111dc925db5aa99ad4db6decfcde55623c31155e +PT= 1790cb4b9b4e01f4ca3aab588a3b7a51 +CT= 5e2dc515fe9bae8f16188dc052c63a80 +TEST= 51 +KEY= 487ca8ecba3e2caf61a16285005f01f685776c8f2a40c363eac6d8a26ef72fde +PT= 5e2dc515fe9bae8f16188dc052c63a80 +CT= a625e46d2da293f536d25c9207090aa5 +TEST= 52 +KEY= 410909f6119dda628537b825d24e8df9235288e207e25096dc14843069fe257b +PT= a625e46d2da293f536d25c9207090aa5 +CT= fefcf38abd12eaad37f3ae73bc4b4a8c +TEST= 53 +KEY= f1027d98b61d2f383bcf60a83d317d03ddae7b68baf0ba3bebe72a43d5b56ff7 +PT= fefcf38abd12eaad37f3ae73bc4b4a8c +CT= 76d8221c2aad44d226c769875a93cda8 +TEST= 54 +KEY= dda104019f122286887545c85f6b09b1ab765974905dfee9cd2043c48f26a25f +PT= 76d8221c2aad44d226c769875a93cda8 +CT= de7fbeb010089d7ee0a1bd18f3461aee +TEST= 55 +KEY= 46ce686778ba955831b63f2acfe397747509e7c4805563972d81fedc7c60b8b1 +PT= de7fbeb010089d7ee0a1bd18f3461aee +CT= a8b0824bd1fc52d92afa0b4b23abdebd +TEST= 56 +KEY= ef1408d365e549b808dadade3d4cbcdaddb9658f51a9314e077bf5975fcb660c +PT= a8b0824bd1fc52d92afa0b4b23abdebd +CT= 93ac85ee8de4091894f0e1800a0df443 +TEST= 57 +KEY= 8e8fc86b7f82a57799fe32dd1c748c8d4e15e061dc4d3856938b141755c6924f +PT= 93ac85ee8de4091894f0e1800a0df443 +CT= 0fae963d9b74341316d7ea8862d0766f +TEST= 58 +KEY= d3900458abb1acce0707a49565d27c4c41bb765c47390c45855cfe9f3716e420 +PT= 0fae963d9b74341316d7ea8862d0766f +CT= 37930dfbc771510d0bbdcbfab2a5852f +TEST= 59 +KEY= c55ee2f5633de3e7ef3710c6c143aa7076287ba780485d488ee1356585b3610f +PT= 37930dfbc771510d0bbdcbfab2a5852f +CT= 9c3b82d06cb9378f6cbbf6325b456a8b +TEST= 60 +KEY= aa16073435b24614eb1e9ae81fd921f0ea13f977ecf16ac7e25ac357def60b84 +PT= 9c3b82d06cb9378f6cbbf6325b456a8b +CT= 2db135f2599323714b4d0e66562faf48 +TEST= 61 +KEY= 033f102bfb13f9f84a4e9fc0c6f52ac8c7a2cc85b56249b6a917cd3188d9a4cc +PT= 2db135f2599323714b4d0e66562faf48 +CT= 130d64dc60ee70f07f6a68f26a9b5e19 +TEST= 62 +KEY= 60d36fd89196db13031e829b54615707d4afa859d58c3946d67da5c3e242fad5 +PT= 130d64dc60ee70f07f6a68f26a9b5e19 +CT= e4e5c4a1e2a0dc99eec583e311824371 +TEST= 63 +KEY= 532bc273d1843eb5cc1de01d28684454304a6cf8372ce5df38b82620f3c0b9a4 +PT= e4e5c4a1e2a0dc99eec583e311824371 +CT= 72cce240749a6bfd0a93cdcbe2589b41 +TEST= 64 +KEY= dae91111e43d9df4a0f44c27a6b1ab0842868eb843b68e22322bebeb119822e5 +PT= 72cce240749a6bfd0a93cdcbe2589b41 +CT= 300f85629b48f47444d2aa51ebaad16c +TEST= 65 +KEY= 5c7c95b43bea70f20a5c490f9a9f716372890bdad8fe7a5676f941bafa32f389 +PT= 300f85629b48f47444d2aa51ebaad16c +CT= 89278608a583e1243704b39ab9c0f30c +TEST= 66 +KEY= 5b64fdb468399a031d5745325331c2e8fbae8dd27d7d9b7241fdf22043f20085 +PT= 89278608a583e1243704b39ab9c0f30c +CT= 71b74d5faa4558a59f3bc91aa564579a +TEST= 67 +KEY= 0166230ccf036b4b22c63d36f71c3cf58a19c08dd738c3d7dec63b3ae696571f +PT= 71b74d5faa4558a59f3bc91aa564579a +CT= 7b433c70951e4bd140ff7a0cbf367429 +TEST= 68 +KEY= d7a12389d7dd5de963841b344315adf9f15afcfd422688069e39413659a02336 +PT= 7b433c70951e4bd140ff7a0cbf367429 +CT= b0be67ebcd672549af03d323af026fff +TEST= 69 +KEY= a3ec2e92c58fe150f708c6faeb1f459e41e49b168f41ad4f313a9215f6a24cc9 +PT= b0be67ebcd672549af03d323af026fff +CT= 99a829a7c5c7cd6a44c7eaba9a5421c7 +TEST= 70 +KEY= cc3f7485bf8460cb1ea0aa3c20553644d84cb2b14a86602575fd78af6cf66d0e +PT= 99a829a7c5c7cd6a44c7eaba9a5421c7 +CT= 76e1a70af79f89cfe68eaf15dc0e9bc5 +TEST= 71 +KEY= 17dc64f06b3a2941a21ae58e2ffab363aead15bbbd19e9ea9373d7bab0f8f6cb +PT= 76e1a70af79f89cfe68eaf15dc0e9bc5 +CT= db0805b5dcc1ca2ca7489c8e1237e7a2 +TEST= 72 +KEY= dc7128e894c9da167d0aced5888f846275a5100e61d823c6343b4b34a2cf1169 +PT= db0805b5dcc1ca2ca7489c8e1237e7a2 +CT= 935d409b87a85a2cfcc09de3d2a9a294 +TEST= 73 +KEY= 8073895c9316d299f4f32c602f2f2616e6f85095e67079eac8fbd6d77066b3fd +PT= 935d409b87a85a2cfcc09de3d2a9a294 +CT= f22b73eff24249cbcb31bdc7c126b735 +TEST= 74 +KEY= 99e16793433652800abad7000638560914d3237a1432302103ca6b10b14004c8 +PT= f22b73eff24249cbcb31bdc7c126b735 +CT= a16a380ae9b3f2b0ae39bb0e24bf7c0a +TEST= 75 +KEY= 8f77c5e97da567cc447b52f45175bc74b5b91b70fd81c291adf3d01e95ff78c2 +PT= a16a380ae9b3f2b0ae39bb0e24bf7c0a +CT= 9cf088de60ae87687481c9f217e86a7c +TEST= 76 +KEY= da1b3c2c424d2bc6a1c7a3d18d41c3f5294993ae9d2f45f9d97219ec821712be +PT= 9cf088de60ae87687481c9f217e86a7c +CT= 1c8b68951e65e32e77f1a31571351c1b +TEST= 77 +KEY= 3d64f3d4bf8f585917273805aa43dcd735c2fb3b834aa6d7ae83baf9f3220ea5 +PT= 1c8b68951e65e32e77f1a31571351c1b +CT= 4ad3f3b0c15d810f0ea0ff62c6b2d0fe +TEST= 78 +KEY= 51d61fb1b31eb55c7aa2d918e7be32a97f11088b421727d8a023459b3590de5b +PT= 4ad3f3b0c15d810f0ea0ff62c6b2d0fe +CT= 0dfcf7ca661572e050c522ae554a4bf8 +TEST= 79 +KEY= b93510f7689fb9856194cf629ef63aaa72edff4124025538f0e6673560da95a3 +PT= 0dfcf7ca661572e050c522ae554a4bf8 +CT= 7c185a5a68675dac7a16c8dde4b8cf8b +TEST= 80 +KEY= 8496679d7598a1b91d2f221cf958f90b0ef5a51b4c6508948af0afe884625a28 +PT= 7c185a5a68675dac7a16c8dde4b8cf8b +CT= 88fddda7bc2b09e48598a94474c64dc7 +TEST= 81 +KEY= f27bcc0f919566675b129c526a4dc796860878bcf04e01700f6806acf0a417ef +PT= 88fddda7bc2b09e48598a94474c64dc7 +CT= 35c5c98c9c774d0be9effb55c90b2f9c +TEST= 82 +KEY= 05f12b58dbf5602d31cfd0eb10313502b3cdb1306c394c7be687fdf939af3873 +PT= 35c5c98c9c774d0be9effb55c90b2f9c +CT= c3374b5c81646ac881f0f924c22a723b +TEST= 83 +KEY= fd05be617555bc8184c2f46911c46b9e70fafa6ced5d26b3677704ddfb854a48 +PT= c3374b5c81646ac881f0f924c22a723b +CT= 0ce756792af27525a088700db66d4399 +TEST= 84 +KEY= 3831345dfa5addf7ce8b5f76b5e1ebde7c1dac15c7af5396c7ff74d04de809d1 +PT= 0ce756792af27525a088700db66d4399 +CT= 401cd076e03c108a7fd79651407923e9 +TEST= 85 +KEY= b101fdd95c23be560262d355e09fc39b3c017c632793431cb828e2810d912a38 +PT= 401cd076e03c108a7fd79651407923e9 +CT= 88614e46c416e5164f2a63cda9dd7b89 +TEST= 86 +KEY= 0b53859962a79d216e395830e36f8d45b4603225e385a60af702814ca44c51b1 +PT= 88614e46c416e5164f2a63cda9dd7b89 +CT= 7411856c8f14a2e5f6c5f1830302a66f +TEST= 87 +KEY= fe07e3b8961c2a1b3e34a50f8cfa1a45c071b7496c9104ef01c770cfa74ef7de +PT= 7411856c8f14a2e5f6c5f1830302a66f +CT= b0a815e93ebac7a68f8bb420c8a5692d +TEST= 88 +KEY= 9f2e0d3db033b1929009d6c4c460b24f70d9a2a0522bc3498e4cc4ef6feb9ef3 +PT= b0a815e93ebac7a68f8bb420c8a5692d +CT= aa6d27bb26275f5cb3ec3d6a8afb80bf +TEST= 89 +KEY= 5e903ef160161e1ca79a26d28fe32175dab4851b740c9c153da0f985e5101e4c +PT= aa6d27bb26275f5cb3ec3d6a8afb80bf +CT= eaf7941a7e5d3907b6f52c1106eed2ce +TEST= 90 +KEY= 60284ef35a9246cc32002028e4969309304311010a51a5128b55d594e3fecc82 +PT= eaf7941a7e5d3907b6f52c1106eed2ce +CT= 1178dd3dbdb1810e360e6fe09aa0d75c +TEST= 91 +KEY= 300cb519f3203ad4589749651bd99ac7213bcc3cb7e0241cbd5bba74795e1bde +PT= 1178dd3dbdb1810e360e6fe09aa0d75c +CT= 584b48263de541e93b29c6e570d4a6f4 +TEST= 92 +KEY= 2f79ea55d0e3eaf1d0dbd364a7d64e2a7970841a8a0565f586727c91098abd2a +PT= 584b48263de541e93b29c6e570d4a6f4 +CT= 7b2ec27f2f1bc24ead4fc0aa0519685c +TEST= 93 +KEY= 8b46f59bf2c4b226523c203e8fd3936d025e4665a51ea7bb2b3dbc3b0c93d576 +PT= 7b2ec27f2f1bc24ead4fc0aa0519685c +CT= 13404d003576493ebb36c07c6d16a1b6 +TEST= 94 +KEY= c7e75c30b0ce770a0075e3ebeb244811111e0b659068ee85900b7c47618574c0 +PT= 13404d003576493ebb36c07c6d16a1b6 +CT= a083421a139df68c8f863b337f3408be +TEST= 95 +KEY= a957f876769be9005dcee4b7514fac62b19d497f83f518091f8d47741eb17c7e +PT= a083421a139df68c8f863b337f3408be +CT= bf86650c9ecbd6c14b420fbe6b6e488b +TEST= 96 +KEY= fd4de7532652d17c5accea759c52a95c0e1b2c731d3ecec854cf48ca75df34f5 +PT= bf86650c9ecbd6c14b420fbe6b6e488b +CT= 75cefae872574ab6f26b0caf6f08d858 +TEST= 97 +KEY= 54dbcdc0a57363de6b3a032607e968c27bd5d69b6f69847ea6a444651ad7ecad +PT= 75cefae872574ab6f26b0caf6f08d858 +CT= 8a3f9c96598883e9d3760c8a8fe406c6 +TEST= 98 +KEY= ac10312e365401908f2c8ae371cb8c90f1ea4a0d36e1079775d248ef9533ea6b +PT= 8a3f9c96598883e9d3760c8a8fe406c6 +CT= b8b372c0cc6d164f340df26b8f832df8 +TEST= 99 +KEY= 64265cf02043c966c01df5255f8d2867495938cdfa8c11d841dfba841ab0c793 +PT= b8b372c0cc6d164f340df26b8f832df8 +CT= a7f6267a6f0ceb0ef7d07959ee065760 +TEST= 100 +KEY= cf6b88fb273b247b8d64b5a323ef5760eeaf1eb79580fad6b60fc3ddf4b690f3 +PT= a7f6267a6f0ceb0ef7d07959ee065760 +CT= ad96adac9b786ab78b1b46d9e026c935 +TEST= 101 +KEY= 4c8eea35a90cb46af32235997d2adbbe4339b31b0ef890613d148504149059c6 +PT= ad96adac9b786ab78b1b46d9e026c935 +CT= fc7bac9a5f64571aabf4b0a451c8d88d +TEST= 102 +KEY= 0dd6d30191fabec371cf0ba223becf19bf421f81519cc77b96e035a04558814b +PT= fc7bac9a5f64571aabf4b0a451c8d88d +CT= 2b56e363834f27090fac8061507a4787 +TEST= 103 +KEY= 2e69324e634312611c33f695a137afe49414fce2d2d3e072994cb5c11522c6cc +PT= 2b56e363834f27090fac8061507a4787 +CT= fd37886e30cefa28f8e8a5662a9ec5dc +TEST= 104 +KEY= 8afac0c1507472ccb28b37ca88b7139d6923748ce21d1a5a61a410a73fbc0310 +PT= fd37886e30cefa28f8e8a5662a9ec5dc +CT= f7f36142c000d5162f789c392971fce7 +TEST= 105 +KEY= 7dc5da2a80219692f9f26c5934826df29ed015ce221dcf4c4edc8c9e16cdfff7 +PT= f7f36142c000d5162f789c392971fce7 +CT= d560607a0f0be8320f2cee56b155163f +TEST= 106 +KEY= 3cc9ae3e3eb90b511c6d8cd74419d6944bb075b42d16277e41f062c8a798e9c8 +PT= d560607a0f0be8320f2cee56b155163f +CT= 708133feb47a226a616900d46fa85037 +TEST= 107 +KEY= 8b84b7f96f9b3184d5b6402ecae344cb3b31464a996c05142099621cc830b9ff +PT= 708133feb47a226a616900d46fa85037 +CT= 1b2ed9348fc7a4e4ad8bfce2a148d1ad +TEST= 108 +KEY= 655cb7606d17582441247d23e222eccf201f9f7e16aba1f08d129efe69786852 +PT= 1b2ed9348fc7a4e4ad8bfce2a148d1ad +CT= b2b726c8605a6f5cba97f04e85a1f985 +TEST= 109 +KEY= e0ba77daad3e3502ab9a6cebec654d0492a8b9b676f1ceac37856eb0ecd991d7 +PT= b2b726c8605a6f5cba97f04e85a1f985 +CT= cd7f53bb4aeb364a1d8630e0b5c4a6a2 +TEST= 110 +KEY= 1470d5e493b0e8212f02d4419c46a8cd5fd7ea0d3c1af8e62a035e50591d3775 +PT= cd7f53bb4aeb364a1d8630e0b5c4a6a2 +CT= 57271a960fe2170ba3f1987e694bbd16 +TEST= 111 +KEY= 415408e88421573f93fdbe25dd4b90c208f0f09b33f8efed89f2c62e30568a63 +PT= 57271a960fe2170ba3f1987e694bbd16 +CT= e9d47c3e926475ffdb783624c3adb17b +TEST= 112 +KEY= 40b3017dc81eee4bf652ae8bb8ceed1de1248ca5a19c9a12528af00af3fb3b18 +PT= e9d47c3e926475ffdb783624c3adb17b +CT= d78f96812bb55723e04be8818c262485 +TEST= 113 +KEY= 9eabe9b3608ace61684bad3f3fed5c9736ab1a248a29cd31b2c1188b7fdd1f9d +PT= d78f96812bb55723e04be8818c262485 +CT= e2092227e1a3d2e525942090da0a3f3e +TEST= 114 +KEY= b095e4f38e060016ebc4c42d3a4efbd6d4a238036b8a1fd49755381ba5d720a3 +PT= e2092227e1a3d2e525942090da0a3f3e +CT= 95e9ee1f56a65ff85b752fc300f525ae +TEST= 115 +KEY= 9b2841f44291552ea04de13e4e78011b414bd61c3d2c402ccc2017d8a522050d +PT= 95e9ee1f56a65ff85b752fc300f525ae +CT= 32d8465f2e11a04f8984fee8e710cd25 +TEST= 116 +KEY= 67d8b10d0ddb61932e610eb077f0d85f73939043133de06345a4e9304232c828 +PT= 32d8465f2e11a04f8984fee8e710cd25 +CT= 2d9803ecfb95b2591fe56b3cbb4307f2 +TEST= 117 +KEY= b0c80a38ede23a549ef08e5dc3cea2f25e0b93afe8a8523a5a41820cf971cfda +PT= 2d9803ecfb95b2591fe56b3cbb4307f2 +CT= 4b19f9bcafd471bf9014ada19891e4e6 +TEST= 118 +KEY= 85c6df29f9aeba6087e3746ba5cf6c1515126a13477c2385ca552fad61e02b3c +PT= 4b19f9bcafd471bf9014ada19891e4e6 +CT= 53159bc4fbd06fd03abac028a536c4a0 +TEST= 119 +KEY= 2d42be0b33d92ecc40df48cf0ae0cb764607f1d7bcac4c55f0efef85c4d6ef9c +PT= 53159bc4fbd06fd03abac028a536c4a0 +CT= bcdb1347acd50d0084d588d4540420e3 +TEST= 120 +KEY= 338a4dc6e729e6fcf71095bb4e6f52fefadce29010794155743a675190d2cf7f +PT= bcdb1347acd50d0084d588d4540420e3 +CT= e12dc82e79554e1202da471c3221a554 +TEST= 121 +KEY= 47597486437cbcd33fc195c56ff972bb1bf12abe692c0f4776e0204da2f36a2b +PT= e12dc82e79554e1202da471c3221a554 +CT= 23a43e9d6f7c5a6c842233ccec120eb9 +TEST= 122 +KEY= cee8cf713ebf0c609e3429e5183014bb385514230650552bf2c213814ee16492 +PT= 23a43e9d6f7c5a6c842233ccec120eb9 +CT= 9f3f4349bf98d3cc00db167f0ffdc7ab +TEST= 123 +KEY= c9b3a1cafa0d4f0da942c17ffb75e333a76a576ab9c886e7f21905fe411ca339 +PT= 9f3f4349bf98d3cc00db167f0ffdc7ab +CT= c4d8b8ebef311c11fe2404220ea65e99 +TEST= 124 +KEY= 8360e6f464b61c4bae31d3a72422128463b2ef8156f99af60c3d01dc4fbafda0 +PT= c4d8b8ebef311c11fe2404220ea65e99 +CT= 47e3318c721e6c094763f0a18042911d +TEST= 125 +KEY= 926b00b9767d0cad5331cd6f0343c4a92451de0d24e7f6ff4b5ef17dcff86cbd +PT= 47e3318c721e6c094763f0a18042911d +CT= d709fa9a1415b0fac71b4cf52504791f +TEST= 126 +KEY= 3f4349126ef6a51fd196742cb461d01ef358249730f246058c45bd88eafc15a2 +PT= d709fa9a1415b0fac71b4cf52504791f +CT= 7937dd067ddb85f200a492e5824da23c +TEST= 127 +KEY= 4420adf6906cfbf8421524e88517327c8a6ff9914d29c3f78ce12f6d68b1b79e +PT= 7937dd067ddb85f200a492e5824da23c +CT= b68617f1372847206ba088d7100334a4 +TEST= 128 +KEY= 125beb5234b89a376abbb2185f24bdde3ce9ee607a0184d7e741a7ba78b2833a +PT= b68617f1372847206ba088d7100334a4 +CT= 390938ba9f2264484de63d8003c15369 +TEST= 129 +KEY= a457831ab172d88111e87c3955d0c0f205e0d6dae523e09faaa79a3a7b73d053 +PT= 390938ba9f2264484de63d8003c15369 +CT= a69ed32fd728337a5c25fbc2230dc788 +TEST= 130 +KEY= cc7ed4183bfae0fa0f9dd348b8e194f2a37e05f5320bd3e5f68261f8587e17db +PT= a69ed32fd728337a5c25fbc2230dc788 +CT= edb9d6099202fe4ae51eec725478fb47 +TEST= 131 +KEY= 686ab4f5c19296aed306adea4fd52d1a4ec7d3fca0092daf139c8d8a0c06ec9c +PT= edb9d6099202fe4ae51eec725478fb47 +CT= 61059ea3bf0c953762cb37e50ed7081f +TEST= 132 +KEY= 8115329fadeba92ab2827bd7701a01442fc24d5f1f05b8987157ba6f02d1e483 +PT= 61059ea3bf0c953762cb37e50ed7081f +CT= a683e36ef7ccdabdbca683c2d6560d25 +TEST= 133 +KEY= 49254e8904eed2766a6a1a615b63b97c8941ae31e8c96225cdf139add487e9a6 +PT= a683e36ef7ccdabdbca683c2d6560d25 +CT= 8ef424771561bfec0058c7caa5876ef6 +TEST= 134 +KEY= 259194ce8701581012f5592b61bca99507b58a46fda8ddc9cda9fe6771008750 +PT= 8ef424771561bfec0058c7caa5876ef6 +CT= 79ac024a7ba5ffe143d40d34f2e587a6 +TEST= 135 +KEY= ca0427fe28c77d0ca25d6851ccfe58c47e19880c860d22288e7df35383e500f6 +PT= 79ac024a7ba5ffe143d40d34f2e587a6 +CT= 2258ab9f0e254ce21eb9b7f6ea690671 +TEST= 136 +KEY= da9a4b566c9f670df850f891a5274cc95c41239388286eca90c444a5698c0687 +PT= 2258ab9f0e254ce21eb9b7f6ea690671 +CT= 55acb73e8a45bf964bd040c799724dad +TEST= 137 +KEY= 9f177a6a6b524c75db5cc0dbb6ad733209ed94ad026dd15cdb140462f0fe4b2a +PT= 55acb73e8a45bf964bd040c799724dad +CT= 3e904b15f2e5ddc934dabc25259cb3cf +TEST= 138 +KEY= 2ad96f6874c1ba6a82c5ee80a9a2e8e5377ddfb8f0880c95efceb847d562f8e5 +PT= 3e904b15f2e5ddc934dabc25259cb3cf +CT= 3acff8d5b701a5bd1355dda705d269cb +TEST= 139 +KEY= add59df57cc01de988c6d81e65b1d00e0db2276d4789a928fc9b65e0d0b0912e +PT= 3acff8d5b701a5bd1355dda705d269cb +CT= 3ef4ac14cc954fb4a9a808c7c00a2f1f +TEST= 140 +KEY= d3ebe43c4e9c96b37133f6af8910a25f33468b798b1ce69c55336d2710babe31 +PT= 3ef4ac14cc954fb4a9a808c7c00a2f1f +CT= 61c50d5c736aedcf03c06fc310cc19d9 +TEST= 141 +KEY= fa45f434377f2e217c4a5b7a7526cc1952838625f8760b5356f302e40076a7e8 +PT= 61c50d5c736aedcf03c06fc310cc19d9 +CT= 2bf543c6548ed0344262640ad95f95c9 +TEST= 142 +KEY= 71ead73c81ed5ae731d19b0b2b42f0e87976c5e3acf8db67149166eed9293221 +PT= 2bf543c6548ed0344262640ad95f95c9 +CT= f8c1dbdd20317feb1625634a451931b5 +TEST= 143 +KEY= 3fd0019d000111d4300d2cef39f53c0d81b71e3e8cc9a48c02b405a49c300394 +PT= f8c1dbdd20317feb1625634a451931b5 +CT= dedb54735b8b90c8eec66eaecfb13ed6 +TEST= 144 +KEY= 070976b2d3aa1e737bc24a8a794a21be5f6c4a4dd7423444ec726b0a53813d42 +PT= dedb54735b8b90c8eec66eaecfb13ed6 +CT= 75941a1ada444115961e058e2d6c6396 +TEST= 145 +KEY= 81ac2b7f073d0d06ba8a43d3381d3a3f2af850570d0675517a6c6e847eed5ed4 +PT= 75941a1ada444115961e058e2d6c6396 +CT= 7c66be2b0354a6549e10489af7a83424 +TEST= 146 +KEY= 37bdd1946bb9b5616115f015e9162f5b569eee7c0e52d305e47c261e89456af0 +PT= 7c66be2b0354a6549e10489af7a83424 +CT= f589769555bdefd0b29e6a65313bd2e1 +TEST= 147 +KEY= cf27bd543bb4eed052b808d1ee350d35a31798e95bef3cd556e24c7bb87eb811 +PT= f589769555bdefd0b29e6a65313bd2e1 +CT= 9b3215f70fbcc5ed9cc0d6d7e1e56f11 +TEST= 148 +KEY= 43321308251c33234ccd9ed19e5e74af38258d1e5453f938ca229aac599bd700 +PT= 9b3215f70fbcc5ed9cc0d6d7e1e56f11 +CT= 705ccb60e0a6e997578dcc804d49d265 +TEST= 149 +KEY= f2152160ead144776ba6bded0ac49cd24879467eb4f510af9daf562c14d20565 +PT= 705ccb60e0a6e997578dcc804d49d265 +CT= 3da4cec68d47e55ecf21a1c5cdafe4e6 +TEST= 150 +KEY= 593b7edae946a5269ef33d088d1b297675dd88b839b2f5f1528ef7e9d97de183 +PT= 3da4cec68d47e55ecf21a1c5cdafe4e6 +CT= 32299edbed49b66271107ca1822f179e +TEST= 151 +KEY= 852e4554ad1459ce81dba17d18da96c447f41663d4fb4393239e8b485b52f61d +PT= 32299edbed49b66271107ca1822f179e +CT= 45856fd2080fa9bbfa0857bcf7381823 +TEST= 152 +KEY= 1d8f910508f9c08db4de4d5c465310f4027179b1dcf4ea28d996dcf4ac6aee3e +PT= 45856fd2080fa9bbfa0857bcf7381823 +CT= 6a8c18595af5d1e46f9f168c31566baf +TEST= 153 +KEY= 1a42c028c1aba740d95a47abd7b4f40d68fd61e886013bccb609ca789d3c8591 +PT= 6a8c18595af5d1e46f9f168c31566baf +CT= 71a41a6b6bf9fb906b0617dcb76b4ba5 +TEST= 154 +KEY= 3c408cb08bcaf34b2bce6ef787a96d5219597b83edf8c05cdd0fdda42a57ce34 +PT= 71a41a6b6bf9fb906b0617dcb76b4ba5 +CT= 9105b8fc516e0b19aedd003979f8c298 +TEST= 155 +KEY= 804516e36b1b5e046b15cbe1d3f26ee9885cc37fbc96cb4573d2dd9d53af0cac +PT= 9105b8fc516e0b19aedd003979f8c298 +CT= 27acd01cc0403ad6db45c7df3e515ede +TEST= 156 +KEY= cd8199690660bd4dba38ce522d1a12ceaff013637cd6f193a8971a426dfe5272 +PT= 27acd01cc0403ad6db45c7df3e515ede +CT= 86e2a23ac567c5f05f15a318e38360a7 +TEST= 157 +KEY= 0ad8bb3d5b2a538df0bdd50eb74cc1ba2912b159b9b13463f782b95a8e7d32d5 +PT= 86e2a23ac567c5f05f15a318e38360a7 +CT= cb03eda81bf211b5fe03d4a0879e9edd +TEST= 158 +KEY= 081040b60ae9e733243f4c39013eedb5e2115cf1a24325d609816dfa09e3ac08 +PT= cb03eda81bf211b5fe03d4a0879e9edd +CT= 6f1ad4ad727348dd593459e0d7661813 +TEST= 159 +KEY= a51e29d20bb0963df854c898299e114a8d0b885cd0306d0b50b5341ade85b41b +PT= 6f1ad4ad727348dd593459e0d7661813 +CT= 236b421e3103d4c17297d3f5c8ba1d17 +TEST= 160 +KEY= 49d4eb9964431f42f0fc6494a47a50ccae60ca42e133b9ca2222e7ef163fa90c +PT= 236b421e3103d4c17297d3f5c8ba1d17 +CT= 118ae5a5597e8db200b26dbe11ac4bc8 +TEST= 161 +KEY= 0f3f7298be444450a0a07a4b73897720bfea2fe7b84d347822908a510793e2c4 +PT= 118ae5a5597e8db200b26dbe11ac4bc8 +CT= df02587f25cc4c59e6aece98bcaaccb8 +TEST= 162 +KEY= 7e30984a4c0b18d2f791858b83fc960960e877989d817821c43e44c9bb392e7c +PT= df02587f25cc4c59e6aece98bcaaccb8 +CT= 3da0f35fdaef499adbf602939fc748d4 +TEST= 163 +KEY= 360a7168e056892e5bf0127ea3b58caf5d4884c7476e31bb1fc8465a24fe66a8 +PT= 3da0f35fdaef499adbf602939fc748d4 +CT= fe462f878ceedddaa00855b85a81a14b +TEST= 164 +KEY= a75b3537e0eb98fc0f41c9e1306f6667a30eab40cb80ec61bfc013e27e7fc7e3 +PT= fe462f878ceedddaa00855b85a81a14b +CT= 47ea8ac561d7a9f99f64f41a9ad46e5c +TEST= 165 +KEY= 219e71fc6d23a5103de4da9c5edfa0aee4e42185aa57459820a4e7f8e4aba9bf +PT= 47ea8ac561d7a9f99f64f41a9ad46e5c +CT= 650fae7f29a098d787f60cc3c0d77580 +TEST= 166 +KEY= 038a888c6ea4e9502a15110832ae0df081eb8ffa83f7dd4fa752eb3b247cdc3f +PT= 650fae7f29a098d787f60cc3c0d77580 +CT= 0334bf8ca2835c71f2a283736d54e933 +TEST= 167 +KEY= 714967419f9129b9649a13a9da3291a582df30762174813e55f068484928350c +PT= 0334bf8ca2835c71f2a283736d54e933 +CT= 1b3a09b325f3d833a3c83d941832b204 +TEST= 168 +KEY= bcdb12eaf8d3c95f821c0dd324fd36bb99e539c50487590df63855dc511a8708 +PT= 1b3a09b325f3d833a3c83d941832b204 +CT= cf980ed2619858290881314b7f0b9516 +TEST= 169 +KEY= b8fa32ae829e8af3ef543a407e2d61ba567d3717651f0124feb964972e11121e +PT= cf980ed2619858290881314b7f0b9516 +CT= 98ff5ada0739122dbbd241847d4a318d +TEST= 170 +KEY= d62592634f0abd21ac98887a88845e2ece826dcd62261309456b2513535b2393 +PT= 98ff5ada0739122dbbd241847d4a318d +CT= 1824306b9f54be4ce3f94f037b4b8569 +TEST= 171 +KEY= 77005ae2fa1ad6d77d36566b9e988345d6a65da6fd72ad45a6926a102810a6fa +PT= 1824306b9f54be4ce3f94f037b4b8569 +CT= 25ba57b9035625dd268492282535960c +TEST= 172 +KEY= be766696dc4458442056d89c96cafdf0f31c0a1ffe2488988016f8380d2530f6 +PT= 25ba57b9035625dd268492282535960c +CT= 26aead4ed08ca78ce2a3358f36da0e3f +TEST= 173 +KEY= 1e1d3ebc714ee191edb2a02b64ef2c23d5b2a7512ea82f1462b5cdb73bff3ec9 +PT= 26aead4ed08ca78ce2a3358f36da0e3f +CT= 10ab48e0cb1d72d82794e35dbdef88f6 +TEST= 174 +KEY= d3ead2da40b4c94b506a0ed75210023bc519efb1e5b55dcc45212eea8610b63f +PT= 10ab48e0cb1d72d82794e35dbdef88f6 +CT= 878bcac367294b227533e1451f654960 +TEST= 175 +KEY= 87d0b5d4a1314054ec37b67b4245ba8c42922572829c16ee3012cfaf9975ff5f +PT= 878bcac367294b227533e1451f654960 +CT= 98cc3311ec8e8b75944503734deac00d +TEST= 176 +KEY= ef3fa3235bb42b1326de67088c68e2bdda5e16636e129d9ba457ccdcd49f3f52 +PT= 98cc3311ec8e8b75944503734deac00d +CT= daf5fb711e259b498918871933a2e1fd +TEST= 177 +KEY= 2ebbbb1b070658dd43299478725aa88f00abed12703706d22d4f4bc5e73ddeaf +PT= daf5fb711e259b498918871933a2e1fd +CT= aacc545dee8ff1f5c7a91a2ee3d25c1b +TEST= 178 +KEY= e15d1fc214f23ff93886d219b4dfcd45aa67b94f9eb8f727eae651eb04ef82b4 +PT= aacc545dee8ff1f5c7a91a2ee3d25c1b +CT= b844b67fbfd12e2712ccb66ebb4f7691 +TEST= 179 +KEY= cc3335b792121de55fa04a4d6fee57b012230f302169d900f82ae785bfa0f425 +PT= b844b67fbfd12e2712ccb66ebb4f7691 +CT= 3e00c548baee6150faa5b67986331fd5 +TEST= 180 +KEY= 18db585f810069c584251ca1e04a58382c23ca789b87b850028f51fc3993ebf0 +PT= 3e00c548baee6150faa5b67986331fd5 +CT= eb23deea8449e8fa0d828c12b98437ae +TEST= 181 +KEY= dfe08ca44b0bc4f51c43be3631e20735c70014921fce50aa0f0dddee8017dc5e +PT= eb23deea8449e8fa0d828c12b98437ae +CT= 35bbe35cfc1d8fc40bc52f20d3fb35d5 +TEST= 182 +KEY= 0f7dcc456d50a31ac9351794bfe6dd57f2bbf7cee3d3df6e04c8f2ce53ece98b +PT= 35bbe35cfc1d8fc40bc52f20d3fb35d5 +CT= dffe7aeeaaf4762c7eb52453b1f61ad8 +TEST= 183 +KEY= d34fdeb3f04fb4563bc0fd204e8d459f2d458d204927a9427a7dd69de21af353 +PT= dffe7aeeaaf4762c7eb52453b1f61ad8 +CT= c648daf9ebfb4bc6166b15bf067e107f +TEST= 184 +KEY= 5e90b747c9976a3f5050b0c51f116a81eb0d57d9a2dce2846c16c322e464e32c +PT= c648daf9ebfb4bc6166b15bf067e107f +CT= 057258d07caee57807c396fae651855a +TEST= 185 +KEY= 52d3686bc0cd56b9dff3a69f5073f30aee7f0f09de7207fc6bd555d802356676 +PT= 057258d07caee57807c396fae651855a +CT= b1109be49e6e0f4c4190d8e0d717e8d0 +TEST= 186 +KEY= 39c89286b658e006fbf97bab1c4874025f6f94ed401c08b02a458d38d5228ea6 +PT= b1109be49e6e0f4c4190d8e0d717e8d0 +CT= 4dde60feee40402058c988092603ab53 +TEST= 187 +KEY= 562c9a004cbf05a4ca97994d48c0874c12b1f413ae5c4890728c0531f32125f5 +PT= 4dde60feee40402058c988092603ab53 +CT= 3b18cbf83791e93d661eb269cfeab1be +TEST= 188 +KEY= f95206c4d3862e01a4dfe3676a2f297c29a93feb99cda1ad1492b7583ccb944b +PT= 3b18cbf83791e93d661eb269cfeab1be +CT= 0a3204dee28b65e849136960949e4e5e +TEST= 189 +KEY= fefdbe4294e46e22074e77b6bb7f964b239b3b357b46c4455d81de38a855da15 +PT= 0a3204dee28b65e849136960949e4e5e +CT= 6c47ecb8b1478f0bbedef3a05a439776 +TEST= 190 +KEY= 05858c957f861410187dd8cc2ee48e364fdcd78dca014b4ee35f2d98f2164d63 +PT= 6c47ecb8b1478f0bbedef3a05a439776 +CT= 881188c2834b0496cb97f15f7a5c332a +TEST= 191 +KEY= a51cabc6d50bf9043e95ce2bc511d26dc7cd5f4f494a4fd828c8dcc7884a7e49 +PT= 881188c2834b0496cb97f15f7a5c332a +CT= 1fae86251e2f615e3bfcac545013cd12 +TEST= 192 +KEY= 4ee1f6812cc35a16aa63f1cb39669ed7d863d96a57652e8613347093d859b35b +PT= 1fae86251e2f615e3bfcac545013cd12 +CT= 6017c6764080cb6d2bac24c0f1bff8f5 +TEST= 193 +KEY= f4f31d57dd72e6bf842d3834372aa60cb8741f1c17e5e5eb3898545329e64bae +PT= 6017c6764080cb6d2bac24c0f1bff8f5 +CT= 10c8548253fb2bcd5d6f87cb28fae7e7 +TEST= 194 +KEY= 9dbb357dc99a95c240e750f1970c5c65a8bc4b9e441ece2665f7d398011cac49 +PT= 10c8548253fb2bcd5d6f87cb28fae7e7 +CT= 20e253845a3dd51ffc16141fdaa20749 +TEST= 195 +KEY= a814cd8766e0bffbd8530589d6202be0885e181a1e231b3999e1c787dbbeab00 +PT= 20e253845a3dd51ffc16141fdaa20749 +CT= 9383323218d891f9dce7578fcd6a54a5 +TEST= 196 +KEY= c516c26e23e38c2b87346f759d8aef881bdd2a2806fb8ac04506900816d4ffa5 +PT= 9383323218d891f9dce7578fcd6a54a5 +CT= 9cff8002d46eafaac7b035a788a37cf5 +TEST= 197 +KEY= 9301f8120939d0e70c97f614f61f18648722aa2ad295256a82b6a5af9e778350 +PT= 9cff8002d46eafaac7b035a788a37cf5 +CT= 90c9f34994d5da86406c7e82eddd1009 +TEST= 198 +KEY= 82b163831972d2cef8f1780aa6b0707a17eb59634640ffecc2dadb2d73aa9359 +PT= 90c9f34994d5da86406c7e82eddd1009 +CT= c8b5021ee84635eb7e7d0f5dbe967fd0 +TEST= 199 +KEY= f99ff8714ee5d822e0e25c499d7c96acdf5e5b7dae06ca07bca7d470cd3cec89 +PT= c8b5021ee84635eb7e7d0f5dbe967fd0 +CT= 15ccb3c950764e24ca714707034df9a7 +TEST= 200 +KEY= 3529e6b83266bd558b7f33fc00ae4904ca92e8b4fe70842376d69377ce71152e +PT= 15ccb3c950764e24ca714707034df9a7 +CT= 5fda0ef6a2172d5daa8e842f061a2e44 +TEST= 201 +KEY= 2d77f95d8b556740cd9e2cc546ca45c99548e6425c67a97edc581758c86b3b6a +PT= 5fda0ef6a2172d5daa8e842f061a2e44 +CT= 808781d0d10b3a02333e0a53e159287f +TEST= 202 +KEY= 79298fd5f3c4b6378403cfad05c3c96e15cf67928d6c937cef661d0b29321315 +PT= 808781d0d10b3a02333e0a53e159287f +CT= cc760400725fcfd37e757d99c6361b93 +TEST= 203 +KEY= 69535f335f6aebf452407f3f1c203410d9b96392ff335caf91136092ef040886 +PT= cc760400725fcfd37e757d99c6361b93 +CT= 247d3a6bb4c883c142c4000b085c3b79 +TEST= 204 +KEY= 1a4f8fd7bd8dbcfb3677c708cdddc7c4fdc459f94bfbdf6ed3d76099e75833ff +PT= 247d3a6bb4c883c142c4000b085c3b79 +CT= 47e4c802c61e6a1706bae95af75ca70d +TEST= 205 +KEY= a573989455a11cad1e8642cd774806b1ba2091fb8de5b579d56d89c3100494f2 +PT= 47e4c802c61e6a1706bae95af75ca70d +CT= 4297101350a5ce6c435fad2725c22e46 +TEST= 206 +KEY= 8d52414dd5600aa0cacd5ad399fd1b37f8b781e8dd407b15963224e435c6bab4 +PT= 4297101350a5ce6c435fad2725c22e46 +CT= bec56bf1f3b6be60c0f4cb7ae77bf0f5 +TEST= 207 +KEY= 49d4df2fb3b561817f2ba6599b66c9244672ea192ef6c57556c6ef9ed2bd4a41 +PT= bec56bf1f3b6be60c0f4cb7ae77bf0f5 +CT= 5b590f24d329bb6ed981938a4cdb9907 +TEST= 208 +KEY= 68bd5721e2a51a184cdbac3a035670701d2be53dfddf7e1b8f477c149e66d346 +PT= 5b590f24d329bb6ed981938a4cdb9907 +CT= a8a15dbb79bb9b1131ef39c1e3fcfc9c +TEST= 209 +KEY= 2cc71f1b9be892100e8a340e61d0a128b58ab8868464e50abea845d57d9a2fda +PT= a8a15dbb79bb9b1131ef39c1e3fcfc9c +CT= e8cbab9e98d2866e779512aac2fa2ea0 +TEST= 210 +KEY= eef45ce1bb444a6ba5a029363fb9d4db5d4113181cb66364c93d577fbf60017a +PT= e8cbab9e98d2866e779512aac2fa2ea0 +CT= 7e4896f0a48a25ffe950b74b96f5f40e +TEST= 211 +KEY= 151fe809785c11f8f19f31ea0246b416230985e8b83c469b206de0342995f574 +PT= 7e4896f0a48a25ffe950b74b96f5f40e +CT= e1c642b54b89822e73a695c851bc8ebe +TEST= 212 +KEY= 14fe470cd366c580f124ea924b918bf5c2cfc75df3b5c4b553cb75fc78297bca +PT= e1c642b54b89822e73a695c851bc8ebe +CT= 5fa2c6a2303ed7219984f30b78be6b96 +TEST= 213 +KEY= 92e61f4c495462354ef612492557d6ab9d6d01ffc38b1394ca4f86f70097105c +PT= 5fa2c6a2303ed7219984f30b78be6b96 +CT= 3791959fbf178682a711623c2f91616c +TEST= 214 +KEY= 6c0b6f23ac7526204c451a8ade54d404aafc94607c9c95166d5ee4cb2f067130 +PT= 3791959fbf178682a711623c2f91616c +CT= e14fcacd5fd26fc2710776ee82317abc +TEST= 215 +KEY= 0dae926e4172586817730db9fdf2ce0b4bb35ead234efad41c599225ad370b8c +PT= e14fcacd5fd26fc2710776ee82317abc +CT= e576499eaf5365e7fe3b4961d9c74419 +TEST= 216 +KEY= dcd553f2977bd114b61f724abc6afe8eaec517338c1d9f33e262db4474f04f95 +PT= e576499eaf5365e7fe3b4961d9c74419 +CT= 38567558119e72929f2932e6c289095e +TEST= 217 +KEY= 6333da8d5b655b5b5aabbcaf0b010be89693626b9d83eda17d4be9a2b67946cb +PT= 38567558119e72929f2932e6c289095e +CT= d20ad648f558e5507cc5c905e92cc268 +TEST= 218 +KEY= f9010180b464fbb8ad7c9d5e41b1e09a4499b42368db08f1018e20a75f5584a3 +PT= d20ad648f558e5507cc5c905e92cc268 +CT= 00c719f3757ddd2d2e64c3f2666fb2cb +TEST= 219 +KEY= 8ce68ed02b4ffd9720b3d16fae92d164445eadd01da6d5dc2feae355393a3668 +PT= 00c719f3757ddd2d2e64c3f2666fb2cb +CT= aeeab9f50456ca3233a964219d2e7816 +TEST= 220 +KEY= 57e26ba4dbd3549051b0d9436eb38d4feab4142519f01fee1c438774a4144e7e +PT= aeeab9f50456ca3233a964219d2e7816 +CT= 3f02c97e127fd697afd58bc66941f654 +TEST= 221 +KEY= 4d0bc4a8796407c939797ef19d0ce7e3d5b6dd5b0b8fc979b3960cb2cd55b82a +PT= 3f02c97e127fd697afd58bc66941f654 +CT= bc4c0ddbcf0003b7814eef1abd22b6a8 +TEST= 222 +KEY= 9c1fd1789544d2f3ff84574a216767cd69fad080c48fcace32d8e3a870770e82 +PT= bc4c0ddbcf0003b7814eef1abd22b6a8 +CT= d125d8c2920add3ea00103dc695a0d9d +TEST= 223 +KEY= adbe97f99dbe61213892d9849b81b3fbb8df0842568517f092d9e074192d031f +PT= d125d8c2920add3ea00103dc695a0d9d +CT= c0c57598639ba69e13c82e3af24777c5 +TEST= 224 +KEY= a14dc5cf6cd0bd9ac9499317c509ccb4781a7dda351eb16e8111ce4eeb6a74da +PT= c0c57598639ba69e13c82e3af24777c5 +CT= 81e3b8f6a691bc30aa66ad70f0358881 +TEST= 225 +KEY= 0ec479d8681ac8ca455d64a4bb34c86df9f9c52c938f0d5e2b77633e1b5ffc5b +PT= 81e3b8f6a691bc30aa66ad70f0358881 +CT= 3cd03908d4aba4b9885bcb1ac89d16c3 +TEST= 226 +KEY= e74102d814426e659732b303e6d44db7c529fc244724a9e7a32ca824d3c2ea98 +PT= 3cd03908d4aba4b9885bcb1ac89d16c3 +CT= 61662dd8ee676e17ae5cf2babdc54a67 +TEST= 227 +KEY= ee4034f1a2ef16d7d848bb005cda5e99a44fd1fca943c7f00d705a9e6e07a0ff +PT= 61662dd8ee676e17ae5cf2babdc54a67 +CT= 4e637432b0ff54fd665a902725b977eb +TEST= 228 +KEY= 45e8f2df7fc6e49fb0af3b73788a1065ea2ca5ce19bc930d6b2acab94bbed714 +PT= 4e637432b0ff54fd665a902725b977eb +CT= e53d1440407503b66530eeeebbc9182b +TEST= 229 +KEY= 0bebc981186def84c01688ca16a061e00f11b18e59c990bb0e1a2457f077cf3f +PT= e53d1440407503b66530eeeebbc9182b +CT= 12134adf5bb16d867b4ee9ce87ebe36d +TEST= 230 +KEY= 6fadfdb92b0f888514730f17a37a81b61d02fb510278fd3d7554cd99779c2c52 +PT= 12134adf5bb16d867b4ee9ce87ebe36d +CT= 310eacef26a3eb5e4511437145dc30f9 +TEST= 231 +KEY= a565724f25ee29346543964864a0ffaa2c0c57be24db166330458ee832401cab +PT= 310eacef26a3eb5e4511437145dc30f9 +CT= 6848e5a618419ec6bacd9cd40bb42083 +TEST= 232 +KEY= 1faebfe13ac7545dc742ed60241bc2e84444b2183c9a88a58a88123c39f43c28 +PT= 6848e5a618419ec6bacd9cd40bb42083 +CT= c64da25e7cb1a004e31cd37f9d4e1112 +TEST= 233 +KEY= a8ee2725373c48bad9c0009c53c298a982091046402b28a16994c143a4ba2d3a +PT= c64da25e7cb1a004e31cd37f9d4e1112 +CT= d02e6ae8fdd0c5813669080aa7b82527 +TEST= 234 +KEY= 0770874a41ed1396940d75e6a5a09f5352277aaebdfbed205ffdc9490302081d +PT= d02e6ae8fdd0c5813669080aa7b82527 +CT= 5ddfbc75fe48d88e7d6f307e4a008bc7 +TEST= 235 +KEY= d7d098f85ab45e754629d2ab7da2226c0ff8c6db43b335ae2292f937490283da +PT= 5ddfbc75fe48d88e7d6f307e4a008bc7 +CT= e216c9ac28239e97237930079739ece0 +TEST= 236 +KEY= 5d6faff37ee7400691e504578251ecb1edee0f776b90ab3901ebc930de3b6f3a +PT= e216c9ac28239e97237930079739ece0 +CT= 8d126659360d03548879000642e78029 +TEST= 237 +KEY= d75c5c64d94d0bc8566f568278b502d560fc692e5d9da86d8992c9369cdcef13 +PT= 8d126659360d03548879000642e78029 +CT= 9ea4c85d0f07ad618a2ebebbe50d72b6 +TEST= 238 +KEY= d42bd9cdcd8bda71e64817a2755c97c0fe58a173529a050c03bc778d79d19da5 +PT= 9ea4c85d0f07ad618a2ebebbe50d72b6 +CT= 1f525901af1d94ba6ca3c7244e2cd885 +TEST= 239 +KEY= 32dd1758d2efc602ee85c58a66d0b080e10af872fd8791b66f1fb0a937fd4520 +PT= 1f525901af1d94ba6ca3c7244e2cd885 +CT= e131c071bfa21fce21d18db87b522903 +TEST= 240 +KEY= bec98c02d74e088458a668d0b6ddcf13003b380342258e784ece3d114caf6c23 +PT= e131c071bfa21fce21d18db87b522903 +CT= 51f1b72c99c869bf73a6637d3a2e2278 +TEST= 241 +KEY= d368f7be25a6a0c9ad2004e764f43a3551ca8f2fdbede7c73d685e6c76814e5b +PT= 51f1b72c99c869bf73a6637d3a2e2278 +CT= 0965cdd7a134672036f0c69774cfd380 +TEST= 242 +KEY= e5a7e12124540dbb4147a55c276a35b958af42f87ad980e70b9898fb024e9ddb +PT= 0965cdd7a134672036f0c69774cfd380 +CT= 52eceb721073fbf3d1bd5808351bec5e +TEST= 243 +KEY= 7d9702e2c8906805a580d5d85b03bbc60a43a98a6aaa7b14da25c0f337557185 +PT= 52eceb721073fbf3d1bd5808351bec5e +CT= 493ce4e2b090da3a2354c9da7db44d39 +TEST= 244 +KEY= 8efa5ec96f3aef51ab38f4ccd969e5d5437f4d68da3aa12ef97109294ae13cbc +PT= 493ce4e2b090da3a2354c9da7db44d39 +CT= da64246ff65969995f9a4e8ae7c805cf +TEST= 245 +KEY= 19c97957444e9931293047a647d7a19a991b69072c63c8b7a6eb47a3ad293973 +PT= da64246ff65969995f9a4e8ae7c805cf +CT= cf85ebd76908cd8f8d3177e53da3ad5e +TEST= 246 +KEY= 7bdb3ed45bd78c131611fd9d54b8e9d2569e82d0456b05382bda3046908a942d +PT= cf85ebd76908cd8f8d3177e53da3ad5e +CT= 45e1fdefc98e62a841bd1d8d8236ceef +TEST= 247 +KEY= 19961521a42d96238d44f651e7e7d463137f7f3f8ce567906a672dcb12bc5ac2 +PT= 45e1fdefc98e62a841bd1d8d8236ceef +CT= e056ef7b711a9cbded8878ef74af1671 +TEST= 248 +KEY= 343360636e697e607319d4dcbc12b543f3299044fdfffb2d87ef552466134cb3 +PT= e056ef7b711a9cbded8878ef74af1671 +CT= e4eff77c6c3273393be4814a16c3df4a +TEST= 249 +KEY= b63d4d3d099f8e68f6a041d2eb1b1c1417c6673891cd8814bc0bd46e70d093f9 +PT= e4eff77c6c3273393be4814a16c3df4a +CT= ec562e353df8ba76699b01a6acc8ad52 +TEST= 250 +KEY= ef500379ede772968f1499f07b0b09cffb90490dac353262d590d5c8dc183eab +PT= ec562e353df8ba76699b01a6acc8ad52 +CT= 4473050adc687112aacb86aa73cb6c6d +TEST= 251 +KEY= ea5cd4edd99e64018ad3104026f0f528bfe34c07705d43707f5b5362afd352c6 +PT= 4473050adc687112aacb86aa73cb6c6d +CT= 6561a82ee86e4f18df6965312f0c0984 +TEST= 252 +KEY= 2abf9529fc88d85ff68cf6d72b9a9cb5da82e42998330c68a032365380df5b42 +PT= 6561a82ee86e4f18df6965312f0c0984 +CT= 47590ce1c90f3ac2c68b272b4a667f61 +TEST= 253 +KEY= a485b647790dbff76f16c42a39f5f5559ddbe8c8513c36aa66b91178cab92423 +PT= 47590ce1c90f3ac2c68b272b4a667f61 +CT= 4ed731a36bcb2672a810633e432d8922 +TEST= 254 +KEY= f0d0e858b597595a06458ff6c2259127d30cd96b3af710d8cea972468994ad01 +PT= 4ed731a36bcb2672a810633e432d8922 +CT= 4ac2f0d5f52762f77db5d9ef53b76642 +TEST= 255 +KEY= edde80556eca4cc51efb33e23c43c04399ce29becfd0722fb31caba9da23cb43 +PT= 4ac2f0d5f52762f77db5d9ef53b76642 +CT= a574fbe71e359a57d57a24a388fdf6ee +TEST= 256 +KEY= 3c7c248c9fce1d060d5b0664c0ff3f6b3cbad259d1e5e87866668f0a52de3dad +PT= a574fbe71e359a57d57a24a388fdf6ee +CT= ccc3a011108469a7987f336c209bb84e +TEST= 257 +KEY= d43727570a809be0d9eb78760fe4cda9f0797248c16181dffe19bc66724585e3 +PT= ccc3a011108469a7987f336c209bb84e +CT= 686357d3013977390164834d4e5324dc +TEST= 258 +KEY= 2f060e361977e544b98779ab55886d57981a259bc058f6e6ff7d3f2b3c16a13f +PT= 686357d3013977390164834d4e5324dc +CT= dddad6fbdbf7c7be7ebf3f036009a270 +TEST= 259 +KEY= a3630c05dc65905d37afdb315b2aa4d945c0f3601baf315881c200285c1f034f +PT= dddad6fbdbf7c7be7ebf3f036009a270 +CT= 237124fedf28b4201b6d1584b93d5f7c +TEST= 260 +KEY= 3e6adaaef53a36294cdea0d94be742c166b1d79ec48785789aaf15ace5225c33 +PT= 237124fedf28b4201b6d1584b93d5f7c +CT= d1a9ddfb5662934aad98b2861e50a871 +TEST= 261 +KEY= 234615019e03c466aea186112c4eb523b7180a6592e516323737a72afb72f442 +PT= d1a9ddfb5662934aad98b2861e50a871 +CT= ca18344f4c7a0f068398ca8137c056dd +TEST= 262 +KEY= 22ed93581611798050e94cc70f6090bf7d003e2ade9f1934b4af6dabccb2a29f +PT= ca18344f4c7a0f068398ca8137c056dd +CT= 91fa4d62d10e852d9eda42fac8c34557 +TEST= 263 +KEY= a5981d9a37d6d3d948391d1d462b6dcfecfa73480f919c192a752f510471e7c8 +PT= 91fa4d62d10e852d9eda42fac8c34557 +CT= b956221510135066b2b2552c4cb37642 +TEST= 264 +KEY= bf2e4397d0e93dffa38d69b30f33835b55ac515d1f82cc7f98c77a7d48c2918a +PT= b956221510135066b2b2552c4cb37642 +CT= 300cfceafed28e622cd08222d3a3b0b0 +TEST= 265 +KEY= 55432143b807a628001f8d062ce0157265a0adb7e150421db417f85f9b61213a +PT= 300cfceafed28e622cd08222d3a3b0b0 +CT= 26681bcfdc630a21a684c60ef6a23747 +TEST= 266 +KEY= 2966a6cb3ba9028583813b91fd72748d43c8b6783d33483c12933e516dc3167d +PT= 26681bcfdc630a21a684c60ef6a23747 +CT= 8edd4b1b458d16841ad4525c01a8397e +TEST= 267 +KEY= 1a22288ac28060f8e4b20c2ae0c82aeacd15fd6378be5eb808476c0d6c6b2f03 +PT= 8edd4b1b458d16841ad4525c01a8397e +CT= bfde412a7caf0326ad1727996056a61c +TEST= 268 +KEY= c882e880508e92ff709e9bd4a555b30a72cbbc4904115d9ea5504b940c3d891f +PT= bfde412a7caf0326ad1727996056a61c +CT= 88c039a0b395c5d08848c64dfc150c57 +TEST= 269 +KEY= 298b3829ee60112c926e1fd583c9a2defa0b85e9b784984e2d188dd9f0288548 +PT= 88c039a0b395c5d08848c64dfc150c57 +CT= acdf23f2cb73fd8d3d814a79e3c94126 +TEST= 270 +KEY= 2f2a3d0ddb2dba8b8e3ff8a9de765fe356d4a61b7cf765c31099c7a013e1c46e +PT= acdf23f2cb73fd8d3d814a79e3c94126 +CT= a8be26fe8780972650d5f384b744ac44 +TEST= 271 +KEY= f8cc20e8296cd38f1ef8bb2777ee1200fe6a80e5fb77f2e5404c3424a4a5682a +PT= a8be26fe8780972650d5f384b744ac44 +CT= b5557cc20f64fcc576a6ec7be324ce43 +TEST= 272 +KEY= 678b5341f1bc13db366b36d59adadc7c4b3ffc27f4130e2036ead85f4781a669 +PT= b5557cc20f64fcc576a6ec7be324ce43 +CT= b59281eff9c8d19e5d9c053cbe1f2f33 +TEST= 273 +KEY= e4701c9009693e38c455ce186a4b87dffead7dc80ddbdfbe6b76dd63f99e895a +PT= b59281eff9c8d19e5d9c053cbe1f2f33 +CT= 7e8b1d4bff81c5b9aa1fca81df8de64f +TEST= 274 +KEY= c1f886cbcbf2bd920a0e68f30fcb8fce80266083f25a1a07c16917e226136f15 +PT= 7e8b1d4bff81c5b9aa1fca81df8de64f +CT= 20841b35c77a109b528a1135e17d36ee +TEST= 275 +KEY= f05d61a9441b3c741d9d7489f2ee4a5ea0a27bb635200a9c93e306d7c76e59fb +PT= 20841b35c77a109b528a1135e17d36ee +CT= c3195dc001fa1ad7c253dd3fe4a4bc7d +TEST= 276 +KEY= 0c8e70943252dd5dc9819a9fdb375b3f63bb267634da104b51b0dbe823cae586 +PT= c3195dc001fa1ad7c253dd3fe4a4bc7d +CT= 7e06bd1b3440db4ca73af1a05b33ad3f +TEST= 277 +KEY= 84f1b5cf1ad11205e98ecd317ad670a11dbd9b6d009acb07f68a2a4878f948b9 +PT= 7e06bd1b3440db4ca73af1a05b33ad3f +CT= 6224dbd71c1dc35a5c62777d2ea32c3e +TEST= 278 +KEY= e3465353aed687ef62cd1da8d7da3eeb7f9940ba1c87085daae85d35565a6487 +PT= 6224dbd71c1dc35a5c62777d2ea32c3e +CT= 1e4e51cd7ba1f7467ac69755f8894ef4 +TEST= 279 +KEY= 31f715d1ffa116f58ab70e4a3eef6e9561d711776726ff1bd02eca60aed32a73 +PT= 1e4e51cd7ba1f7467ac69755f8894ef4 +CT= 4ab8afeacb2a1b1ae9e74d647266e234 +TEST= 280 +KEY= 487b6847ca14b04d429c81278332273f2b6fbe9dac0ce40139c98704dcb5c847 +PT= 4ab8afeacb2a1b1ae9e74d647266e234 +CT= 64c0bba15382c142bbee84b86b7d0ba0 +TEST= 281 +KEY= d1c9ca26b21945011b044ea6e29c9ad54faf053cff8e2543822703bcb7c8c3e7 +PT= 64c0bba15382c142bbee84b86b7d0ba0 +CT= f82292af614648ec6c1e9a1027167410 +TEST= 282 +KEY= 3f585c00e187be1b0c9e09781c9548a8b78d97939ec86dafee3999ac90deb7f7 +PT= f82292af614648ec6c1e9a1027167410 +CT= 31c38ed5f207b412a14a51632d8805ce +TEST= 283 +KEY= 340b8c115baff387400cd8f0ee8f8f6f864e19466ccfd9bd4f73c8cfbd56b239 +PT= 31c38ed5f207b412a14a51632d8805ce +CT= 3fc4cc8f4245bbbc5939a0c0a24a14de +TEST= 284 +KEY= ea8eacf07402225d6c5181a8802da515b98ad5c92e8a6201164a680f1f1ca6e7 +PT= 3fc4cc8f4245bbbc5939a0c0a24a14de +CT= 23a98fa41d6c3d4cd9cfb9737a6d7872 +TEST= 285 +KEY= 56ef7b73bf04f5f463e4d0ea0f6fc4da9a235a6d33e65f4dcf85d17c6571de95 +PT= 23a98fa41d6c3d4cd9cfb9737a6d7872 +CT= 82cc2d376b2772b7b988bea17efbb3d2 +TEST= 286 +KEY= c425e380da91c34b73ce922c59b13c8818ef775a58c12dfa760d6fdd1b8a6d47 +PT= 82cc2d376b2772b7b988bea17efbb3d2 +CT= 5330f6218d528a32b24085ea496a05a9 +TEST= 287 +KEY= ea66c7ff9fcd2f9e76bcc5c6387e133e4bdf817bd593a7c8c44dea3752e068ee +PT= 5330f6218d528a32b24085ea496a05a9 +CT= 7c1e082c2c89c90ad91ae81df73f1f5f +TEST= 288 +KEY= c89cf336490832fb54bb536813aee6ea37c18957f91a6ec21d57022aa5df77b1 +PT= 7c1e082c2c89c90ad91ae81df73f1f5f +CT= 2ab33673b654e2c49d6736d65a5f45c8 +TEST= 289 +KEY= 7cc5409a9ae1f997774c3feb74a6e9061d72bf244f4e8c06803034fcff803279 +PT= 2ab33673b654e2c49d6736d65a5f45c8 +CT= 21ba6caddca5e0be779d1a2651794c81 +TEST= 290 +KEY= e5e1873fdee9dc066af79c0e6027d0703cc8d38993eb6cb8f7ad2edaaef97ef8 +PT= 21ba6caddca5e0be779d1a2651794c81 +CT= 8e2af8ba54cf04812ae786c180fcfca8 +TEST= 291 +KEY= 844aa67914de1c11677b5526d5b12765b2e22b33c7246839dd4aa81b2e058250 +PT= 8e2af8ba54cf04812ae786c180fcfca8 +CT= e48a7cd35ca33b1d919b8a83adf4c6be +TEST= 292 +KEY= fe3248768acb0af9dbd639af7b7eb944566857e09b8753244cd1229883f144ee +PT= e48a7cd35ca33b1d919b8a83adf4c6be +CT= c377a76cf43c27784cc54079744413d1 +TEST= 293 +KEY= 709e7bc30a7de8fadc071b3d04338fca951ff08c6fbb745c001462e1f7b5573f +PT= c377a76cf43c27784cc54079744413d1 +CT= 01d8083a9ea403a4754ef82ca29cdd5b +TEST= 294 +KEY= 448b1aec2f68d202679183d85c4a6d2194c7f8b6f11f77f8755a9acd55298a64 +PT= 01d8083a9ea403a4754ef82ca29cdd5b +CT= 46adc32eff2c3eff40b468e845efc2e4 +TEST= 295 +KEY= 529401616fa6193014d6a10bef1a816fd26a3b980e33490735eef22510c64880 +PT= 46adc32eff2c3eff40b468e845efc2e4 +CT= fcc6594b1bbf40e28be798abc00163f1 +TEST= 296 +KEY= 15a5e8baf02ef91390ab7d35742cc5c12eac62d3158c09e5be096a8ed0c72b71 +PT= fcc6594b1bbf40e28be798abc00163f1 +CT= 28d35b6e1140738ed1df20fe11003b1e +TEST= 297 +KEY= 589c04ecdf2b884807919a2018a93080067f39bd04cc7a6b6fd64a70c1c7106f +PT= 28d35b6e1140738ed1df20fe11003b1e +CT= 3354c7962e19fb043fd4cd7b2c99e195 +TEST= 298 +KEY= a6987beb541098c7173475b34568f36b352bfe2b2ad5816f5002870bed5ef1fa +PT= 3354c7962e19fb043fd4cd7b2c99e195 +CT= eb76f282c9f10f507facfcdeec8bbbb8 +TEST= 299 +KEY= 3732b395057761a8a2624f52354668cfde5d0ca9e3248e3f2fae7bd501d54a42 +PT= eb76f282c9f10f507facfcdeec8bbbb8 +CT= 77a4dae8406992c5018d6b0310195e0c +TEST= 300 +KEY= e24c9f98f43e840ae04ed4928133f65aa9f9d641a34d1cfa2e2310d611cc144e +PT= 77a4dae8406992c5018d6b0310195e0c +CT= 655dec1062edb50b8b31a66071e236a2 +TEST= 301 +KEY= 8ba207ca6e2b720810e66ccab597e8dacca43a51c1a0a9f1a512b6b6602e22ec +PT= 655dec1062edb50b8b31a66071e236a2 +CT= 28a22a069d8ff3de359860b0a5b6fd1f +TEST= 302 +KEY= 22c629c84758d553afe4876aa739a1f0e40610575c2f5a2f908ad606c598dff3 +PT= 28a22a069d8ff3de359860b0a5b6fd1f +CT= 95dd88b4afd0680e221c70422adffcd1 +TEST= 303 +KEY= f86a3c799aab6884220196bf07e1643d71db98e3f3ff3221b296a644ef472322 +PT= 95dd88b4afd0680e221c70422adffcd1 +CT= 323475c634fd6845baa9f371f29dc363 +TEST= 304 +KEY= 83412e9600b279f76c93f171c469ad1943efed25c7025a64083f55351ddae041 +PT= 323475c634fd6845baa9f371f29dc363 +CT= 61276ad535f9e73fcfb53dbf2d5d1f62 +TEST= 305 +KEY= 01ad15137c4a572322660716b6b4edcd22c887f0f2fbbd5bc78a688a3087ff23 +PT= 61276ad535f9e73fcfb53dbf2d5d1f62 +CT= 105ecb04a5ca32fc93987569a7cb46d7 +TEST= 306 +KEY= 1cc639ba56ca0df23e64bb3395c08bb332964cf457318fa754121de3974cb9f4 +PT= 105ecb04a5ca32fc93987569a7cb46d7 +CT= 831dbb3f4bbd4343b94d54aa2b3e0620 +TEST= 307 +KEY= 25abcf5b8db1a7ccb1fa49936e0ab3c8b18bf7cb1c8ccce4ed5f4949bc72bfd4 +PT= 831dbb3f4bbd4343b94d54aa2b3e0620 +CT= 40b9d9c6201e639dc9a04e500bcd7f61 +TEST= 308 +KEY= 75b34e0f371c4527732f22cf35ad923bf1322e0d3c92af7924ff0719b7bfc0b5 +PT= 40b9d9c6201e639dc9a04e500bcd7f61 +CT= a159bb0c751148c14d561e0407a9f6db +TEST= 309 +KEY= 1eb6e3491b431b7effccc965c9041274506b95014983e7b869a9191db016366e +PT= a159bb0c751148c14d561e0407a9f6db +CT= 2012e67815334ac48e5309dd129e0476 +TEST= 310 +KEY= f0bdafb216613a6fb3819d08b17efdc1707973795cb0ad7ce7fa10c0a2883218 +PT= 2012e67815334ac48e5309dd129e0476 +CT= 53e415bc0c9013f83b77298395fc9fef +TEST= 311 +KEY= 9c5a3b9c862e07159ab06d5b7fb585c5239d66c55020be84dc8d39433774adf7 +PT= 53e415bc0c9013f83b77298395fc9fef +CT= 2b1eeaa13373494a2a56c15fd5eca103 +TEST= 312 +KEY= 9764ac349b8222394160f4896ba6761808838c646353f7cef6dbf81ce2980cf4 +PT= 2b1eeaa13373494a2a56c15fd5eca103 +CT= 2a00e873782853dc842427a03c30a81a +TEST= 313 +KEY= 42a1614569c4de66d6336bc082b3b9dd228364171b7ba41272ffdfbcdea8a4ee +PT= 2a00e873782853dc842427a03c30a81a +CT= 5feb74e489c4c8121a15c2bcf51046a5 +TEST= 314 +KEY= ced80be0859a5863cfe41f0f2ce9f65b7d6810f392bf6c0068ea1d002bb8e24b +PT= 5feb74e489c4c8121a15c2bcf51046a5 +CT= 948214d5db68997c37a48927aa97b89a +TEST= 315 +KEY= 178daf533ebb695d5e57401e5345c3e8e9ea042649d7f57c5f4e9427812f5ad1 +PT= 948214d5db68997c37a48927aa97b89a +CT= ab8f3bb9917e4d1c8f1f2eddb7070530 +TEST= 316 +KEY= 66f4b8b5a0bd877514fdb4cd2dd04d8c42653f9fd8a9b860d051bafa36285fe1 +PT= ab8f3bb9917e4d1c8f1f2eddb7070530 +CT= cb5fb11c6db1ab6bc189f0f3fb47a2a5 +TEST= 317 +KEY= 9753278cfcee8b059ecf573a2e0d65d6893a8e83b518130b11d84a09cd6ffd44 +PT= cb5fb11c6db1ab6bc189f0f3fb47a2a5 +CT= f0ce65e6c5c263182e6c253f26460a1b +TEST= 318 +KEY= 121a860a5b53c56e536de56566f31e2079f4eb6570da70133fb46f36eb29f75f +PT= f0ce65e6c5c263182e6c253f26460a1b +CT= 9aa17b0f532814ca74ff0a046f377c48 +TEST= 319 +KEY= 88f5e58e9522495bf7b68430946f7c0fe355906a23f264d94b4b6532841e8b17 +PT= 9aa17b0f532814ca74ff0a046f377c48 +CT= 52caaef16e55858487aedbdba822002d +TEST= 320 +KEY= d9a3d3547f215d44d80c6a5d3548d4d2b19f3e9b4da7e15dcce5bee92c3c8b3a +PT= 52caaef16e55858487aedbdba822002d +CT= 2599545fd15c7f59a6f02cdcb95e6589 +TEST= 321 +KEY= 6ace86543b0f981c2d0fcb1408a42c3294066ac49cfb9e046a1592359562eeb3 +PT= 2599545fd15c7f59a6f02cdcb95e6589 +CT= dc7a68313ce3e1963d31e5149cdbe22a +TEST= 322 +KEY= e9d6d08194dafbb7b491124515118fa6487c02f5a0187f925724772109b90c99 +PT= dc7a68313ce3e1963d31e5149cdbe22a +CT= 333b588a7354cb3229e43780afe4738d +TEST= 323 +KEY= 762fc93ceed1ee9c6ef702a4e3bbabd67b475a7fd34cb4a07ec040a1a65d7f14 +PT= 333b588a7354cb3229e43780afe4738d +CT= 41727dc0d18725afd2ef8ff51eae1c2c +TEST= 324 +KEY= ff4ec1df818e820424cfe5d09ee2e5423a3527bf02cb910fac2fcf54b8f36338 +PT= 41727dc0d18725afd2ef8ff51eae1c2c +CT= a7236b16d9937c84f37bf9d79d0251f9 +TEST= 325 +KEY= 59bdab706dea2ec52ae05a2e4382a4169d164ca9db58ed8b5f54368325f132c1 +PT= a7236b16d9937c84f37bf9d79d0251f9 +CT= b81d30efdb86688f1dca616ec771b9fd +TEST= 326 +KEY= 4c008516cd614b6588a526ffe33c055b250b7c4600de8504429e57ede2808b3c +PT= b81d30efdb86688f1dca616ec771b9fd +CT= a5ad142c8f078abf419b7cf5c86c9f83 +TEST= 327 +KEY= db65698f99e4a27019abe194a89e9bc680a6686a8fd90fbb03052b182aec14bf +PT= a5ad142c8f078abf419b7cf5c86c9f83 +CT= 861b59e3b61a5d02f0d70dff40ef7ff2 +TEST= 328 +KEY= 0790c16c53a7826b4b309ddf99b5239006bd318939c352b9f3d226e76a036b4d +PT= 861b59e3b61a5d02f0d70dff40ef7ff2 +CT= b0f4c2c4d0d282be3128ad78d34b1fa6 +TEST= 329 +KEY= afe168f089e676a806dd191003777e6db649f34de911d007c2fa8b9fb94874eb +PT= b0f4c2c4d0d282be3128ad78d34b1fa6 +CT= 9dfcf5727851ade8c37a9aa3aa77b20d +TEST= 330 +KEY= f261cdf199d9ef436c1a08eb9755a2112bb5063f91407def0180113c133fc6e6 +PT= 9dfcf5727851ade8c37a9aa3aa77b20d +CT= 9268dba972b72c9def15cf9b8041f23b +TEST= 331 +KEY= e0d6dcf3ba840720688456a43e849c5cb9dddd96e3f75172ee95dea7937e34dd +PT= 9268dba972b72c9def15cf9b8041f23b +CT= d45a8b321cb6d8f28167c857bc2900bf +TEST= 332 +KEY= b77cf3a880c2e9e66d0c98a4d88555f46d8756a4ff4189806ff216f02f573462 +PT= d45a8b321cb6d8f28167c857bc2900bf +CT= 0124fe2d8bcb81e1286a18d2babea919 +TEST= 333 +KEY= 7729e55efa6b249e0207e06aaf6f09206ca3a889748a086147980e2295e99d7b +PT= 0124fe2d8bcb81e1286a18d2babea919 +CT= a1bb0d975a50be8bd8c2973d4ba7bf42 +TEST= 334 +KEY= 102384784c54539084bc7181aa95f184cd18a51e2edab6ea9f5a991fde4e2239 +PT= a1bb0d975a50be8bd8c2973d4ba7bf42 +CT= 15302d5dbfd8e407eadde9896b42cb13 +TEST= 335 +KEY= 9ff48ef1068bfc07da38f7790d7418d2d8288843910252ed75877096b50ce92a +PT= 15302d5dbfd8e407eadde9896b42cb13 +CT= 90d93b8f802cfad3f6e682dd704b5f43 +TEST= 336 +KEY= 84477eb9007ecdf8d1c4a6a976c76ab848f1b3cc112ea83e8361f24bc547b669 +PT= 90d93b8f802cfad3f6e682dd704b5f43 +CT= 2dd7e0b91c5ddf0fd118f4cdd836a212 +TEST= 337 +KEY= f1ce87de930567ce29df313d8778358d652653750d737731527906861d71147b +PT= 2dd7e0b91c5ddf0fd118f4cdd836a212 +CT= ac9d307eff44703d6fda621fff8d077c +TEST= 338 +KEY= 22d31c8f64cfb23620a70e7cd4a486d3c9bb630bf237070c3da36499e2fc1307 +PT= ac9d307eff44703d6fda621fff8d077c +CT= cc6772de3b27cb1db3e5a804843eb6ff +TEST= 339 +KEY= fc9057d2d2d28bfac4d5e3654717188205dc11d5c910cc118e46cc9d66c2a5f8 +PT= cc6772de3b27cb1db3e5a804843eb6ff +CT= bdb021550fe0744090eafeebcf422061 +TEST= 340 +KEY= 1ea032190e7e4cc45d2e1e138429658ab86c3080c6f0b8511eac3276a9808599 +PT= bdb021550fe0744090eafeebcf422061 +CT= c6e21f9a1305c3969f2d70c11d58a1a7 +TEST= 341 +KEY= b633eda212b952785755700fbdc91ca57e8e2f1ad5f57bc7818142b7b4d8243e +PT= c6e21f9a1305c3969f2d70c11d58a1a7 +CT= 01bc936b7063ca9d28db1ffccb9c2048 +TEST= 342 +KEY= 94a06984520ab40d74568f0d5286aee37f32bc71a596b15aa95a5d4b7f440476 +PT= 01bc936b7063ca9d28db1ffccb9c2048 +CT= 88279d100dfa68cebd9949f19c3333f4 +TEST= 343 +KEY= 96a3bd621155f71a9efb8e35f95238acf7152161a86cd99414c314bae3773782 +PT= 88279d100dfa68cebd9949f19c3333f4 +CT= 41574a686596d4741bf5de52b5183260 +TEST= 344 +KEY= 185312e4301e5aadc373ceb3eba66fb7b6426b09cdfa0de00f36cae8566f05e2 +PT= 41574a686596d4741bf5de52b5183260 +CT= bd9f5087c32a66a4797c7ee87355ff4a +TEST= 345 +KEY= bc5d60d256dca48e88e52f05c349431a0bdd3b8e0ed06b44764ab400253afaa8 +PT= bd9f5087c32a66a4797c7ee87355ff4a +CT= a88bc3faf87d6c1d3f98a2884ef1d4da +TEST= 346 +KEY= 1485a9209167a6fa2ecd2ce6aa03dba5a356f874f6ad075949d216886bcb2e72 +PT= a88bc3faf87d6c1d3f98a2884ef1d4da +CT= e514e6e34a050eb917f2382edf92353a +TEST= 347 +KEY= 2b62b0e29763ff09f53a2006b990e97746421e97bca809e05e202ea6b4591b48 +PT= e514e6e34a050eb917f2382edf92353a +CT= 142eebe72e0f56abe5d67fcc28f957f6 +TEST= 348 +KEY= fc13067e362b7c9c39aa73b85f32011c526cf57092a75f4bbbf6516a9ca04cbe +PT= 142eebe72e0f56abe5d67fcc28f957f6 +CT= 24fdb7a03fe8a9288bfaa5ac2527d015 +TEST= 349 +KEY= 8ac3b473244989ea74025fe98269bc17769142d0ad4ff663300cf4c6b9879cab +PT= 24fdb7a03fe8a9288bfaa5ac2527d015 +CT= 649095aba5f4006b7b89d20f10a37ae9 +TEST= 350 +KEY= fd0f4205dbff0160203898ef02e9088e1201d77b08bbf6084b8526c9a924e642 +PT= 649095aba5f4006b7b89d20f10a37ae9 +CT= f5428e8bdddc31fc8ef67bc7db3201d3 +TEST= 351 +KEY= 701af95194fb0918bc2ca79afd507336e74359f0d567c7f4c5735d0e7216e791 +PT= f5428e8bdddc31fc8ef67bc7db3201d3 +CT= a56b2014a4929373dc1f6fd5c0ac138c +TEST= 352 +KEY= 633d0e72722e6443d4e219086d221939422879e471f55487196c32dbb2baf41d +PT= a56b2014a4929373dc1f6fd5c0ac138c +CT= f35f9cd43144b358843a48b4d1c41882 +TEST= 353 +KEY= dca79ba0184ec0a22a875e5057ca967ab177e53040b1e7df9d567a6f637eec9f +PT= f35f9cd43144b358843a48b4d1c41882 +CT= a572c1f98330a1c1fa91dfd5a5b76ab9 +TEST= 354 +KEY= a3d0fe4c3c1a1ce19cf66cf80135553d140524c9c381461e67c7a5bac6c98626 +PT= a572c1f98330a1c1fa91dfd5a5b76ab9 +CT= 23c56e065427f0409504053dd8a994cd +TEST= 355 +KEY= 175c8d4085802768d20875cdbe6efe2437c04acf97a6b65ef2c3a0871e6012eb +PT= 23c56e065427f0409504053dd8a994cd +CT= 7e666724c1cac0a582325381e9c98d73 +TEST= 356 +KEY= 800ee65ca3de8643371da10fb0605ab649a62deb566c76fb70f1f306f7a99f98 +PT= 7e666724c1cac0a582325381e9c98d73 +CT= b6c18d730a074196884cadf151cac890 +TEST= 357 +KEY= f526e578e8978822944644b146154425ff67a0985c6b376df8bd5ef7a6635708 +PT= b6c18d730a074196884cadf151cac890 +CT= 0068bb370419cd39748559c2de206817 +TEST= 358 +KEY= 7d144850be03306f41a642442890ea20ff0f1baf5872fa548c38073578433f1f +PT= 0068bb370419cd39748559c2de206817 +CT= 56852d240f01729c4ead0b1ffc3eda1f +TEST= 359 +KEY= 33b2189e3774b1a066be522c07550f88a98a368b577388c8c2950c2a847de500 +PT= 56852d240f01729c4ead0b1ffc3eda1f +CT= 458633a84e1f5737e9668a37388cf3c2 +TEST= 360 +KEY= cf53c76250347b0cc5cac660d52199b1ec0c0523196cdfff2bf3861dbcf116c2 +PT= 458633a84e1f5737e9668a37388cf3c2 +CT= f96e181e03350f27106c8d24403a49dd +TEST= 361 +KEY= 618676c1702531077565060b5da0570b15621d3d1a59d0d83b9f0b39fccb5f1f +PT= f96e181e03350f27106c8d24403a49dd +CT= b515584e252f703a4eb55e81eda58e30 +TEST= 362 +KEY= d2c8cf9645cd741f67263845150fe649a07745733f76a0e2752a55b8116ed12f +PT= b515584e252f703a4eb55e81eda58e30 +CT= 54e7d10c236785afe0a93b3971d6f237 +TEST= 363 +KEY= d0847f41c7940023491c2f83d02f8271f490947f1c11254d95836e8160b82318 +PT= 54e7d10c236785afe0a93b3971d6f237 +CT= 937dfde10e96030a0a8823ea3ef31b98 +TEST= 364 +KEY= 17502fc3077efd420d2268ce0ff26f4667ed699e128726479f0b4d6b5e4b3880 +PT= 937dfde10e96030a0a8823ea3ef31b98 +CT= 93fdf0392a3391c74dbe4229792c9630 +TEST= 365 +KEY= 4d6aa08a6c7eb7ca9cbe7af4500c229ef41099a738b4b780d2b50f422767aeb0 +PT= 93fdf0392a3391c74dbe4229792c9630 +CT= b9f80e1476658e6ce7fadba215298958 +TEST= 366 +KEY= d8820a50934290c146afe477d9d4a0224de897b34ed139ec354fd4e0324e27e8 +PT= b9f80e1476658e6ce7fadba215298958 +CT= 87acdcd1f1332b9961cc5e18f9009a39 +TEST= 367 +KEY= 50e8959452dd52247a6f21a0c7bedeb8ca444b62bfe2127554838af8cb4ebdd1 +PT= 87acdcd1f1332b9961cc5e18f9009a39 +CT= 3dd6249971fec0fb4432236078d98d53 +TEST= 368 +KEY= 7a1973c5b90748596a54c709d1598da5f7926ffbce1cd28e10b1a998b3973082 +PT= 3dd6249971fec0fb4432236078d98d53 +CT= d540f8bde3442d17e88b524d00618309 +TEST= 369 +KEY= f9c08719a452ca931a62c5bd8f1d669d22d297462d58ff99f83afbd5b3f6b38b +PT= d540f8bde3442d17e88b524d00618309 +CT= 7bb18b2da9ed188bce3b18c02c9b3f3b +TEST= 370 +KEY= 5eba35f7e58381dbe29ec4a1d9b5b9ad59631c6b84b5e7123601e3159f6d8cb0 +PT= 7bb18b2da9ed188bce3b18c02c9b3f3b +CT= 9a7380baa169495b0fc29bb002d70e48 +TEST= 371 +KEY= e442442fe32fa6bda63af0a6ac5d5ab2c3109cd125dcae4939c378a59dba82f8 +PT= 9a7380baa169495b0fc29bb002d70e48 +CT= 88f3fe65298f7498a788e4196f13fc80 +TEST= 372 +KEY= 39079a8713e148703212a6f7ffd1b04d4be362b40c53dad19e4b9cbcf2a97e78 +PT= 88f3fe65298f7498a788e4196f13fc80 +CT= a5e6361fba6418cd9b2f50992b50a557 +TEST= 373 +KEY= a99a33f38b36e3ee4dee59f8a4282a84ee0554abb637c21c0564cc25d9f9db2f +PT= a5e6361fba6418cd9b2f50992b50a557 +CT= b1430f431acc1c498fabf2d33b63cc67 +TEST= 374 +KEY= bc09fac540f44949f3b8edfe2444ca725f465be8acfbde558acf3ef6e29a1748 +PT= b1430f431acc1c498fabf2d33b63cc67 +CT= a90d76642d8d7899dd4a85eb92c89382 +TEST= 375 +KEY= d26c1d07b51073c609030dc782ffae93f64b2d8c8176a6cc5785bb1d705284ca +PT= a90d76642d8d7899dd4a85eb92c89382 +CT= 57522f39211100ef248d4a34e35ce4ce +TEST= 376 +KEY= 2d7adcd18f615f814b8d8b07ce48b4a1a11902b5a067a6237308f129930e6004 +PT= 57522f39211100ef248d4a34e35ce4ce +CT= 87aed1e0c9f067c5f3f6d3d3bbcde872 +TEST= 377 +KEY= ca206c3442faeff3cb1292c675f52c2426b7d3556997c1e680fe22fa28c38876 +PT= 87aed1e0c9f067c5f3f6d3d3bbcde872 +CT= 05798f53dfae4a78d7beec24be775b55 +TEST= 378 +KEY= 6ecc5bc346b18446d77ffbc44ccb0b1823ce5c06b6398b9e5740cede96b4d323 +PT= 05798f53dfae4a78d7beec24be775b55 +CT= 7677ce104395ffa15b51f81dafbcab1a +TEST= 379 +KEY= 2e52c8e239cf1e959ab831307034fef755b99216f5ac743f0c1136c339087839 +PT= 7677ce104395ffa15b51f81dafbcab1a +CT= 760de53561246f944b3e6279b39373f1 +TEST= 380 +KEY= 79b65b7d435e2134a1ab9a1cc1f08a8423b4772394881bab472f54ba8a9b0bc8 +PT= 760de53561246f944b3e6279b39373f1 +CT= 5b61cc978a9c808767c272432765ec0b +TEST= 381 +KEY= 9ef57b89e7b8127348a9ef05e93dcc8d78d5bbb41e149b2c20ed26f9adfee7c3 +PT= 5b61cc978a9c808767c272432765ec0b +CT= 902cdf3bd5e869e9ccff8f2a454e1d42 +TEST= 382 +KEY= 15bb7b6bc685e4865bfa134c59cfc9c5e8f9648fcbfcf2c5ec12a9d3e8b0fa81 +PT= 902cdf3bd5e869e9ccff8f2a454e1d42 +CT= 38264937b9372c316478bdf7ae578900 +TEST= 383 +KEY= 735d93c1ddd54986acc6c2b0dfcc5e8ad0df2db872cbdef4886a142446e77381 +PT= 38264937b9372c316478bdf7ae578900 +CT= 3bfe31d3e909e6ec3112f88db8ffca45 +TEST= 384 +KEY= 675b0e7fc5bcc3af319b1d55c1f62ccaeb211c6b9bc23818b978eca9fe18b9c4 +PT= 3bfe31d3e909e6ec3112f88db8ffca45 +CT= 2bfd5f6532bc1d2a8da34481f9228b84 +TEST= 385 +KEY= 0ab242f9783e75d04e98733e63458f53c0dc430ea97e253234dba828073a3240 +PT= 2bfd5f6532bc1d2a8da34481f9228b84 +CT= 161481003108baefcc02bfd335c6a89f +TEST= 386 +KEY= 58457cb82a24222839cf20d837f168a8d6c8c20e98769fddf8d917fb32fc9adf +PT= 161481003108baefcc02bfd335c6a89f +CT= 8a50e98a1165c1b6137231e519ec137b +TEST= 387 +KEY= c2c52cea5654aac9bd60fa04068094ef5c982b8489135e6bebab261e2b1089a4 +PT= 8a50e98a1165c1b6137231e519ec137b +CT= 24acaa0f045f5a6765d3b468550585b5 +TEST= 388 +KEY= 816757a434d81aa348e0b2f4fc44f4387834818b8d4c040c8e7892767e150c11 +PT= 24acaa0f045f5a6765d3b468550585b5 +CT= 9993f9cbdad9ca98c74ccbdb3e079f50 +TEST= 389 +KEY= 647a9f1e43b08fd15efc17342eb8970ae1a778405795ce94493459ad40129341 +PT= 9993f9cbdad9ca98c74ccbdb3e079f50 +CT= f676785aef58297c28035e8e065829ff +TEST= 390 +KEY= 4bb8b5020862ea9228b663dedb39336717d1001ab8cde7e861370723464ababe +PT= f676785aef58297c28035e8e065829ff +CT= ed16c74bd4252f7b72aa37d11e198508 +TEST= 391 +KEY= 5392aaed87ce40891a69f4690a8743fbfac7c7516ce8c893139d30f258533fb6 +PT= ed16c74bd4252f7b72aa37d11e198508 +CT= 3be7b6a9e197598146e98b7a501a2226 +TEST= 392 +KEY= 9d8babe9c12e6ba3a18eb23a92205456c12071f88d7f91125574bb8808491d90 +PT= 3be7b6a9e197598146e98b7a501a2226 +CT= cc1163a3d9af3307ed740591ab66bd81 +TEST= 393 +KEY= 231b451e506ac98ff993a3c7ad9c37f70d31125b54d0a215b800be19a32fa011 +PT= cc1163a3d9af3307ed740591ab66bd81 +CT= 43fb8b2b44c740956111da816616771d +TEST= 394 +KEY= 1699c517ee1713d02c6ea0957e4a00ce4eca99701017e280d9116498c539d70c +PT= 43fb8b2b44c740956111da816616771d +CT= a511aea01db8e7e16e7c53931625bec3 +TEST= 395 +KEY= 2624ce7970cc5dafac73c881fdd5f6ebebdb37d00daf0561b76d370bd31c69cf +PT= a511aea01db8e7e16e7c53931625bec3 +CT= 82ef6d2a1ff1dbcdf39dc04be523229f +TEST= 396 +KEY= 60c9931e19ed0d095f8df75aea56689769345afa125edeac44f0f740363f4b50 +PT= 82ef6d2a1ff1dbcdf39dc04be523229f +CT= a595c8aaaaad80dd4f40693ff2d89a19 +TEST= 397 +KEY= d461e3605b0ad0e87f5a078ecfe25934cca19250b8f35e710bb09e7fc4e7d149 +PT= a595c8aaaaad80dd4f40693ff2d89a19 +CT= 57b18dfead129795c3bb8d6c06764729 +TEST= 398 +KEY= 0be3fc6c21764f1c15782d52d92919a09b101fae15e1c9e4c80b1313c2919660 +PT= 57b18dfead129795c3bb8d6c06764729 +CT= 6f8606bba6cc03a5d0a64fe21e277b60 +TEST= 399 +KEY= 982d617a0f737342e99123a5a573d266f4961915b32dca4118ad5cf1dcb6ed00 +PT= 6f8606bba6cc03a5d0a64fe21e277b60 +CT= 1f6763df807a7e70960d4cd3118e601a diff --git a/flint/test/testvals/ecbme64.txt b/flint/test/testvals/ecbme64.txt new file mode 100644 index 0000000..3717d93 --- /dev/null +++ b/flint/test/testvals/ecbme64.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= 2bc4c2308f0160a8cf445257eaad3b2e31887ff7457d8b4a +TEST= 1 +KEY= cf445257eaad3b2e31887ff7457d8b4a +PT= 2bc4c2308f0160a8cf445257eaad3b2e31887ff7457d8b4a +CT= a25ae5733ce277ec022f2ea5b1d76b9f61a46db442299ce7 +TEST= 2 +KEY= cd6b7cf25b7a50b1502c1243075417ad +PT= a25ae5733ce277ec022f2ea5b1d76b9f61a46db442299ce7 +CT= 23a40c2d652956de708d2d497a003b48e772769cf04702c4 +TEST= 3 +KEY= bde651bb217a6bf9b75e64dff7131569 +PT= 23a40c2d652956de708d2d497a003b48e772769cf04702c4 +CT= 49da8dbf38c26e85b0c2be1093eafdc4daf5c1204334854e +TEST= 4 +KEY= 0d24efabb290963d6daba5ffb4279027 +PT= 49da8dbf38c26e85b0c2be1093eafdc4daf5c1204334854e +CT= 8b8eb09162da5e33d8d432f3e0f300ca06227118de894096 +TEST= 5 +KEY= d5f0dd58526396f76b89d4e76aaed0b1 +PT= 8b8eb09162da5e33d8d432f3e0f300ca06227118de894096 +CT= 6fc2e6eb1a52c6922a0c5252f4ccbab78c2db508ad8bcdf7 +TEST= 6 +KEY= fffc8f0aa6af2c40e7a461efc7251d46 +PT= 6fc2e6eb1a52c6922a0c5252f4ccbab78c2db508ad8bcdf7 +CT= 601a8f2a9fc35cc2304d25af26a8cab9123f42ec193f9378 +TEST= 7 +KEY= cfb1aaa58007e6f9f59b2303de1a8e3e +PT= 601a8f2a9fc35cc2304d25af26a8cab9123f42ec193f9378 +CT= 350eaa6791e46a7612346edeb9bb9a17ae88f14629514099 +TEST= 8 +KEY= dd85c47b39bc7cee5b13d245f74bcea7 +PT= 350eaa6791e46a7612346edeb9bb9a17ae88f14629514099 +CT= 49f318d60218f9207cdb4cdf542c5016dd5c0de13df6d720 +TEST= 9 +KEY= a15e88a46d902cf8864fdfa4cabd1987 +PT= 49f318d60218f9207cdb4cdf542c5016dd5c0de13df6d720 +CT= 1d08617e198c1114314c73f7b56503e17d3d46eff81e21d5 +TEST= 10 +KEY= 9012fb53d8f52f19fb72994b32a33852 +PT= 1d08617e198c1114314c73f7b56503e17d3d46eff81e21d5 +CT= 48b59538b4d775d9fc45a1beeda6f2042fe0bb500e64ce78 +TEST= 11 +KEY= 6c575aed3553dd1dd492221b3cc7f62a +PT= 48b59538b4d775d9fc45a1beeda6f2042fe0bb500e64ce78 +CT= 3e6bd74282c40872e69a23be8acfb922db33715beddb1854 +TEST= 12 +KEY= 8acd7953bf9c643f0fa15340d11cee7e +PT= 3e6bd74282c40872e69a23be8acfb922db33715beddb1854 +CT= bfacc5a8efd6a8bd2e8817ac32cff4a9bcb8ea5266139cf9 +TEST= 13 +KEY= a4456eff8d539096b319b912b70f7287 +PT= bfacc5a8efd6a8bd2e8817ac32cff4a9bcb8ea5266139cf9 +CT= 93ba8802354b26aadff26afa8a42ada52460fee8e056f3aa +TEST= 14 +KEY= 7bb7040507113d33977947fa5759812d +PT= 93ba8802354b26aadff26afa8a42ada52460fee8e056f3aa +CT= 3df8183ff095950e76fd72c8c6f8adf2c0e015db141db955 +TEST= 15 +KEY= 0d4a76cdc1e990c15799522143443878 +PT= 3df8183ff095950e76fd72c8c6f8adf2c0e015db141db955 +CT= 1369f8ebe7103fb47186611d391fbb30f1529a5f87bda77d +TEST= 16 +KEY= 7ccc17d0f8f62bf1a6cbc87ec4f99f05 +PT= 1369f8ebe7103fb47186611d391fbb30f1529a5f87bda77d +CT= f563b93bf67dd8a6880b8c4f44073f206ddf6e9dfb447f93 +TEST= 17 +KEY= f4c79b9fbcf114d1cb14a6e33fbde096 +PT= f563b93bf67dd8a6880b8c4f44073f206ddf6e9dfb447f93 +CT= d8a2541d656a149df6d3ecba26ddd2b37f5dbdbbbef53c2e +TEST= 18 +KEY= 021477259a2cc662b4491b588148dcb8 +PT= d8a2541d656a149df6d3ecba26ddd2b37f5dbdbbbef53c2e +CT= 162870fbd6447eb94e9ab3aacf20f921b3c1726da5783324 +TEST= 19 +KEY= 4c8ec48f550c3f43078869352430ef9c +PT= 162870fbd6447eb94e9ab3aacf20f921b3c1726da5783324 +CT= 07c17680ef0d01b79dfa623aee472fdce4eae99e6b2fe35c +TEST= 20 +KEY= d174a6b5bb4b109fe36280ab4f1f0cc0 +PT= 07c17680ef0d01b79dfa623aee472fdce4eae99e6b2fe35c +CT= 1d849c26dda2378eb662e80ebce661ddb744e1342e9cfe64 +TEST= 21 +KEY= 67164ebb07ad71425426619f6183f2a4 +PT= 1d849c26dda2378eb662e80ebce661ddb744e1342e9cfe64 +CT= a2bd834bb850e8e5cac6dd15b13a8f117a135a648444cab5 +TEST= 22 +KEY= add093aeb697fe532e353bfbe5c73811 +PT= a2bd834bb850e8e5cac6dd15b13a8f117a135a648444cab5 +CT= 87460ec8d5bec7170b69fee7fe5c145825045e27636d1632 +TEST= 23 +KEY= a6b96d4948cbea0b0b3165dc86aa2e23 +PT= 87460ec8d5bec7170b69fee7fe5c145825045e27636d1632 +CT= 68626c3d75709aa1e61e522c627c738f0f325aa2551c8725 +TEST= 24 +KEY= 40a73f652ab7998404033f7ed3b6a906 +PT= 68626c3d75709aa1e61e522c627c738f0f325aa2551c8725 +CT= dcdf42e7dc8d38b0055126e5e2af810342406c1b5a84172f +TEST= 25 +KEY= 45f61980c8181887464353658932be29 +PT= dcdf42e7dc8d38b0055126e5e2af810342406c1b5a84172f +CT= 1106656e0a8876c393df6e5da5debf88b7461879841bace0 +TEST= 26 +KEY= d62977dd6dc6a70ff1054b1c0d2912c9 +PT= 1106656e0a8876c393df6e5da5debf88b7461879841bace0 +CT= fdc623a7159000244c10c18e0b3232b254dcbd7cdcc2657c +TEST= 27 +KEY= 9a39b65366f495bda5d9f660d1eb77b5 +PT= fdc623a7159000244c10c18e0b3232b254dcbd7cdcc2657c +CT= 3dac37aabaca18a7e06a71b9a36d51b7f336e003ebf44f80 +TEST= 28 +KEY= 7a53c7eac599c40a56ef16633a1f3835 +PT= 3dac37aabaca18a7e06a71b9a36d51b7f336e003ebf44f80 +CT= 2fb12188ce869b04afc7bf3222749ddcf7c60c256c1c7e9b +TEST= 29 +KEY= d59478d8e7ed59d6a1291a46560346ae +PT= 2fb12188ce869b04afc7bf3222749ddcf7c60c256c1c7e9b +CT= 238cf5f0cd37c17faf169d695739bc599f2c709a28e0eba6 +TEST= 30 +KEY= 7a82e5b1b0d4e58f3e056adc7ee3ad08 +PT= 238cf5f0cd37c17faf169d695739bc599f2c709a28e0eba6 +CT= ac944c4387de250aa245e4acb62f2969f20d8af2077546e9 +TEST= 31 +KEY= d8c7011d06fbcce6cc08e02e7996ebe1 +PT= ac944c4387de250aa245e4acb62f2969f20d8af2077546e9 +CT= 7ab851d37405ea8e182811d667c9c199c1263fbabc1c0b70 +TEST= 32 +KEY= c0ef10cb61320d7f0d2edf94c58ae091 +PT= 7ab851d37405ea8e182811d667c9c199c1263fbabc1c0b70 +CT= 13ba4bdde3102f5fa42f8fad9e2c0efd67d10fc989368297 +TEST= 33 +KEY= 64c09f66ff1e03826affd05d4cbc6206 +PT= 13ba4bdde3102f5fa42f8fad9e2c0efd67d10fc989368297 +CT= dc261f960245ea0087e8febeb5ffab3122f103c9a584cb48 +TEST= 34 +KEY= e32861d84ae1a8b3480ed394e938a94e +PT= dc261f960245ea0087e8febeb5ffab3122f103c9a584cb48 +CT= 9584a3da14d19fa096806357c8ea58a9bbdd22a1daf5ae6c +TEST= 35 +KEY= 75a8028f820bf01af3d3f13533cd0722 +PT= 9584a3da14d19fa096806357c8ea58a9bbdd22a1daf5ae6c +CT= 116148b3ca64a2b2724328612c7055c7d5678260da05cea9 +TEST= 36 +KEY= 07eb2aeeae7ba5dd26b47355e9c8c98b +PT= 116148b3ca64a2b2724328612c7055c7d5678260da05cea9 +CT= cf4ae5c9822e9a77a503f5936e54b250c5ef3326906edb36 +TEST= 37 +KEY= a2e8df7dc02f178de35b407379a612bd +PT= cf4ae5c9822e9a77a503f5936e54b250c5ef3326906edb36 +CT= 2fb5830171460f334c50a2249399a78b2ed38ff69a5f8d34 +TEST= 38 +KEY= eeb87d5953b6b006cd88cf85e3f99f89 +PT= 2fb5830171460f334c50a2249399a78b2ed38ff69a5f8d34 +CT= bd68f00fa252f8cf9400e63c6df227340826966051010d30 +TEST= 39 +KEY= 7ab89b653e449732c5ae59e5b2f892b9 +PT= bd68f00fa252f8cf9400e63c6df227340826966051010d30 +CT= 6623c4002207ade58f23d511b5256b618cdec4d6d1a0023b +TEST= 40 +KEY= f59b4e748b61fc5349709d3363589082 +PT= 6623c4002207ade58f23d511b5256b618cdec4d6d1a0023b +CT= c4717105cf06b3bb1680a122bb898d536e6b2a16a3df73b0 +TEST= 41 +KEY= e31bef5630e87100271bb725c087e332 +PT= c4717105cf06b3bb1680a122bb898d536e6b2a16a3df73b0 +CT= ba06f80636198474ddf593cc50851e1d844704b47b5391af +TEST= 42 +KEY= 3eee7c9a606d6f1da35cb391bbd4729d +PT= ba06f80636198474ddf593cc50851e1d844704b47b5391af +CT= db80ec3f79fb038e7aa444937ae5130fc73b6ae34fe7f6c1 +TEST= 43 +KEY= 444a38091a887c126467d972f433845c +PT= db80ec3f79fb038e7aa444937ae5130fc73b6ae34fe7f6c1 +CT= 3b1ed8c3f7c2e77262d0d08f8b0a818ba3bb3a9a1d22d7f8 +TEST= 44 +KEY= 269ae8869182fd99c7dce3e8e91153a4 +PT= 3b1ed8c3f7c2e77262d0d08f8b0a818ba3bb3a9a1d22d7f8 +CT= 36d80ff5646338e0b252fb5a322b33ad4579c7642ba5a91f +TEST= 45 +KEY= 94c813dca3a9ce3482a5248cc2b4fabb +PT= 36d80ff5646338e0b252fb5a322b33ad4579c7642ba5a91f +CT= 1fa4f93b90709feac3cab6cce6451f45ffdf076176d28a46 +TEST= 46 +KEY= 5702a51045ecd1717d7a23edb46670fd +PT= 1fa4f93b90709feac3cab6cce6451f45ffdf076176d28a46 +CT= f6c368c57e3bc5a939b5363548df54b69be8e67af5634fe4 +TEST= 47 +KEY= 6eb793250d3385c7e692c59741053f19 +PT= f6c368c57e3bc5a939b5363548df54b69be8e67af5634fe4 +CT= 74309d31938f42f814e00836e518f5d3df5d337f690137cc +TEST= 48 +KEY= 7a579b13e82b701439cff6e8280408d5 +PT= 74309d31938f42f814e00836e518f5d3df5d337f690137cc +CT= cb2b6d353cbbd221e27d2b0fd1d9765cfc8e88fa2309eeca +TEST= 49 +KEY= 982ab01c39f20648c5417e120b0de61f +PT= cb2b6d353cbbd221e27d2b0fd1d9765cfc8e88fa2309eeca +CT= 4655d1e1bd2de52cd47ce9a3ed4cb783b2c55ec96ecb4afa +TEST= 50 +KEY= 4c5659bfd4beb1cb778420db65c6ace5 +PT= 4655d1e1bd2de52cd47ce9a3ed4cb783b2c55ec96ecb4afa +CT= 90743153640cf4766d9957d11e2ba1a62861dd583a7fdc74 +TEST= 51 +KEY= 21cf0e6eca95106d5fe5fd835fb97091 +PT= 90743153640cf4766d9957d11e2ba1a62861dd583a7fdc74 +CT= b30a94e003ba708d229d41bea3ad2ce5a0a15ff6fec35a38 +TEST= 52 +KEY= 03524fd069383c88ff44a275a17a2aa9 +PT= b30a94e003ba708d229d41bea3ad2ce5a0a15ff6fec35a38 +CT= 8006d4b2da08f872366c9c5a93c11290fd4697abef29d15c +TEST= 53 +KEY= 353ed38afaf92e18020235de4e53fbf5 +PT= 8006d4b2da08f872366c9c5a93c11290fd4697abef29d15c +CT= f24d834551c33d29bd311c53ac72165ed94f61157f419a62 +TEST= 54 +KEY= 880fcfd9568b3846db4d54cb31126197 +PT= f24d834551c33d29bd311c53ac72165ed94f61157f419a62 +CT= 8864aff23fc089b74bfb052d6f82dfe55608a0affd2cee69 +TEST= 55 +KEY= c3f4caf43909e7a38d45f464cc3e8ffe +PT= 8864aff23fc089b74bfb052d6f82dfe55608a0affd2cee69 +CT= 8d3f8977258b796d8a594e139f01503dc12222d444ea1a69 +TEST= 56 +KEY= 49ad84e7a608b79e4c67d6b088d49597 +PT= 8d3f8977258b796d8a594e139f01503dc12222d444ea1a69 +CT= 2859e52393c2e15659d1c54ec4942bfaee5c07e03b82afd2 +TEST= 57 +KEY= 107c41a9629c9c64a23bd150b3563a45 +PT= 2859e52393c2e15659d1c54ec4942bfaee5c07e03b82afd2 +CT= 77705262486d81a8c58b9a422bcff8e2c012a45a429d9ce2 +TEST= 58 +KEY= d5f7dbeb495364866229750af1cba6a7 +PT= 77705262486d81a8c58b9a422bcff8e2c012a45a429d9ce2 +CT= 7520a85a58bf82117022967aef9f50aadd8353b51e80dbaf +TEST= 59 +KEY= a5d54d91a6cc342cbfaa26bfef4b7d08 +PT= 7520a85a58bf82117022967aef9f50aadd8353b51e80dbaf +CT= d0eceab08a6d884f520cc14ed0c0be3a23ce8cd034a99d6d +TEST= 60 +KEY= f7d98cdf760c8a169c64aa6fdbe2e065 +PT= d0eceab08a6d884f520cc14ed0c0be3a23ce8cd034a99d6d +CT= 56d207e0f9d63723ed30d99e78eba55a6b59f12821813c82 +TEST= 61 +KEY= 1ae955410ee72f4cf73d5b47fa63dce7 +PT= 56d207e0f9d63723ed30d99e78eba55a6b59f12821813c82 +CT= e29ce3f4ec3f3fc729629f5d83454fcae2111a9596f08153 +TEST= 62 +KEY= 338bca1c8da26086152c41d26c935db4 +PT= e29ce3f4ec3f3fc729629f5d83454fcae2111a9596f08153 +CT= c917327d4e58cbb4a57d3d20c497fdb3c8ce764e2f9d58f0 +TEST= 63 +KEY= 96f6f73c49359d35dde2379c430e0544 +PT= c917327d4e58cbb4a57d3d20c497fdb3c8ce764e2f9d58f0 +CT= d31b0e34b5b4358578ca450e49be2d70e95453a318f8e32f +TEST= 64 +KEY= ee3cb232008bb04534b6643f5bf6e66b +PT= d31b0e34b5b4358578ca450e49be2d70e95453a318f8e32f +CT= b906ac0698db9f677904c263223ea1c1a1918f13a26d0671 +TEST= 65 +KEY= 9738705122b511849527eb2cf99be01a +PT= b906ac0698db9f677904c263223ea1c1a1918f13a26d0671 +CT= 835f68de0b9e1d46fb625f2a194ba0277bf86b11cad23909 +TEST= 66 +KEY= 6c5a2f7b3bfeb1a3eedf803d3349d913 +PT= 835f68de0b9e1d46fb625f2a194ba0277bf86b11cad23909 +CT= 49b4c0c31975508615b651f21b3093f2617f119a1e1231a3 +TEST= 67 +KEY= 79ec7e8920ce22518fa091a72d5be8b0 +PT= 49b4c0c31975508615b651f21b3093f2617f119a1e1231a3 +CT= fc8ff832ae74bac3f96c9bf88c18b731035d5bdde6d2e136 +TEST= 68 +KEY= 8080e571acd695608cfdca7acb890986 +PT= fc8ff832ae74bac3f96c9bf88c18b731035d5bdde6d2e136 +CT= cf35f94cfe3b10ea288b2a78786e3c474def5e9be7de0068 +TEST= 69 +KEY= a80bcf09d4b8a927c11294e12c5709ee +PT= cf35f94cfe3b10ea288b2a78786e3c474def5e9be7de0068 +CT= 92294cc6ec597e23f191d0dfae278cd2fe34b3657381dfc1 +TEST= 70 +KEY= 599a1fd67a9f25f53f2627845fd6d62f +PT= 92294cc6ec597e23f191d0dfae278cd2fe34b3657381dfc1 +CT= 25ad0c765f2a1d4fdf8c378829f08bdb9736081e50f99312 +TEST= 71 +KEY= 8616285e536fae2ea8102f9a0f2f453d +PT= 25ad0c765f2a1d4fdf8c378829f08bdb9736081e50f99312 +CT= e6d7977a123545c79409530697710f313cafcd2744d87d93 +TEST= 72 +KEY= 121f7b58c41ea11f94bfe2bd4bf738ae +PT= e6d7977a123545c79409530697710f313cafcd2744d87d93 +CT= 96a56153c43381d8a0263651feac76a09e7624dc547a4221 +TEST= 73 +KEY= b2394d093ab2d7bf0ac9c6611f8d7a8f +PT= 96a56153c43381d8a0263651feac76a09e7624dc547a4221 +CT= af122b49729acacc0604c0dcf264f009e441e93d78a3becc +TEST= 74 +KEY= b43d8dd5c8d627b6ee882f5c672ec443 +PT= af122b49729acacc0604c0dcf264f009e441e93d78a3becc +CT= b262c52a9b015676e9f86a40cc1b38451a9bffe437f3c77c +TEST= 75 +KEY= 5dc5e79504cd1ff3f413d0b850dd033f +PT= b262c52a9b015676e9f86a40cc1b38451a9bffe437f3c77c +CT= f57a8a40ff11353acf0c33ff53c713ecc53fc82753d2f9b6 +TEST= 76 +KEY= 92c9d46a570a0c1f312c189f030ffa89 +PT= f57a8a40ff11353acf0c33ff53c713ecc53fc82753d2f9b6 +CT= f49a79b5844a3c6a5ca43de02c1f12b3a262d749a79df495 +TEST= 77 +KEY= ce6de98a7b151eac934ecfd6a4920e1c +PT= f49a79b5844a3c6a5ca43de02c1f12b3a262d749a79df495 +CT= 845ee5059a66862cac6af97d799290dc6bf3fc452b4b338b +TEST= 78 +KEY= 620710f702878e70f8bd33938fd93d97 +PT= 845ee5059a66862cac6af97d799290dc6bf3fc452b4b338b +CT= 6598a23811fd6db7eba6724115a21b362cdc0d0a0496ffb8 +TEST= 79 +KEY= 89a162b617259546d4613e998b4fc22f +PT= 6598a23811fd6db7eba6724115a21b362cdc0d0a0496ffb8 +CT= 1cc6ed23c122b70c5a48190e7df59eb68ad588467c914141 +TEST= 80 +KEY= d3e97bb86ad00bf05eb4b6dff7de836e +PT= 1cc6ed23c122b70c5a48190e7df59eb68ad588467c914141 +CT= f2337c15840f84d88fc3a626ccd3c697559534c9c7cb831f +TEST= 81 +KEY= 5c2add9ea603cd670b21821630150071 +PT= f2337c15840f84d88fc3a626ccd3c697559534c9c7cb831f +CT= fcd7252422261ef6a64bd3629c55026f3408de2522c750ee +TEST= 82 +KEY= fa610efc3a56cf083f295c3312d2509f +PT= fcd7252422261ef6a64bd3629c55026f3408de2522c750ee +CT= 9be992a985859f732cdb655193e3c04d72876fdb9c1cf1e6 +TEST= 83 +KEY= d6ba6bada9b50f454dae33e88ecea179 +PT= 9be992a985859f732cdb655193e3c04d72876fdb9c1cf1e6 +CT= 4c51273db4bf7261e1e778d3d8e2d0e55880d12bac363924 +TEST= 84 +KEY= 375d137e7157dfa0152ee2c322f8985d +PT= 4c51273db4bf7261e1e778d3d8e2d0e55880d12bac363924 +CT= 86768a5eba51023db609e5ed00d253a3a2af682c42cd6836 +TEST= 85 +KEY= 8154f69371858c03b7818aef6035f06b +PT= 86768a5eba51023db609e5ed00d253a3a2af682c42cd6836 +CT= 32807d088201b1bacd620b7c9101cdf4fe18452323021a8b +TEST= 86 +KEY= 4c36fdefe08441f74999cfcc4337eae0 +PT= 32807d088201b1bacd620b7c9101cdf4fe18452323021a8b +CT= d0df8395b9634d3c84ee62db9fd93df8216455100208f37f +TEST= 87 +KEY= c8d89f347f5d7c0f68fd9adc413f199f +PT= d0df8395b9634d3c84ee62db9fd93df8216455100208f37f +CT= a3bb5e61df6e1199b0cbdb2f0fdaa844ee93f985860aa486 +TEST= 88 +KEY= 7813441b7087d44b866e6359c735bd19 +PT= a3bb5e61df6e1199b0cbdb2f0fdaa844ee93f985860aa486 +CT= a44524e01e251832797024262ed16c39901f5a69ba76a3c1 +TEST= 89 +KEY= 0163603d5e56b872167139307d431ed8 +PT= a44524e01e251832797024262ed16c39901f5a69ba76a3c1 +CT= 95d4d6650dea2ce793218144cea518ab030ff75287f4bdbe +TEST= 90 +KEY= 9242e17990f3a0d9157ece62fab7a366 +PT= 95d4d6650dea2ce793218144cea518ab030ff75287f4bdbe +CT= c02b3b0a5b7e3dc34112a580ff58fe066cfd6969e3ce41c7 +TEST= 91 +KEY= d35044f96fab5edf7983a70b1979e2a1 +PT= c02b3b0a5b7e3dc34112a580ff58fe066cfd6969e3ce41c7 +CT= 61f6c6a1d42128ddb5d8280c02ce8ae89dc4579bcfeabec7 +TEST= 92 +KEY= 66886cf56d65d437e447f090d6935c66 +PT= 61f6c6a1d42128ddb5d8280c02ce8ae89dc4579bcfeabec7 +CT= c72d6f7194829502f560055bf4cb36b142ae458091870e15 +TEST= 93 +KEY= 93e869ae99aee286a6e9b51047145273 +PT= c72d6f7194829502f560055bf4cb36b142ae458091870e15 +CT= 26cb631cd75df9d7dfcb54368ed95619bc630a0d07c7d4ed +TEST= 94 +KEY= 4c233d981777b49f1a8abf1d40d3869e +PT= 26cb631cd75df9d7dfcb54368ed95619bc630a0d07c7d4ed +CT= 360e81505602968dbd73e5bb6c30481d22906b2b24e4a8c4 +TEST= 95 +KEY= f150d8237b47fc82381ad43664372e5a +PT= 360e81505602968dbd73e5bb6c30481d22906b2b24e4a8c4 +CT= 1c8872207e3bcd6ce928a7c9d1f4ccf82a1eccfdc87f50a7 +TEST= 96 +KEY= 18787feaaab3307a120418cbac487efd +PT= 1c8872207e3bcd6ce928a7c9d1f4ccf82a1eccfdc87f50a7 +CT= 465b5c3764fa231145ba17e3fe9d72a210ab665bc4bb3d63 +TEST= 97 +KEY= 5dc26809542e42d802af7e9068f3439e +PT= 465b5c3764fa231145ba17e3fe9d72a210ab665bc4bb3d63 +CT= c6fd6fd0b63ddc6665d0063d22a88369d1794e50ac3c8d33 +TEST= 98 +KEY= 38126e347686c1b1d3d630c0c4cfcead +PT= c6fd6fd0b63ddc6665d0063d22a88369d1794e50ac3c8d33 +CT= 7062d6503efa1f12ef25066f2ed2ee0ade81c03fd83e763f +TEST= 99 +KEY= d737685b58542fbb0d57f0ff1cf1b892 +PT= 7062d6503efa1f12ef25066f2ed2ee0ade81c03fd83e763f +CT= 58780021f848bdd6336f0175c582b1ecf70472406957c2ff +TEST= 100 +KEY= e458692e9dd69e57fa5382bf75a67a6d +PT= 58780021f848bdd6336f0175c582b1ecf70472406957c2ff +CT= 8e57139523252094bdf75ff2749a13d752711d6fcf1287a2 +TEST= 101 +KEY= 59af36dce94c8d80a8229fd0bab4fdcf +PT= 8e57139523252094bdf75ff2749a13d752711d6fcf1287a2 +CT= 36e792ea4fd1014c62289cb6fe3a85088d2987fed30e4bf9 +TEST= 102 +KEY= 3b87aa6a17760888250b182e69bab636 +PT= 36e792ea4fd1014c62289cb6fe3a85088d2987fed30e4bf9 +CT= 38addc1952bac362f1d8364d7c49e9a96180208f3bc37d71 +TEST= 103 +KEY= ca5f9c276b3fe121448b38a15279cb47 +PT= 38addc1952bac362f1d8364d7c49e9a96180208f3bc37d71 +CT= b0aa7f319be70203404f672496669834d64b8179ec2fcdcb +TEST= 104 +KEY= 8a10fb03fd59791592c0b9d8be56068c +PT= b0aa7f319be70203404f672496669834d64b8179ec2fcdcb +CT= 82fe001fa24aaf5cb812615aa0e89aff56cd5a5c5f230a0b +TEST= 105 +KEY= 32029a595db1e3eac40de384e1750c87 +PT= 82fe001fa24aaf5cb812615aa0e89aff56cd5a5c5f230a0b +CT= 1f140724d772eb109ee5aef5ae631e1c51baa95fcf4afa7e +TEST= 106 +KEY= ace734acf3d2fdf695b74adb2e3ff6f9 +PT= 1f140724d772eb109ee5aef5ae631e1c51baa95fcf4afa7e +CT= aa30c87b92295222a71a52ff65fc31157f37ecc89b362109 +TEST= 107 +KEY= 0bfd6653962ecce3ea80a613b509d7f0 +PT= aa30c87b92295222a71a52ff65fc31157f37ecc89b362109 +CT= 6f27f2f901df2b727d58c803232943b45a8b9f174f4bb6e9 +TEST= 108 +KEY= 76a5ae50b5078f57b00b3904fa426119 +PT= 6f27f2f901df2b727d58c803232943b45a8b9f174f4bb6e9 +CT= 4893f3fc88cb7db7858df502156a273a385fc1e7e9d40676 +TEST= 109 +KEY= f3285b52a06da86d8854f8e31396676f +PT= 4893f3fc88cb7db7858df502156a273a385fc1e7e9d40676 +CT= 1086f787b1533254e371474a7505db08bff323cdd0c33040 +TEST= 110 +KEY= 10591c18d568736537a7db2ec355572f +PT= 1086f787b1533254e371474a7505db08bff323cdd0c33040 +CT= 01de52b082c43e7e5805dce89a1f0691384f0f583bb4d0d7 +TEST= 111 +KEY= 485cc0f04f7775f40fe8d476f8e187f8 +PT= 01de52b082c43e7e5805dce89a1f0691384f0f583bb4d0d7 +CT= 69dc90b00a15c9d06a32b7932ad8a7e9873e3a68159d4e9e +TEST= 112 +KEY= 226e776365afd21d88d6ee1eed7cc966 +PT= 69dc90b00a15c9d06a32b7932ad8a7e9873e3a68159d4e9e +CT= 1932e2840db5c36328fa2be6a7e3f1d7adaf91ffe8393cc3 +TEST= 113 +KEY= 0a945c85c24c23ca25797fe10545f5a5 +PT= 1932e2840db5c36328fa2be6a7e3f1d7adaf91ffe8393cc3 +CT= f749c5c75f1879a5d2c423d2b237188f9d3b1c96ec489770 +TEST= 114 +KEY= d8507f57707b3b45b8426377e90d62d5 +PT= f749c5c75f1879a5d2c423d2b237188f9d3b1c96ec489770 +CT= 4861c881865fc3bc9357ff93530fc57da9f9851210731f7e +TEST= 115 +KEY= 4b0780c42374fe3811bbe665f97e7dab +PT= 4861c881865fc3bc9357ff93530fc57da9f9851210731f7e +CT= 6268bd2e3f9ce9ca3350a257ff7237a165662721da04be30 +TEST= 116 +KEY= 78572293dc06c99974ddc144237ac39b +PT= 6268bd2e3f9ce9ca3350a257ff7237a165662721da04be30 +CT= 03ef0a18a195fa3937c35d838e294d828dee7bdd8d7179b8 +TEST= 117 +KEY= 4f947f10522f841bf933ba99ae0bba23 +PT= 03ef0a18a195fa3937c35d838e294d828dee7bdd8d7179b8 +CT= fbee916c267c4a1aad7fb3ed602f67810a980ea22cb21cde +TEST= 118 +KEY= e2ebccfd3200e39af3abb43b82b9a6fd +PT= fbee916c267c4a1aad7fb3ed602f67810a980ea22cb21cde +CT= acbe03f3abc59515d1ff07c4f027f5926417ebe727769f9e +TEST= 119 +KEY= 3314cb39c227160897bc5fdca5cf3963 +PT= acbe03f3abc59515d1ff07c4f027f5926417ebe727769f9e +CT= c804dee4a6c907f3bcc5ff7185ef61aeadced55c3de28648 +TEST= 120 +KEY= 8fd1344847c877a63a728a80982dbf2b +PT= c804dee4a6c907f3bcc5ff7185ef61aeadced55c3de28648 +CT= e7b4bfccfcfc9f6677d978816c2144c4796e0fbbbbf786db +TEST= 121 +KEY= f8084cc92be93362431c853b23da39f0 +PT= e7b4bfccfcfc9f6677d978816c2144c4796e0fbbbbf786db +CT= d195af69f8999ab756f7b25581992707dfe03500ea8bc0b0 +TEST= 122 +KEY= aefffe9caa7014659cfcb03bc951f940 +PT= d195af69f8999ab756f7b25581992707dfe03500ea8bc0b0 +CT= 5ccc7fdfad07d8807579b26292f2dfef7ffbfac460946cca +TEST= 123 +KEY= db864cfe3882cb8ae3074affa9c5958a +PT= 5ccc7fdfad07d8807579b26292f2dfef7ffbfac460946cca +CT= f2abcf2918310c11c797e74cdc66586ab12e7b2d3ed191f3 +TEST= 124 +KEY= 1c11abb2e4e493e0522931d297140479 +PT= f2abcf2918310c11c797e74cdc66586ab12e7b2d3ed191f3 +CT= 6e12a1ce5441fa8aba46382b1038a4f28c9854f8b9c3f1e7 +TEST= 125 +KEY= a6579399f4dc3712deb1652a2ed7f59e +PT= 6e12a1ce5441fa8aba46382b1038a4f28c9854f8b9c3f1e7 +CT= 4374d0da9297a2f1b4e0b3c010e285e417185289994830b7 +TEST= 126 +KEY= 12b72059e43eb2f6c9a937a3b79fc529 +PT= 4374d0da9297a2f1b4e0b3c010e285e417185289994830b7 +CT= 4182fc7ccc5513fcf2f11c4acdadc8bc11aac933741291c0 +TEST= 127 +KEY= e0463c1329937a4ad803fe90c38d54e9 +PT= 4182fc7ccc5513fcf2f11c4acdadc8bc11aac933741291c0 +CT= f55af79d9a21970ef4286729d07fbf7dfa52fd0300c218c5 +TEST= 128 +KEY= 146e5b3af9ecc53722510393c34f4c2c +PT= f55af79d9a21970ef4286729d07fbf7dfa52fd0300c218c5 +CT= 3c35a82cb69332576a19e62026166566ccd523e3c98ebc6b +TEST= 129 +KEY= 7e77bd1adffaa051ee8420700ac1f047 +PT= 3c35a82cb69332576a19e62026166566ccd523e3c98ebc6b +CT= 8fa94e9bf1789fdb39ffdc7f084a4b0d09a1f011d30c8c56 +TEST= 130 +KEY= 47886165d7b0eb5ce725d061d9cd7c11 +PT= 8fa94e9bf1789fdb39ffdc7f084a4b0d09a1f011d30c8c56 +CT= d64066e50e714ac7ccc8dd1e2786ae720afd2cff82490eca +TEST= 131 +KEY= 8b40bc7bf036452eedd8fc9e5b8472db +PT= d64066e50e714ac7ccc8dd1e2786ae720afd2cff82490eca +CT= b4b29b20fa7da5aafebeb56ae8d06d29297be676c312eb17 +TEST= 132 +KEY= 75fe091118e62807c4a31ae8989699cc +PT= b4b29b20fa7da5aafebeb56ae8d06d29297be676c312eb17 +CT= 05c1e08983c3e3f98b7edb35f9535afd5d8411e3c121a3d9 +TEST= 133 +KEY= fe80d224e1b572fa99270b0b59b73a15 +PT= 05c1e08983c3e3f98b7edb35f9535afd5d8411e3c121a3d9 +CT= 4a56e53b6ecaf99117b6493151f252754c6c8c0d3eefc8fd +TEST= 134 +KEY= e9369b15b047208fd54b87066758f2e8 +PT= 4a56e53b6ecaf99117b6493151f252754c6c8c0d3eefc8fd +CT= c1215861398fd53ed1ab809a28993a3c640e6d062172c336 +TEST= 135 +KEY= 389d1b8f98de1ab3b145ea00462a31de +PT= c1215861398fd53ed1ab809a28993a3c640e6d062172c336 +CT= 05738d2e5df86fea0c0cdef6cce4975c75af4d0e87bed2a7 +TEST= 136 +KEY= 3491c579543a8defc4eaa70ec194e379 +PT= 05738d2e5df86fea0c0cdef6cce4975c75af4d0e87bed2a7 +CT= a6a1699aa9e5475e1f1140c5665ad2b81657d40a84807f96 +TEST= 137 +KEY= 2b8085bc32605f57d2bd730445149cef +PT= a6a1699aa9e5475e1f1140c5665ad2b81657d40a84807f96 +CT= 237f3241da716abdc11bc173ff75080a9f1dc3ce3fdd2eb8 +TEST= 138 +KEY= ea9b44cfcd15575d4da0b0ca7ac9b257 +PT= 237f3241da716abdc11bc173ff75080a9f1dc3ce3fdd2eb8 +CT= 05376cb19b820dc0fcf6c0fe58a1b712f1c0bf7c91f3303c +TEST= 139 +KEY= 166d843195b4e04fbc600fb6eb3a826b +PT= 05376cb19b820dc0fcf6c0fe58a1b712f1c0bf7c91f3303c +CT= 4b41b4ece13ea8cb8b339d5fd5a86ab4e42cb7a018c88849 +TEST= 140 +KEY= 9d5e196e401c8afb584cb816f3f20a22 +PT= 4b41b4ece13ea8cb8b339d5fd5a86ab4e42cb7a018c88849 +CT= 0c3ec15f6b9deecfe2391eed77abfd1590975f559deb51ad +TEST= 141 +KEY= 7f67078337b777eec8dbe7436e195b8f +PT= 0c3ec15f6b9deecfe2391eed77abfd1590975f559deb51ad +CT= e1df029915c180b4fb4a90c76046d206567e932a87041833 +TEST= 142 +KEY= 842d974457f1a5e89ea57469e91d43bc +PT= e1df029915c180b4fb4a90c76046d206567e932a87041833 +CT= 3e4f869f36d5a06ee49c6e1f5f400c9c197f1e676979a7d8 +TEST= 143 +KEY= 60b1f95b08b1a97487da6a0e8064e464 +PT= 3e4f869f36d5a06ee49c6e1f5f400c9c197f1e676979a7d8 +CT= 0821324046932a47e845d713e565d139f4f1c5106ba3978a +TEST= 144 +KEY= 88f42e48edd4784d732baf1eebc773ee +PT= 0821324046932a47e845d713e565d139f4f1c5106ba3978a +CT= f79be741bc5f7f5ba0136606e4024ae4b1c23ed0932a3dc8 +TEST= 145 +KEY= 28e7484e09d632a9c2e991ce78ed4e26 +PT= f79be741bc5f7f5ba0136606e4024ae4b1c23ed0932a3dc8 +CT= 927b36b3cd14bad2b7b32537c31875e10ac9286d22d4c925 +TEST= 146 +KEY= 9f546d79cace4748c820b9a35a398703 +PT= 927b36b3cd14bad2b7b32537c31875e10ac9286d22d4c925 +CT= 94aded3e2f770c06601c58e3c18014780fa99320f1333023 +TEST= 147 +KEY= ff48359a0b4e5330c7892a83ab0ab720 +PT= 94aded3e2f770c06601c58e3c18014780fa99320f1333023 +CT= 4456c3a942c4ccd4727428fd303803db672b8dd2ac711e92 +TEST= 148 +KEY= 8d3c1d673b7650eba0a2a751077ba9b2 +PT= 4456c3a942c4ccd4727428fd303803db672b8dd2ac711e92 +CT= 392a273e215380ef5f490aaafead4f623caaea5378938b32 +TEST= 149 +KEY= d27517cdc5db1f899c084d027fe82280 +PT= 392a273e215380ef5f490aaafead4f623caaea5378938b32 +CT= 967f28ba4ba116bc8842d7d44370f6e6c4172de882c971b2 +TEST= 150 +KEY= 5a37c01986abe96f581f60eafd215332 +PT= 967f28ba4ba116bc8842d7d44370f6e6c4172de882c971b2 +CT= cc4e1f2e20ac38a51a3f3a06bf088c4ee821c3f1ec25e6ad +TEST= 151 +KEY= 4008fa1f39a36521b03ea31b1104b59f +PT= cc4e1f2e20ac38a51a3f3a06bf088c4ee821c3f1ec25e6ad +CT= f03f60b41ba969f80264506ecbc7dfd56829746ceecf270c +TEST= 152 +KEY= 426caa71f264baf4d817d777ffcb9293 +PT= f03f60b41ba969f80264506ecbc7dfd56829746ceecf270c +CT= 513eceee000748c87e540a469753bee735445efdd7d4436f +TEST= 153 +KEY= 3c38a03765370413ed53898a281fd1fc +PT= 513eceee000748c87e540a469753bee735445efdd7d4436f +CT= 29494ec69d7f16ebcc180998fb67c93d0b1e3257214c20b8 +TEST= 154 +KEY= f020a9af9e50cd2ee64dbbdd0953f144 +PT= 29494ec69d7f16ebcc180998fb67c93d0b1e3257214c20b8 +CT= cd7ab45f1ddb91069c4b4c8f6743a28bec3b6957d992b8fa +TEST= 155 +KEY= 6c6be520f9136fa50a76d28ad0c149be +PT= cd7ab45f1ddb91069c4b4c8f6743a28bec3b6957d992b8fa +CT= 984b7b0591b245659dedf8b6a062b05da126166b6c5af9f1 +TEST= 156 +KEY= f1861d965971dff8ab50c4e1bc9bb04f +PT= 984b7b0591b245659dedf8b6a062b05da126166b6c5af9f1 +CT= ab4c9822c13cc10b1946dea63f6cc347ea343d7658aa0a64 +TEST= 157 +KEY= e8c0c330661d1cbf4164f997e431ba2b +PT= ab4c9822c13cc10b1946dea63f6cc347ea343d7658aa0a64 +CT= 09180a2947aea6e243617400cb5a501db8b0feff292a9fe1 +TEST= 158 +KEY= aba1b730ad474ca2f9d40768cd1b25ca +PT= 09180a2947aea6e243617400cb5a501db8b0feff292a9fe1 +CT= 813af6cc995858989513bd3c80ee60a0de9c31f94cbe8c47 +TEST= 159 +KEY= 3eb20a0c2da92c022748369181a5a98d +PT= 813af6cc995858989513bd3c80ee60a0de9c31f94cbe8c47 +CT= 4af590b5fdb98d211e2d6b9089f256ddd59316032a20983c +TEST= 160 +KEY= 209f619ca45b7adff2db2092ab8531b1 +PT= 4af590b5fdb98d211e2d6b9089f256ddd59316032a20983c +CT= d62f0678fe79c78980e47a6ec8220024ff393741e151928f +TEST= 161 +KEY= a07b1bf26c797afb0de217d34ad4a33e +PT= d62f0678fe79c78980e47a6ec8220024ff393741e151928f +CT= 252fc79119d739dbed17f9280a02d6256ab88b6876191826 +TEST= 162 +KEY= 4d6ce2da667bacde675a9cbb3ccdbb18 +PT= 252fc79119d739dbed17f9280a02d6256ab88b6876191826 +CT= d086365a80719c99d64b711c14570e2b460d37b855a96f90 +TEST= 163 +KEY= 9b2793c6722ca2f52157ab036964d488 +PT= d086365a80719c99d64b711c14570e2b460d37b855a96f90 +CT= ce0843d36ecffa691a468a10859377f7e693f7e22ed3cbbf +TEST= 164 +KEY= 816119d6f7bfd502c7c45ce147b71f37 +PT= ce0843d36ecffa691a468a10859377f7e693f7e22ed3cbbf +CT= a660a30e977d76b606f69c0f06a4f29e1dad7f64a962f16e +TEST= 165 +KEY= 879785d9f11b279cda692385eed5ee59 +PT= a660a30e977d76b606f69c0f06a4f29e1dad7f64a962f16e +CT= acecd493923e689dda7575c0165a70d3b82ad0adfa48ae60 +TEST= 166 +KEY= 5de2f019e741574f6243f328149d4039 +PT= acecd493923e689dda7575c0165a70d3b82ad0adfa48ae60 +CT= a27980fc57ef4eb58bfc3a3acab02926ef2ac5590682e93f +TEST= 167 +KEY= d61eca232df17e698d693671121fa906 +PT= a27980fc57ef4eb58bfc3a3acab02926ef2ac5590682e93f +CT= 2ac7f0f892e8ad4b1d5a914d6bd14db9fd663cf2822defcc +TEST= 168 +KEY= cb445b6e462033d0700f0a83903246ca +PT= 2ac7f0f892e8ad4b1d5a914d6bd14db9fd663cf2822defcc +CT= e2fbbe209ee7f1a1e51114735b90a00c33f288b9d71ed0f3 +TEST= 169 +KEY= 2e554f1d1db093dc43fd823a472c9639 +PT= e2fbbe209ee7f1a1e51114735b90a00c33f288b9d71ed0f3 +CT= e856dfddad3b58894ef87b10ea0f11413d0348740b81d6a0 +TEST= 170 +KEY= 60ad340df7bf829d7efeca4e4cad4099 +PT= e856dfddad3b58894ef87b10ea0f11413d0348740b81d6a0 +CT= 8620d1910ecd27129a518ef3ce3a4b06e0500551ba85050b +TEST= 171 +KEY= fafcbafe3985c99b9eaecf1ff6284592 +PT= 8620d1910ecd27129a518ef3ce3a4b06e0500551ba85050b +CT= 8857e5cacb862e2a31c082d044ff9703975dcfd846fde6e5 +TEST= 172 +KEY= cb3c382e7d7a5e9809f300c7b0d5a377 +PT= 8857e5cacb862e2a31c082d044ff9703975dcfd846fde6e5 +CT= 75b03b344adcdebb3b8c81e505b551f6505ef226c51b940f +TEST= 173 +KEY= f0b0b9cb78cf0f6e59adf2e175ce3778 +PT= 75b03b344adcdebb3b8c81e505b551f6505ef226c51b940f +CT= 86810f2c7a2e1892cf6540ed0ac36555d4f76d7663ec0942 +TEST= 174 +KEY= 3fd5f926720c6a3b8d5a9f9716223e3a +PT= 86810f2c7a2e1892cf6540ed0ac36555d4f76d7663ec0942 +CT= 065631ffab5d7c5f3defaea5b0b2df5e935bbd40faef91a5 +TEST= 175 +KEY= 023a5783c2beb5651e0122d7eccdaf9f +PT= 065631ffab5d7c5f3defaea5b0b2df5e935bbd40faef91a5 +CT= 61c1e9c85c3148c20850fe3ac67afaf19d3082963ea3db1e +TEST= 176 +KEY= 0a6aa9b904c44f948331a041d26e7481 +PT= 61c1e9c85c3148c20850fe3ac67afaf19d3082963ea3db1e +CT= bfe1ed0ed8e3de16c71d0f0971b7aec138b5070d613b44c7 +TEST= 177 +KEY= cd77a6b07573e155bb84a74cb3553046 +PT= bfe1ed0ed8e3de16c71d0f0971b7aec138b5070d613b44c7 +CT= 60714947502b2c145e70c44fcf1c4644a995851537f26c07 +TEST= 178 +KEY= 930762ffba6fa7111211225984a75c41 +PT= 60714947502b2c145e70c44fcf1c4644a995851537f26c07 +CT= 7cc7964214ef9397161b6cace18df904a6826fb59fb10694 +TEST= 179 +KEY= 851c0e535be25e15b4934dec1b165ad5 +PT= 7cc7964214ef9397161b6cace18df904a6826fb59fb10694 +CT= d8e29e3e7dab514c2f5754382f716d55e0665246a33035b3 +TEST= 180 +KEY= aa4b5a6b7493334054f51faab8266f66 +PT= d8e29e3e7dab514c2f5754382f716d55e0665246a33035b3 +CT= 3f6a3733cfb7fb32d11c9d596523fc01bf72fae58e54822a +TEST= 181 +KEY= 7b57c73211b0cf41eb87e54f3672ed4c +PT= 3f6a3733cfb7fb32d11c9d596523fc01bf72fae58e54822a +CT= e887697e987afe9be3c5db24f422c0b3a715a495ed3ddd5e +TEST= 182 +KEY= 98921c16e5920ff24c9241dadb4f3012 +PT= e887697e987afe9be3c5db24f422c0b3a715a495ed3ddd5e +CT= d7a13dc2cbfe50e4582d94ea9d2aa610c6820dc014b676d7 +TEST= 183 +KEY= c0bf88fc78b8a9e28a104c1acff946c5 +PT= d7a13dc2cbfe50e4582d94ea9d2aa610c6820dc014b676d7 +CT= b77d67809c29b39e0569f50727526ec31c3f22e5c4255da7 +TEST= 184 +KEY= c5d67dfb5feac721962f6eff0bdc1b62 +PT= b77d67809c29b39e0569f50727526ec31c3f22e5c4255da7 +CT= 4b2f4109026995866feb0552e24175e92d5ea43b62b5d0f3 +TEST= 185 +KEY= aa3d78a9bdabb2c8bb71cac46969cb91 +PT= 4b2f4109026995866feb0552e24175e92d5ea43b62b5d0f3 +CT= a81ea4a968919e2c4fd51bdb5713684680406b8efa4ed8ad +TEST= 186 +KEY= e5e86372eab8da8e3b31a14a9327133c +PT= a81ea4a968919e2c4fd51bdb5713684680406b8efa4ed8ad +CT= e452a314811f43889f6c7dc5f54d1bbcb8493cc81dc20bcb +TEST= 187 +KEY= 7a841eb71ff5c13283789d828ee518f7 +PT= e452a314811f43889f6c7dc5f54d1bbcb8493cc81dc20bcb +CT= 5f415ab05ef123aa76af0dd660f792b49ef4831bc7b20207 +TEST= 188 +KEY= 0c2b13617f0253861d8c1e9949571af0 +PT= 5f415ab05ef123aa76af0dd660f792b49ef4831bc7b20207 +CT= 6ef3e9b13147ab2911f7419cedba358f98a3ed8c8f8ea2fa +TEST= 189 +KEY= 1ddc52fd92b86609852ff315c6d9b80a +PT= 6ef3e9b13147ab2911f7419cedba358f98a3ed8c8f8ea2fa +CT= 3edef598289f48115a8ad8c78aed280087ee92ef20e13887 +TEST= 190 +KEY= 47568a3a18554e0902c161fae638808d +PT= 3edef598289f48115a8ad8c78aed280087ee92ef20e13887 +CT= 2bc7bedf76507a0a98530a6de27a658090527ebc64e88796 +TEST= 191 +KEY= df058057fa2f2b8992931f4682d0071b +PT= 2bc7bedf76507a0a98530a6de27a658090527ebc64e88796 +CT= 2171cf2f30e15244097e8322fffff3c2963bbc8ca7d636d8 +TEST= 192 +KEY= d67b037505d0d84b04a8a3ca250631c3 +PT= 2171cf2f30e15244097e8322fffff3c2963bbc8ca7d636d8 +CT= ab7d80d9fa0ad8d35834301e225c7e6a73ff0461021429ff +TEST= 193 +KEY= 8e4f336b278ca6217757a7ab2712183c +PT= ab7d80d9fa0ad8d35834301e225c7e6a73ff0461021429ff +CT= 69ee14371ae08290f6d581f6e580670ba490e8997289696e +TEST= 194 +KEY= 789ab29dc20cc12ad3c74f32559b7152 +PT= 69ee14371ae08290f6d581f6e580670ba490e8997289696e +CT= 52bf857ac62c3107957f73812163ae8d22e14e7cc26691cd +TEST= 195 +KEY= ede5c11ce36f6fa7f126014e97fde09f +PT= 52bf857ac62c3107957f73812163ae8d22e14e7cc26691cd +CT= b5ae06cbdc2a0fd028ca348934e06010af81e370d9595f01 +TEST= 196 +KEY= c52ff595d78f0fb75ea7e23e4ea4bf9e +PT= b5ae06cbdc2a0fd028ca348934e06010af81e370d9595f01 +CT= 7349e15ac48f29ae5bfec3c11f4edbc04ff84bef1b86c2e6 +TEST= 197 +KEY= 9ed13654c8c1d477115fa9d155227d78 +PT= 7349e15ac48f29ae5bfec3c11f4edbc04ff84bef1b86c2e6 +CT= 2b2a948a060cf4d10d7fe3e0349fccbe4dcf79cfe65665a2 +TEST= 198 +KEY= 93aed5b4fc5e18c95c90d01eb37418da +PT= 2b2a948a060cf4d10d7fe3e0349fccbe4dcf79cfe65665a2 +CT= 1874967ad65933759f97f02d544df83d5c181d27c44cb459 +TEST= 199 +KEY= 0c392599a813e0f40088cd397738ac83 +PT= 1874967ad65933759f97f02d544df83d5c181d27c44cb459 +CT= cd7d981f3c433b7324f7b6496db1c7575b65545aa7edb5f4 +TEST= 200 +KEY= 28ce93d0c5a227a35bed9963d0d51977 +PT= cd7d981f3c433b7324f7b6496db1c7575b65545aa7edb5f4 +CT= e2cfdb826dbc2b031e0608a0e9755d206403bef449a9276e +TEST= 201 +KEY= 36c89b702cd77a833fee2797997c3e19 +PT= e2cfdb826dbc2b031e0608a0e9755d206403bef449a9276e +CT= bd1b800f985d72223094a7359c3f322564287b49001ec450 +TEST= 202 +KEY= 065c3c45b0e848a65bc65cde9962fa49 +PT= bd1b800f985d72223094a7359c3f322564287b49001ec450 +CT= f75397572f5a60106a57647ad02302becab676a8bf88e244 +TEST= 203 +KEY= 6c0b583f60cb4a1891702a7626ea180d +PT= f75397572f5a60106a57647ad02302becab676a8bf88e244 +CT= 8fed3e66466a9c3a4212fedffe6cfa26ea89b3d79d959a77 +TEST= 204 +KEY= 2e19a6e09ea7b03e7bf999a1bb7f827a +PT= 8fed3e66466a9c3a4212fedffe6cfa26ea89b3d79d959a77 +CT= 7d77bd12a4ff7f3ef1ad2bc14fc12a073ff49e1dcdb7606a +TEST= 205 +KEY= dfb48d21d1669a39440d07bc76c8e210 +PT= 7d77bd12a4ff7f3ef1ad2bc14fc12a073ff49e1dcdb7606a +CT= 78375f184dfb9fae7636e3dff17c0ee7fca5a6aff3a7377d +TEST= 206 +KEY= a9826efe201a94deb8a8a113856fd56d +PT= 78375f184dfb9fae7636e3dff17c0ee7fca5a6aff3a7377d +CT= 61957400a099fd41dc0226ab5523eac0457cafdd1e004c65 +TEST= 207 +KEY= 7580485575397e1efdd40ece9b6f9908 +PT= 61957400a099fd41dc0226ab5523eac0457cafdd1e004c65 +CT= e78f2188e3916224e1cd9b006576e2a5c77342d59f7a6497 +TEST= 208 +KEY= 944dd355104f9cbb3aa74c1b0415fd9f +PT= e78f2188e3916224e1cd9b006576e2a5c77342d59f7a6497 +CT= e5d8bbaebc53b93459be318a8bea22c0fd5217ecd7cb525e +TEST= 209 +KEY= cdf3e2df9ba5be7bc7f55bf7d3deafc1 +PT= e5d8bbaebc53b93459be318a8bea22c0fd5217ecd7cb525e +CT= c4e2c69e412d9078a853b19091406648f1f529d554afb9fd +TEST= 210 +KEY= 65a0534f0ae5d833360072228771163c +PT= c4e2c69e412d9078a853b19091406648f1f529d554afb9fd +CT= dcbb11e2b5ed3f1ec8a1afc2a98ce56c0b7fdf50c5a0742a +TEST= 211 +KEY= ad01fc8da3693d5f3d7fad7242d16216 +PT= dcbb11e2b5ed3f1ec8a1afc2a98ce56c0b7fdf50c5a0742a +CT= 112691f99205a59eaedfbc482f2cf05fd8368c19dab53a02 +TEST= 212 +KEY= 03de40c58c45cd00e549216b98645814 +PT= 112691f99205a59eaedfbc482f2cf05fd8368c19dab53a02 +CT= b98f5348fbdb8850702760a5536bb6a03affe51523859208 +TEST= 213 +KEY= 73f92060df2e7ba0dfb6c47ebbe1ca1c +PT= b98f5348fbdb8850702760a5536bb6a03affe51523859208 +CT= 391321e5d08daaf0d8bf62b3922183a1637b289cc9369145 +TEST= 214 +KEY= ab4642d34d0ff801bccdece272d75b59 +PT= 391321e5d08daaf0d8bf62b3922183a1637b289cc9369145 +CT= 4a8dabaaa89da9c68a894c68c0b5f80c84faf409abd38bf5 +TEST= 215 +KEY= 21cf0ebb8dba000d383718ebd904d0ac +PT= 4a8dabaaa89da9c68a894c68c0b5f80c84faf409abd38bf5 +CT= a63ee426b5baf8a923c3ae86b670d9f84c5da9168d85fa30 +TEST= 216 +KEY= 020ca03d3bcad9f5746ab1fd54812a9c +PT= a63ee426b5baf8a923c3ae86b670d9f84c5da9168d85fa30 +CT= 271fdd7b5304cba8c8f057347b73bfb8328cb3f4916c7fe1 +TEST= 217 +KEY= cafcf70940b9664d46e60209c5ed557d +PT= 271fdd7b5304cba8c8f057347b73bfb8328cb3f4916c7fe1 +CT= 696c5ea1514a112b39e82ec46d4f4c855b33612de4a065b6 +TEST= 218 +KEY= f314d9cd2df62ac81dd56324214d30cb +PT= 696c5ea1514a112b39e82ec46d4f4c855b33612de4a065b6 +CT= cd9ce22f778ddd704fb725de9b8b3dff5faa44dcba88b64c +TEST= 219 +KEY= bca3fc13b67d1737427f27f89bc58687 +PT= cd9ce22f778ddd704fb725de9b8b3dff5faa44dcba88b64c +CT= 40ebbc183610c3ba298b5dacf7ab516a043baa0a5c0eea59 +TEST= 220 +KEY= 9528a1bf41d6465d46448df2c7cb6cde +PT= 40ebbc183610c3ba298b5dacf7ab516a043baa0a5c0eea59 +CT= 3e613fa08753e696af604b3ef6dff2b009a99b3b3be3c14a +TEST= 221 +KEY= 3a48ea81b709b4ed4fed16c9fc28ad94 +PT= 3e613fa08753e696af604b3ef6dff2b009a99b3b3be3c14a +CT= bd77dc9ecced3c5732f87eea3fda440a11dbf50d1741a506 +TEST= 222 +KEY= 08b0946b88d3f0e75e36e3c4eb690892 +PT= bd77dc9ecced3c5732f87eea3fda440a11dbf50d1741a506 +CT= 26a713eed61547d33ae3c86aaa0de12bee6954461d49b738 +TEST= 223 +KEY= 32535c0122de11ccb05fb782f620bfaa +PT= 26a713eed61547d33ae3c86aaa0de12bee6954461d49b738 +CT= 538de1a9f9b916f1234a3cafc773caf7f4b03cdbccae8e75 +TEST= 224 +KEY= 111960aee5addb3b44ef8b593a8e31df +PT= 538de1a9f9b916f1234a3cafc773caf7f4b03cdbccae8e75 +CT= ccbd97c81046975316cab0a99229e8c1f6b95b5413276595 +TEST= 225 +KEY= 07d3d007778433fab256d00d29a9544a +PT= ccbd97c81046975316cab0a99229e8c1f6b95b5413276595 +CT= e7bc08a34db767ff679d61170934117fd431729d9111c4f9 +TEST= 226 +KEY= 604eb1107eb022856667a290b8b890b3 +PT= e7bc08a34db767ff679d61170934117fd431729d9111c4f9 +CT= 3d1696b9b05460f46b5b7ea3f02d9d1503d337355fca582f +TEST= 227 +KEY= 0b15cfb38e9dbf9065b495a5e772c89c +PT= 3d1696b9b05460f46b5b7ea3f02d9d1503d337355fca582f +CT= 3831023d9a43f0e1d161df230b9ad4996a87a70b4d238036 +TEST= 228 +KEY= da74109085076b090f3332aeaa5148aa +PT= 3831023d9a43f0e1d161df230b9ad4996a87a70b4d238036 +CT= a6fbc9fc370e4e8f2da1658e8a14f6b966ce123f4864a701 +TEST= 229 +KEY= f7d5751e0f139db069fd2091e235efab +PT= a6fbc9fc370e4e8f2da1658e8a14f6b966ce123f4864a701 +CT= 326dbda711b0b90b64400d9e834c0529e84ed9e80979ea6e +TEST= 230 +KEY= 939578808c5f989981b3f979eb4c05c5 +PT= 326dbda711b0b90b64400d9e834c0529e84ed9e80979ea6e +CT= b4d5efe4957b1a89160d64a86a0470bf590deb1e58bca576 +TEST= 231 +KEY= 85981c28e65be826d8be1267b3f0a0b3 +PT= b4d5efe4957b1a89160d64a86a0470bf590deb1e58bca576 +CT= dd8b5fe35b6c331400a8bc51ac6ab189589945eaf02ee594 +TEST= 232 +KEY= 8530a0794a3159af8027578d43de4527 +PT= dd8b5fe35b6c331400a8bc51ac6ab189589945eaf02ee594 +CT= b9135faac4ce806bb9b392c04fa72a22f97545d303aede7c +TEST= 233 +KEY= 3c8332b90596738d7952125e40709b5b +PT= b9135faac4ce806bb9b392c04fa72a22f97545d303aede7c +CT= 004ff1159da363c7bff88ed6c010c4585fcbc7038c5c1190 +TEST= 234 +KEY= 837bbc6fc586b7d52699d55dcc2c8acb +PT= 004ff1159da363c7bff88ed6c010c4585fcbc7038c5c1190 +CT= 9593eeb28a7f6b97a7ed7bff7e868af1311aad2bc918ed79 +TEST= 235 +KEY= 2496c790bb003d2417837876053467b2 +PT= 9593eeb28a7f6b97a7ed7bff7e868af1311aad2bc918ed79 +CT= be678cf57317f26527bea2760c692d9c00214baf43737431 +TEST= 236 +KEY= 032865e6b76910b817a233d946471383 +PT= be678cf57317f26527bea2760c692d9c00214baf43737431 +CT= aa6d9cec19e5b5f2a2c57027170c84a9c764f1403245be71 +TEST= 237 +KEY= a1ed15c1a0659411d0c6c2997402adf2 +PT= aa6d9cec19e5b5f2a2c57027170c84a9c764f1403245be71 +CT= 7de70c4abf824758f00985b0b32fb912945e79cacbe80e14 +TEST= 238 +KEY= 51e49071134a2d034498bb53bfeaa3e6 +PT= 7de70c4abf824758f00985b0b32fb912945e79cacbe80e14 +CT= 7137ec3a7b10b6523331da8b5a9408a51dc474aaae1e9479 +TEST= 239 +KEY= 62d54afa49de25a6595ccff911f4379f +PT= 7137ec3a7b10b6523331da8b5a9408a51dc474aaae1e9479 +CT= 40d9238f5559cbcdf047381869c1dbe4142237112704f847 +TEST= 240 +KEY= 929272e2201ffe424d7ef8e836f0cfd8 +PT= 40d9238f5559cbcdf047381869c1dbe4142237112704f847 +CT= 72c01e2016b639760138d3c9f1dde595f34367bf1d729166 +TEST= 241 +KEY= 93aaa12bd1c21bd7be3d9f572b825ebe +PT= 72c01e2016b639760138d3c9f1dde595f34367bf1d729166 +CT= dfd1a7fdb7b4de3ac016993061544d3b54a14770cbd15084 +TEST= 242 +KEY= 53bc381bb09656ecea9cd827e0530e3a +PT= dfd1a7fdb7b4de3ac016993061544d3b54a14770cbd15084 +CT= 9c79aea4a4ee82c0e2e42618ae83c3916d81ebb04e04c113 +TEST= 243 +KEY= b1581e031e15957d871d3397ae57cf29 +PT= 9c79aea4a4ee82c0e2e42618ae83c3916d81ebb04e04c113 +CT= c7844b0f4f6d2766234358d6360c630acfa61d65b80bfe25 +TEST= 244 +KEY= 921b46d52819f67748bb2ef2165c310c +PT= c7844b0f4f6d2766234358d6360c630acfa61d65b80bfe25 +CT= 191f1ded88cdbeec7653ec5e139d199632226ab833fbe7f0 +TEST= 245 +KEY= e448aa8b3b84efe17a99444a25a7d6fc +PT= 191f1ded88cdbeec7653ec5e139d199632226ab833fbe7f0 +CT= 5510d3655fa3d26b0d810b3d46572d5b8ba000958200de48 +TEST= 246 +KEY= e9c9a1b67dd3c2baf13944dfa7a708b4 +PT= 5510d3655fa3d26b0d810b3d46572d5b8ba000958200de48 +CT= 12830153bffa10de589db15c561fa29643b1cdd21cea95ae +TEST= 247 +KEY= b15410ea2bcc602cb288890dbb4d9d1a +PT= 12830153bffa10de589db15c561fa29643b1cdd21cea95ae +CT= 7c02d21bbd5f37872555f620c920dccc462c4f112f2aa106 +TEST= 248 +KEY= 9401e6cae2ecbce0f4a4c61c94673c1c +PT= 7c02d21bbd5f37872555f620c920dccc462c4f112f2aa106 +CT= 0702d2e94e37237b422799beaed64a67e251942734888682 +TEST= 249 +KEY= d6267f744c3af68716f5523ba0efba9e +PT= 0702d2e94e37237b422799beaed64a67e251942734888682 +CT= 821875c1658a5e9840f1250f8c1568d049c15cbf58c78d6e +TEST= 250 +KEY= 96d75a7bc02f9e575f340e84f82837f0 +PT= 821875c1658a5e9840f1250f8c1568d049c15cbf58c78d6e +CT= 6f6bf62a51695f0cb0c8e94de85d09d5b16f07d8bd537df7 +TEST= 251 +KEY= 261fb33628729782ee5b095c457b4a07 +PT= 6f6bf62a51695f0cb0c8e94de85d09d5b16f07d8bd537df7 +CT= a61bf071aaaf55301cbdfd20fd489fe4f7affae30f1dbf41 +TEST= 252 +KEY= 3aa24e16d53a086619f4f3bf4a66f546 +PT= a61bf071aaaf55301cbdfd20fd489fe4f7affae30f1dbf41 +CT= 6026781c25981797ed1a6d0ec3fc988ba72c1c98f21a565c +TEST= 253 +KEY= d7b8231816c690edbed8ef27b87ca31a +PT= 6026781c25981797ed1a6d0ec3fc988ba72c1c98f21a565c +CT= abec2a6c51c63f29c9162faf07f0ca8ccf3f9f641b3d9568 +TEST= 254 +KEY= 1eae0cb711365a6171e77043a3413672 +PT= abec2a6c51c63f29c9162faf07f0ca8ccf3f9f641b3d9568 +CT= 656fcc6a7dcd2c6a7f39fd431299a2f43d3bfbea27b6d20a +TEST= 255 +KEY= 6197f1f403aff8954cdc8ba984f7e478 +PT= 656fcc6a7dcd2c6a7f39fd431299a2f43d3bfbea27b6d20a +CT= 00c3e089c5566b54936390dc024eceb75796ab8553bdf2c4 +TEST= 256 +KEY= f2f4612801e136221b4a202cd74a16bc +PT= 00c3e089c5566b54936390dc024eceb75796ab8553bdf2c4 +CT= 6548700d9f2118558685064166fc7f376afe42c8434fea1b +TEST= 257 +KEY= 74716769671d491571b462e49405fca7 +PT= 6548700d9f2118558685064166fc7f376afe42c8434fea1b +CT= 8d6381826bdefd384366dc908eb730bb9562d0a64f6873a4 +TEST= 258 +KEY= 3717bbf9e9aa79aee4d6b242db6d8f03 +PT= 8d6381826bdefd384366dc908eb730bb9562d0a64f6873a4 +CT= f2acaa980731080ba5b2bd9afe1eea9c107e3c5d512b1300 +TEST= 259 +KEY= 92a5066317b49332f4a88e1f8a469c03 +PT= f2acaa980731080ba5b2bd9afe1eea9c107e3c5d512b1300 +CT= 2fd710e0a019b8a08a655dc008b361f2736fb6f96f211994 +TEST= 260 +KEY= 18c05ba31f07f2c087c738e6e5678597 +PT= 2fd710e0a019b8a08a655dc008b361f2736fb6f96f211994 +CT= 3e1dd8ac2c84c761df4f46463ec84de583f8f4c827c9bc44 +TEST= 261 +KEY= c78f1de521cfbf25043fcc2ec2ae39d3 +PT= 3e1dd8ac2c84c761df4f46463ec84de583f8f4c827c9bc44 +CT= 0c5dec01e8bd3c5ec76b2563ad35503d1ef6671d6c05926c +TEST= 262 +KEY= 00e438868cfaef181ac9ab33aeababbf +PT= 0c5dec01e8bd3c5ec76b2563ad35503d1ef6671d6c05926c +CT= fe9ae339ff419556fd07f8a05d5cea1d7094921dfbaa3850 +TEST= 263 +KEY= fde3c026d1a605056a5d392e550193ef +PT= fe9ae339ff419556fd07f8a05d5cea1d7094921dfbaa3850 +CT= 784b39dbe00de4830cf35187f9f5060dac2593914b4fb932 +TEST= 264 +KEY= f11091a128530308c678aabf1e4e2add +PT= 784b39dbe00de4830cf35187f9f5060dac2593914b4fb932 +CT= 3b6bbe2093b7e0c4917e48c49ae72178d4f0955a8912f9e4 +TEST= 265 +KEY= 606ed965b2b4227012883fe5975cd339 +PT= 3b6bbe2093b7e0c4917e48c49ae72178d4f0955a8912f9e4 +CT= b23a4cf2cd44c649231c229f38206260835054e7db953c65 +TEST= 266 +KEY= 4372fbfa8a94401091d86b024cc9ef5c +PT= b23a4cf2cd44c649231c229f38206260835054e7db953c65 +CT= 640dfcf7f38c0c9458c68aea579fd04bd1360099285b26ae +TEST= 267 +KEY= 1bb47110dd0b905b40ee6b9b6492c9f2 +PT= 640dfcf7f38c0c9458c68aea579fd04bd1360099285b26ae +CT= 2525b76641c492ebeb64aa15de059cf912f7d7fdcd7bf828 +TEST= 268 +KEY= f0d0db05030e0ca25219bc66a9e931da +PT= 2525b76641c492ebeb64aa15de059cf912f7d7fdcd7bf828 +CT= df08b2f1b070e3be5c6c81b1bfb8368dd183237b02115eaf +TEST= 269 +KEY= acbc5ab4bcb63a2f839a9f1dabf86f75 +PT= df08b2f1b070e3be5c6c81b1bfb8368dd183237b02115eaf +CT= 7e8dd73a78c4b9bc167575b63b42b750c39283357520dfce +TEST= 270 +KEY= bac92f0287f48d7f40081c28ded8b0bb +PT= 7e8dd73a78c4b9bc167575b63b42b750c39283357520dfce +CT= 7c4bc888c0265cc7730f880247c3b21ceb454fd772ff1b37 +TEST= 271 +KEY= c9c6a700c0373f63ab4d53ffac27ab8c +PT= 7c4bc888c0265cc7730f880247c3b21ceb454fd772ff1b37 +CT= 36336c5074c5ab1e304e99acb9919ae40eb1f2f2c452b776 +TEST= 272 +KEY= f9883eac79a6a587a5fca10d68751cfa +PT= 36336c5074c5ab1e304e99acb9919ae40eb1f2f2c452b776 +CT= d105c611594ea19e4665ab155d3afe921043e913d86f4029 +TEST= 273 +KEY= bfed95b9249c5b15b5bf481eb01a5cd3 +PT= d105c611594ea19e4665ab155d3afe921043e913d86f4029 +CT= 02d9b1bfe068cfb0a11d3f7f510b4e469df0e6bc914e6be8 +TEST= 274 +KEY= 1ef0aac675971553284faea22154373b +PT= 02d9b1bfe068cfb0a11d3f7f510b4e469df0e6bc914e6be8 +CT= 3d8650087193c757d4fb455a40f4888cf618cd7b55b62d39 +TEST= 275 +KEY= ca0bef9c35639ddfde5763d974e21a02 +PT= 3d8650087193c757d4fb455a40f4888cf618cd7b55b62d39 +CT= 34b6c53a31fcc869e766dbc768e6ca4b567c84ec7b6d945a +TEST= 276 +KEY= 2d6d345b5d855794882be7350f8f8e58 +PT= 34b6c53a31fcc869e766dbc768e6ca4b567c84ec7b6d945a +CT= 7aa3c7124c48a1534ad95cd499792f83fc2f4c62cff24ffd +TEST= 277 +KEY= 67b4688fc4fc78177404ab57c07dc1a5 +PT= 7aa3c7124c48a1534ad95cd499792f83fc2f4c62cff24ffd +CT= 886dad1401165bf5928e6c4f669ce669616128b814d7c2c2 +TEST= 278 +KEY= f53a04c0a2609e7e156583efd4aa0367 +PT= 886dad1401165bf5928e6c4f669ce669616128b814d7c2c2 +CT= 0289eb5959f127f6251bdf8642d65b02b333b6cf383ff88f +TEST= 279 +KEY= d021db46e0b6c57ca6563520ec95fbe8 +PT= 0289eb5959f127f6251bdf8642d65b02b333b6cf383ff88f +CT= 3bd357101f673c4e341a2050d119fddc046a1621f140910b +TEST= 280 +KEY= e43bfb1631af38a0a23c23011dd56ae3 +PT= 3bd357101f673c4e341a2050d119fddc046a1621f140910b +CT= 059c4cb1f48a0e2e328697aa88903bd67c3ab587023507f7 +TEST= 281 +KEY= d6bd6cbcb93f0376de0696861fe06d14 +PT= 059c4cb1f48a0e2e328697aa88903bd67c3ab587023507f7 +CT= d8f4e08a889a48e9986bf56e7a92d223803812d66cbc0a63 +TEST= 282 +KEY= 4ed699d2c3add1555e3e8450735c6777 +PT= d8f4e08a889a48e9986bf56e7a92d223803812d66cbc0a63 +CT= 693f787eaa3b7df32e2ed799f3469780f33eea299c06c014 +TEST= 283 +KEY= 60f84e4b30eb46d5ad006e79ef5aa763 +PT= 693f787eaa3b7df32e2ed799f3469780f33eea299c06c014 +CT= b9dac0b27c138326852253ee85a41a77d79d605416577253 +TEST= 284 +KEY= e5da1da5b54f5ca27a9d0e2df90dd530 +PT= b9dac0b27c138326852253ee85a41a77d79d605416577253 +CT= 77683462d68238e81151cb92a31a865034896f95b3b5b864 +TEST= 285 +KEY= f48bd6371655daf24e1461b84ab86d54 +PT= 77683462d68238e81151cb92a31a865034896f95b3b5b864 +CT= 6eab40ad2e1714cda87d2c29fcf333ede4eb6af16e6791c1 +TEST= 286 +KEY= 5cf6fa1eeaa6e91faaff0b4924dffc95 +PT= 6eab40ad2e1714cda87d2c29fcf333ede4eb6af16e6791c1 +CT= 585e7d690f74a8bd639ade0ba535a496a4946ed1d51a90a3 +TEST= 287 +KEY= 3f6c24154f934d890e6b6598f1c56c36 +PT= 585e7d690f74a8bd639ade0ba535a496a4946ed1d51a90a3 +CT= f29094740aabf3de18f1165792e4d024171652e443dbc978 +TEST= 288 +KEY= 279d3242dd779dad197d377cb21ea54e +PT= f29094740aabf3de18f1165792e4d024171652e443dbc978 +CT= 02b8a3372e3f3a40b5120b1f211a6f4ebc823303314dfadc +TEST= 289 +KEY= 928f395dfc6df2e3a5ff047f83535f92 +PT= 02b8a3372e3f3a40b5120b1f211a6f4ebc823303314dfadc +CT= 7218e72f9fcfa8b227c953b94bbe633676118b7d4ac8e3e6 +TEST= 290 +KEY= b5466ae4b7d391d5d3ee8f02c99bbc74 +PT= 7218e72f9fcfa8b227c953b94bbe633676118b7d4ac8e3e6 +CT= e554fe19b9645d1c63d3632da73ff7683f30da5150084ade +TEST= 291 +KEY= d69509c910ec66bdecde55539993f6aa +PT= e554fe19b9645d1c63d3632da73ff7683f30da5150084ade +CT= 3b843640379c5d0399e29d9b7ef983e1916dc4e261e0e57f +TEST= 292 +KEY= 4f7794526e15e55c7db391b1f87313d5 +PT= 3b843640379c5d0399e29d9b7ef983e1916dc4e261e0e57f +CT= 387ad4f93c069d31e0cec2c7c34f9054f67963b13991caf6 +TEST= 293 +KEY= afb95695ad5a75088bcaf200c1e2d923 +PT= 387ad4f93c069d31e0cec2c7c34f9054f67963b13991caf6 +CT= 13ae7d1c0ab7659ed4a4fa389e356c69ddd99c4b4af87e75 +TEST= 294 +KEY= 7b1dacad336f196156136e4b8b1aa756 +PT= 13ae7d1c0ab7659ed4a4fa389e356c69ddd99c4b4af87e75 +CT= bf9728ec552c18bdd6970fe6b94e6bbadfc3d848b597e40c +TEST= 295 +KEY= ad8aa34b8a2172db89d0b6033e8d435a +PT= bf9728ec552c18bdd6970fe6b94e6bbadfc3d848b597e40c +CT= 2da71cd9fba8421fb29fc9c9314ecd4224fcea16ef5f5313 +TEST= 296 +KEY= 1f156a82bb6fbf99ad2c5c15d1d21049 +PT= 2da71cd9fba8421fb29fc9c9314ecd4224fcea16ef5f5313 +CT= a139ef524c88c9de1ef7f118ad91564c4c6ad7304910b2ca +TEST= 297 +KEY= 01e29b9a16fee9d5e1468b2598c2a283 +PT= a139ef524c88c9de1ef7f118ad91564c4c6ad7304910b2ca +CT= 95a30931cd0be85f00bcea1c57f2bdb5fbb0c9b950f4334b +TEST= 298 +KEY= 015e7186410c54601af6429cc83691c8 +PT= 95a30931cd0be85f00bcea1c57f2bdb5fbb0c9b950f4334b +CT= 3629ed4b48ef3b0e400b390fe20e61cd0d2318218de45d79 +TEST= 299 +KEY= 41554889a30235ad17d55abd45d2ccb1 +PT= 3629ed4b48ef3b0e400b390fe20e61cd0d2318218de45d79 +CT= 94b032858fbe4b22978dc24f4aea9433a8eabd7d37774850 +TEST= 300 +KEY= d6d88ac6e9e8a19ebf3fe7c072a584e1 +PT= 94b032858fbe4b22978dc24f4aea9433a8eabd7d37774850 +CT= 2680861603179b0ce3ae2c53d8c20d82103d22854abdf154 +TEST= 301 +KEY= 3576a695312aac1caf02c545381875b5 +PT= 2680861603179b0ce3ae2c53d8c20d82103d22854abdf154 +CT= 307007357eb19e3ca1248fd9ff7b32da48a94669ca614516 +TEST= 302 +KEY= 9452294cce519ec6e7ab832cf27930a3 +PT= 307007357eb19e3ca1248fd9ff7b32da48a94669ca614516 +CT= cc2ad565045f31deec41273b64f7548809c00c1379b15068 +TEST= 303 +KEY= 78130e77aaa6ca4eee6b8f3f8bc860cb +PT= cc2ad565045f31deec41273b64f7548809c00c1379b15068 +CT= 8f3ca8bd47a7e29d3d0dc92720e6c5aefa339e99e0c30328 +TEST= 304 +KEY= 451ec7508a400fe0145811a66b0b63e3 +PT= 8f3ca8bd47a7e29d3d0dc92720e6c5aefa339e99e0c30328 +CT= 8194681b4cc8d788354ed0129d70820c7e9cc2b4772d0c93 +TEST= 305 +KEY= 7050174217308dec6ac4d3121c266f70 +PT= 8194681b4cc8d788354ed0129d70820c7e9cc2b4772d0c93 +CT= ab323d0476beaf869101fe25f137a493259b656f9554fc4d +TEST= 306 +KEY= e151e967e607297f4f5fb67d8972933d +PT= ab323d0476beaf869101fe25f137a493259b656f9554fc4d +CT= 69d3675781178ae0af53e28a8836339c68bd68da071e2b1d +TEST= 307 +KEY= 4e020bed6e311ae327e2dea78e6cb820 +PT= 69d3675781178ae0af53e28a8836339c68bd68da071e2b1d +CT= 3607f557ac1709bedbb3daf1201a3b11340ff7fff1ddb438 +TEST= 308 +KEY= 95b1d11c4e2b21f213ed29587fb10c18 +PT= 3607f557ac1709bedbb3daf1201a3b11340ff7fff1ddb438 +CT= 65b1759ee67bc86dba3980570ab2c7ffc89001d38b402929 +TEST= 309 +KEY= 2f88514b4499e60ddb7d288bf4f12531 +PT= 65b1759ee67bc86dba3980570ab2c7ffc89001d38b402929 +CT= 379de4b9463acfa9ba0059e0e08bf8f9460284ea739bd816 +TEST= 310 +KEY= 958808aba4121ef49d7fac61876afd27 +PT= 379de4b9463acfa9ba0059e0e08bf8f9460284ea739bd816 +CT= fc397ed43f86ec44ca44bf7ae4cda35abd60fdccfb9d1bad +TEST= 311 +KEY= 5fccb7d140dfbdae201f51ad7cf7e68a +PT= fc397ed43f86ec44ca44bf7ae4cda35abd60fdccfb9d1bad +CT= eb0910a77308b4040814794300ae055365cf1d7cbaf469b7 +TEST= 312 +KEY= 57d8ce924071b8fd45d04cd1c6038f3d +PT= eb0910a77308b4040814794300ae055365cf1d7cbaf469b7 +CT= ca064bd12da2498add063800485f0b23f6481183a06b7422 +TEST= 313 +KEY= 8adef692082eb3deb3985d526668fb1f +PT= ca064bd12da2498add063800485f0b23f6481183a06b7422 +CT= e30fca3f73316c49d4a31cfd51c395cea3df3dfc1c420495 +TEST= 314 +KEY= 5e7dea6f59ed2610104760ae7a2aff8a +PT= e30fca3f73316c49d4a31cfd51c395cea3df3dfc1c420495 +CT= d8c1b5ddba4c13d6d2766dd75c5fb55e832c8e792065d3fd +TEST= 315 +KEY= 8c0b87b805b2934e936beed75a4f2c77 +PT= d8c1b5ddba4c13d6d2766dd75c5fb55e832c8e792065d3fd +CT= e5cf9b05eee650d55aafacd0d28b1ed7354a5098c46730db +TEST= 316 +KEY= d6a42b68d7398d99a621be4f9e281cac +PT= e5cf9b05eee650d55aafacd0d28b1ed7354a5098c46730db +CT= 4f99f187527b1c3d1b8ca5286d27895428c8cfd1362e9f9a +TEST= 317 +KEY= cd288e40ba1e04cd8ee9719ea8068336 +PT= 4f99f187527b1c3d1b8ca5286d27895428c8cfd1362e9f9a +CT= 6c103a602503040a5a73169c582cb23f7e0cc687c1567f70 +TEST= 318 +KEY= 975b98dce232b6f2f0e5b7196950fc46 +PT= 6c103a602503040a5a73169c582cb23f7e0cc687c1567f70 +CT= 739b925736df18d5657453b9b3d3924f91558bfc954d245c +TEST= 319 +KEY= f22fcb6551e124bd61b03ce5fc1dd81a +PT= 739b925736df18d5657453b9b3d3924f91558bfc954d245c +CT= b5228bd0050a4027a2b0a40fe6c7d478dbc05ea80c7612d7 +TEST= 320 +KEY= 509f6f6ab726f0c5ba70624df06bcacd +PT= b5228bd0050a4027a2b0a40fe6c7d478dbc05ea80c7612d7 +CT= 5b45d10d48d125848c22d4dc01d2fae42c12fc8a72b2bd5d +TEST= 321 +KEY= dcbdbbb6b6f40a2196629ec782d97790 +PT= 5b45d10d48d125848c22d4dc01d2fae42c12fc8a72b2bd5d +CT= 6375d223cd0abe3011a41ba32559567a442c5cd43ee9834d +TEST= 322 +KEY= cd19a01593ad5c5bd24ec213bc30f4dd +PT= 6375d223cd0abe3011a41ba32559567a442c5cd43ee9834d +CT= a6737af1bca142e5b144d7350a8281bc7611fd405f7b446e +TEST= 323 +KEY= 7c5d7720992fdde7a45f3f53e34bb0b3 +PT= a6737af1bca142e5b144d7350a8281bc7611fd405f7b446e +CT= 80b36a78edc3b19bccd0c23bd02ea06b6616c14c28eb1e02 +TEST= 324 +KEY= b08db51b49017d8cc249fe1fcba0aeb1 +PT= 80b36a78edc3b19bccd0c23bd02ea06b6616c14c28eb1e02 +CT= 40203ddf2a733a1d9ae3c06864ba6dd1b6491d121c194d83 +TEST= 325 +KEY= 2a6e75732dbb105d7400e30dd7b9e332 +PT= 40203ddf2a733a1d9ae3c06864ba6dd1b6491d121c194d83 +CT= 035d88003a67e5eb15d3cc155364f44d35e77f567fa4e71c +TEST= 326 +KEY= 3fbdb9667edfe41041e79c5ba81d042e +PT= 035d88003a67e5eb15d3cc155364f44d35e77f567fa4e71c +CT= 98bb2aea7973dfbd51fe3ee4aba6a14547935d0173ba8031 +TEST= 327 +KEY= 6e438782d57945550674c15adba7841f +PT= 98bb2aea7973dfbd51fe3ee4aba6a14547935d0173ba8031 +CT= cb5fec2b55383841c539c036ba351460d9420f9955093455 +TEST= 328 +KEY= ab7a47b46f4c5135df36cec38eaeb04a +PT= cb5fec2b55383841c539c036ba351460d9420f9955093455 +CT= 0f5f62bde4f0a6be1b87935b8d293c5140c9cfb184192638 +TEST= 329 +KEY= b0fdd4efe2656d649fff01720ab79672 +PT= 0f5f62bde4f0a6be1b87935b8d293c5140c9cfb184192638 +CT= b9d3e329e1dc03f0a9583fc7d757e5f26dfab884fafc0656 +TEST= 330 +KEY= 19a5eb2835328896f205b9f6f04b9024 +PT= b9d3e329e1dc03f0a9583fc7d757e5f26dfab884fafc0656 +CT= 2b5d48ec3f90c53145db65312e1ed621c826e6cf666282e4 +TEST= 331 +KEY= 5c7e8e191b2c5eb73a235f39962912c0 +PT= 2b5d48ec3f90c53145db65312e1ed621c826e6cf666282e4 +CT= bc04887cd6abe951747cc496780d3fac2eb736e036ea5410 +TEST= 332 +KEY= 28024a8f6321611b149469d9a0c346d0 +PT= bc04887cd6abe951747cc496780d3fac2eb736e036ea5410 +CT= 1f6eb9d5307192d00442432cc15c95cf7423c869591b1075 +TEST= 333 +KEY= 2c4009a3a27df4d460b7a1b0f9d856a5 +PT= 1f6eb9d5307192d00442432cc15c95cf7423c869591b1075 +CT= 31fb1d402abf6f9cb72052e2607ca1a79e2accb69feac1de +TEST= 334 +KEY= 9b605b41c2015573fe9d6d066632977b +PT= 31fb1d402abf6f9cb72052e2607ca1a79e2accb69feac1de +CT= b8888fa2858cfdee8c4e93184c20ef417904f26707900ead +TEST= 335 +KEY= 172ec8598e21ba3287999f6161a299d6 +PT= b8888fa2858cfdee8c4e93184c20ef417904f26707900ead +CT= 78591a50ea15f9aaaa937435c174a803bf59d87898b185e0 +TEST= 336 +KEY= bdbdbc6c4f55123138c04719f9131c36 +PT= 78591a50ea15f9aaaa937435c174a803bf59d87898b185e0 +CT= 8611ac64720ec69a8205c74ac18b166b313ebc54687ed8e3 +TEST= 337 +KEY= 3fb87b268ede045a09fefb4d916dc4d5 +PT= 8611ac64720ec69a8205c74ac18b166b313ebc54687ed8e3 +CT= 1ba7974bceff4008cbc3dc597df629b873f6f791bead7dde +TEST= 338 +KEY= f47ba77ff3282de27a080cdc2fc0b90b +PT= 1ba7974bceff4008cbc3dc597df629b873f6f791bead7dde +CT= c0a8d756e5c48b2e367b7996797ece80f3665ec0aa15973e +TEST= 339 +KEY= c200dee98a56e362896e521c85d52e35 +PT= c0a8d756e5c48b2e367b7996797ece80f3665ec0aa15973e +CT= 89f437e52ebbaedacecd3ab9f0813f7100116dcf16f764be +TEST= 340 +KEY= 0ccde4507ad7dc13897f3fd393224a8b +PT= 89f437e52ebbaedacecd3ab9f0813f7100116dcf16f764be +CT= 41e45f9b7797f8adcaba7801372531cef2484f10b6e13716 +TEST= 341 +KEY= c6779c514df2eddd7b3770c325c37d9d +PT= 41e45f9b7797f8adcaba7801372531cef2484f10b6e13716 +CT= c5441846a6b38662eaf0df64a9e411df2955cba12fc6d04b +TEST= 342 +KEY= 2c874335e416fc025262bb620a05add6 +PT= c5441846a6b38662eaf0df64a9e411df2955cba12fc6d04b +CT= e8c05e35567b1ddbe0ef46c6491fc76a3d818f4670309ada +TEST= 343 +KEY= cc6805f3ad093b686fe334247a35370c +PT= e8c05e35567b1ddbe0ef46c6491fc76a3d818f4670309ada +CT= 4d4df63fdbed48eca1edc3d915d7482362f7a0e16b901d32 +TEST= 344 +KEY= 6d85c62ab8de734b0d1494c511a52a3e +PT= 4d4df63fdbed48eca1edc3d915d7482362f7a0e16b901d32 +CT= 52ee555e49d50019f6fee45a0011f732e440a1f989a4a16f +TEST= 345 +KEY= 9b7b2270b8cf8479e954353c98018b51 +PT= 52ee555e49d50019f6fee45a0011f732e440a1f989a4a16f +CT= 1661a2105720819155c86b448ec4fa0ffaa81039a1b315b3 +TEST= 346 +KEY= ceb34934360b7e7613fc250539b29ee2 +PT= 1661a2105720819155c86b448ec4fa0ffaa81039a1b315b3 +CT= 761e304af67865517379ba426003f7f4fff46677854f6d3a +TEST= 347 +KEY= bdcaf37656088982ec084372bcfdf3d8 +PT= 761e304af67865517379ba426003f7f4fff46677854f6d3a +CT= 010ad84950554f4f95c24b82475924c896eb637fc011e03c +TEST= 348 +KEY= 2808b8f41151ad4a7ae3200d7cec13e4 +PT= 010ad84950554f4f95c24b82475924c896eb637fc011e03c +CT= de703b59652d856d2dcce38999a923be8b26d0f86b2cb955 +TEST= 349 +KEY= 05c45b7d88f88ef4f1c5f0f517c0aab1 +PT= de703b59652d856d2dcce38999a923be8b26d0f86b2cb955 +CT= ee8b1cad0a870c4f614243f556e108d1f4c2ce7c8bc33817 +TEST= 350 +KEY= 64861888de19862505073e899c0392a6 +PT= ee8b1cad0a870c4f614243f556e108d1f4c2ce7c8bc33817 +CT= c100126a0d8dd4180e0a8e2c3c781359c6726aece3b940a2 +TEST= 351 +KEY= 6a8c96a4e261957cc37554657fbad204 +PT= c100126a0d8dd4180e0a8e2c3c781359c6726aece3b940a2 +CT= ade588cfb1da5217f1ea66f4a221adfc702772f9a77911d6 +TEST= 352 +KEY= 9b66f05040403880b352269cd8c3c3d2 +PT= ade588cfb1da5217f1ea66f4a221adfc702772f9a77911d6 +CT= a688207f48ee6b0812004d1438fd2dd8a250da9ee8bb0099 +TEST= 353 +KEY= 8966bd4478bd15581102fc023078c34b +PT= a688207f48ee6b0812004d1438fd2dd8a250da9ee8bb0099 +CT= 9e54bb7b6665c77d417cd6ce807ccd757409bc64509b77e4 +TEST= 354 +KEY= c81a6b8af8c1d82d650b406660e3b4af +PT= 9e54bb7b6665c77d417cd6ce807ccd757409bc64509b77e4 +CT= 17b2ede2b13699b5a61ca7ade44e5e2806944acd0c338c7c +TEST= 355 +KEY= 6e06cc271c8f8605639f0aab6cd038d3 +PT= 17b2ede2b13699b5a61ca7ade44e5e2806944acd0c338c7c +CT= 455f52418d0dee0b9fd6a96cd73f01116685912140dee2ef +TEST= 356 +KEY= f1d0654bcbb08714051a9b8a2c0eda3c +PT= 455f52418d0dee0b9fd6a96cd73f01116685912140dee2ef +CT= 66f6feab43123ece9269367d5b0b7b0e2922f705aec83225 +TEST= 357 +KEY= 63b9533690bbfc1a2c386c8f82c6e819 +PT= 66f6feab43123ece9269367d5b0b7b0e2922f705aec83225 +CT= c703f16e7da7d5b1bf92072144ba64d360ef9f192bcca8a8 +TEST= 358 +KEY= dc2b5417d40198c94cd7f396a90a40b1 +PT= c703f16e7da7d5b1bf92072144ba64d360ef9f192bcca8a8 +CT= ba91c1d20c9a6673ac60c36f0af92e492541e028ea7d02a2 +TEST= 359 +KEY= 704b9778def8b680699613be43774213 +PT= ba91c1d20c9a6673ac60c36f0af92e492541e028ea7d02a2 +CT= 5294ccea773ce595a734bf22d923e9f8b6b82ff2f8285f31 +TEST= 360 +KEY= d77f285a07db5f78df2e3c4cbb5f1d22 +PT= 5294ccea773ce595a734bf22d923e9f8b6b82ff2f8285f31 +CT= dab367822af7b20981b61c22904b7fe0724794b11c390a1d +TEST= 361 +KEY= 56c9347897902098ad69a8fda766173f +PT= dab367822af7b20981b61c22904b7fe0724794b11c390a1d +CT= 49fca0ffa85d20472170903643e3798ed72eb0c9d6c63aa9 +TEST= 362 +KEY= 77b9a44ed47359167a47183471a02d96 +PT= 49fca0ffa85d20472170903643e3798ed72eb0c9d6c63aa9 +CT= daeba9e40340fa6fd77d7900124e30934748f450933778d5 +TEST= 363 +KEY= a0c4dd4ec63d69853d0fec64e2975543 +PT= daeba9e40340fa6fd77d7900124e30934748f450933778d5 +CT= bff0beff1d1a0fc0e80d5f846f3f518e77241488800ebb7c +TEST= 364 +KEY= 48c982caa902380b4a2bf8ec6299ee3f +PT= bff0beff1d1a0fc0e80d5f846f3f518e77241488800ebb7c +CT= c345a0466670d138d31f93c741276bc15b45ef4e346a8fb7 +TEST= 365 +KEY= 9bd6110de82553ca116e17a256f36188 +PT= c345a0466670d138d31f93c741276bc15b45ef4e346a8fb7 +CT= 5a21973246e3b943de1b65233ab84a67ec272bdaa5568436 +TEST= 366 +KEY= 45cd742ed29d19adfd493c78f3a5e5be +PT= 5a21973246e3b943de1b65233ab84a67ec272bdaa5568436 +CT= fdb6780a8a675265576f2def8a71c59b367ce8ad8c3bd9f7 +TEST= 367 +KEY= 12a259c158ecdc36cb35d4d57f9e3c49 +PT= fdb6780a8a675265576f2def8a71c59b367ce8ad8c3bd9f7 +CT= 149324dff7514455e2ffbf3e8817dd150ec277798a073f54 +TEST= 368 +KEY= f05de6ffd0fb0123c5f7a3acf599031d +PT= 149324dff7514455e2ffbf3e8817dd150ec277798a073f54 +CT= 2a8fa92f1bb15cc06054234d8544b9e4009698e14dd645bc +TEST= 369 +KEY= 9009c5b255bfb8c7c5613b4db84f46a1 +PT= 2a8fa92f1bb15cc06054234d8544b9e4009698e14dd645bc +CT= 1c0758b1e1dce91a99774e11a7dec16cc94a4c42a2618af1 +TEST= 370 +KEY= 097e8ba3f26179ab0c2b770f1a2ecc50 +PT= 1c0758b1e1dce91a99774e11a7dec16cc94a4c42a2618af1 +CT= 9dd77a3caec4411b027a51f478842bf6a76e6ce3826a8ab5 +TEST= 371 +KEY= 0b04da578ae5525dab451bec984446e5 +PT= 9dd77a3caec4411b027a51f478842bf6a76e6ce3826a8ab5 +CT= 1c24bc4c913fb9f90bdf7326721be1065d7968eb0019cc74 +TEST= 372 +KEY= 00dba971f8feb35bf63c7307985d8a91 +PT= 1c24bc4c913fb9f90bdf7326721be1065d7968eb0019cc74 +CT= 405ff5d42fbb1c16fa8fbd6ac259e9061f1210fd14e0b74f +TEST= 373 +KEY= fa54141b3aa75a5de92e63fa8cbd3dde +PT= 405ff5d42fbb1c16fa8fbd6ac259e9061f1210fd14e0b74f +CT= 2176453434a0a86855ebe846d4bb64916d136b08c7b3605b +TEST= 374 +KEY= afbffc5dee1c3ecc843d08f24b0e5d85 +PT= 2176453434a0a86855ebe846d4bb64916d136b08c7b3605b +CT= 7991e2476d961f657b5915208e3fceb7b9957b94eb2e0383 +TEST= 375 +KEY= d4e6e97d6023f07b3da87366a0205e06 +PT= 7991e2476d961f657b5915208e3fceb7b9957b94eb2e0383 +CT= 284f2786dc31cb7493415e81755f8dc4db95a4cf87adc2df +TEST= 376 +KEY= 47a7b7fc157c7dbfe63dd7a9278d9cd9 +PT= 284f2786dc31cb7493415e81755f8dc4db95a4cf87adc2df +CT= ff81cbd6944bbac92ac7a3eb86a5b47529f3867dabf2ec58 +TEST= 377 +KEY= 6d60141793d9c9cacfce51d48c7f7081 +PT= ff81cbd6944bbac92ac7a3eb86a5b47529f3867dabf2ec58 +CT= c2ce996586aa83ce87d05174235825dcd377c2f71557e60f +TEST= 378 +KEY= eab04563b081ec161cb993239928968e +PT= c2ce996586aa83ce87d05174235825dcd377c2f71557e60f +CT= 91e8801d3625579f4d18aace7eacd658a44648c01e2f3c01 +TEST= 379 +KEY= a7a8efadce2d3a4eb8ffdbe38707aa8f +PT= 91e8801d3625579f4d18aace7eacd658a44648c01e2f3c01 +CT= db642cfa1b9e2eba4a9f03ef6a4ecf867ca42461d6218c20 +TEST= 380 +KEY= ed37ec42a463f5c8c45bff82512626af +PT= db642cfa1b9e2eba4a9f03ef6a4ecf867ca42461d6218c20 +CT= ddfb34542ce7048ae927c68854a93038ca4eeb2365adf377 +TEST= 381 +KEY= 04102acaf0cac5f00e1514a1348bd5d8 +PT= ddfb34542ce7048ae927c68854a93038ca4eeb2365adf377 +CT= bf80c17bda159aecfb29351cfbba2264e294931f63a1f4d9 +TEST= 382 +KEY= ff391fd60b70e794ec8187be572a2101 +PT= bf80c17bda159aecfb29351cfbba2264e294931f63a1f4d9 +CT= ceaead9b46282a204f3544d791c4f8e313a0e3fbd2b7c1d1 +TEST= 383 +KEY= b00c5b019ab41f77ff216445859de0d0 +PT= ceaead9b46282a204f3544d791c4f8e313a0e3fbd2b7c1d1 +CT= 979105830f67bc939402089eaeb7d3f194b579b04dc39905 +TEST= 384 +KEY= 240e539f3403cc866b941df5c85e79d5 +PT= 979105830f67bc939402089eaeb7d3f194b579b04dc39905 +CT= 7be7e53335b352c491633506e2c3f65f5359a37276b6262a +TEST= 385 +KEY= b56d6699d6c03ad938cdbe87bee85fff +PT= 7be7e53335b352c491633506e2c3f65f5359a37276b6262a +CT= cdc1806b06fd036176c23662a83e813b15927616dadf577e +TEST= 386 +KEY= c3af50fb7efebbe22d5fc89164370881 +PT= cdc1806b06fd036176c23662a83e813b15927616dadf577e +CT= fbb063d18f0be8178ed74a0bc3c8a4a76bf1436269d8037b +TEST= 387 +KEY= 4d781af0bd361f4546ae8bf30def0bfa +PT= fbb063d18f0be8178ed74a0bc3c8a4a76bf1436269d8037b +CT= 82f7e8df2cd35b62d55aca1a48699967e9f510eb452dba03 +TEST= 388 +KEY= 9822d0eaf55f8622af5b9b1848c2b1f9 +PT= 82f7e8df2cd35b62d55aca1a48699967e9f510eb452dba03 +CT= a67116bc4cd02deda706d0af45bd77333cd8960c66a0e642 +TEST= 389 +KEY= 3f240045b0e2f11193830d142e6257bb +PT= a67116bc4cd02deda706d0af45bd77333cd8960c66a0e642 +CT= cdc07c1b06b4ed08a7d0d018d902cbb3e783c7411d7d6e61 +TEST= 390 +KEY= 98f4d05d69e03aa27400ca55331f39da +PT= cdc07c1b06b4ed08a7d0d018d902cbb3e783c7411d7d6e61 +CT= c19bd17cff4b45a6d23184fc0c54d32ef88b00769615d752 +TEST= 391 +KEY= 4ac554a165b4e98c8c8bca23a50aee88 +PT= c19bd17cff4b45a6d23184fc0c54d32ef88b00769615d752 +CT= 2c8d0c27bf76ae7db9b5241c55e68619e3357ad499709735 +TEST= 392 +KEY= f37070bd30526f956fbeb0f73c7a79bd +PT= 2c8d0c27bf76ae7db9b5241c55e68619e3357ad499709735 +CT= 40bb3b7f2380e21d66b6a56573e7a9546a09f46ae6433901 +TEST= 393 +KEY= 95c6d5d843b5c6c105b7449dda3940bc +PT= 40bb3b7f2380e21d66b6a56573e7a9546a09f46ae6433901 +CT= 6b8d7361ed0a22ff538af6643feff46be840f99a9a950e8a +TEST= 394 +KEY= c64c23bc7c5a32aaedf7bd0740ac4e36 +PT= 6b8d7361ed0a22ff538af6643feff46be840f99a9a950e8a +CT= 60c51aa1a511d344fd33b40a4bb79df026d271133efbd3c0 +TEST= 395 +KEY= 3b7f97b637edaf5acb25cc147e579df6 +PT= 60c51aa1a511d344fd33b40a4bb79df026d271133efbd3c0 +CT= 47487e489d6dd6b10b660414f69e82a07d6c82c51b85f94f +TEST= 396 +KEY= 301993a2c1732dfab6494ed165d264b9 +PT= 47487e489d6dd6b10b660414f69e82a07d6c82c51b85f94f +CT= 2b1ee693594fb983e1c988c260af2ba7a3c8de9a81b4a7a2 +TEST= 397 +KEY= d1d01b60a1dc065d1581904be466c31b +PT= 2b1ee693594fb983e1c988c260af2ba7a3c8de9a81b4a7a2 +CT= a45968ba5e699e2a37da543b066256751a62c6c26f3e0948 +TEST= 398 +KEY= e60a4f5ba7be50280fe356898b58ca53 +PT= a45968ba5e699e2a37da543b066256751a62c6c26f3e0948 +CT= 347f988999436bfecfdfcea6c72fd54c0d4b0e3ffc6d3109 +TEST= 399 +KEY= 29d581fd6091856402a858b67735fb5a +PT= 347f988999436bfecfdfcea6c72fd54c0d4b0e3ffc6d3109 +CT= 43c3047f6fafaac959f6f893d5ce1f758b57f47babe084c3 diff --git a/flint/test/testvals/ecbme66.txt b/flint/test/testvals/ecbme66.txt new file mode 100644 index 0000000..b98e530 --- /dev/null +++ b/flint/test/testvals/ecbme66.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= b27e5223b827ad9d6671dbc7e9700deee47ea8639f61433d +TEST= 1 +KEY= b27e5223b827ad9d6671dbc7e9700deee47ea8639f61433d +PT= b27e5223b827ad9d6671dbc7e9700deee47ea8639f61433d +CT= 746ee56e8a71d958c444afa8e27bc33b6f1c4ec0f61acbf3 +TEST= 2 +KEY= c610b74d325674c5a235746f0b0bced58b62e6a3697b88ce +PT= 746ee56e8a71d958c444afa8e27bc33b6f1c4ec0f61acbf3 +CT= 4a8ef12132b673ea679f8f52a1e1121bdceaf1d0da2501b7 +TEST= 3 +KEY= 8c9e466c00e0072fc5aafb3daaeadcce57881773b35e8979 +PT= 4a8ef12132b673ea679f8f52a1e1121bdceaf1d0da2501b7 +CT= e88659b35faef0938052e154df8f728eead4c9e332b62453 +TEST= 4 +KEY= 64181fdf5f4ef7bc45f81a697565ae40bd5cde9081e8ad2a +PT= e88659b35faef0938052e154df8f728eead4c9e332b62453 +CT= 75388cc0fff20bec92d9a9a511d3109a21f0d6bc47bff1fa +TEST= 5 +KEY= 1120931fa0bcfc50d721b3cc64b6beda9cac082cc6575cd0 +PT= 75388cc0fff20bec92d9a9a511d3109a21f0d6bc47bff1fa +CT= e0b79dbd2fcc7da613c93d4cbec77d69d976a88be4e47f48 +TEST= 6 +KEY= f1970ea28f7081f6c4e88e80da71c3b345daa0a722b32398 +PT= e0b79dbd2fcc7da613c93d4cbec77d69d976a88be4e47f48 +CT= 745c7d958beb81d6953aedc4eb3329a43171375ccacb2191 +TEST= 7 +KEY= 85cb7337049b002051d263443142ea1774ab97fbe8780209 +PT= 745c7d958beb81d6953aedc4eb3329a43171375ccacb2191 +CT= 62ba7f74eb6f07e39c8a71c6ab6c1c68f9b3317ab5ce41fa +TEST= 8 +KEY= e7710c43eff407c3cd5812829a2ef67f8d18a6815db643f3 +PT= 62ba7f74eb6f07e39c8a71c6ab6c1c68f9b3317ab5ce41fa +CT= bc56f232845f776a9c19b9c2bce4325f74ed55afcc992031 +TEST= 9 +KEY= 5b27fe716bab70a95141ab4026cac420f9f5f32e912f63c2 +PT= bc56f232845f776a9c19b9c2bce4325f74ed55afcc992031 +CT= 65ee80cd5b6dc59bbbd5417ce70b0043e93daf78a12b9cf0 +TEST= 10 +KEY= 3ec97ebc30c6b532ea94ea3cc1c1c46310c85c563004ff32 +PT= 65ee80cd5b6dc59bbbd5417ce70b0043e93daf78a12b9cf0 +CT= 870a6999c1bc2c0328491a5bf5b5163d3fb9f85398cf8c5d +TEST= 11 +KEY= b9c31725f17a9931c2ddf0673474d25e2f71a405a8cb736f +PT= 870a6999c1bc2c0328491a5bf5b5163d3fb9f85398cf8c5d +CT= 9b0408298ab26a706887cfb43f7e64f734f4137701117fa9 +TEST= 12 +KEY= 22c71f0c7bc8f341aa5a3fd30b0ab6a91b85b772a9da0cc6 +PT= 9b0408298ab26a706887cfb43f7e64f734f4137701117fa9 +CT= 5780dece30119fb3478a5c170113964fb44b13bea64d6d50 +TEST= 13 +KEY= 7547c1c24bd96cf2edd063c40a1920e6afcea4cc0f976196 +PT= 5780dece30119fb3478a5c170113964fb44b13bea64d6d50 +CT= 39691fa6be50b34d65d4faea73873169c28b13e38b229491 +TEST= 14 +KEY= 4c2ede64f589dfbf8804992e799e118f6d45b72f84b5f507 +PT= 39691fa6be50b34d65d4faea73873169c28b13e38b229491 +CT= 0f9c096f7904f90a847b5e0fd9a3211407be8bd6648d84e7 +TEST= 15 +KEY= 43b2d70b8c8d26b50c7fc721a03d309b6afb3cf9e03871e0 +PT= 0f9c096f7904f90a847b5e0fd9a3211407be8bd6648d84e7 +CT= f54ec0823fb8583ed78b8f62b06d3ea6c6c579331bb0dde7 +TEST= 16 +KEY= b6fc1789b3357e8bdbf4484310500e3dac3e45cafb88ac07 +PT= f54ec0823fb8583ed78b8f62b06d3ea6c6c579331bb0dde7 +CT= 46a0fc62574a8700da6fc16ea15f03aec5a768d1dadb7ee1 +TEST= 17 +KEY= f05cebebe47ff98b019b892db10f0d9369992d1b2153d2e6 +PT= 46a0fc62574a8700da6fc16ea15f03aec5a768d1dadb7ee1 +CT= 535311e28427ec0ef01bd71f222c9bc292877a146a22d02f +TEST= 18 +KEY= a30ffa0960581585f1805e3293239651fb1e570f4b7102c9 +PT= 535311e28427ec0ef01bd71f222c9bc292877a146a22d02f +CT= fb480ded4d74abe8eb00aad90bfe99707e1e4663f5626942 +TEST= 19 +KEY= 5847f7e42d2cbe6d1a80f4eb98dd0f218500116cbe136b8b +PT= fb480ded4d74abe8eb00aad90bfe99707e1e4663f5626942 +CT= 540fd482e3c31eaef3df5e763cff7a2e83304da8a9e4f099 +TEST= 20 +KEY= 0c482366ceefa0c3e95faa9da422750f06305cc417f79b12 +PT= 540fd482e3c31eaef3df5e763cff7a2e83304da8a9e4f099 +CT= 70652dd04a5ae8adbba6c6933123305588779afc66713c8a +TEST= 21 +KEY= 7c2d0eb684b5486e52f96c0e9501455a8e47c6387186a798 +PT= 70652dd04a5ae8adbba6c6933123305588779afc66713c8a +CT= cf3383d131c431cf741379ec3478f4a0e734a74a00d3eda5 +TEST= 22 +KEY= b31e8d67b57179a126ea15e2a179b1fa6973617271554a3d +PT= cf3383d131c431cf741379ec3478f4a0e734a74a00d3eda5 +CT= 4d9fec8f5d15ecfd863187acc186287f2350909748113cff +TEST= 23 +KEY= fe8161e8e864955ca0db924e60ff99854a23f1e5394476c2 +PT= 4d9fec8f5d15ecfd863187acc186287f2350909748113cff +CT= d4fbe190df5e654acd31a6c7d527b507ada6f21b8cbbab72 +TEST= 24 +KEY= 2a7a8078373af0166dea3489b5d82c82e78503feb5ffddb0 +PT= d4fbe190df5e654acd31a6c7d527b507ada6f21b8cbbab72 +CT= 0d8950cc87d8b2abb4b31b87ab203669ba1532da7e48f6f5 +TEST= 25 +KEY= 27f3d0b4b0e242bdd9592f0e1ef81aeb5d903124cbb72b45 +PT= 0d8950cc87d8b2abb4b31b87ab203669ba1532da7e48f6f5 +CT= e3fbcd08603a4a13010a8fd8fa7b20ba948167f8918d8f56 +TEST= 26 +KEY= c4081dbcd0d808aed853a0d6e4833a51c91156dc5a3aa413 +PT= e3fbcd08603a4a13010a8fd8fa7b20ba948167f8918d8f56 +CT= 327483a784611fb5ae7edfaa980c56f094c190ce282e11d3 +TEST= 27 +KEY= f67c9e1b54b9171b762d7f7c7c8f6ca15dd0c6127214b5c0 +PT= 327483a784611fb5ae7edfaa980c56f094c190ce282e11d3 +CT= 3d6b79ae9088ad73b709ba40913d0e974f3c5e47a6e1ef5d +TEST= 28 +KEY= cb17e7b5c431ba68c124c53cedb2623612ec9855d4f55a9d +PT= 3d6b79ae9088ad73b709ba40913d0e974f3c5e47a6e1ef5d +CT= 9b02455288ec14681a6248f00efef21439031537833a707a +TEST= 29 +KEY= 5015a2e74cddae00db468dcce34c90222bef8d6257cf2ae7 +PT= 9b02455288ec14681a6248f00efef21439031537833a707a +CT= 307d97d00cf332fbd07ed2b5baff6c1bc5255738a5b21a84 +TEST= 30 +KEY= 60683537402e9cfb0b385f7959b3fc39eecada5af27d3063 +PT= 307d97d00cf332fbd07ed2b5baff6c1bc5255738a5b21a84 +CT= 2d11dc5dd2c3e79adf87304b77b9fa8ef6248a26c065d1d6 +TEST= 31 +KEY= 4d79e96a92ed7b61d4bf6f322e0a06b718ee507c3218e1b5 +PT= 2d11dc5dd2c3e79adf87304b77b9fa8ef6248a26c065d1d6 +CT= c53d7ed9db399ee9ac3b62f0a33afed482fde686511128d2 +TEST= 32 +KEY= 884497b349d4e58878840dc28d30f8639a13b6fa6309c967 +PT= c53d7ed9db399ee9ac3b62f0a33afed482fde686511128d2 +CT= 260bdfe9255c4bca14bc188ac4d0a8aaf5ea8a57083cdb9a +TEST= 33 +KEY= ae4f485a6c88ae426c38154849e050c96ff93cad6b3512fd +PT= 260bdfe9255c4bca14bc188ac4d0a8aaf5ea8a57083cdb9a +CT= 51622d00b4fc0252fe4b759b6cd990c8affafd8cf361a683 +TEST= 34 +KEY= ff2d655ad874ac10927360d32539c001c003c1219854b47e +PT= 51622d00b4fc0252fe4b759b6cd990c8affafd8cf361a683 +CT= 41849a5da1ce1b35fec02901137c83dfac1fe56c66ed028b +TEST= 35 +KEY= bea9ff0779bab7256cb349d2364543de6c1c244dfeb9b6f5 +PT= 41849a5da1ce1b35fec02901137c83dfac1fe56c66ed028b +CT= 438ad9d641137baf69ac9f8d69eaa27ed2fb706ac8e4d021 +TEST= 36 +KEY= fd2326d138a9cc8a051fd65f5fafe1a0bee75427365d66d4 +PT= 438ad9d641137baf69ac9f8d69eaa27ed2fb706ac8e4d021 +CT= fe1fae0017c04b8a35ffabe081bcc968d676b73fa75b0920 +TEST= 37 +KEY= 033c88d12f69870030e07dbfde1328c86891e31891066ff4 +PT= fe1fae0017c04b8a35ffabe081bcc968d676b73fa75b0920 +CT= 43002c4880b5541de5cd41d93acd93fd013be2972adf7d50 +TEST= 38 +KEY= 403ca499afdcd31dd52d3c66e4debb3569aa018fbbd912a4 +PT= 43002c4880b5541de5cd41d93acd93fd013be2972adf7d50 +CT= bd5cbf9a5bbc62ffdf47477393e5e66c3d2ee42cfec352b7 +TEST= 39 +KEY= fd601b03f460b1e20a6a7b15773b5d595484e5a3451a4013 +PT= bd5cbf9a5bbc62ffdf47477393e5e66c3d2ee42cfec352b7 +CT= 5fcbb7dd1818ee569a3aec433d04d79a9a22563fb4a2f158 +TEST= 40 +KEY= a2abacdeec785fb4905097564a3f8ac3cea6b39cf1b8b14b +PT= 5fcbb7dd1818ee569a3aec433d04d79a9a22563fb4a2f158 +CT= 65d3c8cd21dd147bf9b77dd08353aa30a7f4b6c786b93910 +TEST= 41 +KEY= c7786413cda54bcf69e7ea86c96c20f36952055b7701885b +PT= 65d3c8cd21dd147bf9b77dd08353aa30a7f4b6c786b93910 +CT= 32c0a84220bb825fac44fa0c56b974149afa085bf2636a65 +TEST= 42 +KEY= f5b8cc51ed1ec990c5a3108a9fd554e7f3a80d008562e23e +PT= 32c0a84220bb825fac44fa0c56b974149afa085bf2636a65 +CT= 787e7b0106f63daee46ee3c0740544b974c63787d9e32b75 +TEST= 43 +KEY= 8dc6b750ebe8f43e21cdf34aebd0105e876e3a875c81c94b +PT= 787e7b0106f63daee46ee3c0740544b974c63787d9e32b75 +CT= 085668bc0efc1f1956978745d2321209dd170c475d8ef939 +TEST= 44 +KEY= 8590dfece514eb27775a740f39e202575a7936c0010f3072 +PT= 085668bc0efc1f1956978745d2321209dd170c475d8ef939 +CT= 26c31de5f9acd49b5410313dc7430f39bfc549e59717b47d +TEST= 45 +KEY= a353c2091cb83fbc234a4532fea10d6ee5bc7f259618840f +PT= 26c31de5f9acd49b5410313dc7430f39bfc549e59717b47d +CT= c264f0550bc8454ab25010fef41039c1c9fb03fc707dd2d8 +TEST= 46 +KEY= 6137325c17707af6911a55cc0ab134af2c477cd9e66556d7 +PT= c264f0550bc8454ab25010fef41039c1c9fb03fc707dd2d8 +CT= 4ac005d62c95365d1d9e964cff70fb3b438949c874d16f1e +TEST= 47 +KEY= 2bf7378a3be54cab8c84c380f5c1cf946fce351192b439c9 +PT= 4ac005d62c95365d1d9e964cff70fb3b438949c874d16f1e +CT= 95e1c2806b40c5b644a046092f380ae207230d43825d8d09 +TEST= 48 +KEY= be16f50a50a5891dc8248589daf9c57668ed385210e9b4c0 +PT= 95e1c2806b40c5b644a046092f380ae207230d43825d8d09 +CT= 350a54ea43821ede15e5d0b391afbcca33408ea39e5f592f +TEST= 49 +KEY= 8b1ca1e0132797c3ddc1553a4b5679bc5badb6f18eb6edef +PT= 350a54ea43821ede15e5d0b391afbcca33408ea39e5f592f +CT= 137cea6eea0688742bd7ea2fe5bf44ba1cc75db142749df3 +TEST= 50 +KEY= 98604b8ef9211fb7f616bf15aee93d06476aeb40ccc2701c +PT= 137cea6eea0688742bd7ea2fe5bf44ba1cc75db142749df3 +CT= b7e307074cd4161aabd27dca2b582ad007f35529395371f8 +TEST= 51 +KEY= 2f834c89b5f509ad5dc4c2df85b117d64099be69f59101e4 +PT= b7e307074cd4161aabd27dca2b582ad007f35529395371f8 +CT= eb710dce053729b97f728ee62d573062194a9556d9c8ab9c +TEST= 52 +KEY= c4f24147b0c2201422b64c39a8e627b459d32b3f2c59aa78 +PT= eb710dce053729b97f728ee62d573062194a9556d9c8ab9c +CT= 6513719c448c6ee4ec6f38dce95bd04bf0774539c8cb2739 +TEST= 53 +KEY= a1e130dbf44e4ef0ced974e541bdf7ffa9a46e06e4928d41 +PT= 6513719c448c6ee4ec6f38dce95bd04bf0774539c8cb2739 +CT= de0e6716126601dc0f6d73f5b1463a3d452df265b3a54d95 +TEST= 54 +KEY= 7fef57cde6284f2cc1b40710f0fbcdc2ec899c635737c0d4 +PT= de0e6716126601dc0f6d73f5b1463a3d452df265b3a54d95 +CT= a6e5bcf39f0616087e257065256629cb02abaac9c1305567 +TEST= 55 +KEY= d90aeb3e792e5924bf917775d59de409ee2236aa960795b3 +PT= a6e5bcf39f0616087e257065256629cb02abaac9c1305567 +CT= 42ad195f1e0b2b78cb2aa98fd06557ad7400f6c20b17a6c3 +TEST= 56 +KEY= 9ba7f2616725725c74bbdefa05f8b3a49a22c0689d103370 +PT= 42ad195f1e0b2b78cb2aa98fd06557ad7400f6c20b17a6c3 +CT= d4ff19569431c780a6823428db913adb7427a86b2022f1a4 +TEST= 57 +KEY= 4f58eb37f314b5dcd239ead2de69897fee056803bd32c2d4 +PT= d4ff19569431c780a6823428db913adb7427a86b2022f1a4 +CT= 6b153f117a2426198f628cbabe4baf000477a6779da8e215 +TEST= 58 +KEY= 244dd426893093c55d5b66686022267fea72ce74209a20c1 +PT= 6b153f117a2426198f628cbabe4baf000477a6779da8e215 +CT= 5568b7e80352fda744b922450b38f879029572387f8902bb +TEST= 59 +KEY= 712563ce8a626e6219e2442d6b1ade06e8e7bc4c5f13227a +PT= 5568b7e80352fda744b922450b38f879029572387f8902bb +CT= 3fabc20b09d65bebbd9d6d85c1b31d68f756360a07a33bb1 +TEST= 60 +KEY= 4e8ea1c583b43589a47f29a8aaa9c36e1fb18a4658b019cb +PT= 3fabc20b09d65bebbd9d6d85c1b31d68f756360a07a33bb1 +CT= cc5368fe0c664dd1b05ac86655b4b65609f6eba6ba39049d +TEST= 61 +KEY= 82ddc93b8fd278581425e1ceff1d7538164761e0e2891d56 +PT= cc5368fe0c664dd1b05ac86655b4b65609f6eba6ba39049d +CT= 46c6af2a3e98e5c2fffaa1db104a0f0000c1006e7a04f494 +TEST= 62 +KEY= c41b6611b14a9d9aebdf4015ef577a381686618e988de9c2 +PT= 46c6af2a3e98e5c2fffaa1db104a0f0000c1006e7a04f494 +CT= 3a201323b40dfdbc4105cb6bc169bfffc99725293bb580ee +TEST= 63 +KEY= fe3b753205476026aada8b7e2e3ec5c7df1144a7a338692c +PT= 3a201323b40dfdbc4105cb6bc169bfffc99725293bb580ee +CT= b84ae657edbabd7b41c3b7fedb3d6be5c0e4122c97ea507d +TEST= 64 +KEY= 46719365e8fddd5deb193c80f503ae221ff5568b34d23951 +PT= b84ae657edbabd7b41c3b7fedb3d6be5c0e4122c97ea507d +CT= 437db5358df82234fab567358fca3eac7c4c192ed510bcac +TEST= 65 +KEY= 050c26506505ff6911ac5bb57ac9908e63b94fa5e1c285fd +PT= 437db5358df82234fab567358fca3eac7c4c192ed510bcac +CT= 9c186fbd24122889ad5188a0dec3827234c976ffcdc93fba +TEST= 66 +KEY= 991449ed4117d7e0bcfdd315a40a12fc5770395a2c0bba47 +PT= 9c186fbd24122889ad5188a0dec3827234c976ffcdc93fba +CT= 9fb6f5710b9cfdf7fea5f11e3e23b1f11cadde9b288eb92b +TEST= 67 +KEY= 06a2bc9c4a8b2a174258220b9a29a30d4bdde7c10485036c +PT= 9fb6f5710b9cfdf7fea5f11e3e23b1f11cadde9b288eb92b +CT= d8df87703a9ea1adf9df2165f54c957248d4021ba59721b1 +TEST= 68 +KEY= de7d3bec70158bbabb87036e6f65367f0309e5daa11222dd +PT= d8df87703a9ea1adf9df2165f54c957248d4021ba59721b1 +CT= 3e5de72a7fa849b930a902dcc57556bf16216e432d6fef21 +TEST= 69 +KEY= e020dcc60fbdc2038b2e01b2aa1060c015288b998c7dcdfc +PT= 3e5de72a7fa849b930a902dcc57556bf16216e432d6fef21 +CT= 12157354971d0c6c05b426f6df74b3297eb8481accc7b5aa +TEST= 70 +KEY= f235af9298a0ce6f8e9a27447564d3e96b90c38340ba7856 +PT= 12157354971d0c6c05b426f6df74b3297eb8481accc7b5aa +CT= 9ee14ac9bd81f9a23cb7570c475a637ae264c5cdc8c83a71 +TEST= 71 +KEY= 6cd4e55b252137cdb22d7048323eb09389f4064e88724227 +PT= 9ee14ac9bd81f9a23cb7570c475a637ae264c5cdc8c83a71 +CT= d81e8e3df924f6c1f189432ff8abda4b4899f7d155e9b202 +TEST= 72 +KEY= b4ca6b66dc05c10c43a43367ca956ad8c16df19fdd9bf025 +PT= d81e8e3df924f6c1f189432ff8abda4b4899f7d155e9b202 +CT= 332d43680eefc1fdcdf6d7459cb0833f071d5c3bfdbf5d02 +TEST= 73 +KEY= 87e7280ed2ea00f18e52e4225625e9e7c670ada42024ad27 +PT= 332d43680eefc1fdcdf6d7459cb0833f071d5c3bfdbf5d02 +CT= ba453ac1036e20ae2385b014958f34db9058c64fb08569cd +TEST= 74 +KEY= 3da212cfd184205fadd75436c3aadd3c56286beb90a1c4ea +PT= ba453ac1036e20ae2385b014958f34db9058c64fb08569cd +CT= e3787f3aba0a57f760eea42e3c61c1eebf5619efd833bd49 +TEST= 75 +KEY= deda6df56b8e77a8cd39f018ffcb1cd2e97e7204489279a3 +PT= e3787f3aba0a57f760eea42e3c61c1eebf5619efd833bd49 +CT= 7d6d5ecc910a9df71445a07bfdccc079c27b3d6568cb1874 +TEST= 76 +KEY= a3b73339fa84ea5fd97c50630207dcab2b054f61205961d7 +PT= 7d6d5ecc910a9df71445a07bfdccc079c27b3d6568cb1874 +CT= 23da8d7094fa8faf33ea075ed39a547ad553ed9bf835835c +TEST= 77 +KEY= 806dbe496e7e65f0ea96573dd19d88d1fe56a2fad86ce28b +PT= 23da8d7094fa8faf33ea075ed39a547ad553ed9bf835835c +CT= 57b08d5716dad66b9198195da32fe6f22cc7d50d8262d1b0 +TEST= 78 +KEY= d7dd331e78a4b39b7b0e4e6072b26e23d29177f75a0e333b +PT= 57b08d5716dad66b9198195da32fe6f22cc7d50d8262d1b0 +CT= 0d32656787f7487cf3ecc23a2f4b96ee20f835b7c691abee +TEST= 79 +KEY= daef5679ff53fbe788e28c5a5df9f8cdf26942409c9f98d5 +PT= 0d32656787f7487cf3ecc23a2f4b96ee20f835b7c691abee +CT= b97b476f7f9f257d96ad594c90f69e8c7bc6ed741d8faeba +TEST= 80 +KEY= 6394111680ccde9a1e4fd516cd0f664189afaf348110366f +PT= b97b476f7f9f257d96ad594c90f69e8c7bc6ed741d8faeba +CT= 5631128645d7416cfd4ced7fcd1255394d956049e41a92d9 +TEST= 81 +KEY= 35a50390c51b9ff6e3033869001d3378c43acf7d650aa4b6 +PT= 5631128645d7416cfd4ced7fcd1255394d956049e41a92d9 +CT= 298a3d028e0c0db52fae1ea4a1741661d488e6a2b7d4ed3c +TEST= 82 +KEY= 1c2f3e924b179243ccad26cda169251910b229dfd2de498a +PT= 298a3d028e0c0db52fae1ea4a1741661d488e6a2b7d4ed3c +CT= b6def8013db885d1cc024abf80b946e436222e0b24b7a43c +TEST= 83 +KEY= aaf1c69376af179200af6c7221d063fd269007d4f669edb6 +PT= b6def8013db885d1cc024abf80b946e436222e0b24b7a43c +CT= d794f58dac755629256d87c856f4c132040c38c235922268 +TEST= 84 +KEY= 7d65331edada41bb25c2ebba7724a2cf229c3f16c3fbcfde +PT= d794f58dac755629256d87c856f4c132040c38c235922268 +CT= 7ec016ba850b63ce7ba3640535b55b55f03a34c05dfc0cbe +TEST= 85 +KEY= 03a525a45fd122755e618fbf4291f99ad2a60bd69e07c360 +PT= 7ec016ba850b63ce7ba3640535b55b55f03a34c05dfc0cbe +CT= b186032150d769a87b659afabecf786065917ad24e14e4c3 +TEST= 86 +KEY= b22326850f064bdd25041545fc5e81fab7377104d01327a3 +PT= b186032150d769a87b659afabecf786065917ad24e14e4c3 +CT= f5f12582605e27a5b5f4d4720eba84eaa746e7029c75ca1d +TEST= 87 +KEY= 47d203076f586c7890f0c137f2e40510107196064c66edbe +PT= f5f12582605e27a5b5f4d4720eba84eaa746e7029c75ca1d +CT= 4781fbae3abc2873417cb1f4d8f5288d1b75351cba5d1c18 +TEST= 88 +KEY= 0053f8a955e4440bd18c70c32a112d9d0b04a31af63bf1a6 +PT= 4781fbae3abc2873417cb1f4d8f5288d1b75351cba5d1c18 +CT= 952f076db6024b0df2dd59666d8a57928d41d7d7adb2fcab +TEST= 89 +KEY= 957cffc4e3e60f06235129a5479b7a0f864574cd5b890d0d +PT= 952f076db6024b0df2dd59666d8a57928d41d7d7adb2fcab +CT= db46fc5e36dd40013cdf72ca6e0d3d80f46852d6ecd2a539 +TEST= 90 +KEY= 4e3a039ad53b4f071f8e5b6f2996478f722d261bb75ba834 +PT= db46fc5e36dd40013cdf72ca6e0d3d80f46852d6ecd2a539 +CT= b608132fad424e6d9363ae38b7d4db7573951985e1b91050 +TEST= 91 +KEY= f83210b57879016a8cedf5579e429cfa01b83f9e56e2b864 +PT= b608132fad424e6d9363ae38b7d4db7573951985e1b91050 +CT= c92fa1a6166969f8a4e22c92750f7f303c8aab4dcdd70829 +TEST= 92 +KEY= 311db1136e106892280fd9c5eb4de3ca3d3294d39b35b04d +PT= c92fa1a6166969f8a4e22c92750f7f303c8aab4dcdd70829 +CT= 4432cd754439569faae3db19ca280726c5e3cf488bfedbed +TEST= 93 +KEY= 752f7c662a293e0d82ec02dc2165e4ecf8d15b9b10cb6ba0 +PT= 4432cd754439569faae3db19ca280726c5e3cf488bfedbed +CT= ec4b6f77dd6d996b5302fda8b521916140e06bb2c2217bba +TEST= 94 +KEY= 99641311f744a766d1eeff749444758db8313029d2ea101a +PT= ec4b6f77dd6d996b5302fda8b521916140e06bb2c2217bba +CT= 3dc189b229ec60eba5addb93399716b9ebf4894cacce4e04 +TEST= 95 +KEY= a4a59aa3dea8c78d744324e7add3633453c5b9657e245e1e +PT= 3dc189b229ec60eba5addb93399716b9ebf4894cacce4e04 +CT= c371a3248e865ce0f0e555ef9b0dd45c175db757a390bd54 +TEST= 96 +KEY= 67d43987502e9b6d84a6710836deb76844980e32ddb4e34a +PT= c371a3248e865ce0f0e555ef9b0dd45c175db757a390bd54 +CT= 10d6d50edac05fe234f19e11d200dfcffaa54b052ce4b7e9 +TEST= 97 +KEY= 7702ec898aeec48fb057ef19e4de68a7be3d4537f15054a3 +PT= 10d6d50edac05fe234f19e11d200dfcffaa54b052ce4b7e9 +CT= 168ba253fe6f54ac177b4567b97d4a19208b09223d8035d0 +TEST= 98 +KEY= 61894eda74819023a72caa7e5da322be9eb64c15ccd06173 +PT= 168ba253fe6f54ac177b4567b97d4a19208b09223d8035d0 +CT= f079c6ba8155ef610f7ea0965fad87a6d32f55a01f669ac6 +TEST= 99 +KEY= 91f08860f5d47f42a8520ae8020ea5184d9919b5d3b6fbb5 +PT= f079c6ba8155ef610f7ea0965fad87a6d32f55a01f669ac6 +CT= 2e8bf7417e4e8f16f1acce3c8b0c643b590042fc69205fa9 +TEST= 100 +KEY= bf7b7f218b9af05459fec4d48902c12314995b49ba96a41c +PT= 2e8bf7417e4e8f16f1acce3c8b0c643b590042fc69205fa9 +CT= 257531e776e3d22da9ae7ae12b0c626a047a740acb5cc463 +TEST= 101 +KEY= 9a0e4ec6fd792279f050be35a20ea34910e32f4371ca607f +PT= 257531e776e3d22da9ae7ae12b0c626a047a740acb5cc463 +CT= 30fae388f11f5dbfd9647db0f3ac11364a68dfd604063eeb +TEST= 102 +KEY= aaf4ad4e0c667fc62934c38551a2b27f5a8bf09575cc5e94 +PT= 30fae388f11f5dbfd9647db0f3ac11364a68dfd604063eeb +CT= ee275d767165938a32482df2bbaa0072f170019ab171a8f5 +TEST= 103 +KEY= 44d3f0387d03ec4c1b7cee77ea08b20dabfbf10fc4bdf661 +PT= ee275d767165938a32482df2bbaa0072f170019ab171a8f5 +CT= 181e887ba159a764a8e4b2a3dc347efcdb2c93773409ab6a +TEST= 104 +KEY= 5ccd7843dc5a4b28b3985cd4363cccf170d76278f0b45d0b +PT= 181e887ba159a764a8e4b2a3dc347efcdb2c93773409ab6a +CT= 538252b1d2bc4110deab41e162cff4691b062526d7440ffe +TEST= 105 +KEY= 0f4f2af20ee60a386d331d3554f338986bd1475e27f052f5 +PT= 538252b1d2bc4110deab41e162cff4691b062526d7440ffe +CT= dd4698f23df777c12770e426b9f2e5d63d16cbc01f06ea3d +TEST= 106 +KEY= d209b20033117df94a43f913ed01dd4e56c78c9e38f6b8c8 +PT= dd4698f23df777c12770e426b9f2e5d63d16cbc01f06ea3d +CT= 240a207df9ec4f3ae3080baccacc1d2ef1174cdeb83e67bd +TEST= 107 +KEY= f603927dcafd32c3a94bf2bf27cdc060a7d0c04080c8df75 +PT= 240a207df9ec4f3ae3080baccacc1d2ef1174cdeb83e67bd +CT= a60e0c795f2c0d7611aefb61671905022cba7473d1cf85de +TEST= 108 +KEY= 500d9e0495d13fb5b8e509de40d4c5628b6ab43351075aab +PT= a60e0c795f2c0d7611aefb61671905022cba7473d1cf85de +CT= 72902b789ae6ae66c3e2e878a4de38e2999810c34f761976 +TEST= 109 +KEY= 229db57c0f3791d37b07e1a6e40afd8012f2a4f01e7143dd +PT= 72902b789ae6ae66c3e2e878a4de38e2999810c34f761976 +CT= 3cc87cddb3cfe6dfdb7cc53ebd1a470d980cc7360e8ffbb8 +TEST= 110 +KEY= 1e55c9a1bcf8770ca07b24985910ba8d8afe63c610feb865 +PT= 3cc87cddb3cfe6dfdb7cc53ebd1a470d980cc7360e8ffbb8 +CT= 1fc9b4deceb7f47d5e56b1f728382efc5abef38bf8395e83 +TEST= 111 +KEY= 019c7d7f724f8371fe2d956f71289471d040904de8c7e6e6 +PT= 1fc9b4deceb7f47d5e56b1f728382efc5abef38bf8395e83 +CT= ecf227e6082b3b61d9b1604bb9b4ef0b8e6b22a4aa391aa4 +TEST= 112 +KEY= ed6e5a997a64b810279cf524c89c7b7a5e2bb2e942fefc42 +PT= ecf227e6082b3b61d9b1604bb9b4ef0b8e6b22a4aa391aa4 +CT= d1b2679c1826e203f67c964713f52a4169b9f5f1f99eaadd +TEST= 113 +KEY= 3cdc3d0562425a13d1e06363db69513b37924718bb60569f +PT= d1b2679c1826e203f67c964713f52a4169b9f5f1f99eaadd +CT= 1d133f8a225d6c946eb47adfa5090c797e619ddac73d77df +TEST= 114 +KEY= 21cf028f401f3687bf5419bc7e605d4249f3dac27c5d2140 +PT= 1d133f8a225d6c946eb47adfa5090c797e619ddac73d77df +CT= 81674b9d0354424a0eb27b6f326bbefb818bd97a1fea8cee +TEST= 115 +KEY= a0a84912434b74cdb1e662d34c0be3b9c87803b863b7adae +PT= 81674b9d0354424a0eb27b6f326bbefb818bd97a1fea8cee +CT= b98cd1bf69f6081e48c4fb4e0a92c5a9303bf1e2e0cc1fe9 +TEST= 116 +KEY= 192498ad2abd7cd3f922999d46992610f843f25a837bb247 +PT= b98cd1bf69f6081e48c4fb4e0a92c5a9303bf1e2e0cc1fe9 +CT= a790fc29ed3e5f5ebdca8b2a8731e5867b50eb4f7132ddc9 +TEST= 117 +KEY= beb46484c783238d44e812b7c1a8c39683131915f2496f8e +PT= a790fc29ed3e5f5ebdca8b2a8731e5867b50eb4f7132ddc9 +CT= ca1d60517d6d898c8db05ee225111e1fdc6ad05fd131e723 +TEST= 118 +KEY= 74a904d5baeeaa01c9584c55e4b9dd895f79c94a237888ad +PT= ca1d60517d6d898c8db05ee225111e1fdc6ad05fd131e723 +CT= afe93166ecd18756c5c63e7a847f183907bda3795fd9bc0b +TEST= 119 +KEY= db4035b3563f2d570c9e722f60c6c5b058c46a337ca134a6 +PT= afe93166ecd18756c5c63e7a847f183907bda3795fd9bc0b +CT= 3b67cdcb0c7ece52dbb9bdc3bea6523d2a4febfb3b710c98 +TEST= 120 +KEY= e027f8785a41e305d727cfecde60978d728b81c847d0383e +PT= 3b67cdcb0c7ece52dbb9bdc3bea6523d2a4febfb3b710c98 +CT= 10806da64f6feb8e38e13e66d171ead3bf38f10a9aa07710 +TEST= 121 +KEY= f0a795de152e088befc6f18a0f117d5ecdb370c2dd704f2e +PT= 10806da64f6feb8e38e13e66d171ead3bf38f10a9aa07710 +CT= 28ee973198d3ed10faed18ada38f44e66994028152860f90 +TEST= 122 +KEY= d84902ef8dfde59b152be927ac9e39b8a42772438ff640be +PT= 28ee973198d3ed10faed18ada38f44e66994028152860f90 +CT= 32f02046728c3621916c1769431e2954839f35b04b98aace +TEST= 123 +KEY= eab922a9ff71d3ba8447fe4eef8010ec27b847f3c46eea70 +PT= 32f02046728c3621916c1769431e2954839f35b04b98aace +CT= 9ac908f74219ff71910c84179efb6a381651bfe303e98fde +TEST= 124 +KEY= 70702a5ebd682ccb154b7a59717b7ad431e9f810c78765ae +PT= 9ac908f74219ff71910c84179efb6a381651bfe303e98fde +CT= e973e552a3c31e6293ddfa9328e51cea52596f54addb1f08 +TEST= 125 +KEY= 9903cf0c1eab32a9869680ca599e663e63b097446a5c7aa6 +PT= e973e552a3c31e6293ddfa9328e51cea52596f54addb1f08 +CT= deb0719a6fdcd11f77fe45c7e711073423218d88d7abf492 +TEST= 126 +KEY= 47b3be967177e3b6f168c50dbe8f610a40911accbdf78e34 +PT= deb0719a6fdcd11f77fe45c7e711073423218d88d7abf492 +CT= 82a95038d19cff5530b4d4a52f4fd65415d0e4aaefeafb78 +TEST= 127 +KEY= c51aeeaea0eb1ce3c1dc11a891c0b75e5541fe66521d754c +PT= 82a95038d19cff5530b4d4a52f4fd65415d0e4aaefeafb78 +CT= a99e5461a5ee0e8c70d642ba2b12e6e2216800db58e4ec66 +TEST= 128 +KEY= 6c84bacf0505126fb10a5312bad251bc7429febd0af9992a +PT= a99e5461a5ee0e8c70d642ba2b12e6e2216800db58e4ec66 +CT= a208c5076e32fcf2c0cb666e76ca1987ff7ddcfbf2b121b4 +TEST= 129 +KEY= ce8c7fc86b37ee9d71c1357ccc18483b8b542246f848b89e +PT= a208c5076e32fcf2c0cb666e76ca1987ff7ddcfbf2b121b4 +CT= c17e58634e791b20f282f98211e634d00d51a61bcaf8e690 +TEST= 130 +KEY= 0ff227ab254ef5bd8343ccfeddfe7ceb8605845d32b05e0e +PT= c17e58634e791b20f282f98211e634d00d51a61bcaf8e690 +CT= 12cde3fbd6008281e29b141d146b5fc0b5b40089af353864 +TEST= 131 +KEY= 1d3fc450f34e773c61d8d8e3c995232b33b184d49d85666a +PT= 12cde3fbd6008281e29b141d146b5fc0b5b40089af353864 +CT= eeefa6a3a50f6c7dbc2ba0ea95eb690fa98b0e02f2f0ec1d +TEST= 132 +KEY= f3d062f356411b41ddf378095c7e4a249a3a8ad66f758a77 +PT= eeefa6a3a50f6c7dbc2ba0ea95eb690fa98b0e02f2f0ec1d +CT= e5d2db4b39f7c625cb75d8dcc678ca617ddae334e58ce642 +TEST= 133 +KEY= 1602b9b86fb6dd641686a0d59a068045e7e069e28af96c35 +PT= e5d2db4b39f7c625cb75d8dcc678ca617ddae334e58ce642 +CT= 8c8224743a2cc76343cd1710c1849650a2444e2ab63488d4 +TEST= 134 +KEY= 9a809dcc559a1a07554bb7c55b82161545a427c83ccde4e1 +PT= 8c8224743a2cc76343cd1710c1849650a2444e2ab63488d4 +CT= 29c7c09c7730e72ee0afe9d5309ea22bbf029c35e787c2bb +TEST= 135 +KEY= b3475d5022aafd29b5e45e106b1cb43efaa6bbfddb4a265a +PT= 29c7c09c7730e72ee0afe9d5309ea22bbf029c35e787c2bb +CT= acb4f7fbe9d0e9eba08628400da4e4ca0088b7155eecb9ef +TEST= 136 +KEY= 1ff3aaabcb7a14c21562765066b850f4fa2e0ce885a69fb5 +PT= acb4f7fbe9d0e9eba08628400da4e4ca0088b7155eecb9ef +CT= 06b591d46dc779db315a57c1a66e01ce0d0ed9660b762910 +TEST= 137 +KEY= 19463b7fa6bd6d1924382191c0d6513af720d58e8ed0b6a5 +PT= 06b591d46dc779db315a57c1a66e01ce0d0ed9660b762910 +CT= a84695bb92e3de1c524010d5955dfa9f52480a59ff6fd0be +TEST= 138 +KEY= b100aec4345eb30576783144558baba5a568dfd771bf661b +PT= a84695bb92e3de1c524010d5955dfa9f52480a59ff6fd0be +CT= 949e3cbe89f33904d45a64383af75681e7fe53498691b6dd +TEST= 139 +KEY= 259e927abdad8a01a222557c6f7cfd2442968c9ef72ed0c6 +PT= 949e3cbe89f33904d45a64383af75681e7fe53498691b6dd +CT= f96cfe4e59d632d4cec80f4cec9207fc79cca328a537ceb2 +TEST= 140 +KEY= dcf26c34e47bb8d56cea5a3083eefad83b5a2fb652191e74 +PT= f96cfe4e59d632d4cec80f4cec9207fc79cca328a537ceb2 +CT= 765e13513c200dcb538ec9f14d48be9f9186e4bcfe5f6af6 +TEST= 141 +KEY= aaac7f65d85bb51e3f6493c1cea64447aadccb0aac467482 +PT= 765e13513c200dcb538ec9f14d48be9f9186e4bcfe5f6af6 +CT= a72a4ef7b9c3b865efe3905946b1ca647f997518b0d41fc3 +TEST= 142 +KEY= 0d86319261980d7bd087039888178e23d545be121c926b41 +PT= a72a4ef7b9c3b865efe3905946b1ca647f997518b0d41fc3 +CT= 814eb042591f409d6ece452a4c3f12e3aadb4450dfddf0a0 +TEST= 143 +KEY= 8cc881d038874de6be4946b2c4289cc07f9efa42c34f9be1 +PT= 814eb042591f409d6ece452a4c3f12e3aadb4450dfddf0a0 +CT= cc388b5594b696f2774bd633597657ba3328755f90e7d5b4 +TEST= 144 +KEY= 40f00a85ac31db14c90290819d5ecb7a4cb68f1d53a84e55 +PT= cc388b5594b696f2774bd633597657ba3328755f90e7d5b4 +CT= 2027907d0cf840b5bbaf441f5292ce67962d31bc38b2a503 +TEST= 145 +KEY= 60d79af8a0c99ba172add49ecfcc051dda9bbea16b1aeb56 +PT= 2027907d0cf840b5bbaf441f5292ce67962d31bc38b2a503 +CT= 6bc6c646bd644a759d104e7fb832c2a63b18fc7c553ef12c +TEST= 146 +KEY= 0b115cbe1dadd1d4efbd9ae177fec7bbe18342dd3e241a7a +PT= 6bc6c646bd644a759d104e7fb832c2a63b18fc7c553ef12c +CT= ec60a1d048a5865df30c6a6ab35ec323a73f613cda6ad473 +TEST= 147 +KEY= e771fd6e550857891cb1f08bc4a0049846bc23e1e44ece09 +PT= ec60a1d048a5865df30c6a6ab35ec323a73f613cda6ad473 +CT= 89d6da0631707eda5246027169f12e4b22c964f92b5d55d8 +TEST= 148 +KEY= 6ea72768647829534ef7f2faad512ad364754718cf139bd1 +PT= 89d6da0631707eda5246027169f12e4b22c964f92b5d55d8 +CT= 378d03a63d6a4efe25b0486c1812e455279cf3510a5287eb +TEST= 149 +KEY= 592a24ce591267ad6b47ba96b543ce8643e9b449c5411c3a +PT= 378d03a63d6a4efe25b0486c1812e455279cf3510a5287eb +CT= 89fda90b7d35d200b8329f092f0b22d497f122113e9d7e90 +TEST= 150 +KEY= d0d78dc52427b5add375259f9a48ec52d4189658fbdc62aa +PT= 89fda90b7d35d200b8329f092f0b22d497f122113e9d7e90 +CT= 257ff65dd6c26f78290366c276c34675669c8a54f0ae7466 +TEST= 151 +KEY= f5a87b98f2e5dad5fa76435dec8baa27b2841c0c0b7216cc +PT= 257ff65dd6c26f78290366c276c34675669c8a54f0ae7466 +CT= 8557f227704beb145430dc646e005509b0d952d94e2b07e6 +TEST= 152 +KEY= 70ff89bf82ae31c1ae469f39828bff2e025d4ed54559112a +PT= 8557f227704beb145430dc646e005509b0d952d94e2b07e6 +CT= cf4a93e1fbd22ac2f3bc1702ea353289fa479cf77a914c5c +TEST= 153 +KEY= bfb51a5e797c1b035dfa883b68becda7f81ad2223fc85d76 +PT= cf4a93e1fbd22ac2f3bc1702ea353289fa479cf77a914c5c +CT= 2b1825add535b35e66a20296906747c3b3e354e1f30718cc +TEST= 154 +KEY= 94ad3ff3ac49a85d3b588aadf8d98a644bf986c3cccf45ba +PT= 2b1825add535b35e66a20296906747c3b3e354e1f30718cc +CT= 8b867b19ab2584eb03d1d672c5af3efd5e09dcfceb6e6469 +TEST= 155 +KEY= 1f2b44ea076c2cb638895cdf3d76b49915f05a3f27a121d3 +PT= 8b867b19ab2584eb03d1d672c5af3efd5e09dcfceb6e6469 +CT= 763af8427e5c84d44ad51bdce146649955d71be209b1dfef +TEST= 156 +KEY= 6911bca87930a862725c4703dc30d000402741dd2e10fe3c +PT= 763af8427e5c84d44ad51bdce146649955d71be209b1dfef +CT= 1e6f7c8684a05c2c34bd2b4a23241debb2076df400aac575 +TEST= 157 +KEY= 777ec02efd90f44e46e16c49ff14cdebf2202c292eba3b49 +PT= 1e6f7c8684a05c2c34bd2b4a23241debb2076df400aac575 +CT= 0b4d3f472f93cec32f56c42d162e30ca8e5dfe4f7c711be9 +TEST= 158 +KEY= 7c33ff69d2033a8d69b7a864e93afd217c7dd26652cb20a0 +PT= 0b4d3f472f93cec32f56c42d162e30ca8e5dfe4f7c711be9 +CT= 1422ef7796155531f9f8db9d9fc6d0b8287600f3ff6c06c9 +TEST= 159 +KEY= 6811101e44166fbc904f73f976fc2d99540bd295ada72669 +PT= 1422ef7796155531f9f8db9d9fc6d0b8287600f3ff6c06c9 +CT= 1f00dcc88ef1e180b64eb82e3d39af9853ff14f9ec705543 +TEST= 160 +KEY= 7711ccd6cae78e3c2601cbd74bc5820107f4c66c41d7732a +PT= 1f00dcc88ef1e180b64eb82e3d39af9853ff14f9ec705543 +CT= d9fe6d505648ee53cb6f981b10dad359638532050958702e +TEST= 161 +KEY= aeefa1869caf606fed6e53cc5b1f51586471f469488f0304 +PT= d9fe6d505648ee53cb6f981b10dad359638532050958702e +CT= 8c2577605db287311cc1b7bd5a7bc788e17f106a87c84a6c +TEST= 162 +KEY= 22cad6e6c11de75ef1afe471016496d0850ee403cf474968 +PT= 8c2577605db287311cc1b7bd5a7bc788e17f106a87c84a6c +CT= 39f00fd2348b82ee6c22133b87b4f3c046c784c849c04e40 +TEST= 163 +KEY= 1b3ad934f59665b09d8df74a86d06510c3c960cb86870728 +PT= 39f00fd2348b82ee6c22133b87b4f3c046c784c849c04e40 +CT= 7021e994b14065af46763f656363f3fa74c5c7ec66a49cdd +TEST= 164 +KEY= 6b1b30a044d6001fdbfbc82fe5b396eab70ca727e0239bf5 +PT= 7021e994b14065af46763f656363f3fa74c5c7ec66a49cdd +CT= 07ec9f93cfc3bfd206d282a1c764186980eb131f77f9c283 +TEST= 165 +KEY= 6cf7af338b15bfcddd294a8e22d78e8337e7b43897da5976 +PT= 07ec9f93cfc3bfd206d282a1c764186980eb131f77f9c283 +CT= 66fb08c26c6b4835541f4c2cf9866bec72d14c32d1efe185 +TEST= 166 +KEY= 0a0ca7f1e77ef7f8893606a2db51e56f4536f80a4635b8f3 +PT= 66fb08c26c6b4835541f4c2cf9866bec72d14c32d1efe185 +CT= 2447f59d69dbe6bd470c178f6c1723caf6b32d2d9236893d +TEST= 167 +KEY= 2e4b526c8ea51145ce3a112db746c6a5b385d527d40331ce +PT= 2447f59d69dbe6bd470c178f6c1723caf6b32d2d9236893d +CT= 634bab82bb82533bfd2ff34346a048e028644838cf8a2e12 +TEST= 168 +KEY= 4d00f9ee3527427e3315e26ef1e68e459be19d1f1b891fdc +PT= 634bab82bb82533bfd2ff34346a048e028644838cf8a2e12 +CT= 7a690dff4ce8e1a487888525ddec8d7f2566d446d768e7dc +TEST= 169 +KEY= 3769f41179cfa3dab49d674b2c0a033abe874959cce1f800 +PT= 7a690dff4ce8e1a487888525ddec8d7f2566d446d768e7dc +CT= 96ecb69b1e9d6c4e0da74dac07fb59ae973978d3d0408844 +TEST= 170 +KEY= a185428a6752cf94b93a2ae72bf15a9429be318a1ca17044 +PT= 96ecb69b1e9d6c4e0da74dac07fb59ae973978d3d0408844 +CT= 9b71c005e4a27ba7371fae7c485daab87ee9e7a8f2c44249 +TEST= 171 +KEY= 3af4828f83f0b4338e25849b63acf02c5757d622ee65320d +PT= 9b71c005e4a27ba7371fae7c485daab87ee9e7a8f2c44249 +CT= a49426c1aed34155dc89882554169d191259eb5e0ff941f4 +TEST= 172 +KEY= 9e60a44e2d23f56652ac0cbe37ba6d35450e3d7ce19c73f9 +PT= a49426c1aed34155dc89882554169d191259eb5e0ff941f4 +CT= 61ad3ad173a86e365099a02c509fe40798de6bd2d715926d +TEST= 173 +KEY= ffcd9e9f5e8b9b500235ac9267258932ddd056ae3689e194 +PT= 61ad3ad173a86e365099a02c509fe40798de6bd2d715926d +CT= c0a93dcc053889390557d8f58d21bc9f406c4c85ed99fa11 +TEST= 174 +KEY= 3f64a3535bb3126907627467ea0435ad9dbc1a2bdb101b85 +PT= c0a93dcc053889390557d8f58d21bc9f406c4c85ed99fa11 +CT= ed133883d7648996f4de6df61075dda840d4967cc0c736a4 +TEST= 175 +KEY= d2779bd08cd79bfff3bc1991fa71e805dd688c571bd72d21 +PT= ed133883d7648996f4de6df61075dda840d4967cc0c736a4 +CT= 66ed8f7a095cf2db9ccebb6132bd60b3f60df55d4eef27f4 +TEST= 176 +KEY= b49a14aa858b69246f72a2f0c8cc88b62b65790a55380ad5 +PT= 66ed8f7a095cf2db9ccebb6132bd60b3f60df55d4eef27f4 +CT= 857cec21d1ea01943db732fabb74daeef338f98d5287217c +TEST= 177 +KEY= 31e6f88b546168b052c5900a73b85258d85d808707bf2ba9 +PT= 857cec21d1ea01943db732fabb74daeef338f98d5287217c +CT= b44b971aaa21bd1b08fb8428f47486d90bc677ecd18ff558 +TEST= 178 +KEY= 85ad6f91fe40d5ab5a3e142287ccd481d39bf76bd630def1 +PT= b44b971aaa21bd1b08fb8428f47486d90bc677ecd18ff558 +CT= 002f5c6c2c7d37b1837d5cb6dd3385c56e01c153f941c5f1 +TEST= 179 +KEY= 858233fdd23de21ad94348945aff5144bd9a36382f711b00 +PT= 002f5c6c2c7d37b1837d5cb6dd3385c56e01c153f941c5f1 +CT= 635a2c3492892bff102b4a55330ca7be7136d167bb9830e3 +TEST= 180 +KEY= e6d81fc940b4c9e5c96802c169f3f6faccace75f94e92be3 +PT= 635a2c3492892bff102b4a55330ca7be7136d167bb9830e3 +CT= 3093b8e2f566411804067d0c79f8aadafd87a1c2fd3eb0bb +TEST= 181 +KEY= d64ba72bb5d288fdcd6e7fcd100b5c20312b469d69d79b58 +PT= 3093b8e2f566411804067d0c79f8aadafd87a1c2fd3eb0bb +CT= f6f5d4591fbb49e3d2673c53c6cd1f4a2003f7d05a320d8e +TEST= 182 +KEY= 20be7372aa69c11e1f09439ed6c6436a1128b14d33e596d6 +PT= f6f5d4591fbb49e3d2673c53c6cd1f4a2003f7d05a320d8e +CT= 9ceecdaab4799ff4480a854f0453d979df8b83422e48a40d +TEST= 183 +KEY= bc50bed81e105eea5703c6d1d2959a13cea3320f1dad32db +PT= 9ceecdaab4799ff4480a854f0453d979df8b83422e48a40d +CT= 61b11a2ba7de196450d7edc7b308b2aa90c39169a3a66628 +TEST= 184 +KEY= dde1a4f3b9ce478e07d42b16619d28b95e60a366be0b54f3 +PT= 61b11a2ba7de196450d7edc7b308b2aa90c39169a3a66628 +CT= b7ae6b403679d76e5f63ae9c4c7e9d9b845ed7517860a151 +TEST= 185 +KEY= 6a4fcfb38fb790e058b7858a2de3b522da3e7437c66bf5a2 +PT= b7ae6b403679d76e5f63ae9c4c7e9d9b845ed7517860a151 +CT= c969edd567c3054c4636f9b7d91392836b72dc4a21513217 +TEST= 186 +KEY= a3262266e87495ac1e817c3df4f027a1b14ca87de73ac7b5 +PT= c969edd567c3054c4636f9b7d91392836b72dc4a21513217 +CT= b1d3e41c82719679b4b1fa8580fd682d76ed03475298e78b +TEST= 187 +KEY= 12f5c67a6a0503d5aa3086b8740d4f8cc7a1ab3ab5a2203e +PT= b1d3e41c82719679b4b1fa8580fd682d76ed03475298e78b +CT= f966fab3e227e4745a2cb31c2adbf48d6215ea1d98b3b341 +TEST= 188 +KEY= eb933cc98822e7a1f01c35a45ed6bb01a5b441272d11937f +PT= f966fab3e227e4745a2cb31c2adbf48d6215ea1d98b3b341 +CT= c36baac2008c179a04be8707e1f9045e1acb8e34bfd98db5 +TEST= 189 +KEY= 28f8960b88aef03bf4a2b2a3bf2fbf5fbf7fcf1392c81eca +PT= c36baac2008c179a04be8707e1f9045e1acb8e34bfd98db5 +CT= 1d23c6c923080732453b66b5cf47c42d1d9802137c60a342 +TEST= 190 +KEY= 35db50c2aba6f709b199d41670687b72a2e7cd00eea8bd88 +PT= 1d23c6c923080732453b66b5cf47c42d1d9802137c60a342 +CT= 663d9fd5bf45842b75059e806131431aaba2517f481fbc27 +TEST= 191 +KEY= 53e6cf1714e37322c49c4a961159386809459c7fa6b701af +PT= 663d9fd5bf45842b75059e806131431aaba2517f481fbc27 +CT= ff2c5a2eaccc57509cff2cef0677cf98351a48bf1f093871 +TEST= 192 +KEY= acca9539b82f247258636679172ef7f03c5fd4c0b9be39de +PT= ff2c5a2eaccc57509cff2cef0677cf98351a48bf1f093871 +CT= ad6dedb9da97454f3ebc8bb2a17824d2ebbcb02be60fd054 +TEST= 193 +KEY= 01a7788062b8613d66dfedcbb656d322d7e364eb5fb1e98a +PT= ad6dedb9da97454f3ebc8bb2a17824d2ebbcb02be60fd054 +CT= 60a98ffd9913c676c9de7adcce474b1576b43c02d1e0548c +TEST= 194 +KEY= 610ef77dfbaba74baf01971778119837a15758e98e51bd06 +PT= 60a98ffd9913c676c9de7adcce474b1576b43c02d1e0548c +CT= d7b485b17d2894726bf1ea6a24f6cbc3cf0f04cfa08d3880 +TEST= 195 +KEY= b6ba72cc86833339c4f07d7d5ce753f46e585c262edc8586 +PT= d7b485b17d2894726bf1ea6a24f6cbc3cf0f04cfa08d3880 +CT= 9ce779a9e4a0c78ca84d523eb7ebe95afe6b01da3b6ad05f +TEST= 196 +KEY= 2a5d0b656223f4b56cbd2f43eb0cbaae90335dfc15b655d9 +PT= 9ce779a9e4a0c78ca84d523eb7ebe95afe6b01da3b6ad05f +CT= d1d520d7325ee72903ac5ca110c88d4bb15c0ae4ba641f68 +TEST= 197 +KEY= fb882bb2507d139c6f1173e2fbc437e5216f5718afd24ab1 +PT= d1d520d7325ee72903ac5ca110c88d4bb15c0ae4ba641f68 +CT= e088dd2bb55acea289f1f30b93c62a3f0dbc7e5b22ad5e8c +TEST= 198 +KEY= 1b00f699e527dd3ee6e080e968021dda2cd329438d7f143d +PT= e088dd2bb55acea289f1f30b93c62a3f0dbc7e5b22ad5e8c +CT= 8b61da00729ff6e94d19871af2b04a4bf0d291dbcbd50d50 +TEST= 199 +KEY= 90612c9997b82bd7abf907f39ab25791dc01b89846aa196d +PT= 8b61da00729ff6e94d19871af2b04a4bf0d291dbcbd50d50 +CT= 29d96dc68d88e22dc9639e7313b77baeba45f36a894b7136 +TEST= 200 +KEY= b9b8415f1a30c9fa629a998089052c3f66444bf2cfe1685b +PT= 29d96dc68d88e22dc9639e7313b77baeba45f36a894b7136 +CT= 29bb22588de801e40ed703c3fc2192f671a93ed99c0d64dc +TEST= 201 +KEY= 9003630797d8c81e6c4d9a437524bec917ed752b53ec0c87 +PT= 29bb22588de801e40ed703c3fc2192f671a93ed99c0d64dc +CT= 83672695d646d02e4210364682ccfa0e3d516ac1b3a66df7 +TEST= 202 +KEY= 13644592419e18302e5dac05f7e844c72abc1feae04a6170 +PT= 83672695d646d02e4210364682ccfa0e3d516ac1b3a66df7 +CT= 024bbddfa9d712ed68d7be6b2251eb774dfde353a21c55d1 +TEST= 203 +KEY= 112ff84de8490add468a126ed5b9afb06741fcb9425634a1 +PT= 024bbddfa9d712ed68d7be6b2251eb774dfde353a21c55d1 +CT= 9abb2034dee8bd3de47830c05b8d9038cc31219e5e157fbb +TEST= 204 +KEY= 8b94d87936a1b7e0a2f222ae8e343f88ab70dd271c434b1a +PT= 9abb2034dee8bd3de47830c05b8d9038cc31219e5e157fbb +CT= ed1f03f6c9f6ece29cc7d10de576cab49c8d9b937ca03852 +TEST= 205 +KEY= 668bdb8fff575b023e35f3a36b42f53c37fd46b460e37348 +PT= ed1f03f6c9f6ece29cc7d10de576cab49c8d9b937ca03852 +CT= 60333499dcfa2c00050a5425489498654849925be0ae193c +TEST= 206 +KEY= 06b8ef1623ad77023b3fa78623d66d597fb4d4ef804d6a74 +PT= 60333499dcfa2c00050a5425489498654849925be0ae193c +CT= 65de0af85e0fef35afbc61db7d42bae9ee64e3a4b0f47150 +TEST= 207 +KEY= 6366e5ee7da298379483c65d5e94d7b091d0374b30b91b24 +PT= 65de0af85e0fef35afbc61db7d42bae9ee64e3a4b0f47150 +CT= 93b5da70c6f1d3c356ae6860baed4a79d5eb969e62853fde +TEST= 208 +KEY= f0d33f9ebb534bf4c22dae3de4799dc9443ba1d5523c24fa +PT= 93b5da70c6f1d3c356ae6860baed4a79d5eb969e62853fde +CT= 965396b7bee559acc18c97e8a319c2095ddfb1b2da60c835 +TEST= 209 +KEY= 6680a92905b6125803a139d547605fc019e41067885ceccf +PT= 965396b7bee559acc18c97e8a319c2095ddfb1b2da60c835 +CT= 69bb922b894aad89b8be30a92c916390f786a32713040202 +TEST= 210 +KEY= 0f3b3b028cfcbfd1bb1f097c6bf13c50ee62b3409b58eecd +PT= 69bb922b894aad89b8be30a92c916390f786a32713040202 +CT= 086803bde2c31728ebbcedccc8f08b047f901e2f17529c01 +TEST= 211 +KEY= 075338bf6e3fa8f950a3e4b0a301b75491f2ad6f8c0a72cc +PT= 086803bde2c31728ebbcedccc8f08b047f901e2f17529c01 +CT= 01319a94d2f91b2a719d1456228fdd020bfef3f1b0424769 +TEST= 212 +KEY= 0662a22bbcc6b3d3213ef0e6818e6a569a0c5e9e3c4835a5 +PT= 01319a94d2f91b2a719d1456228fdd020bfef3f1b0424769 +CT= 9c7e132b749cf70046223cc3bb9acb29e5d94bbfcc7bc04b +TEST= 213 +KEY= 9a1cb100c85a44d3671ccc253a14a17f7fd51521f033f5ee +PT= 9c7e132b749cf70046223cc3bb9acb29e5d94bbfcc7bc04b +CT= d7e1e8418c52ca21c4cbe1bf1aa824953d4b5a1cd24ce787 +TEST= 214 +KEY= 4dfd594144088ef2a3d72d9a20bc85ea429e4f3d227f1269 +PT= d7e1e8418c52ca21c4cbe1bf1aa824953d4b5a1cd24ce787 +CT= 8ee3eea480f63255404b4d561c5f258b4234c46ce572f376 +TEST= 215 +KEY= c31eb7e5c4febca7e39c60cc3ce3a06100aa8b51c70de11f +PT= 8ee3eea480f63255404b4d561c5f258b4234c46ce572f376 +CT= 29143ff193042e1d9a283b6d584cfb672589488fcbbc90aa +TEST= 216 +KEY= ea0a881457fa92ba79b45ba164af5b062523c3de0cb171b5 +PT= 29143ff193042e1d9a283b6d584cfb672589488fcbbc90aa +CT= 1170100ea6ae75920ca6511163d5ac16605a8b05880d0b60 +TEST= 217 +KEY= fb7a981af154e72875120ab0077af710457948db84bc7ad5 +PT= 1170100ea6ae75920ca6511163d5ac16605a8b05880d0b60 +CT= 0f585f732e873df37d2b9c7459f9df92f77c6bc814187cf6 +TEST= 218 +KEY= f422c769dfd3dadb083996c45e832882b205231390a40623 +PT= 0f585f732e873df37d2b9c7459f9df92f77c6bc814187cf6 +CT= 6e7a402aecf10aebc507b4db76a4826932bfc513935f3a35 +TEST= 219 +KEY= 9a5887433322d030cd3e221f2827aaeb80bae60003fb3c16 +PT= 6e7a402aecf10aebc507b4db76a4826932bfc513935f3a35 +CT= 0a798499b9dd1ce5efe943575d1595312fae0b421a1718b4 +TEST= 220 +KEY= 902103da8affccd522d7614875323fdaaf14ed4219ec24a2 +PT= 0a798499b9dd1ce5efe943575d1595312fae0b421a1718b4 +CT= b3e014bd82735ee1e8ef6c22efa807037d783ece8b322523 +TEST= 221 +KEY= 23c11767088c9234ca380d6a9a9a38d9d26cd38c92de0181 +PT= b3e014bd82735ee1e8ef6c22efa807037d783ece8b322523 +CT= 91fee0a882b1c56d403d6089c0060da1698c0be5c779d706 +TEST= 222 +KEY= b23ff7cf8a3d57598a056de35a9c3578bbe0d86955a7d687 +PT= 91fee0a882b1c56d403d6089c0060da1698c0be5c779d706 +CT= e90b3dbfbd0c5de1ae517623ae2954118a9f899365884503 +TEST= 223 +KEY= 5b34ca7037310ab824541bc0f4b56169317f51fa302f9384 +PT= e90b3dbfbd0c5de1ae517623ae2954118a9f899365884503 +CT= 20ef60e521d7f63046b8c2559a8fc601a15d081311623df0 +TEST= 224 +KEY= 7bdbaa9516e6fc8862ecd9956e3aa768902259e9214dae74 +PT= 20ef60e521d7f63046b8c2559a8fc601a15d081311623df0 +CT= 80ad9a607b96cc70d60154c6e661462faf76c7c1ce37a03a +TEST= 225 +KEY= fb7630f56d7030f8b4ed8d53885be1473f549e28ef7a0e4e +PT= 80ad9a607b96cc70d60154c6e661462faf76c7c1ce37a03a +CT= e6391a780ac53d5360834859eb183e6ce376d40042209523 +TEST= 226 +KEY= 1d4f2a8d67b50dabd46ec50a6343df2bdc224a28ad5a9b6d +PT= e6391a780ac53d5360834859eb183e6ce376d40042209523 +CT= 6db54437d6f68b5da278788a68260237b78a8e2fb54a7ef5 +TEST= 227 +KEY= 70fa6ebab14386f67616bd800b65dd1c6ba8c4071810e598 +PT= 6db54437d6f68b5da278788a68260237b78a8e2fb54a7ef5 +CT= e2fcbad468918d56dfd82a82704ab5e5a942239737915c66 +TEST= 228 +KEY= 9206d46ed9d20ba0a9ce97027b2f68f9c2eae7902f81b9fe +PT= e2fcbad468918d56dfd82a82704ab5e5a942239737915c66 +CT= ee2269e87e97bc43c21d2e8b5fd81d4e82b35750c0d29e4d +TEST= 229 +KEY= 7c24bd86a745b7e36bd3b98924f775b74059b0c0ef5327b3 +PT= ee2269e87e97bc43c21d2e8b5fd81d4e82b35750c0d29e4d +CT= 6124e06469a4c55a0f7d2e4fb06995d1874ef9b2310e29b5 +TEST= 230 +KEY= 1d005de2cee172b964ae97c6949ee066c7174972de5d0e06 +PT= 6124e06469a4c55a0f7d2e4fb06995d1874ef9b2310e29b5 +CT= eb7cf501e9dcc242b6f5e359cf959bdb8b0d422fa8881b87 +TEST= 231 +KEY= f67ca8e3273db0fbd25b749f5b0b7bbd4c1a0b5d76d51581 +PT= eb7cf501e9dcc242b6f5e359cf959bdb8b0d422fa8881b87 +CT= 92a8a75a6aeaa5fe416d61c3e81214b34486e7eba4f8b350 +TEST= 232 +KEY= 64d40fb94dd715059336155cb3196f0e089cecb6d22da6d1 +PT= 92a8a75a6aeaa5fe416d61c3e81214b34486e7eba4f8b350 +CT= 830ec3942ff80b423040ed605b1ccb65f280ccfdf7c8ee97 +TEST= 233 +KEY= e7dacc2d622f1e47a376f83ce805a46bfa1c204b25e54846 +PT= 830ec3942ff80b423040ed605b1ccb65f280ccfdf7c8ee97 +CT= c179dccaa1435fd11eae51b084ac393b9c76055712f685eb +TEST= 234 +KEY= 26a310e7c36c4196bdd8a98c6ca99d50666a251c3713cdad +PT= c179dccaa1435fd11eae51b084ac393b9c76055712f685eb +CT= 74ff473abcd2b0672cf50d4f296581f36009ce6be0834cc6 +TEST= 235 +KEY= 525c57dd7fbef1f1912da4c345cc1ca30663eb77d790816b +PT= 74ff473abcd2b0672cf50d4f296581f36009ce6be0834cc6 +CT= 0bcf21b802f42d589300ad1747a4ecba4b13115dc5339969 +TEST= 236 +KEY= 599376657d4adca9022d09d40268f0194d70fa2a12a31802 +PT= 0bcf21b802f42d589300ad1747a4ecba4b13115dc5339969 +CT= 8d4d0f6283c6561cd17133b2b5e88255ca61be5817bb1d56 +TEST= 237 +KEY= d4de7907fe8c8ab5d35c3a66b780724c8711447205180554 +PT= 8d4d0f6283c6561cd17133b2b5e88255ca61be5817bb1d56 +CT= 9c42756eaaee42461fbaaa3fd96502bd7568c4c4ecd535d4 +TEST= 238 +KEY= 489c0c695462c8f3cce690596ee570f1f27980b6e9cd3080 +PT= 9c42756eaaee42461fbaaa3fd96502bd7568c4c4ecd535d4 +CT= 249fc3acd38ee02ef6a5f370511993a836bea5c30b3bc1e3 +TEST= 239 +KEY= 6c03cfc587ec28dd3a4363293ffce359c4c72575e2f6f163 +PT= 249fc3acd38ee02ef6a5f370511993a836bea5c30b3bc1e3 +CT= 00497c57597544c7a671e7ddb80a374560c983a74ac35849 +TEST= 240 +KEY= 6c4ab392de996c1a9c3284f487f6d41ca40ea6d2a835a92a +PT= 00497c57597544c7a671e7ddb80a374560c983a74ac35849 +CT= 259e4a8c9e0188872d6436bde8f1cb65f681224af7515efa +TEST= 241 +KEY= 49d4f91e4098e49db156b2496f071f79528f84985f64f7d0 +PT= 259e4a8c9e0188872d6436bde8f1cb65f681224af7515efa +CT= 9b65e54aad7c7aa12e63e6be7ed3d6a375d7dd4fb10817b9 +TEST= 242 +KEY= d2b11c54ede49e3c9f3554f711d4c9da275859d7ee6ce069 +PT= 9b65e54aad7c7aa12e63e6be7ed3d6a375d7dd4fb10817b9 +CT= b7d47bb78d4f485c8bda93901dfefd8da9189008954371d3 +TEST= 243 +KEY= 656567e360abd66014efc7670c2a34578e40c9df7b2f91ba +PT= b7d47bb78d4f485c8bda93901dfefd8da9189008954371d3 +CT= ebd4e0812ca86ba1be19bf90b64ce720232b3f9be336f8b8 +TEST= 244 +KEY= 8eb187624c03bdc1aaf678f7ba66d377ad6bf64498196902 +PT= ebd4e0812ca86ba1be19bf90b64ce720232b3f9be336f8b8 +CT= 1c0ffb3f3afdce9f05e357fcd9b777fb4e57f2d134ca8f09 +TEST= 245 +KEY= 92be7c5d76fe735eaf152f0b63d1a48ce33c0495acd3e60b +PT= 1c0ffb3f3afdce9f05e357fcd9b777fb4e57f2d134ca8f09 +CT= 60a6688d870675ca33b06e6407c5feeea58bdd2110041efe +TEST= 246 +KEY= f21814d0f1f806949ca5416f64145a6246b7d9b4bcd7f8f5 +PT= 60a6688d870675ca33b06e6407c5feeea58bdd2110041efe +CT= 2d7522907fb461763636345399a4f7199f916c72d20b049b +TEST= 247 +KEY= df6d36408e4c67e2aa93753cfdb0ad7bd926b5c66edcfc6e +PT= 2d7522907fb461763636345399a4f7199f916c72d20b049b +CT= 461a8b75204f132861ba2e2af56417a43b38e01a55dcdb3d +TEST= 248 +KEY= 9977bd35ae0374cacb295b1608d4badfe21e55dc3b002753 +PT= 461a8b75204f132861ba2e2af56417a43b38e01a55dcdb3d +CT= ad477b4c560213ec9b16385c3fb344e942745cec82fe890f +TEST= 249 +KEY= 3430c679f8016726503f634a3767fe36a06a0930b9feae5c +PT= ad477b4c560213ec9b16385c3fb344e942745cec82fe890f +CT= b7f38e554e06bea6a1239cf6d632e77177f8edab11d9d6d0 +TEST= 250 +KEY= 83c3482cb607d980f11cffbce1551947d792e49ba827788c +PT= b7f38e554e06bea6a1239cf6d632e77177f8edab11d9d6d0 +CT= b93a34b7bfda948f4510cfcb28f8fa58621874476fc22415 +TEST= 251 +KEY= 3af97c9b09dd4d0fb40c3077c9ade31fb58a90dcc7e55c99 +PT= b93a34b7bfda948f4510cfcb28f8fa58621874476fc22415 +CT= 3534826100a5e86e897126161ff37a8b766855ef11fd7e0c +TEST= 252 +KEY= 0fcdfefa0978a5613d7d1661d65e9994c3e2c533d6182295 +PT= 3534826100a5e86e897126161ff37a8b766855ef11fd7e0c +CT= aed57edb224292667d2a2b7782d8b2a258fabc457aa76b08 +TEST= 253 +KEY= a11880212b3a370740573d1654862b369b187976acbf499d +PT= aed57edb224292667d2a2b7782d8b2a258fabc457aa76b08 +CT= a549db4390ca05b72438a01a9c4ed7a9d4455b45fd2cea9c +TEST= 254 +KEY= 04515b62bbf032b0646f9d0cc8c8fc9f4f5d22335193a301 +PT= a549db4390ca05b72438a01a9c4ed7a9d4455b45fd2cea9c +CT= eb8ce5eb59e90eb0becd54f0805253669ec24642dbcfd61c +TEST= 255 +KEY= efddbe89e2193c00daa2c9fc489aaff9d19f64718a5c751d +PT= eb8ce5eb59e90eb0becd54f0805253669ec24642dbcfd61c +CT= c927c2ef6b74f6d6e64ac162a824692dc99358eff90e2fbe +TEST= 256 +KEY= 26fa7c66896dcad63ce8089ee0bec6d4180c3c9e73525aa3 +PT= c927c2ef6b74f6d6e64ac162a824692dc99358eff90e2fbe +CT= ffee6aaa3aa12e6b03c7298280c7b56e265ecb3d43fb46e6 +TEST= 257 +KEY= d91416ccb3cce4bd3f2f211c607973ba3e52f7a330a91c45 +PT= ffee6aaa3aa12e6b03c7298280c7b56e265ecb3d43fb46e6 +CT= d88dfceabfa1b69747b9a498a69c5cf6aac7871b3240cfe4 +TEST= 258 +KEY= 0199ea260c6d522a78968584c6e52f4c949570b802e9d3a1 +PT= d88dfceabfa1b69747b9a498a69c5cf6aac7871b3240cfe4 +CT= cb2e7de0b6c6504bcec844040a2732031cb1762f7378955b +TEST= 259 +KEY= cab797c6baab0261b65ec180ccc21d4f88240697719146fa +PT= cb2e7de0b6c6504bcec844040a2732031cb1762f7378955b +CT= 41b3acf14fc837cdf822db18b807f95d9c62e564864599f5 +TEST= 260 +KEY= 8b043b37f56335ac4e7c1a9874c5e4121446e3f3f7d4df0f +PT= 41b3acf14fc837cdf822db18b807f95d9c62e564864599f5 +CT= 3a811db824729cf64529df218d47766addbe0d93dfaefc72 +TEST= 261 +KEY= b185268fd111a95a0b55c5b9f9829278c9f8ee60287a237d +PT= 3a811db824729cf64529df218d47766addbe0d93dfaefc72 +CT= 9761c405795a608e5e27dd95c9f4022c8d2b349e7ef250b8 +TEST= 262 +KEY= 26e4e28aa84bc9d45572182c3076905444d3dafe568873c5 +PT= 9761c405795a608e5e27dd95c9f4022c8d2b349e7ef250b8 +CT= dadf20d6597c489abb3bc5cfa22c21c8940bbbc3e434ac77 +TEST= 263 +KEY= fc3bc25cf137814eee49dde3925ab19cd0d8613db2bcdfb2 +PT= dadf20d6597c489abb3bc5cfa22c21c8940bbbc3e434ac77 +CT= 5c865946cf200f7ffbd487a8bdba152e06c409db375d2f67 +TEST= 264 +KEY= a0bd9b1a3e178e31159d5a4b2fe0a4b2d61c68e685e1f0d5 +PT= 5c865946cf200f7ffbd487a8bdba152e06c409db375d2f67 +CT= 2b9188e0d40666d15725e38ab8398f61a8ddf688e382af11 +TEST= 265 +KEY= 8b2c13faea11e8e042b8b9c197d92bd37ec19e6e66635fc4 +PT= 2b9188e0d40666d15725e38ab8398f61a8ddf688e382af11 +CT= c1280ef446c32af943ca210c643525ed27232f1b0b7fc9d8 +TEST= 266 +KEY= 4a041d0eacd2c219017298cdf3ec0e3e59e2b1756d1c961c +PT= c1280ef446c32af943ca210c643525ed27232f1b0b7fc9d8 +CT= 7c2c1db3fba77b6ddbc6c4e422ee3be7f2a238c9ba1052e7 +TEST= 267 +KEY= 362800bd5775b974dab45c29d10235d9ab4089bcd70cc4fb +PT= 7c2c1db3fba77b6ddbc6c4e422ee3be7f2a238c9ba1052e7 +CT= ebec21455e375760c264bbacb08c4c26ab43eb19791c0462 +TEST= 268 +KEY= ddc421f80942ee1418d0e785618e79ff000362a5ae10c099 +PT= ebec21455e375760c264bbacb08c4c26ab43eb19791c0462 +CT= 0911b79c9e928959054c12ab08d0ff9c538e80645370e6c9 +TEST= 269 +KEY= d4d5966497d0674d1d9cf52e695e8663538de2c1fd602650 +PT= 0911b79c9e928959054c12ab08d0ff9c538e80645370e6c9 +CT= c90e71309cbe77c60bd23865144b3dd8f63cd1e913676706 +TEST= 270 +KEY= 1ddbe7540b6e108b164ecd4b7d15bbbba5b13328ee074156 +PT= c90e71309cbe77c60bd23865144b3dd8f63cd1e913676706 +CT= 9c6042f38484c757a4a4f88e4957234a2f13bbe9b57015fb +TEST= 271 +KEY= 81bba5a78fead7dcb2ea35c5344298f18aa288c15b7754ad +PT= 9c6042f38484c757a4a4f88e4957234a2f13bbe9b57015fb +CT= cd9d3db93be83e1e4026567faff165b2ac9191c3d5df642d +TEST= 272 +KEY= 4c26981eb402e9c2f2cc63ba9bb3fd43263319028ea83080 +PT= cd9d3db93be83e1e4026567faff165b2ac9191c3d5df642d +CT= 5abde6c1a6d0e11e43cc6a1df17178d3e5d1507404e2cb15 +TEST= 273 +KEY= 169b7edf12d208dcb10009a76ac28590c3e249768a4afb95 +PT= 5abde6c1a6d0e11e43cc6a1df17178d3e5d1507404e2cb15 +CT= a254d99b2440be4be9780f5da66188b57de50a651308f6a2 +TEST= 274 +KEY= b4cfa7443692b697587806facca30d25be07431399420d37 +PT= a254d99b2440be4be9780f5da66188b57de50a651308f6a2 +CT= 2d1399b51c6859d62ba9c234adb3fe1c371b5529128a0531 +TEST= 275 +KEY= 99dc3ef12afaef4173d1c4ce6110f339891c163a8bc80806 +PT= 2d1399b51c6859d62ba9c234adb3fe1c371b5529128a0531 +CT= c8fe4f5a11e3f116e905332123ba5c0aca24c6d96c6920ff +TEST= 276 +KEY= 512271ab3b191e579ad4f7ef42aaaf334338d0e3e7a128f9 +PT= c8fe4f5a11e3f116e905332123ba5c0aca24c6d96c6920ff +CT= 965a757a16d01fd0c860e667fbec72d98bc73fac9d3870f9 +TEST= 277 +KEY= c77804d12dc9018752b41188b946ddeac8ffef4f7a995800 +PT= 965a757a16d01fd0c860e667fbec72d98bc73fac9d3870f9 +CT= fb48c729afddb0c3a831649e30b2194460f5e768efcaafab +TEST= 278 +KEY= 3c30c3f88214b144fa85751689f4c4aea80a08279553f7ab +PT= fb48c729afddb0c3a831649e30b2194460f5e768efcaafab +CT= d41246db53d2863fb8ddb8a5f6d223f71cdc58d2d5529108 +TEST= 279 +KEY= e8228523d1c6377b4258cdb37f26e759b4d650f5400166a3 +PT= d41246db53d2863fb8ddb8a5f6d223f71cdc58d2d5529108 +CT= c406c445f5e27d14fb607459a55130d6d22834bad552b1bf +TEST= 280 +KEY= 2c24416624244a6fb938b9eada77d78f66fe644f9553d71c +PT= c406c445f5e27d14fb607459a55130d6d22834bad552b1bf +CT= b4eb478127f1ba4a2c84af6060324770e867397483dc8cc5 +TEST= 281 +KEY= 98cf06e703d5f02595bc168aba4590ff8e995d3b168f5bd9 +PT= b4eb478127f1ba4a2c84af6060324770e867397483dc8cc5 +CT= 3afdcb6da69eefa117d60500b3892723806cde086fcc4b25 +TEST= 282 +KEY= a232cd8aa54b1f84826a138a09ccb7dc0ef58333794310fc +PT= 3afdcb6da69eefa117d60500b3892723806cde086fcc4b25 +CT= bbf03a1d788191381d972ad02112a59219016adec8b2f40d +TEST= 283 +KEY= 19c2f797ddca8ebc9ffd395a28de124e17f4e9edb1f1e4f1 +PT= bbf03a1d788191381d972ad02112a59219016adec8b2f40d +CT= 83af67d2738191a6a339f9a1b1caa7d87b1459b8361d48f9 +TEST= 284 +KEY= 9a6d9045ae4b1f1a3cc4c0fb9914b5966ce0b05587ecac08 +PT= 83af67d2738191a6a339f9a1b1caa7d87b1459b8361d48f9 +CT= 7f8d8880fae17105a82d421250edba6beda9c96369fa435e +TEST= 285 +KEY= e5e018c554aa6e1f94e982e9c9f90ffd81497936ee16ef56 +PT= 7f8d8880fae17105a82d421250edba6beda9c96369fa435e +CT= 1b87e54ede35b3fc81fd1e8797cd7ff18ba84425d9d6d761 +TEST= 286 +KEY= fe67fd8b8a9fdde315149c6e5e34700c0ae13d1337c03837 +PT= 1b87e54ede35b3fc81fd1e8797cd7ff18ba84425d9d6d761 +CT= f10e9a9155c89b594247bf763a7e3ef0e11e9e7bbe9a2912 +TEST= 287 +KEY= 0f69671adf5746ba57532318644a4efcebffa368895a1125 +PT= f10e9a9155c89b594247bf763a7e3ef0e11e9e7bbe9a2912 +CT= a86bd66810a4dca3c0fd06172ca4452584b2c4960553eb43 +TEST= 288 +KEY= a702b172cff39a1997ae250f48ee0bd96f4d67fe8c09fa66 +PT= a86bd66810a4dca3c0fd06172ca4452584b2c4960553eb43 +CT= 8af78aa0944b6f98dfa34a8257f4b3db60b697b1414c116a +TEST= 289 +KEY= 2df53bd25bb8f581480d6f8d1f1ab8020ffbf04fcd45eb0c +PT= 8af78aa0944b6f98dfa34a8257f4b3db60b697b1414c116a +CT= 6fe4430639f5f4da6952f566e774ddee2869368024308a13 +TEST= 290 +KEY= 421178d4624d015b215f9aebf86e65ec2792c6cfe975611f +PT= 6fe4430639f5f4da6952f566e774ddee2869368024308a13 +CT= 87c44a9df2614a5595c7908e39fc74accb05d4d79bbd8d50 +TEST= 291 +KEY= c5d53249902c4b0eb4980a65c1921140ec97121872c8ec4f +PT= 87c44a9df2614a5595c7908e39fc74accb05d4d79bbd8d50 +CT= 0627f7eff00aa5540966d33723e1c4d0988ea13cbbf1bd8a +TEST= 292 +KEY= c3f2c5a66026ee5abdfed952e273d5907419b324c93951c5 +PT= 0627f7eff00aa5540966d33723e1c4d0988ea13cbbf1bd8a +CT= 58710171e98dc891a73d948340180ba7079e6167fb07e04f +TEST= 293 +KEY= 9b83c4d789ab26cb1ac34dd1a26bde377387d243323eb18a +PT= 58710171e98dc891a73d948340180ba7079e6167fb07e04f +CT= f7e6852ac61b6cb6f69004b4bcb93d2face521f182be9dfe +TEST= 294 +KEY= 6c6541fd4fb04a7dec5349651ed2e318df62f3b2b0802c74 +PT= f7e6852ac61b6cb6f69004b4bcb93d2face521f182be9dfe +CT= d87bb35990c8a8776078424a764d645a0682b9c78da70c05 +TEST= 295 +KEY= b41ef2a4df78e20a8c2b0b2f689f8742d9e04a753d272071 +PT= d87bb35990c8a8776078424a764d645a0682b9c78da70c05 +CT= 9568eb59f8e78ae03cde46bc029ea0b8be6a3b4c3056dd9c +TEST= 296 +KEY= 217619fd279f68eab0f54d936a0127fa678a71390d71fded +PT= 9568eb59f8e78ae03cde46bc029ea0b8be6a3b4c3056dd9c +CT= f86472c4fe799309bebadab241eb3e32ae72c7e3779f54a5 +TEST= 297 +KEY= d9126b39d9e6fbe30e4f97212bea19c8c9f8b6da7aeea948 +PT= f86472c4fe799309bebadab241eb3e32ae72c7e3779f54a5 +CT= 5ce57d37b6b487c48f914970d40987bc053113a28e05cc09 +TEST= 298 +KEY= 85f7160e6f527c2781dede51ffe39e74ccc9a578f4eb6541 +PT= 5ce57d37b6b487c48f914970d40987bc053113a28e05cc09 +CT= 0a4c8b624d2b4468284b212132b0599dbbb567ad1891a93e +TEST= 299 +KEY= 8fbb9d6c2279384fa995ff70cd53c7e9777cc2d5ec7acc7f +PT= 0a4c8b624d2b4468284b212132b0599dbbb567ad1891a93e +CT= 1b2e805b4b277bbfb1bb9eef6bf511fd5f2e764a124ceea3 +TEST= 300 +KEY= 94951d37695e43f0182e619fa6a6d6142852b49ffe3622dc +PT= 1b2e805b4b277bbfb1bb9eef6bf511fd5f2e764a124ceea3 +CT= 6530d7a1635dd1b832dc61a521e7c8dc03ab347bfbb82cb5 +TEST= 301 +KEY= f1a5ca960a0392482af2003a87411ec82bf980e4058e0e69 +PT= 6530d7a1635dd1b832dc61a521e7c8dc03ab347bfbb82cb5 +CT= 9dd4f1517ca31db2747224773e78f0b0554d6ef5365bcc66 +TEST= 302 +KEY= 6c713bc776a08ffa5e80244db939ee787eb4ee1133d5c20f +PT= 9dd4f1517ca31db2747224773e78f0b0554d6ef5365bcc66 +CT= 11a952df6d4e9c8367172a5b19e298d68b3c7ba8b880e03d +TEST= 303 +KEY= 7dd869181bee137939970e16a0db76aef58895b98b552232 +PT= 11a952df6d4e9c8367172a5b19e298d68b3c7ba8b880e03d +CT= f046f96e28a387e013cf93b13997276f7916fb9a9f41efb9 +TEST= 304 +KEY= 8d9e9076334d94992a589da7994c51c18c9e6e231414cd8b +PT= f046f96e28a387e013cf93b13997276f7916fb9a9f41efb9 +CT= 6a0300652cbb2a43e59aca76d79fe95a974ec1642715ca96 +TEST= 305 +KEY= e79d90131ff6bedacfc257d14ed3b89b1bd0af473301071d +PT= 6a0300652cbb2a43e59aca76d79fe95a974ec1642715ca96 +CT= d2041c762b432806986379109a57c1c09620bbb5ccddd8b3 +TEST= 306 +KEY= 35998c6534b596dc57a12ec1d484795b8df014f2ffdcdfae +PT= d2041c762b432806986379109a57c1c09620bbb5ccddd8b3 +CT= b916e04b06ac5887181171a0aa11feefbcbd56f709420a46 +TEST= 307 +KEY= 8c8f6c2e3219ce5b4fb05f617e9587b4314d4205f69ed5e8 +PT= b916e04b06ac5887181171a0aa11feefbcbd56f709420a46 +CT= 80c101cadd73f7ad6545f8eeb486d0720fbb3dfdf8baf904 +TEST= 308 +KEY= 0c4e6de4ef6a39f62af5a78fca1357c63ef67ff80e242cec +PT= 80c101cadd73f7ad6545f8eeb486d0720fbb3dfdf8baf904 +CT= 5789b2a335937f4c4c642d7ddbbdeec2c7ad043f1d2f74f0 +TEST= 309 +KEY= 5bc7df47daf946ba66918af211aeb904f95b7bc7130b581c +PT= 5789b2a335937f4c4c642d7ddbbdeec2c7ad043f1d2f74f0 +CT= 673e5678a2735a782827506d95c594b98609932749ae197a +TEST= 310 +KEY= 3cf9893f788a1cc24eb6da9f846b2dbd7f52e8e05aa54166 +PT= 673e5678a2735a782827506d95c594b98609932749ae197a +CT= a316567af9106805b56f781e4a5bc3a5409a4d76bac0fab7 +TEST= 311 +KEY= 9fefdf45819a74c7fbd9a281ce30ee183fc8a596e065bbd1 +PT= a316567af9106805b56f781e4a5bc3a5409a4d76bac0fab7 +CT= ef12f5859b9045c8c8793419f739fbc3d2937ca6a48fa49d +TEST= 312 +KEY= 70fd2ac01a0a310f33a09698390915dbed5bd93044ea1f4c +PT= ef12f5859b9045c8c8793419f739fbc3d2937ca6a48fa49d +CT= be0df39b6b916f4985382f403ed0b99c4f852901284ae60a +TEST= 313 +KEY= cef0d95b719b5e46b698b9d807d9ac47a2def0316ca0f946 +PT= be0df39b6b916f4985382f403ed0b99c4f852901284ae60a +CT= ee30f20454a4a2d448d8709b513712f491e59c45a64bcf3a +TEST= 314 +KEY= 20c02b5f253ffc92fe40c94356eebeb3333b6c74caeb367c +PT= ee30f20454a4a2d448d8709b513712f491e59c45a64bcf3a +CT= d047496bbe988f6ba17572adbb4712a794727ff275e6413b +TEST= 315 +KEY= f08762349ba773f95f35bbeeeda9ac14a7491386bf0d7747 +PT= d047496bbe988f6ba17572adbb4712a794727ff275e6413b +CT= d3633b9bf14e3ffc58e98581362ef69541c5c4034da9707d +TEST= 316 +KEY= 23e459af6ae94c0507dc3e6fdb875a81e68cd785f2a4073a +PT= d3633b9bf14e3ffc58e98581362ef69541c5c4034da9707d +CT= 267b7845ff5501f82588d84709b92c5652155ff81fdabcc7 +TEST= 317 +KEY= 059f21ea95bc4dfd2254e628d23e76d7b499887ded7ebbfd +PT= 267b7845ff5501f82588d84709b92c5652155ff81fdabcc7 +CT= 4216458960d2b8040a4938126b5e1253a5dbd67eeeeaba3a +TEST= 318 +KEY= 47896463f56ef5f9281dde3ab960648411425e03039401c7 +PT= 4216458960d2b8040a4938126b5e1253a5dbd67eeeeaba3a +CT= 7b2f505fcebeece653adc03590711aec215c1274d44b4f3f +TEST= 319 +KEY= 3ca6343c3bd0191f7bb01e0f29117e68301e4c77d7df4ef8 +PT= 7b2f505fcebeece653adc03590711aec215c1274d44b4f3f +CT= 3908f432ae52269b7ccd7b53c02f93665a205db0a91c9f45 +TEST= 320 +KEY= 05aec00e95823f84077d655ce93eed0e6a3e11c77ec3d1bd +PT= 3908f432ae52269b7ccd7b53c02f93665a205db0a91c9f45 +CT= 8c8f7fbdaa9f0d05b3a04eaada9efbbd332bc4055634c346 +TEST= 321 +KEY= 8921bfb33f1d3281b4dd2bf633a016b35915d5c228f712fb +PT= 8c8f7fbdaa9f0d05b3a04eaada9efbbd332bc4055634c346 +CT= fd3577af09d4b66285b30ba57d3dfdc249d99dbc8a46cb93 +TEST= 322 +KEY= 7414c81c36c984e3316e20534e9deb7110cc487ea2b1d968 +PT= fd3577af09d4b66285b30ba57d3dfdc249d99dbc8a46cb93 +CT= 44aac884b5961dc8575847540222ee026354449294e8b434 +TEST= 323 +KEY= 30be0098835f992b663667074cbf057373980cec36596d5c +PT= 44aac884b5961dc8575847540222ee026354449294e8b434 +CT= 2e8736f7310076284d0eaf5fb7601b72abd201de80dfbec8 +TEST= 324 +KEY= 1e39366fb25fef032b38c858fbdf1e01d84a0d32b686d394 +PT= 2e8736f7310076284d0eaf5fb7601b72abd201de80dfbec8 +CT= 7600c9dcaf207702644c031637286e1a95129c8b94893fcf +TEST= 325 +KEY= 6839ffb31d7f98014f74cb4eccf7701b4d5891b9220fec5b +PT= 7600c9dcaf207702644c031637286e1a95129c8b94893fcf +CT= ffc244879dab475231af72796413454da22258bc2d4e4462 +TEST= 326 +KEY= 97fbbb3480d4df537edbb937a8e43556ef7ac9050f41a839 +PT= ffc244879dab475231af72796413454da22258bc2d4e4462 +CT= c05158be5dab399d74a7052c2ca99678f5f6624320e5af93 +TEST= 327 +KEY= 57aae38add7fe6ce0a7cbc1b844da32e1a8cab462fa407aa +PT= c05158be5dab399d74a7052c2ca99678f5f6624320e5af93 +CT= 4618990897c2ee890291f6d6e0f31ef5f7c189c2a902d836 +TEST= 328 +KEY= 11b27a824abd084708ed4acd64bebddbed4d228486a6df9c +PT= 4618990897c2ee890291f6d6e0f31ef5f7c189c2a902d836 +CT= e2374055798592c4555bc9e5208d6a85b1746716014c3db1 +TEST= 329 +KEY= f3853ad733389a835db683284433d75e5c39459287eae22d +PT= e2374055798592c4555bc9e5208d6a85b1746716014c3db1 +CT= e16ea9a1fde1327a6d728d34f5ffec2e24e2298c75c590df +TEST= 330 +KEY= 12eb9376ced9a8f930c40e1cb1cc3b7078db6c1ef22f72f2 +PT= e16ea9a1fde1327a6d728d34f5ffec2e24e2298c75c590df +CT= 6548edd8c72dd35ace46afa111c94d8d5101193bf9440c0d +TEST= 331 +KEY= 77a37eae09f47ba3fe82a1bda00576fd29da75250b6b7eff +PT= 6548edd8c72dd35ace46afa111c94d8d5101193bf9440c0d +CT= dfc2ad41a081aec4746f251ff2bdcbf35e170a53b7ce508d +TEST= 332 +KEY= a861d3efa975d5678aed84a252b8bd0e77cd7f76bca52e72 +PT= dfc2ad41a081aec4746f251ff2bdcbf35e170a53b7ce508d +CT= 1041e73b12a37a48a7ca249bdce5173852939dfae3030614 +TEST= 333 +KEY= b82034d4bbd6af2f2d27a0398e5daa36255ee28c5fa62866 +PT= 1041e73b12a37a48a7ca249bdce5173852939dfae3030614 +CT= 477d591e1c5578aa0f16aa93ada2ecf273e27ff3050d3d8f +TEST= 334 +KEY= ff5d6dcaa783d78522310aaa23ff46c456bc9d7f5aab15e9 +PT= 477d591e1c5578aa0f16aa93ada2ecf273e27ff3050d3d8f +CT= 53ffe96ffdd87b807df43bf851a491e66699c9ce488cce8f +TEST= 335 +KEY= aca284a55a5bac055fc53152725bd722302554b11227db66 +PT= 53ffe96ffdd87b807df43bf851a491e66699c9ce488cce8f +CT= eb2f76592eaedb7a865c3f7f810c9c8c5d31b191366611ad +TEST= 336 +KEY= 478df2fc74f5777fd9990e2df3574bae6d14e5202441cacb +PT= eb2f76592eaedb7a865c3f7f810c9c8c5d31b191366611ad +CT= ec19129fa86d86d13555103095b66d18209c614c41a974fe +TEST= 337 +KEY= ab94e063dc98f1aeeccc1e1d66e126b64d88846c65e8be35 +PT= ec19129fa86d86d13555103095b66d18209c614c41a974fe +CT= 7a4f134aad57c9a1b3a7b37d2576c38bea86aa4476170e0f +TEST= 338 +KEY= d1dbf32971cf380f5f6bad604397e53da70e2e2813ffb03a +PT= 7a4f134aad57c9a1b3a7b37d2576c38bea86aa4476170e0f +CT= a533d1772d5e81d70992a0019c99917fe0677ee41c2a5193 +TEST= 339 +KEY= 74e8225e5c91b9d856f90d61df0e7442476950cc0fd5e1a9 +PT= a533d1772d5e81d70992a0019c99917fe0677ee41c2a5193 +CT= aa4a4d65d3c0295f15509688ea70da1551ff0e536939eb30 +TEST= 340 +KEY= dea26f3b8f51908743a99be9357eae5716965e9f66ec0a99 +PT= aa4a4d65d3c0295f15509688ea70da1551ff0e536939eb30 +CT= 7ae3dfbe6547e5efdadd70ca0a892a671389016020fb26a3 +TEST= 341 +KEY= a441b085ea1675689974eb233ff78430051f5fff46172c3a +PT= 7ae3dfbe6547e5efdadd70ca0a892a671389016020fb26a3 +CT= aceaa5edbb7cb88d8f7ff18355234c06a853b1dd49c582a9 +TEST= 342 +KEY= 08ab1568516acde5160b1aa06ad4c836ad4cee220fd2ae93 +PT= aceaa5edbb7cb88d8f7ff18355234c06a853b1dd49c582a9 +CT= 7ebe521701d1d9ac4d10ffae9e1e22183198b8470cbfc2e1 +TEST= 343 +KEY= 7615477f50bb14495b1be50ef4caea2e9cd45665036d6c72 +PT= 7ebe521701d1d9ac4d10ffae9e1e22183198b8470cbfc2e1 +CT= 3fb4809769752542d333e2aee9d563720bd307dfbff6a543 +TEST= 344 +KEY= 49a1c7e839ce310b882807a01d1f895c970751babc9bc931 +PT= 3fb4809769752542d333e2aee9d563720bd307dfbff6a543 +CT= 80689874cbb63658228408281f786c40582bdf18207c6d89 +TEST= 345 +KEY= c9c95f9cf2780753aaac0f880267e51ccf2c8ea29ce7a4b8 +PT= 80689874cbb63658228408281f786c40582bdf18207c6d89 +CT= edf4aababa11f75b2a59531b561b4fdbc8cf9dc53268278e +TEST= 346 +KEY= 243df5264869f00880f55c93547caac707e31367ae8f8336 +PT= edf4aababa11f75b2a59531b561b4fdbc8cf9dc53268278e +CT= 7bd4133e847000d916510326cc7fa35f03156f08d41ec1b8 +TEST= 347 +KEY= 5fe9e618cc19f0d196a45fb59803099804f67c6f7a91428e +PT= 7bd4133e847000d916510326cc7fa35f03156f08d41ec1b8 +CT= 3782963e35227de0a1a22735e0a569f349300c8ecdbe7ec9 +TEST= 348 +KEY= 686b7026f93b8d313706788078a6606b4dc670e1b72f3c47 +PT= 3782963e35227de0a1a22735e0a569f349300c8ecdbe7ec9 +CT= f6d6e8eb507029ee2596cd84db68b4890e6aaedd1ca642af +TEST= 349 +KEY= 9ebd98cda94ba4df1290b504a3ced4e243acde3cab897ee8 +PT= f6d6e8eb507029ee2596cd84db68b4890e6aaedd1ca642af +CT= d109b88059ef7f0f5d64f510382f7d7f3d63e0b6965546e9 +TEST= 350 +KEY= 4fb4204df0a4dbd04ff440149be1a99d7ecf3e8a3ddc3801 +PT= d109b88059ef7f0f5d64f510382f7d7f3d63e0b6965546e9 +CT= 95a9895d4ba00a1d9c1628cb08b3a61a58df96cce6de64e6 +TEST= 351 +KEY= da1da910bb04d1cdd3e268df93520f872610a846db025ce7 +PT= 95a9895d4ba00a1d9c1628cb08b3a61a58df96cce6de64e6 +CT= d7d135552bbe3362aaa9234ebb7adf6b97b2d521ec3dd809 +TEST= 352 +KEY= 0dcc9c4590bae2af794b4b912828d0ecb1a27d67373f84ee +PT= d7d135552bbe3362aaa9234ebb7adf6b97b2d521ec3dd809 +CT= 1dac5250d975231e85ada097e283acf857c84846e89da39b +TEST= 353 +KEY= 1060ce1549cfc1b1fce6eb06caab7c14e66a3521dfa22775 +PT= 1dac5250d975231e85ada097e283acf857c84846e89da39b +CT= 2654eeb24041dfb830ceda2d2dddb3c085b73eaa62527470 +TEST= 354 +KEY= 363420a7098e1e09cc28312be776cfd463dd0b8bbdf05305 +PT= 2654eeb24041dfb830ceda2d2dddb3c085b73eaa62527470 +CT= df310ed134804dba4cdfe0555e16d97060417c5d2eeb8023 +TEST= 355 +KEY= e9052e763d0e53b380f7d17eb96016a4039c77d6931bd326 +PT= df310ed134804dba4cdfe0555e16d97060417c5d2eeb8023 +CT= 44a76f84497b79519b522a6dc7b66a980d1b3ebf12fb6cbb +TEST= 356 +KEY= ada241f274752ae21ba5fb137ed67c3c0e87496981e0bf9d +PT= 44a76f84497b79519b522a6dc7b66a980d1b3ebf12fb6cbb +CT= fbe48ccf32786fa86a8088f9dc69f5b432c6e16c32a99c5e +TEST= 357 +KEY= 5646cd3d460d454a712573eaa2bf89883c41a805b34923c3 +PT= fbe48ccf32786fa86a8088f9dc69f5b432c6e16c32a99c5e +CT= 5d063ccd5ae8959ecb2ae315bf7a3357ec35563460aa5f88 +TEST= 358 +KEY= 0b40f1f01ce5d0d4ba0f90ff1dc5badfd074fe31d3e37c4b +PT= 5d063ccd5ae8959ecb2ae315bf7a3357ec35563460aa5f88 +CT= be3657202dae7c030c6f084f427f71c6cec1e797b0231e67 +TEST= 359 +KEY= b576a6d0314bacd7b66098b05fbacb191eb519a663c0622c +PT= be3657202dae7c030c6f084f427f71c6cec1e797b0231e67 +CT= 6e77351815150b92e857a92f5448f3cfde2511fc0609809e +TEST= 360 +KEY= db0193c8245ea7455e37319f0bf238d6c090085a65c9e2b2 +PT= 6e77351815150b92e857a92f5448f3cfde2511fc0609809e +CT= 1c7d22afb1dc8273e2860e3f4f563e2e565b98c90c2f069f +TEST= 361 +KEY= c77cb16795822536bcb13fa044a406f896cb909369e6e42d +PT= 1c7d22afb1dc8273e2860e3f4f563e2e565b98c90c2f069f +CT= daee3789eb755454bc7b807682c29c09eec99394cd5423b9 +TEST= 362 +KEY= 1d9286ee7ef7716200cabfd6c6669af178020307a4b2c794 +PT= daee3789eb755454bc7b807682c29c09eec99394cd5423b9 +CT= fecd9f560dc2e25dd85a73e3f0a70b5577f4a41bebbf3f5a +TEST= 363 +KEY= e35f19b87335933fd890cc3536c191a40ff6a71c4f0df8ce +PT= fecd9f560dc2e25dd85a73e3f0a70b5577f4a41bebbf3f5a +CT= d8ad9b45aed35962288f32ae48a71a24d3fc55b5d862bce8 +TEST= 364 +KEY= 3bf282fddde6ca5df01ffe9b7e668b80dc0af2a9976f4426 +PT= d8ad9b45aed35962288f32ae48a71a24d3fc55b5d862bce8 +CT= e3465f498d191b5041080af51bc662e7eb740f542c948127 +TEST= 365 +KEY= d8b4ddb450ffd10db117f46e65a0e967377efdfdbbfbc501 +PT= e3465f498d191b5041080af51bc662e7eb740f542c948127 +CT= 7f77f9cdacde57dd3296fc0f5b0a411e5a0f4856d9b8a7af +TEST= 366 +KEY= a7c32479fc2186d0838108613eaaa8796d71b5ab624362ae +PT= 7f77f9cdacde57dd3296fc0f5b0a411e5a0f4856d9b8a7af +CT= 8421c3aaddc869521a60a6b42085717cf81830f6c68a74a9 +TEST= 367 +KEY= 23e2e7d321e9ef8299e1aed51e2fd9059569855da4c91607 +PT= 8421c3aaddc869521a60a6b42085717cf81830f6c68a74a9 +CT= cc7aa140570a3443731375b4bf619fa8b429a1a80ce8e301 +TEST= 368 +KEY= ef98469376e3dbc1eaf2db61a14e46ad214024f5a821f506 +PT= cc7aa140570a3443731375b4bf619fa8b429a1a80ce8e301 +CT= 9f5126f1b28fc782d62143d13c830c2a06b332f68118d769 +TEST= 369 +KEY= 70c96062c46c1c433cd398b09dcd4a8727f316032939226f +PT= 9f5126f1b28fc782d62143d13c830c2a06b332f68118d769 +CT= 4223d8fb56bb281d4dc5aec524d3ecc9c8645d2cc56ba104 +TEST= 370 +KEY= 32eab89992d7345e71163675b91ea64eef974b2fec52836b +PT= 4223d8fb56bb281d4dc5aec524d3ecc9c8645d2cc56ba104 +CT= 7c254c831f2867c6fd2e299e602464d744c86366ba6cbf9c +TEST= 371 +KEY= 4ecff41a8dff53988c381febd93ac299ab5f2849563e3cf7 +PT= 7c254c831f2867c6fd2e299e602464d744c86366ba6cbf9c +CT= 796c57d59259113d327d2287bbd00b0f91991b31598e0330 +TEST= 372 +KEY= 37a3a3cf1fa642a5be453d6c62eac9963ac633780fb03fc7 +PT= 796c57d59259113d327d2287bbd00b0f91991b31598e0330 +CT= 1d15377c34a910c25076e0022dad143d278073864f22cff9 +TEST= 373 +KEY= 2ab694b32b0f5267ee33dd6e4f47ddab1d4640fe4092f03e +PT= 1d15377c34a910c25076e0022dad143d278073864f22cff9 +CT= 8d694217698226bc9d9a649ebc926561b5606b2657890d61 +TEST= 374 +KEY= a7dfd6a4428d74db73a9b9f0f3d5b8caa8262bd8171bfd5f +PT= 8d694217698226bc9d9a649ebc926561b5606b2657890d61 +CT= eaaac00b52833edce9a2d4950e97efde290fd5b1e0b8ed25 +TEST= 375 +KEY= 4d7516af100e4a079a0b6d65fd4257148129fe69f7a3107a +PT= eaaac00b52833edce9a2d4950e97efde290fd5b1e0b8ed25 +CT= 5114b387fd02dd57cc92062bb843a9222863080772b0cc72 +TEST= 376 +KEY= 1c61a528ed0c975056996b4e4501fe36a94af66e8513dc08 +PT= 5114b387fd02dd57cc92062bb843a9222863080772b0cc72 +CT= 37f1dcf39680e820737294ee42e21448d987352907996b65 +TEST= 377 +KEY= 2b9079db7b8c7f7025ebffa007e3ea7e70cdc347828ab76d +PT= 37f1dcf39680e820737294ee42e21448d987352907996b65 +CT= 269ccfbd399f6a6a5cccfb07908d20016458cd65ccffe942 +TEST= 378 +KEY= 0d0cb6664213151a792704a7976eca7f14950e224e755e2f +PT= 269ccfbd399f6a6a5cccfb07908d20016458cd65ccffe942 +CT= c8f49ef64db0f2752ff75f2bb9e786c64ddec6ded90b7888 +TEST= 379 +KEY= c5f828900fa3e76f56d05b8c2e894cb9594bc8fc977e26a7 +PT= c8f49ef64db0f2752ff75f2bb9e786c64ddec6ded90b7888 +CT= a83dbc29e06b7f8d8182a87a39bc77831a30e387bee88753 +TEST= 380 +KEY= 6dc594b9efc898e2d752f3f617353b3a437b2b7b2996a1f4 +PT= a83dbc29e06b7f8d8182a87a39bc77831a30e387bee88753 +CT= 2cfea881d43bd19282641a54b6d199f79486bd31c62550e0 +TEST= 381 +KEY= 413b3c383bf349705536e9a2a1e4a2cdd7fd964aefb3f114 +PT= 2cfea881d43bd19282641a54b6d199f79486bd31c62550e0 +CT= 23df46d1755aab92432d8a377a6a63192e1c6d7fea856df1 +TEST= 382 +KEY= 62e47ae94ea9e2e2161b6395db8ec1d4f9e1fb3505369ce5 +PT= 23df46d1755aab92432d8a377a6a63192e1c6d7fea856df1 +CT= d79cc5c9a434e3633094471c15c648b787e039379eb15be5 +TEST= 383 +KEY= b578bf20ea9d0181268f2489ce4889637e01c2029b87c700 +PT= d79cc5c9a434e3633094471c15c648b787e039379eb15be5 +CT= c6c299f9388dfd04a410aaf55096d77e29e80295a6e1e1aa +TEST= 384 +KEY= 73ba26d9d210fc85829f8e7c9ede5e1d57e9c0973d6626aa +PT= c6c299f9388dfd04a410aaf55096d77e29e80295a6e1e1aa +CT= f2947dc841799d716c46454a0f78770a91a1eeee2239f63d +TEST= 385 +KEY= 812e5b11936961f4eed9cb3691a62917c6482e791f5fd097 +PT= f2947dc841799d716c46454a0f78770a91a1eeee2239f63d +CT= 481f8289d6f90acd62c3351f590f1aa647608ba8a0c2981c +TEST= 386 +KEY= c931d99845906b398c1afe29c8a933b18128a5d1bf9d488b +PT= 481f8289d6f90acd62c3351f590f1aa647608ba8a0c2981c +CT= 21e203f6942ac7f417959ae8244c53d79361abb003f7e94e +TEST= 387 +KEY= e8d3da6ed1baaccd9b8f64c1ece5606612490e61bc6aa1c5 +PT= 21e203f6942ac7f417959ae8244c53d79361abb003f7e94e +CT= e1adfa09bc87207f5c9b5e356603679462a97755e82ff249 +TEST= 388 +KEY= 097e20676d3d8cb2c7143af48ae607f270e079345445538c +PT= e1adfa09bc87207f5c9b5e356603679462a97755e82ff249 +CT= 78e406cde7935b4851dd5d7999f2106a400a9641ffa55e5e +TEST= 389 +KEY= 719a26aa8aaed7fa96c9678d1314179830eaef75abe00dd2 +PT= 78e406cde7935b4851dd5d7999f2106a400a9641ffa55e5e +CT= dd7d768cb536ee04d0a4ec4d438ace7e122bcc0bcca3f7b1 +TEST= 390 +KEY= ace750263f9839fe466d8bc0509ed9e622c1237e6743fa63 +PT= dd7d768cb536ee04d0a4ec4d438ace7e122bcc0bcca3f7b1 +CT= bfa2abb0155ecc3b2913f723e52fc5e7e487b121b6b2624b +TEST= 391 +KEY= 1345fb962ac6f5c56f7e7ce3b5b11c01c646925fd1f19828 +PT= bfa2abb0155ecc3b2913f723e52fc5e7e487b121b6b2624b +CT= 03e91ecec75e32be419e996de349128bebb4fc57333a7b61 +TEST= 392 +KEY= 10ace558ed98c77b2ee0e58e56f80e8a2df26e08e2cbe349 +PT= 03e91ecec75e32be419e996de349128bebb4fc57333a7b61 +CT= 5a19cc05b0fd0d451c707b0f653c343947e765817a7dd4b1 +TEST= 393 +KEY= 4ab5295d5d65ca3e32909e8133c43ab36a150b8998b637f8 +PT= 5a19cc05b0fd0d451c707b0f653c343947e765817a7dd4b1 +CT= c44475f65dda50cc04b079638a6bfa81fda649033c310df3 +TEST= 394 +KEY= 8ef15cab00bf9af23620e7e2b9afc03297b3428aa4873a0b +PT= c44475f65dda50cc04b079638a6bfa81fda649033c310df3 +CT= e23062fe51a1a3c826aa2256145b2abc69f28e765e2df2f8 +TEST= 395 +KEY= 6cc13e55511e393a108ac5b4adf4ea8efe41ccfcfaaac8f3 +PT= e23062fe51a1a3c826aa2256145b2abc69f28e765e2df2f8 +CT= e8e391729765fc43fcc32e7f97576ebd641e07eace2cb8a8 +TEST= 396 +KEY= 8422af27c67bc579ec49ebcb3aa384339a5fcb163486705b +PT= e8e391729765fc43fcc32e7f97576ebd641e07eace2cb8a8 +CT= ae1047138802a67b5a6db5b4d0ccef7c70876aa4a37d1cb1 +TEST= 397 +KEY= 2a32e8344e796302b6245e7fea6f6b4fead8a1b297fb6cea +PT= ae1047138802a67b5a6db5b4d0ccef7c70876aa4a37d1cb1 +CT= 0d071ef05cd4250d60812f3e71f9c33ff562e0ee605076d8 +TEST= 398 +KEY= 2735f6c412ad460fd6a571419b96a8701fba415cf7ab1a32 +PT= 0d071ef05cd4250d60812f3e71f9c33ff562e0ee605076d8 +CT= 34662a112e4c914285c7dd7305f244edf0375f26302a27d9 +TEST= 399 +KEY= 1353dcd53ce1d74d5362ac329e64ec9def8d1e7ac7813deb +PT= 34662a112e4c914285c7dd7305f244edf0375f26302a27d9 +CT= ba9fafaded687c90335b9a96b16d8c3ba5054c43d2f52907 diff --git a/flint/test/testvals/ecbme68.txt b/flint/test/testvals/ecbme68.txt new file mode 100644 index 0000000..cbf9e55 --- /dev/null +++ b/flint/test/testvals/ecbme68.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 000000000000000000000000000000000000000000000000 +CT= 6dde583c9dbe65871f07f2522639963a08e2119004970ce0 +TEST= 1 +KEY= 49435947a520e1cd6dde583c9dbe65871f07f2522639963a08e2119004970ce0 +PT= 6dde583c9dbe65871f07f2522639963a08e2119004970ce0 +CT= 550d58d1c38b3e3069e42913ce82547f7b8eb3fe5c023547 +TEST= 2 +KEY= a16800282f32003838d300ed5e355bb776e3db41e8bbc245736ca26e589539a7 +PT= 550d58d1c38b3e3069e42913ce82547f7b8eb3fe5c023547 +CT= 7f2b6b134c5aff42f5760b54bd54999fa0e7abdfb8b1c3c0 +TEST= 3 +KEY= 27259d4ee80d057d47f86bfe126fa4f58395d01555ef5bdad38b09b1e024fa67 +PT= 7f2b6b134c5aff42f5760b54bd54999fa0e7abdfb8b1c3c0 +CT= 1499c95d89801eb6627e43d96d9c89b49b157e99fddb355a +TEST= 4 +KEY= 09d687307f47289a5361a2a39befba43e1eb93cc3873d26e489e77281dffcf3d +PT= 1499c95d89801eb6627e43d96d9c89b49b157e99fddb355a +CT= 5f42f804b99bd9f956d2cca13f590d9f110ea05397b1a219 +TEST= 5 +KEY= b0ff419d134572f70c235aa7227463bab7395f6d072adff15990d77b8a4e6d24 +PT= 5f42f804b99bd9f956d2cca13f590d9f110ea05397b1a219 +CT= 11cd348092120a8a7332349e199948f69ee380efc6988eb7 +TEST= 6 +KEY= 10b365f5a427b2081dee6e27b0666930c40b6bf31eb39707c77357944cd6e393 +PT= 11cd348092120a8a7332349e199948f69ee380efc6988eb7 +CT= e279f060c9af2ca7cb58f9beba8e4e49d281fa4e1c7e93f2 +TEST= 7 +KEY= f07d7f798dbc1e62ff979e4779c945970f53924da43dd94e15f2adda50a87061 +PT= e279f060c9af2ca7cb58f9beba8e4e49d281fa4e1c7e93f2 +CT= 86536e1695a3f18ea74ff99a07b87b41482794cf916b8459 +TEST= 8 +KEY= 8ba84948c231155f79c4f051ec6ab419a81c6bd7a385a20f5dd53915c1c3f438 +PT= 86536e1695a3f18ea74ff99a07b87b41482794cf916b8459 +CT= 23352ae4eca164bd43d7d6d33dc724c332ac72f327c51880 +TEST= 9 +KEY= 95486c9ce63d9c295af1dab500cbd0a4ebcbbd049e4286cc6f794be6e606ecb8 +PT= 23352ae4eca164bd43d7d6d33dc724c332ac72f327c51880 +CT= 428c4ea3ca3e730808e57c0a3ad63d2403361d3458118a9f +TEST= 10 +KEY= 375c41dc48520eda187d9416caf5a3ace32ec10ea494bbe86c4f56d2be176627 +PT= 428c4ea3ca3e730808e57c0a3ad63d2403361d3458118a9f +CT= 33c3d8c42aaf4c68bf78aca7ea0187f8a61289fe6dd9d158 +TEST= 11 +KEY= 8a2d0016c1912d972bbe4cd2e05aefc45c566da94e953c10ca5ddf2cd3ceb77f +PT= 33c3d8c42aaf4c68bf78aca7ea0187f8a61289fe6dd9d158 +CT= b0cf9a94812f1c5af232cfe55c990e1ddcc51697e01466a9 +TEST= 12 +KEY= 53e8e7640a19aa2c9b71d6466175f39eae64a24c120c320d1698c9bb33dad1d6 +PT= b0cf9a94812f1c5af232cfe55c990e1ddcc51697e01466a9 +CT= fc3e030293d3358d1ea353727544ab423e5ad3e1055f7311 +TEST= 13 +KEY= ad9bea6390c51003674fd544f2a6c613b0c7f13e6748994f28c21a5a3685a2c7 +PT= fc3e030293d3358d1ea353727544ab423e5ad3e1055f7311 +CT= e00bdd2b224d903a5ba0f7b3b1fb4a61099b75278c187b25 +TEST= 14 +KEY= 45c7f17789de34ec8744086fd0eb5629eb67068dd6b3d32e21596f7dba9dd9e2 +PT= e00bdd2b224d903a5ba0f7b3b1fb4a61099b75278c187b25 +CT= c7c7a444b481e68e3055104a90403edb1a895b6f3f0bfb85 +TEST= 15 +KEY= da366a008b9d5ea64083ac2b646ab0a7db3216c746f3edf53bd0341285962267 +PT= c7c7a444b481e68e3055104a90403edb1a895b6f3f0bfb85 +CT= 7b8e1714186b499205d7fca848cf01c7345a4b5380dc8aa2 +TEST= 16 +KEY= dfa41b38671e43df3b0dbb3f7c01f935dee5ea6f0e3cec320f8a7f41054aa8c5 +PT= 7b8e1714186b499205d7fca848cf01c7345a4b5380dc8aa2 +CT= 6d33032b8a2ee4c14a698544b76a8cae0ceed877eafacd5e +TEST= 17 +KEY= a2708dc84df306c1563eb814f62f1df4948c6f2bb956609c0364a736efb0659b +PT= 6d33032b8a2ee4c14a698544b76a8cae0ceed877eafacd5e +CT= 645e8cbbd259b489544772a7e1042da5d7330002787c10f7 +TEST= 18 +KEY= 12c3abd399fa07e6326034af2476a97dc0cb1d8c58524d39d457a73497cc756c +PT= 645e8cbbd259b489544772a7e1042da5d7330002787c10f7 +CT= ebb5f5b1b667a11700fd3e8991bfb75636b5ffb90c64aaa8 +TEST= 19 +KEY= 38cd65826230c93dd9d5c11e9211086ac0362305c9edfa6fe2e2588d9ba8dfc4 +PT= ebb5f5b1b667a11700fd3e8991bfb75636b5ffb90c64aaa8 +CT= 0c0aae76b0a30750d3cf10843b61596efdb043935f36d0f9 +TEST= 20 +KEY= 2631fc7f39658e32d5df6f6822b20f3a13f93381f28ca3011f521b1ec49e0f3d +PT= 0c0aae76b0a30750d3cf10843b61596efdb043935f36d0f9 +CT= ee3b8cc175eb091871a6b4e3925d4f933b40f9dc0f56b1f2 +TEST= 21 +KEY= 88c3263aaca8a0ae3be4e3a957590622625f876260d1ec922412e2c2cbc8becf +PT= ee3b8cc175eb091871a6b4e3925d4f933b40f9dc0f56b1f2 +CT= f3092942a90d81aef347e64352324334940ba104e0eb67e6 +TEST= 22 +KEY= 13fbce2c6f9e8d1bc8edcaebfe54878c9118612132e3afa6b01943c62b23d929 +PT= f3092942a90d81aef347e64352324334940ba104e0eb67e6 +CT= 49069452aa69dde8ff6d17759e1bd3f047f3d051c9e7ca3e +TEST= 23 +KEY= 34203cd015bcabd981eb5eb9543d5a646e757654acf87c56f7ea9397e2c41317 +PT= 49069452aa69dde8ff6d17759e1bd3f047f3d051c9e7ca3e +CT= 2dc33015a9a31b50ca8cf06512ace75961b4e7cc2563eab6 +TEST= 24 +KEY= 3ea145392f3985a3ac286eacfd9e4134a4f98631be549b0f965e745bc7a7f9a1 +PT= 2dc33015a9a31b50ca8cf06512ace75961b4e7cc2563eab6 +CT= ab9bf87edf045eefff8793dce0d4cf3acb0a0bfdf0095df9 +TEST= 25 +KEY= 92634fa7c4110c7b07b396d2229a1fdb5b7e15ed5e8054355d547fa637aea458 +PT= ab9bf87edf045eefff8793dce0d4cf3acb0a0bfdf0095df9 +CT= e8a5e869cc1027e942f475254735b0f957097bf5a018559f +TEST= 26 +KEY= 1b7df4c0b7dfa34eef167ebbee8a3832198a60c819b5e4cc0a5d045397b6f1c7 +PT= e8a5e869cc1027e942f475254735b0f957097bf5a018559f +CT= 1749b2c2a9d2e6e6782ef34bd20c76a3350eb1e1660571cc +TEST= 27 +KEY= 8e1b1f34c3d2e655f85fcc794758ded461a49383cbb9926f3f53b5b2f1b3800b +PT= 1749b2c2a9d2e6e6782ef34bd20c76a3350eb1e1660571cc +CT= e21f2405b09c32594f35c18a312dd1d80a3cfa72ce347268 +TEST= 28 +KEY= 158107964f7f6cd31a40e87cf7c4ec8d2e915209fa9443b7356f4fc03f87f263 +PT= e21f2405b09c32594f35c18a312dd1d80a3cfa72ce347268 +CT= bb5b31df1fcab57442ab93afa8a4204b93d3690f2851cc2e +TEST= 29 +KEY= 24d34c7f8b4378a3a11bd9a3e80e59f96c3ac1a6523063fca6bc26cf17d63e4d +PT= bb5b31df1fcab57442ab93afa8a4204b93d3690f2851cc2e +CT= 36da3369db1f7fcb3c06ca1378d4e68493d6d94b60f058c6 +TEST= 30 +KEY= 8fa4750a9c107a8997c1eaca33112632503c0bb52ae48578356aff847726668b +PT= 36da3369db1f7fcb3c06ca1378d4e68493d6d94b60f058c6 +CT= fd4db65d86e811394a7ed4d4e0fcdbd8877b490c84acaa65 +TEST= 31 +KEY= b929386f73ed7fb66a8c5c97b5f9370b1a42df61ca185ea0b211b688f38accee +PT= fd4db65d86e811394a7ed4d4e0fcdbd8877b490c84acaa65 +CT= 763578687ed7bb337908551df270177c8663554e3ec6ee10 +TEST= 32 +KEY= e221bc67b3d82cd91cb924ffcb2e8c38634a8a7c386849dc3472e3c6cd4c22fe +PT= 763578687ed7bb337908551df270177c8663554e3ec6ee10 +CT= 8936cf4c583bdc41f68741efbf70d14b825311004ba8f4a6 +TEST= 33 +KEY= ff64896bfd697edf958febb39315507995cdcb9387189897b621f2c686e4d658 +PT= 8936cf4c583bdc41f68741efbf70d14b825311004ba8f4a6 +CT= 1a663700c12c677ec05a5dbe9ef6796a19f4ebe4582507ae +TEST= 34 +KEY= 53f7873261fcf25e8fe9dcb3523937075597962d19eee1fdafd51922dec1d1f6 +PT= 1a663700c12c677ec05a5dbe9ef6796a19f4ebe4582507ae +CT= 67dcd9b0f400534f6b1bdd6a6de00cbf1a76e7fdcea687dc +TEST= 35 +KEY= 1f583cd63a3b5e5fe8350503a63964483e8c4b47740eed42b5a3fedf1067562a +PT= 67dcd9b0f400534f6b1bdd6a6de00cbf1a76e7fdcea687dc +CT= 61233792ecd5a45f52a1863a457b26c2235757cb4a9217b8 +TEST= 36 +KEY= f17229eb851d2a39891632914aecc0176c2dcd7d3175cb8096f4a9145af54192 +PT= 61233792ecd5a45f52a1863a457b26c2235757cb4a9217b8 +CT= fda587ca54c2826ac105d5ec89632d5d9fdd4a6ec0573583 +TEST= 37 +KEY= 2c64878f8f55b9f374b3b55b1e2e427dad281891b816e6dd0929e37a9aa27411 +PT= fda587ca54c2826ac105d5ec89632d5d9fdd4a6ec0573583 +CT= e00b3c30cda7392007ae7f67810bb0c71bfc4466919be7f6 +TEST= 38 +KEY= 34cf610205968eec94b8896bd3897b5daa8667f6391d561a12d5a71c0b3993e7 +PT= e00b3c30cda7392007ae7f67810bb0c71bfc4466919be7f6 +CT= e5b92568ca00a9df08d65bc0b464cc13d49006ce1acaeafb +TEST= 39 +KEY= 64fb2196803629d87101ac031989d282a2503c368d799a09c645a1d211f3791c +PT= e5b92568ca00a9df08d65bc0b464cc13d49006ce1acaeafb +CT= 6f05db7c069efbdcb99f9591478cf52d5432e9438641dd46 +TEST= 40 +KEY= 472bbd67f0095f821e04777f1f17295e1bcfa9a7caf56f249277489197b2a45a +PT= 6f05db7c069efbdcb99f9591478cf52d5432e9438641dd46 +CT= dfdd15990c14d06004d0c697fce4bed95041549906dc81e6 +TEST= 41 +KEY= 28c041eefff7b3d2c1d962e61303f93e1f1f6f303611d1fdc2361c08916e25bc +PT= dfdd15990c14d06004d0c697fce4bed95041549906dc81e6 +CT= 94a2d74d431fcb1abff20ec7258b7596ff16ead0c4dd6feb +TEST= 42 +KEY= e0cd679697c815e4557bb5ab501c3224a0ed61f7139aa46b3d20f6d855b34a57 +PT= 94a2d74d431fcb1abff20ec7258b7596ff16ead0c4dd6feb +CT= d25b51e13ca250c0460868aff5cd06ee9510c7d1e1fb95af +TEST= 43 +KEY= 687d3b35e66e39b58720e44a6cbe62e4e6e50958e657a285a8303109b448dff8 +PT= d25b51e13ca250c0460868aff5cd06ee9510c7d1e1fb95af +CT= b948b5553792f698b5e3a3f3f6b4571b0af617ba747c8c2e +TEST= 44 +KEY= 60f11986c89e62f13e68511f5b2c947c5306aaab10e3f59ea2c626b3c03453d6 +PT= b948b5553792f698b5e3a3f3f6b4571b0af617ba747c8c2e +CT= 45f0d7e1d40b4c5e102181334d10632ebea675470c99dac2 +TEST= 45 +KEY= b20d3a698f986de27b9886fe8f27d82243272b985df396b01c6053f4ccad8914 +PT= 45f0d7e1d40b4c5e102181334d10632ebea675470c99dac2 +CT= 0cf32ba015707b6fa9a5b353d9f4d74def922e7b73602c0a +TEST= 46 +KEY= d78ff7deaa5b29e8776bad5e9a57a34dea8298cb840741fdf3f27d8fbfcda51e +PT= 0cf32ba015707b6fa9a5b353d9f4d74def922e7b73602c0a +CT= b84015e4907bad3b6fc8ff47df9740cde3006b2678f96c05 +TEST= 47 +KEY= 4fc06e1df4e74adecf2bb8ba0a2c0e76854a678c5b90013010f216a9c734c91b +PT= b84015e4907bad3b6fc8ff47df9740cde3006b2678f96c05 +CT= f2a0f82e5476363c55d24e1c59c7c7a3d8f821285a07cd40 +TEST= 48 +KEY= 60b273e2fcfd05d13d8b40945e5a384ad09829900257c693c80a37819d33045b +PT= f2a0f82e5476363c55d24e1c59c7c7a3d8f821285a07cd40 +CT= 512f4f1da380d4b5c8d300fc427d244bd6886cf6a4a48fba +TEST= 49 +KEY= b5e9c818d95f632f6ca40f89fddaecff184b296c402ae2d81e825b7739978be1 +PT= 512f4f1da380d4b5c8d300fc427d244bd6886cf6a4a48fba +CT= c253341397746e39f19dec136f5ff46757f7f6fa002096a2 +TEST= 50 +KEY= 0551050a34ad730aaef73b9a6aae82c6e9d6c57f2f7516bf4975ad8d39b71d43 +PT= c253341397746e39f19dec136f5ff46757f7f6fa002096a2 +CT= 10823bc981f805149807f03552bc4840f97bbfd7be4452b3 +TEST= 51 +KEY= dbda9e8322562bfebe750053eb5687d271d1354a7dc95effb00e125a87f34ff0 +PT= 10823bc981f805149807f03552bc4840f97bbfd7be4452b3 +CT= 0432099af3946e6f68419ecdad22c0d3f3654d80c81c1340 +TEST= 52 +KEY= f05e9687a0ddef8fba4709c918c2e9bd1990ab87d0eb9e2c436b5fda4fef5cb0 +PT= 0432099af3946e6f68419ecdad22c0d3f3654d80c81c1340 +CT= 80e27b914a4950ce34651b2a3aa30401c0f2ce06b26ddddf +TEST= 53 +KEY= 9276905dbf1902d63aa57258528bb9732df5b0adea489a2d839991dcfd82816f +PT= 80e27b914a4950ce34651b2a3aa30401c0f2ce06b26ddddf +CT= 9f4ddf4506637122f8ab5a949bb3b04f8eff8f0b0e638ae5 +TEST= 54 +KEY= ecf447400a69db25a5e8ad1d54e8c851d55eea3971fb2a620d661ed7f3e10b8a +PT= 9f4ddf4506637122f8ab5a949bb3b04f8eff8f0b0e638ae5 +CT= f0d330ba79ec3dd62aeca5d545df7a79ec504b289450aec3 +TEST= 55 +KEY= 06c9b0b995a09343553b9da72d04f587ffb24fec3424501be13655ff67b1a549 +PT= f0d330ba79ec3dd62aeca5d545df7a79ec504b289450aec3 +CT= 433538ea90d7b672e491a3cd548b1e8d770dd19089a837ca +TEST= 56 +KEY= 2ce88459e3e4efaf160ea54dbdd343f51b23ec2160af4e96963b846fee199283 +PT= 433538ea90d7b672e491a3cd548b1e8d770dd19089a837ca +CT= 85fd735d2ff3f142b6cfa22edf38e5aad064fd790c50abe1 +TEST= 57 +KEY= 79af46be5edf254693f3d6109220b2b7adec4e0fbf97ab3c465f7916e2493962 +PT= 85fd735d2ff3f142b6cfa22edf38e5aad064fd790c50abe1 +CT= b994a8ea0527fdb52e5a13f71678d82b49dffcd782383813 +TEST= 58 +KEY= 76b014e078b647372a677efa97074f0283b65df8a9ef73170f8085c160710171 +PT= b994a8ea0527fdb52e5a13f71678d82b49dffcd782383813 +CT= a575dbb3e207166fbfb0d8cbdb76e2ed6906810e5ed31a1b +TEST= 59 +KEY= 727b52d931f39cea8f12a5497500596d3c068533729991fa668604cf3ea21b6a +PT= a575dbb3e207166fbfb0d8cbdb76e2ed6906810e5ed31a1b +CT= df602c746f0969ffe2c1caaa390f58057dd922d4ef8feb1d +TEST= 60 +KEY= 27cdada229af9a4c5072893d1a093092dec74f994b96c9ff1b5f261bd12df077 +PT= df602c746f0969ffe2c1caaa390f58057dd922d4ef8feb1d +CT= ac3f438f87f46ee3f6b2c2a2caf5feae6ab6d8e5b53aa291 +TEST= 61 +KEY= 91386b257881dd4cfc4dcab29dfd5e7128758d3b8163375171e9fefe641752e6 +PT= ac3f438f87f46ee3f6b2c2a2caf5feae6ab6d8e5b53aa291 +CT= 1b19019ee48ce7de4355855b1a2d0b6ae281f6dff8b12ca8 +TEST= 62 +KEY= fc7559ff3060d8dce754cb2c7971b9af6b2008609b4e3c3b936808219ca67e4e +PT= 1b19019ee48ce7de4355855b1a2d0b6ae281f6dff8b12ca8 +CT= fa084cc49e169d36ab8ffcc71ecc7eda0ddb9c78fc0f163a +TEST= 63 +KEY= 861f3a0d178c72921d5c87e8e7672499c0aff4a7858242e19eb3945960a96874 +PT= fa084cc49e169d36ab8ffcc71ecc7eda0ddb9c78fc0f163a +CT= 9a808e4afced9b4fdee012b74ae28083ec93149db87d01ed +TEST= 64 +KEY= a38ddb916a896aa387dc09a21b8abfd61e4fe610cf60c262722080c4d8d46999 +PT= 9a808e4afced9b4fdee012b74ae28083ec93149db87d01ed +CT= 8c10402beb8c7c7e90717896e0b5d090cb044ffdbf73e6ec +TEST= 65 +KEY= 615f4d80146c0d410bcc4989f006c3a88e3e9e862fd512f2b924cf3967a78f75 +PT= 8c10402beb8c7c7e90717896e0b5d090cb044ffdbf73e6ec +CT= ed8fe950098bee53cec44c786a22a9e33e06b7f41767ca0c +TEST= 66 +KEY= b5581bf6e72c0aebe643a0d9f98d2dfb40fad2fe45f7bb11872278cd70c04579 +PT= ed8fe950098bee53cec44c786a22a9e33e06b7f41767ca0c +CT= 4f809a355f143c5b88345cd0662c19a4c4a76f261becbbd2 +TEST= 67 +KEY= 4d43fd0db1bc1890a9c33aeca69911a0c8ce8e2e23dba2b5438517eb6b2cfeab +PT= 4f809a355f143c5b88345cd0662c19a4c4a76f261becbbd2 +CT= 757f9a61334e9f54d1d0bcfbb9eb68088ade15303fecb3a9 +TEST= 68 +KEY= b38cc3b1086e638fdcbca08d95d78ef4191e32d59a30cabdc95b02db54c04d02 +PT= 757f9a61334e9f54d1d0bcfbb9eb68088ade15303fecb3a9 +CT= d72bd14ffc0b03acf91caee2e09404f7ba87836c69b1d92c +TEST= 69 +KEY= d664a937db8ba8a80b9771c269dc8d58e0029c377aa4ce4a73dc81b73d71942e +PT= d72bd14ffc0b03acf91caee2e09404f7ba87836c69b1d92c +CT= 4f037ad30d701a35f8da5463212541ea1303fea8dbfdb579 +TEST= 70 +KEY= 8e7afa5c1f2aa06544940b1164ac976d18d8c8545b818fa060df7f1fe68c2157 +PT= 4f037ad30d701a35f8da5463212541ea1303fea8dbfdb579 +CT= 6de4a8ab041199b579e48952691c678789ce589b4dc63b59 +TEST= 71 +KEY= 269925115cf06ba52970a3ba60bd0ed8613c4106329de827e9112784ab4a1a0e +PT= 6de4a8ab041199b579e48952691c678789ce589b4dc63b59 +CT= 54af8493fb2da89bb7fb1f0945981b06fafc9319b0089c07 +TEST= 72 +KEY= 03ca2954f26dff067ddf27299b90a643d6c75e0f7705f32113edb49d1b428609 +PT= 54af8493fb2da89bb7fb1f0945981b06fafc9319b0089c07 +CT= 92b6591e0f16c47eeafcd33b40576a96d03b926ae7f19ff7 +TEST= 73 +KEY= cc09b9dbf7631cecef697e379486623d3c3b8d34375299b7c3d626f7fcb319fe +PT= 92b6591e0f16c47eeafcd33b40576a96d03b926ae7f19ff7 +CT= 00eb8e5cfa360e1003820f7f781205bf86c12640a627726c +TEST= 74 +KEY= c19d1375291e970aef82f06b6eb06c2d3fb9824b4f409c08451700b75a946b92 +PT= 00eb8e5cfa360e1003820f7f781205bf86c12640a627726c +CT= cd70e73e528dc1964c7da55fb2068a077957536b609b3cc7 +TEST= 75 +KEY= b512b3974234287122f217553c3dadbb73c42714fd46160f3c4053dc3a0f5755 +PT= cd70e73e528dc1964c7da55fb2068a077957536b609b3cc7 +CT= 8c46730060c731e55f7eb6d72544d59341de1f0218e65213 +TEST= 76 +KEY= df2494de7e8f589daeb464555cfa9c5e2cba91c3d802c39c7d9e4cde22e90546 +PT= 8c46730060c731e55f7eb6d72544d59341de1f0218e65213 +CT= 2ef1dd969d52ae368983c3223a8f81714ec2701eebf01771 +TEST= 77 +KEY= 091a38aa8e786a5f8045b9c3c1a83268a53952e1e28d42ed335c3cc0c9191237 +PT= 2ef1dd969d52ae368983c3223a8f81714ec2701eebf01771 +CT= 5da356175d4c9db4971870402df4ea457b7d1145823074c2 +TEST= 78 +KEY= 57bc550b976a285bdde6efd49ce4afdc322122a1cf79a8a848212d854b2966f5 +PT= 5da356175d4c9db4971870402df4ea457b7d1145823074c2 +CT= 2f23ca34d6d468d008e1344c9e1e89359808fd4b5e45865a +TEST= 79 +KEY= 30a128a956682dc5f2c525e04a30c70c3ac016ed5167219dd029d0ce156ce0af +PT= 2f23ca34d6d468d008e1344c9e1e89359808fd4b5e45865a +CT= 5eff21bbedb1b85367bc674784145c7dfe6beb88021b70a6 +TEST= 80 +KEY= 561c7be4eb31893eac3a045ba7817f5f5d7c71aad5737de02e423b4617779009 +PT= 5eff21bbedb1b85367bc674784145c7dfe6beb88021b70a6 +CT= 663870e0f8f7a0d125d1df6a000138afcc622d3910c4cf99 +TEST= 81 +KEY= 486536f24debcc47ca0274bb5f76df8e78adaec0d572454fe220167f07b35f90 +PT= 663870e0f8f7a0d125d1df6a000138afcc622d3910c4cf99 +CT= 2b86e09b1f446f77fcc3fb0e670e903744b49bb747b34952 +TEST= 82 +KEY= 6f43db8c2067ca2fe18494204032b0f9846e55ceb27cd578a6948dc8400016c2 +PT= 2b86e09b1f446f77fcc3fb0e670e903744b49bb747b34952 +CT= 80a00c0778105d60109b392f581406613593322b62677ea2 +TEST= 83 +KEY= e12aaba3ac938b5e612498273822ed9994f56ce1ea68d3199307bfe322676860 +PT= 80a00c0778105d60109b392f581406613593322b62677ea2 +CT= 9c3d18e4b812d3464df65cf6b5f7bb78909660fe6e2d2f69 +TEST= 84 +KEY= 3463fc208c44defbfd1980c380303edfd90330175f9f68610391df1d4c4a4709 +PT= 9c3d18e4b812d3464df65cf6b5f7bb78909660fe6e2d2f69 +CT= b5a63ef82530058650494c24182c6150b58ea37cf226650f +TEST= 85 +KEY= 4e9f286d062340a648bfbe3ba5003b59894a7c3347b30931b61f7c61be6c2206 +PT= b5a63ef82530058650494c24182c6150b58ea37cf226650f +CT= 469e5d2972ae9057c99742f84b465ec9b800e42aa851297b +TEST= 86 +KEY= adaa779858e6ed150e21e312d7aeab0e40dd3ecb0cf557f80e1f984b163d0b7d +PT= 469e5d2972ae9057c99742f84b465ec9b800e42aa851297b +CT= c13ae323400ece26d6683153b549792728dc7ec50dfa5db0 +TEST= 87 +KEY= 8977311459480beecf1b003197a0652896b50f98b9bc2edf26c3e68e1bc756cd +PT= c13ae323400ece26d6683153b549792728dc7ec50dfa5db0 +CT= df92b667b6345608b170fee4e56968a8f486d38d00b9298d +TEST= 88 +KEY= a4b0b6fcff687c711089b6562194332027c5f17c5cd54677d24535031b7e7f40 +PT= df92b667b6345608b170fee4e56968a8f486d38d00b9298d +CT= 25d611481b713ae2dd3ce7d07a5559539dc40c87247e485a +TEST= 89 +KEY= a0794ca9607b2d46355fa71e3ae509c2faf916ac26801f244f8139843f00371a +PT= 25d611481b713ae2dd3ce7d07a5559539dc40c87247e485a +CT= f60ec354b859b8031aec8a5b03dac21201a648e133d7760a +TEST= 90 +KEY= d99986109dead3f9c351644a82bcb1c1e0159cf7255add364e2771650cd74110 +PT= f60ec354b859b8031aec8a5b03dac21201a648e133d7760a +CT= 34bf3dd2ff718654b0b9ea3cb63616789bab2f581eeadc95 +TEST= 91 +KEY= d4619d09345de6d8f7ee59987dcd379550ac76cb936ccb4ed58c5e3d123d9d85 +PT= 34bf3dd2ff718654b0b9ea3cb63616789bab2f581eeadc95 +CT= b665f53992ffbd406be6b3b92af3298773909e139d06a7c3 +TEST= 92 +KEY= 032ffedf1426e26e418baca1ef328ad53b4ac572b99fe2c9a61cc02e8f3b3a46 +PT= b665f53992ffbd406be6b3b92af3298773909e139d06a7c3 +CT= 560d201cb6484a018ab004431c08eb9eee0c559c3514ab6a +TEST= 93 +KEY= c603144545c524bd17868cbd597ac0d4b1fac131a5970957481095b2ba2f912c +PT= 560d201cb6484a018ab004431c08eb9eee0c559c3514ab6a +CT= 5927a80691e8afb04e46cae7dfd0b436cc59dc4b268f0de6 +TEST= 94 +KEY= c8f03d6a8633e0be4ea124bbc8926f64ffbc0bd67a47bd61844949f99ca09cca +PT= 5927a80691e8afb04e46cae7dfd0b436cc59dc4b268f0de6 +CT= fe02d6e75870f98408f9ead45b6b39d856e29e6f98797b6a +TEST= 95 +KEY= 33bc455db808104cb0a3f25c90e296e0f745e102212c84b9d2abd79604d9e7a0 +PT= fe02d6e75870f98408f9ead45b6b39d856e29e6f98797b6a +CT= a686a50734c84ada2a6220db50978aaab7832bb59ceeee0b +TEST= 96 +KEY= 5769152fba7b3e341625575ba42adc3add27c1d971bb0e136528fc23983709ab +PT= a686a50734c84ada2a6220db50978aaab7832bb59ceeee0b +CT= 70711ff48bd8cdfbb149dba8a3b78959754dc1058584e4c6 +TEST= 97 +KEY= 8abe2831f8d110ed665448af2ff211c16c6e1a71d20c874a10653d261db3ed6d +PT= 70711ff48bd8cdfbb149dba8a3b78959754dc1058584e4c6 +CT= 676f041f3b21757009d8fcf95502ad57abda1d3dc4b1658f +TEST= 98 +KEY= e3256d2e462d4463013b4cb014d364b165b6e688870e2a1dbbbf201bd90288e2 +PT= 676f041f3b21757009d8fcf95502ad57abda1d3dc4b1658f +CT= 8bf64e0fde47e811aed382536ff081a6f7b2ced5bf1bac46 +TEST= 99 +KEY= d56eac883da349668acd02bfca948ca0cb6564dbe8feabbb4c0deece661924a4 +PT= 8bf64e0fde47e811aed382536ff081a6f7b2ced5bf1bac46 +CT= c9fbb22dc1ebdaf866fa78f4d3335e3d7ddeec27fe03ac8d +TEST= 100 +KEY= bb2ef2b28f5b39b84336b0920b7f5658ad9f1c2f3bcdf58631d302e9981a8829 +PT= c9fbb22dc1ebdaf866fa78f4d3335e3d7ddeec27fe03ac8d +CT= acdcd5210d08dc7cc216aa4e519371bd9be8de618e12eac0 +TEST= 101 +KEY= 9038e70c68be7730efea65b306778a246f89b6616a5e843baa3bdc88160862e9 +PT= acdcd5210d08dc7cc216aa4e519371bd9be8de618e12eac0 +CT= 101120e340d1cb030d277bb8af910d1a676b2eed8fb9d44e +TEST= 102 +KEY= fe0dc0f506610ce7fffb455046a6412762aecdd9c5cf8921cd50f26599b1b6a7 +PT= 101120e340d1cb030d277bb8af910d1a676b2eed8fb9d44e +CT= e86d18a4732509f928f17b4ffc1709741fdd6c83a4756cdd +TEST= 103 +KEY= 7b5774d84239f3dd17965df4358348de4a5fb69639d88055d28d9ee63dc4da7a +PT= e86d18a4732509f928f17b4ffc1709741fdd6c83a4756cdd +CT= a56d99c52a71723eeecf6eae9db54e0de65f46d67cbe2618 +TEST= 104 +KEY= d9405914bddddcc5b2fbc4311ff23ae0a490d838a46dce5834d2d830417afc62 +PT= a56d99c52a71723eeecf6eae9db54e0de65f46d67cbe2618 +CT= 3c9c5391621664f351c3eb070ab23805a121539692471146 +TEST= 105 +KEY= f8636bf167590d2a8e6797a07de45e13f553333faedff65d95f38ba6d33ded24 +PT= 3c9c5391621664f351c3eb070ab23805a121539692471146 +CT= 8aa3ed27b22bfa6f1111d1f3cfafb92870699569d0cdab14 +TEST= 106 +KEY= c873dfdaf70d5df804c47a87cfcfa47ce442e2cc61704f75e59a1ecf03f04630 +PT= 8aa3ed27b22bfa6f1111d1f3cfafb92870699569d0cdab14 +CT= 64fd35060d5c9f9286f933173bb012669b41375f97af55a8 +TEST= 107 +KEY= 9ddb525434cef0b760394f81c2933bee62bbd1db5ac05d137edb2990945f1398 +PT= 64fd35060d5c9f9286f933173bb012669b41375f97af55a8 +CT= da5756c1794baafa7de68b68c49dd1c3132a241a090769ad +TEST= 108 +KEY= 68884cda0e6520caba6e1940bbd891141f5d5ab39e5d8cd06df10d8a9d587a35 +PT= da5756c1794baafa7de68b68c49dd1c3132a241a090769ad +CT= c363abdd697e5a92daa83c14c36ef9b21308bf5a8de4ae42 +TEST= 109 +KEY= ff6c056aaace58d4790db29dd2a6cb86c5f566a75d3375627ef9b2d010bcd477 +PT= c363abdd697e5a92daa83c14c36ef9b21308bf5a8de4ae42 +CT= 3c05ffaa092441c7db589ec889f4e0bad9c2c2b43bcb5668 +TEST= 110 +KEY= a2195e59cf81489245084d37db828a411eadf86fd4c795d8a73b70642b77821f +PT= 3c05ffaa092441c7db589ec889f4e0bad9c2c2b43bcb5668 +CT= facf332927541533e141b179afa9e96b1b4841c86011535b +TEST= 111 +KEY= a15a1bb65168dcdcbfc77e1efcd69f72ffec49167b6e7cb3bc7331ac4b66d144 +PT= facf332927541533e141b179afa9e96b1b4841c86011535b +CT= 7f0b36e288b64543f86a5d3a4f2e7f85258b1cbe3722be1c +TEST= 112 +KEY= d1fefc7f8c614ae6c0cc48fc7460da310786142c3440033699f82d127c446f58 +PT= 7f0b36e288b64543f86a5d3a4f2e7f85258b1cbe3722be1c +CT= 6191beda61968667528cbb057dccbe160f0ccb2888af0dbd +TEST= 113 +KEY= c9ebde8eeeea407fa15df62615f65c56550aaf29498cbd2096f4e63af4eb62e5 +PT= 6191beda61968667528cbb057dccbe160f0ccb2888af0dbd +CT= c966abaf6e3cc993f6864ac0224f4eb6ce90a9b2441e9a77 +TEST= 114 +KEY= e887433ba2e83192683b5d897bca95c5a38ce5e96bc3f39658644f88b0f5f892 +PT= c966abaf6e3cc993f6864ac0224f4eb6ce90a9b2441e9a77 +CT= 6a855de7372217752e2ad7358bb65f1243251d17d08250b5 +TEST= 115 +KEY= 75740224a8ef0b5b02be006e4ce882b08da632dce075ac841b41529f6077a827 +PT= 6a855de7372217752e2ad7358bb65f1243251d17d08250b5 +CT= 4951909f3f00dfecaa9297fd1d089eda53606cc9448b60e3 +TEST= 116 +KEY= 7b7d37dac3f64c314bef90f173e85d5c2734a521fd7d325e48213e5624fcc8c4 +PT= 4951909f3f00dfecaa9297fd1d089eda53606cc9448b60e3 +CT= a90f503110ab7c4f023be76fa152414269fce7974869100c +TEST= 117 +KEY= 630ebe2415f2ebdee2e0c0c063432113250f424e5c2f731c21ddd9c16c95d8c8 +PT= a90f503110ab7c4f023be76fa152414269fce7974869100c +CT= d2f866c7ae7cafee9276e4c8b56ea6ab24aa34e48d7b5455 +TEST= 118 +KEY= 576b813c6c0091a53018a607cd3f8efdb779a686e941d5b70577ed25e1ee8c9d +PT= d2f866c7ae7cafee9276e4c8b56ea6ab24aa34e48d7b5455 +CT= 31b4fd70200b08c07a6cff666dc0e9733fa9ca1361cf6372 +TEST= 119 +KEY= 2126a052740deb5b01ac5b77ed34863dcd1559e084813cc43ade27368021efef +PT= 31b4fd70200b08c07a6cff666dc0e9733fa9ca1361cf6372 +CT= 43f326f055db78c48144e4bda3c53d068ae5c74cf68b1d1e +TEST= 120 +KEY= efaaffaa9949dd4c425f7d87b8effef94c51bd5d274401c2b03be07a76aaf2f1 +PT= 43f326f055db78c48144e4bda3c53d068ae5c74cf68b1d1e +CT= f1c94e1651a5a385b910ac43d8269b42f7003a81f5e5b2d7 +TEST= 121 +KEY= 45a69c1200d09129b3963391e94a5d7cf541111eff629a80473bdafb834f4026 +PT= f1c94e1651a5a385b910ac43d8269b42f7003a81f5e5b2d7 +CT= 451e2b5bb603cf37ed05d580436f363fc6e0da339e7f5f38 +TEST= 122 +KEY= 7987f43e36fc9b4af68818ca5f49924b1844c49ebc0dacbf81db00c81d301f1e +PT= 451e2b5bb603cf37ed05d580436f363fc6e0da339e7f5f38 +CT= d69910fe9bf69edd7ac4f8d49bd165cab275806327a80c41 +TEST= 123 +KEY= 22f7163e215858af20110834c4bf0c9662803c4a27dcc97533ae80ab3a98135f +PT= d69910fe9bf69edd7ac4f8d49bd165cab275806327a80c41 +CT= 0bde89fa2255adab24602db77154fe16718d458f99ee4381 +TEST= 124 +KEY= 22227d99868250552bcf81cee6eaa13d46e011fd568837634223c524a37650de +PT= 0bde89fa2255adab24602db77154fe16718d458f99ee4381 +CT= d48560dfb077c1f45f2c8947e2f418416000a574afaffb47 +TEST= 125 +KEY= b23a9655370ab076ff4ae111569d60c919cc98bab47c2f22222360500cd9ab99 +PT= d48560dfb077c1f45f2c8947e2f418416000a574afaffb47 +CT= 3c6531459550abe8668dc141e069f16f76c7b4b45ceaf494 +TEST= 126 +KEY= 8ba1fc648447155bc32fd054c3cdcb217f4159fb5415de4d54e4d4e450335f0d +PT= 3c6531459550abe8668dc141e069f16f76c7b4b45ceaf494 +CT= 38ae014ae4ef9309c3591eb378c3ef4fb1d32e7e34e0cf8c +TEST= 127 +KEY= 270d2f21cc0d5927fb81d11e27225828bc1847482cd63102e537fa9a64d39081 +PT= 38ae014ae4ef9309c3591eb378c3ef4fb1d32e7e34e0cf8c +CT= 6776c4594d98679b70db1abf0580d42947c8d068b31491c6 +TEST= 128 +KEY= a583fd5ed4c521699cf715476aba3fb3ccc35df72956e52ba2ff2af2d7c70147 +PT= 6776c4594d98679b70db1abf0580d42947c8d068b31491c6 +CT= 53e4227e5f092eab129d6510265fe7ff41a4289b913d407e +TEST= 129 +KEY= d019f40090682ee0cf13373935b31118de5e38e70f0902d4e35b026946fa4139 +PT= 53e4227e5f092eab129d6510265fe7ff41a4289b913d407e +CT= 038f10ea6550c33cc31b2ffcf8f6d4a2a91b739c2f7e1f15 +TEST= 130 +KEY= 039561cf57186774cc9c27d350e3d2241d45171bf7ffd6764a4071f569845e2c +PT= 038f10ea6550c33cc31b2ffcf8f6d4a2a91b739c2f7e1f15 +CT= 933b5d15f14f697675bc9201f3d002411760cc7142c8326d +TEST= 131 +KEY= 9a0a000bd4d3e13e5fa77ac6a1acbb5268f9851a042fd4375d20bd842b4c6c41 +PT= 933b5d15f14f697675bc9201f3d002411760cc7142c8326d +CT= 8a166c2a645c65ddfdca241d79738b3a381af730e345c9f4 +TEST= 132 +KEY= 99fa7d689500f141d5b116ecc5f0de8f9533a1077d5c5f0d653a4ab4c809a5b5 +PT= 8a166c2a645c65ddfdca241d79738b3a381af730e345c9f4 +CT= d37d23f14e47a61f9ae6223a0d938f6ba3759491c6231659 +TEST= 133 +KEY= d60049aab8b2d8cc06cc351d8bb778900fd5833d70cfd066c64fde250e2ab3ec +PT= d37d23f14e47a61f9ae6223a0d938f6ba3759491c6231659 +CT= b9fe87698b52d77d910113c5ae44c7f3f275f0f3371d1030 +TEST= 134 +KEY= a7ac2e1fc96404c5bf32b27400e5afed9ed490f8de8b1795343a2ed63937a3dc +PT= b9fe87698b52d77d910113c5ae44c7f3f275f0f3371d1030 +CT= 68ab1b729443f61beb7edeb92da8b7d0a7fea51d8b4d313a +TEST= 135 +KEY= 7533b10c1a890341d799a90694a659f675aa4e41f323a04593c48bcbb27a92e6 +PT= 68ab1b729443f61beb7edeb92da8b7d0a7fea51d8b4d313a +CT= 3fefe56c530d4f9a0d46327ceb096074c322ac5be7158d7a +TEST= 136 +KEY= e2f1fb510352b8c3e8764c6ac7ab166c78ec7c3d182ac03150e62790556f1f9c +PT= 3fefe56c530d4f9a0d46327ceb096074c322ac5be7158d7a +CT= 54c5d7d8542a21df95662c72d5912060ca50096c31c70d5f +TEST= 137 +KEY= 052a0ae01571bd36bcb39bb2938137b3ed8a504fcdbbe0519ab62efc64a812c3 +PT= 54c5d7d8542a21df95662c72d5912060ca50096c31c70d5f +CT= edf301b57a8f56ebf191df5b71ee5477e2039ee56b75ede1 +TEST= 138 +KEY= dfac37e64b8337cb51409a07e90e61581c1b8f14bc55b42678b5b0190fddff22 +PT= edf301b57a8f56ebf191df5b71ee5477e2039ee56b75ede1 +CT= 85143c3fd3d1df896c47fe4ecf48dd040143caa59d9a1646 +TEST= 139 +KEY= a8c2433cdf1b7f9ad454a6383adfbed1705c715a731d692279f67abc9247e964 +PT= 85143c3fd3d1df896c47fe4ecf48dd040143caa59d9a1646 +CT= eb7ffba03f3d50164031b26ac4542fe07d47505884794b89 +TEST= 140 +KEY= ffd94e2dae459ea33f2b5d9805e2eec7306dc330b74946c204b12ae4163ea2ed +PT= eb7ffba03f3d50164031b26ac4542fe07d47505884794b89 +CT= d0f76cc767eb1c8a307bd8754d6425e053369cc7eef01873 +TEST= 141 +KEY= f5b3d6e63356dd3befdc315f6209f24d00161b45fa2d63225787b623f8ceba9e +PT= d0f76cc767eb1c8a307bd8754d6425e053369cc7eef01873 +CT= 566a6f9cb145e57e04198a31ca535eb8642f73384e1b84b8 +TEST= 142 +KEY= fe01780e621c8ce1b9b65ec3d34c1733040f9174307e3d9a33a8c51bb6d53e26 +PT= 566a6f9cb145e57e04198a31ca535eb8642f73384e1b84b8 +CT= 19c14493bd8e463d2b38589ceb77bf267cd4646d60f4ba66 +TEST= 143 +KEY= 0430a6e8ae3dc4d5a0771a506ec2510e2f37c9e8db0982bc4f7ca176d6218440 +PT= 19c14493bd8e463d2b38589ceb77bf267cd4646d60f4ba66 +CT= 5a6b705447de176b0799f00a776f79e8a8b47f8e138a2c43 +TEST= 144 +KEY= 5b165df309eda15dfa1c6a04291c466528ae39e2ac66fb54e7c8def8c5aba803 +PT= 5a6b705447de176b0799f00a776f79e8a8b47f8e138a2c43 +CT= 9b272ba71ca62c216c48e3f69895edb2810e20fcff802437 +TEST= 145 +KEY= 8bbd8b7fe972e299613b41a335ba6a4444e6da1434f316e666c6fe043a2b8c34 +PT= 9b272ba71ca62c216c48e3f69895edb2810e20fcff802437 +CT= d10d3df63d9fc2aabe1cbb5abd3da6bb0175d12aa26e64b6 +TEST= 146 +KEY= 862a188c189a7f26b0367c550825a8eefafa614e89ceb05d67b32f2e9845e882 +PT= d10d3df63d9fc2aabe1cbb5abd3da6bb0175d12aa26e64b6 +CT= d5b59e04169d905267014cf6ff70fafebab45b3209e3726a +TEST= 147 +KEY= 49a6de2f23aef3aa6583e2511eb838bc9dfb2db876be4aa3dd07741c91a69ae8 +PT= d5b59e04169d905267014cf6ff70fafebab45b3209e3726a +CT= 557388553ee6bf79766dfaf9cc84d1275d44e1b291b38025 +TEST= 148 +KEY= 30d20b04656e521130f06a04205e87c5eb96d741ba3a9b84804395ae00151acd +PT= 557388553ee6bf79766dfaf9cc84d1275d44e1b291b38025 +CT= a58ce93c4caa0e5b2674685eedfbdf83c3d7dcd25d3a6638 +TEST= 149 +KEY= b1c8f1eb59ab2988957c83386cf4899ecde2bf1f57c144074394497c5d2f7cf5 +PT= a58ce93c4caa0e5b2674685eedfbdf83c3d7dcd25d3a6638 +CT= 95921cdb6d1baf0acf473e517f8b8ab156759e3305e9520b +TEST= 150 +KEY= dab147f1e63e50ee00ee9fe301ef269402a5814e284aceb615e1d74f58c62efe +PT= 95921cdb6d1baf0acf473e517f8b8ab156759e3305e9520b +CT= b50cfdc8ce1c70e55a215a9f65db0df98c6ec4146ef01617 +TEST= 151 +KEY= 4c7d24ffbe0eb519b5e2622bcff356715884dbd14d91c34f998f135b363638e9 +PT= b50cfdc8ce1c70e55a215a9f65db0df98c6ec4146ef01617 +CT= 5d9a42d1d58687dd2bf7813c72f4d0678403cbd1764d958a +TEST= 152 +KEY= fc83db769b566d27e87820fa1a75d1ac73735aed3f6513281d8cd88a407bad63 +PT= 5d9a42d1d58687dd2bf7813c72f4d0678403cbd1764d958a +CT= ece856cc1b94782f8bd52d2aef7f51d670c50897750cdbf3 +TEST= 153 +KEY= afbf651535c864ed0490763601e1a983f8a677c7d01a42fe6d49d01d35777690 +PT= ece856cc1b94782f8bd52d2aef7f51d670c50897750cdbf3 +CT= b447c1210646c703c8142c3eb453065bc5d0ac94057e47be +TEST= 154 +KEY= 9ed0a1ea4eabce29b0d7b71707a76e8030b25bf9644944a5a8997c893009312e +PT= b447c1210646c703c8142c3eb453065bc5d0ac94057e47be +CT= a2285fc4dc44af01de0a022db36de47371a3655bfe188d1a +TEST= 155 +KEY= 0f84249a9faae76d12ffe8d3dbe3c181eeb859d4d724a0d6d93a19d2ce11bc34 +PT= a2285fc4dc44af01de0a022db36de47371a3655bfe188d1a +CT= 75b60fea0223a6da7b85e3482f3e7e92d320576e0496c479 +TEST= 156 +KEY= f0062bbdfedb283a6749e739d9c0675b953dba9cf81ade440a1a4ebcca87784d +PT= 75b60fea0223a6da7b85e3482f3e7e92d320576e0496c479 +CT= ce904621f18b8760f23e3551e7408e36fa9eecedfcabeac5 +TEST= 157 +KEY= c086c5cc5314aeeea9d9a118284be03b67038fcd1f5a5072f084a251362c9288 +PT= ce904621f18b8760f23e3551e7408e36fa9eecedfcabeac5 +CT= 1785a904f65b12598f0352000bb8404a727725f32415488b +TEST= 158 +KEY= 25188ccc0b463c43be5c081cde10f262e800ddcd14e2103882f387a21239da03 +PT= 1785a904f65b12598f0352000bb8404a727725f32415488b +CT= bd7c7e90a47637afb7925ab7a08fadc5171e008a473d783f +TEST= 159 +KEY= 013802e5d1c84bee0320768c7a66c5cd5f92877ab46dbdfd95ed87285504a23c +PT= bd7c7e90a47637afb7925ab7a08fadc5171e008a473d783f +CT= 89259f7acfcb0a817bca8ee89e27b2d1005f33d350fb5af7 +TEST= 160 +KEY= 3004bfc80ed715148a05e9f6b5adcf4c245809922a4a0f2c95b2b4fb05fff8cb +PT= 89259f7acfcb0a817bca8ee89e27b2d1005f33d350fb5af7 +CT= 2063827d9c298be9cef9952c2819df9f3c19746f7dbf78c2 +TEST= 161 +KEY= f2f4ba961a7bf81daa666b8b298444a5eaa19cbe0253d0b3a9abc09478408009 +PT= 2063827d9c298be9cef9952c2819df9f3c19746f7dbf78c2 +CT= 7b94de9eebe06410a1bdab7847d7eed9b706451b10aeba48 +TEST= 162 +KEY= 8a9f474bd1ff0b10d1f2b515c26420b54b1c37c645843e6a1ead858f68ee3a41 +PT= 7b94de9eebe06410a1bdab7847d7eed9b706451b10aeba48 +CT= 614fb99215fde7045789e36674fa7450904512512d3b14b6 +TEST= 163 +KEY= c991289a94e28194b0bd0c87d799c7b11c95d4a0317e4a3a8ee897de45d52ef7 +PT= 614fb99215fde7045789e36674fa7450904512512d3b14b6 +CT= 9c268c985253d7e044c50537336733ac2cf41959f4bfadf5 +TEST= 164 +KEY= 02fa060f5d214e8c2c9b801f85ca10515850d19702197996a21c8e87b16a8302 +PT= 9c268c985253d7e044c50537336733ac2cf41959f4bfadf5 +CT= 69d388fe7a33626d4acc796cf85c5d6c7af6cc1c9dc56097 +TEST= 165 +KEY= 817e770d132cd0ba454808e1fff9723c129ca8fbfa4524fad8ea429b2cafe395 +PT= 69d388fe7a33626d4acc796cf85c5d6c7af6cc1c9dc56097 +CT= fcad7816461242280bd8e341372052b4862c3833dafd2ccf +TEST= 166 +KEY= ab1a74796b1ecb58b9e570f7b9eb301419444bbacd65764e5ec67aa8f652cf5a +PT= fcad7816461242280bd8e341372052b4862c3833dafd2ccf +CT= f3bd7d3c163766370c5ff0a5f1343e07c7f5adbbbdbcb771 +TEST= 167 +KEY= 89b754f549739fe24a580dcbafdc5623151bbb1f3c5148499933d7134bee782b +PT= f3bd7d3c163766370c5ff0a5f1343e07c7f5adbbbdbcb771 +CT= a7aa8218a6338837ee17e54065682d10140f2a95c36d5bfb +TEST= 168 +KEY= e220b3c1bbe26187edf28fd309efde14fb0c5e5f593965598d3cfd86888323d0 +PT= a7aa8218a6338837ee17e54065682d10140f2a95c36d5bfb +CT= fad02ce6caca35dfcd1c5411ffd406e8e54a67e5609a4382 +TEST= 169 +KEY= 12bb12a54bbb85301722a335c325ebcb36100a4ea6ed63b168769a63e8196052 +PT= fad02ce6caca35dfcd1c5411ffd406e8e54a67e5609a4382 +CT= 2d178b29474f47452e06d71c00f7150c7f9689acd678766b +TEST= 170 +KEY= fe5705606f1562e13a35281c846aac8e1816dd52a61a76bd17e013cf3e611639 +PT= 2d178b29474f47452e06d71c00f7150c7f9689acd678766b +CT= e6fd1ecb395fd46c1fe3c384110d29804a3e55be29495c44 +TEST= 171 +KEY= eced13b858a29672dcc836d7bd3578e207f51ed6b7175f3d5dde467117284a7d +PT= e6fd1ecb395fd46c1fe3c384110d29804a3e55be29495c44 +CT= 1c67412c023de80cd9ef76192ec248a938dd76416b7c944e +TEST= 172 +KEY= cf38ef11d35eb0a7c0af77fbbf0890eede1a68cf99d51794650330307c54de33 +PT= 1c67412c023de80cd9ef76192ec248a938dd76416b7c944e +CT= bfa47396c1f502699a4047f061fd4a0707a98bca2289f7df +TEST= 173 +KEY= 081e9e1631e09fa27f0b046d7efd9287445a2f3ff8285d9362aabbfa5edd29ec +PT= bfa47396c1f502699a4047f061fd4a0707a98bca2289f7df +CT= 5a005dca4d9cb7a0883ba17ad07a8ecc58eb63656245d0ee +TEST= 174 +KEY= 0772904f455358e8250b59a733612527cc618e452852d35f3a41d89f3c98f902 +PT= 5a005dca4d9cb7a0883ba17ad07a8ecc58eb63656245d0ee +CT= b82ff7d7c85ce64a51548a6ad90e89b8d5251631592e9a6b +TEST= 175 +KEY= 107ac604bbb089ed9d24ae70fb3dc36d9d35042ff15c5ae7ef64ceae65b66369 +PT= b82ff7d7c85ce64a51548a6ad90e89b8d5251631592e9a6b +CT= d1745f412c6ea202b4a1ca274315231fbe01a4da2a03ed3c +TEST= 176 +KEY= 26f6555be1631df44c50f131d753616f2994ce08b24979f851656a744fb58e55 +PT= d1745f412c6ea202b4a1ca274315231fbe01a4da2a03ed3c +CT= 7fc34ea6198e1775bc9bcb0100800cfa7a2f6a4d6f065e7c +TEST= 177 +KEY= 6befb7390cb12f043393bf97cedd761a950f0509b2c975022b4a003920b3d029 +PT= 7fc34ea6198e1775bc9bcb0100800cfa7a2f6a4d6f065e7c +CT= ecb164ee3f5832d4e178c8a1e969b71137c8fa718c2e2c9a +TEST= 178 +KEY= 5404030110a079b1df22db79f18544ce7477cda85ba0c2131c82fa48ac9dfcb3 +PT= ecb164ee3f5832d4e178c8a1e969b71137c8fa718c2e2c9a +CT= 9f3f609abf43cffd4df120fd7e355def3f04cf304b93b704 +TEST= 179 +KEY= a5d06ab16dd50108401dbbe34ec68b333986ed5525959ffc23863578e70e4bb7 +PT= 9f3f609abf43cffd4df120fd7e355def3f04cf304b93b704 +CT= 1a0dbab284bce1c2078d6324152596a5c9737ca693072f12 +TEST= 180 +KEY= 2edac437e3b3c5065a100151ca7a6af13e0b8e7130b00959eaf549de740964a5 +PT= 1a0dbab284bce1c2078d6324152596a5c9737ca693072f12 +CT= 7ffb52cd9d8ae69d137ca4f3a7112913cc09a93160f35948 +TEST= 181 +KEY= 45e2dec75d41069d25eb539c57f08c6c2d772a8297a1204a26fce0ef14fa3ded +PT= 7ffb52cd9d8ae69d137ca4f3a7112913cc09a93160f35948 +CT= b1851558e96e74ea41bb2959cff2bd5cf799606450ceefd0 +TEST= 182 +KEY= 7e62ab289bf2824d946e46c4be9ef8866ccc03db58539d16d165808b4434d23d +PT= b1851558e96e74ea41bb2959cff2bd5cf799606450ceefd0 +CT= a94fa0ed3cad8a6056a8f136de83fab491fda4811191a8fa +TEST= 183 +KEY= 75e18b9e502ad6f53d21e629823372e63a64f2ed86d067a24098240a55a57ac7 +PT= a94fa0ed3cad8a6056a8f136de83fab491fda4811191a8fa +CT= 9ed8de6ff7b80969738df8c459db5f8d7e04ea98e0c32a2d +TEST= 184 +KEY= f1c2671039f15398a3f93846758b7b8f49e90a29df0b382f3e9cce92b56650ea +PT= 9ed8de6ff7b80969738df8c459db5f8d7e04ea98e0c32a2d +CT= e0f12b3e3c7913bac813ef0b7751b69064a8d5e6a30b4bd7 +TEST= 185 +KEY= 92903879ad805c434308137849f2683581fae522a85a8ebf5a341b74166d1b3d +PT= e0f12b3e3c7913bac813ef0b7751b69064a8d5e6a30b4bd7 +CT= 25b347a799a2a1e0627ee7b4bfa247bd2afb31c01fdbc199 +TEST= 186 +KEY= f7a7246f56610c9466bb54dfd050c9d5e384029617f8c90270cf2ab409b6daa4 +PT= 25b347a799a2a1e0627ee7b4bfa247bd2afb31c01fdbc199 +CT= 5bc7b542bbac416f1faea55b8dec61a826c37975a72d7a88 +TEST= 187 +KEY= 370a3e127b31d73f3d7ce19d6bfc88bafc2aa7cd9a14a8aa560c53c1ae9ba02c +PT= 5bc7b542bbac416f1faea55b8dec61a826c37975a72d7a88 +CT= f7d46de93ceee54fed27c4dac8469c5d1562eda05248617e +TEST= 188 +KEY= d31076ebe1a8fe41caa88c7457126df5110d6317525234f7436ebe61fcd3c152 +PT= f7d46de93ceee54fed27c4dac8469c5d1562eda05248617e +CT= a6efab6df96eabfe30ab81de8f4b61813e6a2e8a184b506f +TEST= 189 +KEY= 53e9ec698f97aeb76c472719ae7cc60b21a6e2c9dd1955767d0490ebe498913d +PT= a6efab6df96eabfe30ab81de8f4b61813e6a2e8a184b506f +CT= f7dc10b7c86856d841d7aee679c792aae8074b112a157961 +TEST= 190 +KEY= 3d6a70855ad4c1c39b9b37ae661490d360714c2fa4dec7dc9503dbface8de85c +PT= f7dc10b7c86856d841d7aee679c792aae8074b112a157961 +CT= b0f5d8ec52b3d333903aa15288e3e6cd044c53d3258c3e3d +TEST= 191 +KEY= 76c6a2c8540fad472b6eef4234a743e0f04bed7d2c3d2111914f8829eb01d661 +PT= b0f5d8ec52b3d333903aa15288e3e6cd044c53d3258c3e3d +CT= 2d8c30b411d20a9270456d3d5c9eb05911082073cb5b4479 +TEST= 192 +KEY= e9d4a8954b6be96706e2dff625754972800e804070a391488047a85a205a9218 +PT= 2d8c30b411d20a9270456d3d5c9eb05911082073cb5b4479 +CT= 28217c897c2b33cef6b69d9f005d0a50e6bca34026abaf66 +TEST= 193 +KEY= 716cfa9c22b5fc742ec3a37f595e7abc76b81ddf70fe9b1866fb0b1a06f13d7e +PT= 28217c897c2b33cef6b69d9f005d0a50e6bca34026abaf66 +CT= 825760b48b2f535598df7b05f7584f8feb2bd05a499c8d3f +TEST= 194 +KEY= 0329f753babb5646ac94c3cbd27129e9ee6766da87a6d4978dd0db404f6db041 +PT= 825760b48b2f535598df7b05f7584f8feb2bd05a499c8d3f +CT= 15b393e2450c609ac50e08faaea66bd00d8ca22432cc3d52 +TEST= 195 +KEY= 50cdd5560bb479d5b9275029977d49732b696e202900bf47805c79647da18d13 +PT= 15b393e2450c609ac50e08faaea66bd00d8ca22432cc3d52 +CT= a977d64a49d8b5ae25c8670f068a3b1c8dae657857c15d02 +TEST= 196 +KEY= 72c81f1de63fa77910508663dea5fcdd0ea1092f2f8a845b0df21c1c2a60d011 +PT= a977d64a49d8b5ae25c8670f068a3b1c8dae657857c15d02 +CT= 46c2c348334be092af89bd9b198a8f3f598293f76fb0c4b9 +TEST= 197 +KEY= 04f634717c4a3e4f5692452bedee1c4fa128b4b436000b6454708feb45d014a8 +PT= 46c2c348334be092af89bd9b198a8f3f598293f76fb0c4b9 +CT= 1c4d9278c4ce28b8a87252b73d5d0742457ea26f993d04ac +TEST= 198 +KEY= 019bf653041d5e304adfd753292034f7095ae6030b5d0c26110e2d84dced1004 +PT= 1c4d9278c4ce28b8a87252b73d5d0742457ea26f993d04ac +CT= bf1da20e029824dc6cdfc3ac84a705b97635b03f40329f48 +TEST= 199 +KEY= bcd11fb74a98c9c1f5c2755d2bb8102b658525af8ffa099f673b9dbb9cdf8f4c +PT= bf1da20e029824dc6cdfc3ac84a705b97635b03f40329f48 +CT= 592795f5100b63381863489c0b4d3caee0f613c85360454f +TEST= 200 +KEY= b7e50065b23c9e41ace5e0a83bb373137de66d3384b7353187cd8e73cfbfca03 +PT= 592795f5100b63381863489c0b4d3caee0f613c85360454f +CT= fa333479568656b315dd2c98fa3ea9b15956ee7a3103050a +TEST= 201 +KEY= c8f02253a4520d2a56d6d4d16d3525a0683b41ab7e899c80de9b6009febccf09 +PT= fa333479568656b315dd2c98fa3ea9b15956ee7a3103050a +CT= bb13f5535d06830b39abdac672d5fdc83c54b0b9a059bb65 +TEST= 202 +KEY= 04e765bbd2d7500eedc521823033a6ab51909b6d0c5c6148e2cfd0b05ee5746c +PT= bb13f5535d06830b39abdac672d5fdc83c54b0b9a059bb65 +CT= a24197b43928ee95d661d6e0b8e9026682291a68c06b8831 +TEST= 203 +KEY= 4643464fa5a127c44f84b636091b483e87f14d8db4b5632e60e6cad89e8efc5d +PT= a24197b43928ee95d661d6e0b8e9026682291a68c06b8831 +CT= 41e7ffa9cd53097b86a717340e79bdfbb8f5a7ead7868a8d +TEST= 204 +KEY= d9b6faa54b8886fb0e63499fc448414501565ab9baccded5d8136d32490876d0 +PT= 41e7ffa9cd53097b86a717340e79bdfbb8f5a7ead7868a8d +CT= b93c58f5bdab6887e129450f44b2afeec6fe6c66f49a5591 +TEST= 205 +KEY= 022c874a42471425b75f116a79e329c2e07f1fb6fe7e713b1eed0154bd922341 +PT= b93c58f5bdab6887e129450f44b2afeec6fe6c66f49a5591 +CT= d6165039ccac0a7f7bc51a97f1e2b153dba6593e60fea068 +TEST= 206 +KEY= adb2c4dbe412af5061494153b54f23bd9bba05210f9cc068c54b586add6c8329 +PT= d6165039ccac0a7f7bc51a97f1e2b153dba6593e60fea068 +CT= 2479f0bff03fa3a484d6eb109862b501f55910784f56fd49 +TEST= 207 +KEY= a3c11254b9b855264530b1ec457080191f6cee3197fe756930124812923a7e60 +PT= 2479f0bff03fa3a484d6eb109862b501f55910784f56fd49 +CT= f3a4f80a8dbcd3206e8f729149ce5db427fc38fc5448ea1e +TEST= 208 +KEY= 2a94617d2dca0e19b69449e6c8cc533971e39ca0de3028dd17ee70eec672947e +PT= f3a4f80a8dbcd3206e8f729149ce5db427fc38fc5448ea1e +CT= 21c84df0421478af3b9b3b15440363dac06742143f0c0950 +TEST= 209 +KEY= b40369ddb49ca388975c04168ad82b964a78a7b59a334b07d78932faf97e9d2e +PT= 21c84df0421478af3b9b3b15440363dac06742143f0c0950 +CT= c47a404a93323d851e465ef52f67570e0eb2609adffa7e79 +TEST= 210 +KEY= 64ddb5567f03fa6e5326445c19ea1613543ef940b5541c09d93b52602684e357 +PT= c47a404a93323d851e465ef52f67570e0eb2609adffa7e79 +CT= c4277a2f75defb3c0ed56b86f0b31646a0dbe1d4afba93d3 +TEST= 211 +KEY= 3641440fe7557a9497013e736c34ed2f5aeb92c645e70a4f79e0b3b4893e7084 +PT= c4277a2f75defb3c0ed56b86f0b31646a0dbe1d4afba93d3 +CT= fe7e46a2f5e385384cb9721cb9f64059edd8441688bbeea1 +TEST= 212 +KEY= 57eb64d169912ac1697f78d199d768171652e0dafc114a169438f7a201859e25 +PT= fe7e46a2f5e385384cb9721cb9f64059edd8441688bbeea1 +CT= bbd88db0d4ce8ef040b87f7a221e50f16624861acf8af0b1 +TEST= 213 +KEY= dca81a9640b16990d2a7f5614d19e6e756ea9fa0de0f1ae7f21c71b8ce0f6e94 +PT= bbd88db0d4ce8ef040b87f7a221e50f16624861acf8af0b1 +CT= 841cf6fc051a9f4877e9f14480a17a39853822a12b9a55ed +TEST= 214 +KEY= 6c0e59d755a1f32d56bb039d480379af21036ee45eae60de77245319e5953b79 +PT= 841cf6fc051a9f4877e9f14480a17a39853822a12b9a55ed +CT= da29d7f5d9de2319d8b5d615fcb97cab250e936945a66f0a +TEST= 215 +KEY= c1b845adad320cf78c92d46891dd5ab6f9b6b8f1a2171c75522ac070a0335473 +PT= da29d7f5d9de2319d8b5d615fcb97cab250e936945a66f0a +CT= c984a7090de218180c4d827fea005df2a781fd1636d7586c +TEST= 216 +KEY= 6f96fff79ff17afd451673619c3f42aef5fb3a8e48174187f5ab3d6696e40c1f +PT= c984a7090de218180c4d827fea005df2a781fd1636d7586c +CT= 03e72dbd92334444d4f594778d1c15ec37b67d9765991ba5 +TEST= 217 +KEY= bc0549d2994fd36846f15edc0e0c06ea210eaef9c50b546bc21d40f1f37d17ba +PT= 03e72dbd92334444d4f594778d1c15ec37b67d9765991ba5 +CT= a5f12482ecf7af55dd46801645184f9e265fa77d85ef18f6 +TEST= 218 +KEY= 9402fd64bf77dd09e3007a5ee2fba9bffc482eef80131bf5e442e78c76920f4c +PT= a5f12482ecf7af55dd46801645184f9e265fa77d85ef18f6 +CT= 557307af13f1503bba966ae6ea406449cc81247808dc6b59 +TEST= 219 +KEY= af84e57ff7ea3745b6737df1f10af98446de44096a537fbc28c3c3f47e4e6415 +PT= 557307af13f1503bba966ae6ea406449cc81247808dc6b59 +CT= 4cd7a64e506f2dceec3eed36533797421158916be6df6f41 +TEST= 220 +KEY= 22f92cf15e1b5a60faa4dbbfa165d44aaae0a93f3964e8fe399b529f98910b54 +PT= 4cd7a64e506f2dceec3eed36533797421158916be6df6f41 +CT= 136d1026b15ba4b519a1d6405635d2ea3c6b153034bf414e +TEST= 221 +KEY= 6614b8501b7cf868e9c9cb99103e70ffb3417f7f6f513a1405f047afac2e4a1a +PT= 136d1026b15ba4b519a1d6405635d2ea3c6b153034bf414e +CT= 5e861968c04f422b25a22635d7a10fbdce22ce0ba9094857 +TEST= 222 +KEY= 55ad3f008f65bff7b74fd2f1d07132d496e3594ab8f035a9cbd289a40527024d +PT= 5e861968c04f422b25a22635d7a10fbdce22ce0ba9094857 +CT= a5fd52c3fdd6c778a9ef31cd2e16e0592d926d69cd9a5c7d +TEST= 223 +KEY= 74ff0a98058c6a3e12b280322da7f5ac3f0c688796e6d5f0e640e4cdc8bd5e30 +PT= a5fd52c3fdd6c778a9ef31cd2e16e0592d926d69cd9a5c7d +CT= 139dcf0da696507239010e8260a9057a777cd8310e989fd0 +TEST= 224 +KEY= 46a7314254c8fd2a012f4f3f8b31a5de060d6605f64fd08a913c3cfcc625c1e0 +PT= 139dcf0da696507239010e8260a9057a777cd8310e989fd0 +CT= 4053d060ecdc460a6ffdd43bcafb82eb3cddd4f79fb2a928 +TEST= 225 +KEY= 6ab9f3a8b92eccc1417c9f5f67ede3d469f0b23e3cb45261ade1e80b599768c8 +PT= 4053d060ecdc460a6ffdd43bcafb82eb3cddd4f79fb2a928 +CT= 06d607f4227d3605d11a09b7d0d96b0a4c04b8ff5fb43b8d +TEST= 226 +KEY= bbac6e944ade7fc547aa98ab4590d5d1b8eabb89ec6d396be1e550f406235345 +PT= 06d607f4227d3605d11a09b7d0d96b0a4c04b8ff5fb43b8d +CT= 8448615e730090cbd99a8856b2e9b0027841b27efda1f951 +TEST= 227 +KEY= 68c6629ab5cc93abc3e2f9f53690451a617033df5e84896999a4e28afb82aa14 +PT= 8448615e730090cbd99a8856b2e9b0027841b27efda1f951 +CT= ea9d7ea343900e70527f1f3484b7ee0ef910f10272ccb9ea +TEST= 228 +KEY= 1095090c610d1206297f875675004b6a330f2cebda33676760b41388894e13fe +PT= ea9d7ea343900e70527f1f3484b7ee0ef910f10272ccb9ea +CT= c57d0d15b54f9c9b7fbe63671e30769ab5e6e278b7955ec3 +TEST= 229 +KEY= 194ed84cf94c30e2ec028a43c04fd7f14cb14f8cc40311fdd552f1f03edb4d3d +PT= c57d0d15b54f9c9b7fbe63671e30769ab5e6e278b7955ec3 +CT= e76bfa1efa1274b1fa5d8aed081cf1007abec933c7c26a90 +TEST= 230 +KEY= 408c5be74435b3f40b69705d3a5da340b6ecc561cc1fe0fdafec38c3f91927ad +PT= e76bfa1efa1274b1fa5d8aed081cf1007abec933c7c26a90 +CT= 4272a62acd73f62b1a5b5ed966189c488df897e26dbbcf55 +TEST= 231 +KEY= ab39ab99392f34b5491bd677f72e556bacb79bb8aa077cb52214af2194a2e8f8 +PT= 4272a62acd73f62b1a5b5ed966189c488df897e26dbbcf55 +CT= df6faf775e70d08fda3c3bbfb2f5cb3b12da364800c220d0 +TEST= 232 +KEY= bbd8982d32b22c4296747900a95e85e4768ba00718f2b78e30ce99699460c828 +PT= df6faf775e70d08fda3c3bbfb2f5cb3b12da364800c220d0 +CT= 52dae556517f4195d3694f2ea2e39669c432dcf84b522482 +TEST= 233 +KEY= ed87d4888c864a2fc4ae9c56f821c471a5e2ef29ba1121e7f4fc4591df32ecaa +PT= 52dae556517f4195d3694f2ea2e39669c432dcf84b522482 +CT= f20c69abee948ba9f7cee8d831f5fd757d0e98a8fee4ee6d +TEST= 234 +KEY= aaadeb2fc3e7657136a2f5fd16b54fd8522c07f18be4dc9289f2dd3921d602c7 +PT= f20c69abee948ba9f7cee8d831f5fd757d0e98a8fee4ee6d +CT= 827bee55d1dc045fca176690f10e3b9efb13c4c8a7a6cd24 +TEST= 235 +KEY= 0a25af7521723660b4d91ba8c7694b87983b61617aeae70c72e119f18670cfe3 +PT= 827bee55d1dc045fca176690f10e3b9efb13c4c8a7a6cd24 +CT= 206fe38925f2e4f5a3ec050eb66b95748c6de35d4740addc +TEST= 236 +KEY= 727d96557c33531294b6f821e29baf723bd7646fcc817278fe8cfaacc130623f +PT= 206fe38925f2e4f5a3ec050eb66b95748c6de35d4740addc +CT= c3535a8cdff98513ba88d6d7e0e121fd26e9f80268ab7528 +TEST= 237 +KEY= a78261343c98bea757e5a2ad3d622a61815fb2b82c605385d86502aea99b1717 +PT= c3535a8cdff98513ba88d6d7e0e121fd26e9f80268ab7528 +CT= a5caf4a9aaca6022cba16352a33cdfbd4446281648d0e96c +TEST= 238 +KEY= 5ad78d8858189f39f22f560497a84a434afed1ea8f5c8c389c232ab8e14bfe7b +PT= a5caf4a9aaca6022cba16352a33cdfbd4446281648d0e96c +CT= db480a5cf1ec624ac67b1757d06076b5373f1f756ebb698a +TEST= 239 +KEY= aac401f4852c0b4529675c58664428098c85c6bd5f3cfa8dab1c35cd8ff097f1 +PT= db480a5cf1ec624ac67b1757d06076b5373f1f756ebb698a +CT= 31854cee62220c920d5b3f3ebe5f2738c5f73802bed5b9e0 +TEST= 240 +KEY= ed404bc8b20ddb7a18e210b60466249b81def983e163ddb56eeb0dcf31252e11 +PT= 31854cee62220c920d5b3f3ebe5f2738c5f73802bed5b9e0 +CT= 7777ee6d9fa5283e82990fb8ed1fa97e5727ea11466c1118 +TEST= 241 +KEY= c66b0c51f48806706f95fedb9bc30ca50347f63b0c7c74cb39cce7de77493f09 +PT= 7777ee6d9fa5283e82990fb8ed1fa97e5727ea11466c1118 +CT= c33cfd5d9ec9f3bf5c8872d65c3be3f3bf99bc36ba09b481 +TEST= 242 +KEY= 097dd4f6c683d03eaca90386050aff1a5fcf84ed5047973886555be8cd408b88 +PT= c33cfd5d9ec9f3bf5c8872d65c3be3f3bf99bc36ba09b481 +CT= 383e018c80fe5d2ad6c89db3a90a64d30bc29946d9372528 +TEST= 243 +KEY= e77e03fca927ba3f9497020a85f4a2308907195ef94df3eb8d97c2ae1477aea0 +PT= 383e018c80fe5d2ad6c89db3a90a64d30bc29946d9372528 +CT= 289e5a73722bcf79051c0bcb89f4e69cbad04606ac9ba50c +TEST= 244 +KEY= a2e7ea9054d61a2ebc095879f7df6d498c1b129570b91577374784a8b8ec0bac +PT= 289e5a73722bcf79051c0bcb89f4e69cbad04606ac9ba50c +CT= a373aa74d15c74c0472abb12e8f2b864c4da983315be2020 +TEST= 245 +KEY= e6fd23775257b52c1f7af20d26831989cb31a987984bad13f39d1c9bad522b8c +PT= a373aa74d15c74c0472abb12e8f2b864c4da983315be2020 +CT= 416432eac48aa4c2d4abd871852fbc744106ca970cbdd245 +TEST= 246 +KEY= a29b1d3b10743b385e1ec0e7e209bd4b1f9a71f61d641167b29bd60ca1eff9c9 +PT= 416432eac48aa4c2d4abd871852fbc744106ca970cbdd245 +CT= a6eb6858bc73ace9a69c0ae964087f50dad69b450620691f +TEST= 247 +KEY= f571ad1ec6d6e7dff8f5a8bf5e7a11a2b9067b1f796c6e37684d4d49a7cf90d6 +PT= a6eb6858bc73ace9a69c0ae964087f50dad69b450620691f +CT= 4d77f68c9d7eea9abe2439174dd093733d3774b0b67826e0 +TEST= 248 +KEY= b8fe19d0be2fb008b5825e33c304fb380722420834bcfd44557a39f911b7b636 +PT= 4d77f68c9d7eea9abe2439174dd093733d3774b0b67826e0 +CT= f62e753e685f18104cf4faa8a5879db9fb05fa301bae5e05 +TEST= 249 +KEY= e2666f43c5a1501c43ac2b0dab5be3284bd6b8a0913b60fdae7fc3c90a19e833 +PT= f62e753e685f18104cf4faa8a5879db9fb05fa301bae5e05 +CT= 744afcccf2f9175a7a5900b36924715fe477ccf4eb1d9016 +TEST= 250 +KEY= 2f3aa908beeab92b37e6d7c159a2f472318fb813f81f11a24a080f3de1047825 +PT= 744afcccf2f9175a7a5900b36924715fe477ccf4eb1d9016 +CT= 1e8e67b3322a0e5227362d1a23d17e951070fedf86c363a3 +TEST= 251 +KEY= ea6274e3e60566a42968b0726b88fa2016b99509dbce6f375a78f1e267c71b86 +PT= 1e8e67b3322a0e5227362d1a23d17e951070fedf86c363a3 +CT= db2a7fe5ca5b82875ac76e4303c916c246a50cc90357c81b +TEST= 252 +KEY= b9fe3cd527433fcef242cf97a1d378a74c7efb4ad80779f51cddfd2b6490d39d +PT= db2a7fe5ca5b82875ac76e4303c916c246a50cc90357c81b +CT= cf00f29b64eef475bd993eca20b6d8332e681d5b415f1ef5 +TEST= 253 +KEY= bba57dbb3dabc9d43d423d0cc53d8cd2f1e7c580f8b1a1c632b5e07025cfcd68 +PT= cf00f29b64eef475bd993eca20b6d8332e681d5b415f1ef5 +CT= 4849f402700d05cbb44270e104aba6285bef7b4383624bc9 +TEST= 254 +KEY= 961344674400d191750bc90eb530891945a5b561fc1a07ee695a9b33a6ad86a1 +PT= 4849f402700d05cbb44270e104aba6285bef7b4383624bc9 +CT= 2fc99fb7f69a1d4f8e5e39641ea244d8dea23565ed769206 +TEST= 255 +KEY= 21ac8260885f5b5b5ac256b943aa9456cbfb8c05e2b84336b7f8ae564bdb14a7 +PT= 2fc99fb7f69a1d4f8e5e39641ea244d8dea23565ed769206 +CT= ae44b576597d1dfb7646056a58a7d1f6814249c5ff2c1fcb +TEST= 256 +KEY= 6bb3bc5c0c0e70a8f486e3cf1ad789adbdbd896fba1f92c036bae793b4f70b6c +PT= ae44b576597d1dfb7646056a58a7d1f6814249c5ff2c1fcb +CT= 1d3af27ca08d63e5b25adbc2a14e1676a52dc1929d4c7d4e +TEST= 257 +KEY= ad290eb68c263d64e9bc11b3ba5aea480fe752ad1b5184b69397260129bb7622 +PT= 1d3af27ca08d63e5b25adbc2a14e1676a52dc1929d4c7d4e +CT= b9589a4c095f9518ef8411d161f49d68937ce49849eb8971 +TEST= 258 +KEY= 45579cc84bb70f9c50e48bffb3057f50e063437c7aa519de00ebc2996050ff53 +PT= b9589a4c095f9518ef8411d161f49d68937ce49849eb8971 +CT= 14f30f7d0ab28bfc07afec3d58c26aa7bfcfefb54a29ab2a +TEST= 259 +KEY= 651fd1c7bf4a6dac44178482b9b7f4ace7ccaf4122677379bf242d2c2a795479 +PT= 14f30f7d0ab28bfc07afec3d58c26aa7bfcfefb54a29ab2a +CT= c6e7ed92e773527f49a8779da98d7546074d3e749c379ab2 +TEST= 260 +KEY= c6b4777818d048d182f069105ec4a6d3ae64d8dc8bea063fb8691358b64ececb +PT= c6e7ed92e773527f49a8779da98d7546074d3e749c379ab2 +CT= 50ecf9ec67ebf8240fc9d008d2af26bb9f44743ea9ab96c3 +TEST= 261 +KEY= c43eac5b6fbb7be5d21c90fc392f5ef7a1ad08d459452084272d67661fe55808 +PT= 50ecf9ec67ebf8240fc9d008d2af26bb9f44743ea9ab96c3 +CT= 3f3d7fa0d30a09e5a2423426ac004e6955ce65fc030a4634 +TEST= 262 +KEY= 0beabc22e2956b4bed21ef5cea25571203ef3cf2f5456eed72e3029a1cef1e3c +PT= 3f3d7fa0d30a09e5a2423426ac004e6955ce65fc030a4634 +CT= ed107e130dd86e223cf942c514f72b602516cf447befeff5 +TEST= 263 +KEY= 79221efb96e3e3d20031914fe7fd39303f167e37e1b2458d57f5cdde6700f1c9 +PT= ed107e130dd86e223cf942c514f72b602516cf447befeff5 +CT= fe70e0713d4756e8c6c6fcc591f6d869ecbe1e35babcc57a +TEST= 264 +KEY= 5a7f7e35d4faa744fe41713edaba6fd8f9d082f270449de4bb4bd3ebddbc34b3 +PT= fe70e0713d4756e8c6c6fcc591f6d869ecbe1e35babcc57a +CT= c21dabdca5aa7114b1102cee606ab5245fbb3734d6aa65a8 +TEST= 265 +KEY= 5cad4ebcdf85aec73c5cdae27f101ecc48c0ae1c102e28c0e4f0e4df0b16511b +PT= c21dabdca5aa7114b1102cee606ab5245fbb3734d6aa65a8 +CT= 22dd45eb4a00ecceaf6ce9f7132e06d3da18c72746291cff +TEST= 266 +KEY= bbfe51b92fdf129d1e819f093510f202e7ac47eb03002e133ee823f84d3f4de4 +PT= 22dd45eb4a00ecceaf6ce9f7132e06d3da18c72746291cff +CT= 0b0373feeccaee6eeb043edfcff23f54389ee085484576ed +TEST= 267 +KEY= 60e3aa5a3ccc65b81582ecf7d9da1c6c0ca87934ccf211470676c37d057a3b09 +PT= 0b0373feeccaee6eeb043edfcff23f54389ee085484576ed +CT= 57c0a0682502371178c83f8f5f8ae54285f416662ee08d5a +TEST= 268 +KEY= c25bf4df95b0b61d42424c9ffcd82b7d746046bb9378f4058382d51b2b9ab653 +PT= 57c0a0682502371178c83f8f5f8ae54285f416662ee08d5a +CT= a4d1e7a5d14a8aec32c6e5442d067321d0c30bc3d74148a5 +TEST= 269 +KEY= 1aeaba382f85ce11e693ab3a2d92a19146a6a3ffbe7e87245341ded8fcdbfef6 +PT= a4d1e7a5d14a8aec32c6e5442d067321d0c30bc3d74148a5 +CT= 8038595d58809856f45cdde8d544a128a9e27bf6d2a010eb +TEST= 270 +KEY= 9976a0f88ee133e966abf267751239c7b2fa7e176b3a260cfaa3a52e2e7bee1d +PT= 8038595d58809856f45cdde8d544a128a9e27bf6d2a010eb +CT= 1d0db098b69d8b18e08b524155fee49f34333a424d78a1d3 +TEST= 271 +KEY= 1897a947f624a9077ba642ffc38fb2df52712c563ec4c293ce909f6c63034fce +PT= 1d0db098b69d8b18e08b524155fee49f34333a424d78a1d3 +CT= 8fbec2ce592fd029a7e2a9877d4e90cbb2c37cdec6bd1bc0 +TEST= 272 +KEY= b60e1d5603421075f41880319aa062f6f59385d1438a52587c53e3b2a5be540e +PT= 8fbec2ce592fd029a7e2a9877d4e90cbb2c37cdec6bd1bc0 +CT= dc65eb9f56d1dd4c52c502314e8359615aa3de6c66e1e0e1 +TEST= 273 +KEY= 37dc438a90f510c1287d6baecc71bfbaa75687e00d090b3926f03ddec35fb4ef +PT= dc65eb9f56d1dd4c52c502314e8359615aa3de6c66e1e0e1 +CT= 4f74fc9b733bd1187e8a6d90e5869f854d3f17f4a1e5f343 +TEST= 274 +KEY= 912dad662cf60a9f67099735bf4a6ea2d9dcea70e88f94bc6bcf2a2a62ba47ac +PT= 4f74fc9b733bd1187e8a6d90e5869f854d3f17f4a1e5f343 +CT= 125a4885a1d1530037dd5dab040646c39985367adc1b39f6 +TEST= 275 +KEY= 69fc4ca285f10d767553dfb01e9b3da2ee01b7dbec89d27ff24a1c50bea17e5a +PT= 125a4885a1d1530037dd5dab040646c39985367adc1b39f6 +CT= 7164ea1e07d31dfe35329fd8e10f7d3121a88a403efd120a +TEST= 276 +KEY= f55fda4d82bff899043735ae1948205cdb3328030d86af4ed3e29610805c6c50 +PT= 7164ea1e07d31dfe35329fd8e10f7d3121a88a403efd120a +CT= d21c2cc49d2cebce876e2e93aabf2913f6925d2dfb01cca2 +TEST= 277 +KEY= e544fe54ac06cbb7d62b196a8464cb925c5d0690a739865d2570cb3d7b5da0f2 +PT= d21c2cc49d2cebce876e2e93aabf2913f6925d2dfb01cca2 +CT= dffa5b0d3be6a01278ccc58c4f210bc59a1b01c46e4d808e +TEST= 278 +KEY= d1263dc117d6eb2709d14267bf826b802491c31ce8188d98bf6bcaf91510207c +PT= dffa5b0d3be6a01278ccc58c4f210bc59a1b01c46e4d808e +CT= d060bbde2243b68309010e976b996c8283b2faa33ea7cdbb +TEST= 279 +KEY= 8b1e58b236e9740bd9b1f9b99dc1dd032d90cd8b8381e11a3cd9305a2bb7edc7 +PT= d060bbde2243b68309010e976b996c8283b2faa33ea7cdbb +CT= 985a57161c8fc2a5d0d2301390151e7897e02268bc333207 +TEST= 280 +KEY= 98f70668a5f3e95441ebaeaf814e1fa6fd42fd981394ff62ab3912329784dfc0 +PT= 985a57161c8fc2a5d0d2301390151e7897e02268bc333207 +CT= e8bf169f17c9047d71763f4e423d3eafb37d578822881376 +TEST= 281 +KEY= 78383c17b61e2b41a954b83096871bdb8c34c2d651a9c1cd184445bab50cccb6 +PT= e8bf169f17c9047d71763f4e423d3eafb37d578822881376 +CT= 633fa23b6525dba9db5c863b8eb553420c6c17cfdc97a5bc +TEST= 282 +KEY= 130385e9cfaf7956ca6b1a0bf3a2c072576844eddf1c928f14285275699b690a +PT= 633fa23b6525dba9db5c863b8eb553420c6c17cfdc97a5bc +CT= 69f82cad6804883b753b62340e4a77bb36c2024a3e3de1df +TEST= 283 +KEY= 779842b951bb9fa1a39336a69ba64849225326d9d156e53422ea503f57a688d5 +PT= 69f82cad6804883b753b62340e4a77bb36c2024a3e3de1df +CT= 27cab1fdf37849b82a11b2a5a55b00d041c2abc0c3c9cf95 +TEST= 284 +KEY= f977e43d0602c3f78459875b68de01f10842947c740de5e46328fbff946f4740 +PT= 27cab1fdf37849b82a11b2a5a55b00d041c2abc0c3c9cf95 +CT= 4b77ad6f88bca3835d90e5d5cd736498e67a90029dfb936a +TEST= 285 +KEY= 5b9c387994a7f6e1cf2e2a34e062a27255d271a9b97e817c85526bfd0994d42a +PT= 4b77ad6f88bca3835d90e5d5cd736498e67a90029dfb936a +CT= 78456ffb688d34461e8d24616a8fc7abd5e525783c616ef0 +TEST= 286 +KEY= 22fcc5288e8cd423b76b45cf88ef96344b5f55c8d3f146d750b74e8535f5bada +PT= 78456ffb688d34461e8d24616a8fc7abd5e525783c616ef0 +CT= f2ea23334c59ec4d3df65d65b83ad48a47670020a2d176dd +TEST= 287 +KEY= 348417a6b211a520458166fcc4b67a7976a908ad6bcb925d17d04ea59724cc07 +PT= f2ea23334c59ec4d3df65d65b83ad48a47670020a2d176dd +CT= 1b00325d92f3c1e7fc8bfbbb3c33c7f03bb50db4dcd63a03 +TEST= 288 +KEY= e99c2b60824d32645e8154a15645bb9e8a22f31657f855ad2c6543114bf2f604 +PT= 1b00325d92f3c1e7fc8bfbbb3c33c7f03bb50db4dcd63a03 +CT= a4b8b5363337c9f110cfc3ea0e3470e741f4efa6a7d43510 +TEST= 289 +KEY= d8ca6bebe3880b9dfa39e1976572726f9aed30fc59cc254a6d91acb7ec26c314 +PT= a4b8b5363337c9f110cfc3ea0e3470e741f4efa6a7d43510 +CT= c10612589792d8ff5acd157ae07acf49bd1d584e137edb52 +TEST= 290 +KEY= 5cb669d90228a0aa3b3ff3cff2e0aa90c0202586b9b6ea03d08cf4f9ff581846 +PT= c10612589792d8ff5acd157ae07acf49bd1d584e137edb52 +CT= e7c71a1c6b768236010ca95c9ccde632c8b41c4fddaed1a3 +TEST= 291 +KEY= 356432f3258b9217dcf8e9d3999628a6c12c8cda257b0c311838e8b622f6c9e5 +PT= e7c71a1c6b768236010ca95c9ccde632c8b41c4fddaed1a3 +CT= 9716f072c8a70a8e3f4cc15198fb054481267fe22be40d7b +TEST= 292 +KEY= e09689fde79180714bee19a151312228fe604d8bbd800975991e97540912c49e +PT= 9716f072c8a70a8e3f4cc15198fb054481267fe22be40d7b +CT= 41d7e34a92c36c5890e6ecd2b9cf0369fd2ef3ae7cf480db +TEST= 293 +KEY= 4bd2c463c7d452b00a39faebc3f24e706e86a159044f0a1c643064fa75e64445 +PT= 41d7e34a92c36c5890e6ecd2b9cf0369fd2ef3ae7cf480db +CT= f5c2b658381fe585430dc6e644ee79e02e35a6db7bedb2a5 +TEST= 294 +KEY= a6f20fb7db7c4cfdfffb4cb3fbedabf52d8b67bf40a173fc4a05c2210e0bf6e0 +PT= f5c2b658381fe585430dc6e644ee79e02e35a6db7bedb2a5 +CT= eea877d6e605212d07be745715733b8c824b95da1126ea8f +TEST= 295 +KEY= b44c0a90b4547af111533b651de88ad82a3513e855d24870c84e57fb1f2d1c6f +PT= eea877d6e605212d07be745715733b8c824b95da1126ea8f +CT= 01122358df34fa9d3941ca6c04f1e9dbdd2a5e278a0aff22 +TEST= 296 +KEY= 4ecad3543f2af3661041183dc2dc70451374d9845123a1ab156409dc9527e34d +PT= 01122358df34fa9d3941ca6c04f1e9dbdd2a5e278a0aff22 +CT= 13d4f86a1f7862121283d9ad64cead99cfadc70de0948328 +TEST= 297 +KEY= 0a3d97eb9ca552890395e057dda4125701f7002935ed0c32dac9ced175b36065 +PT= 13d4f86a1f7862121283d9ad64cead99cfadc70de0948328 +CT= bbf745b4c4e40fe552f7654dd78e7dc40d8343021ad22064 +TEST= 298 +KEY= 659e13fa53f76b0fb862a5e319401db253006564e26371f6d74a8dd36f614001 +PT= bbf745b4c4e40fe552f7654dd78e7dc40d8343021ad22064 +CT= c5037ed1ea96b994e1b5db89b51122a3edc2e9ab2a371d7f +TEST= 299 +KEY= 7845597e307372197d61db32f3d6a426b2b5beed577253553a88647845565d7e +PT= c5037ed1ea96b994e1b5db89b51122a3edc2e9ab2a371d7f +CT= ec83044bd29141751fa4c7f056a60b7d418cbb53384560b9 +TEST= 300 +KEY= 19f3486b44b1374d91e2df792147e553ad11791d01d458287b04df2b7d133dc7 +PT= ec83044bd29141751fa4c7f056a60b7d418cbb53384560b9 +CT= 4a41d9d748616cd994cfc96d47b0c817f58ae90b3eee80fc +TEST= 301 +KEY= e5a3b133552906e9dba306ae6926898a39deb0704664903f8e8e362043fdbd3b +PT= 4a41d9d748616cd994cfc96d47b0c817f58ae90b3eee80fc +CT= 89137fabf86d0198a010dab4b0e238666727b19f20878df8 +TEST= 302 +KEY= 458a46d9ad39d4d952b07905914b881299ce6ac4f686a859e9a987bf637a30c3 +PT= 89137fabf86d0198a010dab4b0e238666727b19f20878df8 +CT= 5d56497edfe7ad484046bdd760645ab10e17a96f2d1d685f +TEST= 303 +KEY= ef9173cfabdd86a00fe6307b4eac255ad988d71396e2f2e8e7be2ed04e67589c +PT= 5d56497edfe7ad484046bdd760645ab10e17a96f2d1d685f +CT= 97243ec238a7c47d28383e051a0e4d87b508ce26d047cfa8 +TEST= 304 +KEY= a55c30683953383f98c20eb9760be127f1b0e9168cecbf6f52b6e0f69e209734 +PT= 97243ec238a7c47d28383e051a0e4d87b508ce26d047cfa8 +CT= 39afc45bf3c7c71d970d72f18be0039c6a4d41f575635381 +TEST= 305 +KEY= d61b2e8423636f12a16dcae285cc263a66bd9be7070cbcf338fba103eb43c4b5 +PT= 39afc45bf3c7c71d970d72f18be0039c6a4d41f575635381 +CT= 7fcec247b40dc2f526e9e5a6b9ab263824a0696594317f63 +TEST= 306 +KEY= 205c48c1bb2c3e65dea308a531c1e4cf40547e41bea79acb1c5bc8667f72bbd6 +PT= 7fcec247b40dc2f526e9e5a6b9ab263824a0696594317f63 +CT= c1f234413239a6769d2de851a6fdf91b0c2c2b5a8b7c62cf +TEST= 307 +KEY= b8a59f578a4510921f513ce403f842b9dd799610185a63d01077e33cf40ed919 +PT= c1f234413239a6769d2de851a6fdf91b0c2c2b5a8b7c62cf +CT= 29e55847f6d5bedd0c61cbff37bc580b0754d8696f3623d8 +TEST= 308 +KEY= 3a5190846575c12d36b464a3f52dfc64d1185def2fe63bdb17233b559b38fac1 +PT= 29e55847f6d5bedd0c61cbff37bc580b0754d8696f3623d8 +CT= ef5d617d95b508ba8078f3dd39d7bc1ac4e3dd19bd6182c5 +TEST= 309 +KEY= f37fccea63ad8e11d9e905de6098f4de5160ae32163187c1d3c0e64c26597804 +PT= ef5d617d95b508ba8078f3dd39d7bc1ac4e3dd19bd6182c5 +CT= d904a1f45cfd3b9ab53cca6c29fb86c9d757629c9e9beb00 +TEST= 310 +KEY= 11a97610316db06700eda42a3c65cf44e45c645e3fca0108049784d0b8c29304 +PT= d904a1f45cfd3b9ab53cca6c29fb86c9d757629c9e9beb00 +CT= 8884caf67d444a817530f7c24422b928adba578579bde37a +TEST= 311 +KEY= 6d7b2ea47201345188696edc412185c5916c939c7be8b820a92dd355c17f707e +PT= 8884caf67d444a817530f7c24422b928adba578579bde37a +CT= 4a44f67b01f893f3d37f240052726e17fe0488683080339e +TEST= 312 +KEY= 91865c9f67b03fc6c22d98a740d916364213b79c299ad63757295b3df1ff43e0 +PT= 4a44f67b01f893f3d37f240052726e17fe0488683080339e +CT= 00e08a7661e064ac756e477d1235e8f5144028ff3e4fb079 +TEST= 313 +KEY= faf4b597843f662bc2cd12d12139729a377df0e13baf3ec2436973c2cfb0f399 +PT= 00e08a7661e064ac756e477d1235e8f5144028ff3e4fb079 +CT= ec4224baf51a4260b329e4896f49635b88147d0600e04548 +TEST= 314 +KEY= 81ae80943c66ad272e8f366bd42330fa8454146854e65d99cb7d0ec4cf50b6d1 +PT= ec4224baf51a4260b329e4896f49635b88147d0600e04548 +CT= 32ab70ef9ebef091603b5744d55333dc214b938d75c490f2 +TEST= 315 +KEY= 4700f5a7b6be82d21c2446844a9dc06be46f432c81b56e45ea369d49ba942623 +PT= 32ab70ef9ebef091603b5744d55333dc214b938d75c490f2 +CT= 7acca97c6413cbecd61b12e9981f0add188ea1a62d341fb1 +TEST= 316 +KEY= 1b2d1eaac84447dd66e8eff82e8e0b87327451c519aa6498f2b83cef97a03992 +PT= 7acca97c6413cbecd61b12e9981f0add188ea1a62d341fb1 +CT= 070401c231a4acd63bc0f0a64f28278fa92c9ba025fbff60 +TEST= 317 +KEY= db843e8a8ba8f11a61ecee3a1f2aa75109b4a163568243175b94a74fb25bc6f2 +PT= 070401c231a4acd63bc0f0a64f28278fa92c9ba025fbff60 +CT= 01f94205162d21cb55f42e805631513f855e8c922f3a86ec +TEST= 318 +KEY= 9a5b478c70cb495c6015ac3f0907869a5c408fe300b31228deca2bdd9d61401e +PT= 01f94205162d21cb55f42e805631513f855e8c922f3a86ec +CT= 62903c989df476faf37fdc63a0716a84c3a2ae069de1571c +TEST= 319 +KEY= 4b456ae80aeb7b2d028590a794f3f060af3f5380a0c278ac1d6885db00801702 +PT= 62903c989df476faf37fdc63a0716a84c3a2ae069de1571c +CT= fc48205eca7262bccdee1f859d0b92731115087a0527cbaa +TEST= 320 +KEY= 5bf289214fe74719fecdb0f95e8192dc62d14c053dc9eadf0c7d8da105a7dca8 +PT= fc48205eca7262bccdee1f859d0b92731115087a0527cbaa +CT= c28180f9d084ed7166260cce04656f8058cdeb334b3d80f1 +TEST= 321 +KEY= 097834b67a856d343c4c30008e057fad04f740cb39ac855f54b066924e9a5c59 +PT= c28180f9d084ed7166260cce04656f8058cdeb334b3d80f1 +CT= 8b46bc282e23d6ff3e759c4bca3d04b6605fbe1838b31781 +TEST= 322 +KEY= befc66f513cff0a2b70a8c28a026a9523a82dc80f39181e934efd88a76294bd8 +PT= 8b46bc282e23d6ff3e759c4bca3d04b6605fbe1838b31781 +CT= bb9371bb70afdcfd51ff82cbd633a740cfc88b47fe87c31c +TEST= 323 +KEY= 7a64725c7b46b7240c99fd93d08975af6b7d5e4b25a226a9fb2753cd88ae88c4 +PT= bb9371bb70afdcfd51ff82cbd633a740cfc88b47fe87c31c +CT= 0531077d688b7130e05bb0f08cb53bdfa0f872a2c87ecfa1 +TEST= 324 +KEY= 4fef9025cc9831c609a8faeeb802049f8b26eebba9171d765bdf216f40d04765 +PT= 0531077d688b7130e05bb0f08cb53bdfa0f872a2c87ecfa1 +CT= 9f073fcec8b1552f3f9b635b8d5bb857085e279f62c762ae +TEST= 325 +KEY= d062f40bb8c1d38b96afc52070b351b0b4bd8de0244ca521538106f0221725cb +PT= 9f073fcec8b1552f3f9b635b8d5bb857085e279f62c762ae +CT= 0a04688fe5003689dc2c9ff116a7e3f9dea27582b9ed434a +TEST= 326 +KEY= f108ce1f9b2a32999cabadaf95b367396891121132eb46d88d2373729bfa6681 +PT= 0a04688fe5003689dc2c9ff116a7e3f9dea27582b9ed434a +CT= 3d63ac54606e14d991ca1469c3121982b589f33361eb1c99 +TEST= 327 +KEY= 3df66b0a70127ddba1c801fbf5dd73e0f95b0678f1f95f5a38aa8041fa117a18 +PT= 3d63ac54606e14d991ca1469c3121982b589f33361eb1c99 +CT= 7c06fe43cf4a19099529f13af352d3eb82a7ee9d0cf4d5d5 +TEST= 328 +KEY= 94ffd278db35d245ddceffb83a976ae96c72f74202ab8cb1ba0d6edcf6e5afcd +PT= 7c06fe43cf4a19099529f13af352d3eb82a7ee9d0cf4d5d5 +CT= 2f681c6440c65c07e2719d0d7b95149d9b7f3710dab91e0e +TEST= 329 +KEY= 54388ee77b3d7388f2a6e3dc7a5136ee8e036a4f793e982c217259cc2c5cb1c3 +PT= 2f681c6440c65c07e2719d0d7b95149d9b7f3710dab91e0e +CT= fa22d10ff94028351e3981cbc09aaf5e243ee87c96112600 +TEST= 330 +KEY= dea27c6ae97493ba088432d383111edb903aeb84b9a43772054cb1b0ba4d97c3 +PT= fa22d10ff94028351e3981cbc09aaf5e243ee87c96112600 +CT= 8e427fc399d08a096aa5ef285d847a6ec379651388205563 +TEST= 331 +KEY= 5a527be25ac7507186c64d101ac194d2fa9f04ace4204d1cc635d4a3326dc2a0 +PT= 8e427fc399d08a096aa5ef285d847a6ec379651388205563 +CT= 310bd8322ea2e4d7d8c74687c3ad6f8b81ed2a3f8682917b +TEST= 332 +KEY= 5b7524310e5e1f0bb7cd9522346370052258422b278d229747d8fe9cb4ef53db +PT= 310bd8322ea2e4d7d8c74687c3ad6f8b81ed2a3f8682917b +CT= 16470fdd618067c61b70c50435c3b2ac95179d419bab6f71 +TEST= 333 +KEY= 45adf9af7a7a70cca18a9aff55e317c33928872f124e903bd2cf63dd2f443caa +PT= 16470fdd618067c61b70c50435c3b2ac95179d419bab6f71 +CT= 1f80b68cec3a3052f9a4c0364097b0926cbd5bd2082df77f +TEST= 334 +KEY= 2f2b1de63b035ebbbe0a2c73b9d92791c08c471952d920a9be72380f2769cbd5 +PT= 1f80b68cec3a3052f9a4c0364097b0926cbd5bd2082df77f +CT= 6e012633d48d8432c2d691e1669907bcffda5a3e31074db8 +TEST= 335 +KEY= 2d411aee44ee3519d00b0a406d54a3a3025ad6f83440271541a86231166e866d +PT= 6e012633d48d8432c2d691e1669907bcffda5a3e31074db8 +CT= 1ac21bda20244f3d8083387d31aceddf9364631b3fc77843 +TEST= 336 +KEY= bd3b532100ae8e45cac9119a4d70ec9e82d9ee8505eccacad2cc012a29a9fe2e +PT= 1ac21bda20244f3d8083387d31aceddf9364631b3fc77843 +CT= 7677a7308ffeb39e3afd25f7162822e7d6a0f6b815f5bbd3 +TEST= 337 +KEY= 3e10aa05293504a9bcbeb6aac28e5f00b824cb7213c4e82d046cf7923c5c45fd +PT= 7677a7308ffeb39e3afd25f7162822e7d6a0f6b815f5bbd3 +CT= 4265d3cd7103eae6ae191e2c88b149cf65a6fba18a25ccbc +TEST= 338 +KEY= d633e73984836c22fedb6567b38db5e6163dd55e9b75a1e261ca0c33b6798941 +PT= 4265d3cd7103eae6ae191e2c88b149cf65a6fba18a25ccbc +CT= bcb29ffb75f8855c1f58685e1076134e1c49280a2423a913 +TEST= 339 +KEY= dad300b58d9ed5534269fa9cc67530ba0965bd008b03b2ac7d832439925a2052 +PT= bcb29ffb75f8855c1f58685e1076134e1c49280a2423a913 +CT= 27e787f49f5cfe82f7de32f737b87bbdb726626c12368c01 +TEST= 340 +KEY= d9e16dea415c3a3a658e7d685929ce38febb8ff7bcbbc911caa54655806cac53 +PT= 27e787f49f5cfe82f7de32f737b87bbdb726626c12368c01 +CT= 3e31830f8bd9fa047ac99a887f8459744043cc75f4edd334 +TEST= 341 +KEY= 63e3e0c7ae0b34b65bbffe67d2f0343c8472157fc33f90658ae68a2074817f67 +PT= 3e31830f8bd9fa047ac99a887f8459744043cc75f4edd334 +CT= 4bb76df7be9214528dbd926ade0ca12e892b6c76b0f5a4e7 +TEST= 342 +KEY= 09343fbd0b5bd404100893906c62206e09cf87151d33314b03cde656c474db80 +PT= 4bb76df7be9214528dbd926ade0ca12e892b6c76b0f5a4e7 +CT= 933dbc147bfe6b571953ac0e0f451cad1ac2a190ee5d7fdd +TEST= 343 +KEY= 1ab399235f1088d683352f84179c4b39109c2b1b12762de6190f47c62a29a45d +PT= 933dbc147bfe6b571953ac0e0f451cad1ac2a190ee5d7fdd +CT= ae3ef6780772863e148536f2c1e2677dc676e71b7e189270 +TEST= 344 +KEY= 6533c162b1e3d72b2d0bd9fc10eecd0704191de9d3944a9bdf79a0dd5431362d +PT= ae3ef6780772863e148536f2c1e2677dc676e71b7e189270 +CT= 1b9e9d89d8961646e697883251da027979e01061496f0304 +TEST= 345 +KEY= 470886f01fc836ea36954475c878db41e28e95db824e48e2a699b0bc1d5e3529 +PT= 1b9e9d89d8961646e697883251da027979e01061496f0304 +CT= 20f9d57c97bb5b396ef23b2b5a814af11b5150cb6805d2bd +TEST= 346 +KEY= b07af3c0b2dc9e88166c91095fc380788c7caef0d8cf0213bdc8e077755be794 +PT= 20f9d57c97bb5b396ef23b2b5a814af11b5150cb6805d2bd +CT= 29ffc583b4cc897067c19c2546a45f4b7c758925f2ba7ffe +TEST= 347 +KEY= cc1c0a8e74aa43ab3f93548aeb0f0908ebbd32d59e6b5d58c1bd695287e1986a +PT= 29ffc583b4cc897067c19c2546a45f4b7c758925f2ba7ffe +CT= ef33f43f602dc239c12d95f9b88854657855e54e4ef26d37 +TEST= 348 +KEY= 87a89e1251c7f5c5d0a0a0b58b22cb312a90a72c26e3093db9e88c1cc913f55d +PT= ef33f43f602dc239c12d95f9b88854657855e54e4ef26d37 +CT= 22fb16b3a0561a9f75567b61c46b736b2f0a5d855163b592 +TEST= 349 +KEY= 3292c3c9f68347d1f25bb6062b74d1ae5fc6dc4de2887a5696e2d199987040cf +PT= 22fb16b3a0561a9f75567b61c46b736b2f0a5d855163b592 +CT= c23c9c3d26c57c207ad829556a5d774bf0047a45f85b1294 +TEST= 350 +KEY= b748c13258828ffe30672a3b0db1ad8e251ef51888d50d1d66e6abdc602b525b +PT= c23c9c3d26c57c207ad829556a5d774bf0047a45f85b1294 +CT= f768e0a2e506b649d36d082b974c96a04c1ed36aec1068fc +TEST= 351 +KEY= 8bb6722f34e1d84bc70fca99e8b71bc7f673fd331f999bbd2af878b68c3b3aa7 +PT= f768e0a2e506b649d36d082b974c96a04c1ed36aec1068fc +CT= 7dec018cb79a48ce967ebbebd99dfb96fc806804e23135d9 +TEST= 352 +KEY= fa9fe7e1bab2981abae3cb155f2d5309600d46d8c604602bd67810b26e0a0f7e +PT= 7dec018cb79a48ce967ebbebd99dfb96fc806804e23135d9 +CT= e73d91e04098a2ce26b4003d5ad378cf20c0492058b6119e +TEST= 353 +KEY= b2d04c08d76e8b735dde5af51fb5f1c746b946e59cd718e4f6b8599236bc1ee0 +PT= e73d91e04098a2ce26b4003d5ad378cf20c0492058b6119e +CT= 9c1597a3c18c7515710a4c5e8b487abcdb354e5f981c8fdc +TEST= 354 +KEY= 567974fe0ec4a65ec1cbcd56de3984d237b30abb179f62582d8d17cdaea0913c +PT= 9c1597a3c18c7515710a4c5e8b487abcdb354e5f981c8fdc +CT= e4ac7d5b943a1528f139734fa4ac04dfc8f767d6b0affa25 +TEST= 355 +KEY= ccd7326a6c85d3a82567b00d4a0391fac68a79f4b3336687e57a701b1e0f6b19 +PT= e4ac7d5b943a1528f139734fa4ac04dfc8f767d6b0affa25 +CT= 066a99b172a6506f1646651924ecc2975642ef36aafaeb4c +TEST= 356 +KEY= 07d376dfa09581fd230d29bc38a5c195d0cc1ced97dfa410b3389f2db4f58055 +PT= 066a99b172a6506f1646651924ecc2975642ef36aafaeb4c +CT= 5c2d73173a5c7796b9989bcb52ae95a2e16bd3522d6f19a9 +TEST= 357 +KEY= 65e076dd663633e87f205aab02f9b60369548726c57131b252534c7f999a99fc +PT= 5c2d73173a5c7796b9989bcb52ae95a2e16bd3522d6f19a9 +CT= f9d8507033aef48adb0ecfdc3908d2df4ca9b526357767aa +TEST= 358 +KEY= c7967f944075ca9586f80adb31574289b25a48fafc79e36d1efaf959acedfe56 +PT= f9d8507033aef48adb0ecfdc3908d2df4ca9b526357767aa +CT= 8723e3c5c605f6502202cfdf465ca87d152bf6b56fca6620 +TEST= 359 +KEY= 4d603b38e5616dbc01dbe91ef752b4d990588725ba254b100bd10fecc3279876 +PT= 8723e3c5c605f6502202cfdf465ca87d152bf6b56fca6620 +CT= 4fb953bd8167b061851cbebe9a6eec2c39e1af2d559930a2 +TEST= 360 +KEY= 37c5547263cb2eb34e62baa3763504b81544399b204ba73c3230a0c196bea8d4 +PT= 4fb953bd8167b061851cbebe9a6eec2c39e1af2d559930a2 +CT= 3794a51ff2d17c70c9d00d76b8810b0080c57ef9e3ed342b +TEST= 361 +KEY= 4425c43aa603032179f61fbc84e478c8dc9434ed98caac3cb2f5de3875539cff +PT= 3794a51ff2d17c70c9d00d76b8810b0080c57ef9e3ed342b +CT= c83fe0c42699265072bc3d9ee417e109c9f5ec7413855baf +TEST= 362 +KEY= 05a7b2776a020678b1c9ff78a27d5e98ae2809737cdd4d357b00324c66d6c750 +PT= c83fe0c42699265072bc3d9ee417e109c9f5ec7413855baf +CT= 92c232f19afeac9432bb12dc9ec623fbb9ab90c5af7988c6 +TEST= 363 +KEY= cb6d5505f3884f35230bcd893883f20c9c931bafe21b6ecec2aba289c9af4f96 +PT= 92c232f19afeac9432bb12dc9ec623fbb9ab90c5af7988c6 +CT= d3e25d566213892a49ac0d973f8c829a3e11121a4921e9f4 +TEST= 364 +KEY= d9e62650e998295ff0e990df5a907b26d53f1638dd97ec54fcbab093808ea662 +PT= d3e25d566213892a49ac0d973f8c829a3e11121a4921e9f4 +CT= da26cc501c71257500247278b662af74155f28134c27aae0 +TEST= 365 +KEY= a6bcfe47e1964be82acf5c8f46e15e53d51b64406bf54320e9e59880cca90c82 +PT= da26cc501c71257500247278b662af74155f28134c27aae0 +CT= 66b9d3ce214b7da890779bd5cb94a440aed6f4a1edca8d65 +TEST= 366 +KEY= d5039a05c8fbaed94c768f4167aa23fb456cff95a061e76047336c21216381e7 +PT= 66b9d3ce214b7da890779bd5cb94a440aed6f4a1edca8d65 +CT= dd41f5a88ddab4a5afc4d53f957931dbc5934e956acd5d59 +TEST= 367 +KEY= 939addcdbb4bef1f91377ae9ea70975eeaa82aaa3518d6bb82a022b44baedcbe +PT= dd41f5a88ddab4a5afc4d53f957931dbc5934e956acd5d59 +CT= b903b720508a5a925ff64195e027ef59e0fccd99370ab601 +TEST= 368 +KEY= 7718abcfe28008272834cdc9bafacdccb55e6b3fd53f39e2625cef2d7ca46abf +PT= b903b720508a5a925ff64195e027ef59e0fccd99370ab601 +CT= daff53b0672d5ed73be1079e48adeb60acad70832957900d +TEST= 369 +KEY= 962d555b25bd815bf2cb9e79ddd7931b8ebf6ca19d92d282cef19fae55f3fab2 +PT= daff53b0672d5ed73be1079e48adeb60acad70832957900d +CT= 36a182528d14ee3078c234837052106f7913e37cbdf87355 +TEST= 370 +KEY= 4c620f2f1ff00e23c46a1c2b50c37d2bf67d5822edc0c2edb7e27cd2e80b89e7 +PT= 36a182528d14ee3078c234837052106f7913e37cbdf87355 +CT= dd2a946ab86273de1653ee8632651b331a21c3a6a15212ed +TEST= 371 +KEY= 35e041ea036bd33f19408841e8a10ef5e02eb6a4dfa5d9deadc3bf7449599b0a +PT= dd2a946ab86273de1653ee8632651b331a21c3a6a15212ed +CT= ab49faa0dfdad60ace9eed99a650f97707c95749cea83ac2 +TEST= 372 +KEY= f553ad6c5bb12bdfb20972e1377bd8ff2eb05b3d79f520a9aa0ae83d87f1a1c8 +PT= ab49faa0dfdad60ace9eed99a650f97707c95749cea83ac2 +CT= 39fae412a6a1093754cb2fcd443f566a0606f509dcf41e44 +TEST= 373 +KEY= c4517acbc67ed19c8bf396f391dad1c87a7b74f03dca76c3ac0c1d345b05bf8c +PT= 39fae412a6a1093754cb2fcd443f566a0606f509dcf41e44 +CT= e61fc7477c65bc21e7667ee5008a32b3cc99cefbb36c5c77 +TEST= 374 +KEY= 42467135c1747c226dec51b4edbf6de99d1d0a153d4044706095d3cfe869e3fb +PT= e61fc7477c65bc21e7667ee5008a32b3cc99cefbb36c5c77 +CT= 9c7bb857ee9b39e80a811341cd327bcc8c6c98189e4964f8 +TEST= 375 +KEY= 2a4452ae3054c5d7f197e9e303245401979c1954f0723fbcecf94bd776208703 +PT= 9c7bb857ee9b39e80a811341cd327bcc8c6c98189e4964f8 +CT= 4e50462352d2c15241f33e69870752f95ed0d07ec9acb475 +TEST= 376 +KEY= af2332681d9a4ce8bfc7afc051f69553d66f273d77756d45b2299ba9bf8c3376 +PT= 4e50462352d2c15241f33e69870752f95ed0d07ec9acb475 +CT= fd083dd4c5b105c3d5ffcb9ffc8edc1b3567db8e1dbc87e4 +TEST= 377 +KEY= 9c52a609181a9dab42cf9214944790900390eca28bfbb15e874e4027a230b492 +PT= fd083dd4c5b105c3d5ffcb9ffc8edc1b3567db8e1dbc87e4 +CT= 27629c733f466f1283d6d2b20152274e4d9b94f7063e240a +TEST= 378 +KEY= c8484b17f06c02da65ad0e67ab01ff8280463e108aa99610cad5d4d0a40e9098 +PT= 27629c733f466f1283d6d2b20152274e4d9b94f7063e240a +CT= 4cd000f57a85e4a93581bfdcc9bbc2c9f4c5646812c2933d +TEST= 379 +KEY= 4880544979bb36e0297d0e92d1841b2bb5c781cc431254d93e10b0b8b6cc03a5 +PT= 4cd000f57a85e4a93581bfdcc9bbc2c9f4c5646812c2933d +CT= 5a87462447efd404d29dcb0a0853a30f2e9fc299bdde903e +TEST= 380 +KEY= 4ef6be912a84fd5473fa48b6966bcf2f675a4ac64b41f7d6108f72210b12939b +PT= 5a87462447efd404d29dcb0a0853a30f2e9fc299bdde903e +CT= e9e4a60b5aba70f3492f8b5a4980dfdbe70ec83ef749e864 +TEST= 381 +KEY= 51b912aa785b04ec9a1eeebdccd1bfdc2e75c19c02c1280df781ba1ffc5b7bff +PT= e9e4a60b5aba70f3492f8b5a4980dfdbe70ec83ef749e864 +CT= 17a509cdc83e66f421ddc5a2e50cc82269f504d00cf023be +TEST= 382 +KEY= c18fde2e933d57c38dbbe77004efd9280fa8043ee7cde02f9e74becff0ab5841 +PT= 17a509cdc83e66f421ddc5a2e50cc82269f504d00cf023be +CT= b709087725143419571f545f6e30928a86cb3e580c84349b +TEST= 383 +KEY= af6c9fb20f7c23643ab2ef0721fbed3158b7506189fd72a518bf8097fc2f6cda +PT= b709087725143419571f545f6e30928a86cb3e580c84349b +CT= c52d48d1e383cd3eaccad6588a57ec006e3914fa83f70d7a +TEST= 384 +KEY= 6cf4b534d4527a70ff9fa7d6c278200ff47d863903aa9ea57686946d7fd861a0 +PT= c52d48d1e383cd3eaccad6588a57ec006e3914fa83f70d7a +CT= c97a02f27ec010edd654703b0c098d520d27342348762ae0 +TEST= 385 +KEY= fb7ada4651438d0436e5a524bcb830e22229f6020fa313f77ba1a04e37ae4b40 +PT= c97a02f27ec010edd654703b0c098d520d27342348762ae0 +CT= 0ca660a55a67846f38068fe03b9a348c8edfe4439243b9f0 +TEST= 386 +KEY= e574c20cac16f66e3a43c581e6dfb48d1a2f79e23439277bf57e440da5edf2b0 +PT= 0ca660a55a67846f38068fe03b9a348c8edfe4439243b9f0 +CT= e50c7776f63c6df258f1b024f3d0a65be3a37a4c93cfe33a +TEST= 387 +KEY= 2058850f87f1151ddf4fb2f710e3d97f42dec9c6c7e9812016dd3e413622118a +PT= e50c7776f63c6df258f1b024f3d0a65be3a37a4c93cfe33a +CT= e0d08dde6d9aba860d82ef2eebf00cc4d99d94c798c2e24a +TEST= 388 +KEY= 049340e8c0d209b33f9f3f297d7963f94f5c26e82c198de4cf40aa86aee0f3c0 +PT= e0d08dde6d9aba860d82ef2eebf00cc4d99d94c798c2e24a +CT= 3759759986e42e9d8b866db007858c397deba2a89bfe44f3 +TEST= 389 +KEY= cfd6077b38ae70c308c64ab0fb9d4d64c4da4b582b9c01ddb2ab082e351eb733 +PT= 3759759986e42e9d8b866db007858c397deba2a89bfe44f3 +CT= 1c27cc0764f591a1a407ec8a5ea7e7ec4b6cb0cf182d7b2b +TEST= 390 +KEY= cc6580feb593aace14e186b79f68dcc560dda7d2753be631f9c7b8e12d33cc18 +PT= 1c27cc0764f591a1a407ec8a5ea7e7ec4b6cb0cf182d7b2b +CT= efb18577a9c6dfb72ec4312605848784a74f653c7da126e2 +TEST= 391 +KEY= 0bfc36dd2589df82fb5003c036ae03724e1996f470bf61b55e88dddd5092eafa +PT= efb18577a9c6dfb72ec4312605848784a74f653c7da126e2 +CT= a56725e246b24b2de798f5617393b4fcc206bb38f65dae65 +TEST= 392 +KEY= ea876982d2c6b0e65e372622701c485fa9816395032cd5499c8e66e5a6cf449f +PT= a56725e246b24b2de798f5617393b4fcc206bb38f65dae65 +CT= 5a6c444f9078adadd65f8ddb277d30a3e0f4f1ba4d679b11 +TEST= 393 +KEY= 2a2178323281f3d1045b626de064e5f27fdeee4e2451e5ea7c7a975feba8df8e +PT= 5a6c444f9078adadd65f8ddb277d30a3e0f4f1ba4d679b11 +CT= 224352a048e759bbee49d7ebe4933e885af11846378e4aed +TEST= 394 +KEY= 9ea6435a4cdab0e0261830cda883bc49919739a5c0c2db62268b8f19dc269563 +PT= 224352a048e759bbee49d7ebe4933e885af11846378e4aed +CT= 02ce0bca1e2ac9959d7b8df41fa9606e907f1734187f5ef2 +TEST= 395 +KEY= cd6bd2a60230665324d63b07b6a975dc0cecb451df6bbb0cb6f4982dc459cb91 +PT= 02ce0bca1e2ac9959d7b8df41fa9606e907f1734187f5ef2 +CT= c0b4c383bcfceaad5745d0d9dd7a325f6e20d82592dc8fdd +TEST= 396 +KEY= b9741a94de60780ce462f8840a559f715ba9648802118953d8d440085685444c +PT= c0b4c383bcfceaad5745d0d9dd7a325f6e20d82592dc8fdd +CT= d67ec271bd65af766af911e538dfba85b2785eff8064c0e9 +TEST= 397 +KEY= ed2d41bf381ee884321c3af5b73030073150756d3ace33d66aac1ef7d6e184a5 +PT= d67ec271bd65af766af911e538dfba85b2785eff8064c0e9 +CT= d591d60b05995505279738f4c42d44306768ebd679e8656c +TEST= 398 +KEY= 41dba47b7f99a108e78decfeb2a9650216c74d99fee377e60dc4f521af09e1c9 +PT= d591d60b05995505279738f4c42d44306768ebd679e8656c +CT= 72c4f90faaca0f3e9da7d15d1e86e7326e2f49a8e7be1fb3 +TEST= 399 +KEY= 3c145726523ffc36954915f118636a3c8b609cc4e06590d463ebbc8948b7fe7a +PT= 72c4f90faaca0f3e9da7d15d1e86e7326e2f49a8e7be1fb3 +CT= 9009c1cde03949e01e664dea83c0fa34e42eb52099b8c4d8 diff --git a/flint/test/testvals/ecbme84.txt b/flint/test/testvals/ecbme84.txt new file mode 100644 index 0000000..f442620 --- /dev/null +++ b/flint/test/testvals/ecbme84.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +TEST= 0 +KEY= 00000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= ff2082f0f8544e8f260b3b0fef4a57fbfebad9844f63d374ac879f021d446e22 +TEST= 1 +KEY= febad9844f63d374ac879f021d446e22 +PT= ff2082f0f8544e8f260b3b0fef4a57fbfebad9844f63d374ac879f021d446e22 +CT= c598ffa6e53278ad0fc236067ead137e3060ce6659e9ddf4caa8b618ac771ec9 +TEST= 2 +KEY= ceda17e2168a0e80662f291ab13370eb +PT= c598ffa6e53278ad0fc236067ead137e3060ce6659e9ddf4caa8b618ac771ec9 +CT= 73558675708762750270ebc7a1962a34e91e2c3a0a40d7ecc3a64a0f6e99ea63 +TEST= 3 +KEY= 27c43bd81ccad96ca5896315dfaa9a88 +PT= 73558675708762750270ebc7a1962a34e91e2c3a0a40d7ecc3a64a0f6e99ea63 +CT= 00a62915b521eea096d1864d8b61fb7d59014345aebea491d14633e5584f8fa0 +TEST= 4 +KEY= 7ec5789db2747dfd74cf50f087e51528 +PT= 00a62915b521eea096d1864d8b61fb7d59014345aebea491d14633e5584f8fa0 +CT= ea5699936e4ec377a36e1320e9ae21ee88ebb1189db77ad937ec2111b6906c90 +TEST= 5 +KEY= f62ec9852fc30724432371e1317579b8 +PT= ea5699936e4ec377a36e1320e9ae21ee88ebb1189db77ad937ec2111b6906c90 +CT= e2ed3571e24e9f1091e1ce5282970e7b71885a9f64c94dd339541972fa2a38a7 +TEST= 6 +KEY= 87a6931a4b0a4af77a776893cb5f411f +PT= e2ed3571e24e9f1091e1ce5282970e7b71885a9f64c94dd339541972fa2a38a7 +CT= 2ef694f3ff5ab96095c3ed1a4a64bb4298f0577f25df1a5bb8e2121fa88e63e7 +TEST= 7 +KEY= 1f56c4656ed550acc2957a8c63d122f8 +PT= 2ef694f3ff5ab96095c3ed1a4a64bb4298f0577f25df1a5bb8e2121fa88e63e7 +CT= 2ca3b22547900d64d35c445b58691d1e2a62531abd2ccf961b38bd86da9eb405 +TEST= 8 +KEY= 3534977fd3f99f3ad9adc70ab94f96fd +PT= 2ca3b22547900d64d35c445b58691d1e2a62531abd2ccf961b38bd86da9eb405 +CT= ccb28d7495c71789c16d669fb32ae2aa4a955d894edd022e9dbce1ae6c04e765 +TEST= 9 +KEY= 7fa1caf69d249d14441126a4d54b7198 +PT= ccb28d7495c71789c16d669fb32ae2aa4a955d894edd022e9dbce1ae6c04e765 +CT= 1b980bb7bd4083335eaca83e42c145c48d693a78badbfb35c89767d813c0c0e6 +TEST= 10 +KEY= f2c8f08e27ff66218c86417cc68bb17e +PT= 1b980bb7bd4083335eaca83e42c145c48d693a78badbfb35c89767d813c0c0e6 +CT= d02227bb748c7b74b7e1426942e5e1f4f20057e459f76a2b8e592758eb773c10 +TEST= 11 +KEY= 00c8a76a7e080c0a02df66242dfc8d6e +PT= d02227bb748c7b74b7e1426942e5e1f4f20057e459f76a2b8e592758eb773c10 +CT= f1fa32d768621a1910496d1ce230df91eab6500268f8b9ac304435cdddd798fb +TEST= 12 +KEY= ea7ef76816f0b5a6329b53e9f02b1595 +PT= f1fa32d768621a1910496d1ce230df91eab6500268f8b9ac304435cdddd798fb +CT= f2eed73cf423a98a3470737771d601ae23b65e6a04c3895477ccaa560eb7c226 +TEST= 13 +KEY= c9c8a90212333cf24557f9bffe9cd7b3 +PT= f2eed73cf423a98a3470737771d601ae23b65e6a04c3895477ccaa560eb7c226 +CT= 84ff84e5c936d56a1f2d626088e0c4934e05dd6e9c5b9912d60f9baf20c300b2 +TEST= 14 +KEY= 87cd746c8e68a5e093586210de5fd701 +PT= 84ff84e5c936d56a1f2d626088e0c4934e05dd6e9c5b9912d60f9baf20c300b2 +CT= ebbcd227806cb8b8b05db49ae4e9f2478154550fdb00d12a366087c78606645a +TEST= 15 +KEY= 06992163556874caa538e5d75859b35b +PT= ebbcd227806cb8b8b05db49ae4e9f2478154550fdb00d12a366087c78606645a +CT= 8604050230f876cd72c1041055823591a8c0d3f14bd6dcb2ba75d66d020156b6 +TEST= 16 +KEY= ae59f2921ebea8781f4d33ba5a58e5ed +PT= 8604050230f876cd72c1041055823591a8c0d3f14bd6dcb2ba75d66d020156b6 +CT= 12347e03d82fd3f8bd62c4982775fa0b0fb16d758dde54c6ca866505855c3e33 +TEST= 17 +KEY= a1e89fe79360fcbed5cb56bfdf04dbde +PT= 12347e03d82fd3f8bd62c4982775fa0b0fb16d758dde54c6ca866505855c3e33 +CT= 44ec63a95a1f02a043261c7c8137aab0a37ae953783580381fd7cdc3bc9cce7c +TEST= 18 +KEY= 029276b4eb557c86ca1c9b7c639815a2 +PT= 44ec63a95a1f02a043261c7c8137aab0a37ae953783580381fd7cdc3bc9cce7c +CT= 21c5b36b7bc54166904115d695038d9dd46756b7d52fa6f212a8b712c4959b96 +TEST= 19 +KEY= d6f520033e7ada74d8b42c6ea70d8e34 +PT= 21c5b36b7bc54166904115d695038d9dd46756b7d52fa6f212a8b712c4959b96 +CT= 39d1fa283d0c7a719e07f42ff16756afa0aa0a55b7c7fd6d84a845e2cf468493 +TEST= 20 +KEY= 765f2a5689bd27195c1c698c684b0aa7 +PT= 39d1fa283d0c7a719e07f42ff16756afa0aa0a55b7c7fd6d84a845e2cf468493 +CT= 1b3069d9ea1f6756d3a3cfb04b4b708439a2f16510d40e78688da2470716f427 +TEST= 21 +KEY= 4ffddb33996929613491cbcb6f5dfe80 +PT= 1b3069d9ea1f6756d3a3cfb04b4b708439a2f16510d40e78688da2470716f427 +CT= 80e49b6032abbfe9637105bb8bc17525ed2a0b8605cb0bffb40023fbb1e148bc +TEST= 22 +KEY= a2d7d0b59ca2229e8091e830debcb63c +PT= 80e49b6032abbfe9637105bb8bc17525ed2a0b8605cb0bffb40023fbb1e148bc +CT= 6ac58368c2b9467a3eba6c50e415f38c3094cd7fa1c5874b626c98b8f541aea7 +TEST= 23 +KEY= 92431dca3d67a5d5e2fd70882bfd189b +PT= 6ac58368c2b9467a3eba6c50e415f38c3094cd7fa1c5874b626c98b8f541aea7 +CT= 347b7154eb06e6ef701251d865e09e805c779843b836ef97edd34d255e5b9f32 +TEST= 24 +KEY= ce34858985514a420f2e3dad75a687a9 +PT= 347b7154eb06e6ef701251d865e09e805c779843b836ef97edd34d255e5b9f32 +CT= 918ab09d2ae93d035558b5d847970f1a11b4d285e52e5fc83fffa6727ab8860f +TEST= 25 +KEY= df80570c607f158a30d19bdf0f1e01a6 +PT= 918ab09d2ae93d035558b5d847970f1a11b4d285e52e5fc83fffa6727ab8860f +CT= b05a1250dad8c56e1f2853be29f5f797422948ecf7c4cce0a22aa9ee71d37957 +TEST= 26 +KEY= 9da91fe097bbd96a92fb32317ecd78f1 +PT= b05a1250dad8c56e1f2853be29f5f797422948ecf7c4cce0a22aa9ee71d37957 +CT= 38b48f06ae17fb130af5fb4c8aa44546dd0fc145104225629a4c918fee7c5417 +TEST= 27 +KEY= 40a6dea587f9fc0808b7a3be90b12ce6 +PT= 38b48f06ae17fb130af5fb4c8aa44546dd0fc145104225629a4c918fee7c5417 +CT= 27508d918acedff8c45bfa7d3fd24a825c5cf58f84336dee5c1b210af33747f2 +TEST= 28 +KEY= 1cfa2b2a03ca91e654ac82b463866b14 +PT= 27508d918acedff8c45bfa7d3fd24a825c5cf58f84336dee5c1b210af33747f2 +CT= 4cb51f85af1084ae11a6cd6540db30cf9d9c06b272791c99939f7d211cf1f869 +TEST= 29 +KEY= 81662d9871b38d7fc733ff957f77937d +PT= 4cb51f85af1084ae11a6cd6540db30cf9d9c06b272791c99939f7d211cf1f869 +CT= 2529f8fcc2d66806d23681e0e445b46000016a14fcbcf9ad79010edc6f0ccbb8 +TEST= 30 +KEY= 8167478c8d0f74d2be32f149107b58c5 +PT= 2529f8fcc2d66806d23681e0e445b46000016a14fcbcf9ad79010edc6f0ccbb8 +CT= 2873846c0869969d6dfa61a49c26cb733a1ecadeb8092df1b1ee57d77acb31d3 +TEST= 31 +KEY= bb798d52350659230fdca69e6ab06916 +PT= 2873846c0869969d6dfa61a49c26cb733a1ecadeb8092df1b1ee57d77acb31d3 +CT= 03e56ed51e11f4f74504a3d5e82bc5d997448592bfefe8cc2978bdf758403085 +TEST= 32 +KEY= 2c3d08c08ae9b1ef26a41b6932f05993 +PT= 03e56ed51e11f4f74504a3d5e82bc5d997448592bfefe8cc2978bdf758403085 +CT= b2a443eff2eeb88245bc25b7e16537f94f999666e57ae6d3717cabda79066771 +TEST= 33 +KEY= 63a49ea66f93573c57d8b0b34bf63ee2 +PT= b2a443eff2eeb88245bc25b7e16537f94f999666e57ae6d3717cabda79066771 +CT= a8f3adaa96f26771f1e79cfebef7a2211ca306ea4398c56eed47357cc823a96e +TEST= 34 +KEY= 7f07984c2c0b9252ba9f85cf83d5978c +PT= a8f3adaa96f26771f1e79cfebef7a2211ca306ea4398c56eed47357cc823a96e +CT= 450dcb18930eb570fad4497c628622f5774b1a36534808f861e9cc98ccd2f135 +TEST= 35 +KEY= 084c827a7f439aaadb7649574f0766b9 +PT= 450dcb18930eb570fad4497c628622f5774b1a36534808f861e9cc98ccd2f135 +CT= 3e45d3fcfeb2aa0077ab9d99dfb72f27f6619ee2071f01a92783395c69ed09c6 +TEST= 36 +KEY= fe2d1c98785c9b03fcf5700b26ea6f7f +PT= 3e45d3fcfeb2aa0077ab9d99dfb72f27f6619ee2071f01a92783395c69ed09c6 +CT= 13d226324b9e94d9e555192fc98effe9854aae0f2af2646ab405e774f827d346 +TEST= 37 +KEY= 7b67b29752aeff6948f0977fdecdbc39 +PT= 13d226324b9e94d9e555192fc98effe9854aae0f2af2646ab405e774f827d346 +CT= 1046184c24afa95c9c18c246e1ea65ba5bbc83ef2501e6ee2873928d5a88ea46 +TEST= 38 +KEY= 20db317877af1987608305f28445567f +PT= 1046184c24afa95c9c18c246e1ea65ba5bbc83ef2501e6ee2873928d5a88ea46 +CT= c2b345ed9ec26a6b1ef3a50029232104a3ab3b8c952eeddc2c0eb212d30ee134 +TEST= 39 +KEY= 83700af4e281f45b4c8db7e0574bb74b +PT= c2b345ed9ec26a6b1ef3a50029232104a3ab3b8c952eeddc2c0eb212d30ee134 +CT= 9e7976e94c2b0292aadbb13f2db97fce372c8ca6b008f19b0fd9df438b143b19 +TEST= 40 +KEY= b45c8652528905c0435468a3dc5f8c52 +PT= 9e7976e94c2b0292aadbb13f2db97fce372c8ca6b008f19b0fd9df438b143b19 +CT= 1218aadb51341fa4b8c279a61092f664960023d9667da7319ff4216a1192042f +TEST= 41 +KEY= 225ca58b34f4a2f1dca049c9cdcd887d +PT= 1218aadb51341fa4b8c279a61092f664960023d9667da7319ff4216a1192042f +CT= 486169dcfc4bb75f8786b9bf7da471468005fcc1cf44c71a1ad5fa447be14d16 +TEST= 42 +KEY= a259594afbb065ebc675b38db62cc56b +PT= 486169dcfc4bb75f8786b9bf7da471468005fcc1cf44c71a1ad5fa447be14d16 +CT= cbef9f45f224a2195a21224c58cd110c70a171147af636150ac260e804793445 +TEST= 43 +KEY= d2f8285e814653feccb7d365b255f12e +PT= cbef9f45f224a2195a21224c58cd110c70a171147af636150ac260e804793445 +CT= d74fd0b1d53d851ce9d3f55181a65b9a7d7a8e30ed3f75c68e042246643ba218 +TEST= 44 +KEY= af82a66e6c79263842b3f123d66e5336 +PT= d74fd0b1d53d851ce9d3f55181a65b9a7d7a8e30ed3f75c68e042246643ba218 +CT= 73f39741128045782602a48a0e3d847ba61d160d81d1129a50e4952c21dcf35e +TEST= 45 +KEY= 099fb063eda834a21257640ff7b2a068 +PT= 73f39741128045782602a48a0e3d847ba61d160d81d1129a50e4952c21dcf35e +CT= fe27d941edeec2dfc95d2ef7708b6be53f50ce4aaa93f4945d063db9475949f9 +TEST= 46 +KEY= 36cf7e29473bc0364f5159b6b0ebe991 +PT= fe27d941edeec2dfc95d2ef7708b6be53f50ce4aaa93f4945d063db9475949f9 +CT= 48f4baf7c59d50369a7b8abb5ecd0b19fe40f7bf0c74333a0dae0986aafb84de +TEST= 47 +KEY= c88f89964b4ff30c42ff50301a106d4f +PT= 48f4baf7c59d50369a7b8abb5ecd0b19fe40f7bf0c74333a0dae0986aafb84de +CT= dbfa54d1f426d2e6ef97c1b88edf7b6c71d76d0156bdc97c8c24531543803efe +TEST= 48 +KEY= b958e4971df23a70cedb0325599053b1 +PT= dbfa54d1f426d2e6ef97c1b88edf7b6c71d76d0156bdc97c8c24531543803efe +CT= 92c18308cafb572d94243a01d9530df8c9ca61f678464f955c23ecf47feadf7d +TEST= 49 +KEY= 7092856165b475e592f8efd1267a8ccc +PT= 92c18308cafb572d94243a01d9530df8c9ca61f678464f955c23ecf47feadf7d +CT= 851362d944e1c0c5a7adb270a5b6159e134cd2621a16d1733dcf0929c24fe8c9 +TEST= 50 +KEY= 63de57037fa2a496af37e6f8e4356405 +PT= 851362d944e1c0c5a7adb270a5b6159e134cd2621a16d1733dcf0929c24fe8c9 +CT= b8a3f20b2e3dafb9b424deb966acbd1ad588f8a12d8cb7e1256dccdd8aa868e6 +TEST= 51 +KEY= b656afa2522e13778a5a2a256e9d0ce3 +PT= b8a3f20b2e3dafb9b424deb966acbd1ad588f8a12d8cb7e1256dccdd8aa868e6 +CT= f5ec9ba7ebccf3bb0df8157ec13a3e08d1d6ebbd5a00a7dad289e793f795898a +TEST= 52 +KEY= 6780441f082eb4ad58d3cdb699088569 +PT= f5ec9ba7ebccf3bb0df8157ec13a3e08d1d6ebbd5a00a7dad289e793f795898a +CT= 532ee13b72bc9171313c3b189525593ff955b22bafa0c4c4887981e538409d9a +TEST= 53 +KEY= 9ed5f634a78e7069d0aa4c53a14818f3 +PT= 532ee13b72bc9171313c3b189525593ff955b22bafa0c4c4887981e538409d9a +CT= 4b0237d9503e8a9a8b8f64000521fb5ae6769eea151b44976de47f908874399a +TEST= 54 +KEY= 78a368deb29534febd4e33c3293c2169 +PT= 4b0237d9503e8a9a8b8f64000521fb5ae6769eea151b44976de47f908874399a +CT= ebc6aa95178834414a13850a95c2eb7e79e35661dc232f6fde12ed3e2e6965f1 +TEST= 55 +KEY= 01403ebf6eb61b91635cdefd07554498 +PT= ebc6aa95178834414a13850a95c2eb7e79e35661dc232f6fde12ed3e2e6965f1 +CT= 78c3236772fe2fd951f68e48a0e13048940f587fbd03af5ca185b4b7931bb2f0 +TEST= 56 +KEY= 954f66c0d3b5b4cdc2d96a4a944ef668 +PT= 78c3236772fe2fd951f68e48a0e13048940f587fbd03af5ca185b4b7931bb2f0 +CT= 4af7bbcb8d803d8e82b41b92c37cb4cb14a4c2977df74720ad5a0b62dab10a1d +TEST= 57 +KEY= 81eba457ae42f3ed6f8361284efffc75 +PT= 4af7bbcb8d803d8e82b41b92c37cb4cb14a4c2977df74720ad5a0b62dab10a1d +CT= 2496776bedd9ec52d12c6bc2370d2fd6373f0271b3d3cbdee2577b17cc5e5c2b +TEST= 58 +KEY= b6d4a6261d9138338dd41a3f82a1a05e +PT= 2496776bedd9ec52d12c6bc2370d2fd6373f0271b3d3cbdee2577b17cc5e5c2b +CT= 45fa0e90b53f607da0cde242bac0f7a025b9059276ddf1bd8fb73077d79fcef9 +TEST= 59 +KEY= 936da3b46b4cc98e02632a48553e6ea7 +PT= 45fa0e90b53f607da0cde242bac0f7a025b9059276ddf1bd8fb73077d79fcef9 +CT= cc65e2da45087a12fc91a7f6ea9a4750fa705c355a0cb66750419e3e6bdc7822 +TEST= 60 +KEY= 691dff8131407fe95222b4763ee21685 +PT= cc65e2da45087a12fc91a7f6ea9a4750fa705c355a0cb66750419e3e6bdc7822 +CT= de7c07bb9b09269ea28327e6ae1e7e2f3f1bbdff46415f1ad4de540c3091d00b +TEST= 61 +KEY= 5606427e770120f386fce07a0e73c68e +PT= de7c07bb9b09269ea28327e6ae1e7e2f3f1bbdff46415f1ad4de540c3091d00b +CT= c289c3b5bef8c5387f9ca09712a11b6c7a4c5babdd9d3e9f61ceac445bc3946d +TEST= 62 +KEY= 2c4a19d5aa9c1e6ce7324c3e55b052e3 +PT= c289c3b5bef8c5387f9ca09712a11b6c7a4c5babdd9d3e9f61ceac445bc3946d +CT= ab493f0b3f6983a30b4e0f473bef090beb14c502d6ebfc65d98efbb2306faecc +TEST= 63 +KEY= c75edcd77c77e2093ebcb78c65dffc2f +PT= ab493f0b3f6983a30b4e0f473bef090beb14c502d6ebfc65d98efbb2306faecc +CT= b52e8941a092e389d7787c903beb889920b88424ad831e777dd2a65485b6c2a8 +TEST= 64 +KEY= e7e658f3d1f4fc7e436e11d8e0693e87 +PT= b52e8941a092e389d7787c903beb889920b88424ad831e777dd2a65485b6c2a8 +CT= 73ecc725b2f98a3f205fbc2d8e54e682280ef9c1c9b0c0cd4954fe7b7883a65f +TEST= 65 +KEY= cfe8a13218443cb30a3aefa398ea98d8 +PT= 73ecc725b2f98a3f205fbc2d8e54e682280ef9c1c9b0c0cd4954fe7b7883a65f +CT= ca97a682ed76a498d68f7da7b76f3eeddcaec485fe5636404d6b7a9faa62ddac +TEST= 66 +KEY= 134665b7e6120af34751953c32884574 +PT= ca97a682ed76a498d68f7da7b76f3eeddcaec485fe5636404d6b7a9faa62ddac +CT= 43c6fe1c2195491a5799b6dd9afefcc93205e73285801041ec3fb59bcec1e4c5 +TEST= 67 +KEY= 2143828563921ab2ab6e20a7fc49a1b1 +PT= 43c6fe1c2195491a5799b6dd9afefcc93205e73285801041ec3fb59bcec1e4c5 +CT= 5a66bb332e82372a474ced732d1e18518927d488d51bc658169e2eb4d1b15eb7 +TEST= 68 +KEY= a864560db689dceabdf00e132df8ff06 +PT= 5a66bb332e82372a474ced732d1e18518927d488d51bc658169e2eb4d1b15eb7 +CT= c5179d3986593363bd3fd6a83bf740334211fa93b3e7b6f34dbf58d1eb52f45b +TEST= 69 +KEY= ea75ac9e056e6a19f04f56c2c6aa0b5d +PT= c5179d3986593363bd3fd6a83bf740334211fa93b3e7b6f34dbf58d1eb52f45b +CT= 3232f498a2c36ebd64d8cb95f1560932075b4cab07327f05751a4a148d65d40a +TEST= 70 +KEY= ed2ee035025c151c85551cd64bcfdf57 +PT= 3232f498a2c36ebd64d8cb95f1560932075b4cab07327f05751a4a148d65d40a +CT= b404bb3da07abfcf4fbedb42bb6c8b2ce458c4da390f1fd29286fd322652f0b3 +TEST= 71 +KEY= 097624ef3b530ace17d3e1e46d9d2fe4 +PT= b404bb3da07abfcf4fbedb42bb6c8b2ce458c4da390f1fd29286fd322652f0b3 +CT= 911707e9b1c7624d262453e85144d86cee9234108dc77ea53560890708701e21 +TEST= 72 +KEY= e7e410ffb694746b22b368e365ed31c5 +PT= 911707e9b1c7624d262453e85144d86cee9234108dc77ea53560890708701e21 +CT= 5925c1c6d136d7983079e9fb3d09e5032ed7ca9b3da8a14ab86aaac39f3258c9 +TEST= 73 +KEY= c933da648b3cd5219ad9c220fadf690c +PT= 5925c1c6d136d7983079e9fb3d09e5032ed7ca9b3da8a14ab86aaac39f3258c9 +CT= ffbe6294e797f87f1d36bf83f71e2b072748b1d93995e8fee8662477edb57e53 +TEST= 74 +KEY= ee7b6bbdb2a93ddf72bfe657176a175f +PT= ffbe6294e797f87f1d36bf83f71e2b072748b1d93995e8fee8662477edb57e53 +CT= 2e5faebb6044b6c991cdcbacfeae170bf5987d07ad5f216d18083369ae1ae57d +TEST= 75 +KEY= 1be316ba1ff61cb26ab7d53eb970f222 +PT= 2e5faebb6044b6c991cdcbacfeae170bf5987d07ad5f216d18083369ae1ae57d +CT= 2d0dc93f24efa7d6db7e5d8f7d20fc0a79426c927e2d98ba1fb5ebdfbd2cba3a +TEST= 76 +KEY= 62a17a2861db840875023ee1045c4818 +PT= 2d0dc93f24efa7d6db7e5d8f7d20fc0a79426c927e2d98ba1fb5ebdfbd2cba3a +CT= cad18d286fba3aff378e292ad10aa5ef86f5e9a3528937426ccc2d24820f3776 +TEST= 77 +KEY= e454938b3352b34a19ce13c586537f6e +PT= cad18d286fba3aff378e292ad10aa5ef86f5e9a3528937426ccc2d24820f3776 +CT= ea3f71cad848adb084c9af3b2e96bd645118f32d36b3784dd1efc74e01da770a +TEST= 78 +KEY= b54c60a605e1cb07c821d48b87890864 +PT= ea3f71cad848adb084c9af3b2e96bd645118f32d36b3784dd1efc74e01da770a +CT= da366a183ce9b2b2c90432820953dcc49d345182b29db066ce48be5ba210f585 +TEST= 79 +KEY= 28783124b77c7b6106696ad02599fde1 +PT= da366a183ce9b2b2c90432820953dcc49d345182b29db066ce48be5ba210f585 +CT= 4d011f215a1608fa856f33fbd58c5588e9bc42300ebc972f60abf9c54b9fcd3e +TEST= 80 +KEY= c1c47314b9c0ec4e66c293156e0630df +PT= 4d011f215a1608fa856f33fbd58c5588e9bc42300ebc972f60abf9c54b9fcd3e +CT= eae905119d91792c0b081dfe152d966087c8a182f48db73cd2d91c9ebef27d36 +TEST= 81 +KEY= 460cd2964d4d5b72b41b8f8bd0f44de9 +PT= eae905119d91792c0b081dfe152d966087c8a182f48db73cd2d91c9ebef27d36 +CT= bc6294a629a05e3f9fff774a49d6b56f96b631a26747ab5b09400658a5cba333 +TEST= 82 +KEY= d0bae3342a0af029bd5b89d3753feeda +PT= bc6294a629a05e3f9fff774a49d6b56f96b631a26747ab5b09400658a5cba333 +CT= 6c26f661841bf81345a455558c58d4f4dc4d3d01340ae05305d214e01b15f28b +TEST= 83 +KEY= 0cf7de351e00107ab8899d336e2a1c51 +PT= 6c26f661841bf81345a455558c58d4f4dc4d3d01340ae05305d214e01b15f28b +CT= b5787aa3403b4b2e92b3523bfc8cc5c372789e7b86f5055da0515be55bc6c044 +TEST= 84 +KEY= 7e8f404e98f5152718d8c6d635ecdc15 +PT= b5787aa3403b4b2e92b3523bfc8cc5c372789e7b86f5055da0515be55bc6c044 +CT= f34dd38bb113b0e7829b803163f00444becd4ac4d063c25285ed63439d769ad0 +TEST= 85 +KEY= c0420a8a4896d7759d35a595a89a46c5 +PT= f34dd38bb113b0e7829b803163f00444becd4ac4d063c25285ed63439d769ad0 +CT= 75203850210671077923342b4551b637e8fc59ac1e6dd068878fbc3bf1fe812b +TEST= 86 +KEY= 28be532656fb071d1aba19ae5964c7ee +PT= 75203850210671077923342b4551b637e8fc59ac1e6dd068878fbc3bf1fe812b +CT= 31a6c33eb1e01f02215c8ca541d96ea7fd82c1e4c9ae3655903d3eddbf7f3e91 +TEST= 87 +KEY= d53c92c29f5531488a872773e61bf97f +PT= 31a6c33eb1e01f02215c8ca541d96ea7fd82c1e4c9ae3655903d3eddbf7f3e91 +CT= ecea324a38e8bdfe6329e3e0ef48178805202273782a97043d2b09fdd88d19d9 +TEST= 88 +KEY= d01cb0b1e77fa64cb7ac2e8e3e96e0a6 +PT= ecea324a38e8bdfe6329e3e0ef48178805202273782a97043d2b09fdd88d19d9 +CT= b4fd3b9431a58c1a704f40d1a9a49c01e2b7e96a444ce86d50a5cc30d528e16c +TEST= 89 +KEY= 32ab59dba3334e21e709e2beebbe01ca +PT= b4fd3b9431a58c1a704f40d1a9a49c01e2b7e96a444ce86d50a5cc30d528e16c +CT= 1c6c45dace25fa9ac8796015921d84fbbb08b08a8d42c6f298906e35b67c8ec0 +TEST= 90 +KEY= 89a3e9512e7188d37f998c8b5dc28f0a +PT= 1c6c45dace25fa9ac8796015921d84fbbb08b08a8d42c6f298906e35b67c8ec0 +CT= 7c25f37a2cf7c3c40c20e8d04da548a23d75ce60aa198301f2bfa058fdbc8c9f +TEST= 91 +KEY= b4d6273184680bd28d262cd3a07e0395 +PT= 7c25f37a2cf7c3c40c20e8d04da548a23d75ce60aa198301f2bfa058fdbc8c9f +CT= b1374fd39305c8422810de011d98999f0f38145b29262796cfc6168694813d87 +TEST= 92 +KEY= bbee336aad4e2c4442e03a5534ff3e12 +PT= b1374fd39305c8422810de011d98999f0f38145b29262796cfc6168694813d87 +CT= 70a3a49135f313128fec2b5932125f591edd92a8c9ad321f49ea3068823c7199 +TEST= 93 +KEY= a533a1c264e31e5b0b0a0a3db6c34f8b +PT= 70a3a49135f313128fec2b5932125f591edd92a8c9ad321f49ea3068823c7199 +CT= 666fcf41725a704ec35d4c48c37b3e79afba77ba5b866ba21e17a9b8b25cab15 +TEST= 94 +KEY= 0a89d6783f6575f9151da385049fe49e +PT= 666fcf41725a704ec35d4c48c37b3e79afba77ba5b866ba21e17a9b8b25cab15 +CT= 787782d9599c06684691b1b357e5ae8266a17b9c44971c884af47bca57cc56fd +TEST= 95 +KEY= 6c28ade47bf269715fe9d84f5353b263 +PT= 787782d9599c06684691b1b357e5ae8266a17b9c44971c884af47bca57cc56fd +CT= eacbfe20dea8d933e677b9166c4649c994e67741b6a2cd7fe8198676eb9e6b01 +TEST= 96 +KEY= f8cedaa5cd50a40eb7f05e39b8cdd962 +PT= eacbfe20dea8d933e677b9166c4649c994e67741b6a2cd7fe8198676eb9e6b01 +CT= f34fa0199ef34eec110f2ec69afe6903d9f00d288545fdfdca68a3771c366665 +TEST= 97 +KEY= 213ed78d481559f37d98fd4ea4fbbf07 +PT= f34fa0199ef34eec110f2ec69afe6903d9f00d288545fdfdca68a3771c366665 +CT= eefcff621a93062740c789fabe4d1e946c8d98d449bf5740ee4efbab687d19d7 +TEST= 98 +KEY= 4db34f5901aa0eb393d606e5cc86a6d0 +PT= eefcff621a93062740c789fabe4d1e946c8d98d449bf5740ee4efbab687d19d7 +CT= 53c2c009174e78603feb628a60576ec3de988f29ead4f357c078766b1ca63660 +TEST= 99 +KEY= 932bc070eb7efde453ae708ed02090b0 +PT= 53c2c009174e78603feb628a60576ec3de988f29ead4f357c078766b1ca63660 +CT= 87d9a99bfc7c833143b71b7d4d1458bab381b566858d85e82e2898b8014c4d80 +TEST= 100 +KEY= 20aa75166ef3780c7d86e836d16cdd30 +PT= 87d9a99bfc7c833143b71b7d4d1458bab381b566858d85e82e2898b8014c4d80 +CT= a8ab6dc9c965693e7aa0a60751127cad748c64738685a1e84d4b9c4f8c466895 +TEST= 101 +KEY= 54261165e876d9e430cd74795d2ab5a5 +PT= a8ab6dc9c965693e7aa0a60751127cad748c64738685a1e84d4b9c4f8c466895 +CT= bdc49ebee0297c8a8be07d037eccc143ff2f824c3f4862b2e1cce92b04e54b23 +TEST= 102 +KEY= ab099329d73ebb56d1019d5259cffe86 +PT= bdc49ebee0297c8a8be07d037eccc143ff2f824c3f4862b2e1cce92b04e54b23 +CT= 19228b4e1acf51e66cef062df2744bdec3ebe8c633ede6ee5ca8a63a750881f8 +TEST= 103 +KEY= 68e27befe4d35db88da93b682cc77f7e +PT= 19228b4e1acf51e66cef062df2744bdec3ebe8c633ede6ee5ca8a63a750881f8 +CT= 8ab50fab2627279fa38a2d7dd22f90ecc95cf83355fdd9fb697569215f723698 +TEST= 104 +KEY= a1be83dcb12e8443e4dc524973b549e6 +PT= 8ab50fab2627279fa38a2d7dd22f90ecc95cf83355fdd9fb697569215f723698 +CT= 54e74d73be610e4a886d705da758660e4a65a3d678258d903b243883ae4995d1 +TEST= 105 +KEY= ebdb200ac90b09d3dff86acaddfcdc37 +PT= 54e74d73be610e4a886d705da758660e4a65a3d678258d903b243883ae4995d1 +CT= 24b8d2e20cf36d445ec5136babb48269b1fcfb18af8a6c6b6c24dee6fb324ceb +TEST= 106 +KEY= 5a27db12668165b8b3dcb42c26ce90dc +PT= 24b8d2e20cf36d445ec5136babb48269b1fcfb18af8a6c6b6c24dee6fb324ceb +CT= 4e08ee962995182ee3ce69e62311aa289af201731798d3e5d57aec0940e22b03 +TEST= 107 +KEY= c0d5da617119b65d66a65825662cbbdf +PT= 4e08ee962995182ee3ce69e62311aa289af201731798d3e5d57aec0940e22b03 +CT= 6621e93541838261aa49a199dec8aa7fa838ac828b9b85dd58ec67ea1fb9c5d8 +TEST= 108 +KEY= 68ed76e3fa8233803e4a3fcf79957e07 +PT= 6621e93541838261aa49a199dec8aa7fa838ac828b9b85dd58ec67ea1fb9c5d8 +CT= 51616810e6f81056ed2138abd06ed3e953120fa7f444a57230bb9b2e192a1079 +TEST= 109 +KEY= 3bff79440ec696f20ef1a4e160bf6e7e +PT= 51616810e6f81056ed2138abd06ed3e953120fa7f444a57230bb9b2e192a1079 +CT= eebcfb740f18566166b955d4b0998565cabfe21e64b13953f54fd2d953b4a178 +TEST= 110 +KEY= f1409b5a6a77afa1fbbe7638330bcf06 +PT= eebcfb740f18566166b955d4b0998565cabfe21e64b13953f54fd2d953b4a178 +CT= ce485c2272daa212df8d21ac606e65ebefc2e38b30197edf1b30161948838f67 +TEST= 111 +KEY= 1e8278d15a6ed17ee08e60217b884061 +PT= ce485c2272daa212df8d21ac606e65ebefc2e38b30197edf1b30161948838f67 +CT= 2eef88bc11ddd91985a6c7c5d2e94cfdf6eb982f4205a581baf2c137e6760818 +TEST= 112 +KEY= e869e0fe186b74ff5a7ca1169dfe4879 +PT= 2eef88bc11ddd91985a6c7c5d2e94cfdf6eb982f4205a581baf2c137e6760818 +CT= e7c69e534182ce34e7d715107bb06081360e412afc7d7ed17d5b8925f47c281c +TEST= 113 +KEY= de67a1d4e4160a2e2727283369826065 +PT= e7c69e534182ce34e7d715107bb06081360e412afc7d7ed17d5b8925f47c281c +CT= efa7a0ed351eeb3602036fc12be1b0ce334fb8b3c4fd0f521a7eabe54c8ea987 +TEST= 114 +KEY= ed28196720eb057c3d5983d6250cc9e2 +PT= efa7a0ed351eeb3602036fc12be1b0ce334fb8b3c4fd0f521a7eabe54c8ea987 +CT= 7c5252b3076d391ad5c0af6621bbeb8d5fee9365c66d5ff30b64388bfe4135aa +TEST= 115 +KEY= b2c68a02e6865a8f363dbb5ddb4dfc48 +PT= 7c5252b3076d391ad5c0af6621bbeb8d5fee9365c66d5ff30b64388bfe4135aa +CT= 33e19aad63fcc225a7da54cafa36df39699bf6843bc763514f8c4ed64c919343 +TEST= 116 +KEY= db5d7c86dd4139de79b1f58b97dc6f0b +PT= 33e19aad63fcc225a7da54cafa36df39699bf6843bc763514f8c4ed64c919343 +CT= 375ccf7ee0c08e3ee07a3724985eef4dd2a6c9e9da88d9aedcbad72b852ef913 +TEST= 117 +KEY= 09fbb56f07c9e070a50b22a012f29618 +PT= 375ccf7ee0c08e3ee07a3724985eef4dd2a6c9e9da88d9aedcbad72b852ef913 +CT= 26f26742dd6b29aa4bfc535156429c9758f8c88cc7fc253f409bed217d480b54 +TEST= 118 +KEY= 51037de3c035c54fe590cf816fba9d4c +PT= 26f26742dd6b29aa4bfc535156429c9758f8c88cc7fc253f409bed217d480b54 +CT= 3ffb0ee8dcf9ceb2eb382455fdfaae7610eed6e9fdda566a5001888cea674881 +TEST= 119 +KEY= 41edab0a3def9325b591470d85ddd5cd +PT= 3ffb0ee8dcf9ceb2eb382455fdfaae7610eed6e9fdda566a5001888cea674881 +CT= d5e22a0ce906c1d4ec7e1ce02fe7ba48a2a25d5e0225ffc2d32700db012e7335 +TEST= 120 +KEY= e34ff6543fca6ce766b647d684f3a6f8 +PT= d5e22a0ce906c1d4ec7e1ce02fe7ba48a2a25d5e0225ffc2d32700db012e7335 +CT= 99d2dacc4dffc71e80069ac6a140015d3dddd01259101e21d50d39633abb602a +TEST= 121 +KEY= de92264666da72c6b3bb7eb5be48c6d2 +PT= 99d2dacc4dffc71e80069ac6a140015d3dddd01259101e21d50d39633abb602a +CT= 10dbbaca7d49e10b5921afeef2532637166e2037939032a2cc4f81b799e3a8a5 +TEST= 122 +KEY= c8fc0671f54a40647ff4ff0227ab6e77 +PT= 10dbbaca7d49e10b5921afeef2532637166e2037939032a2cc4f81b799e3a8a5 +CT= faaa443dd6b4fd40e38c6b42d221e9421067e9125f94c4aa6e57bcb3e5fd64a4 +TEST= 123 +KEY= d89bef63aade84ce11a343b1c2560ad3 +PT= faaa443dd6b4fd40e38c6b42d221e9421067e9125f94c4aa6e57bcb3e5fd64a4 +CT= d9f16203d31350fe06b3697848a440e382f294643e9a49eb2a7a0a365b93c4f7 +TEST= 124 +KEY= 5a697b079444cd253bd9498799c5ce24 +PT= d9f16203d31350fe06b3697848a440e382f294643e9a49eb2a7a0a365b93c4f7 +CT= e2acc0a390ccf2d6286e18b92562bce414917f56498ffd17d78bd8970b1bf539 +TEST= 125 +KEY= 4ef80451ddcb3032ec52911092de3b1d +PT= e2acc0a390ccf2d6286e18b92562bce414917f56498ffd17d78bd8970b1bf539 +CT= 86f8a65e353bf24faa711dc8cfe0c9f8b8d25b9bc5673059de12c9717571f3be +TEST= 126 +KEY= f62a5fca18ac006b32405861e7afc8a3 +PT= 86f8a65e353bf24faa711dc8cfe0c9f8b8d25b9bc5673059de12c9717571f3be +CT= dc20172091f2b4bd6c028873ace34a7c7cefdc479a261a1314832c9e8edcd39d +TEST= 127 +KEY= 8ac5838d828a1a7826c374ff69731b3e +PT= dc20172091f2b4bd6c028873ace34a7c7cefdc479a261a1314832c9e8edcd39d +CT= 993d0ff357840a6a50efb0e63e25f4d0ec731a8e31347b73126c5e52b83c5ad0 +TEST= 128 +KEY= 66b69903b3be610b34af2aadd14f41ee +PT= 993d0ff357840a6a50efb0e63e25f4d0ec731a8e31347b73126c5e52b83c5ad0 +CT= 7979e2aecf7860e37c893aa7c59ff023fe9c1011fb6f92e2a4e28c38d8a696d2 +TEST= 129 +KEY= 982a891248d1f3e9904da69509e9d73c +PT= 7979e2aecf7860e37c893aa7c59ff023fe9c1011fb6f92e2a4e28c38d8a696d2 +CT= c889bf652b0122a5c3960bdd8513332f6bf955eb0e20418fdf2c669aff9fe27a +TEST= 130 +KEY= f3d3dcf946f1b2664f61c00ff6763546 +PT= c889bf652b0122a5c3960bdd8513332f6bf955eb0e20418fdf2c669aff9fe27a +CT= c42c64c7cd60888aa9359bcd61bc69d749e2ec31d1b8e85c2f41caf45cefd975 +TEST= 131 +KEY= ba3130c897495a3a60200afbaa99ec33 +PT= c42c64c7cd60888aa9359bcd61bc69d749e2ec31d1b8e85c2f41caf45cefd975 +CT= 533fcf5cc4ecb1887d3cb0a3e1917620fc0e06737ecaeef749e81d8d9a60c6d8 +TEST= 132 +KEY= 463f36bbe983b4cd29c8177630f92aeb +PT= 533fcf5cc4ecb1887d3cb0a3e1917620fc0e06737ecaeef749e81d8d9a60c6d8 +CT= 1a9b933a7b082dd43a511254ae35f477888677f0ffd46dacf3231ff0b1fcc5cc +TEST= 133 +KEY= ceb9414b1657d961daeb08868105ef27 +PT= 1a9b933a7b082dd43a511254ae35f477888677f0ffd46dacf3231ff0b1fcc5cc +CT= 2e6831b1ec3bacc1859e1e74b05794641b995a40847430cbbae78b1587fa1da2 +TEST= 134 +KEY= d5201b0b9223e9aa600c839306fff285 +PT= 2e6831b1ec3bacc1859e1e74b05794641b995a40847430cbbae78b1587fa1da2 +CT= 332ac18347e893efc091dfd0ea0490d4f0d2dfd5f373c9e81c0cf94455aef4db +TEST= 135 +KEY= 25f2c4de615020427c007ad75351065e +PT= 332ac18347e893efc091dfd0ea0490d4f0d2dfd5f373c9e81c0cf94455aef4db +CT= 1b52b799ad6b21998e58bf1341429738fd1326bc28fefdf24e321ba36cb70969 +TEST= 136 +KEY= d8e1e26249aeddb0323261743fe60f37 +PT= 1b52b799ad6b21998e58bf1341429738fd1326bc28fefdf24e321ba36cb70969 +CT= 8bcb8722e4ca71e5e2b98673b863e50e77633ea20cd468ad75ec40e0ce2efff4 +TEST= 137 +KEY= af82dcc0457ab51d47de2194f1c8f0c3 +PT= 8bcb8722e4ca71e5e2b98673b863e50e77633ea20cd468ad75ec40e0ce2efff4 +CT= fbd3b98ba40dcd5a1d6ec73c270860c653d5db8927e66077f19fe44faff0ccdd +TEST= 138 +KEY= fc570749629cd56ab641c5db5e383c1e +PT= fbd3b98ba40dcd5a1d6ec73c270860c653d5db8927e66077f19fe44faff0ccdd +CT= 1e8fe852f7bc314978b4ae6c03c26e4f377a67c2938cd063ed8238dc37800b6e +TEST= 139 +KEY= cb2d608bf11005095bc3fd0769b83770 +PT= 1e8fe852f7bc314978b4ae6c03c26e4f377a67c2938cd063ed8238dc37800b6e +CT= a62ea6190f47d79496c564ddd6bb1778c6375951114dce10a01a9f1063ad5a9e +TEST= 140 +KEY= 0d1a39dae05dcb19fbd962170a156dee +PT= a62ea6190f47d79496c564ddd6bb1778c6375951114dce10a01a9f1063ad5a9e +CT= 650fb7be87176c624675a9b8cc9de06d417abbf9c6750a01ae3998a1fc521b21 +TEST= 141 +KEY= 4c6082232628c11855e0fab6f64776cf +PT= 650fb7be87176c624675a9b8cc9de06d417abbf9c6750a01ae3998a1fc521b21 +CT= b4f6c4a8cd35388bf6571639af68b0e8c819c4a84b9ca3867b81a987e167e556 +TEST= 142 +KEY= 8479468b6db4629e2e61533117209399 +PT= b4f6c4a8cd35388bf6571639af68b0e8c819c4a84b9ca3867b81a987e167e556 +CT= 0084b62af6f207cb0b295d32368f8541f6efcd0f997839cefd5bb76a444569d5 +TEST= 143 +KEY= 72968b84f4cc5b50d33ae45b5365fa4c +PT= 0084b62af6f207cb0b295d32368f8541f6efcd0f997839cefd5bb76a444569d5 +CT= ebccc985679ded1a3350f2ebffb3d1188b326fc18d2460f00ce35f03efb1adb1 +TEST= 144 +KEY= f9a4e44579e83ba0dfd9bb58bcd457fd +PT= ebccc985679ded1a3350f2ebffb3d1188b326fc18d2460f00ce35f03efb1adb1 +CT= 2ffbc62b78a543f9fb79203b0ceff5af0a938bf81e77038a6ffb79dcd63ebe90 +TEST= 145 +KEY= f3376fbd679f382ab022c2846aeae96d +PT= 2ffbc62b78a543f9fb79203b0ceff5af0a938bf81e77038a6ffb79dcd63ebe90 +CT= 5b09c29c1f892341bc17695ca5db99100492d99d59a74f2d9305759e405085a7 +TEST= 146 +KEY= f7a5b6203e3877072327b71a2aba6cca +PT= 5b09c29c1f892341bc17695ca5db99100492d99d59a74f2d9305759e405085a7 +CT= 68fecf9e218f690c85d3970899a47fec1304bd8d504606503336a44fe8642f88 +TEST= 147 +KEY= e4a10bad6e7e715710111355c2de4342 +PT= 68fecf9e218f690c85d3970899a47fec1304bd8d504606503336a44fe8642f88 +CT= 6728a2d5bd5eb36c51967f4f5f3b1d0fbc7cf97fc2695fb5a6ed7d4eb28eca72 +TEST= 148 +KEY= 58ddf2d2ac172ee2b6fc6e1b70508930 +PT= 6728a2d5bd5eb36c51967f4f5f3b1d0fbc7cf97fc2695fb5a6ed7d4eb28eca72 +CT= 48964971d72493503209eb32915947f0e31f433d1c75b89f3830b0c1f6119884 +TEST= 149 +KEY= bbc2b1efb062967d8eccdeda864111b4 +PT= 48964971d72493503209eb32915947f0e31f433d1c75b89f3830b0c1f6119884 +CT= 8de0bd0120de9504bc421346222f5b6f89a7cb82d84b2541404b1523f861bf2a +TEST= 150 +KEY= 32657a6d6829b33cce87cbf97e20ae9e +PT= 8de0bd0120de9504bc421346222f5b6f89a7cb82d84b2541404b1523f861bf2a +CT= 5b434a48cc1ee5b7ff765e444e17e000e429f48da6371525295bce51bc21386e +TEST= 151 +KEY= d64c8ee0ce1ea619e7dc05a8c20196f0 +PT= 5b434a48cc1ee5b7ff765e444e17e000e429f48da6371525295bce51bc21386e +CT= 7cc8e8c07e1af1a9c6f3fea04a14d6b49dbe99c921200f8bbe10ceb879255dd1 +TEST= 152 +KEY= 4bf21729ef3ea99259cccb10bb24cb21 +PT= 7cc8e8c07e1af1a9c6f3fea04a14d6b49dbe99c921200f8bbe10ceb879255dd1 +CT= e46def0432f6769b59a02eff5e79015093e518921c1596457b6cb4b116d712e5 +TEST= 153 +KEY= d8170fbbf32b3fd722a07fa1adf3d9c4 +PT= e46def0432f6769b59a02eff5e79015093e518921c1596457b6cb4b116d712e5 +CT= 5fef475a5622208bad87ba16d9436e81e08bd61513c4dece3046b44d5c9cb420 +TEST= 154 +KEY= 389cd9aee0efe11912e6cbecf16f6de4 +PT= 5fef475a5622208bad87ba16d9436e81e08bd61513c4dece3046b44d5c9cb420 +CT= d5657985264d2c19d1833cf968491dfd765807b18e246d740da4268927df10dc +TEST= 155 +KEY= 4ec4de1f6ecb8c6d1f42ed65d6b07d38 +PT= d5657985264d2c19d1833cf968491dfd765807b18e246d740da4268927df10dc +CT= 90c3436459f783eddca725310e79d604c8f74ddecf13108a498725daba36bfa9 +TEST= 156 +KEY= 863393c1a1d89ce756c5c8bf6c86c291 +PT= 90c3436459f783eddca725310e79d604c8f74ddecf13108a498725daba36bfa9 +CT= d5b0e5292d6911d2b183efa06b11a3afda286a744a21d6f90881ab4469f26d12 +TEST= 157 +KEY= 5c1bf9b5ebf94a1e5e4463fb0574af83 +PT= d5b0e5292d6911d2b183efa06b11a3afda286a744a21d6f90881ab4469f26d12 +CT= 7f718ec981626c2f44945d06f5ce7a861388860c3d7fc7f6c91a87bff341d831 +TEST= 158 +KEY= 4f937fb9d6868de8975ee444f63577b2 +PT= 7f718ec981626c2f44945d06f5ce7a861388860c3d7fc7f6c91a87bff341d831 +CT= 82e96aa7b5efe5457f5ec1f67e54f0903f64f24dd3f1047ba5538c5d195a774f +TEST= 159 +KEY= 70f78df405778993320d6819ef6f00fd +PT= 82e96aa7b5efe5457f5ec1f67e54f0903f64f24dd3f1047ba5538c5d195a774f +CT= 54d6a3cc25fc17af0cce54a0001e25a5e6970d454978492d9202bc3d94d784cd +TEST= 160 +KEY= 966080b14c0fc0bea00fd4247bb88430 +PT= 54d6a3cc25fc17af0cce54a0001e25a5e6970d454978492d9202bc3d94d784cd +CT= 140af0ab91e53554a35fc3a9e0830c9013be4d6c38bd42f34bad7a8b69b14e6f +TEST= 161 +KEY= 85decddd74b2824deba2aeaf1209ca5f +PT= 140af0ab91e53554a35fc3a9e0830c9013be4d6c38bd42f34bad7a8b69b14e6f +CT= 01f0e5b2fe50e871ac67de2033e0c7b386009b2a39a6517b96a9b17411213bfa +TEST= 162 +KEY= 03de56f74d14d3367d0b1fdb0328f1a5 +PT= 01f0e5b2fe50e871ac67de2033e0c7b386009b2a39a6517b96a9b17411213bfa +CT= fd77e0b08a2e403b45ba3ccccd94950f85cef5fd4082d027de5684e4c7cb20bd +TEST= 163 +KEY= 8610a30a0d960311a35d9b3fc4e3d118 +PT= fd77e0b08a2e403b45ba3ccccd94950f85cef5fd4082d027de5684e4c7cb20bd +CT= 42ec7eaecd4f73a878643fa98aeb6b404853c2857389327882b090142b334b16 +TEST= 164 +KEY= ce43618f7e1f316921ed0b2befd09a0e +PT= 42ec7eaecd4f73a878643fa98aeb6b404853c2857389327882b090142b334b16 +CT= 032be3d0d0a912114961f399904ec16a7b0a638185c8d7dfdeda2eb1da15af51 +TEST= 165 +KEY= b549020efbd7e6b6ff37259a35c5355f +PT= 032be3d0d0a912114961f399904ec16a7b0a638185c8d7dfdeda2eb1da15af51 +CT= 5e39b62394aafe90a680988e70c139ce6e5c655a0027c1eaa02bc9a0c6271f81 +TEST= 166 +KEY= db156754fbf0275c5f1cec3af3e22ade +PT= 5e39b62394aafe90a680988e70c139ce6e5c655a0027c1eaa02bc9a0c6271f81 +CT= 605931dfe04ad02823c47dd4a002185cb75965afe2f984de783adade68e79c53 +TEST= 167 +KEY= 6c4c02fb1909a382272636e49b05b68d +PT= 605931dfe04ad02823c47dd4a002185cb75965afe2f984de783adade68e79c53 +CT= e1c642f5dd81acaa0847a01441c6b80de92a4e836916207a1a726e49b5f10aec +TEST= 168 +KEY= 85664c78701f83f83d5458ad2ef4bc61 +PT= e1c642f5dd81acaa0847a01441c6b80de92a4e836916207a1a726e49b5f10aec +CT= 60f371b7199e415899146daf7d5f2961aaf00f649725bf78a08a75709a7012c0 +TEST= 169 +KEY= 2f96431ce73a3c809dde2dddb484aea1 +PT= 60f371b7199e415899146daf7d5f2961aaf00f649725bf78a08a75709a7012c0 +CT= 13955afc6a8285e54ec4499aa851ecd979cf9f7e9232d74afff5d5ce77f3bd26 +TEST= 170 +KEY= 5659dc627508ebca622bf813c3771387 +PT= 13955afc6a8285e54ec4499aa851ecd979cf9f7e9232d74afff5d5ce77f3bd26 +CT= f74efd2be887e3e895e0eef0c8473aff967d5b72f504078bccae618077a7224a +TEST= 171 +KEY= c0248710800cec41ae859993b4d031cd +PT= f74efd2be887e3e895e0eef0c8473aff967d5b72f504078bccae618077a7224a +CT= cf9773aa207caae19ead8381efb05f46da32c8e82f583637c220fe31948e29c8 +TEST= 172 +KEY= 1a164ff8af54da766ca567a2205e1805 +PT= cf9773aa207caae19ead8381efb05f46da32c8e82f583637c220fe31948e29c8 +CT= dafbe6ed7dfa45f1e36b4803423dd7735c9fbd3aca5f2e098ae0661b2466f47f +TEST= 173 +KEY= 4689f2c2650bf47fe64501b90438ec7a +PT= dafbe6ed7dfa45f1e36b4803423dd7735c9fbd3aca5f2e098ae0661b2466f47f +CT= a00d0bd0cfe60ca4ccb2cedf91793044fcbd98a3bd03d9b97cebe05f040fb3ad +TEST= 174 +KEY= ba346a61d8082dc69aaee1e600375fd7 +PT= a00d0bd0cfe60ca4ccb2cedf91793044fcbd98a3bd03d9b97cebe05f040fb3ad +CT= 841538a8493b67de55c7e95401b9f09a24d317ef59ca37d95bb710d4ac75773e +TEST= 175 +KEY= 9ee77d8e81c21a1fc119f132ac4228e9 +PT= 841538a8493b67de55c7e95401b9f09a24d317ef59ca37d95bb710d4ac75773e +CT= 165233684d991b45222b6d8785f0c683a46963b824b972307a184f9d7b8fae00 +TEST= 176 +KEY= 3a8e1e36a57b682fbb01beafd7cd86e9 +PT= 165233684d991b45222b6d8785f0c683a46963b824b972307a184f9d7b8fae00 +CT= 4928fec0b7396cc3c15853544b59b6969b6ea9e5f4d11badf907e05e9715e904 +TEST= 177 +KEY= a1e0b7d351aa738242065ef140d86fed +PT= 4928fec0b7396cc3c15853544b59b6969b6ea9e5f4d11badf907e05e9715e904 +CT= f45ec586ee37b2fe90b3ee7abd7e3fc2300c4fcf543aee0640b0acebcfd565fb +TEST= 178 +KEY= 91ecf81c05909d8402b6f21a8f0d0a16 +PT= f45ec586ee37b2fe90b3ee7abd7e3fc2300c4fcf543aee0640b0acebcfd565fb +CT= debf2d34bb9b01f299cc9960473b8747756c0b1736ac036331efef07f77706dd +TEST= 179 +KEY= e480f30b333c9ee733591d1d787a0ccb +PT= debf2d34bb9b01f299cc9960473b8747756c0b1736ac036331efef07f77706dd +CT= e57e9890259dc3aee5ae4db374a6fbc42417219d05bfa491b3c4efef79840fd7 +TEST= 180 +KEY= c097d29636833a76809df2f201fe031c +PT= e57e9890259dc3aee5ae4db374a6fbc42417219d05bfa491b3c4efef79840fd7 +CT= e6f92937365bf5ee9d0017e927c8acc5a205ff7f0b74d8f83dee3577bb191ff4 +TEST= 181 +KEY= 62922de93df7e28ebd73c785bae71ce8 +PT= e6f92937365bf5ee9d0017e927c8acc5a205ff7f0b74d8f83dee3577bb191ff4 +CT= 48363d0c761f66a5720af179bd9034ecee844fe3e6e9654b1aa6a3d54c57cb19 +TEST= 182 +KEY= 8c16620adb1e87c5a7d56450f6b0d7f1 +PT= 48363d0c761f66a5720af179bd9034ecee844fe3e6e9654b1aa6a3d54c57cb19 +CT= fd087c9e19785442d22d997be4637afaccdc45eceaa66ef5712f8e5f8cab546b +TEST= 183 +KEY= 40ca27e631b8e930d6faea0f7a1b839a +PT= fd087c9e19785442d22d997be4637afaccdc45eceaa66ef5712f8e5f8cab546b +CT= 93aca7d584c023647d32bb7c464ce59c5f8ed86efa689eed0f5818f350101901 +TEST= 184 +KEY= 1f44ff88cbd077ddd9a2f2fc2a0b9a9b +PT= 93aca7d584c023647d32bb7c464ce59c5f8ed86efa689eed0f5818f350101901 +CT= 137bee4c38fb035923a028c3b9958754d7a18fa678072a25fc36d57dfac24680 +TEST= 185 +KEY= c8e5702eb3d75df825942781d0c9dc1b +PT= 137bee4c38fb035923a028c3b9958754d7a18fa678072a25fc36d57dfac24680 +CT= d324236b1ff85e4692669252f8a13401bda1f9eea62a11250c776fb151d0a499 +TEST= 186 +KEY= 754489c015fd4cdd29e3483081197882 +PT= d324236b1ff85e4692669252f8a13401bda1f9eea62a11250c776fb151d0a499 +CT= d59f37bf9ff21965579a4f9f0b6a4cdd447e1bba1e41c271fac8565fb14e0743 +TEST= 187 +KEY= 313a927a0bbc8eacd32b1e6f30577fc1 +PT= d59f37bf9ff21965579a4f9f0b6a4cdd447e1bba1e41c271fac8565fb14e0743 +CT= b55f4b62fcb7a4ac0b4715d788b17d92331e821f9824a349b135084efe4b0f42 +TEST= 188 +KEY= 0224106593982de5621e1621ce1c7083 +PT= b55f4b62fcb7a4ac0b4715d788b17d92331e821f9824a349b135084efe4b0f42 +CT= 5d0693c01aa286c9708906f6d270fa328d3d1a95339039cc816ec5e131b7db74 +TEST= 189 +KEY= 8f190af0a0081429e370d3c0ffababf7 +PT= 5d0693c01aa286c9708906f6d270fa328d3d1a95339039cc816ec5e131b7db74 +CT= 240bd1ec7b95020017306c98888b1e44916be0774c32f82a64149fe77e3776d3 +TEST= 190 +KEY= 1e72ea87ec3aec0387644c27819cdd24 +PT= 240bd1ec7b95020017306c98888b1e44916be0774c32f82a64149fe77e3776d3 +CT= 734877c762549cff5005461013cb2fc01b86fcabdbc13581aa3d3d140b13cde1 +TEST= 191 +KEY= 05f4162c37fbd9822d5971338a8f10c5 +PT= 734877c762549cff5005461013cb2fc01b86fcabdbc13581aa3d3d140b13cde1 +CT= 43689c39ea68bafb7df63c1e7676d1d37ca1408c59d01b6ef8e4b2739f79dbdd +TEST= 192 +KEY= 795556a06e2bc2ecd5bdc34015f6cb18 +PT= 43689c39ea68bafb7df63c1e7676d1d37ca1408c59d01b6ef8e4b2739f79dbdd +CT= 60a6c2e11deb2e9ff450ba1b951eb3953829bd206d7d0bab22a96739ec250064 +TEST= 193 +KEY= 417ceb800356c947f714a479f9d3cb7c +PT= 60a6c2e11deb2e9ff450ba1b951eb3953829bd206d7d0bab22a96739ec250064 +CT= 253126def66a2ddd7aa90d566ecc22b16efc828a526a464f144128615f1868f1 +TEST= 194 +KEY= 2f80690a513c8f08e3558c18a6cba38d +PT= 253126def66a2ddd7aa90d566ecc22b16efc828a526a464f144128615f1868f1 +CT= 13d2cfe574ba7f02f5b653c42214889b8da7b38384c6d0f51e6c0af12fbfa1b0 +TEST= 195 +KEY= a227da89d5fa5ffdfd3986e98974023d +PT= 13d2cfe574ba7f02f5b653c42214889b8da7b38384c6d0f51e6c0af12fbfa1b0 +CT= 4300ab7ae09da57cf3d63df99ecd3a983bf3a7286101bee097877eb55e10331f +TEST= 196 +KEY= 99d47da1b4fbe11d6abef85cd7643122 +PT= 4300ab7ae09da57cf3d63df99ecd3a983bf3a7286101bee097877eb55e10331f +CT= 6cc0be62109255243e33f17d883683092ed558d58388472220a7e64d53d8ff16 +TEST= 197 +KEY= b70125743773a63f4a191e1184bcce34 +PT= 6cc0be62109255243e33f17d883683092ed558d58388472220a7e64d53d8ff16 +CT= 58f5569d2bd70ccfbdacde5ee6a5f651b8fa2b9f44eb2945c48af7d484617880 +TEST= 198 +KEY= 0ffb0eeb73988f7a8e93e9c500ddb6b4 +PT= 58f5569d2bd70ccfbdacde5ee6a5f651b8fa2b9f44eb2945c48af7d484617880 +CT= 63d4ffa558fb9c88b1458576c40226be41c9633c02d76373ccb990f5ef06fad4 +TEST= 199 +KEY= 4e326dd7714fec09422a7930efdb4c60 +PT= 63d4ffa558fb9c88b1458576c40226be41c9633c02d76373ccb990f5ef06fad4 +CT= a0bdf5d059f7b4d17df2b4124a3fac8c75a18c58a3940e0e512e27d009f9c88d +TEST= 200 +KEY= 3b93e18fd2dbe20713045ee0e62284ed +PT= a0bdf5d059f7b4d17df2b4124a3fac8c75a18c58a3940e0e512e27d009f9c88d +CT= 17a7d187cf8eb626d4092f8eb577fa6ed15d707c2f6723ce3baab062b844c868 +TEST= 201 +KEY= eace91f3fdbcc1c928aeee825e664c85 +PT= 17a7d187cf8eb626d4092f8eb577fa6ed15d707c2f6723ce3baab062b844c868 +CT= 6efbac6e6821985833d6b942499777ab5c7d4c2ae61e71149a748bd6f8836e5e +TEST= 202 +KEY= b6b3ddd91ba2b0ddb2da6554a6e522db +PT= 6efbac6e6821985833d6b942499777ab5c7d4c2ae61e71149a748bd6f8836e5e +CT= ffd63231c416c6ffea9e30e8ca36d61f782a7f35d12adfe0d5038ee94209966c +TEST= 203 +KEY= ce99a2ecca886f3d67d9ebbde4ecb4b7 +PT= ffd63231c416c6ffea9e30e8ca36d61f782a7f35d12adfe0d5038ee94209966c +CT= 253645d3cbd63fa09005be475f6a86851fa5188cd484e25f77065edf0800d7ae +TEST= 204 +KEY= d13cba601e0c8d6210dfb562ecec6319 +PT= 253645d3cbd63fa09005be475f6a86851fa5188cd484e25f77065edf0800d7ae +CT= 25a0f0d22cf2354f7711afb2ea707c354fba93c381cb295b0572468a98f35a5e +TEST= 205 +KEY= 9e8629a39fc7a43915adf3e8741f3947 +PT= 25a0f0d22cf2354f7711afb2ea707c354fba93c381cb295b0572468a98f35a5e +CT= e4efecdc195b413c06e067feb4635a5561c634bffbc07333e3125bfe437d9075 +TEST= 206 +KEY= ff401d1c6407d70af6bfa8163762a932 +PT= e4efecdc195b413c06e067feb4635a5561c634bffbc07333e3125bfe437d9075 +CT= eaf0775086c01e9e28ac3afc589c8027113e046f03d4b83c4c75af035cc2bb4b +TEST= 207 +KEY= ee7e197367d36f36baca07156ba01279 +PT= eaf0775086c01e9e28ac3afc589c8027113e046f03d4b83c4c75af035cc2bb4b +CT= f7ded5f5de1aebe7c4a37927ac214214221b4828ed786f9429dd437db463992f +TEST= 208 +KEY= cc65515b8aab00a293174468dfc38b56 +PT= f7ded5f5de1aebe7c4a37927ac214214221b4828ed786f9429dd437db463992f +CT= 2256546bf2c1c60183b04216d739e122d9f8a72cdc9a01e80311b766cbdcef76 +TEST= 209 +KEY= 159df6775631014a9006f30e141f6420 +PT= 2256546bf2c1c60183b04216d739e122d9f8a72cdc9a01e80311b766cbdcef76 +CT= 9062258c9b7f418e8a534930aa76f712262735d0fd6c04bb99afefb7d2aa51f9 +TEST= 210 +KEY= 33bac3a7ab5d05f109a91cb9c6b535d9 +PT= 9062258c9b7f418e8a534930aa76f712262735d0fd6c04bb99afefb7d2aa51f9 +CT= f29dd4b4cc45cac12eda06b839ea74b008ad933f256571efa7026708e8f2f0b4 +TEST= 211 +KEY= 3b1750988e38741eaeab7bb12e47c56d +PT= f29dd4b4cc45cac12eda06b839ea74b008ad933f256571efa7026708e8f2f0b4 +CT= f72ba27339f3714d700c92df23589e6415cf92694e125e369ae3492fe641a3fa +TEST= 212 +KEY= 2ed8c2f1c02a2a283448329ec8066697 +PT= f72ba27339f3714d700c92df23589e6415cf92694e125e369ae3492fe641a3fa +CT= af6e2f910d8df95fe2dd151a3abaeb2adef57650cb096dffceaf6c72ce0e5c60 +TEST= 213 +KEY= f02db4a10b2347d7fae75eec06083af7 +PT= af6e2f910d8df95fe2dd151a3abaeb2adef57650cb096dffceaf6c72ce0e5c60 +CT= 855a4241f29ed06469d9e28790e9253bd4c3c11be519cc3bdf29eaabbadd6bdc +TEST= 214 +KEY= 24ee75baee3a8bec25ceb447bcd5512b +PT= 855a4241f29ed06469d9e28790e9253bd4c3c11be519cc3bdf29eaabbadd6bdc +CT= 61ca03986aad87c0a2a42fd8f814c750071e7ee86706f3afa2582bd59236460b +TEST= 215 +KEY= 23f00b52893c784387969f922ee31720 +PT= 61ca03986aad87c0a2a42fd8f814c750071e7ee86706f3afa2582bd59236460b +CT= a9442b594f1ca986d7f90cdd4f62df84343a9058730bdfa443d82d18796b3788 +TEST= 216 +KEY= 17ca9b0afa37a7e7c44eb28a578820a8 +PT= a9442b594f1ca986d7f90cdd4f62df84343a9058730bdfa443d82d18796b3788 +CT= e7adec8f27be01178e3df8aaf286bb7d5bec279f303486bd68906697a9a8e85d +TEST= 217 +KEY= 4c26bc95ca03215aacded41dfe20c8f5 +PT= e7adec8f27be01178e3df8aaf286bb7d5bec279f303486bd68906697a9a8e85d +CT= e2fc8b3c73e55f12567a7d0019319358aa9a03996eb226c644f08404158ccfeb +TEST= 218 +KEY= e6bcbf0ca4b1079ce82e5019ebac071e +PT= e2fc8b3c73e55f12567a7d0019319358aa9a03996eb226c644f08404158ccfeb +CT= befa3b4691b20a9fd9e90ed47985c34dedb5f8580839a11f91ec956a709d2981 +TEST= 219 +KEY= 0b094754ac88a68379c2c5739b312e9f +PT= befa3b4691b20a9fd9e90ed47985c34dedb5f8580839a11f91ec956a709d2981 +CT= 95dca7b9a1f663e6bec08ddd57d744d4cdfe5e7c740e488acb9e8422fd0f5d98 +TEST= 220 +KEY= c6f71928d886ee09b25c4151663e7307 +PT= 95dca7b9a1f663e6bec08ddd57d744d4cdfe5e7c740e488acb9e8422fd0f5d98 +CT= c6032a248495fb0015a7d6b4cc8971416286abf0bc6f5de75a0e0ced397b56ff +TEST= 221 +KEY= a471b2d864e9b3eee8524dbc5f4525f8 +PT= c6032a248495fb0015a7d6b4cc8971416286abf0bc6f5de75a0e0ced397b56ff +CT= 127a9693ad41347ed5d1be5a5ad060e81260fb2f20cd1b914706a683a1979760 +TEST= 222 +KEY= b61149f74424a87faf54eb3ffed2b298 +PT= 127a9693ad41347ed5d1be5a5ad060e81260fb2f20cd1b914706a683a1979760 +CT= 6d06bce953c19ce2c4c0269cbc8d039b37e5ccef1d3a12747c3924ebf54ef6b2 +TEST= 223 +KEY= 81f48518591eba0bd36dcfd40b9c442a +PT= 6d06bce953c19ce2c4c0269cbc8d039b37e5ccef1d3a12747c3924ebf54ef6b2 +CT= 3e95e813ab8797834b787d6c51fb94ac6769d5c9abc7d2674001a61924526f44 +TEST= 224 +KEY= e69d50d1f2d9686c936c69cd2fce2b6e +PT= 3e95e813ab8797834b787d6c51fb94ac6769d5c9abc7d2674001a61924526f44 +CT= 8982c70eef8d017e9073df00b8def5ecab8890ac7004eaf2fdfe415cb855d238 +TEST= 225 +KEY= 4d15c07d82dd829e6e922891979bf956 +PT= 8982c70eef8d017e9073df00b8def5ecab8890ac7004eaf2fdfe415cb855d238 +CT= ac2017fcadaea889b435a0397553b69fb6679596f3c9f80cf22940c028fadc2c +TEST= 226 +KEY= fb7255eb71147a929cbb6851bf61257a +PT= ac2017fcadaea889b435a0397553b69fb6679596f3c9f80cf22940c028fadc2c +CT= 177648762f04e5600411d8c8f3fa72c2acbc95515a3d4772d02c27928a14c24e +TEST= 227 +KEY= 57cec0ba2b293de04c974fc33575e734 +PT= 177648762f04e5600411d8c8f3fa72c2acbc95515a3d4772d02c27928a14c24e +CT= 04ae1a55e5b7cbc3d4ea18c824f4a05d3a078d5a1c817486d95c7c783b1bf346 +TEST= 228 +KEY= 6dc94de037a8496695cb33bb0e6e1472 +PT= 04ae1a55e5b7cbc3d4ea18c824f4a05d3a078d5a1c817486d95c7c783b1bf346 +CT= 2edb9e28acdb5054915887b974514f95362607dcc9d36ac778029dc4c2cc7c13 +TEST= 229 +KEY= 5bef4a3cfe7b23a1edc9ae7fcca26861 +PT= 2edb9e28acdb5054915887b974514f95362607dcc9d36ac778029dc4c2cc7c13 +CT= eff54f089d73e8e38ca6fa610857d4361e5db98fc6a0501cc8b47073bcb35825 +TEST= 230 +KEY= 45b2f3b338db73bd257dde0c70113044 +PT= eff54f089d73e8e38ca6fa610857d4361e5db98fc6a0501cc8b47073bcb35825 +CT= c03b49e6287551c7efe297d1c39120f1fced6a33e6b5de2947ba954ea5b45292 +TEST= 231 +KEY= b95f9980de6ead9462c74b42d5a562d6 +PT= c03b49e6287551c7efe297d1c39120f1fced6a33e6b5de2947ba954ea5b45292 +CT= 0e21bc19a570df3881127a16eba68db7ad4bedf5728c2704a62b3fb33d45c7a4 +TEST= 232 +KEY= 14147475ace28a90c4ec74f1e8e0a572 +PT= 0e21bc19a570df3881127a16eba68db7ad4bedf5728c2704a62b3fb33d45c7a4 +CT= 8d772fbc0806ef6237553653687973fbabe6bec346d37e1e67d2c46dadff5dac +TEST= 233 +KEY= bff2cab6ea31f48ea33eb09c451ff8de +PT= 8d772fbc0806ef6237553653687973fbabe6bec346d37e1e67d2c46dadff5dac +CT= 0dcfeecef15c43ba4cad63b0c11144c5141d084dab89a047c8d4d25b200b78f1 +TEST= 234 +KEY= abefc2fb41b854c96bea62c76514802f +PT= 0dcfeecef15c43ba4cad63b0c11144c5141d084dab89a047c8d4d25b200b78f1 +CT= 496b4ef3ff78d96f7d2d3e11989ff701b078bcb1150860cf0e41fd2ffa660812 +TEST= 235 +KEY= 1b977e4a54b0340665ab9fe89f72883d +PT= 496b4ef3ff78d96f7d2d3e11989ff701b078bcb1150860cf0e41fd2ffa660812 +CT= 341a6f22104e2a7c043b68e40edbd6cba103754110015a7caec983df43e93f85 +TEST= 236 +KEY= ba940b0b44b16e7acb621c37dc9bb7b8 +PT= 341a6f22104e2a7c043b68e40edbd6cba103754110015a7caec983df43e93f85 +CT= 361e5e3b47118e5c29864bad867e9e3217b37a0399b9b41b03c9ed94311b7c32 +TEST= 237 +KEY= ad277108dd08da61c8abf1a3ed80cb8a +PT= 361e5e3b47118e5c29864bad867e9e3217b37a0399b9b41b03c9ed94311b7c32 +CT= faa7434a1944a9adb05bea5acfcb7f70fdb7dcb76b4d3be71d226dd3b6e02cc6 +TEST= 238 +KEY= 5090adbfb645e186d5899c705b60e74c +PT= faa7434a1944a9adb05bea5acfcb7f70fdb7dcb76b4d3be71d226dd3b6e02cc6 +CT= ee557e6e74f27372ced6542b817d0cd90d8e96749a73a4743820a4ad50789d8b +TEST= 239 +KEY= 5d1e3bcb2c3645f2eda938dd0b187ac7 +PT= ee557e6e74f27372ced6542b817d0cd90d8e96749a73a4743820a4ad50789d8b +CT= 021d0f38af00ddf83dae8893cf92be15b1dff7032cab198ad5e58f5b5bfa71e9 +TEST= 240 +KEY= ecc1ccc8009d5c78384cb78650e20b2e +PT= 021d0f38af00ddf83dae8893cf92be15b1dff7032cab198ad5e58f5b5bfa71e9 +CT= 4b2c1d89dec165bb93428e2bbdb3506116c806998f8111c95a1da2cd3a9ca27c +TEST= 241 +KEY= fa09ca518f1c4db16251154b6a7ea952 +PT= 4b2c1d89dec165bb93428e2bbdb3506116c806998f8111c95a1da2cd3a9ca27c +CT= bf1e51a5a5ad8f4a8e001d4b87ccd4d4085e9e3fa3a769e4fac9b80a3a786312 +TEST= 242 +KEY= f257546e2cbb24559898ad415006ca40 +PT= bf1e51a5a5ad8f4a8e001d4b87ccd4d4085e9e3fa3a769e4fac9b80a3a786312 +CT= 948f4edb1954be0be1acde248dfe884ef9177a4fbd4862c2c22101f330c9ae39 +TEST= 243 +KEY= 0b402e2191f346975ab9acb260cf6479 +PT= 948f4edb1954be0be1acde248dfe884ef9177a4fbd4862c2c22101f330c9ae39 +CT= 580830a4672fd3b3508a28e34894f8b846a9aeda9001b88e80381619f10a7ea8 +TEST= 244 +KEY= 4de980fb01f2fe19da81baab91c51ad1 +PT= 580830a4672fd3b3508a28e34894f8b846a9aeda9001b88e80381619f10a7ea8 +CT= 33e675e7c3d5acc2f04099c67eb69ec7b8afc0874076432c897692e6c6bbf430 +TEST= 245 +KEY= f546407c4184bd3553f7284d577eeee1 +PT= 33e675e7c3d5acc2f04099c67eb69ec7b8afc0874076432c897692e6c6bbf430 +CT= c14423803983205b9f3ed24bafa3e381574ad831bde813d10d8f81867d410c4f +TEST= 246 +KEY= a20c984dfc6caee45e78a9cb2a3fe2ae +PT= c14423803983205b9f3ed24bafa3e381574ad831bde813d10d8f81867d410c4f +CT= 12d2ef2e7c5ffe404431020b7bf7befcb137f05920e3a3dc54e912739c680471 +TEST= 247 +KEY= 133b6814dc8f0d380a91bbb8b657e6df +PT= 12d2ef2e7c5ffe404431020b7bf7befcb137f05920e3a3dc54e912739c680471 +CT= 29f0d9243594bb0956172b9deb61721a28ccacc5f5866adae8de11c597f81648 +TEST= 248 +KEY= 3bf7c4d1290967e2e24faa7d21aff097 +PT= 29f0d9243594bb0956172b9deb61721a28ccacc5f5866adae8de11c597f81648 +CT= 0d672fbfcb3079306fcd78b8170a7e206b463890115b8e3ef289a473b88adaf7 +TEST= 249 +KEY= 50b1fc413852e9dc10c60e0e99252a60 +PT= 0d672fbfcb3079306fcd78b8170a7e206b463890115b8e3ef289a473b88adaf7 +CT= 603c4783b1586b9e9d4f81854b48c94bdfee3e951502ee8cf936a84b9ab479a5 +TEST= 250 +KEY= 8f5fc2d42d500750e9f0a645039153c5 +PT= 603c4783b1586b9e9d4f81854b48c94bdfee3e951502ee8cf936a84b9ab479a5 +CT= ae39cb417602d28eaaa566e94315ec1e4cdeb0e4e4d9891e8619ca8a054faccd +TEST= 251 +KEY= c3817230c9898e4e6fe96ccf06deff08 +PT= ae39cb417602d28eaaa566e94315ec1e4cdeb0e4e4d9891e8619ca8a054faccd +CT= 009833423636e2534e10533275e83b251788d1f4b62278775ca3ef4fcc0c95a7 +TEST= 252 +KEY= d409a3c47fabf639334a8380cad26aaf +PT= 009833423636e2534e10533275e83b251788d1f4b62278775ca3ef4fcc0c95a7 +CT= 7172ddc943d93f0887d70630e55c80d3751723a024a4b4679c5132e9d5e9d5cc +TEST= 253 +KEY= a11e80645b0f425eaf1bb1691f3bbf63 +PT= 7172ddc943d93f0887d70630e55c80d3751723a024a4b4679c5132e9d5e9d5cc +CT= b5179f0e5a3182436076926b1db0ed5d286c663d397f141d08a4c1e3651780d5 +TEST= 254 +KEY= 8972e65962705643a7bf708a7a2c3fb6 +PT= b5179f0e5a3182436076926b1db0ed5d286c663d397f141d08a4c1e3651780d5 +CT= 32ab14defcb4a452d020935e5caf3cfd81900d7849a33ead3821b4281fdfa09f +TEST= 255 +KEY= 08e2eb212bd368ee9f9ec4a265f39f29 +PT= 32ab14defcb4a452d020935e5caf3cfd81900d7849a33ead3821b4281fdfa09f +CT= cdc442a4e6c6083246f9b1b9688146e689f564ae73e90031df4aaf601e9a5172 +TEST= 256 +KEY= 81178f8f583a68df40d46bc27b69ce5b +PT= cdc442a4e6c6083246f9b1b9688146e689f564ae73e90031df4aaf601e9a5172 +CT= 9c57ad9efa145d3b9784f814e0978b2d3fe930988bb4fcd2e0c70fb6eb6e8829 +TEST= 257 +KEY= befebf17d38e940da013647490074672 +PT= 9c57ad9efa145d3b9784f814e0978b2d3fe930988bb4fcd2e0c70fb6eb6e8829 +CT= 9f1047776f9d2d24a021abed61d57c2ac487bb54a95d6180edc473c623d02d2d +TEST= 258 +KEY= 7a7904437ad3f58d4dd717b2b3d76b5f +PT= 9f1047776f9d2d24a021abed61d57c2ac487bb54a95d6180edc473c623d02d2d +CT= 7369ebec82ac1d99a6f3dfcb76bea61a5f21d69e96a1aebcbe52e62f1e1cb671 +TEST= 259 +KEY= 2558d2ddec725b31f385f19dadcbdd2e +PT= 7369ebec82ac1d99a6f3dfcb76bea61a5f21d69e96a1aebcbe52e62f1e1cb671 +CT= 5e9d43ac107bb638012b1aeef9847e491daa4251c386365a1d8ee9d86620170c +TEST= 260 +KEY= 38f2908c2ff46d6bee0b1845cbebca22 +PT= 5e9d43ac107bb638012b1aeef9847e491daa4251c386365a1d8ee9d86620170c +CT= 2604a83c738511597118ce52da02e8eb531ba880b7136b2adce101905064f309 +TEST= 261 +KEY= 6be9380c98e7064132ea19d59b8f392b +PT= 2604a83c738511597118ce52da02e8eb531ba880b7136b2adce101905064f309 +CT= 13d25fe01aff7b0a09f497591b27309858793f22cbccda5315a4feaf62c198ca +TEST= 262 +KEY= 3390072e532bdc12274ee77af94ea1e1 +PT= 13d25fe01aff7b0a09f497591b27309858793f22cbccda5315a4feaf62c198ca +CT= 9cd9b281290ba494856f1c00c9f54b8e497a40c282c004e7211330a2795a8ec3 +TEST= 263 +KEY= 7aea47ecd1ebd8f5065dd7d880142f22 +PT= 9cd9b281290ba494856f1c00c9f54b8e497a40c282c004e7211330a2795a8ec3 +CT= dbf0eb976b64be027737fe22421aec4d0d5417e24343b33fbc11e11e84d8f26c +TEST= 264 +KEY= 77be500e92a86bcaba4c36c604ccdd4e +PT= dbf0eb976b64be027737fe22421aec4d0d5417e24343b33fbc11e11e84d8f26c +CT= ba9994aa391e6aa0b1ebac9c7fe72b54be905e34fd0954ebb55ccdec8909150e +TEST= 265 +KEY= c92e0e3a6fa13f210f10fb2a8dc5c840 +PT= ba9994aa391e6aa0b1ebac9c7fe72b54be905e34fd0954ebb55ccdec8909150e +CT= 3c4b5d44b1e1a957ec2d68531bad8fb490e97ef1030b996ae17041ca5caf259c +TEST= 266 +KEY= 59c770cb6caaa64bee60bae0d16aeddc +PT= 3c4b5d44b1e1a957ec2d68531bad8fb490e97ef1030b996ae17041ca5caf259c +CT= ea00574b4907a09da705245cc1c0b87313986b1c1125ccf2c0e219a5d6da6bcb +TEST= 267 +KEY= 4a5f1bd77d8f6ab92e82a34507b08617 +PT= ea00574b4907a09da705245cc1c0b87313986b1c1125ccf2c0e219a5d6da6bcb +CT= c819ca558b907da8e072faec33f03a320d4d89a3f1a89771af9909db85a464e4 +TEST= 268 +KEY= 471292748c27fdc8811baa9e8214e2f3 +PT= c819ca558b907da8e072faec33f03a320d4d89a3f1a89771af9909db85a464e4 +CT= c4460e06d793ebc767837385f7e2010818baf9fe48143b1646ebfe9e38aaf84a +TEST= 269 +KEY= 5fa86b8ac433c6dec7f05400babe1ab9 +PT= c4460e06d793ebc767837385f7e2010818baf9fe48143b1646ebfe9e38aaf84a +CT= 1e060808b3eceabc2da161fada92665c6c91d55c2af72f7b2bf3877ed57b88b0 +TEST= 270 +KEY= 3339bed6eec4e9a5ec03d37e6fc59209 +PT= 1e060808b3eceabc2da161fada92665c6c91d55c2af72f7b2bf3877ed57b88b0 +CT= 99dd131f5ef1656c030c3cbefb6f4721fdc47d5cd6567ac2e33de441a1ee7eca +TEST= 271 +KEY= cefdc38a389293670f3e373fce2becc3 +PT= 99dd131f5ef1656c030c3cbefb6f4721fdc47d5cd6567ac2e33de441a1ee7eca +CT= 8f161ac0637a3d056c763a6154f7c7f690389caa6a23c80cc29fdac14bec8f41 +TEST= 272 +KEY= 5ec55f2052b15b6bcda1edfe85c76382 +PT= 8f161ac0637a3d056c763a6154f7c7f690389caa6a23c80cc29fdac14bec8f41 +CT= 0ad005686d53afbebcb45df22c3a84f542a0bb1b8719bee4bfe9a8fa0185d8dd +TEST= 273 +KEY= 1c65e43bd5a8e58f724845048442bb5f +PT= 0ad005686d53afbebcb45df22c3a84f542a0bb1b8719bee4bfe9a8fa0185d8dd +CT= c11c39261a9ef0913915367a47d1eff4dd6ce7cae97c577e1c7fe647edc621a4 +TEST= 274 +KEY= c10903f13cd4b2f16e37a34369849afb +PT= c11c39261a9ef0913915367a47d1eff4dd6ce7cae97c577e1c7fe647edc621a4 +CT= 57db9139a32388ca3fa0ac0a17ab21e6ded94d72c4f79aeff5baa628d4cc4f25 +TEST= 275 +KEY= 1fd04e83f823281e9b8d056bbd48d5de +PT= 57db9139a32388ca3fa0ac0a17ab21e6ded94d72c4f79aeff5baa628d4cc4f25 +CT= 48ba099c53847368d43c08fd9970ea367a04ce03cd0a93ef87019929d7206f51 +TEST= 276 +KEY= 65d480803529bbf11c8c9c426a68ba8f +PT= 48ba099c53847368d43c08fd9970ea367a04ce03cd0a93ef87019929d7206f51 +CT= 4079455e0966b22f9bb21c86e52f3701ce62f8135dc21db3b4714b8cbff7f528 +TEST= 277 +KEY= abb6789368eba642a8fdd7ced59f4fa7 +PT= 4079455e0966b22f9bb21c86e52f3701ce62f8135dc21db3b4714b8cbff7f528 +CT= c8571f0a227d6f15792feeb5d27cf97b641fb64e073ac3b7d350e9a6eff7c002 +TEST= 278 +KEY= cfa9cedd6fd165f57bad3e683a688fa5 +PT= c8571f0a227d6f15792feeb5d27cf97b641fb64e073ac3b7d350e9a6eff7c002 +CT= 8c24e702828336c64ce8b318225b04b77859e2cb079c05e0efb5de852c3de967 +TEST= 279 +KEY= b7f02c16684d60159418e0ed165566c2 +PT= 8c24e702828336c64ce8b318225b04b77859e2cb079c05e0efb5de852c3de967 +CT= ee582e7a79b918fff616f15e42244657ff91fd8fbf25e1c19232613e5e585cb7 +TEST= 280 +KEY= 4861d199d76881d4062a81d3480d3a75 +PT= ee582e7a79b918fff616f15e42244657ff91fd8fbf25e1c19232613e5e585cb7 +CT= d79ccb809aff4dec9a4b24ad43bb3c57cc976fa0f6bab3462c7f5cd419fac63d +TEST= 281 +KEY= 84f6be3921d232922a55dd0751f7fc48 +PT= d79ccb809aff4dec9a4b24ad43bb3c57cc976fa0f6bab3462c7f5cd419fac63d +CT= 5659f9c7060d7dd8ac8f42119b1b2d23d6bc22f7c4f363ebb40a052af00c05a0 +TEST= 282 +KEY= 524a9ccee52151799e5fd82da1fbf9e8 +PT= 5659f9c7060d7dd8ac8f42119b1b2d23d6bc22f7c4f363ebb40a052af00c05a0 +CT= 5b4bfda0423eff05fd8d43b9d3239d4d9952baa7e915d5327329856edaaaedbd +TEST= 283 +KEY= cb1826690c34844bed765d437b511455 +PT= 5b4bfda0423eff05fd8d43b9d3239d4d9952baa7e915d5327329856edaaaedbd +CT= 4bb672f24f92a138f058d79d13fd25134eae741d74a2b1bd8afd73c43302318a +TEST= 284 +KEY= 85b65274789635f6678b2e87485325df +PT= 4bb672f24f92a138f058d79d13fd25134eae741d74a2b1bd8afd73c43302318a +CT= 26678da17555dabfcf04bc94750e4c67a2aeab9d1ebbd552f3ca74cce3e34a77 +TEST= 285 +KEY= 2718f9e9662de0a494415a4babb06fa8 +PT= 26678da17555dabfcf04bc94750e4c67a2aeab9d1ebbd552f3ca74cce3e34a77 +CT= 89e6bb565fcd035267801be8e5551c045f475b3955c03c3663cc9fed543f10ed +TEST= 286 +KEY= 785fa2d033eddc92f78dc5a6ff8f7f45 +PT= 89e6bb565fcd035267801be8e5551c045f475b3955c03c3663cc9fed543f10ed +CT= d232204afe0e76fa68144039d9978608d7f142970cdf3fc263e0668cfb3c1108 +TEST= 287 +KEY= afaee0473f32e350946da32a04b36e4d +PT= d232204afe0e76fa68144039d9978608d7f142970cdf3fc263e0668cfb3c1108 +CT= 2adfd678316c67c32e379f6f6d2c723148087c9bab238bb204c487b6c3cc77f1 +TEST= 288 +KEY= e7a69cdc941168e290a9249cc77f19bc +PT= 2adfd678316c67c32e379f6f6d2c723148087c9bab238bb204c487b6c3cc77f1 +CT= c72100cfe744dd553e856226b73a9edbdcd21b1ec32eb679d438ae2ee6aec363 +TEST= 289 +KEY= 3b7487c2573fde9b44918ab221d1dadf +PT= c72100cfe744dd553e856226b73a9edbdcd21b1ec32eb679d438ae2ee6aec363 +CT= 757a110222105e1eed514b681312e3f4db089534937489aa60ac203799a82899 +TEST= 290 +KEY= e07c12f6c44b5731243daa85b879f246 +PT= 757a110222105e1eed514b681312e3f4db089534937489aa60ac203799a82899 +CT= 7a4d9338adf9fd5352064e5bce78f146114f825f6807674f3e55f101c194d412 +TEST= 291 +KEY= f13390a9ac4c307e1a685b8479ed2654 +PT= 7a4d9338adf9fd5352064e5bce78f146114f825f6807674f3e55f101c194d412 +CT= 222b6b43f118a779689a0bf4a62c94ef3c0635b6247e9b3c834980c5143beff6 +TEST= 292 +KEY= cd35a51f8832ab429921db416dd6c9a2 +PT= 222b6b43f118a779689a0bf4a62c94ef3c0635b6247e9b3c834980c5143beff6 +CT= a6a2b7d63f08f935263eee1ed26cf47c00f9d68bf0db16e338964205f62a9347 +TEST= 293 +KEY= cdcc739478e9bda1a1b799449bfc5ae5 +PT= a6a2b7d63f08f935263eee1ed26cf47c00f9d68bf0db16e338964205f62a9347 +CT= 88aa2722f11d9cc259a14badba317bcf162c5f567c37ec4a13c6e138cdae654d +TEST= 294 +KEY= dbe02cc204de51ebb271787c56523fa8 +PT= 88aa2722f11d9cc259a14badba317bcf162c5f567c37ec4a13c6e138cdae654d +CT= 103d3a9ace189c52a8d7631c1c61edc9eb592cd211aa3bcc378a20758653de0d +TEST= 295 +KEY= 30b9001015746a2785fb5809d001e1a5 +PT= 103d3a9ace189c52a8d7631c1c61edc9eb592cd211aa3bcc378a20758653de0d +CT= 9eef0be84400007315cb1d1f71abdb0690005ea48566893cf419ab92ef3d8923 +TEST= 296 +KEY= a0b95eb49012e31b71e2f39b3f3c6886 +PT= 9eef0be84400007315cb1d1f71abdb0690005ea48566893cf419ab92ef3d8923 +CT= 4731172d9ed44141cba1057cb1324c31ebb4111c4e8757602b43d8ff76aa98b0 +TEST= 297 +KEY= 4b0d4fa8de95b47b5aa12b644996f036 +PT= 4731172d9ed44141cba1057cb1324c31ebb4111c4e8757602b43d8ff76aa98b0 +CT= 86b2433633fdfe45858db1a0dd217721d63dd34c9d67a5292c34113b4549f824 +TEST= 298 +KEY= 9d309ce443f2115276953a5f0cdf0812 +PT= 86b2433633fdfe45858db1a0dd217721d63dd34c9d67a5292c34113b4549f824 +CT= 33ec5ebb39787f882dd72f0075a3ee28db6def59efaf443a11699c3c561241fc +TEST= 299 +KEY= 465d73bdac5d556867fca6635acd49ee +PT= 33ec5ebb39787f882dd72f0075a3ee28db6def59efaf443a11699c3c561241fc +CT= 56600e69da3ae52c458743fedd99662df18c70a841905557908767d1d9e8c543 +TEST= 300 +KEY= b7d10315edcd003ff77bc1b283258cad +PT= 56600e69da3ae52c458743fedd99662df18c70a841905557908767d1d9e8c543 +CT= dbf1793dea70dbfe388229b1732947e799d5abaf2bc5f0beee0d8e682e6315ad +TEST= 301 +KEY= 2e04a8bac608f08119764fdaad469900 +PT= dbf1793dea70dbfe388229b1732947e799d5abaf2bc5f0beee0d8e682e6315ad +CT= 1c22483dca7820320983670021eccd114258202bd3e1e9d8677101cd1490c833 +TEST= 302 +KEY= 6c5c889115e919597e074e17b9d65133 +PT= 1c22483dca7820320983670021eccd114258202bd3e1e9d8677101cd1490c833 +CT= 4a9751a6fe92b311cd497f8fe97e33604f9bf5edc946c7c28147c40c1a8b71f2 +TEST= 303 +KEY= 23c77d7cdcafde9bff408a1ba35d20c1 +PT= 4a9751a6fe92b311cd497f8fe97e33604f9bf5edc946c7c28147c40c1a8b71f2 +CT= b1250a72ac79df19f147360c82c1e440dfa898f13c718ef7d5e2bb21bd830036 +TEST= 304 +KEY= fc6fe58de0de506c2aa2313a1ede20f7 +PT= b1250a72ac79df19f147360c82c1e440dfa898f13c718ef7d5e2bb21bd830036 +CT= 14b4c4ea0e8de287117a86af673cd1a713110d728df720aaad87b070cf2b148d +TEST= 305 +KEY= ef7ee8ff6d2970c68725814ad1f5347a +PT= 14b4c4ea0e8de287117a86af673cd1a713110d728df720aaad87b070cf2b148d +CT= b2aad424460611538153ec3a70806803661043132eb070abde150c716f35a506 +TEST= 306 +KEY= 896eabec4399006d59308d3bbec0917c +PT= b2aad424460611538153ec3a70806803661043132eb070abde150c716f35a506 +CT= 14b9559aac35278110615a74d8c476bcdef5113ac23d7c1b2a9bcf3fc316d471 +TEST= 307 +KEY= 579bbad681a47c7673ab42047dd6450d +PT= 14b9559aac35278110615a74d8c476bcdef5113ac23d7c1b2a9bcf3fc316d471 +CT= afa19d87e796b08136b8ae4a97a8976eec4fd8e00526c207ed827aa1e88ae644 +TEST= 308 +KEY= bbd462368482be719e2938a5955ca349 +PT= afa19d87e796b08136b8ae4a97a8976eec4fd8e00526c207ed827aa1e88ae644 +CT= f48704e31d124a8f0bfad6f2a86e7dacc316bd3e2392b4218aed149a2a8a3312 +TEST= 309 +KEY= 78c2df08a7100a5014c42c3fbfd6905b +PT= f48704e31d124a8f0bfad6f2a86e7dacc316bd3e2392b4218aed149a2a8a3312 +CT= 1fa149a7aaaff620ecf0a4d0682e7d2baf7373ece88b9cdc387288a9e87c7a5d +TEST= 310 +KEY= d7b1ace44f9b968c2cb6a49657aaea06 +PT= 1fa149a7aaaff620ecf0a4d0682e7d2baf7373ece88b9cdc387288a9e87c7a5d +CT= c70aab3c79d71930d32cacdf6ed1e35f22698796c399aa2ef02cf2e8856a375d +TEST= 311 +KEY= f5d82b728c023ca2dc9a567ed2c0dd5b +PT= c70aab3c79d71930d32cacdf6ed1e35f22698796c399aa2ef02cf2e8856a375d +CT= 1e2cc0aac93d1f360a440960e8fafa194ceeef7876faab827887c7ee7fd1f28e +TEST= 312 +KEY= b936c40afaf89720a41d9190ad112fd5 +PT= 1e2cc0aac93d1f360a440960e8fafa194ceeef7876faab827887c7ee7fd1f28e +CT= d867a82951d4a7c7ad7e4c23ac5a96beec876f56657e397f0cacd27ff43cba31 +TEST= 313 +KEY= 55b1ab5c9f86ae5fa8b143ef592d95e4 +PT= d867a82951d4a7c7ad7e4c23ac5a96beec876f56657e397f0cacd27ff43cba31 +CT= a238fe5a339731d1ddb3a8359661fe92829237275e85d3f1e3495927e5038a64 +TEST= 314 +KEY= d7239c7bc1037dae4bf81ac8bc2e1f80 +PT= a238fe5a339731d1ddb3a8359661fe92829237275e85d3f1e3495927e5038a64 +CT= c5b71b0af41ea665cca51a17f3ad9823da6eccac503b79a3b780359d99610d11 +TEST= 315 +KEY= 0d4d50d79138040dfc782f55254f1291 +PT= c5b71b0af41ea665cca51a17f3ad9823da6eccac503b79a3b780359d99610d11 +CT= 89fcc6fe6b24a3c93efa5fc2c167937e532e6612d4bfe1121471676866ced47b +TEST= 316 +KEY= 5e6336c54587e51fe809483d4381c6ea +PT= 89fcc6fe6b24a3c93efa5fc2c167937e532e6612d4bfe1121471676866ced47b +CT= ecf54a88a0b97d150b3440a622674ae0ac535a1f26451b7da2a40c8819403db0 +TEST= 317 +KEY= f2306cda63c2fe624aad44b55ac1fb5a +PT= ecf54a88a0b97d150b3440a622674ae0ac535a1f26451b7da2a40c8819403db0 +CT= 4eb4c9bd90f93e16efd6096a72a12004f0feeaca941e590f61c538815cd845f8 +TEST= 318 +KEY= 02ce8610f7dca76d2b687c340619bea2 +PT= 4eb4c9bd90f93e16efd6096a72a12004f0feeaca941e590f61c538815cd845f8 +CT= 50f7c9d4c02d172d0cd8b11e432b4f581f9ef52db1c6ced13c2b6b94d6bcc171 +TEST= 319 +KEY= 1d50733d461a69bc174317a0d0a57fd3 +PT= 50f7c9d4c02d172d0cd8b11e432b4f581f9ef52db1c6ced13c2b6b94d6bcc171 +CT= 5f2955659a1e411ad4ab30d4d81c922aa8e4f7a5e305f04ebd560133c7fa1766 +TEST= 320 +KEY= b5b48498a51f99f2aa151693175f68b5 +PT= 5f2955659a1e411ad4ab30d4d81c922aa8e4f7a5e305f04ebd560133c7fa1766 +CT= 61453999a6a383b9a92f63ca861eabe6f0843b783b4fc009288ed050a39e9cca +TEST= 321 +KEY= 4530bfe09e5059fb829bc6c3b4c1f47f +PT= 61453999a6a383b9a92f63ca861eabe6f0843b783b4fc009288ed050a39e9cca +CT= 4706d4fe3b224f7ece1852de56a143af6632954fdc5f4b270f5f427c05d32434 +TEST= 322 +KEY= 23022aaf420f12dc8dc484bfb112d04b +PT= 4706d4fe3b224f7ece1852de56a143af6632954fdc5f4b270f5f427c05d32434 +CT= e550d07527c82200e62f95ca0c2c1058ee82b7ed4ddddc58a8d5c13f257fb167 +TEST= 323 +KEY= cd809d420fd2ce8425114580946d612c +PT= e550d07527c82200e62f95ca0c2c1058ee82b7ed4ddddc58a8d5c13f257fb167 +CT= 182bac6445de5183843e64de9b4c71571603ae089eb743132bf6bd1392ec71d2 +TEST= 324 +KEY= db83334a91658d970ee7f893068110fe +PT= 182bac6445de5183843e64de9b4c71571603ae089eb743132bf6bd1392ec71d2 +CT= a2840156ef0f0e6cf9cc219ab2be244b9af361b5850e5aaa13cb8745583d62b6 +TEST= 325 +KEY= 417052ff146bd73d1d2c7fd65ebc7248 +PT= a2840156ef0f0e6cf9cc219ab2be244b9af361b5850e5aaa13cb8745583d62b6 +CT= 68363bade62bc0b690f7e02104f7cebbfa835c4628a36557aa738e2ddae500ae +TEST= 326 +KEY= bbf30eb93cc8b26ab75ff1fb845972e6 +PT= 68363bade62bc0b690f7e02104f7cebbfa835c4628a36557aa738e2ddae500ae +CT= 2c065a8c8f352a96a4660f2f9784633c9c3c0f2803afbb18709178b7167f8c37 +TEST= 327 +KEY= 27cf01913f670972c7ce894c9226fed1 +PT= 2c065a8c8f352a96a4660f2f9784633c9c3c0f2803afbb18709178b7167f8c37 +CT= 50da19347456af5adf8010761dbe2e030ff76e4ad9150f9700fe97f5446442ae +TEST= 328 +KEY= 28386fdbe67206e5c7301eb9d642bc7f +PT= 50da19347456af5adf8010761dbe2e030ff76e4ad9150f9700fe97f5446442ae +CT= f129999da6e90f8fe8b17cb4496f309c4c0ca363da1a8562e9b5d4d246e29067 +TEST= 329 +KEY= 6434ccb83c6883872e85ca6b90a02c18 +PT= f129999da6e90f8fe8b17cb4496f309c4c0ca363da1a8562e9b5d4d246e29067 +CT= 1e8cbe3467d3a9e3af4834da80529119824e73c08cbc6d568114de658f07a381 +TEST= 330 +KEY= e67abf78b0d4eed1af91140e1fa78f99 +PT= 1e8cbe3467d3a9e3af4834da80529119824e73c08cbc6d568114de658f07a381 +CT= 8fca7cb2e934c097f9a40be0dac2e7992680b0ad81eb372f5b27c771f2999781 +TEST= 331 +KEY= c0fa0fd5313fd9fef4b6d37fed3e1818 +PT= 8fca7cb2e934c097f9a40be0dac2e7992680b0ad81eb372f5b27c771f2999781 +CT= 6f01c37208a184429373130aeb2871c5d5e02776648324ae000fb66afe679ba4 +TEST= 332 +KEY= 151a28a355bcfd50f4b96515135983bc +PT= 6f01c37208a184429373130aeb2871c5d5e02776648324ae000fb66afe679ba4 +CT= 75ce6bb07c7c03bb6eeb458deddd0a632ec988b4397b7fa058c17a7963640acb +TEST= 333 +KEY= 3bd3a0176cc782f0ac781f6c703d8977 +PT= 75ce6bb07c7c03bb6eeb458deddd0a632ec988b4397b7fa058c17a7963640acb +CT= d1d9754680cc71997b23d5bd0a0c01bd30f6cfcba0cdfddf0c5c1b1759f32333 +TEST= 334 +KEY= 0b256fdccc0a7f2fa024047b29ceaa44 +PT= d1d9754680cc71997b23d5bd0a0c01bd30f6cfcba0cdfddf0c5c1b1759f32333 +CT= afc7f306de159e002d7cb11bfab67c28a329dca6d52177c3d92972da93d6be9d +TEST= 335 +KEY= a80cb37a192b08ec790d76a1ba1814d9 +PT= afc7f306de159e002d7cb11bfab67c28a329dca6d52177c3d92972da93d6be9d +CT= b28ebf060483a8e39c0d909f21160f6b064ddca55ca16c585394419cf6ecbaee +TEST= 336 +KEY= ae416fdf458a64b42a99373d4cf4ae37 +PT= b28ebf060483a8e39c0d909f21160f6b064ddca55ca16c585394419cf6ecbaee +CT= b2519680ab1d2b15634df7db07b6a138e917f1fc160e7be36bb21138a79f4a6d +TEST= 337 +KEY= 47569e2353841f57412b2605eb6be45a +PT= b2519680ab1d2b15634df7db07b6a138e917f1fc160e7be36bb21138a79f4a6d +CT= f7d6996f2c77e4d0ae4f11b0cc28c05cd8ea045d8e4040abc4a38dd25d5b13e3 +TEST= 338 +KEY= 9fbc9a7eddc45ffc8588abd7b630f7b9 +PT= f7d6996f2c77e4d0ae4f11b0cc28c05cd8ea045d8e4040abc4a38dd25d5b13e3 +CT= 60b765dd1d434056658210b09325dc820a05179455621a48c102d26927c32f8d +TEST= 339 +KEY= 95b98dea88a645b4448a79be91f3d834 +PT= 60b765dd1d434056658210b09325dc820a05179455621a48c102d26927c32f8d +CT= 61d85fe12ad2bec6c237ee1e530d5e813957fb0ff1e55e9b06ee2ec7a10ae594 +TEST= 340 +KEY= acee76e579431b2f4264577930f93da0 +PT= 61d85fe12ad2bec6c237ee1e530d5e813957fb0ff1e55e9b06ee2ec7a10ae594 +CT= 884cc15de96d96b5f05c0e0fe6f46a99ab022cf8005fe62ec5898bb08954f371 +TEST= 341 +KEY= 07ec5a1d791cfd0187eddcc9b9adced1 +PT= 884cc15de96d96b5f05c0e0fe6f46a99ab022cf8005fe62ec5898bb08954f371 +CT= ab111df7d8fe64282c45c0180c724d999f4ee6e5cfa4561650a277df18ebc819 +TEST= 342 +KEY= 98a2bcf8b6b8ab17d74fab16a14606c8 +PT= ab111df7d8fe64282c45c0180c724d999f4ee6e5cfa4561650a277df18ebc819 +CT= 382e776fbd03bfb8cc97aa698d828a6545b1c93df1848ab68b625281dbecfa7d +TEST= 343 +KEY= dd1375c5473c21a15c2df9977aaafcb5 +PT= 382e776fbd03bfb8cc97aa698d828a6545b1c93df1848ab68b625281dbecfa7d +CT= 0850173237abfa2609cea5380eeb72ac3c2876d6dc1316f1f718dc73aef6a441 +TEST= 344 +KEY= e13b03139b2f3750ab3525e4d45c58f4 +PT= 0850173237abfa2609cea5380eeb72ac3c2876d6dc1316f1f718dc73aef6a441 +CT= 4c83dd73ce0f4200cd1602957925454454a3b9739cbb8e194928c07b26795252 +TEST= 345 +KEY= b598ba600794b949e21de59ff2250aa6 +PT= 4c83dd73ce0f4200cd1602957925454454a3b9739cbb8e194928c07b26795252 +CT= ca5d340a3f1c7e832eac2d8a08f2f8924651017b6d1cbe9329b644304c10cb10 +TEST= 346 +KEY= f3c9bb1b6a8807dacbaba1afbe35c1b6 +PT= ca5d340a3f1c7e832eac2d8a08f2f8924651017b6d1cbe9329b644304c10cb10 +CT= ebce3a6b4fcdc58133368960e0892787c5e8fa9fd0ff93c72479a7bdc2098c0b +TEST= 347 +KEY= 36214184ba77941defd206127c3c4dbd +PT= ebce3a6b4fcdc58133368960e0892787c5e8fa9fd0ff93c72479a7bdc2098c0b +CT= 541b5b6b8d1fd2787443277c67fc3cfa02937879f34db65a10dce35174568891 +TEST= 348 +KEY= 34b239fd493a2247ff0ee543086ac52c +PT= 541b5b6b8d1fd2787443277c67fc3cfa02937879f34db65a10dce35174568891 +CT= 741daf7c97042fd7329faa5f02143c6059d3bf6d9f9beb86502cf06d59c123b8 +TEST= 349 +KEY= 6d618690d6a1c9c1af22152e51abe694 +PT= 741daf7c97042fd7329faa5f02143c6059d3bf6d9f9beb86502cf06d59c123b8 +CT= e79b94e8ae415f93cddeb510a9b4a961e84e6ad37392cf7cf798dbf25e8e8366 +TEST= 350 +KEY= 852fec43a53306bd58bacedc0f2565f2 +PT= e79b94e8ae415f93cddeb510a9b4a961e84e6ad37392cf7cf798dbf25e8e8366 +CT= 5c5f6c2d2718fbba5e40fba417c748d6f69e2aad321dd0cd4d845c8c92cb43eb +TEST= 351 +KEY= 73b1c6ee972ed670153e92509dee2619 +PT= 5c5f6c2d2718fbba5e40fba417c748d6f69e2aad321dd0cd4d845c8c92cb43eb +CT= ae10fb3ef98db60614c872f3e7a68f0d5ea4a4316df839fc56e48a3ae9201f9a +TEST= 352 +KEY= 2d1562dffad6ef8c43da186a74ce3983 +PT= ae10fb3ef98db60614c872f3e7a68f0d5ea4a4316df839fc56e48a3ae9201f9a +CT= d9c273fc24e8022898831479ac6055db2f6dd15c127fe506da3ec91731fb021c +TEST= 353 +KEY= 0278b383e8a90a8a99e4d17d45353b9f +PT= d9c273fc24e8022898831479ac6055db2f6dd15c127fe506da3ec91731fb021c +CT= 3c17bf0a5f88b497569b5368e49e5ef88b99b7e337db43d03ca789686eb4b26b +TEST= 354 +KEY= 89e10460df72495aa54358152b8189f4 +PT= 3c17bf0a5f88b497569b5368e49e5ef88b99b7e337db43d03ca789686eb4b26b +CT= d4d4fb8bd2028a1688d80a190cd1021f16c34da0d1353211a00cbf9dda1802e1 +TEST= 355 +KEY= 9f2249c00e477b4b054fe788f1998b15 +PT= d4d4fb8bd2028a1688d80a190cd1021f16c34da0d1353211a00cbf9dda1802e1 +CT= 04a6fed2228e33e483e07a7abb1cd573fb78e85ab7f24098967db89189e25a32 +TEST= 356 +KEY= 645aa19ab9b53bd393325f19787bd127 +PT= 04a6fed2228e33e483e07a7abb1cd573fb78e85ab7f24098967db89189e25a32 +CT= 5f948ff218bc4502a2dc5b1a3475ff60d34b03f25a9876ff2b7e26fdb7466c0b +TEST= 357 +KEY= b711a268e32d4d2cb84c79e4cf3dbd2c +PT= 5f948ff218bc4502a2dc5b1a3475ff60d34b03f25a9876ff2b7e26fdb7466c0b +CT= ef1b39f919a4b6af6add0cf6eab74ce27fb1eca2bbc13cbb804300a98831afce +TEST= 358 +KEY= c8a04eca58ec7197380f794d470c12e2 +PT= ef1b39f919a4b6af6add0cf6eab74ce27fb1eca2bbc13cbb804300a98831afce +CT= 4d06ec18e88752aebe309be004c8f7e2f9fbfc584112981b546df3fc085cfcbf +TEST= 359 +KEY= 315bb29219fee98c6c628ab14f50ee5d +PT= 4d06ec18e88752aebe309be004c8f7e2f9fbfc584112981b546df3fc085cfcbf +CT= 4c6b6b8a874307c849ac64c3c01385b2ca9357adc6ac0212d6eb20a40f9c9126 +TEST= 360 +KEY= fbc8e53fdf52eb9eba89aa1540cc7f7b +PT= 4c6b6b8a874307c849ac64c3c01385b2ca9357adc6ac0212d6eb20a40f9c9126 +CT= 40412afd1e0a44f3f2893e09d6abf3168a4925116f94db71c9f50c94382babbe +TEST= 361 +KEY= 7181c02eb0c630ef737ca68178e7d4c5 +PT= 40412afd1e0a44f3f2893e09d6abf3168a4925116f94db71c9f50c94382babbe +CT= 48f70aa63d0154432c2582b9d11c8ec319c9a46d6b9b25afb750ce1cd26154fb +TEST= 362 +KEY= 68486443db5d1540c42c689daa86803e +PT= 48f70aa63d0154432c2582b9d11c8ec319c9a46d6b9b25afb750ce1cd26154fb +CT= 7f0e4bc4e58dacb2265c5d3b2d494ba41c4772aa6118f68cea4011e4567d72bf +TEST= 363 +KEY= 740f16e9ba45e3cc2e6c7979fcfbf281 +PT= 7f0e4bc4e58dacb2265c5d3b2d494ba41c4772aa6118f68cea4011e4567d72bf +CT= af943c4a38255aa5f7eb752fdb3aa015b06ccd21c317a6a34a64c97d61cc845b +TEST= 364 +KEY= c463dbc87952456f6408b0049d3776da +PT= af943c4a38255aa5f7eb752fdb3aa015b06ccd21c317a6a34a64c97d61cc845b +CT= 31cfa0f69b287181585344f4789d48e157f76cf60edfce25955df8f0409eaa5d +TEST= 365 +KEY= 9394b73e778d8b4af15548f4dda9dc87 +PT= 31cfa0f69b287181585344f4789d48e157f76cf60edfce25955df8f0409eaa5d +CT= 8c7f3fa6ded26086f600af89eca6c2bdce7a2f2b6be97f1134154563c264bd71 +TEST= 366 +KEY= 5dee98151c64f45bc5400d971fcd61f6 +PT= 8c7f3fa6ded26086f600af89eca6c2bdce7a2f2b6be97f1134154563c264bd71 +CT= 37cc406d53a2677161ed31e1ef92fc59c4d189947cde6c61936312214706ab95 +TEST= 367 +KEY= 993f118160ba983a56231fb658cbca63 +PT= 37cc406d53a2677161ed31e1ef92fc59c4d189947cde6c61936312214706ab95 +CT= f80c9180d3b2babdd6ef1e2cd8074a6ce3662ea3eb588d4dc72b209ddd1978b2 +TEST= 368 +KEY= 7a593f228be2157791083f2b85d2b2d1 +PT= f80c9180d3b2babdd6ef1e2cd8074a6ce3662ea3eb588d4dc72b209ddd1978b2 +CT= 8116974cf2eece4c3e4b8a074023c00a4ff06f4f7f41db6bc3417248fe5ccb37 +TEST= 369 +KEY= 35a9506df4a3ce1c52494d637b8e79e6 +PT= 8116974cf2eece4c3e4b8a074023c00a4ff06f4f7f41db6bc3417248fe5ccb37 +CT= 06a4676cccefca40b914386cebd1c5e9fa17a46b86b8de0784b0e78d01667a67 +TEST= 370 +KEY= cfbef406721b101bd6f9aaee7ae80381 +PT= 06a4676cccefca40b914386cebd1c5e9fa17a46b86b8de0784b0e78d01667a67 +CT= 26cf1b1a43de0220fa6b11a572a7cf01095851887278fb36acf0ef434809cbd0 +TEST= 371 +KEY= c6e6a58e0063eb2d7a0945ad32e1c851 +PT= 26cf1b1a43de0220fa6b11a572a7cf01095851887278fb36acf0ef434809cbd0 +CT= 7e9a8f2dd2902515045a54ab1fc89cbfb49af0a4cc7194f06789cd140a8e069b +TEST= 372 +KEY= 727c552acc127fdd1d8088b9386fceca +PT= 7e9a8f2dd2902515045a54ab1fc89cbfb49af0a4cc7194f06789cd140a8e069b +CT= a777b2300731138cf4b8cf97fafa48e093ab9d30b54ebd06e382211714aa95e5 +TEST= 373 +KEY= e1d7c81a795cc2dbfe02a9ae2cc55b2f +PT= a777b2300731138cf4b8cf97fafa48e093ab9d30b54ebd06e382211714aa95e5 +CT= 806c61d99eb098a9fe26affbaceffe6ea042498fdd6a015aa6fe9c9fb37bdd09 +TEST= 374 +KEY= 41958195a436c38158fc35319fbe8626 +PT= 806c61d99eb098a9fe26affbaceffe6ea042498fdd6a015aa6fe9c9fb37bdd09 +CT= 228504931e3ef8a76f14155ebc23d4caaec2dc12823fe080ace6efa02fea1753 +TEST= 375 +KEY= ef575d8726092301f41ada91b0549175 +PT= 228504931e3ef8a76f14155ebc23d4caaec2dc12823fe080ace6efa02fea1753 +CT= b462c43df74797d25733aac5e73fb7f765b708db0697f1537d6b5283792107b8 +TEST= 376 +KEY= 8ae0555c209ed25289718812c97596cd +PT= b462c43df74797d25733aac5e73fb7f765b708db0697f1537d6b5283792107b8 +CT= 41e79b64db4858de67058c8b0803848196a644cf37bc0b828e796b9bde9217de +TEST= 377 +KEY= 1c4611931722d9d00708e38917e78113 +PT= 41e79b64db4858de67058c8b0803848196a644cf37bc0b828e796b9bde9217de +CT= 40e4aed5c729089ed8e00145cecfb91bb67cbcbf2948d0715855bb0052c7dad8 +TEST= 378 +KEY= aa3aad2c3e6a09a15f5d588945205bcb +PT= 40e4aed5c729089ed8e00145cecfb91bb67cbcbf2948d0715855bb0052c7dad8 +CT= 51a3075405531651cab879b4460b975128101755b60b274d1270f1379f284a3e +TEST= 379 +KEY= 822aba7988612eec4d2da9beda0811f5 +PT= 51a3075405531651cab879b4460b975128101755b60b274d1270f1379f284a3e +CT= 38891a221ada8b057bfc6fd8435e77cfcaa5d4cbc570fa9cc1dc71d9d73904e0 +TEST= 380 +KEY= 488f6eb24d11d4708cf1d8670d311515 +PT= 38891a221ada8b057bfc6fd8435e77cfcaa5d4cbc570fa9cc1dc71d9d73904e0 +CT= 7385a647c05b7f6b53f1a5290b39fab8577bab60b9d51fb4d29081800afe5be9 +TEST= 381 +KEY= 1ff4c5d2f4c4cbc45e6159e707cf4efc +PT= 7385a647c05b7f6b53f1a5290b39fab8577bab60b9d51fb4d29081800afe5be9 +CT= e0783ba5bc8c4d0f57834e6d5ee61e00bb62f005418467083a7a186b5b54f11a +TEST= 382 +KEY= a49635d7b540accc641b418c5c9bbfe6 +PT= e0783ba5bc8c4d0f57834e6d5ee61e00bb62f005418467083a7a186b5b54f11a +CT= 8c64645aa1e9a59556a9a76d051c3452840e00d4c7e4c5a251b320294650d09f +TEST= 383 +KEY= 2098350372a4696e35a861a51acb6f79 +PT= 8c64645aa1e9a59556a9a76d051c3452840e00d4c7e4c5a251b320294650d09f +CT= d28413c1049da834c68a80c5478a6d8740170224576ae64161b7eb61a2bb6dc7 +TEST= 384 +KEY= 608f372725ce8f2f541f8ac4b87002be +PT= d28413c1049da834c68a80c5478a6d8740170224576ae64161b7eb61a2bb6dc7 +CT= b9b39f9554c524a90bd6971cd012925def8f48a8bfb6376ddbb68ff11def87a8 +TEST= 385 +KEY= 8f007f8f9a78b8428fa90535a59f8516 +PT= b9b39f9554c524a90bd6971cd012925def8f48a8bfb6376ddbb68ff11def87a8 +CT= 8d1be7c5717eb5b4584fb932e081370c5af8ac1fb17d082b60259dd445f2cc26 +TEST= 386 +KEY= d5f8d3902b05b069ef8c98e1e06d4930 +PT= 8d1be7c5717eb5b4584fb932e081370c5af8ac1fb17d082b60259dd445f2cc26 +CT= 1be83be506afbf98f857c49094a10295ff9b65af7eee4754a3f3ce17096ba3ae +TEST= 387 +KEY= 2a63b63f55ebf73d4c7f56f6e906ea9e +PT= 1be83be506afbf98f857c49094a10295ff9b65af7eee4754a3f3ce17096ba3ae +CT= cd2a0f50cec405e0bf8b93c4182e52f1a0632eca2c6fa38f369df732c74a34bb +TEST= 388 +KEY= 8a0098f5798454b27ae2a1c42e4cde25 +PT= cd2a0f50cec405e0bf8b93c4182e52f1a0632eca2c6fa38f369df732c74a34bb +CT= eaf26c7baebfbfe57704fbd8c664cbfd7b22809fd470f75835a85284bfce4eda +TEST= 389 +KEY= f122186aadf4a3ea4f4af340918290ff +PT= eaf26c7baebfbfe57704fbd8c664cbfd7b22809fd470f75835a85284bfce4eda +CT= dde830355282756abb5ad8816aac1d4a2ae40a57d554a76137ea9661a1c116c8 +TEST= 390 +KEY= dbc6123d78a0048b78a0652130438637 +PT= dde830355282756abb5ad8816aac1d4a2ae40a57d554a76137ea9661a1c116c8 +CT= e19b42a412a756702bf7e5d80e8a4ff0669dcbb1e56681e3255bfacdf21d03ed +TEST= 391 +KEY= bd5bd98c9dc685685dfb9fecc25e85da +PT= e19b42a412a756702bf7e5d80e8a4ff0669dcbb1e56681e3255bfacdf21d03ed +CT= 0e49540a9b0c1e542894d02dcfbfa1306b90c9f072b1dbffb8682166b4659192 +TEST= 392 +KEY= d6cb107cef775e97e593be8a763b1448 +PT= 0e49540a9b0c1e542894d02dcfbfa1306b90c9f072b1dbffb8682166b4659192 +CT= 9bf350874d5aab3c2dd969b2e7d8b6f8ab64fa5372c622548ff57adff107ca03 +TEST= 393 +KEY= 7dafea2f9db17cc36a66c455873cde4b +PT= 9bf350874d5aab3c2dd969b2e7d8b6f8ab64fa5372c622548ff57adff107ca03 +CT= a58de3b31fce78948db26052e57bf59e81f98a74d740bd362ba558b25617d8f3 +TEST= 394 +KEY= fc56605b4af1c1f541c39ce7d12b06b8 +PT= a58de3b31fce78948db26052e57bf59e81f98a74d740bd362ba558b25617d8f3 +CT= 736988ce01d5ffe9f9cbe7273c6c2079cb9d4a9060ad0856fcfca5d3b22ffa27 +TEST= 395 +KEY= 37cb2acb2a5cc9a3bd3f39346304fc9f +PT= 736988ce01d5ffe9f9cbe7273c6c2079cb9d4a9060ad0856fcfca5d3b22ffa27 +CT= c01c12e697c690ec53dc6bdfbd785c45ab6bd88949baab3d3eea53baf6cf76b7 +TEST= 396 +KEY= 9ca0f24263e6629e83d56a8e95cb8a28 +PT= c01c12e697c690ec53dc6bdfbd785c45ab6bd88949baab3d3eea53baf6cf76b7 +CT= 31fbd536c1d0de4d892b5f32a83ef6c228076383a5e62d9af3f0d62e40d1424f +TEST= 397 +KEY= b4a791c1c6004f047025bca0d51ac867 +PT= 31fbd536c1d0de4d892b5f32a83ef6c228076383a5e62d9af3f0d62e40d1424f +CT= 961925dae7e5186e0cdf20e1690e00bce5ecbfb0d98f12c6fb14e0c2c571a250 +TEST= 398 +KEY= 514b2e711f8f5dc28b315c62106b6a37 +PT= 961925dae7e5186e0cdf20e1690e00bce5ecbfb0d98f12c6fb14e0c2c571a250 +CT= 34581f5fb3bf466fb12645447c759d9814fbf692b49443e77484604042ad8642 +TEST= 399 +KEY= 45b0d8e3ab1b1e25ffb53c2252c6ec75 +PT= 34581f5fb3bf466fb12645447c759d9814fbf692b49443e77484604042ad8642 +CT= 6179322178de6b7b6ed070d5c3ed7484fcb8fad75976a8690248094be1b5fecf diff --git a/flint/test/testvals/ecbme86.txt b/flint/test/testvals/ecbme86.txt new file mode 100644 index 0000000..7958436 --- /dev/null +++ b/flint/test/testvals/ecbme86.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 8c1a3e0744b400e4d5626cfd431f3d273912a233d01112cc83ce3c9d1e2ca150 +TEST= 1 +KEY= d5626cfd431f3d273912a233d01112cc83ce3c9d1e2ca150 +PT= 8c1a3e0744b400e4d5626cfd431f3d273912a233d01112cc83ce3c9d1e2ca150 +CT= 96410defebadb87ed7d178825144122b6459c8314420d77a17712661ff677746 +TEST= 2 +KEY= 02b3147f125b2f0c5d4b6a029431c5b694bf1afce14bd616 +PT= 96410defebadb87ed7d178825144122b6459c8314420d77a17712661ff677746 +CT= 427d1e60243de9af4b780788bb7275852ca178f614c86509d550d72813238c0d +TEST= 3 +KEY= 49cb13f7a9295a8971ea12f480f9a0bf41efcdd4f2685a1b +PT= 427d1e60243de9af4b780788bb7275852ca178f614c86509d550d72813238c0d +CT= df736a18713acde0ae0722e300f3fd4d24a1eefde92a468a6c4693f3bd5d8c92 +TEST= 4 +KEY= e7cc3114a9daa7c4554bfc0969d3e6352da95e274f35d689 +PT= df736a18713acde0ae0722e300f3fd4d24a1eefde92a468a6c4693f3bd5d8c92 +CT= 06e37afe10f74044319be4385742291c947bb4ffb46728751e03d8c77d0b6ce7 +TEST= 5 +KEY= d657d52cfe988ed8c13048f6ddb4ce4033aa86e0323eba6e +PT= 06e37afe10f74044319be4385742291c947bb4ffb46728751e03d8c77d0b6ce7 +CT= c47c18d09f779c91b8f759bd4ac04ea43eb3e0139b8f786d591549159b10e380 +TEST= 6 +KEY= 6ea08c91b458c07cff83a8e5463bb62d6abfcff5a92e59ee +PT= c47c18d09f779c91b8f759bd4ac04ea43eb3e0139b8f786d591549159b10e380 +CT= e81aafabf5aa414d462f2adece967c87c082cdf6b3e8a3ca2049ffbd34a238b4 +TEST= 7 +KEY= 288fa64f7acebcfb3f016513f5d315e74af630489d8c615a +PT= e81aafabf5aa414d462f2adece967c87c082cdf6b3e8a3ca2049ffbd34a238b4 +CT= ed1eba2416633e0d53787c65b76b8b440e06d8f1f40b2451866e02ab1aa472b4 +TEST= 8 +KEY= 7bf7da2acda537bf3107bde201d831b6cc9832e3872813ee +PT= ed1eba2416633e0d53787c65b76b8b440e06d8f1f40b2451866e02ab1aa472b4 +CT= 3c572640fc0807f382cc521334d00acaa3c940afe091e6861b79e5917eb8d7a0 +TEST= 9 +KEY= f93b8839f9753d7592cefd4de149d730d7e1d772f990c44e +PT= 3c572640fc0807f382cc521334d00acaa3c940afe091e6861b79e5917eb8d7a0 +CT= c406d9cf87acb89fa6e33baae2734687905efc1b56c8ae6f41f28c18a2383be6 +TEST= 10 +KEY= 5fd8b3931b067bf202900156b781795f96135b6a5ba8ffa8 +PT= c406d9cf87acb89fa6e33baae2734687905efc1b56c8ae6f41f28c18a2383be6 +CT= ecf164d7b63571127765a56343e835cbcd64aef7541451abef1f5075d9c1fbd3 +TEST= 11 +KEY= 28bd16f058ee4e39cff4afa1e39528f4790c0b1f8269047b +PT= ecf164d7b63571127765a56343e835cbcd64aef7541451abef1f5075d9c1fbd3 +CT= af64079d9b78512d07ecd140ede40564a6e8d95a20012c8417be9ed3e5c4f7c2 +TEST= 12 +KEY= 2f51c7b0b50a4b5d691c76fbc39404706eb295cc67adf3b9 +PT= af64079d9b78512d07ecd140ede40564a6e8d95a20012c8417be9ed3e5c4f7c2 +CT= 2d1b5cb7bcb8ccf74372afaa23ff78026f0c694d22c476a6989c3e2102aac6bf +TEST= 13 +KEY= 6c23681a96f5335f06101fb6e15072d6f62eabed65073506 +PT= 2d1b5cb7bcb8ccf74372afaa23ff78026f0c694d22c476a6989c3e2102aac6bf +CT= 1f641f514cec88e89818b481b48c7775a3bfe6c403eb9932d280e50ef8266ea0 +TEST= 14 +KEY= f43bdc9b2279442aa5aff972e2bbebe424ae4ee39d215ba6 +PT= 1f641f514cec88e89818b481b48c7775a3bfe6c403eb9932d280e50ef8266ea0 +CT= 7bd212ea216dfa54f3061da93ab034a63e6eb3910911b491e6a8ceee12b5d86a +TEST= 15 +KEY= 073dc13218c9708c9bc14ae3ebaa5f75c206800d8f9483cc +PT= 7bd212ea216dfa54f3061da93ab034a63e6eb3910911b491e6a8ceee12b5d86a +CT= 293fa7fec8ae7d5e4ab7d832cbb66d641fd56cd2c8f0b99a99d7a12c08603aa1 +TEST= 16 +KEY= 4d8a1900d37f1de884142631235ae6ef5bd1212187f4b96d +PT= 293fa7fec8ae7d5e4ab7d832cbb66d641fd56cd2c8f0b99a99d7a12c08603aa1 +CT= 6d4225bb64ded060f5833e42ec93ea6cf34c7c888a4fcd4efa58bc248bd367b4 +TEST= 17 +KEY= b80927423fecf78477585ab9a9152ba1a1899d050c27ded9 +PT= 6d4225bb64ded060f5833e42ec93ea6cf34c7c888a4fcd4efa58bc248bd367b4 +CT= 8114034a55d041fcfaaddbf91d02500c15e6694e3af5763fa8b69f4951dd9e12 +TEST= 18 +KEY= 42a4fcbb22eea78862be33f793e05d9e093f024c5dfa40cb +PT= 8114034a55d041fcfaaddbf91d02500c15e6694e3af5763fa8b69f4951dd9e12 +CT= 0b9fdfed77584dc26b2925632d3993d15937a6f372a312074ae5e42e80a41b40 +TEST= 19 +KEY= 298dd9d80fd734593b899504e1434f9943dae662dd5e5b8b +PT= 0b9fdfed77584dc26b2925632d3993d15937a6f372a312074ae5e42e80a41b40 +CT= b770d9da8a931774583f746313a6827c2229e83450f77b76339f672b8d515aea +TEST= 20 +KEY= 71b2adbb1c71b62519a07d30b1b434ef70458149500f0161 +PT= b770d9da8a931774583f746313a6827c2229e83450f77b76339f672b8d515aea +CT= a72a828b1dae16ac8cc07994a8c607b9c506abba6052a9474fd82850c382ff37 +TEST= 21 +KEY= fd72d42fb4b7b19cdca6d68ad1e69da83f9da919938dfe56 +PT= a72a828b1dae16ac8cc07994a8c607b9c506abba6052a9474fd82850c382ff37 +CT= 73f926522daf2030de339da7c501160406371ca69d07f0d762d22797e64b3ebf +TEST= 22 +KEY= 2341498871b6a798da91ca2c4ce16d7f5d4f8e8e75c6c0e9 +PT= 73f926522daf2030de339da7c501160406371ca69d07f0d762d22797e64b3ebf +CT= e03cf98756d1360524ae5861c5456bdd923a7b26e9b947910dab3bcf5b975624 +TEST= 23 +KEY= 07ef11e9b4f3cc4548abb10aa5582aee50e4b5412e5196cd +PT= e03cf98756d1360524ae5861c5456bdd923a7b26e9b947910dab3bcf5b975624 +CT= 303c4e7283db02cf6b7f19e7e655f64191e2aa87e23625be302decbb0ce87a54 +TEST= 24 +KEY= 6c90080e52a63a04d9491b8d476e0f5060c959fa22b9ec99 +PT= 303c4e7283db02cf6b7f19e7e655f64191e2aa87e23625be302decbb0ce87a54 +CT= 96d2dd9804bd083b46c4de188a0dbefcfafd810e98f5baded565ef3b27d1b513 +TEST= 25 +KEY= 2a54d616d8ab84f823b49a83df9bb58eb5acb6c10568598a +PT= 96d2dd9804bd083b46c4de188a0dbefcfafd810e98f5baded565ef3b27d1b513 +CT= 061b91e3bdf2e0722ebd9e55e03280c0ef241ac418269572235610e2386731c8 +TEST= 26 +KEY= 04e9484338990438cc908047c7bd20fc96faa6233d0f6842 +PT= 061b91e3bdf2e0722ebd9e55e03280c0ef241ac418269572235610e2386731c8 +CT= 070571ad6170216fab001805822f875b3fc5b61c1053358bc1d491910a0f75e8 +TEST= 27 +KEY= afe95046bab68363f355365bd7ee1577572e37b237001daa +PT= 070571ad6170216fab001805822f875b3fc5b61c1053358bc1d491910a0f75e8 +CT= d59486563101f48ec44c66f6913fa68033302e0b23037234ae296824014143c8 +TEST= 28 +KEY= 6ba536b02b8925e3c0651850f4ed6743f9075f9636415e62 +PT= d59486563101f48ec44c66f6913fa68033302e0b23037234ae296824014143c8 +CT= 2c4b9d3735ff5592963525ef963a7e2bd68cc69a56b0df010a3edb7230cd2f78 +TEST= 29 +KEY= fd90135fbdb35bc816e9decaa25db842f33984e4068c711a +PT= 2c4b9d3735ff5592963525ef963a7e2bd68cc69a56b0df010a3edb7230cd2f78 +CT= 9f5e50b784e4954d381b3be7850425dd0fdf2f26e46271853e0929dccac8e815 +TEST= 30 +KEY= c58b28b838b77e151936f1ec463fc9c7cd30ad38cc44990f +PT= 9f5e50b784e4954d381b3be7850425dd0fdf2f26e46271853e0929dccac8e815 +CT= 6f6bccb6573d5003540a1ff084a0082a832c5c7f5f6db19b71dfaaa068fadc58 +TEST= 31 +KEY= 91813748bc17763f9a1aad931952785cbcef0798a4be4557 +PT= 6f6bccb6573d5003540a1ff084a0082a832c5c7f5f6db19b71dfaaa068fadc58 +CT= 67ea0619e16a4d583fe20e61061f0051273b608f6bad9359033eba8450660414 +TEST= 32 +KEY= ae633929ba08766ebd21cd1c72ffeb05bfd1bd1cf4d84143 +PT= 67ea0619e16a4d583fe20e61061f0051273b608f6bad9359033eba8450660414 +CT= 9d77d318fb92ee5ac900ae2896ef9c0b5f5e5a92159e7dc7fd8d6661204ec0f7 +TEST= 33 +KEY= 676397012ce7ea65e27f978e676196c2425cdb7dd49681b4 +PT= 9d77d318fb92ee5ac900ae2896ef9c0b5f5e5a92159e7dc7fd8d6661204ec0f7 +CT= bb1f7f1adbe63a943922e890dc0e4abe7597e25b0408f5a04e2b0a390b00a5fc +TEST= 34 +KEY= 5e417f91f0e9a0db97e875d5636963620c77d144df962448 +PT= bb1f7f1adbe63a943922e890dc0e4abe7597e25b0408f5a04e2b0a390b00a5fc +CT= df575d3238c12640f1b7c2072f23e87e4d30c9cda79c6b877c0f4a0da79ca7d2 +TEST= 35 +KEY= aff6bd96dfca48a5dad8bc18c4f508e570789b49780a839a +PT= df575d3238c12640f1b7c2072f23e87e4d30c9cda79c6b877c0f4a0da79ca7d2 +CT= 5451417fbfe515f5cfd97a3d340a59bd7739a6171e1e4288fa7bf903a094269e +TEST= 36 +KEY= 602fc7abebc01118ade11a0fdaeb4a6d8a03624ad89ea504 +PT= 5451417fbfe515f5cfd97a3d340a59bd7739a6171e1e4288fa7bf903a094269e +CT= 3bc9b5d6ecd8a3bd32b027eb4c17a4bce0945334770fc022d69cbc93b36a9984 +TEST= 37 +KEY= 529fe040a7d7b5a44d75493bade48a4f5c9fded96bf43c80 +PT= 3bc9b5d6ecd8a3bd32b027eb4c17a4bce0945334770fc022d69cbc93b36a9984 +CT= dfc0af6b33a82b7afd3b456c415505c870f06ca5d2aa9b0716f50eab967b14cf +TEST= 38 +KEY= afa4a52ce682b06c3d85259e7f4e11484a6ad072fd8f284f +PT= dfc0af6b33a82b7afd3b456c415505c870f06ca5d2aa9b0716f50eab967b14cf +CT= 097a40bc8d1be1a18832c2951705b6aadfe6d8db211db979ceff64fd45a2c1ab +TEST= 39 +KEY= 279667b9f18706c6e263fd455e53a8318495b48fb82de9e4 +PT= 097a40bc8d1be1a18832c2951705b6aadfe6d8db211db979ceff64fd45a2c1ab +CT= bd492e8ab4161a0a35a515421887654b9505f10730058d0ba458fa34781a850b +TEST= 40 +KEY= 123372fbe900638d77660c426e56253a20cd4ebbc0376cef +PT= bd492e8ab4161a0a35a515421887654b9505f10730058d0ba458fa34781a850b +CT= a93851aa88f789833b715526bc3e19e176c69f45c27bc5ee3f15536a2d6b7e74 +TEST= 41 +KEY= 294227dd553e7a6c01a09307ac2de0d41fd81dd1ed5c129b +PT= a93851aa88f789833b715526bc3e19e176c69f45c27bc5ee3f15536a2d6b7e74 +CT= 2da094536b6ebb62b7e4ed14fe7af0c99f96ab3673de64b72d9a5e42515e4fa0 +TEST= 42 +KEY= 9ea6cac9ab448aa59e363831dff3846332424393bc025d3b +PT= 2da094536b6ebb62b7e4ed14fe7af0c99f96ab3673de64b72d9a5e42515e4fa0 +CT= 57a13f5bb5bab83f3662a117387338672afd319c135bed15f24dce72ba4e4f0e +TEST= 43 +KEY= a8c46bde9337b2c2b4cb09adcca86976c00f8de1064c1235 +PT= 57a13f5bb5bab83f3662a117387338672afd319c135bed15f24dce72ba4e4f0e +CT= 6e9adbe65436ab2f4529766e9eb083e1607b62ffd9a996cac278fd1b4baa487c +TEST= 44 +KEY= eded1db00d873123d4b06b521501ffbc027770fa4de65a49 +PT= 6e9adbe65436ab2f4529766e9eb083e1607b62ffd9a996cac278fd1b4baa487c +CT= 6adb0e1b6f879ce41ea0302138f636d7518ca7f0954c9f4d5453a2ca4b7dd27f +TEST= 45 +KEY= f34d2d91357107f4853ccca2804d60f15624d230069b8836 +PT= 6adb0e1b6f879ce41ea0302138f636d7518ca7f0954c9f4d5453a2ca4b7dd27f +CT= 878ebed95549e52ec78744d6061a51a0d04ad0a9c8dc90e4beaa2896403eec62 +TEST= 46 +KEY= 34ca6947336b565455761c0b4891f015e88efaa646a56454 +PT= 878ebed95549e52ec78744d6061a51a0d04ad0a9c8dc90e4beaa2896403eec62 +CT= 18968ceca53a2c32fc1b2b39e901c07c39b194809411c1f47c4758a22c1b735e +TEST= 47 +KEY= c8d1427eda6a96286cc7888bdc8031e194c9a2046abe170a +PT= 18968ceca53a2c32fc1b2b39e901c07c39b194809411c1f47c4758a22c1b735e +CT= 3cbedf58b8593335522c63d133ed2e0e008e94a822a236fdf319c357b6643821 +TEST= 48 +KEY= 9afd21afe987b8266c491c23fe22071c67d06153dcda2f2b +PT= 3cbedf58b8593335522c63d133ed2e0e008e94a822a236fdf319c357b6643821 +CT= 8cc281e8e09ef2a6d1be1b6e4ff445711e18dfcf316b953b365944307f903b0a +TEST= 49 +KEY= 4b433ac1a673fd577251c3eccf49922751892563a34a1421 +PT= 8cc281e8e09ef2a6d1be1b6e4ff445711e18dfcf316b953b365944307f903b0a +CT= 93c5ce8602399624be12c9e389a764efdbeffcadaadfe06aee5d4f060f1a6bcc +TEST= 50 +KEY= f551f3222fd499b8a9be3f416596724dbfd46a65ac507fed +PT= 93c5ce8602399624be12c9e389a764efdbeffcadaadfe06aee5d4f060f1a6bcc +CT= 50f9d0ae8e33cc48813cd25a301cd7cc4868cc9b7eac974d99212c80b3b7d2f6 +TEST= 51 +KEY= 746d21781fc84e74e1d6f3da1b3ae50026f546e51fe7ad1b +PT= 50f9d0ae8e33cc48813cd25a301cd7cc4868cc9b7eac974d99212c80b3b7d2f6 +CT= b2235b4430650ba8ab0a5f213fd1a03ead41e9207a8d358380cd3edf75ab0b45 +TEST= 52 +KEY= df677e592019ee4a4c971afa61b7d083a638783a6a4ca65e +PT= b2235b4430650ba8ab0a5f213fd1a03ead41e9207a8d358380cd3edf75ab0b45 +CT= 1b06cad25cfac0f30177922b0ac4d5f971bc9cbe02ba8847da8288806ca93b44 +TEST= 53 +KEY= de10ec722add3bb33d2b8644630d58c47cbaf0ba06e59d1a +PT= 1b06cad25cfac0f30177922b0ac4d5f971bc9cbe02ba8847da8288806ca93b44 +CT= a9013add6260022a4789d2dcdd66d3e18158adf0db7eec7fd59a6c9e8345135f +TEST= 54 +KEY= 99993eaef7bbe852bc732bb4b873b4bba9209c2485a08e45 +PT= a9013add6260022a4789d2dcdd66d3e18158adf0db7eec7fd59a6c9e8345135f +CT= 4ffa556612ae18696c7c75047a9cc75fb6eb88828dcc325f511a7a38b32346d6 +TEST= 55 +KEY= f5e54baa8d272f0d0a98a33635bf86e4f83ae61c3683c893 +PT= 4ffa556612ae18696c7c75047a9cc75fb6eb88828dcc325f511a7a38b32346d6 +CT= 9608092f868bbc333aa82269bde4b7fd978a39c392041225a97d597f3a14c523 +TEST= 56 +KEY= cf4d69c330c398f09d129af5a7bb94c15147bf630c970db0 +PT= 9608092f868bbc333aa82269bde4b7fd978a39c392041225a97d597f3a14c523 +CT= a55393086d8a2a8a699f8205e8d4e1f3315b1b8c333894e4faab66137e961b3a +TEST= 57 +KEY= a6d2ebc6d8177903ac49817994830025abecd9707201168a +PT= a55393086d8a2a8a699f8205e8d4e1f3315b1b8c333894e4faab66137e961b3a +CT= 9737df5e2b91f440ac8574623786d9d59a603e1a3a3ad8b16d1e41ddc3c3f9e9 +TEST= 58 +KEY= 0a579fa4ef91a0d63629bf63aeb9d894c6f298adb1c2ef63 +PT= 9737df5e2b91f440ac8574623786d9d59a603e1a3a3ad8b16d1e41ddc3c3f9e9 +CT= b16b18668fc7cbbcce7e07074a4b272dfa1c55d99ef6f5d9b86b7f7ec04be2ee +TEST= 59 +KEY= c42998a3a5da87fbcc35eaba304f2d4d7e99e7d371890d8d +PT= b16b18668fc7cbbcce7e07074a4b272dfa1c55d99ef6f5d9b86b7f7ec04be2ee +CT= e7bdbc8deb8ac5d6432f140edf73773fb724eda2c7dac707931c514de93205d1 +TEST= 60 +KEY= 87068cad7aa9f0c47b110718f795ea4aed85b69e98bb085c +PT= e7bdbc8deb8ac5d6432f140edf73773fb724eda2c7dac707931c514de93205d1 +CT= c7531b4023dc87e55df8e68b7a03023b5588be458955aef18618374ed2af9f3e +TEST= 61 +KEY= dafe6a2600aaf2ff2e99b95d7ec044bb6b9d81d04a149762 +PT= c7531b4023dc87e55df8e68b7a03023b5588be458955aef18618374ed2af9f3e +CT= a4a427b64e5d6ce625ab6a805ec81455343f15dfead52b647d0cd45e36a8051e +TEST= 62 +KEY= ff5500a65e62e6aa1aa6ac8294156fdf1691558e7cbc927c +PT= a4a427b64e5d6ce625ab6a805ec81455343f15dfead52b647d0cd45e36a8051e +CT= ffe550454d6f080be5c93a88682dafb8e841bca6bf386acc3c4522f3870182a1 +TEST= 63 +KEY= 1a9c3a2e364f4912f2e710242b2d05132ad4777dfbbd10dd +PT= ffe550454d6f080be5c93a88682dafb8e841bca6bf386acc3c4522f3870182a1 +CT= 7048f90709dff9b594f67c23c65ec14258ff4d31d8819d60f8126ce2b03f2fd4 +TEST= 64 +KEY= 8e6a460df0118850aa185d15f3ac9873d2c61b9f4b823f09 +PT= 7048f90709dff9b594f67c23c65ec14258ff4d31d8819d60f8126ce2b03f2fd4 +CT= 2658a5cad6579e30ee59a9e24d4ff236e0e1f2ea1234a389cac4ad0a2d10e068 +TEST= 65 +KEY= 6033efefbd5e7a664af9afffe1983bfa1802b6956692df61 +PT= 2658a5cad6579e30ee59a9e24d4ff236e0e1f2ea1234a389cac4ad0a2d10e068 +CT= 3e624893c53d3cd9ca78f3a40b6290d9d4c6394f0e5a686fc160de6e85746c9a +TEST= 66 +KEY= aa4b1c4bb63ceabf9e3f96b0efc25395d96268fbe3e6b3fb +PT= 3e624893c53d3cd9ca78f3a40b6290d9d4c6394f0e5a686fc160de6e85746c9a +CT= ebf86f252bfa03a7331315062b7270d696440b1c8798034e29b6c11095dce9d6 +TEST= 67 +KEY= 9958094d9d4e9a69087b9dac685a50dbf0d4a9eb763a5a2d +PT= ebf86f252bfa03a7331315062b7270d696440b1c8798034e29b6c11095dce9d6 +CT= 2d2da3b165faece75bf1672ddc71b80a1d3067fb02b8d37f035804dd52ee5556 +TEST= 68 +KEY= c2a96e60413f2263154bfa576ae283a4f38cad3624d40f7b +PT= 2d2da3b165faece75bf1672ddc71b80a1d3067fb02b8d37f035804dd52ee5556 +CT= ef4ec1ce1c9a1d9abd7defb31049ac873036c014021ff8edaf940a55cf181f56 +TEST= 69 +KEY= 7fd481d351768ee4257d3a4368fd7b495c18a763ebcc102d +PT= ef4ec1ce1c9a1d9abd7defb31049ac873036c014021ff8edaf940a55cf181f56 +CT= 535a9e02fc81e87a41f3aeec31997bd9e3fb39bfb933bb45da45682925fb0957 +TEST= 70 +KEY= 3e272f3f60eff53dc68603fcd1cec00c865dcf4ace37197a +PT= 535a9e02fc81e87a41f3aeec31997bd9e3fb39bfb933bb45da45682925fb0957 +CT= 0a89da9c1e2ecf0b806330b135f3665b989e7bb92e3e070e503c0f213e44bfc7 +TEST= 71 +KEY= be441f8e551c93665e187845fff0c702d661c06bf073a6bd +PT= 0a89da9c1e2ecf0b806330b135f3665b989e7bb92e3e070e503c0f213e44bfc7 +CT= 25195b5bc587e4f04bd46083e4e199664974140a6f1608e8fa6d16a54b49cda8 +TEST= 72 +KEY= f5907f0db1fd0a00176c6c4f90e6cfea2c0cd6cebb3a6b15 +PT= 25195b5bc587e4f04bd46083e4e199664974140a6f1608e8fa6d16a54b49cda8 +CT= 5bc091effa2ca231d29e4310002f4c0b62f891d5f543a833da4527dd0d2e4755 +TEST= 73 +KEY= 270e3c1db1d2460b7594fd9a65a567d9f649f113b6142c40 +PT= 5bc091effa2ca231d29e4310002f4c0b62f891d5f543a833da4527dd0d2e4755 +CT= d955c1b47cdd87543092245d6ae69e456bf42d17e14b1068898458ca2fe7794b +TEST= 74 +KEY= 179c1840db34d84e1e60d08d84ee77b17fcda9d999f3550b +PT= d955c1b47cdd87543092245d6ae69e456bf42d17e14b1068898458ca2fe7794b +CT= 85d30cae91be8d5a69244b19396beb1a800b4eb87edccf491a9524c80f11ed06 +TEST= 75 +KEY= 7eb85359e25f33549e6b9e35fa32b8f865588d1196e2b80d +PT= 85d30cae91be8d5a69244b19396beb1a800b4eb87edccf491a9524c80f11ed06 +CT= 3dbb8a8ba39b4556d780b6041622203bc09f07b1a7ac54212fe298be31c9499c +TEST= 76 +KEY= a938e55df47d136f5ef499845d9eecd94aba15afa72bf191 +PT= 3dbb8a8ba39b4556d780b6041622203bc09f07b1a7ac54212fe298be31c9499c +CT= d701940338d32a237b475464a55f7f64e78a277fa0cdeeb375496730f3c64b44 +TEST= 77 +KEY= d27fb13951226c0bb97ebefbfd53026a3ff3729f54edbad5 +PT= d701940338d32a237b475464a55f7f64e78a277fa0cdeeb375496730f3c64b44 +CT= 38460a2954c20907d98eead2c1baf0e443ff6f603433ca41eea7bb2b713c9e3a +TEST= 78 +KEY= 0bf15beb90989ceffa81d19bc960c82bd154c9b425d124ef +PT= 38460a2954c20907d98eead2c1baf0e443ff6f603433ca41eea7bb2b713c9e3a +CT= 7eb18ca6614b7f4fb18f9608697c62e1873e9c191819aa1c9cef8ef6a864bf1b +TEST= 79 +KEY= ba7ecde3f9e4fe0e7dbf4d82d17962374dbb47428db59bf4 +PT= 7eb18ca6614b7f4fb18f9608697c62e1873e9c191819aa1c9cef8ef6a864bf1b +CT= 63155daec8039d111e07924421693c164ed43456d5a84efafacd10abeae810f4 +TEST= 80 +KEY= a4795fa7d88dc218336b79d404d12ccdb77657e9675d8b00 +PT= 63155daec8039d111e07924421693c164ed43456d5a84efafacd10abeae810f4 +CT= a9067e9394e73a65cb73cce1e25890b7ee9d67a51b8d2718a04d0c85941218ba +TEST= 81 +KEY= 6f0a93463ad552afddf61e711f5c0bd5173b5b6cf34f93ba +PT= a9067e9394e73a65cb73cce1e25890b7ee9d67a51b8d2718a04d0c85941218ba +CT= 56596927afa0f9b4296a0b01f36350cf6249ee073b6c91ada336178b3eeb72cf +TEST= 82 +KEY= 46609847c9b60260bfbff07624309a78b40d4ce7cda4e175 +PT= 56596927afa0f9b4296a0b01f36350cf6249ee073b6c91ada336178b3eeb72cf +CT= 183db76d9652a3516a41382783e961ff742ae2888c174e7ec692b3f90d77f8ac +TEST= 83 +KEY= 2c21a0604a5f639fcb9512fea827d406729fff1ec0d319d9 +PT= 183db76d9652a3516a41382783e961ff742ae2888c174e7ec692b3f90d77f8ac +CT= 68986d60b9039eac5667f1ec38bcac9e8e110b3a6302f14a475b057c85b79d06 +TEST= 84 +KEY= 7a46518c72e3cf01458419c4cb25254c35c4fa62456484df +PT= 68986d60b9039eac5667f1ec38bcac9e8e110b3a6302f14a475b057c85b79d06 +CT= 8ff18538dd5a820c76bc8ff9ab6cff1a87bedb2cb40346e32f889ef1beccb966 +TEST= 85 +KEY= 0cfade75d98f301bc23ac2e87f2663af1a4c6493fba83db9 +PT= 8ff18538dd5a820c76bc8ff9ab6cff1a87bedb2cb40346e32f889ef1beccb966 +CT= 58fc105b1a6a8971444385b69b92673a76919dd7311552d585c2e7f85a850fee +TEST= 86 +KEY= 48b95bc3421d5721b4ab5f3f4e33317a9f8e836ba12d3257 +PT= 58fc105b1a6a8971444385b69b92673a76919dd7311552d585c2e7f85a850fee +CT= 2efdbf78e4449db433c34abe0eac580da494d65e2a7d3ae7c414f6547e57e8c4 +TEST= 87 +KEY= 7b7a117d4cb10f2c103f8961644e0b9d5b9a753fdf7ada93 +PT= 2efdbf78e4449db433c34abe0eac580da494d65e2a7d3ae7c414f6547e57e8c4 +CT= d19fa0b64d4742ba5f5afe0cef3f2b3712edaea82a3ee543b3dd23135a51e38b +TEST= 88 +KEY= 2420ef71a38e241b02d227c94e70eedee847562c852b3918 +PT= d19fa0b64d4742ba5f5afe0cef3f2b3712edaea82a3ee543b3dd23135a51e38b +CT= 1308eeca5e2be221cb7c249d8ce13bbee5c4565aaf3f7363edad942aa07075e3 +TEST= 89 +KEY= ef5ccbec2f6f1fa5e7167193e14f9dbd05eac206255b4cfb +PT= 1308eeca5e2be221cb7c249d8ce13bbee5c4565aaf3f7363edad942aa07075e3 +CT= b3e5ea7dee4d6a2d3dd05b62ff7c374578e70ad2434f1d4447e524a4014f0fd3 +TEST= 90 +KEY= d28c908ed01328e09ff17b41a20080f9420fe6a224144328 +PT= b3e5ea7dee4d6a2d3dd05b62ff7c374578e70ad2434f1d4447e524a4014f0fd3 +CT= d57493ec179c7b2ab6220ca249e800d4ce992d54120fec1999102d97e1f0d720 +TEST= 91 +KEY= 64ae9c2c99fb283451685615b00f6ce0db1fcb35c5e49408 +PT= d57493ec179c7b2ab6220ca249e800d4ce992d54120fec1999102d97e1f0d720 +CT= 493f1ed5b60676b043d3cae28aa18f1a63953c86ccc00e2ba45930b12abfabb5 +TEST= 92 +KEY= 277d56ce135aa72e32fd6a937ccf62cb7f46fb84ef5b3fbd +PT= 493f1ed5b60676b043d3cae28aa18f1a63953c86ccc00e2ba45930b12abfabb5 +CT= 8da597a41525b730ef729cc6fcaa7477563f37a47d3c102c33120c766949ef6c +TEST= 93 +KEY= c80fca08eff0d35964c25d3701f372e74c54f7f28612d0d1 +PT= 8da597a41525b730ef729cc6fcaa7477563f37a47d3c102c33120c766949ef6c +CT= 25ca73ee2007dd937e5a7699d5b98cd5151cf5f1cacfc90d99f9310da823f40d +TEST= 94 +KEY= b655bc913a495f8c71dea8c6cb3cbbead5adc6ff2e3124dc +PT= 25ca73ee2007dd937e5a7699d5b98cd5151cf5f1cacfc90d99f9310da823f40d +CT= a5b7d73c343491141d0bb3614ad89f51628b8239f694c7edbe11dc08902e9eef +TEST= 95 +KEY= ab5e0ff07091c0dd13552aff3da87c076bbc1af7be1fba33 +PT= a5b7d73c343491141d0bb3614ad89f51628b8239f694c7edbe11dc08902e9eef +CT= 842b89e5faa3d41188f791c7a27dace2c42be4f23ede355f24feb3525b862616 +TEST= 96 +KEY= 23a99e37d2ec6c3fd77ece0d037649584f42a9a5e5999c25 +PT= 842b89e5faa3d41188f791c7a27dace2c42be4f23ede355f24feb3525b862616 +CT= a6ca77914879d97e20fdb0ccede1f31fdaa27efacf8ebcba5d2452eed5def42f +TEST= 97 +KEY= 03542efb3f0d9f200ddcb0f7ccf8f5e21266fb4b3047680a +PT= a6ca77914879d97e20fdb0ccede1f31fdaa27efacf8ebcba5d2452eed5def42f +CT= c0fd8ce0bfe735dc26d5b89065a5ea8720393c171c369db459cb5141e3d4feef +TEST= 98 +KEY= 2581966b5aa875a72de58ce0d0ce68564badaa0ad39396e5 +PT= c0fd8ce0bfe735dc26d5b89065a5ea8720393c171c369db459cb5141e3d4feef +CT= b6053bdcc983d9ae5ac2a7f365ad91c5a73e86cc5077d621cd4a30b6c93bd5c6 +TEST= 99 +KEY= 7f4331983f05e4628adb0a2c80b9be7786e79abc1aa84323 +PT= b6053bdcc983d9ae5ac2a7f365ad91c5a73e86cc5077d621cd4a30b6c93bd5c6 +CT= c82e1c3c158754ac4c79193708a0887b676275557d5da2b0c228f62cc7fd7b4a +TEST= 100 +KEY= 333a28af37a56c19edb97f79fde41cc744cf6c90dd553869 +PT= c82e1c3c158754ac4c79193708a0887b676275557d5da2b0c228f62cc7fd7b4a +CT= 6bdbffef1c833bb6e5f3b1cf0f1c6efff59608d16045f1a716f72eaf83eaebb9 +TEST= 101 +KEY= d6c9996038b902e6182f77a89da1ed605238423f5ebfd3d0 +PT= 6bdbffef1c833bb6e5f3b1cf0f1c6efff59608d16045f1a716f72eaf83eaebb9 +CT= 9663b031d89a349ca309532d3c20f670411f57c7c5dc6a5c3b675c3dd6c0df3e +TEST= 102 +KEY= 75c0ca4d0499f4965930206f587d873c695f1e02887f0cee +PT= 9663b031d89a349ca309532d3c20f670411f57c7c5dc6a5c3b675c3dd6c0df3e +CT= 0757313b09f264267436398a45947054390fd7e670986ea9331e0d4646b89cb8 +TEST= 103 +KEY= 01f6f3c7410d84c2603ff78928e5e9955a411344cec79056 +PT= 0757313b09f264267436398a45947054390fd7e670986ea9331e0d4646b89cb8 +CT= 74df8510967879a5970f2d908d90d67ec1ae060c0347c9e1b9e7e682aab2f420 +TEST= 104 +KEY= 96f9de57cc9d52bca191f1852ba22074e3a6f5c664756476 +PT= 74df8510967879a5970f2d908d90d67ec1ae060c0347c9e1b9e7e682aab2f420 +CT= 314f71dd8c395e7239ccc08da6795af188d960ea134a40b10dc4f214a6050c20 +TEST= 105 +KEY= af351eda6ae4084d2948916f38e860c5ee6207d2c2706856 +PT= 314f71dd8c395e7239ccc08da6795af188d960ea134a40b10dc4f214a6050c20 +CT= be1db256c07da23ff05d7cf00af5ceed9d260f0296cee7a002a6319cc3172b2f +TEST= 106 +KEY= 5f68622a6011c6a0b46e9e6dae268765ecc4364e01674379 +PT= be1db256c07da23ff05d7cf00af5ceed9d260f0296cee7a002a6319cc3172b2f +CT= 66bd38222c9f8a20fd02ca2e63df26feecc1e4b5704808eebcc0a07852926143 +TEST= 107 +KEY= a26aa80403cee05e58af7ad8de6e8f8b5004963653f5223a +PT= 66bd38222c9f8a20fd02ca2e63df26feecc1e4b5704808eebcc0a07852926143 +CT= 844e0cad27a833d13cd37bb0c8638d490a5d7ec803ae78edd7bf9035275e82a1 +TEST= 108 +KEY= 9eb9d3b4cbad6d1752f20410ddc0f76687bb060374aba09b +PT= 844e0cad27a833d13cd37bb0c8638d490a5d7ec803ae78edd7bf9035275e82a1 +CT= b1c41da2f39f402d5e211a47e9068b093d30d13a996e609fe486adf2af92ae97 +TEST= 109 +KEY= c098c9f322abe61e6fc2d52a44ae97f9633dabf1db390e0c +PT= b1c41da2f39f402d5e211a47e9068b093d30d13a996e609fe486adf2af92ae97 +CT= cc59b60db0ae1fcb5eaec491404ca116c6eaae8ba3136be071a26d04933c150e +TEST= 110 +KEY= 9e360d6262e74708a9287ba1e7bdfc19129fc6f548051b02 +PT= cc59b60db0ae1fcb5eaec491404ca116c6eaae8ba3136be071a26d04933c150e +CT= d8ad0412b5a88bf4b0579c5d7d1fc7a942aca6cd7c2378594fb9ca8ffab15cf6 +TEST= 111 +KEY= 2e61913f1ff880a1eb84dd6c9b9e84405d260c7ab2b447f4 +PT= d8ad0412b5a88bf4b0579c5d7d1fc7a942aca6cd7c2378594fb9ca8ffab15cf6 +CT= 4c335e7ef724fb7dfcf6f952e9ac760f86f910c4773847d5cffe0d10c5b6df94 +TEST= 112 +KEY= d297686df654f6ae6d7dcda8eca6c39592d8016a77029860 +PT= 4c335e7ef724fb7dfcf6f952e9ac760f86f910c4773847d5cffe0d10c5b6df94 +CT= 25bedc6fa94d409dc7926eb65dbc18a4aa09607d4b42c59eb29db5953ff66136 +TEST= 113 +KEY= 150506dbabe8ee0ac774add5a7e4060b2045b4ff48f4f956 +PT= 25bedc6fa94d409dc7926eb65dbc18a4aa09607d4b42c59eb29db5953ff66136 +CT= 02be65c84d7063530a4a0f586b7391e56329d7ab0e0cee95a6a2300e5d1e12aa +TEST= 114 +KEY= 1f4f0983c09b7fefa45d7a7ea9e8e89e86e784f115eaebfc +PT= 02be65c84d7063530a4a0f586b7391e56329d7ab0e0cee95a6a2300e5d1e12aa +CT= 06eb2bdd6bd35e588c1dbee71851ce1050e86fa62f346864f20c328d6eef26f7 +TEST= 115 +KEY= 9352b764d8cab1fff4b515d886dc80fa74ebb67c7b05cd0b +PT= 06eb2bdd6bd35e588c1dbee71851ce1050e86fa62f346864f20c328d6eef26f7 +CT= 852470d6276977423e9c7739104f19aaa09a470580dafb7b394ab73590c1e62a +TEST= 116 +KEY= adcec05dc885a855542f52dd06067b814da10149ebc42b21 +PT= 852470d6276977423e9c7739104f19aaa09a470580dafb7b394ab73590c1e62a +CT= 19b5c967247b9be2f0ae1fa58685d11f84025c4479f040829b9c9048405395cb +TEST= 117 +KEY= 5d60dff84e00794ad02d0e997ff63b03d63d9101ab97beea +PT= 19b5c967247b9be2f0ae1fa58685d11f84025c4479f040829b9c9048405395cb +CT= a17934954b35fece5f469bc2a65a6328d15e2029888ce402f9c630476c63cb86 +TEST= 118 +KEY= 0226443ae85a1a6201732eb0f77adf012ffba146c7f4756c +PT= a17934954b35fece5f469bc2a65a6328d15e2029888ce402f9c630476c63cb86 +CT= 5c73aba1eabec9e24c00d1f705078d475f284d5aae917b76a318b8a3699000b0 +TEST= 119 +KEY= 4e2695cded5d97255e5b63ea59eba4778ce319e5ae6475dc +PT= 5c73aba1eabec9e24c00d1f705078d475f284d5aae917b76a318b8a3699000b0 +CT= aba8492c627830e7a05a69775a51448fcf0cd5b645b4fc571d485c97bc052484 +TEST= 120 +KEY= ee7cfcbab70cd3aa9157b65c1c5f582091ab457212615158 +PT= aba8492c627830e7a05a69775a51448fcf0cd5b645b4fc571d485c97bc052484 +CT= 5f62542a6b44e335048d0d19aa39f935d3af49b0d513105427577d57cbe366bc +TEST= 121 +KEY= eaf1f1a31d352a9f42f8ffecc94c4874b6fc3825d98237e4 +PT= 5f62542a6b44e335048d0d19aa39f935d3af49b0d513105427577d57cbe366bc +CT= 6b9e248f82ae877ce711234fd3ef7d62703dcbfa4e58a50ff818bd488a83b0ad +TEST= 122 +KEY= 0de0d2ecceda57fd32c534168714ed7b4ee4856d53018749 +PT= 6b9e248f82ae877ce711234fd3ef7d62703dcbfa4e58a50ff818bd488a83b0ad +CT= c24d5143ed38a73a31ebba2e5af14ebb0bae85ca153a83ec929d131eada161e1 +TEST= 123 +KEY= 3c0b68c2942b1946396bb1dc922e6e97dc799673fea0e6a8 +PT= c24d5143ed38a73a31ebba2e5af14ebb0bae85ca153a83ec929d131eada161e1 +CT= dfa28ecbebe252f757522be9e316ac567a71f396b11909971d138295ad647bc1 +TEST= 124 +KEY= 6b59432b773db510431a424a23376700c16a14e653c49d69 +PT= dfa28ecbebe252f757522be9e316ac567a71f396b11909971d138295ad647bc1 +CT= 60591d59865dddb910987644245455fa8c30d4a123ebc5fdf5011fd189069864 +TEST= 125 +KEY= 7bc1356f5369e0eacf2a96eb00dca2fd346b0b37dac2050d +PT= 60591d59865dddb910987644245455fa8c30d4a123ebc5fdf5011fd189069864 +CT= 58e129f70559141f68ab4b821f8045018cda1efbb6dea4702aa947a417afb172 +TEST= 126 +KEY= 136a7eed4ce9a5eb43f08810b602068d1ec24c93cd6db47f +PT= 58e129f70559141f68ab4b821f8045018cda1efbb6dea4702aa947a417afb172 +CT= 28d3c976bc0cc987cf451161127714573824fec78d202acec73682695f203391 +TEST= 127 +KEY= dc2f6f8c5e9eb1bc7bd476d73b222c43d9f4cefa924d87ee +PT= 28d3c976bc0cc987cf451161127714573824fec78d202acec73682695f203391 +CT= e5f5307c0be81dc78f5ab9e0c4be4308c41734ed3553887360788c6c3da29d95 +TEST= 128 +KEY= 5375d66c9a20f2b4bfc3423a0e71a430b98c4296afef1a7b +PT= e5f5307c0be81dc78f5ab9e0c4be4308c41734ed3553887360788c6c3da29d95 +CT= 7204f1d193f6faa41157f7c2d5c50962099c95d067a378e3b4a7645445ebf329 +TEST= 129 +KEY= 422221ae4fe5fbd6b65fd7ea69d2dcd30d2b26c2ea04e952 +PT= 7204f1d193f6faa41157f7c2d5c50962099c95d067a378e3b4a7645445ebf329 +CT= a7f32228613bc78512e17f56b72fedc152d933e3dc3d8ee25035903dab196cf9 +TEST= 130 +KEY= 50c35ef8f8ca1617e486e409b5ef52315d1eb6ff411d85ab +PT= a7f32228613bc78512e17f56b72fedc152d933e3dc3d8ee25035903dab196cf9 +CT= 77c67d93f57ef7d1308337968995543e206abaa2b21a79fd3da638bdaf8fc8e5 +TEST= 131 +KEY= 6040696e715f4229c4ec5eab07f52bcc60b88e42ee924d4e +PT= 77c67d93f57ef7d1308337968995543e206abaa2b21a79fd3da638bdaf8fc8e5 +CT= 7c80f390fd1d9455db8840e475a63cecee5cafc7bf9b87cff0b80381df499f13 +TEST= 132 +KEY= bbc8298a04f97ec52ab0f16cb86eac0390008dc331dbd25d +PT= 7c80f390fd1d9455db8840e475a63cecee5cafc7bf9b87cff0b80381df499f13 +CT= 19927fbe0e675c69ecebc6433deaecbb038e3df21dd2aee15f091220a5de6bb5 +TEST= 133 +KEY= 5723efc93913927e293ecc9ea5bc02e2cf099fe39405b9e8 +PT= 19927fbe0e675c69ecebc6433deaecbb038e3df21dd2aee15f091220a5de6bb5 +CT= 08ec0a1ee0bb98c396ea103a1aaed8c1f11b06fa301e08bb0ea46fd90a1aa78e +TEST= 134 +KEY= c1c9fff323bd4abfd825ca6495a20a59c1adf03a9e1f1e66 +PT= 08ec0a1ee0bb98c396ea103a1aaed8c1f11b06fa301e08bb0ea46fd90a1aa78e +CT= f15114e0537af2340bb4ce396fbc95411784ca872267c12d375f33b811b6b1ca +TEST= 135 +KEY= ca7d31ca4c01dffecfa100e3b7c5cb74f6f2c3828fa9afac +PT= f15114e0537af2340bb4ce396fbc95411784ca872267c12d375f33b811b6b1ca +CT= c0acf6245df2dff89842230ee303766c8dd2f7244430b0913542bf93a8a3012f +TEST= 136 +KEY= 523f12c4af02a9924273f7c7f3f57be5c3b07c11270aae83 +PT= c0acf6245df2dff89842230ee303766c8dd2f7244430b0913542bf93a8a3012f +CT= 51c32da5067a5c6589b12319ac380b48868ac23a69a67710ed4b4e9afc528335 +TEST= 137 +KEY= db8e31dd033aa2dac4f935fd9a530cf52efb328bdb582db6 +PT= 51c32da5067a5c6589b12319ac380b48868ac23a69a67710ed4b4e9afc528335 +CT= 95987a53ebd1732b1807c4bfe155414cd1f3e33feaa62dd98c5d864e4a1d018c +TEST= 138 +KEY= c389f562e26fe396150ad6c270f5212ca2a6b4c591452c3a +PT= 95987a53ebd1732b1807c4bfe155414cd1f3e33feaa62dd98c5d864e4a1d018c +CT= e5df8213e24541a2976ccbb39079637b02b2aa8b5718ba866734d7e600310dbe +TEST= 139 +KEY= 54e53ed1721680ed17b87c4927ed9baac592632391742184 +PT= e5df8213e24541a2976ccbb39079637b02b2aa8b5718ba866734d7e600310dbe +CT= 2126e10e59c5e362dd7bc6789b62221bd9b2e61336642e391bb01867c933de1c +TEST= 140 +KEY= 899ef8a9e974a2f6ce0a9a5a1189b593de227b445847ff98 +PT= 2126e10e59c5e362dd7bc6789b62221bd9b2e61336642e391bb01867c933de1c +CT= 258dbf6d3e777715080ace7d3ffc033bd9c33c7a611bb2effc4396c576c8f42c +TEST= 141 +KEY= 819436d4d688a1cd17c9a6207092077c2261ed812e8f0bb4 +PT= 258dbf6d3e777715080ace7d3ffc033bd9c33c7a611bb2effc4396c576c8f42c +CT= 92bd6cc32bd4ada6aa863eded9f45a86743543dc1a9a5fe4410b74e5d9f3523f +TEST= 142 +KEY= 2b12080a0f7cfb4b63fce5fc6a085898636a9964f77c598b +PT= 92bd6cc32bd4ada6aa863eded9f45a86743543dc1a9a5fe4410b74e5d9f3523f +CT= 7122464ea6eb833d8e60adb98975c59d208755568c3df75fe3629e89d402424d +TEST= 143 +KEY= a572a5b386093ed6437bb0aae635afc7800807ed237e1bc6 +PT= 7122464ea6eb833d8e60adb98975c59d208755568c3df75fe3629e89d402424d +CT= 0a75bb9c5c491ce483155fa6a93c24f2452d3c93261b1b774c6c155abab9f345 +TEST= 144 +KEY= 2667fa152f351a2406568c39c02eb4b0cc6412b799c7e883 +PT= 0a75bb9c5c491ce483155fa6a93c24f2452d3c93261b1b774c6c155abab9f345 +CT= 8ac96075252c42d78b37de03fcaad5abb7924393f45ca6318a77215455778b62 +TEST= 145 +KEY= ad502416d39fcf8fb1c4cfaa34721281461333e3ccb063e1 +PT= 8ac96075252c42d78b37de03fcaad5abb7924393f45ca6318a77215455778b62 +CT= 4db976fedc9df3961f214ff7fa7c5a890f203a6b9ce86b6a37980936095fbf6d +TEST= 146 +KEY= b2716be129e39506bee4f5c1a89a79eb718b3ad5c5efdc8c +PT= 4db976fedc9df3961f214ff7fa7c5a890f203a6b9ce86b6a37980936095fbf6d +CT= 45854d967f45f3775af0209b992c0736f83b6860fd4a9c16b102cc42d8bd4a4c +TEST= 147 +KEY= e8814b7ab0cf923046df9da155d0e5fdc089f6971d5296c0 +PT= 45854d967f45f3775af0209b992c0736f83b6860fd4a9c16b102cc42d8bd4a4c +CT= 9adfc146485f7c0dfd28eb5ce50ad38ced3a3743ac37a1e8f934ab737c1ab475 +TEST= 148 +KEY= 15a9a02655c541bcabe5aae2f9e7441539bd5de4614822b5 +PT= 9adfc146485f7c0dfd28eb5ce50ad38ced3a3743ac37a1e8f934ab737c1ab475 +CT= d9c1cdc23a299e4efd0267c019d3a05afa64703163acc999d382aec4b3916905 +TEST= 149 +KEY= e8abc7e64c16e1e65181dad39a4b8d8cea3ff320d2d94bb0 +PT= d9c1cdc23a299e4efd0267c019d3a05afa64703163acc999d382aec4b3916905 +CT= d3118ae4dbd000f110a340d1fa7a10defbfff890cebf947d459c963d0d6ef7e7 +TEST= 150 +KEY= f8088737b66cf138aa7e224354f419f1afa3651ddfb7bc57 +PT= d3118ae4dbd000f110a340d1fa7a10defbfff890cebf947d459c963d0d6ef7e7 +CT= aa56194bb4554b06309a2f61fa2d2b467277ca7eee97ab7be37f1e77712be97c +TEST= 151 +KEY= c892a8564c41da7ed809e83dba63b28a4cdc7b6aae9c552b +PT= aa56194bb4554b06309a2f61fa2d2b467277ca7eee97ab7be37f1e77712be97c +CT= 0d199608327017b013d53b507dbd6cd3da0611090fee5fe3100850c8f4aafce6 +TEST= 152 +KEY= db47930631fcb6ad020ff934b58ded695cd42ba25a36a9cd +PT= 0d199608327017b013d53b507dbd6cd3da0611090fee5fe3100850c8f4aafce6 +CT= d10a94e0371e94f8bc508fc8420e7930c86a61a0f6b00d9e1e41da16f26c97eb +TEST= 153 +KEY= 67171cce73f2cf9dca659894433de0f74295f1b4a85a3e26 +PT= d10a94e0371e94f8bc508fc8420e7930c86a61a0f6b00d9e1e41da16f26c97eb +CT= 4a645f680d1a74a312836dc23f836bf8e9f503e429a5926aec67d4de61d7596b +TEST= 154 +KEY= 7594710c4c71a46523909b706a98729daef2256ac98d674d +PT= 4a645f680d1a74a312836dc23f836bf8e9f503e429a5926aec67d4de61d7596b +CT= 56a5debdbf3dacacd309d5262062ae14ed3a9a39619dc0a6c275641100977f39 +TEST= 155 +KEY= a69da42a6c130a71ceaa01490b05b23b6c87417bc91a1874 +PT= 56a5debdbf3dacacd309d5262062ae14ed3a9a39619dc0a6c275641100977f39 +CT= d62de04ce2cd46e4a7108d8b881fb0147e8b7ed9ee42a0c005afd74769230a06 +TEST= 156 +KEY= 018d29a1e40cba65b0217f90e54712fb6928963ca0391272 +PT= d62de04ce2cd46e4a7108d8b881fb0147e8b7ed9ee42a0c005afd74769230a06 +CT= 6a404a201263234536252c9dba57a3eb0a1c7f1b80e7358a93aac121cb58576f +TEST= 157 +KEY= 37a8053c5e5b198eba3d008b65a02771fa82571d6b61451d +PT= 6a404a201263234536252c9dba57a3eb0a1c7f1b80e7358a93aac121cb58576f +CT= 68f389a4f0cee8f8176ea99ef800f5a6e04b88a1c5ccc5c529cc2e0b093fe9ac +TEST= 158 +KEY= 20c6aca2a65bec285a76882aa06ce2b4d34e7916625eacb1 +PT= 68f389a4f0cee8f8176ea99ef800f5a6e04b88a1c5ccc5c529cc2e0b093fe9ac +CT= 0ebf7362de39670bf16b5935e7bd469ac936791df9080654a031b1b4dd4065db +TEST= 159 +KEY= d1adf59741e6aab29340f1375964e4e0737fc8a2bf1ec96a +PT= 0ebf7362de39670bf16b5935e7bd469ac936791df9080654a031b1b4dd4065db +CT= e533d022e8046856f1ec81e355c30299060141fb434798774fd351c52ed2a5bf +TEST= 160 +KEY= 204174741425a82b9541b0cc1a237c973cac996791cc6cd5 +PT= e533d022e8046856f1ec81e355c30299060141fb434798774fd351c52ed2a5bf +CT= c90e49c3d5b9be6f762d068c65f0b1e7521d6505a087442d9a33a9f132e75990 +TEST= 161 +KEY= 566c72f871d519ccc75cd5c9baa438baa69f3096a32b3545 +PT= c90e49c3d5b9be6f762d068c65f0b1e7521d6505a087442d9a33a9f132e75990 +CT= 49a1947e835870dc6f8c6d85817a9b0553fb175b00f3fa6cde1b3cc8d18fd0ff +TEST= 162 +KEY= 39e01f7df0af82c994a7c292ba57c2d678840c5e72a4e5ba +PT= 49a1947e835870dc6f8c6d85817a9b0553fb175b00f3fa6cde1b3cc8d18fd0ff +CT= bbe138bccb12636cfc6e0630780a01b039047a8fdf330e96a3c9b864714a35ca +TEST= 163 +KEY= c58e194d88a58379ada3b81d6564cc40db4db43a03eed070 +PT= bbe138bccb12636cfc6e0630780a01b039047a8fdf330e96a3c9b864714a35ca +CT= ca9297e3ac27bf8c043e4f08f5734a025b66fe06c3ddd219558d49495097174f +TEST= 164 +KEY= c1b056457dd6c97bf6c5461ba6b91e598ec0fd735379c73f +PT= ca9297e3ac27bf8c043e4f08f5734a025b66fe06c3ddd219558d49495097174f +CT= 6ee1af304eaefd406a013da33a729594f76474ec574ad2b28ffed06a43775b86 +TEST= 165 +KEY= abb16be647a45cef01a132f7f1f3cceb013e2d19100e9cb9 +PT= 6ee1af304eaefd406a013da33a729594f76474ec574ad2b28ffed06a43775b86 +CT= bf649fcb8e82644bcf4516525e4865c80c36d5a6fc950823bca7604a698e59d3 +TEST= 166 +KEY= 64f47db419ec39270d97e7510d66c4c8bd994d537980c56a +PT= bf649fcb8e82644bcf4516525e4865c80c36d5a6fc950823bca7604a698e59d3 +CT= 9c446bcce822485fba4f84fc9588c076f5aa312d6e87e8263677e9ceac75927e +TEST= 167 +KEY= debbf9488c64f951f83dd67c63e12cee8beea49dd5f55714 +PT= 9c446bcce822485fba4f84fc9588c076f5aa312d6e87e8263677e9ceac75927e +CT= 442641eab6267f9f1514ba33898d3f1567bef61d7fb4582dd50bb919e686c7db +TEST= 168 +KEY= cbaf437b05e9c6449f8320611c5574c35ee51d84337390cf +PT= 442641eab6267f9f1514ba33898d3f1567bef61d7fb4582dd50bb919e686c7db +CT= 7bf3fdac8a4bfe3854c589fa1e7a0bb1af997ae1baa34a8533a403674c950b33 +TEST= 169 +KEY= 9f6aca811b93cdf5301a5a80a6f63e466d411ee37fe69bfc +PT= 7bf3fdac8a4bfe3854c589fa1e7a0bb1af997ae1baa34a8533a403674c950b33 +CT= 5e6c5a451a7939fc95f57353e25f7ae207299aedd92eb626845b6f052e8b73cb +TEST= 170 +KEY= 0a9fb9d2f9ccb7173733c06d7fd88860e91a71e6516de837 +PT= 5e6c5a451a7939fc95f57353e25f7ae207299aedd92eb626845b6f052e8b73cb +CT= 1e3e8d3f096e64ac62425b28c019a6868410b6cd870c37cf543acef851618a7e +TEST= 171 +KEY= 68dde2fa39d51191b32376a0f8d4bfafbd20bf1e000c6249 +PT= 1e3e8d3f096e64ac62425b28c019a6868410b6cd870c37cf543acef851618a7e +CT= 2685a672608ebc37e971720f714756d735008f61878d0c289f7368b65de17d71 +TEST= 172 +KEY= 81ac90f5489247468623f9c17f59b3872253d7a85ded1f38 +PT= 2685a672608ebc37e971720f714756d735008f61878d0c289f7368b65de17d71 +CT= 37ac694c3c9d100c4347bfa1c302ea0607cdc09d8aafc5de83c50ec9450cdf0c +TEST= 173 +KEY= c2eb2f548b90ad4081ee395cf5f67659a196d96118e1c034 +PT= 37ac694c3c9d100c4347bfa1c302ea0607cdc09d8aafc5de83c50ec9450cdf0c +CT= 0db16b9148a3ac2a2423b7eca666985316e1cba00673dddd5b784acef653dcdd +TEST= 174 +KEY= e6c898b82df63513970ff2fcf385ab84faee93afeeb21ce9 +PT= 0db16b9148a3ac2a2423b7eca666985316e1cba00673dddd5b784acef653dcdd +CT= 9a991b3d0073a225c63c12e1e3b5427af5e6433dcc1eb27148e9bb506ab937b8 +TEST= 175 +KEY= 20f48a59ce43776962e9b1c13f9b19f5b20728ff840b2b51 +PT= 9a991b3d0073a225c63c12e1e3b5427af5e6433dcc1eb27148e9bb506ab937b8 +CT= 0aefe655448edb362910fc06acb65ad2835f6264bbd75c13ddfb76fb69eb34f7 +TEST= 176 +KEY= 09e4765f62f52dbbe1b6d3a5844c45e66ffc5e04ede01fa6 +PT= 0aefe655448edb362910fc06acb65ad2835f6264bbd75c13ddfb76fb69eb34f7 +CT= b285220f96cab2b97d0aaab71bdafe922cee54d7596024afc3487bc51cde75ad +TEST= 177 +KEY= 74eedce8792fd329cd588772dd2c6149acb425c1f13e6a0b +PT= b285220f96cab2b97d0aaab71bdafe922cee54d7596024afc3487bc51cde75ad +CT= 72105dbe7398811f7c9fec7d7d7d79d856818cbaf8b59f02f027d1497ef77b80 +TEST= 178 +KEY= 087130950452aaf19bd90bc82599fe4b5c93f4888fc9118b +PT= 72105dbe7398811f7c9fec7d7d7d79d856818cbaf8b59f02f027d1497ef77b80 +CT= 1a28c15027a083b0565cbe16fa7ca4e4affa767718ac4123b73abc502b747352 +TEST= 179 +KEY= 5e2d8e83fe2e0e1534237dbf3d35bf68eba948d8a4bd62d9 +PT= 1a28c15027a083b0565cbe16fa7ca4e4affa767718ac4123b73abc502b747352 +CT= 31d943d359d41766fc3c9cbe646d94d679e0c89bd64983e7f1d25785b0081344 +TEST= 180 +KEY= a211123d9a439ac34dc3b524eb7c3c8f1a7b1f5d14b5719d +PT= 31d943d359d41766fc3c9cbe646d94d679e0c89bd64983e7f1d25785b0081344 +CT= ee992246a84f20cbc5ce8ea7d0b5fc29890d468b1f3e0f6e5777a4d735f16d3c +TEST= 181 +KEY= 67df9c9a4af666eac4cef3aff44233e14d0cbb8a21441ca1 +PT= ee992246a84f20cbc5ce8ea7d0b5fc29890d468b1f3e0f6e5777a4d735f16d3c +CT= 57b768960d6303a6170aa9d81b056eaecf9f12db4b8df023b0522b1c0e9eecfc +TEST= 182 +KEY= 70d5354251f308440b51e174bfcfc3c2fd5e90962fdaf05d +PT= 57b768960d6303a6170aa9d81b056eaecf9f12db4b8df023b0522b1c0e9eecfc +CT= 2f4a877b64038f10a9a6e056b2094356b7d451b661160f26ce0d923c8b078225 +TEST= 183 +KEY= d973d514e3fa4b12bc85b0c2ded9cce4335302aaa4dd7278 +PT= 2f4a877b64038f10a9a6e056b2094356b7d451b661160f26ce0d923c8b078225 +CT= 6274c0456039aa2d5dc07975d483c3689d062d103f548598b2b2f56bf2b4e8f7 +TEST= 184 +KEY= 84b3ac613779887a21839dd2e18d497c81e1f7c156699a8f +PT= 6274c0456039aa2d5dc07975d483c3689d062d103f548598b2b2f56bf2b4e8f7 +CT= e31678b1979637f1761a4eb64512c1521126875fbbbe347cecef84aefceed213 +TEST= 185 +KEY= f2a9e2d7726b492830a51a8d5a337d006d0e736faa87489c +PT= e31678b1979637f1761a4eb64512c1521126875fbbbe347cecef84aefceed213 +CT= 1f20f0d0bb527abf3a67b1ecf984c5a173e7f01ac7be60a0f71096e78037d06d +TEST= 186 +KEY= c8ce533b8bef8c894342ea979d8d1da09a1ee5882ab098f1 +PT= 1f20f0d0bb527abf3a67b1ecf984c5a173e7f01ac7be60a0f71096e78037d06d +CT= 3b64ec099a18c2970d714303f9ff0c85d92e6206b69b2d7cf5bc387293250316 +TEST= 187 +KEY= c5bf10387210800c9a6c88912b1630dc6fa2ddfab9959be7 +PT= 3b64ec099a18c2970d714303f9ff0c85d92e6206b69b2d7cf5bc387293250316 +CT= 34480dbb79ca1235b7ee0b478cb77868d83aca2510dd2ae3de016aed49d45f06 +TEST= 188 +KEY= 72511b7ffea7f864425642b43bcb1a3fb1a3b717f041c4e1 +PT= 34480dbb79ca1235b7ee0b478cb77868d83aca2510dd2ae3de016aed49d45f06 +CT= dfaf45695e35d528a5e1d51c99469616ea1c35232c24bafeec944a16bc8f1aec +TEST= 189 +KEY= d7b0ce6367e16e72a84a779717efa0c15d37fd014ccede0d +PT= dfaf45695e35d528a5e1d51c99469616ea1c35232c24bafeec944a16bc8f1aec +CT= b63c2de7733e3fea74808be6db3e7ae9c3f7db17e39272a6e6303ee22e314351 +TEST= 190 +KEY= a3304585bcdf149b6bbdac80f47dd267bb07c3e362ff9d5c +PT= b63c2de7733e3fea74808be6db3e7ae9c3f7db17e39272a6e6303ee22e314351 +CT= a0300783b25e914a6ac327302b517c36a9ac1e01d8a0b0c106f10a74cfadf463 +TEST= 191 +KEY= c9f362b5978e68adc211b2812cdd62a6bdf6c997ad52693f +PT= a0300783b25e914a6ac327302b517c36a9ac1e01d8a0b0c106f10a74cfadf463 +CT= 5f742a45b6c673e4290f97b3cfe8f39541ec5693178c670e8f016cc3ab36b3a6 +TEST= 192 +KEY= e0fcf50658669b3883fde4123b5105a832f7a5540664da99 +PT= 5f742a45b6c673e4290f97b3cfe8f39541ec5693178c670e8f016cc3ab36b3a6 +CT= 12235f8b589c930d24222edd752beb9bed8ee12a498715b28f3101795f039f9f +TEST= 193 +KEY= c4dedbdb2d4d70a36e73053872d6101abdc6a42d59674506 +PT= 12235f8b589c930d24222edd752beb9bed8ee12a498715b28f3101795f039f9f +CT= 49c9aa01c97939184f97af8e3638ef5b546bdd0634fe7e4d22ce67bc5fb42389 +TEST= 194 +KEY= 8b4974551b759ff83a18d83e46286e579f08c39106d3668f +PT= 49c9aa01c97939184f97af8e3638ef5b546bdd0634fe7e4d22ce67bc5fb42389 +CT= 29c09e498d64db131a04f9fa5b8453d4805564f2f086fc990523a5f286c0629f +TEST= 195 +KEY= 914d8daf40f1cc2cba4dbcccb6ae92ce9a2b666380130410 +PT= 29c09e498d64db131a04f9fa5b8453d4805564f2f086fc990523a5f286c0629f +CT= 34ca2c695a3eee8743d2c118f4cd433a28269bc19e6c34b9fbfea554cd9f7976 +TEST= 196 +KEY= d29f4cb7b43c8f16926b270d28c2a67761d5c3374d8c7d66 +PT= 34ca2c695a3eee8743d2c118f4cd433a28269bc19e6c34b9fbfea554cd9f7976 +CT= e2fdfe8f6973e64b301e6ba328816eb27af98f9aa1152f5ce4f241863f2701f8 +TEST= 197 +KEY= e28127149cbde1a4e892a89789d7892b852782b172ab7c9e +PT= e2fdfe8f6973e64b301e6ba328816eb27af98f9aa1152f5ce4f241863f2701f8 +CT= e7ec6bfd9e7272eaa737b73400501d83b1e31bfcecef2be970d48f301ec80a74 +TEST= 198 +KEY= 45b690209cedfc275971b36b6538a2c2f5f30d816c6376ea +PT= e7ec6bfd9e7272eaa737b73400501d83b1e31bfcecef2be970d48f301ec80a74 +CT= 3816d10a8b25bbf6f11cb919c4fc19a1c99c109701f1361e6cf732965a3d92b2 +TEST= 199 +KEY= b4aa29395811e58690eda3fc64c994dc99043f17365ee458 +PT= 3816d10a8b25bbf6f11cb919c4fc19a1c99c109701f1361e6cf732965a3d92b2 +CT= 17d58b8662eeb794bb5927de96d49cc537654f124b65f64339fc84d35b42ac4d +TEST= 200 +KEY= 0ff30ee7cec57943a788ecee2fac629fa0f8bbc46d1c4815 +PT= 17d58b8662eeb794bb5927de96d49cc537654f124b65f64339fc84d35b42ac4d +CT= a4f96634c452df2c652ef99d73c37b03b3a97b043b93f2821fb3d051e7baea84 +TEST= 201 +KEY= 6addf77abd060240142197ea143f901dbf4b6b958aa6a291 +PT= a4f96634c452df2c652ef99d73c37b03b3a97b043b93f2821fb3d051e7baea84 +CT= a34b8cc4d96bb28c4cce438ba2e9c9689eb0bbcabd0c170202de6b2765844bdd +TEST= 202 +KEY= 2613b4f11fefcb288a912c20a933871fbd9500b2ef22e94c +PT= a34b8cc4d96bb28c4cce438ba2e9c9689eb0bbcabd0c170202de6b2765844bdd +CT= 8a6c147409411ab18e10b7ea0c16facc70431af1bd3801f34ec2dd4697cc8a72 +TEST= 203 +KEY= a803031b13f931e4fad236d1140b86ecf357ddf478ee633e +PT= 8a6c147409411ab18e10b7ea0c16facc70431af1bd3801f34ec2dd4697cc8a72 +CT= e9d8eeb6d59167a5c6b7c8314bc50743739fe44e2da23809070c539fb0d47b69 +TEST= 204 +KEY= 6eb4cb2a583c36a7894dd29f39a9bee5f45b8e6bc83a1857 +PT= e9d8eeb6d59167a5c6b7c8314bc50743739fe44e2da23809070c539fb0d47b69 +CT= e45f79961f3a14328c5f8fac335cd9491556ad4b673438c526b039dcadeddf36 +TEST= 205 +KEY= e2eb44866b60efee9c1b7fd45e9d8620d2ebb7b765d7c761 +PT= e45f79961f3a14328c5f8fac335cd9491556ad4b673438c526b039dcadeddf36 +CT= 3643022fa39e4b1444e155917851533efbf89a666fe24668fa28c67d2f09c365 +TEST= 206 +KEY= a60a11171331bcd067e3e5b2317fc04828c371ca4ade0404 +PT= 3643022fa39e4b1444e155917851533efbf89a666fe24668fa28c67d2f09c365 +CT= b9f5b6509c3eba8c3c6aa3a5634c9d4ccbbd7be61ecabb97a004125c52c0429c +TEST= 207 +KEY= 9a60b2b2707d219cac5e9e542fb57bdf88c76396181e4698 +PT= b9f5b6509c3eba8c3c6aa3a5634c9d4ccbbd7be61ecabb97a004125c52c0429c +CT= 5c2d9c7c11c37fb2ec310477692001b4c6e61b5c47280a2b80c6e559b9f669ee +TEST= 208 +KEY= 7651b6c5195d20286ab88508689d71f4080186cfa1e82f76 +PT= 5c2d9c7c11c37fb2ec310477692001b4c6e61b5c47280a2b80c6e559b9f669ee +CT= e4003a85a51f96ed7acdb43ba568ef0dc5fb8eb5e66ccffc8627ce3c46c31288 +TEST= 209 +KEY= 0c9c02febc35cf25af430bbd8ef1be088e2648f3e72b3dfe +PT= e4003a85a51f96ed7acdb43ba568ef0dc5fb8eb5e66ccffc8627ce3c46c31288 +CT= 58357f087df9b782f855e2b15c83257fe789e4b10fa8eb94a743c86628ccc4f6 +TEST= 210 +KEY= f4c9e04fe0b6ea5a48caef0c8159559c29658095cfe7f908 +PT= 58357f087df9b782f855e2b15c83257fe789e4b10fa8eb94a743c86628ccc4f6 +CT= c048bc1f5a8093fbf15702885876546696ba7ae5f9a15673cd1f941916fe0a6e +TEST= 211 +KEY= 059ee2c7b8c0be3cde7095e978f803efe47a148cd919f366 +PT= c048bc1f5a8093fbf15702885876546696ba7ae5f9a15673cd1f941916fe0a6e +CT= 83440f58f11bc25fcfbf3abf7aa03db0a5c4eeb802d678cffe3153ca2cc58520 +TEST= 212 +KEY= ca21d878c260838c7bb47b517a2e7b201a4b4746f5dc7646 +PT= 83440f58f11bc25fcfbf3abf7aa03db0a5c4eeb802d678cffe3153ca2cc58520 +CT= 576ebfc0d7bd139483627528605ff15ab50d618437904ba8d5eae5e6d397b8dc +TEST= 213 +KEY= 4943ad50a23f72d6ceb91ad54dbe3088cfa1a2a0264bce9a +PT= 576ebfc0d7bd139483627528605ff15ab50d618437904ba8d5eae5e6d397b8dc +CT= f5e0389780bb3d6a30a953321f518667a589a33f05e7fc63bedc89f496154f87 +TEST= 214 +KEY= 79eafe62bd6ef4b16b30b9ea4859cceb717d2b54b05e811d +PT= f5e0389780bb3d6a30a953321f518667a589a33f05e7fc63bedc89f496154f87 +CT= d6e59a7369be2d9d068f2cea36e0b935c81b3b47c32d78fb9d07c8f5141e7c8a +TEST= 215 +KEY= 7f65d2888b8e4d84a32b82ad8b74b410ec7ae3a1a440fd97 +PT= d6e59a7369be2d9d068f2cea36e0b935c81b3b47c32d78fb9d07c8f5141e7c8a +CT= 68d5542485c5642a521e201f68026c22c4c4bddd39cb7768593cc83bad0620e0 +TEST= 216 +KEY= 2d7bf297e38c21a667ef3f70b2bfc378b5462b9a0946dd77 +PT= 68d5542485c5642a521e201f68026c22c4c4bddd39cb7768593cc83bad0620e0 +CT= a196ddb04ba0c70da67a47f36c2672dad5445f33db040777bd5403d8f329ba56 +TEST= 217 +KEY= 8b01b5648faa537cb2ab604369bbc40f08122842fa6f6721 +PT= a196ddb04ba0c70da67a47f36c2672dad5445f33db040777bd5403d8f329ba56 +CT= 821b2423bbbc478d355d3bdebf58a9e3e89a8d5f75c27cd34df20914ff4a3a60 +TEST= 218 +KEY= be5c8eba30f2fa9f5a31ed1c1c79b8dc45e0215605255d41 +PT= 821b2423bbbc478d355d3bdebf58a9e3e89a8d5f75c27cd34df20914ff4a3a60 +CT= 2c73647bd5e3d4657649a53f2fd23a1b938949d73f4518fd6715df1ec6505850 +TEST= 219 +KEY= c8152b851f20c084c9b8a4cb233ca02122f5fe48c3750511 +PT= 2c73647bd5e3d4657649a53f2fd23a1b938949d73f4518fd6715df1ec6505850 +CT= b4e29c90de36612d219fd4a25808b2a14b5af1a2c2d42b505aba4370ca2970b5 +TEST= 220 +KEY= e98aff274728722582e25569e1e88b71784fbd38095c75a4 +PT= b4e29c90de36612d219fd4a25808b2a14b5af1a2c2d42b505aba4370ca2970b5 +CT= 054be93759a4a312ea28e98493f2735be576f5980b6e827f70d07d0f6b77ace2 +TEST= 221 +KEY= 03a216a3d4da017e6794a0f1ea86090e089fc037622bd946 +PT= 054be93759a4a312ea28e98493f2735be576f5980b6e827f70d07d0f6b77ace2 +CT= 7a147aeb36ea3c50d147f9ccdc7a25a3d52591e93c4a8cf1f5d5431db2fbf212 +TEST= 222 +KEY= d2e5ef6f08a024ddb2b13118d6cc85fffd4a832ad0d02b54 +PT= 7a147aeb36ea3c50d147f9ccdc7a25a3d52591e93c4a8cf1f5d5431db2fbf212 +CT= cfc2e0bc3a51c1655322a8842cb869c3c577a45fbc19c1f15ed5f240f94dc8e4 +TEST= 223 +KEY= 81c747eb24184d1e77c695476ad5440ea39f716a299de3b0 +PT= cfc2e0bc3a51c1655322a8842cb869c3c577a45fbc19c1f15ed5f240f94dc8e4 +CT= 0104c5c37d04a229288476c69db77a42e39519de92e9c5cdeca0862cb21e77f5 +TEST= 224 +KEY= a943312db9af375c94538c99f83c81c34f3ff7469b839445 +PT= 0104c5c37d04a229288476c69db77a42e39519de92e9c5cdeca0862cb21e77f5 +CT= f2855cf919f4fe84795810cba8b085b9928e9f0d1c982a2aff0118fa5b442456 +TEST= 225 +KEY= d01b21e6111fb2e506dd1394e4a4abe9b03eefbcc0c7b013 +PT= f2855cf919f4fe84795810cba8b085b9928e9f0d1c982a2aff0118fa5b442456 +CT= 6a562274cd0f7ae24f200b33c6e22d137915b9b75a1bb0a9653d6467a14aa21b +TEST= 226 +KEY= 9f3b2ad5d7fd9ff67fc8aa23bebf1b40d5038bdb618d1208 +PT= 6a562274cd0f7ae24f200b33c6e22d137915b9b75a1bb0a9653d6467a14aa21b +CT= b95c507a74544370437aeaee3e0c4d1bf8038af6b3ccf395b71ac535e4f3c00e +TEST= 227 +KEY= dc41c03be9f1d2ed87cb20d50d73e8d562194eee857ed206 +PT= b95c507a74544370437aeaee3e0c4d1bf8038af6b3ccf395b71ac535e4f3c00e +CT= 4ef99d2cc5a7437cae1e7b2f6a6743990ed6c7d0e8954027be140ea80056d108 +TEST= 228 +KEY= 725fbb1483969174891de705e5e6a8f2dc0d40468528030e +PT= 4ef99d2cc5a7437cae1e7b2f6a6743990ed6c7d0e8954027be140ea80056d108 +CT= 10215c2a0d5de21e5c0ac477f8e63a210e3c34f967afbab82e11ca30eb413cc7 +TEST= 229 +KEY= 2e557f637b70ab558721d3fc8249124af21c8a766e693fc9 +PT= 10215c2a0d5de21e5c0ac477f8e63a210e3c34f967afbab82e11ca30eb413cc7 +CT= 12a636c6776aae0468587bac7e04e676ed28ee4435331990592888f36ae88a82 +TEST= 230 +KEY= 460d04cf05744d236a093db8b77a0bdaab3402850481b54b +PT= 12a636c6776aae0468587bac7e04e676ed28ee4435331990592888f36ae88a82 +CT= 97743e83e55b713f3bf7b2e26818f849f7b01e257ed56576b8f34a39829dc915 +TEST= 231 +KEY= 7dfab62d6d6cb56a9db9239dc9af6eac13c748bc861c7c5e +PT= 97743e83e55b713f3bf7b2e26818f849f7b01e257ed56576b8f34a39829dc915 +CT= 3dd638db6990f7b836d232a3dd95fc881c243dcfa9a1d4b5a02cebe02cffdd7c +TEST= 232 +KEY= 4b28848eb0f949e2819d1e52600eba19b3eba35caae3a122 +PT= 3dd638db6990f7b836d232a3dd95fc881c243dcfa9a1d4b5a02cebe02cffdd7c +CT= 8c50ab75a4dc403c8351ec9c954e7eca63b4a9caa284fa31133ad851d0d2149b +TEST= 233 +KEY= c879681225b73728e229b798c28a4028a0d17b0d7a31b5b9 +PT= 8c50ab75a4dc403c8351ec9c954e7eca63b4a9caa284fa31133ad851d0d2149b +CT= 796f79dd1549ce9f1f3224de4d716bcd50eeb14754158aaf8b5edccc37a4badb +TEST= 234 +KEY= d74b4ccc68c65ce5b2c706df969fca872b8fa7c14d950f62 +PT= 796f79dd1549ce9f1f3224de4d716bcd50eeb14754158aaf8b5edccc37a4badb +CT= f2271a93cdb503859881f88ab464f0a3b5bcf4c4927dfea8fc033884cf810f8b +TEST= 235 +KEY= 4fcab446dca2ac46077bf21b04e2342fd78c9f45821400e9 +PT= f2271a93cdb503859881f88ab464f0a3b5bcf4c4927dfea8fc033884cf810f8b +CT= 997a974e72dc622c20809bdf94026c126c37a0a6cbbbf027a7fe2024a412ee1f +TEST= 236 +KEY= 6f4a2f9948a0c0546b4c52bdcf59c4087072bf612606eef6 +PT= 997a974e72dc622c20809bdf94026c126c37a0a6cbbbf027a7fe2024a412ee1f +CT= 88cc41550b6301baa132ae2f84dc24e668c12fd4c7e752acc04a9664dc45b16b +TEST= 237 +KEY= ce7881b6cc7ce4b2038d7d6908be96a4b0382905fa435f9d +PT= 88cc41550b6301baa132ae2f84dc24e668c12fd4c7e752acc04a9664dc45b16b +CT= 7cf618cbc91edfea8da8fc8c65712f235beb2bf667b4f8ad6bf2d820b7f7dd44 +TEST= 238 +KEY= 43d07d3aa90dcb915866569f6f0a6e09dbcaf1254db482d9 +PT= 7cf618cbc91edfea8da8fc8c65712f235beb2bf667b4f8ad6bf2d820b7f7dd44 +CT= 405bab8024b4de32f36dbd53b6aff3c6c2b99604823be7a194c824b6bfc97698 +TEST= 239 +KEY= b0bdc0691fa238579adfc09bed3189a84f02d593f27df441 +PT= 405bab8024b4de32f36dbd53b6aff3c6c2b99604823be7a194c824b6bfc97698 +CT= a68cc4bedeea2c6d02ddf0e43b7ba9d50910ad449ed34ab615915de07c508887 +TEST= 240 +KEY= b260308d24d9918293cf6ddf73e2c31e5a9388738e2d7cc6 +PT= a68cc4bedeea2c6d02ddf0e43b7ba9d50910ad449ed34ab615915de07c508887 +CT= 705ed35fd9892a56ba2c9c671d7e853bf22d6c62af072f362abb9afaac0ac577 +TEST= 241 +KEY= 084cacea39a714b961e201bddce5ec28702812892227b9b1 +PT= 705ed35fd9892a56ba2c9c671d7e853bf22d6c62af072f362abb9afaac0ac577 +CT= 53c51996af0a0d4d13efcf759802ba3f0c08ba3c752913febaceaf5b6c3491fe +TEST= 242 +KEY= 1ba3639fa1a5ae866deabb81a9ccffd6cae6bdd24e13284f +PT= 53c51996af0a0d4d13efcf759802ba3f0c08ba3c752913febaceaf5b6c3491fe +CT= 6380daee5ec5250ed73f5b1975e0e9ad37599bb9e2c3ea3fab26067f0703a7cc +TEST= 243 +KEY= cc9c3886d445472b5ab320384b0f15e961c0bbad49108f83 +PT= 6380daee5ec5250ed73f5b1975e0e9ad37599bb9e2c3ea3fab26067f0703a7cc +CT= 9b0be2b84173d4df3288d6d0ddbc6015cb0f84c7ba53f6269d463905e6ee3e0f +TEST= 244 +KEY= fe14ee5609f9273e91bca4fff15ce3cffc8682a8affeb18c +PT= 9b0be2b84173d4df3288d6d0ddbc6015cb0f84c7ba53f6269d463905e6ee3e0f +CT= 38b7a5ae1d4b3c492313866ee98dba102bc1ac53589d04b89a24383b241caf5d +TEST= 245 +KEY= dd076838e0749d2eba7d08aca9c1e77766a2ba938be21ed1 +PT= 38b7a5ae1d4b3c492313866ee98dba102bc1ac53589d04b89a24383b241caf5d +CT= a147252b5d9f51385ee3feb5c0d45aa871b4db5138488423d98a3539620d5873 +TEST= 246 +KEY= 83e4968d20a0c786cbc9d3fd91896354bf288faae9ef46a2 +PT= a147252b5d9f51385ee3feb5c0d45aa871b4db5138488423d98a3539620d5873 +CT= 3e67d099c8e0bfd78f0a1630d3fdd5a25aff45167f4da85f6aec405e69307da8 +TEST= 247 +KEY= 0cee80bdf35d1224913696ebeec4cb0bd5c4cff480df3b0a +PT= 3e67d099c8e0bfd78f0a1630d3fdd5a25aff45167f4da85f6aec405e69307da8 +CT= cf5fa57691818801752baef127b25a4030e9e8b0905669834bc9f35d52f7a856 +TEST= 248 +KEY= 79c52e4cd4ef4864a1df7e5b7e92a2889e0d3ca9d228935c +PT= cf5fa57691818801752baef127b25a4030e9e8b0905669834bc9f35d52f7a856 +CT= 5641745eb2908b689d98952507ac3dc8b653807c28faec13d3d86b0239f0530a +TEST= 249 +KEY= e45dbb69d34375ac178cfe2756684e9b4dd557abebd8c056 +PT= 5641745eb2908b689d98952507ac3dc8b653807c28faec13d3d86b0239f0530a +CT= 70a5b9502f29a46b13aefb098b400f5014b5cab914c5d00d628616a42dea586f +TEST= 250 +KEY= f7f3406058037afc0339349e42ad9e962f53410fc6329839 +PT= 70a5b9502f29a46b13aefb098b400f5014b5cab914c5d00d628616a42dea586f +CT= 875a5f80585817b5bae2e1578a6d2eb7091b866d56944d03e461b2352886dc5c +TEST= 251 +KEY= 4d11a137d26e544b0a22b2f31439d395cb32f33aeeb44465 +PT= 875a5f80585817b5bae2e1578a6d2eb7091b866d56944d03e461b2352886dc5c +CT= 2ed281902486112b778f8a11bcbb75f06195958582694a4478150a44f4874ae5 +TEST= 252 +KEY= 3a9e2b266ed521bb6bb72776965099d1b327f97e1a330e80 +PT= 2ed281902486112b778f8a11bcbb75f06195958582694a4478150a44f4874ae5 +CT= f5d531ff53f3782d2d5404b4ddd0787af79423934a1b6cb84269a459065b449d +TEST= 253 +KEY= 17ca2f92b30559c19c2304e5dc4bf569f14e5d271c684a1d +PT= f5d531ff53f3782d2d5404b4ddd0787af79423934a1b6cb84269a459065b449d +CT= 53ad3ed03347c7de73993fca3a89de70382da5211b0283ebabbbe5eec5a73dba +TEST= 254 +KEY= 64531058898c87b1a40ea1c4c74976825af5b8c9d9cf77a7 +PT= 53ad3ed03347c7de73993fca3a89de70382da5211b0283ebabbbe5eec5a73dba +CT= 78bcf629d865febff4c849c3fdc4feefe1f2df25894b950262f4a8bb17caf694 +TEST= 255 +KEY= 909b599b7448795e45fc7ee14e02e38038011072ce058133 +PT= 78bcf629d865febff4c849c3fdc4feefe1f2df25894b950262f4a8bb17caf694 +CT= 4ee746c52486e78b8574d8bf6ef5262b6eff9c22aa5b2ce50f82ec3297e8b4d7 +TEST= 256 +KEY= 15ef81241abd5f752b03e2c3e459cf653783fc4059ed35e4 +PT= 4ee746c52486e78b8574d8bf6ef5262b6eff9c22aa5b2ce50f82ec3297e8b4d7 +CT= a663e1859169d7b5aa63e41e5c525386c097b4b2d7efd81a2e593a9bad29814c +TEST= 257 +KEY= bf8c653a46ef0cf3eb94567133b6177f19dac6dbf4c4b4a8 +PT= a663e1859169d7b5aa63e41e5c525386c097b4b2d7efd81a2e593a9bad29814c +CT= 2d2992dff1cefe554f77b83d18e53eb7422d8ea44ceb904f05ecdb89f087f145 +TEST= 258 +KEY= f0fbdd075e0a3244a9b9d8d57f5d87301c361d52044345ed +PT= 2d2992dff1cefe554f77b83d18e53eb7422d8ea44ceb904f05ecdb89f087f145 +CT= 316b0c28d9d7589dca3aeeae1f4014fd9ef621c687c4614274127515d4f75b00 +TEST= 259 +KEY= 3ac133a9414a26b9374ff913f899e67268246847d0b41eed +PT= 316b0c28d9d7589dca3aeeae1f4014fd9ef621c687c4614274127515d4f75b00 +CT= 4167a9083bc2566fa637946eb1f002904e462374761bffa5f95534c3eb5f824c +TEST= 260 +KEY= 9cf6a7c7f0ba24297909da678e8219d791715c843beb9ca1 +PT= 4167a9083bc2566fa637946eb1f002904e462374761bffa5f95534c3eb5f824c +CT= dbfa03d47c30162e30e677cadab186b719e063c7805ad127f0d60f194bf882be +TEST= 261 +KEY= ac10d00d2a0ba29e60e9b9a00ed8c8f061a7539d70131e1f +PT= dbfa03d47c30162e30e677cadab186b719e063c7805ad127f0d60f194bf882be +CT= 046e55ea28b36362aa200c2624239273f0fcbf6768390baf9b41bd999ac69561 +TEST= 262 +KEY= 0630dc2b0e2830ed901506c766e1c35ffae6ee04ead58b7e +PT= 046e55ea28b36362aa200c2624239273f0fcbf6768390baf9b41bd999ac69561 +CT= 5698b1f0084dd5f0136117d3a7cc28248570d9dd67f19aabf3055ec86254a9fe +TEST= 263 +KEY= 1551cbf8a9e418c91565df1a011059f409e3b0cc88812280 +PT= 5698b1f0084dd5f0136117d3a7cc28248570d9dd67f19aabf3055ec86254a9fe +CT= e545e50787dfc6611667bd36b896038ca4a7b4923829a13e447b30eb0e7a6eb7 +TEST= 264 +KEY= 033676ce11721b45b1c26b883939f8ca4d98802786fb4c37 +PT= e545e50787dfc6611667bd36b896038ca4a7b4923829a13e447b30eb0e7a6eb7 +CT= fa9a5159f8e5d541b35261f06663d690c931c083ad8748d2029a9b5907d74b1f +TEST= 265 +KEY= b064173e7711cdd578f3ab0b94beb0184f021b7e812c0728 +PT= fa9a5159f8e5d541b35261f06663d690c931c083ad8748d2029a9b5907d74b1f +CT= 0cb7a2989c4f9090146c1eb72c4b6c013dea56e2a1f681b113283a64ed6916be +TEST= 266 +KEY= a40809895b5aa1d44519fde9354831a95c2a211a6c451196 +PT= 0cb7a2989c4f9090146c1eb72c4b6c013dea56e2a1f681b113283a64ed6916be +CT= aef8426e461e853b8cc38f2e505ed4d3f22da79da6c9b03ca7018193dbe977a0 +TEST= 267 +KEY= 28cb86a70b047507b7345a7493818195fb2ba089b7ac6636 +PT= aef8426e461e853b8cc38f2e505ed4d3f22da79da6c9b03ca7018193dbe977a0 +CT= f73810d0c392f13796b7ce2ea794d73ddb6280c7cefe74e0e0964ec79c8eba45 +TEST= 268 +KEY= be7c4889ac90a23a6c56dab35d7ff5751bbdee4e2b22dc73 +PT= f73810d0c392f13796b7ce2ea794d73ddb6280c7cefe74e0e0964ec79c8eba45 +CT= 6e452dd87dee42746784b38a7ab0ceecbaaa19d4025cc9807831d7b9e1ced82c +TEST= 269 +KEY= d9f8fb03d6206cd6d6fcc3675f233cf5638c39f7caec045f +PT= 6e452dd87dee42746784b38a7ab0ceecbaaa19d4025cc9807831d7b9e1ced82c +CT= 166e8ae22e08cd8c2d0de1895c1e6df9a5041be0a397e142a5516935d1a7ec18 +TEST= 270 +KEY= f4f51a8a8a3e012f73f8d887fcb4ddb7c6dd50c21b4be847 +PT= 166e8ae22e08cd8c2d0de1895c1e6df9a5041be0a397e142a5516935d1a7ec18 +CT= a7822ea1f3be4fd046db335d4037091dcf67b2183a5c01f3a997091b28aff1bb +TEST= 271 +KEY= b22e29d7ca090832bc9f6a9fc6e8dc446f4a59d933e419fc +PT= a7822ea1f3be4fd046db335d4037091dcf67b2183a5c01f3a997091b28aff1bb +CT= 099d6cfd31935f49b16b6d41962e308841dae43036cf8d64fded9d49cbeda552 +TEST= 272 +KEY= 034544965c2738bafd458eaff027512092a7c490f809bcae +PT= 099d6cfd31935f49b16b6d41962e308841dae43036cf8d64fded9d49cbeda552 +CT= c2173b0db5e2c930989f6eba2451f7e49d5fbfebaf6841f1cbdd8891c882e95b +TEST= 273 +KEY= 9bda2a2c7876cf5e601a31445f4f10d1597a4c01308b55f5 +PT= c2173b0db5e2c930989f6eba2451f7e49d5fbfebaf6841f1cbdd8891c882e95b +CT= 9b85854d83e988f1ce0de61e8e9cf0d45adb00a7754751b989bd9f9c8c9a844b +TEST= 274 +KEY= 55d7cc32f6ea3f8a3ac131e32a084168d0c7d39dbc11d1be +PT= 9b85854d83e988f1ce0de61e8e9cf0d45adb00a7754751b989bd9f9c8c9a844b +CT= b6fb2ff3d1fb96f775a67bb90e916046bd9cc37235558954a8f43460208eabf4 +TEST= 275 +KEY= 2071b78bf87b5fcc875df2911f5dc83c7833e7fd9c9f7a4a +PT= b6fb2ff3d1fb96f775a67bb90e916046bd9cc37235558954a8f43460208eabf4 +CT= 1bee57a6eccdb5a18e63edf4bf125d058778c9f24e1220825028d3699fa714bc +TEST= 276 +KEY= ae125a7f476902c900253b63514fe8be281b349403386ef6 +PT= 1bee57a6eccdb5a18e63edf4bf125d058778c9f24e1220825028d3699fa714bc +CT= 3e8de3e973ba25102e873417f063abb0eb78887a3595382eded585629ca487c3 +TEST= 277 +KEY= 80956e68b70aa979eb5db31964dad090f6ceb1f69f9ce935 +PT= 3e8de3e973ba25102e873417f063abb0eb78887a3595382eded585629ca487c3 +CT= 6e3b094db709ab6fe4fc3dd4792a32fbda76b1ea47a3a2e9e2d5bd5b2c1a8d1b +TEST= 278 +KEY= 646953bcce209b82312b02f323797279141b0cadb386642e +PT= 6e3b094db709ab6fe4fc3dd4792a32fbda76b1ea47a3a2e9e2d5bd5b2c1a8d1b +CT= 94eef327f1acf8379fc0c2029278bef60bd82b97223bd8075540a585b4df75c4 +TEST= 279 +KEY= fba991be5c5825743af329640142aa7e415ba928075911ea +PT= 94eef327f1acf8379fc0c2029278bef60bd82b97223bd8075540a585b4df75c4 +CT= 75f45d89c3207cf090a6fbf5e8ef2be06e43ec2f465543f66f3a242de128aa56 +TEST= 280 +KEY= 6b0f6a4bb4b70e9454b0c54b4717e9882e618d05e671bbbc +PT= 75f45d89c3207cf090a6fbf5e8ef2be06e43ec2f465543f66f3a242de128aa56 +CT= 195d4b63f1c581fc84e56fb51fa38630eba2c1c94a503f8f78da80c06e3f4e20 +TEST= 281 +KEY= efea05feab1488a4bf1204820d47d60756bb0dc5884ef59c +PT= 195d4b63f1c581fc84e56fb51fa38630eba2c1c94a503f8f78da80c06e3f4e20 +CT= 680c32abced5323ec75b5440bf731cdf6ddea1772204b7b193c30154e50ac0c5 +TEST= 282 +KEY= 28b151be1467947bd2cca5f52f4361b6c5780c916d443559 +PT= 680c32abced5323ec75b5440bf731cdf6ddea1772204b7b193c30154e50ac0c5 +CT= b73a6a720a637b17d4fe3e9d9c04ffe8e258925987c04614c10bdb734ebd7cd1 +TEST= 283 +KEY= fc4f6f2388636b93309437aca88327a20473d7e223f94988 +PT= b73a6a720a637b17d4fe3e9d9c04ffe8e258925987c04614c10bdb734ebd7cd1 +CT= a84f75336b2ec66ec007d89d0aace2ec6a6f63abc52d4074d2ffbb66c76a7dc8 +TEST= 284 +KEY= 3c48b7be82cf897f5afb54076dae67d6d68c6c84e4933440 +PT= a84f75336b2ec66ec007d89d0aace2ec6a6f63abc52d4074d2ffbb66c76a7dc8 +CT= 51d65c4d748b918db57e7268a40d92d6c84d050a966942f2b98a534799115fbc +TEST= 285 +KEY= 8936c5d626c21ba992b6510dfbc725246f063fc37d826bfc +PT= 51d65c4d748b918db57e7268a40d92d6c84d050a966942f2b98a534799115fbc +CT= 31c26c8e6d3aca8f44abbd0b8554fd7a6918f0fbe31c8d71bbf9c57f609f5cc7 +TEST= 286 +KEY= cd9d78dda396e6d3fbaea1f618dba855d4fffabc1d1d373b +PT= 31c26c8e6d3aca8f44abbd0b8554fd7a6918f0fbe31c8d71bbf9c57f609f5cc7 +CT= a89b6fa3253261a8ec081ea3b6d300403863f76e9f688212b24dc11757217591 +TEST= 287 +KEY= 2195667e1545e693c3cd569887b32a4766b23bab4a3c42aa +PT= a89b6fa3253261a8ec081ea3b6d300403863f76e9f688212b24dc11757217591 +CT= 79f806dd47ec40484f66a5dfff6c005dbf5dfa0bc6b8e833e8628b2a9a174cbd +TEST= 288 +KEY= 6ef3c3a1ea29e6ce7c90ac93410bc2748ed0b081d02b0e17 +PT= 79f806dd47ec40484f66a5dfff6c005dbf5dfa0bc6b8e833e8628b2a9a174cbd +CT= e6a1044577454e83a0b582c79047fd15aa123a5dc8a077e0313347f259b928c6 +TEST= 289 +KEY= ce4641667a6e1bdbd68296ce89abb594bfe3f773899226d1 +PT= e6a1044577454e83a0b582c79047fd15aa123a5dc8a077e0313347f259b928c6 +CT= a9d2bac835ac7ac7bf9cb2664a5029fb11e56b3d64fb5dcd1a61241108e0e879 +TEST= 290 +KEY= 71daf300303e3220c767fdf3ed50e859a582d3628172cea8 +PT= a9d2bac835ac7ac7bf9cb2664a5029fb11e56b3d64fb5dcd1a61241108e0e879 +CT= b1318f68a91c3179ff6781dcdc9f9fa6c06b125a4255ed3a0b42367f0f98e616 +TEST= 291 +KEY= 8ebd72dceca1ad86070cefa9af050563aec0e51d8eea28be +PT= b1318f68a91c3179ff6781dcdc9f9fa6c06b125a4255ed3a0b42367f0f98e616 +CT= 5dfd620534025b13a40333622af3e01564dd8a048a41466db13cd46e8242cc5c +TEST= 292 +KEY= 2abe41bec6524d9363d165ad2544430e1ffc31730ca8e4e2 +PT= 5dfd620534025b13a40333622af3e01564dd8a048a41466db13cd46e8242cc5c +CT= c0897ff3ceaa33d34a689ba42cfc7e8cebabcc03a5c48e92500cc96a6071fc3d +TEST= 293 +KEY= 60d6da1aeaae331f887aa9ae8080cd9c4ff0f8196cd918df +PT= c0897ff3ceaa33d34a689ba42cfc7e8cebabcc03a5c48e92500cc96a6071fc3d +CT= bcd07049d219e2427216a6f26ee7b93e4137f9f8526e50ff3b5a3fbff64f91d6 +TEST= 294 +KEY= 12c07ce884498a21c94d5056d2ee9d6374aac7a69a968909 +PT= bcd07049d219e2427216a6f26ee7b93e4137f9f8526e50ff3b5a3fbff64f91d6 +CT= 3803c68a3f348182389b7bf3f27a7567af4522bce28b3f7081fdb945000b3e22 +TEST= 295 +KEY= 2a5b071b7633ff46660872ea3065a213f5577ee39a9db72b +PT= 3803c68a3f348182389b7bf3f27a7567af4522bce28b3f7081fdb945000b3e22 +CT= 9bb42b99d65278d0ed11492dededf743d308a2d223f0b6db8cd88a1e29e0b1c6 +TEST= 296 +KEY= c74a4e369bde0805b500d038139514c8798ff4fdb37d06ed +PT= 9bb42b99d65278d0ed11492dededf743d308a2d223f0b6db8cd88a1e29e0b1c6 +CT= 76b97255ee48d3b2811963c6796fd6cc306e866f94bdf32391c769947342e6f7 +TEST= 297 +KEY= 46532df0e2b1dec9856e56578728e7ebe8489d69c03fe01a +PT= 76b97255ee48d3b2811963c6796fd6cc306e866f94bdf32391c769947342e6f7 +CT= 200ee41df657db7a12a4a6e6f193c37d51087fd99a3eb8fdba847b687d548469 +TEST= 298 +KEY= 54f78b1613221db4d466298e1d165f1652cce601bd6b6473 +PT= 200ee41df657db7a12a4a6e6f193c37d51087fd99a3eb8fdba847b687d548469 +CT= 109b21780a8a945b80eb4e75120ce1be14fba91f5c3d7d9e5f6a83c814cf13dc +TEST= 299 +KEY= d41cc563012efc0ac09d8091412b22880da665c9a9a477af +PT= 109b21780a8a945b80eb4e75120ce1be14fba91f5c3d7d9e5f6a83c814cf13dc +CT= d3a20dc0ed3b69eff2e753852c4de959a307ada1111a6bb3be09a48989d35b8e +TEST= 300 +KEY= 26fb96e62d631553639a2d305031493bb3afc14020772c21 +PT= d3a20dc0ed3b69eff2e753852c4de959a307ada1111a6bb3be09a48989d35b8e +CT= 5133e4cb18d3368fde9ebeac724461c4664f102fec7b88e9b0c5e9f3b66f13c5 +TEST= 301 +KEY= f865284a5f27749705d53d1fbc4ac1d2036a28b396183fe4 +PT= 5133e4cb18d3368fde9ebeac724461c4664f102fec7b88e9b0c5e9f3b66f13c5 +CT= fac71cfedfe8646e73a8d19fae47e7fcbd993054a37b5169d79f923346358eec +TEST= 302 +KEY= 8bcdf9d5f160936bb84c0d4b1f3190bbd4f5ba80d02db108 +PT= fac71cfedfe8646e73a8d19fae47e7fcbd993054a37b5169d79f923346358eec +CT= 4d4890ca485911f9b992a1e1073ef4711f86cc4145003677e8dd5529a6bcf84f +TEST= 303 +KEY= 325f5834f65e671aa7cac10a5a31a6cc3c28efa976914947 +PT= 4d4890ca485911f9b992a1e1073ef4711f86cc4145003677e8dd5529a6bcf84f +CT= 579c73cea052fe4e79febc19b9f1457d89d104b360c9063ac41951051b478378 +TEST= 304 +KEY= 4ba1e42d4faf22672e1bc5b93af8a0f6f831beac6dd6ca3f +PT= 579c73cea052fe4e79febc19b9f1457d89d104b360c9063ac41951051b478378 +CT= 0908e170bf4d5edc7a5ebb8b5e3f6079faca6d388da635ca47b13f439771e4f8 +TEST= 305 +KEY= 31ff5fa61190421ed4d1a881b75e953cbf8081effaa72ec7 +PT= 0908e170bf4d5edc7a5ebb8b5e3f6079faca6d388da635ca47b13f439771e4f8 +CT= 1e94706fda15736bf1a60d214dc655eb57a3fb2f228360264f1b1f0a60832f87 +TEST= 306 +KEY= c05952875c5617f5837253ae95ddf51af09b9ee59a240140 +PT= 1e94706fda15736bf1a60d214dc655eb57a3fb2f228360264f1b1f0a60832f87 +CT= 9e8ce69d281f9e1dd4585357a72cb5d51e0cd3b16c2fb3b5d7566072d3b0ed98 +TEST= 307 +KEY= 140101d0fb7aa2209d7e801ff9f246af27cdfe974994ecd8 +PT= 9e8ce69d281f9e1dd4585357a72cb5d51e0cd3b16c2fb3b5d7566072d3b0ed98 +CT= ad1694d56d1895e1dadf48e8264765f007ea26d9f39428f36243213a3d17af00 +TEST= 308 +KEY= cede4938dd3dc7d09a94a6c60a666e5c458edfad748343d8 +PT= ad1694d56d1895e1dadf48e8264765f007ea26d9f39428f36243213a3d17af00 +CT= e06469e620addc6a7b9158bc33345d0c3e9a1aa258706391ce151e8ae4f37fe3 +TEST= 309 +KEY= b54f1184ee099adca40ebc6452160dcd8b9bc12790703c3b +PT= e06469e620addc6a7b9158bc33345d0c3e9a1aa258706391ce151e8ae4f37fe3 +CT= c458e1ccdea14c77d3fc8fc0dae4abeb798a80e8ea718fe70596397211c0cc93 +TEST= 310 +KEY= 66b39e4434ed3137dd843c8cb867822a8e0df85581b0f0a8 +PT= c458e1ccdea14c77d3fc8fc0dae4abeb798a80e8ea718fe70596397211c0cc93 +CT= 2611dd899b1f1734899d67478f7c0734692be1ee1c3c69fdb71a0639489a18ea +TEST= 311 +KEY= ef2ef903bb913603b4afdd62a45bebd73917fe6cc92ae842 +PT= 2611dd899b1f1734899d67478f7c0734692be1ee1c3c69fdb71a0639489a18ea +CT= 3b5c93bdb4f02efeb864dc17f1c0a1f4330a1cef4de7f53da16185a5560f3cb6 +TEST= 312 +KEY= 574a25144a5197f787a5c18de9bc1eea98767bc99f25d4f4 +PT= 3b5c93bdb4f02efeb864dc17f1c0a1f4330a1cef4de7f53da16185a5560f3cb6 +CT= 5a8c97b2dd09a77cd42999611ac02789e0734f7e75ced980d557273bbb4cf64f +TEST= 313 +KEY= 8363bc755091b07e67d68ef39c72c76a4d215cf2246922bb +PT= 5a8c97b2dd09a77cd42999611ac02789e0734f7e75ced980d557273bbb4cf64f +CT= a1514849ceb4acdf6e728da62826584e88cef5167e8c366ba11d568e71072b7a +TEST= 314 +KEY= ed1131d378b7e830ef187be5e2fef101ec3c0a7c556e09c1 +PT= a1514849ceb4acdf6e728da62826584e88cef5167e8c366ba11d568e71072b7a +CT= 024c16215f244e7bca816b3da3960f5d73a1011c8860d1bdbf1b41f96857f638 +TEST= 315 +KEY= 27905aeedb21e76d9cb97af96a9e20bc53274b853d39fff9 +PT= 024c16215f244e7bca816b3da3960f5d73a1011c8860d1bdbf1b41f96857f638 +CT= 4a2a1c38f79812b98ea53b39e8b964d7b333d7ba1ec06b1729ed6a2a3eccd9ad +TEST= 316 +KEY= a93561d7339883ba2f8aad43745e4bab7aca21af03f52654 +PT= 4a2a1c38f79812b98ea53b39e8b964d7b333d7ba1ec06b1729ed6a2a3eccd9ad +CT= c78d3594a808998787ffd04cc43898cf695efc2eff089b21afe135b57e45e0e1 +TEST= 317 +KEY= 2ecab19bf7a01b7546d4516d8b56d08ad52b141a7db0c6b5 +PT= c78d3594a808998787ffd04cc43898cf695efc2eff089b21afe135b57e45e0e1 +CT= a56aa709819f63a770be76c411d32034b12c86bd8448878f0ee8854a8ccf87fb +TEST= 318 +KEY= 5e74c75fe6733b41f7f8d7d00f1e5705dbc39150f17f414e +PT= a56aa709819f63a770be76c411d32034b12c86bd8448878f0ee8854a8ccf87fb +CT= 2e37b77650f1c6ce33eee7f0c4180c39a509dddc5b6dbd97db79a553512ec4de +TEST= 319 +KEY= 6d9a20af226b377852f10a0c5473ea9200ba3403a0518590 +PT= 2e37b77650f1c6ce33eee7f0c4180c39a509dddc5b6dbd97db79a553512ec4de +CT= dc3e38caa77342947fadeeb7cc4e03816f228ca4bd58009e4ad2d80095ba476d +TEST= 320 +KEY= 1237ce18ee2534f93dd386a8e92bea0c4a68ec0335ebc2fd +PT= dc3e38caa77342947fadeeb7cc4e03816f228ca4bd58009e4ad2d80095ba476d +CT= 860625c1727fcaf4686d8b7245c075271303089536bedb44c84fd147bcd56b3e +TEST= 321 +KEY= 7a5a456aabe541de2ed08e3ddf95314882273d44893ea9c3 +PT= 860625c1727fcaf4686d8b7245c075271303089536bedb44c84fd147bcd56b3e +CT= 41bea443bea151496233b113a06b3a294692952e874e83a5ee95f56d8a1e65b2 +TEST= 322 +KEY= 1869f4790b8e7bf768421b1358dbb2ed6cb2c8290320cc71 +PT= 41bea443bea151496233b113a06b3a294692952e874e83a5ee95f56d8a1e65b2 +CT= b181034127003d9b541ea3186ee6d1709bc747d5eb9f6d10247ff6e0bdabdef5 +TEST= 323 +KEY= 4c7757616568aa87f3855cc6b344dffd48cd3ec9be8b1284 +PT= b181034127003d9b541ea3186ee6d1709bc747d5eb9f6d10247ff6e0bdabdef5 +CT= dfabb2883b2cf7e1ae95148870f77169ae9c31ed170a2250eea11e15519a9cc7 +TEST= 324 +KEY= e2e243e9159fdbee5d196d2ba44efdada66c20dcef118e43 +PT= dfabb2883b2cf7e1ae95148870f77169ae9c31ed170a2250eea11e15519a9cc7 +CT= e036ce1833efc4149de138679cef055c7b1feebc851b3a2e6951f60883681f9c +TEST= 325 +KEY= 7f037b8e8970deb2260683972155c783cf3dd6d46c7991df +PT= e036ce1833efc4149de138679cef055c7b1feebc851b3a2e6951f60883681f9c +CT= 69b708643921bd63c32a2c7594e0a86f4b404f54c907072e92c9a2efbc5e9892 +TEST= 326 +KEY= bc2957fb1d9076dd6d46ccc3e852c0ad5df4743bd027094d +PT= 69b708643921bd63c32a2c7594e0a86f4b404f54c907072e92c9a2efbc5e9892 +CT= 5796b7f18e7b89c3b91d1b633a5327a8f23611a185f41b09c243f55c22115362 +TEST= 327 +KEY= 05344c9827c351759f70dd626da6dba49fb78167f2365a2f +PT= 5796b7f18e7b89c3b91d1b633a5327a8f23611a185f41b09c243f55c22115362 +CT= 51418eecaa72fc5ef2e4cbae2c1ac48f1d941a6c966186c2411e633a236c59a1 +TEST= 328 +KEY= f7d087360bd995fa82e4c70efbc75d66dea9e25dd15a038e +PT= 51418eecaa72fc5ef2e4cbae2c1ac48f1d941a6c966186c2411e633a236c59a1 +CT= 13d4926439d0299d323167a90b562868122dd6bc58c1e515805c46497a29c1b6 +TEST= 329 +KEY= c5e1e09f008fbd9290c911b2a306b8735ef5a414ab73c238 +PT= 13d4926439d0299d323167a90b562868122dd6bc58c1e515805c46497a29c1b6 +CT= 3d3f6b00d906d56673c857728389536285c8a327143a622983ad6cf994fdec18 +TEST= 330 +KEY= b629b7ed8306eef01501b295b73cda5add58c8ed3f8e2e20 +PT= 3d3f6b00d906d56673c857728389536285c8a327143a622983ad6cf994fdec18 +CT= f7ce3dd8c1beb5cbb46f57edba66fa706292907177790567ca0e66cb2f2ed30a +TEST= 331 +KEY= 0246e00039601480779322e4c045df3d1756ae2610a0fd2a +PT= f7ce3dd8c1beb5cbb46f57edba66fa706292907177790567ca0e66cb2f2ed30a +CT= 13ef6c1c030eea83844bd10e2008e02903dcff02125fbd2ab1b766c32e3bfd0f +TEST= 332 +KEY= 860d310e1968f4a9744fdde6d21a6217a6e1c8e53e9b0025 +PT= 13ef6c1c030eea83844bd10e2008e02903dcff02125fbd2ab1b766c32e3bfd0f +CT= 5e069bb6ec3f85a71cead8e07f773bc9b9bedf4cc3bc5f6158e037d048522e55 +TEST= 333 +KEY= 9ae7e9ee661fcf60cdf102aa11a63d76fe01ff3576c92e70 +PT= 5e069bb6ec3f85a71cead8e07f773bc9b9bedf4cc3bc5f6158e037d048522e55 +CT= bf3120ce48ca62e445f06b3d6bf5edd97eb36827262859f952eecf0f5c918b35 +TEST= 334 +KEY= df1782d30dea22b9b3426a8d378e648facef303a2a58a545 +PT= bf3120ce48ca62e445f06b3d6bf5edd97eb36827262859f952eecf0f5c918b35 +CT= f1c37e33302cc5725dd759c3be53bd683fac2e598bf0535e7a9c3f2ea0ef4a30 +TEST= 335 +KEY= 82c0db10b3b99fd18cee44d4bc7e37d1d6730f148ab7ef75 +PT= f1c37e33302cc5725dd759c3be53bd683fac2e598bf0535e7a9c3f2ea0ef4a30 +CT= c38bbcae9c6b21f4caa1cd1e32357df3ad09905cc5abc0bd0192afd74bf80643 +TEST= 336 +KEY= 4861160e818ce22221e7d48879d5f76cd7e1a0c3c14fe936 +PT= c38bbcae9c6b21f4caa1cd1e32357df3ad09905cc5abc0bd0192afd74bf80643 +CT= b59cd89d96246adbee65dc1a309296c2285192d7e2bce872ce2454535bf50165 +TEST= 337 +KEY= a604ca14b11e74e009b6465f9b691f1e19c5f4909abae853 +PT= b59cd89d96246adbee65dc1a309296c2285192d7e2bce872ce2454535bf50165 +CT= 03123a15028ba844eebe1265a490eb26b45cf02255723d412b7408fbe76f1d83 +TEST= 338 +KEY= 48bad871158e9fc6bdeab67dce1b225f32b1fc6b7dd5f5d0 +PT= 03123a15028ba844eebe1265a490eb26b45cf02255723d412b7408fbe76f1d83 +CT= b773f3b223a094e07a4c29aa40ec76d10f0ff23ef9e59496f2f200e19c4d6427 +TEST= 339 +KEY= 32f6f1db5562e917b2e5444337feb6c9c043fc8ae19891f7 +PT= b773f3b223a094e07a4c29aa40ec76d10f0ff23ef9e59496f2f200e19c4d6427 +CT= b2b5d1387b121190011b35d4616045f76eab5b8745220c0c9c1d7de2bbf52096 +TEST= 340 +KEY= 33edc40f3402ace0dc4e1fc472dcbac55c5e81685a6db161 +PT= b2b5d1387b121190011b35d4616045f76eab5b8745220c0c9c1d7de2bbf52096 +CT= e98815e4a82d9deb90230c17960d7b8c2eca84352c2c79ea90a722794e6171d1 +TEST= 341 +KEY= a3cec818a20fd76cf2849bf15ef0c32fccf9a311140cc0b0 +PT= e98815e4a82d9deb90230c17960d7b8c2eca84352c2c79ea90a722794e6171d1 +CT= 6a13475bb05122b6570bf07c28f20f6b71ab518babd3df108c61b83de3782dd6 +TEST= 342 +KEY= f4c538648afdd807832fca7af5231c3f40981b2cf774ed66 +PT= 6a13475bb05122b6570bf07c28f20f6b71ab518babd3df108c61b83de3782dd6 +CT= bc75c559a7b45f735e08ea1e340c8c89593f1e2ecb7bab1f101cacce42a3f1eb +TEST= 343 +KEY= aacdd27abef1548eda10d4543e58b7205084b7e2b5d71c8d +PT= bc75c559a7b45f735e08ea1e340c8c89593f1e2ecb7bab1f101cacce42a3f1eb +CT= 03e823336a446b3d270e644d08fb09b932917279c4ff7464152b0434f76d245c +TEST= 344 +KEY= 8dc3b637b60a5d37e881a62dfaa7c34445afb3d642ba38d1 +PT= 03e823336a446b3d270e644d08fb09b932917279c4ff7464152b0434f76d245c +CT= b2131c2ba59fbc7e610894cc8104ad33155a6b94ca0d5f4119abca5e82933029 +TEST= 345 +KEY= eccb22fb370ef004fddbcdb930aa9c055c047988c02908f8 +PT= b2131c2ba59fbc7e610894cc8104ad33155a6b94ca0d5f4119abca5e82933029 +CT= 9f72227734407171cb6742a488023bbd27b38a4b79d4a081c9018638ff44d3f5 +TEST= 346 +KEY= 27ac605fbf0ccbb9da6847f2497e3c849505ffb03f6ddb0d +PT= 9f72227734407171cb6742a488023bbd27b38a4b79d4a081c9018638ff44d3f5 +CT= bef796384af4456b486e7a7c0620cf86214a1521f689f997d7c257a98598f3b9 +TEST= 347 +KEY= 6fc21a23b92c043ffb2252d3bff7c51342c7a819baf528b4 +PT= bef796384af4456b486e7a7c0620cf86214a1521f689f997d7c257a98598f3b9 +CT= fd1e17ebb4704cb1b813b573e68f11116f22934f4871515b6bd93ce48aef7a1a +TEST= 348 +KEY= d7d1af505fa3152e9400c19cf7869448291e94fd301a52ae +PT= fd1e17ebb4704cb1b813b573e68f11116f22934f4871515b6bd93ce48aef7a1a +CT= 540a19ffd189fcdadda04ac2b9f81cd5f9a5243da08f9e5e62e3f9b0c4a69213 +TEST= 349 +KEY= 0a71e592e65b09fb6da5e5a157090a164bfd6d4df4bcc0bd +PT= 540a19ffd189fcdadda04ac2b9f81cd5f9a5243da08f9e5e62e3f9b0c4a69213 +CT= 6ccd533140b7e37e75f249fff4462e95161c2b04ff975458ba19d70e1322badd +TEST= 350 +KEY= 7f83ac6d121d276e7bb9cea5a89e5e4ef1e4ba43e79e7a60 +PT= 6ccd533140b7e37e75f249fff4462e95161c2b04ff975458ba19d70e1322badd +CT= 2a709c61bbd7a97b5aa77d187e8d2bc87e71fe1c188b0ea74c5b8819eebde089 +TEST= 351 +KEY= 2524d1756c900ca605c830b9b01550e9bdbf325a09239ae9 +PT= 2a709c61bbd7a97b5aa77d187e8d2bc87e71fe1c188b0ea74c5b8819eebde089 +CT= 93b0648bcc8a1c11038cf01b93beff116fa3cd8ec9f7a059d337c107f2a0ce5e +TEST= 352 +KEY= 26a8216eff2ef3b76a6bfd3779e2f0b06e88f35dfb8354b7 +PT= 93b0648bcc8a1c11038cf01b93beff116fa3cd8ec9f7a059d337c107f2a0ce5e +CT= d96277cf0b1c28f45acc6a73586c4e5d20cdd3eb2ddd8876c0a61f78dbad9c52 +TEST= 353 +KEY= 7c644b1da742bdea4aa62edc543f78c6ae2eec25202ec8e5 +PT= d96277cf0b1c28f45acc6a73586c4e5d20cdd3eb2ddd8876c0a61f78dbad9c52 +CT= dae00e3395687b175bcf88acfa4ba2f19b7879e5426ae2bf0492579217ebb66b +TEST= 354 +KEY= 27abc3b15d091f1bd1de573916559a79aabcbbb737c57e8e +PT= dae00e3395687b175bcf88acfa4ba2f19b7879e5426ae2bf0492579217ebb66b +CT= eb00bc63193f851b6996051f47f2990f3f0db709167f45455c10dc706333ed86 +TEST= 355 +KEY= 4e3dc6ae1afb8614eed3e030002adf3cf6ac67c754f69308 +PT= eb00bc63193f851b6996051f47f2990f3f0db709167f45455c10dc706333ed86 +CT= a85828b661df59a749a5c9f56c4037831a599afd8764a38138e72cb784c8accf +TEST= 356 +KEY= 07980f5b76bbb197f48a7acd874e7cbdce4b4b70d03e3fc7 +PT= a85828b661df59a749a5c9f56c4037831a599afd8764a38138e72cb784c8accf +CT= c2a999cb89b2666a410e561c8db9c89ebeaee956b208e427f9683d3968b7f46d +TEST= 357 +KEY= 46965947fb0279094a24939b3546989a37237649b889cbaa +PT= c2a999cb89b2666a410e561c8db9c89ebeaee956b208e427f9683d3968b7f46d +CT= 83dbea0aa9660f59dddc47ecf764d94986a4bf3624f9619c68a21853cb544035 +TEST= 358 +KEY= 9b4a1eab0c66a040cc802cad11bff9065f816e1a73dd8b9f +PT= 83dbea0aa9660f59dddc47ecf764d94986a4bf3624f9619c68a21853cb544035 +CT= a39494da7c12d45a87a124c3dd0f208767fe1018d79c04e87b9ca1dfa059204a +TEST= 359 +KEY= 1ceb3a68d16980c7ab7e3cb5c623fdee241dcfc5d384abd5 +PT= a39494da7c12d45a87a124c3dd0f208767fe1018d79c04e87b9ca1dfa059204a +CT= dcf512f262e8f408a11bf59053aa38ed887d6fba10d248b34c03bee715973ba9 +TEST= 360 +KEY= bdf0cff882c3b82a2303530fd6f1b55d681e7122c613907c +PT= dcf512f262e8f408a11bf59053aa38ed887d6fba10d248b34c03bee715973ba9 +CT= 63fb4c1a19c0b989a388ca31e9a19aa44171904482526cfc498b30ee3d3dbd1b +TEST= 361 +KEY= 1e7805c96b62228e6272c34b54a3d9a1219541ccfb2e2d67 +PT= 63fb4c1a19c0b989a388ca31e9a19aa44171904482526cfc498b30ee3d3dbd1b +CT= 5ab550f69c3cddc846263961f19030d6b0555dd6672b426caab84f19b29e5e4c +TEST= 362 +KEY= 585e3ca89af21258d2279e9d33889bcd8b2d0ed549b0732b +PT= 5ab550f69c3cddc846263961f19030d6b0555dd6672b426caab84f19b29e5e4c +CT= e1697481e8ccb651754a16fe49e3610e9dab6fa32c3c1daaafc4a520bf2f1053 +TEST= 363 +KEY= 2d142a56d31173564f8cf13e1fb4866724e9abf5f69f6378 +PT= e1697481e8ccb651754a16fe49e3610e9dab6fa32c3c1daaafc4a520bf2f1053 +CT= 3fddf43642915d4d1817248e6108d066b1257ed9884cb39f43f67cc95e3e1c61 +TEST= 364 +KEY= 35030ed8b219a330fea98fe797f835f8671fd73ca8a17f19 +PT= 3fddf43642915d4d1817248e6108d066b1257ed9884cb39f43f67cc95e3e1c61 +CT= 8053b8a8fbd5d902a60d7b8293784853e2226880194e20e81f0fe98b8b3f4600 +TEST= 365 +KEY= 930e755a2161eb631c8be7678eb6151078103eb7239e3919 +PT= 8053b8a8fbd5d902a60d7b8293784853e2226880194e20e81f0fe98b8b3f4600 +CT= 055dae955130bf33113372baed91e55afe632790dcd4e529666f4f9fd54b7087 +TEST= 366 +KEY= 823d07e0ccf00e39e2e8c0f75262f0391e7f7128f6d5499e +PT= 055dae955130bf33113372baed91e55afe632790dcd4e529666f4f9fd54b7087 +CT= 7dae2a6c3dd54b68825817323c68e5764c1a51ebc8015cacab06bad9d0476b92 +TEST= 367 +KEY= 006510d2f098eb4faef2911c9a63ac95b579cbf12692220c +PT= 7dae2a6c3dd54b68825817323c68e5764c1a51ebc8015cacab06bad9d0476b92 +CT= 03eca116952c79866487b1488b2bf9a66462ee72f427546f5b6bbeb35a8a8914 +TEST= 368 +KEY= 64e2a19a7bb312e9ca907f6e6e44f8faee1275427c18ab18 +PT= 03eca116952c79866487b1488b2bf9a66462ee72f427546f5b6bbeb35a8a8914 +CT= e5666b97cd695ea6560e0bfe8449cf165a32db14fa27c6f3c7cc6f14f4e640f6 +TEST= 369 +KEY= 32ecaa64fffaddff90a2a47a94633e0929de1a5688feebee +PT= e5666b97cd695ea6560e0bfe8449cf165a32db14fa27c6f3c7cc6f14f4e640f6 +CT= daaf9124d730844bc33561408ee16807b848d4c4def06f303b54107c98308cb8 +TEST= 370 +KEY= f1d9cb24711bb5f828ea70be4a935139128a0a2a10ce6756 +PT= daaf9124d730844bc33561408ee16807b848d4c4def06f303b54107c98308cb8 +CT= 6322b91e6670bab0b66aed40e89aabdacfc3406a405dac7f51712d530a6f41e4 +TEST= 371 +KEY= 47b3266499811e22e72930d40acefd4643fb27791aa126b2 +PT= 6322b91e6670bab0b66aed40e89aabdacfc3406a405dac7f51712d530a6f41e4 +CT= 76fcb7e725cf5ec10b6d4c56685d4dd945659a231303f8ecf7df1b15aaae593c +TEST= 372 +KEY= 4cde6a32f1dc53fba24caaf719cd05aab4243c6cb00f7f8e +PT= 76fcb7e725cf5ec10b6d4c56685d4dd945659a231303f8ecf7df1b15aaae593c +CT= 4ac9cec75a559ddb4b6b5ff38e4cb21cfacbe76b5b87928a4a1296b4c9a449f1 +TEST= 373 +KEY= 07b535c17f90e1e758874d9c424a9720fe36aad879ab367f +PT= 4ac9cec75a559ddb4b6b5ff38e4cb21cfacbe76b5b87928a4a1296b4c9a449f1 +CT= 7f550ea50d8492188b1cae682f97cd30c5ffed929b4ac90feadbcfa669800b3f +TEST= 374 +KEY= 8ca99ba950072cd79d78a00ed9005e2f14ed657e102b3d40 +PT= 7f550ea50d8492188b1cae682f97cd30c5ffed929b4ac90feadbcfa669800b3f +CT= 482000b1c64d2cea9a9b565b1f3eaf90b6035f090907c854c69b7ccf168d5d3a +TEST= 375 +KEY= 1632cdf24f3983472b7bff07d007967bd27619b106a6607a +PT= 482000b1c64d2cea9a9b565b1f3eaf90b6035f090907c854c69b7ccf168d5d3a +CT= cd77d37eb7451f88b294180d143c398d5852eb05cc25231a6b0e86897657307a +TEST= 376 +KEY= a4a6d5ff5b05baca732914021c22b561b9789f3870f15000 +PT= cd77d37eb7451f88b294180d143c398d5852eb05cc25231a6b0e86897657307a +CT= 67471977b375505ce156d180ac42bbf64a3ce8805d62d398646793a730863183 +TEST= 377 +KEY= 45f0047ff747013c3915fc82414066f9dd1f0c9f40776183 +PT= 67471977b375505ce156d180ac42bbf64a3ce8805d62d398646793a730863183 +CT= 0860983d18bf6aaf633d0360b35ca4896340f9ac9af4207eed94a06f1bbb67b6 +TEST= 378 +KEY= 26cd071f441ba5b55a55052edbb44687308bacf05bcc0635 +PT= 0860983d18bf6aaf633d0360b35ca4896340f9ac9af4207eed94a06f1bbb67b6 +CT= a9aace81b90ecee3ea23dd5f5ad4defee48a7ca74439e4ce0e898533b1272ce2 +TEST= 379 +KEY= cceeda401ecf7b4bbedf79899f8da2493e0229c3eaeb2ad7 +PT= a9aace81b90ecee3ea23dd5f5ad4defee48a7ca74439e4ce0e898533b1272ce2 +CT= 0f0e43e97f7c61f231b39713e02b85a956dec00eed96c63807216148d43f952a +TEST= 380 +KEY= fd5d4d53fee4fee2e801b987721b64713923488b3ed4bffd +PT= 0f0e43e97f7c61f231b39713e02b85a956dec00eed96c63807216148d43f952a +CT= e00ced8e60901ba0fc5469983d46fa447be6ee431e194ae959c065b9f7dd5c86 +TEST= 381 +KEY= 010924cbc3a204a693e757c46c022e9860e32d32c909e37b +PT= e00ced8e60901ba0fc5469983d46fa447be6ee431e194ae959c065b9f7dd5c86 +CT= 9ea3ec27b668a03f18ae951fedc9b52a0714274aa4c2042ecf067031a82601c5 +TEST= 382 +KEY= 19a7b1d42e6bb18c94f3708ec8c02ab6afe55d03612fe2be +PT= 9ea3ec27b668a03f18ae951fedc9b52a0714274aa4c2042ecf067031a82601c5 +CT= 5bc01464f7a3b0871949130a11a29017a33e2fe0ec20ebf90b61f01799496b96 +TEST= 383 +KEY= 00eea2de3fc9219b37cd5f6e24e0c14fa484ad14f8668928 +PT= 5bc01464f7a3b0871949130a11a29017a33e2fe0ec20ebf90b61f01799496b96 +CT= 15c76c8fdf855215f088e9c5162faf1720029df8fdb620b7ca9d4169b0d18c8f +TEST= 384 +KEY= f0664b1b29e68e8c17cfc296d956e1f86e19ec7d48b705a7 +PT= 15c76c8fdf855215f088e9c5162faf1720029df8fdb620b7ca9d4169b0d18c8f +CT= dd6a6aad9c1d73a20fe96439732b46bbd29d1ad8479b40f81580718344620ccb +TEST= 385 +KEY= ff8f2f225acdc837c552d84e9ecda1007b999dfe0cd5096c +PT= dd6a6aad9c1d73a20fe96439732b46bbd29d1ad8479b40f81580718344620ccb +CT= 02f897bf6910d6b9a21cd385b7ae0535a1d55668b8785c323120300e2ef4bd58 +TEST= 386 +KEY= 5d93fca7ed63cd0264878e2626b5fd324ab9adf02221b434 +PT= 02f897bf6910d6b9a21cd385b7ae0535a1d55668b8785c323120300e2ef4bd58 +CT= ba3e0647272d8e10d44182ab5c58a86637aab89498e7605d0ea4b6c4f7976995 +TEST= 387 +KEY= 89d27e0cb13b6564532d36b2be529d6f441d1b34d5b6dda1 +PT= ba3e0647272d8e10d44182ab5c58a86637aab89498e7605d0ea4b6c4f7976995 +CT= 3683e894dbaf1b4b6aa8c314274db6b4805c6abc50b61aa9d2e8eff69a82ddf2 +TEST= 388 +KEY= e37abd189676d3d0d3715c0eeee487c696f5f4c24f340053 +PT= 3683e894dbaf1b4b6aa8c314274db6b4805c6abc50b61aa9d2e8eff69a82ddf2 +CT= 5e357b7a0e050fcddb7516e5d18a1736d38343f31ae990784c1e7a87b9af4cd5 +TEST= 389 +KEY= 380fabfd47fcc4e600f21ffdf40d17bedaeb8e45f69b4c86 +PT= 5e357b7a0e050fcddb7516e5d18a1736d38343f31ae990784c1e7a87b9af4cd5 +CT= e761ad86503b9a1bc348664087ed8e458a1369eaf3c6f0db47b9107f75b5f727 +TEST= 390 +KEY= fb47cdbdc0114aa38ae1761707cbe7659d529e3a832ebba1 +PT= e761ad86503b9a1bc348664087ed8e458a1369eaf3c6f0db47b9107f75b5f727 +CT= 2a64772753974067b3d6358c0ae42a9cd29525cf3298764451f4cf67966ba9f4 +TEST= 391 +KEY= 4891f831caf5603f587453d835539121cca6515d15451255 +PT= 2a64772753974067b3d6358c0ae42a9cd29525cf3298764451f4cf67966ba9f4 +CT= 805bf875e777fa6f57e29c107123e397c83364c22f8c036b522b09d11ed9ab11 +TEST= 392 +KEY= 1f736421bbd683a89047371a1adf924a9e8d588c0b9cb944 +PT= 805bf875e777fa6f57e29c107123e397c83364c22f8c036b522b09d11ed9ab11 +CT= dc1aed077f1c1d8a265a4b0310ebc1f48f1341acd0fa5cf49da1207f0f4500de +TEST= 393 +KEY= 39292f22ab3d425c1f5476b6ca25cebe032c78f304d9b99a +PT= dc1aed077f1c1d8a265a4b0310ebc1f48f1341acd0fa5cf49da1207f0f4500de +CT= 5b77787baa890cff2980f79d5ca1850ccfaa40326c06b351f675715aeef9ccb7 +TEST= 394 +KEY= 10a9d8bff79cc750d0fe3684a6237deff55909a9ea20752d +PT= 5b77787baa890cff2980f79d5ca1850ccfaa40326c06b351f675715aeef9ccb7 +CT= 6a31971310c96f051a1b3c9d481281a9c6a7f8e49a873ed32ee2addd0a691107 +TEST= 395 +KEY= 0ab2e422bf8e46f91659ce603ca4433cdbbba474e049642a +PT= 6a31971310c96f051a1b3c9d481281a9c6a7f8e49a873ed32ee2addd0a691107 +CT= 6e69dc636084a0156a9b363458806b53a26ae9d0956a6e423c6da2151cc1c162 +TEST= 396 +KEY= 6029d216e70e2daab43327b0a9ce2d7ee7d60661fc88a548 +PT= 6e69dc636084a0156a9b363458806b53a26ae9d0956a6e423c6da2151cc1c162 +CT= aec8f481d0284e6243622fabdb269f513cefdba0546819f41763c71cb30529db +TEST= 397 +KEY= 234bfdbd3c28b2fb88dcfc10fda6348af0b5c17d4f8d8c93 +PT= aec8f481d0284e6243622fabdb269f513cefdba0546819f41763c71cb30529db +CT= a8f8b6e7e8ba1b70d8a1497683152f098b5ecbd9fd68884f303ef21f0f34b793 +TEST= 398 +KEY= fbeab4cbbf3d9df2038237c900cebcc5c08b336240b93b00 +PT= a8f8b6e7e8ba1b70d8a1497683152f098b5ecbd9fd68884f303ef21f0f34b793 +CT= bf654ecfad06d556832b82f534984a67727268d9adf26f0cb6700e498a3f9502 +TEST= 399 +KEY= 78c1363e8ba5d79571f05f10ad3cd3c976fb3d2bca86ae02 +PT= bf654ecfad06d556832b82f534984a67727268d9adf26f0cb6700e498a3f9502 +CT= 7ad9ed64419c030d6fb7837e5d640287c29fa28bd461ffcf5cf69cec7f169aa3 diff --git a/flint/test/testvals/ecbme88.txt b/flint/test/testvals/ecbme88.txt new file mode 100644 index 0000000..89a3bde --- /dev/null +++ b/flint/test/testvals/ecbme88.txt @@ -0,0 +1,1610 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Monte Carlo (Encryption) Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbme88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 7c656f7976040db2f80ba6001f1cc2900f356c1488ce8f4b0ef23b536576f3f9 +TEST= 1 +KEY= 7c656f7976040db2f80ba6001f1cc2900f356c1488ce8f4b0ef23b536576f3f9 +PT= 7c656f7976040db2f80ba6001f1cc2900f356c1488ce8f4b0ef23b536576f3f9 +CT= 319086bcce91ab77e11705b33f324af1a98154dce99d2b4812a7232f626fa943 +TEST= 2 +KEY= 4df5e9c5b895a6c5191ca3b3202e8861a6b438c86153a4031c55187c07195aba +PT= 319086bcce91ab77e11705b33f324af1a98154dce99d2b4812a7232f626fa943 +CT= fa109e3424910177b0f110b66e2e0efeded64ed18d4ce6e79d8a9f033d93d0ba +TEST= 3 +KEY= b7e577f19c04a7b2a9edb3054e00869f78627619ec1f42e481df877f3a8a8a00 +PT= fa109e3424910177b0f110b66e2e0efeded64ed18d4ce6e79d8a9f033d93d0ba +CT= f965517f0b2836c3abd7688101095d2f6661ce56022456e6c209f59a8f356fd0 +TEST= 4 +KEY= 4e80268e972c9171023adb844f09dbb01e03b84fee3b140243d672e5b5bfe5d0 +PT= f965517f0b2836c3abd7688101095d2f6661ce56022456e6c209f59a8f356fd0 +CT= e946882e06dd5605e73321cffd4024b0068710c6c291cd1c244f704256b4e700 +TEST= 5 +KEY= a7c6aea091f1c774e509fa4bb249ff001884a8892caad91e679902a7e30b02d0 +PT= e946882e06dd5605e73321cffd4024b0068710c6c291cd1c244f704256b4e700 +CT= b77568670cb0b1c1211a909c56fd838f03cb1b27359df7d53a6d3261e224ccfa +TEST= 6 +KEY= 10b3c6c79d4176b5c4136ad7e4b47c8f1b4fb3ae19372ecb5df430c6012fce2a +PT= b77568670cb0b1c1211a909c56fd838f03cb1b27359df7d53a6d3261e224ccfa +CT= 65c1de27a8ebea82b75d5691674e99b2c9976f9be12b9a9a3529a9083528d159 +TEST= 7 +KEY= 757218e035aa9c37734e3c4683fae53dd2d8dc35f81cb45168dd99ce34071f73 +PT= 65c1de27a8ebea82b75d5691674e99b2c9976f9be12b9a9a3529a9083528d159 +CT= 31abb6399d72ec0266e430ca0d529631d979211b747112e9877d394b2892f843 +TEST= 8 +KEY= 44d9aed9a8d8703515aa0c8c8ea8730c0ba1fd2e8c6da6b8efa0a0851c95e730 +PT= 31abb6399d72ec0266e430ca0d529631d979211b747112e9877d394b2892f843 +CT= b63500449aff142975cc7f082ebdad16541e3df19ec72f225f9d91b4e31d75f6 +TEST= 9 +KEY= f2ecae9d3227641c60667384a015de1a5fbfc0df12aa899ab03d3131ff8892c6 +PT= b63500449aff142975cc7f082ebdad16541e3df19ec72f225f9d91b4e31d75f6 +CT= 0a60e5b1463e4d9676ccd6f02c72a560676a5378a4990299d084d359703829bc +TEST= 10 +KEY= f88c4b2c7419298a16aaa5748c677b7a38d593a7b6338b0360b9e2688fb0bb7a +PT= 0a60e5b1463e4d9676ccd6f02c72a560676a5378a4990299d084d359703829bc +CT= 19046252569244c6cabb95980efe9d62fe4a229c4071db43798af5992a8f1511 +TEST= 11 +KEY= e188297e228b6d4cdc1130ec8299e618c69fb13bf6425040193317f1a53fae6b +PT= 19046252569244c6cabb95980efe9d62fe4a229c4071db43798af5992a8f1511 +CT= 6e9b408f8d4bc7840b7b9c7f90febbddb473703e874cd08ce241e71ca2d7dbf8 +TEST= 12 +KEY= 8f1369f1afc0aac8d76aac9312675dc572ecc105710e80ccfb72f0ed07e87593 +PT= 6e9b408f8d4bc7840b7b9c7f90febbddb473703e874cd08ce241e71ca2d7dbf8 +CT= 287b93647fd51d4b8f6f34ad1ad487c3827e7406eade3ec74e419e9431662e90 +TEST= 13 +KEY= a768fa95d015b7835805983e08b3da06f092b5039bd0be0bb5336e79368e5b03 +PT= 287b93647fd51d4b8f6f34ad1ad487c3827e7406eade3ec74e419e9431662e90 +CT= 8cfe337f496ec251d6c3afe3a742e82e92b2a72e051c207ad7c38493c0f4c26c +TEST= 14 +KEY= 2b96c9ea997b75d28ec637ddaff132286220122d9ecc9e7162f0eaeaf67a996f +PT= 8cfe337f496ec251d6c3afe3a742e82e92b2a72e051c207ad7c38493c0f4c26c +CT= a02eb9349bf7bae014ff0f38eed242b4d4d5bc99089b0306364e2c520b8c187c +TEST= 15 +KEY= 8bb870de028ccf329a3938e54123709cb6f5aeb496579d7754bec6b8fdf68113 +PT= a02eb9349bf7bae014ff0f38eed242b4d4d5bc99089b0306364e2c520b8c187c +CT= 1a2608d7a2fef41b179692ff13f9ec537dc8f4e0732c6db4e9001ed524562021 +TEST= 16 +KEY= 919e7809a0723b298dafaa1a52da9ccfcb3d5a54e57bf0c3bdbed86dd9a0a132 +PT= 1a2608d7a2fef41b179692ff13f9ec537dc8f4e0732c6db4e9001ed524562021 +CT= f485bff002e0c498e644e3bf5eeabca83285ce6f4d4f03bf27ddf76e09c27697 +TEST= 17 +KEY= 651bc7f9a292ffb16beb49a50c302067f9b8943ba834f37c9a632f03d062d7a5 +PT= f485bff002e0c498e644e3bf5eeabca83285ce6f4d4f03bf27ddf76e09c27697 +CT= 7de9bde5257c19646edcf80f443771a477742dc5a67b93708f267d6c26c49c3f +TEST= 18 +KEY= 18f27a1c87eee6d50537b1aa480751c38eccb9fe0e4f600c1545526ff6a64b9a +PT= 7de9bde5257c19646edcf80f443771a477742dc5a67b93708f267d6c26c49c3f +CT= e231fbc5b98cfbbf7627a3850b83dc90d4b1d16a80b3d7a4385d3f4b1504e7f0 +TEST= 19 +KEY= fac381d93e621d6a7310122f43848d535a7d68948efcb7a82d186d24e3a2ac6a +PT= e231fbc5b98cfbbf7627a3850b83dc90d4b1d16a80b3d7a4385d3f4b1504e7f0 +CT= 8c2d8230caed5da6483c328232468fb5ce5c687cd5b6062017da8d6cf07e8e1e +TEST= 20 +KEY= 76ee03e9f48f40cc3b2c20ad71c202e6942100e85b4ab1883ac2e04813dc2274 +PT= 8c2d8230caed5da6483c328232468fb5ce5c687cd5b6062017da8d6cf07e8e1e +CT= 08d9ee452419bd1b821967454b6d30a93b750d8442e6d03c8bbbb57b6dc3e4a2 +TEST= 21 +KEY= 7e37edacd096fdd7b93547e83aaf324faf540d6c19ac61b4b17955337e1fc6d6 +PT= 08d9ee452419bd1b821967454b6d30a93b750d8442e6d03c8bbbb57b6dc3e4a2 +CT= bc5ece6df5554be1f85f0e9a63c2b209533fdd4cfbfd7ebdf57f6f28311d5a78 +TEST= 22 +KEY= c26923c125c3b636416a4972596d8046fc6bd020e2511f0944063a1b4f029cae +PT= bc5ece6df5554be1f85f0e9a63c2b209533fdd4cfbfd7ebdf57f6f28311d5a78 +CT= 047eeecf206605a460bd6f79e4d15c5a4d4b1e6698f3cd250043fd78541b3dbe +TEST= 23 +KEY= c617cd0e05a5b39221d7260bbdbcdc1cb120ce467aa2d22c4445c7631b19a110 +PT= 047eeecf206605a460bd6f79e4d15c5a4d4b1e6698f3cd250043fd78541b3dbe +CT= 5b4cd063eb60575c0de3b0b38df8c47df59bdec11f8a18f9655a8eafc2fcd35e +TEST= 24 +KEY= 9d5b1d6deec5e4ce2c3496b83044186144bb10876528cad5211f49ccd9e5724e +PT= 5b4cd063eb60575c0de3b0b38df8c47df59bdec11f8a18f9655a8eafc2fcd35e +CT= 7f5b379807b895fa53fe17ec6a4178241c23af0771691b556ffeb6855635116c +TEST= 25 +KEY= e2002af5e97d71347fca81545a0560455898bf801441d1804ee1ff498fd06322 +PT= 7f5b379807b895fa53fe17ec6a4178241c23af0771691b556ffeb6855635116c +CT= d7d8dd6eb290c913d252db58f025cb925d1e76d4585d9188539bae497e11a100 +TEST= 26 +KEY= 35d8f79b5bedb827ad985a0caa20abd70586c9544c1c40081d7a5100f1c1c222 +PT= d7d8dd6eb290c913d252db58f025cb925d1e76d4585d9188539bae497e11a100 +CT= f639d1fd78bf6a2bb6f6ac90993c38ca5c7028208063f3f1be39bd4417168305 +TEST= 27 +KEY= c3e126662352d20c1b6ef69c331c931d59f6e174cc7fb3f9a343ec44e6d74127 +PT= f639d1fd78bf6a2bb6f6ac90993c38ca5c7028208063f3f1be39bd4417168305 +CT= 6f31a6292ec8e9b10c3cb66c9c0b2a797bca54dcc2b5117eb3fcfdd243d4713c +TEST= 28 +KEY= acd0804f0d9a3bbd175240f0af17b964223cb5a80ecaa28710bf1196a503301b +PT= 6f31a6292ec8e9b10c3cb66c9c0b2a797bca54dcc2b5117eb3fcfdd243d4713c +CT= bc3d66413db4c3d6c61cf1386dc9cf5de7ff4a7df512341ffee522033f58aaad +TEST= 29 +KEY= 10ede60e302ef86bd14eb1c8c2de7639c5c3ffd5fbd89698ee5a33959a5b9ab6 +PT= bc3d66413db4c3d6c61cf1386dc9cf5de7ff4a7df512341ffee522033f58aaad +CT= b3d6a3c06c7c5f069ebc39e47e247cfcea3cba82a8c5881ee4720344b1d4a907 +TEST= 30 +KEY= a33b45ce5c52a76d4ff2882cbcfa0ac52fff4557531d1e860a2830d12b8f33b1 +PT= b3d6a3c06c7c5f069ebc39e47e247cfcea3cba82a8c5881ee4720344b1d4a907 +CT= c7860ab02657f85827f5b9a536f1cfce97de462fdfd149864fe8d4f833499d6a +TEST= 31 +KEY= 64bd4f7e7a055f35680731898a0bc50bb82103788ccc570045c0e42918c6aedb +PT= c7860ab02657f85827f5b9a536f1cfce97de462fdfd149864fe8d4f833499d6a +CT= caae1d0be829e713609760043d9fc61f02983ed681d224b3077dc98e0eba3dcc +TEST= 32 +KEY= ae135275922cb8260890518db7940314bab93dae0d1e73b342bd2da7167c9317 +PT= caae1d0be829e713609760043d9fc61f02983ed681d224b3077dc98e0eba3dcc +CT= d8622ccacb6775a5411553d5ee569f57bfab12077f48e25e043ac1ca4402b7ad +TEST= 33 +KEY= 76717ebf594bcd834985025859c29c4305122fa9725691ed4687ec6d527e24ba +PT= d8622ccacb6775a5411553d5ee569f57bfab12077f48e25e043ac1ca4402b7ad +CT= e9970e16b1f12792ad8fc48377f57920b04a728c851205a0c758479690d4f8f7 +TEST= 34 +KEY= 9fe670a9e8baea11e40ac6db2e37e563b5585d25f744944d81dfabfbc2aadc4d +PT= e9970e16b1f12792ad8fc48377f57920b04a728c851205a0c758479690d4f8f7 +CT= 30233cbbbdaae5a21755f6dab334ab622df33a800f4a0daa6c8a3b4e51f8d8af +TEST= 35 +KEY= afc54c1255100fb3f35f30019d034e0198ab67a5f80e99e7ed5590b5935204e2 +PT= 30233cbbbdaae5a21755f6dab334ab622df33a800f4a0daa6c8a3b4e51f8d8af +CT= d04a0ad3e83c84859f75a575755fa1e7b8f691baf97877f52f2ad9504c892269 +TEST= 36 +KEY= 7f8f46c1bd2c8b366c2a9574e85cefe6205df61f0176ee12c27f49e5dfdb268b +PT= d04a0ad3e83c84859f75a575755fa1e7b8f691baf97877f52f2ad9504c892269 +CT= 82db3649675e6e30b6da0123a4a0ac571044b4379a19d76ada74dcf1eee02221 +TEST= 37 +KEY= fd547088da72e506daf094574cfc43b1301942289b6f3978180b9514313b04aa +PT= 82db3649675e6e30b6da0123a4a0ac571044b4379a19d76ada74dcf1eee02221 +CT= 1537f3b3fce517ce8bc751cbbfad0e8a4e2d28de42a3dd666755ed5498422d8c +TEST= 38 +KEY= e863833b2697f2c85137c59cf3514d3b7e346af6d9cce41e7f5e7840a9792926 +PT= 1537f3b3fce517ce8bc751cbbfad0e8a4e2d28de42a3dd666755ed5498422d8c +CT= b05ab271315dc7f722058882f9563f107f62dde5fd60f3e643ab74d9b681a396 +TEST= 39 +KEY= 5839314a17ca353f73324d1e0a07722b0156b71324ac17f83cf50c991ff88ab0 +PT= b05ab271315dc7f722058882f9563f107f62dde5fd60f3e643ab74d9b681a396 +CT= c041cc1732cf48d54447f71cf8a2affe09fc3ad75844ed6af19ca35cfa4bfdc3 +TEST= 40 +KEY= 9878fd5d25057dea3775ba02f2a5ddd508aa8dc47ce8fa92cd69afc5e5b37773 +PT= c041cc1732cf48d54447f71cf8a2affe09fc3ad75844ed6af19ca35cfa4bfdc3 +CT= 3ef39459dde0c135dace23efb6df4398a1b8e4aa9089e3c50e7bc30ca762fb53 +TEST= 41 +KEY= a68b6904f8e5bcdfedbb99ed447a9e4da912696eec611957c3126cc942d18c20 +PT= 3ef39459dde0c135dace23efb6df4398a1b8e4aa9089e3c50e7bc30ca762fb53 +CT= a9ec1131df9a2a246d618a2f05a1110fa73f3482cf33895ec8b2edd0c445fd4d +TEST= 42 +KEY= 0f677835277f96fb80da13c241db8f420e2d5dec235290090ba081198694716d +PT= a9ec1131df9a2a246d618a2f05a1110fa73f3482cf33895ec8b2edd0c445fd4d +CT= a259c6661163dacb8eec439cb02172d1f34310e18b5865b8b60f2bf48a48b3dc +TEST= 43 +KEY= ad3ebe53361c4c300e36505ef1fafd93fd6e4d0da80af5b1bdafaaed0cdcc2b1 +PT= a259c6661163dacb8eec439cb02172d1f34310e18b5865b8b60f2bf48a48b3dc +CT= 47a427a6104e5a369cdecd31ac891e3678a4caabe191b94247ee436865c18616 +TEST= 44 +KEY= ea9a99f52652160692e89d6f5d73e3a585ca87a6499b4cf3fa41e985691d44a7 +PT= 47a427a6104e5a369cdecd31ac891e3678a4caabe191b94247ee436865c18616 +CT= e35fe60de77e5eb49d2d8c296801d656be4267c7fd01803b761b0c16b9d987bf +TEST= 45 +KEY= 09c57ff8c12c48b20fc51146357235f33b88e061b49accc88c5ae593d0c4c318 +PT= e35fe60de77e5eb49d2d8c296801d656be4267c7fd01803b761b0c16b9d987bf +CT= ce3590b8b6ba42f35db37035991dfda657f7e007a0d1227fe69b5aa8335e4ff3 +TEST= 46 +KEY= c7f0ef4077960a4152766173ac6fc8556c7f0066144beeb76ac1bf3be39a8ceb +PT= ce3590b8b6ba42f35db37035991dfda657f7e007a0d1227fe69b5aa8335e4ff3 +CT= 6ff041fe470795c093fe91402b242b8b007f8c40f4b6411bdc88dd8fe130cb6b +TEST= 47 +KEY= a800aebe30919f81c188f033874be3de6c008c26e0fdafacb64962b402aa4780 +PT= 6ff041fe470795c093fe91402b242b8b007f8c40f4b6411bdc88dd8fe130cb6b +CT= ca7b122810f7e94fad0d22fb80fcf921bb372a820cc9b53996324c1e7607441f +TEST= 48 +KEY= 627bbc96206676ce6c85d2c807b71affd737a6a4ec341a95207b2eaa74ad039f +PT= ca7b122810f7e94fad0d22fb80fcf921bb372a820cc9b53996324c1e7607441f +CT= b98f99c854d57e59867306c2e6913f2a7e2f35bc885cbc329ac87cfcf44a678b +TEST= 49 +KEY= dbf4255e74b30897eaf6d40ae12625d5a91893186468a6a7bab3525680e76414 +PT= b98f99c854d57e59867306c2e6913f2a7e2f35bc885cbc329ac87cfcf44a678b +CT= 41765c116b8f907f4b4657baa87043a6dc5f8e61f418cef0997e96e5c29e4f50 +TEST= 50 +KEY= 9a82794f1f3c98e8a1b083b04956667375471d799070685723cdc4b342792b44 +PT= 41765c116b8f907f4b4657baa87043a6dc5f8e61f418cef0997e96e5c29e4f50 +CT= 8b374da27a871b7cafb251569819276f4ce739bfaf7eb5de843501b83f24699f +TEST= 51 +KEY= 11b534ed65bb83940e02d2e6d14f411c39a024c63f0edd89a7f8c50b7d5d42db +PT= 8b374da27a871b7cafb251569819276f4ce739bfaf7eb5de843501b83f24699f +CT= afe2812b7f788e33213902caf8a3ad67db8f054e19333a544f01a7a8e7ca88ce +TEST= 52 +KEY= be57b5c61ac30da72f3bd02c29ecec7be22f2188263de7dde8f962a39a97ca15 +PT= afe2812b7f788e33213902caf8a3ad67db8f054e19333a544f01a7a8e7ca88ce +CT= b062f284cc9b015f2c1d13255cdda6089cb4cf48477293aa16e9b56ceae3575e +TEST= 53 +KEY= 0e354742d6580cf80326c30975314a737e9beec0614f7477fe10d7cf70749d4b +PT= b062f284cc9b015f2c1d13255cdda6089cb4cf48477293aa16e9b56ceae3575e +CT= e14a8b5ca4691a5a9a0083f3dfaea6f1339112556f54b81bbe3307c61d82b14e +TEST= 54 +KEY= ef7fcc1e723116a2992640faaa9fec824d0afc950e1bcc6c4023d0096df62c05 +PT= e14a8b5ca4691a5a9a0083f3dfaea6f1339112556f54b81bbe3307c61d82b14e +CT= ac37bbe47f15cfa12c0df6663f4214bedda5265070b68d42ee2d758ac4d7527a +TEST= 55 +KEY= 434877fa0d24d903b52bb69c95ddf83c90afdac57ead412eae0ea583a9217e7f +PT= ac37bbe47f15cfa12c0df6663f4214bedda5265070b68d42ee2d758ac4d7527a +CT= 5faef54d6faed4f7939c71194da28b627edae7c916201a6be2403fbe6f2f6792 +TEST= 56 +KEY= 1ce682b7628a0df426b7c785d87f735eee753d0c688d5b454c4e9a3dc60e19ed +PT= 5faef54d6faed4f7939c71194da28b627edae7c916201a6be2403fbe6f2f6792 +CT= d1514277ea91a082a5fd4164c1ba382104edb133aced6db604372220e090cd61 +TEST= 57 +KEY= cdb7c0c0881bad76834a86e119c54b7fea988c3fc46036f34879b81d269ed48c +PT= d1514277ea91a082a5fd4164c1ba382104edb133aced6db604372220e090cd61 +CT= a85ddca396453bef260e83e046c37fea1414456f513b344548f69df91c6398b8 +TEST= 58 +KEY= 65ea1c631e5e9699a54405015f063495fe8cc950955b02b6008f25e43afd4c34 +PT= a85ddca396453bef260e83e046c37fea1414456f513b344548f69df91c6398b8 +CT= 40d9e2805eb39a6ed8a54a6bf26977ec5e6fd85eaa2496c53128318c4c5775a0 +TEST= 59 +KEY= 2533fee340ed0cf77de14f6aad6f4379a0e3110e3f7f947331a7146876aa3994 +PT= 40d9e2805eb39a6ed8a54a6bf26977ec5e6fd85eaa2496c53128318c4c5775a0 +CT= 7fbc9fd99e20f4b8b29d1d67cda6a1ee2aafbf316cedcf7766fca84548d4459d +TEST= 60 +KEY= 5a8f613adecdf84fcf7c520d60c9e2978a4cae3f53925b04575bbc2d3e7e7c09 +PT= 7fbc9fd99e20f4b8b29d1d67cda6a1ee2aafbf316cedcf7766fca84548d4459d +CT= 73215da11d25aef03ca52339c809fad1279e5dd07d7abe5046f40a881c46ff45 +TEST= 61 +KEY= 29ae3c9bc3e856bff3d97134a8c01846add2f3ef2ee8e55411afb6a52238834c +PT= 73215da11d25aef03ca52339c809fad1279e5dd07d7abe5046f40a881c46ff45 +CT= a1c6028c799ef2133c1c0764108a5f6be9d8a51c1181a7be81e5e969653c3e3d +TEST= 62 +KEY= 88683e17ba76a4accfc57650b84a472d440a56f33f6942ea904a5fcc4704bd71 +PT= a1c6028c799ef2133c1c0764108a5f6be9d8a51c1181a7be81e5e969653c3e3d +CT= 3a61c490e6f54ccd328d07cd2db7792e820aa7e0a4a6b2e885ab26e1a6d6ab1d +TEST= 63 +KEY= b209fa875c83e861fd48719d95fd3e03c600f1139bcff00215e1792de1d2166c +PT= 3a61c490e6f54ccd328d07cd2db7792e820aa7e0a4a6b2e885ab26e1a6d6ab1d +CT= 3a9e913ca90fc18c154b464a19458764e09d2e058fdb9324c12422d47effc8ca +TEST= 64 +KEY= 88976bbbf58c29ede80337d78cb8b967269ddf1614146326d4c55bf99f2ddea6 +PT= 3a9e913ca90fc18c154b464a19458764e09d2e058fdb9324c12422d47effc8ca +CT= 1d755605cf4d7855c5196faead8db1b80fdddfec0809da67de923a65449fcd14 +TEST= 65 +KEY= 95e23dbe3ac151b82d1a5879213508df294000fa1c1db9410a57619cdbb213b2 +PT= 1d755605cf4d7855c5196faead8db1b80fdddfec0809da67de923a65449fcd14 +CT= 62b96b03ddd2f0c8644202c5592999dbfa9ec1de79bbe603a23e4d1ca56d3161 +TEST= 66 +KEY= f75b56bde713a17049585abc781c9104d3dec12465a65f42a8692c807edf22d3 +PT= 62b96b03ddd2f0c8644202c5592999dbfa9ec1de79bbe603a23e4d1ca56d3161 +CT= aac15fe4ec08db57f095a1919d04e2030589dc825c07869f7bac13c4386d56e8 +TEST= 67 +KEY= 5d9a09590b1b7a27b9cdfb2de5187307d6571da639a1d9ddd3c53f4446b2743b +PT= aac15fe4ec08db57f095a1919d04e2030589dc825c07869f7bac13c4386d56e8 +CT= e5a5fe95a5e2c8af10311c7d634bb5d80d737812f6f0fd1406663e0c9293d049 +TEST= 68 +KEY= b83ff7ccaef9b288a9fce7508653c6dfdb2465b4cf5124c9d5a30148d421a472 +PT= e5a5fe95a5e2c8af10311c7d634bb5d80d737812f6f0fd1406663e0c9293d049 +CT= d2ae70a4ad30d6259478c626fc50522b054d36adf4fd46fc158cfe7ef06b35be +TEST= 69 +KEY= 6a91876803c964ad3d8421767a0394f4de6953193bac6235c02fff36244a91cc +PT= d2ae70a4ad30d6259478c626fc50522b054d36adf4fd46fc158cfe7ef06b35be +CT= b24cbe48dd26823480cac9ac4ca4c018cfb6a8f5c1103a35af842f7d48860900 +TEST= 70 +KEY= d8dd3920deefe699bd4ee8da36a754ec11dffbecfabc58006fabd04b6ccc98cc +PT= b24cbe48dd26823480cac9ac4ca4c018cfb6a8f5c1103a35af842f7d48860900 +CT= a6a7fb2751ba2594ccbf4bcda4ec9c1f00d0b8829444467e92d5399ad847bcf1 +TEST= 71 +KEY= 7e7ac2078f55c30d71f1a317924bc8f3110f436e6ef81e7efd7ee9d1b48b243d +PT= a6a7fb2751ba2594ccbf4bcda4ec9c1f00d0b8829444467e92d5399ad847bcf1 +CT= 234fb1ecdbd12c043108c7abf4fe0da3527e232dc264ebdbe026144df3773437 +TEST= 72 +KEY= 5d3573eb5484ef0940f964bc66b5c55043716043ac9cf5a51d58fd9c47fc100a +PT= 234fb1ecdbd12c043108c7abf4fe0da3527e232dc264ebdbe026144df3773437 +CT= 60634cc573057385dd04a8f283f4d8eaf20d314a5c24d620b1880d9b838d68e1 +TEST= 73 +KEY= 3d563f2e27819c8c9dfdcc4ee5411dbab17c5109f0b82385acd0f007c47178eb +PT= 60634cc573057385dd04a8f283f4d8eaf20d314a5c24d620b1880d9b838d68e1 +CT= 34bff1ba4f89c3070b05ba20e3a0e0f24757aa8e3a52f71e854fb009e18ccfdb +TEST= 74 +KEY= 09e9ce9468085f8b96f8766e06e1fd48f62bfb87caead49b299f400e25fdb730 +PT= 34bff1ba4f89c3070b05ba20e3a0e0f24757aa8e3a52f71e854fb009e18ccfdb +CT= 8168b03dacedb6f19d5db74ad85c7b8be1b518763e32a8b5ab1f447b1ad58b68 +TEST= 75 +KEY= 88817ea9c4e5e97a0ba5c124debd86c3179ee3f1f4d87c2e828004753f283c58 +PT= 8168b03dacedb6f19d5db74ad85c7b8be1b518763e32a8b5ab1f447b1ad58b68 +CT= 3208243b046b311a1934e97b3e291a6365819173397c2a0e4546d582712c7848 +TEST= 76 +KEY= ba895a92c08ed8601291285fe0949ca0721f7282cda45620c7c6d1f74e044410 +PT= 3208243b046b311a1934e97b3e291a6365819173397c2a0e4546d582712c7848 +CT= 00d4783f80b157410d52d010f9b59e79a7a08e86fc092e551c51f0be398a1665 +TEST= 77 +KEY= ba5d22ad403f8f211fc3f84f192102d9d5bffc0431ad7875db972149778e5275 +PT= 00d4783f80b157410d52d010f9b59e79a7a08e86fc092e551c51f0be398a1665 +CT= 75d1ec220acc0dadc5d826faf021349b9fd384eedca14fa760703455b88f4913 +TEST= 78 +KEY= cf8cce8f4af3828cda1bdeb5e90036424a6c78eaed0c37d2bbe7151ccf011b66 +PT= 75d1ec220acc0dadc5d826faf021349b9fd384eedca14fa760703455b88f4913 +CT= bac7897d281e1cc34ee944fa314d3e19bde9ab180e8d2bfbad82a4662723a8b0 +TEST= 79 +KEY= 754b47f262ed9e4f94f29a4fd84d085bf785d3f2e3811c291665b17ae822b3d6 +PT= bac7897d281e1cc34ee944fa314d3e19bde9ab180e8d2bfbad82a4662723a8b0 +CT= bd6a39f22f7a4062e535c4de078d8ef49d0f249e1b44bee3413e533a887ccb65 +TEST= 80 +KEY= c8217e004d97de2d71c75e91dfc086af6a8af76cf8c5a2ca575be240605e78b3 +PT= bd6a39f22f7a4062e535c4de078d8ef49d0f249e1b44bee3413e533a887ccb65 +CT= ce5ea61b41c24d84d9a42af119e97f1cc80d2915c2d2ce65ce9dac4eecb4428b +TEST= 81 +KEY= 067fd81b0c5593a9a8637460c629f9b3a287de793a176caf99c64e0e8cea3a38 +PT= ce5ea61b41c24d84d9a42af119e97f1cc80d2915c2d2ce65ce9dac4eecb4428b +CT= 1fb133b5518044a87d1364fa41ee42121f78bee7274bef99bf86145eb8bc9293 +TEST= 82 +KEY= 19ceebae5dd5d701d570109a87c7bba1bdff609e1d5c833626405a503456a8ab +PT= 1fb133b5518044a87d1364fa41ee42121f78bee7274bef99bf86145eb8bc9293 +CT= 73480b477f2f235c4306eef9910ce312a78c36f21adcc4acaa50f33887939d4f +TEST= 83 +KEY= 6a86e0e922faf45d9676fe6316cb58b31a73566c0780479a8c10a968b3c535e4 +PT= 73480b477f2f235c4306eef9910ce312a78c36f21adcc4acaa50f33887939d4f +CT= 53555c66be1a7cd769b9c1fe668109ace2050515e67c66012a6549f932159d32 +TEST= 84 +KEY= 39d3bc8f9ce0888affcf3f9d704a511ff8765379e1fc219ba675e09181d0a8d6 +PT= 53555c66be1a7cd769b9c1fe668109ace2050515e67c66012a6549f932159d32 +CT= 67dc6ea25f01621fcd61d805d410bde7aeaa04a149545fdd9c579cc69923472e +TEST= 85 +KEY= 5e0fd22dc3e1ea9532aee798a45aecf856dc57d8a8a87e463a227c5718f3eff8 +PT= 67dc6ea25f01621fcd61d805d410bde7aeaa04a149545fdd9c579cc69923472e +CT= b21e39b579a479a3d5409073d782c73ca29d712ee5fe71438b37973726e47166 +TEST= 86 +KEY= ec11eb98ba459336e7ee77eb73d82bc4f44126f64d560f05b115eb603e179e9e +PT= b21e39b579a479a3d5409073d782c73ca29d712ee5fe71438b37973726e47166 +CT= 32a12651914ef8ed223a3459f7bbaab4b3b7d3b2ce4e9402697b2852ab49f834 +TEST= 87 +KEY= deb0cdc92b0b6bdbc5d443b28463817047f6f54483189b07d86ec332955e66aa +PT= 32a12651914ef8ed223a3459f7bbaab4b3b7d3b2ce4e9402697b2852ab49f834 +CT= f2c072e9432157999ac8be719f4534de43531e0e85a31f43bc54ea07aa3bf910 +TEST= 88 +KEY= 2c70bf20682a3c425f1cfdc31b26b5ae04a5eb4a06bb8444643a29353f659fba +PT= f2c072e9432157999ac8be719f4534de43531e0e85a31f43bc54ea07aa3bf910 +CT= 96ff4b7ea4adb2bcafc783c565b049eeb18b322a7959f40aeae3ff0a55fcc814 +TEST= 89 +KEY= ba8ff45ecc878efef0db7e067e96fc40b52ed9607fe2704e8ed9d63f6a9957ae +PT= 96ff4b7ea4adb2bcafc783c565b049eeb18b322a7959f40aeae3ff0a55fcc814 +CT= fcf5dfe9c755dbab1d46ad5eff13a0311d0b580417eea3caf18d2cc57279d617 +TEST= 90 +KEY= 467a2bb70bd25555ed9dd35881855c71a8258164680cd3847f54fafa18e081b9 +PT= fcf5dfe9c755dbab1d46ad5eff13a0311d0b580417eea3caf18d2cc57279d617 +CT= b62671b2277bad35d2f9d3aaf71cdad832b563d33775895be97d79a1d999f7ae +TEST= 91 +KEY= f05c5a052ca9f8603f6400f2769986a99a90e2b75f795adf9629835bc1797617 +PT= b62671b2277bad35d2f9d3aaf71cdad832b563d33775895be97d79a1d999f7ae +CT= 15018ac3c8d01a12f69d027bab7b17d4c0b88815915b4e61df831a9886be7c6e +TEST= 92 +KEY= e55dd0c6e479e272c9f90289dde2917d5a286aa2ce2214be49aa99c347c70a79 +PT= 15018ac3c8d01a12f69d027bab7b17d4c0b88815915b4e61df831a9886be7c6e +CT= e2ae24063b27a9556ec7b485e761529fa3aa805181d915703da7e5ecfb02a147 +TEST= 93 +KEY= 07f3f4c0df5e4b27a73eb60c3a83c3e2f982eaf34ffb01ce740d7c2fbcc5ab3e +PT= e2ae24063b27a9556ec7b485e761529fa3aa805181d915703da7e5ecfb02a147 +CT= 9a32d138a8a6e1c122d65953f84ae1a713cd0586f6d0097b0a10cf78de64db94 +TEST= 94 +KEY= 9dc125f877f8aae685e8ef5fc2c92245ea4fef75b92b08b57e1db35762a170aa +PT= 9a32d138a8a6e1c122d65953f84ae1a713cd0586f6d0097b0a10cf78de64db94 +CT= c5f0ae609bca2af559025418265a24181859801099a962219308cde197a8a640 +TEST= 95 +KEY= 58318b98ec328013dceabb47e493065df2166f6520826a94ed157eb6f509d6ea +PT= c5f0ae609bca2af559025418265a24181859801099a962219308cde197a8a640 +CT= d1b5373bdf1a0e9a71cf436057aa472ed91ecaf4789553e97b177db04798e9a7 +TEST= 96 +KEY= 8984bca333288e89ad25f827b33941732b08a5915817397d96020306b2913f4d +PT= d1b5373bdf1a0e9a71cf436057aa472ed91ecaf4789553e97b177db04798e9a7 +CT= 38f56aeefb1c0f47859169695ded37a23fcd28227e06ef8a998735dfb99fe641 +TEST= 97 +KEY= b171d64dc83481ce28b4914eeed476d114c58db32611d6f70f8536d90b0ed90c +PT= 38f56aeefb1c0f47859169695ded37a23fcd28227e06ef8a998735dfb99fe641 +CT= 217a3839f9bf01ceb0a9840690df2f9e1d775cdcef8791137b0d7af1883bf006 +TEST= 98 +KEY= 900bee74318b8000981d15487e0b594f09b2d16fc99647e474884c288335290a +PT= 217a3839f9bf01ceb0a9840690df2f9e1d775cdcef8791137b0d7af1883bf006 +CT= f09d6e335c9911c4f2ee06b50ae1315246858508a5df322ac96c31499c59ab1d +TEST= 99 +KEY= 609680476d1291c46af313fd74ea681d4f3754676c4975cebde47d611f6c8217 +PT= f09d6e335c9911c4f2ee06b50ae1315246858508a5df322ac96c31499c59ab1d +CT= 30a644a5c6a091ab31db06e2d8115dc6213c4907a18e8077219a6aabc11a4d34 +TEST= 100 +KEY= 5030c4e2abb2006f5b28151facfb35db6e0b1d60cdc7f5b99c7e17cade76cf23 +PT= 30a644a5c6a091ab31db06e2d8115dc6213c4907a18e8077219a6aabc11a4d34 +CT= 3598b912c207bc5098e08e505999e933f94835356cd72473560be3435498d02d +TEST= 101 +KEY= 65a87df069b5bc3fc3c89b4ff562dce897432855a110d1caca75f4898aee1f0e +PT= 3598b912c207bc5098e08e505999e933f94835356cd72473560be3435498d02d +CT= 9dc1fb29ff8b7678ab09ff695607e0796c80671353999c53a36ab1b6359fd03b +TEST= 102 +KEY= f86986d9963eca4768c16426a3653c91fbc34f46f2894d99691f453fbf71cf35 +PT= 9dc1fb29ff8b7678ab09ff695607e0796c80671353999c53a36ab1b6359fd03b +CT= b069ccfe0d7b0cfb5aa30764f753792435dec215a4b8e8a1a064849f01ccc3b4 +TEST= 103 +KEY= 48004a279b45c6bc32626342543645b5ce1d8d535631a538c97bc1a0bebd0c81 +PT= b069ccfe0d7b0cfb5aa30764f753792435dec215a4b8e8a1a064849f01ccc3b4 +CT= 9539eb5726d9b71d04ad6f3f18a18661e70caa4121fa277cbbb015d074c2de30 +TEST= 104 +KEY= dd39a170bd9c71a136cf0c7d4c97c3d42911271277cb824472cbd470ca7fd2b1 +PT= 9539eb5726d9b71d04ad6f3f18a18661e70caa4121fa277cbbb015d074c2de30 +CT= 30908fbfdd6e80343e8486a83f8a6049ef929748c01ed8835e26f8a5badbb3f7 +TEST= 105 +KEY= eda92ecf60f2f195084b8ad5731da39dc683b05ab7d55ac72ced2cd570a46146 +PT= 30908fbfdd6e80343e8486a83f8a6049ef929748c01ed8835e26f8a5badbb3f7 +CT= 132fca42ac6f680e48e2c55a9262da39ccb2d9bc1d0968a8643bbcbf14590d17 +TEST= 106 +KEY= fe86e48dcc9d999b40a94f8fe17f79a40a3169e6aadc326f48d6906a64fd6c51 +PT= 132fca42ac6f680e48e2c55a9262da39ccb2d9bc1d0968a8643bbcbf14590d17 +CT= eb2f93134db826a8f10e1eaa8b8b5abbc307e7016f09f65093fa9c10f4e1382e +TEST= 107 +KEY= 15a9779e8125bf33b1a751256af4231fc9368ee7c5d5c43fdb2c0c7a901c547f +PT= eb2f93134db826a8f10e1eaa8b8b5abbc307e7016f09f65093fa9c10f4e1382e +CT= 5cf9e04b71f3004e766bb0b95c5394112ee6bbe3814d5007c350b7caaed9b662 +TEST= 108 +KEY= 495097d5f0d6bf7dc7cce19c36a7b70ee7d0350444989438187cbbb03ec5e21d +PT= 5cf9e04b71f3004e766bb0b95c5394112ee6bbe3814d5007c350b7caaed9b662 +CT= 65d70491e80bcd5f552b803705f594009530a5e69d1d37e486796aa333d55bac +TEST= 109 +KEY= 2c87934418dd722292e761ab3352230e72e090e2d985a3dc9e05d1130d10b9b1 +PT= 65d70491e80bcd5f552b803705f594009530a5e69d1d37e486796aa333d55bac +CT= 3a42b2c167c33f5ed14d3963bcf2d3ad9792009ff89a6cf5bd3e05e7f73e96d1 +TEST= 110 +KEY= 16c521857f1e4d7c43aa58c88fa0f0a3e572907d211fcf29233bd4f4fa2e2f60 +PT= 3a42b2c167c33f5ed14d3963bcf2d3ad9792009ff89a6cf5bd3e05e7f73e96d1 +CT= 76303fc6ec02ebb9fa91f790eae0962c9893275ff9888693e61d4d89a01798a0 +TEST= 111 +KEY= 60f51e43931ca6c5b93baf586540668f7de1b722d89749bac526997d5a39b7c0 +PT= 76303fc6ec02ebb9fa91f790eae0962c9893275ff9888693e61d4d89a01798a0 +CT= 621432875606d8962720ce43f99fa7f929e61de2441764308381055406102ec6 +TEST= 112 +KEY= 02e12cc4c51a7e539e1b611b9cdfc1765407aac09c802d8a46a79c295c299906 +PT= 621432875606d8962720ce43f99fa7f929e61de2441764308381055406102ec6 +CT= 5213f6268945bd1570f27875d9ea6c0f403887eb9e3553c0e007e3de14825f60 +TEST= 113 +KEY= 50f2dae24c5fc346eee9196e4535ad79143f2d2b02b57e4aa6a07ff748abc666 +PT= 5213f6268945bd1570f27875d9ea6c0f403887eb9e3553c0e007e3de14825f60 +CT= 46ba16fa9d648b6aa947d23db7a7b998ccf8cdde4c886a7de3c8df8955bf3ef3 +TEST= 114 +KEY= 1648cc18d13b482c47aecb53f29214e1d8c7e0f54e3d14374568a07e1d14f895 +PT= 46ba16fa9d648b6aa947d23db7a7b998ccf8cdde4c886a7de3c8df8955bf3ef3 +CT= 34d4cbf8a45b8147f71136fa7f7b09f9c48273ab61de8543445f35794467363c +TEST= 115 +KEY= 229c07e07560c96bb0bffda98de91d181c45935e2fe39174013795075973cea9 +PT= 34d4cbf8a45b8147f71136fa7f7b09f9c48273ab61de8543445f35794467363c +CT= 01f945517107f0c5a90cb0b423b1d2c598f201516013114a8c286d6aabe0c98f +TEST= 116 +KEY= 236542b1046739ae19b34d1dae58cfdd84b7920f4ff0803e8d1ff86df2930726 +PT= 01f945517107f0c5a90cb0b423b1d2c598f201516013114a8c286d6aabe0c98f +CT= ada90b81775428b50830370b23f9aa70ad79e1a4fa84d33d80019fb37da16d24 +TEST= 117 +KEY= 8ecc49307333111b11837a168da165ad29ce73abb57453030d1e67de8f326a02 +PT= ada90b81775428b50830370b23f9aa70ad79e1a4fa84d33d80019fb37da16d24 +CT= e0e2d28e27e4eac809c3fafd7da5c84293661d67e56f3fb3b077b59f5e179ce1 +TEST= 118 +KEY= 6e2e9bbe54d7fbd3184080ebf004adefbaa86ecc501b6cb0bd69d241d125f6e3 +PT= e0e2d28e27e4eac809c3fafd7da5c84293661d67e56f3fb3b077b59f5e179ce1 +CT= 9cd4d6d1fd83a3dcc9056ae74b4b21818a594cade664ebca88aaeec7456a0e70 +TEST= 119 +KEY= f2fa4d6fa954580fd145ea0cbb4f8c6e30f12261b67f877a35c33c86944ff893 +PT= 9cd4d6d1fd83a3dcc9056ae74b4b21818a594cade664ebca88aaeec7456a0e70 +CT= ef81f61b3eb61764d83b3248cd34baaff5fdd2a588977d559283f11168c0fed2 +TEST= 120 +KEY= 1d7bbb7497e24f6b097ed844767b36c1c50cf0c43ee8fa2fa740cd97fc8f0641 +PT= ef81f61b3eb61764d83b3248cd34baaff5fdd2a588977d559283f11168c0fed2 +CT= c67d6b04f966db9c4c57548eae1370e9e331742bbad961dfee2758bf6ec44b9e +TEST= 121 +KEY= db06d0706e8494f745298ccad8684628263d84ef84319bf049679528924b4ddf +PT= c67d6b04f966db9c4c57548eae1370e9e331742bbad961dfee2758bf6ec44b9e +CT= 1280452518cf68aea36876e6c50cde2be48a5e253636548823aacf0ea08ac642 +TEST= 122 +KEY= c9869555764bfc59e641fa2c1d649803c2b7dacab207cf786acd5a2632c18b9d +PT= 1280452518cf68aea36876e6c50cde2be48a5e253636548823aacf0ea08ac642 +CT= fc7af427625929b92462905537b69d218cec369c9c9991e2d6d43ce25866c85e +TEST= 123 +KEY= 35fc61721412d5e0c2236a792ad205224e5bec562e9e5e9abc1966c46aa743c3 +PT= fc7af427625929b92462905537b69d218cec369c9c9991e2d6d43ce25866c85e +CT= bbacf071d7700ff59bf7b7a94f746f02190324417da4c5250e35b1ae7e6fea3d +TEST= 124 +KEY= 8e509103c362da1559d4ddd065a66a205758c817533a9bbfb22cd76a14c8a9fe +PT= bbacf071d7700ff59bf7b7a94f746f02190324417da4c5250e35b1ae7e6fea3d +CT= 124acc14b174a210b702e6ab20484a5f1434a78e6ec94b557b3b837761830594 +TEST= 125 +KEY= 9c1a5d1772167805eed63b7b45ee207f436c6f993df3d0eac917541d754bac6a +PT= 124acc14b174a210b702e6ab20484a5f1434a78e6ec94b557b3b837761830594 +CT= 898af6bcfa63b6c5fe25c1b5a79ca2e1ae9306ca856c84775be6eb48c6efed44 +TEST= 126 +KEY= 1590abab8875cec010f3facee272829eedff6953b89f549d92f1bf55b3a4412e +PT= 898af6bcfa63b6c5fe25c1b5a79ca2e1ae9306ca856c84775be6eb48c6efed44 +CT= cd8e6c133fafa205fd038d1b361c280aeb3a10e37f1fcf982f68eaf0d3fd01c7 +TEST= 127 +KEY= d81ec7b8b7da6cc5edf077d5d46eaa9406c579b0c7809b05bd9955a5605940e9 +PT= cd8e6c133fafa205fd038d1b361c280aeb3a10e37f1fcf982f68eaf0d3fd01c7 +CT= 013f29ded1f0f1804335ca03ff0d98f396a455e5c15193ef2af09191f407417d +TEST= 128 +KEY= d921ee66662a9d45aec5bdd62b63326790612c5506d108ea9769c434945e0194 +PT= 013f29ded1f0f1804335ca03ff0d98f396a455e5c15193ef2af09191f407417d +CT= 7b85f9306bfd5863c0a7ffb2d66c08e36b8178cbddf996d15ea22051e6327d3e +TEST= 129 +KEY= a2a417560dd7c5266e624264fd0f3a84fbe0549edb289e3bc9cbe465726c7caa +PT= 7b85f9306bfd5863c0a7ffb2d66c08e36b8178cbddf996d15ea22051e6327d3e +CT= d9e6b644baa06b50311969fd7f63a5343fafa70a41210d511a1c166a54387957 +TEST= 130 +KEY= 7b42a112b777ae765f7b2b99826c9fb0c44ff3949a09936ad3d7f20f265405fd +PT= d9e6b644baa06b50311969fd7f63a5343fafa70a41210d511a1c166a54387957 +CT= dbb75b9dcc7c007067ad9f6ed545a5d8bab8d06b0fe74dca6c5bd74084801aa6 +TEST= 131 +KEY= a0f5fa8f7b0bae0638d6b4f757293a687ef723ff95eedea0bf8c254fa2d41f5b +PT= dbb75b9dcc7c007067ad9f6ed545a5d8bab8d06b0fe74dca6c5bd74084801aa6 +CT= 94b28737cd2df187a4c52a662d0737615485b862e6101fb806113ec323f1699e +TEST= 132 +KEY= 34477db8b6265f819c139e917a2e0d092a729b9d73fec118b99d1b8c812576c5 +PT= 94b28737cd2df187a4c52a662d0737615485b862e6101fb806113ec323f1699e +CT= 68150c3011438f2ed4591581404e18ead99ad47e08a956775a2a0126badce687 +TEST= 133 +KEY= 5c527188a765d0af484a8b103a6015e3f3e84fe37b57976fe3b71aaa3bf99042 +PT= 68150c3011438f2ed4591581404e18ead99ad47e08a956775a2a0126badce687 +CT= 0388eb0d328856528da5db1e9cc3ebd85c6c0dd2e8c3c61c2d7de745a104738f +TEST= 134 +KEY= 5fda9a8595ed86fdc5ef500ea6a3fe3baf84423193945173cecafdef9afde3cd +PT= 0388eb0d328856528da5db1e9cc3ebd85c6c0dd2e8c3c61c2d7de745a104738f +CT= 8e3a81e89149ddd71535091dd0bbec9edaefe2360df500a5169a092260e91e11 +TEST= 135 +KEY= d1e01b6d04a45b2ad0da5913761812a5756ba0079e6151d6d850f4cdfa14fddc +PT= 8e3a81e89149ddd71535091dd0bbec9edaefe2360df500a5169a092260e91e11 +CT= afcf59fe1cedcf74a5a5aec8ed486c405541d76f0c6a25a485142bc3cf9d7387 +TEST= 136 +KEY= 7e2f42931849945e757ff7db9b507ee5202a7768920b74725d44df0e35898e5b +PT= afcf59fe1cedcf74a5a5aec8ed486c405541d76f0c6a25a485142bc3cf9d7387 +CT= 3c70c33af6885148c2886590de79da67cb68e121bc763f5488d61d0198002383 +TEST= 137 +KEY= 425f81a9eec1c516b7f7924b4529a482eb4296492e7d4b26d592c20fad89add8 +PT= 3c70c33af6885148c2886590de79da67cb68e121bc763f5488d61d0198002383 +CT= 3b012b72f6f2978f4ef0876bb183c5485d37be073a2c729135a140ab3c104c1e +TEST= 138 +KEY= 795eaadb18335299f9071520f4aa61cab675284e145139b7e03382a49199e1c6 +PT= 3b012b72f6f2978f4ef0876bb183c5485d37be073a2c729135a140ab3c104c1e +CT= fcbec35f32d31560a3b49a7f925ead0fd5820b92bb060c8c3d9b12fac47b472c +TEST= 139 +KEY= 85e069842ae047f95ab38f5f66f4ccc563f723dcaf57353bdda8905e55e2a6ea +PT= fcbec35f32d31560a3b49a7f925ead0fd5820b92bb060c8c3d9b12fac47b472c +CT= 27e72e25cbefe4d5a270206e899c980e7a19e16c4076f4d27664ad35f57f6c10 +TEST= 140 +KEY= a20747a1e10fa32cf8c3af31ef6854cb19eec2b0ef21c1e9abcc3d6ba09dcafa +PT= 27e72e25cbefe4d5a270206e899c980e7a19e16c4076f4d27664ad35f57f6c10 +CT= 67f2f4fdfb564c6a05af9158f228bf1dd4b896ee5446284c5a2d78c66538b5db +TEST= 141 +KEY= c5f5b35c1a59ef46fd6c3e691d40ebd6cd56545ebb67e9a5f1e145adc5a57f21 +PT= 67f2f4fdfb564c6a05af9158f228bf1dd4b896ee5446284c5a2d78c66538b5db +CT= 594d341825c14642f5dc06d10ed60a0dbf493375b6dc7c6586f7078ec00792b6 +TEST= 142 +KEY= 9cb887443f98a90408b038b81396e1db721f672b0dbb95c07716422305a2ed97 +PT= 594d341825c14642f5dc06d10ed60a0dbf493375b6dc7c6586f7078ec00792b6 +CT= 269215860532e4a1ac60771a8432afe9848d241d533b217ea479aeef93d5714e +TEST= 143 +KEY= ba2a92c23aaa4da5a4d04fa297a44e32f69243365e80b4bed36feccc96779cd9 +PT= 269215860532e4a1ac60771a8432afe9848d241d533b217ea479aeef93d5714e +CT= 28250ceebbacd494cbf2c6bf6a818969ef6cf8e3748e4627d8f4f26c3c4da180 +TEST= 144 +KEY= 920f9e2c810699316f22891dfd25c75b19febbd52a0ef2990b9b1ea0aa3a3d59 +PT= 28250ceebbacd494cbf2c6bf6a818969ef6cf8e3748e4627d8f4f26c3c4da180 +CT= 28cd4364040579451845757a6061905a5db6f45fc76477ee1ccc5700e800ca33 +TEST= 145 +KEY= bac2dd488503e0747767fc679d44570144484f8aed6a8577175749a0423af76a +PT= 28cd4364040579451845757a6061905a5db6f45fc76477ee1ccc5700e800ca33 +CT= a6f67377ab276630ff4eff2fd2ff447fedfcbfff3efab9740b0bcc6fd6778a3a +TEST= 146 +KEY= 1c34ae3f2e248644882903484fbb137ea9b4f075d3903c031c5c85cf944d7d50 +PT= a6f67377ab276630ff4eff2fd2ff447fedfcbfff3efab9740b0bcc6fd6778a3a +CT= 6353de2fdc01457f32c5186fddfdbe5fb92890a67394c6ca296718948eca4357 +TEST= 147 +KEY= 7f677010f225c33bbaec1b279246ad21109c60d3a004fac9353b9d5b1a873e07 +PT= 6353de2fdc01457f32c5186fddfdbe5fb92890a67394c6ca296718948eca4357 +CT= 27555b6c913f94139e747ec97610ecc396618c3139489767d19d884f506adc4c +TEST= 148 +KEY= 58322b7c631a5728249865eee45641e286fdece2994c6daee4a615144aede24b +PT= 27555b6c913f94139e747ec97610ecc396618c3139489767d19d884f506adc4c +CT= 1c771c2fad09b903a564989dbbd29183fbe295814aaf4c3b35d29d6b3b9e963f +TEST= 149 +KEY= 44453753ce13ee2b81fcfd735f84d0617d1f7963d3e32195d174887f71737474 +PT= 1c771c2fad09b903a564989dbbd29183fbe295814aaf4c3b35d29d6b3b9e963f +CT= 7aa80455aef4b173689d8ccf5e8a5016b5a0576a1ae3bb92c6cbb92e26373618 +TEST= 150 +KEY= 3eed330660e75f58e96171bc010e8077c8bf2e09c9009a0717bf31515744426c +PT= 7aa80455aef4b173689d8ccf5e8a5016b5a0576a1ae3bb92c6cbb92e26373618 +CT= 786e06af4f20b0c7df689923bb188b07ab6ba3caa424befcc52391cabdb3df98 +TEST= 151 +KEY= 468335a92fc7ef9f3609e89fba160b7063d48dc36d2424fbd29ca09beaf79df4 +PT= 786e06af4f20b0c7df689923bb188b07ab6ba3caa424befcc52391cabdb3df98 +CT= 0793bd69ebdc963214acf66f2c37c8fe037b688a19fe00ee69df59a6bbf857f2 +TEST= 152 +KEY= 411088c0c41b79ad22a51ef09621c38e60afe54974da2415bb43f93d510fca06 +PT= 0793bd69ebdc963214acf66f2c37c8fe037b688a19fe00ee69df59a6bbf857f2 +CT= 0a4258ac04d3e0f672c53c556cec568f81902eb22395cc0a822922bdf21ce8aa +TEST= 153 +KEY= 4b52d06cc0c8995b506022a5facd9501e13fcbfb574fe81f396adb80a31322ac +PT= 0a4258ac04d3e0f672c53c556cec568f81902eb22395cc0a822922bdf21ce8aa +CT= 57e9bfa71659b0beede23428c3a1832eeee048fec20de0e292f729a08c4dcb76 +TEST= 154 +KEY= 1cbb6fcbd69129e5bd82168d396c162f0fdf8305954208fdab9df2202f5ee9da +PT= 57e9bfa71659b0beede23428c3a1832eeee048fec20de0e292f729a08c4dcb76 +CT= 82d950b689822377c1d6a07ac2a7d1d7cc8eea66753242609c10d13099438787 +TEST= 155 +KEY= 9e623f7d5f130a927c54b6f7fbcbc7f8c3516963e0704a9d378d2310b61d6e5d +PT= 82d950b689822377c1d6a07ac2a7d1d7cc8eea66753242609c10d13099438787 +CT= 3ab1c68bcef5dc75584b7bc5502b9844dc2205e90d5f73e0ed54f7b24963055b +TEST= 156 +KEY= a4d3f9f691e6d6e7241fcd32abe05fbc1f736c8aed2f397ddad9d4a2ff7e6b06 +PT= 3ab1c68bcef5dc75584b7bc5502b9844dc2205e90d5f73e0ed54f7b24963055b +CT= 4e175349bf7726157aa8c50847957d174b6a379538c4a87ea2ff9914147df73f +TEST= 157 +KEY= eac4aabf2e91f0f25eb7083aec7522ab54195b1fd5eb910378264db6eb039c39 +PT= 4e175349bf7726157aa8c50847957d174b6a379538c4a87ea2ff9914147df73f +CT= df55214eca992d233c989e10999348e9dd2b4c31910e03ab265059d6a6ad647f +TEST= 158 +KEY= 35918bf1e408ddd1622f962a75e66a428932172e44e592a85e7614604daef846 +PT= df55214eca992d233c989e10999348e9dd2b4c31910e03ab265059d6a6ad647f +CT= 6c2e0c3a6370b32bdaa96926d99a2c783de5709f060eb81962334716b675b831 +TEST= 159 +KEY= 59bf87cb87786efab886ff0cac7c463ab4d767b142eb2ab13c455376fbdb4077 +PT= 6c2e0c3a6370b32bdaa96926d99a2c783de5709f060eb81962334716b675b831 +CT= 55cfa7b9149fc3249bd09a78f8261b999f864fb8256fd179cb087c769ebed3d7 +TEST= 160 +KEY= 0c70207293e7adde23566574545a5da32b5128096784fbc8f74d2f00656593a0 +PT= 55cfa7b9149fc3249bd09a78f8261b999f864fb8256fd179cb087c769ebed3d7 +CT= cf660ffaabae9d00a527c62c5c4094468277b4259bc910da551af4707602cb96 +TEST= 161 +KEY= c3162f88384930de8671a358081ac9e5a9269c2cfc4deb12a257db7013675836 +PT= cf660ffaabae9d00a527c62c5c4094468277b4259bc910da551af4707602cb96 +CT= 120856529d25b57e0f8f5fc47774707e3b6e94df13630955b88510028265326c +TEST= 162 +KEY= d11e79daa56c85a089fefc9c7f6eb99b924808f3ef2ee2471ad2cb7291026a5a +PT= 120856529d25b57e0f8f5fc47774707e3b6e94df13630955b88510028265326c +CT= b81e3361292f8b9e8de89c5c407d8f06d9a7141c8ed9eff7d2c3b3cd55b098b3 +TEST= 163 +KEY= 69004abb8c430e3e041660c03f13369d4bef1cef61f70db0c81178bfc4b2f2e9 +PT= b81e3361292f8b9e8de89c5c407d8f06d9a7141c8ed9eff7d2c3b3cd55b098b3 +CT= 3af66eea43cabc292c125c41afb2797b41994c6d4d1205a8d16576cd4367ea8c +TEST= 164 +KEY= 53f62451cf89b21728043c8190a14fe60a7650822ce5081819740e7287d51865 +PT= 3af66eea43cabc292c125c41afb2797b41994c6d4d1205a8d16576cd4367ea8c +CT= 1bee93f67547743a31fba8470c76facf7378238df49d8a7de3effb3102614110 +TEST= 165 +KEY= 4818b7a7bacec62d19ff94c69cd7b529790e730fd8788265fa9bf54385b45975 +PT= 1bee93f67547743a31fba8470c76facf7378238df49d8a7de3effb3102614110 +CT= a75cdce2d8587b7047f7c705f515fce2e96efafaa1fc65172dbf3aac0c0dc7ae +TEST= 166 +KEY= ef446b456296bd5d5e0853c369c249cb906089f57984e772d724cfef89b99edb +PT= a75cdce2d8587b7047f7c705f515fce2e96efafaa1fc65172dbf3aac0c0dc7ae +CT= 60979135e5098cd2dce480d59f795a293b156d8a7310ae8cae281e9ca8517dd8 +TEST= 167 +KEY= 8fd3fa70879f318f82ecd316f6bb13e2ab75e47f0a9449fe790cd17321e8e303 +PT= 60979135e5098cd2dce480d59f795a293b156d8a7310ae8cae281e9ca8517dd8 +CT= 5fdab69d941b878ad21464fcc17b3206c4243266ab42861fa07a762161eb4662 +TEST= 168 +KEY= d0094ced1384b60550f8b7ea37c021e46f51d619a1d6cfe1d976a7524003a561 +PT= 5fdab69d941b878ad21464fcc17b3206c4243266ab42861fa07a762161eb4662 +CT= 8bfafa4e9cf1c574d5d8b1b5bf04e8d250dd8ab86a822e88c611ddbe9e4c836d +TEST= 169 +KEY= 5bf3b6a38f7573718520065f88c4c9363f8c5ca1cb54e1691f677aecde4f260c +PT= 8bfafa4e9cf1c574d5d8b1b5bf04e8d250dd8ab86a822e88c611ddbe9e4c836d +CT= 40445b5407a05e73dd9864b78a61fee5b187c9fa4a556d4216bf52d5e9cd1b2e +TEST= 170 +KEY= 1bb7edf788d52d0258b862e802a537d38e0b955b81018c2b09d8283937823d22 +PT= 40445b5407a05e73dd9864b78a61fee5b187c9fa4a556d4216bf52d5e9cd1b2e +CT= 3a1d58fc244853331b32eb77884e070ce99f55e74651e44396535547473deb01 +TEST= 171 +KEY= 21aab50bac9d7e31438a899f8aeb30df6794c0bcc75068689f8b7d7e70bfd623 +PT= 3a1d58fc244853331b32eb77884e070ce99f55e74651e44396535547473deb01 +CT= 6d979a5e55b00d2141361bd8a6841b3a9f40cd4410cf35a993af65ecc04319ce +TEST= 172 +KEY= 4c3d2f55f92d731002bc92472c6f2be5f8d40df8d79f5dc10c241892b0fccfed +PT= 6d979a5e55b00d2141361bd8a6841b3a9f40cd4410cf35a993af65ecc04319ce +CT= 52e7181428e2e1fc890a0953b252a51bef46431b86f9285736269c679ca690cc +TEST= 173 +KEY= 1eda3741d1cf92ec8bb69b149e3d8efe17924ee3516675963a0284f52c5a5f21 +PT= 52e7181428e2e1fc890a0953b252a51bef46431b86f9285736269c679ca690cc +CT= d49ef1703f2c6da20277eed4d0bbfabfd50ec724b2f054e8712c0e8aa5bb385a +TEST= 174 +KEY= ca44c631eee3ff4e89c175c04e867441c29c89c7e396217e4b2e8a7f89e1677b +PT= d49ef1703f2c6da20277eed4d0bbfabfd50ec724b2f054e8712c0e8aa5bb385a +CT= 13842bc8baed82cef880a99aa8c3c1fa5b6aa6529616ed916299def6df75e5a3 +TEST= 175 +KEY= d9c0edf9540e7d807141dc5ae645b5bb99f62f957580ccef29b75489569482d8 +PT= 13842bc8baed82cef880a99aa8c3c1fa5b6aa6529616ed916299def6df75e5a3 +CT= ca21e8792669ef851f44da80fefe50510f03adf00c33536f46d7bedc08ef1e13 +TEST= 176 +KEY= 13e10580726792056e0506da18bbe5ea96f5826579b39f806f60ea555e7b9ccb +PT= ca21e8792669ef851f44da80fefe50510f03adf00c33536f46d7bedc08ef1e13 +CT= e5f6eea90b46ac4f728375eddcc0b780c718ed50ad6290ace1c1686ef85e5d13 +TEST= 177 +KEY= f617eb2979213e4a1c867337c47b526a51ed6f35d4d10f2c8ea1823ba625c1d8 +PT= e5f6eea90b46ac4f728375eddcc0b780c718ed50ad6290ace1c1686ef85e5d13 +CT= 15a837b0bc1f024f21de222ad71d39488a9d5ba83b4fe0a46488010600940472 +TEST= 178 +KEY= e3bfdc99c53e3c053d58511d13666b22db70349def9eef88ea29833da6b1c5aa +PT= 15a837b0bc1f024f21de222ad71d39488a9d5ba83b4fe0a46488010600940472 +CT= 5892722d17ba0dc101bec079f4cd791f704b9932eea8f6a9a62f24df501b1a23 +TEST= 179 +KEY= bb2daeb4d28431c43ce69164e7ab123dab3badaf013619214c06a7e2f6aadf89 +PT= 5892722d17ba0dc101bec079f4cd791f704b9932eea8f6a9a62f24df501b1a23 +CT= a76d951bbe089e04f636eb56ae50870ef69c0dd85e1ff1810fd0e4afe2a4b502 +TEST= 180 +KEY= 1c403baf6c8cafc0cad07a3249fb95335da7a0775f29e8a043d6434d140e6a8b +PT= a76d951bbe089e04f636eb56ae50870ef69c0dd85e1ff1810fd0e4afe2a4b502 +CT= 3e8d3c5f7d34e3cefbe99d7d929571573cf4118ed9c2006ca782210fa9c1ea39 +TEST= 181 +KEY= 22cd07f011b84c0e3139e74fdb6ee4646153b1f986ebe8cce4546242bdcf80b2 +PT= 3e8d3c5f7d34e3cefbe99d7d929571573cf4118ed9c2006ca782210fa9c1ea39 +CT= b30e97a1e122a2836dae9546a8b1e1f48e0edd2833dada94abe80a3c5b3d9842 +TEST= 182 +KEY= 91c39051f09aee8d5c97720973df0590ef5d6cd1b53132584fbc687ee6f218f0 +PT= b30e97a1e122a2836dae9546a8b1e1f48e0edd2833dada94abe80a3c5b3d9842 +CT= 3b292abc057965777d6387447a23269027e501d56ae0d2fd27edd4d22a403beb +TEST= 183 +KEY= aaeabaedf5e38bfa21f4f54d09fc2300c8b86d04dfd1e0a56851bcacccb2231b +PT= 3b292abc057965777d6387447a23269027e501d56ae0d2fd27edd4d22a403beb +CT= 423af6c2b616de7fb0513a35fea7c2f7a492391d6527779cb104dcdc443afd42 +TEST= 184 +KEY= e8d04c2f43f5558591a5cf78f75be1f76c2a5419baf69739d95560708888de59 +PT= 423af6c2b616de7fb0513a35fea7c2f7a492391d6527779cb104dcdc443afd42 +CT= fdc9de61867e111921f9c627e9516aad3c9565b6b259353fef283bd975ff7cb3 +TEST= 185 +KEY= 1519924ec58b449cb05c095f1e0a8b5a50bf31af08afa206367d5ba9fd77a2ea +PT= fdc9de61867e111921f9c627e9516aad3c9565b6b259353fef283bd975ff7cb3 +CT= 3ad19bcd482e3d70b5542f68e0e56333c327e90d818b824ff0a31b541a05d8fd +TEST= 186 +KEY= 2fc809838da579ec05082637feefe8699398d8a289242049c6de40fde7727a17 +PT= 3ad19bcd482e3d70b5542f68e0e56333c327e90d818b824ff0a31b541a05d8fd +CT= 14debf1b2d82a032ce8f6a10a7ceabeda880744ed26b303bdfb4d182a1e41790 +TEST= 187 +KEY= 3b16b698a027d9decb874c27592143843b18acec5b4f1072196a917f46966d87 +PT= 14debf1b2d82a032ce8f6a10a7ceabeda880744ed26b303bdfb4d182a1e41790 +CT= 001507e6f9bef6affce0cc0fae1ef1ff6de515a683ea6ceac0acca346ce92c4c +TEST= 188 +KEY= 3b03b17e59992f7137678028f73fb27b56fdb94ad8a57c98d9c65b4b2a7f41cb +PT= 001507e6f9bef6affce0cc0fae1ef1ff6de515a683ea6ceac0acca346ce92c4c +CT= ed7c2c99e03a22a032514ba21606160319d6b176045165f487ddacd63a24cbc3 +TEST= 189 +KEY= d67f9de7b9a30dd10536cb8ae139a4784f2b083cdcf4196c5e1bf79d105b8a08 +PT= ed7c2c99e03a22a032514ba21606160319d6b176045165f487ddacd63a24cbc3 +CT= 7e1d8afd018f6478791958665e346f1bedc4a2f5b3cc0065451926846a8c9995 +TEST= 190 +KEY= a862171ab82c69a97c2f93ecbf0dcb63a2efaac96f3819091b02d1197ad7139d +PT= 7e1d8afd018f6478791958665e346f1bedc4a2f5b3cc0065451926846a8c9995 +CT= 5dccb1cc329fbf1e81fad5b31e7c5b018d1025a37fd7a3cb3f9356b63dec0971 +TEST= 191 +KEY= f5aea6d68ab3d6b7fdd5465fa17190622fff8f6a10efbac2249187af473b1aec +PT= 5dccb1cc329fbf1e81fad5b31e7c5b018d1025a37fd7a3cb3f9356b63dec0971 +CT= d17b6691b900be64c3a3bfba2a45eed9327f2f5a71114b5435a46cb69d4ba324 +TEST= 192 +KEY= 24d5c04733b368d33e76f9e58b347ebb1d80a03061fef1961135eb19da70b9c8 +PT= d17b6691b900be64c3a3bfba2a45eed9327f2f5a71114b5435a46cb69d4ba324 +CT= d45f1a9cbbe6f0b23839ffe7d7f31c4aecbef24739d07d5c33c5fd423352fa30 +TEST= 193 +KEY= f08adadb88559861064f06025cc762f1f13e5277582e8cca22f0165be92243f8 +PT= d45f1a9cbbe6f0b23839ffe7d7f31c4aecbef24739d07d5c33c5fd423352fa30 +CT= 3b517feed0a42cff3571b2bff86c767c4cf7c7f996572ea27f0a5181564877e1 +TEST= 194 +KEY= cbdba53558f1b49e333eb4bda4ab148dbdc9958ece79a2685dfa47dabf6a3419 +PT= 3b517feed0a42cff3571b2bff86c767c4cf7c7f996572ea27f0a5181564877e1 +CT= 1b11fe0cf523116bdf1b4ef80fe73718d3d208882a1ba2bc7cf597c6f9e4b844 +TEST= 195 +KEY= d0ca5b39add2a5f5ec25fa45ab4c23956e1b9d06e46200d4210fd01c468e8c5d +PT= 1b11fe0cf523116bdf1b4ef80fe73718d3d208882a1ba2bc7cf597c6f9e4b844 +CT= 4d5889467daa279de31a4b8576cf0884a01f5d6d13d2b3f46034adbac6718d1f +TEST= 196 +KEY= 9d92d27fd07882680f3fb1c0dd832b11ce04c06bf7b0b320413b7da680ff0142 +PT= 4d5889467daa279de31a4b8576cf0884a01f5d6d13d2b3f46034adbac6718d1f +CT= c6141e13b003364ff30d602a2d83e7b41c8c6e2c0e3c0a23990f2bf07f3f1d64 +TEST= 197 +KEY= 5b86cc6c607bb427fc32d1eaf000cca5d288ae47f98cb903d8345656ffc01c26 +PT= c6141e13b003364ff30d602a2d83e7b41c8c6e2c0e3c0a23990f2bf07f3f1d64 +CT= c94a84619ccffc4e65318413474ca838caf935961bc53d4ac684c552e5bbe18c +TEST= 198 +KEY= 92cc480dfcb44869990355f9b74c649d18719bd1e24984491eb093041a7bfdaa +PT= c94a84619ccffc4e65318413474ca838caf935961bc53d4ac684c552e5bbe18c +CT= 422d86c51fd3669e5f99385aabda99e5b6d3b9028d714b75e492a893c8994ccd +TEST= 199 +KEY= d0e1cec8e3672ef7c69a6da31c96fd78aea222d36f38cf3cfa223b97d2e2b167 +PT= 422d86c51fd3669e5f99385aabda99e5b6d3b9028d714b75e492a893c8994ccd +CT= 3db5648d61e6db56c5211177b97641325149b6be8737514b36f7ee3531336f5c +TEST= 200 +KEY= ed54aa458281f5a103bb7cd4a5e0bc4affeb946de80f9e77ccd5d5a2e3d1de3b +PT= 3db5648d61e6db56c5211177b97641325149b6be8737514b36f7ee3531336f5c +CT= 04819cc2b10b651937fd996ef1234eb92814ea6c8b58a31ecd60bd160a8cf7fc +TEST= 201 +KEY= e9d53687338a90b83446e5ba54c3f2f3d7ff7e0163573d6901b568b4e95d29c7 +PT= 04819cc2b10b651937fd996ef1234eb92814ea6c8b58a31ecd60bd160a8cf7fc +CT= aace51fcd165d1986281287b2eebea663a84fed37ef2cd49dcb168229ea90f01 +TEST= 202 +KEY= 431b677be2ef412056c7cdc17a281895ed7b80d21da5f020dd04009677f426c6 +PT= aace51fcd165d1986281287b2eebea663a84fed37ef2cd49dcb168229ea90f01 +CT= 0af02dccb6d9323f6b313863241046119e7f10f065104fe81adf73b08daf927b +TEST= 203 +KEY= 49eb4ab75436731f3df6f5a25e385e847304902278b5bfc8c7db7326fa5bb4bd +PT= 0af02dccb6d9323f6b313863241046119e7f10f065104fe81adf73b08daf927b +CT= bb0c0dcd00083b53629cd650d1fa28ecc7296318553e23c8084ceacdcf1be05b +TEST= 204 +KEY= f2e7477a543e484c5f6a23f28fc27668b42df33a2d8b9c00cf9799eb354054e6 +PT= bb0c0dcd00083b53629cd650d1fa28ecc7296318553e23c8084ceacdcf1be05b +CT= 975dc34ab7b37569edff36fc5884258fb4672468d1699fa0e1f0d7f7861a5c85 +TEST= 205 +KEY= 65ba8430e38d3d25b295150ed74653e7004ad752fce203a02e674e1cb35a0863 +PT= 975dc34ab7b37569edff36fc5884258fb4672468d1699fa0e1f0d7f7861a5c85 +CT= b08b331a9aa9e0db9071e3f6a6b88f4d30bbbef7f7f1321d06796f7c2a141b47 +TEST= 206 +KEY= d531b72a7924ddfe22e4f6f871fedcaa30f169a50b1331bd281e2160994e1324 +PT= b08b331a9aa9e0db9071e3f6a6b88f4d30bbbef7f7f1321d06796f7c2a141b47 +CT= 8dd153c11a25194cabd800f29d9d854fd6e7bc946f8f6c6aa558c45d0eaad84b +TEST= 207 +KEY= 58e0e4eb6301c4b2893cf60aec6359e5e616d531649c5dd78d46e53d97e4cb6f +PT= 8dd153c11a25194cabd800f29d9d854fd6e7bc946f8f6c6aa558c45d0eaad84b +CT= 6e9f314dd49bf3e464c525b848e5f76d304ef317dae2862c6e21da45db34cb8f +TEST= 208 +KEY= 367fd5a6b79a3756edf9d3b2a486ae88d6582626be7edbfbe3673f784cd000e0 +PT= 6e9f314dd49bf3e464c525b848e5f76d304ef317dae2862c6e21da45db34cb8f +CT= f09c55d2db988dc1850e208d686fb8dc480cc585fac14eeca2ed1cad59e9d769 +TEST= 209 +KEY= c6e380746c02ba9768f7f33fcce916549e54e3a344bf9517418a23d51539d789 +PT= f09c55d2db988dc1850e208d686fb8dc480cc585fac14eeca2ed1cad59e9d769 +CT= ce2b7711a85085ffb9afd3e05e8cf98159777e64100ef3106de30f960fae68d6 +TEST= 210 +KEY= 08c8f765c4523f68d15820df9265efd5c7239dc754b166072c692c431a97bf5f +PT= ce2b7711a85085ffb9afd3e05e8cf98159777e64100ef3106de30f960fae68d6 +CT= da318a7529b1d0dac275e451f780eb0e70a565305133caeda7f08f4bf6afb2b5 +TEST= 211 +KEY= d2f97d10ede3efb2132dc48e65e504dbb786f8f70582acea8b99a308ec380dea +PT= da318a7529b1d0dac275e451f780eb0e70a565305133caeda7f08f4bf6afb2b5 +CT= 6fb9b62fcaf5c6198e1f43558b1654e8f4187eba40b98a6e24778a9ba96f478c +TEST= 212 +KEY= bd40cb3f271629ab9d3287dbeef35033439e864d453b2684afee299345574a66 +PT= 6fb9b62fcaf5c6198e1f43558b1654e8f4187eba40b98a6e24778a9ba96f478c +CT= 3f179d08f00a54e086f46477123958169c0b9301ce542eecbe43886f116d34d8 +TEST= 213 +KEY= 82575637d71c7d4b1bc6e3acfcca0825df95154c8b6f086811ada1fc543a7ebe +PT= 3f179d08f00a54e086f46477123958169c0b9301ce542eecbe43886f116d34d8 +CT= 3deef0ffd0d9fd53b9b889bc02e53a90caaabd09fd8100e13d435b08fd7f3f42 +TEST= 214 +KEY= bfb9a6c807c58018a27e6a10fe2f32b5153fa84576ee08892ceefaf4a94541fc +PT= 3deef0ffd0d9fd53b9b889bc02e53a90caaabd09fd8100e13d435b08fd7f3f42 +CT= e490cf81310081a904ad645aa451311c411155741787d579024396e3bf6ce87c +TEST= 215 +KEY= 5b29694936c501b1a6d30e4a5a7e03a9542efd316169ddf02ead6c171629a980 +PT= e490cf81310081a904ad645aa451311c411155741787d579024396e3bf6ce87c +CT= b843212407b7338d134a0f241eb3f5e453b0b6b788dea30ed7ffd3566738a567 +TEST= 216 +KEY= e36a486d3172323cb599016e44cdf64d079e4b86e9b77efef952bf4171110ce7 +PT= b843212407b7338d134a0f241eb3f5e453b0b6b788dea30ed7ffd3566738a567 +CT= 1d83ed28e5b13cf1284dd5744335692ba2d7c7b3a556ece93ff51e882c795a43 +TEST= 217 +KEY= fee9a545d4c30ecd9dd4d41a07f89f66a5498c354ce19217c6a7a1c95d6856a4 +PT= 1d83ed28e5b13cf1284dd5744335692ba2d7c7b3a556ece93ff51e882c795a43 +CT= 7d21bd6f93dfa0b57e9b412b20ca8898a9657100899b42e116319fab4aad80dc +TEST= 218 +KEY= 83c8182a471cae78e34f9531273217fe0c2cfd35c57ad0f6d0963e6217c5d678 +PT= 7d21bd6f93dfa0b57e9b412b20ca8898a9657100899b42e116319fab4aad80dc +CT= eee9bf603e4e67ae7629fd7e6545add5febd3ed379624b1df837c69e07a9f467 +TEST= 219 +KEY= 6d21a74a7952c9d69566684f4277ba2bf291c3e6bc189beb28a1f8fc106c221f +PT= eee9bf603e4e67ae7629fd7e6545add5febd3ed379624b1df837c69e07a9f467 +CT= caa37d4300154155a37e0e07fd9d0daab9ad8b6cba96c3cd2979b7603dc4d08a +TEST= 220 +KEY= a782da097947888336186648bfeab7814b3c488a068e582601d84f9c2da8f295 +PT= caa37d4300154155a37e0e07fd9d0daab9ad8b6cba96c3cd2979b7603dc4d08a +CT= 1d88e6ea520a3cd5667b262248740ed2abf36299a4740db6c46bf7499c2f7266 +TEST= 221 +KEY= ba0a3ce32b4db4565063406af79eb953e0cf2a13a2fa5590c5b3b8d5b18780f3 +PT= 1d88e6ea520a3cd5667b262248740ed2abf36299a4740db6c46bf7499c2f7266 +CT= 40bef3c50105f6c87c22147923a51bd276af6461f8004d71499cc739b3a4c117 +TEST= 222 +KEY= fab4cf262a48429e2c415413d43ba28196604e725afa18e18c2f7fec022341e4 +PT= 40bef3c50105f6c87c22147923a51bd276af6461f8004d71499cc739b3a4c117 +CT= 8d0180e6e3d1552fe6d0041e56c3bd9558dd30e18f329c1645a6217a414a93e0 +TEST= 223 +KEY= 77b54fc0c99917b1ca91500d82f81f14cebd7e93d5c884f7c9895e964369d204 +PT= 8d0180e6e3d1552fe6d0041e56c3bd9558dd30e18f329c1645a6217a414a93e0 +CT= a34219f6d7945193859a451108c921bd22efcf6cd0fb575c2a91d7e69e778473 +TEST= 224 +KEY= d4f756361e0d46224f0b151c8a313ea9ec52b1ff0533d3abe3188970dd1e5677 +PT= a34219f6d7945193859a451108c921bd22efcf6cd0fb575c2a91d7e69e778473 +CT= 1dd898d206d7559516dcdaf24ded493d4547ee19d6cf1e9cece7040767512505 +TEST= 225 +KEY= c92fcee418da13b759d7cfeec7dc7794a9155fe6d3fccd370fff8d77ba4f7372 +PT= 1dd898d206d7559516dcdaf24ded493d4547ee19d6cf1e9cece7040767512505 +CT= f634666e7be5cd84fda1123081cd4e286b8488e30dd9051c72108f6c542ee39f +TEST= 226 +KEY= 3f1ba88a633fde33a476ddde461139bcc291d705de25c82b7def021bee6190ed +PT= f634666e7be5cd84fda1123081cd4e286b8488e30dd9051c72108f6c542ee39f +CT= 4c42fe310ab7efe9dcedcf40932fa85f10092f7ca71fca60c775398e423de527 +TEST= 227 +KEY= 735956bb698831da789b129ed53e91e3d298f879793a024bba9a3b95ac5c75ca +PT= 4c42fe310ab7efe9dcedcf40932fa85f10092f7ca71fca60c775398e423de527 +CT= 0b64bcfbde16705e4ec46e7e6ce3e3689114b3afbad2b4862bace4ce50af5f79 +TEST= 228 +KEY= 783dea40b79e4184365f7ce0b9dd728b438c4bd6c3e8b6cd9136df5bfcf32ab3 +PT= 0b64bcfbde16705e4ec46e7e6ce3e3689114b3afbad2b4862bace4ce50af5f79 +CT= c18d1b4315d751829e2ceb64b93e736378ec571c37835ce6ba280f27faa4ecfc +TEST= 229 +KEY= b9b0f103a2491006a873978400e301e83b601ccaf46bea2b2b1ed07c0657c64f +PT= c18d1b4315d751829e2ceb64b93e736378ec571c37835ce6ba280f27faa4ecfc +CT= 7ad6f30326d1f65f4f26856f280d12ad4fff6fd27e2e35f4f2073ae49427cee9 +TEST= 230 +KEY= c36602008498e659e75512eb28ee1345749f73188a45dfdfd919ea98927008a6 +PT= 7ad6f30326d1f65f4f26856f280d12ad4fff6fd27e2e35f4f2073ae49427cee9 +CT= 7a481bf2705928fd372515af68c284f32a8ca602b8eb16a510b16154809cab14 +TEST= 231 +KEY= b92e19f2f4c1cea4d0700744402c97b65e13d51a32aec97ac9a88bcc12eca3b2 +PT= 7a481bf2705928fd372515af68c284f32a8ca602b8eb16a510b16154809cab14 +CT= 87d68b6a9971912a823e40663df9c6fcf8805848c70dc5dd3a52ecef5a1c1bfb +TEST= 232 +KEY= 3ef892986db05f8e524e47227dd5514aa6938d52f5a30ca7f3fa672348f0b849 +PT= 87d68b6a9971912a823e40663df9c6fcf8805848c70dc5dd3a52ecef5a1c1bfb +CT= d4df5fa284de4ad58453cbfdc6906ebf9dff9c99c5e36d67654f34f6990f75c4 +TEST= 233 +KEY= ea27cd3ae96e155bd61d8cdfbb453ff53b6c11cb304061c096b553d5d1ffcd8d +PT= d4df5fa284de4ad58453cbfdc6906ebf9dff9c99c5e36d67654f34f6990f75c4 +CT= 68b159014a766356df9b329560a19c70e758488e37217683cef92c5039337236 +TEST= 234 +KEY= 8296943ba318760d0986be4adbe4a385dc34594507611743584c7f85e8ccbfbb +PT= 68b159014a766356df9b329560a19c70e758488e37217683cef92c5039337236 +CT= 9046be22c9bc7a5cd034ab0275fc5e3377575febc2573c6130feee7c32f18b64 +TEST= 235 +KEY= 12d02a196aa40c51d9b21548ae18fdb6ab6306aec5362b2268b291f9da3d34df +PT= 9046be22c9bc7a5cd034ab0275fc5e3377575febc2573c6130feee7c32f18b64 +CT= 0e6e60b8bb1b73038ce86b5e1f2653aee1fe7b26c9609b02cea0db120de01a14 +TEST= 236 +KEY= 1cbe4aa1d1bf7f52555a7e16b13eae184a9d7d880c56b020a6124aebd7dd2ecb +PT= 0e6e60b8bb1b73038ce86b5e1f2653aee1fe7b26c9609b02cea0db120de01a14 +CT= c16c33ffaa625708dfe986fa013637975f98e5148fa02d6ca89585325d0c8cb5 +TEST= 237 +KEY= ddd2795e7bdd285a8ab3f8ecb008998f1505989c83f69d4c0e87cfd98ad1a27e +PT= c16c33ffaa625708dfe986fa013637975f98e5148fa02d6ca89585325d0c8cb5 +CT= 1e03bb32b15e3ea84c949c14a1f7a5deac96faa75c099f5b9e828d77991cd83b +TEST= 238 +KEY= c3d1c26cca8316f2c62764f811ff3c51b993623bdfff0217900542ae13cd7a45 +PT= 1e03bb32b15e3ea84c949c14a1f7a5deac96faa75c099f5b9e828d77991cd83b +CT= b0d70183031f9dc35419a6275916bdb8d8f82655b2a3d0d9d7b72bb00f288146 +TEST= 239 +KEY= 7306c3efc99c8b31923ec2df48e981e9616b446e6d5cd2ce47b2691e1ce5fb03 +PT= b0d70183031f9dc35419a6275916bdb8d8f82655b2a3d0d9d7b72bb00f288146 +CT= c65cec24f58af05010b3c5241f41a9d84cd9c53311c36040657ea5ce66f3166e +TEST= 240 +KEY= b55a2fcb3c167b61828d07fb57a828312db2815d7c9fb28e22ccccd07a16ed6d +PT= c65cec24f58af05010b3c5241f41a9d84cd9c53311c36040657ea5ce66f3166e +CT= 31c2cb1200815874d103d91a41f4b58967a15d5448ea455d9ede77220b5004c0 +TEST= 241 +KEY= 8498e4d93c972315538edee1165c9db84a13dc093475f7d3bc12bbf27146e9ad +PT= 31c2cb1200815874d103d91a41f4b58967a15d5448ea455d9ede77220b5004c0 +CT= 7430d24b54bf9cde61d8f1a2774bb4e4234af94c204e9cb55ac37ce16feb9195 +TEST= 242 +KEY= f0a836926828bfcb32562f436117295c69592545143b6b66e6d1c7131ead7838 +PT= 7430d24b54bf9cde61d8f1a2774bb4e4234af94c204e9cb55ac37ce16feb9195 +CT= 0269a9ab021611455e3be1253a0706b34b842d374d758380b2a34c2d65654830 +TEST= 243 +KEY= f2c19f396a3eae8e6c6dce665b102fef22dd0872594ee8e654728b3e7bc83008 +PT= 0269a9ab021611455e3be1253a0706b34b842d374d758380b2a34c2d65654830 +CT= ee6a56317a3f5c588ada6a48bdf0282ee89a86f6641591131f628e60d2dce60f +TEST= 244 +KEY= 1cabc9081001f2d6e6b7a42ee6e007c1ca478e843d5b79f54b10055ea914d607 +PT= ee6a56317a3f5c588ada6a48bdf0282ee89a86f6641591131f628e60d2dce60f +CT= 035c07c1858112c50d0b247a862286fd97a668a9e15fcb04ec805e2192fc207c +TEST= 245 +KEY= 1ff7cec99580e013ebbc805460c2813c5de1e62ddc04b2f1a7905b7f3be8f67b +PT= 035c07c1858112c50d0b247a862286fd97a668a9e15fcb04ec805e2192fc207c +CT= 98bb9bf9e35d9172c8e97af0ea0227191cae2a8c7640c36bafb14f1faf7b82a8 +TEST= 246 +KEY= 874c553076dd71612355faa48ac0a625414fcca1aa44719a08211460949374d3 +PT= 98bb9bf9e35d9172c8e97af0ea0227191cae2a8c7640c36bafb14f1faf7b82a8 +CT= 460ea032bb39ce4bb9f7ca08cb995f75a0576b84bc678989240cf35ca7679912 +TEST= 247 +KEY= c142f502cde4bf2a9aa230ac4159f950e118a7251623f8132c2de73c33f4edc1 +PT= 460ea032bb39ce4bb9f7ca08cb995f75a0576b84bc678989240cf35ca7679912 +CT= 3eee3aea289a892442acc0b78c2d918c8f4053266d73a6e6675b31db40c3a6d8 +TEST= 248 +KEY= ffaccfe8e57e360ed80ef01bcd7468dc6e58f4037b505ef54b76d6e773374b19 +PT= 3eee3aea289a892442acc0b78c2d918c8f4053266d73a6e6675b31db40c3a6d8 +CT= 13c42b5e620dc12f1c83beaec8ad219f0ac7a183620bb891da4bbfdd92932b15 +TEST= 249 +KEY= ec68e4b68773f721c48d4eb505d94943649f5580195be664913d693ae1a4600c +PT= 13c42b5e620dc12f1c83beaec8ad219f0ac7a183620bb891da4bbfdd92932b15 +CT= 022875faeffdef01d63566118942f32be1fb8ffea2e0ef940970c1c3e7248300 +TEST= 250 +KEY= ee40914c688e182012b828a48c9bba688564da7ebbbb09f0984da8f90680e30c +PT= 022875faeffdef01d63566118942f32be1fb8ffea2e0ef940970c1c3e7248300 +CT= e27dd4d0a20b542108a50dd5a2fbf25df6e23723b135be4e03fc237c3f120e1a +TEST= 251 +KEY= 0c3d459cca854c011a1d25712e6048357386ed5d0a8eb7be9bb18b853992ed16 +PT= e27dd4d0a20b542108a50dd5a2fbf25df6e23723b135be4e03fc237c3f120e1a +CT= 25f9ea3ff1c4daa98b59c5bc39546d147fea049ca4315f033537d63598ea82d7 +TEST= 252 +KEY= 29c4afa33b4196a89144e0cd173425210c6ce9c1aebfe8bdae865db0a1786fc1 +PT= 25f9ea3ff1c4daa98b59c5bc39546d147fea049ca4315f033537d63598ea82d7 +CT= f852f014ca050f532bc0dcf9dffcaf2fab0305d57e51a0b1f90e123f94320b9b +TEST= 253 +KEY= d1965fb7f14499fbba843c34c8c88a0ea76fec14d0ee480c57884f8f354a645a +PT= f852f014ca050f532bc0dcf9dffcaf2fab0305d57e51a0b1f90e123f94320b9b +CT= 32c7d57941b3f48f7a4a799088eec6654ef8461de524e7568200f95c042934ed +TEST= 254 +KEY= e3518aceb0f76d74c0ce45a440264c6be997aa0935caaf5ad588b6d3316350b7 +PT= 32c7d57941b3f48f7a4a799088eec6654ef8461de524e7568200f95c042934ed +CT= aaddeea93417de93c0b9f085070963ed79e37d77c241a5416705116805d00fd6 +TEST= 255 +KEY= 498c646784e0b3e70077b521472f2f869074d77ef78b0a1bb28da7bb34b35f61 +PT= aaddeea93417de93c0b9f085070963ed79e37d77c241a5416705116805d00fd6 +CT= 97fc607fbaafbb43609b85851c49fd493e5e28424dd9348cfa78e5a94bbe2795 +TEST= 256 +KEY= de7004183e4f08a460ec30a45b66d2cfae2aff3cba523e9748f542127f0d78f4 +PT= 97fc607fbaafbb43609b85851c49fd493e5e28424dd9348cfa78e5a94bbe2795 +CT= 7fa064c013927b6c075054b0d44ccd2152817e710c97130930d86eb41bdafc0d +TEST= 257 +KEY= a1d060d82ddd73c867bc64148f2a1feefcab814db6c52d9e782d2ca664d784f9 +PT= 7fa064c013927b6c075054b0d44ccd2152817e710c97130930d86eb41bdafc0d +CT= e366459ba0ef222664af909e070954b00781931685d5852676e768ea3605ded7 +TEST= 258 +KEY= 42b625438d3251ee0313f48a88234b5efb2a125b3310a8b80eca444c52d25a2e +PT= e366459ba0ef222664af909e070954b00781931685d5852676e768ea3605ded7 +CT= 036b76549f112d08977ae59bf1d59f6227916b9874b325dc4541a8e8f47578a8 +TEST= 259 +KEY= 41dd531712237ce69469111179f6d43cdcbb79c347a38d644b8beca4a6a72286 +PT= 036b76549f112d08977ae59bf1d59f6227916b9874b325dc4541a8e8f47578a8 +CT= 1642b188bfa6700a058c7d0edbe48ec4d25df3786f601aa668330dd2ee7e4dbb +TEST= 260 +KEY= 579fe29fad850cec91e56c1fa2125af80ee68abb28c397c223b8e17648d96f3d +PT= 1642b188bfa6700a058c7d0edbe48ec4d25df3786f601aa668330dd2ee7e4dbb +CT= 1183a907927ee98ff92e9330e19ca565a9d1c42da653eb3dcf554290e3dd2ac1 +TEST= 261 +KEY= 461c4b983ffbe56368cbff2f438eff9da7374e968e907cffeceda3e6ab0445fc +PT= 1183a907927ee98ff92e9330e19ca565a9d1c42da653eb3dcf554290e3dd2ac1 +CT= fe519605594768b0e03867c614a42781cb9e046770d441f5c5d276c42065bbe7 +TEST= 262 +KEY= b84ddd9d66bc8dd388f398e9572ad81c6ca94af1fe443d0a293fd5228b61fe1b +PT= fe519605594768b0e03867c614a42781cb9e046770d441f5c5d276c42065bbe7 +CT= 0aeab4d2999ee348bceed68f7e6182276a0f7da1fd69669a9a2265965321d35f +TEST= 263 +KEY= b2a7694fff226e9b341d4e66294b5a3b06a63750032d5b90b31db0b4d8402d44 +PT= 0aeab4d2999ee348bceed68f7e6182276a0f7da1fd69669a9a2265965321d35f +CT= d554f0dc495e4d3cc06377f1a8cbd307d46c9967a74e379e3dd02ac8f68d2d7d +TEST= 264 +KEY= 67f39993b67c23a7f47e39978180893cd2caae37a4636c0e8ecd9a7c2ecd0039 +PT= d554f0dc495e4d3cc06377f1a8cbd307d46c9967a74e379e3dd02ac8f68d2d7d +CT= ea1af29ad1a158868c2be2e9b7503e74ce1530c8a3951ae03c5df88cd5d7dad1 +TEST= 265 +KEY= 8de96b0967dd7b217855db7e36d0b7481cdf9eff07f676eeb29062f0fb1adae8 +PT= ea1af29ad1a158868c2be2e9b7503e74ce1530c8a3951ae03c5df88cd5d7dad1 +CT= 1745d58a6cccb759839923d769d386596ebe026814d8450503018fda8371fea0 +TEST= 266 +KEY= 9aacbe830b11cc78fbccf8a95f03311172619c97132e33ebb191ed2a786b2448 +PT= 1745d58a6cccb759839923d769d386596ebe026814d8450503018fda8371fea0 +CT= c54c9f1adde787e37b1b25d541677ecb7b439cca12a7e348019fe3b9b6c712a7 +TEST= 267 +KEY= 5fe02199d6f64b9b80d7dd7c1e644fda0922005d0189d0a3b00e0e93ceac36ef +PT= c54c9f1adde787e37b1b25d541677ecb7b439cca12a7e348019fe3b9b6c712a7 +CT= bd9eba1aed00e30d700f5cbc1aa97a688e88a04563c77d4531cf1da0bcb7bcdc +TEST= 268 +KEY= e27e9b833bf6a896f0d881c004cd35b287aaa018624eade681c11333721b8a33 +PT= bd9eba1aed00e30d700f5cbc1aa97a688e88a04563c77d4531cf1da0bcb7bcdc +CT= fdee22d8b68504bdb2528545b9702674fa804c1c35ed5564892309205834883f +TEST= 269 +KEY= 1f90b95b8d73ac2b428a0485bdbd13c67d2aec0457a3f88208e21a132a2f020c +PT= fdee22d8b68504bdb2528545b9702674fa804c1c35ed5564892309205834883f +CT= e787413177d5ea206c3ee37b27c08fb91bc03a9afd264245abcb7df1a401730e +TEST= 270 +KEY= f817f86afaa6460b2eb4e7fe9a7d9c7f66ead69eaa85bac7a32967e28e2e7102 +PT= e787413177d5ea206c3ee37b27c08fb91bc03a9afd264245abcb7df1a401730e +CT= 911739510a14b1d87ded9a4c90dcd93010eee8c602cb2084b742a2ddf0439c02 +TEST= 271 +KEY= 6900c13bf0b2f7d353597db20aa1454f76043e58a84e9a43146bc53f7e6ded00 +PT= 911739510a14b1d87ded9a4c90dcd93010eee8c602cb2084b742a2ddf0439c02 +CT= 950873565bbbc759463ab4280e1e084dea6a61de6b6b8b9a982eb156e109bda4 +TEST= 272 +KEY= fc08b26dab09308a1563c99a04bf4d029c6e5f86c32511d98c4574699f6450a4 +PT= 950873565bbbc759463ab4280e1e084dea6a61de6b6b8b9a982eb156e109bda4 +CT= 103adfa2ddd756f6630d90b58731c47131a070749dd4139b7f104a80be4836f0 +TEST= 273 +KEY= ec326dcf76de667c766e592f838e8973adce2ff25ef10242f3553ee9212c6654 +PT= 103adfa2ddd756f6630d90b58731c47131a070749dd4139b7f104a80be4836f0 +CT= d1ec01ad8942becb7e40e2cccdd10982e56fbbe530d148cb0ad0a9bf0a2db42d +TEST= 274 +KEY= 3dde6c62ff9cd8b7082ebbe34e5f80f148a194176e204a89f98597562b01d279 +PT= d1ec01ad8942becb7e40e2cccdd10982e56fbbe530d148cb0ad0a9bf0a2db42d +CT= ac6fbf3c850a30f461272d320e78011e3c4c56794706824dcd6a9a289684e26f +TEST= 275 +KEY= 91b1d35e7a96e843690996d1402781ef74edc26e2926c8c434ef0d7ebd853016 +PT= ac6fbf3c850a30f461272d320e78011e3c4c56794706824dcd6a9a289684e26f +CT= 4e763c8cad00ebed78c3d43f751cc1b66e56a68fab57eb021a0a3999f76ee35c +TEST= 276 +KEY= dfc7efd2d79603ae11ca42ee353b40591abb64e1827123c62ee534e74aebd34a +PT= 4e763c8cad00ebed78c3d43f751cc1b66e56a68fab57eb021a0a3999f76ee35c +CT= 470f91ba64f503dfd0231a02cd130343c37a426f8095632e8e1462df28b55436 +TEST= 277 +KEY= 98c87e68b3630071c1e958ecf828431ad9c1268e02e440e8a0f15638625e877c +PT= 470f91ba64f503dfd0231a02cd130343c37a426f8095632e8e1462df28b55436 +CT= acf4f556792e61f179497e73bc58ec1fa710d4f01adabdb5d913bf78b1425b0c +TEST= 278 +KEY= 343c8b3eca4d6180b8a0269f4470af057ed1f27e183efd5d79e2e940d31cdc70 +PT= acf4f556792e61f179497e73bc58ec1fa710d4f01adabdb5d913bf78b1425b0c +CT= ed903d9fd8ed795cc0c7a59db0a9008026074e11fba0ea0a60f8856c96cf11cf +TEST= 279 +KEY= d9acb6a112a018dc78678302f4d9af8558d6bc6fe39e1757191a6c2c45d3cdbf +PT= ed903d9fd8ed795cc0c7a59db0a9008026074e11fba0ea0a60f8856c96cf11cf +CT= 1ca349cdc4ae134ef20449f753005df9c0ff6f01bdab0fb0f7d51828f02574ca +TEST= 280 +KEY= c50fff6cd60e0b928a63caf5a7d9f27c9829d36e5e3518e7eecf7404b5f6b975 +PT= 1ca349cdc4ae134ef20449f753005df9c0ff6f01bdab0fb0f7d51828f02574ca +CT= ef5ac0ec48d3de14dff644637df4c6385c101a1ac0ff7343b90b7e6786aff3ab +TEST= 281 +KEY= 2a553f809eddd58655958e96da2d3444c439c9749eca6ba457c40a6333594ade +PT= ef5ac0ec48d3de14dff644637df4c6385c101a1ac0ff7343b90b7e6786aff3ab +CT= f43613bfba24ba5647f2390fb82a0eceeb2a90a101b868c36c3937f69949c07c +TEST= 282 +KEY= de632c3f24f96fd01267b79962073a8a2f1359d59f7203673bfd3d95aa108aa2 +PT= f43613bfba24ba5647f2390fb82a0eceeb2a90a101b868c36c3937f69949c07c +CT= 00c697963c91b0e6ec3f5f812fa3a07291b3365a5a05188a2bbef587bce1b3c0 +TEST= 283 +KEY= dea5bba91868df36fe58e8184da49af8bea06f8fc5771bed1043c81216f13962 +PT= 00c697963c91b0e6ec3f5f812fa3a07291b3365a5a05188a2bbef587bce1b3c0 +CT= 88cf8055019a52a6bc46628f513ea8ddd79d71169a3185f86f87b5ed808dfb8b +TEST= 284 +KEY= 566a3bfc19f28d90421e8a971c9a3225693d1e995f469e157fc47dff967cc2e9 +PT= 88cf8055019a52a6bc46628f513ea8ddd79d71169a3185f86f87b5ed808dfb8b +CT= b2c9ce9a4f8ccb5b975f421b18fb92aa219e6f090efeb3077510e664a75a6d6e +TEST= 285 +KEY= e4a3f566567e46cbd541c88c0461a08f48a3719051b82d120ad49b9b3126af87 +PT= b2c9ce9a4f8ccb5b975f421b18fb92aa219e6f090efeb3077510e664a75a6d6e +CT= e639c2638051ff393b7bb42807a4fe0de32fba341aa65979462e5eb50d2e569f +TEST= 286 +KEY= 029a3705d62fb9f2ee3a7ca403c55e82ab8ccba44b1e746b4cfac52e3c08f918 +PT= e639c2638051ff393b7bb42807a4fe0de32fba341aa65979462e5eb50d2e569f +CT= a77f37447ba3c9dd49b19b1529ebc9955b190eb85a5b7f165df032173be4d4b3 +TEST= 287 +KEY= a5e50041ad8c702fa78be7b12a2e9717f095c51c11450b7d110af73907ec2dab +PT= a77f37447ba3c9dd49b19b1529ebc9955b190eb85a5b7f165df032173be4d4b3 +CT= e458bfeba55df696ffd4d7951fea364dd49b151a86755ee83576fd4027a38575 +TEST= 288 +KEY= 41bdbfaa08d186b9585f302435c4a15a240ed00697305595247c0a79204fa8de +PT= e458bfeba55df696ffd4d7951fea364dd49b151a86755ee83576fd4027a38575 +CT= 63ae53092f2c3162f5163a9b7c57cbd653e95654b7095718f357915e15645fa8 +TEST= 289 +KEY= 2213eca327fdb7dbad490abf49936a8c77e786522039028dd72b9b27352bf776 +PT= 63ae53092f2c3162f5163a9b7c57cbd653e95654b7095718f357915e15645fa8 +CT= 9d6e33aa616f1f908b767824f07ac9d16d9bf624b386965493bbf9fd196c1ca8 +TEST= 290 +KEY= bf7ddf094692a84b263f729bb9e9a35d1a7c707693bf94d9449062da2c47ebde +PT= 9d6e33aa616f1f908b767824f07ac9d16d9bf624b386965493bbf9fd196c1ca8 +CT= 30d98d0a6e232dfff4326d21275acd63e4d9408162e6d6a3000c8d6feef0cce0 +TEST= 291 +KEY= 8fa4520328b185b4d20d1fba9eb36e3efea530f7f159427a449cefb5c2b7273e +PT= 30d98d0a6e232dfff4326d21275acd63e4d9408162e6d6a3000c8d6feef0cce0 +CT= dd7eecda293c55b43d88b5d6856bd1024c0fdacbc4842eed18c88fb0fc834ff4 +TEST= 292 +KEY= 52dabed9018dd000ef85aa6c1bd8bf3cb2aaea3c35dd6c975c5460053e3468ca +PT= dd7eecda293c55b43d88b5d6856bd1024c0fdacbc4842eed18c88fb0fc834ff4 +CT= eed46424e19dc5da85c62b564469be28763f9be0de3340df15a27c7a04a9ec93 +TEST= 293 +KEY= bc0edafde01015da6a43813a5fb10114c49571dcebee2c4849f61c7f3a9d8459 +PT= eed46424e19dc5da85c62b564469be28763f9be0de3340df15a27c7a04a9ec93 +CT= 45811cb0534710253a1b6b4e3d60d06905720d5c7da6310d4d78edbe9e97b94e +TEST= 294 +KEY= f98fc64db35705ff5058ea7462d1d17dc1e77c8096481d45048ef1c1a40a3d17 +PT= 45811cb0534710253a1b6b4e3d60d06905720d5c7da6310d4d78edbe9e97b94e +CT= e59b351b2f82b637f167bebd8940cfa52061eaee7c05a19c7a3bfd65a23a9195 +TEST= 295 +KEY= 1c14f3569cd5b3c8a13f54c9eb911ed8e186966eea4dbcd97eb50ca40630ac82 +PT= e59b351b2f82b637f167bebd8940cfa52061eaee7c05a19c7a3bfd65a23a9195 +CT= a02f86a455ca764768ef95838851bfe5632f67618ce437a44380d8bffc540d46 +TEST= 296 +KEY= bc3b75f2c91fc58fc9d0c14a63c0a13d82a9f10f66a98b7d3d35d41bfa64a1c4 +PT= a02f86a455ca764768ef95838851bfe5632f67618ce437a44380d8bffc540d46 +CT= aefb49023c29257cd2824198ed9234c9792d03e76a0dc7459d1e65e350bb3c64 +TEST= 297 +KEY= 12c03cf0f536e0f31b5280d28e5295f4fb84f2e80ca44c38a02bb1f8aadf9da0 +PT= aefb49023c29257cd2824198ed9234c9792d03e76a0dc7459d1e65e350bb3c64 +CT= 80ae281aa822a519f4d41452fd313654396cfecbff87703d9c6d4edc0a942ca2 +TEST= 298 +KEY= 926e14ea5d1445eaef8694807363a3a0c2e80c23f3233c053c46ff24a04bb102 +PT= 80ae281aa822a519f4d41452fd313654396cfecbff87703d9c6d4edc0a942ca2 +CT= 2ba4f342b33c05b16d3b8b2f9c6e4f4712aded093776dfd0f65dfd8f1a464d1c +TEST= 299 +KEY= b9cae7a8ee28405b82bd1fafef0dece7d045e12ac455e3d5ca1b02abba0dfc1e +PT= 2ba4f342b33c05b16d3b8b2f9c6e4f4712aded093776dfd0f65dfd8f1a464d1c +CT= 787cb5faeffba274c76b68a0ac124b6ef6491ef23b6b2cd027612e2ded200b05 +TEST= 300 +KEY= c1b6525201d3e22f45d6770f431fa789260cffd8ff3ecf05ed7a2c86572df71b +PT= 787cb5faeffba274c76b68a0ac124b6ef6491ef23b6b2cd027612e2ded200b05 +CT= 554eb9af185b9e20f7ca40c32c1c26823d54bd402750ae599a584485d8417596 +TEST= 301 +KEY= 94f8ebfd19887c0fb21c37cc6f03810b1b584298d86e615c772268038f6c828d +PT= 554eb9af185b9e20f7ca40c32c1c26823d54bd402750ae599a584485d8417596 +CT= d433434a14550268bff2f323f99d0749f7be24dd682f87ec870959aedcc159e4 +TEST= 302 +KEY= 40cba8b70ddd7e670deec4ef969e8642ece66645b041e6b0f02b31ad53addb69 +PT= d433434a14550268bff2f323f99d0749f7be24dd682f87ec870959aedcc159e4 +CT= cdf46ac595b2b0b33adf369abe8be1209c66325e90fd7914fe92a86cf4e9b804 +TEST= 303 +KEY= 8d3fc272986fced43731f275281567627080541b20bc9fa40eb999c1a744636d +PT= cdf46ac595b2b0b33adf369abe8be1209c66325e90fd7914fe92a86cf4e9b804 +CT= 8b9fed46fb5cfa96e00b5c14e23ef247a374012dfa4999090d83f35f931fdcd4 +TEST= 304 +KEY= 06a02f3463333442d73aae61ca2b9525d3f45536daf506ad033a6a9e345bbfb9 +PT= 8b9fed46fb5cfa96e00b5c14e23ef247a374012dfa4999090d83f35f931fdcd4 +CT= f3370ebe0ade7e05e7ab04dc697c7a3013e2e151befc5c3cbe0b219152c64fd7 +TEST= 305 +KEY= f597218a69ed4a473091aabda357ef15c016b46764095a91bd314b0f669df06e +PT= f3370ebe0ade7e05e7ab04dc697c7a3013e2e151befc5c3cbe0b219152c64fd7 +CT= 906d6efac73635963911af31eb034e47fd7fab89598078923ab8a04c58383fc8 +TEST= 306 +KEY= 65fa4f70aedb7fd10980058c4854a1523d691fee3d8922038789eb433ea5cfa6 +PT= 906d6efac73635963911af31eb034e47fd7fab89598078923ab8a04c58383fc8 +CT= 76e87de36b55929bb391f0acb81edb8d66027085dce3bb9b4b8dabd6f6c50d9b +TEST= 307 +KEY= 13123293c58eed4aba11f520f04a7adf5b6b6f6be16a9998cc044095c860c23d +PT= 76e87de36b55929bb391f0acb81edb8d66027085dce3bb9b4b8dabd6f6c50d9b +CT= 340dfac0b966aeede448be5fdbb0ff661f14dedb150a5c050bbc0043b2deda90 +TEST= 308 +KEY= 271fc8537ce843a75e594b7f2bfa85b9447fb1b0f460c59dc7b840d67abe18ad +PT= 340dfac0b966aeede448be5fdbb0ff661f14dedb150a5c050bbc0043b2deda90 +CT= 50997d017460865059849cda6e38e3477e6f21201b32ced7d02cbeb259f97d93 +TEST= 309 +KEY= 7786b5520888c5f707ddd7a545c266fe3a109090ef520b4a1794fe642347653e +PT= 50997d017460865059849cda6e38e3477e6f21201b32ced7d02cbeb259f97d93 +CT= 2476287b3b67e4813b943b0221f34071abcad2d2f15812ab08dafabb1fbfcca1 +TEST= 310 +KEY= 53f09d2933ef21763c49eca76431268f91da42421e0a19e11f4e04df3cf8a99f +PT= 2476287b3b67e4813b943b0221f34071abcad2d2f15812ab08dafabb1fbfcca1 +CT= 00c113e10202a4e741a8887f22bb8007b324f45242b363050f285f93af5ea0c6 +TEST= 311 +KEY= 53318ec831ed85917de164d8468aa68822feb6105cb97ae410665b4c93a60959 +PT= 00c113e10202a4e741a8887f22bb8007b324f45242b363050f285f93af5ea0c6 +CT= dd1e3c1494467936ad2857f901f428c19f2cb5819fb2dfecdc6c1dc3e0fbdc9b +TEST= 312 +KEY= 8e2fb2dca5abfca7d0c93321477e8e49bdd20391c30ba508cc0a468f735dd5c2 +PT= dd1e3c1494467936ad2857f901f428c19f2cb5819fb2dfecdc6c1dc3e0fbdc9b +CT= 635d1a99042d3e81bdfac712211bdf2808b902b6ff23f50166b4769c015804c4 +TEST= 313 +KEY= ed72a845a186c2266d33f43366655161b56b01273c285009aabe30137205d106 +PT= 635d1a99042d3e81bdfac712211bdf2808b902b6ff23f50166b4769c015804c4 +CT= c2b5e095198265fed1ef86ef19bee7dc37467d380f385bd5b023f9de6bedea67 +TEST= 314 +KEY= 2fc748d0b804a7d8bcdc72dc7fdbb6bd822d7c1f33100bdc1a9dc9cd19e83b61 +PT= c2b5e095198265fed1ef86ef19bee7dc37467d380f385bd5b023f9de6bedea67 +CT= 11f2b80ada9c3477352d8cdcf39eeacd057bc9c2637f7bf32ff4bae85de18393 +TEST= 315 +KEY= 3e35f0da629893af89f1fe008c455c708756b5dd506f702f356973254409b8f2 +PT= 11f2b80ada9c3477352d8cdcf39eeacd057bc9c2637f7bf32ff4bae85de18393 +CT= 30756121f7e748c1aa4711816815adfe34e54f338335bb82de102e8a0683e4da +TEST= 316 +KEY= 0e4091fb957fdb6e23b6ef81e450f18eb3b3faeed35acbadeb795daf428a5c28 +PT= 30756121f7e748c1aa4711816815adfe34e54f338335bb82de102e8a0683e4da +CT= 2aba61121cae7587ab5ec2da44437148b84db212b7af3b827bf90480287d0bc2 +TEST= 317 +KEY= 24faf0e989d1aee988e82d5ba01380c60bfe48fc64f5f02f9080592f6af757ea +PT= 2aba61121cae7587ab5ec2da44437148b84db212b7af3b827bf90480287d0bc2 +CT= 5c5ae49293f5ac995a4635fec85fb0ed1d11a41aba917e331db4b86436644c2a +TEST= 318 +KEY= 78a0147b1a240270d2ae18a5684c302b16efece6de648e1c8d34e14b5c931bc0 +PT= 5c5ae49293f5ac995a4635fec85fb0ed1d11a41aba917e331db4b86436644c2a +CT= 5e6e47523f4dfcdcad64c4b9dbf6ee13f99b9dc47f7fc41300b02073d93ee02c +TEST= 319 +KEY= 26ce53292569feac7fcadc1cb3bade38ef747122a11b4a0f8d84c13885adfbec +PT= 5e6e47523f4dfcdcad64c4b9dbf6ee13f99b9dc47f7fc41300b02073d93ee02c +CT= a40ee2caaff6348627e59cd71edfa3957aefbae622f29a657a8a070bf295715e +TEST= 320 +KEY= 82c0b1e38a9fca2a582f40cbad657dad959bcbc483e9d06af70ec63377388ab2 +PT= a40ee2caaff6348627e59cd71edfa3957aefbae622f29a657a8a070bf295715e +CT= 006eb5e770520f0fa6291ff0d82bc76f7279be9c2362bef2e35473395e024a8f +TEST= 321 +KEY= 82ae0404facdc525fe065f3b754ebac2e7e27558a08b6e98145ab50a293ac03d +PT= 006eb5e770520f0fa6291ff0d82bc76f7279be9c2362bef2e35473395e024a8f +CT= 083776976ffc0cc9022052f99cb58feac6312cc9ac2ee3eed902b1ef35a5e637 +TEST= 322 +KEY= 8a9972939531c9ecfc260dc2e9fb352821d359910ca58d76cd5804e51c9f260a +PT= 083776976ffc0cc9022052f99cb58feac6312cc9ac2ee3eed902b1ef35a5e637 +CT= f4d1598c587483c97fc39372c7083eb793b4f19005ffcaad02c75b472dbbc7a3 +TEST= 323 +KEY= 7e482b1fcd454a2583e59eb02ef30b9fb267a801095a47dbcf9f5fa23124e1a9 +PT= f4d1598c587483c97fc39372c7083eb793b4f19005ffcaad02c75b472dbbc7a3 +CT= 8813a9ad3a2561246dd878c099060a9907d559889b92c0264daf8f843b3727b8 +TEST= 324 +KEY= f65b82b2f7602b01ee3de670b7f50106b5b2f18992c887fd8230d0260a13c611 +PT= 8813a9ad3a2561246dd878c099060a9907d559889b92c0264daf8f843b3727b8 +CT= ff36e0e53a72d6fe8467d1f3f519492f7212e2df5fc67472ffa341e0e05a4257 +TEST= 325 +KEY= 096d6257cd12fdff6a5a378342ec4829c7a01356cd0ef38f7d9391c6ea498446 +PT= ff36e0e53a72d6fe8467d1f3f519492f7212e2df5fc67472ffa341e0e05a4257 +CT= 33721a6f0f6b9be297dcc797dbed340b06ef2ac565e567c158bd73ae93f5a03e +TEST= 326 +KEY= 3a1f7838c279661dfd86f01499017c22c14f3993a8eb944e252ee26879bc2478 +PT= 33721a6f0f6b9be297dcc797dbed340b06ef2ac565e567c158bd73ae93f5a03e +CT= cc5d8001d4c69351d8ba6d3f8eb6e0b061f1d7aa1c383d0f6fdf64f49e5797d4 +TEST= 327 +KEY= f642f83916bff54c253c9d2b17b79c92a0beee39b4d3a9414af1869ce7ebb3ac +PT= cc5d8001d4c69351d8ba6d3f8eb6e0b061f1d7aa1c383d0f6fdf64f49e5797d4 +CT= 540fd0bf6378f202dfdafd708ae4a4f492929031d33e44a50629564883f15d45 +TEST= 328 +KEY= a24d288675c7074efae6605b9d533866322c7e0867edede44cd8d0d4641aeee9 +PT= 540fd0bf6378f202dfdafd708ae4a4f492929031d33e44a50629564883f15d45 +CT= 91c2728ee863ff0119faa2cf00789542b008012b2f72db844219f9e20f031be2 +TEST= 329 +KEY= 338f5a089da4f84fe31cc2949d2bad2482247f23489f36600ec129366b19f50b +PT= 91c2728ee863ff0119faa2cf00789542b008012b2f72db844219f9e20f031be2 +CT= 495fc3339b264f7cbae0f38f85794cf7c439cc0154c500795ffea79895d74b86 +TEST= 330 +KEY= 7ad0993b0682b73359fc311b1852e1d3461db3221c5a3619513f8eaefecebe8d +PT= 495fc3339b264f7cbae0f38f85794cf7c439cc0154c500795ffea79895d74b86 +CT= 9cc49c519b90934a4eba50e3603280d7b264035ba5f6848d3f2689e883c2939b +TEST= 331 +KEY= e614056a9d122479174661f878606104f479b079b9acb2946e1907467d0c2d16 +PT= 9cc49c519b90934a4eba50e3603280d7b264035ba5f6848d3f2689e883c2939b +CT= 2dd0edffc2d07ebec58c16c03229ae03a9a470e900966c05b566671595dd91e1 +TEST= 332 +KEY= cbc4e8955fc25ac7d2ca77384a49cf075dddc090b93ade91db7f6053e8d1bcf7 +PT= 2dd0edffc2d07ebec58c16c03229ae03a9a470e900966c05b566671595dd91e1 +CT= 1395be3815d70abb3fd202dae9e61d743049291314def7d294f279667c974b90 +TEST= 333 +KEY= d85156ad4a15507ced1875e2a3afd2736d94e983ade429434f8d19359446f767 +PT= 1395be3815d70abb3fd202dae9e61d743049291314def7d294f279667c974b90 +CT= 3eae20768f8633c6f453d5d4c65cea532bcca00f327644f45f9d8560bc15ec68 +TEST= 334 +KEY= e6ff76dbc59363ba194ba03665f338204658498c9f926db710109c5528531b0f +PT= 3eae20768f8633c6f453d5d4c65cea532bcca00f327644f45f9d8560bc15ec68 +CT= 8e1f8b050973b6c0e8ddd90a016c19dfef7bab175668c7694da9b89532c594d2 +TEST= 335 +KEY= 68e0fddecce0d57af196793c649f21ffa923e29bc9faaade5db924c01a968fdd +PT= 8e1f8b050973b6c0e8ddd90a016c19dfef7bab175668c7694da9b89532c594d2 +CT= fac825761c2a1d09c5ea211b6ca2cd9b5b138a8b6070fe42e7f535e700a238bc +TEST= 336 +KEY= 9228d8a8d0cac873347c5827083dec64f2306810a98a549cba4c11271a34b761 +PT= fac825761c2a1d09c5ea211b6ca2cd9b5b138a8b6070fe42e7f535e700a238bc +CT= 64274b63970e536cf6d682ef873967bd4a2f4b849f89146bf88bd36598798ece +TEST= 337 +KEY= f60f93cb47c49b1fc2aadac88f048bd9b81f2394360340f742c7c242824d39af +PT= 64274b63970e536cf6d682ef873967bd4a2f4b849f89146bf88bd36598798ece +CT= 36ee703f27d5c0075002afb957c624e3d7b53a232357fd352f0beea7189789c9 +TEST= 338 +KEY= c0e1e3f460115b1892a87571d8c2af3a6faa19b71554bdc26dcc2ce59adab066 +PT= 36ee703f27d5c0075002afb957c624e3d7b53a232357fd352f0beea7189789c9 +CT= a47bcdb1475361d99fac1935d1e7895582a8d5fe076ab619aa7292cf6a46100d +TEST= 339 +KEY= 649a2e4527423ac10d046c440925266fed02cc49123e0bdbc7bebe2af09ca06b +PT= a47bcdb1475361d99fac1935d1e7895582a8d5fe076ab619aa7292cf6a46100d +CT= 7d05f698c0418807f6dd2c8cef324dbf3656867473196a833cbbf332d7d8f07f +TEST= 340 +KEY= 199fd8dde703b2c6fbd940c8e6176bd0db544a3d61276158fb054d1827445014 +PT= 7d05f698c0418807f6dd2c8cef324dbf3656867473196a833cbbf332d7d8f07f +CT= 487515b037196179117bac6542f68563c3f69ee1a417efa76b98f8c181aea2da +TEST= 341 +KEY= 51eacd6dd01ad3bfeaa2ecada4e1eeb318a2d4dcc5308eff909db5d9a6eaf2ce +PT= 487515b037196179117bac6542f68563c3f69ee1a417efa76b98f8c181aea2da +CT= 0eb9891fe40cd2e9864985608c427f49122591d7b85c20bc46f254e3b247c853 +TEST= 342 +KEY= 5f534472341601566ceb69cd28a391fa0a87450b7d6cae43d66fe13a14ad3a9d +PT= 0eb9891fe40cd2e9864985608c427f49122591d7b85c20bc46f254e3b247c853 +CT= 6ca26859122424f19be553fa1f892bdb69f0dd36dea76a75e8552ec2bbd5669e +TEST= 343 +KEY= 33f12c2b263225a7f70e3a37372aba216377983da3cbc4363e3acff8af785c03 +PT= 6ca26859122424f19be553fa1f892bdb69f0dd36dea76a75e8552ec2bbd5669e +CT= f7e518792f36637d1a67464f279b99b9be9ddf056a9f0d54c076b017f60a89be +TEST= 344 +KEY= c4143452090446daed697c7810b12398ddea4738c954c962fe4c7fef5972d5bd +PT= f7e518792f36637d1a67464f279b99b9be9ddf056a9f0d54c076b017f60a89be +CT= ca056a993543094aa93066d5d75ab450585938d3e75822d6ec348c16300ec24b +TEST= 345 +KEY= 0e115ecb3c474f9044591aadc7eb97c885b37feb2e0cebb41278f3f9697c17f6 +PT= ca056a993543094aa93066d5d75ab450585938d3e75822d6ec348c16300ec24b +CT= e655abdf82682e4326bc7c55f4fc6862909c5bf78b6a6c101f7f5d4cd6e8308a +TEST= 346 +KEY= e844f514be2f61d362e566f83317ffaa152f241ca56687a40d07aeb5bf94277c +PT= e655abdf82682e4326bc7c55f4fc6862909c5bf78b6a6c101f7f5d4cd6e8308a +CT= b08303d48cc45132bc0c2097cc38f7d79fcef45e5660828de7524004867b1b3f +TEST= 347 +KEY= 58c7f6c032eb30e1dee9466fff2f087d8ae1d042f3060529ea55eeb139ef3c43 +PT= b08303d48cc45132bc0c2097cc38f7d79fcef45e5660828de7524004867b1b3f +CT= 3a5cc2b5bfb84b95f6574634fd3b348cb93a7de4f7d74343a5a1bec73f46dd75 +TEST= 348 +KEY= 629b34758d537b7428be005b02143cf133dbada604d1466a4ff4507606a9e136 +PT= 3a5cc2b5bfb84b95f6574634fd3b348cb93a7de4f7d74343a5a1bec73f46dd75 +CT= 2fd464cf6abebc826e1f448cb2fb8ca557976c13723c09cee07ab9e7094006e2 +TEST= 349 +KEY= 4d4f50bae7edc7f646a144d7b0efb054644cc1b576ed4fa4af8ee9910fe9e7d4 +PT= 2fd464cf6abebc826e1f448cb2fb8ca557976c13723c09cee07ab9e7094006e2 +CT= 54ad0ea6edbad662de8d360677575f3b8bc33b69df69cf743a41c70a9ab26dbb +TEST= 350 +KEY= 19e25e1c0a571194982c72d1c7b8ef6fef8ffadca98480d095cf2e9b955b8a6f +PT= 54ad0ea6edbad662de8d360677575f3b8bc33b69df69cf743a41c70a9ab26dbb +CT= b0b721a54fea3783cea5b71fe7d31ebbd22d7ab3fa3cd59edc7ac6f116f8fe1a +TEST= 351 +KEY= a9557fb945bd26175689c5ce206bf1d43da2806f53b8554e49b5e86a83a37475 +PT= b0b721a54fea3783cea5b71fe7d31ebbd22d7ab3fa3cd59edc7ac6f116f8fe1a +CT= b7d2c4d2676f7a838b09ade56d333053eba5596b954c8acafef4d9feb906b9a3 +TEST= 352 +KEY= 1e87bb6b22d25c94dd80682b4d58c187d607d904c6f4df84b74131943aa5cdd6 +PT= b7d2c4d2676f7a838b09ade56d333053eba5596b954c8acafef4d9feb906b9a3 +CT= 9c9f09d853d2a086c7eacb700b561a95afd02e2cb855ab1c739badab2ad1a9cf +TEST= 353 +KEY= 8218b2b37100fc121a6aa35b460edb1279d7f7287ea17498c4da9c3f10746419 +PT= 9c9f09d853d2a086c7eacb700b561a95afd02e2cb855ab1c739badab2ad1a9cf +CT= 3e48fff615a1a8dbafeed8273f41676986061fcc901c579eabb2aaaa9250c6bd +TEST= 354 +KEY= bc504d4564a154c9b5847b7c794fbc7bffd1e8e4eebd23066f6836958224a2a4 +PT= 3e48fff615a1a8dbafeed8273f41676986061fcc901c579eabb2aaaa9250c6bd +CT= 4b385f497b9d6acbe34fddd404ca7e2553db3c251db14b19301613336b6c19ee +TEST= 355 +KEY= f768120c1f3c3e0256cba6a87d85c25eac0ad4c1f30c681f5f7e25a6e948bb4a +PT= 4b385f497b9d6acbe34fddd404ca7e2553db3c251db14b19301613336b6c19ee +CT= 804bafdaeb54b39b1ab598bd458d6642220afd3cd6a425b6b498af00026815ac +TEST= 356 +KEY= 7723bdd6f4688d994c7e3e153808a41c8e0029fd25a84da9ebe68aa6eb20aee6 +PT= 804bafdaeb54b39b1ab598bd458d6642220afd3cd6a425b6b498af00026815ac +CT= 32f0a95367b64778e0c1e095667a5e581217c38e2aea53d77198b6dfeef8fc6e +TEST= 357 +KEY= 45d3148593decae1acbfde805e72fa449c17ea730f421e7e9a7e3c7905d85288 +PT= 32f0a95367b64778e0c1e095667a5e581217c38e2aea53d77198b6dfeef8fc6e +CT= 82007591158de1c81d8aaa64b82e82928ec07f9079f399fdb658078b2b513742 +TEST= 358 +KEY= c7d3611486532b29b13574e4e65c78d612d795e376b187832c263bf22e8965ca +PT= 82007591158de1c81d8aaa64b82e82928ec07f9079f399fdb658078b2b513742 +CT= 7ee65c2d736e5a8ff3fa1dab5f32c72926df3850f9e6b1d220c9a6641793e807 +TEST= 359 +KEY= b9353d39f53d71a642cf694fb96ebfff3408adb38f5736510cef9d96391a8dcd +PT= 7ee65c2d736e5a8ff3fa1dab5f32c72926df3850f9e6b1d220c9a6641793e807 +CT= f1db43ffd7c336bd52d1b9904d7ca6e419c6bd5610511721ac992d81fa530e10 +TEST= 360 +KEY= 48ee7ec622fe471b101ed0dff412191b2dce10e59f062170a076b017c34983dd +PT= f1db43ffd7c336bd52d1b9904d7ca6e419c6bd5610511721ac992d81fa530e10 +CT= 7324b686b4f580a72f7fc07fd8c06ec0767a22b64652ea076012270c3d7a3ba0 +TEST= 361 +KEY= 3bcac840960bc7bc3f6110a02cd277db5bb43253d954cb77c064971bfe33b87d +PT= 7324b686b4f580a72f7fc07fd8c06ec0767a22b64652ea076012270c3d7a3ba0 +CT= 1c616f4278ed862a8938f9a59e73d822bf3f3e1de66090d1de3538ffede3dc13 +TEST= 362 +KEY= 27aba702eee64196b659e905b2a1aff9e48b0c4e3f345ba61e51afe413d0646e +PT= 1c616f4278ed862a8938f9a59e73d822bf3f3e1de66090d1de3538ffede3dc13 +CT= 6834782752f979be4226bb0b92dad336feff0baf040945afa55329f1ebd4ce98 +TEST= 363 +KEY= 4f9fdf25bc1f3828f47f520e207b7ccf1a7407e13b3d1e09bb028615f804aaf6 +PT= 6834782752f979be4226bb0b92dad336feff0baf040945afa55329f1ebd4ce98 +CT= b7a9dbd7ac920301718b8ff452f2c482163c49e4a62a39489b3077efac681d07 +TEST= 364 +KEY= f83604f2108d3b2985f4ddfa7289b84d0c484e059d1727412032f1fa546cb7f1 +PT= b7a9dbd7ac920301718b8ff452f2c482163c49e4a62a39489b3077efac681d07 +CT= 5e6a031e1ccc1533bec4740c6bc8ae4ec5f37be4e26e05c874fff266d744b30b +TEST= 365 +KEY= a65c07ec0c412e1a3b30a9f619411603c9bb35e17f79228954cd039c832804fa +PT= 5e6a031e1ccc1533bec4740c6bc8ae4ec5f37be4e26e05c874fff266d744b30b +CT= b556fa1d0f5f8f43240cca67e2275f11b4c1b429aac01686890052ced4f98681 +TEST= 366 +KEY= 130afdf1031ea1591f3c6391fb6649127d7a81c8d5b9340fddcd515257d1827b +PT= b556fa1d0f5f8f43240cca67e2275f11b4c1b429aac01686890052ced4f98681 +CT= 2d3aed4cd92f063cb9ff4b45104f18622ec7e3395b55547663825b949d646407 +TEST= 367 +KEY= 3e3010bdda31a765a6c328d4eb29517053bd62f18eec6079be4f0ac6cab5e67c +PT= 2d3aed4cd92f063cb9ff4b45104f18622ec7e3395b55547663825b949d646407 +CT= a0784c882cc6f58bfe62388deb687c811278c74df61ba7c852441ad94a9f829e +TEST= 368 +KEY= 9e485c35f6f752ee58a1105900412df141c5a5bc78f7c7b1ec0b101f802a64e2 +PT= a0784c882cc6f58bfe62388deb687c811278c74df61ba7c852441ad94a9f829e +CT= ab7d0e32aac5f70c5b99d9ec544acc35f1586ea41817eb7cd74567ef405f3505 +TEST= 369 +KEY= 353552075c32a5e20338c9b5540be1c4b09dcb1860e02ccd3b4e77f0c07551e7 +PT= ab7d0e32aac5f70c5b99d9ec544acc35f1586ea41817eb7cd74567ef405f3505 +CT= 079401db1a85844c6c4ca449c2726718fa3665bcf640e2d05923d24a61639f71 +TEST= 370 +KEY= 32a153dc46b721ae6f746dfc967986dc4aabaea496a0ce1d626da5baa116ce96 +PT= 079401db1a85844c6c4ca449c2726718fa3665bcf640e2d05923d24a61639f71 +CT= c207c9477eb693eeac5de0743f5b9cc85b15b53e81e1958d2a7e8f596438ac4c +TEST= 371 +KEY= f0a69a9b3801b240c3298d88a9221a1411be1b9a17415b9048132ae3c52e62da +PT= c207c9477eb693eeac5de0743f5b9cc85b15b53e81e1958d2a7e8f596438ac4c +CT= 1ef9565d0ced7871a247d22ab857de7f1123ea9bfb3654d5ae7b3849ca07b612 +TEST= 372 +KEY= ee5fccc634ecca31616e5fa21175c46b009df101ec770f45e66812aa0f29d4c8 +PT= 1ef9565d0ced7871a247d22ab857de7f1123ea9bfb3654d5ae7b3849ca07b612 +CT= 51d44b8c521704d893bb98b23bb35ca56269997aca9c6766537a727f8377eb04 +TEST= 373 +KEY= bf8b874a66fbcee9f2d5c7102ac698ce62f4687b26eb6823b51260d58c5e3fcc +PT= 51d44b8c521704d893bb98b23bb35ca56269997aca9c6766537a727f8377eb04 +CT= 967d10506bdb9fa081f8273ce2268cadc94650e17978fd4924444d5a97428337 +TEST= 374 +KEY= 29f6971a0d205149732de02cc8e01463abb2389a5f93956a91562d8f1b1cbcfb +PT= 967d10506bdb9fa081f8273ce2268cadc94650e17978fd4924444d5a97428337 +CT= 2363a63a350360ce205d796522e7760b264f367734008287e4413035cf05bc07 +TEST= 375 +KEY= 0a9531203823318753709949ea0762688dfd0eed6b9317ed75171dbad41900fc +PT= 2363a63a350360ce205d796522e7760b264f367734008287e4413035cf05bc07 +CT= 88c098af2a901c7d117db944522dae5f0c25ca854577df5aba1d52923bf27999 +TEST= 376 +KEY= 8255a98f12b32dfa420d200db82acc3781d8c4682ee4c8b7cf0a4f28efeb7965 +PT= 88c098af2a901c7d117db944522dae5f0c25ca854577df5aba1d52923bf27999 +CT= 074b3586da0e3a2f4ccde31495cde8de6f2bb70c96cc5e0d8f813305e4d35a33 +TEST= 377 +KEY= 851e9c09c8bd17d50ec0c3192de724e9eef37364b82896ba408b7c2d0b382356 +PT= 074b3586da0e3a2f4ccde31495cde8de6f2bb70c96cc5e0d8f813305e4d35a33 +CT= 8ee640694619e7750cef62cd7f21b5731548e1e9ccaff9f421251f71ce8144df +TEST= 378 +KEY= 0bf8dc608ea4f0a0022fa1d452c6919afbbb928d74876f4e61ae635cc5b96789 +PT= 8ee640694619e7750cef62cd7f21b5731548e1e9ccaff9f421251f71ce8144df +CT= bc4382b2b2355f34a4e3d4551a0f1018c2266861f1093c1c1b8036807a22111f +TEST= 379 +KEY= b7bb5ed23c91af94a6cc758148c98182399dfaec858e53527a2e55dcbf9b7696 +PT= bc4382b2b2355f34a4e3d4551a0f1018c2266861f1093c1c1b8036807a22111f +CT= b1dc6ba2eba61a07834879ce300346deb1597ec0a853b6780933e5d7a514c867 +TEST= 380 +KEY= 06673570d737b59325840c4f78cac75c88c4842c2ddde52a731db00b1a8fbef1 +PT= b1dc6ba2eba61a07834879ce300346deb1597ec0a853b6780933e5d7a514c867 +CT= 7d391a1c65d24ab5a3f321c118e0317ca07c2c9e0657c06677d8ec8b51ad6653 +TEST= 381 +KEY= 7b5e2f6cb2e5ff2686772d8e602af62028b8a8b22b8a254c04c55c804b22d8a2 +PT= 7d391a1c65d24ab5a3f321c118e0317ca07c2c9e0657c06677d8ec8b51ad6653 +CT= f89cf6110c208f766da6ae6d23bcefec372a0b5c5dc71290e2c64513f3ebd275 +TEST= 382 +KEY= 83c2d97dbec57050ebd183e3439619cc1f92a3ee764d37dce6031993b8c90ad7 +PT= f89cf6110c208f766da6ae6d23bcefec372a0b5c5dc71290e2c64513f3ebd275 +CT= e066f0ebf82d7b30170e81bb9f4e79c15eb403ca7aed960c194c5bebbc1b904d +TEST= 383 +KEY= 63a4299646e80b60fcdf0258dcd8600d4126a0240ca0a1d0ff4f427804d29a9a +PT= e066f0ebf82d7b30170e81bb9f4e79c15eb403ca7aed960c194c5bebbc1b904d +CT= 3c91a6b6321a7d6dd3a5bf5449f63ed6febd52bd64f64336c09028433ca46fbd +TEST= 384 +KEY= 5f358f2074f2760d2f7abd0c952e5edbbf9bf2996856e2e63fdf6a3b3876f527 +PT= 3c91a6b6321a7d6dd3a5bf5449f63ed6febd52bd64f64336c09028433ca46fbd +CT= 9796bc416d3301338d042269128b2a2b549fa6b28f1aaafd9f2d14266ba45650 +TEST= 385 +KEY= c8a3336119c1773ea27e9f6587a574f0eb04542be74c481ba0f27e1d53d2a377 +PT= 9796bc416d3301338d042269128b2a2b549fa6b28f1aaafd9f2d14266ba45650 +CT= 8f5bdafdb2972a6326750f40b29d67af089e4969e3055ebadd941157200b7e31 +TEST= 386 +KEY= 47f8e99cab565d5d840b90253538135fe39a1d42044916a17d666f4a73d9dd46 +PT= 8f5bdafdb2972a6326750f40b29d67af089e4969e3055ebadd941157200b7e31 +CT= d1a2861825ea5c10a3df24000da898a7da00aa9e190bd77d3186923b15cc4303 +TEST= 387 +KEY= 965a6f848ebc014d27d4b42538908bf8399ab7dc1d42c1dc4ce0fd7166159e45 +PT= d1a2861825ea5c10a3df24000da898a7da00aa9e190bd77d3186923b15cc4303 +CT= a9c99e0445de8d784c0bf6ec8280f3426996dd3f15172ee3e03e0bc6094c3d76 +TEST= 388 +KEY= 3f93f180cb628c356bdf42c9ba1078ba500c6ae30855ef3facdef6b76f59a333 +PT= a9c99e0445de8d784c0bf6ec8280f3426996dd3f15172ee3e03e0bc6094c3d76 +CT= 2eacb9fe97a31e37a505bffa177057a283c7ab00f5165d4f47cc4127b42a0d9c +TEST= 389 +KEY= 113f487e5cc19202cedafd33ad602f18d3cbc1e3fd43b270eb12b790db73aeaf +PT= 2eacb9fe97a31e37a505bffa177057a283c7ab00f5165d4f47cc4127b42a0d9c +CT= 46c3b4f2696b308863140487d89d03ae8a2e0e267a10debbc58650477b5e88c2 +TEST= 390 +KEY= 57fcfc8c35aaa28aadcef9b475fd2cb659e5cfc587536ccb2e94e7d7a02d266d +PT= 46c3b4f2696b308863140487d89d03ae8a2e0e267a10debbc58650477b5e88c2 +CT= 2fed4fbd894d442b92290acb5af02c0be239349155ac1d0ce1a8dac9588e81e1 +TEST= 391 +KEY= 7811b331bce7e6a13fe7f37f2f0d00bdbbdcfb54d2ff71c7cf3c3d1ef8a3a78c +PT= 2fed4fbd894d442b92290acb5af02c0be239349155ac1d0ce1a8dac9588e81e1 +CT= 209de841fbd418c131890c09fa4c652c3cbeefb5ff4b5654ca3f6927af0f56dd +TEST= 392 +KEY= 588c5b704733fe600e6eff76d5416591876214e12db427930503543957acf151 +PT= 209de841fbd418c131890c09fa4c652c3cbeefb5ff4b5654ca3f6927af0f56dd +CT= c778c5e9355b280bd212398d9294330d2a840216d9571566d8c4eb550eb42738 +TEST= 393 +KEY= 9ff49e997268d66bdc7cc6fb47d5569cade616f7f4e332f5ddc7bf6c5918d669 +PT= c778c5e9355b280bd212398d9294330d2a840216d9571566d8c4eb550eb42738 +CT= 93f454dc90a301e105af39e528726827c2e771ac1c2fb063018b217036580550 +TEST= 394 +KEY= 0c00ca45e2cbd78ad9d3ff1e6fa73ebb6f01675be8cc8296dc4c9e1c6f40d339 +PT= 93f454dc90a301e105af39e528726827c2e771ac1c2fb063018b217036580550 +CT= a3e93caf1a4cb95f47779784adfa6e5edb3af926fab3589f9e684669c71efc00 +TEST= 395 +KEY= afe9f6eaf8876ed59ea4689ac25d50e5b43b9e7d127fda094224d875a85e2f39 +PT= a3e93caf1a4cb95f47779784adfa6e5edb3af926fab3589f9e684669c71efc00 +CT= aebe8066cfda68efb5a845b56ddedd1e580851105d782eee8b6ebaebfb31cfe7 +TEST= 396 +KEY= 0157768c375d063a2b0c2d2faf838dfbec33cf6d4f07f4e7c94a629e536fe0de +PT= aebe8066cfda68efb5a845b56ddedd1e580851105d782eee8b6ebaebfb31cfe7 +CT= 5787c55c203b766f08688b5779423c5c2dcda830a36d7c7ae1c7796e9ea04d3d +TEST= 397 +KEY= 56d0b3d0176670552364a678d6c1b1a7c1fe675dec6a889d288d1bf0cdcfade3 +PT= 5787c55c203b766f08688b5779423c5c2dcda830a36d7c7ae1c7796e9ea04d3d +CT= 082d2ac6f4ab4e325b5dce4e853c5579f681d1166d860b5af3cbc31c867552d5 +TEST= 398 +KEY= 5efd9916e3cd3e677839683653fde4de377fb64b81ec83c7db46d8ec4bbaff36 +PT= 082d2ac6f4ab4e325b5dce4e853c5579f681d1166d860b5af3cbc31c867552d5 +CT= 9d74ee54a49f8dd5ada5d701ef094716d40bb03a3695724ef20e6d67413ac331 +TEST= 399 +KEY= c38977424752b3b2d59cbf37bcf4a3c8e3740671b779f1892948b58b0a803c07 +PT= 9d74ee54a49f8dd5ada5d701ef094716d40bb03a3695724ef20e6d67413ac331 +CT= e2576b11c2b9222ed8b8f74c07226a07ef898a6e101cfbbf9890f7cf4f8d68e2 diff --git a/flint/test/testvals/ecbnk44.txt b/flint/test/testvals/ecbnk44.txt new file mode 100644 index 0000000..b3b0e69 --- /dev/null +++ b/flint/test/testvals/ecbnk44.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= 66e94bd4ef8a2c3b884cfa59ca342b2e +TEST= 1 +KEY= 00000000000000000000000000000001 +CT= 0545aad56da2a97c3663d1432a3d1c84 +TEST= 2 +KEY= 00000000000000000000000000000003 +CT= 0d00c6457a47c6bb8cfe076f6e2b1e15 +TEST= 3 +KEY= 00000000000000000000000000000007 +CT= 429c3c22dc979510833529cb64de09e3 +TEST= 4 +KEY= 0000000000000000000000000000000f +CT= 0d68e0da8ec69a1854cc16be884ade2f +TEST= 5 +KEY= 0000000000000000000000000000001f +CT= 9a2daa4fac08769bbb1ca4f2353b1a3e +TEST= 6 +KEY= 0000000000000000000000000000003f +CT= 88325854766eba22ceaa99abd630f258 +TEST= 7 +KEY= 0000000000000000000000000000007f +CT= e0f2198deda952b01ea8ffea4171e66d +TEST= 8 +KEY= 000000000000000000000000000000ff +CT= d5c98c48255f78cc47e149e55cfc3ffd +TEST= 9 +KEY= 000000000000000000000000000001ff +CT= 09ccb66c1f0ce1854dc191c1373acb8c +TEST= 10 +KEY= 000000000000000000000000000003ff +CT= 14dfa44b544d2ca39a9a1c9a3d75fed8 +TEST= 11 +KEY= 000000000000000000000000000007ff +CT= e7df1b3adc7ebbdce19f15c82f173126 +TEST= 12 +KEY= 00000000000000000000000000000fff +CT= 8dc8a75eaf822ddf416988713e9b6e4d +TEST= 13 +KEY= 00000000000000000000000000001fff +CT= bc435a1dcdf8830d82cd5abe7bf71e46 +TEST= 14 +KEY= 00000000000000000000000000003fff +CT= 81835a69fe117b54fdb7916bcc091e71 +TEST= 15 +KEY= 00000000000000000000000000007fff +CT= e0af87cd4468c740ab180289f3738b6f +TEST= 16 +KEY= 0000000000000000000000000000ffff +CT= fc84885326b157843a4d200d86021b33 +TEST= 17 +KEY= 0000000000000000000000000001ffff +CT= be337b0bcabab18d3392a4d29f8d419d +TEST= 18 +KEY= 0000000000000000000000000003ffff +CT= 33a78574fedc6dcca40ee0f51ef11037 +TEST= 19 +KEY= 0000000000000000000000000007ffff +CT= db1821758c24162b81dc8ca0add209ab +TEST= 20 +KEY= 000000000000000000000000000fffff +CT= d3d6d60115e9043b119649ad2e7f7f84 +TEST= 21 +KEY= 000000000000000000000000001fffff +CT= 750d9e49b62cb695ae2f6680ed434451 +TEST= 22 +KEY= 000000000000000000000000003fffff +CT= 818e95e5c0e00179e04c08dbc357ddd8 +TEST= 23 +KEY= 000000000000000000000000007fffff +CT= 3803f7220b65bbc880ba1488241cb1ba +TEST= 24 +KEY= 00000000000000000000000000ffffff +CT= 2fcebd84763a9de4709973f5e0621ed6 +TEST= 25 +KEY= 00000000000000000000000001ffffff +CT= effa0eb04d6f22f209bb143bc736fac2 +TEST= 26 +KEY= 00000000000000000000000003ffffff +CT= 85bdbf034b7ee6ae3b4fae3792aa9d39 +TEST= 27 +KEY= 00000000000000000000000007ffffff +CT= 7b775b78421acd32973a4f437df7ed52 +TEST= 28 +KEY= 0000000000000000000000000fffffff +CT= 49377373c74f6ef924210fc45883fdc6 +TEST= 29 +KEY= 0000000000000000000000001fffffff +CT= 7d0a9cad70099b5133f09161e91d6c32 +TEST= 30 +KEY= 0000000000000000000000003fffffff +CT= 1a9106be9d21a2bdeaf6d78bc8b2cba5 +TEST= 31 +KEY= 0000000000000000000000007fffffff +CT= 21b574eb8ea8c3de03a75ad887b513eb +TEST= 32 +KEY= 000000000000000000000000ffffffff +CT= 51c039a643c8c227e8a1ed4a68eb9764 +TEST= 33 +KEY= 000000000000000000000001ffffffff +CT= 182e9a760136eed736c8aa8ec57fa714 +TEST= 34 +KEY= 000000000000000000000003ffffffff +CT= 1ed5c7412ccfa01e857787d5ac380884 +TEST= 35 +KEY= 000000000000000000000007ffffffff +CT= 22ba5de0abcef81dd10f91478713d525 +TEST= 36 +KEY= 00000000000000000000000fffffffff +CT= 85bc221981c0018f764f0008d07205fe +TEST= 37 +KEY= 00000000000000000000001fffffffff +CT= f137a8dbbf79f953d6e264937567c63d +TEST= 38 +KEY= 00000000000000000000003fffffffff +CT= 4aa85f7a1bebafea39994f8301b71604 +TEST= 39 +KEY= 00000000000000000000007fffffffff +CT= 4a42c5efe9d37cc1863c47329e01a848 +TEST= 40 +KEY= 0000000000000000000000ffffffffff +CT= 93b1dd3660968ecb7028c3907f75a286 +TEST= 41 +KEY= 0000000000000000000001ffffffffff +CT= 380d90a2b2bd02a88077709b541f3abc +TEST= 42 +KEY= 0000000000000000000003ffffffffff +CT= 244082dad08c1fcfc2c103e4c7076dc2 +TEST= 43 +KEY= 0000000000000000000007ffffffffff +CT= a409417dac7f965837ca5502e4eab343 +TEST= 44 +KEY= 000000000000000000000fffffffffff +CT= 0e3a5b0efffbc3ef35965d1f96372901 +TEST= 45 +KEY= 000000000000000000001fffffffffff +CT= fe6fb6d8c48c115c20a8158885c2b72b +TEST= 46 +KEY= 000000000000000000003fffffffffff +CT= 2d9d8b3ebf6817c337abc8c2ab535e25 +TEST= 47 +KEY= 000000000000000000007fffffffffff +CT= f1ede289f8af21cde3da4c91c10d810e +TEST= 48 +KEY= 00000000000000000000ffffffffffff +CT= 433680649d361d1fd7222bfdad181b85 +TEST= 49 +KEY= 00000000000000000001ffffffffffff +CT= aad4b99b596fb1eb563a503b1cffc818 +TEST= 50 +KEY= 00000000000000000003ffffffffffff +CT= c5aefd373d76a68ec6e8cff783822665 +TEST= 51 +KEY= 00000000000000000007ffffffffffff +CT= c0488fe94a2c4a29ad3dfa851e829d2e +TEST= 52 +KEY= 0000000000000000000fffffffffffff +CT= 0e8a24d5ef8e75a7c880fa6a834cf2c9 +TEST= 53 +KEY= 0000000000000000001fffffffffffff +CT= 2791b95644f63234749903c3e8657735 +TEST= 54 +KEY= 0000000000000000003fffffffffffff +CT= ef7221d5a82ee71fe8d8bfdd2a3c7c4f +TEST= 55 +KEY= 0000000000000000007fffffffffffff +CT= 0d2e8d964b6514c4bd3ac5d34db87522 +TEST= 56 +KEY= 000000000000000000ffffffffffffff +CT= d47c25a5ece3b4add6ca0d8a09e410ad +TEST= 57 +KEY= 000000000000000001ffffffffffffff +CT= c282027f20ed3d235475b85304bfcb80 +TEST= 58 +KEY= 000000000000000003ffffffffffffff +CT= b664b7bc37d4b8d04b3b70ded0c800fd +TEST= 59 +KEY= 000000000000000007ffffffffffffff +CT= 6e4fe62c2551f5cbd49f08a6de8f339e +TEST= 60 +KEY= 00000000000000000fffffffffffffff +CT= 002e821880c0628eb48ac598f258413c +TEST= 61 +KEY= 00000000000000001fffffffffffffff +CT= e00fe46582572be60b8e9c464675df11 +TEST= 62 +KEY= 00000000000000003fffffffffffffff +CT= ed6af7fdbf5c4298d898556982998411 +TEST= 63 +KEY= 00000000000000007fffffffffffffff +CT= 274b684f6dabfad23f01c7b984611dd2 +TEST= 64 +KEY= 0000000000000000ffffffffffffffff +CT= abac70797275a2dcf35b582fcd10dc18 +TEST= 65 +KEY= 0000000000000001ffffffffffffffff +CT= 706e2bfc072301e86538a2d0d525a52f +TEST= 66 +KEY= 0000000000000003ffffffffffffffff +CT= f76a0e2d34f589c53f5041b9cb170bcb +TEST= 67 +KEY= 0000000000000007ffffffffffffffff +CT= 15565da70a000eb5e74b4020405771ac +TEST= 68 +KEY= 000000000000000fffffffffffffffff +CT= 7aee27c41842b40b3e4ad6816d7eec87 +TEST= 69 +KEY= 000000000000001fffffffffffffffff +CT= a1340a8aa71385395877f04ec2c2ba71 +TEST= 70 +KEY= 000000000000003fffffffffffffffff +CT= 2e078a39d5468409298e29b3c818f780 +TEST= 71 +KEY= 000000000000007fffffffffffffffff +CT= 9fb0a3e2755523deac574629f1a5e57f +TEST= 72 +KEY= 00000000000000ffffffffffffffffff +CT= 0cae2d1e7c2eb298d284ac574de4c76c +TEST= 73 +KEY= 00000000000001ffffffffffffffffff +CT= 60e24a939a75ac7f93d506f1c66f6e72 +TEST= 74 +KEY= 00000000000003ffffffffffffffffff +CT= f7fd3c15500723d2fc8094fc7ab51c7b +TEST= 75 +KEY= 00000000000007ffffffffffffffffff +CT= 793219b3e13a29e06697ede1506fc83f +TEST= 76 +KEY= 0000000000000fffffffffffffffffff +CT= 6339e5eac05d5e33a32251f938b52951 +TEST= 77 +KEY= 0000000000001fffffffffffffffffff +CT= 6d175edd5529c35f0a1f418766769e66 +TEST= 78 +KEY= 0000000000003fffffffffffffffffff +CT= d0fab53306f97905f35b19384b326053 +TEST= 79 +KEY= 0000000000007fffffffffffffffffff +CT= c6b449923a561f851029e402c1fc49df +TEST= 80 +KEY= 000000000000ffffffffffffffffffff +CT= 4e73dcce8d61edc8f3c465ceacf333e3 +TEST= 81 +KEY= 000000000001ffffffffffffffffffff +CT= d1a141490a078d9259ba518ba3bbbfa9 +TEST= 82 +KEY= 000000000003ffffffffffffffffffff +CT= 4a6dac3718f39c88449fc0fdbba49cbc +TEST= 83 +KEY= 000000000007ffffffffffffffffffff +CT= 47df1ff232572297c46683a199cd6605 +TEST= 84 +KEY= 00000000000fffffffffffffffffffff +CT= 0a25afc437fee47a0cdb3cf8520b701e +TEST= 85 +KEY= 00000000001fffffffffffffffffffff +CT= b7c82cf69cc9bc03d36538b74728a742 +TEST= 86 +KEY= 00000000003fffffffffffffffffffff +CT= aa3d05f2c51fd6abbdcad6fb85175093 +TEST= 87 +KEY= 00000000007fffffffffffffffffffff +CT= 9c40db129e0cd180af762a3ca08cf6cb +TEST= 88 +KEY= 0000000000ffffffffffffffffffffff +CT= 55fe4362db10d26a4c3a1b5d37a139ca +TEST= 89 +KEY= 0000000001ffffffffffffffffffffff +CT= 9cde8814ee1b6639115a62067d023804 +TEST= 90 +KEY= 0000000003ffffffffffffffffffffff +CT= c8d421b6b0bf145eefbdc64034f37c37 +TEST= 91 +KEY= 0000000007ffffffffffffffffffffff +CT= bed798d5e64b21c985bab744d1406b57 +TEST= 92 +KEY= 000000000fffffffffffffffffffffff +CT= 862b819572c86a65026a3b513ba8de2e +TEST= 93 +KEY= 000000001fffffffffffffffffffffff +CT= 744e164e4a960c94f588d694eb2021d6 +TEST= 94 +KEY= 000000003fffffffffffffffffffffff +CT= 6f8f8fe5670d0c9929086664b2313b24 +TEST= 95 +KEY= 000000007fffffffffffffffffffffff +CT= bf9cfc9b0b15dfe1ed0f8e980f80b0d1 +TEST= 96 +KEY= 00000000ffffffffffffffffffffffff +CT= 123dca99ffbe6e12ec372190e66f6712 +TEST= 97 +KEY= 00000001ffffffffffffffffffffffff +CT= 13a1836cef7c653c58dcebbd13a976a7 +TEST= 98 +KEY= 00000003ffffffffffffffffffffffff +CT= 02e2958e680f7d5ef8f82c2408deb15b +TEST= 99 +KEY= 00000007ffffffffffffffffffffffff +CT= ef04bd62c0081225e99271850a6308a0 +TEST= 100 +KEY= 0000000fffffffffffffffffffffffff +CT= f28a7944ab6ac69782ba27f39b4a4381 +TEST= 101 +KEY= 0000001fffffffffffffffffffffffff +CT= 670d8c6ae12c74e19f9883b2b776a4aa +TEST= 102 +KEY= 0000003fffffffffffffffffffffffff +CT= 459f3fc2e1e503af2fa39b06592c8c22 +TEST= 103 +KEY= 0000007fffffffffffffffffffffffff +CT= f993a6cc25dbd950419352cc0009b583 +TEST= 104 +KEY= 000000ffffffffffffffffffffffffff +CT= 9caddd77d32c233af1d3147365662a99 +TEST= 105 +KEY= 000001ffffffffffffffffffffffffff +CT= 211a1a7e4e47e0d86b9fd96b531cc08f +TEST= 106 +KEY= 000003ffffffffffffffffffffffffff +CT= 82e28dbfda3ec2f04d1aa61dca2c83c9 +TEST= 107 +KEY= 000007ffffffffffffffffffffffffff +CT= ecb28ad52f46457198f2ad210d47d8cf +TEST= 108 +KEY= 00000fffffffffffffffffffffffffff +CT= 65a479ff2c04a745433dab12747f6fba +TEST= 109 +KEY= 00001fffffffffffffffffffffffffff +CT= 74e682913c9a0722d8a46a8f2deff793 +TEST= 110 +KEY= 00003fffffffffffffffffffffffffff +CT= 6bd7490b35e70ae742cfd3611549b272 +TEST= 111 +KEY= 00007fffffffffffffffffffffffffff +CT= de0e697b067e14cc3b4096e2e169bb10 +TEST= 112 +KEY= 0000ffffffffffffffffffffffffffff +CT= 46b9672025cd89d39cd2d185ce454b28 +TEST= 113 +KEY= 0001ffffffffffffffffffffffffffff +CT= 69a8d73c318abca454188b4302a2c0f2 +TEST= 114 +KEY= 0003ffffffffffffffffffffffffffff +CT= 2c31d234634cb3b71e11e6c2dc2af783 +TEST= 115 +KEY= 0007ffffffffffffffffffffffffffff +CT= 748893329ec47a06fc22e8608ffc6a6a +TEST= 116 +KEY= 000fffffffffffffffffffffffffffff +CT= 72a5216e693f4e75f55858dc87e6894b +TEST= 117 +KEY= 001fffffffffffffffffffffffffffff +CT= fd01a6bff2c00495b6e6a2658ad80276 +TEST= 118 +KEY= 003fffffffffffffffffffffffffffff +CT= f8332e3bee556b953cb2326a69f1959b +TEST= 119 +KEY= 007fffffffffffffffffffffffffffff +CT= 4335264b64726e36fb4aebce0e80f36d +TEST= 120 +KEY= 00ffffffffffffffffffffffffffffff +CT= e01f3360843bb429c79ef44f71649784 +TEST= 121 +KEY= 01ffffffffffffffffffffffffffffff +CT= af39755faf0b5e23cca27bb948d4d2aa +TEST= 122 +KEY= 03ffffffffffffffffffffffffffffff +CT= b983e0592bf2727bd855187ba2cd737a +TEST= 123 +KEY= 07ffffffffffffffffffffffffffffff +CT= 12a7a792f5c23de85eb6240c011f7317 +TEST= 124 +KEY= 0fffffffffffffffffffffffffffffff +CT= 144cfff87e64622607b4f69e1e203f3e +TEST= 125 +KEY= 1fffffffffffffffffffffffffffffff +CT= 0b3d901bcf69f99400fafa534f78ecef +TEST= 126 +KEY= 3fffffffffffffffffffffffffffffff +CT= 2490fcfe98dbc1a40df667e32c3ee670 +TEST= 127 +KEY= 7fffffffffffffffffffffffffffffff +CT= c0b9045be82d79ef711fb79e957de3b9 +TEST= 128 +KEY= ffffffffffffffffffffffffffffffff +CT= a1f6258c877d5fcd8964484538bfc92c +TEST= 129 +KEY= fffffffffffffffffffffffffffffffe +CT= 9ba4a9143f4e5d4048521c4f8877d88e +TEST= 130 +KEY= fffffffffffffffffffffffffffffffc +CT= 02bc96846b3fdc71643f384cd3cc3eaf +TEST= 131 +KEY= fffffffffffffffffffffffffffffff8 +CT= 5a4d404d8917e353e92a21072c3b2305 +TEST= 132 +KEY= fffffffffffffffffffffffffffffff0 +CT= 41c78c135ed9e98c096640647265da1e +TEST= 133 +KEY= ffffffffffffffffffffffffffffffe0 +CT= 25d6cfe6881f2bf497dd14cd4ddf445b +TEST= 134 +KEY= ffffffffffffffffffffffffffffffc0 +CT= 41a8a947766635dec37553d9a6c0cbb7 +TEST= 135 +KEY= ffffffffffffffffffffffffffffff80 +CT= 5160474d504b9b3eefb68d35f245f4b3 +TEST= 136 +KEY= ffffffffffffffffffffffffffffff00 +CT= 2dce3acb727cd13ccd76d425ea56e4f6 +TEST= 137 +KEY= fffffffffffffffffffffffffffffe00 +CT= ba4f970c0a25c41814bdae2e506be3b4 +TEST= 138 +KEY= fffffffffffffffffffffffffffffc00 +CT= 3a0c53fa37311fc10bd2a9981f513174 +TEST= 139 +KEY= fffffffffffffffffffffffffffff800 +CT= dfa5c097cdc1532ac071d57b1d28d1bd +TEST= 140 +KEY= fffffffffffffffffffffffffffff000 +CT= 1dbf57877b7b17385c85d0b54851e371 +TEST= 141 +KEY= ffffffffffffffffffffffffffffe000 +CT= 323994cfb9da285a5d9642e1759b224a +TEST= 142 +KEY= ffffffffffffffffffffffffffffc000 +CT= 70c46bb30692be657f7eaa93ebad9897 +TEST= 143 +KEY= ffffffffffffffffffffffffffff8000 +CT= 62d0662d6eaeddedebae7f7ea3a4f6b6 +TEST= 144 +KEY= ffffffffffffffffffffffffffff0000 +CT= b4750ff263a65e1f9e924ccfd98f3e37 +TEST= 145 +KEY= fffffffffffffffffffffffffffe0000 +CT= 674d2b61633d162be59dde04222f4740 +TEST= 146 +KEY= fffffffffffffffffffffffffffc0000 +CT= 44fb5c4d4f5cb79be5c174a3b1c97348 +TEST= 147 +KEY= fffffffffffffffffffffffffff80000 +CT= 16591c0f27d60e29b85a96c33861a7ef +TEST= 148 +KEY= fffffffffffffffffffffffffff00000 +CT= 793de39236570aba83ab9b737cb521c9 +TEST= 149 +KEY= ffffffffffffffffffffffffffe00000 +CT= c14574d9cd00cf2b5a7f77e53cd57885 +TEST= 150 +KEY= ffffffffffffffffffffffffffc00000 +CT= 9241daca4fdd034a82372db50e1a0f3f +TEST= 151 +KEY= ffffffffffffffffffffffffff800000 +CT= 36aeaa3a213e968d4b5b679d3a2c97fe +TEST= 152 +KEY= ffffffffffffffffffffffffff000000 +CT= 2cb1dc3a9c72972e425ae2ef3eb597cd +TEST= 153 +KEY= fffffffffffffffffffffffffe000000 +CT= 277167f3812afff1ffacb4a934379fc3 +TEST= 154 +KEY= fffffffffffffffffffffffffc000000 +CT= f17af0e895dda5eb98efc68066e84c54 +TEST= 155 +KEY= fffffffffffffffffffffffff8000000 +CT= 829c04ff4c07513c0b3ef05c03e337b5 +TEST= 156 +KEY= fffffffffffffffffffffffff0000000 +CT= 307c5b8fcd0533ab98bc51e27a6ce461 +TEST= 157 +KEY= ffffffffffffffffffffffffe0000000 +CT= 36bbaab22a6bd4925a99a2b408d2dbae +TEST= 158 +KEY= ffffffffffffffffffffffffc0000000 +CT= b63305c72bedfab97382c406d0c49bc6 +TEST= 159 +KEY= ffffffffffffffffffffffff80000000 +CT= 3e40c3901cd7effc22bffc35dee0b4d9 +TEST= 160 +KEY= ffffffffffffffffffffffff00000000 +CT= f0c5c6ffa5e0bd3a94c88f6b6f7c16b9 +TEST= 161 +KEY= fffffffffffffffffffffffe00000000 +CT= c440de014d3d610707279b13242a5c36 +TEST= 162 +KEY= fffffffffffffffffffffffc00000000 +CT= d06e3195b5376f109d5c4ec6c5d62ced +TEST= 163 +KEY= fffffffffffffffffffffff800000000 +CT= 36cf44c92d550bfb1ed28ef583ddf5d7 +TEST= 164 +KEY= fffffffffffffffffffffff000000000 +CT= 6838af1f4f69bae9d85dd188dcdf0688 +TEST= 165 +KEY= ffffffffffffffffffffffe000000000 +CT= ff13806cf19cc38721554d7c0fcdcd4b +TEST= 166 +KEY= ffffffffffffffffffffffc000000000 +CT= f0ea23af08534011c60009ab29ada2f1 +TEST= 167 +KEY= ffffffffffffffffffffff8000000000 +CT= 6da0490ba0ba0343b935681d2cce5ba1 +TEST= 168 +KEY= ffffffffffffffffffffff0000000000 +CT= ea3695e1351b9d6858bd958cf513ef6c +TEST= 169 +KEY= fffffffffffffffffffffe0000000000 +CT= 6a7980ce7b105cf530952d74daaf798c +TEST= 170 +KEY= fffffffffffffffffffffc0000000000 +CT= 192afffb2c880e82b05926d0fc6c448b +TEST= 171 +KEY= fffffffffffffffffffff80000000000 +CT= 38f67b9e98e4a97b6df030a9fcdd0104 +TEST= 172 +KEY= fffffffffffffffffffff00000000000 +CT= 8785b1a75b0f3bd958dcd0e29318c521 +TEST= 173 +KEY= ffffffffffffffffffffe00000000000 +CT= 9cfa1322ea33da2173a024f2ff0d896d +TEST= 174 +KEY= ffffffffffffffffffffc00000000000 +CT= dbdfb527060e0a71009c7bb0c68f1d44 +TEST= 175 +KEY= ffffffffffffffffffff800000000000 +CT= 545d50ebd919e4a6949d96ad47e46a80 +TEST= 176 +KEY= ffffffffffffffffffff000000000000 +CT= ec198a18e10e532403b7e20887c8dd80 +TEST= 177 +KEY= fffffffffffffffffffe000000000000 +CT= f2e976875755f9401d54f36e2a23a594 +TEST= 178 +KEY= fffffffffffffffffffc000000000000 +CT= 284ca2fa35807b8b0ae4d19e11d7dbd7 +TEST= 179 +KEY= fffffffffffffffffff8000000000000 +CT= ef1623cc44313cff440b1594a7e21cc6 +TEST= 180 +KEY= fffffffffffffffffff0000000000000 +CT= 96d9b017d302df410a937dcdb8bb6e43 +TEST= 181 +KEY= ffffffffffffffffffe0000000000000 +CT= 1b0d02893683b9f180458e4aa6b73982 +TEST= 182 +KEY= ffffffffffffffffffc0000000000000 +CT= d8764468bb103828cf7e1473ce895073 +TEST= 183 +KEY= ffffffffffffffffff80000000000000 +CT= acc5599dd8ac02239a0fef4a36dd1668 +TEST= 184 +KEY= ffffffffffffffffff00000000000000 +CT= 1ea448c2aac954f5d812e9d78494446a +TEST= 185 +KEY= fffffffffffffffffe00000000000000 +CT= 7866373f24a0b6ed56e0d96fcdafb877 +TEST= 186 +KEY= fffffffffffffffffc00000000000000 +CT= ab69cfadf51f8e604d9cc37182f6635a +TEST= 187 +KEY= fffffffffffffffff800000000000000 +CT= f60e91fc3269eecf3231c6e9945697c6 +TEST= 188 +KEY= fffffffffffffffff000000000000000 +CT= 3535d565ace3f31eb249ba2cc6765d7a +TEST= 189 +KEY= ffffffffffffffffe000000000000000 +CT= d9bff7ff454b0ec5a4a2a69566e2cb84 +TEST= 190 +KEY= ffffffffffffffffc000000000000000 +CT= 493d4a4f38ebb337d10aa84e9171a554 +TEST= 191 +KEY= ffffffffffffffff8000000000000000 +CT= 32cd652842926aea4aa6137bb2be2b5e +TEST= 192 +KEY= ffffffffffffffff0000000000000000 +CT= 84be19e053635f09f2665e7bae85b42d +TEST= 193 +KEY= fffffffffffffffe0000000000000000 +CT= 77a4d96d56dda398b9aabecfc75729fd +TEST= 194 +KEY= fffffffffffffffc0000000000000000 +CT= 995c9dc0b689f03c45867b5faa5c18d1 +TEST= 195 +KEY= fffffffffffffff80000000000000000 +CT= 653317b9362b6f9b9e1a580e68d494b5 +TEST= 196 +KEY= fffffffffffffff00000000000000000 +CT= 7a181e84bd5457d26a88fbae96018fb0 +TEST= 197 +KEY= ffffffffffffffe00000000000000000 +CT= fd8687f0757a210e9fdf181204c30863 +TEST= 198 +KEY= ffffffffffffffc00000000000000000 +CT= a35a63f5343ebe9ef8167bcb48ad122e +TEST= 199 +KEY= ffffffffffffff800000000000000000 +CT= 7470469be9723030fdcc73a8cd4fbb10 +TEST= 200 +KEY= ffffffffffffff000000000000000000 +CT= b5ab3013dd1e61df06cbaf34ca2aee78 +TEST= 201 +KEY= fffffffffffffe000000000000000000 +CT= 53786104b9744b98f052c46f1c850d0b +TEST= 202 +KEY= fffffffffffffc000000000000000000 +CT= 43fdaf53ebbc9880c228617d6a9b548b +TEST= 203 +KEY= fffffffffffff8000000000000000000 +CT= 8b527a6aebdaec9eaef8eda2cb7783e5 +TEST= 204 +KEY= fffffffffffff0000000000000000000 +CT= 7b90785125505fad59b13c186dd66ce3 +TEST= 205 +KEY= ffffffffffffe0000000000000000000 +CT= ff4e66c07bae3e79fb7d210847a3b0ba +TEST= 206 +KEY= ffffffffffffc0000000000000000000 +CT= cb2f430383f9084e03a653571e065de6 +TEST= 207 +KEY= ffffffffffff80000000000000000000 +CT= b6768473ce9843ea66a81405dd50b345 +TEST= 208 +KEY= ffffffffffff00000000000000000000 +CT= 75550e6cb5a88e49634c9ab69eda0430 +TEST= 209 +KEY= fffffffffffe00000000000000000000 +CT= 04497110efb9dceb13e2b13fb4465564 +TEST= 210 +KEY= fffffffffffc00000000000000000000 +CT= 4fb288cc2040049001d2c7585ad123fc +TEST= 211 +KEY= fffffffffff800000000000000000000 +CT= 8ebf73aad49c82007f77a5c1ccec6ab4 +TEST= 212 +KEY= fffffffffff000000000000000000000 +CT= e6c4807ae11f36f091c57d9fb68548d1 +TEST= 213 +KEY= ffffffffffe000000000000000000000 +CT= 8e4d8e699119e1fc87545a647fb1d34f +TEST= 214 +KEY= ffffffffffc000000000000000000000 +CT= 1df9b76112dc6531e07d2cfda04411f0 +TEST= 215 +KEY= ffffffffff8000000000000000000000 +CT= c72954a48d0774db0b4971c526260415 +TEST= 216 +KEY= ffffffffff0000000000000000000000 +CT= 7df4daf4ad29a3615a9b6ece5c99518a +TEST= 217 +KEY= fffffffffe0000000000000000000000 +CT= 303ff996947f0c7d1f43c8f3027b9b75 +TEST= 218 +KEY= fffffffffc0000000000000000000000 +CT= 82408571c3e2424540207f833b6dda69 +TEST= 219 +KEY= fffffffff80000000000000000000000 +CT= 0f18aff94274696d9b61848bd50ac5e5 +TEST= 220 +KEY= fffffffff00000000000000000000000 +CT= 44a98bf11e163f632c47ec6a49683a89 +TEST= 221 +KEY= ffffffffe00000000000000000000000 +CT= 23f710842b9bb9c32f26648c786807ca +TEST= 222 +KEY= ffffffffc00000000000000000000000 +CT= 5a8688f0b2a2c16224c161658ffd4044 +TEST= 223 +KEY= ffffffff800000000000000000000000 +CT= ed62e16363638360fdd6ad62112794f0 +TEST= 224 +KEY= ffffffff000000000000000000000000 +CT= 9c28524a16a1e1c1452971caa8d13476 +TEST= 225 +KEY= fffffffe000000000000000000000000 +CT= 1114bc2028009b923f0b01915ce5e7c4 +TEST= 226 +KEY= fffffffc000000000000000000000000 +CT= e17bc79f30eaab2fac2cbbe3458d687a +TEST= 227 +KEY= fffffff8000000000000000000000000 +CT= 6c7c64dc84a8bba758ed17eb025a57e3 +TEST= 228 +KEY= fffffff0000000000000000000000000 +CT= 99693e6a59d1366c74d823562d7e1431 +TEST= 229 +KEY= ffffffe0000000000000000000000000 +CT= 18c1b6e2157122056d0243d8a165cddb +TEST= 230 +KEY= ffffffc0000000000000000000000000 +CT= 5ce37e17eb4646ecfac29b9cc38d9340 +TEST= 231 +KEY= ffffff80000000000000000000000000 +CT= 6d114ccb27bf391012e8974c546d9bf2 +TEST= 232 +KEY= ffffff00000000000000000000000000 +CT= de11722d893e9f9121c381becc1da59a +TEST= 233 +KEY= fffffe00000000000000000000000000 +CT= 95b1703fc57ba09fe0c3580febdd7ed4 +TEST= 234 +KEY= fffffc00000000000000000000000000 +CT= 12acd89b13cd5f8726e34d44fd486108 +TEST= 235 +KEY= fffff800000000000000000000000000 +CT= a6cb761d61f8292d0df393a279ad0380 +TEST= 236 +KEY= fffff000000000000000000000000000 +CT= 26298e9c1db517c215fadfb7d2a8d691 +TEST= 237 +KEY= ffffe000000000000000000000000000 +CT= 90fb128d3a1af6e548521bb962bf1f05 +TEST= 238 +KEY= ffffc000000000000000000000000000 +CT= df556a33438db87bc41b1752c55e5e49 +TEST= 239 +KEY= ffff8000000000000000000000000000 +CT= c6a0b3e998d05068a5399778405200b4 +TEST= 240 +KEY= ffff0000000000000000000000000000 +CT= 97d0754fe68f11b9e375d070a608c884 +TEST= 241 +KEY= fffe0000000000000000000000000000 +CT= 113ecbe4a453269a0dd26069467fb5b5 +TEST= 242 +KEY= fffc0000000000000000000000000000 +CT= 2637050c9fc0d4817e2d69de878aee8d +TEST= 243 +KEY= fff80000000000000000000000000000 +CT= b5f1a33e50d40d103764c76bd4c6b6f8 +TEST= 244 +KEY= fff00000000000000000000000000000 +CT= a01bf44f2d16be928ca44aaf7b9b106b +TEST= 245 +KEY= ffe00000000000000000000000000000 +CT= 956d7798fac20f82a8823f984d06f7f5 +TEST= 246 +KEY= ffc00000000000000000000000000000 +CT= 9958f0ecea8b2172c0c1995f9182c0f3 +TEST= 247 +KEY= ff800000000000000000000000000000 +CT= 42ffb34c743de4d88ca38011c990890b +TEST= 248 +KEY= ff000000000000000000000000000000 +CT= b1d758256b28fd850ad4944208cf1155 +TEST= 249 +KEY= fe000000000000000000000000000000 +CT= c4295f83465c7755e8fa364bac6a7ea5 +TEST= 250 +KEY= fc000000000000000000000000000000 +CT= 9ed5a75136a940d0963da379db4af26a +TEST= 251 +KEY= f8000000000000000000000000000000 +CT= f17e79aed0db7e279e955b5f493875a7 +TEST= 252 +KEY= f0000000000000000000000000000000 +CT= 970014d634e2b7650777e8e84d03ccd8 +TEST= 253 +KEY= e0000000000000000000000000000000 +CT= 72a1da770f5d7ac4c9ef94d822affd97 +TEST= 254 +KEY= c0000000000000000000000000000000 +CT= 4bc3f883450c113c64ca42e1112a9e87 +TEST= 255 +KEY= 80000000000000000000000000000000 +CT= 0edd33d3c621e546455bd8ba1418bec8 diff --git a/flint/test/testvals/ecbnk46.txt b/flint/test/testvals/ecbnk46.txt new file mode 100644 index 0000000..76ca587 --- /dev/null +++ b/flint/test/testvals/ecbnk46.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= aae06992acbf52a3e8f4a96ec9300bd7 +TEST= 1 +KEY= 000000000000000000000000000000000000000000000001 +CT= 8bae4efb70d33a9792eea9be70889d72 +TEST= 2 +KEY= 000000000000000000000000000000000000000000000003 +CT= 47f4ba11347791ae65d78bc3572ad792 +TEST= 3 +KEY= 000000000000000000000000000000000000000000000007 +CT= eeed35cbbb2a57279fd441f60f8e5a03 +TEST= 4 +KEY= 00000000000000000000000000000000000000000000000f +CT= c2cc72be142228b3ff4db461ef4f473f +TEST= 5 +KEY= 00000000000000000000000000000000000000000000001f +CT= ecd46c7c0b329411dca4d36b5bc38d80 +TEST= 6 +KEY= 00000000000000000000000000000000000000000000003f +CT= ec84f2a23fe956ef1d05911740d32a2c +TEST= 7 +KEY= 00000000000000000000000000000000000000000000007f +CT= 0e065f7439adaadfd0ab18a8917e316d +TEST= 8 +KEY= 0000000000000000000000000000000000000000000000ff +CT= a9cb31020b6141f7c0d303fa3a046dcc +TEST= 9 +KEY= 0000000000000000000000000000000000000000000001ff +CT= f84fbea44faaf070f22e8958e202088f +TEST= 10 +KEY= 0000000000000000000000000000000000000000000003ff +CT= 34ae2e353b678c45395ce028acf66aa2 +TEST= 11 +KEY= 0000000000000000000000000000000000000000000007ff +CT= 5c0bcb597a95dcdd0940a79ec5076159 +TEST= 12 +KEY= 000000000000000000000000000000000000000000000fff +CT= c128ba13132c340ef4fe9ea9c989a9ed +TEST= 13 +KEY= 000000000000000000000000000000000000000000001fff +CT= e64d999bcd20849a92e2a6d20ff3db88 +TEST= 14 +KEY= 000000000000000000000000000000000000000000003fff +CT= 4c15a88220fc9955e3bb72251f3be3e4 +TEST= 15 +KEY= 000000000000000000000000000000000000000000007fff +CT= 26cfc00425a91ae1ad3289cd9993d9ea +TEST= 16 +KEY= 00000000000000000000000000000000000000000000ffff +CT= 3031dde6c8db84af6bca66c7d65fd113 +TEST= 17 +KEY= 00000000000000000000000000000000000000000001ffff +CT= cfd4a3fd1ec1e47253267a2a4462d42a +TEST= 18 +KEY= 00000000000000000000000000000000000000000003ffff +CT= 49efcb5b4a2d76022f74b39c3d0fd29c +TEST= 19 +KEY= 00000000000000000000000000000000000000000007ffff +CT= 595f4e699c8409fbfc2cb51a73ff2f77 +TEST= 20 +KEY= 0000000000000000000000000000000000000000000fffff +CT= cca89a7f5416ab51a18fef22af555518 +TEST= 21 +KEY= 0000000000000000000000000000000000000000001fffff +CT= 083d5550f5071b15ce2b6795d6f73b2d +TEST= 22 +KEY= 0000000000000000000000000000000000000000003fffff +CT= c0605fb0e20680b135133f271f591540 +TEST= 23 +KEY= 0000000000000000000000000000000000000000007fffff +CT= 33a8eac61b0fbc693134344e919f25e6 +TEST= 24 +KEY= 000000000000000000000000000000000000000000ffffff +CT= 7f01b7a8c55da794840fe6f59af8ba6f +TEST= 25 +KEY= 000000000000000000000000000000000000000001ffffff +CT= a4fe9e76ee8fc48a4bb7612f8caa05bc +TEST= 26 +KEY= 000000000000000000000000000000000000000003ffffff +CT= 3e525f97c23c9d5f40c1138c9aa5f617 +TEST= 27 +KEY= 000000000000000000000000000000000000000007ffffff +CT= a1aa23c2d46bb2e3a68e37c8b6fa99ce +TEST= 28 +KEY= 00000000000000000000000000000000000000000fffffff +CT= 32968c8a7c571997031f37ed8ccf864f +TEST= 29 +KEY= 00000000000000000000000000000000000000001fffffff +CT= 5878ddf97ffc357f80f0ee13148c9193 +TEST= 30 +KEY= 00000000000000000000000000000000000000003fffffff +CT= 41e4f156a3fd08fbd980af29f1a7a33b +TEST= 31 +KEY= 00000000000000000000000000000000000000007fffffff +CT= 7fe3faf573cc2102bf57a1da1d452d4e +TEST= 32 +KEY= 0000000000000000000000000000000000000000ffffffff +CT= c88164560999c1fba00fddeb2c157965 +TEST= 33 +KEY= 0000000000000000000000000000000000000001ffffffff +CT= c4a4b9c8d98cab58b5a108617da33e26 +TEST= 34 +KEY= 0000000000000000000000000000000000000003ffffffff +CT= e4f129c6637089a57e9a2af1914b04e4 +TEST= 35 +KEY= 0000000000000000000000000000000000000007ffffffff +CT= 7af25e56de2a6c810b6f2323852e3341 +TEST= 36 +KEY= 000000000000000000000000000000000000000fffffffff +CT= 4636c98ce05aeb5535afcf6822320e64 +TEST= 37 +KEY= 000000000000000000000000000000000000001fffffffff +CT= 328671b682b84af27f169f3790721d15 +TEST= 38 +KEY= 000000000000000000000000000000000000003fffffffff +CT= a73c4e0027fcf091a48b0ad565436210 +TEST= 39 +KEY= 000000000000000000000000000000000000007fffffffff +CT= 0ddfe59b92a878dd499b3f6423279444 +TEST= 40 +KEY= 00000000000000000000000000000000000000ffffffffff +CT= 5d4e34646af1fc8f6569e572738bed54 +TEST= 41 +KEY= 00000000000000000000000000000000000001ffffffffff +CT= 1a7cca6abd1f4654eb6131795f45e73c +TEST= 42 +KEY= 00000000000000000000000000000000000003ffffffffff +CT= 3cba5c6c963c7771d5bf6dacb984523e +TEST= 43 +KEY= 00000000000000000000000000000000000007ffffffffff +CT= be659f44d280595e6eedd8d8a12b81bd +TEST= 44 +KEY= 0000000000000000000000000000000000000fffffffffff +CT= 86e7fbeefbdb3e556eb679cbba1e00e7 +TEST= 45 +KEY= 0000000000000000000000000000000000001fffffffffff +CT= 0f22091cd8275edaa66c78bae1d33a7e +TEST= 46 +KEY= 0000000000000000000000000000000000003fffffffffff +CT= 565ae12f72b63b409d8f91fca1fa9390 +TEST= 47 +KEY= 0000000000000000000000000000000000007fffffffffff +CT= e571005e0c89cc73ede0f8d741170153 +TEST= 48 +KEY= 000000000000000000000000000000000000ffffffffffff +CT= 091d19209af8738944bd20009e64801f +TEST= 49 +KEY= 000000000000000000000000000000000001ffffffffffff +CT= a1e4c5b1d45bfab89632e68a5c4601c5 +TEST= 50 +KEY= 000000000000000000000000000000000003ffffffffffff +CT= 5509257c38c6c77a09db822ff4f64902 +TEST= 51 +KEY= 000000000000000000000000000000000007ffffffffffff +CT= afc2a501ebb7ee3cfb90441a2c725b9a +TEST= 52 +KEY= 00000000000000000000000000000000000fffffffffffff +CT= fee35695f2a4efda51f152b6aaae93aa +TEST= 53 +KEY= 00000000000000000000000000000000001fffffffffffff +CT= a4efd7ba4ce6421eef79b2927dd9baaa +TEST= 54 +KEY= 00000000000000000000000000000000003fffffffffffff +CT= 28f4b9e18fbe5c5718e9fb0189753594 +TEST= 55 +KEY= 00000000000000000000000000000000007fffffffffffff +CT= 63a52656b6cb2a2cce3010d9f43b2d4c +TEST= 56 +KEY= 0000000000000000000000000000000000ffffffffffffff +CT= 0011a834e55ec1b4901403d1aacbb34b +TEST= 57 +KEY= 0000000000000000000000000000000001ffffffffffffff +CT= 576e8bf0fbf69bada9b115be586860eb +TEST= 58 +KEY= 0000000000000000000000000000000003ffffffffffffff +CT= 1c3516ce8dd2bcb155d2f143fc964e70 +TEST= 59 +KEY= 0000000000000000000000000000000007ffffffffffffff +CT= 146c7925120da158bc02b44ed44b5db3 +TEST= 60 +KEY= 000000000000000000000000000000000fffffffffffffff +CT= b91fcd41684604e061ff5f81838cdae6 +TEST= 61 +KEY= 000000000000000000000000000000001fffffffffffffff +CT= 9c79bc43bf65ada82a3d09debebebcd1 +TEST= 62 +KEY= 000000000000000000000000000000003fffffffffffffff +CT= 64ad9618cb937f884e425c1fb2771930 +TEST= 63 +KEY= 000000000000000000000000000000007fffffffffffffff +CT= 495d106b885b9b7609533e5f7ff67f69 +TEST= 64 +KEY= 00000000000000000000000000000000ffffffffffffffff +CT= 0410498f9fcb91d3a3f7d8917e16993a +TEST= 65 +KEY= 00000000000000000000000000000001ffffffffffffffff +CT= 23f0cb0aba96f1c14fea5c2a065123cb +TEST= 66 +KEY= 00000000000000000000000000000003ffffffffffffffff +CT= 4a2671ab913c40cd727e54fa1e6598b4 +TEST= 67 +KEY= 00000000000000000000000000000007ffffffffffffffff +CT= 67163a39fffaac63ea73e8167659932e +TEST= 68 +KEY= 0000000000000000000000000000000fffffffffffffffff +CT= 8c831c46eb34e27425ca3ae3d77c9e8b +TEST= 69 +KEY= 0000000000000000000000000000001fffffffffffffffff +CT= b19aa17f026bc7722165f819d75e8b5b +TEST= 70 +KEY= 0000000000000000000000000000003fffffffffffffffff +CT= a6e95e0710b73b044d47515fae9b0e0d +TEST= 71 +KEY= 0000000000000000000000000000007fffffffffffffffff +CT= b102a5dab4a3f88406651de359115a2c +TEST= 72 +KEY= 000000000000000000000000000000ffffffffffffffffff +CT= 9dca06ab780372d158584047cb93613a +TEST= 73 +KEY= 000000000000000000000000000001ffffffffffffffffff +CT= 17d70fe438c2b9fd9d2af8cf9ed5a149 +TEST= 74 +KEY= 000000000000000000000000000003ffffffffffffffffff +CT= c1bf5cb7e4a41c3a90fbd32f4b42a30f +TEST= 75 +KEY= 000000000000000000000000000007ffffffffffffffffff +CT= 05fbafe163b6c05e1cfcdf4b8afe24d5 +TEST= 76 +KEY= 00000000000000000000000000000fffffffffffffffffff +CT= df0a5f967d9c8fcbb64076232f2162ab +TEST= 77 +KEY= 00000000000000000000000000001fffffffffffffffffff +CT= 472cef0a332251561640b4cd3be79be4 +TEST= 78 +KEY= 00000000000000000000000000003fffffffffffffffffff +CT= 2eb462117a7d3f2ef9e4325b474f37c2 +TEST= 79 +KEY= 00000000000000000000000000007fffffffffffffffffff +CT= 27352bbdd55944adcc24ffef54d80667 +TEST= 80 +KEY= 0000000000000000000000000000ffffffffffffffffffff +CT= 1d246237f297f19b8376e9f2b36138e9 +TEST= 81 +KEY= 0000000000000000000000000001ffffffffffffffffffff +CT= 64e511398ec1274326539b4a03265afd +TEST= 82 +KEY= 0000000000000000000000000003ffffffffffffffffffff +CT= 8c7c24dc3db64aa6c2028af200fa5929 +TEST= 83 +KEY= 0000000000000000000000000007ffffffffffffffffffff +CT= 744b2863cd28b93324fea611dfd2b3c6 +TEST= 84 +KEY= 000000000000000000000000000fffffffffffffffffffff +CT= 810701b4d514e5b099a555d911deca18 +TEST= 85 +KEY= 000000000000000000000000001fffffffffffffffffffff +CT= 2d762a5494642f1ef98117d451d624d8 +TEST= 86 +KEY= 000000000000000000000000003fffffffffffffffffffff +CT= b640a601c7644eabf7a26f6594d51416 +TEST= 87 +KEY= 000000000000000000000000007fffffffffffffffffffff +CT= 8780cc6e78039748d33248397da98c5e +TEST= 88 +KEY= 00000000000000000000000000ffffffffffffffffffffff +CT= d87bd7153d06b918e4182d932ba401b0 +TEST= 89 +KEY= 00000000000000000000000001ffffffffffffffffffffff +CT= 3044b2f82cc84046c92064467c377865 +TEST= 90 +KEY= 00000000000000000000000003ffffffffffffffffffffff +CT= 5c1be4f83641f23a7727b60768f0a907 +TEST= 91 +KEY= 00000000000000000000000007ffffffffffffffffffffff +CT= db8820dbd61dcbf20d41d2379362abe8 +TEST= 92 +KEY= 0000000000000000000000000fffffffffffffffffffffff +CT= fa84e6e4b9d99f5123700e3c5cce02cb +TEST= 93 +KEY= 0000000000000000000000001fffffffffffffffffffffff +CT= 538797485699cfb7b7ea567bfc58fde9 +TEST= 94 +KEY= 0000000000000000000000003fffffffffffffffffffffff +CT= 446483ec8080363b2ae33905d2c5fc94 +TEST= 95 +KEY= 0000000000000000000000007fffffffffffffffffffffff +CT= 70efc1ca96f3672ad10ae79c9f6199cb +TEST= 96 +KEY= 000000000000000000000000ffffffffffffffffffffffff +CT= 4aa76950806313d6b5370e6095c0ee34 +TEST= 97 +KEY= 000000000000000000000001ffffffffffffffffffffffff +CT= 26515bc80d20ad9027cb0e90e7e1487f +TEST= 98 +KEY= 000000000000000000000003ffffffffffffffffffffffff +CT= 2f6eb431c94420b9cb0a208eb0d7a18a +TEST= 99 +KEY= 000000000000000000000007ffffffffffffffffffffffff +CT= 7c59ba23beccb1544380c30e0a7abaa2 +TEST= 100 +KEY= 00000000000000000000000fffffffffffffffffffffffff +CT= 1e31380ec75e521a61fc228146db2f97 +TEST= 101 +KEY= 00000000000000000000001fffffffffffffffffffffffff +CT= 5e34de125d8e57714495cd7bb4ae01fb +TEST= 102 +KEY= 00000000000000000000003fffffffffffffffffffffffff +CT= 49e7b899b22ce9f4a1027cefbcbd8b27 +TEST= 103 +KEY= 00000000000000000000007fffffffffffffffffffffffff +CT= 7f99df40713e1c9f560fbf3df58b0747 +TEST= 104 +KEY= 0000000000000000000000ffffffffffffffffffffffffff +CT= 08bb6822a793657477393923b22d56d6 +TEST= 105 +KEY= 0000000000000000000001ffffffffffffffffffffffffff +CT= 3268c024ed4be6d93a4d7c20f0d874a5 +TEST= 106 +KEY= 0000000000000000000003ffffffffffffffffffffffffff +CT= ae2e8abefe8cf0b1ceacfbdd2d64bbc2 +TEST= 107 +KEY= 0000000000000000000007ffffffffffffffffffffffffff +CT= 1951eadad19af08980e637bd455e6330 +TEST= 108 +KEY= 000000000000000000000fffffffffffffffffffffffffff +CT= 5cf004fc56614682dfecb708adc20e95 +TEST= 109 +KEY= 000000000000000000001fffffffffffffffffffffffffff +CT= d3dcf3e9730504fe842b0e0b9890970e +TEST= 110 +KEY= 000000000000000000003fffffffffffffffffffffffffff +CT= 700c7a330cd8330a23562de0e8e73fc7 +TEST= 111 +KEY= 000000000000000000007fffffffffffffffffffffffffff +CT= fd419dfe9e8160412debd499bd9d1d11 +TEST= 112 +KEY= 00000000000000000000ffffffffffffffffffffffffffff +CT= f7d8cf8e0858e3a0d59df16ab8ccd11e +TEST= 113 +KEY= 00000000000000000001ffffffffffffffffffffffffffff +CT= 96f182e690d89f6507ddaa7a775519e8 +TEST= 114 +KEY= 00000000000000000003ffffffffffffffffffffffffffff +CT= 04de442cff3a8f3b557653cbab40e5e3 +TEST= 115 +KEY= 00000000000000000007ffffffffffffffffffffffffffff +CT= f41f92ab4c38bd0cf82638acf10fd19e +TEST= 116 +KEY= 0000000000000000000fffffffffffffffffffffffffffff +CT= 300e307d6355a15378246d6996da3050 +TEST= 117 +KEY= 0000000000000000001fffffffffffffffffffffffffffff +CT= 68e28002d206cfe1258444a055b4203d +TEST= 118 +KEY= 0000000000000000003fffffffffffffffffffffffffffff +CT= c404b6efb3464db19116783381bdcdfd +TEST= 119 +KEY= 0000000000000000007fffffffffffffffffffffffffffff +CT= fee31e936c742a3026bdb0b6dfb8a017 +TEST= 120 +KEY= 000000000000000000ffffffffffffffffffffffffffffff +CT= df0bb14fdb891c16dfdb5046e67bb198 +TEST= 121 +KEY= 000000000000000001ffffffffffffffffffffffffffffff +CT= f4d35add59b02f0cc5021fcdc3f33547 +TEST= 122 +KEY= 000000000000000003ffffffffffffffffffffffffffffff +CT= 13cf37ee8548e020ee64944f782184aa +TEST= 123 +KEY= 000000000000000007ffffffffffffffffffffffffffffff +CT= 37695b7904916ca96014ae2dd39e7346 +TEST= 124 +KEY= 00000000000000000fffffffffffffffffffffffffffffff +CT= 82e6179d5987cabd793115a572352f57 +TEST= 125 +KEY= 00000000000000001fffffffffffffffffffffffffffffff +CT= ed5e6eb8bddd089d8bea38d886a846e2 +TEST= 126 +KEY= 00000000000000003fffffffffffffffffffffffffffffff +CT= fefe69ef402ebdb72688492bee51123c +TEST= 127 +KEY= 00000000000000007fffffffffffffffffffffffffffffff +CT= c8faae9ffa07bd21700e9e36906112ca +TEST= 128 +KEY= 0000000000000000ffffffffffffffffffffffffffffffff +CT= 2643509dfd4d373b4c07e34d58679a8c +TEST= 129 +KEY= 0000000000000001ffffffffffffffffffffffffffffffff +CT= 0e82e5bda4145e6d2ba74c740dcdcc0b +TEST= 130 +KEY= 0000000000000003ffffffffffffffffffffffffffffffff +CT= dbb9fb6d03ae3f8381c0c27942f449b5 +TEST= 131 +KEY= 0000000000000007ffffffffffffffffffffffffffffffff +CT= 87c4879c0f70c0071df282310f5bb766 +TEST= 132 +KEY= 000000000000000fffffffffffffffffffffffffffffffff +CT= bcd464d8a28045fbafaa5ebcff01c83c +TEST= 133 +KEY= 000000000000001fffffffffffffffffffffffffffffffff +CT= f3627e96d72d268ada299b35e6a65826 +TEST= 134 +KEY= 000000000000003fffffffffffffffffffffffffffffffff +CT= 6d4ab6c04c8cf58269e6aeb5c7f3b222 +TEST= 135 +KEY= 000000000000007fffffffffffffffffffffffffffffffff +CT= 8a6f369cee94cbcff73c3b8c225f668e +TEST= 136 +KEY= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 307697d3a05ddf0a9406fa3044df79ae +TEST= 137 +KEY= 00000000000001ffffffffffffffffffffffffffffffffff +CT= d7b18a5cf1ef03334e34b83a3afbf49b +TEST= 138 +KEY= 00000000000003ffffffffffffffffffffffffffffffffff +CT= cb03e1dfcc39fc3b11d3c3697abffd86 +TEST= 139 +KEY= 00000000000007ffffffffffffffffffffffffffffffffff +CT= 99f7ffb212ebb6461aef0bf1acd4f445 +TEST= 140 +KEY= 0000000000000fffffffffffffffffffffffffffffffffff +CT= 014951113be8e041ae1eedf381da0709 +TEST= 141 +KEY= 0000000000001fffffffffffffffffffffffffffffffffff +CT= 992fcb4e8b97ef5ecbc9e3945fb79904 +TEST= 142 +KEY= 0000000000003fffffffffffffffffffffffffffffffffff +CT= 74e6320e7357ad4bc79e7243e94cee39 +TEST= 143 +KEY= 0000000000007fffffffffffffffffffffffffffffffffff +CT= 19e2fabcfa3e9221dae3d8a15be22962 +TEST= 144 +KEY= 000000000000ffffffffffffffffffffffffffffffffffff +CT= 17a3818b295b8fd422ab3a9078fa03ab +TEST= 145 +KEY= 000000000001ffffffffffffffffffffffffffffffffffff +CT= a5c5bb40622b37b0ad83a960ff18fbf3 +TEST= 146 +KEY= 000000000003ffffffffffffffffffffffffffffffffffff +CT= e3703cb1464348be7cea55a924fb8ca2 +TEST= 147 +KEY= 000000000007ffffffffffffffffffffffffffffffffffff +CT= e9f7674becdd971d978d203fa28c3628 +TEST= 148 +KEY= 00000000000fffffffffffffffffffffffffffffffffffff +CT= d8a0c4c4e6591f1f8f6a0e4111c7f17a +TEST= 149 +KEY= 00000000001fffffffffffffffffffffffffffffffffffff +CT= 97dbdc40141e8078fa85b1caa84abba4 +TEST= 150 +KEY= 00000000003fffffffffffffffffffffffffffffffffffff +CT= 6b73a0598646b426a214a4589d5f62e0 +TEST= 151 +KEY= 00000000007fffffffffffffffffffffffffffffffffffff +CT= 685b9fec236ac0f4f434e14f48be42cd +TEST= 152 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= 58fabfb1b7f9bc929e563edefe6613c2 +TEST= 153 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= bf2571e8713c0932e1c86c14d7e30136 +TEST= 154 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= caa0e97317e573fd5eeb72f9ca1a588a +TEST= 155 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= 08d3b4d76a0e9cb4bf7582ce232e258a +TEST= 156 +KEY= 000000000fffffffffffffffffffffffffffffffffffffff +CT= acb6f6950eaa0c81ab0514b9032ce08a +TEST= 157 +KEY= 000000001fffffffffffffffffffffffffffffffffffffff +CT= c9962df4c8bc3dea1a76c2327cecbad7 +TEST= 158 +KEY= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 897081b8c189baf3f044303c2e405eeb +TEST= 159 +KEY= 000000007fffffffffffffffffffffffffffffffffffffff +CT= f05473afff4b44e4c59b597d4dcda0f3 +TEST= 160 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= c2319679be3d3e52dfd7d382a7bb2052 +TEST= 161 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= 38db4226978af68eb6d6454a271ca29f +TEST= 162 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= 96e8fffbe9eb9b1da5b57e88d8a37909 +TEST= 163 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= 957a12e0eba5c114d4bcec1128eefb9c +TEST= 164 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 0a4827f6ce8eeebaf8fa483963a8d868 +TEST= 165 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= 7000a3d2b4c4fa175589f2999eb885e9 +TEST= 166 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= b3d6208a2f56c2cbdf2719e6e1ac9da5 +TEST= 167 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= e89ed7b76770b9a8a76de6bfc6fe062a +TEST= 168 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= 904876f43bcf87f737f1989f18137d5f +TEST= 169 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= 6eae0aa62966b9892f2359388e0110c9 +TEST= 170 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= 5f663ed9f686aaa323f844973cbdeec1 +TEST= 171 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= 565b81a8139c7fcdfbf15fe6261dc08e +TEST= 172 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= 3995581d6d0acdfe31c4d20f3816fab8 +TEST= 173 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= f7dcfa78db71c34da07ad3ec45ceed2d +TEST= 174 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= c364fc85c5ef6dc6aa8f488a79ba80c0 +TEST= 175 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 519f55ea79def8dfc8fc0483377fb51f +TEST= 176 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= f5a089a7fd4e3bdf47d9d97d05c8f7f2 +TEST= 177 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= c1c3fbb281277a3a80c7f7062457d606 +TEST= 178 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= 6be8ec26889ae34b4d625f3cc6dde039 +TEST= 179 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= 9b31d6e20cedaf8202bc90da51573f6e +TEST= 180 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= 4626f3fbd46d3b04acef99c53f3892c4 +TEST= 181 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= eb7e71fedabfd43edb092ff7d30233f8 +TEST= 182 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= fea94dbf5123fcdede7d70940d0ec420 +TEST= 183 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= 7af20fd327f7fdf29da0e857cd6915bc +TEST= 184 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 80e82dca8191217f4e05a95d00563fa8 +TEST= 185 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= bd9c616c0fe37dc69d3bd14b03f05d94 +TEST= 186 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= c3e8aad5b2e15225fd076e5ea41bf4e3 +TEST= 187 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= 3fc79f4cb2b3c3c680bad7a103b0d8ad +TEST= 188 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= ec77ba7578ad25c69e0e352d9da05596 +TEST= 189 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= 69fb9ca17729542a2d625e1aa0a41036 +TEST= 190 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= caa3764abe0ddb6f6a45223e16e04616 +TEST= 191 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= 824be7b79a6e2afe611c7e343f9bb0ab +TEST= 192 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= dd8a493514231cbf56eccee4c40889fb +TEST= 193 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= 018596e15e78e2c064159defce5f3085 +TEST= 194 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= 5eb9bc759e2ad8d2140a6c762ae9e1ab +TEST= 195 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= d241aab05a42d319de81d874f5c7b90d +TEST= 196 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= eacf1e6c4224efb38900b185ab1dfd42 +TEST= 197 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 186861f8bc5386d31fb77f720c3226e6 +TEST= 198 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 0547dd32d3b29ab6a4caeb606c5b6f78 +TEST= 199 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= b687f26a89cfbfbb8e5eeac54055315e +TEST= 200 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 5674a3bed27bf4bd3622f9f5fe208306 +TEST= 201 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= ddb505e6cc1384cbaec1df90b80beb20 +TEST= 202 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 8fd03057cf1364420c2b78069a3e2502 +TEST= 203 +KEY= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= 241c45bc6ae16dee6eb7bea128701582 +TEST= 204 +KEY= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= c1faba2d46e259cf480d7c38e4572a58 +TEST= 205 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 75db7cfd4a7b2b62ab78a48f3ddaf4af +TEST= 206 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= ace4b91c9c669e77e7acacd19859ed49 +TEST= 207 +KEY= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= a231692607169b4ecdead5cd3b10db3e +TEST= 208 +KEY= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= cf42fb474293d96eca9db1b37b1ba676 +TEST= 209 +KEY= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= 41c5205cc8fd8eda9a3cffd2518f365a +TEST= 210 +KEY= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= dddececd5354f04d530d76ed884246eb +TEST= 211 +KEY= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= d317f81dc6aa454aee4bd4a5a5cff4bd +TEST= 212 +KEY= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= 8d63a269b14d506ccc401ab8a9f1b591 +TEST= 213 +KEY= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 60136703374f64e860b48ce31f930716 +TEST= 214 +KEY= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 4b7020be37fab6259b2a27f4ec551576 +TEST= 215 +KEY= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= c5c038b6990664ab08a3aaa5df9f3266 +TEST= 216 +KEY= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= 7b017bb02ec87b2b94c96e40a26fc71a +TEST= 217 +KEY= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 93cb284ecdcfd781a8afe32077949e88 +TEST= 218 +KEY= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= fdf6d32e044d77adcf37fb97ac213326 +TEST= 219 +KEY= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 08b30d7b3f27962709a36bcadfb974bd +TEST= 220 +KEY= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= 8b2cbff1ed0150feda8a4799be94551f +TEST= 221 +KEY= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= fb4bc78b225070773f04c40466d4e90c +TEST= 222 +KEY= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 138e06fba466fa70854d8c2e524cffb2 +TEST= 223 +KEY= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= fb9c4f16c621f4eab7e9ac1d7551dd57 +TEST= 224 +KEY= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= c9af27b2c89c9b4cf4a0c4106ac80318 +TEST= 225 +KEY= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= 5ef145766eca849f5d011536a6557fdb +TEST= 226 +KEY= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= f361a2745a33f056a5ac6ace2f08e344 +TEST= 227 +KEY= fffffffffffffffffffffffffffffffffffffff800000000 +CT= 9423762f527a4060ffca312dcca22a16 +TEST= 228 +KEY= fffffffffffffffffffffffffffffffffffffff000000000 +CT= 45119b68cb3f8399ee60066b5611a4d7 +TEST= 229 +KEY= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= 1c84a475acb011f3f59f4f46b76274c0 +TEST= 230 +KEY= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= 68c230fcfa9279c3409fc423e2acbe04 +TEST= 231 +KEY= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 381308c438f35b399f10ad71b05027d8 +TEST= 232 +KEY= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= 05b389e3322c6da08384345a4137fd08 +TEST= 233 +KEY= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= 8f091b1b5b0749b2adc803e63dda9b72 +TEST= 234 +KEY= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= 02ea0c98dca10b38c21b3b14e8d1b71f +TEST= 235 +KEY= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 14f9df858975851797ba604fb0d16cc7 +TEST= 236 +KEY= fffffffffffffffffffffffffffffffffffff00000000000 +CT= 93dc4970fe35f67747cb0562c06d875a +TEST= 237 +KEY= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= 8935ffbc75ae6251bf8e859f085adcb9 +TEST= 238 +KEY= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= 6bacae63d33b928aa8380f8d54d88c17 +TEST= 239 +KEY= ffffffffffffffffffffffffffffffffffff800000000000 +CT= 3bc0e3656a9e3ac7cd378a737f53b637 +TEST= 240 +KEY= ffffffffffffffffffffffffffffffffffff000000000000 +CT= d436649f600b449ee276530f0cd83c11 +TEST= 241 +KEY= fffffffffffffffffffffffffffffffffffe000000000000 +CT= f60467f55a1f17eab88e800120cbc284 +TEST= 242 +KEY= fffffffffffffffffffffffffffffffffffc000000000000 +CT= 4e11a9f74205125b61e0aee047eca20d +TEST= 243 +KEY= fffffffffffffffffffffffffffffffffff8000000000000 +CT= dceebbc98840f8ae6daf76573b7e56f4 +TEST= 244 +KEY= fffffffffffffffffffffffffffffffffff0000000000000 +CT= e917fc77e71992a12dbe4c18068bec82 +TEST= 245 +KEY= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 1b8426027ddb962b5c5ba7eb8bc9ab63 +TEST= 246 +KEY= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= 9b47ef567ac28dfe488492f157e2b2e0 +TEST= 247 +KEY= ffffffffffffffffffffffffffffffffff80000000000000 +CT= 97fac8297ceaabc87d454350601e0673 +TEST= 248 +KEY= ffffffffffffffffffffffffffffffffff00000000000000 +CT= b8aa90040b4c15a12316b78e0f9586fc +TEST= 249 +KEY= fffffffffffffffffffffffffffffffffe00000000000000 +CT= eaef5c1f8d605192646695ceadc65f32 +TEST= 250 +KEY= fffffffffffffffffffffffffffffffffc00000000000000 +CT= 30dab809f85a917fe924733f424ac589 +TEST= 251 +KEY= fffffffffffffffffffffffffffffffff800000000000000 +CT= 1b9f5fbd5e8a4264c0a85b80409afa5e +TEST= 252 +KEY= fffffffffffffffffffffffffffffffff000000000000000 +CT= bb2852c891c5947d2ed44032c421b85f +TEST= 253 +KEY= ffffffffffffffffffffffffffffffffe000000000000000 +CT= 2437a683dc5d4b52abb4a123a8df86c6 +TEST= 254 +KEY= ffffffffffffffffffffffffffffffffc000000000000000 +CT= 74b24e3b6fefe40a4f9ef7ac6e44d76a +TEST= 255 +KEY= ffffffffffffffffffffffffffffffff8000000000000000 +CT= 91549514605f38246c9b724ad839f01d +TEST= 256 +KEY= ffffffffffffffffffffffffffffffff0000000000000000 +CT= e8c4e4381feec74054954c05b777a00a +TEST= 257 +KEY= fffffffffffffffffffffffffffffffe0000000000000000 +CT= 492e607e5aea4688594b45f3aee3df90 +TEST= 258 +KEY= fffffffffffffffffffffffffffffffc0000000000000000 +CT= c4637e4a5e6377f9cc5a8638045de029 +TEST= 259 +KEY= fffffffffffffffffffffffffffffff80000000000000000 +CT= 279689e9a557f58b1c3bf40c97a90964 +TEST= 260 +KEY= fffffffffffffffffffffffffffffff00000000000000000 +CT= 1ad2561de8c1232f5d8dbab4739b6cbb +TEST= 261 +KEY= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 64e0d7f900e3d9c83e4b8f96717b2146 +TEST= 262 +KEY= ffffffffffffffffffffffffffffffc00000000000000000 +CT= c6a6164b7a60bae4e986ffac28dfadd9 +TEST= 263 +KEY= ffffffffffffffffffffffffffffff800000000000000000 +CT= 2162995b8217a67f1abc342e146406f8 +TEST= 264 +KEY= ffffffffffffffffffffffffffffff000000000000000000 +CT= a80fd5020dfe65f5f16293ec92c6fd89 +TEST= 265 +KEY= fffffffffffffffffffffffffffffe000000000000000000 +CT= aaca7367396b69a221bd632bea386eec +TEST= 266 +KEY= fffffffffffffffffffffffffffffc000000000000000000 +CT= b8d2a67df5a999fdbf93edd0343296c9 +TEST= 267 +KEY= fffffffffffffffffffffffffffff8000000000000000000 +CT= 48391bffb9cfff80ac238c886ef0a461 +TEST= 268 +KEY= fffffffffffffffffffffffffffff0000000000000000000 +CT= 9064ba1cd04ce6bab98474330814b4d4 +TEST= 269 +KEY= ffffffffffffffffffffffffffffe0000000000000000000 +CT= 4061f7412ed320de0edc8851c2e2436f +TEST= 270 +KEY= ffffffffffffffffffffffffffffc0000000000000000000 +CT= 78f933a2081ac1db84f69d10f4523fe0 +TEST= 271 +KEY= ffffffffffffffffffffffffffff80000000000000000000 +CT= e03cb23d9e11c9d93f117e9c0a91b576 +TEST= 272 +KEY= ffffffffffffffffffffffffffff00000000000000000000 +CT= d2ccaebd3a4c3e80b063748131ba4a71 +TEST= 273 +KEY= fffffffffffffffffffffffffffe00000000000000000000 +CT= fd5548bcf3f42565f7efa94562528d46 +TEST= 274 +KEY= fffffffffffffffffffffffffffc00000000000000000000 +CT= 9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b +TEST= 275 +KEY= fffffffffffffffffffffffffff800000000000000000000 +CT= 8dd274bd0f1b58ae345d9e7233f9b8f3 +TEST= 276 +KEY= fffffffffffffffffffffffffff000000000000000000000 +CT= d2f11805046743bd74f57188d9188df7 +TEST= 277 +KEY= ffffffffffffffffffffffffffe000000000000000000000 +CT= c50562bf094526a91c5bc63c0c224995 +TEST= 278 +KEY= ffffffffffffffffffffffffffc000000000000000000000 +CT= 9d924b934a90ce1fd39b8a9794f82672 +TEST= 279 +KEY= ffffffffffffffffffffffffff8000000000000000000000 +CT= 725b9caebe9f7f417f4068d0d2ee20b3 +TEST= 280 +KEY= ffffffffffffffffffffffffff0000000000000000000000 +CT= d7cbb3f34b9b450f24b0e8518e54da6d +TEST= 281 +KEY= fffffffffffffffffffffffffe0000000000000000000000 +CT= 19259761ca17130d6ed86d57cd7951ee +TEST= 282 +KEY= fffffffffffffffffffffffffc0000000000000000000000 +CT= 90bd086f237cc4fd99f4d76bde6b4826 +TEST= 283 +KEY= fffffffffffffffffffffffff80000000000000000000000 +CT= 03194b8e5dda5530d0c678c0b48f5d92 +TEST= 284 +KEY= fffffffffffffffffffffffff00000000000000000000000 +CT= 40e231fa5a5948ce2134e92fc0664d4b +TEST= 285 +KEY= ffffffffffffffffffffffffe00000000000000000000000 +CT= c9ef67756507beec9dd3862883478044 +TEST= 286 +KEY= ffffffffffffffffffffffffc00000000000000000000000 +CT= 14be1c535b17cabd0c4d93529d69bf47 +TEST= 287 +KEY= ffffffffffffffffffffffff800000000000000000000000 +CT= e34ec71d6128d4871865d617c30b37e3 +TEST= 288 +KEY= ffffffffffffffffffffffff000000000000000000000000 +CT= 03aa9058490eda306001a8a9f48d0ca7 +TEST= 289 +KEY= fffffffffffffffffffffffe000000000000000000000000 +CT= 6ac1de5fb8f21d874e91c53b560c50e3 +TEST= 290 +KEY= fffffffffffffffffffffffc000000000000000000000000 +CT= 51f89c42985786bfc43c6df8ada36832 +TEST= 291 +KEY= fffffffffffffffffffffff8000000000000000000000000 +CT= 29ca779f398fb04f867da7e8a44756cb +TEST= 292 +KEY= fffffffffffffffffffffff0000000000000000000000000 +CT= fc9e0ea22480b0bac935c8a8ebefcdcf +TEST= 293 +KEY= ffffffffffffffffffffffe0000000000000000000000000 +CT= 88330baa4f2b618fc9d9b021bf503d5a +TEST= 294 +KEY= ffffffffffffffffffffffc0000000000000000000000000 +CT= 7026026eedd91adc6d831cdf9894bdc6 +TEST= 295 +KEY= ffffffffffffffffffffff80000000000000000000000000 +CT= 56c5609d0906b23ab9caca816f5dbebd +TEST= 296 +KEY= ffffffffffffffffffffff00000000000000000000000000 +CT= 344aab37080d7486f7d542a309e53eed +TEST= 297 +KEY= fffffffffffffffffffffe00000000000000000000000000 +CT= 523d0babbb82f46ebc9e70b1cd41ddd0 +TEST= 298 +KEY= fffffffffffffffffffffc00000000000000000000000000 +CT= fffcd4683f858058e74314671d43fa2c +TEST= 299 +KEY= fffffffffffffffffffff800000000000000000000000000 +CT= 830d8a2590f7d8e1b55a737f4af45f34 +TEST= 300 +KEY= fffffffffffffffffffff000000000000000000000000000 +CT= cbfe61810fd5467ccdacb75800f3ac07 +TEST= 301 +KEY= ffffffffffffffffffffe000000000000000000000000000 +CT= aad4c8a63f80954104de7b92cede1be1 +TEST= 302 +KEY= ffffffffffffffffffffc000000000000000000000000000 +CT= 3783f7bf44c97f065258a666cae03020 +TEST= 303 +KEY= ffffffffffffffffffff8000000000000000000000000000 +CT= 054b3bf4998aeb05afd87ec536533a36 +TEST= 304 +KEY= ffffffffffffffffffff0000000000000000000000000000 +CT= 172df8b02f04b53adab028b4e01acd87 +TEST= 305 +KEY= fffffffffffffffffffe0000000000000000000000000000 +CT= 02647c76a300c3173b841487eb2bae9f +TEST= 306 +KEY= fffffffffffffffffffc0000000000000000000000000000 +CT= 8dfd999be5d0cfa35732c0ddc88ff5a5 +TEST= 307 +KEY= fffffffffffffffffff80000000000000000000000000000 +CT= d893e7d62f6ce502c64f75e281f9c000 +TEST= 308 +KEY= fffffffffffffffffff00000000000000000000000000000 +CT= 32752eefc8c2a93f91b6e73eb07cca6e +TEST= 309 +KEY= ffffffffffffffffffe00000000000000000000000000000 +CT= 273c7d7685e14ec66bbb96b8f05b6ddd +TEST= 310 +KEY= ffffffffffffffffffc00000000000000000000000000000 +CT= 808bd8eddabb6f3bf0d5a8a27be1fe8a +TEST= 311 +KEY= ffffffffffffffffff800000000000000000000000000000 +CT= 7aa1acf1a2ed9ba72bc6deb31d88b863 +TEST= 312 +KEY= ffffffffffffffffff000000000000000000000000000000 +CT= c0541329ecb6159ab23b7fc5e6a21bca +TEST= 313 +KEY= fffffffffffffffffe000000000000000000000000000000 +CT= c8c20908249ab4a34d6dd0a31327ff1a +TEST= 314 +KEY= fffffffffffffffffc000000000000000000000000000000 +CT= 07c403f5f966e0e3d9f296d6226dca28 +TEST= 315 +KEY= fffffffffffffffff8000000000000000000000000000000 +CT= cf3f2576e2afedc74bb1ca7eeec1c0e7 +TEST= 316 +KEY= fffffffffffffffff0000000000000000000000000000000 +CT= 29975b5f48bb68fcbbc7cea93b452ed7 +TEST= 317 +KEY= ffffffffffffffffe0000000000000000000000000000000 +CT= a005063f30f4228b374e2459738f26bb +TEST= 318 +KEY= ffffffffffffffffc0000000000000000000000000000000 +CT= effbac1644deb0c784275fe56e19ead3 +TEST= 319 +KEY= ffffffffffffffff80000000000000000000000000000000 +CT= 7132d0c0e4a07593cf12ebb12be7688c +TEST= 320 +KEY= ffffffffffffffff00000000000000000000000000000000 +CT= 707b075791878880b44189d3522b8c30 +TEST= 321 +KEY= fffffffffffffffe00000000000000000000000000000000 +CT= ccac61e3183747b3f5836da21a1bc4f4 +TEST= 322 +KEY= fffffffffffffffc00000000000000000000000000000000 +CT= 7523c00bc177d331ad312e09c9015c1c +TEST= 323 +KEY= fffffffffffffff800000000000000000000000000000000 +CT= bcea28e9071b5a2302970ff352451bc5 +TEST= 324 +KEY= fffffffffffffff000000000000000000000000000000000 +CT= 758f4467a5d8f1e7307dc30b34e404f4 +TEST= 325 +KEY= ffffffffffffffe000000000000000000000000000000000 +CT= a570d20e89b467e8f5176061b81dd396 +TEST= 326 +KEY= ffffffffffffffc000000000000000000000000000000000 +CT= 44aba95e8a06a2d9d3530d2677878c80 +TEST= 327 +KEY= ffffffffffffff8000000000000000000000000000000000 +CT= dc5b25b71b6296cf73dd2cdcac2f70b1 +TEST= 328 +KEY= ffffffffffffff0000000000000000000000000000000000 +CT= ca6108d1d98071428eeceef1714b96dd +TEST= 329 +KEY= fffffffffffffe0000000000000000000000000000000000 +CT= 94d46e155c1228f61d1a0db4815ecc4b +TEST= 330 +KEY= fffffffffffffc0000000000000000000000000000000000 +CT= 27b8070270810f9d023f9dd7ff3b4aa2 +TEST= 331 +KEY= fffffffffffff80000000000000000000000000000000000 +CT= 36ed5d29b903f31e8983ef8b0a2bf990 +TEST= 332 +KEY= fffffffffffff00000000000000000000000000000000000 +CT= b7f29c1e1f62847a15253b28a1e9d712 +TEST= 333 +KEY= ffffffffffffe00000000000000000000000000000000000 +CT= 4fe2a9d2c1824449c69e3e0398f12963 +TEST= 334 +KEY= ffffffffffffc00000000000000000000000000000000000 +CT= 42e4074b2927973e8d17ffa92f7fe615 +TEST= 335 +KEY= ffffffffffff800000000000000000000000000000000000 +CT= 105f0a25e84ac930d996281a5f954dd9 +TEST= 336 +KEY= ffffffffffff000000000000000000000000000000000000 +CT= c79a637beb1c0304f14014c037e736dd +TEST= 337 +KEY= fffffffffffe000000000000000000000000000000000000 +CT= c8dcd9e6f75e6c36c8daee0466f0ed74 +TEST= 338 +KEY= fffffffffffc000000000000000000000000000000000000 +CT= d365ab8df8ffd782e358121a4a4fc541 +TEST= 339 +KEY= fffffffffff8000000000000000000000000000000000000 +CT= 3a9b87ae77bae706803966c66c73adbd +TEST= 340 +KEY= fffffffffff0000000000000000000000000000000000000 +CT= a758de37c2ece2a02c73c01fedc9a132 +TEST= 341 +KEY= ffffffffffe0000000000000000000000000000000000000 +CT= c0f797e50418b95fa6013333917a9480 +TEST= 342 +KEY= ffffffffffc0000000000000000000000000000000000000 +CT= 223736e8b8f89ca1e37b6deab40facf1 +TEST= 343 +KEY= ffffffffff80000000000000000000000000000000000000 +CT= 2a8ce6747a7e39367828e290848502d9 +TEST= 344 +KEY= ffffffffff00000000000000000000000000000000000000 +CT= 6afaa996226198b3e2610413ce1b3f78 +TEST= 345 +KEY= fffffffffe00000000000000000000000000000000000000 +CT= 12ad98cbf725137d6a8108c2bed99322 +TEST= 346 +KEY= fffffffffc00000000000000000000000000000000000000 +CT= fefebf64360f38e4e63558f0ffc550c3 +TEST= 347 +KEY= fffffffff800000000000000000000000000000000000000 +CT= cc4ba8a8e029f8b26d8afff9df133bb6 +TEST= 348 +KEY= fffffffff000000000000000000000000000000000000000 +CT= 0cf4ff4f49c8a0ca060c443499e29313 +TEST= 349 +KEY= ffffffffe000000000000000000000000000000000000000 +CT= eb81b584766997af6ba5529d3bdd8609 +TEST= 350 +KEY= ffffffffc000000000000000000000000000000000000000 +CT= ebfdb05a783d03082dfe5fdd80a00b17 +TEST= 351 +KEY= ffffffff8000000000000000000000000000000000000000 +CT= 4fad6efdff5975aee7692234bcd54488 +TEST= 352 +KEY= ffffffff0000000000000000000000000000000000000000 +CT= b16fa71f846b81a13f361c43a851f290 +TEST= 353 +KEY= fffffffe0000000000000000000000000000000000000000 +CT= b5accc8ed629edf8c68a539183b1ea82 +TEST= 354 +KEY= fffffffc0000000000000000000000000000000000000000 +CT= 61a89990cd1411750d5fb0dc988447d4 +TEST= 355 +KEY= fffffff80000000000000000000000000000000000000000 +CT= 1b41f83b38ce5032c6cd7af98cf62061 +TEST= 356 +KEY= fffffff00000000000000000000000000000000000000000 +CT= a168253762e2cc81b42d1e5001762699 +TEST= 357 +KEY= ffffffe00000000000000000000000000000000000000000 +CT= cc8a64b46b5d88bf7f247d4dbaf38f05 +TEST= 358 +KEY= ffffffc00000000000000000000000000000000000000000 +CT= 562012ec8faded0825fb2fa70ab30cbd +TEST= 359 +KEY= ffffff800000000000000000000000000000000000000000 +CT= 198ae2a4637ac0a7890a8fd1485445c9 +TEST= 360 +KEY= ffffff000000000000000000000000000000000000000000 +CT= 446ee416f9ad1c103eb0cc96751c88e1 +TEST= 361 +KEY= fffffe000000000000000000000000000000000000000000 +CT= fb4035074a5d4260c90cbd6da6c3fceb +TEST= 362 +KEY= fffffc000000000000000000000000000000000000000000 +CT= ef6555253635d8432156cfd9c11b145a +TEST= 363 +KEY= fffff8000000000000000000000000000000000000000000 +CT= e1af1e7d8bc225ed4dffb771ecbb9e67 +TEST= 364 +KEY= fffff0000000000000000000000000000000000000000000 +CT= 07093657552d4414227ce161e9ebf7dd +TEST= 365 +KEY= ffffe0000000000000000000000000000000000000000000 +CT= 5e4b7bff0290c78344c54a23b722cd20 +TEST= 366 +KEY= ffffc0000000000000000000000000000000000000000000 +CT= b2f8b409b0585909aad3a7b5a219072a +TEST= 367 +KEY= ffff80000000000000000000000000000000000000000000 +CT= 26706be06967884e847d137128ce47b3 +TEST= 368 +KEY= ffff00000000000000000000000000000000000000000000 +CT= b7d67cf1a1e91e8ff3a57a172c7bf412 +TEST= 369 +KEY= fffe00000000000000000000000000000000000000000000 +CT= e4f2f2ae23e9b10bacfa58601531ba54 +TEST= 370 +KEY= fffc00000000000000000000000000000000000000000000 +CT= a5dc46c37261194124ecaebd680408ec +TEST= 371 +KEY= fff800000000000000000000000000000000000000000000 +CT= 1c0ad553177fd5ea1092c9d626a29dc4 +TEST= 372 +KEY= fff000000000000000000000000000000000000000000000 +CT= aa187824d9c4582b0916493ecbde8c57 +TEST= 373 +KEY= ffe000000000000000000000000000000000000000000000 +CT= 7ababc4b3f516c9aafb35f4140b548f9 +TEST= 374 +KEY= ffc000000000000000000000000000000000000000000000 +CT= ff620ccbe9f3292abdf2176b09f04eba +TEST= 375 +KEY= ff8000000000000000000000000000000000000000000000 +CT= eba83ff200cff9318a92f8691a06b09f +TEST= 376 +KEY= ff0000000000000000000000000000000000000000000000 +CT= 833f71258d53036b02952c76c744f5a1 +TEST= 377 +KEY= fe0000000000000000000000000000000000000000000000 +CT= 5310f654343e8f27e12c83a48d24ff81 +TEST= 378 +KEY= fc0000000000000000000000000000000000000000000000 +CT= 9978bcf8dd8fd72241223ad24b31b8a4 +TEST= 379 +KEY= f80000000000000000000000000000000000000000000000 +CT= edd807ef7652d7eb0e13c8b5e15b3bc0 +TEST= 380 +KEY= f00000000000000000000000000000000000000000000000 +CT= 180b09f267c45145db2f826c2582d35c +TEST= 381 +KEY= e00000000000000000000000000000000000000000000000 +CT= 6eccedf8de592c22fb81347b79f2db1f +TEST= 382 +KEY= c00000000000000000000000000000000000000000000000 +CT= 132b074e80f2a597bf5febd8ea5da55e +TEST= 383 +KEY= 800000000000000000000000000000000000000000000000 +CT= de885dc87f5a92594082d02cc1e1b42c diff --git a/flint/test/testvals/ecbnk48.txt b/flint/test/testvals/ecbnk48.txt new file mode 100644 index 0000000..4a6c2b0 --- /dev/null +++ b/flint/test/testvals/ecbnk48.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= dc95c078a2408989ad48a21492842087 +TEST= 1 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 6b6cfe160a6263631b292f879eeff926 +TEST= 2 +KEY= 0000000000000000000000000000000000000000000000000000000000000003 +CT= bf701e7f51c292f1cc242a991578eb2a +TEST= 3 +KEY= 0000000000000000000000000000000000000000000000000000000000000007 +CT= ab749ad085ee539d8baf1621853d3fb2 +TEST= 4 +KEY= 000000000000000000000000000000000000000000000000000000000000000f +CT= 4bcef4dbc203f06aa5fb72ed1a70fb89 +TEST= 5 +KEY= 000000000000000000000000000000000000000000000000000000000000001f +CT= be406db48b9b2aa8559ed5b173fd658b +TEST= 6 +KEY= 000000000000000000000000000000000000000000000000000000000000003f +CT= e93766e59507d341537d0c62072d8a55 +TEST= 7 +KEY= 000000000000000000000000000000000000000000000000000000000000007f +CT= 58ed5fbb416960f5f06159b76a6d7738 +TEST= 8 +KEY= 00000000000000000000000000000000000000000000000000000000000000ff +CT= bc2546f4768081ceb295a72b31e6ab05 +TEST= 9 +KEY= 00000000000000000000000000000000000000000000000000000000000001ff +CT= 1e85b10b69d7e5994438da340674b012 +TEST= 10 +KEY= 00000000000000000000000000000000000000000000000000000000000003ff +CT= 027d266cf77aa9f5365aa549254323cf +TEST= 11 +KEY= 00000000000000000000000000000000000000000000000000000000000007ff +CT= fbde91184125dc0d0f229e09db5a8da2 +TEST= 12 +KEY= 0000000000000000000000000000000000000000000000000000000000000fff +CT= 53a77656d1bc4e33ac9a4ae98a912b35 +TEST= 13 +KEY= 0000000000000000000000000000000000000000000000000000000000001fff +CT= af5628c2a562fce45b3e3265b17d57c1 +TEST= 14 +KEY= 0000000000000000000000000000000000000000000000000000000000003fff +CT= b835c0732fbfd73f3c428877dceefbfd +TEST= 15 +KEY= 0000000000000000000000000000000000000000000000000000000000007fff +CT= 03f6669af1df61abcf54024353c3048d +TEST= 16 +KEY= 000000000000000000000000000000000000000000000000000000000000ffff +CT= fe3dec93582172729ca562db3a24da23 +TEST= 17 +KEY= 000000000000000000000000000000000000000000000000000000000001ffff +CT= ed696865926ecabb1e5013e1dc4862c9 +TEST= 18 +KEY= 000000000000000000000000000000000000000000000000000000000003ffff +CT= c9a918af1b5a4ce363fd5bdbbbe94dd6 +TEST= 19 +KEY= 000000000000000000000000000000000000000000000000000000000007ffff +CT= c213d9c2a23584883d25823549daa369 +TEST= 20 +KEY= 00000000000000000000000000000000000000000000000000000000000fffff +CT= cbd19b0ac8fd6e5de946d1866ff0014e +TEST= 21 +KEY= 00000000000000000000000000000000000000000000000000000000001fffff +CT= 913b89d6540f1f26eae1ce75d65a3373 +TEST= 22 +KEY= 00000000000000000000000000000000000000000000000000000000003fffff +CT= c71ad528b5ed428b29b05e90696065ef +TEST= 23 +KEY= 00000000000000000000000000000000000000000000000000000000007fffff +CT= 537013a5f3fd7e97612798bca85edce1 +TEST= 24 +KEY= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= af63b3b30ad065a7c686c6c53687575d +TEST= 25 +KEY= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= d0ab26758ce397c61b0160b682761a96 +TEST= 26 +KEY= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= 942e760423b6ea3cfe6da21186ae47ac +TEST= 27 +KEY= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= 45685f766771cdebcaad2fb3c792fe51 +TEST= 28 +KEY= 000000000000000000000000000000000000000000000000000000000fffffff +CT= cb0a8a91aa019fdf83c4ffbbdcf7447d +TEST= 29 +KEY= 000000000000000000000000000000000000000000000000000000001fffffff +CT= 19c871011b3afd00c834caf416ef4cf9 +TEST= 30 +KEY= 000000000000000000000000000000000000000000000000000000003fffffff +CT= 3761ba9ab369230a061af0080936bb35 +TEST= 31 +KEY= 000000000000000000000000000000000000000000000000000000007fffffff +CT= 63587d81d0dd0af99cb71b848d8055b4 +TEST= 32 +KEY= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= 543f94b1e7458f38994515b2f82b56e5 +TEST= 33 +KEY= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= 96fe07bbda459956adc2dff0e112c4b6 +TEST= 34 +KEY= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= 855e83b75c30bf564d78b8ead29898a1 +TEST= 35 +KEY= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= 971f085cfd3672e8d648894e833372f6 +TEST= 36 +KEY= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= 45d75757285fa13740f9335135811c62 +TEST= 37 +KEY= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= e7d8cfd6c8393169a8e1ef610ea8ff04 +TEST= 38 +KEY= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= 6e079973ba11f4eca6ac2d1875a7a5d1 +TEST= 39 +KEY= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= ed2252c561bbb86172664a7e6f4f588f +TEST= 40 +KEY= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= 6a326677187d8636bd0cf410707150d2 +TEST= 41 +KEY= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= 6d005cea1a4e54fb2becfe7f84da2690 +TEST= 42 +KEY= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= dbf008f42a12b68d5d976b19c03dbf8f +TEST= 43 +KEY= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= d2c675869612e5e8e997c2f40c124b4f +TEST= 44 +KEY= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= 34b24616843e26e04ae07e30f1d37c14 +TEST= 45 +KEY= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= 66261a57903dcd9e7b99ffee603d52ea +TEST= 46 +KEY= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= 41044ecff55d2f1b74ac503a026b69f1 +TEST= 47 +KEY= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= fdf60bb3857a923412e5549ceb47a06b +TEST= 48 +KEY= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= 4afd474c849e7435dbc189033056ffaf +TEST= 49 +KEY= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= 0a1b1c700a9de96f6382199b58c3f156 +TEST= 50 +KEY= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= 2cc0ac48f4b609e07ff191f7e201cd4d +TEST= 51 +KEY= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= b73f7c95679e7b2a4142b95962216d47 +TEST= 52 +KEY= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= eb0b3ad0cfe4a029402a8ae1b59effab +TEST= 53 +KEY= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= 3d504ad4b4029094043778ce3c2d3517 +TEST= 54 +KEY= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= 23d88a19ac10ce9d878b8bafb2559c42 +TEST= 55 +KEY= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= 75aa63f4ed7deb513b2c60a49f26ed5b +TEST= 56 +KEY= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= e2d7fd533d6e2f03cbd2e89eeff058bf +TEST= 57 +KEY= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 27118699661cd6dbe6118cd339f08ace +TEST= 58 +KEY= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= ec355421e48d3fef18e00fe0ba13afeb +TEST= 59 +KEY= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= b4df72723b9a101f4dcf20afddbb6cd4 +TEST= 60 +KEY= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= 427b5f8e6b9372c65dee4b33256bc571 +TEST= 61 +KEY= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= 890accefa77cbf872f5296f1cc843d6d +TEST= 62 +KEY= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= 45f132aeedfcaeada0354232e8e0ecd6 +TEST= 63 +KEY= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= e00b07ddb7ac13b03ff48988211fe71f +TEST= 64 +KEY= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= 9d386993f184e5805fb0e987455809ed +TEST= 65 +KEY= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= 475b5ab6722d43f715436a8cb59cbf4f +TEST= 66 +KEY= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= a82590572fd07fbf1d23fc81b49e8756 +TEST= 67 +KEY= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= 3adce472e6c7a99fa7d3017ad75f5cdf +TEST= 68 +KEY= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= 524797e0cf9c9dea956962ef7136f546 +TEST= 69 +KEY= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= 075d0316aedd8df2ae66eb838e2ed485 +TEST= 70 +KEY= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= 187849162a0b56eeaae2425c2e494b78 +TEST= 71 +KEY= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= c278f398882137eaac01c3275a9a2722 +TEST= 72 +KEY= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= f1e8b6e7114b02918877a995784fcb74 +TEST= 73 +KEY= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= e7f582f29d8d332087bda8514372c900 +TEST= 74 +KEY= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= 0a4585f81b68c921331c1f9110df528e +TEST= 75 +KEY= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= 203c4d0dba823937bd66680f47cf5511 +TEST= 76 +KEY= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= d757358180429b7112e006a53eb5467f +TEST= 77 +KEY= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= 202b92ded713c6c754fab7ab9235ab3c +TEST= 78 +KEY= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= a226249ea4d82542a878009a495bd4ca +TEST= 79 +KEY= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= 0d62e8c60b22be37888eef8fafd374a4 +TEST= 80 +KEY= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= 6e16ce6a174705eb4dea7391d180f6e9 +TEST= 81 +KEY= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= 53a295a307cc07aeda9618fe12268bfa +TEST= 82 +KEY= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= 6fb67e2d8a5b1ddb8f3b37458f03fdba +TEST= 83 +KEY= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= 9eb298a14e534f5bd08380dd0949d312 +TEST= 84 +KEY= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= 30a6d04751b2211b19099024ef052fbe +TEST= 85 +KEY= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= 1c32545f6246937f70aec5fe8603c6c3 +TEST= 86 +KEY= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= a6b1755b086923fdfb82a3906228ba16 +TEST= 87 +KEY= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= 3efc4aceca70357daa5425e77370d01c +TEST= 88 +KEY= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= e8d7761c2afd674da8f72505515df6d9 +TEST= 89 +KEY= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 6e9927c90c684eef8314933f3bdbd17d +TEST= 90 +KEY= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= 020d04983f9bdc77750af373febcfda4 +TEST= 91 +KEY= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= d7fdd1e21e7284aab3caae27f4c3ac2e +TEST= 92 +KEY= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= 59279905253bbe0390b6ee5f4d913035 +TEST= 93 +KEY= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= 5939a3a8a64eb06498880eb69c06108a +TEST= 94 +KEY= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= fbcce6048c4cbe51db5b792dec5f7fa4 +TEST= 95 +KEY= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= 6e61dd46de31a0b83f441a175e5a68c5 +TEST= 96 +KEY= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= 517488ed7136e987df9900dc032cf104 +TEST= 97 +KEY= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= 75c590ae01382faa02f3fc94ac094c25 +TEST= 98 +KEY= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= 7add6d12d7e627f64341fa7cc8f9d1bd +TEST= 99 +KEY= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= f5debd1f635e9bc7fea99c5b5cc4a23f +TEST= 100 +KEY= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= cf63aefa7f89f106dd941e9e439e4882 +TEST= 101 +KEY= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= 007d5db50703e395b7f0319bd47bced0 +TEST= 102 +KEY= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= b30da57079a61f274ea7bad1a1f968f9 +TEST= 103 +KEY= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= 2861cea007f459e060ec30a35bf77f3e +TEST= 104 +KEY= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= 76ea45daa3ac5419f94c083df1f6eed6 +TEST= 105 +KEY= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= f763116ab6713769978256008da81f21 +TEST= 106 +KEY= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= 0ab5cc550c106a3893269ea47faa55b5 +TEST= 107 +KEY= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= d6721c1e6eb846a73c74dd218e983e68 +TEST= 108 +KEY= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= 695cb975fce7307b7b66a834532886e0 +TEST= 109 +KEY= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= 2b208ab1ee6448d185e487ccd48e6e21 +TEST= 110 +KEY= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= fb83cf7f34b08873c8d69d261055e20b +TEST= 111 +KEY= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= b5028a49edef6b356c3a650e2cb9e8ec +TEST= 112 +KEY= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= 95334335ed4c4a760562ae7d2a495632 +TEST= 113 +KEY= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= 6a462fa7c99e2f712c68589060ba5ea8 +TEST= 114 +KEY= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= a6d665b7058a2afb5d8733f68cd5a3ad +TEST= 115 +KEY= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= e83ca68a268587bced34cb8c7921295e +TEST= 116 +KEY= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= b071d09822e2057cf9340dd7cab746e1 +TEST= 117 +KEY= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= 56b2e0652b99419a4ee106208d93dcfe +TEST= 118 +KEY= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= 007124f92a4d45b728573441e9f9056e +TEST= 119 +KEY= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= 16793534f4253cbc98b5566034922535 +TEST= 120 +KEY= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= 52ef58a3745fb284b5dc0d3b1461e83f +TEST= 121 +KEY= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= 5d0437caa6e87e7edaaef69b9f2a939c +TEST= 122 +KEY= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= 6b0fcfd7c7a9f906612bd19d56a5eb92 +TEST= 123 +KEY= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 1b70f1055cd41e7b4baaf811d1dc2107 +TEST= 124 +KEY= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= 44af7f02410db127a4df787fc95dbeba +TEST= 125 +KEY= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= 4e257c57d75263d0f8e332a840eb5d91 +TEST= 126 +KEY= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 5bf2a1b829ac2b77694ba7e9cd5fe696 +TEST= 127 +KEY= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= 16bde095575a3fce86d6a2048efdfda5 +TEST= 128 +KEY= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= 3eba4327813f079e4e35ff0f96294c45 +TEST= 129 +KEY= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= 8e44354ada179283f48a9a823ed12dde +TEST= 130 +KEY= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= 947c7bf988d6c4337a287fd07e315eb6 +TEST= 131 +KEY= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= 8f40a2be60fc9199c33107784cd8680a +TEST= 132 +KEY= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 24d8df70bc270b725a061ffbae9908aa +TEST= 133 +KEY= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= 75bb95c01ee27cfa20942a3248bf2c15 +TEST= 134 +KEY= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= 6dd74f7f74ebfcbe2ea9003eea9dc895 +TEST= 135 +KEY= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= e7ba9be6d67eb735faab4e51c42c358a +TEST= 136 +KEY= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= 31f9d4202468e6bf9ae926396c09d75d +TEST= 137 +KEY= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= c8021f0215b26d90a9957381134db197 +TEST= 138 +KEY= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= 57a95c3742317d577d00653f90a57214 +TEST= 139 +KEY= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= 0d2d79b82fa7b36ee766c1ffd9b61610 +TEST= 140 +KEY= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= e571bc3cc6b85ace8d9b4d1136d962d7 +TEST= 141 +KEY= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= ffa28032523f41d01de868f5545188bf +TEST= 142 +KEY= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= 2734d5d8c9ad438077f9308a8de9d544 +TEST= 143 +KEY= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= 99d9f28f5127ea200c9de6d5c8d0fc1c +TEST= 144 +KEY= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 0fdca399ded08ed42b085da22d93326d +TEST= 145 +KEY= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= 3f30ddd5a713d5d8ab216a8b4d7d52a4 +TEST= 146 +KEY= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= c3d85f4ea35417559b1407d39c149fc7 +TEST= 147 +KEY= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= e3d276628c8cf02c42ad2d758de155ce +TEST= 148 +KEY= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= b84399d6053263e6472304e26f5e0ec7 +TEST= 149 +KEY= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= 6e20742b02838468dd51e5a3a7f2b8ba +TEST= 150 +KEY= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= 9a9dbab97ca1f7a2da7f965ee1dfb4e6 +TEST= 151 +KEY= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= 41aacaa89e1399a108a80716fd0e0f55 +TEST= 152 +KEY= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= 582be6d22c815bc81fde4c0d234d626a +TEST= 153 +KEY= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= 4499f256fe699e5e994d887be48fe2ec +TEST= 154 +KEY= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= ee26c00ac7b5df7bfe5e3a07df721147 +TEST= 155 +KEY= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= 8b8f6e74e2f3f90647d0fd8bb9bebad4 +TEST= 156 +KEY= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= 863784b8bedd5e5136653c117640cf73 +TEST= 157 +KEY= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= 649734b5a45c46804993680b7430ee16 +TEST= 158 +KEY= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= 4300c7495e4f60051bf81b41efd60937 +TEST= 159 +KEY= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= 175c302f8c69865e4b29998654d7df56 +TEST= 160 +KEY= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= 7fa83d9963562b275db0b9f8a2741abf +TEST= 161 +KEY= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= dff04cd44b1770cdc3dfd13076cdd20d +TEST= 162 +KEY= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= 576bd4bad89d83bd47543b49d43bfbac +TEST= 163 +KEY= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= d38e87363016d48279fa8a8f89514ec2 +TEST= 164 +KEY= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= 48a1b62e83e17d43f94367380efe6d3c +TEST= 165 +KEY= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= c1bb7aefd3613e4e54fbc55263089094 +TEST= 166 +KEY= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= b2f12fd11d9fc28942e293cafd564697 +TEST= 167 +KEY= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= 9f7d86077298836c7a051cdcdc01b0a3 +TEST= 168 +KEY= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 837980614116768f301d4eaf74c8f61c +TEST= 169 +KEY= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= bebe2da4f22916c758713300653954f2 +TEST= 170 +KEY= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= a854fef10367e2717f0c1477c276ba51 +TEST= 171 +KEY= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= 8062587d0399c57034691b224b7458f9 +TEST= 172 +KEY= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= 6eff435d904f9331194a9390aab9bbc6 +TEST= 173 +KEY= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= 51cca7c89eb5cf85513f4d4cc012367d +TEST= 174 +KEY= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= 7266ab510d9fba7ef7f5b091771ce3b6 +TEST= 175 +KEY= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= a7fea44379f62e4c084762cf57fcff2e +TEST= 176 +KEY= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= cfe5b834dc50762e7f664736fe01314c +TEST= 177 +KEY= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= b161bcc5b60fdee9f42f01ad7cb577cc +TEST= 178 +KEY= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= 619203acd2578302f9fd58878bb7e6e9 +TEST= 179 +KEY= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= 3b8c4d30824b1c30b654982f3b11c690 +TEST= 180 +KEY= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= ca5f8704dffde917707fbee0e6d47d91 +TEST= 181 +KEY= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= e47af77c9156d7b189d60302bba2abc7 +TEST= 182 +KEY= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= 672728b55b4987f66df36174c601ee79 +TEST= 183 +KEY= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= ecf4ad0de7dc2b747cd6bd672661cf20 +TEST= 184 +KEY= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= 90ec729bd49587be52d69a48d2101241 +TEST= 185 +KEY= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= 3f47dd56e94bdcc88fc15f92680fae2b +TEST= 186 +KEY= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= 8a2db427a64ffd3d4a1351c2926f6c88 +TEST= 187 +KEY= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= fbb09231e2d67b2292c4aad76eba7f24 +TEST= 188 +KEY= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= dbc986b4365cb5de13e66e8b61f2b7a7 +TEST= 189 +KEY= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= d8bb9b81c245521987e35293c8dc1c5b +TEST= 190 +KEY= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= 2f8abe972cbef8e44333f6fc7b546b47 +TEST= 191 +KEY= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= c4f400720ac847b949efbb88465c4a03 +TEST= 192 +KEY= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 13af71f5b184afa7a6b2076fda139c3e +TEST= 193 +KEY= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 343f57ab0bcaf1d0a6da2a4bb8548eb3 +TEST= 194 +KEY= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 186664c6155d822512d9ee6235fe8ae6 +TEST= 195 +KEY= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 84cb0d12ca2606e32d74352e70b46eb4 +TEST= 196 +KEY= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1b4a2fce431cc884592074df060a8e3a +TEST= 197 +KEY= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6a03c8a609c994bf05968eee7a92352f +TEST= 198 +KEY= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 886b0ebef192f7822f761e3638ee4cf8 +TEST= 199 +KEY= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 855afdfa6f111b1307e6aefd2ca99cf7 +TEST= 200 +KEY= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 30038bd599a496cfd937de42958fec6d +TEST= 201 +KEY= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bf2de78771bbc0612c5b124b05b0c91a +TEST= 202 +KEY= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 51d5ad97f39309054b7f3a3d3c4a5fcd +TEST= 203 +KEY= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 05c656dbd95072ca76c837eca96b7be7 +TEST= 204 +KEY= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 19c4955ce3fbb5d075309f4236c95d40 +TEST= 205 +KEY= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3e82296fc30beae5bfc99dc34d098bd1 +TEST= 206 +KEY= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 946792d61dc8f87428316dd660acb0d7 +TEST= 207 +KEY= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 23877a45e455d3583850765e02e74f85 +TEST= 208 +KEY= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a78b350037a786ea1dccb496695c4853 +TEST= 209 +KEY= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 07a773a8e323e590728d8d908a70bb9c +TEST= 210 +KEY= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bc916f318e1616cef19b497f5fd57e70 +TEST= 211 +KEY= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4955b47dc1bdb73bf4ff96d6b2ca9b60 +TEST= 212 +KEY= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 301db4ae59999c76d1dafeec928bb274 +TEST= 213 +KEY= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1ae328b4d92d60cb4ac726ba7882dbae +TEST= 214 +KEY= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= baafaebb3c980d05b72abee6756e80cd +TEST= 215 +KEY= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1dd5d46789807814a37f1d9bdcf1f1f0 +TEST= 216 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 29258975ad47bb2fef85792c6edba0cf +TEST= 217 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6ba3d4297e1c46611c91a4bd5f469c16 +TEST= 218 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= db3db8c9e6dfb466554180bfaafbd7d5 +TEST= 219 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= dbe0f4c8a53653227f9420f3c8a4217e +TEST= 220 +KEY= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0a68a6d3efed7b6602bdba3affd12679 +TEST= 221 +KEY= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 83164657104e46ed285f929f880b4d94 +TEST= 222 +KEY= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 24766eda3ac0abe8ecd3f578c1dcdb54 +TEST= 223 +KEY= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d871b41c3cd1b8977242dc4846bfacfc +TEST= 224 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7b41c82f493c0fa5f5d55ea270f9863c +TEST= 225 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 79ac40e48b1f044e89c2f2e444447a78 +TEST= 226 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 71b289b6ccd0975244b291b0afad7883 +TEST= 227 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0212b97d6105467fcc606575d17f1065 +TEST= 228 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2eb35611fb7c76778b0f54cb0cc2934d +TEST= 229 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a7dee1c4fe0755ba889cf3fd1c65205c +TEST= 230 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 621116bdeeae44ae2eecb08fce1e108a +TEST= 231 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 29a1db0e72a771eb8c6361a17d6e6dbf +TEST= 232 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 36fffa85f3963cf01f3297f4eefe14a1 +TEST= 233 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c45dc9405cf61864d9fb65e864130009 +TEST= 234 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ae9a1eb242eee920e539d8ce1fc96286 +TEST= 235 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 99861099327a2b7170db096990c90453 +TEST= 236 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d33639cd1a110d75cc8394e0a09be96a +TEST= 237 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 775fda0219add7cf975e38ba170e7d7b +TEST= 238 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 70ce9897f99712185af3f0ba84a726ff +TEST= 239 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a3d47fb6583f8a2f889bb79509731ec7 +TEST= 240 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c4bad4e26e43d7c4af234278dc537528 +TEST= 241 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 920d830bce23565df19eaae4bd57310a +TEST= 242 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3a39c43e83b54f61abe4383c96db3cc6 +TEST= 243 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1d020ad19fba8d96a65bba16fbb42e17 +TEST= 244 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 141ac0c97479d9e2102a9aabc127ee63 +TEST= 245 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7d3af45ccefc698808fb285ac595d491 +TEST= 246 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f9721f2d5f0a842aa66015d4ed6ca4b8 +TEST= 247 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3375396341b19ef7d59035e77d04157c +TEST= 248 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b82a29ff80dc7924f3bc74033b567241 +TEST= 249 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 89cd4f3a1ff80a6f5f21619b12d8ceb7 +TEST= 250 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2ac0fd06ad5d60a45ef4b185eb2116d3 +TEST= 251 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a84ecd3feb87562d3837c1bd82f4a9a9 +TEST= 252 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6863d07b1b6cbf078a5a95ab10e4142f +TEST= 253 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3b4c71bd036bc069e5dd13c38a3004a9 +TEST= 254 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= cc0a818a631d407ab7ec415276719e31 +TEST= 255 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 69053f64996ad8b4e82d996847de458b +TEST= 256 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4bf85f1b5d54adbc307b0a048389adcb +TEST= 257 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= b07d4f3e2cd2ef2eb545980754dfea0f +TEST= 258 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= 27936bd27fb1468fc8b48bc483321725 +TEST= 259 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 1f8a8133aa8ccf70e2bd3285831ca6b7 +TEST= 260 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 03720371a04962eaea0a852e69972858 +TEST= 261 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= cf78618f74f6f3696e0a4779b90b5a77 +TEST= 262 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 7b03627611678a997717578807a800e2 +TEST= 263 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 2f005a8aed8a361c92e440c15520cbd1 +TEST= 264 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 60eb5af8416b257149372194e8b88749 +TEST= 265 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 5b40ff4ec9be536ba23035fa4f06064c +TEST= 266 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= cca7c3086f5f9511b31233da7cab9160 +TEST= 267 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 8b378c86672aa54a3a266ba19d2580ca +TEST= 268 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= 9338f08e0ebee96905d8f2e825208f43 +TEST= 269 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 50e6d3c9b6698a7cd276f96b1473f35a +TEST= 270 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= d94b5e90db354c1e42f61fabe167b2c0 +TEST= 271 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= a8a39a0f5663f4c0fe5f2d3cafff421a +TEST= 272 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 563531135e0c4d70a38f8bdb190ba04e +TEST= 273 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= d2e0c7f15b4772467d2cfc873000b2ca +TEST= 274 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 52fc3e620492ea99641ea168da5b6d52 +TEST= 275 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= 3a0a0e75a8da36735aee6684d965a778 +TEST= 276 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= d3a204dbd9c2af158b6ca67a5156ce4a +TEST= 277 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 2fdea9e650532be5bc0e7325337fd363 +TEST= 278 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= d1ac39bb1ef86b9c1344f214679aa376 +TEST= 279 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= da797713263d6f33a5478a65ef60d412 +TEST= 280 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= 3194367a4898c502c13bb7478640a72d +TEST= 281 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= ba9ebefdb4ccf30f296cecb3bc1943e8 +TEST= 282 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= e74a4c999b4c064e48bb1e413f51e5ea +TEST= 283 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= ea7bd6bb63418731aeac790fe42d61e8 +TEST= 284 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= 37f655536a704e5ace182d742a820cf4 +TEST= 285 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 3f58c950f0367160adec45f2441e7411 +TEST= 286 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 294b033df4da853f4be3e243f7e513f4 +TEST= 287 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= 234b148b8cb1d8c32b287e896903d150 +TEST= 288 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 70bed8dbf615868a1f9d9b05d3e7a267 +TEST= 289 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= 1e38e759075ba5cab6457da51844295a +TEST= 290 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= 02dc99fa3d4f98ce80985e7233889313 +TEST= 291 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= 7379f3370cf6e5ce12ae5969c8eea312 +TEST= 292 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= 96877803de77744bb970d0a91f4debae +TEST= 293 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= 2fbb83dfd0d7abcb05cd28cad2dfb523 +TEST= 294 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= 9c94b8b0cb8bcc919072262b3fa05ad9 +TEST= 295 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= 70377b6da669b072129e057cc28e9ca5 +TEST= 296 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= 26b549c2ec756f82ecc48008e529956b +TEST= 297 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 1ee6ee326583a0586491c96418d1a35d +TEST= 298 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= 97e8adf65638fd9cdf3bc22c17fe4dbd +TEST= 299 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= 5bf0051893a18bb30e139a58fed0fa54 +TEST= 300 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= 7a15aab82701efa5ae36ab1d6b76290f +TEST= 301 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= 4327d08c523d8eba697a4336507d1f42 +TEST= 302 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= 4fc0d230f8891415b87b83f95f2e09d1 +TEST= 303 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= a085d7c1a500873a20099c4caa3c3f5b +TEST= 304 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= 69cd0606e15af729d6bca143016d9842 +TEST= 305 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= 1f56413c7add6f43d1d56e4f02190330 +TEST= 306 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= 2e2e647d5360e09230a5d738ca33471e +TEST= 307 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= 6702990727aa0878637b45dcd3a3b074 +TEST= 308 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= e9f80e9d845bcc0f62926af72eabca39 +TEST= 309 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= c267ef0e2d01a993944dd397101413cb +TEST= 310 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= 6eda7ff6b8319180ff0d6e65629d01c3 +TEST= 311 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= 8a772231c01dfdd7c98e4cfddcc0807a +TEST= 312 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= 35e9eddbc375e792c19992c19165012b +TEST= 313 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= 1dcd8bb173259eb33a5242b0de31a455 +TEST= 314 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 84ecacfcd400084d078612b1945f2ef5 +TEST= 315 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= 193a3d24157a51f1ee0893f6777417e7 +TEST= 316 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= 023e82b533f68c75c238cebdb2ee89a2 +TEST= 317 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= d64424f23cb97215e9c2c6f28d29eab7 +TEST= 318 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= 804f32ea71828c7d329077e712231666 +TEST= 319 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= 37232a4ed21ccc27c19c9610078cabac +TEST= 320 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= 77565c8d73cfd4130b4aa14d8911710f +TEST= 321 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= 516183392f7a8763afec68a060264141 +TEST= 322 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= d1415447866230d28bb1ea18a4cdfd02 +TEST= 323 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= 6168b00ba7859e0970ecfd757efecf7c +TEST= 324 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= edf61ae362e882ddc0167474a7a77f3a +TEST= 325 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= 330d8ee7c5677e099ac74c9994ee4cfb +TEST= 326 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= 2cacf728b88abbad7011ed0e64a1680c +TEST= 327 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= db826251e4ce384b80218b0e1da1dd4c +TEST= 328 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= 0ddfe51ced7e3f4ae927daa3fe452cee +TEST= 329 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= 98551da1a6503276ae1c77625f9ea615 +TEST= 330 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= 72bc65aa8e89562e3f274d45af1cd10b +TEST= 331 +KEY= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= 4570a5a18cfc0dd582f1d88d5c9a1720 +TEST= 332 +KEY= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= 6629d2b8df97da728cdd8b1e7f945077 +TEST= 333 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= ca6e8893a114ae8e27d5ab03a5499610 +TEST= 334 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= db91a38855c8c4643851fbfb358b0109 +TEST= 335 +KEY= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= bcc65b526f88d05b89ce8a52021fdb06 +TEST= 336 +KEY= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= ca359c70803a3b2a3d542e8781dea975 +TEST= 337 +KEY= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= c33bc13e8de88ac25232aa7496398783 +TEST= 338 +KEY= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 10dffb05904bff7c4781df780ad26837 +TEST= 339 +KEY= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= ede447b362c484993dec9442a3b46aef +TEST= 340 +KEY= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= fdd9bbb4a7dc2e4a23536a5880a2db67 +TEST= 341 +KEY= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= ca0bf42cb107f55ccff2fc09ee08ca15 +TEST= 342 +KEY= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= cb5a408657837c53bf16f9d8465dce19 +TEST= 343 +KEY= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= cfd1875523f3cd21c395651e6ee15e56 +TEST= 344 +KEY= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= be288319029363c2622feba4b05dfdfe +TEST= 345 +KEY= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= cc1445ee94c0f08cdee5c344ecd1e233 +TEST= 346 +KEY= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= 866b5b3977ba6efa5128efbda9ff03cd +TEST= 347 +KEY= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= 332eee1a0cbd19ca2d69b426894044f0 +TEST= 348 +KEY= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= 347846b2b2e36f1f0324c86f7f1b98e2 +TEST= 349 +KEY= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= 11c5413904487a805d70a8edd9c35527 +TEST= 350 +KEY= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= feec7ce6a6cbd07c043416737f1bbb33 +TEST= 351 +KEY= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= 4960757ec6ce68cf195e454cfd0f32ca +TEST= 352 +KEY= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= 93201481665cbafc1fcc220bc545fb3d +TEST= 353 +KEY= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= c102e38e489aa74762f3efc5bb23205a +TEST= 354 +KEY= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= c93bbdc07a4611ae4bb266ea5034a387 +TEST= 355 +KEY= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= 8c791d5fdddf470da04f3e6dc4a5b5b5 +TEST= 356 +KEY= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= fcfefb534100796eebbd990206754e19 +TEST= 357 +KEY= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= 6cae8129f843d86dc786a0fb1a184970 +TEST= 358 +KEY= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= ba77413dea5925b7f5417ea47ff19f59 +TEST= 359 +KEY= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= 72c9e4646dbc3d6320fc6689d93e8833 +TEST= 360 +KEY= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= 33905080f7acf1cdae0a91fc3e85aee4 +TEST= 361 +KEY= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= 59836a0e06a79691b36667d5380d8188 +TEST= 362 +KEY= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= 238aca23fd3409f38af63378ed2f5473 +TEST= 363 +KEY= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= ca352df025c65c7b0bf306fbee0f36ba +TEST= 364 +KEY= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= d9a4c7618b0ce48a3d5aee1a1c0114c4 +TEST= 365 +KEY= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= dcf4e129136c1a4b7a0f38935cc34b2b +TEST= 366 +KEY= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= b4da5df4becb5462e03a0ed00d295629 +TEST= 367 +KEY= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= 45d089c36d5c5a4efc689e3b0de10dd5 +TEST= 368 +KEY= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= d240d648ce21a3020282c3f1b528a0b6 +TEST= 369 +KEY= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= 5d942b7f4622ce056c3ce3ce5f1dd9d6 +TEST= 370 +KEY= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= cac8e414c2f388227ae14986fc983524 +TEST= 371 +KEY= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= a9eec03c8abec7ba68315c2c8c2316e0 +TEST= 372 +KEY= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 7c85e9c95de1a9ec5a5363a8a053472d +TEST= 373 +KEY= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= 3967a10cffe27d0178545fbf6a40544b +TEST= 374 +KEY= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= c64c24b6894b038b3c0d09b1df068b0b +TEST= 375 +KEY= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= bf8115805471741bd5ad20a03944790f +TEST= 376 +KEY= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= ef1b384ac4d93eda00c92add0995ea5f +TEST= 377 +KEY= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= 6c5d03b13069c3658b3179be91b0800c +TEST= 378 +KEY= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= 8680db7f3a87b8605543cfdbe6754076 +TEST= 379 +KEY= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= 6e668856539ad8e405bd123fe6c88530 +TEST= 380 +KEY= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= c3498f7eced2095314fc28115885b33f +TEST= 381 +KEY= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 5d454b75021d76d4b84f873a8f877b92 +TEST= 382 +KEY= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= d836b44bb29e0c7d89fa4b2d4b677d2a +TEST= 383 +KEY= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= e3714e94a5778955cc0346358e94783a +TEST= 384 +KEY= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= 6825a347ac479d4f9d95c5cb8d3fd7e9 +TEST= 385 +KEY= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= b5f71d4dd9a71fe5d8bc8ba7e6ea3048 +TEST= 386 +KEY= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= d62068444578e3ab39ce7ec95dd045dc +TEST= 387 +KEY= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= 27eefa80ce6a4a9d598e3fec365434d2 +TEST= 388 +KEY= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= 86f93d9ec08453a071e2e2877877a9c8 +TEST= 389 +KEY= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= 9661cb2424d7d4a380d547f9e7ec1cb9 +TEST= 390 +KEY= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= 8193c6ff85225ced4255e92f6e078a14 +TEST= 391 +KEY= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= a866bc65b6941d86e8420a7ffb0964db +TEST= 392 +KEY= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= 190843d29b25a3897c692ce1dd81ee52 +TEST= 393 +KEY= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= f1f1c5a40899e15772857ccb65c7a09a +TEST= 394 +KEY= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= 3a90c62d88b5c42809abf782488ed130 +TEST= 395 +KEY= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= 9aaec4fabbf6fae2a71feff02e372b39 +TEST= 396 +KEY= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= 10617d28b5e0f4605492b182a5d7f9f6 +TEST= 397 +KEY= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= 87f53bf620d3677268445212904389d5 +TEST= 398 +KEY= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= ba26d47da3aeb028de4fb5b3a854a24b +TEST= 399 +KEY= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= 3b6f46f40e0ac5fc0a9c1105f800f48d +TEST= 400 +KEY= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= cd5ece55b8da3bf622c4100df5de46f9 +TEST= 401 +KEY= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 6c839dd58eeae6b8a36af48ed63d2dc9 +TEST= 402 +KEY= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= ce61d63514aded03d43e6ebfc3a9001f +TEST= 403 +KEY= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= 84a83d7b94c699cbcb8a7d9b61f64093 +TEST= 404 +KEY= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= 972bdd2e7c525130fadc8f76fc6f4b3f +TEST= 405 +KEY= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= e3abc4939457422bb957da3c56938c6d +TEST= 406 +KEY= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= a42734a3929bf84cf0116c9856a3c18c +TEST= 407 +KEY= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= 3d20253adbce3be2373767c4d822c566 +TEST= 408 +KEY= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= 33f7502390b8a4a221cfecd0666624ba +TEST= 409 +KEY= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= b588a302bdbc09197df1edae68926ed9 +TEST= 410 +KEY= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= 8d4595cb4fa7026715f55bd68e2882f9 +TEST= 411 +KEY= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= 40b264e921e9e4a82694589ef3798262 +TEST= 412 +KEY= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= 112078e9e11fbb78e26ffb8899e96b9a +TEST= 413 +KEY= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= 7606fa36d86473e6fb3a1bb0e2c0adf5 +TEST= 414 +KEY= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= 6693dc911662ae473216ba22189a511a +TEST= 415 +KEY= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= 266581af0dcfbed1585e0a242c64b8df +TEST= 416 +KEY= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= 0aeede5b91f721700e9e62edbf60b781 +TEST= 417 +KEY= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= 15c6becf0f4cec7129cbd22d1a79b1b8 +TEST= 418 +KEY= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= 0ebd7c30ed2016e08ba806ddb008bcc8 +TEST= 419 +KEY= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= 40071eeab3f935dbc25d00841460260f +TEST= 420 +KEY= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= 04bc3da2179c3015498b0e03910db5b8 +TEST= 421 +KEY= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= a858411ffbe63fdb9c8aa1bfaed67b52 +TEST= 422 +KEY= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= 684c9efc237e4a442965f84bce20247a +TEST= 423 +KEY= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= dcca366a9bf47b7b868b77e25c18a364 +TEST= 424 +KEY= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= 0791823a3c666bb6162825e78606a7fe +TEST= 425 +KEY= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= e68ad5055a367041fade09d9a70a794b +TEST= 426 +KEY= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= e86f7e23e835e114977f60e1a592202e +TEST= 427 +KEY= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= ab0c8410aeeead92feec1eb430d652cb +TEST= 428 +KEY= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= 4e6e627c1acc51340053a8236d579576 +TEST= 429 +KEY= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= 2e16873e1678610d7e14c02d002ea845 +TEST= 430 +KEY= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= ad4916f5ee5772be764fc027b8a6e539 +TEST= 431 +KEY= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= fdcfac0c02ca538343c68117e0a15938 +TEST= 432 +KEY= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= f33fa36720231afe4c759ade6bd62eb6 +TEST= 433 +KEY= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= f97d57b3333b6281b07d486db2d4e20c +TEST= 434 +KEY= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= ab980296197e1a5022326c31da4bf6f3 +TEST= 435 +KEY= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= a4af534a7d0b643a01868785d86dfb95 +TEST= 436 +KEY= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= 462ccd7f5fd1108dbc152f3cacad328b +TEST= 437 +KEY= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= 2e70f168fc74bf911df240bcd2cef236 +TEST= 438 +KEY= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= 9f0fdec08b7fd79aa39535bea42db92a +TEST= 439 +KEY= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= eb040b891d4b37f6851f7ec219cd3f6d +TEST= 440 +KEY= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= 4b3b9f1e099c2a09dc091e90e4f18f0a +TEST= 441 +KEY= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= 97120166307119ca2280e9315668e96f +TEST= 442 +KEY= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= c20a19fd5758b0c4bc1a5df89cf73877 +TEST= 443 +KEY= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= 9ff071b165b5198a93dddeebc54d09b5 +TEST= 444 +KEY= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= f51a0f694442b8f05571797fec7ee8bf +TEST= 445 +KEY= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= 597a6252255e46d6364dbeeda31e279c +TEST= 446 +KEY= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= e0f0a91b2e45f8cc37b7805a3042588d +TEST= 447 +KEY= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 8f8fd822680a85974e53a5a8eb9d38de +TEST= 448 +KEY= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= 94efe7a0e2e031e2536da01df799c927 +TEST= 449 +KEY= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= d276c13a5d220f4da9224e74896391ce +TEST= 450 +KEY= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= ffb4e87a32b37d6f2c8328d3b5377802 +TEST= 451 +KEY= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= f8b9fffb5c187f7ddc7ab10f4fb77576 +TEST= 452 +KEY= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= 11825f99b0e9bb3477c1c0713b015aac +TEST= 453 +KEY= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= d8c4b200b383fc1f2b2ea677618a1d27 +TEST= 454 +KEY= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 3e0cdadf2e68353c0027672c97144dd3 +TEST= 455 +KEY= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= 092fa137ce18b5dfe7906f550bb13370 +TEST= 456 +KEY= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= 4c022ac62b3cb78d739cc67b3e20bb7e +TEST= 457 +KEY= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= 77dd7702646d55f08365e477d3590eda +TEST= 458 +KEY= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= 31690b5ed41c7eb42a1e83270a7ff0e6 +TEST= 459 +KEY= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= 3f84566df23da48af692722fe980573a +TEST= 460 +KEY= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= 8aa9b75e784593876c53a00eae5af52b +TEST= 461 +KEY= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= a78463fb064db5d52bb64bfef64f2dda +TEST= 462 +KEY= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= 5e031cb9d676c3022d7f26227e85c38f +TEST= 463 +KEY= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= ae682c5ecd71898e08942ac9aa89875c +TEST= 464 +KEY= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= 225f068c28476605735ad671bb8f39f3 +TEST= 465 +KEY= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= 2937a64f7d4f46fe6fea3b349ec78e38 +TEST= 466 +KEY= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= 82bda118a3ed7af314fa2ccc5c07b761 +TEST= 467 +KEY= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= 3dd5c34634a79d3cfcc8339760e6f5f4 +TEST= 468 +KEY= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 3c9db3335306fe1ec612bdbfae6b6028 +TEST= 469 +KEY= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= b5bb0f5629fb6aae5e1839a3c3625d63 +TEST= 470 +KEY= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= df31144f87a2ef523facdcf21a427804 +TEST= 471 +KEY= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= be66cfea2fecd6bf0ec7b4352c99bcaa +TEST= 472 +KEY= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= e0dcc2d27fc9865633f85223cf0d611f +TEST= 473 +KEY= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= 077e9470ae7abea5a9769d49182628c3 +TEST= 474 +KEY= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= f836f251ad1d11d49dc344628b1884e1 +TEST= 475 +KEY= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= f2b21b4e7640a9b3346de8b82fb41e49 +TEST= 476 +KEY= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= 6f6238d8966048d4967154e0dad5a6c9 +TEST= 477 +KEY= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= f85ca05fe528f1ce9b790166e8d551e7 +TEST= 478 +KEY= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= 2025c74b8ad8f4cda17ee2049c4c902d +TEST= 479 +KEY= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= 33ac9eccc4cc75e2711618f80b1548e8 +TEST= 480 +KEY= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= ad9fc613a703251b54c64a0e76431711 +TEST= 481 +KEY= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= 829fd7208fb92d44a074a677ee9861ac +TEST= 482 +KEY= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= fc4af7c948df26e2ef3e01c1ee5b8f6f +TEST= 483 +KEY= fffffff800000000000000000000000000000000000000000000000000000000 +CT= 5fd1f13fa0f31e37fabde328f894eac2 +TEST= 484 +KEY= fffffff000000000000000000000000000000000000000000000000000000000 +CT= 07058e408f5b99b0e0f061a1761b5b3b +TEST= 485 +KEY= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= bbd1097a62433f79449fa97d4ee80dbf +TEST= 486 +KEY= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= a190527d0ef7c70f459cd3940df316ec +TEST= 487 +KEY= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= bd49295006250ffca5100b6007a0eade +TEST= 488 +KEY= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= 2c75e2d36eebd65411f14fd0eb1d2a06 +TEST= 489 +KEY= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= 6bcca98bf6a835fa64955f72de4115fe +TEST= 490 +KEY= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= 85f2ba84f8c307cf525e124c3e22e6cc +TEST= 491 +KEY= fffff80000000000000000000000000000000000000000000000000000000000 +CT= 976e6f851ab52c771998dbb2d71c75a9 +TEST= 492 +KEY= fffff00000000000000000000000000000000000000000000000000000000000 +CT= 6e1b482b53761cf631819b749a6f3724 +TEST= 493 +KEY= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= 633cafea395bc03adae3a1e2068e4b4e +TEST= 494 +KEY= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= 27ef2495dabf323885aab39c80f18d8b +TEST= 495 +KEY= ffff800000000000000000000000000000000000000000000000000000000000 +CT= 610b71dfc688e150d8152c5b35ebc14d +TEST= 496 +KEY= ffff000000000000000000000000000000000000000000000000000000000000 +CT= 937ad84880db50613423d6d527a2823d +TEST= 497 +KEY= fffe000000000000000000000000000000000000000000000000000000000000 +CT= 1a4c1c263bbccfafc11782894685e3a8 +TEST= 498 +KEY= fffc000000000000000000000000000000000000000000000000000000000000 +CT= 4dcede8da9e2578f39703d4433dc6459 +TEST= 499 +KEY= fff8000000000000000000000000000000000000000000000000000000000000 +CT= dc43b51ab609052372989a26e9cdd714 +TEST= 500 +KEY= fff0000000000000000000000000000000000000000000000000000000000000 +CT= cc111f6c37cf40a1159d00fb59fb0488 +TEST= 501 +KEY= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= d1ccb9b1337002cbac42c520b5d67722 +TEST= 502 +KEY= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= a3f599d63a82a968c33fe26590745970 +TEST= 503 +KEY= ff80000000000000000000000000000000000000000000000000000000000000 +CT= f23e5b600eb70dbccf6c0b1d9a68182c +TEST= 504 +KEY= ff00000000000000000000000000000000000000000000000000000000000000 +CT= ec52a212f80a09df6317021bc2a9819e +TEST= 505 +KEY= fe00000000000000000000000000000000000000000000000000000000000000 +CT= 60e32246bed2b0e859e55c1cc6b26502 +TEST= 506 +KEY= fc00000000000000000000000000000000000000000000000000000000000000 +CT= 8fbb413703735326310a269bd3aa94b2 +TEST= 507 +KEY= f800000000000000000000000000000000000000000000000000000000000000 +CT= 9cf4893ecafa0a0247a898e040691559 +TEST= 508 +KEY= f000000000000000000000000000000000000000000000000000000000000000 +CT= 1c777679d50037c79491a94da76a9a35 +TEST= 509 +KEY= e000000000000000000000000000000000000000000000000000000000000000 +CT= d8f3a72fc3cdf74dfaf6c3e6b97b2fa6 +TEST= 510 +KEY= c000000000000000000000000000000000000000000000000000000000000000 +CT= b29169cdcf2d83e838125a12ee6aa400 +TEST= 511 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= e35a6dcb19b201a01ebcfa8aa22b5759 diff --git a/flint/test/testvals/ecbnk64.txt b/flint/test/testvals/ecbnk64.txt new file mode 100644 index 0000000..d5bd823 --- /dev/null +++ b/flint/test/testvals/ecbnk64.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= a92732eb488d8bb98ecd8d95dc9c02e052f250ad369b3849 +TEST= 1 +KEY= 00000000000000000000000000000001 +CT= 20eca6a356f99b76695c4bb84af26f82e62f77d65d8f46bc +TEST= 2 +KEY= 00000000000000000000000000000003 +CT= dc00feb9c382fdd7299b92cd13695042c1ee3f908d6cb146 +TEST= 3 +KEY= 00000000000000000000000000000007 +CT= b3c2a6e73b3b0af82eafa45ee226bb4a62688da4b8b9162f +TEST= 4 +KEY= 0000000000000000000000000000000f +CT= 310b7c41fd4ac28edff33b33ad3908327c10ee90b7ec8585 +TEST= 5 +KEY= 0000000000000000000000000000001f +CT= 8d8536e21b0f1c600af6497d372685ef9b75a304b4c75b6d +TEST= 6 +KEY= 0000000000000000000000000000003f +CT= 17de5d16bb4150b66418ef5a5fb512e92ab5ca2aba8044eb +TEST= 7 +KEY= 0000000000000000000000000000007f +CT= b1a9a100c693f99486c0cbc1b342debd1cab2770150431a2 +TEST= 8 +KEY= 000000000000000000000000000000ff +CT= 8b4ba0e5f3444c953b0cbc53027895bc551a8b5f36c4cf00 +TEST= 9 +KEY= 000000000000000000000000000001ff +CT= 92160cf40208e6e750913e44a1a9e7a530472e89f4ed8106 +TEST= 10 +KEY= 000000000000000000000000000003ff +CT= 130d94fa5891b6ecd59d61528d039c02e71dc8eeff491815 +TEST= 11 +KEY= 000000000000000000000000000007ff +CT= 0b8aa1090f2e179bb348c4539461a4efdbaabd3df681fb7e +TEST= 12 +KEY= 00000000000000000000000000000fff +CT= 165615053db05ec38ceabd4321e4c48b2a8517f206b95c74 +TEST= 13 +KEY= 00000000000000000000000000001fff +CT= 8b679fc0df7ffcab25387da3dd09752b3c73afcdcdd4c076 +TEST= 14 +KEY= 00000000000000000000000000003fff +CT= 8559f45a6a67948ff89ea80c517ce18013a306e9571a4b8a +TEST= 15 +KEY= 00000000000000000000000000007fff +CT= 304abadea9207e4af1f58cd3bcaf65fe24f786d08e32f3f9 +TEST= 16 +KEY= 0000000000000000000000000000ffff +CT= dae99734c698164bf6ea7a8bee3b577b709985c221137ab5 +TEST= 17 +KEY= 0000000000000000000000000001ffff +CT= 940558afffe36dfd49b4c98f40039d48064e934b068af9a1 +TEST= 18 +KEY= 0000000000000000000000000003ffff +CT= da4d64bd70b41b392d791bc188722d62af2fb6b212904a96 +TEST= 19 +KEY= 0000000000000000000000000007ffff +CT= 0f9f2be5d34d00dff36234966324214365a11474fc7ac2f3 +TEST= 20 +KEY= 000000000000000000000000000fffff +CT= 41e3fdd8655c3c53ba7697595f5cf897bf0a110184cb9abb +TEST= 21 +KEY= 000000000000000000000000001fffff +CT= ac7e6e744a1f2781e90612c40167c470e24b7828c31e6dba +TEST= 22 +KEY= 000000000000000000000000003fffff +CT= 9e74183063173bf38bb664072715aa3ab279f886bfccc611 +TEST= 23 +KEY= 000000000000000000000000007fffff +CT= 776e48e22e9c96a8ca6b4e8cb379c6395406567c93546fe0 +TEST= 24 +KEY= 00000000000000000000000000ffffff +CT= d231ea77c8980492c89e72d036d23287f97b0499bd6b5c74 +TEST= 25 +KEY= 00000000000000000000000001ffffff +CT= 393722403a12337419e56fe28017f04c9b9b5c8e7a56b016 +TEST= 26 +KEY= 00000000000000000000000003ffffff +CT= dba816c62cfe12eecf0965d6182755b765fa225887b829ac +TEST= 27 +KEY= 00000000000000000000000007ffffff +CT= a16b8485197ce985944b6cc3d90d899651cf85cc19a2cff5 +TEST= 28 +KEY= 0000000000000000000000000fffffff +CT= 84d4d376436f6d7ea5a19ae72d805d663a7e9dad8a87e07c +TEST= 29 +KEY= 0000000000000000000000001fffffff +CT= b8379471c4c51f0f1d032d756db202c024fb504d088b083b +TEST= 30 +KEY= 0000000000000000000000003fffffff +CT= 277ebca0350025e575c7797766cc33e81c61da401247ece2 +TEST= 31 +KEY= 0000000000000000000000007fffffff +CT= 69b159a6c1ba63302b863e52f12f3723a084ac37b602dd65 +TEST= 32 +KEY= 000000000000000000000000ffffffff +CT= cf8cdde82cdb9770bf764f324d7f33fa0f15cb1f2e31fa0d +TEST= 33 +KEY= 000000000000000000000001ffffffff +CT= 3ef6e0bb3dcec738462ea53ab3a786ac67265569ad1d93e8 +TEST= 34 +KEY= 000000000000000000000003ffffffff +CT= 8e4fc0ad9a4c3cf3b041b0d4a32d011236487f1bf03d7ca9 +TEST= 35 +KEY= 000000000000000000000007ffffffff +CT= 4e8388576c753ac0cc252e55aaf1319f042e22f0b88dfe37 +TEST= 36 +KEY= 00000000000000000000000fffffffff +CT= 23e2d69d1e7fe1eb36c5fbcd2b4b1d4da73e89c74b4d806e +TEST= 37 +KEY= 00000000000000000000001fffffffff +CT= 1a855a7544d452163b0da7c0c0b62bfde5e290fdcb6e2d9d +TEST= 38 +KEY= 00000000000000000000003fffffffff +CT= 82fad3829380da4b518ab7564e22fd3a589a2e812fd0c06a +TEST= 39 +KEY= 00000000000000000000007fffffffff +CT= 93e58814138f4147d1bc1665c6a8259f67ad5740f32d7bae +TEST= 40 +KEY= 0000000000000000000000ffffffffff +CT= 9692e90cfb4d91c78bd6d92e0b1953090296abf6c3ade322 +TEST= 41 +KEY= 0000000000000000000001ffffffffff +CT= 058e7db5c04cc9209acde2db54d28db990117472c798fc8d +TEST= 42 +KEY= 0000000000000000000003ffffffffff +CT= e00977a47191e88ec1b8aae74f3e80c422d24f45d76246cb +TEST= 43 +KEY= 0000000000000000000007ffffffffff +CT= 8a0af7acfc9409bdfe78518fb1063f70a3cfb6f99a508e69 +TEST= 44 +KEY= 000000000000000000000fffffffffff +CT= 7ff70bb20e216992b5c18f75b59c22ac5cdba4f6446dec80 +TEST= 45 +KEY= 000000000000000000001fffffffffff +CT= 0410e584aef744a2298e2f3ec16f27faf7fff0ed9bfac7e0 +TEST= 46 +KEY= 000000000000000000003fffffffffff +CT= af43b48a834b7241b68840960fa453f7faef6243c6de0671 +TEST= 47 +KEY= 000000000000000000007fffffffffff +CT= 9eb83abc2c7cb913b66a16fc611ec95f40a3535ce99a6441 +TEST= 48 +KEY= 00000000000000000000ffffffffffff +CT= eeb3c60b6643a1688755941780c3eebcc22af00927ed4d96 +TEST= 49 +KEY= 00000000000000000001ffffffffffff +CT= 24b175778f5df24ca03e191477c703eb91b46653d6cb2778 +TEST= 50 +KEY= 00000000000000000003ffffffffffff +CT= 1bc725f94b79f157772365dc662bfbbf68ce4f3252421e9d +TEST= 51 +KEY= 00000000000000000007ffffffffffff +CT= f26f30910698aa8a88e05b217b1be73ce3ce2732aeb62f3a +TEST= 52 +KEY= 0000000000000000000fffffffffffff +CT= 4fdb70e6e9f623a731f574b8db51dd0aff9938e36bf176f8 +TEST= 53 +KEY= 0000000000000000001fffffffffffff +CT= 898cc34fd22b822bc22bf4b6ef31f117220b19e0810f95f1 +TEST= 54 +KEY= 0000000000000000003fffffffffffff +CT= ff85814830f1aa67eed2c032896d4acc0f602445cb414651 +TEST= 55 +KEY= 0000000000000000007fffffffffffff +CT= 47d567c6f59bf701c42863d2eb11d1aeb4fa3336b3c6b6f6 +TEST= 56 +KEY= 000000000000000000ffffffffffffff +CT= ccb16cf8e5da6d085f4c111fd540cbeea4cba7ed8142b961 +TEST= 57 +KEY= 000000000000000001ffffffffffffff +CT= 0a738bcf02c02a5db797f15ecabfb2d6693a8d7874a0d26a +TEST= 58 +KEY= 000000000000000003ffffffffffffff +CT= 48faa719a0f7b36ecdd339076af875ef6d4e9d4fa72b6d89 +TEST= 59 +KEY= 000000000000000007ffffffffffffff +CT= 64f8b22fc79dd932466b5cdb00e95c8453e48e7808e68d71 +TEST= 60 +KEY= 00000000000000000fffffffffffffff +CT= 8e5b29eca26bd9118c0eb8c1c58688805f0d276e4e012bb3 +TEST= 61 +KEY= 00000000000000001fffffffffffffff +CT= 9962779aeaa7e1d1e9637fbe53d2dab7e0892a47e5abe273 +TEST= 62 +KEY= 00000000000000003fffffffffffffff +CT= 5fd4c6923adae3800c95b431cc2f72b6852b6f5f88e4fee9 +TEST= 63 +KEY= 00000000000000007fffffffffffffff +CT= 25148041e9f15dd8ea35fe17dbc4a3291f7a2150dd3e614e +TEST= 64 +KEY= 0000000000000000ffffffffffffffff +CT= 21507af640b3a18963d4f4bf45c661a1ed01887972fdecf6 +TEST= 65 +KEY= 0000000000000001ffffffffffffffff +CT= b7219d3d8b8e3f312bef43d4fdae1977239e44c08781aa12 +TEST= 66 +KEY= 0000000000000003ffffffffffffffff +CT= 138f09e0fb9ba67d00fbe7ec65402db18946f4d837754cf8 +TEST= 67 +KEY= 0000000000000007ffffffffffffffff +CT= 10ee10cc10ccde036146ff50d7a06b97613e6426952e64b2 +TEST= 68 +KEY= 000000000000000fffffffffffffffff +CT= 966bf59f7fbb128404f603cd31a04fce30ffb38a7c5aed00 +TEST= 69 +KEY= 000000000000001fffffffffffffffff +CT= 53e88be53db3010ebd3eefaa59d600ad1d7ab829ae59a0d3 +TEST= 70 +KEY= 000000000000003fffffffffffffffff +CT= 318892e58417bf076a906015335ef1a11713f1c63b27e66f +TEST= 71 +KEY= 000000000000007fffffffffffffffff +CT= 7adcb886ceec3bce563e24b9bd2517a1c73f55a7973e5a4e +TEST= 72 +KEY= 00000000000000ffffffffffffffffff +CT= 6d8ae119534eeb96a074a33e9b1a2cdc7df12cb263008a62 +TEST= 73 +KEY= 00000000000001ffffffffffffffffff +CT= 618680f64970519cab525a917a49fc4750a4ad3a220d5959 +TEST= 74 +KEY= 00000000000003ffffffffffffffffff +CT= 0d30456605a9b3fd57a99d59cd92778417f3d35cbd06a240 +TEST= 75 +KEY= 00000000000007ffffffffffffffffff +CT= acf0c34347532ab7150fd36274d024c9998a5082f45a1222 +TEST= 76 +KEY= 0000000000000fffffffffffffffffff +CT= 6b5f8d2c6c4dc4b4e978d7cff5032a2b46502badd0927bac +TEST= 77 +KEY= 0000000000001fffffffffffffffffff +CT= 96b6eed5aaa60b043551695f771b41d7537f3f1566069e3b +TEST= 78 +KEY= 0000000000003fffffffffffffffffff +CT= c8617921144b141c445f43dc6a6fed2e068eadd057c50802 +TEST= 79 +KEY= 0000000000007fffffffffffffffffff +CT= 5523d4dedbb415930013e35d8b9b90658389d87c3887e0b4 +TEST= 80 +KEY= 000000000000ffffffffffffffffffff +CT= 4b34b75ba33db379b6c4574264589370c38a36aac64b4948 +TEST= 81 +KEY= 000000000001ffffffffffffffffffff +CT= 641fa900e6d96621727f74de17415133cc1de62ea2626690 +TEST= 82 +KEY= 000000000003ffffffffffffffffffff +CT= ed3207257ee8396e67c20ebf1003e5d043c6b371cc2d3621 +TEST= 83 +KEY= 000000000007ffffffffffffffffffff +CT= 0c98d936f448a002330be9836f4c3176e83f7aac4e33459e +TEST= 84 +KEY= 00000000000fffffffffffffffffffff +CT= 4f1cce376047c306f46ba5b13312e2aa45587d43b7bfb290 +TEST= 85 +KEY= 00000000001fffffffffffffffffffff +CT= dade70c2668ee1659207f022194224a78d669184934f45ef +TEST= 86 +KEY= 00000000003fffffffffffffffffffff +CT= e99e25cefa425879fe14d92c1968caa8ecbdbd09bd4fe671 +TEST= 87 +KEY= 00000000007fffffffffffffffffffff +CT= 51cf9d24ae4886e0ede7fa20e0a83457fd21468996ad1eea +TEST= 88 +KEY= 0000000000ffffffffffffffffffffff +CT= 7ef530a16bf4f13cf71df2a82662e900fd8c4f910533d89a +TEST= 89 +KEY= 0000000001ffffffffffffffffffffff +CT= c94b850b13b1e191e3fb7aff8951209085a300e31190ab2a +TEST= 90 +KEY= 0000000003ffffffffffffffffffffff +CT= 359f0c1bcc018f1cda1bfbfcc7f261762f7a5dfb5bf16978 +TEST= 91 +KEY= 0000000007ffffffffffffffffffffff +CT= 7db473fe8e7de6ffa467ca14ac41a5dc47b2f4515a56accd +TEST= 92 +KEY= 000000000fffffffffffffffffffffff +CT= 37d8c548334cecafcf21fe834441a00de9f7010e9331783d +TEST= 93 +KEY= 000000001fffffffffffffffffffffff +CT= f99a02b841727e8b7b135daa087ab461a083ba42b0eedb5a +TEST= 94 +KEY= 000000003fffffffffffffffffffffff +CT= afe7f4d07f571c5defe7a4490ab312e8761e78400d6f5bd1 +TEST= 95 +KEY= 000000007fffffffffffffffffffffff +CT= b09afab6c36dc06eb4533f6e17073675833f0939c6a72faa +TEST= 96 +KEY= 00000000ffffffffffffffffffffffff +CT= d8d2cce16952c75d968d4cefb166309b17f63ffe3fbfd932 +TEST= 97 +KEY= 00000001ffffffffffffffffffffffff +CT= 3ed5d5ce9acc6fafd0f97ba7a7714055dcc619e6c9b349db +TEST= 98 +KEY= 00000003ffffffffffffffffffffffff +CT= 3e90e6379222ecd2f70dd028f9cc74ec09693aa4e6cf7ea6 +TEST= 99 +KEY= 00000007ffffffffffffffffffffffff +CT= 4b51024db5bb30560ecaef09b84669a6d74ce878ea249aff +TEST= 100 +KEY= 0000000fffffffffffffffffffffffff +CT= f4b3d92aac7d6be46fb4fc8b79b97d5bb5592fd0ceccbb02 +TEST= 101 +KEY= 0000001fffffffffffffffffffffffff +CT= 6f6483ea8cbbdfe2c125c68a0a131a0654308cb94b4e335a +TEST= 102 +KEY= 0000003fffffffffffffffffffffffff +CT= 498a04dfdcbad715eecb0d4f83c6464aeeec0be50b0833fd +TEST= 103 +KEY= 0000007fffffffffffffffffffffffff +CT= 4160f82207d28af850fc2da13152b8795b91324baf27734e +TEST= 104 +KEY= 000000ffffffffffffffffffffffffff +CT= 8bc3d3684b4db73df96c09382e546ac11ea1b868f80bf0bc +TEST= 105 +KEY= 000001ffffffffffffffffffffffffff +CT= 54e96867a82744cd047430866610a836a1964e57a763a444 +TEST= 106 +KEY= 000003ffffffffffffffffffffffffff +CT= 773c83756e283f7f69ebaef6864e34feb8024c5fecda0aa3 +TEST= 107 +KEY= 000007ffffffffffffffffffffffffff +CT= 552dc2e2a8e95b63dfe296a9f90e3b99e4bb3c160c7f3bd7 +TEST= 108 +KEY= 00000fffffffffffffffffffffffffff +CT= 310f4672aeda897d9b53534462b7bfc49f063a6c5f5fc342 +TEST= 109 +KEY= 00001fffffffffffffffffffffffffff +CT= c1b68906fe5aefde545510cf9979643c80173365590c75a9 +TEST= 110 +KEY= 00003fffffffffffffffffffffffffff +CT= 3c489e53f4dc45068d6bad7ec8b1cac18cae741f8738caee +TEST= 111 +KEY= 00007fffffffffffffffffffffffffff +CT= b19a0caee7876475ee7cb55c945eaeb5b26fe5713d205e5f +TEST= 112 +KEY= 0000ffffffffffffffffffffffffffff +CT= cad3125369ce93d1340b82503631c7f22b9a9937604eb46b +TEST= 113 +KEY= 0001ffffffffffffffffffffffffffff +CT= 6ca715e54ca78caeef53c43b080a03a189f3c692832a1b00 +TEST= 114 +KEY= 0003ffffffffffffffffffffffffffff +CT= 79f0473c790d8b4f971aa7f86e3d0a3853f123ab338f7e0f +TEST= 115 +KEY= 0007ffffffffffffffffffffffffffff +CT= b6e75f901669adc2020046a0b8df5ea2f6514d7607699673 +TEST= 116 +KEY= 000fffffffffffffffffffffffffffff +CT= ffa3c00cab93119ffa0220855ccb2aea5276a4f4709a0ae4 +TEST= 117 +KEY= 001fffffffffffffffffffffffffffff +CT= 36bb98c2dbecfa9dc40541c634841390c15ecac56d876f8e +TEST= 118 +KEY= 003fffffffffffffffffffffffffffff +CT= 692273aa6eb9fb36cf219f6e441a484175516604d75a4516 +TEST= 119 +KEY= 007fffffffffffffffffffffffffffff +CT= ebb664b7003eb59b567104f85b756a939784b6e5b931e581 +TEST= 120 +KEY= 00ffffffffffffffffffffffffffffff +CT= d80266a3c7bf072fb469ab66e063bd651d2db1300d4e45d3 +TEST= 121 +KEY= 01ffffffffffffffffffffffffffffff +CT= 37f5d441be40747a4e29555283cc4fcd4ca4e2e5beafeff7 +TEST= 122 +KEY= 03ffffffffffffffffffffffffffffff +CT= b0a0f335a60422b18173e05223903af6fa4549e69ab87bfe +TEST= 123 +KEY= 07ffffffffffffffffffffffffffffff +CT= 87b95b6f05d5968a02835dfddc42a52f5b641f691dbd28f7 +TEST= 124 +KEY= 0fffffffffffffffffffffffffffffff +CT= 4770b30102d0cd89a406b2f6dd9a69e2e0a7814a6c572515 +TEST= 125 +KEY= 1fffffffffffffffffffffffffffffff +CT= 5e98d4ef86b72936731a6c1f8d4ebc4edd6d92672a0c951c +TEST= 126 +KEY= 3fffffffffffffffffffffffffffffff +CT= 9c9436e234232c34d40136c2df6109b01cbe3749f482b8fc +TEST= 127 +KEY= 7fffffffffffffffffffffffffffffff +CT= eebb091295933d4b8867ff9e249c9d32aa9768f232633fa0 +TEST= 128 +KEY= ffffffffffffffffffffffffffffffff +CT= 3ab707b95cf503c8ffc8d207be21351b8c9b594bba7cf820 +TEST= 129 +KEY= fffffffffffffffffffffffffffffffe +CT= d8faf7f570d67bab0ac0eb121a3e5c462cd62273052747bc +TEST= 130 +KEY= fffffffffffffffffffffffffffffffc +CT= ab34b23e3e37c826dc771f0d122e8e62cc51fc4c92b35109 +TEST= 131 +KEY= fffffffffffffffffffffffffffffff8 +CT= 4a931dc179d9e412b7d4b179e0df31475cf467dee32312d5 +TEST= 132 +KEY= fffffffffffffffffffffffffffffff0 +CT= addf22bc811404201efa926eb82a60247ffff6e16607ca57 +TEST= 133 +KEY= ffffffffffffffffffffffffffffffe0 +CT= 3d3b2ba6eb6550a904d4293970099cf5569a95356bb00d0e +TEST= 134 +KEY= ffffffffffffffffffffffffffffffc0 +CT= 911f6547d76cfe548e390015ceb6ca800c83163b68437e51 +TEST= 135 +KEY= ffffffffffffffffffffffffffffff80 +CT= 253a44430a1a6d674f434cf89dd073406c9d5f25e4f3e39a +TEST= 136 +KEY= ffffffffffffffffffffffffffffff00 +CT= b9512bf66f01cd8e73b9bc1533365960c23c474f19a321ae +TEST= 137 +KEY= fffffffffffffffffffffffffffffe00 +CT= 78c9ba889a8f27429e452230df9757cfca6556eee3a4dd95 +TEST= 138 +KEY= fffffffffffffffffffffffffffffc00 +CT= 4bec5b8183e9208b9f3b23c575d0f162f52ae69ba014365d +TEST= 139 +KEY= fffffffffffffffffffffffffffff800 +CT= 91dc9a43267c79fc21ede30e2b8e3a38748b1de052de01ca +TEST= 140 +KEY= fffffffffffffffffffffffffffff000 +CT= 92bb92cd41c97731007f07246244ee4d6e97f551b00c5260 +TEST= 141 +KEY= ffffffffffffffffffffffffffffe000 +CT= 811ebc5fda3d3c293fa5bd4b8b9c42da650a307f9f566dee +TEST= 142 +KEY= ffffffffffffffffffffffffffffc000 +CT= 2be9e2675d1789891879a799c0f40e5b72d175149905e01a +TEST= 143 +KEY= ffffffffffffffffffffffffffff8000 +CT= 9d1d5147abc38410e53af95ad113965aeba292d30d458a79 +TEST= 144 +KEY= ffffffffffffffffffffffffffff0000 +CT= 7286d68e10f484d338ba8827e05d760ab1b1f5b11f1bbb63 +TEST= 145 +KEY= fffffffffffffffffffffffffffe0000 +CT= 4f2ec4fa2537af9baa7b7e055e169eda5b85797be7d88fa0 +TEST= 146 +KEY= fffffffffffffffffffffffffffc0000 +CT= f93de15f7071d02fcc40ed6034383d2062794638f26632e3 +TEST= 147 +KEY= fffffffffffffffffffffffffff80000 +CT= cf5ea608612d4d39e2646524e1b97e69728195bd5306973d +TEST= 148 +KEY= fffffffffffffffffffffffffff00000 +CT= 30086d0a72cce8b0e679e1ddb1b0986aa4e14c72c92a16f6 +TEST= 149 +KEY= ffffffffffffffffffffffffffe00000 +CT= 55690e17d5161ddf5e8c08d2f27dd18ffa296b3e8ada91a3 +TEST= 150 +KEY= ffffffffffffffffffffffffffc00000 +CT= a0690b7acfec9055e6f58c53ed04056d9853493ca8e744ef +TEST= 151 +KEY= ffffffffffffffffffffffffff800000 +CT= 88e811f4a2b7a1d1cbf2c06a36cb7a6874488d72d587e4d7 +TEST= 152 +KEY= ffffffffffffffffffffffffff000000 +CT= 0a0566ac902230592183430a9de356596eef144b0586b479 +TEST= 153 +KEY= fffffffffffffffffffffffffe000000 +CT= e9b361af14a5c1b00ef0032149ee5883b18f7119645b7aa9 +TEST= 154 +KEY= fffffffffffffffffffffffffc000000 +CT= 86a95f5fb7d4d3a1af5a44eb527e41430f73bb39da21e631 +TEST= 155 +KEY= fffffffffffffffffffffffff8000000 +CT= cd8fbb5581808fa89133702d3e3a1684ea27a9220a989719 +TEST= 156 +KEY= fffffffffffffffffffffffff0000000 +CT= b5111dee102d5f2d03cf1d27fec6c3a76edd18b7dd063a05 +TEST= 157 +KEY= ffffffffffffffffffffffffe0000000 +CT= bb6918923c5cf1224408e809254970061d770a54b5276d0c +TEST= 158 +KEY= ffffffffffffffffffffffffc0000000 +CT= 0735f4dcad0f6a9bdd5ac3adb7b5665d4d69c1bcf92ea55b +TEST= 159 +KEY= ffffffffffffffffffffffff80000000 +CT= 9a0e954aaf8b3167fc35a60961865f9d354e8e9bde8ad7fa +TEST= 160 +KEY= ffffffffffffffffffffffff00000000 +CT= 3f35d68321231db7fcf35fc6f6162d608425243497b18734 +TEST= 161 +KEY= fffffffffffffffffffffffe00000000 +CT= 2cbb2802f8c0ce844b77606b13382bc23f69666263313f7c +TEST= 162 +KEY= fffffffffffffffffffffffc00000000 +CT= 3a86d05ea5ea132a5650152ab062a89266fe17fb344d748f +TEST= 163 +KEY= fffffffffffffffffffffff800000000 +CT= 8c860b07b4370d66c3f6b03a32ff3df3c68209470918c934 +TEST= 164 +KEY= fffffffffffffffffffffff000000000 +CT= 279da2b9522b8704b01ee2c92fe5c55400fb0afd91285935 +TEST= 165 +KEY= ffffffffffffffffffffffe000000000 +CT= 378222f18e8fa8007cc92da547d81bd4e7491aec3a93dff4 +TEST= 166 +KEY= ffffffffffffffffffffffc000000000 +CT= 50360f7a07d4f8df5e50aeccc4958bde083ba2a8563bd71c +TEST= 167 +KEY= ffffffffffffffffffffff8000000000 +CT= d0e7d4d6c19f34ee82dae5a6b610df41e92c727dba50a320 +TEST= 168 +KEY= ffffffffffffffffffffff0000000000 +CT= ebd694fd119d51bd7c2ab0159194777a815bed63ae8a6d1d +TEST= 169 +KEY= fffffffffffffffffffffe0000000000 +CT= 3f809c38963573d4a094b001de4e247020093edcbb67434a +TEST= 170 +KEY= fffffffffffffffffffffc0000000000 +CT= 6ba4aa8e068b4d0c354ed48e23dd9dc44a7298281bdeaed8 +TEST= 171 +KEY= fffffffffffffffffffff80000000000 +CT= 79f33aacc69ff0c49ebe37621f03014319a9dba462a9ad23 +TEST= 172 +KEY= fffffffffffffffffffff00000000000 +CT= 6ea7aa2bc5e40b25972961828b03e8a858e244bdc2ecde56 +TEST= 173 +KEY= ffffffffffffffffffffe00000000000 +CT= 2024d970b90cd760f9f99425dbf72171aa3eb3f11187ba15 +TEST= 174 +KEY= ffffffffffffffffffffc00000000000 +CT= 68fb99ba756b69e7974189afef42a207efe8cdd645544487 +TEST= 175 +KEY= ffffffffffffffffffff800000000000 +CT= 0481142f6a412040378f947b0f66db2ab1e13684bc4d70e5 +TEST= 176 +KEY= ffffffffffffffffffff000000000000 +CT= 7cf0a16ce53d89802e1f03af6eb54428e6fab9f11ea91f0b +TEST= 177 +KEY= fffffffffffffffffffe000000000000 +CT= 66631adea2551ed158d8211c4748b945ddd6740c2a98b033 +TEST= 178 +KEY= fffffffffffffffffffc000000000000 +CT= 9185ccdb447a1ce156f01961b870bcc49529bdf33b83cae7 +TEST= 179 +KEY= fffffffffffffffffff8000000000000 +CT= db69be387bf8597f8a30a61135d37a8193ebda77ad06e9fc +TEST= 180 +KEY= fffffffffffffffffff0000000000000 +CT= da73729635341a16202f41c516a2da654a533d4153f40b44 +TEST= 181 +KEY= ffffffffffffffffffe0000000000000 +CT= 2afb1197e6fe43153c8fd6dc9826ba5e1939bd3404440bd2 +TEST= 182 +KEY= ffffffffffffffffffc0000000000000 +CT= dbf78180e2729cd26b73f1bc433d319cebf4949f101d9b51 +TEST= 183 +KEY= ffffffffffffffffff80000000000000 +CT= 1a0a28763652860a1327fbc844ea2e58a8d2db5470617530 +TEST= 184 +KEY= ffffffffffffffffff00000000000000 +CT= 7db0dc1d2ebe8e846775784e2e1d1a3ab7b5c993623568d8 +TEST= 185 +KEY= fffffffffffffffffe00000000000000 +CT= d01e28ede95b0d7fdc2b6201f17cc9188943c4ec639c46fd +TEST= 186 +KEY= fffffffffffffffffc00000000000000 +CT= ccc7f801793294c54ffb21dae06edf5becaa5132a0eca1e3 +TEST= 187 +KEY= fffffffffffffffff800000000000000 +CT= 9add83f84a84ed6130f75cef0bbd78f40ce28b2d9355668d +TEST= 188 +KEY= fffffffffffffffff000000000000000 +CT= 0f6549e7b2cc9925209f596d1228a0d7cca7d6c570805696 +TEST= 189 +KEY= ffffffffffffffffe000000000000000 +CT= 46db172eb05c6aeb4f705dddb4c6ccb7fdbf0f7964c94711 +TEST= 190 +KEY= ffffffffffffffffc000000000000000 +CT= be993a897182b5f723f17602c98e2fde1c5712c76b9af98f +TEST= 191 +KEY= ffffffffffffffff8000000000000000 +CT= efcafba1f6cc26730755f5f6586d1e8f005b6ecc736ed44a +TEST= 192 +KEY= ffffffffffffffff0000000000000000 +CT= f5103b6926c254339aafcffc4276f3d51c465436f327dade +TEST= 193 +KEY= fffffffffffffffe0000000000000000 +CT= 275cf0c69b22fbbd63aca747d31508ada970771bd0dcb9ac +TEST= 194 +KEY= fffffffffffffffc0000000000000000 +CT= b3642a57e061a9d5149e358c0c635d9a4e5b7580965b0aac +TEST= 195 +KEY= fffffffffffffff80000000000000000 +CT= 7d8e805d8038c48dce85194111bf2149b27ae9acb8fe2820 +TEST= 196 +KEY= fffffffffffffff00000000000000000 +CT= f45f337bd04b48201b586c5695ce438115ae5b4981584f2e +TEST= 197 +KEY= ffffffffffffffe00000000000000000 +CT= 7a404a9e401395138d41484b6e11c995160b5e79230856d6 +TEST= 198 +KEY= ffffffffffffffc00000000000000000 +CT= 8081062e0f881f58207c41f9df882f5ce8ab2520b500831e +TEST= 199 +KEY= ffffffffffffff800000000000000000 +CT= 5eaf8a8c51c6a362c009e99519bf31cd2feca22e61e87ee9 +TEST= 200 +KEY= ffffffffffffff000000000000000000 +CT= 80d07d27758a74b83e4b035f528058beb69ae4539e943c94 +TEST= 201 +KEY= fffffffffffffe000000000000000000 +CT= a3ed9c11d871f1b1180a9cd201f063c9023c293acb0f99f2 +TEST= 202 +KEY= fffffffffffffc000000000000000000 +CT= 4febb925efe623531f7c4be780e81ba0c943e2ef46e25229 +TEST= 203 +KEY= fffffffffffff8000000000000000000 +CT= fbc652de301d8e42f285ef59713bee00b50d0b01164c3bd1 +TEST= 204 +KEY= fffffffffffff0000000000000000000 +CT= a8f3f21eb271de713978de76f200e7a06afc2bd671ffa0e4 +TEST= 205 +KEY= ffffffffffffe0000000000000000000 +CT= 9b5d7b062b02a0456e4436b2834e4203ed98688b80a9be22 +TEST= 206 +KEY= ffffffffffffc0000000000000000000 +CT= 886d2c03741a786661c0bacc52e4b3b318e4b48349112a35 +TEST= 207 +KEY= ffffffffffff80000000000000000000 +CT= 029d83dabb2cf73ee7fa9317e281db678b2dd81570a7cf7f +TEST= 208 +KEY= ffffffffffff00000000000000000000 +CT= f3ebb653ab965876bfa489763f9a48e3adba9803ec8073d4 +TEST= 209 +KEY= fffffffffffe00000000000000000000 +CT= 0450b52e4c8f41faa71ff5ea3f0083d208da304410da3020 +TEST= 210 +KEY= fffffffffffc00000000000000000000 +CT= 5d5bd5730a18780579e69966b62b738238f0ab577d6b9791 +TEST= 211 +KEY= fffffffffff800000000000000000000 +CT= 4bae060e34fe22db6c2c8f9cba0dc921b8becd265fbe3bdf +TEST= 212 +KEY= fffffffffff000000000000000000000 +CT= 00b49f6cd75ba193e90c8d17186bea1719adb07e73ec9d03 +TEST= 213 +KEY= ffffffffffe000000000000000000000 +CT= 7ad1173b14fe59a38d0f324b760ce52daa9b211346c4016d +TEST= 214 +KEY= ffffffffffc000000000000000000000 +CT= 4e7d9328a9962e0bf24443b9cc83fa2151e9f048eb46c26c +TEST= 215 +KEY= ffffffffff8000000000000000000000 +CT= 6f741658e0ce2fc28c75952bab4da21624cbde912b508dba +TEST= 216 +KEY= ffffffffff0000000000000000000000 +CT= f177abec782cb611832b8e032ee2fb3a5752320a982edafa +TEST= 217 +KEY= fffffffffe0000000000000000000000 +CT= 366aa17b7551816954ec4c8e8f3377ccfa054e0dd971bacb +TEST= 218 +KEY= fffffffffc0000000000000000000000 +CT= 0e3582862b0e01ec825d20f8fb19ec0706f063c8378bec41 +TEST= 219 +KEY= fffffffff80000000000000000000000 +CT= 35f3a9a8aed6dcb253dfa0f97a8edde3157388f96141366a +TEST= 220 +KEY= fffffffff00000000000000000000000 +CT= 305fad8ad02f84b7cf72be9ba0f0a87a91e2ee0c2a1db835 +TEST= 221 +KEY= ffffffffe00000000000000000000000 +CT= c2c2e98ed9166c555449c837959c6cdd3da6f02faca28cf6 +TEST= 222 +KEY= ffffffffc00000000000000000000000 +CT= 71c33975ed920bc7df112cacd529dfc4a0c5dbd4ab0ed275 +TEST= 223 +KEY= ffffffff800000000000000000000000 +CT= 18997c7bac0064e1a30222c434eaed2b83fe780884015704 +TEST= 224 +KEY= ffffffff000000000000000000000000 +CT= 27ea917b6fd63487a459df747eb3efbbe6d388c638f3ef2e +TEST= 225 +KEY= fffffffe000000000000000000000000 +CT= c992b70bce66f97c0e60577c47f637a9826bb64fcdf1ef76 +TEST= 226 +KEY= fffffffc000000000000000000000000 +CT= 602378d5f0a84ac57813257d3b8a2cb8cc77275a0242a2f6 +TEST= 227 +KEY= fffffff8000000000000000000000000 +CT= b0991ff7fbd1fd891fe08c24e9aea029181a76bc363d2c1b +TEST= 228 +KEY= fffffff0000000000000000000000000 +CT= d6faca8cbe31e3ffa0b41196d18fb1a9a2da5b60c52ff25d +TEST= 229 +KEY= ffffffe0000000000000000000000000 +CT= 365d890c7694a611e9df33e40b2ae81b4cc1f81217b21125 +TEST= 230 +KEY= ffffffc0000000000000000000000000 +CT= 3510349b1687c8bc5b59a9cbc3a3f790a674ed91e074dc79 +TEST= 231 +KEY= ffffff80000000000000000000000000 +CT= 97b8fa7457ea1171674b5e6e213dc335a44540397735d360 +TEST= 232 +KEY= ffffff00000000000000000000000000 +CT= 1fad9a5798ef4abd6ee305279eed4b49fb3ff4245c9ef014 +TEST= 233 +KEY= fffffe00000000000000000000000000 +CT= a3efcf9a34f75e285b961242f2609a15d7e4e3c4df887a68 +TEST= 234 +KEY= fffffc00000000000000000000000000 +CT= 7811b6a63d39342a8dd4c325645f4f0e72cfa9408d44b9c1 +TEST= 235 +KEY= fffff800000000000000000000000000 +CT= 8fa0951fd44fe6df6ec7c6d1d197cb93f4e3e2c8e9ae43c8 +TEST= 236 +KEY= fffff000000000000000000000000000 +CT= e910de29907a3663bd0023af45c1cb91da605d460bdeffce +TEST= 237 +KEY= ffffe000000000000000000000000000 +CT= 6545b7af3e57c21447edcf47c3e46bb02b3310b7b639884f +TEST= 238 +KEY= ffffc000000000000000000000000000 +CT= 189e1d819355b841e37b36426fbf52b47ba879ac41891894 +TEST= 239 +KEY= ffff8000000000000000000000000000 +CT= c38e7b28988b685c8649852274e6e30ba527394f505382a2 +TEST= 240 +KEY= ffff0000000000000000000000000000 +CT= 3c17d20442920f54136cef02d5abb957358d984411db01df +TEST= 241 +KEY= fffe0000000000000000000000000000 +CT= cfba5ab91f6d3bac0af6fe02cdc8fcbcb8427efbc383f7d7 +TEST= 242 +KEY= fffc0000000000000000000000000000 +CT= ac656ef1348ff0e4832ff41da7ea1564f71215f2cf4c03da +TEST= 243 +KEY= fff80000000000000000000000000000 +CT= 4b17715bfc66128574b9282fbfc7d12ddb358a2911c1489b +TEST= 244 +KEY= fff00000000000000000000000000000 +CT= e84193ad2546f54cb1c23a6ea44ea8425eef514f714bbe18 +TEST= 245 +KEY= ffe00000000000000000000000000000 +CT= fe71853f4a0d3b74fc5462385b224e6bfa6a429fe7d00c2e +TEST= 246 +KEY= ffc00000000000000000000000000000 +CT= 5f6b24a81c7b9eafdc32fd95ae66063b74d16eebb4757d03 +TEST= 247 +KEY= ff800000000000000000000000000000 +CT= 6deb9c8f7f1d7a73486ccabcbc8954ed2c8919492e69128e +TEST= 248 +KEY= ff000000000000000000000000000000 +CT= 63c510b6e321abc1cba43ed542408fc627da293b3fbc7ec4 +TEST= 249 +KEY= fe000000000000000000000000000000 +CT= 593fb6db12edfb1be39dbeeecb426b7758d1432c3dc8d727 +TEST= 250 +KEY= fc000000000000000000000000000000 +CT= 08a1376552479db1b32422a033ceb68ddc1e6b51708ef1dd +TEST= 251 +KEY= f8000000000000000000000000000000 +CT= 00e7b8a837558de1e11b16d00c22c05d98cf639563273bb2 +TEST= 252 +KEY= f0000000000000000000000000000000 +CT= 8dbb24216dd1952e4c25b05f0ca65fd0938450e850ae5f56 +TEST= 253 +KEY= e0000000000000000000000000000000 +CT= 85dc5b1998cfe4f3a389cdc93ef684c448389a98b9bf9fdf +TEST= 254 +KEY= c0000000000000000000000000000000 +CT= 43df25d9558e6f94a9a9489ff8ff3125173e9ecd632fd2a2 +TEST= 255 +KEY= 80000000000000000000000000000000 +CT= 06a2d21e6032777963cb2d66cd92179c32f92923e54f32b0 diff --git a/flint/test/testvals/ecbnk66.txt b/flint/test/testvals/ecbnk66.txt new file mode 100644 index 0000000..ece9faf --- /dev/null +++ b/flint/test/testvals/ecbnk66.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= c6348be20007bac4a8bd62890c8147a2432e760e9a9f9ab8 +TEST= 1 +KEY= 000000000000000000000000000000000000000000000001 +CT= 65910384efb6cfc6c0d3a7780ca0527c130db79261a2ff4b +TEST= 2 +KEY= 000000000000000000000000000000000000000000000003 +CT= 505040c7fc75a8d26d5aa39d040b44431b794e066660b2b4 +TEST= 3 +KEY= 000000000000000000000000000000000000000000000007 +CT= 41f2f75664ecc291a55a91cffe854706e34b4506038255f6 +TEST= 4 +KEY= 00000000000000000000000000000000000000000000000f +CT= 9de9827a8e73af26fec7b46f8ee82f4ba14dde307ac3c738 +TEST= 5 +KEY= 00000000000000000000000000000000000000000000001f +CT= 2c7aa45c3a1410bc6b029534d25972022c2fabb17ae34068 +TEST= 6 +KEY= 00000000000000000000000000000000000000000000003f +CT= 67598909be98e7c70de0e687d1a8c66aef5e0d3862f8192a +TEST= 7 +KEY= 00000000000000000000000000000000000000000000007f +CT= 3cbcb1f6fe485b997f373b68ad6f7488382c2ff0f9c28330 +TEST= 8 +KEY= 0000000000000000000000000000000000000000000000ff +CT= 6c2a105265eb155e81431886f2deb45e26575b4fc45256b0 +TEST= 9 +KEY= 0000000000000000000000000000000000000000000001ff +CT= 82c1be30fb9694345bc7ed147a32b6cac097e2b0c6205f27 +TEST= 10 +KEY= 0000000000000000000000000000000000000000000003ff +CT= cc8035fb88ee9ecd646ba8a1c0b98a6c30642611cd5ec1be +TEST= 11 +KEY= 0000000000000000000000000000000000000000000007ff +CT= eabbe4d3b8bad08015e303116501c4f420728219311a384e +TEST= 12 +KEY= 000000000000000000000000000000000000000000000fff +CT= b79d67a4a73229b579803dfeb4d883c0aa125120a4f8325a +TEST= 13 +KEY= 000000000000000000000000000000000000000000001fff +CT= cb9d3d323cdca7abcf4ba80a4f8f5c630fd212acafc013de +TEST= 14 +KEY= 000000000000000000000000000000000000000000003fff +CT= d5b65aaa3b14fd891f50631626e3863c7ba5d5674602d142 +TEST= 15 +KEY= 000000000000000000000000000000000000000000007fff +CT= 19d2d25d909fc88c316c45f63b29473956695f965ec688b4 +TEST= 16 +KEY= 00000000000000000000000000000000000000000000ffff +CT= 3ab14f5613481e7359572757063c8c7e13fc04bde2eb7778 +TEST= 17 +KEY= 00000000000000000000000000000000000000000001ffff +CT= 4d8ce1985bd105e308fc8344e4a0d0761aa39d20ba2d4019 +TEST= 18 +KEY= 00000000000000000000000000000000000000000003ffff +CT= 32f26ff053ffad0b41aabe62c01f15205ad9bec522c2b2a9 +TEST= 19 +KEY= 00000000000000000000000000000000000000000007ffff +CT= ae64e3b32cc772967724507b9132454e68f1838378664bad +TEST= 20 +KEY= 0000000000000000000000000000000000000000000fffff +CT= 26794003385281e196a18ea2060df99e4e6880c9c66f1b62 +TEST= 21 +KEY= 0000000000000000000000000000000000000000001fffff +CT= 687d441b85e20dd3cf5872f2630e6026ba864d635bc7fd92 +TEST= 22 +KEY= 0000000000000000000000000000000000000000003fffff +CT= 23d02d139cb30ff30c99b8ecc146124344d87e0ccbcff547 +TEST= 23 +KEY= 0000000000000000000000000000000000000000007fffff +CT= 6db20064fdca72d0428792c693e9f3f070b54b17e738153c +TEST= 24 +KEY= 000000000000000000000000000000000000000000ffffff +CT= ecc1bafd13dcdb5f7ae6d0b90ac2ee6c55bbaec037f58933 +TEST= 25 +KEY= 000000000000000000000000000000000000000001ffffff +CT= 85d52a39b73fbaa1356221d444328bba670f73a8c1011d75 +TEST= 26 +KEY= 000000000000000000000000000000000000000003ffffff +CT= 412f431a32e109eff69dc5d21b3eb5831079996a7c92d524 +TEST= 27 +KEY= 000000000000000000000000000000000000000007ffffff +CT= a53a9b8141ee54ed1935847abbef713decae40d20f693f7c +TEST= 28 +KEY= 00000000000000000000000000000000000000000fffffff +CT= 939aa2e90a7ccc97ca856474089930dc922e74a4f5d93e32 +TEST= 29 +KEY= 00000000000000000000000000000000000000001fffffff +CT= b40a2bf281ef3c69c318add30975f3658def8619525acb3e +TEST= 30 +KEY= 00000000000000000000000000000000000000003fffffff +CT= 6a76f651217a5708f97de03f054178f5290cc83061ef175d +TEST= 31 +KEY= 00000000000000000000000000000000000000007fffffff +CT= efdff4fa9be701f6d4b323bd35bb88c8db952adac020c84d +TEST= 32 +KEY= 0000000000000000000000000000000000000000ffffffff +CT= 41bd7e44b1fd35232d94fc6871e985cd1f6a6f9312f2d33b +TEST= 33 +KEY= 0000000000000000000000000000000000000001ffffffff +CT= 20a36c86359bed598e1136c255a12014d1762145311210c4 +TEST= 34 +KEY= 0000000000000000000000000000000000000003ffffffff +CT= 3ce4b89f9a6baeac1c3c1cbc6901e6124fc08de1228e0b4d +TEST= 35 +KEY= 0000000000000000000000000000000000000007ffffffff +CT= a7d4c59c946fe5085b42defb0d484ca9298ae163c550751c +TEST= 36 +KEY= 000000000000000000000000000000000000000fffffffff +CT= 4a36414878a168dba9410fb04d7563aa26d57bb8260e3553 +TEST= 37 +KEY= 000000000000000000000000000000000000001fffffffff +CT= 9d12b4d5674d73932b26d831aa823bd413a009fcc7daed59 +TEST= 38 +KEY= 000000000000000000000000000000000000003fffffffff +CT= 97f829785ab27647304e025fc3dcad1a02840d2cdc959fc3 +TEST= 39 +KEY= 000000000000000000000000000000000000007fffffffff +CT= c35dc41f91caf8a2c2133354b81da43596189cf426fca138 +TEST= 40 +KEY= 00000000000000000000000000000000000000ffffffffff +CT= 8249e04fa558d14322aa6df66fe338939a259a2a6857cf4f +TEST= 41 +KEY= 00000000000000000000000000000000000001ffffffffff +CT= 36e42181f6e548941855a9fc34889cf32017ce320386e6a2 +TEST= 42 +KEY= 00000000000000000000000000000000000003ffffffffff +CT= b153467c4db863c56e6c886286e84b8dac98131769e4ec3e +TEST= 43 +KEY= 00000000000000000000000000000000000007ffffffffff +CT= 6dd8eafae742f244bf48d3dde63dc17d6a6bb4976ada2007 +TEST= 44 +KEY= 0000000000000000000000000000000000000fffffffffff +CT= e5c03c651d149496857bb622200f36000fcb963ac7b231a9 +TEST= 45 +KEY= 0000000000000000000000000000000000001fffffffffff +CT= df57119e1822a01fe31a2ee88999c3d5a09778330ec6ce0f +TEST= 46 +KEY= 0000000000000000000000000000000000003fffffffffff +CT= d52aeb8dd33fc6c16b5218e47138597e93e38b731bd04b69 +TEST= 47 +KEY= 0000000000000000000000000000000000007fffffffffff +CT= 5bd2c57c175b3f959e83fde531ddd7caa1e709af98cee54a +TEST= 48 +KEY= 000000000000000000000000000000000000ffffffffffff +CT= b957f37c3b15917eeab24bbe54405709bd355e0cc1f3e223 +TEST= 49 +KEY= 000000000000000000000000000000000001ffffffffffff +CT= c665b67b7bfb5997d763c81b934cae675e6c968567c2f497 +TEST= 50 +KEY= 000000000000000000000000000000000003ffffffffffff +CT= 01133755b69602d7665ee866589b955a059194e5328e2160 +TEST= 51 +KEY= 000000000000000000000000000000000007ffffffffffff +CT= dcbde8653c2faf3206872de6db440e58cfc2a325a59dbb81 +TEST= 52 +KEY= 00000000000000000000000000000000000fffffffffffff +CT= eb13381f89c6fb674d0e490b62bd5d17357313bc78ac5c05 +TEST= 53 +KEY= 00000000000000000000000000000000001fffffffffffff +CT= 207df0ef5e758e9129bbc3621400f88c4c94f87ecda6b9f9 +TEST= 54 +KEY= 00000000000000000000000000000000003fffffffffffff +CT= fa0a26a03f0b1363bb2298e9ab70f0a663ec7774be72a4f9 +TEST= 55 +KEY= 00000000000000000000000000000000007fffffffffffff +CT= d65e57140723ea005e870382f3d638b9aff988a88273805a +TEST= 56 +KEY= 0000000000000000000000000000000000ffffffffffffff +CT= b6fae83414d0bce12a03e48dc2575c1dae194fc19e04b2a6 +TEST= 57 +KEY= 0000000000000000000000000000000001ffffffffffffff +CT= 2e3679b24a38087a58fe0239cb3136228d80eee2aaad40de +TEST= 58 +KEY= 0000000000000000000000000000000003ffffffffffffff +CT= a748db74be84ccff06e85ff7ba3aa88be7ba79dc280f9dd2 +TEST= 59 +KEY= 0000000000000000000000000000000007ffffffffffffff +CT= 664e5722452b8f561251d522596ccca38434b341fb82d7d2 +TEST= 60 +KEY= 000000000000000000000000000000000fffffffffffffff +CT= 34b0b85d3af58b0544443e6ae3413566b7a6efa5645d0a35 +TEST= 61 +KEY= 000000000000000000000000000000001fffffffffffffff +CT= ca910a5a492a566b9aa7e19d1d3077404c5223d9fb49f561 +TEST= 62 +KEY= 000000000000000000000000000000003fffffffffffffff +CT= e291ce4268c2be33156bcdb57695dace156e83501ef2f551 +TEST= 63 +KEY= 000000000000000000000000000000007fffffffffffffff +CT= e53c42c581654f21185491cbdae930c8011024c181837f1e +TEST= 64 +KEY= 00000000000000000000000000000000ffffffffffffffff +CT= 5b9e4d8d025a2207116173af37973f360f9d975a1f7b02f5 +TEST= 65 +KEY= 00000000000000000000000000000001ffffffffffffffff +CT= 83628dcf929fcdeb898c65772c658f722fb26c4a7b950b3b +TEST= 66 +KEY= 00000000000000000000000000000003ffffffffffffffff +CT= e269616e51ea2e39d63fcae243e0524b31a648fc07342630 +TEST= 67 +KEY= 00000000000000000000000000000007ffffffffffffffff +CT= 2f49a2f605bddfeb98980b74eeca7569a910cae7e6814830 +TEST= 68 +KEY= 0000000000000000000000000000000fffffffffffffffff +CT= 1bef9c67c9d9d88578a4906513ab13c16ea784f58a77b256 +TEST= 69 +KEY= 0000000000000000000000000000001fffffffffffffffff +CT= 2608677affe8576b6a677d78cbb650932481cd72da7e3b48 +TEST= 70 +KEY= 0000000000000000000000000000003fffffffffffffffff +CT= f8becce0d4cf278e8e49f33fad1cb1867ab9f0a13542980e +TEST= 71 +KEY= 0000000000000000000000000000007fffffffffffffffff +CT= 01d240fc314ece375d7fc317ced363458901b1036e238a86 +TEST= 72 +KEY= 000000000000000000000000000000ffffffffffffffffff +CT= 78c09d4b6deeebb808e6de2e7b44d8e6d77735853f6bbdb1 +TEST= 73 +KEY= 000000000000000000000000000001ffffffffffffffffff +CT= f6a9eb13b774b3086dd1252e746e1b776016d3dc6cd307c4 +TEST= 74 +KEY= 000000000000000000000000000003ffffffffffffffffff +CT= c5439add24e33e19d94dba925335020f2038dccb5af97105 +TEST= 75 +KEY= 000000000000000000000000000007ffffffffffffffffff +CT= e49cc0af1eb5615b9cc54495a781ac7d02865048e2f6623d +TEST= 76 +KEY= 00000000000000000000000000000fffffffffffffffffff +CT= 642fd38282a12e7131156f6218576ab775074eb44a66e5e0 +TEST= 77 +KEY= 00000000000000000000000000001fffffffffffffffffff +CT= 06dbd6737f735d677ffb95fa8588db6ec2126c7f9364d9ac +TEST= 78 +KEY= 00000000000000000000000000003fffffffffffffffffff +CT= 9d517b15946430093b43093e6be3fe68567b735cdd589ac5 +TEST= 79 +KEY= 00000000000000000000000000007fffffffffffffffffff +CT= 77bda200eb77da6097314e03ef3a7174e05c50d985b8fa35 +TEST= 80 +KEY= 0000000000000000000000000000ffffffffffffffffffff +CT= 88b21547c95ac7702cd30211463c73ae9b9e2068dc5bb6df +TEST= 81 +KEY= 0000000000000000000000000001ffffffffffffffffffff +CT= 19fd0ee1b3f49f2fed584e84d182b4d3d88ccb1d04a094d0 +TEST= 82 +KEY= 0000000000000000000000000003ffffffffffffffffffff +CT= cd85d94fd777c2821f0bbd9891fe209f87b57b1d957c4672 +TEST= 83 +KEY= 0000000000000000000000000007ffffffffffffffffffff +CT= 06ae4a8a83a24751db60a8f4ab592c75831ef5ec303ee4c5 +TEST= 84 +KEY= 000000000000000000000000000fffffffffffffffffffff +CT= 3c952a051dfbdb8949dbe5a979a128d7aca2a3e3d8726066 +TEST= 85 +KEY= 000000000000000000000000001fffffffffffffffffffff +CT= 917eda5c8d5123f1946290d22972b5a4973fa63971868ff5 +TEST= 86 +KEY= 000000000000000000000000003fffffffffffffffffffff +CT= 1ca56a156307a3fd3d4514c698fb2346c0426b4f080dc6aa +TEST= 87 +KEY= 000000000000000000000000007fffffffffffffffffffff +CT= b65cd2b8f0c7123afc007c0816eb35dd9608f0ca08949feb +TEST= 88 +KEY= 00000000000000000000000000ffffffffffffffffffffff +CT= c90f968649855d9efe99e56b9be894bd98a57da00e7502d6 +TEST= 89 +KEY= 00000000000000000000000001ffffffffffffffffffffff +CT= 33d334654cec1235033d13ec5dd982476a1da1a19734f7bb +TEST= 90 +KEY= 00000000000000000000000003ffffffffffffffffffffff +CT= 59c4df64b6a9d9203aa305bf1a3a7ed0e19dd3b88742b4ad +TEST= 91 +KEY= 00000000000000000000000007ffffffffffffffffffffff +CT= bf91d7d26aac5a92e54bfded7e423b58ae7ca03f8869cfb8 +TEST= 92 +KEY= 0000000000000000000000000fffffffffffffffffffffff +CT= 81bdeafbde3d928942f2b95fecd5b44172168065a97db586 +TEST= 93 +KEY= 0000000000000000000000001fffffffffffffffffffffff +CT= b183d8d3a560c8ad1cc628e1a207c3a6e473a5857985f3ad +TEST= 94 +KEY= 0000000000000000000000003fffffffffffffffffffffff +CT= 8c11d9412bf9534822a2849a57bb0147b0c25dff39ca79df +TEST= 95 +KEY= 0000000000000000000000007fffffffffffffffffffffff +CT= d2ae841ee7d3195a3ea9594551491408cc412b5644e573d9 +TEST= 96 +KEY= 000000000000000000000000ffffffffffffffffffffffff +CT= f7e7020ac9dcb9544e772567920ba8548b9e00357bdfd30b +TEST= 97 +KEY= 000000000000000000000001ffffffffffffffffffffffff +CT= d37a0cd1942a6c91202ad984e56961ab51624d7becaf2abe +TEST= 98 +KEY= 000000000000000000000003ffffffffffffffffffffffff +CT= 8e5d0fd4ef2b8607bd237be67b6d744958c20b880030dec3 +TEST= 99 +KEY= 000000000000000000000007ffffffffffffffffffffffff +CT= 36b3f8d2fc570f3c21e51241fa4c021191848ea410a460ee +TEST= 100 +KEY= 00000000000000000000000fffffffffffffffffffffffff +CT= 4f0c7f8f07242c674f2c405526a174606e96bc6163511f9e +TEST= 101 +KEY= 00000000000000000000001fffffffffffffffffffffffff +CT= 6227412c2704e0b9abb3130c690ef7231b95a6127109bd4f +TEST= 102 +KEY= 00000000000000000000003fffffffffffffffffffffffff +CT= 8b0f1ff3a4c86f59341b8cb495bf3378f770e52281d4a482 +TEST= 103 +KEY= 00000000000000000000007fffffffffffffffffffffffff +CT= 8824ae9c75cb85be2b5b50520e39433a64b6947fcd0aa604 +TEST= 104 +KEY= 0000000000000000000000ffffffffffffffffffffffffff +CT= e7981eb68b860addf24250ae65aee55c2c05cc8120c3a7e4 +TEST= 105 +KEY= 0000000000000000000001ffffffffffffffffffffffffff +CT= e64de9bc9de261be7d97ae857decbc729e1fc6e5653491fb +TEST= 106 +KEY= 0000000000000000000003ffffffffffffffffffffffffff +CT= 8790a7721e407c1253741c79eb91cb41048bf633fdb9bb2b +TEST= 107 +KEY= 0000000000000000000007ffffffffffffffffffffffffff +CT= 3188d7f27014a0d9ee2b11b26dadea1a72cc6e2ae38621a9 +TEST= 108 +KEY= 000000000000000000000fffffffffffffffffffffffffff +CT= 99d68b3021e026e0b25831ab30ecc3b82e6b9dabb80ac04b +TEST= 109 +KEY= 000000000000000000001fffffffffffffffffffffffffff +CT= 97837066cd7d87ce009dc1b8f926bffaa644ffa640f796ba +TEST= 110 +KEY= 000000000000000000003fffffffffffffffffffffffffff +CT= fe358b333182e0fb0267c2457f8223b1db23b3733029d744 +TEST= 111 +KEY= 000000000000000000007fffffffffffffffffffffffffff +CT= a85dac7f5a91d0f8c73ea6e1c3f6d67aee6fd8d39d957005 +TEST= 112 +KEY= 00000000000000000000ffffffffffffffffffffffffffff +CT= 10deb521fe9a2a7fbdbe2d659bd076efb3c9214de564d5eb +TEST= 113 +KEY= 00000000000000000001ffffffffffffffffffffffffffff +CT= 31f44471a55c9b5572f41556710f03c619f28365924c1dbc +TEST= 114 +KEY= 00000000000000000003ffffffffffffffffffffffffffff +CT= ef685e403dbbe0ca9ded3c77f1aa9e8d968e7cd3542ffb1b +TEST= 115 +KEY= 00000000000000000007ffffffffffffffffffffffffffff +CT= 150092d8b8708d7c3bb970a15a11fa629e1897c4227c997d +TEST= 116 +KEY= 0000000000000000000fffffffffffffffffffffffffffff +CT= cac5b06d967a85cb192a31d15aa23b10a1c7f0242bef0b58 +TEST= 117 +KEY= 0000000000000000001fffffffffffffffffffffffffffff +CT= 6c71946af5167ea2473ad141d3227359ac7798c25df32994 +TEST= 118 +KEY= 0000000000000000003fffffffffffffffffffffffffffff +CT= aad4ced6e59840087ae9158d7b1916a92e20dfbdb607d3a9 +TEST= 119 +KEY= 0000000000000000007fffffffffffffffffffffffffffff +CT= 4dac00293ce305f9e4253ee19bc042008e034ef1a57f3f76 +TEST= 120 +KEY= 000000000000000000ffffffffffffffffffffffffffffff +CT= 642d825060c999cd9476023a21e8ff613a11e870533c6f1c +TEST= 121 +KEY= 000000000000000001ffffffffffffffffffffffffffffff +CT= b915e6bf2bfad7ad6d00acf934ccc58941008e185dad227e +TEST= 122 +KEY= 000000000000000003ffffffffffffffffffffffffffffff +CT= 4751e64c7f6544c26ce48fa349bb4796f860e5e0ef01b599 +TEST= 123 +KEY= 000000000000000007ffffffffffffffffffffffffffffff +CT= b9e74456e7727f8ec2dde1c48b05d79371527cf206f2bd5f +TEST= 124 +KEY= 00000000000000000fffffffffffffffffffffffffffffff +CT= 5ca62648220bd3d0f5e6002495bd18410a960ab8cac19cb1 +TEST= 125 +KEY= 00000000000000001fffffffffffffffffffffffffffffff +CT= 9db34dbd8cab0a5100d48d60c53eb17844395a1c2c8dc17b +TEST= 126 +KEY= 00000000000000003fffffffffffffffffffffffffffffff +CT= 2f00fc7973106e272247b9e6c256464cb16b71e332fb1297 +TEST= 127 +KEY= 00000000000000007fffffffffffffffffffffffffffffff +CT= 878a1ab4591983a46ba5c8641789b595e3737c095f3f758e +TEST= 128 +KEY= 0000000000000000ffffffffffffffffffffffffffffffff +CT= fa2e88df960ad85ef063ff0f033ca55ee63778c1b24abd8d +TEST= 129 +KEY= 0000000000000001ffffffffffffffffffffffffffffffff +CT= bca281cd66d5cb09138c83c905d0fd800fcc260600dc878c +TEST= 130 +KEY= 0000000000000003ffffffffffffffffffffffffffffffff +CT= bd1b35787e4c413c08fa4e8b69713fd6900b836a4aff865d +TEST= 131 +KEY= 0000000000000007ffffffffffffffffffffffffffffffff +CT= 29a173631ede947c26c3d394bc3522534da605ed3bb24617 +TEST= 132 +KEY= 000000000000000fffffffffffffffffffffffffffffffff +CT= c07e4a2ca708f4cbf1617c2dab468343f77202cc952179d4 +TEST= 133 +KEY= 000000000000001fffffffffffffffffffffffffffffffff +CT= 2f171d2d1bb795f97bb9aefaeb38ebac26bf090209e310ac +TEST= 134 +KEY= 000000000000003fffffffffffffffffffffffffffffffff +CT= 520e3f42de735598199b005bf77d273999380c0906862fbe +TEST= 135 +KEY= 000000000000007fffffffffffffffffffffffffffffffff +CT= ecca5400d0f365be902ed8b991b564dadc7fdcbc971399f9 +TEST= 136 +KEY= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 5a7512f8580fd7226eea3071cd0c4e2eba07056ee81fecfb +TEST= 137 +KEY= 00000000000001ffffffffffffffffffffffffffffffffff +CT= f8d7feca22db226d1c0449af2059d487d32c5f17fc284c71 +TEST= 138 +KEY= 00000000000003ffffffffffffffffffffffffffffffffff +CT= 7ffdea53e20efde3dd957ab95e69b6051f5433eacc775b3f +TEST= 139 +KEY= 00000000000007ffffffffffffffffffffffffffffffffff +CT= 64f1ce40263a0d5556d359c6c689f11602adbe5cdf692f0e +TEST= 140 +KEY= 0000000000000fffffffffffffffffffffffffffffffffff +CT= 16890f3c8751514e7d4858571352b02a9035641798da2008 +TEST= 141 +KEY= 0000000000001fffffffffffffffffffffffffffffffffff +CT= 0f4848472dad631a254c3244a057b0f5fd2e16db253ec9f6 +TEST= 142 +KEY= 0000000000003fffffffffffffffffffffffffffffffffff +CT= 116c640796a2383bd18e419e293a85530369aa6ec30027d6 +TEST= 143 +KEY= 0000000000007fffffffffffffffffffffffffffffffffff +CT= 381e0af857dfeeea9425459b2a265f67aacb7c30bd920cc3 +TEST= 144 +KEY= 000000000000ffffffffffffffffffffffffffffffffffff +CT= 327d8acb6d3e095cce90fb96331c30ed4f54876dff6f348a +TEST= 145 +KEY= 000000000001ffffffffffffffffffffffffffffffffffff +CT= 0d9d66dd050c0f87c92e2fb0806559f822c6c89f5417e460 +TEST= 146 +KEY= 000000000003ffffffffffffffffffffffffffffffffffff +CT= ff22e1f468ddae9fce4485e2f6f60ba09e3850543cb06a84 +TEST= 147 +KEY= 000000000007ffffffffffffffffffffffffffffffffffff +CT= 5a0b82d40f15262f1587eecd5eab7484ba94d48dde7ebbe6 +TEST= 148 +KEY= 00000000000fffffffffffffffffffffffffffffffffffff +CT= 136ec3ecdb62a60879910d83a4d01cc29679cde311fac35c +TEST= 149 +KEY= 00000000001fffffffffffffffffffffffffffffffffffff +CT= 41dfa0b90b13c91b65ed5ee400ccd1fdab32f88390d213be +TEST= 150 +KEY= 00000000003fffffffffffffffffffffffffffffffffffff +CT= b106687e8b0dad9e49dd46a8553aa5a016cfc00521b70c6e +TEST= 151 +KEY= 00000000007fffffffffffffffffffffffffffffffffffff +CT= a071a913e717afeab03d116505b7a6feae8f7a8771b1e6c8 +TEST= 152 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= 32e1c8403e0bec84bb1a9f83d790df1a710413c3093be73a +TEST= 153 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= 9b93824a0904c45f282d1690c61890d84a2be7c9e47a39ad +TEST= 154 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= 0ce3540d1313adda1897992cbc5eba4c3ef210eb80e3cffb +TEST= 155 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= aae149adb2b297d8fff45057e836e64d703a1040ece25e4a +TEST= 156 +KEY= 000000000fffffffffffffffffffffffffffffffffffffff +CT= f8f9eff396877bfc40ccdf5a556c5ab06dcb7041830ef22a +TEST= 157 +KEY= 000000001fffffffffffffffffffffffffffffffffffffff +CT= 64b52dec4a096504ae997c82af79783667d919b41fa9951f +TEST= 158 +KEY= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 4342e43f89c4ca7498a36b09d4d39133a8359d5fde484c32 +TEST= 159 +KEY= 000000007fffffffffffffffffffffffffffffffffffffff +CT= 468d54c5f76637a30ccd111aabeab16a06b2ebab1c1d0c55 +TEST= 160 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= b729ff1073ff23d3f2b07878de3e58e48e8ab9d603f33a4b +TEST= 161 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= 5f5008a269bf12559fb5c721ce717f97a5eb05dfd9c8e38a +TEST= 162 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= 0b9064ce7654f8985e9c209c7fcaa49175a882e612b1e239 +TEST= 163 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= c80e1e65a1b16a36944c23df3c4eacf4125bbd3eba7d9b49 +TEST= 164 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 8b779aecfc357580f01901526f2d8612e149d230c43602e6 +TEST= 165 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= 0295e5264f67b9b1c0e50ff657d5efba635d1aeafcd3daac +TEST= 166 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= fec88cad5066cd4714b1db3bcda529c5202c0fb3ceeeddb6 +TEST= 167 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= 9c8fcb5a148776d7d29beb24778906b86ea583e8879646aa +TEST= 168 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= 175a2d359c1bf4797fe22712c7e235cddc927a31b5918bc7 +TEST= 169 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= 23edf15590cd0d800aa0c3b8a051086557d818547805c1b0 +TEST= 170 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= 3df5233811c32de883e600f784833287a91a3f4df24d2f71 +TEST= 171 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= a04ef050c544f48b969e4f84f56ff5337e55070eec55780a +TEST= 172 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= 340abc19f0940e55af4f5f29cbfd5bec3b178a0867d7f55a +TEST= 173 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= a98faf9b30663381c82420f7a62865d6ed26e3b433ecd72d +TEST= 174 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= 813e0b37a12d0f542d48181c5b4f278b6117f8a6e0b5958c +TEST= 175 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 7f90b89430f4baf1f03c042041bcd27a45dfa4590e0a94a3 +TEST= 176 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= 90795ae19fcf4635991dec4ed8e0dc3cf1915f3345146195 +TEST= 177 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= 49f88bcd28c04218d018ee7395b4994559d457798d6dd719 +TEST= 178 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= d131922fab9753ca70b7595f231d68c1146734bdd2d784f2 +TEST= 179 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= a240e88cd1b317d3033c98a21135c68304f45a5b1875923b +TEST= 180 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= cc5d825f44c32acdc74bee26fd521d7fc9839c70de13ade9 +TEST= 181 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= 4dc25e5b36bef8e63ee250a0d4df09aa605b5082c4185b5f +TEST= 182 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= 43eb9042c79ec407e91e8719b234c39dedbbb55833dc86aa +TEST= 183 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= ce5b7ac35b138505d2ae481b0753b6d103594305deb36a35 +TEST= 184 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 17410207f51662d8f9521b30eb9575356c28ee10d58eeedb +TEST= 185 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= 3399f46808e808cad95c47faefda613409dc68702b574665 +TEST= 186 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= 8dc0c0de1c9026941e0b10547f58e3fd11f4a0a0d6ef8c57 +TEST= 187 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= 47d6acc430b90ae1036ab13e0d3c23e44558f2974920dc34 +TEST= 188 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= 37ccd8f8398180be3cfd1910f2aa4dc58afcb846cd817922 +TEST= 189 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= a12358d5279a28d0fff4599bc973ce5df5b0f7b75125bbf9 +TEST= 190 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= 4bb77f498d6dab800f4351e6fdf6e213500ce3026469d06e +TEST= 191 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= 2ec8a1ea86fa1c67d35ac32ca9be53edaa2a38db0733d1d5 +TEST= 192 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0656b89fd5a8eee183d023d1da2be793afd0aa9f5c415e57 +TEST= 193 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= b1681bdf02da4515e8ebd7189efab40d508515d6b9d3b0cb +TEST= 194 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= a53fabfaa04ca37a6e4823ad28455ca8759d263a2b56e721 +TEST= 195 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 3369d8fe909d5f7ce5a9057c87933be73e7c8bbece97bb4e +TEST= 196 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 71b9df1f52d29863118eee1b8113c3ea774d0db7f91fd27f +TEST= 197 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 23d65ca8c655334e7b63c684777f039490ede08680594e68 +TEST= 198 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= d7b3c96640d3f3e737d10c1cb3093a5ea1f6c284beb828c8 +TEST= 199 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 59a0dbc70e3d2609bd5e66cd75a7ea1578740b81c6b527fb +TEST= 200 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= d469a7e3b5f8d5f9006ec41adce95a0d84d0a49352d1bcba +TEST= 201 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 7ee3a150b9144ca05ea461260de8ecbf29d413f75060e143 +TEST= 202 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 61b9507483169db3ac16ff894d4e61d981828690cf95e006 +TEST= 203 +KEY= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= 8f589ebe7b4d6c90f738d02d75eb328b7d8cf591c949e799 +TEST= 204 +KEY= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= 4f70dcaa3c27632e0346f03a8e6d09c96a3cefa6ac4446dc +TEST= 205 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 45c74e552323e333f1be256a0c8ddeada232e370a34f7470 +TEST= 206 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 3f6939b74d0958facf9822635cc60c3b62cf3c66e2fc7381 +TEST= 207 +KEY= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 0866bca0f29b708015cdf5efcb6188fd6093479aad69cf55 +TEST= 208 +KEY= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 32aebd66ba75422d0b9a0810a4d2deeb26a4157ac4faac5a +TEST= 209 +KEY= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= 43e5c8989851beffe223bd1ba54f9f2047dcd4de496aad91 +TEST= 210 +KEY= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 8d901220e1f6a1b9a2047e47780fc4ee7a531b1119ca570c +TEST= 211 +KEY= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= ce11dff9e65f65509483827bcee85ae4aa743ea780307607 +TEST= 212 +KEY= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= 924a28276caca64bd98dfe6bc04c24545d59f302968db286 +TEST= 213 +KEY= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 61846819290132963775830f20077e0113fe15768c7994cc +TEST= 214 +KEY= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= bbbe53fe1609f431d4b2dcf64ccafb076a54c6d625d8a4a2 +TEST= 215 +KEY= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= da240d647e0517efb20c8fdd7134f52b4590bdd161526866 +TEST= 216 +KEY= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= 81d21d6aa3b33c3ac308f4a153a8268fb858f9ef51309d61 +TEST= 217 +KEY= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 27d6b28591a66515e9f988b1abe63a9b1df8ca622020d1bf +TEST= 218 +KEY= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= f4753e72711cf2bea73795c0487fb8aba2b57a3a656967fd +TEST= 219 +KEY= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 6db7af95a051234db3dbe66eb8a3ccec889e823fec01898f +TEST= 220 +KEY= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= 949e9591d27616072969a0f61bec529bfb3b51877065242d +TEST= 221 +KEY= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 184c490c1162c77279ecbbc2569decf4a04756210ba567aa +TEST= 222 +KEY= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= d9e7c74bcbebffce95d2749aaa91453a73f026d7fe18c806 +TEST= 223 +KEY= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= 710ba423d7052a58b897e3bf93ea8a80bf68464fc1ba172a +TEST= 224 +KEY= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= 0f6356c31b93d0b99fb8f1a065717837d6d3114432bdfcab +TEST= 225 +KEY= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= 225661d14d94f98978afdd693f8230a0a98e8e224db3a2fc +TEST= 226 +KEY= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= 6b0c2885d5b48de67a6cd0483cdba6acba9b907e730a8e2a +TEST= 227 +KEY= fffffffffffffffffffffffffffffffffffffff800000000 +CT= e598da0b0f51220f5e09e7b1231c8df1f36e29708d7e31be +TEST= 228 +KEY= fffffffffffffffffffffffffffffffffffffff000000000 +CT= abcf5e5a385a4b715a30b213c1531038a308072f25fdbfe7 +TEST= 229 +KEY= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= 9961ecd1cdea46d0ac40eabd4a75d3a4f56474a013b2dfb9 +TEST= 230 +KEY= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= fbb073636cb807525efa37fda062a296a8a63d29c7df0bb3 +TEST= 231 +KEY= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 9567ed4e0ce6d801e2717dc2d74972e4379b3300d1b92ff4 +TEST= 232 +KEY= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= e92bdcea2a66e5ceb9da3c5fb7064b8b1f6a2e65d5d58dec +TEST= 233 +KEY= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= 794c663424fd6042b62fcef0ca067db617fad83953cce646 +TEST= 234 +KEY= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= ab0fc4a5b602a2b3986d0800cce5292ac6df1c51e829c244 +TEST= 235 +KEY= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 9af797913edba4de289d456c22fb9e5f089d452d280f2d08 +TEST= 236 +KEY= fffffffffffffffffffffffffffffffffffff00000000000 +CT= 7ed6499e40b0416a86e22b5d49a12172164a7a83a5a4353f +TEST= 237 +KEY= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= ccf1e5ccd3f9df0b7bd9df3374a9295b4714a1caee89ca28 +TEST= 238 +KEY= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= 0b50e42aa606bab9ed2b17dcd71c7250c313d7ccc3002e53 +TEST= 239 +KEY= ffffffffffffffffffffffffffffffffffff800000000000 +CT= cf282f4048fb21600e1342f1232e4e08af76c7f94bf5706d +TEST= 240 +KEY= ffffffffffffffffffffffffffffffffffff000000000000 +CT= 741b7086450b3c04e4db3d188390cbcd986f0b13924e4910 +TEST= 241 +KEY= fffffffffffffffffffffffffffffffffffe000000000000 +CT= e16402ca4ff8bd21f3c3b7a505c28f64668b6f9f410aa078 +TEST= 242 +KEY= fffffffffffffffffffffffffffffffffffc000000000000 +CT= ad3eb43979a704dd39b374f3ecdc4e22c208f8b5e58e190d +TEST= 243 +KEY= fffffffffffffffffffffffffffffffffff8000000000000 +CT= d0f75c8d485d4db2cd31910bd50f053df018a36b3ed731a5 +TEST= 244 +KEY= fffffffffffffffffffffffffffffffffff0000000000000 +CT= 505fc6d3cb4e10ed031567ae3d82ab35f8073d2e97c620db +TEST= 245 +KEY= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 35229853cd8878ffe678789a05b583a0c0867269143b0a35 +TEST= 246 +KEY= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= 18c0de0e83ad491e72fe124af2f417dc31ca9e0bbb158007 +TEST= 247 +KEY= ffffffffffffffffffffffffffffffffff80000000000000 +CT= 865cf8b28df1c7cea406eba46ae48d116ccf1d7c19b49ac9 +TEST= 248 +KEY= ffffffffffffffffffffffffffffffffff00000000000000 +CT= 9b3b5f7694a9bfb2cfcacf0dc4cb1ed96ca77594af3b3419 +TEST= 249 +KEY= fffffffffffffffffffffffffffffffffe00000000000000 +CT= 7a267780774b198505165bf5d1fb0e36b6d44157232954f5 +TEST= 250 +KEY= fffffffffffffffffffffffffffffffffc00000000000000 +CT= fa4a4337dd1d68a38b4fbcdf1665b769581381ceb9228a92 +TEST= 251 +KEY= fffffffffffffffffffffffffffffffff800000000000000 +CT= 697847074b4cbffaa6dca75dc2c36c40da2baf0aa9f94dad +TEST= 252 +KEY= fffffffffffffffffffffffffffffffff000000000000000 +CT= 4fcff04f105d6bb825066fd6b69c6e2a57d0691c258825f7 +TEST= 253 +KEY= ffffffffffffffffffffffffffffffffe000000000000000 +CT= a133523c1e755f941f2f3b6ff32630c19095d103d733665c +TEST= 254 +KEY= ffffffffffffffffffffffffffffffffc000000000000000 +CT= 8f50bce8fcff1ac023b5ffff9b052b9a10858df64123a7e9 +TEST= 255 +KEY= ffffffffffffffffffffffffffffffff8000000000000000 +CT= 0a5c42ad3e310d47676205bcc3bd7f1dd87311b6baff9873 +TEST= 256 +KEY= ffffffffffffffffffffffffffffffff0000000000000000 +CT= 49c69de9507df6c26109d50235e65dbee45909e5b0d134be +TEST= 257 +KEY= fffffffffffffffffffffffffffffffe0000000000000000 +CT= 947defd81056aa7b81783966deace946e4b7bf962bd6c751 +TEST= 258 +KEY= fffffffffffffffffffffffffffffffc0000000000000000 +CT= ab3b648dd1945208fac1fb33417e249ac8e9700833211261 +TEST= 259 +KEY= fffffffffffffffffffffffffffffff80000000000000000 +CT= 3637abacc99aa1494e966d69ff59b6102a7b2cc814a2281c +TEST= 260 +KEY= fffffffffffffffffffffffffffffff00000000000000000 +CT= a5a5e8fd4af6f3c4eb2baf9ed50e0cee6339e959950868a7 +TEST= 261 +KEY= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 109fb1a2cba2bbcba6e126981f0ef5b4dc4a1026a1d13310 +TEST= 262 +KEY= ffffffffffffffffffffffffffffffc00000000000000000 +CT= 55fc4f3dcfb8935e1ce87e8e06b7f5a96cf3c31c661d2012 +TEST= 263 +KEY= ffffffffffffffffffffffffffffff800000000000000000 +CT= b495cca7ea3361844957c250de11c5442d542486b4ae65eb +TEST= 264 +KEY= ffffffffffffffffffffffffffffff000000000000000000 +CT= 71f81b71df7795618eea426b668eb562d17a290505048162 +TEST= 265 +KEY= fffffffffffffffffffffffffffffe000000000000000000 +CT= 5cc22105660cd382f02561d2c122050cbe9ccc26e4c04f21 +TEST= 266 +KEY= fffffffffffffffffffffffffffffc000000000000000000 +CT= e9abeb2b5966d62028ce74025b7e78eeb7e5d9682dc2017f +TEST= 267 +KEY= fffffffffffffffffffffffffffff8000000000000000000 +CT= 40f61aed1f72e899d243b867801470f1c25a27e4352f5a94 +TEST= 268 +KEY= fffffffffffffffffffffffffffff0000000000000000000 +CT= 2f577347627baf70285df60949359e6f606148db687ca107 +TEST= 269 +KEY= ffffffffffffffffffffffffffffe0000000000000000000 +CT= add4bad869c580f03ec5f592d1b67ad182e02dcafd61d3c8 +TEST= 270 +KEY= ffffffffffffffffffffffffffffc0000000000000000000 +CT= 0c8a365e9e3d89d4954083971fe13451a8518526fafe3171 +TEST= 271 +KEY= ffffffffffffffffffffffffffff80000000000000000000 +CT= 91e548db0391bab709cb0c6d9c37e5f514606cb1006d40ff +TEST= 272 +KEY= ffffffffffffffffffffffffffff00000000000000000000 +CT= ea2b7dcbce36faa0d07b3299779f8811cecd9a324fb01ec4 +TEST= 273 +KEY= fffffffffffffffffffffffffffe00000000000000000000 +CT= 054b1e3fad2d9666ddd4d97d8dc32357816b7e2eecef7a6d +TEST= 274 +KEY= fffffffffffffffffffffffffffc00000000000000000000 +CT= 9f03fa697d6e671c89c6b799478a30bc2bb5926856f694b4 +TEST= 275 +KEY= fffffffffffffffffffffffffff800000000000000000000 +CT= 1c589bb8d48d2aacd00af7a15590825b65e28221b104ce41 +TEST= 276 +KEY= fffffffffffffffffffffffffff000000000000000000000 +CT= 50c16ad7cd6ccbf07a1998fe70ea318899bfa7ec9fb95b2b +TEST= 277 +KEY= ffffffffffffffffffffffffffe000000000000000000000 +CT= eda7b733e5b959370d64c6a211763618d2173730387c52f8 +TEST= 278 +KEY= ffffffffffffffffffffffffffc000000000000000000000 +CT= bf7764d80c59ac8ce73c7abcfaa9adb5904f61ff114ac160 +TEST= 279 +KEY= ffffffffffffffffffffffffff8000000000000000000000 +CT= 563c389c11336dada660395cc60f6acdaee39103b4d81bd8 +TEST= 280 +KEY= ffffffffffffffffffffffffff0000000000000000000000 +CT= 62ae4167b8d210c5a96bba33ca040a96a44945e5910c6459 +TEST= 281 +KEY= fffffffffffffffffffffffffe0000000000000000000000 +CT= 4f7604e8d885e26dadf1c4a912f3a0e76461d05f961164fb +TEST= 282 +KEY= fffffffffffffffffffffffffc0000000000000000000000 +CT= cb56e0913bc029f16aeeb6e4b361006150eaf208ca3b480f +TEST= 283 +KEY= fffffffffffffffffffffffff80000000000000000000000 +CT= 6de09cd7b356def83aa3945430ac6c03db076ac1d5a14292 +TEST= 284 +KEY= fffffffffffffffffffffffff00000000000000000000000 +CT= 445e65b3d4c06fbade26832c0738cb403b50d3c5390405a4 +TEST= 285 +KEY= ffffffffffffffffffffffffe00000000000000000000000 +CT= 362e742c505480d12c63bcb091f808bdce481a5827d79133 +TEST= 286 +KEY= ffffffffffffffffffffffffc00000000000000000000000 +CT= cc8ccb4efa6b3cc937bbe482785972d5e289c4a1acb204aa +TEST= 287 +KEY= ffffffffffffffffffffffff800000000000000000000000 +CT= 089f44939ffd168ba5af462adbd5964fbaece7d0e3cb8ecf +TEST= 288 +KEY= ffffffffffffffffffffffff000000000000000000000000 +CT= 784252d1f9442d6b3080dda8be7412f56d1274b7586229ef +TEST= 289 +KEY= fffffffffffffffffffffffe000000000000000000000000 +CT= cfb9039b1bfdbbc95e219d36c78fabc3b4a3d3911ab1c52d +TEST= 290 +KEY= fffffffffffffffffffffffc000000000000000000000000 +CT= 49730b3947f811a0c687d700b0639053baf55698672738e2 +TEST= 291 +KEY= fffffffffffffffffffffff8000000000000000000000000 +CT= c34db336059526392ebff652dcf0318c770e5b865c368e6a +TEST= 292 +KEY= fffffffffffffffffffffff0000000000000000000000000 +CT= 8fc0ffa0c732dc4783b89eb67f64cdec4782ebf03ab3c843 +TEST= 293 +KEY= ffffffffffffffffffffffe0000000000000000000000000 +CT= aea3737b743cff115552945cee502160573714a22d209ddf +TEST= 294 +KEY= ffffffffffffffffffffffc0000000000000000000000000 +CT= 31860a3f3f7a639100b8975b7a28579dd8f7ef31f182dc8a +TEST= 295 +KEY= ffffffffffffffffffffff80000000000000000000000000 +CT= 8974da4a9014e99b5987fb9bf92c8d451a1ee8beb0ed634c +TEST= 296 +KEY= ffffffffffffffffffffff00000000000000000000000000 +CT= b7002046ea49df758726011010236ebca53fde807c42b1e7 +TEST= 297 +KEY= fffffffffffffffffffffe00000000000000000000000000 +CT= 842864c99b9bbd7dd413096935e3e171af534230d172b008 +TEST= 298 +KEY= fffffffffffffffffffffc00000000000000000000000000 +CT= eb9891d6633ff4ffb98c7159836c611edbc8120c7594c5c5 +TEST= 299 +KEY= fffffffffffffffffffff800000000000000000000000000 +CT= 6c4198d4d2beea19997bbc9a729aeb9a499b810af6af4967 +TEST= 300 +KEY= fffffffffffffffffffff000000000000000000000000000 +CT= 02ce9b15e6e6f9f88b313ec84047f83235c9f4a80cecb10a +TEST= 301 +KEY= ffffffffffffffffffffe000000000000000000000000000 +CT= c5df3505ee93e634ad56a3bfef8581b65a91512107574bee +TEST= 302 +KEY= ffffffffffffffffffffc000000000000000000000000000 +CT= 07cf851ffd7101b67dc47b31ba757d5f338d7fb061250830 +TEST= 303 +KEY= ffffffffffffffffffff8000000000000000000000000000 +CT= 4176a2443f91f8497094748247810e9ae538a031eb507dc6 +TEST= 304 +KEY= ffffffffffffffffffff0000000000000000000000000000 +CT= f034ff663517a858b48c67874f5d55af0d2ab2d69e0ec747 +TEST= 305 +KEY= fffffffffffffffffffe0000000000000000000000000000 +CT= 0e4296987c74cc50b19d3df7641ef046878bf7920ca9b666 +TEST= 306 +KEY= fffffffffffffffffffc0000000000000000000000000000 +CT= 791ce1d008d924a7e6a511566ab7c5a6b9e2a47905142d9e +TEST= 307 +KEY= fffffffffffffffffff80000000000000000000000000000 +CT= 2897e5ff8c838003aba771918a46871100fa6be2c0366bb2 +TEST= 308 +KEY= fffffffffffffffffff00000000000000000000000000000 +CT= c9047f5e7ff10e360e2a67078890796b0e9eec5100596728 +TEST= 309 +KEY= ffffffffffffffffffe00000000000000000000000000000 +CT= 80634285e97f0501951f2bf23c5c75aba496a2e30707db57 +TEST= 310 +KEY= ffffffffffffffffffc00000000000000000000000000000 +CT= f3b83232c201bfb5ae68ebda0a55f34e9084a4aca870a940 +TEST= 311 +KEY= ffffffffffffffffff800000000000000000000000000000 +CT= bf3ae9d7a53972e5a7e0033a76ac7257033374b4353babc2 +TEST= 312 +KEY= ffffffffffffffffff000000000000000000000000000000 +CT= 71fae35088d160f1f97b7fcb111685c2b0277253a6d19dec +TEST= 313 +KEY= fffffffffffffffffe000000000000000000000000000000 +CT= 1f70d13b0d722e15caa13dbc02b4d2e4cbe32b22a130d3b3 +TEST= 314 +KEY= fffffffffffffffffc000000000000000000000000000000 +CT= 2a9cb1138a9b83f07e241ce9be45fd52da9273954eef7df4 +TEST= 315 +KEY= fffffffffffffffff8000000000000000000000000000000 +CT= ccbdbf2c134dc2bcf5abdc76c4dc021bade029a1c2082b52 +TEST= 316 +KEY= fffffffffffffffff0000000000000000000000000000000 +CT= 67a0ba1d6aa4b3b51c1b1024b8a5970352ffa84b5185507a +TEST= 317 +KEY= ffffffffffffffffe0000000000000000000000000000000 +CT= 1f9d0a603fb6e803b7e8dd9c5fca83cf91fa40c53328e9b0 +TEST= 318 +KEY= ffffffffffffffffc0000000000000000000000000000000 +CT= af37f75111ea466ff1bec5dedacf43b2bf6ad4d7d7dbcf2a +TEST= 319 +KEY= ffffffffffffffff80000000000000000000000000000000 +CT= e5dc4fe790a2d71919f95997f22f14e8951f56ae794ed0c3 +TEST= 320 +KEY= ffffffffffffffff00000000000000000000000000000000 +CT= 0a2d0f598e6c99a23663eefcf0219b1d7a4fcfbf908b8deb +TEST= 321 +KEY= fffffffffffffffe00000000000000000000000000000000 +CT= 8a5ffbfe60717c473ca27b7ffd56cf4e80bdfff771ea202d +TEST= 322 +KEY= fffffffffffffffc00000000000000000000000000000000 +CT= 4c304b8a0392334be90d354f5da6f61f698abd179da53f88 +TEST= 323 +KEY= fffffffffffffff800000000000000000000000000000000 +CT= a9956aa34e5f59911f70007c57da6521ed2a85bbcd94d344 +TEST= 324 +KEY= fffffffffffffff000000000000000000000000000000000 +CT= 184da9156191ccc35caaf1e8005ba8d8afe71a0c9435388d +TEST= 325 +KEY= ffffffffffffffe000000000000000000000000000000000 +CT= 7e28698a008935bbdf8ad0d5605551624178367ad69fa4cb +TEST= 326 +KEY= ffffffffffffffc000000000000000000000000000000000 +CT= 1a9be2ce39f0142c22928ac008883a6d7ab09959e024d0e7 +TEST= 327 +KEY= ffffffffffffff8000000000000000000000000000000000 +CT= 0f0305c6e9579516fa131d1278d56c53e9a48e65d043727e +TEST= 328 +KEY= ffffffffffffff0000000000000000000000000000000000 +CT= 4bdef8718993e4955e5f3e751f2d634a5ff06723ca3e9894 +TEST= 329 +KEY= fffffffffffffe0000000000000000000000000000000000 +CT= e3220371cf272fcf02bad3a968931f6577b0dfabeb4c81c7 +TEST= 330 +KEY= fffffffffffffc0000000000000000000000000000000000 +CT= 51efd4da3939ad0e4b92bd08f053e9e490e175280ce28275 +TEST= 331 +KEY= fffffffffffff80000000000000000000000000000000000 +CT= e3dc9c86f3b7ba8c25d96ceb3e17177117805f478a97da91 +TEST= 332 +KEY= fffffffffffff00000000000000000000000000000000000 +CT= 407733f27dd0e24bbefc8bed2e0005c40d1bcf48631d8737 +TEST= 333 +KEY= ffffffffffffe00000000000000000000000000000000000 +CT= 3cab577ecad58010b3f3cba138d6ae55444a24bcd9b1b7c2 +TEST= 334 +KEY= ffffffffffffc00000000000000000000000000000000000 +CT= f2e0b57fcf10073593feb82371c5b1cbe64a281226eb2a1a +TEST= 335 +KEY= ffffffffffff800000000000000000000000000000000000 +CT= 51d7d716012297560691f690ddc0a4197f52dfc861646ada +TEST= 336 +KEY= ffffffffffff000000000000000000000000000000000000 +CT= 324657e621452d550fed1e3e21156ed451e6e3284d790257 +TEST= 337 +KEY= fffffffffffe000000000000000000000000000000000000 +CT= f1667bc288cbda4997ced672891872df6466673c613c1dd3 +TEST= 338 +KEY= fffffffffffc000000000000000000000000000000000000 +CT= 0c97d4700ece6c5ee2bdeddb5b9048dc65b439f94363f9a3 +TEST= 339 +KEY= fffffffffff8000000000000000000000000000000000000 +CT= 1bd6429bfd645fc8f2c8efc47cf9158fea406ae2879a98c8 +TEST= 340 +KEY= fffffffffff0000000000000000000000000000000000000 +CT= 596687e4bcd461efce9b2e87d243365c15f9bdef02401482 +TEST= 341 +KEY= ffffffffffe0000000000000000000000000000000000000 +CT= 43259ca45c56bdc8672807978dfb1896194fa478651ef19d +TEST= 342 +KEY= ffffffffffc0000000000000000000000000000000000000 +CT= e529b665c6d13ffdf78f102ef4f6516eb8890c3c2db7c355 +TEST= 343 +KEY= ffffffffff80000000000000000000000000000000000000 +CT= 4bbc7ad9261e37fad508f768bb8cfa3fd4fbb0fc771faf7e +TEST= 344 +KEY= ffffffffff00000000000000000000000000000000000000 +CT= d52f329a82bbfee181a3b734b2d2fd658cc2121f13a709e6 +TEST= 345 +KEY= fffffffffe00000000000000000000000000000000000000 +CT= eaa77de2a924a18e937b8b9363d50e3e94dadbc8f5805693 +TEST= 346 +KEY= fffffffffc00000000000000000000000000000000000000 +CT= 42fc7c5f2da301a3766c87e27ca56686891b2d0ce3ee1dc9 +TEST= 347 +KEY= fffffffff800000000000000000000000000000000000000 +CT= 45ecb9465dbd2711af0765f1ef5d3f4a47415ee68a0db1bb +TEST= 348 +KEY= fffffffff000000000000000000000000000000000000000 +CT= cd3efec428e19d32cd7de654c1c4c1d5342e5b60f5b4ce3b +TEST= 349 +KEY= ffffffffe000000000000000000000000000000000000000 +CT= f6fddc403076bb799a158901c243e96aa4231170647eb39e +TEST= 350 +KEY= ffffffffc000000000000000000000000000000000000000 +CT= 5b0f6c4020a1c4030ee6124fa6be36e512798838d56b1d2d +TEST= 351 +KEY= ffffffff8000000000000000000000000000000000000000 +CT= 6a8d000c8867e13f9a1c5174839939ac48fbcd84d87fe2f5 +TEST= 352 +KEY= ffffffff0000000000000000000000000000000000000000 +CT= 321dc2d42511e1220a4172aeaf6e5ef6eb001302e010ea0e +TEST= 353 +KEY= fffffffe0000000000000000000000000000000000000000 +CT= 0b81ded1df07cc54b41b6c5e9d06699433c07bc53cbd275e +TEST= 354 +KEY= fffffffc0000000000000000000000000000000000000000 +CT= 338decceafc14ca8ebe30f542fcfe3c8d62a22e14e1ba87e +TEST= 355 +KEY= fffffff80000000000000000000000000000000000000000 +CT= 59056e000cfe733df6cd0ed53322d21fca502fc41156f5aa +TEST= 356 +KEY= fffffff00000000000000000000000000000000000000000 +CT= 4e98be981d5c489bd043804c96c4c39404f3833d79d686f2 +TEST= 357 +KEY= ffffffe00000000000000000000000000000000000000000 +CT= bb4097930f78acf34ef4b01b1e1a8378703648880c96171c +TEST= 358 +KEY= ffffffc00000000000000000000000000000000000000000 +CT= 8f4b8f9c47b29457fe9e0acde499241febfa16b71a5a93bc +TEST= 359 +KEY= ffffff800000000000000000000000000000000000000000 +CT= 23552a8ffd5ec80fbf4fe0ae5035b5a2c14cdceb23eeca6b +TEST= 360 +KEY= ffffff000000000000000000000000000000000000000000 +CT= e3eafaab1bb9aca89884d8d4ea2880288792293ea89aaf5f +TEST= 361 +KEY= fffffe000000000000000000000000000000000000000000 +CT= 32b1a55ce178f7ace4ccddf8e36fb59db84def4325e53cc9 +TEST= 362 +KEY= fffffc000000000000000000000000000000000000000000 +CT= c4914c388239691b73e2688096d1e6bb6778d2929144894f +TEST= 363 +KEY= fffff8000000000000000000000000000000000000000000 +CT= d30734733d1b92a5ebcfc980305c6c3b6955636571050f57 +TEST= 364 +KEY= fffff0000000000000000000000000000000000000000000 +CT= f5c923da72a5ee6348c88169c65af1994f487da5e4948e7f +TEST= 365 +KEY= ffffe0000000000000000000000000000000000000000000 +CT= 254efc997a0ec0e55a3398f0f36946ef62742065cfb3ffed +TEST= 366 +KEY= ffffc0000000000000000000000000000000000000000000 +CT= 18b544714596bb5b8cdf44ace77966e56043d1c2f857ad34 +TEST= 367 +KEY= ffff80000000000000000000000000000000000000000000 +CT= 655f794339cc12e7802fbecc980c7347f4d1e4965c2951ab +TEST= 368 +KEY= ffff00000000000000000000000000000000000000000000 +CT= e4b2fbb3edc63083323067198a82142755b71b17c78116bb +TEST= 369 +KEY= fffe00000000000000000000000000000000000000000000 +CT= 7049db867c16079e2e5f67b8c3e312e27c422825312a1aae +TEST= 370 +KEY= fffc00000000000000000000000000000000000000000000 +CT= b99c98713a08eee0be626d90b8ffa26213ae4827b08c3746 +TEST= 371 +KEY= fff800000000000000000000000000000000000000000000 +CT= 9fd2e0bf16db633f2f587d5fb9149606137db9e1b046cc9a +TEST= 372 +KEY= fff000000000000000000000000000000000000000000000 +CT= 4827da9d43f872eef21c540b562b84c62f7d1971d99b0d01 +TEST= 373 +KEY= ffe000000000000000000000000000000000000000000000 +CT= 1618cfaa8e0b1bbfa2fa585a566820878c2b3610ec27924c +TEST= 374 +KEY= ffc000000000000000000000000000000000000000000000 +CT= 6172388acb42d044b1db51c6c0b75364a1aa3666117dd68e +TEST= 375 +KEY= ff8000000000000000000000000000000000000000000000 +CT= 0b34bafe3f2ef7cf2104f8c63b0c39ee5b26a41b10e58b40 +TEST= 376 +KEY= ff0000000000000000000000000000000000000000000000 +CT= c662e6ea8cbfd9deff8c29d9a2515bd18773e4f82e5801e6 +TEST= 377 +KEY= fe0000000000000000000000000000000000000000000000 +CT= 8d77bf29051666d07d01eec55516a906247d217670294a43 +TEST= 378 +KEY= fc0000000000000000000000000000000000000000000000 +CT= 1c6e0da1776d9476e7ba4f9e291eea3958f307cffd612c50 +TEST= 379 +KEY= f80000000000000000000000000000000000000000000000 +CT= 2970be15f7c1b961d5f5061a9561a73232481452eb80777a +TEST= 380 +KEY= f00000000000000000000000000000000000000000000000 +CT= 73f4094a3c5c2ccb33106ae50c67c0e07511181a3d3f54f3 +TEST= 381 +KEY= e00000000000000000000000000000000000000000000000 +CT= 8e57725f79e09b350450ac7d083c926c5f1656d524e9ee7b +TEST= 382 +KEY= c00000000000000000000000000000000000000000000000 +CT= 6fd51be9a91cc7dae711de881472a4a28c86bc9f94933f0e +TEST= 383 +KEY= 800000000000000000000000000000000000000000000000 +CT= 564d36fdeb8bf7e275f010b2f5ee69cfeae67ea0e37e3209 diff --git a/flint/test/testvals/ecbnk68.txt b/flint/test/testvals/ecbnk68.txt new file mode 100644 index 0000000..659fdb8 --- /dev/null +++ b/flint/test/testvals/ecbnk68.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 17004e806faef168fc9cd56f98f070982075c70c8132b945 +TEST= 1 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 798ebef822d0f7228cf6b474b918390ea0e82724938ba487 +TEST= 2 +KEY= 0000000000000000000000000000000000000000000000000000000000000003 +CT= a16d8103095a932b5a3d5826ba335274dfb4bd96b4e0306e +TEST= 3 +KEY= 0000000000000000000000000000000000000000000000000000000000000007 +CT= 4b72cc40bbff5367e31fbdd450bc9e451c170ee4b1fc3c3e +TEST= 4 +KEY= 000000000000000000000000000000000000000000000000000000000000000f +CT= 9bfed3b08cdf8a4bcc3d767d9ee26fc539e48e48889c421f +TEST= 5 +KEY= 000000000000000000000000000000000000000000000000000000000000001f +CT= eb5666359600410eec00718a57ff393a4cdfcbae9fa4876d +TEST= 6 +KEY= 000000000000000000000000000000000000000000000000000000000000003f +CT= ab4e6201ebaae47286f033bff9627d9344d157a87822a225 +TEST= 7 +KEY= 000000000000000000000000000000000000000000000000000000000000007f +CT= 8da5d19bd425087c6d2beacafca2a8dbe18522d045b4575c +TEST= 8 +KEY= 00000000000000000000000000000000000000000000000000000000000000ff +CT= 040c87bb297daee8c38d71b7001b3e1d3e3463d913450f85 +TEST= 9 +KEY= 00000000000000000000000000000000000000000000000000000000000001ff +CT= 74e5103190bb2172a0a180c5d70353bfeb81f39a1053ea92 +TEST= 10 +KEY= 00000000000000000000000000000000000000000000000000000000000003ff +CT= e5fe0170e534aff7d942ca0fd8f2a2fcc815fa05e447ef56 +TEST= 11 +KEY= 00000000000000000000000000000000000000000000000000000000000007ff +CT= 75212270d3b5c6d08eb71afa420cf2f8e1ffc5dab8fae603 +TEST= 12 +KEY= 0000000000000000000000000000000000000000000000000000000000000fff +CT= 42c36a5dcc1cc045fe7802067a8b73b97df089f24c9e676e +TEST= 13 +KEY= 0000000000000000000000000000000000000000000000000000000000001fff +CT= 61329abeaa170019a89cc90fe8b9ea90d4261bcfcbacfd50 +TEST= 14 +KEY= 0000000000000000000000000000000000000000000000000000000000003fff +CT= d05c976aaacc833e69be40087a5237859011ffe158e240ab +TEST= 15 +KEY= 0000000000000000000000000000000000000000000000000000000000007fff +CT= 5540fd36d16be95e2a6c4c73b11c6d76a729c9e240a1b032 +TEST= 16 +KEY= 000000000000000000000000000000000000000000000000000000000000ffff +CT= ca81613445336b0ac3671393fc7d63c807f0d7ee15832eaf +TEST= 17 +KEY= 000000000000000000000000000000000000000000000000000000000001ffff +CT= 97af99a98f7ab54331f7f7cc2c94452cd2504348d4d72609 +TEST= 18 +KEY= 000000000000000000000000000000000000000000000000000000000003ffff +CT= 07dd202d0507df90c3de89d4499c3b0dc9b6fc6ccab9148b +TEST= 19 +KEY= 000000000000000000000000000000000000000000000000000000000007ffff +CT= 204447e3c8beac05a99b8e74aae7a3c2379f9c4d0292054b +TEST= 20 +KEY= 00000000000000000000000000000000000000000000000000000000000fffff +CT= c49818b9db226597687f192cdc11e29a3dc2a5bb729df595 +TEST= 21 +KEY= 00000000000000000000000000000000000000000000000000000000001fffff +CT= c191c1a79c137eb64f4d7c6cb594f15e96d0127bd1b246dd +TEST= 22 +KEY= 00000000000000000000000000000000000000000000000000000000003fffff +CT= 2289cc46f9de66681aa138e78d01507947cf9c58d67e4048 +TEST= 23 +KEY= 00000000000000000000000000000000000000000000000000000000007fffff +CT= 9302feb6efd6b7f7137be989654a3a01199e71a64daa7d7b +TEST= 24 +KEY= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= 3d3fd10220618026ba0c250abc381d77b27afd2ef26f2d3b +TEST= 25 +KEY= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= 2dc83ff60a855626d7c601409e2ac85bbcdf042462cdca74 +TEST= 26 +KEY= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= fd5eb8492e36ba0aeaecd4a10d602911340a4772c78f17dc +TEST= 27 +KEY= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= c1ad86959cb2f9b751f214bfd21f1508faf90cf9e80b65e6 +TEST= 28 +KEY= 000000000000000000000000000000000000000000000000000000000fffffff +CT= c430a6252423223eabd4910107a392108b05e26adbe615b8 +TEST= 29 +KEY= 000000000000000000000000000000000000000000000000000000001fffffff +CT= fd55b63adbca4094f2fc4cc8cb32bd3aeacb9bb1f3a368ea +TEST= 30 +KEY= 000000000000000000000000000000000000000000000000000000003fffffff +CT= ce468feeae19931fbb6402945e031b8b4578b31260c0941d +TEST= 31 +KEY= 000000000000000000000000000000000000000000000000000000007fffffff +CT= 679b4af428a2e300582496b5ac1e729dd304d96bd8a03fd0 +TEST= 32 +KEY= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= 1e36cdbb7a714547e9e25ce01461a1eaf24277cbbf9d4c46 +TEST= 33 +KEY= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= cdcb14ae6e5ab0cbfc67b5f231d7d9f147e7db5d10969501 +TEST= 34 +KEY= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= 2e07d317ffaa333badf351f1bf258a0d2447c872cf6c64a6 +TEST= 35 +KEY= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= e48e02a6e80b49ea5f2c7b798037424c9501e833899e0d6a +TEST= 36 +KEY= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= ccd61d31382aa76e99027c2cf330f8b66515da02caf701f3 +TEST= 37 +KEY= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= 4ff9d344e05acfd8a8da91c6816b7adb4f8aef525cd5002a +TEST= 38 +KEY= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= c8b76143267d99eb745396f50dcdf4b8be4f722cd05a19a7 +TEST= 39 +KEY= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= 37680fc7edb5e011f1733a2f109d3ff473ad5eb61b12450f +TEST= 40 +KEY= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= 642507776daddd36c386b841f6cacadc815bd37ac78a5a52 +TEST= 41 +KEY= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= 5a0d76215409f8042af30623bab72036295a5b5966540063 +TEST= 42 +KEY= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= ad2d3cc2a6a2466843d9a4e51ac89f5762a4b10828017421 +TEST= 43 +KEY= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= b96954aeba30314ac81f7068f73dff25c883dd567f01cbfa +TEST= 44 +KEY= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= 2b91453edec6ceea855d1e45a730a2f4e06de54d781f5dcc +TEST= 45 +KEY= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= ea30ec8b010721e20ff6517957ea9480bcc1a59cf8abfcfb +TEST= 46 +KEY= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= d0be1d4ab04802aab7c18ef22684f36bb59712643ce617c4 +TEST= 47 +KEY= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= 3793783529dd9e54cec83b34d940c8d7dab25b9713acd9b5 +TEST= 48 +KEY= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= fd9667d8207c06a2f840a3a59f1e914cd10e58056d44ab4b +TEST= 49 +KEY= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= e37e8a90e9ccbafe86082594e844c3d8336240091b6c1254 +TEST= 50 +KEY= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= 2103a8a8c2371ebcccbaa22b11e89956f961bce5b23e38da +TEST= 51 +KEY= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= 172617c6de9faf12f3efcbde34d0956f0dd18ff183fdf068 +TEST= 52 +KEY= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= 6f4a5e467b457b7579e57b6bb5669705bbd6218d4f1aba19 +TEST= 53 +KEY= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= 5030895a1961c45a1d4cc524400505ce8761f8de8ec96007 +TEST= 54 +KEY= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= 2eaba2f316c226535a0c5c7d83bbc501f0109ce12c9ef1f1 +TEST= 55 +KEY= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= bb8b84a806edb02dd3f754018a680c8a4bde15b7c02cf94d +TEST= 56 +KEY= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= fc4c672a3c41660aaf13fc72df413148784ebdd51ab4dd4d +TEST= 57 +KEY= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 7312a1977c418b8a10560f343dcf056c4ebd4d12a4b756cc +TEST= 58 +KEY= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= 98d8e5534c7a9484450b4b71028cff6648b48f7736ba6c06 +TEST= 59 +KEY= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= d133bc8b063c398c62b91f0a5ef4cf9d4c067603c24ac0ea +TEST= 60 +KEY= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= 21d71c5bf645a6a598c716e088560b101deeb34c14e07049 +TEST= 61 +KEY= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= 2c97cfcf1ac2a3aef2931ef8ca743976506edbdff21b6c40 +TEST= 62 +KEY= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= ba14c73882d5bd14382a3887d90497099a2aca30148794a5 +TEST= 63 +KEY= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= 891d2ac105d8fe964bd5796cdffb0c242a07a2b0c96fff92 +TEST= 64 +KEY= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= fd8713046ddcf5c9eeeea5f16e3d24fde2d53b1ba5ebef26 +TEST= 65 +KEY= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= bd9c603f6e469c7b4f1996c589999eb6e23ffbb2a2446363 +TEST= 66 +KEY= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= d79a1435ae371add0d0af396118d54c7ffc70e818a6c0ff2 +TEST= 67 +KEY= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= 599c3ccc06e203e6c6894ce08c344c724a87657510030791 +TEST= 68 +KEY= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= 8480119cf1f8176b88164f9afe3917ea10aa7221f4c3ab32 +TEST= 69 +KEY= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= 78079181c2e97ab02f6c22820ea3fb5840b2f04ae31a5075 +TEST= 70 +KEY= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= 7d7fd43df00f12fafd714f2b0a001f6a9055adaa5d067c7b +TEST= 71 +KEY= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= 2d563547d21c1c5d0ed994b127f274241d49b9707338de9d +TEST= 72 +KEY= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= 38dd31add84e5058b6afa19c812722c683eb3c5108222b47 +TEST= 73 +KEY= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= 6dd7414393797c28a387503222e817c1ffdb971e46218f1b +TEST= 74 +KEY= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= 7889a3cac6ff67a95248e1a2185aab3a9e0f675babdd2955 +TEST= 75 +KEY= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= f3532ab5a3c5523a88b180a744ec53090ff86e39b9ed7760 +TEST= 76 +KEY= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= a9f49c2b67d9f3e61f47e0310a3234a619d5befbf14a62c7 +TEST= 77 +KEY= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= b383e5bb1dfe61ef9297d2d8edf37f4b13c2a48e5f8ced77 +TEST= 78 +KEY= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= 44a59f3824052832e96bbd9c5aaa1ce79cbf5f03e4cd7f07 +TEST= 79 +KEY= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= 25fb354845d148cf63b35bf7af1e471b42f80cbd63916fac +TEST= 80 +KEY= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= 207019a6440def4e0459a4f3ebdf79b963e64494e89711f5 +TEST= 81 +KEY= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= fa8663761ee17f4ed6ca908ffc756450b4f9087b31897f33 +TEST= 82 +KEY= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= d7b5cbaa8754a6e0776479560871e872a1a6ead79944edc4 +TEST= 83 +KEY= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= e5f05d9d618f99acb1dc49b5b5eb9eab74fcea7bd32a8c93 +TEST= 84 +KEY= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= 37027c03875c0c936541d9e6757f10aee89a7ad26ceca0e3 +TEST= 85 +KEY= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= f2e3af960f660a216196edc603cd0951fd88421110cf4930 +TEST= 86 +KEY= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= ac7bfd89c618e39dfcde1e2dde85240ba7c4aae69c903d3b +TEST= 87 +KEY= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= 5dfdd3cec7efc5b8c83d59ad23d188cb13a47b61f4b05a2f +TEST= 88 +KEY= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= d4d7f1557574e75b9a3161eed2c90761c7a55de071be4374 +TEST= 89 +KEY= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 885fe2f52081b7ec3f5b2b8270bca51c7b6944dbd3432e8f +TEST= 90 +KEY= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= aac49bcfa3c572ec241df346d210c3d4565aa5a7edfd85aa +TEST= 91 +KEY= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= 53a9e32e57ddc83e43485eae236d6e27cea475b4cd9179e6 +TEST= 92 +KEY= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= e71338de1b4004044f4fc5aba93fb07f269495fb89445ed6 +TEST= 93 +KEY= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= f9dfdf70db84ed368eb7aed034b6065692bcc204bd59ee7c +TEST= 94 +KEY= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= 2b6749d0efe88010745dd0213a0cb48843af058002886679 +TEST= 95 +KEY= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= 24342eacf3b6b304d1b8d951ebcf5066b8ebac60cf1a9ac1 +TEST= 96 +KEY= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= 2d87c76006e22ddd1e0f98a655ceae0b7235006e93c723f2 +TEST= 97 +KEY= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= 8e40ebfb62b43ee2239eb957bf44aa2603161a6226bcaac6 +TEST= 98 +KEY= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= 3a6be325426ffb2571d635fc491a45f53f5840a3b967b559 +TEST= 99 +KEY= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= 6214c00029913dda46013404cbb0d3a643c5976d44d70662 +TEST= 100 +KEY= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= 8887bdbdf34562ec223ba109b6f3ae0c8ba19a79cfa5ded9 +TEST= 101 +KEY= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= 76362e35c73d25de30735404fdb4001f5e8a0b91340bdb26 +TEST= 102 +KEY= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= 63212db2e7794019e5568c5b4e378f5247d5b3231335a31d +TEST= 103 +KEY= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= b1ea25935f8ccfe662647e7066cc3321b5c8658ecac3ab86 +TEST= 104 +KEY= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= 8fb5ca424c7d1378ce789ed624942412462b738428947a8a +TEST= 105 +KEY= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= 3111bca14adeb9f3391ff5b25743b242fb57d72decbd3eba +TEST= 106 +KEY= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= ffb1ac8b5eadc35960735198ece7a49ba6f092bd03deb47d +TEST= 107 +KEY= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= 238fd21f131a4f39a39761e2003067ef02019cc17cbb0343 +TEST= 108 +KEY= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= f395d3d875b8e32b657b16f0cdbba0908b35f0d935108482 +TEST= 109 +KEY= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= 5e8854d58115995a86d603a2bd7a8ba68a73ce8912b7dc10 +TEST= 110 +KEY= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= 37b665c0307651bde43dacb45955ab12d9fedc4d4e193ba8 +TEST= 111 +KEY= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= fc519ebb121fa50366a0ec1da4842623e2d397b6a6664708 +TEST= 112 +KEY= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= a5499f3b78410c99f3a2f18fb72ab582792b508225009dd4 +TEST= 113 +KEY= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= 7372a5a11029e5079eba57a5099aa5852592730956191256 +TEST= 114 +KEY= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= 00afbff338f0b0d09f1c8eed36235dfa9824db752f150ecc +TEST= 115 +KEY= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= ece760048f1f27deefe9c67d9f1b5a84e0e1cbf2df6162fe +TEST= 116 +KEY= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= 8522a3c20083c489627b010e42d24464e68926c7483cb987 +TEST= 117 +KEY= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= 4782170e36077d114ed17e99c3e77c60ad66bccd74855cac +TEST= 118 +KEY= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= 791b5653d71ccfe1ad45c5f0048d483b9429cbc8c444d53b +TEST= 119 +KEY= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= 5a1691dbbf48f01f5f1c2b794f10f855e0eb1d5502941e0f +TEST= 120 +KEY= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= a2d599147ee73bc9f70c87b7442a7bc87828ac06b710b873 +TEST= 121 +KEY= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= 91bd87d4b242bcb251a815d7e740561ea7f8816b4e0cbef5 +TEST= 122 +KEY= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= d1489fb1743e30a13dafc0c8f112d6f2a25a32dcca34719f +TEST= 123 +KEY= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 1e857a4390a9d782fd7a4c7423fd65d84c6bc8c72bef6341 +TEST= 124 +KEY= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= a02b1c7039ecc78554d2fbe8ba4b78ce1183b01d24a8833e +TEST= 125 +KEY= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= 7e92db44a6c2549e9c2c97a06eaba599d5f13190a24a7a92 +TEST= 126 +KEY= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 59f5ae7c04e6897a403b33829823bda0809c3df867699f35 +TEST= 127 +KEY= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= a1da5787f9fdd37850080defd37cc698d849f8210809bcad +TEST= 128 +KEY= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= 89fef8a5233c490c631ac4068d3a9e80197aa9abc08aa80b +TEST= 129 +KEY= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= e8cfce9191391c88b9b513b4f2d954818b8a02c9b957f239 +TEST= 130 +KEY= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= b177068b260c43e887e0d62788cce498a17d086881d897e6 +TEST= 131 +KEY= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= be5fdd04569b73137d3543ff013611839f10f2862b59b82d +TEST= 132 +KEY= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 70799a8743913f49e38d5b724bb92d6d245b02316706cf16 +TEST= 133 +KEY= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= dfbfd6b13910fcbb4ed41687f46f0e306d5e414097599511 +TEST= 134 +KEY= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= 1640bee22781b22b1fa7fdfd662a28433cb6d853abceb713 +TEST= 135 +KEY= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= 1d700ebe7600590a1d5fcefa8a5bcf38b843a4268ecd8cee +TEST= 136 +KEY= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= c48942fd160f36e6ca9e98f67245781e999f3e6531e4ecef +TEST= 137 +KEY= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= b61830068d878e5afde22460b547193dd52fe6195956da64 +TEST= 138 +KEY= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= 634c37901811fb3450523cb5ddb2930c568cb142e8febf43 +TEST= 139 +KEY= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= 61a321270be50681084e3455468a4e401c8a130b8c926a9e +TEST= 140 +KEY= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= 5d6f3cb420804746e6a07d089d017566895304fa247a8dd0 +TEST= 141 +KEY= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= 00ebec8f06b6e3c789497b5007a3e67a8e9d27a88570eb25 +TEST= 142 +KEY= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= c0398fb84a10ad0fbbafa74af3aad3f221e037be0f48490b +TEST= 143 +KEY= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= 1b8d55089663ab60769aa8067b2fbc2ac40314004a58c3ba +TEST= 144 +KEY= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 052700e163a45658eeae1cf95ee49d385b575cc2270ba0db +TEST= 145 +KEY= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= d8d05a742af3010f44ef8afc1f4264f843a5f76cfd705b37 +TEST= 146 +KEY= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= 64f49ff0619a7304d4db251e796763fe7a7b03bc34e2016b +TEST= 147 +KEY= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= f335b7bf33fb0408783b148279991df9e5919fb4955a6ff5 +TEST= 148 +KEY= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= 1a51be896c28677d43e757f2d7726f8657fc4a18c25be9f1 +TEST= 149 +KEY= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= 30678d0b3c456d502819fce5eb20079221fd6e531a9d79f3 +TEST= 150 +KEY= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= f7fc924a04790047202d2f91207b9fc6a5df49a7e43ea2ab +TEST= 151 +KEY= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= 25aed76faa97e7405d5d697bcefae46b52f82f75a47fcd05 +TEST= 152 +KEY= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= 245be1994e634b1aeec64e0e9d3e5fef4dc6a4899bbc2012 +TEST= 153 +KEY= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= 410ca7f4e018edf5e56b02715bcbdee867a507ba7e413957 +TEST= 154 +KEY= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= 4a6bab56772ae43dd200f8b46760af24bf4391089fdea6f8 +TEST= 155 +KEY= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= dd7d2904c2e7cd3f3058ab6f85995a22e891bec683b3e29a +TEST= 156 +KEY= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= 9e8dabe83102b55192a5b36c44e323abf91d08dca4602945 +TEST= 157 +KEY= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= 390daa63c8332fefcede40538ffd6d9d9b88db6aef5b1f16 +TEST= 158 +KEY= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= b599c5e31d59bc01cf9c4f3f7c2f0f4b502597de85c42cce +TEST= 159 +KEY= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= ebae817c5a878690e4c89712addb7241a460a575c67e1f58 +TEST= 160 +KEY= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= 8b444c2c4b62e5f12338cbedd4f95902b0ec6c187e4bf716 +TEST= 161 +KEY= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= 436e208e17f419972836155c8f5d1a61d3b07238246a4c55 +TEST= 162 +KEY= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= 9d80a0630dbe904e5390c23640fb0108387d454327a73c49 +TEST= 163 +KEY= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= 8f99346c4c2b6a4fe44f7771bb56c81a595862105c6339a7 +TEST= 164 +KEY= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= 5eb0f8a7f96f349181684307c5038f38aac50531718b589d +TEST= 165 +KEY= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= 8aa907ef8d382cb2080d68dda6a3c67d7e1678d8e2aeded2 +TEST= 166 +KEY= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= d419ce94661f5bceb7196f6c86637839c88396034cfb70ed +TEST= 167 +KEY= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= f92ccf29e133c27226cd6e25e3f6bd0d838a7255888b74ab +TEST= 168 +KEY= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 2ab5e65ab9717028e35e0a019632f3cdb8aeec8bb18614af +TEST= 169 +KEY= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= 70e742a4c058e0b3d6e915e6e5d0525a01a9287a4ec38900 +TEST= 170 +KEY= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= db4fb021610f6b74d0bf7481323b5fd39bb9ede84240a97f +TEST= 171 +KEY= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= e37ca04a090e77db6621dc43598674bd5d3fe5b60d06f15f +TEST= 172 +KEY= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= a48232939052b59f04eb0c0362295cff1592c30164e09ff3 +TEST= 173 +KEY= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= 8b3aa4045abb1d290bdced7d9cfd6d4929b394cd0a606a72 +TEST= 174 +KEY= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= ef10b4e9027b1fb88c80fbf4b025ac12b09bdb2bd601c343 +TEST= 175 +KEY= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= 03ce63616aa2994b6f62d6df56c28f245616b28c16c5ec40 +TEST= 176 +KEY= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= 6177ff6d30127a8a24432fa544fbf105fef3cfcaf0221a80 +TEST= 177 +KEY= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= cae63815c31fed2383594ab1572cfbb0503f8d267297fe31 +TEST= 178 +KEY= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= 9c9c24149ff2643855f23fe254633531fd580b8b242f9959 +TEST= 179 +KEY= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= bb001d245b114f1e8fdd766f54d79737aa151f3427751d33 +TEST= 180 +KEY= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= 185c28f664d807682d15771ccf6cc8bef3a252cea8ceaecd +TEST= 181 +KEY= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= b61e8d2c7dff1c150ebc06a330212f3549e3229c1e8bc797 +TEST= 182 +KEY= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= d0d9b7727d64c6983ebe9947495e7870a1f708ca16384025 +TEST= 183 +KEY= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= e6d703b9aba25f582eaf9dd30afb222aedff0aeffdf7dad6 +TEST= 184 +KEY= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= 9ab77adead19ed670628146d14e30132bfc24e280e9bbb80 +TEST= 185 +KEY= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= b2fc96a9eb1c9789c1532cbcf03fdd29a5854031e9aa1fb7 +TEST= 186 +KEY= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= e7d67bfd4a700e69faf929ebc74a46f9e16e5f3750241ddf +TEST= 187 +KEY= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= c635e5c75ad6057c6f9a111b29adffd72b078c280c103fce +TEST= 188 +KEY= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= 80ab3ef4f3fe6afdeb621cab3d27332060737513318ab326 +TEST= 189 +KEY= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= cb5d5d58072ca521da67c6aaa7d7c0d55b09495f5b2d5f85 +TEST= 190 +KEY= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= 7c3e6b376d8c734d63dc5d373e9232fc3f6eaf7caf1bce64 +TEST= 191 +KEY= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= 414a201c3f989c1bfe0d8434e0cd634fb7aa0ff73d3e71f1 +TEST= 192 +KEY= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= d677001a7b1fd44c785c3e48bb49daf3ab447ae44e961079 +TEST= 193 +KEY= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= c3133176d538e24ec31ef89659eb736e7d07a08123b4d01e +TEST= 194 +KEY= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 299daac1f9ec59e8ace3ac2ebd0c65a0549e3e371907a742 +TEST= 195 +KEY= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 492728157fcd002558a362a1d0d45d1fbd4d535e10db4562 +TEST= 196 +KEY= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 16bcedb3dd63d88bee7d029378a242c7e43b9a0fd88f8651 +TEST= 197 +KEY= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 158d6a089a4efccae60187525f556701e39bddb17e0ce95d +TEST= 198 +KEY= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9bdce443384a255f22c9bd45b26c57a164c514168b8cd1cb +TEST= 199 +KEY= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= a9719274d3cb01cd5bcbd73e1885d543696735151475b92e +TEST= 200 +KEY= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c8727034a0210e62b59adbd2400edd72e44eb627de0ace43 +TEST= 201 +KEY= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8bd4ae13212f977ef4229ee4ff5e999963d7ea45b43d3c75 +TEST= 202 +KEY= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7dd10bba391f7176c875a9dc505f5fd0755b58b7344b9f69 +TEST= 203 +KEY= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 56f7f1bd4cf1a773654b9c401e4027f23da348c67ff46626 +TEST= 204 +KEY= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8b4bfa82933b089241f035be275a86b8fbc8e9c21deeb051 +TEST= 205 +KEY= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 58668ec9c02ed367e0562c5944849813c05588f07eb8c698 +TEST= 206 +KEY= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 268f0f5b58dd34ead240d18b79cf4e0aa5619c21f4619841 +TEST= 207 +KEY= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 10b9755a1cdefdf637fef4ac078f24eda7f45fd5c4723d64 +TEST= 208 +KEY= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4198ac8358f65887f24855b5caa148d2a27916311088a2d8 +TEST= 209 +KEY= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7ab7fc49c15842031ec4673b68ef95833b77c093761f576d +TEST= 210 +KEY= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c62046decabd999f9bd811cbaebf23c32be322f494aef088 +TEST= 211 +KEY= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f3e029858702371e0d9fbd3e8a3f25d3aab70e8642ccd806 +TEST= 212 +KEY= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f9862292aafb013d9c21b802805c8664be9af3cd7b002b55 +TEST= 213 +KEY= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4aab60a1efd4a2b06337990bd18d6a4fedaa562bb8d9537a +TEST= 214 +KEY= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c6e781e5cb79b28d4dd607efe8fd63bc689533e450218a11 +TEST= 215 +KEY= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 977f1b3b47afec7fba7eda176a5b3a2bd9a26dfebe6a9595 +TEST= 216 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7a7bdd22e031581226171c7db1d209c45e9427674c3bfa82 +TEST= 217 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 67a043762ba56deed636ade775f4cd77d86a09f159fe396c +TEST= 218 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 401d8cab357f51214bd95f01a88555f4f20c0328df23fd5f +TEST= 219 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= dd74191721ae23b35465797af61285ed8fe0007e82a9d602 +TEST= 220 +KEY= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bd781ea0b37edb279f9205b2c165b8e39a7a7bdfb4d013a8 +TEST= 221 +KEY= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0598f2430fe72ec75e730189d0a684671a697df44da50b03 +TEST= 222 +KEY= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f122e2a2361bfa23568a661616f7e777093396df695e1ac0 +TEST= 223 +KEY= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 020eff65c0852573cf618e9e4ffb33ba59ea9342b77004c5 +TEST= 224 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8623eb60e99ede1e1ea9801923c88561ebbbb9ef88479b3b +TEST= 225 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1c9a86c985fa6888b684c0da18920e2b4013299b8bcaab04 +TEST= 226 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0e43f08331945b0752e7f8722278aab6e7058e9da7bb9061 +TEST= 227 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4d65b78d075d8628b44dffe755623e603a240ab866e2419e +TEST= 228 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c4ca9b3dd27f4de1c96ebd920aade8414c743faabb150b47 +TEST= 229 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8792dfcdd244ff9c5238ccf701ed87034c1a9a92a5e2eba6 +TEST= 230 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 811ad11e3420b0a250c0b5fa738422cbca5f3c446d71f10b +TEST= 231 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a8b83135ee1e5bb640cd4ccd96a431233a3f10f3dda5e942 +TEST= 232 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3fda4c6619aa8ac1e55f8b5e6ca3e612a4fa043ebe3021a9 +TEST= 233 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 03be475e1fbca7c651e0a8b970e5eaafd1fbaba2e37b2a1b +TEST= 234 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a2cc78b083b565b4ff9178994fead16772ec3706980c8c16 +TEST= 235 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d95abb0d9199ec6673cea833f5f0312a3eeed20eaa2e77d1 +TEST= 236 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c389c2abc098d1ffef46b3ab70f30f822e37b984aae11f44 +TEST= 237 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2e3957719fd39bcfcb6583f7d101a8bd79e104d6edc5164e +TEST= 238 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8794d6276f876f54e1e1d951942fe42776ec1e2fba16db08 +TEST= 239 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0520a7268bbbfd595c899f6ec266f6d1a1f9d99f9eb50384 +TEST= 240 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a7f96272937db599d54d2b4bf2be78c9c394dc83538e8ceb +TEST= 241 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 89b5869c462d243eb38e0b6ed8f87bd12cfc581e2eddbed1 +TEST= 242 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 802dcf1760eb88128f6e233ca5b39efd56092cfbc90943c4 +TEST= 243 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 78a970aa92bf9d110c8f78388593e8b1cefcc85b928a4472 +TEST= 244 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 855dee864f6064fe257604b5e5af1a73b24dda0233ef80b1 +TEST= 245 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1121248bec9e778122e9efff619ed1d5ad0bcc81cd33eac9 +TEST= 246 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 323b21eb1767cf2835e21c9ccfab91d0f268fead0c0fbf53 +TEST= 247 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1fe2fcd5ee46662b065059ae05299184b1f4687c46a2a9fe +TEST= 248 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 20553a8f9734350abf98eeb6114ebd2d4cde613efa929639 +TEST= 249 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d255ae0cad2aded678e6ce61969c35bc7f063ec369d64ef5 +TEST= 250 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= be8526b4c8aa2488f673521e2acf7bddb0b8c3a9a4b5970e +TEST= 251 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3ce8a0df5c659c4dbb0b2cdd9f74f65e2f577a4cacbee268 +TEST= 252 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b45e9a9156a5a9df24f1a4ca0c82c0c55011bfbd9de11b38 +TEST= 253 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 84a23105d81bd2c187885be7c62d22aebd92e2efed7ef2fe +TEST= 254 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8c43f3be322d3c1df6a03c4d885f0bc779a6bef5e6bd1a25 +TEST= 255 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8fe38e78596c17d1dea45addf5776103d31ebc7651556c3c +TEST= 256 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a5840d14b4afba7d3a3de3457ea9c0dc7ff37ccf23d98005 +TEST= 257 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= 4c824570d9c9bc279ab8a7aa9f4fc096263f7af031b7db0f +TEST= 258 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= fe31416fc8dfb733eb7b29537ce24122ffa193dd606e6568 +TEST= 259 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= ae8cfe11cc24f8a50e6353cd33f02d4519c7caf9f7b5e0ae +TEST= 260 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 951b02d4852e1108354ccf12c594c75f17b5e0c1a2470158 +TEST= 261 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 9c43488217ba1459f263da291260997fae47467246a67c87 +TEST= 262 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 6741235a9b17c0ebdd9cb5554245862fc4a4ea0e5c67a68c +TEST= 263 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 6e70dfc2417875db079f91bdbb50d40f3ddea0559c74b2db +TEST= 264 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 30803117cd3ab361d36f47252a5df1135d470a33f09dedd6 +TEST= 265 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 509946e5ea34adf816022b5b37a4917abf7dffcc967da081 +TEST= 266 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 9d9c781c1b7a0bd128d848499480b039736c30019fc886a0 +TEST= 267 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 602592887c12e28e33d17f91a66d236e01a0e0c5ee6c2273 +TEST= 268 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= 642a6deb40d212a005f923c82e3ef0a7c8e84d1c5421b927 +TEST= 269 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= ad7aedafe23014c29fedd66aad2947128b4308fd152bed02 +TEST= 270 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 70fac019311ec14b2ad2a258f391796b51375f966244f0c1 +TEST= 271 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 562864e15d7ddb1f315fa65f9f353da94b49be5f919ed4f1 +TEST= 272 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= cb9596073f83d689e8730da03f3ec92d6d13005366709dc9 +TEST= 273 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= fbf81d9e6ba6a60817b87d3572da775c1c16e5e86773e272 +TEST= 274 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 674c4f484f8f9e7504659ca18a6c65b2e7ddbda12aec7c22 +TEST= 275 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= 86951648230a0e82124bab3ad90986c3168386445028b649 +TEST= 276 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= 9d79b5539897c264887e738f8258c905256af1229498642f +TEST= 277 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 1ebcd54d7843600332d2de9eac2d84e7f66332aca769dc2c +TEST= 278 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 954cd5334516c00f068da2b06495f383fc7e1d8d340f19ba +TEST= 279 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= 6a74317a162f3d28bb177c7e8b8cbc86849081792aa4a9a6 +TEST= 280 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= faf26fc8bde0ed27e161bd3513d6341319d1786147f2104b +TEST= 281 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= 6ad9a5b61eb60b12d3a2a1878a755f994e3881889d4cdec4 +TEST= 282 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= 78879c28f7d930047f5f7cdfeff18c1385617b23a822d971 +TEST= 283 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= d6c741502f2c009b01ec5967474a31943a301c7fc41aeeb2 +TEST= 284 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= f59685964087b832adc89323e9af0cc523b0585d4f1f0694 +TEST= 285 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 437792f41618d2f2899efd93a611a5ddb59ca6e442ab6835 +TEST= 286 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 1305f7401903f3cf19409f03641824e2885de217ce2632d7 +TEST= 287 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= 2c3dc3073f82bee7f686da2340a1c2ed81a773591d0db4b4 +TEST= 288 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 25b335e3307bb36c55fa9cb14e3c91428b051e387e1ee713 +TEST= 289 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= 8efbca8c943af6b3b64a050fd64435bdec7ebf0a60f1e3fe +TEST= 290 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= 9fd4a64f32ebe88560c68df2cd81a85278ae1da0b4209610 +TEST= 291 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= b7cc1a6c2c58174d58b919ad0227785293c98dc91adf5a5f +TEST= 292 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= 31698a12d6f9daea918a5656f3bd772469fe2fa193ea32e3 +TEST= 293 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= 3a500f1e624d557009771d4c591338bc3c1a90751ddd5046 +TEST= 294 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= 043c6f24e4202a7e9837153a8dcec368b9c93c60c1d137a6 +TEST= 295 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= c0e66ea02d9c269433704e79a709917c3a30b6a3628b8f65 +TEST= 296 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= 8335d6035bd6c8753e7a887a11e656ac3d08c292bd781928 +TEST= 297 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 60ee771d1029043056d1b72dff3803a21581fa952c51bfad +TEST= 298 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= 3c18bd26fc18e05e4c9a32b6502aea3202abf6342e1fc5d3 +TEST= 299 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= dcd70431c7a27bff68e38dfbce9654a424cdb7be6dc38335 +TEST= 300 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= 4c1eb7d3bf0a52860c9b58ab18353f5f85b5deeb25123ad1 +TEST= 301 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= 33a29eed22c25cd8164fb4c2052b979a5c1646a943076f08 +TEST= 302 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= d1f9a8ec278fa7fc614c7fe37be4afac048384f73a4baa5d +TEST= 303 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= 51dbaf8fd57dd46e308961f23d1cad338b6178aa0208308d +TEST= 304 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= 7de18b656a76fc3cab8cd8cb10d07a70e67cfbdb45612389 +TEST= 305 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= 8ba97186ee1f87b6bd681acaf2c91e93628f8aefd55d40b2 +TEST= 306 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= 99169215b233c8a9604757615a2292a2e0724d83ac0e1eed +TEST= 307 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= 44a5fd73f04aed25f75155920bd7c9d8176ccdcb6b3e2f02 +TEST= 308 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= 6f592dc4744c549e4c413b6de65ce864e450d323cda53e97 +TEST= 309 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= 8a4ae3edda6bec6df9da5db7ace627d4b68dac328d7f438d +TEST= 310 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= c596d45403e624ad363a64c806051275e00a5797f9fcb885 +TEST= 311 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= 7d93a7e549474fac44e5a6f6283beb1be4582903d93abd5f +TEST= 312 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= a32a253a199fbceb3b475bd63df3bd35edbcf3d64078959f +TEST= 313 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= d30c9023a66afec7516a57391397db306a00966a30162715 +TEST= 314 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 59f342b04c71f247151138f006fea13b408106fa9f97dc38 +TEST= 315 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= 4cd03fae3cee7135e087cc54f82b98f1649d40aaae386c90 +TEST= 316 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= 05b228ff68bac1d44ed1f7e4febb2315a69bd11232720538 +TEST= 317 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= 3939671543e4c1105e53670c284477351fd8d6f7a596f19f +TEST= 318 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= 8ffe61e8863c76c46f8fada1f9cc4bb2c1522e6032cfa134 +TEST= 319 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= cc8a82d6a1bda97cffc05b0900b8813621aa7d3edc626140 +TEST= 320 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= 55464551563acb16889fcc20694051fe2a2d41754677f193 +TEST= 321 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= cbac21a1ff0d673609f78ac61d1fa6ec56ee5a0c772e3ac1 +TEST= 322 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= 51838ad596e92970e98ab39c1b5ba7d3b0deb310825f1291 +TEST= 323 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= 7be896ad396e9dedd9c086dc6ad478d1abeec9c3492aa23a +TEST= 324 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= acee4700ee68eb75cdb058de134ee57ea7224c857b6fb000 +TEST= 325 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= 00f4ab32205636194f4ba06d6c42801ddbdd6ca4662d77c3 +TEST= 326 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= 2b34bb6d53a4bf6af66616eba117a30feac2351612795c77 +TEST= 327 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= ee3e3d1093ed892df0e33d75bec0edc67eb73aab16592775 +TEST= 328 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= 334094bd65072932eaf8b9d0a96b4395747c371f7df363b7 +TEST= 329 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= c29ede026b73432c02840d8e52c6b203093c940458b8e474 +TEST= 330 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= 6233e5b14517345a26167b03c37c93c8db1f956460251c5c +TEST= 331 +KEY= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= 12cd2607489a4482e6442aa5214f3181aa5207ed19e3ef2d +TEST= 332 +KEY= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= bd667eaddeeadcb2d96c5cbc98a91d863dfc3c6637f4857a +TEST= 333 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= 5eb22a1031b07fc70f9db3819951b78bd071b7c38f0e055e +TEST= 334 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= 5d7f49c226b5cdb86d3d7e3de0f2dbd683da6703fa2e6416 +TEST= 335 +KEY= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= 4c2b545b8b6ebafde40849a4982b98e4068af1f3f6f47f26 +TEST= 336 +KEY= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= aea123f14f8dbb3d454ae907fe436e653daf45cde63828a5 +TEST= 337 +KEY= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= d268f99ca72e187877a7ec4de36cf4905db16b2edf10baa1 +TEST= 338 +KEY= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 9ca81cf11aab82a510374ea0c193edc9834973daac81bea3 +TEST= 339 +KEY= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= 367085ac33b1e52b13e80a0713c4137e4a6a9be4f8524564 +TEST= 340 +KEY= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= 544027c189cbff305c0ad43b925c118bf62fa3a03dc9ec2d +TEST= 341 +KEY= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= 004b97ad1ac62a35609f27b1996b759d91763dbe2ff88d30 +TEST= 342 +KEY= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= 87b319e52054e437ba4279b5faf88ba929dc432a3e337b70 +TEST= 343 +KEY= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= e84a3a8dca284f59a827620f24563fe6e0d0c0e9a2836a4d +TEST= 344 +KEY= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= dfd88e098b908b6a40af5f37c105cfefe3242b397e17bbb7 +TEST= 345 +KEY= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= c8f985f3d6baf4dffd7803e46b5225551e3383485b1a634c +TEST= 346 +KEY= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= 932c3cc664a29b046f90a706081d672351c8a78710c4766b +TEST= 347 +KEY= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= f5602f2fce84ff61316c01bcf962b02ebac0ba4119aff7d2 +TEST= 348 +KEY= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= f84acbaffa827685dbf1587748f55ef59539fef9832518dd +TEST= 349 +KEY= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= 47c63545d7fac4c1939fbf1691d5c1aa22da5c41b8b05725 +TEST= 350 +KEY= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= f68a4efa1b16d3dad6d998a5de7d4065a210c464dfcf0284 +TEST= 351 +KEY= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= 50e485e2a6339cb614bfc94fad1544fc6512abbf81038dba +TEST= 352 +KEY= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= e9911e7a206c7017c38bb09d522cdf65b3c1029351e76cef +TEST= 353 +KEY= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= c13c871f192892db2bb2b989e9693c8e7c7aa4db1e30607f +TEST= 354 +KEY= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= a61f6969f974b8be84610dc477d13d303098a2af40e39325 +TEST= 355 +KEY= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= a874ba5ab631693283b6702971fe221c2c0e1f347838b0ec +TEST= 356 +KEY= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= c59457d6c6ac0ab7078ef6f5a0130d2b8acd142ca6f7a579 +TEST= 357 +KEY= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= c30daad6441003768b4ce533d9be113272e7e3f2de9bc4a0 +TEST= 358 +KEY= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= 4390e4024e35417e345d4bab73e88653214dfd4d5dcab822 +TEST= 359 +KEY= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= 53c3015188a115ab4a467db9f028827f93ec7a58c4c4651d +TEST= 360 +KEY= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= 222de0d7b696a13a302686c68ab186c2298b70fef99e7ee4 +TEST= 361 +KEY= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= 93a076ef5dd0f9af2d58d59e1e67859a4a8d14c01c180184 +TEST= 362 +KEY= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= ce60a423b8165b7dd2386dad011e8f96e4de81ed198dc550 +TEST= 363 +KEY= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= 87cda2953bbe4c85542484f1830b5e6372a96b3a5e98fa1b +TEST= 364 +KEY= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= 3dd5c117d54f86182daa290747cbce7d2e9eaf4b925ad11e +TEST= 365 +KEY= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= b4fd3b2644ac6b777ee864d2bb96017c660d43c45b47a8c5 +TEST= 366 +KEY= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= 8f57ba8a6f70d984523666a7b8f15f29216e0748d8d3182b +TEST= 367 +KEY= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= 7eaf1ab65da6a7798e2cfe6ad30997c12a1de9d1347ccf82 +TEST= 368 +KEY= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= 0137de7fc58f56c632346cc6e2a20b3cf9a8c1f10cf7954f +TEST= 369 +KEY= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= a3f9155f3a5eb833526566f1911af79a23e13ec1218e4bee +TEST= 370 +KEY= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= 22f2994fdb8b53d93c08664de73e764096c84dde1ae84fec +TEST= 371 +KEY= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= 7bb04987c40a4f0c472faae13f3e4c38ba18d1cd9eb02244 +TEST= 372 +KEY= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 4f877f7fe31d7c4b8ebf693adf8704648a8b2b43ebe7f508 +TEST= 373 +KEY= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= 44627c975a51ded4f4a32b3d8c5fd84d28b5c1d3682d3178 +TEST= 374 +KEY= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= c10250110fa58b1ff3448202d3bfc1dcc954f02109ab0f17 +TEST= 375 +KEY= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= 3bdc6d730afb92195f82c90fae53a3c640b2b75ef0c8e962 +TEST= 376 +KEY= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= 3db77eb69513b64bfdf56714a22420139ef9bd107e5d61b4 +TEST= 377 +KEY= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= 05300982bd9370450e1a86b5da592f3e2d98b404b434530c +TEST= 378 +KEY= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= 271159f429be9d27cf32e502544447825454f16401e959c6 +TEST= 379 +KEY= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= 4e62f65515eb00f6c831609b7ee4b19ef1fbb461a7032526 +TEST= 380 +KEY= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= 3faf7d3cfb551f4c8fb9cbf8bc440111cf5687a923322140 +TEST= 381 +KEY= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 4d175ef760d456f8df702caa0daad3cba2e783d890482088 +TEST= 382 +KEY= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= 7eda3c8413e86f5f56e308ff7afd5a9484b1cb34a26bc574 +TEST= 383 +KEY= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= 7028e9a870545fd31c58feec8704b665cf5847f73486f0f9 +TEST= 384 +KEY= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= eb8617ac2318f9b68762eba045c3ab0e13709b147028b037 +TEST= 385 +KEY= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= 4d06652378f211625a82a35293d590c622b8df9f525b71a8 +TEST= 386 +KEY= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= 5b26321d882cd95775427fa630db3e32c374e3e65a1b7e89 +TEST= 387 +KEY= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= 5f4e263155ea2bad559ae35df73bad281dc7cf69fc12f1ed +TEST= 388 +KEY= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= d9abc058bde262687d0033ca17ee081a68036fea1e3e8c4c +TEST= 389 +KEY= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= 6e650eabefd2e380ec22e9a86be071d0b0cde6034f3b418b +TEST= 390 +KEY= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= e070b6a6be5c9a445a22c514a5dfe78142f38fbcefd2ed67 +TEST= 391 +KEY= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= c97f601d196b7d974293637f5adc828a86b1b9bd62a49c14 +TEST= 392 +KEY= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= 18beb4474e7ae2b625f27bbb7f9c53820721baa17096e6b4 +TEST= 393 +KEY= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= b9a3ecb8b9531ed402dc6f5274576fd5f4d9cb9fdb4e017c +TEST= 394 +KEY= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= 0b6c347ab07dcb1df53ccf8caa26ea65af5fc74d79148f90 +TEST= 395 +KEY= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= 4c2ee5e9835baab5c249124311f35a63d48b20a0f8dadb55 +TEST= 396 +KEY= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= 483dbcd061adb80ac0984b60d3ecf7bedb75933332b6c225 +TEST= 397 +KEY= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= 5bf50760b42890546a2ae4eaf03e6441fe3e70b5d69d7fee +TEST= 398 +KEY= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= 52ef6e617d21517fc86ffcebcc45eedc30027aa1146d74f5 +TEST= 399 +KEY= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= a1df48c59ec6befd3159a4c146e24b980fd32d392cb0b435 +TEST= 400 +KEY= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= d66f1997399e7307022eb55245225862e654d76d3fd8278f +TEST= 401 +KEY= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 9c3c7ad7e72030b0b3dd60aaae8deee1008e55985c2b8886 +TEST= 402 +KEY= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= 28baf3e23bdd2fd2bc57b20b961445eeb9a8ccad5c329f10 +TEST= 403 +KEY= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= 67704825f3c81d25072913e4fd35c6dbc6ce226fddf065d3 +TEST= 404 +KEY= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= 0a4a7a20cffcaec15db97134a560cb0544f6a593074b35c9 +TEST= 405 +KEY= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= e89ffa2273c955805eb6c8d952bb9e4ddeeb9d85e82ce2c2 +TEST= 406 +KEY= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= ead68be0b4dccaf9f6600bfa4e7ea614f6fbba47c0857b8c +TEST= 407 +KEY= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= 579b94382f909408d86456447c3c22282cb0382ad7d3f0b4 +TEST= 408 +KEY= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= d91d2395528de7ba984f502b7c813b8f6b011fb6b367c662 +TEST= 409 +KEY= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= 7773b2b4f6950bb3bd0aa72f4b8d1487b3d2817bda01b080 +TEST= 410 +KEY= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= 0d65bd0287d44fd1453580faf8817b2ecf3e80e0fc3b5eab +TEST= 411 +KEY= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= 74ee03229cd28dae44e7a5ac120398177bfb35e45f82690a +TEST= 412 +KEY= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= e7d340f957e300cdc9049b3bbb75708ea59ba1250030eabb +TEST= 413 +KEY= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= 604a53f723a461212c79e602c4bbc8d5e16bc90c49630223 +TEST= 414 +KEY= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= d7d9ae5173a394d3f8d14f1a82da86e17ae1c8e30c8c78e0 +TEST= 415 +KEY= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= 64c175a883090acef5eff323436dfa0c9e44c5768c8a8f12 +TEST= 416 +KEY= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= c29ef9982c8af143f07ee423503ecfec44cf0c2e2ff2457c +TEST= 417 +KEY= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= 828d6df2aec59888e45f13758f6095cec1a9f4e81d72df05 +TEST= 418 +KEY= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= d6a7a8370680b1256e0aa60ea61a14d45390d2a6724f383b +TEST= 419 +KEY= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= 743f91379a239bb6c37415fa03234040f4005b391a629ba4 +TEST= 420 +KEY= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= e52439811da80727938d74339d999d681ebaebd48e598704 +TEST= 421 +KEY= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= 88f3a54ac286c80a5863570af12f691bf932e525eb68a13e +TEST= 422 +KEY= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= fb01e8925d0725af72e9c79345dbc7f3a2f2d6c5e27f4d61 +TEST= 423 +KEY= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= 66eaa7488b6a3f24695abd50a12b009a79815d85eb636d22 +TEST= 424 +KEY= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= f7fc28053ecc366afb4b1f59b5a325398a5e73fd506202b1 +TEST= 425 +KEY= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= 89b37ddd25b4b4a70ae0add56a5ea6b0ccf835872779dd00 +TEST= 426 +KEY= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= 1954f33470ded375b0d4eeb7ed8ac5d71b607d0a0c60c154 +TEST= 427 +KEY= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= 4af5b582707a8041b18503e6d8ddd0af8ce5546d952247d2 +TEST= 428 +KEY= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= d47cafb53c8129f3c794a6aa615aca59c2d9923bad10ac63 +TEST= 429 +KEY= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= ca8ba95b77e99915def8b342c2c66284f434d76b7da1d840 +TEST= 430 +KEY= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= 7f43843d1592e82a2b58dd8824a6da738649ffe1b773bb40 +TEST= 431 +KEY= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= 5a02e0ae9b21c738e0576554cfab5b02ca6dbb2eb793b2c7 +TEST= 432 +KEY= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= d1729291b5e59dc5bf672104ac4cf423ca77b042a5ebf909 +TEST= 433 +KEY= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= 49a7e545fa4b93059cd154dae104cb76d506fa60e6901581 +TEST= 434 +KEY= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= 5c13900fa997547b49877bc6ba3ac653dce0529baa6dd6f3 +TEST= 435 +KEY= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= 8de722da1649078a7b57427c04a8d74c66d578a71a772dc2 +TEST= 436 +KEY= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= 93a7c1a85b8c8798a0036cb87bd637a2c6951c4a3ac7f56a +TEST= 437 +KEY= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= f4a2125ee690d8b63a39a4ced12f201cb9f5ece3607f3244 +TEST= 438 +KEY= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= 1829b65ed1f10a6b91b68a8091f349f98f1417baaca8fb0d +TEST= 439 +KEY= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= 09ea4c551f8bbd7b122408c5af01fe4e076c271260ab6528 +TEST= 440 +KEY= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= ad711767a4ea151f25e998c43adace74da16ab1c6e4f85a6 +TEST= 441 +KEY= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= 50688cf3a2a4cf716f72551afd23a7c4e815af4d4182710e +TEST= 442 +KEY= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= 49da46e30d86c2521fa62c1889a714340b072ef8ddc14802 +TEST= 443 +KEY= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= f01c91114633ebb53208f92b73de4822f8810f5cfb1f421d +TEST= 444 +KEY= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= 49d4d2b1e9ee015127d2435e1ecd5bd5ef853bb8d0dc5e96 +TEST= 445 +KEY= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= 0dae4247a8b28a2d1bfe975ce5ba7872a03cca9bbcb3e51f +TEST= 446 +KEY= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= 4a5e4076c1436c006e440ad1e373aeced747f48b06c0f115 +TEST= 447 +KEY= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 7ca0fed7a8a8740cd537c0708e83c7339537d1fd85af9bca +TEST= 448 +KEY= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= f78b3434bdaf89ba74c9ca704f53124bab62c45a71559bee +TEST= 449 +KEY= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= 2eec91c88b5b009de1edbb63c70c43be0cd5891da231d2d3 +TEST= 450 +KEY= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= 79cbec2b31c751ec3941f1ac408d193d382f2c7a0062e772 +TEST= 451 +KEY= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= 4b4a0860b65836812eeb16746ee891526ba385d11343d0b8 +TEST= 452 +KEY= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= 7570f6bc5fb268641e9de6ce19bf26b50cbce7eb5730834e +TEST= 453 +KEY= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= 13cd311efe87fa257c2f251799b2bb855736022a56457802 +TEST= 454 +KEY= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 9a48d02c3535b26c1b3957140d4efd056e62096c34f869de +TEST= 455 +KEY= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= 7f077062a28254f9673911f7442188454b844c22cb020ab1 +TEST= 456 +KEY= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= dc22c1e0418a0d0bb419358fa9796a9ad6848219afba7e38 +TEST= 457 +KEY= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= f74ffa42279b96f3241ed8f085457398efc326304b1fb1ed +TEST= 458 +KEY= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= 68b34b7ba7b5e305d97369f4c2516aca146fddef720a91d1 +TEST= 459 +KEY= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= 98bb197ba7e569dde81f7af39a08fe262680c2d81d9a82e3 +TEST= 460 +KEY= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= a0fb6a8865fc52e3b158857ddc0158d96b84238249d107aa +TEST= 461 +KEY= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= c816d82a90e7e35c3effef1db5855fca65d040f1d38c02b5 +TEST= 462 +KEY= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= 5ebd0445cfc7a4ca980a458128771a6abd7b47ff245939fd +TEST= 463 +KEY= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= 2e6b76a5a6c43608ab6f8ce118afe4f565ad02886ee56c6d +TEST= 464 +KEY= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= 75a0a0fc5281833f74de40a41e6edd827bda9218fd11f77a +TEST= 465 +KEY= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= d0d531ea66299c1d7626aa6291d83e65b4c908d414ba8f25 +TEST= 466 +KEY= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= c3feece2ab3c12db805bd0b08283e0fc2cd50d563e5c1e7e +TEST= 467 +KEY= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= 0a243468592cf62da3f7535450174b8cf58fd14a29e98a35 +TEST= 468 +KEY= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 08bdbb6cbc244388e37b2940d64571f517b52cb99df71ac9 +TEST= 469 +KEY= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= f6527e859f7039c887279b53f902782f5ecb13502d4ecf06 +TEST= 470 +KEY= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= fd5dc6f195b4ee385d13ea7a611613cfeb75678734029608 +TEST= 471 +KEY= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= 5a562330c0668f324f70fec7671d35315d8ef5529d37c44f +TEST= 472 +KEY= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= db3d3bd3a2360d63df8168a9056b6eeb8066fb75a82b6b7c +TEST= 473 +KEY= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= ff32f6a20f4569f9bc3d54aaa725d215f9b3260c3b22f875 +TEST= 474 +KEY= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= 50979367d8db7d57c7125e05d78fa4c3fbc9ea21ec7a0508 +TEST= 475 +KEY= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= 33561ee6fa33dfebeccc9dfd6a542e971efcac12450758ed +TEST= 476 +KEY= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= 891316c6fc773ab5b6a413d853e8ea5300a0ed28303827f4 +TEST= 477 +KEY= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= 498fa9c73fbff6427ccae9ab5f9c85163cd84bb2af91c5e0 +TEST= 478 +KEY= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= fb0ad91c4e1d72662560a4aff23c6680c0ccb9bab77dfe4e +TEST= 479 +KEY= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= 816c39b6a3f330dbfa3a78b23e83de74d95fd6b794eb9338 +TEST= 480 +KEY= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= 30e1196bb40f0cd16604d5ee97e30075bfee87f089385d1a +TEST= 481 +KEY= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= 01f0dfe6079006ffb0cdae8cf83112ec19a379bcc6e07d08 +TEST= 482 +KEY= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= cf6a4a4434c55a78b50cc0d369d5677c4c23d4bd55464ed5 +TEST= 483 +KEY= fffffff800000000000000000000000000000000000000000000000000000000 +CT= f48cb601d2b860211f399e1ef241f265767adb1b7cd0c281 +TEST= 484 +KEY= fffffff000000000000000000000000000000000000000000000000000000000 +CT= a3d2c72c29ff39da51dcc144bf7de75c389e7f9fcaab66b2 +TEST= 485 +KEY= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= 9a49d2362a178619b1e4b82f431d64ea0bb8c366f4a92811 +TEST= 486 +KEY= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= 155115114b34884aff48f8954b73cd7b5341d82164d419a4 +TEST= 487 +KEY= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= 239b559e9e158dd0536c12b7ab7c61d7745d23bafb52e856 +TEST= 488 +KEY= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= 2e46d9185c5e619bd5abf7d6fdb93816685ee657666bc9f4 +TEST= 489 +KEY= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= b928d2b8cb519963aa25734f848798e6243e12a2f6c81323 +TEST= 490 +KEY= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= cc7697925beb45765d2f40dc8d49d65a7d5ed41a2837ea95 +TEST= 491 +KEY= fffff80000000000000000000000000000000000000000000000000000000000 +CT= 10abca44b8f4a066245f21823df8b2834b9f1b6e625bd02a +TEST= 492 +KEY= fffff00000000000000000000000000000000000000000000000000000000000 +CT= 5ea444a4f2620bc6e2b5cd5bfbd3445c6f2369bf4bcda641 +TEST= 493 +KEY= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= 815120c357f1826c88a69ba7efe6bf3272dd66f22c1d8eb6 +TEST= 494 +KEY= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= efc21d75bed2346d53e9cd5dc50ac7563787644c34267b9a +TEST= 495 +KEY= ffff800000000000000000000000000000000000000000000000000000000000 +CT= e87900906273cc573bec9e2acbda82babac46b1a84b9de3f +TEST= 496 +KEY= ffff000000000000000000000000000000000000000000000000000000000000 +CT= 9e3b47cbc657ae45975b8910c434da4695feffc0f59b7f11 +TEST= 497 +KEY= fffe000000000000000000000000000000000000000000000000000000000000 +CT= 93d53122770b3182832472135d13c3d4a62386fc40b02e92 +TEST= 498 +KEY= fffc000000000000000000000000000000000000000000000000000000000000 +CT= ceebdc69dfec52b170b48fee68337185235c7aa267433423 +TEST= 499 +KEY= fff8000000000000000000000000000000000000000000000000000000000000 +CT= 903c258f5a551cae42179116827cacc5eff5d7aee3575a3a +TEST= 500 +KEY= fff0000000000000000000000000000000000000000000000000000000000000 +CT= 42056a19038d3fbe706b5c56b8b7bebbb424bb32e5387157 +TEST= 501 +KEY= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= 68ca465d5a89e59e9632e7f0c08da80d71b2fbadfce6faad +TEST= 502 +KEY= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= 45775b6d9bcc60195f15cbd92cbef3b381e29f89f9cdb9a0 +TEST= 503 +KEY= ff80000000000000000000000000000000000000000000000000000000000000 +CT= d51405ae5981de9b315944f022d7ac6e7d870b07d7b55156 +TEST= 504 +KEY= ff00000000000000000000000000000000000000000000000000000000000000 +CT= 7c304444f35310c8a0d2cbbd2d043783573c3d3d8f0021b5 +TEST= 505 +KEY= fe00000000000000000000000000000000000000000000000000000000000000 +CT= 92f3b90b17ae8f2f59a62586cd8549a1334cf8b7f801f8a8 +TEST= 506 +KEY= fc00000000000000000000000000000000000000000000000000000000000000 +CT= 78eec8c8ac02aa6dbfbacaf8567fc6ddce0d27fd98ceffb9 +TEST= 507 +KEY= f800000000000000000000000000000000000000000000000000000000000000 +CT= a7aa8b099958cd34ad81bf2787cc9eac40139bd49391d03d +TEST= 508 +KEY= f000000000000000000000000000000000000000000000000000000000000000 +CT= b6bf367b46690ed5258ae0a0a3b88fb86d3143980c0e9c14 +TEST= 509 +KEY= e000000000000000000000000000000000000000000000000000000000000000 +CT= f75ce1ce6b77aff9dba341d97b55aef91acf5944cf64cb79 +TEST= 510 +KEY= c000000000000000000000000000000000000000000000000000000000000000 +CT= 1b27036720f40b74efa6767ecc7be43440373f94fc9b7933 +TEST= 511 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 06eb844dec23f29f029be85fdce578cec5c663ce0c70403c diff --git a/flint/test/testvals/ecbnk84.txt b/flint/test/testvals/ecbnk84.txt new file mode 100644 index 0000000..088478d --- /dev/null +++ b/flint/test/testvals/ecbnk84.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= a693b288df7dae5b1757640276439230db77c4cd7a871e24d6162e54af434891 +TEST= 1 +KEY= 00000000000000000000000000000001 +CT= 88cc57d51a2170390ef956db28009eba8ddce3e0419c5d7f584b537929739309 +TEST= 2 +KEY= 00000000000000000000000000000003 +CT= beaa7212b523ea3f0346adc03b289f619967d57c0ef66430155e9589c834ec87 +TEST= 3 +KEY= 00000000000000000000000000000007 +CT= adc8470adcb8666ab92be6550ee5b58ff58a5cddf921ca5ce61343c750b96ebc +TEST= 4 +KEY= 0000000000000000000000000000000f +CT= 4911341e51f27abefcd78a0704225ef2d801828ca7645d87bb7c1e640816f946 +TEST= 5 +KEY= 0000000000000000000000000000001f +CT= 6f19f7a4ab58874083120485789da09a9e4785ede7b459862f23792852492ef4 +TEST= 6 +KEY= 0000000000000000000000000000003f +CT= fb5f57c282eebe0980c22661f0d21fe793fd2f3e8828bd2dc4be623fec937c54 +TEST= 7 +KEY= 0000000000000000000000000000007f +CT= 5762b1bcb5212df71f2c6d26249c2c6eef170c446d186d08441ad091753f5820 +TEST= 8 +KEY= 000000000000000000000000000000ff +CT= 001d889f7bf86b05480b35fff92f0fa5b93c3b5563e6a486e40db0f0b600b25c +TEST= 9 +KEY= 000000000000000000000000000001ff +CT= 6dee032165f62ee46e408065fb40c41201f9f6f48f90f8e1ad697be14b03ad11 +TEST= 10 +KEY= 000000000000000000000000000003ff +CT= ea56cb5302074d40e72a51f916386e30fa0dd891f0beaf5f0593a4d1164d3b41 +TEST= 11 +KEY= 000000000000000000000000000007ff +CT= c5b62a0b30d3adab9402a89edfc0539e5c8dad474625f0efe85f96eac905033f +TEST= 12 +KEY= 00000000000000000000000000000fff +CT= 28acc9fa4809caf383f40ca333927e4ee922e977f9c2dc7ea72d4dddfc4684c3 +TEST= 13 +KEY= 00000000000000000000000000001fff +CT= 0bd091b364075b40097b05a3218ace5959b18723d780f2939edc4aa8c04fb8fa +TEST= 14 +KEY= 00000000000000000000000000003fff +CT= 1bd3eb4954c49cf4b2713e22a8cabd6c91b1ec44e7e77105b2088db9d2f5b708 +TEST= 15 +KEY= 00000000000000000000000000007fff +CT= 072859c0e0e992b53e88c2b24bd491504e62fd0ebe57147bf56f2340e14d956c +TEST= 16 +KEY= 0000000000000000000000000000ffff +CT= f63ebe6e4d81649a59b807a45b1b4fcb81707c962317688671571e33b17d340e +TEST= 17 +KEY= 0000000000000000000000000001ffff +CT= 4a08c9a5ff28d771033a6c8ed7556fda712223ed01b77b430648361b78dfb876 +TEST= 18 +KEY= 0000000000000000000000000003ffff +CT= 6d9ccfd0c6d8854ddbaa85c7e736cdb1152bef830b3c2f32683336d8f634e055 +TEST= 19 +KEY= 0000000000000000000000000007ffff +CT= 70b58083b89f17be7ebd550ba35b41f2abc65dbec4a8551e74b6612d67a841b0 +TEST= 20 +KEY= 000000000000000000000000000fffff +CT= a5dc473ece5a2aec848e70b3c1cbc3a5f8b93467a129297e899fae9f75cd39f5 +TEST= 21 +KEY= 000000000000000000000000001fffff +CT= dfdf76c494d5577146e4f08afbb783827e872326caa46d3fb8f1136a0068d4ee +TEST= 22 +KEY= 000000000000000000000000003fffff +CT= 30194b806b8ddb5e7feaffc2120ff2dd26980d9362277b9e6ab191546675265d +TEST= 23 +KEY= 000000000000000000000000007fffff +CT= 4a88b43cad363adfc017f5b6404ae39ce5c95e725b068acce7d00f23b6927ccf +TEST= 24 +KEY= 00000000000000000000000000ffffff +CT= 5e9613aa74b12157acfd3152800ffdeb3fb9963cc679995bda393015e183068c +TEST= 25 +KEY= 00000000000000000000000001ffffff +CT= d09727bf08c2fc2a157ae9539eb7fb5d4c94c563340afaff4fb8244bb8a913b3 +TEST= 26 +KEY= 00000000000000000000000003ffffff +CT= 70e3d6e328ac9e927e081388b3c275e3241cf93633e7ae37a3fd1e982df9794c +TEST= 27 +KEY= 00000000000000000000000007ffffff +CT= 046fe797f776b305ebee4bbfa564f7925f6d8600505ed98d4b0c75ff2a1ad11d +TEST= 28 +KEY= 0000000000000000000000000fffffff +CT= 917f3397a45a18939afc40b3864a1197b6c89935580c488b9d87bf55b84087a9 +TEST= 29 +KEY= 0000000000000000000000001fffffff +CT= 5f828ac58fb0aa76e2283cf581fb4f49067de556018d4e0262e941a6911f28f3 +TEST= 30 +KEY= 0000000000000000000000003fffffff +CT= 5de5cf15e4ed73c3c7bb46c1c57be775b7c77bce234324aa4e2d50bc20355a2a +TEST= 31 +KEY= 0000000000000000000000007fffffff +CT= 7e8e5ce9403a1a3a5f9389c0643410972f1230ead88bd1c932fa95d196e69778 +TEST= 32 +KEY= 000000000000000000000000ffffffff +CT= adaf05b607e328f233999a4e62c4d32d128bcd916174242a9edbd6108b2f71ac +TEST= 33 +KEY= 000000000000000000000001ffffffff +CT= 45fd06adc2933933f06926441cb75933434baf890a0f4fd62b47332c083ac25b +TEST= 34 +KEY= 000000000000000000000003ffffffff +CT= 2e8742e6c4d628b48033ed2633965f79904844012f9c505b2ac4531a92ae41f0 +TEST= 35 +KEY= 000000000000000000000007ffffffff +CT= ef97121ae3573ea08944416472bc92d5a26648462268464c0da472d4f57f71d8 +TEST= 36 +KEY= 00000000000000000000000fffffffff +CT= 318631b4a6f4b94b3ae700ecfab703cc622791b00d8a53f589a883e45a978e6f +TEST= 37 +KEY= 00000000000000000000001fffffffff +CT= 6b51fb7b5c61b0549d9dccf687306aebe3dda85c5f7b705cd1efa15f9f9a6378 +TEST= 38 +KEY= 00000000000000000000003fffffffff +CT= 317e19dd5f9cf705039afde3cb63f7d8aae9a62137b965b766ed869d1f66ce75 +TEST= 39 +KEY= 00000000000000000000007fffffffff +CT= d381fdd2eee0e871d8ad5afc7f13450f2b3a1e6db383888aa9ecf71371142a17 +TEST= 40 +KEY= 0000000000000000000000ffffffffff +CT= d7571f00d1c23c39cc90301a3e968c51b117aab5de917a48d90ea57b3f5d87a0 +TEST= 41 +KEY= 0000000000000000000001ffffffffff +CT= 99258c6244c22104cab80a4acba66dc40bc158e8c3105d98cc9c755b242545ba +TEST= 42 +KEY= 0000000000000000000003ffffffffff +CT= 093b9131c71624a20f38cab5a468d9c07b6f780eaa2f335670b20818d06931af +TEST= 43 +KEY= 0000000000000000000007ffffffffff +CT= af814aa2717d73d106267d5a91ae25ab1f19c4d256aae8f26d37135e91365e10 +TEST= 44 +KEY= 000000000000000000000fffffffffff +CT= bd0376ecf00a193036d15b25fd616cde26c6ad393ddedcaebacfd7d98d0c39d1 +TEST= 45 +KEY= 000000000000000000001fffffffffff +CT= 3ebbee75a84441c0e7383233cdbfd0703438f97498d28d48f5593a0486340e01 +TEST= 46 +KEY= 000000000000000000003fffffffffff +CT= 5bb5dcee97d966d4805dd32ce084a6ce7f1ea7add126b0dd43f24d6618009cf1 +TEST= 47 +KEY= 000000000000000000007fffffffffff +CT= f984d29522a00c8c1cf3eba8a4319c783ee84b1f58dbbce239dbe00ea5bb4a3d +TEST= 48 +KEY= 00000000000000000000ffffffffffff +CT= b2d2b58b3c7ade1f6e14bb7ea12962fc56d1d288373e00871e1c0d259fdf92a5 +TEST= 49 +KEY= 00000000000000000001ffffffffffff +CT= 29cb17c43cf755c069ae7e00b925cc586d997fededf5cf39a2ea666cd7d929c6 +TEST= 50 +KEY= 00000000000000000003ffffffffffff +CT= 9c757a114ba777a00761bea083b1b87b3a194d6592d74f1f7a0355650f94cfd1 +TEST= 51 +KEY= 00000000000000000007ffffffffffff +CT= f0f5f3711cbe2e6b158ab51eebf5a645500e053d654858b6ea8b613480a3edb2 +TEST= 52 +KEY= 0000000000000000000fffffffffffff +CT= ee65da6c6d69cf79c48f40b98d4a8430ef5a309195e03b61a767e4af215c6111 +TEST= 53 +KEY= 0000000000000000001fffffffffffff +CT= bcc23faaa4609bb44ac73b1953e87b58eab0ac70dfaa72fe469c5a78bc728472 +TEST= 54 +KEY= 0000000000000000003fffffffffffff +CT= 0973d4ebd15fdb5064ce73c5ce1a6f0545d64dabeb70f8435c77ad878f475e57 +TEST= 55 +KEY= 0000000000000000007fffffffffffff +CT= c194e7ea8c3d766a9d7f66432df24d975ef973e3281c3d86d2a5153635e70e6a +TEST= 56 +KEY= 000000000000000000ffffffffffffff +CT= 6168033aa9919d50bdbbc52f2186afd800bb4ce918ee983f8d3a3788a38eedc4 +TEST= 57 +KEY= 000000000000000001ffffffffffffff +CT= b24b8720df0f7f882a6edfbcd78f9a430c684b98411be17779dae9af66701fb9 +TEST= 58 +KEY= 000000000000000003ffffffffffffff +CT= 4b7d2274af0d6b29c90f7b6c6baa808d17b82cd59db75589c4de40e7aaa2288d +TEST= 59 +KEY= 000000000000000007ffffffffffffff +CT= 616c66817214ec91383a80f402282cfa3cf8bf2569f01975308de6c229c2be69 +TEST= 60 +KEY= 00000000000000000fffffffffffffff +CT= ed41f4eea84b532376becd38242025ac454f8945a68fc4457b145c821ff96a50 +TEST= 61 +KEY= 00000000000000001fffffffffffffff +CT= e992220cfc9e26ed5eb4ab91a4effc522b4794d69e45cf3877466254703087fc +TEST= 62 +KEY= 00000000000000003fffffffffffffff +CT= 82e3b00a6b9524e68c520e9b947d897a8a0509694c2e9a9209e0934f01fe578f +TEST= 63 +KEY= 00000000000000007fffffffffffffff +CT= 321a29ff1ac32ccec3b9501898560f92a4eb010de2e4a41b36ea27ffa3606055 +TEST= 64 +KEY= 0000000000000000ffffffffffffffff +CT= df37b596c05ae33f2150fac22ddc5d2bfdccd6907aa2752a601a337c104568f7 +TEST= 65 +KEY= 0000000000000001ffffffffffffffff +CT= 33d60c0b39e30216f868d0ca5059054c1caa8bffbda67e7a2e14d0827fd08e40 +TEST= 66 +KEY= 0000000000000003ffffffffffffffff +CT= 731d08cc4dd46c529004835659f190eef67ccd196dc1ad25245c29c5d504097b +TEST= 67 +KEY= 0000000000000007ffffffffffffffff +CT= 6f11f886b7bae2f1075134cacced205274f0112211e9c61391cfd920f746419e +TEST= 68 +KEY= 000000000000000fffffffffffffffff +CT= de97d6691ba80061d29dbcc5fa16b13e5c8aebb2a06602adee095e4091a33671 +TEST= 69 +KEY= 000000000000001fffffffffffffffff +CT= 9e11269790fd3abbb23ff5bbca9550e1b2308d9836b6044cde40c6ecc54b9ce7 +TEST= 70 +KEY= 000000000000003fffffffffffffffff +CT= 1693599feda4ecb3956aff524d56f6b148f19ddd313aa48d132bd348fdd425ca +TEST= 71 +KEY= 000000000000007fffffffffffffffff +CT= 2ec480930f6f2567130fc7b01f951a57447a705224f9f95863c609cb0e030091 +TEST= 72 +KEY= 00000000000000ffffffffffffffffff +CT= 5ff1dd657669382c80ced925e172b4af0192361a9daedb034fc9b4890617463c +TEST= 73 +KEY= 00000000000001ffffffffffffffffff +CT= 78f19780c713298b800ac9d182faac8f1a94f5e929998e79f8c8dc4be0fe884b +TEST= 74 +KEY= 00000000000003ffffffffffffffffff +CT= a99fbfcf25307c3366ee7490d5a01f8eb44a9eeb25437c2422d053a729c5cc32 +TEST= 75 +KEY= 00000000000007ffffffffffffffffff +CT= 2e87d6263620b5e8a399954986dd456c469ecb5940a47056676fd4f481f11807 +TEST= 76 +KEY= 0000000000000fffffffffffffffffff +CT= ca4185f5a1c6b45613baed53445dfaa2dcd940c004ce62f89a67757f4986cfbb +TEST= 77 +KEY= 0000000000001fffffffffffffffffff +CT= 0eb31defbffe80982b1500038fc0d3513155659bd375af82f623583be11351c4 +TEST= 78 +KEY= 0000000000003fffffffffffffffffff +CT= f976a623f383fb51e14ae4af5d1e3c500e6b4af84fe535cda80f256b149b3181 +TEST= 79 +KEY= 0000000000007fffffffffffffffffff +CT= 5da4462d01854c3f9e8d324a57df75d652ab7eb7024746ab95a091bcc4613f82 +TEST= 80 +KEY= 000000000000ffffffffffffffffffff +CT= f640eaa2e58b28176aebe6a06292c6afe21d2cb003c55f1c363f3b672a6a0c2d +TEST= 81 +KEY= 000000000001ffffffffffffffffffff +CT= 8c1f0bf1eeeaed99e0bbeeada8762d9692ab53b671ccb5507c863a06298b5cfd +TEST= 82 +KEY= 000000000003ffffffffffffffffffff +CT= a3a64d70f6e6356e34a72dd891bb5b492f0b7baef4ee9b3541d5b859043c0f21 +TEST= 83 +KEY= 000000000007ffffffffffffffffffff +CT= 23c05ac7bdaf24a301942a88774a682365cdb691029602fa3a370bfa31d97dff +TEST= 84 +KEY= 00000000000fffffffffffffffffffff +CT= 4abc18ebf5c2f0fcc99b02620e35caae3861abea2a43119b9f1a801e40e41c90 +TEST= 85 +KEY= 00000000001fffffffffffffffffffff +CT= 70cb62b40fab21c4d1dafddfc9d93b05788690d197f72d7a258100926170dcb9 +TEST= 86 +KEY= 00000000003fffffffffffffffffffff +CT= 95a54f993ee5219377ae41f8b56ba4f82072c9cf008427a1897863bbcaa1bcb5 +TEST= 87 +KEY= 00000000007fffffffffffffffffffff +CT= 4e7c2bf12e9c6a3ab015594c054a7d42dd0f23a0f76604c58396f3643a5f2f11 +TEST= 88 +KEY= 0000000000ffffffffffffffffffffff +CT= 7c1dfda62df4581710e884fc1115be1d9d70be94b1365c8f005131a23861f9e9 +TEST= 89 +KEY= 0000000001ffffffffffffffffffffff +CT= 7733f9243aede1e68f4903f85f82503706cd5bd24e456dfc1bd64b7d930a3836 +TEST= 90 +KEY= 0000000003ffffffffffffffffffffff +CT= 536d47ab835355530ab21f13a07118c09f8016cb44ca7ccaf6e646060c351dcc +TEST= 91 +KEY= 0000000007ffffffffffffffffffffff +CT= 64460a4743c40eb01dab8e0b91eff6d21abe845c0fd8a2502350d33e6dff829f +TEST= 92 +KEY= 000000000fffffffffffffffffffffff +CT= 8c3e0f81cc7d5a7ec3fd89646e7e64d7cfe744be09ca7c7b08ff0f25c66a1904 +TEST= 93 +KEY= 000000001fffffffffffffffffffffff +CT= 7ca79dc361fe5f986b6dd25e7c84d455d652cde73789366a811453b5baca6eb0 +TEST= 94 +KEY= 000000003fffffffffffffffffffffff +CT= 600878ac9ea8a4ba087b59d65cc1dd3728db43037123a20efe145d6303608a6c +TEST= 95 +KEY= 000000007fffffffffffffffffffffff +CT= e02247680741d81cbb9f86d1c6e5541c8ff892661d1dd5e39f36f2060460c04b +TEST= 96 +KEY= 00000000ffffffffffffffffffffffff +CT= 8927d289b56780bce38c54ad53f3f44644efe5d9cd216a76606d32740a740eea +TEST= 97 +KEY= 00000001ffffffffffffffffffffffff +CT= 83d1832d90bc251dd94aed2ed7d0962e228c81e8df91923a6e093019cbd54c99 +TEST= 98 +KEY= 00000003ffffffffffffffffffffffff +CT= ed970976964108d277cf776b231a621f3db708c7627d10e1628edd2b134cd51d +TEST= 99 +KEY= 00000007ffffffffffffffffffffffff +CT= 3550e1015cd7138886bc882a1966e4fc4c5735c4cb839ecbca3a8bf87b20cb55 +TEST= 100 +KEY= 0000000fffffffffffffffffffffffff +CT= 57d71325909335c0eb3229a24678d3285f8e79d039dc5edda4d26e7d8728c6fc +TEST= 101 +KEY= 0000001fffffffffffffffffffffffff +CT= 2e8e6483931175a51b42c850186f27c1ff807782cd38d2b0591cb0bf49385b82 +TEST= 102 +KEY= 0000003fffffffffffffffffffffffff +CT= e735c133e14d8dd6c699497fdf3005338b55e373dc55e2bdcf760ecc2bd98e45 +TEST= 103 +KEY= 0000007fffffffffffffffffffffffff +CT= a363c73368751959678ceb601eb609b4aee43d18272b9acb10528e2f3531060e +TEST= 104 +KEY= 000000ffffffffffffffffffffffffff +CT= 08e288b9d302d3ce5296f3807fcb3456f095e3f5c47f56abf59a01a48d6f3372 +TEST= 105 +KEY= 000001ffffffffffffffffffffffffff +CT= 3966f7c10622b23fd95586552ea296db06ba16bc62fc7928f3ee9a005266c185 +TEST= 106 +KEY= 000003ffffffffffffffffffffffffff +CT= 20ddcd43f2d5392ea20520d0a2833b417cb702e2045d194165b4c8c4240be852 +TEST= 107 +KEY= 000007ffffffffffffffffffffffffff +CT= 21ee8e782067d3353d28f1cb4a70931aa2e3f48e7a82401ebcadadd3ab8d71cf +TEST= 108 +KEY= 00000fffffffffffffffffffffffffff +CT= 794ed37bfd6b95f1802d08f6e34fbf00626b08106854efc58700de12a993ddbc +TEST= 109 +KEY= 00001fffffffffffffffffffffffffff +CT= 06f67723d1c63b82be6a90ef3863b5d6552a37aa9abd6ac420adaa10465b1bfe +TEST= 110 +KEY= 00003fffffffffffffffffffffffffff +CT= e870cf5c928985e2fd6dd023822df2aa655a3b7392eea9831e112539c333b707 +TEST= 111 +KEY= 00007fffffffffffffffffffffffffff +CT= 1f51a328c144bd2546cdb3b8c1b29f56170b686df6fcf1b948db9ce0e573bab1 +TEST= 112 +KEY= 0000ffffffffffffffffffffffffffff +CT= 7d04b9a1eee5bfc6b7ffd7193ebb32865292a2e02fe08e7821f4b4ae2280c8ce +TEST= 113 +KEY= 0001ffffffffffffffffffffffffffff +CT= ff4235d43b8a768dc17437cbda82f2591cd491a10991aea8651340c286a2fe47 +TEST= 114 +KEY= 0003ffffffffffffffffffffffffffff +CT= bef7949f3e039eb3b8ec77b8047d5c13b5b362d9eb2bbc71690e9835946ab2f8 +TEST= 115 +KEY= 0007ffffffffffffffffffffffffffff +CT= 7e4152be15b83a29f1fbd4d3db918614d178be1b018445963a4e5eaad0d5aaff +TEST= 116 +KEY= 000fffffffffffffffffffffffffffff +CT= 215e991e74b0ea7de3ce5fc10cc7fe3085c9b15207e314aef733eaf0d64aa36a +TEST= 117 +KEY= 001fffffffffffffffffffffffffffff +CT= 86c95f78724d7d1f73d4735e3149956f64e1f7d1e7ab075d4970cf732344d946 +TEST= 118 +KEY= 003fffffffffffffffffffffffffffff +CT= c0a1b8ab15305412b5e0ef0a5d8dc349c16e7bef1d0aa3d6a800caadcb1e37ef +TEST= 119 +KEY= 007fffffffffffffffffffffffffffff +CT= 38a3f967eee2db7c122b65ad52cef43a32b4285c9d026f176027c9ad0ae2563f +TEST= 120 +KEY= 00ffffffffffffffffffffffffffffff +CT= c438dddc9658a59c6a1dfec5c6f8d5551fc84b3a760804c287828d306ea440c7 +TEST= 121 +KEY= 01ffffffffffffffffffffffffffffff +CT= 83081f7ffb08c081f4a7b79284f31d2096659416cab9d2c1860a3f285d60a53e +TEST= 122 +KEY= 03ffffffffffffffffffffffffffffff +CT= 553d45f1673a137096de2f9de71a37c0ef439829e1d10f5b3c30a81c93ff5d26 +TEST= 123 +KEY= 07ffffffffffffffffffffffffffffff +CT= 19c4c742699e44a51415adfe277ad4c0862955f4634f2866a2a3ebfc8223987d +TEST= 124 +KEY= 0fffffffffffffffffffffffffffffff +CT= 6de92adf84df07ad0e8ecc08dc262fc7868857a2268a2ddb333a1bbafb1f625b +TEST= 125 +KEY= 1fffffffffffffffffffffffffffffff +CT= 770987ab00cccd82882c0a1e7abf892a6b6b87285fda00b60c0fe7cb9682dec9 +TEST= 126 +KEY= 3fffffffffffffffffffffffffffffff +CT= a0e21f0c216d46dd10c1ad0433782b2c632aafb9fe9ba8457c126f6d5c3b60f4 +TEST= 127 +KEY= 7fffffffffffffffffffffffffffffff +CT= 8a8738e0880a4f6af425085e97847fb48329938182d92cda3eb988e988eb791b +TEST= 128 +KEY= ffffffffffffffffffffffffffffffff +CT= 3021fcf2167f5820e6a346b63246fc4835af46c1c21db429ced11d4a50952ae9 +TEST= 129 +KEY= fffffffffffffffffffffffffffffffe +CT= 2debb87d302e6aa34e00d6e2fbac54d1e9c384b953818f8a1dcb694742de0050 +TEST= 130 +KEY= fffffffffffffffffffffffffffffffc +CT= 3d691187297405cbf4f7961e929331c5b653a4c750816ebd7cdf74b4e99ea737 +TEST= 131 +KEY= fffffffffffffffffffffffffffffff8 +CT= d592cee48918f73858eaef91e605ca84e616481142f3878b6a5dee58ce2c2626 +TEST= 132 +KEY= fffffffffffffffffffffffffffffff0 +CT= 4055981a2438dce274a26736f0fa2bcd03474de812f7d2f679b5173696b1a4d8 +TEST= 133 +KEY= ffffffffffffffffffffffffffffffe0 +CT= f1e5533d44f24b02fada620a58c43061c7c94cf630b10f0b5a09dcd229164c49 +TEST= 134 +KEY= ffffffffffffffffffffffffffffffc0 +CT= 6242c24ed288ba0a0b48a5c44ea38cb5e50bdc5ff6470822a42ba919b913923c +TEST= 135 +KEY= ffffffffffffffffffffffffffffff80 +CT= b85ba1ddceaa9a4c18e064e5757662549452ab523492dc001b71df2769cbd289 +TEST= 136 +KEY= ffffffffffffffffffffffffffffff00 +CT= 2dbf798824152d44df7c2adcc60030570eff952401ee3afc377ad7fa379492db +TEST= 137 +KEY= fffffffffffffffffffffffffffffe00 +CT= 40b6c385c560f66dce6327549bd05c7ba17c38cf5404dc6a44f96f40b0ae1469 +TEST= 138 +KEY= fffffffffffffffffffffffffffffc00 +CT= 41e5edb97412c104c54d68f4e90eda4eb223583e758c1cbf7e9e4cefbf0c70ba +TEST= 139 +KEY= fffffffffffffffffffffffffffff800 +CT= db8b3a6ac373a3ab53e520a5882e0fabe38b32cd44428f273e0eb7230dec1866 +TEST= 140 +KEY= fffffffffffffffffffffffffffff000 +CT= 56aecdcdf15d25aa4a6466c254b9a30aac8b972450e2a53f11d21386f946fe99 +TEST= 141 +KEY= ffffffffffffffffffffffffffffe000 +CT= a7ad2a3aa4c24ea2f6e265d88eb801555ae1459b90bf36daab1744ce5dc051d7 +TEST= 142 +KEY= ffffffffffffffffffffffffffffc000 +CT= 75312fc8333e10b33fc5b952cb2fd5381a62a68b6640b0d1b14ef5728b277a15 +TEST= 143 +KEY= ffffffffffffffffffffffffffff8000 +CT= 43404a17e5efc0b4101ebb49ea1b7d1c6e25350e31f11ef0efe4960ce85af0c7 +TEST= 144 +KEY= ffffffffffffffffffffffffffff0000 +CT= 493083abed57da42ac8c4790ffb228cb5c518e241488cdc9ebdeecd93736a570 +TEST= 145 +KEY= fffffffffffffffffffffffffffe0000 +CT= 6043c8dffc5d6e1b97ce05e87d21661a5699b8425fdae8493571288c8be57802 +TEST= 146 +KEY= fffffffffffffffffffffffffffc0000 +CT= 7768dd6a48249822cf9f2085438c96154e7967216b264814c07d5e0667710c5b +TEST= 147 +KEY= fffffffffffffffffffffffffff80000 +CT= fe4f152432b93de3deb646cc94e6e1310d6d0d352203fc9e52e2dfc88084c232 +TEST= 148 +KEY= fffffffffffffffffffffffffff00000 +CT= 473edc476d542aa7bdee33079d8048930f11629edb2c1eb48939c2ecd072332e +TEST= 149 +KEY= ffffffffffffffffffffffffffe00000 +CT= e2999b29d7f67ecf77d862bc5f817017693606b3196f1421cf10a673de1092be +TEST= 150 +KEY= ffffffffffffffffffffffffffc00000 +CT= f357dc244fb2f48d7de6854e77c3632d290ad94fd2c97949f4c587a1b85e65a2 +TEST= 151 +KEY= ffffffffffffffffffffffffff800000 +CT= 6a60c6628bdbc477a4f96e2d558846bbf5914c484a8cbf88ac3ae24de2c4c1c4 +TEST= 152 +KEY= ffffffffffffffffffffffffff000000 +CT= 4eb11e5b3fd0067b4ee556a7af7765d963bc631b28a43aa47206cfb17255566d +TEST= 153 +KEY= fffffffffffffffffffffffffe000000 +CT= d18a6871183f71f1f04d09de47230e17e96861005423af76dc0827e5dd9584f4 +TEST= 154 +KEY= fffffffffffffffffffffffffc000000 +CT= 06b5dad73398bc64b1b68785c46cf0d191da2dfd1bb56f4491774082e04b5d45 +TEST= 155 +KEY= fffffffffffffffffffffffff8000000 +CT= edbd44c8e770e329753e4cc918483af5034f5fc3d9124ecaf3818f27922eacdf +TEST= 156 +KEY= fffffffffffffffffffffffff0000000 +CT= 6ab8b2bdf9dfe9a45ed1cded524a8091388655be9f902e4e8197394e959dda2f +TEST= 157 +KEY= ffffffffffffffffffffffffe0000000 +CT= 6cd4fee098a0a0bd07c4d5ef7171e61f4b74405e141da29035d557f6d207715d +TEST= 158 +KEY= ffffffffffffffffffffffffc0000000 +CT= 24d17bba3f918eeb7d8c565158004f42bd50febe37f52284b18bafb1f686f7fa +TEST= 159 +KEY= ffffffffffffffffffffffff80000000 +CT= 543064b213a286c82b0300b22ff20ef76210ffc44787eabd99d25fc989854be7 +TEST= 160 +KEY= ffffffffffffffffffffffff00000000 +CT= 9193c63e526a76ab390cd1c88669aabb5e8e0b940e3318a54227cfb33a7ca257 +TEST= 161 +KEY= fffffffffffffffffffffffe00000000 +CT= ecc8ac6723c166f91d30a6b2be899e32c2554d61d4c8864e725e601b3e0cbc4d +TEST= 162 +KEY= fffffffffffffffffffffffc00000000 +CT= 1f319bfdc44966c591985f9d2d22d7eb53c775abe7f9b2187bac321558deaac2 +TEST= 163 +KEY= fffffffffffffffffffffff800000000 +CT= eba5799ca078452e287e3a1271edf2b22ab42df99cd8cb4625d443721cf703b6 +TEST= 164 +KEY= fffffffffffffffffffffff000000000 +CT= bae29263877dc0c15fd372381b10297da5939fb57536857f8eb974ad4b695971 +TEST= 165 +KEY= ffffffffffffffffffffffe000000000 +CT= ac118ca51507da829b4925348f17fd04b396e757c4fe3bc2309f04cd4cec136b +TEST= 166 +KEY= ffffffffffffffffffffffc000000000 +CT= 2b28dbeb358bae28eda5d67d27f1749bfd938c3ec3c939fb69554cc644c882af +TEST= 167 +KEY= ffffffffffffffffffffff8000000000 +CT= d5401ad438d3a63a48986212de53eeadc02b90dcd2f29e59fa5c5248b19221ef +TEST= 168 +KEY= ffffffffffffffffffffff0000000000 +CT= d239cc67dd95612fd23def9f56227e35df74679a0ce8b6a708c37b134ae2d7df +TEST= 169 +KEY= fffffffffffffffffffffe0000000000 +CT= b6872ea353ffbf5c693e732626292491b18e68bf5e7811800602a4430d7aa3c1 +TEST= 170 +KEY= fffffffffffffffffffffc0000000000 +CT= a6f866af6e30cacc7d3db50a6a2ecf4f59197280481664711c40a06817c347e4 +TEST= 171 +KEY= fffffffffffffffffffff80000000000 +CT= 3aff51def7c27c3bdba7bf7a2da14b9b9168eec1581455954b3b22cdd28a4a28 +TEST= 172 +KEY= fffffffffffffffffffff00000000000 +CT= 155d6c1771f7337215c88cb13267b4a82499a8898314d39d0e9a78a15846124f +TEST= 173 +KEY= ffffffffffffffffffffe00000000000 +CT= 635118de832dcbeaae73006cca4af3b5009bbc189dfc2c85ee8db1c6c299919b +TEST= 174 +KEY= ffffffffffffffffffffc00000000000 +CT= 71ef9af95a2f8b68ee1bc1e834bf91083152c3df2c9813a015c6ccdc73252df9 +TEST= 175 +KEY= ffffffffffffffffffff800000000000 +CT= f81ecae032b38efac2b278d64982c609681bb101c68d46685773392eeb354bbc +TEST= 176 +KEY= ffffffffffffffffffff000000000000 +CT= 4936817fc3fe95cc6b8e7738f4ac07aa254618bb2ce5dfbdb7441abe200453b3 +TEST= 177 +KEY= fffffffffffffffffffe000000000000 +CT= 6327d7007fefa04d9011098ef3e5aaecc30e006d2b17127aae732d39d1847e6f +TEST= 178 +KEY= fffffffffffffffffffc000000000000 +CT= a4012ba449805bd1d6cd62b721dd77b88e35611709f54fd45f625f8bed83dbf9 +TEST= 179 +KEY= fffffffffffffffffff8000000000000 +CT= 0374dcf6a29bb2f22d6c2619134a8f9f75ea182b60f2021f6eee0c01b671b990 +TEST= 180 +KEY= fffffffffffffffffff0000000000000 +CT= 61d3cc8931b72d9ace1298ea5dbb5a575652afccc37b513924af7ef8eb99afac +TEST= 181 +KEY= ffffffffffffffffffe0000000000000 +CT= 23db1e76898d26954c96663194fcb4d448436ca83b938a18f743d58664025b4f +TEST= 182 +KEY= ffffffffffffffffffc0000000000000 +CT= 78a7a9a3f5596db714a9d3bc0458d55440d23089133e7701b6938e6e489da799 +TEST= 183 +KEY= ffffffffffffffffff80000000000000 +CT= cabc2cc3127d8eb04ce11b17587ed6f7f343d446b23d4da436bfa716ee104d32 +TEST= 184 +KEY= ffffffffffffffffff00000000000000 +CT= ba0a6b4b664e84bae1a76f1a811c2af624c67f933128d6e8f0d7cf8985989132 +TEST= 185 +KEY= fffffffffffffffffe00000000000000 +CT= d4dfd7edd3b70f855231e2885857aaa9d7c90399210e7985c4718d21d5660b74 +TEST= 186 +KEY= fffffffffffffffffc00000000000000 +CT= 667ae0af893a9834a7f8ebf7c1ac07e4e7965ffa27af29d4f21b9be1be93185d +TEST= 187 +KEY= fffffffffffffffff800000000000000 +CT= 537499060698cd3fc3c341ac629df3ac016254b7a195a4ccb85dc7d9beeda9ea +TEST= 188 +KEY= fffffffffffffffff000000000000000 +CT= af873b752155b079b6675acf0ca38ccc558266f660ff14566955eb5d2d9c9c95 +TEST= 189 +KEY= ffffffffffffffffe000000000000000 +CT= 82f4d9ae4d7406a157d7611125803bea2b758c85dc7ecbafc18e27cab04b51f6 +TEST= 190 +KEY= ffffffffffffffffc000000000000000 +CT= 1c900cfbb53ae4b900240e88674568bf47125acd507286307d1a2adb5d7c2427 +TEST= 191 +KEY= ffffffffffffffff8000000000000000 +CT= c1866458586df89ada776b63840b81b80fc8530ee8c6658b132debe49a380ec3 +TEST= 192 +KEY= ffffffffffffffff0000000000000000 +CT= dcbf4bc78e5f0dbf1bf15b86e5ff6ca29abed1f0f7cb4adb1ed4675dcd9ffcaf +TEST= 193 +KEY= fffffffffffffffe0000000000000000 +CT= 46ff171a328952d133b8604a9b5a77f3674c21b032b2dc7e389b53ae5e21f996 +TEST= 194 +KEY= fffffffffffffffc0000000000000000 +CT= ef2e2d7137135c2da6be7fe97169f9935216efa5c4682e9a13c376cfd8b2c617 +TEST= 195 +KEY= fffffffffffffff80000000000000000 +CT= 8ac5c5e3ee561c6c52f57c3dad48376895a8cd71e71e97f7fa407e00084df4f0 +TEST= 196 +KEY= fffffffffffffff00000000000000000 +CT= d55c591aaea9e00c84d29cddcd9d44d3049ced0a6ecfbef4f7190511135d9f9d +TEST= 197 +KEY= ffffffffffffffe00000000000000000 +CT= 5a9dfa726b912775586cdaee9f8d7c0b50c7bbe87b46b1e0c08b7a2d3b8e7273 +TEST= 198 +KEY= ffffffffffffffc00000000000000000 +CT= 6c7241d95cc4dbf184d8ccb5bababe4909c7c4f76ddd19ebe4c6832c17768b41 +TEST= 199 +KEY= ffffffffffffff800000000000000000 +CT= 3ff24bfdd5d5f2985b2068335c2b70bb127cd25647050603e82362b4614be972 +TEST= 200 +KEY= ffffffffffffff000000000000000000 +CT= 06fdb46fb1d4c02c2bd0efe179a62e83f1fbc28072fcb7eb4090300a716d819e +TEST= 201 +KEY= fffffffffffffe000000000000000000 +CT= 66eee49eb7669d2cb5b9c2f7cf8d0cf8f44bafb8fadb5c6cd9b52d9d745f0a50 +TEST= 202 +KEY= fffffffffffffc000000000000000000 +CT= 99b3191675b895f28235fee147fb77090b96327612b921c779c179f2c2e94d21 +TEST= 203 +KEY= fffffffffffff8000000000000000000 +CT= abd747ba46273bb4a75fa56db94a9c111681fb0d89662c78e1b382645b1784fe +TEST= 204 +KEY= fffffffffffff0000000000000000000 +CT= 1b362712fb56620f490777dce321908003893dadf614e334bcccaefa57f35305 +TEST= 205 +KEY= ffffffffffffe0000000000000000000 +CT= 2e98e489069c2222dfdbe3017ad64da0850a7f5fa79913e8af4601665fb7e678 +TEST= 206 +KEY= ffffffffffffc0000000000000000000 +CT= 90cb78b9beb23db7f3117f0a82b3b6e4cf7fd66b2c94c53c9eda29ecf0275bd6 +TEST= 207 +KEY= ffffffffffff80000000000000000000 +CT= 3bb18d4ea6c7fee7d1e0619564fb558a9b8e319fbd2e366c2fbc802a4caa9eb3 +TEST= 208 +KEY= ffffffffffff00000000000000000000 +CT= 2f55e839dfdd292fd4ca8a4f23116c7fd2ba6452f64a05b06f0c611c2a27016c +TEST= 209 +KEY= fffffffffffe00000000000000000000 +CT= 56cf97884c1533e4f765ae4b44c9dbbec9104b9b7b4a526b1144ecef20809181 +TEST= 210 +KEY= fffffffffffc00000000000000000000 +CT= 713fd1f7e91758fd24ef53a9db69241bdc89c376246fdc8a5940021594dc0bee +TEST= 211 +KEY= fffffffffff800000000000000000000 +CT= 5bb59374cc96c9de73067cb8db2bf2d5de8b3522de3bf163dface997cd5779c8 +TEST= 212 +KEY= fffffffffff000000000000000000000 +CT= 7724923200da9bb83106af148cce2b1a1d40d4627ca88db5ad844c3f4b29bcb3 +TEST= 213 +KEY= ffffffffffe000000000000000000000 +CT= 02660a5c68a18c2896d4afe5674f99b777067399cdfe93524bedd1d584b529cf +TEST= 214 +KEY= ffffffffffc000000000000000000000 +CT= 47f769e941526146e1ce165fa2d95818a89b62af232340c6aa41ebe80bbba0df +TEST= 215 +KEY= ffffffffff8000000000000000000000 +CT= f7e71788923ac86d6be9c40ff045d12ecf758a5fe0a43f8d248f5991fadee545 +TEST= 216 +KEY= ffffffffff0000000000000000000000 +CT= 0ff748f23d8a3c3a574db792ab1e273e52b5ce18caabb07c344f668310112085 +TEST= 217 +KEY= fffffffffe0000000000000000000000 +CT= 14cd5870b7a0444947ebafb0788a44fa28a2491332cccdfe4e1fdf8374b926b9 +TEST= 218 +KEY= fffffffffc0000000000000000000000 +CT= 7d85944e0362940338708943ee93525e36e17ebff9692546a8a132072633d395 +TEST= 219 +KEY= fffffffff80000000000000000000000 +CT= a253cc2ac4d4bc44411e1d0583e8a2e2170f49488cfe37e6e61ca76ac1addfbe +TEST= 220 +KEY= fffffffff00000000000000000000000 +CT= c1ec9cb78d1cd217f41a9c5ceeb7d40fc9b7c0c21f1a75ed11734bee56f86797 +TEST= 221 +KEY= ffffffffe00000000000000000000000 +CT= 7929315776e13d0032dfe0bb5ace23ee048d66d19c0b351b2ab9bc826bd607b9 +TEST= 222 +KEY= ffffffffc00000000000000000000000 +CT= 7353b369d89f83e36e9c8de6409c7c0038eaf9cd835332eeaf1479c6a767d9b8 +TEST= 223 +KEY= ffffffff800000000000000000000000 +CT= 28e93a064e94997d50ea13535e6b9b3a5af357d8d1d0e5b629462567ba7c6564 +TEST= 224 +KEY= ffffffff000000000000000000000000 +CT= 462a546cc2d5accd6c9507c4735ff4fb8dc14261206f1bfc28d7d8a6e2382c1e +TEST= 225 +KEY= fffffffe000000000000000000000000 +CT= 79642a825f7bd9d9931c436b88f3ffbe61b5c5dd961e48b1719171fdfcf79edd +TEST= 226 +KEY= fffffffc000000000000000000000000 +CT= 04df4f387caa0d76edd05b6152258ee6b93cf99cb5d93047967bb866274b3f78 +TEST= 227 +KEY= fffffff8000000000000000000000000 +CT= 6ab093ad243e912abce7a7cd1b747c13c347a21ce3faed409e050c696590e43f +TEST= 228 +KEY= fffffff0000000000000000000000000 +CT= 05c666d57405c5288f2a57b43dfbbb2c9de854bf6af4346a66ef61229917cc4b +TEST= 229 +KEY= ffffffe0000000000000000000000000 +CT= f6a8e418fbbb4564f0ef4ae9e28c17c5226dd4011d541c0a8c9c4b79fdf28bd7 +TEST= 230 +KEY= ffffffc0000000000000000000000000 +CT= 9595c6e7ba9acbc02a9a66dd8c98f53c13a96db61dcc37afe6f594ec1fab1e26 +TEST= 231 +KEY= ffffff80000000000000000000000000 +CT= 81635c4188d9dd6ca69c1eaa335eef55db694c04378c004fdda3e8d28ae0504d +TEST= 232 +KEY= ffffff00000000000000000000000000 +CT= 831637c7ca16fe8489739d77130a727d75780fb351ed15cdebf8fe5664c243e2 +TEST= 233 +KEY= fffffe00000000000000000000000000 +CT= cfdc35850815c5a66ba84ef90cab0bd6b2431f3d2e2fb23604ce69c554f2ab93 +TEST= 234 +KEY= fffffc00000000000000000000000000 +CT= 3a3962d6ca41316c2d2360e6250e789756d1791872260ba76e3bb09d324f99a6 +TEST= 235 +KEY= fffff800000000000000000000000000 +CT= 6e4d742b68d6afd78393d6ecddddbf71c1b33ffb7dcfbfb2595a86caf1e93427 +TEST= 236 +KEY= fffff000000000000000000000000000 +CT= 24571327074f921893613f931b33da4eac97c9ec25273f312b50eab0c70c68c8 +TEST= 237 +KEY= ffffe000000000000000000000000000 +CT= 8aed261b58b548faa42caf0322d2ca6a2fa9703f081f2e3a7d2ce0c96d078119 +TEST= 238 +KEY= ffffc000000000000000000000000000 +CT= 87122b92d0e850b1b014f328e2f81a1a978f3d4265f16694bcc419283e6ebbe9 +TEST= 239 +KEY= ffff8000000000000000000000000000 +CT= a96f5f3f25f730da6d75048a624a51bad63a3e8e2e897ce12b91ac65fc76f298 +TEST= 240 +KEY= ffff0000000000000000000000000000 +CT= 59b467eaa5d7947fadd2d63c6e59238bdd7b54383e05acb5bdc5ab913b7a6361 +TEST= 241 +KEY= fffe0000000000000000000000000000 +CT= 11b128f18ec6fa97ef0a89c91376d5acd8405b48a839777b5f934ef9943d0adc +TEST= 242 +KEY= fffc0000000000000000000000000000 +CT= 67014a4f6954d5277810a3911b0cb5987854e36cedb57245a2f03396ed69a488 +TEST= 243 +KEY= fff80000000000000000000000000000 +CT= c801be961baeab3dc6e1ed034022b4f0e1367444a4ce8b12f7d5326df288d006 +TEST= 244 +KEY= fff00000000000000000000000000000 +CT= a5f0829338ef20e2aec4f9ebdcf888bb6b9b29f8f8957e7c869fe00fa49c1389 +TEST= 245 +KEY= ffe00000000000000000000000000000 +CT= 03ad94bcf7b0351c819f57762d2cc4e12c4ee4c6b0f79364224e2ba90a66ac43 +TEST= 246 +KEY= ffc00000000000000000000000000000 +CT= 0aa12cbe50a16567513fbe0aa09dce8003bd5a4e3ece4153f80dd9c4b191d50b +TEST= 247 +KEY= ff800000000000000000000000000000 +CT= e6e5b7769113810664734c09b7978d1ac76f75af0e43f27bdae9162af09f5d29 +TEST= 248 +KEY= ff000000000000000000000000000000 +CT= 0a50dde99344c3c2489c8dc6e416c14aadcd3bec32114e17e1e3675a2243fc90 +TEST= 249 +KEY= fe000000000000000000000000000000 +CT= c00d6121027cc33f37df67c8ee1b420c332419e7b99ac0b4ad7548082a9708e2 +TEST= 250 +KEY= fc000000000000000000000000000000 +CT= c18c3722341040753f931786551eb17864f15ab885e81e0b8e1340fa79dad5c1 +TEST= 251 +KEY= f8000000000000000000000000000000 +CT= c56017fccdfdd70d34058a709365de4711603dd902142cfb1e77aceb88098c26 +TEST= 252 +KEY= f0000000000000000000000000000000 +CT= c910336324906794569b436ae007481cc37620d69641c4ca2c0e915772077319 +TEST= 253 +KEY= e0000000000000000000000000000000 +CT= fe253d06b6017780d061eb465fcb14c446e473915ac85bb6581a0c164d1899e9 +TEST= 254 +KEY= c0000000000000000000000000000000 +CT= ed087af794442f4fc31237f1a5cf99b1faf8475630c6282efcbc548106372a17 +TEST= 255 +KEY= 80000000000000000000000000000000 +CT= dd5f0f030eb01470daa8057151b6a5a24d694c94fc2efc0000e6a35bfb661fed diff --git a/flint/test/testvals/ecbnk86.txt b/flint/test/testvals/ecbnk86.txt new file mode 100644 index 0000000..f0b5168 --- /dev/null +++ b/flint/test/testvals/ecbnk86.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= f927363ef5b3b4984a9eb9109844152ec167f08102644e3f9028070433df9f2a +TEST= 1 +KEY= 000000000000000000000000000000000000000000000001 +CT= 44ec9f59b8b6e3b6d53c3ce7b37803a5a1dbbeb4b25d8aac68c2ed73798be273 +TEST= 2 +KEY= 000000000000000000000000000000000000000000000003 +CT= becb85a11ebb8f5c724e8cf2cd830c1ef5d689b49f2ba007c27214ee649c139d +TEST= 3 +KEY= 000000000000000000000000000000000000000000000007 +CT= 706c03d6def393087f406f761257c2c3097e2f21200a3324f5e6cd25aaa54d51 +TEST= 4 +KEY= 00000000000000000000000000000000000000000000000f +CT= 047ab0ecb3570fb81c63f3001ae2407fecd99f645981c39d1c208b5791ebeb90 +TEST= 5 +KEY= 00000000000000000000000000000000000000000000001f +CT= 92e2394c91b6c0551e1b0ecea559f245532149ebda21b7b6b433a248e850164e +TEST= 6 +KEY= 00000000000000000000000000000000000000000000003f +CT= dc33112b940443f05fa0703a11c9236dafa4e463ce131e23577c7b9540e1a7da +TEST= 7 +KEY= 00000000000000000000000000000000000000000000007f +CT= 1ff41d68cda12868fcef33d728c90e6964466fa9bd02a11626fbac59a4cc700e +TEST= 8 +KEY= 0000000000000000000000000000000000000000000000ff +CT= a204ee804924f09938adbc7c6b5031ad453b9199afa42a6331c8cac5d75467a3 +TEST= 9 +KEY= 0000000000000000000000000000000000000000000001ff +CT= b478749f874c16ceaf0bf7bf92bd93932745736d9689a6a468305fd417a8c830 +TEST= 10 +KEY= 0000000000000000000000000000000000000000000003ff +CT= 58c3a3c211830128d3656630aa6902c807dafb04882e7fadf7e77f2bf2ab1a24 +TEST= 11 +KEY= 0000000000000000000000000000000000000000000007ff +CT= 86e4ee2b6aa56268a1ada0309c0ac923f505aeab5925d3da127f292869f0c30e +TEST= 12 +KEY= 000000000000000000000000000000000000000000000fff +CT= d341f56f759430adcd54a47aa0cc8ec65c40058e1784262785d5be75c44b3462 +TEST= 13 +KEY= 000000000000000000000000000000000000000000001fff +CT= 48f7bb7a557a59f82206d863cf430429776f135bc83535e04c7f277de627c064 +TEST= 14 +KEY= 000000000000000000000000000000000000000000003fff +CT= 06a6b0ac64c7901a985610c0f7f384321e6358d6c86000141aac2ad3ad9b5dc8 +TEST= 15 +KEY= 000000000000000000000000000000000000000000007fff +CT= 37118128ba3a52ebccf1633a8ffe1f53291c8b1ad591e675fc63d2f8e6ca87f4 +TEST= 16 +KEY= 00000000000000000000000000000000000000000000ffff +CT= a76ba101c43cf99550250efb197ca976b9172676f68d5c4cb040161a19d026da +TEST= 17 +KEY= 00000000000000000000000000000000000000000001ffff +CT= dbf072ce36b1cd58864d95911c0ba45ea007770a98d7b435a8c838a58276d002 +TEST= 18 +KEY= 00000000000000000000000000000000000000000003ffff +CT= 82248e4b5bf90c1eff540c0aec828c8b5e0ffd9846b730a41c21bc101273e320 +TEST= 19 +KEY= 00000000000000000000000000000000000000000007ffff +CT= c3333af43c4774c426cac46663c971aa9c9b542f6f6b76cd127e3bdf4ba61d5b +TEST= 20 +KEY= 0000000000000000000000000000000000000000000fffff +CT= 4016018032231591fb26900504fc0c8e6c255aba1d73c85c167b1b13632800dc +TEST= 21 +KEY= 0000000000000000000000000000000000000000001fffff +CT= 458358b33676e9cc34558616530cbeaa7cf7cab602a7cb628c90ad4e76512f0c +TEST= 22 +KEY= 0000000000000000000000000000000000000000003fffff +CT= 1d67ac4902ed33bb606581f2f692ce67b37c7ee0fc3baf0ca14dbcc634f19540 +TEST= 23 +KEY= 0000000000000000000000000000000000000000007fffff +CT= 9e30447e59f04689c6f26c1e5e1908af159e31e7bc5ce5c080c4f2c650e2657e +TEST= 24 +KEY= 000000000000000000000000000000000000000000ffffff +CT= c051387578e8351d3ea9de257c1048ccb82b405785d7e4ce524cb476c88172b3 +TEST= 25 +KEY= 000000000000000000000000000000000000000001ffffff +CT= 67c89e7199e2c90593a5cabe08098629e4ba9a9d6c3b93518ee4159b23ade04e +TEST= 26 +KEY= 000000000000000000000000000000000000000003ffffff +CT= 7c3fe47c6bd84071b099e8030ee64d7e813cd9e6ac4b9a29df94e85691e10c18 +TEST= 27 +KEY= 000000000000000000000000000000000000000007ffffff +CT= 33cc5e9e045f4381b6845e0383efda6e5d512d71959ffed46ce52e8442bca3e3 +TEST= 28 +KEY= 00000000000000000000000000000000000000000fffffff +CT= 4d895f8a48dedbbe54a5becad0edf00b15f248c6c305e44e12be4f1e31c8f2ab +TEST= 29 +KEY= 00000000000000000000000000000000000000001fffffff +CT= 63f2f466a6bcc9bacce6294e01d3cd94c7144d143979eb70176372e606f4b3fe +TEST= 30 +KEY= 00000000000000000000000000000000000000003fffffff +CT= 15de0ae8f1e2d901a1226d4e57b12b126c28deb7cfdceab025973ef80f0638a5 +TEST= 31 +KEY= 00000000000000000000000000000000000000007fffffff +CT= 4fa2fcf959fabd14c354b8b636e626120248ca2bf916d444a539e8a9240554fc +TEST= 32 +KEY= 0000000000000000000000000000000000000000ffffffff +CT= 0eadef7897492a2394ac169ab862899c04c2b5bccfcd8cb7a0bab89013d102a3 +TEST= 33 +KEY= 0000000000000000000000000000000000000001ffffffff +CT= ec0b89d35d7ce47bac2bc9a1507ae4e5daa13c8bd0b26f8c663e584b3746e8a0 +TEST= 34 +KEY= 0000000000000000000000000000000000000003ffffffff +CT= 204b125d039c4e24cd8d0df00df3b4049ea8cfa0f5c28bb9beb0ccbd752e54b0 +TEST= 35 +KEY= 0000000000000000000000000000000000000007ffffffff +CT= d430d2a726a2dcc97b549847947d88fe46669d2763dddb6672da6e091aaa5d63 +TEST= 36 +KEY= 000000000000000000000000000000000000000fffffffff +CT= c446a278a4d25bb166990bd3bd5cbe097bac62525512e69cae53268b96c00c16 +TEST= 37 +KEY= 000000000000000000000000000000000000001fffffffff +CT= 39ee7798eda53cb62a0e6ab75a57686a72e8ddd61d2dde26119253fc76a7a1f3 +TEST= 38 +KEY= 000000000000000000000000000000000000003fffffffff +CT= 1dd2d8668d7bb8a1d1bfd57069217f1bd3941cafcc29c08854f3e8ae85c33410 +TEST= 39 +KEY= 000000000000000000000000000000000000007fffffffff +CT= b3bfdd0e0d06c2c42d140d5d7ffbdeb82894eed9efa1f6a1b54cc5a6905f64d8 +TEST= 40 +KEY= 00000000000000000000000000000000000000ffffffffff +CT= 91225bfa165bcee28bde4322caccb38bf39c67c078762bf9c54b3f4f98b9990f +TEST= 41 +KEY= 00000000000000000000000000000000000001ffffffffff +CT= 457ab50d5dc5b0a67ae5a0420c21bd2b30dec7bcdccddc4382ce0a34243575c8 +TEST= 42 +KEY= 00000000000000000000000000000000000003ffffffffff +CT= d90cf479f8b230080f7c591a989179a49243995cb2ccfb5dfef23bed18b24206 +TEST= 43 +KEY= 00000000000000000000000000000000000007ffffffffff +CT= 78b9a2824b587d0473f4aa5557482fafd7b64e725997f9ceb2349b307b0d40b6 +TEST= 44 +KEY= 0000000000000000000000000000000000000fffffffffff +CT= 8a09af5fd1bf77ab0c1efaf5abe0e4bd667b3dbe5e2fc526f368413e72bd61de +TEST= 45 +KEY= 0000000000000000000000000000000000001fffffffffff +CT= 3ecd1060430e739f0f592d834175b8a2f119193c4eb454cb331b51fcf9317323 +TEST= 46 +KEY= 0000000000000000000000000000000000003fffffffffff +CT= b4f74c7e76f2ecf8f27dd0530e43c15924b38a826ad335cdd673c781c0118f2f +TEST= 47 +KEY= 0000000000000000000000000000000000007fffffffffff +CT= 3d3f79826cf0d418a714f5fe287f39915eea83f73b0d0c64f05b1106feca3191 +TEST= 48 +KEY= 000000000000000000000000000000000000ffffffffffff +CT= 0e0c37d1dc355bf60002f42dfed5493e502581751c13b5d9b02ed5ff5d88c3f4 +TEST= 49 +KEY= 000000000000000000000000000000000001ffffffffffff +CT= 5696aea528cbbc71e799458944262e6fa35444c4311c5662457670543f929eac +TEST= 50 +KEY= 000000000000000000000000000000000003ffffffffffff +CT= 9ed05c4953a9caa21f4a2e55cd253ce205f2512527006b557042862d946e0d0a +TEST= 51 +KEY= 000000000000000000000000000000000007ffffffffffff +CT= 2902a5ec6850e68c04e35c2af83579f2e4e13ff7a7121aa9a0e15f4f1d546f3c +TEST= 52 +KEY= 00000000000000000000000000000000000fffffffffffff +CT= 7fb309c51227d42874876ccb395c97a7466e753ed32c33f744aa4460cd2708ce +TEST= 53 +KEY= 00000000000000000000000000000000001fffffffffffff +CT= 7b38c4e0589fbb987be20e9c58d9894ae301145cdbe1cf8d48f96ad66b0f9e37 +TEST= 54 +KEY= 00000000000000000000000000000000003fffffffffffff +CT= 4b7a1da56156dd9325bfbc87d2a6669d8d2c2693593bf0a9a7e7ae2819792bc0 +TEST= 55 +KEY= 00000000000000000000000000000000007fffffffffffff +CT= 8b5041439c28a31cca088568932e09df25f833fafaafa8dfc72870a5d272f943 +TEST= 56 +KEY= 0000000000000000000000000000000000ffffffffffffff +CT= 0b10ac9514ec7fc914044144a03043f7b305dcfd1267246d1c5b063f0eef3120 +TEST= 57 +KEY= 0000000000000000000000000000000001ffffffffffffff +CT= 379975ce75fa7cb6d91b9713c0b69a93041cad0e5917082b93954eb9e4b1ea69 +TEST= 58 +KEY= 0000000000000000000000000000000003ffffffffffffff +CT= 3bab928adbca23a28e69d18f839ea42634dc95555730e74c409d1a17aa4ea353 +TEST= 59 +KEY= 0000000000000000000000000000000007ffffffffffffff +CT= c4a4af9028de825c97f600c201332c9234935240ad0d424729a8e7a40c055774 +TEST= 60 +KEY= 000000000000000000000000000000000fffffffffffffff +CT= 761d2cdcb8be7e14e897c1aa7c7ea6944f27c0b7166e557a4af957ca09cd46f8 +TEST= 61 +KEY= 000000000000000000000000000000001fffffffffffffff +CT= 10ce2df5a0da5222a30aa17dd14ec78987d642057e8578b36ce1d59b95725b5a +TEST= 62 +KEY= 000000000000000000000000000000003fffffffffffffff +CT= 5f676e7816c8dd14c631984005d5262084024b8b4b55cc14135afe4dbeb29a82 +TEST= 63 +KEY= 000000000000000000000000000000007fffffffffffffff +CT= 647e48d76509b559955bcd48ee2d61a3c13234701eb156fa6ed21a2d529083ef +TEST= 64 +KEY= 00000000000000000000000000000000ffffffffffffffff +CT= eee9a236d727be192394365192598cbe5aa66d8db09bed25037d0c86d8ca50fa +TEST= 65 +KEY= 00000000000000000000000000000001ffffffffffffffff +CT= a572f60e82d700c7b45da7ebea43063f573e8c075f15f9f0827bcac72249675a +TEST= 66 +KEY= 00000000000000000000000000000003ffffffffffffffff +CT= 3f1c4f60c6ab7a636cbfb21d1c391ae3dbf695567bb1be3aad552d89f1a2322d +TEST= 67 +KEY= 00000000000000000000000000000007ffffffffffffffff +CT= f3f31a4069ebd11bc5c3ac206e6be19dfbe08bfcc971d8126cf757b18744c08e +TEST= 68 +KEY= 0000000000000000000000000000000fffffffffffffffff +CT= 0d050c73e5ef6149d2b821ded0e3336d882f6094ee22096ec0e5c1cabd04c926 +TEST= 69 +KEY= 0000000000000000000000000000001fffffffffffffffff +CT= cba1275d0e1e14e19d14c5e3bde978b3d9e69176658b1db5af67d28b9c57832b +TEST= 70 +KEY= 0000000000000000000000000000003fffffffffffffffff +CT= 96621416befdff61c4f7883c286c888d95f78216a34675692a46da261d6469f4 +TEST= 71 +KEY= 0000000000000000000000000000007fffffffffffffffff +CT= 1d0f6944004620bc5e18689424b42dfb2ff8cd38f58a04c63a2f63474709975c +TEST= 72 +KEY= 000000000000000000000000000000ffffffffffffffffff +CT= 881eca4593d5900dad14d29e73757895215229b8a431e943aa5c504c62ce4217 +TEST= 73 +KEY= 000000000000000000000000000001ffffffffffffffffff +CT= db408a233e9f56f83bed712ac754728684040eba6e36e22caf5d5624e447af15 +TEST= 74 +KEY= 000000000000000000000000000003ffffffffffffffffff +CT= 631cf51e7204978132e0709bfbe28f187f3cf97d3131fec96af17e33d4dc22ed +TEST= 75 +KEY= 000000000000000000000000000007ffffffffffffffffff +CT= ede2332f5e1b4b6d8093ac63641af1624972fa4b259b267f552bed2ddafe2657 +TEST= 76 +KEY= 00000000000000000000000000000fffffffffffffffffff +CT= 3e0b3051992c111b888f43503025a9249e9d1599d4eb083068c29a4634ae5567 +TEST= 77 +KEY= 00000000000000000000000000001fffffffffffffffffff +CT= 23e0bd5edc619de83fb2b35e0e4863d0566f7639351eea2b568bb60799df339f +TEST= 78 +KEY= 00000000000000000000000000003fffffffffffffffffff +CT= cee16ea8b6f11740c200a5ecbc350feda129250916dc5730866aea4e37a9aabc +TEST= 79 +KEY= 00000000000000000000000000007fffffffffffffffffff +CT= fda672e20970ff66cdc1449074df043c3c05e15f6a4c2db826000f7a66367a9e +TEST= 80 +KEY= 0000000000000000000000000000ffffffffffffffffffff +CT= 6005406a48b2dfd4a6987e87ab7a5fae382b686794601ea4b699bba3772d3bb8 +TEST= 81 +KEY= 0000000000000000000000000001ffffffffffffffffffff +CT= d190e6e4fdbe52a552873d3c9cc1d8f9b78aadd2fc3a2f3b0f5424a012f75fdd +TEST= 82 +KEY= 0000000000000000000000000003ffffffffffffffffffff +CT= 3f8e4a77fe00c7d5e9afc18745e06f5e0349ad7dcafd499661d00389af29cfb7 +TEST= 83 +KEY= 0000000000000000000000000007ffffffffffffffffffff +CT= 0ea8c58da1e7ddc6305215d839a1ea381b0d837a4f84321a11f131752216de9b +TEST= 84 +KEY= 000000000000000000000000000fffffffffffffffffffff +CT= 8b5de277a56fb3a193727d8338c5540eec4add282b2d4cb3341a6b8d9161adbe +TEST= 85 +KEY= 000000000000000000000000001fffffffffffffffffffff +CT= 5b648749cb730ae0538f0b07510ce929693e03a0eb7942f018b069f03be6253a +TEST= 86 +KEY= 000000000000000000000000003fffffffffffffffffffff +CT= 77b1084714e61898c3c1fe49cc62086b0a62df74f165781cf7f7bc12a930c8f8 +TEST= 87 +KEY= 000000000000000000000000007fffffffffffffffffffff +CT= a39e5bf2a85ce0ecbac841fa56f0c5a1328b41add9e234b0d4e288c72db1b1b3 +TEST= 88 +KEY= 00000000000000000000000000ffffffffffffffffffffff +CT= 00fc7b5b53e9b5c4d49c826daa650aaa752e1ed76427d02e1ae586f62ccf930c +TEST= 89 +KEY= 00000000000000000000000001ffffffffffffffffffffff +CT= c4b4718f6b28220c860aab38851d43159f8c82efd3c38f9723c81c71741e81b6 +TEST= 90 +KEY= 00000000000000000000000003ffffffffffffffffffffff +CT= 9ea0d063a5a7fe70209953ba8ee572892ce82b2ebe47b49b9505bdccdde0c519 +TEST= 91 +KEY= 00000000000000000000000007ffffffffffffffffffffff +CT= 9058d05ff527875ab19e1a3761332dd3257510be69e1add775599c28b0345e70 +TEST= 92 +KEY= 0000000000000000000000000fffffffffffffffffffffff +CT= b884cd959faece287b81870d449fde7a5c8ee966e1faf1dcf7568d94952e1659 +TEST= 93 +KEY= 0000000000000000000000001fffffffffffffffffffffff +CT= df7554521118587e90865a52f2d77e6440b44029740efa76592f906c19bd5fa8 +TEST= 94 +KEY= 0000000000000000000000003fffffffffffffffffffffff +CT= 7f2d2f042a3b8f7a6c336006dba45d7d98d6698369b1294be80202c74ad6ebc7 +TEST= 95 +KEY= 0000000000000000000000007fffffffffffffffffffffff +CT= 59587f86d4c710fdf42967ebbc2dc3a6f0f38322acc5f171ace01def7e88f65f +TEST= 96 +KEY= 000000000000000000000000ffffffffffffffffffffffff +CT= 189010ed7fa5588f0f37f7bb711e56fbbcfa36c375387e28f92bcb2a89c2e849 +TEST= 97 +KEY= 000000000000000000000001ffffffffffffffffffffffff +CT= 03c9caf9813538a9daa345b633afd3c36d4b220f993e2177068c9db244d05f66 +TEST= 98 +KEY= 000000000000000000000003ffffffffffffffffffffffff +CT= c4987fa015f975541360e7c6249851777e4429ad7bf4247ca1c451f5b20b43ab +TEST= 99 +KEY= 000000000000000000000007ffffffffffffffffffffffff +CT= ee455a821a9e69f625aafd70dd611476f4bb9325976485ed53d71894170a2956 +TEST= 100 +KEY= 00000000000000000000000fffffffffffffffffffffffff +CT= 1b0cd188e945bd4ed17f171cff5eebdfc75a7611c18e634e19d5dba4324a14c0 +TEST= 101 +KEY= 00000000000000000000001fffffffffffffffffffffffff +CT= 8d9285120ec3e3298e019b676689eb2e8f5535aaedbcba9266b10d7d3f961720 +TEST= 102 +KEY= 00000000000000000000003fffffffffffffffffffffffff +CT= 094104e094bb4f7a8b9e9a829327b4ea0532408202281850f96ab6ab1fa0f4d1 +TEST= 103 +KEY= 00000000000000000000007fffffffffffffffffffffffff +CT= ab065767cd2aefb4a5e155a9b63cf1335afac43d3d9035d3e2bcdd58743688bb +TEST= 104 +KEY= 0000000000000000000000ffffffffffffffffffffffffff +CT= 84fab29d3c468a998929edf3f20cb4179836637ea344ff3883fd58ebab781711 +TEST= 105 +KEY= 0000000000000000000001ffffffffffffffffffffffffff +CT= 92175b31da4fc082c915b2195accf2c0d61baa317d2041474e97e226fb08a4b8 +TEST= 106 +KEY= 0000000000000000000003ffffffffffffffffffffffffff +CT= 5ee332d8d32a27b5acd457fe59d3101b2a554cf285463c80ec3780e4fd544fb9 +TEST= 107 +KEY= 0000000000000000000007ffffffffffffffffffffffffff +CT= 154c54f187576264ca19499e825b056d9cff642c3a0e53b72764439ff4f1607b +TEST= 108 +KEY= 000000000000000000000fffffffffffffffffffffffffff +CT= c9cbcc7c2eec2e226d88692620de228a617e3fb8f8f65541784514ff938aed12 +TEST= 109 +KEY= 000000000000000000001fffffffffffffffffffffffffff +CT= 455ecd80adf7397ce6b3ed63e35cc9aa52c04d7dfe1c4cf53f0a076709579590 +TEST= 110 +KEY= 000000000000000000003fffffffffffffffffffffffffff +CT= c33bbc46798eb743aa8672cce2d2f66c298170953eb6ff44d167253d906063b7 +TEST= 111 +KEY= 000000000000000000007fffffffffffffffffffffffffff +CT= 1321ad40be48ff8c6d12d4eda0e0ea78dddfa915dbacb9228224f8528ec85df0 +TEST= 112 +KEY= 00000000000000000000ffffffffffffffffffffffffffff +CT= 3c84361170ac8be07bd9583831b4d21f9024fc58abfa7274fcb9fec193eba858 +TEST= 113 +KEY= 00000000000000000001ffffffffffffffffffffffffffff +CT= 47066b1e3d38c76d160d6d5834bd90acf70a4949252053056efc5b23d65967fc +TEST= 114 +KEY= 00000000000000000003ffffffffffffffffffffffffffff +CT= 684794257b82c49b353f8b8a285f58b79ee56631974152fec30d20d9052122cd +TEST= 115 +KEY= 00000000000000000007ffffffffffffffffffffffffffff +CT= 1b7d8fa9108260b2a31bc1f2086cb9a4e2c5ceb1b1d4e0dffc425c4659b48125 +TEST= 116 +KEY= 0000000000000000000fffffffffffffffffffffffffffff +CT= 99adf292bc78e8d7f73659ed33ff4c5033c0cea755895d8cb557aae90a7869f2 +TEST= 117 +KEY= 0000000000000000001fffffffffffffffffffffffffffff +CT= b5e7382dff37ae5026b91769faba77613588a80718e8bc227932876985642baf +TEST= 118 +KEY= 0000000000000000003fffffffffffffffffffffffffffff +CT= e5ea85310578233a028f1f12407751a4c66463cdc114dd4f2be8049bea9731a3 +TEST= 119 +KEY= 0000000000000000007fffffffffffffffffffffffffffff +CT= df6a89819ece7f7d8b00048072df7e44265e3d5134aaabf6d2f05118a0ce68b6 +TEST= 120 +KEY= 000000000000000000ffffffffffffffffffffffffffffff +CT= 67f8f8eabe41cb4c4860ef9200e95d61ca2aceb79f6d9387b3710b4842a0439a +TEST= 121 +KEY= 000000000000000001ffffffffffffffffffffffffffffff +CT= 6cdbec517b35de309cddb6abb1a11c0f26df1fbe2495b4d064b7ee6e98409983 +TEST= 122 +KEY= 000000000000000003ffffffffffffffffffffffffffffff +CT= 299f577726a3980bf6c5609d798b38a65e3be1a1fa6aaf665761d41aba36dc5d +TEST= 123 +KEY= 000000000000000007ffffffffffffffffffffffffffffff +CT= d7bd65d17b3b1ce178937242f8f3e2d5bd1072c8da5c70e705ef76f2dba5de4b +TEST= 124 +KEY= 00000000000000000fffffffffffffffffffffffffffffff +CT= 739d459f8acb2b071e107c8894b4d056ccf270c349064d47e53242ce0f4099f1 +TEST= 125 +KEY= 00000000000000001fffffffffffffffffffffffffffffff +CT= a5553a36cb81042ddda73308e1471c3b1c45772299cdceeb5b4d5c33837a0cc1 +TEST= 126 +KEY= 00000000000000003fffffffffffffffffffffffffffffff +CT= befbb890f8850b143ee697599118c916e087057329f983730e716c14471125bb +TEST= 127 +KEY= 00000000000000007fffffffffffffffffffffffffffffff +CT= 3727128cbcb6359b56ebe88a4de76226bb373f8da6f19a2772724c5594695cb5 +TEST= 128 +KEY= 0000000000000000ffffffffffffffffffffffffffffffff +CT= ddbf9bfd7aa5adff67880f77e2f4a71c94c70fc18b36cece5587cd71d3797c5e +TEST= 129 +KEY= 0000000000000001ffffffffffffffffffffffffffffffff +CT= 738e6ff6c24892fe79c88e2c4b3df00f3b15c87190af13961535a5eb633a54e9 +TEST= 130 +KEY= 0000000000000003ffffffffffffffffffffffffffffffff +CT= 13b6515ebcbb6c091d0bbd0ddfb1076ae21dc674d94f77d9a42dbeb9f1531733 +TEST= 131 +KEY= 0000000000000007ffffffffffffffffffffffffffffffff +CT= b8aba27508b9858b23f1d2af6d758c6c99b5b72920f457179a68171361af6138 +TEST= 132 +KEY= 000000000000000fffffffffffffffffffffffffffffffff +CT= d68e1f948232d7198d296d317a54c2d40dc00c42a53458dc5c01d1b5ef4b4895 +TEST= 133 +KEY= 000000000000001fffffffffffffffffffffffffffffffff +CT= 6d9e134110b7dbcb706522fdd775bbf728794538d8a21bfdf9435d837b3d4c94 +TEST= 134 +KEY= 000000000000003fffffffffffffffffffffffffffffffff +CT= 3f1ac624bf01484d68cb24292770a7e4a0296194dd6abb879bab9e9f229d7266 +TEST= 135 +KEY= 000000000000007fffffffffffffffffffffffffffffffff +CT= 9527f745257e28a5b5427afc98523c45b831239537940c5c03f6494c016ca454 +TEST= 136 +KEY= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 4aa28f03e9bb4936aeed77bde60da0e72dbd4992031bca5c6f6fae8a00a2d0ad +TEST= 137 +KEY= 00000000000001ffffffffffffffffffffffffffffffffff +CT= dbafe4fb6ae0f489dd5021d518c2897fd729433680dda583ecf14d98949da776 +TEST= 138 +KEY= 00000000000003ffffffffffffffffffffffffffffffffff +CT= afc0891bc8bbf70bb28895366c6b90f81c3e7639a082bbc1b13e52ef70e40ed1 +TEST= 139 +KEY= 00000000000007ffffffffffffffffffffffffffffffffff +CT= 5738b6dde3b0e3c155c5c5fdd31d68788a6fd1b8f70d0dae81a68600a6d8717b +TEST= 140 +KEY= 0000000000000fffffffffffffffffffffffffffffffffff +CT= 499965bd18669cac1919d17c0842ef802d04cb01786b413e5ffb1ca06d4e05a7 +TEST= 141 +KEY= 0000000000001fffffffffffffffffffffffffffffffffff +CT= 1ee0e64f86aafa12baa3c07d468904d01162cc3a00759cddc7f37a69d380bf19 +TEST= 142 +KEY= 0000000000003fffffffffffffffffffffffffffffffffff +CT= d01fd57c75b4f5e7997679ac1561537109372a58329b31a7feaa1002d4bac70e +TEST= 143 +KEY= 0000000000007fffffffffffffffffffffffffffffffffff +CT= 29b29b7557ae55a905ff233f208f53c15a6f9d50a9592142b9a225cf06855244 +TEST= 144 +KEY= 000000000000ffffffffffffffffffffffffffffffffffff +CT= e33393a0e0e08b5f4c61955f55ac9c3e10dfd108d45a46623a338eb043a4eba8 +TEST= 145 +KEY= 000000000001ffffffffffffffffffffffffffffffffffff +CT= a1414c0f767fa24e6b64948fe4b2d02307fe60749dd2c5118bc8ee0e3a2c5dec +TEST= 146 +KEY= 000000000003ffffffffffffffffffffffffffffffffffff +CT= 884e51b44dfa69fada48309c482f6a7a2a386c4bbc5bba4c3bd90a6a7ef6d2e6 +TEST= 147 +KEY= 000000000007ffffffffffffffffffffffffffffffffffff +CT= 0f602523604a1c566a32c3b6b4a99abff2ad7bdaaa255159d0c5518c3b9b2931 +TEST= 148 +KEY= 00000000000fffffffffffffffffffffffffffffffffffff +CT= 8f1a7190909c5b5f1c417fe48c3473786abdb757009ad2982705f050d5ee1468 +TEST= 149 +KEY= 00000000001fffffffffffffffffffffffffffffffffffff +CT= 9068f3fe9c94d1cc9e732d45d4aa9888435fa05f164a768b67bb0af30762dd63 +TEST= 150 +KEY= 00000000003fffffffffffffffffffffffffffffffffffff +CT= b25705f4cfbce22f43b39ca122b6e15841d867e1afa962a4db1bb218bfccf9c9 +TEST= 151 +KEY= 00000000007fffffffffffffffffffffffffffffffffffff +CT= 20b8251ebf219541db40e9ad1c125bdd5fb5eaa1e6921f3662b3c3203a3d3231 +TEST= 152 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= 1f7c0a425f4ecd97dc1d5b3619944b86fc84b5458f89bfa2dc1a9fd3f9edf5cb +TEST= 153 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= a406e59ccfc307ea45abcbdee2c120000fc3b76843a2d50c42786b19a6e82b0d +TEST= 154 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= 6ce5b95332bc3d5e6e4e1cd3ee3ae2ec2e46ff26da41d68a751f3b8062b8f6e2 +TEST= 155 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= 4cb9a9bc6964680a90aa740b5cf5e17ba05ff762ef34bee8e6d144c99baa6cca +TEST= 156 +KEY= 000000000fffffffffffffffffffffffffffffffffffffff +CT= 04cbddd1594bc6c4608698a564a3d67c03de156ddd55fcc23549aa4cd31bbc4b +TEST= 157 +KEY= 000000001fffffffffffffffffffffffffffffffffffffff +CT= 10947134888681dfdd30c682727b6c14eb587feb18d54e8e01f466c63dc00136 +TEST= 158 +KEY= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 80eff56e1120348a8807a7b6a0fe4a7f3aed502b18d8482f7c965d1454257c97 +TEST= 159 +KEY= 000000007fffffffffffffffffffffffffffffffffffffff +CT= d822b0871f2e897ef32132effab66285c05ae88baf8964cc106d90156fc6c06c +TEST= 160 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= 3499951b731c4bedb6e67e7be4f69f3a9c64390c981d7496e0f4cd15b204008f +TEST= 161 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= f393f042c0509aa7d9c0a2a4106604a4691c43888188118ac27336d06a905ff6 +TEST= 162 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= d45eb401d21bd48aa9217ef13aef3aa6617c0a2b537b47b62372a08049a1e6a7 +TEST= 163 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= 158202e3f2c14083e4d9dc26b0224ffbc6903563928870e78624916be6804e8d +TEST= 164 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 17a8007e6adc276a3c0858092b3116c386fde4e28ac7832a35f759977663a679 +TEST= 165 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= c2dddc20e2907a00930f84edc49981374e94f6aee9f4285ef13bb73d0278df96 +TEST= 166 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= 6379b7d593ee75c3af31054b81601a2fb569a9b6b7ed7b2f65e17a0abc58ae84 +TEST= 167 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= 88ad2a6b810346ff84e245ba3d1f8057f49829c03bf495017566989f8200df4f +TEST= 168 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= 685c544f6f9e3ccc87a83783903add1c0e98bd9be8522aaf8414cd8c59d1ffe3 +TEST= 169 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= bb884ef5477bfc5d2569ee26e6e9bc9d4b30c2bebca6ad059b1b33ede4cb6b4a +TEST= 170 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= b33dea2f34643c4270914f41b47152cfdb0f2c2de8f88b49afb83430e5c6a2e1 +TEST= 171 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= 0c4d3fb711acc132f8f86417f063633d4d2475e51b0ad39f568d4353e1469c49 +TEST= 172 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= 97b98309ae70ae517297985e38087623ee5af60137e3e4b26b11f51e21e87f69 +TEST= 173 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= 9992f319203972302a6ab54f5ba6bfdd1a7cf5f0039f686e937e40d39668fbb8 +TEST= 174 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= 632e1fb5827a1477e733cc956384da6437788597341c30a0d78fc7dd3787e85b +TEST= 175 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 6197db968f9c3b53ac04cb97f28e05b52890dcd0f33f5cfef733d17a1562a434 +TEST= 176 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= 060c77b757e50257a88d959adb3605a555b98d5e40f1a7e9bf804dd13f378e53 +TEST= 177 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= 3e959fa4bbf2fabfa5b4c4bd2ac0444d7c67f75ed26dd368f81748d75dd7fd98 +TEST= 178 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= 4541c3bdfdc2e5c5aff88627763e212c3b701ef0c6f406340d537f6f245826f1 +TEST= 179 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= 6eafc8cc4786900d414d4ba5cb38a72e76376dc6ed50a85ead8d04ae51306605 +TEST= 180 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= 1412e60504051cc8790ea9bc51411d59f915081548f54191c08f1911349cd23b +TEST= 181 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= 95e3f22461aeee32c5f05e30c6f471807360561f8d9f0440933f6ffd1c6319e4 +TEST= 182 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= a8b1baa5000405c14779d2671eaafd48791c477b128e54a384aaa52aca57a2dc +TEST= 183 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= a423e33a63b48db6ff856ff284bacdc1b56642d27faceeccdd82b520a99a4f6e +TEST= 184 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 4e5c1b6a38177a74dd64311591ee9bf1a0d5da51a7eed030ee19c06dd62953aa +TEST= 185 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= f428f5d2237f3164f40da9c8ae06fcbdf40a3673fa96748bbf90e431073a2ffc +TEST= 186 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= 23700640c4e98532d3750a42378ba5f56796d60817968f0b2cb39f92fdad239a +TEST= 187 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= 8da0e9b864f22c2f02769c6bb591f27377eeffa4967dc1ba1165fc4c90ef3359 +TEST= 188 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= 7cd1911eedce8c4e4b006d6a2f28c5f4feaaff9591a2926666597ba2bdb1c8c3 +TEST= 189 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= 12f0b65eb426b373a8368268f15e79d6d4d72e45b84823072e86107177c67d24 +TEST= 190 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= 6978cea7f447e048dee50bd389ec94cac6d734d65d6d30756fbded6b8db558df +TEST= 191 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= 574a531552d3e9e6d3e6cc17b2be7d7a49ddd37da1280a9f7f3a0daa3e104801 +TEST= 192 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 73b4e9515e63b069cea5ff12ec8bcecb3d11abac60098fb0df6334cb98f2a700 +TEST= 193 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= 4592b088e585a2dc29ac34733b0044bdcf6ef09694db7c02786caf4118de2d09 +TEST= 194 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= 0a8399c23d7b78ff6c8b340d21d8d4aa9cad9b1c3b379820353efe92af2d302b +TEST= 195 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 7882872c9d969a1d5ea6f12106015ea289e84d09b2b566c27c90dbf08c7c85cb +TEST= 196 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 83bef136d9af7f270fae30b6e8aeaff327e514f0b753503dd397b8313bb5571c +TEST= 197 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 339038f3bbc501f09c2c0e74ac61bd4627ac7d5710deed0aff77758aa221fd18 +TEST= 198 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= c6a5a94afe12d3e73339505ac807fb336785475bc271750a0aa327a31feccaef +TEST= 199 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= ba5b4a4d70f9648699fc5500299e669cbec445b45a0dd297b3de23bbb6b244e2 +TEST= 200 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 968345501261860d0f68211d69e762d161c39b0ca503021d3689fbe2edaa3917 +TEST= 201 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 11bf89a7eb5bd2cd8a193fec1487bde8d24504ffc7b1377276d31317dc5235d5 +TEST= 202 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= dfa51a9bf22ae6b7b5e8ed76f0b901cf9ae24a5bcf47238422e1efa6ff9e7fc0 +TEST= 203 +KEY= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= 3818bd5065668824a44cb22189b7b18a998a0ecab0156c83177acdf2d887e78d +TEST= 204 +KEY= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= 693ee2f4ee32765d81d6d8491901c6bda1678a7c55081de35ded6914aa0cc96c +TEST= 205 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= a534dfbec13534e332ee5d006bf1177ea5a0ec9fe6c22ee80f095dce6341923e +TEST= 206 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 4eafaa38f79b68cad8fce84aca780e7149a624400e24943d4bc7fa1f1b04c019 +TEST= 207 +KEY= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 81543a5a25524b997d7851b7ae640c6894c05671143396b12b1c192e2ab38b28 +TEST= 208 +KEY= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 12bcc6a7ec5b966d9ea1ddcfd62604ab6cc6c85f21917f383ddd9351fcb61e84 +TEST= 209 +KEY= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= 48af08939b7fa2c58fbe8da49b22386fc6cdce3f67e4e0b49b001e9a1e13f1ba +TEST= 210 +KEY= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 6b5690b6ff9dc4eee13285e4ddbd04bfd52fcdf3fcb242703b55bf32909b2a1f +TEST= 211 +KEY= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= 2ae9c739d1352c39db44bd0bc29f33c66b531e9825d70cdef5888aa8f1f1173c +TEST= 212 +KEY= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= 1cc699708241ea48c4e20beed5916010714efbce4f93870243ddfc83c83d1470 +TEST= 213 +KEY= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 77d35fb5ef47de2b2075c601550a80ab32587632eb767537ab1a6a919ffcbb20 +TEST= 214 +KEY= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 978e5894d4b4e5b65d81115df1251ecfd6d8b176388b9bc987eb961498d35bdd +TEST= 215 +KEY= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= 2dc1885c92ed7b618406b779e84e2016320403d5dcbf6fd735de8e62e88d9af0 +TEST= 216 +KEY= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= 77e538d25e24b9826138fb93c4d9f2ca1eef064feba61002dfb307e00a9b5cef +TEST= 217 +KEY= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 84c17040ff7829f363c877ebdcbb72dba1d92b42bb3722942554be1f7d2517ea +TEST= 218 +KEY= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= b5aef797751782fd90e3b48909794b8e2b632dd322c29d5fa0913ea0cb197bf2 +TEST= 219 +KEY= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 1defb3e9ef37ac6a603fee9994fb4245db1f422b0c303b9cb7317981bd05be8a +TEST= 220 +KEY= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= 0f81faa1b168f784f18f5ac757269e870e248021b896f68b867d2a82ad6e3739 +TEST= 221 +KEY= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= b3b3da7ed9d7a7fe63b68366a12abc78630577cd20f0f87665f2ead1b6d01910 +TEST= 222 +KEY= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= a91a51c064e37b7153eac9d975f51adc9043d850e8f3fbaf23866deab7988158 +TEST= 223 +KEY= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= e5eb42e84b44ff2c39cecef7bdc3041f4995223103505a0b43bbb2828a0f3607 +TEST= 224 +KEY= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= 8eac56aedad858c4dda4c8bdd062e1efe822f619d242bf4ce3bcb63712341217 +TEST= 225 +KEY= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= 8ebaab9305853f2c061a74ca2f9a63d56cbf2373399dc26ae4d7b609b9d898b1 +TEST= 226 +KEY= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= ac7326a5f6a457cf042a741844c1d9cb56e71071b25c3e940a72be6b004b7eaf +TEST= 227 +KEY= fffffffffffffffffffffffffffffffffffffff800000000 +CT= aa7185990146ba0bc624d75c9db2512613bba5dd96d4528ad7f7b0b666a63745 +TEST= 228 +KEY= fffffffffffffffffffffffffffffffffffffff000000000 +CT= 6c65c548075ce4a4b49d70313df60d544ceeada2a8f89bc6d73219f29b55464e +TEST= 229 +KEY= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= 7b5950c45f558ffd515b887bae54e4ea3aa51db67f4b750ba564b67b2794a11b +TEST= 230 +KEY= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= 7629140f53bea6509e4ef92223473dcbda7d947213419e4820502d9b19898309 +TEST= 231 +KEY= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 911bea48534483c9906d4bd1347fdd29a103bce4c75ceacea96a59a6ef2f89e3 +TEST= 232 +KEY= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= 1413c1852f504f04fe097b3b8e784d089737ea79dc1b97d5e67ca6b7f4e7a1a1 +TEST= 233 +KEY= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= 99882c7c6bde57b2c6faaddd02069e35e6448493a3989c9bd4cc700c1d9f585f +TEST= 234 +KEY= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= 073f34e4c4e9766c7611f7c826e494369c4949c6e2525d156726599e87b2f496 +TEST= 235 +KEY= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 9e87d0c85f9a6ab5e260f9a1fb00a12f76aead0feb8ce75f5a9f9bbabb3b875a +TEST= 236 +KEY= fffffffffffffffffffffffffffffffffffff00000000000 +CT= 974a2eb509898cf14a81ccff98a352b9944bc2383fdc72d5869be8326a492587 +TEST= 237 +KEY= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= f6416bc8caffdeb5e092b81b91c7f6efb5c3c027fde77965751934e4a1288aba +TEST= 238 +KEY= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= bca4bef35f2c63ab16e37f92557973418991357b250c322153be9e7bdef9cd03 +TEST= 239 +KEY= ffffffffffffffffffffffffffffffffffff800000000000 +CT= 62e7d8d6b3482b53eb6d3e6b345128179e77755d30c04c9114e80849e793bb00 +TEST= 240 +KEY= ffffffffffffffffffffffffffffffffffff000000000000 +CT= c8da6c7cae29d4f4b5f42c0843d11be35a1ac1692fa60f428c7a20ee9e2c5811 +TEST= 241 +KEY= fffffffffffffffffffffffffffffffffffe000000000000 +CT= d26afeadbbc8c6ede6c5dba89657c8d2b903c3fac85f5ba35bfe0df27f1ee4a1 +TEST= 242 +KEY= fffffffffffffffffffffffffffffffffffc000000000000 +CT= c8c0de142bf73f5e049e1c9ede02568b28821ceba9e121b2d21b84b7d4faa95d +TEST= 243 +KEY= fffffffffffffffffffffffffffffffffff8000000000000 +CT= f1bccf0da74b9c327a1a4874e7679e8dfa4859ddeb132b1bec41afdcfdd7daeb +TEST= 244 +KEY= fffffffffffffffffffffffffffffffffff0000000000000 +CT= 30a7a17bae8f42e9e93b466c68e61711c5a5ca7ec459cf2e02e2e803e6cda48a +TEST= 245 +KEY= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 6d903ae8f741dfd4fccc7716fea33ed37a5f9275fe17c3e4d8ea7cb252133d10 +TEST= 246 +KEY= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= 2726c7bb18896169733c5c4047a55b8cdcfb2c0b74bc2a3cc74562e49ca53e99 +TEST= 247 +KEY= ffffffffffffffffffffffffffffffffff80000000000000 +CT= 0a5de59523d2dc4497695771050a43b185e225219c4982d37921dc275b70bdc1 +TEST= 248 +KEY= ffffffffffffffffffffffffffffffffff00000000000000 +CT= e25b6e38b21f0e2c9d91dbfb716bbd1d2682ca144e59ea3e79d73451d023fc03 +TEST= 249 +KEY= fffffffffffffffffffffffffffffffffe00000000000000 +CT= 63a3d88f8cb078edb381894a7ba0e7837583ff1f081d5492a59b7f791a35ec61 +TEST= 250 +KEY= fffffffffffffffffffffffffffffffffc00000000000000 +CT= 4291a14a4bdab2ff0c54380e724e7be54842e45852cc389ef5b0c3f6c7f11ce0 +TEST= 251 +KEY= fffffffffffffffffffffffffffffffff800000000000000 +CT= 0abdd3972391ee9d0da1a6740ec64684ea75fb0a1a3fdecfce121829d80665d6 +TEST= 252 +KEY= fffffffffffffffffffffffffffffffff000000000000000 +CT= eea3e040bc346bec0adb407b8cf5cb041ffdeca29d15eb2d794b31ae45fc2e44 +TEST= 253 +KEY= ffffffffffffffffffffffffffffffffe000000000000000 +CT= 732e934893a44db62623edfb5e2e2bf8ec8553684733e247e0a6a0fa3a6012b0 +TEST= 254 +KEY= ffffffffffffffffffffffffffffffffc000000000000000 +CT= 6be3c63d7816957560f8e35912119678542c61dcf45adf218429d9dea2530e06 +TEST= 255 +KEY= ffffffffffffffffffffffffffffffff8000000000000000 +CT= 027dce8a50bd50d553977d0f3be58e48b64a99d51d5847da963df6b29cbb54fc +TEST= 256 +KEY= ffffffffffffffffffffffffffffffff0000000000000000 +CT= 60d18750ca290880f1213e4f8e34ebc15e80398bb9766e012579a42589c55811 +TEST= 257 +KEY= fffffffffffffffffffffffffffffffe0000000000000000 +CT= 04e579d367c2012cb05a85c82e0a42d93412db6e09c90458f75847a782747720 +TEST= 258 +KEY= fffffffffffffffffffffffffffffffc0000000000000000 +CT= 3447f9168771bf8715cee36284bc289ee8020b48a01504ba058a5be7f4da4227 +TEST= 259 +KEY= fffffffffffffffffffffffffffffff80000000000000000 +CT= 5d0f507dc89e61e668a12ca6207eb0e6b831674b851e0accd71aad077ef095fc +TEST= 260 +KEY= fffffffffffffffffffffffffffffff00000000000000000 +CT= 0855c7ea077da89ad084a39331e17251ac91b2d04f482e32251d997d8de94f5a +TEST= 261 +KEY= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 826b328a89f181301c052387ce0f3fc890f49a373a2e386d12d33730fcf42892 +TEST= 262 +KEY= ffffffffffffffffffffffffffffffc00000000000000000 +CT= 585406dee67c687c90ba6d8160d4f8599a9ff121ef99e0b3b7c0f37e56d853de +TEST= 263 +KEY= ffffffffffffffffffffffffffffff800000000000000000 +CT= b062f88ceeabb2166ddcc7355f2beb51c8ea8f51c50aaa8738b13283e952087a +TEST= 264 +KEY= ffffffffffffffffffffffffffffff000000000000000000 +CT= 6ff4ad9dfb1b3fe03f5d5df9b4009c75a82ffa96334eff6aac4421605750548b +TEST= 265 +KEY= fffffffffffffffffffffffffffffe000000000000000000 +CT= 3c76c59f59f9a0dcc224e17c13f43b638f4828264a361f338ce5980aaed1059a +TEST= 266 +KEY= fffffffffffffffffffffffffffffc000000000000000000 +CT= 80e10ef00115e3db40c325ca91612d6be1a89f1f25338d1059a48b9e6a06a456 +TEST= 267 +KEY= fffffffffffffffffffffffffffff8000000000000000000 +CT= 1c58fa7ea770a5bdec46b8e312f0f16ed8a99429ab1e352ee4b9fa7fdbb371a7 +TEST= 268 +KEY= fffffffffffffffffffffffffffff0000000000000000000 +CT= 0edaf35cdcf84860d2219fb2bccae1fac6bd56f2f2b216be4555e6aac94aac60 +TEST= 269 +KEY= ffffffffffffffffffffffffffffe0000000000000000000 +CT= 182a15c8e05e11be735c0c4c4698cb6f157750bf5b8b343e53bdd3879aafeadc +TEST= 270 +KEY= ffffffffffffffffffffffffffffc0000000000000000000 +CT= 86fac27f8582ed946c88a35a59f7e2c17264d6fdb7b650204c0ba7bad32449af +TEST= 271 +KEY= ffffffffffffffffffffffffffff80000000000000000000 +CT= 3d78463148baff9331e6982d68e9984f7b5dbdcf963cd300ccfb1d90e9c2db3b +TEST= 272 +KEY= ffffffffffffffffffffffffffff00000000000000000000 +CT= fa7110a4f6ee0206ba72595c80a71ec671accd8323b80819c505874401a72241 +TEST= 273 +KEY= fffffffffffffffffffffffffffe00000000000000000000 +CT= 745aac6d9aeb72acfd003bb32a7fdf9c82e70c65bb996e0ff6ed6b9ba49d25dd +TEST= 274 +KEY= fffffffffffffffffffffffffffc00000000000000000000 +CT= 9161dab39345d4dbe31814fdb13d20a96f4a5b5df2d014a1f9273a755a581590 +TEST= 275 +KEY= fffffffffffffffffffffffffff800000000000000000000 +CT= 75cc9b43d017c3f658f0df4bae553c2bfdf3f10288cf99963b6c6fe00eef66ac +TEST= 276 +KEY= fffffffffffffffffffffffffff000000000000000000000 +CT= 343a413828a1ea5bf0af1734a4f38df4b9b018408346ca9875ea2de522cb1787 +TEST= 277 +KEY= ffffffffffffffffffffffffffe000000000000000000000 +CT= 30ab3f09fbd47239b0110a8e93d4535a82da84eb70e20f8a69b1f34da3634524 +TEST= 278 +KEY= ffffffffffffffffffffffffffc000000000000000000000 +CT= ba264e3642076af2cb60d8f5644cd96a6119f7d2672ac9b70855ab5275c84a57 +TEST= 279 +KEY= ffffffffffffffffffffffffff8000000000000000000000 +CT= 0f9b326ed8a9d5b5f814adfdc7491d100ea0a01565ba2ab595b4115d5e4324a0 +TEST= 280 +KEY= ffffffffffffffffffffffffff0000000000000000000000 +CT= d7dae552d71aceaae25454c8a2f1ec4122e049444e97e922ee4ef5daf911b792 +TEST= 281 +KEY= fffffffffffffffffffffffffe0000000000000000000000 +CT= f3449d6e40b349ecce75a5d6d575d7caf8646f2cf4bc782b2a489d94d9c97023 +TEST= 282 +KEY= fffffffffffffffffffffffffc0000000000000000000000 +CT= 1beaa77ad7262903869d314e605aebc1272cc1ed9956bf9d40625243ea55176f +TEST= 283 +KEY= fffffffffffffffffffffffff80000000000000000000000 +CT= fc79115728b7c561ddac026d406280cd65635b7b5024ff5de0b6ae368a4a80d0 +TEST= 284 +KEY= fffffffffffffffffffffffff00000000000000000000000 +CT= 3676477a364551ecdab79127b95e89c8a370f57d8067cc5292e10920b5de76c0 +TEST= 285 +KEY= ffffffffffffffffffffffffe00000000000000000000000 +CT= f539d4d3f4a309383a28182d77c89d1fc5af144b81512ad1661e6f04a1cf8521 +TEST= 286 +KEY= ffffffffffffffffffffffffc00000000000000000000000 +CT= 3757dde4c2ad6d12d944d4f323e436e1bd977aaaa5a1506614e7144481778a1a +TEST= 287 +KEY= ffffffffffffffffffffffff800000000000000000000000 +CT= 9a4c1ecd89570ca240f61bb954765cd358042266d0ddd1cff9acad6157269dc6 +TEST= 288 +KEY= ffffffffffffffffffffffff000000000000000000000000 +CT= 6d9f63dcc9ec8cba4ccff7cc88f36f1d8f9b0b918c9d6cc56462c4418be7c9b3 +TEST= 289 +KEY= fffffffffffffffffffffffe000000000000000000000000 +CT= c77fe7d923bf99174af313b6b86e9d0a3eb9e504d6e7b760df7e4a04d0619e48 +TEST= 290 +KEY= fffffffffffffffffffffffc000000000000000000000000 +CT= 461622bdc6e1637239e07b9823cb3f3214ad5496a5ce108a25874fc6fbfbf34e +TEST= 291 +KEY= fffffffffffffffffffffff8000000000000000000000000 +CT= b7688a7cf3b1ef60cfb8594e9c48cd3d240b41d3f7dbd7e96ec5ec51052d8b22 +TEST= 292 +KEY= fffffffffffffffffffffff0000000000000000000000000 +CT= 7170388726b2b3ce916c96bc8087271a2b492a1605d784094d9911931ec3f615 +TEST= 293 +KEY= ffffffffffffffffffffffe0000000000000000000000000 +CT= e3dbec564bce23f942729217da3e282a5a80764f071e4b36aa71c20b1044ea5c +TEST= 294 +KEY= ffffffffffffffffffffffc0000000000000000000000000 +CT= 2cb71a30bc3c4c9107c56b46ab3c5aa149b8f61508378f053f7f88a1116a65ca +TEST= 295 +KEY= ffffffffffffffffffffff80000000000000000000000000 +CT= ed67a72698c06f63e1d986f3881ea4df4e81d186b623221d84e163003163d568 +TEST= 296 +KEY= ffffffffffffffffffffff00000000000000000000000000 +CT= 0e557612d3594fed741611b3322357eaf3a91a901ab3e9f415dcea07bbd28c49 +TEST= 297 +KEY= fffffffffffffffffffffe00000000000000000000000000 +CT= 8d479381e79b7d789d08ad9fb8d3522672629a1c1eefe667c79a56f8ab86a8ee +TEST= 298 +KEY= fffffffffffffffffffffc00000000000000000000000000 +CT= 6257b2af551f8e6b827e43eefc7760c944248151bee64a75a62d3532f7130ae7 +TEST= 299 +KEY= fffffffffffffffffffff800000000000000000000000000 +CT= cf5d0ed0230590b4c1be520b0b8c5c989865bdb692fd06a23b624939c0894550 +TEST= 300 +KEY= fffffffffffffffffffff000000000000000000000000000 +CT= e2e30f81c7bf67774cb0560e51172ee408a67b47e660c66922dac7900dace295 +TEST= 301 +KEY= ffffffffffffffffffffe000000000000000000000000000 +CT= 92bf613617532d2f11479a56c05b5dfe22d7eb673cc7a5cbeff9594569cd9ec9 +TEST= 302 +KEY= ffffffffffffffffffffc000000000000000000000000000 +CT= 0fdafaa03cbbc5d4c0b47e923aecc3526c089f7107dfbda4fb9c7a2fc466f2a9 +TEST= 303 +KEY= ffffffffffffffffffff8000000000000000000000000000 +CT= 9aeec836fc8d0116469a84265e52b780b79333b7a368902ec324b4348d40548a +TEST= 304 +KEY= ffffffffffffffffffff0000000000000000000000000000 +CT= 283c9151a1bc44096e2735c980b857a0d69e4b011f0e16042652c96708706e1a +TEST= 305 +KEY= fffffffffffffffffffe0000000000000000000000000000 +CT= 6651ffc8f9ea3c9dc1a796edec52e54e9e9bd41ee78890e13a1008ace31aa6f2 +TEST= 306 +KEY= fffffffffffffffffffc0000000000000000000000000000 +CT= 2174817e0000959a4eb3e6c7eae5a749a0e8594e401010f93238bc5d14a2dbe4 +TEST= 307 +KEY= fffffffffffffffffff80000000000000000000000000000 +CT= 3c417415fd3728de4601d150456c2e1b43fa3db443d64ca31a569c2d44869252 +TEST= 308 +KEY= fffffffffffffffffff00000000000000000000000000000 +CT= 6a9b8ab5c77b60da523ac2037ec3bc08f98bb946a0209e74ad8e3047e869bf25 +TEST= 309 +KEY= ffffffffffffffffffe00000000000000000000000000000 +CT= f153086eaae19133ebff14f7b78f58f88d9217990fbb1d6abbaaef71c0e6b5c9 +TEST= 310 +KEY= ffffffffffffffffffc00000000000000000000000000000 +CT= 4a6ae3eb1a3d82cf4323e4cacb78dd56b2c2f2c1ac544839c8751641b318e257 +TEST= 311 +KEY= ffffffffffffffffff800000000000000000000000000000 +CT= 5ad00d644732b8e43c6aab648d475f4137faf07b32ba218bd47a1c90d146e899 +TEST= 312 +KEY= ffffffffffffffffff000000000000000000000000000000 +CT= 8095c2696d2f93f8cc880887923c4f539c9ef45b0c9edbf4527bb63bc18c7c4b +TEST= 313 +KEY= fffffffffffffffffe000000000000000000000000000000 +CT= 08cd98047139e2164e48fd649ee506b561c81d40222d2357ab48f38990c124ad +TEST= 314 +KEY= fffffffffffffffffc000000000000000000000000000000 +CT= 64723b6cd4a9f12a1b3af5a8a6bd3ac6c2179d60330f1058730fe32b00db04b6 +TEST= 315 +KEY= fffffffffffffffff8000000000000000000000000000000 +CT= 8dc5ab06b546fd382b653f23a60bc8df151c58eadd71daf00a3dfb73168dbc77 +TEST= 316 +KEY= fffffffffffffffff0000000000000000000000000000000 +CT= 58652367d294bd7f0d6d9bc40d56363538e69e402daeeaea56bf648a3effe55e +TEST= 317 +KEY= ffffffffffffffffe0000000000000000000000000000000 +CT= 95874350139b34d17efc05f4b07ff07d99427c336f62dbacd13f9940e965c68c +TEST= 318 +KEY= ffffffffffffffffc0000000000000000000000000000000 +CT= 8bbb93f87d406f51ff5619471875c18aae23c598ceedbeefa47d7bb213238386 +TEST= 319 +KEY= ffffffffffffffff80000000000000000000000000000000 +CT= 24e09e63f8f84a745612726eb63d9124ea22d56deac421e0e1a71c5bdc909584 +TEST= 320 +KEY= ffffffffffffffff00000000000000000000000000000000 +CT= c3d9899bb1a6f0e000753fd14c8b6ca01d10ffb9ccfc5d5fb2d7eabe80825e6b +TEST= 321 +KEY= fffffffffffffffe00000000000000000000000000000000 +CT= 05f5ef4c82cc21a6705b71e1f47fb17fee9858eaf62858b1269963b88f8513b2 +TEST= 322 +KEY= fffffffffffffffc00000000000000000000000000000000 +CT= 3869b7c865b0ca8edf839ec532a64b8ab2097e70dd04e351d993a1fcf890c335 +TEST= 323 +KEY= fffffffffffffff800000000000000000000000000000000 +CT= ebedff1ed56c47feb16289803920c210c1a492f8743a6eef3ae80dd70d1ff455 +TEST= 324 +KEY= fffffffffffffff000000000000000000000000000000000 +CT= 746d34586bdab83508f32a4fea8889554e4105366de43c62fa6cc9ecff334edb +TEST= 325 +KEY= ffffffffffffffe000000000000000000000000000000000 +CT= 7beee5757c5317e3692a4cbaf751032abe4589963b4e8987b1fa2c19304fc721 +TEST= 326 +KEY= ffffffffffffffc000000000000000000000000000000000 +CT= 0a3de827a552f341834cd522efb6818b2a6652c5bf82eaa4c67f5cc7a33c5ae3 +TEST= 327 +KEY= ffffffffffffff8000000000000000000000000000000000 +CT= 4f1bb3f652a6dd33e5ecd404d5f3eff96fb2e23f6aa9a344aa0d2db988f36e49 +TEST= 328 +KEY= ffffffffffffff0000000000000000000000000000000000 +CT= 1b2cfa1794437d29aef9281370c28b6e32964e7041c75341bc58812509accd20 +TEST= 329 +KEY= fffffffffffffe0000000000000000000000000000000000 +CT= a857a71e5060137878f649d1ac57f477e00f6a431836088a590c180fe7069717 +TEST= 330 +KEY= fffffffffffffc0000000000000000000000000000000000 +CT= db6660cd8e9f34c66b68fecb842bc41577ff0bc379c78e1009db1a92d1663cff +TEST= 331 +KEY= fffffffffffff80000000000000000000000000000000000 +CT= 6237b2471fce1b54827b2e5045fb4fa8e057482b036cec648c6e43fe6c59bdbe +TEST= 332 +KEY= fffffffffffff00000000000000000000000000000000000 +CT= f8cfa3a890be418813ce69c5d7c0e8d0272295ac9f9618ce7274263d568250b4 +TEST= 333 +KEY= ffffffffffffe00000000000000000000000000000000000 +CT= 32c164307b743bc21ed4eefebce428e3b2b93b6c07bc964dbe7bd9cb9d966032 +TEST= 334 +KEY= ffffffffffffc00000000000000000000000000000000000 +CT= cabfbd684ae7c1be8621b35c3b046a1fbb2c998a6d3caf78f329cc4bb3b461c7 +TEST= 335 +KEY= ffffffffffff800000000000000000000000000000000000 +CT= 29d30118af5f0d6bbda9f6c48f5b53c9b6cf1e77872f997379d6557c80fd6b92 +TEST= 336 +KEY= ffffffffffff000000000000000000000000000000000000 +CT= 4859546085b0c6037d2a25f911582c39bfc168af731c3a9a5bc7412bd7580c80 +TEST= 337 +KEY= fffffffffffe000000000000000000000000000000000000 +CT= 89e336ed4c872596d133390fbcd5a339b7b8f0d5a2e61af460bc7cc19f13c0ea +TEST= 338 +KEY= fffffffffffc000000000000000000000000000000000000 +CT= 0e4e3b270950022aed7d0d5cf771acab274f41107f6a4d319455dcc3c401b025 +TEST= 339 +KEY= fffffffffff8000000000000000000000000000000000000 +CT= 04391538d71c101b569ae4d35b952d97458c149f37fe3e015043fd899bed2bd2 +TEST= 340 +KEY= fffffffffff0000000000000000000000000000000000000 +CT= 022e7ee056d2ae80f5236fac599ee22458f876a13cce517c066fa2fb62899639 +TEST= 341 +KEY= ffffffffffe0000000000000000000000000000000000000 +CT= a58cb243cc3f94b578b336d4b716cb28b23d992b7fc41e0dda1f3c7719204d25 +TEST= 342 +KEY= ffffffffffc0000000000000000000000000000000000000 +CT= 09dd2d11f120a7dee7c85183235e2ea76aa9ab195bd8ba36d9f2b0e65663bf7c +TEST= 343 +KEY= ffffffffff80000000000000000000000000000000000000 +CT= 247d6f8006200b7942c23b8c4acd3211aa87f0d55add76a9b651527ddf637509 +TEST= 344 +KEY= ffffffffff00000000000000000000000000000000000000 +CT= 85bd3feaa6a25a34ef36bf361be285f66f2e40579690ad8bf65fa8abaf9afcf3 +TEST= 345 +KEY= fffffffffe00000000000000000000000000000000000000 +CT= ab4ebe4d6f5e7911c258bc9498f92c3a141ab379d598c6cf795730dfe1162a10 +TEST= 346 +KEY= fffffffffc00000000000000000000000000000000000000 +CT= d5bdc8bdaf457d5085aab0ed353e49e00e78af5d2ded96710d47befa24286f06 +TEST= 347 +KEY= fffffffff800000000000000000000000000000000000000 +CT= 0180afcd9dbb3df994bae118a78058692d213b410126ae159e82e25363688984 +TEST= 348 +KEY= fffffffff000000000000000000000000000000000000000 +CT= 1191b8bbf9ffde71a12d7cf1c9d049f85c9ee849baacdf84443e4c6580569fc6 +TEST= 349 +KEY= ffffffffe000000000000000000000000000000000000000 +CT= 9bc257a774195a1afa6bcfa60cb9b790e1de36aa54ef3a31d8daf5f2af693894 +TEST= 350 +KEY= ffffffffc000000000000000000000000000000000000000 +CT= ea47a73860c2bf07dfc796d1d6f1118041e6ccca9291bd4785064c10b4ff6926 +TEST= 351 +KEY= ffffffff8000000000000000000000000000000000000000 +CT= 52ef489756eab275dd74a83abce9092ed0f50b4fe5cd59afb58f7866e579b6a3 +TEST= 352 +KEY= ffffffff0000000000000000000000000000000000000000 +CT= 7d954db2e6d206e81a19b3e5670755580ce7d15d240682850e7cf88777854edd +TEST= 353 +KEY= fffffffe0000000000000000000000000000000000000000 +CT= 12497596a1b7eaf00be274a589dbdf10aa47cddfbd6dd589aa94836639466457 +TEST= 354 +KEY= fffffffc0000000000000000000000000000000000000000 +CT= b930426f1ac8ce29c17c3c9c42781c40c75c9cbe2a754bd1a110ade8156cee2d +TEST= 355 +KEY= fffffff80000000000000000000000000000000000000000 +CT= d3c164196cbf11f6a9d69e702d1da1bab3a73d7449a779b2190384b813e7b3d6 +TEST= 356 +KEY= fffffff00000000000000000000000000000000000000000 +CT= 89899a5163d3748d7baeab6496c463430a08824646d9d5f3d5745d0ff406c519 +TEST= 357 +KEY= ffffffe00000000000000000000000000000000000000000 +CT= e3030684042d177cef716b2131dbd4d38af1821d03e505bc951b38bd0b3d2598 +TEST= 358 +KEY= ffffffc00000000000000000000000000000000000000000 +CT= f377850d4f279dffcbf8a07a2bfcc884f24926542457856729b7fb670ecc1bcc +TEST= 359 +KEY= ffffff800000000000000000000000000000000000000000 +CT= 14bfd8ade94541080bf2d87639e7fbd7a643d5d910a4ba48406648654901caec +TEST= 360 +KEY= ffffff000000000000000000000000000000000000000000 +CT= 7d454c3b6645a66be4e73b85816f7d4f5a65432f08243973cb23029536a7ec49 +TEST= 361 +KEY= fffffe000000000000000000000000000000000000000000 +CT= 7b569938a92421b8706a6e1e8455b74ea0b6a81150f630f838306f65886f8395 +TEST= 362 +KEY= fffffc000000000000000000000000000000000000000000 +CT= 133e0764d8cf6ad58839c6687133834a1f19559a237642265701958dbfb459e9 +TEST= 363 +KEY= fffff8000000000000000000000000000000000000000000 +CT= 7896d0272f2de2a633c9e9472ccc10eb03447c682c5ab6c2617ac4b965f071cc +TEST= 364 +KEY= fffff0000000000000000000000000000000000000000000 +CT= d409541ec1da878e21a8b414fcff4cda20a0b0429b0089d78a82910c3d960d35 +TEST= 365 +KEY= ffffe0000000000000000000000000000000000000000000 +CT= 23588a96f0e536f432baf65fee5c8b949733e5d40e4df7bb3ad2182284beff1b +TEST= 366 +KEY= ffffc0000000000000000000000000000000000000000000 +CT= a107d9eee66f7e9297ba7efe4906c32a479af7de07e3121cfe6b10cd1186dde9 +TEST= 367 +KEY= ffff80000000000000000000000000000000000000000000 +CT= 7fe7bf940a65bd21efc526b4003b7f205a6a6c4cc2cb45e355bd1d4026607ea6 +TEST= 368 +KEY= ffff00000000000000000000000000000000000000000000 +CT= 995d2dd63778be4b059be3e80c9593046070bfa20ae01eca31b80a5d686fedca +TEST= 369 +KEY= fffe00000000000000000000000000000000000000000000 +CT= 161d6dba3508ddb3549c8b359f1f141ca03bcf4bf505c46de4594b3303062304 +TEST= 370 +KEY= fffc00000000000000000000000000000000000000000000 +CT= fac0ffbb77fb9e9a86ddec91c8affdf95a481d326597089d4e8a7f30518659cd +TEST= 371 +KEY= fff800000000000000000000000000000000000000000000 +CT= 0df6fec492c607d7aac38e88d773f52407f42f192083bce095301420abf222ca +TEST= 372 +KEY= fff000000000000000000000000000000000000000000000 +CT= 9578634b873464ac685556ad6bd3e4607da9af4ce5196857b060d2f9415b89ce +TEST= 373 +KEY= ffe000000000000000000000000000000000000000000000 +CT= 1e4411fab81e62a980044fe3b6fed9aa45ae83ebc85f650e82b2c16cf3206ec3 +TEST= 374 +KEY= ffc000000000000000000000000000000000000000000000 +CT= 5b3435873b71d53c93ed72d3804197b32dbdf7465c83beb4a01ffa6979d86d24 +TEST= 375 +KEY= ff8000000000000000000000000000000000000000000000 +CT= 42e255e66b16894dd57618f7b1df9bed6fa49bb9bb354cf71c904648bab6c89c +TEST= 376 +KEY= ff0000000000000000000000000000000000000000000000 +CT= c3a20d4ff434e9d7479ef06238ac770b751add1d775b03363a5561488bb5a8df +TEST= 377 +KEY= fe0000000000000000000000000000000000000000000000 +CT= 48123f40ed6887920269964dd02cd06f67e1184963d8cd668221a3715a4cf937 +TEST= 378 +KEY= fc0000000000000000000000000000000000000000000000 +CT= 87535dd5fe45f2a3c6df9b68ab4d6bf50c73df61d7c4260ba2d5ee50155f8fce +TEST= 379 +KEY= f80000000000000000000000000000000000000000000000 +CT= cf38931fe5896ca8f67d1d7c11fc011482e416c193d25df7abdee958ef0ca3f5 +TEST= 380 +KEY= f00000000000000000000000000000000000000000000000 +CT= 3313cf748c52f5d8eccd95dee711c9a777849ab537123804f82f7d0ae75e0358 +TEST= 381 +KEY= e00000000000000000000000000000000000000000000000 +CT= 4f20240d473118f3b57e3277ad53d94e6207747c86b6417af66dde22fdc47c68 +TEST= 382 +KEY= c00000000000000000000000000000000000000000000000 +CT= c37391cf26d9fc900e5293963755df54dec74c26a0a4efb2c6f6c1f4e49b07cc +TEST= 383 +KEY= 800000000000000000000000000000000000000000000000 +CT= af2df17e790c8eb31b3d9d35486357292bb266fa9962a1d3ef533c47759f7548 diff --git a/flint/test/testvals/ecbnk88.txt b/flint/test/testvals/ecbnk88.txt new file mode 100644 index 0000000..d3c397f --- /dev/null +++ b/flint/test/testvals/ecbnk88.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnk88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= c6227e7740b7e53b5cb77865278eab0726f62366d9aabad908936123a1fc8af3 +TEST= 1 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 7536b4b6490c083597f6596de8c627b1c75d0f4f9ba24de284ff575e25dda7eb +TEST= 2 +KEY= 0000000000000000000000000000000000000000000000000000000000000003 +CT= 87be1591fd6daf58a87074d39c52eafbd3608af9030a1ec402ca93f4dad5e6b9 +TEST= 3 +KEY= 0000000000000000000000000000000000000000000000000000000000000007 +CT= 57a34394536e04047d7ac4edb5cf771f69d36a7b465f430292c939452cc397a0 +TEST= 4 +KEY= 000000000000000000000000000000000000000000000000000000000000000f +CT= 5d5fbce4ac82c5d334f9627bbaabb3f526d9be38d38de601abcd726bab865f0b +TEST= 5 +KEY= 000000000000000000000000000000000000000000000000000000000000001f +CT= 24c06bc80e9b0dbc68103c638b9302bc17bcc83d63145dec83898af1d942cb12 +TEST= 6 +KEY= 000000000000000000000000000000000000000000000000000000000000003f +CT= bffe5e5e5c2c0978f9b2c15725e79dd147663caaac8c1c5678615027afb75102 +TEST= 7 +KEY= 000000000000000000000000000000000000000000000000000000000000007f +CT= cc13fd7912bd8f638c77eaeaabdd2c0546d070f6a9e8bc37d0ff90d9aaf55697 +TEST= 8 +KEY= 00000000000000000000000000000000000000000000000000000000000000ff +CT= e153b99deeeb523118d07d0fc643234b11fbb180272de993ea7a3cbe771c3293 +TEST= 9 +KEY= 00000000000000000000000000000000000000000000000000000000000001ff +CT= f40da527cc2a23635db75f7c07be23587b0b97b6ca6aff0919b14702d01264bf +TEST= 10 +KEY= 00000000000000000000000000000000000000000000000000000000000003ff +CT= d20659f3cd5092c211cd5943e211cfdd940b3facf4aa674f8070994d81128419 +TEST= 11 +KEY= 00000000000000000000000000000000000000000000000000000000000007ff +CT= 773167068bf2fc73b96e5f1044538e616d5dd6f595ef6d1517029334e123461d +TEST= 12 +KEY= 0000000000000000000000000000000000000000000000000000000000000fff +CT= 73fc4ed81674588042a1baa302637e2732588bbe6e85266cc7de03db24fad6b6 +TEST= 13 +KEY= 0000000000000000000000000000000000000000000000000000000000001fff +CT= 2e87a4c62afb0c4d8cbb6aba6fdbde3003b1a98932c8586e4089805c29a3b22a +TEST= 14 +KEY= 0000000000000000000000000000000000000000000000000000000000003fff +CT= 31916d5da07d68dc6c9c6c038dc5d809378288591185b89432bb41b31913a246 +TEST= 15 +KEY= 0000000000000000000000000000000000000000000000000000000000007fff +CT= 8f4712efbc7fab3419a1ed394e512cc61a58bd7c4702ab3566f2f924d5ce7b32 +TEST= 16 +KEY= 000000000000000000000000000000000000000000000000000000000000ffff +CT= 588294653e3ce90c8a2a76322805c122615a0ab7b1ddf8f58c5105d6625b0edd +TEST= 17 +KEY= 000000000000000000000000000000000000000000000000000000000001ffff +CT= f88714726eb980e66dc3410fa3f763b8bb8b58ef3b27d1d5fcba6eba0d1fcd2c +TEST= 18 +KEY= 000000000000000000000000000000000000000000000000000000000003ffff +CT= 4928e6c6f6f5c30e83c5cf34690b5f8aa3696a1f123bca0ce9334f5f0cc2151f +TEST= 19 +KEY= 000000000000000000000000000000000000000000000000000000000007ffff +CT= c040b9727696aa2cd93bb043c6cc09e117cd0456fdf7778b34188815fedddd13 +TEST= 20 +KEY= 00000000000000000000000000000000000000000000000000000000000fffff +CT= b03aee5c2e38cb523b9c25e5b2cab4b8a25f8b99f1f4b249091b61757cea7e6b +TEST= 21 +KEY= 00000000000000000000000000000000000000000000000000000000001fffff +CT= fcd10f95a2dd1c5a1860d6984b21b55c4be74c6d36175f9707c15da04c27d689 +TEST= 22 +KEY= 00000000000000000000000000000000000000000000000000000000003fffff +CT= f071abf6a7c6d60650763405d9fdc531899ee4fc80557345ca1b2bb989ea4998 +TEST= 23 +KEY= 00000000000000000000000000000000000000000000000000000000007fffff +CT= 305c77236ec83012b8dd78c7cbf830aacadc4a4e0c2e8cfe43337e987e9b6bae +TEST= 24 +KEY= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= e013364a2f00d60771873ab220c1b6c23abbe5b6e3d486b0e83a03017f32ad9f +TEST= 25 +KEY= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= d6b3cdb005097e828a3a120740f278c9211c083c04dec7a2b7f4d1b43265803b +TEST= 26 +KEY= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= 6b5a84803728fe60773d916000b3defee203d30733133b94627103e00798c23b +TEST= 27 +KEY= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= e867624d02038fb29109b819a966e6fd203d84b36d11faca1993b0ef9ea03cf8 +TEST= 28 +KEY= 000000000000000000000000000000000000000000000000000000000fffffff +CT= 17e96ce3f6b543d895fa8809556d0d07ac7c072aba45017f1b58ae2b543ef02b +TEST= 29 +KEY= 000000000000000000000000000000000000000000000000000000001fffffff +CT= 26e49beb977ce573c39d43310f4116bcb9570a96b097892e058b4d96b671cc8b +TEST= 30 +KEY= 000000000000000000000000000000000000000000000000000000003fffffff +CT= 6654940cc1e33ec175858a4a3c30cb19f09ab73003b66e8eaad731c41e1be679 +TEST= 31 +KEY= 000000000000000000000000000000000000000000000000000000007fffffff +CT= 09887b905aab24a7962864452ca38d7ce64e5d2e845418fb5f3f4be9773392c4 +TEST= 32 +KEY= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= a571ed93b494662620554eeab96c4bc12bbc0be779e595046dfffd60c1a66e63 +TEST= 33 +KEY= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= a9741d0243475889dc0313a499ea00e6f50e3c75b889c8cc4bfa352546a26daa +TEST= 34 +KEY= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= 6b99c90ac14a0e38967f709a67178e8f6b8cfd57ed6db1562372fb12019d9e95 +TEST= 35 +KEY= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= 917bc478b1532b8975a3933811fee8a64c0b67511647e8f25823cf3caee99f9c +TEST= 36 +KEY= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= 83a170b853660c9da5dd6c1824f480db1504f90ef4b1e7bc031ffa348b6afe5e +TEST= 37 +KEY= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= 42a92b282225e678d081aaab6b8d15de60212fe61423a7e4e5e1d7af5bfec883 +TEST= 38 +KEY= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= 8117f11f098e12efd0270a8bb5b9b83757d063930067d1aab5ce9b3e36df6f35 +TEST= 39 +KEY= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= 7c5a5ccb73c0995a235a7848b4580b1c1a73de23c66f0e7b58d55e4eaae8a0ba +TEST= 40 +KEY= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= 4581a36388371f258df08581f193c196885b8c43dcbff1c683f462e68363cbf7 +TEST= 41 +KEY= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= 570e5c1c6b8bec3fac3edbb0edcd10edd296c140d59789b3900d41441d6f2a6d +TEST= 42 +KEY= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= cedc7bbfbe870ef796b9f2019bf3ae9851f7d6cc8a81c40de890245a35334367 +TEST= 43 +KEY= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= 9d194baf99a4c58357a1f596aa531b480ddad29e82a3b257d28c5b8449c50ddc +TEST= 44 +KEY= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= d07488fe963db2c99327a4aac58d39ecc6261e28a1043759b8b361bcd5c9344e +TEST= 45 +KEY= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= ab62bf7b02f5937b4de8e680ddeef08c06fce47d46200a28ac28bcb16314792c +TEST= 46 +KEY= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= 6b523b89240dc337630ce963c548316198ca8b1dd19fb4e4b7f5874153266e66 +TEST= 47 +KEY= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= 4a811faedb2b6447d8822d25499f4b46a466cc86a34a2d9753390a52bdd802ef +TEST= 48 +KEY= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= 28dd4f97bbc73cfe1c2092e0063334d557f8b5b1831e3db1fb2ca429211bee65 +TEST= 49 +KEY= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= b1d94f138661cf9c6d05a62512ab1d0ef91079a6ab3a95cacace039418325c4d +TEST= 50 +KEY= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= b9c04476432d1d6f5fb317f85b6ea1acd072d850cd4b419ab02b089a50611efe +TEST= 51 +KEY= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= b7a710269b11a2e1c0f98152664f9b3ae1a62b2ed763b9ee01ec32d8cb2a07d2 +TEST= 52 +KEY= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= c4603173664c6ba0c6162d50663fda77765bd72876e7683e9f4a2232cf5007b7 +TEST= 53 +KEY= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= 8e6b3ac1554215b866a93b02e6f44fc39bf033840c8c05da0e1dbfbf3470d7dc +TEST= 54 +KEY= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= c5bcb2a8453d6233d80d7c010238edf1f8eaa7c4fcd7ef4c12196c14b4d95dda +TEST= 55 +KEY= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= fbe10587eec02f73547f3fb15cfc3046d9e3b3c7c3d2c1d5d38f4424e05c220c +TEST= 56 +KEY= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= bd061e676eb8a899138d1f9d81bacd41aca7f7401aa15c1ef2c39fe074a290e8 +TEST= 57 +KEY= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 4028844795878cdf862b02fc733b4252b77b75df3144e6765211fdbe92a02485 +TEST= 58 +KEY= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= be7fa52d388f50fe74b6fe1df831f9d628132f9fa2b1a083057e20506bdc688e +TEST= 59 +KEY= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= ba0a9a5be85e6d6b43688a14fd7e66387296b61789314af19ea47f448a0fd893 +TEST= 60 +KEY= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= f059ce183400e1e7825b1d523e2c9580f23f753f3d41313e0156180d2199f890 +TEST= 61 +KEY= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= 540b450f2515540eb012cb58f085c25da26f8fdfa8d9e9f45b61cd8f389a50a4 +TEST= 62 +KEY= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= 3ea8e7c958cefd4de82a332219c7599a33c66f91a9e49bcfd03542dad4af2768 +TEST= 63 +KEY= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= d86e1dd69e679ceeffd607e8ac911bbc1721f834541e5b7178184ba97b2f31be +TEST= 64 +KEY= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= 5f5f8226aaaff668f7ca16b751d78f412fe1298da5568e1bc7f3590c97e33f91 +TEST= 65 +KEY= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= 2250db79f8faf1991397a48f912f09217e0045c72d0641ebc223a8494f1a7904 +TEST= 66 +KEY= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= 04e1b96eca3e9eab1de3de33e30dc3167546a03e5ccc5ae2b44030b5664b6605 +TEST= 67 +KEY= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= b39949337402a6778d3aa8525877f0e176f6df19bfb31ed2c5259b34bd61c4c2 +TEST= 68 +KEY= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= 95a8e7dd8549578e0c24b4ab6e65d385d6b0552fccba66d73c3c6a3f4f5152c5 +TEST= 69 +KEY= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= ce247e9e98d75a32dd7813c0468020ec6ff49117ddfc7fe96b5bb19029db7fe1 +TEST= 70 +KEY= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= 47c5a2d483db19cd0d7f0a12808ba506a04fe9798ffa26f23419de41cc3ef96f +TEST= 71 +KEY= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= 56c06e4da19667609d2925738951f2a7ac0d08370f8af785ecd9643db3f169bf +TEST= 72 +KEY= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= 03ed18d5f25531be5744a61f3e3e9f48b4f620522c5a38e3edaa28baf1ad2370 +TEST= 73 +KEY= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= 1bfca98e5f54dd9119191af1e9078b0d464237c0d3b6581ef3cd8d625e10ca6e +TEST= 74 +KEY= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= 54a7a417f614344716664e46fdf2a89d370c8f3e271de67bc476dfef20daebc8 +TEST= 75 +KEY= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= 1da4d3a29128d6e75a50c324f774d7f3b30df4a0cf4ef60f88c13fbe5a1dfe57 +TEST= 76 +KEY= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= 10a828a1422ce99203c86d3db1f0b1d7c2ff74aa2485bb2b8d231929dbbe7a40 +TEST= 77 +KEY= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= 48b4b8d5052aaf132ebd4b5a30efb2a32a19e303f12511b2be386c357ac3612d +TEST= 78 +KEY= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= 8f663f446a03ce31b8d6fd90f2c0c1c2a1857e2e48289661d6996a69fa4b33d6 +TEST= 79 +KEY= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= cffd47302676d0f6a86ec1df5a667e74bc0a3845dbf74e9d441428f5f282a828 +TEST= 80 +KEY= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= 4cda5a575ce3041d1ad67850d1ed1569704d954b6e1e7e003705fa7a76e61dea +TEST= 81 +KEY= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= 27a1cbb8b724d76f27575ffed16c439f9b392abdda491a1046fd68303f08ba09 +TEST= 82 +KEY= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= d57d7647b0365a1792d326de7cb76b49fe612b779c607bc42f12265c9f187071 +TEST= 83 +KEY= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= 042b30193299619bc343e0f0667a7b281c002d313e5a9413cad182e570587b35 +TEST= 84 +KEY= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= 4d00c71cd6987ac5e90f331a35f4e1467b25410c0fe13b0eb0da9426207560e2 +TEST= 85 +KEY= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= 2ff08dc5feb52b8943db310b4aa9abed6753e853a9d9e84e35af9d1f3e008143 +TEST= 86 +KEY= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= a35b41d8d3b9c8fc050482e353d6e3d273af68535c5ca8e355332f61ec5c919f +TEST= 87 +KEY= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= f245a1fb292b91a9925d5fc73588ff3f6914de3f937b78acf6f0d2ef6da2c7fa +TEST= 88 +KEY= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= e64537bdf8e194358e1cba2e27bfd68344469a22a12e0fd46310bb178fac66f0 +TEST= 89 +KEY= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 4c1c8a0301b0adb32835ab5f866e7c018c899a41cefc6b7f1892d64f5c21a663 +TEST= 90 +KEY= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= 7727c35792ad3976bb5830c4dcabd4b0b27d45df18978371dd858203e4cd914e +TEST= 91 +KEY= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= a261006f821300f08d53f477b391612159a3b5098ffc8fd1539d1b8c0d02ddb0 +TEST= 92 +KEY= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= 31ceb161724f1e6697e089eeda3062c47d02204e24071a25eb0ffc1fea9b79c4 +TEST= 93 +KEY= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= dd3184ecb8ee6dc3c9323355bd214979ee6a91b96a708c7b3d3089e77f3bcf9d +TEST= 94 +KEY= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= 339736681f0ef121b124133b8e0d44f573bc91d25f593da1415678b107dca173 +TEST= 95 +KEY= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= 5f4557c171032235b8012a76bef8275d8bb296808bbc9b9e632a0a9a3adab086 +TEST= 96 +KEY= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= b62b49be00fd2f33315b32f4c6ecb066332682fee46d85639881b66d0adbc807 +TEST= 97 +KEY= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= ea4ad0ce9e4bc0b5e522e4a588906ffb789d8f121a8b5a17497d21c1b303b15a +TEST= 98 +KEY= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= 176108113005d5ac082ceb6d3acd2410ffabc8101b0fa6db40ca660c4b071c45 +TEST= 99 +KEY= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= 3c5424598e5923499ba135fc14983fc89dea6bb34780ebf6ad65d8fe33a075f1 +TEST= 100 +KEY= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= e13c3d4fda07a525759008829a8beade99a778a65e0f175730cf3559f2d67d84 +TEST= 101 +KEY= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= 447971aa7181f72e4468a01509f8fa7574adb015c9c019473e290d196770bcd5 +TEST= 102 +KEY= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= 2a919658bcd618a424cedbf3bb0a77085a31dc2eabd28344d617dc16a1def52d +TEST= 103 +KEY= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= 3ea8345818d4be8cd10482830a21913a6973d8417659767f31044d42086e8af7 +TEST= 104 +KEY= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= d723562d2a5737f4b568dcd6e4f8124e0dea90cf5a38aa59a8127e1140d5881f +TEST= 105 +KEY= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= 18dae24f3ab10093acb93512d4bb2460125a756f608a9577d1b40904e458e138 +TEST= 106 +KEY= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= 89a9d3637ce3df74f84a39e517f1a7f3f1560f894d547f3e6208b26fb0778c5a +TEST= 107 +KEY= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= 5f495d485186d4bee62c843f0e7e2c7b880c399330941f1c788b346768b67fb5 +TEST= 108 +KEY= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= 75f3a92c5720fade8bbe4e3b99c3a35b34fa69d67bff16003913f391dedbd4c0 +TEST= 109 +KEY= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= 7302c156c9b937d5bac438eef20ab34d57b0aa7b71370d577c4ea981c64f61e7 +TEST= 110 +KEY= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= d6c9e7ba875e34572ad43e9f77e24aac3c39bf1729f67fbf11bff84818270f25 +TEST= 111 +KEY= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= 4ddee7b8a67f10fe970818979852e918606b9616dfebd9ddf338e8c7cc40b2f6 +TEST= 112 +KEY= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= e83d1a1ab2a42e51810448dc66de7e639e275ff27fdec32b8565a8d6d9885810 +TEST= 113 +KEY= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= 71b531ee5d854e88fa6fe677ec6bc58baf615ba36a57c9f8680785cc3e83823f +TEST= 114 +KEY= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= c8dc384fe5540fc1c6ff3ce9b193706355e7f60c5e585ff6a650413eaa386138 +TEST= 115 +KEY= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= 469de6d96cb43cb104c46ecf27739f190a44a90fddd44a836bff513c60d41499 +TEST= 116 +KEY= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= 85b8870bd7c1686f7cc5a5c108d65c6dd0976aebef00cd52d4ad12ef2e0d21c6 +TEST= 117 +KEY= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= 536de5a379f6682a888c706024413c479804acce64e8adfeeee998c979ad1bb4 +TEST= 118 +KEY= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= 59b529faa72b2ae5dd930ce86455c28d362a6f05f369aacab78e5b66aadbd8ee +TEST= 119 +KEY= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= 59e9c82a888fd15974d50e69abce24ccc9867b33c18e074803755c0014973f86 +TEST= 120 +KEY= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= 3c132bc30c365d12f6bb5a0e5dc5814e73e5c88f4db0697fe5736dc07cea449f +TEST= 121 +KEY= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= 14da7ef6441b998f7504aa6e69a057d0601058ba83918038c31e3b64d36c0bf8 +TEST= 122 +KEY= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= 750a778deb78af0a8314da190c608e617eef84a7ddd25661622cf4424485f680 +TEST= 123 +KEY= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 4ac1121882d57fef1eb3fd6db58d6c4a2916af0bb138921ee7a58b379e628cf9 +TEST= 124 +KEY= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= ca99de3c951bca726476a4d30582698d8b89f8bb21db74303957ebc825c5af9e +TEST= 125 +KEY= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= b83b2a0fe8fa6daca4ad4a27d7ba39df4e4a3775cb94e243637077ea2388cac8 +TEST= 126 +KEY= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 43838e605c7bc2741666b11644d2d2457b60c6906bee3761c04d1344b512eafb +TEST= 127 +KEY= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= b03b8f817dff21dcaaa951450d7bf3aa61350a9f007c9f7ee1bf6bab8c60c5da +TEST= 128 +KEY= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= a86e6405627142500bedb8ac38ca2fa835034b9a5d4ec408377d025205b5a8f1 +TEST= 129 +KEY= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= eaa54d824c848a330b444b3fe26d34922aad898019f023ae314da7391c2238bc +TEST= 130 +KEY= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= 2f9a0b62412017c7103b1e6346ce69a4e34cd86ef432eaa5f423c7c51590f1d2 +TEST= 131 +KEY= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= 324eec973a2e9a653cb3159b22bcad4c0691000759ab3e9e3970f64b0b34d60b +TEST= 132 +KEY= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 2c5769a44e2295b5b8fcb7571dfee94644947ae370e00160390dd426ffbbec17 +TEST= 133 +KEY= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= 9bbe9184e544f10f9bd9c7cb83d7c0efa52c37e79e168d09fbb0787b49a87f04 +TEST= 134 +KEY= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= c4201b6363068f7d547bcd7a6d36dec5655aaa5bd1f56b27998f2840d81fe9ca +TEST= 135 +KEY= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= 23bbbec2e3dac0fa5184f871a528ba293ad14844f0f39d0829e3945f537a6abe +TEST= 136 +KEY= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= f5cce2fafa862ca5816568b6741a111ae34457750d5c3605d873ba326948851f +TEST= 137 +KEY= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= 6072cf01a0ecec8d953e4c82398c17d917075ab6663c1236777f1f3e71b8b68c +TEST= 138 +KEY= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= 57e048ba924cec220e656bc917972b51ae9d7d852cf3610160a23823d445f172 +TEST= 139 +KEY= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= 0f6f5bb327e03610488f43d693af83db2bcb3660ecbe82eb57522034ab6891e6 +TEST= 140 +KEY= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= 41ba237c634f19e67a2b9d20b97a3aa1f2fee430351d7d0d77f778b6574657f4 +TEST= 141 +KEY= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= 4d3de0870c033814cdba0a7567036165076bb704a00fdbaca7f56c174521a8bf +TEST= 142 +KEY= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= d1829c1bfb7e47574ee15892ab5bd6603f48a700de23921b611af77d8b53cbd2 +TEST= 143 +KEY= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= 9d68592a6f11fbef3e50488520008352289bbabf109185f3550ed816cbd119f8 +TEST= 144 +KEY= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 1d350e7c38c04b0db531ff84feb1c3682ef771ccb9c78fe511cdc483982eb8ad +TEST= 145 +KEY= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= 7afadcc3ee51f1e564579a4a9022c345216fa7304e369a636f2f1cb5366245d7 +TEST= 146 +KEY= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= 087772be43e0432075cc40fa706019bab6c360424a2e92fcc09a668c74c8838a +TEST= 147 +KEY= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= b295343db1b9954074808693a063a98e0db73ee6756d82958774088200658b27 +TEST= 148 +KEY= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= 5e2d65a9cbd750e6625136adc36743a3a3be868a9b11dc47cb43cc62cc8b44e5 +TEST= 149 +KEY= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= d4634bcd7ab19e495f33958d220260241049495323bf8f399a052bc0c4aebf82 +TEST= 150 +KEY= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= 776d1c36aeed895d93a0a9f77c3cee839509c4b4310d70dc3e1377e92429a91e +TEST= 151 +KEY= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= 47e6d541728eebc14a91f2064f9adee2e8d7cb518eefc90e1ab9b9e7b226aa27 +TEST= 152 +KEY= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= 52acd12800b24b71a3d897f87f87c7e3067ff11b6a9c8194433de837907a44e9 +TEST= 153 +KEY= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= f3b780ee34bac2a6e3d7f18d79ef377c0acf360d7b3a356755ccfd992fa5401c +TEST= 154 +KEY= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= acccd214a5ee00e8bd5378fd3f81dca3d8d7c2a77911d9de23c6f2a4ff3a9822 +TEST= 155 +KEY= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= efc135fe960c36f0d0723f345cf07e5c5745cd1afa759aae882856e8c0f084b7 +TEST= 156 +KEY= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= 177908a9c7fdfb549a262dab3fb0da423b78cdeebf6fad1e73af21ab7f069e4f +TEST= 157 +KEY= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= a8a647b2f2e270395f8a08c9ee6d2bbe798922b9b725166171bf0620947195d3 +TEST= 158 +KEY= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= 1f2586baa4405dadb0c2f058c411b0a0b562f0fb61e81e640be920f0acb878be +TEST= 159 +KEY= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= 77f194a5cc292e6ff59d5cfd3a20bcbb4ba64f2d7fe08287a5a799826bb81c3c +TEST= 160 +KEY= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= a959120f264318103030292ad5ae269f7e2f8de4fee18acf5cd91fe2470c2462 +TEST= 161 +KEY= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= a5c06b8642b0fb53cf768ba7a1fb73098b1afa6bd1b5c88fa0f58b078345ed70 +TEST= 162 +KEY= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= 1d55c87a334ce5d433bfaa49216e54e664919e525497106ce94fb89dc13799c0 +TEST= 163 +KEY= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= 643c14b58de857d19a1ca0a3440b7b10cf6c077fc69bef47770a3d9af9da6de7 +TEST= 164 +KEY= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= b69a7f9bc3c03ecb7f8933e9f84561ab16400262ba30cc4adbd46036d46c7d89 +TEST= 165 +KEY= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= a9fd55c5b8ddd8c99ee4683d68eb4b54f78777b87708bb9de23d98ee7ae90943 +TEST= 166 +KEY= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= b2ba5ba2fc6fc46833f79e3d727b0dabff136b0753343be06e2e7ed9a2e5f472 +TEST= 167 +KEY= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= bee48677f955926bdae83955e131538f327977d89608119584ccceffa4a0d875 +TEST= 168 +KEY= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 45dcc75c44c0add6d0fe2663c3a3a3aca618b2863ffe9eef4288f44012964db7 +TEST= 169 +KEY= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= b9103e589c62809a1558cd1bb70c2bbd2dead5287d72abb6b0d3cd6a3b45d7c4 +TEST= 170 +KEY= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= dc0504aeef90d84cc53a44d629bb323467984158f6044c96caa0c440e27ba6fc +TEST= 171 +KEY= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= 4980e9ddc1f5237c3838d485c90704bf3815ea780c5ba6d82c84a6f74bb7b581 +TEST= 172 +KEY= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= 66bc88b34616e96d8fdba03c58fffe871c55d6e377d197a37f330757c21c5ed2 +TEST= 173 +KEY= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= d36591f39d9c8a895d5ede259ac8747727714e66310a97319468612241819ca2 +TEST= 174 +KEY= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= a210f991b472e64eb15d355cbf78de47f31c171bffcfbe63a968324948efc835 +TEST= 175 +KEY= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= c4b5f1f65b86d1cf64daaa39004e5725949157c39b07663d5915dae992685088 +TEST= 176 +KEY= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= 327c73ab2a3c1a84899a5fd4e2c03b6ef76e25891c55471cb6968aedb91f6788 +TEST= 177 +KEY= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= 832a5bcf28fca674b18e90bcfd27ef5b56757e920c305a928f4aec50acb0c288 +TEST= 178 +KEY= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= e0fa059959d06e267b5adbffc6d2af201e3ab563c3647f4d8ce57382c00ef206 +TEST= 179 +KEY= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= ac7f36ac119b5c16657df9663bb2d3ad13edf825e1dd18ecbb74055f5c931587 +TEST= 180 +KEY= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= f670ceb59da5f8d1dc9578333a66613465cbf7dcf0c726fa0d1875e45660c835 +TEST= 181 +KEY= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= 17d5351e797f7a4b13237a8a293ef6771a9e2b177ad2ef88929b4f73bb6c9ae5 +TEST= 182 +KEY= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= 9ce34dea99666abcf588ffd416562e9d2bfd5181aaffea3866fa7349b83351bc +TEST= 183 +KEY= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= d8a43d5938bf19bd1e82b06e3fbe6815a356553b63c2d4078057d1db3f873a98 +TEST= 184 +KEY= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= cc471a2cfa99121b5e1e19802df411d18a45902f497a31bbb1ef013536328f97 +TEST= 185 +KEY= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= 86c431e96f60487a94597ee44031ef339d236acd64e719e59e0164519d899613 +TEST= 186 +KEY= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= 2c6c8e52e1355f5e6aeca7f84e9cf07ec6b9a1670d9585ab36ca7a7b009abc27 +TEST= 187 +KEY= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= fcbc12e5d46353edb6ae539fe9c04fd6e534c5347f14f516b47969094daee152 +TEST= 188 +KEY= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= 93a73781e331a283a7ec1d4fd1d38f9e65e92a24b72842bcaebe12cc8deb576c +TEST= 189 +KEY= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= a4572cde43bdd514f06380d317acac0bda1e869835b117dc3f79c370b90d89a2 +TEST= 190 +KEY= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= c97f88dbcc10ca57252cf444ea2a4f5200b657cc8938033affb8e1d7b5db1a0f +TEST= 191 +KEY= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= bc89f9b7ca800a826851a955db47ef1a16f07ac48dff4b1f5fe68ba6691c2462 +TEST= 192 +KEY= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8cc76c69c3a3b9be334f2ee110141cfa554ad45b7878c18ea131fdb6a2285ca0 +TEST= 193 +KEY= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0919f5b17a8c888d2a8bf118f6819334bdb6385ddd985ab9735a97b2e058c476 +TEST= 194 +KEY= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= f1ef025f0500e5e3fbabad65f15761fddc0ebe4c502ddceec39c6ea0162f6cbb +TEST= 195 +KEY= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= c933c03ef8054fd14bb606838fe6838a124f5a8ca8371077188b4298a03bf323 +TEST= 196 +KEY= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= fc871f839d143c46dc1018ec8d0faff83dd1409508a5539fb2120a1002a01eb7 +TEST= 197 +KEY= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= ea2ce600eb8c8857183c49ed56753d6fb532ffd71afdfd13d8e31275bb2d71f3 +TEST= 198 +KEY= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= cc26f1780d69d31d9f7fe6ce2029d60e13b554587658ce179b2987504273cffe +TEST= 199 +KEY= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5a4dbb82b26be036d93e3c772636107a7cbf5db6e98fa831bad9d94145758f51 +TEST= 200 +KEY= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6cc8a558df0ff4be09ffac8ac97e1383bd0bf094de021cbc7aa6f8a004634d8c +TEST= 201 +KEY= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2d7c78b8899ffa31d06a77fa31b135b51a6c02c1272aba35ef14b0e8751eb57b +TEST= 202 +KEY= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 617af07f61635a1d0ea707b5c31a71b7c76846d134f5e28d7f2e32decfb3b1fc +TEST= 203 +KEY= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4b5e2bb59f7cf1a3d0f73074ea5d8b0cc357a10f5c19192867b855e86354a388 +TEST= 204 +KEY= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8dfffbca56aed078c9fff444a9e145644003491dd1bba4d388e17d552f6b1b00 +TEST= 205 +KEY= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3c5c11d05e0a29fa1c7a1d4518306710570b3012eac2076dea7e44b0b5387010 +TEST= 206 +KEY= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 897b54c8505ba454afb0e11a996721a8d9a4b17177871d926b7cc25f000d3d5c +TEST= 207 +KEY= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e17ca42ee1833952b04f5619936bfeed51a22c4c8f8c42277b5acdc751f03567 +TEST= 208 +KEY= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f3aefbb046a97a23869e1c99ee094774ed13503fec1dd261c599bdc6e0d05cf2 +TEST= 209 +KEY= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5d523e64824ad845d2c0585bc9c534ab4876b45e237f0571336dc5170adbe15c +TEST= 210 +KEY= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f5f369f03b9c61bf7764d5a21073f4278edd5e15d6282c25f6f383472e9955e8 +TEST= 211 +KEY= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3a5925800c72a2ac8d3df01b6a7c62eeae32d28b77b6e43a76b33a60381b5551 +TEST= 212 +KEY= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5e96b7333ba92ee40b97ac0a5ad5cac493eafc9fe5559780a30db20ff24f42aa +TEST= 213 +KEY= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f939e1c63b1bf65ba2ffca7c4ff6cb0c5db4dd0d2694ab077f4548e6e5cd4a98 +TEST= 214 +KEY= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 96344d876f23f7e772aa1c5e70b469b85cf2cc1609d776470f53cb9f6106264b +TEST= 215 +KEY= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b2ec6692b7ce07fd320dd0f7541adbd3929e29db3c334f3b38011fbab671086a +TEST= 216 +KEY= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= df59aa057a2b5e5b83d162c20e6555b168745f250230a1aad460c64c77aeaeb1 +TEST= 217 +KEY= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 11ff287e9aad00521fe0e890b8ff01d9cd72df935907e11412e7baf159c43b9f +TEST= 218 +KEY= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d68bcd61c9bb213f6e4a35dff889171ca4253ef9cb795748eed2b5daf91e1b5e +TEST= 219 +KEY= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 28db7f840b1d155c6defce9dd9ddc719f86e0e8ead2854d0e2d3cd1f0ff5c720 +TEST= 220 +KEY= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fa7e1299bb4f4c7fd158f7bb8f5344002aa8015526a757585c7674b455a6d93a +TEST= 221 +KEY= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= efdb40104f6e4b9b67ace8247b2d297e5463a27483c92bcc8d5e0e9f076dfd4c +TEST= 222 +KEY= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c3db720b3c962dc80fce41cb316dd6d3d2166f09897b1471a55b159c67daeeab +TEST= 223 +KEY= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3e1d8ca8a27f1b3293a8c12c1a320a718470a4059d841ae5fae44b64263132a8 +TEST= 224 +KEY= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 34002990e9fcd2a93bf6319aaddcda43be75f0879aaecf7e4b5bc6ccbbf8be8a +TEST= 225 +KEY= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 31db74ce912981a151d0af4fcdc5d151a38fa532349334a6af9c7a5198cfbbde +TEST= 226 +KEY= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b10582605187f18e4677d46e11b8f469b4a1b52aa52866c3e6163bd45b8ab0fd +TEST= 227 +KEY= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8fa00d6b3356d92164b8f962cdccf766d6d70aa1ce95f0505bc9e371f847e844 +TEST= 228 +KEY= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 98eef0c7dfa81f38c1733f5614002fd68393711ec1807e3f9a07e23eafd90c45 +TEST= 229 +KEY= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4301309cf44e937f0828df745d245c804482d81cef8f42b790272f4af7383dd8 +TEST= 230 +KEY= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0e0c886757e6cb4675cbadf68516c41288ecf3c3a3c4f17a6f50e8708affb825 +TEST= 231 +KEY= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 333badd8bcd0598a60655880a0a11f1315334b5be06d24c780ee0720ca869109 +TEST= 232 +KEY= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 79ddcc400b6538f42efae783b58a81e547ce9db98e4abf890868664b921eea71 +TEST= 233 +KEY= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= da2859333d3a559659f8e0e8ed26252b84b394d0b5af4f6276481c0d505995a0 +TEST= 234 +KEY= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ca88ea38b9ccc24d55130b85af16b8eff5bdda3ed2a20f221fe4296173ae1596 +TEST= 235 +KEY= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fea3b0e49d44ebdc6f5456f839212b6f9a18ac4b8e2785350e35e1c9a1530a1a +TEST= 236 +KEY= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 417fa9fd8e3731723b5acb507a7ed3e5e17efe87213c9e4b5a4511bdba6cecf8 +TEST= 237 +KEY= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b68d9aaa6c0ebc04430718e3165217d8a5c0072ced3e49a8596bf8ca99f4ae90 +TEST= 238 +KEY= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4af7fa3c8b669a3a8b5f141b6e2261b1b876d4a5ffb039f72f8b57b8193b3dbe +TEST= 239 +KEY= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 38ae694539e783fc99d42de7ed1e66ba96f78bdcf1c2ade0c21340821005e325 +TEST= 240 +KEY= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 90925d132fc28c3e79425d07e439c484f363d8a5a0ad6ce41b06d9e261db7fa6 +TEST= 241 +KEY= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d834d1d0305ab48d7e9472853d96aa8364a45f46590c17dd8ce618e11c403e41 +TEST= 242 +KEY= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 03fcdffe08487b35db3f97adb0f25234208ea33f08d432c94dfbf16edd05c387 +TEST= 243 +KEY= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= eb38d7a1a6a0bf6c08af63671da8a1617987cacef2da7031de1e29e282ab3e48 +TEST= 244 +KEY= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 11f93eeb6ed319e44b3ce9a352490209a67a2a5508f6919380ceacff9c582873 +TEST= 245 +KEY= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 64b75ad0ecaf23e0d242421b676084940b4736e82c94ec9172a354370148a187 +TEST= 246 +KEY= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c8c308d2ae4ecf8a767fac1152917cc9a86004c3758a8d8fc67a1bad1a29b7d0 +TEST= 247 +KEY= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c2be5064cb5a24fcb6a02e300af1369275b7844e25e41f495d653615bc173161 +TEST= 248 +KEY= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4883cdd46d25b3979ff231fd4389dee1ccc1f7ee713e1d34b024c1b7646fcdd4 +TEST= 249 +KEY= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1ced2fd7b28a1c658c34c7fcf439bc5a5ff35c5edc0d25bb97eb3e4540e7ad30 +TEST= 250 +KEY= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 59973b0a1a531bfacfe4aa521bc058f6d5cf3e029b605f32c7eee1e7feaf09e3 +TEST= 251 +KEY= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0d1a5aaac94395b812ff4c3585f0ae4c3fa2392c5ad87e677dc3313e9fb3ecda +TEST= 252 +KEY= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e92385d2aa08cce7adb88ee6f0e5db68f4007455a1599b3190c22a845a9a110b +TEST= 253 +KEY= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fd7b68f682f41d9b6a118443977f8d306bb851d9e67b1064b9a8a46892b371b0 +TEST= 254 +KEY= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d220f4fda389e1a2b5cb8eefdf8dee3cb60d2bdab3a11ca6fd115575eb750ea2 +TEST= 255 +KEY= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7604c508e08debe65816a6479de89f6268f69b372ec70cb91915a440a84bb317 +TEST= 256 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9aba9eb3f276bcb55c2b8df432bcb4fef02e1af5d05ccf51a53dbe6e3762ea06 +TEST= 257 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= 063fb73354dac568a50b23ff71b8407d8580314304513b7f920433b71091155d +TEST= 258 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= 33d78077a260ad60eb641c3f2082733fc3b93cd76d796e1f5a5210ab1bcccf22 +TEST= 259 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 2bacc7833e6174972c26aa3745b004485d3efb346f8997ae9178313beb708414 +TEST= 260 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 4361c6950623350fc155deca02933a36b89e8119dbc2eee6f199da4496c16d66 +TEST= 261 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 77df687237e75d47076517d8573ce79faf72077b28362cd66cfbb466cdd49d2c +TEST= 262 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 98b657ebff1fda6cf8bbcbe74f2e6e78a8c9ff69ca1dd7654294ed210bd2d876 +TEST= 263 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 47bce7bf67a3e7af4e9309294dbf72b5e5f231738d297e8bacbd6093e2cd5144 +TEST= 264 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 8a1c0fe7721ad136137ac21f7fdfa82d8ef8284ff690d408ebe43b779003e1b7 +TEST= 265 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= c94311d05fa8090504fca1af89111435e370c7fbe55db10a419718477d9f91ee +TEST= 266 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= cbf2eb70b43b4dcbd944003ccaa697ff7be8ccaed56d1a90fdfaa49d62babb88 +TEST= 267 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 3e6bc5c62507f0e3b29f419d6f28810d770b08eac86fe917448f60fa57287b42 +TEST= 268 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= 17a0e3ff434ecd65fc765203b8cf5915b4da9568de148a14c64d3297dd4d2773 +TEST= 269 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 52802fbcd7a753a3f3c40208caddd464c9cb060ed6d8effebf038fbf739bfbf7 +TEST= 270 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= cad9589655e44134163a6fa95225882af9ae8fb9c38ca278acd9c39c89c2f7a5 +TEST= 271 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 9e020089356fddcedea0992abb4e14f2848e67c52ad4b42fadc9d4775e079b4b +TEST= 272 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 8c81f65f6db20b0ea9477a421c42a6496df905027e9d4aa8c17cf9c2375266cd +TEST= 273 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= 03ccbe5002edeb0d4a53b9d29c21c2c7959d63db2f1d123fe17f3b2e992c2f61 +TEST= 274 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 91252f90f6aa1b875ec9d928806de05ab71cec49c65f86bd09d7b49db988fb41 +TEST= 275 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= 2eb95393a15f722f09bc4396bc5ce9a364a8fda58bb67f003e0898439e07bd6f +TEST= 276 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= ebf3f328da5c7b5d2ba2fa975a11e35b369b0ce0fe8ad4e9aaae473d6a6ff6e4 +TEST= 277 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= f990a70489cf77535b8be61add05e55e3368504843594bc761f7b0b509a1c3b5 +TEST= 278 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= a966b9970f336119241f4effb9dc94a6927565b89904807e3809c6177669300d +TEST= 279 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= 9f72ba870f1a85772ae4922ad5af961c6f3bd534accdca18648f3a35fb6beca0 +TEST= 280 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= 69eb751a058a716ae38f1e7164e2c988f63c3283cdd289dbdc5833f51b9e8f2f +TEST= 281 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= d6dadd9053b2149fb7fda18f61f22e227602f89612ec035c76ec35918566ab70 +TEST= 282 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= cf457f0c70ff68ed2c0fb21a34e2eea8d90690d0e8e277ebea8951c8d01a006f +TEST= 283 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= 12e78d747630155d9339a99b9f7eb3b7f441400f89ca13d16718192dfbc95390 +TEST= 284 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= 573bb880d9429c90aa7793d837968dd25ab620ee2a5021435cfdaa86fcc93336 +TEST= 285 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 24a6c484867bcec772d57fdf85543c95a04a1522a49ddbb8280a94da3b061edd +TEST= 286 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 68d741bf5b44909340f4814a5611e7e0f70359dd50caa1bf27229f86222c454b +TEST= 287 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= 8a6a495a7b21ccbc835477633d610d1fe0888eff711c1baac40084c53a78bee5 +TEST= 288 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 37d59d48fc569455ab0439ed103c27fdf18f39efd4244f50ce08f130db3a5fa9 +TEST= 289 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= ef99ec2539c56548b29821c1b1d42bb65e87f126add22761a10370bcf40dda39 +TEST= 290 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= cafc09274208638d96992086e636c14c67596be38fa14b229b36c4378172809b +TEST= 291 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= 699a45cfe273fafaec9ea9d663c1ef2f18fa2586157ecaf3ceac8e49dfd35727 +TEST= 292 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= 926c096d5fe0a9ad28ceb147097492c059c114a35102ed5db0e2ac5f7774f814 +TEST= 293 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= 48263a69982594b105ac0d808cde5880c3ffef66c47730eb31e3e4410dd7b68f +TEST= 294 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= 6627bca14c16475112c3d5f1fa094c6e0e42f90b79a9079deb4c80b0d7ab7edb +TEST= 295 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= 8c21fecec3b5fdc19fbe541eff875d359fa76753b546ffd8bebecae8b4c000c5 +TEST= 296 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= c4dbb9f27f9993f6aba09b11e42df3067dd06fcb92bb57d8bad4102a8537f5c4 +TEST= 297 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 96ad81df72fe2eb25597dc3e74a8a000cad514b260bed959b38785e9eed0e559 +TEST= 298 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= aa637c19ede041be9d14d6a37aa1e2099971b6590373e2854acf074ce75e0c40 +TEST= 299 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= 42a0ba67830de0dec920c33c26d9dc3875ecdb8bc6d1f441c74226ee0ce01cb5 +TEST= 300 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= 47390113c1be8ee2d303b0467e2ac5eba23317ef9091478f5ea231e34c8af822 +TEST= 301 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= a2c54fa7a2c88e50c6d996f863b8c12488fc27ee5913ea3e458859c9ed927c46 +TEST= 302 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= c9eec22634ce840fefa7572cbddf99a53637104eb8e1031b11574acb3a014b42 +TEST= 303 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= b79f4c642a1ca091284d1ee48cfabad6f0b151db9b9acb08a84d8ed96f1960d0 +TEST= 304 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= 70f8da015869e61bde5153656f58c8c5b5780910c91548fb887e5d21442eb5cb +TEST= 305 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= 2b5d52599ba9d8358af2bb1a7433c6ad3339d244c1ef2718de7bd9b4ae749fc5 +TEST= 306 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= ffd2232f302a88a40b624645d4cffe7bf75de4b44ffeab2fc5a5c4080e912cb3 +TEST= 307 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= 13ce8de4ba2f82e5cd5fbc1f5d7432512750f0ce67d4d6efbd1c6ab635b01703 +TEST= 308 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= 7cdf263a31299eb241a52c14bf734d885a6afafcef6fbdd2927032a15b406dcd +TEST= 309 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= 22d4ef451406dcfe8d0e84906cdd9500d60f48690f180bb3fe86e21570c7e522 +TEST= 310 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= fde682d02bc1ef8deb9a473f86b2fed737485a9eb5a8f3669fac7f1dbe552852 +TEST= 311 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= dc2d1ee62ed3cc77328c6011646490c18394490a536ce59dd54d9a281f5e3dc2 +TEST= 312 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= adbfee587107f83165d0a1ea8975548fb2de97b6b5e75b2b3172cc1ae5517ebf +TEST= 313 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= 98baa1e794273ee539b8442bb92861bd8c92f30fbd69f82730ece7174d7dd2c1 +TEST= 314 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 05dee9b5d98a31174fbc806668dcd1a81775bf6ffc3a2a27072aef9d60b03cb9 +TEST= 315 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= 5b663949629f5df0f1d5b6cc575dce573c3e16e976239e062c1f54afb2fd7f94 +TEST= 316 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= a9aeca2b76a543f85a221fa525b3ddba716bdd206c27ce29d285e0231cd73566 +TEST= 317 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= f7cce909170325465f958b06967282485d4760fe8f7823fb1d8f1e44c8821c55 +TEST= 318 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= 8840a0244a3118875cc2266c761f60eb81a4a9fdd39b663e6c4c318ac40d40fa +TEST= 319 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= 1527504a94888930611883818f7cb512d4a47620f6733333f12e85932ee0e0a3 +TEST= 320 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= 490a6714da32ec34723e76740c05b8458444901a38b547b5e929fe6dd7d81cfe +TEST= 321 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= 997ff68eaedb5f81b08b949dc01e3b3383ba02f4b9d3190d4f30586f0cd4d408 +TEST= 322 +KEY= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= be1bcbed5f1d20860ba1bad94b108056b2fcd8a667e8dd0fc737a59fd9cfb750 +TEST= 323 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= ce0052a615eecbc2eff22ea00fb92e29e6474ee1f0ef739e07dfe87e1090f207 +TEST= 324 +KEY= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= 95606a3968ea651510078e095cbb19ffc01d651201952158d16e17306b4d9a36 +TEST= 325 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= fccdaa92fbe3e088d7dd72f81331e28593fdb9a40721f116e479cd59a12e334f +TEST= 326 +KEY= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= 3c641f84a96b234b4c57696f4d67c134c81a5a89fb1428932d66d39c9e1d87c9 +TEST= 327 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= 1f42eb51efd0a36a98574d6e20a61bd1284330f172d725d4fcbde2de990bacf7 +TEST= 328 +KEY= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= 35a8df3c4324a1bc20cdbbf36732a4d53978e57f74d717d49dc0280e2f91796d +TEST= 329 +KEY= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= 283b6572e7880f9ed88dd19505e0a035c7d017cf7b0977bca34a2a6321f9da1f +TEST= 330 +KEY= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= ade08a866d83f0fc143e949ee0078fd8b5987feca923fbcddcbf4e8e524f51b1 +TEST= 331 +KEY= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= 261e62dbc80582170e6dd2da9a02cacdb564f889854d31db3cc1b72e7eef17a4 +TEST= 332 +KEY= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= d95af8d5020515559029486664d6d37e1f638db543b137505eac0b97ef223f55 +TEST= 333 +KEY= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= 545a1574ca0303f17f6e427571fc05138b0152524d9603c497fe879b4e9c104a +TEST= 334 +KEY= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= 6a428751f1a79b1dd50db50e8ca5fc6f4e83d346ab7927621c7fa60a048bff99 +TEST= 335 +KEY= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= 17212358419bf23041439207739a3f346ae50cd68874f43c6f5d4ce1f0a875a0 +TEST= 336 +KEY= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= 77373f0cc48f9156d45b41c550d1631f9d30f10743c6c8eff23baf103271d577 +TEST= 337 +KEY= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= f7886df6ceec1ba300fdcdc90e86a1162326ad2bb1f75f6b88243dc4c4f42a54 +TEST= 338 +KEY= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 9329678a334b2793d277d55b51692b68f28035cd6301d4f2af26be6904a41e43 +TEST= 339 +KEY= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= 3d60f010958309399868ba02135a1812fc8c60314376f287edb2492a425bb2b5 +TEST= 340 +KEY= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= b66ea2de784963bc5f5943f8d707591eaa93198c0a38767cfffb19bc2c2e6c65 +TEST= 341 +KEY= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= 1c2fa722c14f63c496215b7adeebc80243ba747b9e90245de2c3a60b5382506f +TEST= 342 +KEY= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= 4beab5b121e941867df2c175a9cf5e58f32a533dfc75ef6eb9d285b6fbba1d0d +TEST= 343 +KEY= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= 8f9cf5d639aa3695de809f40b36debc53e75b649f5c6a7e4f7cd79bad8500634 +TEST= 344 +KEY= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= 918b4afb68f93844b0e66268f19deaa41143785aecd0f2ab22c8dcbb5a37d987 +TEST= 345 +KEY= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= 65221348efc3e6b148d948c5f707ff67e33583f942a2e0bbdacc7d4e35601be6 +TEST= 346 +KEY= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= a0fba59f7aee4396ce94fb9fea8cf0f8215a5c9943fb0d400dd037d94a165369 +TEST= 347 +KEY= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= 352797a5389058c407b5ef9dad6279ef8b823e7e89c780073ef56bedc919070b +TEST= 348 +KEY= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= c3d1a79435bc4d3ab7b24c142f128267a06fac911b90eaeaf0b7c846f6acbda6 +TEST= 349 +KEY= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= 6d534402d503d443270282f40b3cb64a4a48823a9be27662beb210b63cda04f9 +TEST= 350 +KEY= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= 2f6b45a35ec0d7581bccd9349b97ae41d487d01b4e06d61bf68530f56093b398 +TEST= 351 +KEY= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= 4c5ce1e41d529b7655701fa1b70c20c347156996cc484a2640d2df88f5cf5c5b +TEST= 352 +KEY= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= 06c79934e386931fc31191ccf7c49a9717c8e7a2c2f499703882627258df18e9 +TEST= 353 +KEY= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= a902daeb5dfb9df8a3b3df5062bb6a69b6276dd96e561690ad7999590c342e79 +TEST= 354 +KEY= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= 87331acb72ad23ae4a77f0d4968043d71ee92a3d46a78f99ec96c635aa1164b7 +TEST= 355 +KEY= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= 8b092596b550f2b881d257ef972baa5d8e5e18f408bad160d1053460aaac29b0 +TEST= 356 +KEY= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= 3222a5417ec5ca55bc91dfaa25d71adf5dca62d28d21c86335d480ecb11da5b8 +TEST= 357 +KEY= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= 3b075740ff654e86b4eb92bce77df5158293019ee9fe97d83fdb3a61bb206604 +TEST= 358 +KEY= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= e1dfeaa07f04fb100c0a4000bf9c217a56a0e3a7240042ad016482fd43136181 +TEST= 359 +KEY= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= 216296c485d1f6b55c99c65b9db4e1667f537efac9ae6423fbe447483ce6306c +TEST= 360 +KEY= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= a0187ebd67e23fb4850354e2ced731cd7dbdff9587d6d1ae1b9262f23f509f03 +TEST= 361 +KEY= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= 89205b26b196913a15ca122dd6b6d8b7fdb0c7d63dede831932b5739c76044f5 +TEST= 362 +KEY= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= 8b566992565f8de1cd32e4d175d652e9f5f05d6b2c005aabb5c16f19b1ceb7ee +TEST= 363 +KEY= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= 9602761ca3a146cbd9a74d0e09c3e4dd0f0165e4433217a24b95cf711e58b2b0 +TEST= 364 +KEY= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= d10d0f201480d54e48d25c178d6c6da4d85485fa992df4ea3759200cb496eddc +TEST= 365 +KEY= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= 12ad30b410fd780ea7c1e288f8ab8cd4e0b48a7c94a8fe4713d003b402003652 +TEST= 366 +KEY= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= 6d39b2e284fd0b7e39391126ad21d96f7d07e4e223c6575c2fdf64b9bdfdd614 +TEST= 367 +KEY= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= c113bf8f7462aec8e6de230b180548ebf664ab08ea758beb7a40ffdee4e0e39a +TEST= 368 +KEY= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= c224accc3e9d6e5522481419ce27aee1ea6a9773b15de1019134d3345b5d6a47 +TEST= 369 +KEY= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= 1ac865a6d8e9abc97d727440c73b1c6f9af17ca6a51e9a15dbf2106fc2c1cbfb +TEST= 370 +KEY= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= b355d337a4093f6fe010ed473a5f792b488188dbd75f6e408b28936c37e9fe87 +TEST= 371 +KEY= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= 79e9ee44ec71ba50c580d05015b713ddf29839d3ccf335362886dcad614382ef +TEST= 372 +KEY= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 2e25523fa4e6ea3b866478f31034a845a21735d5eaeb973a969e2800ede18042 +TEST= 373 +KEY= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= e4ffc7cca824cb6560dc271b71b11fd4c59d6280d785bc690ac8d461b0852137 +TEST= 374 +KEY= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= 69ebeaf7e002d26424111595b3aaa961a3db466940808c982ac9fa8a4952d4ae +TEST= 375 +KEY= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= 3a503d90e7de5ee89ec27e7819103bf1c34ebe526d75bcffd6b80ff1e4a557f8 +TEST= 376 +KEY= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= 47ea7d93bc0f92b9561b5a5443ad3ba8bf10e419293890c7ba0560713d484854 +TEST= 377 +KEY= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= fcab422dcbb5001a805b882a17ea43685006a267b50f705db21cd307acd5ddb5 +TEST= 378 +KEY= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= d5119b8620703e0404fb253da8464c98efa0eb260d312b58f00a6abaaa23e317 +TEST= 379 +KEY= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= bb26fa3190670e7d61c18674ef7960a29900c56ea63a5d6bce5f1c8c1138c891 +TEST= 380 +KEY= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= 62e95953430515488b8a0e5fa83a554a7f40af22e8c6233c4bf344d226df75cd +TEST= 381 +KEY= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 0a3fd62f3a16f9dff3e7ef23b7b30828a2ea9391c0b4c6fb83bf565b28dc2aec +TEST= 382 +KEY= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= c937e1dc996534e5a89680a877e8fa75f5e3e82fc1c01a68a4b24c6008452840 +TEST= 383 +KEY= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= a0e79594f2f1a72e686ed649d48c09af9e8586b4f122bb98e5a6f0cef5f69778 +TEST= 384 +KEY= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= b7397fcd4ee1a67955a0b18d7df8b6f65431eee90e69b258109520e405461a1e +TEST= 385 +KEY= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= ce29427cdc81cedec90d5a27740bbab76ef0de57c0dbbbd33104f26c9643b6c4 +TEST= 386 +KEY= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= bdbabdd646d74f2f1a9f12059a16e5ebe1e189232db4273034bb653eb06c728d +TEST= 387 +KEY= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= 5ede69ce5921454a374cd959fcbcbe429b54a3b6294f6fed946fec4635902bc0 +TEST= 388 +KEY= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= 4af2da9aedacbc063e901fbed56dce200a6ba6f20b7ef0dbe25a08c5cc12fea7 +TEST= 389 +KEY= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= f5c93c474ec48a1de77a8f563f428fe3dcf86179a243ed993e16594d48be15f5 +TEST= 390 +KEY= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= 1d12762528e71f0f36d20d5feccb121f15b50919cf8cd5eacf77880db1b6e9e4 +TEST= 391 +KEY= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= 1e6cf791397478f0d6b737c0c16ccfd21bb3f90534a07061e2b4c0c0c5fd90be +TEST= 392 +KEY= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= 0e8bc8f678eaa95fc5f7c74b4b9650c8d12bd1b9948d50758b49c1d9150b120b +TEST= 393 +KEY= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= bfa5df629dcb36d317bf65f03cbd447f0116a541cfbd5f036f69d10089252d21 +TEST= 394 +KEY= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= da0c43f80d2e31538fa52c435dd0cc912d4f2a50d05bcee7ccf57bce5b8cf781 +TEST= 395 +KEY= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= 348e197f3d73d3372d09b78a71bd191f37db2205803b7af0feb8319eb3ef826f +TEST= 396 +KEY= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= f38d0494ecd8b080d5fb6a22caa79fe4fa55d07c0829133775ca981f50b4ecf4 +TEST= 397 +KEY= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= e664dcffaf56d1d607a96f3b03ecaab0556221bb6f143ec98245526f49bf5ea5 +TEST= 398 +KEY= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= 5674e22377e58e5e9b4aa21784574bb06158b33c0f27cbadd2e8c16788101cdb +TEST= 399 +KEY= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= 55b53571640572fd5e0ae1e2898be1ce7f9094b11cd29f5ae8fbebeb4d68f15d +TEST= 400 +KEY= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= 006c53e88672ae99a0adfffbeb534d6f24224339ab09a77565fd0badffe92e6d +TEST= 401 +KEY= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 16375889fbef41700387959771fc83be823734f891cfb28a9264d63ead648857 +TEST= 402 +KEY= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= 465603cbc386239cc29a9d583a4b89c720ebf8782066cbdbd77b35fe4c157928 +TEST= 403 +KEY= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= 33f866cb1bb187690805962a3d3896f7e81d4db542ad80483fe7817a83716525 +TEST= 404 +KEY= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= aef4012ab3c248d45de2a816bf5bbf0980224fe3312795a08d0cb77be64b36ab +TEST= 405 +KEY= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= 7e41ec11007a79baf33dbd3cc7b5fbb0dd9cdf5cfed5aac1639c753abd0945aa +TEST= 406 +KEY= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= f349eba59ece08c7a7a90dc17e422f6e924b62bc2685d58ae800d78969f5e5ae +TEST= 407 +KEY= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= 6631b392c867450035f688eb828ecb8a1bda3aab8469f3d4aafbd8ccb4db7963 +TEST= 408 +KEY= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= c669a8d9a6c7663b6230c03d7de9ad23edeb655cb645683657fa45b378fecb23 +TEST= 409 +KEY= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= b4d583e44e72dee5720d9b27afa7ef0c250d0173417d79a4a3d53c5f2e8a25a9 +TEST= 410 +KEY= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= 9699b21ae144a37884c422415984bb2755883e8bf6b8512b0ca4136500c4eea3 +TEST= 411 +KEY= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= 26ec345117f2aec4fc7e0c0459980b8d3ed15e25c6f6ce6c69b6241047bb1f4b +TEST= 412 +KEY= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= 9f1c41c2ceb97dd4ab1a53773319a0538e6f8cf452d82ae47e4e9dc4114633b3 +TEST= 413 +KEY= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= b8322f1d87f9add9be9e67aba9765736bd2bbde7c068492df9d0b3121f8d4ae3 +TEST= 414 +KEY= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= 9ab09e4304ac721163a2e4349b84f9d9d44abd41d418d44f7c420582d18d4e7f +TEST= 415 +KEY= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= 92c6a4e17a1ef33ed6ab10c37ac30f8a12bf38d8c9a4330caab773e8a81e1335 +TEST= 416 +KEY= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= a6f495690c0d0c122f714bb891f6a36514ab2c1b150992ed6219e6697f91ec75 +TEST= 417 +KEY= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= 84048121da02b32288803dbe946168a3c3d54396f29fb087dc3298dbb8232028 +TEST= 418 +KEY= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= 5318f10e888a5bb1f93e1dd391744e7786859435ca4c2b5452caf9fb4a83fe9b +TEST= 419 +KEY= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= df575a171f3d7395fb9810e3c8c098c30e99509fab868ca37ec42fa4a81fa525 +TEST= 420 +KEY= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= 5a9f7dc7d1288e3cfe3789b0e73f4839c4a62dc8cd036fe17e0acc5fa41e46a4 +TEST= 421 +KEY= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= 222652dcf1128a64b466fede13fbf7486f8d263c17f7fd41739224e15c689986 +TEST= 422 +KEY= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= ac7d5a853009bb8ae072b372d9000d3ad24d0528303cee8e5380a0ccf1252fd3 +TEST= 423 +KEY= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= 85bfc8ab8792a57bf52acabba68d9a357cc83a23fd50d7f4b790e46f1704fe32 +TEST= 424 +KEY= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= 8a5fd0f4135b79e03f5111f0bec623e7286229fda85b1c0da6c26029a683c47d +TEST= 425 +KEY= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= e269d580f38a9ea29b49cf8351a0c7ff9fbedbf0075acf56266d9b454e2bbff3 +TEST= 426 +KEY= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= b94bd206d7448288beb50d40c817daecdc93033bd6302f580627a569f3fb4def +TEST= 427 +KEY= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= 035fcee156098cc27bef07fa84879955969729cbe19f623d0b703d81162e5c81 +TEST= 428 +KEY= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= 22f57e242192ef3cc8c0c81d180ec3f71dd1dad56042840345681775d4465621 +TEST= 429 +KEY= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= e57b6a000208ee8636ddba7cd31ac3c6b47b85fa7158b428ebaa7f99a40ebad7 +TEST= 430 +KEY= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= 4001ddfabbff8229b26088796583f046eb83c7495743dab53c1eedc0dd9a3a94 +TEST= 431 +KEY= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= d6549ebbafebd03af582f89f73a50b198fc9cb125db1cc1c663ca77cd313219b +TEST= 432 +KEY= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= 6c7dbc1bda3b4210f560e7d8431bd985588120c9d1a3faf56c422a5594214d72 +TEST= 433 +KEY= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= ab8994923493b8a139e6d161cc0fe3a54544539d3de55a647db904d24995110d +TEST= 434 +KEY= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= 99fce83558a7a82db673227c906e02ac26643606750d0ec41ab2df1ba12e526d +TEST= 435 +KEY= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= a2c9ecebf75b14783e2dd0bba8c3216c85b3e6ee3130826e52e8a39eaf2a0b0e +TEST= 436 +KEY= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= df7fd177fdd38927643ba5e71dfb727feddf9f930a52f250bd70cdd527723430 +TEST= 437 +KEY= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= 6a824a712c142a1f2d8d68db118c6fe2d50b4aec7774b2ebfc92c998d4fcc21d +TEST= 438 +KEY= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= 62ce16f28c60ce1d56956dfa863b4e90b22c4afd80ee1e4f4d13a9ad64b4d443 +TEST= 439 +KEY= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= c5d8e2304c613395a23c1f9d46792a553045a079b161d5df8fd25c93e73650f1 +TEST= 440 +KEY= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= fab159d44563097fa42fc56980598c0a79322457817d50dfc98c5677b10671de +TEST= 441 +KEY= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= d76f6aadc0b3af98ce10ffda2b9683b51cd3b49af39826eadc1e745453a0be0b +TEST= 442 +KEY= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= 224b2d9a1320fdd9f947bd0292917b86798a31e90eb4b9db5a331be1753ce3f9 +TEST= 443 +KEY= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= 7d5b977076275559de4ebf9e8cf21ddaf7432d195fb8a725feda3a021ff1dcd1 +TEST= 444 +KEY= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= 7d90cbf4b2c9aab5425a42d07a2cdb81b7a7e714aedf71839ae870bbbf54d213 +TEST= 445 +KEY= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= 023b34a5443655eee5af945d0c1c1c6ebab8b4afdc4a8cb6e7a26ab9fdc36ff8 +TEST= 446 +KEY= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= 577f79ca1cb128b5befa37d0247d6bffeec35a5c0aedd903c9e9af28a6055ff6 +TEST= 447 +KEY= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 86795f48d489eb38d5aa741e87477a4ad92011a6e6a646dae1b0096c021bbb6e +TEST= 448 +KEY= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= 13e922bf853f8229d8eb2efee1eaf8a34fa78c77bbd604b6f1f58feb1c60594b +TEST= 449 +KEY= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= 7d5c43e5f7383869f94ce7d58c7035134d642c12c0bb958c65e667009c27d24f +TEST= 450 +KEY= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= ce18001a06a96900eaedb469e43b2c293e2b53cbc0aad6fa8e7781cdb95adc13 +TEST= 451 +KEY= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= cf40ac9efb76b9e5f45fb4026dbb28867dec1044baf2894fb266d6d650f0bcb6 +TEST= 452 +KEY= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= bf75ebc7f26b1b2f49c9b804bb6a8d28cb589d20260540a2e383bd51c713891a +TEST= 453 +KEY= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= 3d4203b66a44593562042cd368b060e4a6af825ef31a601061b69ffa770b2325 +TEST= 454 +KEY= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 4dcb77138890b31d4508eeb16c13ff62b86aa15011401d0e9a11c4214a3bdae8 +TEST= 455 +KEY= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= 6c0bb3acb9f7b52a9dc9feb0be4e60511c3f91190b4932b9b46e796489947fae +TEST= 456 +KEY= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= 4c0d3b1218416de152f4d240c50867ea3b6c664af2cb91986300b1a8ef5c6488 +TEST= 457 +KEY= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= c727c4008d1a743348ae16c5f21b077b82befbcb0b0cdb81b9d574c917ef118d +TEST= 458 +KEY= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= edfd40fcb0aa8f81dae69e0e85d998e5433c43f8dbda7a2ff5e2a71dd97e4693 +TEST= 459 +KEY= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= 304f113eb37e2bb6510508e95c20954057730c5cbd161e1aa4869ce9269e2a17 +TEST= 460 +KEY= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= 278ccfc0990c6a03c1e496fd8a341d535c35df1d4f33b0527f0541e903d72c6d +TEST= 461 +KEY= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= 67c91cd2aafb753b7d37249f3f65aed17c1eec0954b536a2ba4b1f534eff2d76 +TEST= 462 +KEY= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= 58d6a50a4c94aa89e5c32b2e2bc5f1e1ad99f802efeebb051a571e6e00f13c48 +TEST= 463 +KEY= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= 1f4f1210e6f658b0420af6464eedf9ab48737269847573c9000d98d3627413bd +TEST= 464 +KEY= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= c88c28ee869cac3d289d8e5a0a8125974dc1bf17f36581f41c92eec0f9144d99 +TEST= 465 +KEY= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= 12f1344c06129d5aee013ef5222bed3e8e55368a2fb4e32cc57dbea465d106f2 +TEST= 466 +KEY= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= e1826921a58460dbb5cd441053dcfdef414b0055391f5faa537804ba364f4ee7 +TEST= 467 +KEY= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= 2b96aab7b3b8a12b52e3e2168a2332a0294ca653eecf5f61f37d3b4e385d5521 +TEST= 468 +KEY= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 05ba9c08a932eb462d8ae0aba44e00b570715e159b5ca1f4d20162acb61223f1 +TEST= 469 +KEY= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= d399689b8e9ea97913c7474739e64949d85dc1cb56ab087965ab7dc31cc9e57a +TEST= 470 +KEY= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= c91ffaa336bed78c9c52529b9efaa44acfe013a21b114a08b184a0c99ca676dc +TEST= 471 +KEY= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= 0c5bf349d7625f977f8b315d617eca51c5d547c5f9a4fcd29087073e973f8aec +TEST= 472 +KEY= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= 81c5990694a92ae1cf6d79cc127acdda6220a34e099cfa61e07ce22169f1974d +TEST= 473 +KEY= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= 78b6be4dd6f2fe2fc939286ec47b1d20d01614b61859450bb04daa5498de368e +TEST= 474 +KEY= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= b18d0d7bb89729b7b976d87dcfb60c4a2398f4e4a5a985d9f8e8ba1e2e91b457 +TEST= 475 +KEY= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= e2a4ca2f19e995ab449a8be6f825255eab36190453b957165ed4b9f337fb8f36 +TEST= 476 +KEY= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= 98b248ab26d4002f1e361d2887b95aedf3d11c31dc15b91cb5b660bb975b3ef9 +TEST= 477 +KEY= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= 87f503e2a3b737c4b251c6dae6ebeb9d9851eac33533695affdd2e45ac70f3a5 +TEST= 478 +KEY= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= 98e60c648e9e04e4b14de74e66a5edb714cef5f22dcfd56e5229f2a17caadab5 +TEST= 479 +KEY= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= 37b845ef675db1a0a09181713f59857da54dd809880299d94fc13a8a5721ba2f +TEST= 480 +KEY= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= 05f6a05e6d12cd910cabaee28312f96af361d87d1513aa33fa05a6c3ba5a6e1c +TEST= 481 +KEY= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= 09f40ae8212317d5d1332d6598146d95ac1ee29785629740a69fb22ec236d747 +TEST= 482 +KEY= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= 253012ebaa95e548431c684e1654a916d491b0ac62a0c019a7b901153844b12a +TEST= 483 +KEY= fffffff800000000000000000000000000000000000000000000000000000000 +CT= cf8f08f00dd610abeb4ecf2c0bc70bf7cbef1d3c41ba2f4e8f2fce2186db5bb4 +TEST= 484 +KEY= fffffff000000000000000000000000000000000000000000000000000000000 +CT= 496ce1dc2f4c8ec6bc937d34a4282a72e064589a95bf19fb2afd9dd224b19286 +TEST= 485 +KEY= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= 04f2ffe14409ea82552adb5e48896fa93179af58c3bbf18fde305cfe0f6ad2f9 +TEST= 486 +KEY= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= 0524689980adb078016895bb97bb1589ce01ca3187855d24a13bff25aa1813a5 +TEST= 487 +KEY= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= 1df26116842bd5e12843918b29e4c867823469da12bb8f5a98387b73c0fb8ffe +TEST= 488 +KEY= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= 68a7c778b04e75ea7f23cf8b59d4f4f0a8258bbec71b60c9e614f39ebdcba33c +TEST= 489 +KEY= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= 3e725135f44bcd7375282e88e0233de7c5850464763f818ec38b43af8f885ed2 +TEST= 490 +KEY= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= ac8584b6ba098ecf30856d0afee2603d4580a262a82d0bbb3980dbeb56ab3fb4 +TEST= 491 +KEY= fffff80000000000000000000000000000000000000000000000000000000000 +CT= 309919bea68f5f65625bb37f4f4b762e2f0e6730d5b653ed864459d206111fab +TEST= 492 +KEY= fffff00000000000000000000000000000000000000000000000000000000000 +CT= 244f82d3eff48c22122dc437334a3b871b0fd9ac24088d39e5f0262ad5254f28 +TEST= 493 +KEY= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= c448bf6c402c4aff3b15468ba3aea14e87a2891a3951be256e90ca1e6c3ed8f8 +TEST= 494 +KEY= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= d731172c6ccdb138585caabc747ce17bff350a3b6b81330c3c0207e36314e28d +TEST= 495 +KEY= ffff800000000000000000000000000000000000000000000000000000000000 +CT= 98d8fe848d35d2f5b521012940135aa0c5e54554eb280fa7e3fba28c98e0bae0 +TEST= 496 +KEY= ffff000000000000000000000000000000000000000000000000000000000000 +CT= 121afefa63d5739235ee44bd48b5cf7823c2818917acd56bc5d9e20d166f32a1 +TEST= 497 +KEY= fffe000000000000000000000000000000000000000000000000000000000000 +CT= c8ad732b430c5b330d2f9e3232265697539051b0506ff13be525d4058ef521d9 +TEST= 498 +KEY= fffc000000000000000000000000000000000000000000000000000000000000 +CT= de3e23dcf4df94a76302fdeb52cfe08b2d560de863f5f4dacf56fb9cfedbab26 +TEST= 499 +KEY= fff8000000000000000000000000000000000000000000000000000000000000 +CT= fe7bf19911d68952addb7153f0ce602ced31960812c7a8dd8a57d0e7ae282fab +TEST= 500 +KEY= fff0000000000000000000000000000000000000000000000000000000000000 +CT= 090cfb49c3c586db4c65da0ad9cd8a06b1f1097b00084f6330ef0b395016e7c4 +TEST= 501 +KEY= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= bbfc7021861475dfdd3e7fd56db81926a267e195d894bfe6a941c6bcc33afe1a +TEST= 502 +KEY= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= 709f6274b3f504a4760cfd4b8fa91c7b512b21d9d941a3b5836a58f2fe50d495 +TEST= 503 +KEY= ff80000000000000000000000000000000000000000000000000000000000000 +CT= 38bee2ac3e2a10ab731a705dcee56361aa31245a68c4c2e730ce0ef860ea3edf +TEST= 504 +KEY= ff00000000000000000000000000000000000000000000000000000000000000 +CT= 0768013e7f0b185b7685584d65e68eca7e63ff9b50197c874d5978c54e6ff5b5 +TEST= 505 +KEY= fe00000000000000000000000000000000000000000000000000000000000000 +CT= cf17e6bf27b3e2491853cb546163e524fad0aebb8402c6e6dee4710f4ccb2cec +TEST= 506 +KEY= fc00000000000000000000000000000000000000000000000000000000000000 +CT= 71da20973e043f9e77683c5c002fb3ebd02db1802075e832e9e58acac4d0d88a +TEST= 507 +KEY= f800000000000000000000000000000000000000000000000000000000000000 +CT= cc619980cf1955b3c78a3525a03709e95fef388431ec4cea1dc1b4b5d2024b05 +TEST= 508 +KEY= f000000000000000000000000000000000000000000000000000000000000000 +CT= bafae4ed2b22c1a89f33816c35f6e7a9053f50ea0af5faf68c0dd5a439cec150 +TEST= 509 +KEY= e000000000000000000000000000000000000000000000000000000000000000 +CT= 7752149b8b92c8f49f41cd16e8a5554d003cf1f8fba624101de195fc511a6b77 +TEST= 510 +KEY= c000000000000000000000000000000000000000000000000000000000000000 +CT= ce95ac815a2d16d4b94ef2d281e56991f10d55c157a9cc286729fa07670a6de3 +TEST= 511 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= e62abce069837b65309be4eda2c0e149fe56c07b7082d3287f592c4a4927a277 diff --git a/flint/test/testvals/ecbnt44.txt b/flint/test/testvals/ecbnt44.txt new file mode 100644 index 0000000..1d4bc49 --- /dev/null +++ b/flint/test/testvals/ecbnt44.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= 66e94bd4ef8a2c3b884cfa59ca342b2e +TEST= 1 +PT= 00000000000000000000000000000001 +CT= 58e2fccefa7e3061367f1d57a4e7455a +TEST= 2 +PT= 00000000000000000000000000000003 +CT= f795aaab494b5923f7fd89ff948bc1e0 +TEST= 3 +PT= 00000000000000000000000000000007 +CT= 95b84d1b96c690ff2f2de30bf2ec89e0 +TEST= 4 +PT= 0000000000000000000000000000000f +CT= a73f8d0437e0915fbce5d7a62d8dab0a +TEST= 5 +PT= 0000000000000000000000000000001f +CT= 7941dd0a63d994703e63d94a44680421 +TEST= 6 +PT= 0000000000000000000000000000003f +CT= 5bca68deb6b692377c85f6515d2a33e1 +TEST= 7 +PT= 0000000000000000000000000000007f +CT= 349bf2ed99e8726cb1734349e5c5499a +TEST= 8 +PT= 000000000000000000000000000000ff +CT= f70ddef93ba62588242a0e67d0d645e0 +TEST= 9 +PT= 000000000000000000000000000001ff +CT= cf7512278cd5454f819d89ea35bb3862 +TEST= 10 +PT= 000000000000000000000000000003ff +CT= 09836c44648b1f262e7b8bb6310e3c73 +TEST= 11 +PT= 000000000000000000000000000007ff +CT= 7c3f20d829a78c00203702ef0b002db5 +TEST= 12 +PT= 00000000000000000000000000000fff +CT= 5b1243b00f14e74eb7536ccc09acfa68 +TEST= 13 +PT= 00000000000000000000000000001fff +CT= b3b90648b4f40f576a75ba0466db8863 +TEST= 14 +PT= 00000000000000000000000000003fff +CT= e4ee13764d015d68bf37d51f4af9f36b +TEST= 15 +PT= 00000000000000000000000000007fff +CT= 9f3bdc3ff6446ce6aa8e3b6c231596a3 +TEST= 16 +PT= 0000000000000000000000000000ffff +CT= 90d4af3471b958d79c38285110dfb453 +TEST= 17 +PT= 0000000000000000000000000001ffff +CT= ca829c5f3dc854939ddf3f0a4f852aed +TEST= 18 +PT= 0000000000000000000000000003ffff +CT= 28ea70f964ef188472078e5fadbf243c +TEST= 19 +PT= 0000000000000000000000000007ffff +CT= d1277ea8d373b8f80bec4923227435c4 +TEST= 20 +PT= 000000000000000000000000000fffff +CT= 2bcafbb6ce709c19be131bb8386bdd3b +TEST= 21 +PT= 000000000000000000000000001fffff +CT= 39fa40456ae73fe146de3e3a42039405 +TEST= 22 +PT= 000000000000000000000000003fffff +CT= baec66484967417c3bbe18a60de0b093 +TEST= 23 +PT= 000000000000000000000000007fffff +CT= 6796a439bb4a1a0745ed78ec8dea15c7 +TEST= 24 +PT= 00000000000000000000000000ffffff +CT= 6936f9fd2274b4a36463e329719b0174 +TEST= 25 +PT= 00000000000000000000000001ffffff +CT= 86290a5586bca091a762c5ff509a6167 +TEST= 26 +PT= 00000000000000000000000003ffffff +CT= 78e6abea95914abb9c8e526aafc09bc6 +TEST= 27 +PT= 00000000000000000000000007ffffff +CT= 983346ddc59459db4e6e2e8d5b2ac4ca +TEST= 28 +PT= 0000000000000000000000000fffffff +CT= 5d8f73bd76f371deaa46e98e7764ea8f +TEST= 29 +PT= 0000000000000000000000001fffffff +CT= 78eb3f556196e8efb02b6b1ac9c59fb2 +TEST= 30 +PT= 0000000000000000000000003fffffff +CT= 0e5eeb2e621ec0f45683a8d255dda84e +TEST= 31 +PT= 0000000000000000000000007fffffff +CT= 6c5746dd45b5846c6096ca8e8ade7f25 +TEST= 32 +PT= 000000000000000000000000ffffffff +CT= 28c16380c491088ca019f8a76853b1e8 +TEST= 33 +PT= 000000000000000000000001ffffffff +CT= c8b1afa8bfd9415b3c4764fc2301a445 +TEST= 34 +PT= 000000000000000000000003ffffffff +CT= 8e265ca8740c2dc8f8e8339bb0319d1e +TEST= 35 +PT= 000000000000000000000007ffffffff +CT= 4090d032397a3d4564218ac27e6dc4b6 +TEST= 36 +PT= 00000000000000000000000fffffffff +CT= 6e7b1e7d9dc86adc0e111aa174d7d568 +TEST= 37 +PT= 00000000000000000000001fffffffff +CT= cc4632e9ad075584b0dc8816e8f48e9b +TEST= 38 +PT= 00000000000000000000003fffffffff +CT= 99afdf4178e53a5de4173159abd8c479 +TEST= 39 +PT= 00000000000000000000007fffffffff +CT= fe5f51452842fd38c566ef536f950111 +TEST= 40 +PT= 0000000000000000000000ffffffffff +CT= 4d4c5f40e67449514e30639299d6f473 +TEST= 41 +PT= 0000000000000000000001ffffffffff +CT= 9bf52296fbb86ce06b35f0c610b28e5c +TEST= 42 +PT= 0000000000000000000003ffffffffff +CT= 8dd5d84df9b637c123d26114071e8799 +TEST= 43 +PT= 0000000000000000000007ffffffffff +CT= 09fdbba8739d1a9c386d1b74bfb674d2 +TEST= 44 +PT= 000000000000000000000fffffffffff +CT= fc2e827596e4c6c4df3e13fdb77db10e +TEST= 45 +PT= 000000000000000000001fffffffffff +CT= 0bcf5bde0c7fd3b87fec152a3c7d9a86 +TEST= 46 +PT= 000000000000000000003fffffffffff +CT= 15ab7d13a564d6bdbd2b337318912a24 +TEST= 47 +PT= 000000000000000000007fffffffffff +CT= 6f1039adc3f6a546989b1444efb629ab +TEST= 48 +PT= 00000000000000000000ffffffffffff +CT= 105df4d1e4b74dca12b3f38c4c3c0d9c +TEST= 49 +PT= 00000000000000000001ffffffffffff +CT= c27ca1f66b72ca93735be563adf2ddda +TEST= 50 +PT= 00000000000000000003ffffffffffff +CT= bc1a8411b68970e6c99bf42e4a40e976 +TEST= 51 +PT= 00000000000000000007ffffffffffff +CT= 40165c46ef23bc1c167a9ebbb5b166e3 +TEST= 52 +PT= 0000000000000000000fffffffffffff +CT= dd9b27fa45374d1c626874d9ca04eb0d +TEST= 53 +PT= 0000000000000000001fffffffffffff +CT= f2373d9f620496925b34e01194336a2f +TEST= 54 +PT= 0000000000000000003fffffffffffff +CT= b1564039bad539f373e4c4a97709a5b4 +TEST= 55 +PT= 0000000000000000007fffffffffffff +CT= 98dea09dffa792af98ac8d258c710870 +TEST= 56 +PT= 000000000000000000ffffffffffffff +CT= 9e1cd0f752de544bcc8a838b27a4b955 +TEST= 57 +PT= 000000000000000001ffffffffffffff +CT= 06d18f8542f0497d53dee00176f93616 +TEST= 58 +PT= 000000000000000003ffffffffffffff +CT= 690460ac223f65654cc522350d881765 +TEST= 59 +PT= 000000000000000007ffffffffffffff +CT= d6680b1c9abc752aba384fe234c7d583 +TEST= 60 +PT= 00000000000000000fffffffffffffff +CT= e7be712ee4a90b03e43823035eb0ca93 +TEST= 61 +PT= 00000000000000001fffffffffffffff +CT= da82d3f4234d748c8172dc0d17a6e038 +TEST= 62 +PT= 00000000000000003fffffffffffffff +CT= 236c49b713b1521f5e938b422c030f29 +TEST= 63 +PT= 00000000000000007fffffffffffffff +CT= c86bee15e569c0e78171bfa438890264 +TEST= 64 +PT= 0000000000000000ffffffffffffffff +CT= 747cb9267e59fa9e4e615668db0909bc +TEST= 65 +PT= 0000000000000001ffffffffffffffff +CT= 7add10f24e7245863c677d27e9f0fdb8 +TEST= 66 +PT= 0000000000000003ffffffffffffffff +CT= 72976df6935ec1c943d5759a33ccba84 +TEST= 67 +PT= 0000000000000007ffffffffffffffff +CT= 5bb3e19d6fce1b695d061941df6e4325 +TEST= 68 +PT= 000000000000000fffffffffffffffff +CT= 1a0a2db60ce1b3187a65949bfe7985f2 +TEST= 69 +PT= 000000000000001fffffffffffffffff +CT= 1bf6d1af28331174fa90e13636bc02bf +TEST= 70 +PT= 000000000000003fffffffffffffffff +CT= 2140bd0eb8df02b22c05cc3689690530 +TEST= 71 +PT= 000000000000007fffffffffffffffff +CT= 9aa4c6ea0b7cc9492c7ee12234def1a4 +TEST= 72 +PT= 00000000000000ffffffffffffffffff +CT= bc991755a129add0f3feeb8d94edda3d +TEST= 73 +PT= 00000000000001ffffffffffffffffff +CT= e0b6795bdd52dcdc3f6934685bbe326a +TEST= 74 +PT= 00000000000003ffffffffffffffffff +CT= b0c4121e0e63e1d0969ca70b0bfbe8d2 +TEST= 75 +PT= 00000000000007ffffffffffffffffff +CT= 32ebdad9131b68d3293b55aed87ffa16 +TEST= 76 +PT= 0000000000000fffffffffffffffffff +CT= 921c10a6f26bb519fe085c8f04c1b668 +TEST= 77 +PT= 0000000000001fffffffffffffffffff +CT= 58fc8beaae1b73bffe3e4c1614cc1cb7 +TEST= 78 +PT= 0000000000003fffffffffffffffffff +CT= 41d3699fe17781c4e9ad324fee5113af +TEST= 79 +PT= 0000000000007fffffffffffffffffff +CT= 24ab534dbc77d9505d9be59f8655de74 +TEST= 80 +PT= 000000000000ffffffffffffffffffff +CT= 23a77a7a04e5c3fe927cfc881837b622 +TEST= 81 +PT= 000000000001ffffffffffffffffffff +CT= cf85ae385c7ff1344b624a744969cdf4 +TEST= 82 +PT= 000000000003ffffffffffffffffffff +CT= c7111db57bb89abb2ebb2c2d5153e14c +TEST= 83 +PT= 000000000007ffffffffffffffffffff +CT= e5df6e02245a0be02383e2bbeba3f5b9 +TEST= 84 +PT= 00000000000fffffffffffffffffffff +CT= 9721e2f1eae9228362dcb1d8d6d67045 +TEST= 85 +PT= 00000000001fffffffffffffffffffff +CT= cfa84b287aa52de3fc37129f39fa826f +TEST= 86 +PT= 00000000003fffffffffffffffffffff +CT= 664b7441307ba9e1d8c8ccf93de514d0 +TEST= 87 +PT= 00000000007fffffffffffffffffffff +CT= 62d0ee00d428cb5dc3d4a2144fe2af6d +TEST= 88 +PT= 0000000000ffffffffffffffffffffff +CT= 9d7bc30466c376acd0c8ed9da8cdf8ca +TEST= 89 +PT= 0000000001ffffffffffffffffffffff +CT= c8fe3583c99f400cd252768ff72c79ef +TEST= 90 +PT= 0000000003ffffffffffffffffffffff +CT= 1300d6570e1622a42d033f1d60cb3524 +TEST= 91 +PT= 0000000007ffffffffffffffffffffff +CT= c4b7500f92605bc25e95f3a55f8e1c01 +TEST= 92 +PT= 000000000fffffffffffffffffffffff +CT= 6438a0528dc92c6c091a3d6b5915d9d4 +TEST= 93 +PT= 000000001fffffffffffffffffffffff +CT= 4c3cc0914e2fce6004e275726025ea1d +TEST= 94 +PT= 000000003fffffffffffffffffffffff +CT= e4e5b011312f9b915a1111f3dd5a50cd +TEST= 95 +PT= 000000007fffffffffffffffffffffff +CT= 7bb21b447853a94d54b8129b14402a36 +TEST= 96 +PT= 00000000ffffffffffffffffffffffff +CT= 4282e562f1b2beded056e4c582a278fc +TEST= 97 +PT= 00000001ffffffffffffffffffffffff +CT= 242c38975bfbc4eae1123e62d2ecd198 +TEST= 98 +PT= 00000003ffffffffffffffffffffffff +CT= 12cb3e844dbe4b517c62b20dbf518c89 +TEST= 99 +PT= 00000007ffffffffffffffffffffffff +CT= 6c6b3bfec90a2011fe4af8f2635ca388 +TEST= 100 +PT= 0000000fffffffffffffffffffffffff +CT= c90003b8b8e86ba81c5ab01e417f8c56 +TEST= 101 +PT= 0000001fffffffffffffffffffffffff +CT= 3b55fde647001591c20b13bad65202a9 +TEST= 102 +PT= 0000003fffffffffffffffffffffffff +CT= ec0fa4bcac5b09244326f344cd14e45d +TEST= 103 +PT= 0000007fffffffffffffffffffffffff +CT= f0c5e5ab99d309f21e2364c74b9a8c10 +TEST= 104 +PT= 000000ffffffffffffffffffffffffff +CT= 4c5016e8afa51df539df6500929bdeb5 +TEST= 105 +PT= 000001ffffffffffffffffffffffffff +CT= aa55dab3242ab4dc6ec1c1973069e289 +TEST= 106 +PT= 000003ffffffffffffffffffffffffff +CT= ad79bdc7bbfe3e94fd7feefac711a75a +TEST= 107 +PT= 000007ffffffffffffffffffffffffff +CT= 49038d62ad5e80c12717e4de7f71161c +TEST= 108 +PT= 00000fffffffffffffffffffffffffff +CT= ea2a989853b9468d8358895b7ec6bd08 +TEST= 109 +PT= 00001fffffffffffffffffffffffffff +CT= 92a3a09eb028adcc96d5014cd4e0cb5b +TEST= 110 +PT= 00003fffffffffffffffffffffffffff +CT= 447089e19867c9f730a634e36624411b +TEST= 111 +PT= 00007fffffffffffffffffffffffffff +CT= 79e1bc6f8f889a3a860635fd8b89ae08 +TEST= 112 +PT= 0000ffffffffffffffffffffffffffff +CT= 5d1fb7b62620ca0bbc1b56079968c95d +TEST= 113 +PT= 0001ffffffffffffffffffffffffffff +CT= 17b5ff27f2a627f12c38853ba60540f6 +TEST= 114 +PT= 0003ffffffffffffffffffffffffffff +CT= aa02288e444d6ff292fb4ceee5326637 +TEST= 115 +PT= 0007ffffffffffffffffffffffffffff +CT= 503389a0dde58d848e457611a29d03ef +TEST= 116 +PT= 000fffffffffffffffffffffffffffff +CT= 9a3ebb35de64c8416685cc8fb72ac553 +TEST= 117 +PT= 001fffffffffffffffffffffffffffff +CT= 0789e387cbe0afb4502c452017100dce +TEST= 118 +PT= 003fffffffffffffffffffffffffffff +CT= a018173d885207307ca5c6928ff77c92 +TEST= 119 +PT= 007fffffffffffffffffffffffffffff +CT= 576c30ca713f5a949e164f98cdb3ca33 +TEST= 120 +PT= 00ffffffffffffffffffffffffffffff +CT= 7191dfc1bbef90c4f80301c6c0a796bb +TEST= 121 +PT= 01ffffffffffffffffffffffffffffff +CT= 270bbe54a220baeef70b0c6c28b4e423 +TEST= 122 +PT= 03ffffffffffffffffffffffffffffff +CT= 84c9e5d0218dc4b9cc76bba8293243ba +TEST= 123 +PT= 07ffffffffffffffffffffffffffffff +CT= 4de4d5970cf8865094f8da24cc0519f3 +TEST= 124 +PT= 0fffffffffffffffffffffffffffffff +CT= 8488634ace9c71d65d160193b0c4cd7a +TEST= 125 +PT= 1fffffffffffffffffffffffffffffff +CT= 8eb8bb7bd3a69711eec8732be003abf2 +TEST= 126 +PT= 3fffffffffffffffffffffffffffffff +CT= 4e9983b2f707735ef928a95a13510624 +TEST= 127 +PT= 7fffffffffffffffffffffffffffffff +CT= 28de7ba142b3d255cbf7040a1e3680a9 +TEST= 128 +PT= ffffffffffffffffffffffffffffffff +CT= 3f5b8cc9ea855a0afa7347d23e8d664e +TEST= 129 +PT= fffffffffffffffffffffffffffffffe +CT= 5c005e72c1418c44f569f2ea33ba54f3 +TEST= 130 +PT= fffffffffffffffffffffffffffffffc +CT= 39bde67d5c8ed8a8b1c37eb8fa9f5ac0 +TEST= 131 +PT= fffffffffffffffffffffffffffffff8 +CT= 8ade895913685c67c5269f8aae42983e +TEST= 132 +PT= fffffffffffffffffffffffffffffff0 +CT= f9b0fda0c4a898f5b9e6f661c4ce4d07 +TEST= 133 +PT= ffffffffffffffffffffffffffffffe0 +CT= 8568261797de176bf0b43becc6285afb +TEST= 134 +PT= ffffffffffffffffffffffffffffffc0 +CT= 0833ff6f61d98a57b288e8c3586b85a6 +TEST= 135 +PT= ffffffffffffffffffffffffffffff80 +CT= d1788f572d98b2b16ec5d5f3922b99bc +TEST= 136 +PT= ffffffffffffffffffffffffffffff00 +CT= 3bd141ee84a0e6414a26e7a4f281f8a2 +TEST= 137 +PT= fffffffffffffffffffffffffffffe00 +CT= 7f692b03945867d16179a8cefc83ea3f +TEST= 138 +PT= fffffffffffffffffffffffffffffc00 +CT= a4d6616bd04f87335b0e53351227a9ee +TEST= 139 +PT= fffffffffffffffffffffffffffff800 +CT= 34a2c5a91ae2aec99b7d1b5fa6780447 +TEST= 140 +PT= fffffffffffffffffffffffffffff000 +CT= 2e3579ca15af27f64b3c955a5bfc30ba +TEST= 141 +PT= ffffffffffffffffffffffffffffe000 +CT= 6f45732cf10881546f0fd23896d2bb60 +TEST= 142 +PT= ffffffffffffffffffffffffffffc000 +CT= b7972b3941c44b90afa7b264bfba7387 +TEST= 143 +PT= ffffffffffffffffffffffffffff8000 +CT= 4b706f7f92406352394037a6d4f4688d +TEST= 144 +PT= ffffffffffffffffffffffffffff0000 +CT= 545f2b83d9616dccf60fa9830e9cd287 +TEST= 145 +PT= fffffffffffffffffffffffffffe0000 +CT= a87a385736c0a6189bd6589bd8445a93 +TEST= 146 +PT= fffffffffffffffffffffffffffc0000 +CT= 4010a5e401fdf0a0354ddbcc0d012b17 +TEST= 147 +PT= fffffffffffffffffffffffffff80000 +CT= 088c4b53f5ec0ff814c19adae7f6246c +TEST= 148 +PT= fffffffffffffffffffffffffff00000 +CT= 9272e2d2cdd11050998c845077a30ea0 +TEST= 149 +PT= ffffffffffffffffffffffffffe00000 +CT= 3aa426831067d36b92be7c5f81c13c56 +TEST= 150 +PT= ffffffffffffffffffffffffffc00000 +CT= 7678f3a833f19fea95f3c6029e2bc610 +TEST= 151 +PT= ffffffffffffffffffffffffff800000 +CT= 63919ed4ce10196438b6ad09d99cd795 +TEST= 152 +PT= ffffffffffffffffffffffffff000000 +CT= ed3c0a94d59bece98835da7aa4f07ca2 +TEST= 153 +PT= fffffffffffffffffffffffffe000000 +CT= 3c849939a5d29399f344c4a0eca8a576 +TEST= 154 +PT= fffffffffffffffffffffffffc000000 +CT= 79bf5dce14bb7dd73a8e3611de7ce026 +TEST= 155 +PT= fffffffffffffffffffffffff8000000 +CT= 2ca8209d63274cd9a29bb74bcd77683a +TEST= 156 +PT= fffffffffffffffffffffffff0000000 +CT= e656f9ecf5fe27ec3e4a73d00c282fb3 +TEST= 157 +PT= ffffffffffffffffffffffffe0000000 +CT= 082eb8be35f442fb52668e16a591d1d6 +TEST= 158 +PT= ffffffffffffffffffffffffc0000000 +CT= 76da1fbe3a50728c50fd2e621b5ad885 +TEST= 159 +PT= ffffffffffffffffffffffff80000000 +CT= 1ffc626d30203dcdb0019fb80f726cf4 +TEST= 160 +PT= ffffffffffffffffffffffff00000000 +CT= 123c1f4af313ad8c2ce648b2e71fb6e1 +TEST= 161 +PT= fffffffffffffffffffffffe00000000 +CT= 9402e9aa6f69de6504da8d20c4fcaa2f +TEST= 162 +PT= fffffffffffffffffffffffc00000000 +CT= 377be0be33b4e3e310b4aabda173f84f +TEST= 163 +PT= fffffffffffffffffffffff800000000 +CT= 65c0526cbe40161b8019a2a3171abd23 +TEST= 164 +PT= fffffffffffffffffffffff000000000 +CT= 56aff089878bf3352f8df172a3ae47d8 +TEST= 165 +PT= ffffffffffffffffffffffe000000000 +CT= 7472f9a7988607ca79707795991035e6 +TEST= 166 +PT= ffffffffffffffffffffffc000000000 +CT= 90684a2ac55fe1ec2b8ebd5622520b73 +TEST= 167 +PT= ffffffffffffffffffffff8000000000 +CT= 90ecbe6177e674c98de412413f7ac915 +TEST= 168 +PT= ffffffffffffffffffffff0000000000 +CT= 4c6a1c83e568cd10f27c2d73ded19c28 +TEST= 169 +PT= fffffffffffffffffffffe0000000000 +CT= db7e1932679fdd99742aab04aa0d5a80 +TEST= 170 +PT= fffffffffffffffffffffc0000000000 +CT= 7c8d9ab6c2761723fe42f8bb506cbcf7 +TEST= 171 +PT= fffffffffffffffffffff80000000000 +CT= 14954f0b4697776f44494fe458d814ed +TEST= 172 +PT= fffffffffffffffffffff00000000000 +CT= a5e652614c9300f37816b1f9fd0c87f9 +TEST= 173 +PT= ffffffffffffffffffffe00000000000 +CT= 9ca547f7439edc3e255c0f4d49aa8990 +TEST= 174 +PT= ffffffffffffffffffffc00000000000 +CT= 2e65eb6b6ea383e109accce8326b0393 +TEST= 175 +PT= ffffffffffffffffffff800000000000 +CT= b87c921b91829ef3b13ca541ee1130a6 +TEST= 176 +PT= ffffffffffffffffffff000000000000 +CT= 4d37c850644563c69fd0acd9a049325b +TEST= 177 +PT= fffffffffffffffffffe000000000000 +CT= 563bf90d61beef39f48dd625fcef1361 +TEST= 178 +PT= fffffffffffffffffffc000000000000 +CT= e886f9281999c5bb3b3e8862e2f7c988 +TEST= 179 +PT= fffffffffffffffffff8000000000000 +CT= 3bffc16e4c49b268a20f8d96a60b4058 +TEST= 180 +PT= fffffffffffffffffff0000000000000 +CT= 251a7eac7e2fe809e4aa8d0d7012531a +TEST= 181 +PT= ffffffffffffffffffe0000000000000 +CT= 06f2519a2fafaa596bfef5cfa15c21b9 +TEST= 182 +PT= ffffffffffffffffffc0000000000000 +CT= eef456431dea8b4acf83bdae3717f75f +TEST= 183 +PT= ffffffffffffffffff80000000000000 +CT= 1bdec521316503d9d5ee65df3ea94ddf +TEST= 184 +PT= ffffffffffffffffff00000000000000 +CT= d93eae966fac46dca927d6b114fa3f9e +TEST= 185 +PT= fffffffffffffffffe00000000000000 +CT= ab3b89542233f1271bf8fd0c0f403545 +TEST= 186 +PT= fffffffffffffffffc00000000000000 +CT= 1c317a220a7d700da2b1e075b00266e1 +TEST= 187 +PT= fffffffffffffffff800000000000000 +CT= 66404033d6b72b609354d5496e7eb511 +TEST= 188 +PT= fffffffffffffffff000000000000000 +CT= 1480cb3955ba62d09eea668f7c708817 +TEST= 189 +PT= ffffffffffffffffe000000000000000 +CT= 21feecd45b2e675973ac33bf0c5424fc +TEST= 190 +PT= ffffffffffffffffc000000000000000 +CT= 10d3ed7a6fe15ab4d91acbc7d0767ab1 +TEST= 191 +PT= ffffffffffffffff8000000000000000 +CT= 41f992a856fb278b389a62f5d274d7e9 +TEST= 192 +PT= ffffffffffffffff0000000000000000 +CT= f807c3e7985fe0f5a50e2cdb25c5109e +TEST= 193 +PT= fffffffffffffffe0000000000000000 +CT= 3b5e0f566dc96c298f0c12637539b25c +TEST= 194 +PT= fffffffffffffffc0000000000000000 +CT= 7d33fc7d8abe3ca1936759f8f5deaf20 +TEST= 195 +PT= fffffffffffffff80000000000000000 +CT= b611295e739ca7d9b50f8e4c0e754a3f +TEST= 196 +PT= fffffffffffffff00000000000000000 +CT= 6898d4f42fa7ba6a10ac05e87b9f2080 +TEST= 197 +PT= ffffffffffffffe00000000000000000 +CT= d451b8d6e1e1a0ebb155fbbf6e7b7dc3 +TEST= 198 +PT= ffffffffffffffc00000000000000000 +CT= 3a4d354f02bb5a5e47d39666867f246a +TEST= 199 +PT= ffffffffffffff800000000000000000 +CT= 11005d52f25f16bdc9545a876a63490a +TEST= 200 +PT= ffffffffffffff000000000000000000 +CT= 1bfd4b91c701fd6b61b7f997829d663b +TEST= 201 +PT= fffffffffffffe000000000000000000 +CT= d2d99c6bcc1f06fda8e27e8ae3f1ccc7 +TEST= 202 +PT= fffffffffffffc000000000000000000 +CT= 79b61c37bf328ecca8d743265a3d425c +TEST= 203 +PT= fffffffffffff8000000000000000000 +CT= a18e3dbbca577860dab6b80da3139256 +TEST= 204 +PT= fffffffffffff0000000000000000000 +CT= c9cacb5cd11692c373b2411768149ee7 +TEST= 205 +PT= ffffffffffffe0000000000000000000 +CT= 22322327e01780b17397f24087f8cc6f +TEST= 206 +PT= ffffffffffffc0000000000000000000 +CT= ea2e6b5ef182b7dff3629abd6a12045f +TEST= 207 +PT= ffffffffffff80000000000000000000 +CT= 00c55bd75c7f9c881989d3ec1911c0d4 +TEST= 208 +PT= ffffffffffff00000000000000000000 +CT= 1c3112bcb0c1dcc749d799743691bf82 +TEST= 209 +PT= fffffffffffe00000000000000000000 +CT= c2f93a4ce5ab6d5d56f1b93cf19911c1 +TEST= 210 +PT= fffffffffffc00000000000000000000 +CT= 678034dc9e41b5a560ed239eeab1bc78 +TEST= 211 +PT= fffffffffff800000000000000000000 +CT= 85062c2c909f15d9269b6c18ce99c4f0 +TEST= 212 +PT= fffffffffff000000000000000000000 +CT= 191aa0f2c8570144f38657ea4085ebe5 +TEST= 213 +PT= ffffffffffe000000000000000000000 +CT= 35830c8e7aaefe2d30310ef381cbf691 +TEST= 214 +PT= ffffffffffc000000000000000000000 +CT= 827f000e75e2c8b9d479beed913fe678 +TEST= 215 +PT= ffffffffff8000000000000000000000 +CT= 4afe7f120ce7613f74fc12a01a828073 +TEST= 216 +PT= ffffffffff0000000000000000000000 +CT= 95e3a0ca9079e646331df8b4e70d2cd6 +TEST= 217 +PT= fffffffffe0000000000000000000000 +CT= f21e99cf4f0f77cea836e11a2fe75fb1 +TEST= 218 +PT= fffffffffc0000000000000000000000 +CT= 215a41ee442fa992a6e323986ded3f68 +TEST= 219 +PT= fffffffff80000000000000000000000 +CT= cb2bf8280f3f9742c7ed513fe802629c +TEST= 220 +PT= fffffffff00000000000000000000000 +CT= 092faacc9bf43508bf8fa8613ca75dea +TEST= 221 +PT= ffffffffe00000000000000000000000 +CT= 43b02ff929a1485af6f5c6d6558baa0f +TEST= 222 +PT= ffffffffc00000000000000000000000 +CT= 7cadbe402d1b208fe735edce00aee7ce +TEST= 223 +PT= ffffffff800000000000000000000000 +CT= 171a0e1b2dd424f0e089af2c4c10f32f +TEST= 224 +PT= ffffffff000000000000000000000000 +CT= c26277437420c5d634f715aea81a9132 +TEST= 225 +PT= fffffffe000000000000000000000000 +CT= b9fb4399fa4facc7309e14ec98360b0a +TEST= 226 +PT= fffffffc000000000000000000000000 +CT= a2124bea53ec2834279bed7f7eb0f938 +TEST= 227 +PT= fffffff8000000000000000000000000 +CT= 3aebbad7303649b4194a6945c6cc3694 +TEST= 228 +PT= fffffff0000000000000000000000000 +CT= 35f40182ab4662f3023baec1ee796b57 +TEST= 229 +PT= ffffffe0000000000000000000000000 +CT= f8023ee9c3fdc45a019b4e985c7e1a54 +TEST= 230 +PT= ffffffc0000000000000000000000000 +CT= e9c0fc1818e4aa46bd2e39d638f89e05 +TEST= 231 +PT= ffffff80000000000000000000000000 +CT= 3b594c60f5c8277a5113677f94208d82 +TEST= 232 +PT= ffffff00000000000000000000000000 +CT= 13001ff5d99806efd25da34f56be854b +TEST= 233 +PT= fffffe00000000000000000000000000 +CT= c0b5fd98190ef45fbb4301438d095950 +TEST= 234 +PT= fffffc00000000000000000000000000 +CT= 625d01f058e565f77ae86378bd2c49b3 +TEST= 235 +PT= fffff800000000000000000000000000 +CT= 2c20f439f6bb097b29b8bd6d99aad799 +TEST= 236 +PT= fffff000000000000000000000000000 +CT= 6941cb6b3e08c2b7afa581ebdd607b87 +TEST= 237 +PT= ffffe000000000000000000000000000 +CT= dd35cea2799940b40db3f819cb94c08b +TEST= 238 +PT= ffffc000000000000000000000000000 +CT= 8ee79dd4f401ff9b7ea945d86666c13b +TEST= 239 +PT= ffff8000000000000000000000000000 +CT= f3f72375264e167fca9de2c1527d9606 +TEST= 240 +PT= ffff0000000000000000000000000000 +CT= d7e5dbd3324595f8fdc7d7c571da6c2a +TEST= 241 +PT= fffe0000000000000000000000000000 +CT= 64b4d629810fda6bafdf08f3b0d8d2c5 +TEST= 242 +PT= fffc0000000000000000000000000000 +CT= 8eae3b10a0c8ca6d1d3b0fa61e56b0b2 +TEST= 243 +PT= fff80000000000000000000000000000 +CT= 8b87145a01ad1c6cede995ea3670454f +TEST= 244 +PT= fff00000000000000000000000000000 +CT= 965135f8a81f25c9d630b17502f68e53 +TEST= 245 +PT= ffe00000000000000000000000000000 +CT= b8499c251f8442ee13f0933b688fcd19 +TEST= 246 +PT= ffc00000000000000000000000000000 +CT= 77e2b508db7fd89234caf7939ee5621a +TEST= 247 +PT= ff800000000000000000000000000000 +CT= a81738252621dd180a34f3455b4baa2f +TEST= 248 +PT= ff000000000000000000000000000000 +CT= db4f1aa530967d6732ce4715eb0ee24b +TEST= 249 +PT= fe000000000000000000000000000000 +CT= b6da0bb11a23855d9c5cb1b4c6412e0a +TEST= 250 +PT= fc000000000000000000000000000000 +CT= 16ae4ce5042a67ee8e177b7c587ecc82 +TEST= 251 +PT= f8000000000000000000000000000000 +CT= 30ccdb044646d7e1f3ccea3dca08b8c0 +TEST= 252 +PT= f0000000000000000000000000000000 +CT= 96d9fd5cc4f07441727df0f33e401a36 +TEST= 253 +PT= e0000000000000000000000000000000 +CT= f031d4d74f5dcbf39daaf8ca3af6e527 +TEST= 254 +PT= c0000000000000000000000000000000 +CT= aae5939c8efdf2f04e60b9fe7117b2c2 +TEST= 255 +PT= 80000000000000000000000000000000 +CT= 3ad78e726c1ec02b7ebfe92b23d9ec34 diff --git a/flint/test/testvals/ecbnt46.txt b/flint/test/testvals/ecbnt46.txt new file mode 100644 index 0000000..b5135b3 --- /dev/null +++ b/flint/test/testvals/ecbnt46.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= aae06992acbf52a3e8f4a96ec9300bd7 +TEST= 1 +PT= 00000000000000000000000000000001 +CT= cd33b28ac773f74ba00ed1f312572435 +TEST= 2 +PT= 00000000000000000000000000000003 +CT= 2a3493e66235ee67deeccd2f3b393bd8 +TEST= 3 +PT= 00000000000000000000000000000007 +CT= 088fae361362007a4c1fc8dc5f01e4c9 +TEST= 4 +PT= 0000000000000000000000000000000f +CT= 50e4f18c5e0962a1fcadba6f55d76305 +TEST= 5 +PT= 0000000000000000000000000000001f +CT= 62e657dc8bae21aa9855098faaa2ebf0 +TEST= 6 +PT= 0000000000000000000000000000003f +CT= 3735904fabe11a6586cf6b6aa1635590 +TEST= 7 +PT= 0000000000000000000000000000007f +CT= cf63adba8ca7cd527332a44f6d39b034 +TEST= 8 +PT= 000000000000000000000000000000ff +CT= 94d32ffc3812493ea9ea522896172bfd +TEST= 9 +PT= 000000000000000000000000000001ff +CT= 92937e3255773503c42bc05d293a85a2 +TEST= 10 +PT= 000000000000000000000000000003ff +CT= 08c8481ca02a2a4578ca83c9ebf4340f +TEST= 11 +PT= 000000000000000000000000000007ff +CT= 49b6d4a7ddf02529c47b4db457ed1e64 +TEST= 12 +PT= 00000000000000000000000000000fff +CT= dce802d1c32fb4e7d4f8309651f3ae97 +TEST= 13 +PT= 00000000000000000000000000001fff +CT= 29ef15bfb744bfdc3bbba3f1d51cc22f +TEST= 14 +PT= 00000000000000000000000000003fff +CT= fb302b747075ce51d9219496759479c6 +TEST= 15 +PT= 00000000000000000000000000007fff +CT= 7b538a71f451d4babc482e8e0cc540e6 +TEST= 16 +PT= 0000000000000000000000000000ffff +CT= a929e30128a03db3d45fe2c3250d7a13 +TEST= 17 +PT= 0000000000000000000000000001ffff +CT= 53b93a5d4efb0eaad307f388e49e26e9 +TEST= 18 +PT= 0000000000000000000000000003ffff +CT= 6a426c905ef170b0114b10b44a4aa302 +TEST= 19 +PT= 0000000000000000000000000007ffff +CT= ca0e97b5b6c51f7680d38650bd359d8e +TEST= 20 +PT= 000000000000000000000000000fffff +CT= 3f116cf2ce133a7fdab35dfdd6602055 +TEST= 21 +PT= 000000000000000000000000001fffff +CT= b5f2796a92d1fe9aa15b64c77ea6ea36 +TEST= 22 +PT= 000000000000000000000000003fffff +CT= 7e1eff3075051c4bae10a8e04c193a58 +TEST= 23 +PT= 000000000000000000000000007fffff +CT= 41bfe7bcce5b756ec301daf263d0db28 +TEST= 24 +PT= 00000000000000000000000000ffffff +CT= f276892134d3f1c07b5ce4606f6d1e23 +TEST= 25 +PT= 00000000000000000000000001ffffff +CT= 96c31f793fffda4057a1a9927131e763 +TEST= 26 +PT= 00000000000000000000000003ffffff +CT= 1f722071da214326a0ee9d3c0f245e19 +TEST= 27 +PT= 00000000000000000000000007ffffff +CT= 83560c89c879ea914a39f3520f536895 +TEST= 28 +PT= 0000000000000000000000000fffffff +CT= 37fedfbd923220566366da5297c9f824 +TEST= 29 +PT= 0000000000000000000000001fffffff +CT= f2d8ed4dc17d970400469c6dcef4b5df +TEST= 30 +PT= 0000000000000000000000003fffffff +CT= aba0de45d9b3c38a6b822930535a830e +TEST= 31 +PT= 0000000000000000000000007fffffff +CT= 64233d24a2815ea2ea09812b0084294a +TEST= 32 +PT= 000000000000000000000000ffffffff +CT= ea4fed9868f1e8238ee956cf585b2a26 +TEST= 33 +PT= 000000000000000000000001ffffffff +CT= f64afe23ae1b2a1e97d9389d049950b1 +TEST= 34 +PT= 000000000000000000000003ffffffff +CT= 7b9f0bfce6f1f32eb9d56a0fac7ffaf8 +TEST= 35 +PT= 000000000000000000000007ffffffff +CT= 2c5669d3950cebd542332fd495804822 +TEST= 36 +PT= 00000000000000000000000fffffffff +CT= 134152fd2d792483a5a01b3d20dee974 +TEST= 37 +PT= 00000000000000000000001fffffffff +CT= 72b52ee1f8ab5c79806b568e49cf3d1b +TEST= 38 +PT= 00000000000000000000003fffffffff +CT= c06e9d27ef3bb2805cc9a62ed74fa286 +TEST= 39 +PT= 00000000000000000000007fffffffff +CT= f008bd22387e50e0b9dd2763183e1e33 +TEST= 40 +PT= 0000000000000000000000ffffffffff +CT= bf78ce71baf3700020fe335892b89b81 +TEST= 41 +PT= 0000000000000000000001ffffffffff +CT= 9a025e2ef74eb09deb7caad92b7fdd0f +TEST= 42 +PT= 0000000000000000000003ffffffffff +CT= 694279f8a645e8e45bcf59669d16f1ed +TEST= 43 +PT= 0000000000000000000007ffffffffff +CT= ef18b24ce6466deed7b0ccdd3aade731 +TEST= 44 +PT= 000000000000000000000fffffffffff +CT= 9e8f473d7bcb44ae34ed9601e71c72a3 +TEST= 45 +PT= 000000000000000000001fffffffffff +CT= 4174d171c3d7e74274c968767d900b06 +TEST= 46 +PT= 000000000000000000003fffffffffff +CT= a3eb8785724d773bee62714b6c6c54f6 +TEST= 47 +PT= 000000000000000000007fffffffffff +CT= 2daa6cd0e85d93cdbd0d025c6394113b +TEST= 48 +PT= 00000000000000000000ffffffffffff +CT= 9709105715c622b4fa2ed6e1e89cffa3 +TEST= 49 +PT= 00000000000000000001ffffffffffff +CT= 9a40d69824118d8e497829908e2ce4c7 +TEST= 50 +PT= 00000000000000000003ffffffffffff +CT= d45221918a9ca13d38a38eda259fb1a3 +TEST= 51 +PT= 00000000000000000007ffffffffffff +CT= fc24ecc6bb9ad87b9a23703eeb6d2cce +TEST= 52 +PT= 0000000000000000000fffffffffffff +CT= 3886ae4e491fbc7d76833cab585d7025 +TEST= 53 +PT= 0000000000000000001fffffffffffff +CT= fd87a586107bcf2f07452c9d33c36f30 +TEST= 54 +PT= 0000000000000000003fffffffffffff +CT= 981bc740fd6963975d3ebe876ae5efc8 +TEST= 55 +PT= 0000000000000000007fffffffffffff +CT= c49b0a89bb251a745f84e098e92687ff +TEST= 56 +PT= 000000000000000000ffffffffffffff +CT= ef2041430c475fa156968a5beea72258 +TEST= 57 +PT= 000000000000000001ffffffffffffff +CT= 26333b8912e6b2a0ee77a6a30a660261 +TEST= 58 +PT= 000000000000000003ffffffffffffff +CT= 64269d35f79fb47f2aca925de660e44f +TEST= 59 +PT= 000000000000000007ffffffffffffff +CT= 6cb5473218060ed50d9e06c77061a0c4 +TEST= 60 +PT= 00000000000000000fffffffffffffff +CT= a42a2226e5d4bd2b9c99b451cb061be0 +TEST= 61 +PT= 00000000000000001fffffffffffffff +CT= 05513f4027d59aa2e6fcb9964cfa44de +TEST= 62 +PT= 00000000000000003fffffffffffffff +CT= 938aa2c93e30e7d61ef106969d9a99c9 +TEST= 63 +PT= 00000000000000007fffffffffffffff +CT= aa77a95072ae609240826fc18dd90c73 +TEST= 64 +PT= 0000000000000000ffffffffffffffff +CT= 0385a7d1fef2c794760134a00d2fbd89 +TEST= 65 +PT= 0000000000000001ffffffffffffffff +CT= 2f27428d50dd0648c3526acb8bd5129c +TEST= 66 +PT= 0000000000000003ffffffffffffffff +CT= 918b69bc8b5fc6865be61126afa37120 +TEST= 67 +PT= 0000000000000007ffffffffffffffff +CT= 74429451bc2d7f6e9b0785d20d6c0915 +TEST= 68 +PT= 000000000000000fffffffffffffffff +CT= 08fba9abf5ef9f8f8f7ec78d0a000a69 +TEST= 69 +PT= 000000000000001fffffffffffffffff +CT= 8fe60a3a422a67b94a3905f66ec48ffb +TEST= 70 +PT= 000000000000003fffffffffffffffff +CT= e6dc478cd25f5386746d5ca5399bd0ff +TEST= 71 +PT= 000000000000007fffffffffffffffff +CT= b427d21766e5a10545b4fe10dc089369 +TEST= 72 +PT= 00000000000000ffffffffffffffffff +CT= ff8b20716a0456de19f52b582d49047d +TEST= 73 +PT= 00000000000001ffffffffffffffffff +CT= c7b0f78140a1aec95d203811bc96a25c +TEST= 74 +PT= 00000000000003ffffffffffffffffff +CT= c446936817255142da65c7c800d070ce +TEST= 75 +PT= 00000000000007ffffffffffffffffff +CT= f0acc74303f22ea2919b9a4ea835c72a +TEST= 76 +PT= 0000000000000fffffffffffffffffff +CT= 1c094dda51cdd8a4a98061de3702bc3f +TEST= 77 +PT= 0000000000001fffffffffffffffffff +CT= 6d2b1de096883eda8949f99a2a3d76cb +TEST= 78 +PT= 0000000000003fffffffffffffffffff +CT= e4b725d9fb5917e28c36c53e7df4c679 +TEST= 79 +PT= 0000000000007fffffffffffffffffff +CT= a06ffe7541b7e015a86b0dee9462896e +TEST= 80 +PT= 000000000000ffffffffffffffffffff +CT= 6c1ca8295b35760949bf650cd80ebaa3 +TEST= 81 +PT= 000000000001ffffffffffffffffffff +CT= 86904d5fa7344d6ee084c7812e9fa67f +TEST= 82 +PT= 000000000003ffffffffffffffffffff +CT= b7e8ab4c369f206ec30b2ba27598c398 +TEST= 83 +PT= 000000000007ffffffffffffffffffff +CT= dd2c73d6bcadd0225f717f1b40fc68e8 +TEST= 84 +PT= 00000000000fffffffffffffffffffff +CT= 25c8525de3e5d0c2c8a47b51750f0c84 +TEST= 85 +PT= 00000000001fffffffffffffffffffff +CT= a5e8e5dc7089d4f342cb564692b0a1c8 +TEST= 86 +PT= 00000000003fffffffffffffffffffff +CT= c80f88e8c5d2d6f8471a0396f3102aa2 +TEST= 87 +PT= 00000000007fffffffffffffffffffff +CT= 9df919dda72cbf84e4a8f4fe738fdc16 +TEST= 88 +PT= 0000000000ffffffffffffffffffffff +CT= 734870e1f557fab23c085bc0648e2590 +TEST= 89 +PT= 0000000001ffffffffffffffffffffff +CT= d36f55936e1fd056d626d9c9f842042d +TEST= 90 +PT= 0000000003ffffffffffffffffffffff +CT= 52726a67d42cb3b03201430f0e7e98f5 +TEST= 91 +PT= 0000000007ffffffffffffffffffffff +CT= e20cd03a9a71c30f8f05d7229300f1f8 +TEST= 92 +PT= 000000000fffffffffffffffffffffff +CT= 1508cd137985bf91890f70afa4d95bb6 +TEST= 93 +PT= 000000001fffffffffffffffffffffff +CT= e453f8c035b4eb40fc12a4d1f71aa64f +TEST= 94 +PT= 000000003fffffffffffffffffffffff +CT= f3309680bcf194443bdbcd4e87684fba +TEST= 95 +PT= 000000007fffffffffffffffffffffff +CT= 78639a389a9023f1fd2c031b7df07bbb +TEST= 96 +PT= 00000000ffffffffffffffffffffffff +CT= 7a38d4eda7397c0003deb2d605f6f268 +TEST= 97 +PT= 00000001ffffffffffffffffffffffff +CT= 5a857743a89caf5acc83a63f13fc6774 +TEST= 98 +PT= 00000003ffffffffffffffffffffffff +CT= eb6dc97f6e8280d91b561fbf0d284c60 +TEST= 99 +PT= 00000007ffffffffffffffffffffffff +CT= 8ef6d8778d9bf7efc9aacb326c4f88fe +TEST= 100 +PT= 0000000fffffffffffffffffffffffff +CT= f93618f9c020c2f9c1b76601ade871b8 +TEST= 101 +PT= 0000001fffffffffffffffffffffffff +CT= aaf46559614492fa2c69e1bea200521c +TEST= 102 +PT= 0000003fffffffffffffffffffffffff +CT= 48d068d8ddb01e38a35eb3fd496e76fc +TEST= 103 +PT= 0000007fffffffffffffffffffffffff +CT= c3d6358a628a1f2afca30e95bbc3d116 +TEST= 104 +PT= 000000ffffffffffffffffffffffffff +CT= 9a18dadeb5a7fcc9138cebf1dc490f42 +TEST= 105 +PT= 000001ffffffffffffffffffffffffff +CT= b2a8c42cd615e162b42d67a32d30f144 +TEST= 106 +PT= 000003ffffffffffffffffffffffffff +CT= 25326136c403c8a909ba51861d270b68 +TEST= 107 +PT= 000007ffffffffffffffffffffffffff +CT= 834f06c56e6d2da999dfd11f9de1f18f +TEST= 108 +PT= 00000fffffffffffffffffffffffffff +CT= fa334ce61b4d9a6845eec2fe527a3ddb +TEST= 109 +PT= 00001fffffffffffffffffffffffffff +CT= 3f8ff26c2b7ed2f9a7f1c7b0f4b36988 +TEST= 110 +PT= 00003fffffffffffffffffffffffffff +CT= 528941ebb394226c5da4884958f4f4cc +TEST= 111 +PT= 00007fffffffffffffffffffffffffff +CT= 0b68bba74533d1b08b19059a8a00fd1f +TEST= 112 +PT= 0000ffffffffffffffffffffffffffff +CT= 0408467c11381fc4bf0ef8ba15e214fa +TEST= 113 +PT= 0001ffffffffffffffffffffffffffff +CT= 1eec5478176d107653220eb5fba9a138 +TEST= 114 +PT= 0003ffffffffffffffffffffffffffff +CT= bdf0662ace58afd844061763d3f36af2 +TEST= 115 +PT= 0007ffffffffffffffffffffffffffff +CT= d07e4c0d83f0aaa8dc64b787eb96f598 +TEST= 116 +PT= 000fffffffffffffffffffffffffffff +CT= a7556137034f2c4aada2cb9b51cb95f7 +TEST= 117 +PT= 001fffffffffffffffffffffffffffff +CT= 5556816100bee20681af0f3513e9c4d7 +TEST= 118 +PT= 003fffffffffffffffffffffffffffff +CT= b30767ac081c39b12e338750e007cf44 +TEST= 119 +PT= 007fffffffffffffffffffffffffffff +CT= 7b3cb214c7bb6572397e0263ec398714 +TEST= 120 +PT= 00ffffffffffffffffffffffffffffff +CT= 5352ca06035d9f3297847fd8ff598d78 +TEST= 121 +PT= 01ffffffffffffffffffffffffffffff +CT= 835f59b16932e21d7c6c56ca2ac5b11a +TEST= 122 +PT= 03ffffffffffffffffffffffffffffff +CT= 44ce938af5fc5d3b89636954a6790a35 +TEST= 123 +PT= 07ffffffffffffffffffffffffffffff +CT= 9bc21ae8e2189613c7520a83461097fa +TEST= 124 +PT= 0fffffffffffffffffffffffffffffff +CT= f5fa478c335fd0ab1ed4ef36ae37c4b5 +TEST= 125 +PT= 1fffffffffffffffffffffffffffffff +CT= 2695e9884ebdba0b472a7597f85a007d +TEST= 126 +PT= 3fffffffffffffffffffffffffffffff +CT= fbde121a6bf5d80e12cb959f737b12be +TEST= 127 +PT= 7fffffffffffffffffffffffffffffff +CT= 5c2ee71aef89f1143486ae966f7c29cc +TEST= 128 +PT= ffffffffffffffffffffffffffffffff +CT= b13db4da1f718bc6904797c82bcf2d32 +TEST= 129 +PT= fffffffffffffffffffffffffffffffe +CT= cef41d16d266bdfe46938ad7884cc0cf +TEST= 130 +PT= fffffffffffffffffffffffffffffffc +CT= 9d12435a46480ce00ea349f71799df9a +TEST= 131 +PT= fffffffffffffffffffffffffffffff8 +CT= e01f94499dac3547515c5b1d756f0f58 +TEST= 132 +PT= fffffffffffffffffffffffffffffff0 +CT= 2aabb999f43693175af65c6c612c46fb +TEST= 133 +PT= ffffffffffffffffffffffffffffffe0 +CT= 4dc68163f8e9835473253542c8a65d46 +TEST= 134 +PT= ffffffffffffffffffffffffffffffc0 +CT= 34ec40dc20413795ed53628ea748720b +TEST= 135 +PT= ffffffffffffffffffffffffffffff80 +CT= ae47ed3676ca0c08deea02d95b81db58 +TEST= 136 +PT= ffffffffffffffffffffffffffffff00 +CT= 6b98b17e80d1118e3516bd768b285a84 +TEST= 137 +PT= fffffffffffffffffffffffffffffe00 +CT= 43cd3b25375d0ce41087ff9fe2829639 +TEST= 138 +PT= fffffffffffffffffffffffffffffc00 +CT= 59bbb353cf1dd867a6e33737af655e99 +TEST= 139 +PT= fffffffffffffffffffffffffffff800 +CT= 21442e07a110667f2583eaeeee44dc8c +TEST= 140 +PT= fffffffffffffffffffffffffffff000 +CT= c958a171dca1d4ed53e1af1d380803a9 +TEST= 141 +PT= ffffffffffffffffffffffffffffe000 +CT= a13eaeeb9cd391da4e2b09490b3e7fad +TEST= 142 +PT= ffffffffffffffffffffffffffffc000 +CT= e9c21078a2eb7e03250f71000fa9e3ed +TEST= 143 +PT= ffffffffffffffffffffffffffff8000 +CT= 022c4f6f5a017d292785627667ddef24 +TEST= 144 +PT= ffffffffffffffffffffffffffff0000 +CT= 4019250f6eefb2ac5ccbcae044e75c7e +TEST= 145 +PT= fffffffffffffffffffffffffffe0000 +CT= 52efcf64c72b2f7ca5b3c836b1078c15 +TEST= 146 +PT= fffffffffffffffffffffffffffc0000 +CT= 7a867195f3ce8769cbd336502fbb5130 +TEST= 147 +PT= fffffffffffffffffffffffffff80000 +CT= 670cfa093d1dbdb2317041404102435e +TEST= 148 +PT= fffffffffffffffffffffffffff00000 +CT= 884607b128c5de3ab39a529a1ef51bef +TEST= 149 +PT= ffffffffffffffffffffffffffe00000 +CT= 3604a7e80832b3a99954bca6f5b9f501 +TEST= 150 +PT= ffffffffffffffffffffffffffc00000 +CT= 82647f1332fe570a9d4d92b2ee771d3b +TEST= 151 +PT= ffffffffffffffffffffffffff800000 +CT= b909925786f34c3c92d971883c9fbedf +TEST= 152 +PT= ffffffffffffffffffffffffff000000 +CT= 9ca09c25f273a766db98a480ce8dfedc +TEST= 153 +PT= fffffffffffffffffffffffffe000000 +CT= 9b31568febe81cfc2e65af1c86d1a308 +TEST= 154 +PT= fffffffffffffffffffffffffc000000 +CT= fc4249656e14b29eb9c44829b4c59a46 +TEST= 155 +PT= fffffffffffffffffffffffff8000000 +CT= b3bba904f4953e09b54800af2f62e7d4 +TEST= 156 +PT= fffffffffffffffffffffffff0000000 +CT= cf3579a9ba38c8e43653173e14f3a4c6 +TEST= 157 +PT= ffffffffffffffffffffffffe0000000 +CT= af04b68f104f21ef2afb4767cf74143c +TEST= 158 +PT= ffffffffffffffffffffffffc0000000 +CT= 4770446f01d1f391256e85a1b30d89d3 +TEST= 159 +PT= ffffffffffffffffffffffff80000000 +CT= ee82e6ba488156f76496311da6941deb +TEST= 160 +PT= ffffffffffffffffffffffff00000000 +CT= 2e3febfd625bfcd0a2c06eb460da1732 +TEST= 161 +PT= fffffffffffffffffffffffe00000000 +CT= 8827551ddcc9df23fa72a3de4e9f0b07 +TEST= 162 +PT= fffffffffffffffffffffffc00000000 +CT= 3713da0c0219b63454035613b5a403dd +TEST= 163 +PT= fffffffffffffffffffffff800000000 +CT= 74569a2ca5a7bd5131ce8dc7cbfbf72f +TEST= 164 +PT= fffffffffffffffffffffff000000000 +CT= a4b2c7d8eba531ff47c5041a55fbd1ec +TEST= 165 +PT= ffffffffffffffffffffffe000000000 +CT= 8279f7c0c2a03ee660c6d392db025d18 +TEST= 166 +PT= ffffffffffffffffffffffc000000000 +CT= 340da09c2dd11c3b679d08ccd27dd595 +TEST= 167 +PT= ffffffffffffffffffffff8000000000 +CT= c745c451e96ff3c045e4367c833e3b54 +TEST= 168 +PT= ffffffffffffffffffffff0000000000 +CT= 71dbf37e87a2e34d15b20e8f10e48924 +TEST= 169 +PT= fffffffffffffffffffffe0000000000 +CT= db0d3a6fdcc13f915e2b302ceeb70fd8 +TEST= 170 +PT= fffffffffffffffffffffc0000000000 +CT= 15eec9ebf42b9ca76897d2cd6c5a12e2 +TEST= 171 +PT= fffffffffffffffffffff80000000000 +CT= 156f07767a85a4312321f63968338a01 +TEST= 172 +PT= fffffffffffffffffffff00000000000 +CT= 026a7024d6a902e0b3ffccbaa910cc3f +TEST= 173 +PT= ffffffffffffffffffffe00000000000 +CT= a6cae46fb6fadfe7a2c302a34242817b +TEST= 174 +PT= ffffffffffffffffffffc00000000000 +CT= b2099795e88cc158fd75ea133d7e7fbe +TEST= 175 +PT= ffffffffffffffffffff800000000000 +CT= d3427be7e4d27cd54f5fe37b03cf0897 +TEST= 176 +PT= ffffffffffffffffffff000000000000 +CT= 54d632d03aba0bd0f91877ebdd4d09cb +TEST= 177 +PT= fffffffffffffffffffe000000000000 +CT= 7cc4ae9a424b2cec90c97153c2457ec5 +TEST= 178 +PT= fffffffffffffffffffc000000000000 +CT= 40ebd5ad082345b7a2097ccd3464da02 +TEST= 179 +PT= fffffffffffffffffff8000000000000 +CT= 73f34c7d3eae5e80082c1647524308ee +TEST= 180 +PT= fffffffffffffffffff0000000000000 +CT= a99ebb030260826f981ad3e64490aa4f +TEST= 181 +PT= ffffffffffffffffffe0000000000000 +CT= 733d41f4727b5ef0df4af4cf3cffa0cb +TEST= 182 +PT= ffffffffffffffffffc0000000000000 +CT= e0b3a00785917c7efc9adba322813571 +TEST= 183 +PT= ffffffffffffffffff80000000000000 +CT= e2a37580116cfb71856254496ab0aca8 +TEST= 184 +PT= ffffffffffffffffff00000000000000 +CT= 091d1fdc2bd2c346cd5046a8c6209146 +TEST= 185 +PT= fffffffffffffffffe00000000000000 +CT= a0c74fd0b9361764ce91c5200b095357 +TEST= 186 +PT= fffffffffffffffffc00000000000000 +CT= 6a9d965e6274143f25afdcfc88ffd77c +TEST= 187 +PT= fffffffffffffffff800000000000000 +CT= b72f70ebf3e3fda23f508eec76b42c02 +TEST= 188 +PT= fffffffffffffffff000000000000000 +CT= a8f161002733e93ca4527d22c1a0c5bb +TEST= 189 +PT= ffffffffffffffffe000000000000000 +CT= 33f123282c5d633924f7d5ba3f3cab11 +TEST= 190 +PT= ffffffffffffffffc000000000000000 +CT= 12c6f3877af421a918a84b775858021d +TEST= 191 +PT= ffffffffffffffff8000000000000000 +CT= c8aa80a7850675bc007c46df06b49868 +TEST= 192 +PT= ffffffffffffffff0000000000000000 +CT= 93baaffb35fbe739c17c6ac22eecf18f +TEST= 193 +PT= fffffffffffffffe0000000000000000 +CT= b46b09809d68b9a456432a79bdc2e38c +TEST= 194 +PT= fffffffffffffffc0000000000000000 +CT= 22c0a7678dc6d8cf5c8a6d5a9960767c +TEST= 195 +PT= fffffffffffffff80000000000000000 +CT= 3a3c15bfc11a9537c130687004e136ee +TEST= 196 +PT= fffffffffffffff00000000000000000 +CT= 0882a16f44088d42447a29ac090ec17e +TEST= 197 +PT= ffffffffffffffe00000000000000000 +CT= f34e4a6324ea4a5c39a661c8fe5ada8f +TEST= 198 +PT= ffffffffffffffc00000000000000000 +CT= 7d350fa6057080f1086a56b17ec240db +TEST= 199 +PT= ffffffffffffff800000000000000000 +CT= fa75e05bcdc7e00c273fa33f6ee441d2 +TEST= 200 +PT= ffffffffffffff000000000000000000 +CT= 534923c169d504d7519c15d30e756c50 +TEST= 201 +PT= fffffffffffffe000000000000000000 +CT= 62abc792288258492a7cb45145f4b759 +TEST= 202 +PT= fffffffffffffc000000000000000000 +CT= 9216309a7842430b83ffb98638011512 +TEST= 203 +PT= fffffffffffff8000000000000000000 +CT= afa99c997ac478a0dea4119c9e45f8b1 +TEST= 204 +PT= fffffffffffff0000000000000000000 +CT= 113365a9ffbe3b0ca61e98507554168b +TEST= 205 +PT= ffffffffffffe0000000000000000000 +CT= 273ab2f2b4a366a57d582a339313c8b1 +TEST= 206 +PT= ffffffffffffc0000000000000000000 +CT= 7bd496918115d14ed5380852716c8814 +TEST= 207 +PT= ffffffffffff80000000000000000000 +CT= 245339319584b0a412412869d6c2eada +TEST= 208 +PT= ffffffffffff00000000000000000000 +CT= 1ee5ab003dc8722e74905d9a8fe3d350 +TEST= 209 +PT= fffffffffffe00000000000000000000 +CT= 3cc9e9a9be8cc3f6fb2ea24088e9bb19 +TEST= 210 +PT= fffffffffffc00000000000000000000 +CT= 36ff1ec9ccfbc349e5d356d063693ad6 +TEST= 211 +PT= fffffffffff800000000000000000000 +CT= 61e3d194088dc8d97e9e6db37457eac5 +TEST= 212 +PT= fffffffffff000000000000000000000 +CT= e4771318ad7a63dd680f6e583b7747ea +TEST= 213 +PT= ffffffffffe000000000000000000000 +CT= 011865f91bc56868d051e52c9efd59b7 +TEST= 214 +PT= ffffffffffc000000000000000000000 +CT= 1b72eeaee4899b443914e5b3a57fba92 +TEST= 215 +PT= ffffffffff8000000000000000000000 +CT= 8e3558c135252fb9c9f367ed609467a1 +TEST= 216 +PT= ffffffffff0000000000000000000000 +CT= c94337c37c4e790ab45780bd9c3674a0 +TEST= 217 +PT= fffffffffe0000000000000000000000 +CT= f2cbf9cb186e270dd7bdb0c28febc57d +TEST= 218 +PT= fffffffffc0000000000000000000000 +CT= 7ca0c1d93356d9eb8aa952084d75f913 +TEST= 219 +PT= fffffffff80000000000000000000000 +CT= 707b1dbb0ffa40ef7d95def421233fae +TEST= 220 +PT= fffffffff00000000000000000000000 +CT= d49bceb3b823fedd602c305345734bd2 +TEST= 221 +PT= ffffffffe00000000000000000000000 +CT= 902d88d13eae52089abd6143cfe394e9 +TEST= 222 +PT= ffffffffc00000000000000000000000 +CT= d2695e59c20361d82652d7d58b6f11b2 +TEST= 223 +PT= ffffffff800000000000000000000000 +CT= 0be2b18252e774dda30cdda02c6906e3 +TEST= 224 +PT= ffffffff000000000000000000000000 +CT= 1b38d4f7452afefcb7fc721244e4b72e +TEST= 225 +PT= fffffffe000000000000000000000000 +CT= 997dd3e9f1598bfa73f75973f7e93b76 +TEST= 226 +PT= fffffffc000000000000000000000000 +CT= 77e537e89e8491e8662aae3bc809421d +TEST= 227 +PT= fffffff8000000000000000000000000 +CT= aa5d5b1c4ea1b7a22e5583ac2e9ed8a7 +TEST= 228 +PT= fffffff0000000000000000000000000 +CT= 440e0d733255cda92fb46e842fe58054 +TEST= 229 +PT= ffffffe0000000000000000000000000 +CT= 7f5e05bd2068738196fee79ace7e3aec +TEST= 230 +PT= ffffffc0000000000000000000000000 +CT= 6c62f6bbcab7c3e821c9290f08892dda +TEST= 231 +PT= ffffff80000000000000000000000000 +CT= 0cf3e9d3a42be5b854ca65b13f35f48d +TEST= 232 +PT= ffffff00000000000000000000000000 +CT= a7876ec87f5a09bfea42c77da30fd50e +TEST= 233 +PT= fffffe00000000000000000000000000 +CT= e8a067b604d5373d8b0f2e05a03b341b +TEST= 234 +PT= fffffc00000000000000000000000000 +CT= 1c3a94f1c052c55c2d8359aff2163b4f +TEST= 235 +PT= fffff800000000000000000000000000 +CT= 01b0f476d484f43f1aeb6efa9361a8ac +TEST= 236 +PT= fffff000000000000000000000000000 +CT= 77aa270471881be070fb52c7067ce732 +TEST= 237 +PT= ffffe000000000000000000000000000 +CT= a7e1842e8a87861c221a500883245c51 +TEST= 238 +PT= ffffc000000000000000000000000000 +CT= 283d3b069d8eb9fb432d74b96ca762b4 +TEST= 239 +PT= ffff8000000000000000000000000000 +CT= f378f68c5dbf59e211b3a659a7317d94 +TEST= 240 +PT= ffff0000000000000000000000000000 +CT= e98f4ba4f073df4baa116d011dc24a28 +TEST= 241 +PT= fffe0000000000000000000000000000 +CT= 8765e8acc169758319cb46dc7bcf3dca +TEST= 242 +PT= fffc0000000000000000000000000000 +CT= 2520ce829a26577f0f4822c4ecc87401 +TEST= 243 +PT= fff80000000000000000000000000000 +CT= 4880c7e08f27befe78590743c05e698b +TEST= 244 +PT= fff00000000000000000000000000000 +CT= 0046612c766d1840c226364f1fa7ed72 +TEST= 245 +PT= ffe00000000000000000000000000000 +CT= 0dc9a2610037009b698f11bb7e86c83e +TEST= 246 +PT= ffc00000000000000000000000000000 +CT= 030d7e5b64f380a7e4ea5387b5cd7f49 +TEST= 247 +PT= ff800000000000000000000000000000 +CT= a5c772e5c62631ef660ee1d5877f6d1b +TEST= 248 +PT= ff000000000000000000000000000000 +CT= 32bb6a7ec84499e166f936003d55a5bb +TEST= 249 +PT= fe000000000000000000000000000000 +CT= 8c7c27ff32bcf8dc2dc57c90c2903961 +TEST= 250 +PT= fc000000000000000000000000000000 +CT= ce60bc52386234f158f84341e534cd9e +TEST= 251 +PT= f8000000000000000000000000000000 +CT= 35c1471837af446153bce55d5ba72a0a +TEST= 252 +PT= f0000000000000000000000000000000 +CT= 2a560364ce529efc21788779568d5555 +TEST= 253 +PT= e0000000000000000000000000000000 +CT= 9946b5f87af446f5796c1fee63a2da24 +TEST= 254 +PT= c0000000000000000000000000000000 +CT= 2ce1f8b7e30627c1c4519eada44bc436 +TEST= 255 +PT= 80000000000000000000000000000000 +CT= 6cd02513e8d4dc986b4afe087a60bd0c diff --git a/flint/test/testvals/ecbnt48.txt b/flint/test/testvals/ecbnt48.txt new file mode 100644 index 0000000..450d2fe --- /dev/null +++ b/flint/test/testvals/ecbnt48.txt @@ -0,0 +1,779 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= dc95c078a2408989ad48a21492842087 +TEST= 1 +PT= 00000000000000000000000000000001 +CT= 530f8afbc74536b9a963b4f1c4cb738b +TEST= 2 +PT= 00000000000000000000000000000003 +CT= 726003ca37a62a74d1a2f58e7506358e +TEST= 3 +PT= 00000000000000000000000000000007 +CT= bcaf49b0c0cea62de6bc1c66545e1dad +TEST= 4 +PT= 0000000000000000000000000000000f +CT= b0b710249c8626e1a96ad57828d7be2e +TEST= 5 +PT= 0000000000000000000000000000001f +CT= 887cb1eb76b46720104130dbf1966387 +TEST= 6 +PT= 0000000000000000000000000000003f +CT= 56a368c7a34325e4adce918732e8ea7e +TEST= 7 +PT= 0000000000000000000000000000007f +CT= cac87823c4ed0ded6ffe92afe6a56ffd +TEST= 8 +PT= 000000000000000000000000000000ff +CT= 4d4f06c6f17c2903abc750b28eda2e34 +TEST= 9 +PT= 000000000000000000000000000001ff +CT= c460e6aee417a37a6c60dc0aa85bc4d2 +TEST= 10 +PT= 000000000000000000000000000003ff +CT= 0ef31d5000240ab67f2511ad51ac6a6f +TEST= 11 +PT= 000000000000000000000000000007ff +CT= 304239c608efb82eafd161826baddb67 +TEST= 12 +PT= 00000000000000000000000000000fff +CT= 17be0fbc50c92820d563067c9f5204fd +TEST= 13 +PT= 00000000000000000000000000001fff +CT= b172d242b63b54af7f6aba477ecdc146 +TEST= 14 +PT= 00000000000000000000000000003fff +CT= c550e4f6ca4dfa10fb9e9ea66fb91673 +TEST= 15 +PT= 00000000000000000000000000007fff +CT= e9a4ee862f87f211b6e605115aee6e5a +TEST= 16 +PT= 0000000000000000000000000000ffff +CT= e8dd97836fe934a5f5cf6a662d5b479f +TEST= 17 +PT= 0000000000000000000000000001ffff +CT= 80ce6c203776f35a48928ae2358ee174 +TEST= 18 +PT= 0000000000000000000000000003ffff +CT= 15942b0d89e9ef9716e831443281a57c +TEST= 19 +PT= 0000000000000000000000000007ffff +CT= a5299cdc04a6b08a3aa30e48f410c0a5 +TEST= 20 +PT= 000000000000000000000000000fffff +CT= 075c1e8602554af03ea1ac5aaf174a85 +TEST= 21 +PT= 000000000000000000000000001fffff +CT= 451a51155cad491e8307cd770e20cbee +TEST= 22 +PT= 000000000000000000000000003fffff +CT= a04966b5f5cac26a27a054f0872a9d6e +TEST= 23 +PT= 000000000000000000000000007fffff +CT= 2bdb0cd6ca18e273345ce91e3b6359b3 +TEST= 24 +PT= 00000000000000000000000000ffffff +CT= 7640fb7a3eb6d99975239f6a5e4f3e90 +TEST= 25 +PT= 00000000000000000000000001ffffff +CT= 000d85d4cd6089dca634401d8ffc9dc5 +TEST= 26 +PT= 00000000000000000000000003ffffff +CT= 9814a2df042ed7cdeb8c540a3f93aae6 +TEST= 27 +PT= 00000000000000000000000007ffffff +CT= afbdd961a6ea47665b6a47d1e97d3139 +TEST= 28 +PT= 0000000000000000000000000fffffff +CT= b92b31ec069b5eded32883d152808107 +TEST= 29 +PT= 0000000000000000000000001fffffff +CT= 4c18ff599dd824de22fa28083504b7a4 +TEST= 30 +PT= 0000000000000000000000003fffffff +CT= d0ce009cd9581bc87aab04bffbe3eac5 +TEST= 31 +PT= 0000000000000000000000007fffffff +CT= fb01abd9082d54d31cfe9ae654c360bf +TEST= 32 +PT= 000000000000000000000000ffffffff +CT= ebc85b60c80ac906911208ac8191ca99 +TEST= 33 +PT= 000000000000000000000001ffffffff +CT= 7d4feb5ff6d3a0b59ffa3f64635b45f0 +TEST= 34 +PT= 000000000000000000000003ffffffff +CT= 5a7243d2ed4f20c06638d5b8fd86fca1 +TEST= 35 +PT= 000000000000000000000007ffffffff +CT= 00e138e93ba22c212fad9eb7803dc8a7 +TEST= 36 +PT= 00000000000000000000000fffffffff +CT= 5342826786693becb735c5dfd9dc3b78 +TEST= 37 +PT= 00000000000000000000001fffffffff +CT= 89d27af549ecc8b352887c35afbe05b9 +TEST= 38 +PT= 00000000000000000000003fffffffff +CT= ea1694641aaa6c665ae9ff277d7535d6 +TEST= 39 +PT= 00000000000000000000007fffffffff +CT= 8a20deb1ec0bc7d7116d78b66711ac8d +TEST= 40 +PT= 0000000000000000000000ffffffffff +CT= f264d95afd5e7660ca94472fc669044d +TEST= 41 +PT= 0000000000000000000001ffffffffff +CT= fb3d784a822ea5061c99a4e86dd5e0ee +TEST= 42 +PT= 0000000000000000000003ffffffffff +CT= 1cf03115a4d5025aeeccb29fdfaf8518 +TEST= 43 +PT= 0000000000000000000007ffffffffff +CT= ad031c70f3695ab0f17b54542295b6f1 +TEST= 44 +PT= 000000000000000000000fffffffffff +CT= fe47d8f239b3b45e6032d64772a89597 +TEST= 45 +PT= 000000000000000000001fffffffffff +CT= 30a52cf0b60d78417a6f9139ead693aa +TEST= 46 +PT= 000000000000000000003fffffffffff +CT= bcfa8c117289994c5e2bf36671a1c250 +TEST= 47 +PT= 000000000000000000007fffffffffff +CT= 6e2ef0875cbaf7daa88d7c168fb4e74c +TEST= 48 +PT= 00000000000000000000ffffffffffff +CT= 19a62ebdec659f25ba9deede08db4ba1 +TEST= 49 +PT= 00000000000000000001ffffffffffff +CT= 9cfe3fd2d4742a8dd4ce2cdb53558b8b +TEST= 50 +PT= 00000000000000000003ffffffffffff +CT= ff9e5e6b14cc67acf4b5d1b5f0ae7825 +TEST= 51 +PT= 00000000000000000007ffffffffffff +CT= 105303cd709d55961f68164ae9af602f +TEST= 52 +PT= 0000000000000000000fffffffffffff +CT= 32334bec8f2369ec5af88389849e10e2 +TEST= 53 +PT= 0000000000000000001fffffffffffff +CT= 6b135672f9313b5708f907ba6ca08aa2 +TEST= 54 +PT= 0000000000000000003fffffffffffff +CT= c938c8042ea25b79287063e83886a114 +TEST= 55 +PT= 0000000000000000007fffffffffffff +CT= a725af8f5a93e89cb76aabcd7800254f +TEST= 56 +PT= 000000000000000000ffffffffffffff +CT= 140aeec2b0dea84585888b9ccd93b899 +TEST= 57 +PT= 000000000000000001ffffffffffffff +CT= 0d070d0515d0140c32c37ab448d938e4 +TEST= 58 +PT= 000000000000000003ffffffffffffff +CT= 3c973d2fc670a8ce81386e1093fd5d01 +TEST= 59 +PT= 000000000000000007ffffffffffffff +CT= 2dc5acfc922bc0e9ae28f6ba5900075a +TEST= 60 +PT= 00000000000000000fffffffffffffff +CT= a884b5ce79fe57658be0b1a1725a620d +TEST= 61 +PT= 00000000000000001fffffffffffffff +CT= 4ae4eac3bc4c1d89bae0807f350a1db2 +TEST= 62 +PT= 00000000000000003fffffffffffffff +CT= 21e1531f06bb0be6b3824c5210cab657 +TEST= 63 +PT= 00000000000000007fffffffffffffff +CT= 1d00b46164c05228575ade02afd3f3aa +TEST= 64 +PT= 0000000000000000ffffffffffffffff +CT= 55ed76948d2886bfff50e3352bfe34fd +TEST= 65 +PT= 0000000000000001ffffffffffffffff +CT= 26330a5f3bc166e2d66c25523d80827b +TEST= 66 +PT= 0000000000000003ffffffffffffffff +CT= 7d1ff2b1cd8c311da0d31877d8479924 +TEST= 67 +PT= 0000000000000007ffffffffffffffff +CT= 6b44fd6bcbc1746699fa86393e663e20 +TEST= 68 +PT= 000000000000000fffffffffffffffff +CT= 7d6135c058802c7d7e1a64d84c1b0b58 +TEST= 69 +PT= 000000000000001fffffffffffffffff +CT= 2780da1d4af9937b7f7a167109c01ed5 +TEST= 70 +PT= 000000000000003fffffffffffffffff +CT= 8c6d606a473292ef9d7b3eaa2c2b48d0 +TEST= 71 +PT= 000000000000007fffffffffffffffff +CT= b21cd49bdd33f8dba102ea9f593679f5 +TEST= 72 +PT= 00000000000000ffffffffffffffffff +CT= e84b26bdf29cdcf2cc6d0cfba9a36b4a +TEST= 73 +PT= 00000000000001ffffffffffffffffff +CT= 5f1e926f32237a79c41c996708abb848 +TEST= 74 +PT= 00000000000003ffffffffffffffffff +CT= b3071afc6fb7cb44dc31791a303ab3a1 +TEST= 75 +PT= 00000000000007ffffffffffffffffff +CT= 1bfa099e97915b970ac427db41c4e682 +TEST= 76 +PT= 0000000000000fffffffffffffffffff +CT= 652ec0796f58f50323bcd4d688e891e6 +TEST= 77 +PT= 0000000000001fffffffffffffffffff +CT= 2cd6250a5b9090ee1a8a6e82ca249f4d +TEST= 78 +PT= 0000000000003fffffffffffffffffff +CT= fb748f3bab75ea7bc1a8e82d82a51e09 +TEST= 79 +PT= 0000000000007fffffffffffffffffff +CT= 9c61fb5dfef28e0e332477533e04fa5d +TEST= 80 +PT= 000000000000ffffffffffffffffffff +CT= 1554b13676e017251cbaa0b870293f5b +TEST= 81 +PT= 000000000001ffffffffffffffffffff +CT= 2bdf5516618bfa55688ef7cab73711bd +TEST= 82 +PT= 000000000003ffffffffffffffffffff +CT= ecf1b105a6d8e6da307ea0fb480001a5 +TEST= 83 +PT= 000000000007ffffffffffffffffffff +CT= a3f459f75e64b6e19f4299b269139f7d +TEST= 84 +PT= 00000000000fffffffffffffffffffff +CT= 9b7fcb51afb728ebc4b2cde2eaa3272e +TEST= 85 +PT= 00000000001fffffffffffffffffffff +CT= 6cc8b54fcc4cb5ab1f6bca58809a03f3 +TEST= 86 +PT= 00000000003fffffffffffffffffffff +CT= 08d33488079834d193a93e60340a9dc6 +TEST= 87 +PT= 00000000007fffffffffffffffffffff +CT= 3192a2e9f08b3b683234da0f5518a010 +TEST= 88 +PT= 0000000000ffffffffffffffffffffff +CT= 943ac035ba6411af0340a479c035ccde +TEST= 89 +PT= 0000000001ffffffffffffffffffffff +CT= 3a4ee0ccaee8fcaf778e23e572b64972 +TEST= 90 +PT= 0000000003ffffffffffffffffffffff +CT= 71dd8603c6a215f56ce78254a2dcc352 +TEST= 91 +PT= 0000000007ffffffffffffffffffffff +CT= e55d93d9e16f29b5c0bcc04caeba26b4 +TEST= 92 +PT= 000000000fffffffffffffffffffffff +CT= 978b39d54628ef68dd2e3481c056be87 +TEST= 93 +PT= 000000001fffffffffffffffffffffff +CT= 9781f263a24815e5f86d5426fca2a60d +TEST= 94 +PT= 000000003fffffffffffffffffffffff +CT= a2502f0fa52c9ee2b04dceba26818feb +TEST= 95 +PT= 000000007fffffffffffffffffffffff +CT= e01498623fc3691c93f0a254025f00dc +TEST= 96 +PT= 00000000ffffffffffffffffffffffff +CT= 04f6241fa8dfe97b8fa21020c8e0f012 +TEST= 97 +PT= 00000001ffffffffffffffffffffffff +CT= adad0ea8da80f52cba02a2f797e5f660 +TEST= 98 +PT= 00000003ffffffffffffffffffffffff +CT= da4e186b8466f3de44fcceb4275e919e +TEST= 99 +PT= 00000007ffffffffffffffffffffffff +CT= 81afed0aa90ab04150725191ae23329d +TEST= 100 +PT= 0000000fffffffffffffffffffffffff +CT= ed4edde587d7de7bfc9937e901f28ac3 +TEST= 101 +PT= 0000001fffffffffffffffffffffffff +CT= db971e6a8fef015916b1bd3d1384765b +TEST= 102 +PT= 0000003fffffffffffffffffffffffff +CT= 2908a709b1ed9d002ff1575fb656f145 +TEST= 103 +PT= 0000007fffffffffffffffffffffffff +CT= f2db14c1ebbcfd1cffcd2d45569d8d67 +TEST= 104 +PT= 000000ffffffffffffffffffffffffff +CT= 70c94bbbdecd58bf0f5f85d2cbca1ef5 +TEST= 105 +PT= 000001ffffffffffffffffffffffffff +CT= 6fcc581931c7de8f8433912403e59ef6 +TEST= 106 +PT= 000003ffffffffffffffffffffffffff +CT= 052bd927df7af09b394e6acd3faf17af +TEST= 107 +PT= 000007ffffffffffffffffffffffffff +CT= 71d78327dd4f1de4c41c0bed89d86ad9 +TEST= 108 +PT= 00000fffffffffffffffffffffffffff +CT= 990d25762402bcd18da9ac57a4734ec8 +TEST= 109 +PT= 00001fffffffffffffffffffffffffff +CT= e4fc8242eabf609feb6f3bab41f8b1dc +TEST= 110 +PT= 00003fffffffffffffffffffffffffff +CT= dfef5c6cbcfcd8a2628ae53ce4c6a79b +TEST= 111 +PT= 00007fffffffffffffffffffffffffff +CT= d0b45049e154ea336aa76e4a75b315e7 +TEST= 112 +PT= 0000ffffffffffffffffffffffffffff +CT= d414f7943d00ca79d85b74cc95f9ef14 +TEST= 113 +PT= 0001ffffffffffffffffffffffffffff +CT= a69b3d1b84f6ee453a27bca6c80f1b7f +TEST= 114 +PT= 0003ffffffffffffffffffffffffffff +CT= 58396af6098f11a4146c222c23489274 +TEST= 115 +PT= 0007ffffffffffffffffffffffffffff +CT= 0b125f559c24c477ba892ce77426f45a +TEST= 116 +PT= 000fffffffffffffffffffffffffffff +CT= c4bf82fc934d9c05da586038b25b3a30 +TEST= 117 +PT= 001fffffffffffffffffffffffffffff +CT= e6211d551f1508d285cfd248a5dbea3e +TEST= 118 +PT= 003fffffffffffffffffffffffffffff +CT= 25a4f6a5fdf329d70ca049f503b5eda2 +TEST= 119 +PT= 007fffffffffffffffffffffffffffff +CT= 63302af0213fde83e376a1c1e9990542 +TEST= 120 +PT= 00ffffffffffffffffffffffffffffff +CT= 9300e6173d1260a519b13ea2ae65a985 +TEST= 121 +PT= 01ffffffffffffffffffffffffffffff +CT= 8e9aac3b662e266dcdf5ae4426a90edd +TEST= 122 +PT= 03ffffffffffffffffffffffffffffff +CT= c691e61ab83e4b2a6cea1a1a6097ba2e +TEST= 123 +PT= 07ffffffffffffffffffffffffffffff +CT= cdf811cc43cf5df05db02cb939721884 +TEST= 124 +PT= 0fffffffffffffffffffffffffffffff +CT= bf2778915eee19c7cab7c0547f0a61dd +TEST= 125 +PT= 1fffffffffffffffffffffffffffffff +CT= 4da9149db4c9c2bb29ba1701816f1b2f +TEST= 126 +PT= 3fffffffffffffffffffffffffffffff +CT= d20c5e7d71e9caeccf40664f1eb45392 +TEST= 127 +PT= 7fffffffffffffffffffffffffffffff +CT= e358d3c6b857b344f148f8d6c622f3bf +TEST= 128 +PT= ffffffffffffffffffffffffffffffff +CT= acdace8078a32b1a182bfa4987ca1347 +TEST= 129 +PT= fffffffffffffffffffffffffffffffe +CT= 7bfe9d876c6d63c1d035da8fe21c409d +TEST= 130 +PT= fffffffffffffffffffffffffffffffc +CT= 0f59cb5a4b522e2ac56c1a64f558ad9a +TEST= 131 +PT= fffffffffffffffffffffffffffffff8 +CT= da63039d38cb4612b2dc36ba26684b93 +TEST= 132 +PT= fffffffffffffffffffffffffffffff0 +CT= 7240e524bc51d8c4d440b1be55d1062c +TEST= 133 +PT= ffffffffffffffffffffffffffffffe0 +CT= 2915be4a1ecfdcbe3e023811a12bb6c7 +TEST= 134 +PT= ffffffffffffffffffffffffffffffc0 +CT= 9b7b940f6c509f9e44a4ee140448ee46 +TEST= 135 +PT= ffffffffffffffffffffffffffffff80 +CT= 0493370e054b09871130fe49af730a5a +TEST= 136 +PT= ffffffffffffffffffffffffffffff00 +CT= 29ee526770f2a11dcfa989d1ce88830f +TEST= 137 +PT= fffffffffffffffffffffffffffffe00 +CT= ee0715b96f72e3f7a22a5064fc592f4c +TEST= 138 +PT= fffffffffffffffffffffffffffffc00 +CT= 27127daafc9accd2fb334ec3eba52323 +TEST= 139 +PT= fffffffffffffffffffffffffffff800 +CT= eb8168313e1cfdfdb5e986d5429cf172 +TEST= 140 +PT= fffffffffffffffffffffffffffff000 +CT= a423deabc173dcf7e2c4c53e77d37cd1 +TEST= 141 +PT= ffffffffffffffffffffffffffffe000 +CT= 286894e48e537f8763b56707d7d155c8 +TEST= 142 +PT= ffffffffffffffffffffffffffffc000 +CT= 683e2140585b18452dd4ffbb93c95df9 +TEST= 143 +PT= ffffffffffffffffffffffffffff8000 +CT= 63fafabb72c07bfbd3ddc9b1203104b8 +TEST= 144 +PT= ffffffffffffffffffffffffffff0000 +CT= 5f397bf03084820cc8810d52e5b666e9 +TEST= 145 +PT= fffffffffffffffffffffffffffe0000 +CT= 4b00c27e8b26da7eab9d3a88dec8b031 +TEST= 146 +PT= fffffffffffffffffffffffffffc0000 +CT= 0861a861c3db4e94194211b77ed761b9 +TEST= 147 +PT= fffffffffffffffffffffffffff80000 +CT= 705a4ef8ba2133729c20185c3d3a4763 +TEST= 148 +PT= fffffffffffffffffffffffffff00000 +CT= 8d683ee63e60d208e343ce48dbc44cac +TEST= 149 +PT= ffffffffffffffffffffffffffe00000 +CT= afa2ffc137577092e2b654fa199d2c43 +TEST= 150 +PT= ffffffffffffffffffffffffffc00000 +CT= 3cdf13e72dee4c581bafec70b85f9660 +TEST= 151 +PT= ffffffffffffffffffffffffff800000 +CT= 2fd0e41c5b8402277354a7391d2618e2 +TEST= 152 +PT= ffffffffffffffffffffffffff000000 +CT= 90ddbcb950843592dd47bbef00fdc876 +TEST= 153 +PT= fffffffffffffffffffffffffe000000 +CT= 62526b78be79cb384633c91f83b4151b +TEST= 154 +PT= fffffffffffffffffffffffffc000000 +CT= 1f11d5d0355e0b556ccdb6c7f5083b4d +TEST= 155 +PT= fffffffffffffffffffffffff8000000 +CT= 220df19f85d69b1b562fa69a3c5beca5 +TEST= 156 +PT= fffffffffffffffffffffffff0000000 +CT= da86f292c6f41ea34fb2068df75ecc29 +TEST= 157 +PT= ffffffffffffffffffffffffe0000000 +CT= 2be1fae5048a25582a679ca10905eb80 +TEST= 158 +PT= ffffffffffffffffffffffffc0000000 +CT= e2775e4b59c1bc2e31a2078c11b5a08c +TEST= 159 +PT= ffffffffffffffffffffffff80000000 +CT= 649f1cddc3792b4638635a392bc9bade +TEST= 160 +PT= ffffffffffffffffffffffff00000000 +CT= 21d9ba49f276b45f11af8fc71a088e3d +TEST= 161 +PT= fffffffffffffffffffffffe00000000 +CT= 1ac1f7102c59933e8b2ddc3f14e94baa +TEST= 162 +PT= fffffffffffffffffffffffc00000000 +CT= e5c3b8e30fd2d8e6239b17b44bd23bbd +TEST= 163 +PT= fffffffffffffffffffffff800000000 +CT= 6f8ba6521152d31f2bada1843e26b973 +TEST= 164 +PT= fffffffffffffffffffffff000000000 +CT= 83a63402a77f9ad5c1e931a931ecd706 +TEST= 165 +PT= ffffffffffffffffffffffe000000000 +CT= 2bf27229901eb40f2df9d8398d1505ae +TEST= 166 +PT= ffffffffffffffffffffffc000000000 +CT= 7b8e7098e357ef71237d46d8b075b0f5 +TEST= 167 +PT= ffffffffffffffffffffff8000000000 +CT= 55cfb3fb6d75cad0445bbc8dafa25b0f +TEST= 168 +PT= ffffffffffffffffffffff0000000000 +CT= 145b60d6d0193c23f4221848a892d61a +TEST= 169 +PT= fffffffffffffffffffffe0000000000 +CT= 905b6267f1d6ab5320835a133f096f2a +TEST= 170 +PT= fffffffffffffffffffffc0000000000 +CT= 8f476cbff75c1f725ce18e4bbcd19b32 +TEST= 171 +PT= fffffffffffffffffffff80000000000 +CT= 9ad983f3bf651cd0393f0a73cccdea50 +TEST= 172 +PT= fffffffffffffffffffff00000000000 +CT= 3b271f8ab2e6e4a20ba8090f43ba78f3 +TEST= 173 +PT= ffffffffffffffffffffe00000000000 +CT= 39b333e8694f21546ad1edd9d87ed95b +TEST= 174 +PT= ffffffffffffffffffffc00000000000 +CT= 08b244ce7cbc8ee97fbba808cb146fda +TEST= 175 +PT= ffffffffffffffffffff800000000000 +CT= 4cc42fc1407b008fe350907c092e80ac +TEST= 176 +PT= ffffffffffffffffffff000000000000 +CT= 12e71214ae8e04f0bb63d7425c6f14d5 +TEST= 177 +PT= fffffffffffffffffffe000000000000 +CT= 4620a49bd967491561669ab25dce45f4 +TEST= 178 +PT= fffffffffffffffffffc000000000000 +CT= b95ba05b332da61ef63a2b31fcad9879 +TEST= 179 +PT= fffffffffffffffffff8000000000000 +CT= 0007e20b8298ec354f0f5fe7470f36bd +TEST= 180 +PT= fffffffffffffffffff0000000000000 +CT= d1c5f6399bf382502e385eee1474a869 +TEST= 181 +PT= ffffffffffffffffffe0000000000000 +CT= a013014d4ce8054cf2591d06f6f2f176 +TEST= 182 +PT= ffffffffffffffffffc0000000000000 +CT= 964153a83bf6989a4ba80daa91c3e081 +TEST= 183 +PT= ffffffffffffffffff80000000000000 +CT= 7d9fa6a57530d0f036fec31c230b0cc6 +TEST= 184 +PT= ffffffffffffffffff00000000000000 +CT= 76b5614a042707c98e2132e2e805fe63 +TEST= 185 +PT= fffffffffffffffffe00000000000000 +CT= 959971ce4134190563518e700b9874d1 +TEST= 186 +PT= fffffffffffffffffc00000000000000 +CT= 811441ce1d309eee7185e8c752c07557 +TEST= 187 +PT= fffffffffffffffff800000000000000 +CT= bc3594e865bcd0261b13202731f33580 +TEST= 188 +PT= fffffffffffffffff000000000000000 +CT= a37a5869b218a9f3a0868d19aea0ad6a +TEST= 189 +PT= ffffffffffffffffe000000000000000 +CT= a1b19beee4e117139f74b3c53fdcb875 +TEST= 190 +PT= ffffffffffffffffc000000000000000 +CT= 19f08e3420ee69b477ca1420281c4782 +TEST= 191 +PT= ffffffffffffffff8000000000000000 +CT= 77f392089042e478ac16c0c86a0b5db5 +TEST= 192 +PT= ffffffffffffffff0000000000000000 +CT= 9b58dbfd77fe5aca9cfc190cd1b82d19 +TEST= 193 +PT= fffffffffffffffe0000000000000000 +CT= faf82d178af25a9886a47e7f789b98d7 +TEST= 194 +PT= fffffffffffffffc0000000000000000 +CT= d8e2bb1ae8ee3dcf5bf7d6c38da82a1a +TEST= 195 +PT= fffffffffffffff80000000000000000 +CT= 1d7c0c4040b355b9d107a99325e3b050 +TEST= 196 +PT= fffffffffffffff00000000000000000 +CT= b1144ddfa75755213390e7c596660490 +TEST= 197 +PT= ffffffffffffffe00000000000000000 +CT= 768f520efe0f23e61d3ec8ad9ce91774 +TEST= 198 +PT= ffffffffffffffc00000000000000000 +CT= 56ede9dda3f6f141bff1757fa689c3e1 +TEST= 199 +PT= ffffffffffffff800000000000000000 +CT= 0d9ac756eb297695eed4d382eb126d26 +TEST= 200 +PT= ffffffffffffff000000000000000000 +CT= c0838d1a2b16a7c7f0dfcc433c399c33 +TEST= 201 +PT= fffffffffffffe000000000000000000 +CT= cc3526262b92f02edce548f716b9f45c +TEST= 202 +PT= fffffffffffffc000000000000000000 +CT= c090313eb98674f35f3123385fb95d4d +TEST= 203 +PT= fffffffffffff8000000000000000000 +CT= dd27cac6401a022e8f38f9f93e774417 +TEST= 204 +PT= fffffffffffff0000000000000000000 +CT= 4632154179a555c17ea604d0889fab14 +TEST= 205 +PT= ffffffffffffe0000000000000000000 +CT= a1853fe47fe29289d153161d06387d21 +TEST= 206 +PT= ffffffffffffc0000000000000000000 +CT= cd2b1fec11fd906c5c7630099443610a +TEST= 207 +PT= ffffffffffff80000000000000000000 +CT= b1d4efe40242f83e93b6c8d7efb5eae9 +TEST= 208 +PT= ffffffffffff00000000000000000000 +CT= ead731af4d3a2fe3b34bed047942a49f +TEST= 209 +PT= fffffffffffe00000000000000000000 +CT= 1a518dddaf9efa0d002cc58d107edfc8 +TEST= 210 +PT= fffffffffffc00000000000000000000 +CT= e67ae6426bf9526c972cff072b52252c +TEST= 211 +PT= fffffffffff800000000000000000000 +CT= 20ebc86f1304d272e2e207e59db639f0 +TEST= 212 +PT= fffffffffff000000000000000000000 +CT= 3f5f9106d0e52f973d4890e6f37e8a00 +TEST= 213 +PT= ffffffffffe000000000000000000000 +CT= ac9bd8e2530469134b9d5b065d4f565b +TEST= 214 +PT= ffffffffffc000000000000000000000 +CT= 2463531ab54d66955e73edc4cb8eaa45 +TEST= 215 +PT= ffffffffff8000000000000000000000 +CT= 48c7d0e80834ebdc35b6735f76b46c8b +TEST= 216 +PT= ffffffffff0000000000000000000000 +CT= f96b0c4a8bc6c86130289f60b43b8fba +TEST= 217 +PT= fffffffffe0000000000000000000000 +CT= 11a45530f624ff6f76a1b3826626ff7b +TEST= 218 +PT= fffffffffc0000000000000000000000 +CT= 49d541b2e74cfe73e6a8e8225f7bd449 +TEST= 219 +PT= fffffffff80000000000000000000000 +CT= 54fafe26e4287f17d1935f87eb9ade01 +TEST= 220 +PT= fffffffff00000000000000000000000 +CT= 9a682acf40be01f5b2a4193c9a82404d +TEST= 221 +PT= ffffffffe00000000000000000000000 +CT= 753665c4af1eff33aa8b628bf8741cfd +TEST= 222 +PT= ffffffffc00000000000000000000000 +CT= 9b471596dc69ae1586cee6158b0b0181 +TEST= 223 +PT= ffffffff800000000000000000000000 +CT= 42a1136e5f8d8d21d3101998642d573b +TEST= 224 +PT= ffffffff000000000000000000000000 +CT= 6a4981f2915e3e68af6c22385dd06756 +TEST= 225 +PT= fffffffe000000000000000000000000 +CT= 8d6a8afe55a6e481badae0d146f436db +TEST= 226 +PT= fffffffc000000000000000000000000 +CT= fbd6640c80245c2b805373f130703127 +TEST= 227 +PT= fffffff8000000000000000000000000 +CT= cf37cdaaa0d2d536c71857634c792064 +TEST= 228 +PT= fffffff0000000000000000000000000 +CT= 96f96e9d607f6615fc192061ee648b07 +TEST= 229 +PT= ffffffe0000000000000000000000000 +CT= abf4154a3375a1d3e6b1d454438f95a6 +TEST= 230 +PT= ffffffc0000000000000000000000000 +CT= 1f8eedea0f62a1406d58cfc3ecea72cf +TEST= 231 +PT= ffffff80000000000000000000000000 +CT= 36aff0ef7bf3280772cf4cac80a0d2b2 +TEST= 232 +PT= ffffff00000000000000000000000000 +CT= ac86bc606b6640c309e782f232bf367f +TEST= 233 +PT= fffffe00000000000000000000000000 +CT= 6ef4cc4de49b11065d7af2909854794a +TEST= 234 +PT= fffffc00000000000000000000000000 +CT= b1f4066e6f4f187dfe5f2ad1b17819d0 +TEST= 235 +PT= fffff800000000000000000000000000 +CT= d5e38bf15f16d90e3e214041d774daa8 +TEST= 236 +PT= fffff000000000000000000000000000 +CT= 3ee500c5c8d63479717163e55c5c4522 +TEST= 237 +PT= ffffe000000000000000000000000000 +CT= 2239455e7afe3b0616100288cc5a723b +TEST= 238 +PT= ffffc000000000000000000000000000 +CT= 59e858eaaa97fec38111275b6cf5abc0 +TEST= 239 +PT= ffff8000000000000000000000000000 +CT= 1fe6cc3c05965dc08eb0590c95ac71d0 +TEST= 240 +PT= ffff0000000000000000000000000000 +CT= 300ade92f88f48fa2df730ec16ef44cd +TEST= 241 +PT= fffe0000000000000000000000000000 +CT= 1569859ea6b7206c30bf4fd0cbfac33c +TEST= 242 +PT= fffc0000000000000000000000000000 +CT= dc8f0e4915fd81ba70a331310882f6da +TEST= 243 +PT= fff80000000000000000000000000000 +CT= 047bba83f7aa841731504e012208fc9e +TEST= 244 +PT= fff00000000000000000000000000000 +CT= c218faa16056bd0774c3e8d79c35a5e4 +TEST= 245 +PT= ffe00000000000000000000000000000 +CT= 0dc58a8d886623705aec15cb1e70dc0e +TEST= 246 +PT= ffc00000000000000000000000000000 +CT= fe1cffb83f45dcfb38b29be438dbd3ab +TEST= 247 +PT= ff800000000000000000000000000000 +CT= 8bcd40f94ebb63b9f7909676e667f1e7 +TEST= 248 +PT= ff000000000000000000000000000000 +CT= 49af6b372135acef10132e548f217b17 +TEST= 249 +PT= fe000000000000000000000000000000 +CT= 8092a4dcf2da7e77e93bdd371dfed82e +TEST= 250 +PT= fc000000000000000000000000000000 +CT= e74cd1c92f0919c35a0324123d6177d3 +TEST= 251 +PT= f8000000000000000000000000000000 +CT= 7818d800dcf6f4be1e0e94f403d1e4c2 +TEST= 252 +PT= f0000000000000000000000000000000 +CT= 7f2c5ece07a98d8bee13c51177395ff7 +TEST= 253 +PT= e0000000000000000000000000000000 +CT= 9b80eefb7ebe2d2b16247aa0efc72f5d +TEST= 254 +PT= c0000000000000000000000000000000 +CT= 0a6bdc6d4c1e6280301fd8e97ddbe601 +TEST= 255 +PT= 80000000000000000000000000000000 +CT= ddc6bf790c15760d8d9aeb6f9a75fd4e diff --git a/flint/test/testvals/ecbnt64.txt b/flint/test/testvals/ecbnt64.txt new file mode 100644 index 0000000..bfd625f --- /dev/null +++ b/flint/test/testvals/ecbnt64.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= a92732eb488d8bb98ecd8d95dc9c02e052f250ad369b3849 +TEST= 1 +PT= 000000000000000000000000000000000000000000000001 +CT= 697383c2e7b9854c70ce4744aedbbb0f92ba054533b3bd48 +TEST= 2 +PT= 000000000000000000000000000000000000000000000003 +CT= 7a2d98d9ceda482a1819236e55dba0f90adcd528a291c234 +TEST= 3 +PT= 000000000000000000000000000000000000000000000007 +CT= 00f2ab7ed0c4e1f008ad4515c1dd4cbc8ab50ce0df88d0c2 +TEST= 4 +PT= 00000000000000000000000000000000000000000000000f +CT= 77f2c5c5e2f578ba1b4aed7cbf9074b5a1017427dddf249a +TEST= 5 +PT= 00000000000000000000000000000000000000000000001f +CT= fdf06618b59d1b97980cdfabd2b1212ccad6ad440698ecf5 +TEST= 6 +PT= 00000000000000000000000000000000000000000000003f +CT= a85b978ee5d34b3ac5976dc2a583a384b0766ca80557469f +TEST= 7 +PT= 00000000000000000000000000000000000000000000007f +CT= 98144cd0af8db2c18df93c5719d291325ad17200138016dc +TEST= 8 +PT= 0000000000000000000000000000000000000000000000ff +CT= 53b06c080a2ef8df6a77e78167a95f90facc9da6335c5ed9 +TEST= 9 +PT= 0000000000000000000000000000000000000000000001ff +CT= c942006614dea8176c34285711ef92dc6eb1bc7538a5f080 +TEST= 10 +PT= 0000000000000000000000000000000000000000000003ff +CT= 999817bc8de29525ddc704d2f1693da67bc2eee7a0808d16 +TEST= 11 +PT= 0000000000000000000000000000000000000000000007ff +CT= c442e44ec4bd79696ce575d4ead9a845a4ed6baa9d3a3701 +TEST= 12 +PT= 000000000000000000000000000000000000000000000fff +CT= 5c7d33bde452a25cfc2935c6062053c52b4104c9d2913ab1 +TEST= 13 +PT= 000000000000000000000000000000000000000000001fff +CT= 92c2eb00fc31950f82c22538aa11f62fc74e26b304c7ac94 +TEST= 14 +PT= 000000000000000000000000000000000000000000003fff +CT= c5f11fafb7882fea0437842d6f595f1fe2f6735fc775e22c +TEST= 15 +PT= 000000000000000000000000000000000000000000007fff +CT= 06b2ec989b4dfaad1d99722929e529863433c09fcb43fbbf +TEST= 16 +PT= 00000000000000000000000000000000000000000000ffff +CT= efad810e6e9874cd53adc94c88def90cb2e9852865c45554 +TEST= 17 +PT= 00000000000000000000000000000000000000000001ffff +CT= 011979c8ea69112c8efafea1c98ecd44a75027b96a79991e +TEST= 18 +PT= 00000000000000000000000000000000000000000003ffff +CT= 8f4c841ec9d7c4ec4b5aa52fb781d3e425018abd7ab43b47 +TEST= 19 +PT= 00000000000000000000000000000000000000000007ffff +CT= 0e14febf052ce464e2fa2b59fe48329f3ad5a9d20e22fa78 +TEST= 20 +PT= 0000000000000000000000000000000000000000000fffff +CT= 9f590b43581ba5fca03fab76301e1139a3bae465dbc8c5a8 +TEST= 21 +PT= 0000000000000000000000000000000000000000001fffff +CT= 414daadadd4482e1c3ef4c265b4330c6ec5baecf8163b76e +TEST= 22 +PT= 0000000000000000000000000000000000000000003fffff +CT= 7dddcad2aadfc128fcc591f94c5c0675dccde97221f99dc6 +TEST= 23 +PT= 0000000000000000000000000000000000000000007fffff +CT= 5ca2ae7090a038fecc8c8212950b24e572a24c9500daa904 +TEST= 24 +PT= 000000000000000000000000000000000000000000ffffff +CT= 5dd7a99c48454e18f827e57e5f9bef952163e21df81c8abb +TEST= 25 +PT= 000000000000000000000000000000000000000001ffffff +CT= 7e89b81be17b4c655fedd3f2e2350fbfb5df6ad5dc658b38 +TEST= 26 +PT= 000000000000000000000000000000000000000003ffffff +CT= 2d2dc2be5b1e725f896ce21a3ab9127d38a546a0ba91274b +TEST= 27 +PT= 000000000000000000000000000000000000000007ffffff +CT= d72dc4ecd5c3daf7475a5878d5dc8768550993a9b163233c +TEST= 28 +PT= 00000000000000000000000000000000000000000fffffff +CT= ce2547276ed7bb8774ad4f5b5881783dc83fe118f863de1b +TEST= 29 +PT= 00000000000000000000000000000000000000001fffffff +CT= 81166ec3fa53c0184397e29a3f4677241e92cbfa5ebc3edb +TEST= 30 +PT= 00000000000000000000000000000000000000003fffffff +CT= 6a5f605167a3b55e2766b00cb149393a842acfb4c2351ba9 +TEST= 31 +PT= 00000000000000000000000000000000000000007fffffff +CT= e52615ff9a8c6729150ce3266b139248cebdc3fc421ae912 +TEST= 32 +PT= 0000000000000000000000000000000000000000ffffffff +CT= d6103cd9225517fe925f0f7c4f15ba2e0efc3eb785bbb240 +TEST= 33 +PT= 0000000000000000000000000000000000000001ffffffff +CT= fe172bccd06af001d06e3ac0b03b2d5fbc4b338075b07e03 +TEST= 34 +PT= 0000000000000000000000000000000000000003ffffffff +CT= a6a73b4bf46898b190845304e73cb94d19fd3dbc66cfc6c2 +TEST= 35 +PT= 0000000000000000000000000000000000000007ffffffff +CT= 0ee1dd2572af6d7bc1297ee9192707abc4e0d8b9b2bfae71 +TEST= 36 +PT= 000000000000000000000000000000000000000fffffffff +CT= 62829b38fb0d679f6e39f47f11e1e3d8a2514360e1d41825 +TEST= 37 +PT= 000000000000000000000000000000000000001fffffffff +CT= 6b879834e38eb31adf2010f9f5733558a042cac8bcae8297 +TEST= 38 +PT= 000000000000000000000000000000000000003fffffffff +CT= 7ace36476cf4e7373bcf03d468431c7f4409c0e74d5a545e +TEST= 39 +PT= 000000000000000000000000000000000000007fffffffff +CT= 0fb29fe81049f026696d0d934aa960fa7f7fc833cb5e7282 +TEST= 40 +PT= 00000000000000000000000000000000000000ffffffffff +CT= 0223183daa64eb5575e20e238c1da3e8c5b202412fa78a59 +TEST= 41 +PT= 00000000000000000000000000000000000001ffffffffff +CT= 5b7ec3bac1e5df9b474be441141f2eaf1c7c4f3045257a0e +TEST= 42 +PT= 00000000000000000000000000000000000003ffffffffff +CT= 3222cc92ccddaf12ac71a41bb685bd0cfaa326695b2e1d50 +TEST= 43 +PT= 00000000000000000000000000000000000007ffffffffff +CT= 53324b90db804c1543d0c9749eb5cd4f3d13df8de4808a4f +TEST= 44 +PT= 0000000000000000000000000000000000000fffffffffff +CT= eebd9059b400ed965b3cf4b1798204e94db9a8ffa6ba9c3f +TEST= 45 +PT= 0000000000000000000000000000000000001fffffffffff +CT= 308d5507e371a60f8d0b0373ea6eb1bd60095eb5bcb6c327 +TEST= 46 +PT= 0000000000000000000000000000000000003fffffffffff +CT= 3e258659e28b24ea927d94c93e31895497fbd3d3679244e3 +TEST= 47 +PT= 0000000000000000000000000000000000007fffffffffff +CT= 8eefaaf53eac7bc3153366cce0adecf4cf106209f6c9dec7 +TEST= 48 +PT= 000000000000000000000000000000000000ffffffffffff +CT= cdbb891681aa5f432ffa1ea0b9773d155ddd9e5518f9a331 +TEST= 49 +PT= 000000000000000000000000000000000001ffffffffffff +CT= 8fdf087cc9817ba91427310a39bfa63770ff5b31cf681d23 +TEST= 50 +PT= 000000000000000000000000000000000003ffffffffffff +CT= 6425e9ebf42c6ddb159fc5d83dd4fcfcf0d7a8b18f327ac8 +TEST= 51 +PT= 000000000000000000000000000000000007ffffffffffff +CT= eba179b42a7d98ea8e9b2b029de0e1e2b150b524556aead6 +TEST= 52 +PT= 00000000000000000000000000000000000fffffffffffff +CT= 620081b8fbe0ca72035ecdd288532be604fd36a60f097242 +TEST= 53 +PT= 00000000000000000000000000000000001fffffffffffff +CT= a8ad8c4102f57353e5c5d4b23d24f72c48f9caa7e609cbc0 +TEST= 54 +PT= 00000000000000000000000000000000003fffffffffffff +CT= 6eab1a9f33ab3deefd64135eadb7cdaec341c295879addea +TEST= 55 +PT= 00000000000000000000000000000000007fffffffffffff +CT= 5cf3c33878f56cd71cf3338ded1a31bddfe629837bcb9be5 +TEST= 56 +PT= 0000000000000000000000000000000000ffffffffffffff +CT= 05cb21de289dd38b45f06ecd1d44d427b3197126bdb4229a +TEST= 57 +PT= 0000000000000000000000000000000001ffffffffffffff +CT= 8fe177fde685666f3a9202bd69a1e80062387b63a06f6818 +TEST= 58 +PT= 0000000000000000000000000000000003ffffffffffffff +CT= b5cb9a3a75fb5040a8e0f6b7a597e7d38fadf38ae3de1735 +TEST= 59 +PT= 0000000000000000000000000000000007ffffffffffffff +CT= 6dfe22cc27cbbdc6a63f80f3e1a597293a5b81aeb911ddcc +TEST= 60 +PT= 000000000000000000000000000000000fffffffffffffff +CT= a7770647f6afefc1ab95d452f39cb8b3604dcd09890e46f4 +TEST= 61 +PT= 000000000000000000000000000000001fffffffffffffff +CT= 6e7857b1ce0c0c7f1373f75600571ab23420a697f85698af +TEST= 62 +PT= 000000000000000000000000000000003fffffffffffffff +CT= 70ecd5b55283e88f43d03a0194bcb24714edfaf1f2e71025 +TEST= 63 +PT= 000000000000000000000000000000007fffffffffffffff +CT= 647c1a5800294b6c861fa74a61d8dbd6713ebb26a2015179 +TEST= 64 +PT= 00000000000000000000000000000000ffffffffffffffff +CT= a54060ab227b0e8d83b87a94a4fcad094f8ec7a9b3ed4fb2 +TEST= 65 +PT= 00000000000000000000000000000001ffffffffffffffff +CT= a421928cec1dcbbf4baa884eb87a016f90287dbd2f2d3786 +TEST= 66 +PT= 00000000000000000000000000000003ffffffffffffffff +CT= dff8ac2124e1de28b20f7dd847a5efe876a98e41d7702581 +TEST= 67 +PT= 00000000000000000000000000000007ffffffffffffffff +CT= 834e0c3920d93705da5df0ab5e780f69e495087315387386 +TEST= 68 +PT= 0000000000000000000000000000000fffffffffffffffff +CT= 7d6a5d6f66ed656f7ea4784903e61ea4e68d2b196a94ffcf +TEST= 69 +PT= 0000000000000000000000000000001fffffffffffffffff +CT= d8e3f7f426eac0e2f45efb2b3fdf101459771cf4b1c5521e +TEST= 70 +PT= 0000000000000000000000000000003fffffffffffffffff +CT= e24c3ae2c29e9309f7f4f7fc9ce84ae6242b91a7c9f4059c +TEST= 71 +PT= 0000000000000000000000000000007fffffffffffffffff +CT= e169ca5421438113d66e8b9c337410a6745fa34d138117d8 +TEST= 72 +PT= 000000000000000000000000000000ffffffffffffffffff +CT= a5b73d5d134241bbe0eeb059f773785e80d00ce76e75ff7b +TEST= 73 +PT= 000000000000000000000000000001ffffffffffffffffff +CT= 790bb198ad0440add5a1f173c5ce95c8518a316a81ddcdd8 +TEST= 74 +PT= 000000000000000000000000000003ffffffffffffffffff +CT= 2c942cb312794d2742c7241af5e185d9ead5a465cc66cf15 +TEST= 75 +PT= 000000000000000000000000000007ffffffffffffffffff +CT= cd7453ad4e71a0270003ba542c3c6c585755d45e2378eb51 +TEST= 76 +PT= 00000000000000000000000000000fffffffffffffffffff +CT= 2f906d7adef717713dce724bbac2c17f86fb96678a9b10ef +TEST= 77 +PT= 00000000000000000000000000001fffffffffffffffffff +CT= 373f7302a0c08d67bb1b0efdfbdb671da6c286ffa996c054 +TEST= 78 +PT= 00000000000000000000000000003fffffffffffffffffff +CT= f75a0da2543eed7f0fee3c7f8b13dfce9e8643c33ec31f5b +TEST= 79 +PT= 00000000000000000000000000007fffffffffffffffffff +CT= 6654b580dafd66dd19d239a30daadbc01b2191fdd9743ca4 +TEST= 80 +PT= 0000000000000000000000000000ffffffffffffffffffff +CT= 8363ec4fbc1992517f0fbad3e3abc09cd606562017c4047b +TEST= 81 +PT= 0000000000000000000000000001ffffffffffffffffffff +CT= 867919b7fd3aa440b5d518bff2404218e589f2c4b13537ed +TEST= 82 +PT= 0000000000000000000000000003ffffffffffffffffffff +CT= ddddfa3b9978c21a68eebf59ef8bf9ed49e4fd81cba38e6f +TEST= 83 +PT= 0000000000000000000000000007ffffffffffffffffffff +CT= d8ecc291580f5b9ea98bce264a01b9272f12c2e13f9bbe75 +TEST= 84 +PT= 000000000000000000000000000fffffffffffffffffffff +CT= 32821cc746eda3c34964cf64796e1bcb2efab54e1c893fd6 +TEST= 85 +PT= 000000000000000000000000001fffffffffffffffffffff +CT= 80283a04a519ab42cf985cf23182acbd7acf4afcd29af528 +TEST= 86 +PT= 000000000000000000000000003fffffffffffffffffffff +CT= d4cd5f0d6d9453ca030ceac2b41cdda43dd80b746103957d +TEST= 87 +PT= 000000000000000000000000007fffffffffffffffffffff +CT= 0154f6bcafac23b6c21059bd7655be99e61b6b15933b12a1 +TEST= 88 +PT= 00000000000000000000000000ffffffffffffffffffffff +CT= ffb5a7a861ccf8a23f3247237ba1e30e299a08b6769cd058 +TEST= 89 +PT= 00000000000000000000000001ffffffffffffffffffffff +CT= 767a52fe3ea30d598f437dff89c53f6cd86a9ede14269912 +TEST= 90 +PT= 00000000000000000000000003ffffffffffffffffffffff +CT= ae19f7ccd75fe646199ff388e0c410db2d382cbb0c4fbe36 +TEST= 91 +PT= 00000000000000000000000007ffffffffffffffffffffff +CT= 99619847c2f838afd75d1095c78097982b2d0da5b03a1c99 +TEST= 92 +PT= 0000000000000000000000000fffffffffffffffffffffff +CT= ef600e74ebd496fce30a6d89bb8dabab796ab18a81419389 +TEST= 93 +PT= 0000000000000000000000001fffffffffffffffffffffff +CT= 83590b7d460d34405276865acf9850a7fe8c980b23e865aa +TEST= 94 +PT= 0000000000000000000000003fffffffffffffffffffffff +CT= ac23af8288e662b07c56f02da604fc249cfe7bc1406e9669 +TEST= 95 +PT= 0000000000000000000000007fffffffffffffffffffffff +CT= 509c7206b41dfbc1acc2a7fcdab8fbe86b159f251f2440fe +TEST= 96 +PT= 000000000000000000000000ffffffffffffffffffffffff +CT= 1c91c8048467155b6c55dcf820b09a6d11e8507fde10e6a9 +TEST= 97 +PT= 000000000000000000000001ffffffffffffffffffffffff +CT= f9f7671107ef979126f005bfed0e83aaabc1f33466334d90 +TEST= 98 +PT= 000000000000000000000003ffffffffffffffffffffffff +CT= 3d0fbc84e6336f3ef10aef4cc9e46fbe3c053cdaaca5ee7f +TEST= 99 +PT= 000000000000000000000007ffffffffffffffffffffffff +CT= 64966d805a34e45ba92e3e4a925d02c8b97ba36a3e009747 +TEST= 100 +PT= 00000000000000000000000fffffffffffffffffffffffff +CT= 3dd1344cd6d40f02ca639464dcf5a92d9678b809df6d47b5 +TEST= 101 +PT= 00000000000000000000001fffffffffffffffffffffffff +CT= 21ba337ed04b38ad971bf02772e3fef0becf9f919ec12818 +TEST= 102 +PT= 00000000000000000000003fffffffffffffffffffffffff +CT= dae88dfd7375015b929c5c3a7209cb5ea94bdd158b7d3f3d +TEST= 103 +PT= 00000000000000000000007fffffffffffffffffffffffff +CT= 4c523cdc58d5b473bcc5ee8f771f53b9783e093c47d632e4 +TEST= 104 +PT= 0000000000000000000000ffffffffffffffffffffffffff +CT= 29dad2be34db367ce0f6603848c52358bfcf49c7cbb77537 +TEST= 105 +PT= 0000000000000000000001ffffffffffffffffffffffffff +CT= 9c172d8c93bcb52b394b9bb0a0b8eb119a384a6517fec340 +TEST= 106 +PT= 0000000000000000000003ffffffffffffffffffffffffff +CT= 9d55a53c4d1064b5ede6bf380c21727a74019646aa4edb8e +TEST= 107 +PT= 0000000000000000000007ffffffffffffffffffffffffff +CT= 07e164cf4cf6d05310b5fc98bef8d3c3db47ec16f2d59155 +TEST= 108 +PT= 000000000000000000000fffffffffffffffffffffffffff +CT= d291cb086a5a0fcb70f24a24798fb3435c2d50b42dc7e060 +TEST= 109 +PT= 000000000000000000001fffffffffffffffffffffffffff +CT= 0718a0c16bad75400ab81e9d42d03b6b1f3b8a6d5a1900a3 +TEST= 110 +PT= 000000000000000000003fffffffffffffffffffffffffff +CT= 5615da4bb81be66ebc099fb60a44a3d7d299c4d325b5ee3c +TEST= 111 +PT= 000000000000000000007fffffffffffffffffffffffffff +CT= 3d81d75767b3f99384c68e3714559700c4cd8a2621ad0a64 +TEST= 112 +PT= 00000000000000000000ffffffffffffffffffffffffffff +CT= c69bd29501b820370d63d00503497f976fbd253293f8dad2 +TEST= 113 +PT= 00000000000000000001ffffffffffffffffffffffffffff +CT= ecf402db02794d5d7830736a247999c7756e2064c370396a +TEST= 114 +PT= 00000000000000000003ffffffffffffffffffffffffffff +CT= 57a0c4a54fdaaecb22d00d28e094c816db7e11d8d0acdf52 +TEST= 115 +PT= 00000000000000000007ffffffffffffffffffffffffffff +CT= 79c8008d7a53fb8171f518accf3968d680c35193b89a5db3 +TEST= 116 +PT= 0000000000000000000fffffffffffffffffffffffffffff +CT= 3eda62ef44b3d32fe2be6ac6ead95ff0acbbb00977fd0b63 +TEST= 117 +PT= 0000000000000000001fffffffffffffffffffffffffffff +CT= 9886b4098aad98b8d970fb6a139e06bd2ca2e5317be5eefe +TEST= 118 +PT= 0000000000000000003fffffffffffffffffffffffffffff +CT= 50c546623a2bd6ecd12dda0679ecd3119d946ede52a1e6ad +TEST= 119 +PT= 0000000000000000007fffffffffffffffffffffffffffff +CT= 0e53dc29d1271ae892295a20b5f7c15534df8b5ef8d60884 +TEST= 120 +PT= 000000000000000000ffffffffffffffffffffffffffffff +CT= 23c897194b3a10cedd9752f188acec5f643f14066f8e9c93 +TEST= 121 +PT= 000000000000000001ffffffffffffffffffffffffffffff +CT= ab34c15e58b3cc144344147716e78fcd1c23b99a2db8f475 +TEST= 122 +PT= 000000000000000003ffffffffffffffffffffffffffffff +CT= a2ebd1cfba6fb491b4003900bf82942ba318293a4404358d +TEST= 123 +PT= 000000000000000007ffffffffffffffffffffffffffffff +CT= bd0fa60c98fc90cd7c8251043a2d4b383e0293a0342c68f9 +TEST= 124 +PT= 00000000000000000fffffffffffffffffffffffffffffff +CT= be670d45681e2b811a259fb8d52e747e469bba98f762eca8 +TEST= 125 +PT= 00000000000000001fffffffffffffffffffffffffffffff +CT= ae8b8d38e780d032d361639a1674089b35957402b80629f1 +TEST= 126 +PT= 00000000000000003fffffffffffffffffffffffffffffff +CT= c336379f41d4d189e8586925a90b95f8e427a5bdf64f8261 +TEST= 127 +PT= 00000000000000007fffffffffffffffffffffffffffffff +CT= fb86a79cddeefa83bbdfbfec9f07cbc615deb1d3e43f1685 +TEST= 128 +PT= 0000000000000000ffffffffffffffffffffffffffffffff +CT= 2a2203247656c376d6661a6d646bd05dac152581671e1032 +TEST= 129 +PT= 0000000000000001ffffffffffffffffffffffffffffffff +CT= 93f179296b10ffbbe6cca79769fbbde0f70517a936a5f33e +TEST= 130 +PT= 0000000000000003ffffffffffffffffffffffffffffffff +CT= cdaa11847a12acac8c0cf4a498558879cff458d68af92e91 +TEST= 131 +PT= 0000000000000007ffffffffffffffffffffffffffffffff +CT= ebc62523c4b8e2abfa0ed2cf151fc0404ea136b8df016166 +TEST= 132 +PT= 000000000000000fffffffffffffffffffffffffffffffff +CT= 5e26185f5070fada3fa4ee42b416ea62f3804c697c955a53 +TEST= 133 +PT= 000000000000001fffffffffffffffffffffffffffffffff +CT= ab0839ec7ae65633c95247692b40d988b1fae1ba24797a37 +TEST= 134 +PT= 000000000000003fffffffffffffffffffffffffffffffff +CT= da9d7e4c0dce0fcb63ac880e2c30f4146633874625a88102 +TEST= 135 +PT= 000000000000007fffffffffffffffffffffffffffffffff +CT= 2872191d30446b6498cbb3193545832cf4b895fe40ca48a0 +TEST= 136 +PT= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 5a30909b7af368e61c9613e15200eb65c1a1b16416940856 +TEST= 137 +PT= 00000000000001ffffffffffffffffffffffffffffffffff +CT= ba284cb734d19b3209e3d0d08473d8a55ea95b3432ae53be +TEST= 138 +PT= 00000000000003ffffffffffffffffffffffffffffffffff +CT= 8643399de1e59e85d22d716f5a79eae0835b40e5ce8f8996 +TEST= 139 +PT= 00000000000007ffffffffffffffffffffffffffffffffff +CT= 896171761b0567f5d20504f53590d5e53f72ee20b1e5258b +TEST= 140 +PT= 0000000000000fffffffffffffffffffffffffffffffffff +CT= 71cfe7fdd0d2c8f3a966d77de9bb041e694dce36c85f88a8 +TEST= 141 +PT= 0000000000001fffffffffffffffffffffffffffffffffff +CT= 1bee7f90f0eb37948738cd6a574ffa1f57aab2a4fe783dbf +TEST= 142 +PT= 0000000000003fffffffffffffffffffffffffffffffffff +CT= cdb28e9fb202bebfc3020024e0c0ff6ef68e43f0e186ee86 +TEST= 143 +PT= 0000000000007fffffffffffffffffffffffffffffffffff +CT= ea3d5baee66eca638fa68b4cea61f4b1e66e44ea60761063 +TEST= 144 +PT= 000000000000ffffffffffffffffffffffffffffffffffff +CT= 8a8c3e7f973b8b2cfcb6de071480763129b124430f53d5d8 +TEST= 145 +PT= 000000000001ffffffffffffffffffffffffffffffffffff +CT= 4b2c8153295cde464902c153ebc9037248ed2c7f98b3d485 +TEST= 146 +PT= 000000000003ffffffffffffffffffffffffffffffffffff +CT= d0115f4029ac17e1d5ffb160654329d5e58ad6fdd27b62e6 +TEST= 147 +PT= 000000000007ffffffffffffffffffffffffffffffffffff +CT= 6e86e18bc356843a04339a4d88fee986c6ade09efbdf11ba +TEST= 148 +PT= 00000000000fffffffffffffffffffffffffffffffffffff +CT= 14958daafb3d0b68b034739f0650491f9f0770f427c08ae9 +TEST= 149 +PT= 00000000001fffffffffffffffffffffffffffffffffffff +CT= b7f964b864b4d2bd43c7ae87fc7bd886ccaa061ff30ef4b1 +TEST= 150 +PT= 00000000003fffffffffffffffffffffffffffffffffffff +CT= 9bc2aec9e8a218cfb1305864476b4946b341e695e120d89e +TEST= 151 +PT= 00000000007fffffffffffffffffffffffffffffffffffff +CT= fc83f80e8a6794c5e9a5a4b541bd33d582521fd4fdb06018 +TEST= 152 +PT= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= 6d729faf63b175e97330c002fa17fa7e9e03a59072f05cff +TEST= 153 +PT= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= d1254bcc957af5dc082763d9ba806c9a82dddf79217ebe7d +TEST= 154 +PT= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= b74e8d22a64f79bf48febfd29b611716de1d0b9d0a4fb148 +TEST= 155 +PT= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= bfe4ae1315777d866873b4dd0008836aa01e3c30d94f1c3a +TEST= 156 +PT= 000000000fffffffffffffffffffffffffffffffffffffff +CT= 1f741c58086d2caf14ebc9f6ed4512cb9955c3f528860bac +TEST= 157 +PT= 000000001fffffffffffffffffffffffffffffffffffffff +CT= 6b1e0d16628154812beee119a841dbc08e472d8ed79cec67 +TEST= 158 +PT= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 7dc7a202269f32408f7430f1a25888fc31511e1f06652704 +TEST= 159 +PT= 000000007fffffffffffffffffffffffffffffffffffffff +CT= dfa0fe859417640ed61ac5fadd2a07f69016722b6d285ebc +TEST= 160 +PT= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= 79265196377e5e6def696cf54548901166e52dd58c6a6587 +TEST= 161 +PT= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= 2e060f3e7d1a7bd75ae840e1bac10f24c89eb90b9ee3a27d +TEST= 162 +PT= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= e1573aa61df369dff6d1be882c76b6efe9cb99b49143f17b +TEST= 163 +PT= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= 361327bc569f29cf8cf3acac1bc3548669af4f38e605d18b +TEST= 164 +PT= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 420ecd48a94b2a4810f5018f5f10a1fad1ca351bced6699a +TEST= 165 +PT= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= b778ad8279701b54aaa853b606b714304262d9ea35a58d35 +TEST= 166 +PT= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= 6d291914d3df5bf04e571b105cdf1acc71dc1cd05ab8b56a +TEST= 167 +PT= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= 0644aa6858d9a468a1bb11f8a3e80172e084164580689743 +TEST= 168 +PT= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= a6ae82f2d295e075aea0f80656ec8bf70a81c289b8264f28 +TEST= 169 +PT= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= 09428d14885c2baf0b6ea59ff35ae25d13db9defdbede3f9 +TEST= 170 +PT= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= 8093bfeb4a9ac07f5d4e30e5a841bcf84bec6d838ac50275 +TEST= 171 +PT= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= b6663b9a62becf1b5a9f3e90ec27f1f2e99d28af79048c8e +TEST= 172 +PT= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= 84b6f302364ade65b5f3f4513be030c55e44cddfe95fbfcf +TEST= 173 +PT= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= 20dcdbc2bfa5f6f374d329eb6ff10f75de733fe7992232e8 +TEST= 174 +PT= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= 563bc91dc944f8a493aa5273976117931eab75c301630509 +TEST= 175 +PT= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 14170e99272b206ecc31a642799385635026522c3e4c69fe +TEST= 176 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= 400910a6a60c8382a29e24674444f04029a4d06c781b2a40 +TEST= 177 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= 360af8a0b789d52570fe8f8aab88ed3cf205c8287cd5c0ae +TEST= 178 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= c704c85f151da96968e41f1a03293ae6b4134532a81c318b +TEST= 179 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= 4783e072aab229782152b43cf934c463857fdb88d4fccd4d +TEST= 180 +PT= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= 684ff9cd9984c6a2f231537c5d14f2c4bb1ab7bf7410f893 +TEST= 181 +PT= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= 2cfab1f259b40fd1739c75d886e45d0a28764c80196a20bd +TEST= 182 +PT= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= 7d38e31653009c7919b826d311ad3e88e3ef0b70248e4254 +TEST= 183 +PT= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= 582ef7509789b36861d03f58f5b032c0467af0c19239db62 +TEST= 184 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 509f4a07da51e48c66c2b0f0e169d2b50df33363c6e554c2 +TEST= 185 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= 773822eb1071701e9d13d7dcafa377b399f7da1029195bc9 +TEST= 186 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= 7fb26a3b268f28699c5bf60a25d25b5ebe0b2bd3fb9e48bd +TEST= 187 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= b01665e963481a982fe1863388846d99aeb88d39f8c06fab +TEST= 188 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= 23043daee444e0911e63242fecd3960a314f1fcbcc437673 +TEST= 189 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= ebfed08833f9bed902fd412692e662aa982804e67cdef5ab +TEST= 190 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= 4c8efb38a97d1358e4dc869293640c5a5e81d49e56b54277 +TEST= 191 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= 28f87b2dee5f9a281ac177f438a01840a428e01c065c098e +TEST= 192 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= d2772513d52511691bd64fa20d8973bb262d2fdeef3af15e +TEST= 193 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= ac317d04d27563e3f6cc905cac477e6b8930542cf62e4de5 +TEST= 194 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= 7a9db57d2546f4367708b4b1915585b55a93d5f35d31918f +TEST= 195 +PT= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= cf77e819a6ac479d90adc46380e2aeae4e28de8411d37d91 +TEST= 196 +PT= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 5b14e2e45ae3f6ba6e10cc6d892cef9f510be83d4da1581f +TEST= 197 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= a4b9c68ba6f64545429b0a6ab9d33dad12293999da954e04 +TEST= 198 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 1d1bdfbba70bee057f58cbe0b37f7c76fa145cb576696987 +TEST= 199 +PT= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 047abbbf9d6645dde9db85dec292c6f297a43117d66603c4 +TEST= 200 +PT= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 6f2fc4e4a8a2cc4a476eb0dbacadc0853f82be4cbd963741 +TEST= 201 +PT= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 1317de9eef9754b058f5713c62d7e4274296c56fd6fa392b +TEST= 202 +PT= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= dff1f8068d6338dca2748e46dfb58d5eee08208d27dab24e +TEST= 203 +PT= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= 331284fedf2ca8ecffc35ec6ac49013a3d0ffc4c10e5572e +TEST= 204 +PT= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= a756c438732cacb36a94d4613d1e46ce645ac725030821d7 +TEST= 205 +PT= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 5ce83e0ffe6472f8b5b075614659b734fd01d7c063b53ffa +TEST= 206 +PT= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 65a596a8ea4208ed87dc38579c4d0e363a0ab473de3d6fcc +TEST= 207 +PT= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= c9d81a682a2edc3dc972fb0ce5f884fdcf260e7a622d6c17 +TEST= 208 +PT= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 0f874ce0f7a73ade56343a3ff5817d742f5d51fcf2e8d487 +TEST= 209 +PT= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= d7d1e0d920a4e46d003ef52c67b6125e2361dbe21111e02b +TEST= 210 +PT= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 0c237690d22e05743636557f7f78bcb2c9011dbfe0b05b7d +TEST= 211 +PT= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= 4e83a72a24d5fcc0923751d41085db5a7c0b12cd9fb98357 +TEST= 212 +PT= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= c9bdec8481d894f916286d1ac9ef3f45ef559eacde92f78a +TEST= 213 +PT= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 5d9926de5d0b91aeee3c1f24eb84fa3af855d9ab66b82bd3 +TEST= 214 +PT= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 5d0266b2a48ed2a9aa885f605fb3125ce88774460a852fd6 +TEST= 215 +PT= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= b315cd1e7d3e191581182dc335754c4e2aa4ce1cce064d7d +TEST= 216 +PT= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= 0bf3a0a830b9659a02d99e02f39f2ac7e8dc0fa0fb8e7457 +TEST= 217 +PT= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 73356c6b738a4ea57b14add42a7fdc2ee0ba5e5d524f91c9 +TEST= 218 +PT= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= ca2aad55968b08489d54ad0b5ab245e80bf8571308c343f2 +TEST= 219 +PT= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 95948ff3b482ccf783a5d4f5f5c5b6507591db810e4b91f1 +TEST= 220 +PT= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= 95de041a6340f14d797774561384d73cc917b0b71e3b57dd +TEST= 221 +PT= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= e759da6d7dae1123fb5473f1d2d6f8e0ce2eb793a2f07807 +TEST= 222 +PT= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= a4c815cfc0f7942db685a2476483c7ec5e49430c2ac68370 +TEST= 223 +PT= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= 0291f3b54952ca14a433cc69944568b065d45dcb64cac219 +TEST= 224 +PT= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= 0de7e04a883ef1a4d886615d946f57aa9e59e47f32462e21 +TEST= 225 +PT= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= d4ab60aeb553dfa75dea6a31044f8c43f524bc7d9af06345 +TEST= 226 +PT= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= 19a2cc1ea5c939fb7f622e387fb2d0c04f534672b7a7c592 +TEST= 227 +PT= fffffffffffffffffffffffffffffffffffffff800000000 +CT= 4b3dbe7dd952265dd63b46dd1d74b7f298f09497b2d3c067 +TEST= 228 +PT= fffffffffffffffffffffffffffffffffffffff000000000 +CT= 45f2f35062800990e3a27b60c396cbe47f01a3a2133a6d6d +TEST= 229 +PT= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= 4ccc6118b40dc7171348e8bfc9ea7b94712e6ae27de3c365 +TEST= 230 +PT= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= c9224e7fe2ac68ea3f9b37e5e79a75005e57e577dd8bd63d +TEST= 231 +PT= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 9212d2cc423cb2c29a05abd746f2f8ceab66868ae240f465 +TEST= 232 +PT= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= b33382ab5bd921466ae1aecf356de386ee41cf27d1817435 +TEST= 233 +PT= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= dcb421dfc56885b80b5ac09de17ba9306c475a5efb311e52 +TEST= 234 +PT= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= f4d899b9ad90a268763963f762e5c86b59aea1823c5619ee +TEST= 235 +PT= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 185ed6350ade422fb60815744382e23f52f9a9b42f05a240 +TEST= 236 +PT= fffffffffffffffffffffffffffffffffffff00000000000 +CT= 25f3fd0c77622423ec2f05f999982fb05d53b6eb3547ce60 +TEST= 237 +PT= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= 37cbf2223a1dcf51973a3e09bc04e43c0559b568b8bc8391 +TEST= 238 +PT= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= 082ba11481f0444b417273560091868886b22283699496e4 +TEST= 239 +PT= ffffffffffffffffffffffffffffffffffff800000000000 +CT= 3d9364833e9329fa67e76e450047c57f04a1e4720d6a4140 +TEST= 240 +PT= ffffffffffffffffffffffffffffffffffff000000000000 +CT= 7f82f1dbf458446bf1156e90c5a7957d6792d43a846e43b2 +TEST= 241 +PT= fffffffffffffffffffffffffffffffffffe000000000000 +CT= 5d44395bea933eebeac04452a529c5f4b587d01d5319f7ae +TEST= 242 +PT= fffffffffffffffffffffffffffffffffffc000000000000 +CT= dfc5fd2b7a73c8e8b977ae054714ca57e493a01c19c86330 +TEST= 243 +PT= fffffffffffffffffffffffffffffffffff8000000000000 +CT= 75a20cd0fc7c9ee76a8f5b44197bd11de71f59061991447c +TEST= 244 +PT= fffffffffffffffffffffffffffffffffff0000000000000 +CT= 10518105a61f3b55f896653035bb79b72547d427e36ba8fb +TEST= 245 +PT= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 248fac51e6ac75c70e784f86b23006f30d4ddc8f773ed677 +TEST= 246 +PT= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= d49f03683b3d94291b9ea63deb9e8bde18850de7bd25635e +TEST= 247 +PT= ffffffffffffffffffffffffffffffffff80000000000000 +CT= e3fa938241ef609a230b0989582e34a5c7382eebcbe6af2a +TEST= 248 +PT= ffffffffffffffffffffffffffffffffff00000000000000 +CT= f16b56ae18fe78de60b4dc9289d8385267f4c6ae754d7515 +TEST= 249 +PT= fffffffffffffffffffffffffffffffffe00000000000000 +CT= 43f55a218f40f1b9ee897a5c6cc63604dceb01a371898d09 +TEST= 250 +PT= fffffffffffffffffffffffffffffffffc00000000000000 +CT= a5158efedad6728bd90461154d3cb007fbb3743e2c4c5fee +TEST= 251 +PT= fffffffffffffffffffffffffffffffff800000000000000 +CT= 442c9d70c40842432173f092070884beb7f841717c4e00f9 +TEST= 252 +PT= fffffffffffffffffffffffffffffffff000000000000000 +CT= 3068ff6ee705f7563fd59c40093da5bf164bf5f603ac3682 +TEST= 253 +PT= ffffffffffffffffffffffffffffffffe000000000000000 +CT= 919b234797b7095abebaaa1e738a2b08c44c6128afc9b377 +TEST= 254 +PT= ffffffffffffffffffffffffffffffffc000000000000000 +CT= a8958c769f6fc8e8a79412db8991191238daa3674526886c +TEST= 255 +PT= ffffffffffffffffffffffffffffffff8000000000000000 +CT= d9ce8df14223cb10dbf482f4506d46115f530c677214f13b +TEST= 256 +PT= ffffffffffffffffffffffffffffffff0000000000000000 +CT= 50495a59a8acd6708856dacaf52a5196a5114f0b5a67821f +TEST= 257 +PT= fffffffffffffffffffffffffffffffe0000000000000000 +CT= 3979fc9818f6497674026bd9650e2ea77df1915773680271 +TEST= 258 +PT= fffffffffffffffffffffffffffffffc0000000000000000 +CT= 6d3d9fc8d41a837b8a0a0c972e74b4c4007b39594cd1d1f7 +TEST= 259 +PT= fffffffffffffffffffffffffffffff80000000000000000 +CT= 919f9a2a5dd7a4eb3793eece1f9bb2265ceb885f498585e9 +TEST= 260 +PT= fffffffffffffffffffffffffffffff00000000000000000 +CT= 79e2834f415bc3f930208779038cdf6cb4df7d0160b604df +TEST= 261 +PT= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 4baea9c3531856d97f81dec91380da2ec9637bb21a8459d1 +TEST= 262 +PT= ffffffffffffffffffffffffffffffc00000000000000000 +CT= 190a028ff560a5044e3df50c43d677d47f1c77aaea1515ff +TEST= 263 +PT= ffffffffffffffffffffffffffffff800000000000000000 +CT= 319c0ea0a67014a156ff46adf3ab502345756a0657e2fda8 +TEST= 264 +PT= ffffffffffffffffffffffffffffff000000000000000000 +CT= de2eb5f792f51432616bad739ce39687bef8df24dd885b1b +TEST= 265 +PT= fffffffffffffffffffffffffffffe000000000000000000 +CT= cef0400f6200c7090111057fa7e14d7bfaef586b4dfea85c +TEST= 266 +PT= fffffffffffffffffffffffffffffc000000000000000000 +CT= f018f24c31e4e2cfe52f2207e7e56af2fecf46737ffbcfbe +TEST= 267 +PT= fffffffffffffffffffffffffffff8000000000000000000 +CT= b4f578bd9b0d08d9311314c4ae2336e24244b23ce033ad4f +TEST= 268 +PT= fffffffffffffffffffffffffffff0000000000000000000 +CT= dd1c77a439cde61859a2dfb993af0a96afb6aa4ae9fee6a0 +TEST= 269 +PT= ffffffffffffffffffffffffffffe0000000000000000000 +CT= 8365aa9d9cb58f29caaa04d609ace163a301847f5129c816 +TEST= 270 +PT= ffffffffffffffffffffffffffffc0000000000000000000 +CT= 696dd7f20d58f687a14655807a54ab9591b4b767c960249e +TEST= 271 +PT= ffffffffffffffffffffffffffff80000000000000000000 +CT= 70972cbb79f18c8bc7bcc8251308ca8e93de90188b286d4e +TEST= 272 +PT= ffffffffffffffffffffffffffff00000000000000000000 +CT= 0a4a40cbfa277793c4544cb1adf0fa2c845c18f05d400fe0 +TEST= 273 +PT= fffffffffffffffffffffffffffe00000000000000000000 +CT= 1765870148fce39a7f5a288393192a05990b7dd664eb14d6 +TEST= 274 +PT= fffffffffffffffffffffffffffc00000000000000000000 +CT= 009f4c68015d46342e2cb607f3f1f1a2dd6b25e0893677e2 +TEST= 275 +PT= fffffffffffffffffffffffffff800000000000000000000 +CT= 2e600f5d7c3b8f8bfc1661b89b670dc398a228b45dedeec3 +TEST= 276 +PT= fffffffffffffffffffffffffff000000000000000000000 +CT= c98e3ea4d5820c44d12de66abb0893472e347fb93dc3372c +TEST= 277 +PT= ffffffffffffffffffffffffffe000000000000000000000 +CT= 0d3532d12802c00ea3ff025a149c509614f0f444fa76c2fb +TEST= 278 +PT= ffffffffffffffffffffffffffc000000000000000000000 +CT= ae5682825048b94bcf51a8bf3e9c7528a20977af62245c52 +TEST= 279 +PT= ffffffffffffffffffffffffff8000000000000000000000 +CT= ba662f9c689269f69495211d3bb49aa19270bc5e8ab5cd37 +TEST= 280 +PT= ffffffffffffffffffffffffff0000000000000000000000 +CT= 8e9c8d3525d472ed3c5f5253d21c910712d530fafa87d7d2 +TEST= 281 +PT= fffffffffffffffffffffffffe0000000000000000000000 +CT= 3c233453bd0d2585d123f9b21eda923b65f4f46ac392377d +TEST= 282 +PT= fffffffffffffffffffffffffc0000000000000000000000 +CT= c8622daf93747564c94633f47e8c0dc236477406c622edd7 +TEST= 283 +PT= fffffffffffffffffffffffff80000000000000000000000 +CT= f5bff985b187547df3d0b0362d38622e681a5f3b33908583 +TEST= 284 +PT= fffffffffffffffffffffffff00000000000000000000000 +CT= 103d41073a175e47aad7a39cd80c93a5e2ae9d172c48e761 +TEST= 285 +PT= ffffffffffffffffffffffffe00000000000000000000000 +CT= 60ffde24caff60fe51a430418a8d00efeea9507d3143a14f +TEST= 286 +PT= ffffffffffffffffffffffffc00000000000000000000000 +CT= f0a25e437466e3d50b41bae65e4e62e6ba18189a676834b9 +TEST= 287 +PT= ffffffffffffffffffffffff800000000000000000000000 +CT= ead9683958edf426766b20d82f09b9dcaf2acd3aff1ba38c +TEST= 288 +PT= ffffffffffffffffffffffff000000000000000000000000 +CT= 3c36632c9e30d61a509cabcb01b2d621e3c88344aac33678 +TEST= 289 +PT= fffffffffffffffffffffffe000000000000000000000000 +CT= 161921388615b0d30843249745e5457c8611087dc2267a54 +TEST= 290 +PT= fffffffffffffffffffffffc000000000000000000000000 +CT= 24b4fe2e74d05080662caa2460de264e43f40e895906bd0b +TEST= 291 +PT= fffffffffffffffffffffff8000000000000000000000000 +CT= 3b7b7419c47f34fd339dd503d2f75cd9037dd004e4e14843 +TEST= 292 +PT= fffffffffffffffffffffff0000000000000000000000000 +CT= 86ef108edf2e1ef74fdad03d986678d293a036c01871bc69 +TEST= 293 +PT= ffffffffffffffffffffffe0000000000000000000000000 +CT= a9e5185b8096d3b94dde743fcec977d84e9479d0a853f689 +TEST= 294 +PT= ffffffffffffffffffffffc0000000000000000000000000 +CT= 045f7da42122bb3e31fce80f84f46f56abd2f1ba44fd2df5 +TEST= 295 +PT= ffffffffffffffffffffff80000000000000000000000000 +CT= c1d93dfb5df2600f75bb9269d3637d297a377931c0532644 +TEST= 296 +PT= ffffffffffffffffffffff00000000000000000000000000 +CT= 63d9a36b78267a6354e2802655750ef2d36f454294ca34a2 +TEST= 297 +PT= fffffffffffffffffffffe00000000000000000000000000 +CT= b798664932bf87abe04f58a4e1a4ada4cba9ed4d774b4635 +TEST= 298 +PT= fffffffffffffffffffffc00000000000000000000000000 +CT= f9f390d06ff4b9fc92dc19e62f4a3deda3a996e7948d2181 +TEST= 299 +PT= fffffffffffffffffffff800000000000000000000000000 +CT= b4cadcbdc136d0347d7c9f03c3c283a888006414f6c917c8 +TEST= 300 +PT= fffffffffffffffffffff000000000000000000000000000 +CT= 17ffdb94c91535cab48968dbeca966f4c7e423e403b7af8e +TEST= 301 +PT= ffffffffffffffffffffe000000000000000000000000000 +CT= 7316a8811371e947a34760a4ae17d0fcae452ed2147628e7 +TEST= 302 +PT= ffffffffffffffffffffc000000000000000000000000000 +CT= 8679c75fef92ff32e82dda2cc8179412e5c2218da5c39c70 +TEST= 303 +PT= ffffffffffffffffffff8000000000000000000000000000 +CT= 1342f6c658a4839c5302bc1d2aa1195573df9cf45c0f914e +TEST= 304 +PT= ffffffffffffffffffff0000000000000000000000000000 +CT= 95f1fb0e96c65cbf6592c3aad7fa33996a61f4ac7c7756fc +TEST= 305 +PT= fffffffffffffffffffe0000000000000000000000000000 +CT= 17008451c3f2235613d11eb15f3d52676fcf75cecdd25ffd +TEST= 306 +PT= fffffffffffffffffffc0000000000000000000000000000 +CT= 5a7e438ffc8c900e9ab0ee8c625cf686b010447678c85406 +TEST= 307 +PT= fffffffffffffffffff80000000000000000000000000000 +CT= 861bd6bffbf33a3af36cb1b688a545bf2a809bd2a456e1d1 +TEST= 308 +PT= fffffffffffffffffff00000000000000000000000000000 +CT= 65a33403ce7560d793387a1ff7dabbaa9d2f2686f45a9c38 +TEST= 309 +PT= ffffffffffffffffffe00000000000000000000000000000 +CT= 2b6d8d0f31bce1b343fd8181b8cee7cc0cbdcc94fd3f91a6 +TEST= 310 +PT= ffffffffffffffffffc00000000000000000000000000000 +CT= cc0f901b4e6a8467ff8c260cc1cc3a2df77acb3659a0f99d +TEST= 311 +PT= ffffffffffffffffff800000000000000000000000000000 +CT= f8fcc0f6da1c4a9f59699f7115704cdc0a704e578662c49c +TEST= 312 +PT= ffffffffffffffffff000000000000000000000000000000 +CT= ac29bfdbe80edce394c402244aeb35073baf032cafde8980 +TEST= 313 +PT= fffffffffffffffffe000000000000000000000000000000 +CT= 0414029801ba6f9cb299e7ffcd39137f8f101d867f7f7960 +TEST= 314 +PT= fffffffffffffffffc000000000000000000000000000000 +CT= e9eb96944041dbf2767f97f67680132a4a5c791fb4a2accb +TEST= 315 +PT= fffffffffffffffff8000000000000000000000000000000 +CT= 6f8eb2b7981a27067c63f101f822aea20b48a069e78d6b91 +TEST= 316 +PT= fffffffffffffffff0000000000000000000000000000000 +CT= c7255d35e700c4af3be866d667abcfd507e279edabe500bc +TEST= 317 +PT= ffffffffffffffffe0000000000000000000000000000000 +CT= 3f1d80b25eedf78310727dbfa09041ac2c0063c4022202c7 +TEST= 318 +PT= ffffffffffffffffc0000000000000000000000000000000 +CT= 7b9f64bb6073a0062007cfef689c0cc8b4c0fb5ce44b8265 +TEST= 319 +PT= ffffffffffffffff80000000000000000000000000000000 +CT= 6f7c8669ce7206c0e0fd50415b59b43e3e01c71fb028aed1 +TEST= 320 +PT= ffffffffffffffff00000000000000000000000000000000 +CT= 754bc423f66db0f50b1a2cf6626f88cf077991afd960920c +TEST= 321 +PT= fffffffffffffffe00000000000000000000000000000000 +CT= 6cb32aa1d8cf3f921ea190fbcfef8efd28e637edd98dce76 +TEST= 322 +PT= fffffffffffffffc00000000000000000000000000000000 +CT= db2b2441cce88cb239c20813530db09d697cc45206511601 +TEST= 323 +PT= fffffffffffffff800000000000000000000000000000000 +CT= 404f426caea04f2dc20b86b7835444a4bd64a3d42b907775 +TEST= 324 +PT= fffffffffffffff000000000000000000000000000000000 +CT= 40999d62f2513dbd187b63f1258328675e03fd06e04f93d1 +TEST= 325 +PT= ffffffffffffffe000000000000000000000000000000000 +CT= 2fade8e09a22a027750d0e2e64ebedc75deb7bf2284e493b +TEST= 326 +PT= ffffffffffffffc000000000000000000000000000000000 +CT= 82e789ba12f106992ba53dc06c4422add3fb76e340788df9 +TEST= 327 +PT= ffffffffffffff8000000000000000000000000000000000 +CT= 2ee0c1413533170c8c0c896f0e4e932959e8488cc9eaa20d +TEST= 328 +PT= ffffffffffffff0000000000000000000000000000000000 +CT= a3a310fddf9a66f8ff572dd1a0119ccbd4ea1c835582ea20 +TEST= 329 +PT= fffffffffffffe0000000000000000000000000000000000 +CT= 7b06679cb15466ddd68682ead1385900067b0fdd9579e23b +TEST= 330 +PT= fffffffffffffc0000000000000000000000000000000000 +CT= 506ab13a54944cd50427990c10a0d9007eaee792d6f98f76 +TEST= 331 +PT= fffffffffffff80000000000000000000000000000000000 +CT= b7a206e36d40505d8fb17e677d03bdcd49e0e5d3946b50fe +TEST= 332 +PT= fffffffffffff00000000000000000000000000000000000 +CT= 0d2a858ca68d24819bb5eedf78a19d29a9bfa0b2f43c9d4c +TEST= 333 +PT= ffffffffffffe00000000000000000000000000000000000 +CT= 455fe82d082a690da0b002dbc47cf1715480d13f359454d9 +TEST= 334 +PT= ffffffffffffc00000000000000000000000000000000000 +CT= 83df45a8d21b27669c04191522c06346e10a917606db22bc +TEST= 335 +PT= ffffffffffff800000000000000000000000000000000000 +CT= 579ae8050675bd58ef30a581242ce77073b91812e1ac9477 +TEST= 336 +PT= ffffffffffff000000000000000000000000000000000000 +CT= 46b2137db27191f28fd44ee99c5a3f8b49db9292ca993a9d +TEST= 337 +PT= fffffffffffe000000000000000000000000000000000000 +CT= 6a6f1210368a489778d68a1b78591da5590c0939ca090710 +TEST= 338 +PT= fffffffffffc000000000000000000000000000000000000 +CT= ae880a921e9877c58d4beee96e46e16a741f189344f524d5 +TEST= 339 +PT= fffffffffff8000000000000000000000000000000000000 +CT= 8109f802f912525d6c565161f8df96dffaaa5b1bd0c32cbf +TEST= 340 +PT= fffffffffff0000000000000000000000000000000000000 +CT= 744ed6ad67a955fe42221069ceab00154c9ddaf8999a6303 +TEST= 341 +PT= ffffffffffe0000000000000000000000000000000000000 +CT= 96be628c6b5fdfa17874ed51401202d0e866cf6dfdf4d9ac +TEST= 342 +PT= ffffffffffc0000000000000000000000000000000000000 +CT= b901b0e543cbad729c1a111bb120edc5eae3040967a8f91e +TEST= 343 +PT= ffffffffff80000000000000000000000000000000000000 +CT= 976fbbf2b899b811995e78a0079271223af00e63c6193d0f +TEST= 344 +PT= ffffffffff00000000000000000000000000000000000000 +CT= f45512db6375907c1c02567be777aa01fb83db4ce32b84f3 +TEST= 345 +PT= fffffffffe00000000000000000000000000000000000000 +CT= a2d4c1ea429a822fcbd8b8fc33e7a61d6bdf7208098a8e61 +TEST= 346 +PT= fffffffffc00000000000000000000000000000000000000 +CT= 480e03848dadee411b5162954704eef64c754dba7203f565 +TEST= 347 +PT= fffffffff800000000000000000000000000000000000000 +CT= b5061144ed75ede1fb36e0a9b8e79333da4b8d9e7f547230 +TEST= 348 +PT= fffffffff000000000000000000000000000000000000000 +CT= c6c00d5bf5b2f084908108f2cba8cf00fdb3339297879e90 +TEST= 349 +PT= ffffffffe000000000000000000000000000000000000000 +CT= 2ebc1385ed3f88bd25e66f26245fa88fc9db7e344c8b4643 +TEST= 350 +PT= ffffffffc000000000000000000000000000000000000000 +CT= 5ba6eb0892a521ce2e8c7ce0d87a88a953a8cbae151316f0 +TEST= 351 +PT= ffffffff8000000000000000000000000000000000000000 +CT= e55398b877a554d3b9c364cf0e5bcd1ebf8f48b595c776a6 +TEST= 352 +PT= ffffffff0000000000000000000000000000000000000000 +CT= ef0716441f80ee6ad2d60148a18e1f7075de019032704a59 +TEST= 353 +PT= fffffffe0000000000000000000000000000000000000000 +CT= 30424e5d3d2c55a8dafc180bc12105fc4b2464a52b1f11a0 +TEST= 354 +PT= fffffffc0000000000000000000000000000000000000000 +CT= 2368efbe39e3bc6a2c865b4c94bc59e7c9e90d35dab24c1a +TEST= 355 +PT= fffffff80000000000000000000000000000000000000000 +CT= 0eb5a7aa4b64eddc4a24dfa84bde6cec00ca008d5ceebfe4 +TEST= 356 +PT= fffffff00000000000000000000000000000000000000000 +CT= 7622ca33a07df43ef438b40f965cde0b1691f222734dbac5 +TEST= 357 +PT= ffffffe00000000000000000000000000000000000000000 +CT= 562a2469c3787f48014dc3a423bac3bdde2cf5b757d0b25d +TEST= 358 +PT= ffffffc00000000000000000000000000000000000000000 +CT= 0e590c2a4ad53a1cd4b4c1ec6fd079b999c0be390a424ca1 +TEST= 359 +PT= ffffff800000000000000000000000000000000000000000 +CT= de662c5dc4e5bf6f2587379b47acc0f01f484fecf5d2bbc0 +TEST= 360 +PT= ffffff000000000000000000000000000000000000000000 +CT= 198682136a1b1ac6c353f2e996ab36eb9f47106891c938d7 +TEST= 361 +PT= fffffe000000000000000000000000000000000000000000 +CT= 5166aea4dbb4f0de6738b932e8e74967b97f9cb8062a7666 +TEST= 362 +PT= fffffc000000000000000000000000000000000000000000 +CT= e05ba9cd4401c7823ad376b38c28e9d4917659f26be46443 +TEST= 363 +PT= fffff8000000000000000000000000000000000000000000 +CT= d885a8ce955bc55db6847e166983f883597dd728e2517323 +TEST= 364 +PT= fffff0000000000000000000000000000000000000000000 +CT= 7b72565250aff6f51d3ca9ee892cef495254f52414a544e2 +TEST= 365 +PT= ffffe0000000000000000000000000000000000000000000 +CT= b563e4d6916fcc8e9facfcff7a56f01d8f95f6f73c9ebf61 +TEST= 366 +PT= ffffc0000000000000000000000000000000000000000000 +CT= f02f045dc8a7c7d45774a4dbf46dd4eb838175d9f9c9465d +TEST= 367 +PT= ffff80000000000000000000000000000000000000000000 +CT= 788d548d639270da245e6d6674ec1fa5e28e0e8a95d1f8da +TEST= 368 +PT= ffff00000000000000000000000000000000000000000000 +CT= 46f34c920f44356241576e6ecfc1556b8ac4b866d1e8a0d8 +TEST= 369 +PT= fffe00000000000000000000000000000000000000000000 +CT= c499a45f9f7d75e63ec6ca03bcbb2c1ca4d2b3352f5a6bf2 +TEST= 370 +PT= fffc00000000000000000000000000000000000000000000 +CT= 359a0a9b883ac9a9bbb67ab416b8a52f2b46dd76e7b25fc0 +TEST= 371 +PT= fff800000000000000000000000000000000000000000000 +CT= f1e5ed8ce8906842ef958f1cf3058d44072a51b704dcf5a4 +TEST= 372 +PT= fff000000000000000000000000000000000000000000000 +CT= 6eb8f80cd8e8784f7ee8e12eaa42c2e1051688917d471a5a +TEST= 373 +PT= ffe000000000000000000000000000000000000000000000 +CT= ef8a91f477fac8a41860f4207028fdbbdb5e9ec41da382da +TEST= 374 +PT= ffc000000000000000000000000000000000000000000000 +CT= cc295343c3080b5358435d315c4c658c4432f330b99bacd5 +TEST= 375 +PT= ff8000000000000000000000000000000000000000000000 +CT= dbb590e0eca48e3bee15e212d8abf507906a1d239cccaf9c +TEST= 376 +PT= ff0000000000000000000000000000000000000000000000 +CT= 187920d5318b0b3d0c45d1cfcd0b40ebbca311ca9821e197 +TEST= 377 +PT= fe0000000000000000000000000000000000000000000000 +CT= 27292fd8843b7137098e35938d7f776d75764032f16e6479 +TEST= 378 +PT= fc0000000000000000000000000000000000000000000000 +CT= afd15fb28384179aaa73f79c1cd9e88d19ae7d31b80bdd7f +TEST= 379 +PT= f80000000000000000000000000000000000000000000000 +CT= f1fda85a41bd48a01db36a4c70f081f99eea34f74617beec +TEST= 380 +PT= f00000000000000000000000000000000000000000000000 +CT= 3ede04a1ef76cb2337d2c56e74d7cd0ec49482cb4b80126a +TEST= 381 +PT= e00000000000000000000000000000000000000000000000 +CT= c25b02aec88cbaaf550bc244ee4fbe68df82b8f0f19776de +TEST= 382 +PT= c00000000000000000000000000000000000000000000000 +CT= 260f7119e36c46b2c8a80a0deb9027f972724ebb5f91ee24 +TEST= 383 +PT= 800000000000000000000000000000000000000000000000 +CT= 7894247f2c9cea36ee9b148c250b5fda23241ed93898eed3 diff --git a/flint/test/testvals/ecbnt66.txt b/flint/test/testvals/ecbnt66.txt new file mode 100644 index 0000000..92ef94b --- /dev/null +++ b/flint/test/testvals/ecbnt66.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= c6348be20007bac4a8bd62890c8147a2432e760e9a9f9ab8 +TEST= 1 +PT= 000000000000000000000000000000000000000000000001 +CT= cdaee1ce3361ed5b6ed38043105868613ad03eccde1c44a2 +TEST= 2 +PT= 000000000000000000000000000000000000000000000003 +CT= 53c8bd42302b266725a0371ec9513124e9d66d37d759fe0a +TEST= 3 +PT= 000000000000000000000000000000000000000000000007 +CT= 75cce02c755b44325fe1310e78eeb6ad02f06f5e637f4c3c +TEST= 4 +PT= 00000000000000000000000000000000000000000000000f +CT= 3a58896bde35b47dabeff5a3eca5c457f56e7d1d7ff3a13e +TEST= 5 +PT= 00000000000000000000000000000000000000000000001f +CT= 1d813a22043df9f121be21dd63ee7b457a13933a4a77d843 +TEST= 6 +PT= 00000000000000000000000000000000000000000000003f +CT= a263e388b6997ed320df48babdbd40c11dd7d1449dc4c4ac +TEST= 7 +PT= 00000000000000000000000000000000000000000000007f +CT= f54c6ea966a7ab0c3334e0f68d569bf5f9cb14ab671cf8cd +TEST= 8 +PT= 0000000000000000000000000000000000000000000000ff +CT= 32dd6c8525a74215580a1348a876038bbd3167308d91ea6d +TEST= 9 +PT= 0000000000000000000000000000000000000000000001ff +CT= ce08480a26148b7d5c4e319ec891f5bef210879ac7995dd7 +TEST= 10 +PT= 0000000000000000000000000000000000000000000003ff +CT= 8ecf8ed216d0b75f8f0e586e0bde79eabc7396fa554b6daa +TEST= 11 +PT= 0000000000000000000000000000000000000000000007ff +CT= b034665b46f882e98eaeac30a2339a943df8d2fb547afae9 +TEST= 12 +PT= 000000000000000000000000000000000000000000000fff +CT= e49f92dec0a83ddf604e74d4ec00b550c2cd2b29a0247c28 +TEST= 13 +PT= 000000000000000000000000000000000000000000001fff +CT= b50c3cdc7c7e4aac38bccb3325083b7c9c9770938acbf4e5 +TEST= 14 +PT= 000000000000000000000000000000000000000000003fff +CT= bbc2a4d7594acf934979e6430970baf7e89f3d08a1eece99 +TEST= 15 +PT= 000000000000000000000000000000000000000000007fff +CT= 48ffdde2ee0e23d4ead1602984aa6bc0b4bbec36cf0f9f43 +TEST= 16 +PT= 00000000000000000000000000000000000000000000ffff +CT= 6d3c139d10e8070b676b16827a17a03d1ccf72f769fc30bc +TEST= 17 +PT= 00000000000000000000000000000000000000000001ffff +CT= af8a47e661865c84c8f76bbeb4db5c06593f063979b6058a +TEST= 18 +PT= 00000000000000000000000000000000000000000003ffff +CT= 7da025bb62f0d8e572d5c95940df5bb1d2b1b55da66668f8 +TEST= 19 +PT= 00000000000000000000000000000000000000000007ffff +CT= 0fcac0008d61e1d652d31fec02ea5145cb97850180d40202 +TEST= 20 +PT= 0000000000000000000000000000000000000000000fffff +CT= 40db37117cacc2dd85f23c8aacdb892c37783b113c260e9f +TEST= 21 +PT= 0000000000000000000000000000000000000000001fffff +CT= 70744528843e1f0f9dd6e147a90edca3a2e98691926285a7 +TEST= 22 +PT= 0000000000000000000000000000000000000000003fffff +CT= d60e9f3d949d4929fda011f4a4e36c0506bb274aec9099b8 +TEST= 23 +PT= 0000000000000000000000000000000000000000007fffff +CT= 9074c4a8555994823b982ef687656aa6408ca94db502e320 +TEST= 24 +PT= 000000000000000000000000000000000000000000ffffff +CT= c025bdf9d2a4c8b477478a53844be72cf00000f4e52bbc65 +TEST= 25 +PT= 000000000000000000000000000000000000000001ffffff +CT= d66985415a1ab30007d374be66bff48611b3006c8630af35 +TEST= 26 +PT= 000000000000000000000000000000000000000003ffffff +CT= 3fa1787a686b1e6567e2a564146b4975ae270a96b5a852c8 +TEST= 27 +PT= 000000000000000000000000000000000000000007ffffff +CT= 241f020842ee9eadb4d15a26d761fcedc9d9e562dd148f43 +TEST= 28 +PT= 00000000000000000000000000000000000000000fffffff +CT= e4849b501236860dd6e5da417d2fb3c3a7f737107858d536 +TEST= 29 +PT= 00000000000000000000000000000000000000001fffffff +CT= 32d80a021a98ad8730cab73305e5533fc2d44eb30e1db2c2 +TEST= 30 +PT= 00000000000000000000000000000000000000003fffffff +CT= 3f0d79ef45ba55d205beb15fbe58c5dca81ea5b166d116d5 +TEST= 31 +PT= 00000000000000000000000000000000000000007fffffff +CT= ece84e5cdc8dd5b991cdfe672fda8b772c6da1cc779402c5 +TEST= 32 +PT= 0000000000000000000000000000000000000000ffffffff +CT= 6a1b00b836bf58df1b66e5a80030cfd9f4c5873a820cf335 +TEST= 33 +PT= 0000000000000000000000000000000000000001ffffffff +CT= 38baf5ec0e9c83ac6e2e890743874aa2fa921a97cb95c1f8 +TEST= 34 +PT= 0000000000000000000000000000000000000003ffffffff +CT= d010cd996fe9b9ddb19ef90ab5ea1571bc7c95bc1ec1ea61 +TEST= 35 +PT= 0000000000000000000000000000000000000007ffffffff +CT= 95479ab10ae2ce2ed8e3fe49d21fa5f8a4eec8c06e89a7a5 +TEST= 36 +PT= 000000000000000000000000000000000000000fffffffff +CT= c86313c475f358ba5d9737a5505b3458d5bbc1fc0065b599 +TEST= 37 +PT= 000000000000000000000000000000000000001fffffffff +CT= e1e8ac6222c46d4ba8311cc743e960a63cb88c6d08df7b22 +TEST= 38 +PT= 000000000000000000000000000000000000003fffffffff +CT= 7989ced41aa295639b6c9a6e7c39e52db8995645b552c0b4 +TEST= 39 +PT= 000000000000000000000000000000000000007fffffffff +CT= 33265e87715ee54596bf0d85a8ac1010b9b2ce9d53820921 +TEST= 40 +PT= 00000000000000000000000000000000000000ffffffffff +CT= 3c85bfac535f5d284fd02283aaa8f94c0345aa191f1df41b +TEST= 41 +PT= 00000000000000000000000000000000000001ffffffffff +CT= 286b94ea6aa8b9f65c94c3d8d4e0be4b00b46d8c6f4f0d29 +TEST= 42 +PT= 00000000000000000000000000000000000003ffffffffff +CT= c31f9405c269b06d73275ee1ff7977be3ebce4a7104c17e7 +TEST= 43 +PT= 00000000000000000000000000000000000007ffffffffff +CT= 3bd30e4c1a01595f49ce1d9fab3e2875342dc069e879707a +TEST= 44 +PT= 0000000000000000000000000000000000000fffffffffff +CT= d5201094efec79cb7d7c19339e8f35f6d1ad9619b9a9fead +TEST= 45 +PT= 0000000000000000000000000000000000001fffffffffff +CT= 38bc57f2be887899929dc276d9e8ccb727ac4c605f1babc1 +TEST= 46 +PT= 0000000000000000000000000000000000003fffffffffff +CT= 8424671ec991b56745c721ef75537fe9c00eb5561e433cfb +TEST= 47 +PT= 0000000000000000000000000000000000007fffffffffff +CT= 635f7309aa5a40c1f391236d7610b53af17c2f73ed8d140f +TEST= 48 +PT= 000000000000000000000000000000000000ffffffffffff +CT= d0659e264b4cbcc6a1bb67c938afa18d17b50405cfca4b16 +TEST= 49 +PT= 000000000000000000000000000000000001ffffffffffff +CT= 6a20feedf718a3fdf187ff539e07d95847f1f0e20d62fb30 +TEST= 50 +PT= 000000000000000000000000000000000003ffffffffffff +CT= cf19f2a6605328eac207e9d434f1e3f04208129579f6606e +TEST= 51 +PT= 000000000000000000000000000000000007ffffffffffff +CT= 22df6e24bc543d51969e3ebd76313a026f0cd9c915eb6c73 +TEST= 52 +PT= 00000000000000000000000000000000000fffffffffffff +CT= 135267ef5450eb03d2b23b811e4b65597b874fbf5b8cfca3 +TEST= 53 +PT= 00000000000000000000000000000000001fffffffffffff +CT= b457c4d76ae44893952886ed79b77e24ca6cc48c7cf906cb +TEST= 54 +PT= 00000000000000000000000000000000003fffffffffffff +CT= b3fb988d2fd410060ec3a6b1e33c102853ec459c9fe1d4cc +TEST= 55 +PT= 00000000000000000000000000000000007fffffffffffff +CT= 534ce0b7bd09d3e6295b850e030c063d97767841425e924d +TEST= 56 +PT= 0000000000000000000000000000000000ffffffffffffff +CT= f7cd56663dabff88f2cd322eb2837eb869f7527be0ed3e4c +TEST= 57 +PT= 0000000000000000000000000000000001ffffffffffffff +CT= 1f0ce779078c1a74bd16af7058ba236f8e422e08155c32fb +TEST= 58 +PT= 0000000000000000000000000000000003ffffffffffffff +CT= e65f476a1de5444eb3ae2e7cc08aafc873c99f904115bbef +TEST= 59 +PT= 0000000000000000000000000000000007ffffffffffffff +CT= 9289a3e81fc637601efbd978943a2cf8d1c43488afd972d5 +TEST= 60 +PT= 000000000000000000000000000000000fffffffffffffff +CT= e4475850f1e63fcc7ba8c561868dbd0a446681940e1603f7 +TEST= 61 +PT= 000000000000000000000000000000001fffffffffffffff +CT= cdb831d674cfc03361166c58f25f4d532f179577a61123ab +TEST= 62 +PT= 000000000000000000000000000000003fffffffffffffff +CT= d3e6fcd6e5746cc08e5119bf2ea3e7a45f7ae0feb24fb862 +TEST= 63 +PT= 000000000000000000000000000000007fffffffffffffff +CT= fba876b5fa2f1fb90f1b536f255556fee02292a97651354c +TEST= 64 +PT= 00000000000000000000000000000000ffffffffffffffff +CT= 7383b76339abb2a67ccbebe64c00c288a808ed04b27612bd +TEST= 65 +PT= 00000000000000000000000000000001ffffffffffffffff +CT= cf9adb6419aaea756c049635a5b8108d1f8802fa2cca7120 +TEST= 66 +PT= 00000000000000000000000000000003ffffffffffffffff +CT= 60ce571284d2d2b9deefb857957f62337f6f3af687eedbd4 +TEST= 67 +PT= 00000000000000000000000000000007ffffffffffffffff +CT= 93c09e5144942c7bb584a2134b5b52517fd9ae25c6d1c7b0 +TEST= 68 +PT= 0000000000000000000000000000000fffffffffffffffff +CT= ded8139844e0950913ccd3ba47818016c38892bc67200136 +TEST= 69 +PT= 0000000000000000000000000000001fffffffffffffffff +CT= 47171aebbdd2c7dc481e2d248fef403e6995a3d8a9f339d4 +TEST= 70 +PT= 0000000000000000000000000000003fffffffffffffffff +CT= 0ba3f8637313d2e18818bfb9e7f009505557695326fdb1ce +TEST= 71 +PT= 0000000000000000000000000000007fffffffffffffffff +CT= 2a984dbfc50fecd10d168677fa49d5823a349a02a9dd5620 +TEST= 72 +PT= 000000000000000000000000000000ffffffffffffffffff +CT= c91db6c3f816e07df9356bd5b6982b2a0073f9b083d2cb60 +TEST= 73 +PT= 000000000000000000000000000001ffffffffffffffffff +CT= 099782531bb40b1c2bf0ea85513eaa7cd0988f77dc3374f1 +TEST= 74 +PT= 000000000000000000000000000003ffffffffffffffffff +CT= 86cec630ba3efbd2f03c560356476b0a8544334f265fa9f0 +TEST= 75 +PT= 000000000000000000000000000007ffffffffffffffffff +CT= 43fb40cb91ccf84b47d3e31c3df92286898a5215a34b3449 +TEST= 76 +PT= 00000000000000000000000000000fffffffffffffffffff +CT= 6e1adecbe2e01290757f5b35c0fd6f3a0182fb8590c0c273 +TEST= 77 +PT= 00000000000000000000000000001fffffffffffffffffff +CT= 20885880446d80cff09acd812d43e01cb3916628cc0a5f13 +TEST= 78 +PT= 00000000000000000000000000003fffffffffffffffffff +CT= c6e8b061817c264d6bb9962bf2b5c9365958371b1cd0a98a +TEST= 79 +PT= 00000000000000000000000000007fffffffffffffffffff +CT= d643cd7d4c396eecc19dcef4916c198fb9bc1337a44e17bc +TEST= 80 +PT= 0000000000000000000000000000ffffffffffffffffffff +CT= 713a67a15bdda97af4e42ed1b06e163236a626d4b907b327 +TEST= 81 +PT= 0000000000000000000000000001ffffffffffffffffffff +CT= 1c57381f27518c43a3a8480694020a0ea917e2e3c41fdc68 +TEST= 82 +PT= 0000000000000000000000000003ffffffffffffffffffff +CT= 947a26d62c1e9dd23b898ec523e84f09c2a6272c90fad6f7 +TEST= 83 +PT= 0000000000000000000000000007ffffffffffffffffffff +CT= 64d4a8203a2ea3d46a609dc6efae9c78558507712732ed94 +TEST= 84 +PT= 000000000000000000000000000fffffffffffffffffffff +CT= 86b209d778512239b4429b2f2ad9b2a36231f13559540e25 +TEST= 85 +PT= 000000000000000000000000001fffffffffffffffffffff +CT= 437b97fb6b390a1575d296d2a17938c7ce47b9e107eeda24 +TEST= 86 +PT= 000000000000000000000000003fffffffffffffffffffff +CT= ebd7b1cdfa75cf29c6770e21f05c9df6f9e8ced00883bcc6 +TEST= 87 +PT= 000000000000000000000000007fffffffffffffffffffff +CT= 0bec18acef54fbcafe6ec48ff92ec8bf732f7a48a728d9eb +TEST= 88 +PT= 00000000000000000000000000ffffffffffffffffffffff +CT= 2d0590f877de3f4182132819ec376101ab7211e0d1b777fc +TEST= 89 +PT= 00000000000000000000000001ffffffffffffffffffffff +CT= d14a514d7aaa8a1a6b001992da13ed854c3455d73dcb269a +TEST= 90 +PT= 00000000000000000000000003ffffffffffffffffffffff +CT= 492571d31e5dccc8a6d1d30d5c95dbfbcd04a20010c7b347 +TEST= 91 +PT= 00000000000000000000000007ffffffffffffffffffffff +CT= 4b616b6e0d929774954c38c7653e3b0098067e187ef1808b +TEST= 92 +PT= 0000000000000000000000000fffffffffffffffffffffff +CT= 61756fcab37dc7b4ad881f915e01f2983a7b28995d48251b +TEST= 93 +PT= 0000000000000000000000001fffffffffffffffffffffff +CT= 1edf9e1ca52d2ad8e08884db99e8def234b58a0a0040aa22 +TEST= 94 +PT= 0000000000000000000000003fffffffffffffffffffffff +CT= 6cf0ac3f16f5546ff0f2bbf90a842625346b26c8162c0f8d +TEST= 95 +PT= 0000000000000000000000007fffffffffffffffffffffff +CT= f647998104e3255f2fcc982bed866cf3882f2135c20ba71c +TEST= 96 +PT= 000000000000000000000000ffffffffffffffffffffffff +CT= c628a7e4a3a24f584959a4403e7abf7a9d1f5d40258d52d8 +TEST= 97 +PT= 000000000000000000000001ffffffffffffffffffffffff +CT= 931b6528fd723492bc5e72d7cfb796f4421ca5f491e5f74f +TEST= 98 +PT= 000000000000000000000003ffffffffffffffffffffffff +CT= 508882e85f3ccc16bceb7dcceb74ed0cdf3bcd450d2ca0f6 +TEST= 99 +PT= 000000000000000000000007ffffffffffffffffffffffff +CT= f0dfd7e8707a4551884e6a54cffc9dd668ac90faebc25a0e +TEST= 100 +PT= 00000000000000000000000fffffffffffffffffffffffff +CT= 284eb85ba256bcdb55e45a64956244882219ee5dd63a9750 +TEST= 101 +PT= 00000000000000000000001fffffffffffffffffffffffff +CT= 0156a0d158df988ab9a0d36aecf3cbba0a9a5b579828bdd5 +TEST= 102 +PT= 00000000000000000000003fffffffffffffffffffffffff +CT= 80236aeafe5f04d52243182814601f4f3ae1ca21937ba631 +TEST= 103 +PT= 00000000000000000000007fffffffffffffffffffffffff +CT= 94ebaff2cb14b0fdb9bd49044ef19c7fc206ad8a7f6d2daf +TEST= 104 +PT= 0000000000000000000000ffffffffffffffffffffffffff +CT= e28b922463844b811462fbbf1c944bc86c2868ca9341335d +TEST= 105 +PT= 0000000000000000000001ffffffffffffffffffffffffff +CT= bbf9ef54de66830d9848ee2dc0a5791c4e51760bf51ee107 +TEST= 106 +PT= 0000000000000000000003ffffffffffffffffffffffffff +CT= e382d57ebc327bd1ac7605761cf0043e7c2af001106243f8 +TEST= 107 +PT= 0000000000000000000007ffffffffffffffffffffffffff +CT= ebd8179784e650d1e2043440c92918b6ca829adfce9f7dc5 +TEST= 108 +PT= 000000000000000000000fffffffffffffffffffffffffff +CT= b293d816cafe31bc21078fcb63be8e32acba1e01a6aabfef +TEST= 109 +PT= 000000000000000000001fffffffffffffffffffffffffff +CT= 1f43a9f5c72d3f8e59257f89bda285cec0543da72b1554ad +TEST= 110 +PT= 000000000000000000003fffffffffffffffffffffffffff +CT= 423909b4f549476a2b1880395471cad55c23b4c5c3efa10e +TEST= 111 +PT= 000000000000000000007fffffffffffffffffffffffffff +CT= 5f7118089813f762d8a23c148f4b4cf8b2cb81a966267d07 +TEST= 112 +PT= 00000000000000000000ffffffffffffffffffffffffffff +CT= 3334596fd0ca276e75d35910b459bb51a7018dfe8a30b374 +TEST= 113 +PT= 00000000000000000001ffffffffffffffffffffffffffff +CT= b2158326bbad01168019a03c2223d8af02b153aa148b7991 +TEST= 114 +PT= 00000000000000000003ffffffffffffffffffffffffffff +CT= ed8782c7ff00e2442967f46dc9925aadb3fa64d682c06416 +TEST= 115 +PT= 00000000000000000007ffffffffffffffffffffffffffff +CT= da9a660c9192ce1aab5f5a5f4b1a0a709754ae41d370af2d +TEST= 116 +PT= 0000000000000000000fffffffffffffffffffffffffffff +CT= 5fb95402e41fbf3db1bdacc21d61b4acccf016567ff59a4f +TEST= 117 +PT= 0000000000000000001fffffffffffffffffffffffffffff +CT= 7e5dbfef91859d6d521cc17969c4570f305741bf77247028 +TEST= 118 +PT= 0000000000000000003fffffffffffffffffffffffffffff +CT= 6dea768020190f36f4c2abfe0ca92ce9d685a43014cb68f9 +TEST= 119 +PT= 0000000000000000007fffffffffffffffffffffffffffff +CT= 78883964aeab93573f700a1e4d7360ebb2f8fb8108e4e18c +TEST= 120 +PT= 000000000000000000ffffffffffffffffffffffffffffff +CT= 4431719fd73660471551f9b8445ac5520526709ceb01fd13 +TEST= 121 +PT= 000000000000000001ffffffffffffffffffffffffffffff +CT= a7fae80d13637ff4e3f3ee2852d173d99f983ee80c1c5936 +TEST= 122 +PT= 000000000000000003ffffffffffffffffffffffffffffff +CT= 72804890290c3557a8900c1e4c4320c91dc1c16e69b5786a +TEST= 123 +PT= 000000000000000007ffffffffffffffffffffffffffffff +CT= 111979180288728d3818c1074bf8bf9cbd3d42864093e95e +TEST= 124 +PT= 00000000000000000fffffffffffffffffffffffffffffff +CT= 3994152860580623daf6fd0070ab447eb484ea7ccafa6122 +TEST= 125 +PT= 00000000000000001fffffffffffffffffffffffffffffff +CT= 80237e2c407e1177ac4621ec63e7a1659930df7d997601c4 +TEST= 126 +PT= 00000000000000003fffffffffffffffffffffffffffffff +CT= c7c2506548548f53da1c90898fa0e1214e6ad94d09fb9bf2 +TEST= 127 +PT= 00000000000000007fffffffffffffffffffffffffffffff +CT= 45ec7e25decb5da6c5da24ab5480fdd6aaca55ed1eab7220 +TEST= 128 +PT= 0000000000000000ffffffffffffffffffffffffffffffff +CT= 3f8d43ec99dc563fa7d1ecf4afc6d030e2041e070ae91285 +TEST= 129 +PT= 0000000000000001ffffffffffffffffffffffffffffffff +CT= 77702380ff4bdd334d50cd4e4a1c159bdc840643fb5ebb31 +TEST= 130 +PT= 0000000000000003ffffffffffffffffffffffffffffffff +CT= 36f5ed50197fe617cd534a89a2d5efbae6a3d704af11ac88 +TEST= 131 +PT= 0000000000000007ffffffffffffffffffffffffffffffff +CT= 89670dd6bfd9301ec8885d7a0f4ee9e29e7280a3c70db899 +TEST= 132 +PT= 000000000000000fffffffffffffffffffffffffffffffff +CT= 4dac64434531ff5de3486bfc866f2683ceeab8bdd76731e4 +TEST= 133 +PT= 000000000000001fffffffffffffffffffffffffffffffff +CT= 8a60ec61e803dfe561b18d15e802de067a37a279bb3d6337 +TEST= 134 +PT= 000000000000003fffffffffffffffffffffffffffffffff +CT= 40127a4864d6f0e23d3c623cf6edd9ca3b6135edace80f82 +TEST= 135 +PT= 000000000000007fffffffffffffffffffffffffffffffff +CT= e03f59739d192dfb542d5b2ae026230433f63086e4c0248d +TEST= 136 +PT= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 764e4ca11ae2cfa3f6f8810ac0ef76abb0344928d833ee26 +TEST= 137 +PT= 00000000000001ffffffffffffffffffffffffffffffffff +CT= 1c8c3330bbc80f5e52776a3767f13f1bf8e6a68d1e55fa8e +TEST= 138 +PT= 00000000000003ffffffffffffffffffffffffffffffffff +CT= 3700b5e21c0a2cf9ba46fdd23abbf5488dba7f2902a1720c +TEST= 139 +PT= 00000000000007ffffffffffffffffffffffffffffffffff +CT= 50ebc37102d431d13447b52dc273fdebb6fd66973898565a +TEST= 140 +PT= 0000000000000fffffffffffffffffffffffffffffffffff +CT= 201f9756335a419a508ab8afa69aa37a3632a6cc5ee3cdf6 +TEST= 141 +PT= 0000000000001fffffffffffffffffffffffffffffffffff +CT= e38577543d3ca8d3fd72449b8ba2627e6d5e60b445855dd0 +TEST= 142 +PT= 0000000000003fffffffffffffffffffffffffffffffffff +CT= 68e5b64f4d213bba66cc007a6cd43e3f28e877908b947fa7 +TEST= 143 +PT= 0000000000007fffffffffffffffffffffffffffffffffff +CT= 07676d5da95d2de6bf3d6c1d35eed7c0e2b4c42e9c4c64b6 +TEST= 144 +PT= 000000000000ffffffffffffffffffffffffffffffffffff +CT= 2531af4fbb93518a80cee128ce677bb333d9df36e4556731 +TEST= 145 +PT= 000000000001ffffffffffffffffffffffffffffffffffff +CT= 9562a6bc180cebdeabde9dec4dd57ab029ab431fe09ee754 +TEST= 146 +PT= 000000000003ffffffffffffffffffffffffffffffffffff +CT= 2b0fbd246866fbc29903f1f978850aa8d30026dfff03735d +TEST= 147 +PT= 000000000007ffffffffffffffffffffffffffffffffffff +CT= 943b8dc90ba383372e02432f68ea860ade8ddbe713bd2cb9 +TEST= 148 +PT= 00000000000fffffffffffffffffffffffffffffffffffff +CT= fae10919b3b666a4e636bd0e151d74c50ca69f21076a7180 +TEST= 149 +PT= 00000000001fffffffffffffffffffffffffffffffffffff +CT= 9a76a73f0ba5dd4ec0d81cc30f670a4bf55abd47ffe79e38 +TEST= 150 +PT= 00000000003fffffffffffffffffffffffffffffffffffff +CT= 676a8603c28c78e884f5ac16c24fa7f537320d56d14d158e +TEST= 151 +PT= 00000000007fffffffffffffffffffffffffffffffffffff +CT= 9809de2301e71209057f14b00340d279572a550d641c24f8 +TEST= 152 +PT= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= 69477141678e27ccdcf5e1e398a53cbf0b1a2f1678069d1c +TEST= 153 +PT= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= c937bea1a671fd8fa1d161534cda98a9b3f66539ee6cea3e +TEST= 154 +PT= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= 9d7a0ec1ba29e88df476ed7ab72957cfb845ae4741d94a4b +TEST= 155 +PT= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= 327ecfdb3193488224fabccf75dd5b60a84a2a33e47930af +TEST= 156 +PT= 000000000fffffffffffffffffffffffffffffffffffffff +CT= ddb5ded8903b7d794c5ca99da551d846266a568a4b42a8e6 +TEST= 157 +PT= 000000001fffffffffffffffffffffffffffffffffffffff +CT= 36e060e68ad59e3ce64c45eb8e39b853cc6e07fc90445c63 +TEST= 158 +PT= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 7df4d4b4caf8cbc481c4e976ca5310d9fcc6a685d73792a8 +TEST= 159 +PT= 000000007fffffffffffffffffffffffffffffffffffffff +CT= 8aa43dc8d3d08cc9f97362363807aabfa6f691ec68030021 +TEST= 160 +PT= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= dc1dc160c50c5ad7a1f6b856a060b03af003b12274d97ab6 +TEST= 161 +PT= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= eb7bb7813e52482da41f2cd6d1b5a0b33fcfdb543a1adaa6 +TEST= 162 +PT= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= cc8227d561b054a378163b19414025d53583447e5bf625d9 +TEST= 163 +PT= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= 9998b5cbb36c34ce5780916773ef6e412e61c6fa0f886d61 +TEST= 164 +PT= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 47dc19e73e8799c5a63249851257758b36e452ff62daa25b +TEST= 165 +PT= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= 53f3dbc30be5655bb295f92858d33f90bd99773a168137b4 +TEST= 166 +PT= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= 6fa8048929bbefdbea89cd40997b18379ace5d32546a8438 +TEST= 167 +PT= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= dce428756cfdb142fff839fdd57db8c71dc0bafcafe3936a +TEST= 168 +PT= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= 877ecb02336c0b2a489847c48f404e7e44a5a974a7f89656 +TEST= 169 +PT= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= be8c1f9845fa45523976cdec85d007732fa4a85545393cb5 +TEST= 170 +PT= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= 015dec6b4da52c6cd181b20662452f3cfc1276221811eef6 +TEST= 171 +PT= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= 452e1c06c275ccdf1a3c1641f84b9380008b39d334e5f7e6 +TEST= 172 +PT= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= f6b8f5127ef6e076f5b957927dc49ffadba2a031313d2ad8 +TEST= 173 +PT= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= bb8fb523d4a88fe9f0fb3e233ee0660e336c01b9b4ea9316 +TEST= 174 +PT= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= 1797dd50ab7c3336bd13ce8112773de401b35d4c8803c7cb +TEST= 175 +PT= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 752d281284a93d85a1ca22c8958f5b9ba9b5fe6a1beedfaf +TEST= 176 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= c1b33a56c62017d659be54e807c3ba96cee6bde5c1a75254 +TEST= 177 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= 1db8ec8151ee147bffab3f555c29e3bc09e07e51ac0abc3e +TEST= 178 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= 8f1b17225c3f94ff178f447630d9aeec7b8f7539a62e28a6 +TEST= 179 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= 58a192f4dbd5bc4f8e2758b726fe5da24f90db0df86a9d97 +TEST= 180 +PT= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= e1032f2c1519b0a8ea1aeef798f68f68cf74710fd4814622 +TEST= 181 +PT= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= 126cb96508d531d98489b88f1d3be47b3ae0c3508dd3ca36 +TEST= 182 +PT= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= cdb2602506c4fc81a991bec2fad877e9df03b5d2f15be8cc +TEST= 183 +PT= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= ab63dfa6450d19d50f7cc34574f75c050921e4a78fa12d68 +TEST= 184 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 1dffc07a756f9876ede76b9f680ba29989518431ca6a9449 +TEST= 185 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= 3c28a3f75dce89ce9f06bc0fc2abe77685a52cc55a78836e +TEST= 186 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= e1982d4c81e5070acc8e7e95921b28dddb81a5bf5f7a9964 +TEST= 187 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= 984a30953e75f91a03d94d1ed74a73111088d05b0643d542 +TEST= 188 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= 5e73cc763b6613e3ac84d76ccffc4fae63eb3992c88ea450 +TEST= 189 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= 3a8a00bb4b2edf07fb418e250b29f9f919ce10b0ec676064 +TEST= 190 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= ff7b61806eccb9b16ec7a28744d4603e59572621c14e1260 +TEST= 191 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= 2b76c9356d8ef4808386fa6848ee618a9ff018c2b00ee0df +TEST= 192 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= d2f3943a768d2a257352e46e697c2a9dbbbb8e849b291351 +TEST= 193 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= 0b77741abb67f31ec7ffa8c728b30fb1238671d1c7e485fd +TEST= 194 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= 23de40f494308b2301069374662d74529b2906c1c3486f3d +TEST= 195 +PT= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= e526022cee5997decce502093ea4f4ac72d5570134e04d9d +TEST= 196 +PT= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 7cabed672a7296a0d3d315886a1ac2db3486b925cbfd6f39 +TEST= 197 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 953b4fd999e6a08a5eb7daacc2bc2594a03322a25d59f741 +TEST= 198 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= e55e2b47266d3ceac3da1d3d0a41d85102e705e573ddaa47 +TEST= 199 +PT= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= a0516cf39d8bc3908504f8b60969654f009ba1c878f6f641 +TEST= 200 +PT= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 5a0901f6088268c6b7626e93570ee771cf43006864a0dc38 +TEST= 201 +PT= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 2fb83e3c4f24c5239195b618b750af92e672c84e4b5a9bd7 +TEST= 202 +PT= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 9a6e25eeab8b1d6d0a2e05cc0dd2f3ea772e0b03af6197cd +TEST= 203 +PT= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= 7386ad35eba840745f058313a52327bf430ac063d3d3cde4 +TEST= 204 +PT= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= 8b38d96742cd2e0974d24ff15b3cddb8af15c94730873026 +TEST= 205 +PT= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 6c5ce7547ab807155d6377243c053eda773fe9278accce7f +TEST= 206 +PT= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= a8f66182b56e105f2d618b27da19d186d7c324d744d34a83 +TEST= 207 +PT= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= d44561441e9dcce0a37439cd944e1b18f2a5c576f8a6adb6 +TEST= 208 +PT= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 0d9133252fc077fb0ffe8fbe99c2cb512b54383e26a61207 +TEST= 209 +PT= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= c354fc968ebd6a713259f1f6c73a95b72c450a04e54757f1 +TEST= 210 +PT= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 681cf1e2cf11eb7f305175b37b5512d792561e44f68c29aa +TEST= 211 +PT= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= 37acdfdefc776928533343a39faa4538cae63fedd721a7db +TEST= 212 +PT= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= 8fc89e8a7f60d1ec76e38e7fc6d425dcfaa01fbf268170d3 +TEST= 213 +PT= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 5bd74cfe1b05aa4c4a09ce33de3cc265531db361e387f190 +TEST= 214 +PT= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 59cbe9fab2167d8390a1989b235127cd890c7ab3a95be61f +TEST= 215 +PT= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= 98ce1644f1bbf8008d687e7a96edac1033baa338befa289b +TEST= 216 +PT= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= 4486fb9a989578d2b265f24f57580d3953e14742f8e66281 +TEST= 217 +PT= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 583f02671908886fcf1d4431f3cc5b02797b25bfe2527fae +TEST= 218 +PT= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= 8aa5c0ebb14380ce7196eb72e6aafbbb71ba4acf358cc08a +TEST= 219 +PT= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 6b5e6869a6a869320e1d969cba6e6815c9dbec81d957bb69 +TEST= 220 +PT= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= dcc9fe313775f79331ab1c23911df508cd1490e46a3ff14b +TEST= 221 +PT= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 7ecb85cdd44f60967a6db139f59bc323fd8373a6460218ad +TEST= 222 +PT= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 7340ae3dfe3fb2309524d48a22fcd4dff251485011b87201 +TEST= 223 +PT= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= 6245aac6b90328468a2a3140d2b8d05343a533ca97e80678 +TEST= 224 +PT= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= 618b3ecb394ecefc9b47c1cf6ccbf6a006cb4d8bcab91346 +TEST= 225 +PT= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= a20490b054abad3a57c36a35ff4b45b59c565b21f7d5bea9 +TEST= 226 +PT= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= afb98a8a8d21391211742da96ff20c2b36b498de2f2099bf +TEST= 227 +PT= fffffffffffffffffffffffffffffffffffffff800000000 +CT= d296ee5896021fc1e6985967dbff8a0cdddc18a8525997c8 +TEST= 228 +PT= fffffffffffffffffffffffffffffffffffffff000000000 +CT= e84e58bfd1d29c3b05cd927fcf253e339097261360f9f5f1 +TEST= 229 +PT= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= 87ee1d9730ba7b1ead21d90f4124195fe471d78926eb4019 +TEST= 230 +PT= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= 7687c14b70c1142017a707bb3b75a09541ab92ca72272eae +TEST= 231 +PT= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 663c03df63bbaf1f45978b1ee3ebfbe0b06538f73c152278 +TEST= 232 +PT= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= b2cb7318252aaaaaaf074ddcea2e6666edec5361a69e85a0 +TEST= 233 +PT= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= 8a05361ba839c0b44855d033d806c0cb8f02762657eb74c8 +TEST= 234 +PT= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= 8bc73d61612a3a09999c52998a9c6cfc3ac58bcfaaa2ec46 +TEST= 235 +PT= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 5c994f47865f30ea8cc420d2e36fc97febad947be17bf6dc +TEST= 236 +PT= fffffffffffffffffffffffffffffffffffff00000000000 +CT= 8d81e019d5d1d6f45f7ceabf7e531aa879b02eb97f1e279a +TEST= 237 +PT= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= 1b76d57eb1694b0cf6f8171dcda34613d2c49a24dd495e69 +TEST= 238 +PT= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= f19ddd0be659a065903b2316b5cab991187e2aa3804c6fd3 +TEST= 239 +PT= ffffffffffffffffffffffffffffffffffff800000000000 +CT= 6e808ce696c5ad6cf50e44d98acd717524c11caba9f8f728 +TEST= 240 +PT= ffffffffffffffffffffffffffffffffffff000000000000 +CT= c3dc954a40d156808f1cdc4369f4a6662a4ff82e6a13963b +TEST= 241 +PT= fffffffffffffffffffffffffffffffffffe000000000000 +CT= ae441e84ddc99cf75f7a5287fd72fabb108ad9531b8e642f +TEST= 242 +PT= fffffffffffffffffffffffffffffffffffc000000000000 +CT= 1a8af84d6faa5f90741df7497f92bcf5ee884bf9553a90c5 +TEST= 243 +PT= fffffffffffffffffffffffffffffffffff8000000000000 +CT= abb712500f87da805d3a1b74fe217f38d42c5937ea301a2f +TEST= 244 +PT= fffffffffffffffffffffffffffffffffff0000000000000 +CT= 99655339b80ca50636ce238fafad9adca0a72af6b6323afe +TEST= 245 +PT= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 57639713ff4dafaf6d76399b69929c2fe95a4dd06cd00323 +TEST= 246 +PT= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= 5f527877602612047be9765145b4c860bbc9d1336b5aba57 +TEST= 247 +PT= ffffffffffffffffffffffffffffffffff80000000000000 +CT= b2916f199456a6d02b0f45d49954c14d3968f5df801b8ae9 +TEST= 248 +PT= ffffffffffffffffffffffffffffffffff00000000000000 +CT= 35ebcc31491f6f538f27aaddf7cd03bc418a891225851369 +TEST= 249 +PT= fffffffffffffffffffffffffffffffffe00000000000000 +CT= 2500c049e3194b8bf3cad219b6f3f7fc465a7e4450e75514 +TEST= 250 +PT= fffffffffffffffffffffffffffffffffc00000000000000 +CT= 56b8f212f603d2a84afcb7814fbd5f16a06975cbea94700e +TEST= 251 +PT= fffffffffffffffffffffffffffffffff800000000000000 +CT= 6440df1101a58aa38ea2a31aae3657cc37ff9f0957bd2ae4 +TEST= 252 +PT= fffffffffffffffffffffffffffffffff000000000000000 +CT= 5d3f48babe14728ed171e6b0c191a912c508b15401ab6c91 +TEST= 253 +PT= ffffffffffffffffffffffffffffffffe000000000000000 +CT= 23e83cb231eeb37062e581b506fffa536c5eac1366b605f9 +TEST= 254 +PT= ffffffffffffffffffffffffffffffffc000000000000000 +CT= a04f5a995de1d1bc0229f5ee29d4707dd9de93d40b776665 +TEST= 255 +PT= ffffffffffffffffffffffffffffffff8000000000000000 +CT= f5f35e7246e76d444fb882b95d6aa52421465302fbe354c3 +TEST= 256 +PT= ffffffffffffffffffffffffffffffff0000000000000000 +CT= 033c655dc36f1f85f497f397190d0d846c57fcd9233ff465 +TEST= 257 +PT= fffffffffffffffffffffffffffffffe0000000000000000 +CT= ccacdca0beaad01530bb87377a1e30a002e322d065b44170 +TEST= 258 +PT= fffffffffffffffffffffffffffffffc0000000000000000 +CT= 32317aec3c55078c00579cad0f3d3fb93e62226af18b6fc9 +TEST= 259 +PT= fffffffffffffffffffffffffffffff80000000000000000 +CT= ab440862695e9ac349379f790cf1069920b35283f3295a1c +TEST= 260 +PT= fffffffffffffffffffffffffffffff00000000000000000 +CT= 14427f63f42c6205b09aa0b3716e0aac42d5e775b7dc2e50 +TEST= 261 +PT= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 2bc5de990edcb21b439baff34c5735226be4e6b6646e180b +TEST= 262 +PT= ffffffffffffffffffffffffffffffc00000000000000000 +CT= 82786e7c374cd1d25c4f01d9b640156ba1341a718eeebefe +TEST= 263 +PT= ffffffffffffffffffffffffffffff800000000000000000 +CT= f98e19c08a6f65b39b65d681db051aeb85d3cf0429c76b17 +TEST= 264 +PT= ffffffffffffffffffffffffffffff000000000000000000 +CT= f59ed1d8f047602a0ff2721892f268cf4d2b9d861a8fcaac +TEST= 265 +PT= fffffffffffffffffffffffffffffe000000000000000000 +CT= 942f06a9e25b857f8c7450dd3a44f5eb42eac7ba62c2cd3a +TEST= 266 +PT= fffffffffffffffffffffffffffffc000000000000000000 +CT= 4595a6284eab870c1b00337d8b581f2b81bbd06168ff25c9 +TEST= 267 +PT= fffffffffffffffffffffffffffff8000000000000000000 +CT= 6bfcc2419d931ba5ee7b4cd868eab140744215b8f33d8bf6 +TEST= 268 +PT= fffffffffffffffffffffffffffff0000000000000000000 +CT= 5967620fd4d2aabfbb67fdfda49b501da0c98d67d0d7eccc +TEST= 269 +PT= ffffffffffffffffffffffffffffe0000000000000000000 +CT= 828be518fb374611c6459dc52419ab8ff8d38731a60c7e2d +TEST= 270 +PT= ffffffffffffffffffffffffffffc0000000000000000000 +CT= f1360b3eab89affc1f7bf067af2e32dab755db7ec94ddd81 +TEST= 271 +PT= ffffffffffffffffffffffffffff80000000000000000000 +CT= 6e0d1e3977afa26f7b85a9c0f1b65ca4b4128c39b04f4e37 +TEST= 272 +PT= ffffffffffffffffffffffffffff00000000000000000000 +CT= e113ed3d6ed3f4b25610ff25a8ec320846d2c847b0f3e64b +TEST= 273 +PT= fffffffffffffffffffffffffffe00000000000000000000 +CT= 6f8d467ec132a01bbee0452984b05d611881f74f3fbf116d +TEST= 274 +PT= fffffffffffffffffffffffffffc00000000000000000000 +CT= e038b4520b4a83bcf33ca0768c62108db6032acbe14e49ec +TEST= 275 +PT= fffffffffffffffffffffffffff800000000000000000000 +CT= c1fb48cbc706661b80078599c6b4d79fb8366606dd2684e2 +TEST= 276 +PT= fffffffffffffffffffffffffff000000000000000000000 +CT= 7bf3179e63f32fd72df42594f5ea32802fdadccffd19448c +TEST= 277 +PT= ffffffffffffffffffffffffffe000000000000000000000 +CT= 750cfdb75f760f6bc6535835e62ec2fdcf42f31936b6fbda +TEST= 278 +PT= ffffffffffffffffffffffffffc000000000000000000000 +CT= ac9961cbd05e52ddcd9507d14dbdb5acd938b8a010d8c0d4 +TEST= 279 +PT= ffffffffffffffffffffffffff8000000000000000000000 +CT= cfcd9925304ac1684f660abc56f029fdbfe1968db874ff07 +TEST= 280 +PT= ffffffffffffffffffffffffff0000000000000000000000 +CT= 1e143f83031e2e9648b639451fb470b740b35cf61726a8f8 +TEST= 281 +PT= fffffffffffffffffffffffffe0000000000000000000000 +CT= 3ee7fe5b3e69a78ff7a1c0417ebd7d9a5645c19ac8bb27d2 +TEST= 282 +PT= fffffffffffffffffffffffffc0000000000000000000000 +CT= 1f0b1b9d380b14bba38378491e124c7b4b37578bc6dbca03 +TEST= 283 +PT= fffffffffffffffffffffffff80000000000000000000000 +CT= 01b36361770100026094412bc9e67e3dffe3b78e512395e6 +TEST= 284 +PT= fffffffffffffffffffffffff00000000000000000000000 +CT= 0f009d0452d5d99c3dbee30cd17a7353e1a247a89cdeeb0a +TEST= 285 +PT= ffffffffffffffffffffffffe00000000000000000000000 +CT= 11ffb5030f64be611f177b25137abda95f2d5f8c5b9c3b05 +TEST= 286 +PT= ffffffffffffffffffffffffc00000000000000000000000 +CT= fc851f405bc852735f6e59733a21b7ded2691031e7906d18 +TEST= 287 +PT= ffffffffffffffffffffffff800000000000000000000000 +CT= 8470ee6e11447aae83a511986ed208e8ac15f4dd3a22d956 +TEST= 288 +PT= ffffffffffffffffffffffff000000000000000000000000 +CT= 8403882ec14c1690ef96445a9838ddb665929a0cc1bd6b74 +TEST= 289 +PT= fffffffffffffffffffffffe000000000000000000000000 +CT= 0d9f472c2828e9920f01139e712f780d17be144714b78b99 +TEST= 290 +PT= fffffffffffffffffffffffc000000000000000000000000 +CT= 0bf2d606b0b0ebdc3164ce174c4025ccf6291d0cffd59497 +TEST= 291 +PT= fffffffffffffffffffffff8000000000000000000000000 +CT= 920b1db25833774b951db74cbb9e70cb56b2a37d2f67c14f +TEST= 292 +PT= fffffffffffffffffffffff0000000000000000000000000 +CT= f90d6c6fb5ca602946808ac88490c083c598f8a355c8d315 +TEST= 293 +PT= ffffffffffffffffffffffe0000000000000000000000000 +CT= 7e16709f85356116d8a632f45485daa074c5395236df0b40 +TEST= 294 +PT= ffffffffffffffffffffffc0000000000000000000000000 +CT= dbf8300836785e75d2ce93463ed3c761c4fcc8ba0149600e +TEST= 295 +PT= ffffffffffffffffffffff80000000000000000000000000 +CT= bf1d1cd8293b2a84fc1381f15483cc5aa611c9a5d102f86d +TEST= 296 +PT= ffffffffffffffffffffff00000000000000000000000000 +CT= 9344b4f1daf30bf0d7064a1290514f9f24b1ffc3f29861f0 +TEST= 297 +PT= fffffffffffffffffffffe00000000000000000000000000 +CT= 2788aca5f7d22d7c4f0b3676e76b396a3409c8cb3f506665 +TEST= 298 +PT= fffffffffffffffffffffc00000000000000000000000000 +CT= a64311a016bdcad33bcf778ca0f6030126e6c24927056f7a +TEST= 299 +PT= fffffffffffffffffffff800000000000000000000000000 +CT= 64b80f71557dea8dd44b6b9193b53b369fa55e08e7732a8b +TEST= 300 +PT= fffffffffffffffffffff000000000000000000000000000 +CT= c8370aaa1a060b5491a3f262db6b779cd5ae52d51d7437b6 +TEST= 301 +PT= ffffffffffffffffffffe000000000000000000000000000 +CT= 14e1b174664a2ac73d55f4e085bccc6f0fbb815dd307eb9b +TEST= 302 +PT= ffffffffffffffffffffc000000000000000000000000000 +CT= f2e985692482d923e3543d476071a4963fcd8e17eb4c7089 +TEST= 303 +PT= ffffffffffffffffffff8000000000000000000000000000 +CT= a3bab136f13d9ddb3be18a97156f9f8cf2dd64d6c969ce1a +TEST= 304 +PT= ffffffffffffffffffff0000000000000000000000000000 +CT= 32d043480397ea20e156d70bae2482f03ac80eec249eb0cc +TEST= 305 +PT= fffffffffffffffffffe0000000000000000000000000000 +CT= ba710eb61d3b30e380a1b8cc092ac131f6f5d673895817c7 +TEST= 306 +PT= fffffffffffffffffffc0000000000000000000000000000 +CT= 4d4c32fa17f161f4cbfada6a5d7f52a55a672636a6f40254 +TEST= 307 +PT= fffffffffffffffffff80000000000000000000000000000 +CT= c16079655d63489088ffa44e04b3981f279e46ba74cfa2ee +TEST= 308 +PT= fffffffffffffffffff00000000000000000000000000000 +CT= 66e7afa38b68caecaff51e30d618d0137be90289ed0c0990 +TEST= 309 +PT= ffffffffffffffffffe00000000000000000000000000000 +CT= 386a882324d85d482239fa5ed0bd6009e9e3d943b0f52aae +TEST= 310 +PT= ffffffffffffffffffc00000000000000000000000000000 +CT= e27a0d76c7a2e8a9529fa5cc9f767bd08b1c11b0afeb705f +TEST= 311 +PT= ffffffffffffffffff800000000000000000000000000000 +CT= cc800f74efa9e61e176a6474caae9dad92c6432a9906b29f +TEST= 312 +PT= ffffffffffffffffff000000000000000000000000000000 +CT= f3ca1bdc0c2aac02ffc7c31155d74296013ec9c923da179b +TEST= 313 +PT= fffffffffffffffffe000000000000000000000000000000 +CT= 3c6fa4dea3fafba6dcb80af2a11f4bbc94fd2145e025414d +TEST= 314 +PT= fffffffffffffffffc000000000000000000000000000000 +CT= cea9a3dc06fd3d812509e5c267ec84f86a599b65c5d146bf +TEST= 315 +PT= fffffffffffffffff8000000000000000000000000000000 +CT= 00c5cc23c1b3ff7cc501ae6e9b76cd8764e882c97a5dc7fb +TEST= 316 +PT= fffffffffffffffff0000000000000000000000000000000 +CT= f9f8315dfb9923fd6e109f617f9891af14be30129e0b3f4d +TEST= 317 +PT= ffffffffffffffffe0000000000000000000000000000000 +CT= fcb5ede3228072e0a45aa72a44e0b9baf3912f24b575881a +TEST= 318 +PT= ffffffffffffffffc0000000000000000000000000000000 +CT= 34354165291ef9f4ff8e79881ff9b63c93ef1112fb956a6e +TEST= 319 +PT= ffffffffffffffff80000000000000000000000000000000 +CT= 74095cbde04781014a98ef964f11f2fe314ad0c6e6f83863 +TEST= 320 +PT= ffffffffffffffff00000000000000000000000000000000 +CT= 9a21334047e4eefaf87011ec5525b5acad9fa71eb3504f82 +TEST= 321 +PT= fffffffffffffffe00000000000000000000000000000000 +CT= 6d3849b1f86a2e00144d68db54e8879b775288f4df2dda01 +TEST= 322 +PT= fffffffffffffffc00000000000000000000000000000000 +CT= dfefa58376652ff03cd0db3803c54e07ef440a031b10b3e0 +TEST= 323 +PT= fffffffffffffff800000000000000000000000000000000 +CT= b6be6f0758810951e108b35d32a75fe2ccb6287ddaa9130c +TEST= 324 +PT= fffffffffffffff000000000000000000000000000000000 +CT= 68a1f562e107b51cf860beb6691e325c6f542606bc3f15d5 +TEST= 325 +PT= ffffffffffffffe000000000000000000000000000000000 +CT= a246dd3a028b2ad601b2aecea9970a7af7b281fa1f6004ae +TEST= 326 +PT= ffffffffffffffc000000000000000000000000000000000 +CT= 838a7c8c932886973771149f83352ef36453edd771fd4893 +TEST= 327 +PT= ffffffffffffff8000000000000000000000000000000000 +CT= 5f3c7525014f9521d7d787dcf85a214cd3275cc565016fb2 +TEST= 328 +PT= ffffffffffffff0000000000000000000000000000000000 +CT= 3647679222400100e5c8a4bdb2d8144af14b87323e5543b2 +TEST= 329 +PT= fffffffffffffe0000000000000000000000000000000000 +CT= 46f5c10996a138dc15979ee0d8d7f5d9c26624999228ff9a +TEST= 330 +PT= fffffffffffffc0000000000000000000000000000000000 +CT= 2e0665ec86c35139a20c9c5b113385b468343d59c03bac71 +TEST= 331 +PT= fffffffffffff80000000000000000000000000000000000 +CT= 465432c4d40fed1a08c4f8c8e4739a33f58ffe9fd194a2d7 +TEST= 332 +PT= fffffffffffff00000000000000000000000000000000000 +CT= 4f45d07799910cba21f5c2b26d3642e06f13e81b8f1da46e +TEST= 333 +PT= ffffffffffffe00000000000000000000000000000000000 +CT= 82ecd6412d8bca10301c0e4566f5f3a045f752bbc7711a79 +TEST= 334 +PT= ffffffffffffc00000000000000000000000000000000000 +CT= c68647f2f92f3504228b90ad86719a2a4ad19f0c300ffc9a +TEST= 335 +PT= ffffffffffff800000000000000000000000000000000000 +CT= ae03ca1d638c4aeef035ca605068ba0cd7609475f610f287 +TEST= 336 +PT= ffffffffffff000000000000000000000000000000000000 +CT= 4a49b537a89d40981d370e042d4e7cb901e56592db73d950 +TEST= 337 +PT= fffffffffffe000000000000000000000000000000000000 +CT= 97b5809a447e292e003c73b76378f84dffe2736ae3d67f65 +TEST= 338 +PT= fffffffffffc000000000000000000000000000000000000 +CT= 3aaf915c5ea9a37b155c14c4f5ca8319b8523b1cc5872556 +TEST= 339 +PT= fffffffffff8000000000000000000000000000000000000 +CT= 16a8907a0edaf6bc0c94be73391c6903a258f90912654d58 +TEST= 340 +PT= fffffffffff0000000000000000000000000000000000000 +CT= ad52f29b925f7b9a9bddd5f2d4e1509a6580dd70b60567fb +TEST= 341 +PT= ffffffffffe0000000000000000000000000000000000000 +CT= 82b7e796e4e8c151a19e46d1e39d1597076290e8a781a17d +TEST= 342 +PT= ffffffffffc0000000000000000000000000000000000000 +CT= b93a3d3ff615ef50425a94e78cf443e10ae613c7c10279be +TEST= 343 +PT= ffffffffff80000000000000000000000000000000000000 +CT= 75e84510c935df139a3da57b192435503c45f1b38302d549 +TEST= 344 +PT= ffffffffff00000000000000000000000000000000000000 +CT= 97c638c3c9468e5f40cd30bdd56f12cec3c48a3260f35517 +TEST= 345 +PT= fffffffffe00000000000000000000000000000000000000 +CT= 476e2ac3acc0e16fe35c2d4c964bca8e77d6b4ccd6d38d43 +TEST= 346 +PT= fffffffffc00000000000000000000000000000000000000 +CT= 59eb5b90ed655170dd0bdf7359444cb02f6209ec1f6d8da3 +TEST= 347 +PT= fffffffff800000000000000000000000000000000000000 +CT= 186c7f37e51c7e887f8e4b690557bb70b4560a3271945ae6 +TEST= 348 +PT= fffffffff000000000000000000000000000000000000000 +CT= 5c1a6a8454d23a4f50344e08c7c14b7abca7e1c5bfb60189 +TEST= 349 +PT= ffffffffe000000000000000000000000000000000000000 +CT= 4259df39ec106191596478867c4a3d6e56f9e753dd6138cc +TEST= 350 +PT= ffffffffc000000000000000000000000000000000000000 +CT= 8f872e5d7db8c023056dbd4e13624b55db7b41c2dd52363d +TEST= 351 +PT= ffffffff8000000000000000000000000000000000000000 +CT= a79c896133c87691c7abdd8f49e57a1e7245b2c68d854b3b +TEST= 352 +PT= ffffffff0000000000000000000000000000000000000000 +CT= 14fc39794c3468b458de0164c09d1f448ab0097dd0cdfa0b +TEST= 353 +PT= fffffffe0000000000000000000000000000000000000000 +CT= 5a6d8cda81f0d76d50056693c7d8ae0ea119ac74a6c57cfe +TEST= 354 +PT= fffffffc0000000000000000000000000000000000000000 +CT= 01c75236b6e68db17dc8a4c62a7c80b199700189766a7d1a +TEST= 355 +PT= fffffff80000000000000000000000000000000000000000 +CT= 3b04bf5bc5ec7bf18d7a688bb43ea296753233c1d839e87e +TEST= 356 +PT= fffffff00000000000000000000000000000000000000000 +CT= 846dc693e59c05e23f71926800bda586f76ba65b03ddcaba +TEST= 357 +PT= ffffffe00000000000000000000000000000000000000000 +CT= 784f8c0d47df80276f73fe5b5a73da1696f761894974aa4f +TEST= 358 +PT= ffffffc00000000000000000000000000000000000000000 +CT= ddd48d9118601b8c3aa88d239ffeddd385a85bf47f47bf50 +TEST= 359 +PT= ffffff800000000000000000000000000000000000000000 +CT= dacf99810807f55c6ccc87bc764bf0a86318e1a2c03dc5aa +TEST= 360 +PT= ffffff000000000000000000000000000000000000000000 +CT= 46daed85c0e992994adc91acf7595b7b8f27036526f54368 +TEST= 361 +PT= fffffe000000000000000000000000000000000000000000 +CT= 57c0744bd983c1d4746b3e402dbb5a2e1ed5e71a8e2a53b1 +TEST= 362 +PT= fffffc000000000000000000000000000000000000000000 +CT= 068125bba679a243ac8a7cfd259ee06a756cec8e0a64044b +TEST= 363 +PT= fffff8000000000000000000000000000000000000000000 +CT= cca0c49d18c4630b7927bed2925332981695bf2f651615c7 +TEST= 364 +PT= fffff0000000000000000000000000000000000000000000 +CT= a700a84d552317aae733085193396f49ea594ec64a19ca2e +TEST= 365 +PT= ffffe0000000000000000000000000000000000000000000 +CT= beba599341e0c7bb78184b851195cc12ea42658075d0b6bc +TEST= 366 +PT= ffffc0000000000000000000000000000000000000000000 +CT= c5fc95e423c0a8314bef17cdac3a08eaa724a45a1ea7bd0d +TEST= 367 +PT= ffff80000000000000000000000000000000000000000000 +CT= f06733657e27343b34c7ab990eef1702e57ba0933b2b1d2d +TEST= 368 +PT= ffff00000000000000000000000000000000000000000000 +CT= 38a4bed21446506a2cf0fa7dcf7e0a330616f8c6636def13 +TEST= 369 +PT= fffe00000000000000000000000000000000000000000000 +CT= 262a928a38ab201501485dfc0d63905ceb74d90a8040e154 +TEST= 370 +PT= fffc00000000000000000000000000000000000000000000 +CT= be7a1416af25e0291c9ef700d5c0fa0c012c0beb5f03cb90 +TEST= 371 +PT= fff800000000000000000000000000000000000000000000 +CT= 0a90d7afc235564ec297c4d884b7037436daae55f27fb36a +TEST= 372 +PT= fff000000000000000000000000000000000000000000000 +CT= c6f51bdafb594ad4d25295b5801e4bdffffa08f13f125a1c +TEST= 373 +PT= ffe000000000000000000000000000000000000000000000 +CT= 9fa78adf05482427e71dd048a8f26dc5883c0f2feead3a5e +TEST= 374 +PT= ffc000000000000000000000000000000000000000000000 +CT= 424e3b80740387e13fd4a00ccd6ac5ba5ab96575747daa55 +TEST= 375 +PT= ff8000000000000000000000000000000000000000000000 +CT= 940dc088f143a477c1175e7cf141bb051d076775240a505f +TEST= 376 +PT= ff0000000000000000000000000000000000000000000000 +CT= df1ab10877fe05d5b92b9d1bbdbc95fece8715297a947fee +TEST= 377 +PT= fe0000000000000000000000000000000000000000000000 +CT= 7d690ff3b03ee2e77e16919c069ae02ed7bf82c29729256a +TEST= 378 +PT= fc0000000000000000000000000000000000000000000000 +CT= 7a2c43567bda2f19748bf15da219146a2b39bd13f506f943 +TEST= 379 +PT= f80000000000000000000000000000000000000000000000 +CT= 89d6652d1298e2e7620ae3343f31470e17b81873695c3d24 +TEST= 380 +PT= f00000000000000000000000000000000000000000000000 +CT= 879315e126cd65de6ba2daae23771bedabfcda5b2863e843 +TEST= 381 +PT= e00000000000000000000000000000000000000000000000 +CT= e2aca27469d54a2e63ee440910616f6123c1b9bba1581872 +TEST= 382 +PT= c00000000000000000000000000000000000000000000000 +CT= a67a69aabf14a22540fe29e6f94ff5ab028e89127ecf2982 +TEST= 383 +PT= 800000000000000000000000000000000000000000000000 +CT= 1731ef5e3daa190268df945239bb11e0d7b9c48cf5eec4e3 diff --git a/flint/test/testvals/ecbnt68.txt b/flint/test/testvals/ecbnt68.txt new file mode 100644 index 0000000..4913559 --- /dev/null +++ b/flint/test/testvals/ecbnt68.txt @@ -0,0 +1,1163 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= 17004e806faef168fc9cd56f98f070982075c70c8132b945 +TEST= 1 +PT= 000000000000000000000000000000000000000000000001 +CT= ebef350a100c2652694e7bdc4e39d27c4ac7774363f855af +TEST= 2 +PT= 000000000000000000000000000000000000000000000003 +CT= c0278548ee6edd1bac869059806e97a709c86e722a4ecd2b +TEST= 3 +PT= 000000000000000000000000000000000000000000000007 +CT= feb8a46a67944d13e41d537d7bbbecf7bb9d24aaaef6ea6b +TEST= 4 +PT= 00000000000000000000000000000000000000000000000f +CT= 567f89622db90df34bd1d748577427406827f5fd60aa1afb +TEST= 5 +PT= 00000000000000000000000000000000000000000000001f +CT= 1d07e2740f3a20268119012f344d65f5f3c8551d12b5766c +TEST= 6 +PT= 00000000000000000000000000000000000000000000003f +CT= 4d8611f818b9edea4dcdedb88746382d95bca2e54fb81862 +TEST= 7 +PT= 00000000000000000000000000000000000000000000007f +CT= 1e1b862b21d4255349ac5579d6249bad5ce1b5135aa92c04 +TEST= 8 +PT= 0000000000000000000000000000000000000000000000ff +CT= 84d56dc01f4d8cf89eb04c69a05ac4574554aa0d5e08bfcb +TEST= 9 +PT= 0000000000000000000000000000000000000000000001ff +CT= 2710491760718f9f97baadf8fabb09759cd5a61d78c737e2 +TEST= 10 +PT= 0000000000000000000000000000000000000000000003ff +CT= 05576fcd4e7e16557b9b5b13eaea3a2941795641d8315e0c +TEST= 11 +PT= 0000000000000000000000000000000000000000000007ff +CT= 6b3181a11740cef71baa4ec71837b595e848c2161abab14d +TEST= 12 +PT= 000000000000000000000000000000000000000000000fff +CT= 0654913e45637a0dee9e99f0c34d96e3d8387b48eff565e3 +TEST= 13 +PT= 000000000000000000000000000000000000000000001fff +CT= 830461b3cb909d008ed66689c5ba32c4b87366d77aaf82da +TEST= 14 +PT= 000000000000000000000000000000000000000000003fff +CT= 4a0844dfe3c2e12acbfa59f244fce0c56ea31d66783dbcdd +TEST= 15 +PT= 000000000000000000000000000000000000000000007fff +CT= ecff2423e001ca71fdad6be6062801d44c199c75a3a6b1b7 +TEST= 16 +PT= 00000000000000000000000000000000000000000000ffff +CT= f547283b0865d1817aa4c3127941bb8248e4aed9a7f63094 +TEST= 17 +PT= 00000000000000000000000000000000000000000001ffff +CT= 1c238a9e9679efea1f3588b020b64f7429da5333dde32102 +TEST= 18 +PT= 00000000000000000000000000000000000000000003ffff +CT= 14adecdf23dd6588f09cc8991ceb9b6e256ab3d5f3af95b3 +TEST= 19 +PT= 00000000000000000000000000000000000000000007ffff +CT= a1d0d47747a7a1f9a3b0f605f1ad564d148994bbbe00440a +TEST= 20 +PT= 0000000000000000000000000000000000000000000fffff +CT= d69a600746fd979cd6416537b15e33c99ec86d67a6ecdb5e +TEST= 21 +PT= 0000000000000000000000000000000000000000001fffff +CT= 38cdf6055a4d83489bf2036977cb30f344d9a3eea8f5279b +TEST= 22 +PT= 0000000000000000000000000000000000000000003fffff +CT= 2dd1e7150b507a02d365ac30bea91ee0f0a5bd94bd5d62eb +TEST= 23 +PT= 0000000000000000000000000000000000000000007fffff +CT= d105d37eaf40a4add31cf419e11dbdb5342388784030c28a +TEST= 24 +PT= 000000000000000000000000000000000000000000ffffff +CT= 69852a7380692b1ebddc5338699feda529fd2be36e5e04d3 +TEST= 25 +PT= 000000000000000000000000000000000000000001ffffff +CT= 40a608c88978e16ee7248c3dd7e579456a6c4c56fd0260a0 +TEST= 26 +PT= 000000000000000000000000000000000000000003ffffff +CT= 208c7c679ed7626386a1e9aeffe807c1f060756d268f299f +TEST= 27 +PT= 000000000000000000000000000000000000000007ffffff +CT= dd31a806411d873a45eb4e978aa2d172f6eda97e21582352 +TEST= 28 +PT= 00000000000000000000000000000000000000000fffffff +CT= 82c45abd234b4677ec413677875d3ce56f485e0821a91888 +TEST= 29 +PT= 00000000000000000000000000000000000000001fffffff +CT= 87cf5b174607956dff5a696bb44ee277938af31bc63a006d +TEST= 30 +PT= 00000000000000000000000000000000000000003fffffff +CT= 1352aefe1d8445f2c22ebf653914f6cb66ddf62b29cf29ab +TEST= 31 +PT= 00000000000000000000000000000000000000007fffffff +CT= 5b5ad9ba545c782ca2cac76cad377bea722a8ff85337e03e +TEST= 32 +PT= 0000000000000000000000000000000000000000ffffffff +CT= 75c5f9b35c951ecaeb2909bcd36485dfb13f6f437d159e24 +TEST= 33 +PT= 0000000000000000000000000000000000000001ffffffff +CT= f873819e609002848282fa317f0248bc2cd856685eda05af +TEST= 34 +PT= 0000000000000000000000000000000000000003ffffffff +CT= 370d10b41643af74afd2bc8220e8f97d151d97880937ffb9 +TEST= 35 +PT= 0000000000000000000000000000000000000007ffffffff +CT= 01265ea3802b766ca179d2078f859fe4cd3639b040cbaa3b +TEST= 36 +PT= 000000000000000000000000000000000000000fffffffff +CT= 92558aaaf8f1c083d4c9f52730a4e5fbe64be1c2cc9f75e9 +TEST= 37 +PT= 000000000000000000000000000000000000001fffffffff +CT= 11c95926b7b05b41de76d21675c06df518e3667f9974bff7 +TEST= 38 +PT= 000000000000000000000000000000000000003fffffffff +CT= 8b797d3f8f7ae70a3198fbab61b670b9045f87b51aa45be6 +TEST= 39 +PT= 000000000000000000000000000000000000007fffffffff +CT= b3d54abd57871707e331ccc6e808be4b45076a76b7cdebc6 +TEST= 40 +PT= 00000000000000000000000000000000000000ffffffffff +CT= a24bf84dfcbac4a3dafb5bf6adbf6373522d07c1e16b6492 +TEST= 41 +PT= 00000000000000000000000000000000000001ffffffffff +CT= 535331915d9ed87e8abead6555b0118902fe29359a8a66e2 +TEST= 42 +PT= 00000000000000000000000000000000000003ffffffffff +CT= a17204a08a537f3ba5070712de77aaee651957c1a4a87a81 +TEST= 43 +PT= 00000000000000000000000000000000000007ffffffffff +CT= 2f43c82ae2e3ee003efe82dc83b47e62221f115f44d2f1d7 +TEST= 44 +PT= 0000000000000000000000000000000000000fffffffffff +CT= c38546e9099b6287cadd7d3b7cf96bcc0ab360664452261c +TEST= 45 +PT= 0000000000000000000000000000000000001fffffffffff +CT= 68213c210aba619ce028ae451a2386682eb4ec377b12f463 +TEST= 46 +PT= 0000000000000000000000000000000000003fffffffffff +CT= fea3338d496cce71ab85d55a04ec119a4db6a0ef5082ea88 +TEST= 47 +PT= 0000000000000000000000000000000000007fffffffffff +CT= 27add0c312a40e7ca11bfe50d84b499c21ad4485c5070293 +TEST= 48 +PT= 000000000000000000000000000000000000ffffffffffff +CT= 321f72f53e472706545d5a38c648bfdb3f0b0a80c97d3689 +TEST= 49 +PT= 000000000000000000000000000000000001ffffffffffff +CT= ce0bf101828ac5ef9f338577680d90c95b2c586749fc4bc3 +TEST= 50 +PT= 000000000000000000000000000000000003ffffffffffff +CT= 4c018ba27d39befe4ffed4761f5a4645e4f7a82fb86e7b59 +TEST= 51 +PT= 000000000000000000000000000000000007ffffffffffff +CT= a8962a0f695d726ef84034c2c80b5e791372782ca214246a +TEST= 52 +PT= 00000000000000000000000000000000000fffffffffffff +CT= e2b81e403ee550db09b61fcb910a1c8af6060a92da91dfc2 +TEST= 53 +PT= 00000000000000000000000000000000001fffffffffffff +CT= c61f6037357e87b4a3219fac3b5706244291bed5fd45e5b9 +TEST= 54 +PT= 00000000000000000000000000000000003fffffffffffff +CT= 7aa8b8f7e13c0f968f00ee29c3c480adc0b2ba7c7c8408bd +TEST= 55 +PT= 00000000000000000000000000000000007fffffffffffff +CT= 11d4943eba0d5d06331224dfbfb7e49834ac0d5b264afb9b +TEST= 56 +PT= 0000000000000000000000000000000000ffffffffffffff +CT= c69464f78b22dfe526366dd0b9470551211dd7facabe9169 +TEST= 57 +PT= 0000000000000000000000000000000001ffffffffffffff +CT= f84837947c58e4a14f3730dd87128f5fca50d67f5d911bb5 +TEST= 58 +PT= 0000000000000000000000000000000003ffffffffffffff +CT= 77a29d9a1488789148a3734f8781a18563687888692849ca +TEST= 59 +PT= 0000000000000000000000000000000007ffffffffffffff +CT= 842b5e30c7ad8db5475a662bc6e151894126d1bbe2016d54 +TEST= 60 +PT= 000000000000000000000000000000000fffffffffffffff +CT= db1e5bb781c327ac3021edf775b9bf41be6237089297edf2 +TEST= 61 +PT= 000000000000000000000000000000001fffffffffffffff +CT= 92f045e223def38b81ff89f14ee28c44ee74899817e01013 +TEST= 62 +PT= 000000000000000000000000000000003fffffffffffffff +CT= c46eac56851cc448d3fbd09d166f3d195731d194ef617242 +TEST= 63 +PT= 000000000000000000000000000000007fffffffffffffff +CT= 7a06d664e989fba84e9374332f340c971ae4566edfa399ca +TEST= 64 +PT= 00000000000000000000000000000000ffffffffffffffff +CT= 5d38b7874895eec2592e6360122a09c32794c7ee75337b36 +TEST= 65 +PT= 00000000000000000000000000000001ffffffffffffffff +CT= 56a8341ed86391cf08b90f744b13e2a2c0fc6d5a0f6eba62 +TEST= 66 +PT= 00000000000000000000000000000003ffffffffffffffff +CT= caaa3719af0ffad73b66979dd6f6a7e21cd92ad7446e2984 +TEST= 67 +PT= 00000000000000000000000000000007ffffffffffffffff +CT= d60aaff023ff3bc1ba0c2752457a659eff1154b3bb82b9db +TEST= 68 +PT= 0000000000000000000000000000000fffffffffffffffff +CT= 85786bc4e5b936df3d356693f7d50cc9c3724f6efe694815 +TEST= 69 +PT= 0000000000000000000000000000001fffffffffffffffff +CT= e0cd77064f12f5cadb3776537982f9a4b6a2ee3da35c668d +TEST= 70 +PT= 0000000000000000000000000000003fffffffffffffffff +CT= ff912ac73c91bd6befe9ada18beaa5ff33daafcd87417468 +TEST= 71 +PT= 0000000000000000000000000000007fffffffffffffffff +CT= 48264338c81cac042e7c5cf0dea8acaab6e57895310b988b +TEST= 72 +PT= 000000000000000000000000000000ffffffffffffffffff +CT= 2bf16b1c582112eb91a26a366918f3a9013d2f34c863abd4 +TEST= 73 +PT= 000000000000000000000000000001ffffffffffffffffff +CT= 0fc8724446bb2525b5c02c593db56d540d46178b0b114d4c +TEST= 74 +PT= 000000000000000000000000000003ffffffffffffffffff +CT= 53526ac086b2205ffe97beb88e484a372a5f3821196f4271 +TEST= 75 +PT= 000000000000000000000000000007ffffffffffffffffff +CT= e34737ad61ec1325e56e95d5cb80718860bb449bde1bbd4c +TEST= 76 +PT= 00000000000000000000000000000fffffffffffffffffff +CT= 7c0865a43f552e9fc28481e0049e5b2108cc293a4555ee4e +TEST= 77 +PT= 00000000000000000000000000001fffffffffffffffffff +CT= 86b0f64a4c327dabdb3f4b091cffc27b600b3561d5782b14 +TEST= 78 +PT= 00000000000000000000000000003fffffffffffffffffff +CT= caa46bb4afa97072bc54eefb9d5048515fd87a3223bacf39 +TEST= 79 +PT= 00000000000000000000000000007fffffffffffffffffff +CT= d4b9bd3ed6a72d2336e71527d2cc4f80b0494ddb96365006 +TEST= 80 +PT= 0000000000000000000000000000ffffffffffffffffffff +CT= 015075a71045341fda941f2da278eea5d9708a0f98d3a488 +TEST= 81 +PT= 0000000000000000000000000001ffffffffffffffffffff +CT= 17883dd5f13a154efd7ebd3ea83c3e2106f704b8c8cde9ee +TEST= 82 +PT= 0000000000000000000000000003ffffffffffffffffffff +CT= ba7cb5c37b1bfb9b3736f226361976cdeaf080648b776112 +TEST= 83 +PT= 0000000000000000000000000007ffffffffffffffffffff +CT= 4ddbd1181a2ec97cfb3bce3eed8f3321833b6905576ee262 +TEST= 84 +PT= 000000000000000000000000000fffffffffffffffffffff +CT= 0a407d214cec8ff3c8d6bdcbf9cd65dbc58bb520540d88e4 +TEST= 85 +PT= 000000000000000000000000001fffffffffffffffffffff +CT= 3ec07f6319cc4384e2d606853dcf2c6aa2e47cef656a5dca +TEST= 86 +PT= 000000000000000000000000003fffffffffffffffffffff +CT= 5c398224fff6b056e88f4cd3bd437dccd0c191a8a750bcee +TEST= 87 +PT= 000000000000000000000000007fffffffffffffffffffff +CT= 66d6ad987a9258dcdbb580b755e64f711b254c9c563cfdf3 +TEST= 88 +PT= 00000000000000000000000000ffffffffffffffffffffff +CT= 536853523f4a323df8532c05247fcdd50670c8640913dff8 +TEST= 89 +PT= 00000000000000000000000001ffffffffffffffffffffff +CT= ea886de18f25d509134d8d453ea3d473e81075518a003bf9 +TEST= 90 +PT= 00000000000000000000000003ffffffffffffffffffffff +CT= 201fd221f10fc0989ac8494f0c1b6e8ec5c93f58dc0d64dd +TEST= 91 +PT= 00000000000000000000000007ffffffffffffffffffffff +CT= a664e87bc5b228711aeab2be4554194862a20df3bbc28326 +TEST= 92 +PT= 0000000000000000000000000fffffffffffffffffffffff +CT= bf7bc6f08171993d791ea2fac59cc50398d69ef50282f45a +TEST= 93 +PT= 0000000000000000000000001fffffffffffffffffffffff +CT= f9dd0b010eaf7f67b6a285a6385b39dcb795b75e851b1508 +TEST= 94 +PT= 0000000000000000000000003fffffffffffffffffffffff +CT= 395c64118f1904ee2513aeeb8f3b9e963baf78dcd325b528 +TEST= 95 +PT= 0000000000000000000000007fffffffffffffffffffffff +CT= 8e9f44b6059363e69e3a243bc9af083bcc0cdb8dd797a1ac +TEST= 96 +PT= 000000000000000000000000ffffffffffffffffffffffff +CT= a9dbc7b0f74803f44d1260692a75259b639e8a0cd9369daa +TEST= 97 +PT= 000000000000000000000001ffffffffffffffffffffffff +CT= 8c556e14bf638027bf510c513cf309c65d94ad2c1b1fa3d2 +TEST= 98 +PT= 000000000000000000000003ffffffffffffffffffffffff +CT= 9e62b822c1c15dd694d3c8757e3c3e504dd96cbab8f435ce +TEST= 99 +PT= 000000000000000000000007ffffffffffffffffffffffff +CT= 178f358b9940fb63fdcd33a35011341f88975007baacb515 +TEST= 100 +PT= 00000000000000000000000fffffffffffffffffffffffff +CT= 4e3e1f20ff032e40d75de266ab110a8404bda560c98b14f9 +TEST= 101 +PT= 00000000000000000000001fffffffffffffffffffffffff +CT= e60126f5b3f88500eb50bbcef77762d81baf038c69698f08 +TEST= 102 +PT= 00000000000000000000003fffffffffffffffffffffffff +CT= 7f3962615e3055db10f40e7c493ea573b9762edf34abfed1 +TEST= 103 +PT= 00000000000000000000007fffffffffffffffffffffffff +CT= c2169db8c23136e56ba794021b20083cd827f99f98eacf85 +TEST= 104 +PT= 0000000000000000000000ffffffffffffffffffffffffff +CT= d0c6797d9d5884abd9c28c1318b3ac4a47bf5f19e3f94eec +TEST= 105 +PT= 0000000000000000000001ffffffffffffffffffffffffff +CT= a5d547c9329fb2919fa887b0bfca2888d82cc1c72f168f45 +TEST= 106 +PT= 0000000000000000000003ffffffffffffffffffffffffff +CT= d61db2e23b922c5e3591bbd6f8d0dc2ce584332db2da769a +TEST= 107 +PT= 0000000000000000000007ffffffffffffffffffffffffff +CT= 79b84b30d518862e206d499e1c6d55c4fd1ec34773eb4bdc +TEST= 108 +PT= 000000000000000000000fffffffffffffffffffffffffff +CT= 1d4f6c483455e8ae0bc3c12d1baf695a1dab9128f65149d9 +TEST= 109 +PT= 000000000000000000001fffffffffffffffffffffffffff +CT= aa181414e17784a0fcf2d21554264399d162b734ada99c9e +TEST= 110 +PT= 000000000000000000003fffffffffffffffffffffffffff +CT= 6b084500201ae6f9be876954b94b87718201f841ed7e97d3 +TEST= 111 +PT= 000000000000000000007fffffffffffffffffffffffffff +CT= 04b4f2448a00def61d6fc2e2f3400720263ba6a06ea11c42 +TEST= 112 +PT= 00000000000000000000ffffffffffffffffffffffffffff +CT= 05792a145bd6573d8b5f2586976b40540d1b89315a3c3cf8 +TEST= 113 +PT= 00000000000000000001ffffffffffffffffffffffffffff +CT= e7353db5cf98dce8aac63c516f611ed8e41bf8f5de216b5f +TEST= 114 +PT= 00000000000000000003ffffffffffffffffffffffffffff +CT= e65c34772b221187d162250ebc4e7b72a46743a4c27390fd +TEST= 115 +PT= 00000000000000000007ffffffffffffffffffffffffffff +CT= fafb19110fcaf3b47d326fd80c6bacc30cdd691af535aaf6 +TEST= 116 +PT= 0000000000000000000fffffffffffffffffffffffffffff +CT= fb8a269d1c1a8d9923e4d67ab5f9b3a47cf18dd5dac5417f +TEST= 117 +PT= 0000000000000000001fffffffffffffffffffffffffffff +CT= f2ae57ce2620eafabcdb687a97b767ce37d94865bd8f0786 +TEST= 118 +PT= 0000000000000000003fffffffffffffffffffffffffffff +CT= 5f66e457e5011ba775679fa5e4ad671d99a9c90e7e541b1d +TEST= 119 +PT= 0000000000000000007fffffffffffffffffffffffffffff +CT= 235520fcf1602fe33446ac092c23d05c9624c9e14f9bcfb2 +TEST= 120 +PT= 000000000000000000ffffffffffffffffffffffffffffff +CT= 1a3dcb289be342b8cbb0117d54ef6149f35f0d0b8e390caa +TEST= 121 +PT= 000000000000000001ffffffffffffffffffffffffffffff +CT= ff0434cf147f4175d34fc0f54d267091c4895caddc4b91cf +TEST= 122 +PT= 000000000000000003ffffffffffffffffffffffffffffff +CT= 7a3d54b143b562170caceca5bc0d0eb6478b740cf0a51563 +TEST= 123 +PT= 000000000000000007ffffffffffffffffffffffffffffff +CT= 70467fc79508554540e946867745430882a4ebb6d2fa8e82 +TEST= 124 +PT= 00000000000000000fffffffffffffffffffffffffffffff +CT= d82098df960581af1dbbc050284d36168538e2e00453e62b +TEST= 125 +PT= 00000000000000001fffffffffffffffffffffffffffffff +CT= 6416fd63b38962975bd6bc13803ed8141f328cf48c2da1d2 +TEST= 126 +PT= 00000000000000003fffffffffffffffffffffffffffffff +CT= 86ee8dc603f061398825b7345cdc82695baa0fc8e2fe8667 +TEST= 127 +PT= 00000000000000007fffffffffffffffffffffffffffffff +CT= 571e40d3aa2cd55bc19a6a71b224af4d8fa30a1f045cfaa6 +TEST= 128 +PT= 0000000000000000ffffffffffffffffffffffffffffffff +CT= f6da078cfe58a18b4880fc0b76e0765653c923c0a254fb16 +TEST= 129 +PT= 0000000000000001ffffffffffffffffffffffffffffffff +CT= 539ed981bda54f8716057e9bf63396f62d1277ac6568aafe +TEST= 130 +PT= 0000000000000003ffffffffffffffffffffffffffffffff +CT= b16f8982508322f76bfc0413c87f5859afbca75b3182c6eb +TEST= 131 +PT= 0000000000000007ffffffffffffffffffffffffffffffff +CT= 41b9da25d19b08c75f014a97ea49da15e7aa2a62e789867c +TEST= 132 +PT= 000000000000000fffffffffffffffffffffffffffffffff +CT= 659470e997bcc2d0b2430d9af13d3b9d6935787effd0d0f2 +TEST= 133 +PT= 000000000000001fffffffffffffffffffffffffffffffff +CT= d0ebcff20ccec8ff7587b4e175538e0868611705d8b547ed +TEST= 134 +PT= 000000000000003fffffffffffffffffffffffffffffffff +CT= 81c60b2ed80f724f2827bdb4b80f8bee2c965c50fa46c3cc +TEST= 135 +PT= 000000000000007fffffffffffffffffffffffffffffffff +CT= cb842ffe061674a57787574fc6b50ab75030a009a925ab87 +TEST= 136 +PT= 00000000000000ffffffffffffffffffffffffffffffffff +CT= 222ece01b35ff1c547a4f6d7321799769ec1dee351262543 +TEST= 137 +PT= 00000000000001ffffffffffffffffffffffffffffffffff +CT= 4634f100a4be2557091aa760c60b9f6d348db072e96f98f8 +TEST= 138 +PT= 00000000000003ffffffffffffffffffffffffffffffffff +CT= 4b37a3064436a06025d9e76ca6f26bb0e08a0bf27e7047c3 +TEST= 139 +PT= 00000000000007ffffffffffffffffffffffffffffffffff +CT= e31a23dfc07f6cfec5e906c787d28747761a69c900419df0 +TEST= 140 +PT= 0000000000000fffffffffffffffffffffffffffffffffff +CT= fa4b2b0a36ab41743654bab01567d53f556ac1b3a400e496 +TEST= 141 +PT= 0000000000001fffffffffffffffffffffffffffffffffff +CT= 58f3c1010b8c67085ee136d86ce4db54008116626be337eb +TEST= 142 +PT= 0000000000003fffffffffffffffffffffffffffffffffff +CT= e2ce534a4dc4b5fb60da0e748970a31f076ddbfc59aacdc9 +TEST= 143 +PT= 0000000000007fffffffffffffffffffffffffffffffffff +CT= bf6b70fdebedd8fcb1ab146d1ff57ecb45c67d790bfc9fbe +TEST= 144 +PT= 000000000000ffffffffffffffffffffffffffffffffffff +CT= d6e7da889cd8d5d856d87feb5b0c2d2457d817bdbd44439a +TEST= 145 +PT= 000000000001ffffffffffffffffffffffffffffffffffff +CT= c46368706791f61e44fe31e6de661bd53cda4600be765ee4 +TEST= 146 +PT= 000000000003ffffffffffffffffffffffffffffffffffff +CT= c3ba1f82593bbaa74f892ea2e0fae064e85366a27beaaca6 +TEST= 147 +PT= 000000000007ffffffffffffffffffffffffffffffffffff +CT= 305679889fc30cb21a8732f582ed077975b212adb4d6cd12 +TEST= 148 +PT= 00000000000fffffffffffffffffffffffffffffffffffff +CT= 7198fe8a1af4ba50e5652eb5599b627ac358d159607602ce +TEST= 149 +PT= 00000000001fffffffffffffffffffffffffffffffffffff +CT= 0608ea5043cfcb36fb566edd5cff90964ce82be7a4b7ae24 +TEST= 150 +PT= 00000000003fffffffffffffffffffffffffffffffffffff +CT= e10e8723800f6cbde3f15fc896590cdda471a9062906398d +TEST= 151 +PT= 00000000007fffffffffffffffffffffffffffffffffffff +CT= 6120989f7a6db7dd4055f6b9f08cdc3557318234f6c83920 +TEST= 152 +PT= 0000000000ffffffffffffffffffffffffffffffffffffff +CT= d36b4d32f125dd4dfc97d99563a421a9a831caae3fa3acdc +TEST= 153 +PT= 0000000001ffffffffffffffffffffffffffffffffffffff +CT= 04fabba3ea98227cbada04495404b77737725adc32c702e9 +TEST= 154 +PT= 0000000003ffffffffffffffffffffffffffffffffffffff +CT= 365018aeb846bdeacb192eae246a3fb764d854f0408d1270 +TEST= 155 +PT= 0000000007ffffffffffffffffffffffffffffffffffffff +CT= b64eaa56689db8befa9f7f380e35cb46ba5b766332f949ea +TEST= 156 +PT= 000000000fffffffffffffffffffffffffffffffffffffff +CT= cfda916e967e498cbe6ef9c33a6c43d5c25c51b85caf6eca +TEST= 157 +PT= 000000001fffffffffffffffffffffffffffffffffffffff +CT= 1dddd5ea2f6841aa6e413a579dc7ddd41237d8f62aeca1e1 +TEST= 158 +PT= 000000003fffffffffffffffffffffffffffffffffffffff +CT= 2a804ba85690842adf2afd90a7eced0c207814d82138f134 +TEST= 159 +PT= 000000007fffffffffffffffffffffffffffffffffffffff +CT= 57365b456c8ce5971ff9191073343e37e9a2515aa962ac87 +TEST= 160 +PT= 00000000ffffffffffffffffffffffffffffffffffffffff +CT= 4229c544f34b73fcdd0ab9b1c5d9fb6d50996de274460c74 +TEST= 161 +PT= 00000001ffffffffffffffffffffffffffffffffffffffff +CT= 93e39b7388db2d1facee5e86d6e0912deab42a38f223f2c8 +TEST= 162 +PT= 00000003ffffffffffffffffffffffffffffffffffffffff +CT= dde69cb06d3a98043b800e083a5bdf91906843a469efec10 +TEST= 163 +PT= 00000007ffffffffffffffffffffffffffffffffffffffff +CT= a1b8da7a364f5868ba6b0f4170ebc6cfc7d3e929e2b7e518 +TEST= 164 +PT= 0000000fffffffffffffffffffffffffffffffffffffffff +CT= 55250f3b038caeafa5c57279c550f3b6e8409cc166e45612 +TEST= 165 +PT= 0000001fffffffffffffffffffffffffffffffffffffffff +CT= 5ad885d379e9ba0a88afa9a82fedda92398f8a6cf4c7f05a +TEST= 166 +PT= 0000003fffffffffffffffffffffffffffffffffffffffff +CT= aba8a9ac72a0332b909deb326ac8467ae83c19ef51ffea46 +TEST= 167 +PT= 0000007fffffffffffffffffffffffffffffffffffffffff +CT= 81d384c652d3c3dd0987bf7309b095f5ba8c13279a6d52fa +TEST= 168 +PT= 000000ffffffffffffffffffffffffffffffffffffffffff +CT= ceb762052fe9c518c602e2c2371c0d771e79b21f692297e4 +TEST= 169 +PT= 000001ffffffffffffffffffffffffffffffffffffffffff +CT= 2941643f5fe67960af165f01a598a82687e6b0f33f0801b1 +TEST= 170 +PT= 000003ffffffffffffffffffffffffffffffffffffffffff +CT= 305dcfa4434de9b396cb6a202da8a91679901e353a006863 +TEST= 171 +PT= 000007ffffffffffffffffffffffffffffffffffffffffff +CT= 61a1e72f85559b2aa34b72fb21f21a21dbb0884221008fc0 +TEST= 172 +PT= 00000fffffffffffffffffffffffffffffffffffffffffff +CT= ea69c4beb220889d3a008626e84beee8c1861bf69e0a26e3 +TEST= 173 +PT= 00001fffffffffffffffffffffffffffffffffffffffffff +CT= a42d8e24260bfc2d120c9dae56ac2bed2d0eb0da6321694b +TEST= 174 +PT= 00003fffffffffffffffffffffffffffffffffffffffffff +CT= b63231ea20ad8768ca05d9d45e5e9c5a06bcce6fc697a321 +TEST= 175 +PT= 00007fffffffffffffffffffffffffffffffffffffffffff +CT= 09b2c83e4690d87f83cd535ae6605859b06bbcc2dbc2ab19 +TEST= 176 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffff +CT= 5aa2ada1ea47a54f37adb87285659e21da6ea8076068650f +TEST= 177 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffff +CT= c737d2045b95756b8395daf9faf95c3befec823816a6e18d +TEST= 178 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffff +CT= 097cc8b34fa1de55138731400536fb5d0b53ec20fceb2284 +TEST= 179 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffff +CT= dfdfe230cde292ee200c4b734ad4327665af66f0521e143e +TEST= 180 +PT= 000fffffffffffffffffffffffffffffffffffffffffffff +CT= cb71b94e70b7ec971ad1518da89c2d15a2e90a3683b1b5f1 +TEST= 181 +PT= 001fffffffffffffffffffffffffffffffffffffffffffff +CT= e89b63166af1600a4e3de440f713736d2002054a1d8c4544 +TEST= 182 +PT= 003fffffffffffffffffffffffffffffffffffffffffffff +CT= 62b7b153b02297993a07639dd5f4c485aadec99cc4170251 +TEST= 183 +PT= 007fffffffffffffffffffffffffffffffffffffffffffff +CT= 686a904de341ca2d749dea61c29aa3b77dbdd79059444b35 +TEST= 184 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffff +CT= 1046f48302323ec0f95aa28bf3bd3186f8026fa3eb904b59 +TEST= 185 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffff +CT= fb69245b0bed976c5f1af6092b2e4370e3a2a9028782e8c1 +TEST= 186 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffff +CT= 6bbcc523f47d600b027337b5484fd6a2f22ba780eb6c2068 +TEST= 187 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffff +CT= 583387d3203c5fb011ab95cce068786f9941631c8f6658d0 +TEST= 188 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffff +CT= 1a7bf867834ca7f9b857c5058bbac0e232ffac319965635f +TEST= 189 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffff +CT= 90f82b5c0ea8c0f650c91e9f85948c12b08e7d4a012b61f2 +TEST= 190 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffff +CT= 7bb8a52d9d9190552d9f5d9213b21018e1a8bcc9196079d1 +TEST= 191 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffff +CT= c5e2e0ddfedcf66a1c360dd1d70d1c35bf2b9dc884c4317f +TEST= 192 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff +CT= d7027f76643f6955fc81c2c12878957bef2b265d4a48ab45 +TEST= 193 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe +CT= b4225b92fd058fc0e3af7aba39dae8edd1d3378f8753073e +TEST= 194 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc +CT= 80b16c6d5f0db507db9def4247361e865eae88ccc7621a2c +TEST= 195 +PT= fffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 6534020d12e3191275f0c0f2396e0644fb61bf3ba64ef164 +TEST= 196 +PT= fffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 3281e5db9ab77ab6f586eeea7ba9bc88ae8c46f39f9d3550 +TEST= 197 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= becc74c59512f81e222c362d5d03c814cc5bc28f4d1ad314 +TEST= 198 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= e12f73e0ea98cafb6abb0d18e91a11a951d1ad80b491cf92 +TEST= 199 +PT= ffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 251b9cac3314e563673c3731641f4273cfac989b9570abdc +TEST= 200 +PT= ffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 90fa08c1f70d03c72bdee449755bf47d5c2e0c16f10218dc +TEST= 201 +PT= fffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 6e9589aa3753ab5cd96faf35fe15e11ad96fc239c8f43194 +TEST= 202 +PT= fffffffffffffffffffffffffffffffffffffffffffffc00 +CT= eb0b62f7babb0535b2648a45cf64f1e09584a937ad4168a3 +TEST= 203 +PT= fffffffffffffffffffffffffffffffffffffffffffff800 +CT= cbe957d7d9aeb152bae12c0324b70b885dcf849c7655afe3 +TEST= 204 +PT= fffffffffffffffffffffffffffffffffffffffffffff000 +CT= 15d1f3e395161adc591ff243e78b2b93c16c9e423109663f +TEST= 205 +PT= ffffffffffffffffffffffffffffffffffffffffffffe000 +CT= a15fe87314ce9029fb0d0d9fb17794cfc2b1e6fd5fe3b7d2 +TEST= 206 +PT= ffffffffffffffffffffffffffffffffffffffffffffc000 +CT= e18547aff0036a869aaaa5fffe0342a3765365997b79ac47 +TEST= 207 +PT= ffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 4f19bc8a1424c71c612a181686e28b519da0f488aabc3bef +TEST= 208 +PT= ffffffffffffffffffffffffffffffffffffffffffff0000 +CT= a7765de47411035fff7963b7788099b35002c899dbd1bfde +TEST= 209 +PT= fffffffffffffffffffffffffffffffffffffffffffe0000 +CT= b4c659ad1a418ff607174c5a7b8e480e556ce6de1b701672 +TEST= 210 +PT= fffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 743a16be5d33adaa9f9c1c43ce80733b29dc3512f42b71b0 +TEST= 211 +PT= fffffffffffffffffffffffffffffffffffffffffff80000 +CT= 9001bbed8d2c0e77ce5c32ceb844b84006e34719fb261848 +TEST= 212 +PT= fffffffffffffffffffffffffffffffffffffffffff00000 +CT= 22bf4a567f0a9906a84d6ece51e2ae8db6e7ba72ac83bfe2 +TEST= 213 +PT= ffffffffffffffffffffffffffffffffffffffffffe00000 +CT= d6546e85a451e776496126e974952b1be584e985d30e19f6 +TEST= 214 +PT= ffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 07ad3211742455f7c8e483edae7a6518a1f63e0cca9fec47 +TEST= 215 +PT= ffffffffffffffffffffffffffffffffffffffffff800000 +CT= 3833ffdae17ef9cdf650c4345a96b8e55ca51a1d2195f2f3 +TEST= 216 +PT= ffffffffffffffffffffffffffffffffffffffffff000000 +CT= b618f8688476c6661efdc77e7f680c1b25eda3f14f9cbe75 +TEST= 217 +PT= fffffffffffffffffffffffffffffffffffffffffe000000 +CT= 2dfa5a4fe45c3dd6f74f5f0986571116663ede94733fbb73 +TEST= 218 +PT= fffffffffffffffffffffffffffffffffffffffffc000000 +CT= 68cc3a9383516a7254ef6e30e312c51b8191f1b636a982f7 +TEST= 219 +PT= fffffffffffffffffffffffffffffffffffffffff8000000 +CT= 09160ed1b54d405b165cb9165e0667fcb8ec6233e2a4725b +TEST= 220 +PT= fffffffffffffffffffffffffffffffffffffffff0000000 +CT= 5842f2c6283b1f9f45396513d8c92878113dd4b8fdc532ea +TEST= 221 +PT= ffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 5ea67021f698cdd8477c2ba7d57bc7dc0731170d61c6026a +TEST= 222 +PT= ffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 110cb61601bb7c4afd8f562585d882772a51e7f61c7fc968 +TEST= 223 +PT= ffffffffffffffffffffffffffffffffffffffff80000000 +CT= ae323cb42b06d56b4e2c2412252d1abfd5acd9800a90c728 +TEST= 224 +PT= ffffffffffffffffffffffffffffffffffffffff00000000 +CT= 4b64e55eb324af1c729d966e58b72eec17bc08ec8629fb50 +TEST= 225 +PT= fffffffffffffffffffffffffffffffffffffffe00000000 +CT= 40b791345193ee1254265549552c57de1e871edaca1356b6 +TEST= 226 +PT= fffffffffffffffffffffffffffffffffffffffc00000000 +CT= e609b86dc1b4408aafa94610eea1102202a24acf2cf8b233 +TEST= 227 +PT= fffffffffffffffffffffffffffffffffffffff800000000 +CT= 3f046b5a92a4cb7dc8b3463579e85e1642e14e31bc2da85b +TEST= 228 +PT= fffffffffffffffffffffffffffffffffffffff000000000 +CT= 583329108b82b9ba510cad15feaefc911857a6f9c43ca5d6 +TEST= 229 +PT= ffffffffffffffffffffffffffffffffffffffe000000000 +CT= a9c9a3e70b6cf1bfcdad18d37352defb591fad817c2e20ef +TEST= 230 +PT= ffffffffffffffffffffffffffffffffffffffc000000000 +CT= 040e12ae31fdaf02fdb4264a30bd0361d36410c89977dc73 +TEST= 231 +PT= ffffffffffffffffffffffffffffffffffffff8000000000 +CT= 79bced73570fd05315b320e32d59687b11dc1f73aa400b93 +TEST= 232 +PT= ffffffffffffffffffffffffffffffffffffff0000000000 +CT= 841deb36d72daf65b110c4bf9e1bbfa16e43e0de4d831c4c +TEST= 233 +PT= fffffffffffffffffffffffffffffffffffffe0000000000 +CT= 7ca6c2d319f5f7682cbd8da1a6d9639157bcb379db2f69b1 +TEST= 234 +PT= fffffffffffffffffffffffffffffffffffffc0000000000 +CT= f754bd8b33f58d2694c0ac427f7d15ff1dfb6c3301937ce1 +TEST= 235 +PT= fffffffffffffffffffffffffffffffffffff80000000000 +CT= 7bf6bec52ba0fd46cfb728ee39e0b8989088ee3ef785e42d +TEST= 236 +PT= fffffffffffffffffffffffffffffffffffff00000000000 +CT= c84824200068c28ab713780296f45986005df929c1abfff3 +TEST= 237 +PT= ffffffffffffffffffffffffffffffffffffe00000000000 +CT= 6b8be12f1c36833ceee84f5c471f31a96bbe3b3f0f129fd7 +TEST= 238 +PT= ffffffffffffffffffffffffffffffffffffc00000000000 +CT= 493771d625b38de3125f1d14d5d8ac9b37d60bd33a930fce +TEST= 239 +PT= ffffffffffffffffffffffffffffffffffff800000000000 +CT= 996f55f3d47080f6908c6630b3b933939decaa8357f850e6 +TEST= 240 +PT= ffffffffffffffffffffffffffffffffffff000000000000 +CT= 03cce12a093a6f3e785b859aa50d0564b5afb8b9998f91ae +TEST= 241 +PT= fffffffffffffffffffffffffffffffffffe000000000000 +CT= 35361ab56d51ac4667623eb898116cdb2736bdc8c28a2a90 +TEST= 242 +PT= fffffffffffffffffffffffffffffffffffc000000000000 +CT= 5290efa3e73fbf8826edd259fd51007f2ca03b39ab845968 +TEST= 243 +PT= fffffffffffffffffffffffffffffffffff8000000000000 +CT= afb508f0f044028a0a7cb8b14bf82b196dbf5aeb46735372 +TEST= 244 +PT= fffffffffffffffffffffffffffffffffff0000000000000 +CT= 5b0ddefcb0ac17a46e256587c4cbf464907584ef1458a1b8 +TEST= 245 +PT= ffffffffffffffffffffffffffffffffffe0000000000000 +CT= 2fd9d833d854f2749095e11cd0abc2430c7c07adb0733133 +TEST= 246 +PT= ffffffffffffffffffffffffffffffffffc0000000000000 +CT= 8c6e512b543d685696cb114ba21de6dfa95d8ad51bb78b64 +TEST= 247 +PT= ffffffffffffffffffffffffffffffffff80000000000000 +CT= e08606c65b5975b14cd3e1bd47828418ee02ac36716997e8 +TEST= 248 +PT= ffffffffffffffffffffffffffffffffff00000000000000 +CT= ca14acbcef9ad52b359fc8cd9f0182b3950489abf4e2112c +TEST= 249 +PT= fffffffffffffffffffffffffffffffffe00000000000000 +CT= 5ba1dec85cdcdd5a4f110ba5f8a51fbf80b3bb1a8b13d675 +TEST= 250 +PT= fffffffffffffffffffffffffffffffffc00000000000000 +CT= b41986174900ea4a3035cada3afbdb1913efeb9670133a3c +TEST= 251 +PT= fffffffffffffffffffffffffffffffff800000000000000 +CT= 388d7a652e42da744842fb5fc35e229751bb5cf57dab71b5 +TEST= 252 +PT= fffffffffffffffffffffffffffffffff000000000000000 +CT= b2909ee10a1432f6ed5e04327f1321d17e9b4ca35a6c3793 +TEST= 253 +PT= ffffffffffffffffffffffffffffffffe000000000000000 +CT= 2a4065273b46583d2caf815b6e35eb25ed52d07e7d8e6016 +TEST= 254 +PT= ffffffffffffffffffffffffffffffffc000000000000000 +CT= c009d16b53e6eb9c6f7707314ffa3c3abfcd73b9de7047e4 +TEST= 255 +PT= ffffffffffffffffffffffffffffffff8000000000000000 +CT= ed3b2f10ac7538b2139863432c1e4bc34fadf7e58a934897 +TEST= 256 +PT= ffffffffffffffffffffffffffffffff0000000000000000 +CT= 37fe4203d4037cc9b62e3f75b6a20bc40ee0afc48daf98c7 +TEST= 257 +PT= fffffffffffffffffffffffffffffffe0000000000000000 +CT= 63de04d5134eaea2db2df9583fa107db75b2945814fa05b5 +TEST= 258 +PT= fffffffffffffffffffffffffffffffc0000000000000000 +CT= 50ed91c583403798452730b7acdea0d92b1dd7c03f3662cd +TEST= 259 +PT= fffffffffffffffffffffffffffffff80000000000000000 +CT= dbcf8d47b4625aeee3563cb28ddde9e02045d770f9746d76 +TEST= 260 +PT= fffffffffffffffffffffffffffffff00000000000000000 +CT= 79b9d424a4a35a54b907d269f5f255b35145c0847ad6b1e0 +TEST= 261 +PT= ffffffffffffffffffffffffffffffe00000000000000000 +CT= 2e6f6afef3252356c5cf26e469403af11701ce3f9b56ea59 +TEST= 262 +PT= ffffffffffffffffffffffffffffffc00000000000000000 +CT= 113a74cfb4a776e857ce42491f5603abc0e36001b9e42572 +TEST= 263 +PT= ffffffffffffffffffffffffffffff800000000000000000 +CT= c94f080634afa28424ed3a4dfed43096c896d76500eaafb2 +TEST= 264 +PT= ffffffffffffffffffffffffffffff000000000000000000 +CT= ef29259043ec677b2ae69ed202d91539855a05a086734dc7 +TEST= 265 +PT= fffffffffffffffffffffffffffffe000000000000000000 +CT= a1612a4a5beaf2904b71c46f851aa3864d1b60b6adb7107d +TEST= 266 +PT= fffffffffffffffffffffffffffffc000000000000000000 +CT= f9827d8363acda28173cc5975cfc668d7fdb74bf82f37a02 +TEST= 267 +PT= fffffffffffffffffffffffffffff8000000000000000000 +CT= c018c5fe94ce1af8323d3bda4ddb44bc8bfc8d99ca76e9c4 +TEST= 268 +PT= fffffffffffffffffffffffffffff0000000000000000000 +CT= a0c988fc014e4c98491a7cb51475cebf8c2e37a81395a946 +TEST= 269 +PT= ffffffffffffffffffffffffffffe0000000000000000000 +CT= 95b30a6fc7eec6f03ebff8798da7d056fc1583353d5d7764 +TEST= 270 +PT= ffffffffffffffffffffffffffffc0000000000000000000 +CT= 3284168880139a46b43e37bc271971494841ead2496a63a1 +TEST= 271 +PT= ffffffffffffffffffffffffffff80000000000000000000 +CT= 9e37c2afb6113fe902d9c7ce0a17e439e5c85521ef8cd051 +TEST= 272 +PT= ffffffffffffffffffffffffffff00000000000000000000 +CT= d7d9a256fce45fd6714449e9fe87cda03d10ac7e7c5bc4bb +TEST= 273 +PT= fffffffffffffffffffffffffffe00000000000000000000 +CT= f8ceb7e43ca5215b0139aec5b7dd000017e79d49718f4dc9 +TEST= 274 +PT= fffffffffffffffffffffffffffc00000000000000000000 +CT= e2a4fc31af5849636946bdd7c910832b1e95f3dc93c3c539 +TEST= 275 +PT= fffffffffffffffffffffffffff800000000000000000000 +CT= b166c1ec527eb82d74bb9fb1d441fa288c2c5a5761cfd8aa +TEST= 276 +PT= fffffffffffffffffffffffffff000000000000000000000 +CT= e3e046decc495ef1f9540f2f0896fb97ea8534ea12750c33 +TEST= 277 +PT= ffffffffffffffffffffffffffe000000000000000000000 +CT= 7c72baa822751b9a428a3491b546995e43c994bd90e87039 +TEST= 278 +PT= ffffffffffffffffffffffffffc000000000000000000000 +CT= d6f4bfecc433be07bc24d3567472711970b7e1e1a2ea479c +TEST= 279 +PT= ffffffffffffffffffffffffff8000000000000000000000 +CT= 1daeb7dda24c2896220303c7b0a37b9f0c35dc45b0b1b060 +TEST= 280 +PT= ffffffffffffffffffffffffff0000000000000000000000 +CT= 5abf6782b166d326af34526e22f06f598537823004a7049b +TEST= 281 +PT= fffffffffffffffffffffffffe0000000000000000000000 +CT= a5f115b59404469f53f1da666b052c9ba6e9e9f65f13f37a +TEST= 282 +PT= fffffffffffffffffffffffffc0000000000000000000000 +CT= 99b170873f555ca58c2482675f9fc15188a05a0796528cc5 +TEST= 283 +PT= fffffffffffffffffffffffff80000000000000000000000 +CT= 2e4bfc207d07307076599b728162c536ab52888678f1b8f2 +TEST= 284 +PT= fffffffffffffffffffffffff00000000000000000000000 +CT= e65fc6a0803772c9c7d83d8139aeec2b87a92ce9308dd51d +TEST= 285 +PT= ffffffffffffffffffffffffe00000000000000000000000 +CT= d45964428ddb7e4a5bd53bfc41196d723c85eb655e3d6a63 +TEST= 286 +PT= ffffffffffffffffffffffffc00000000000000000000000 +CT= acc6367c677d9414435c6502bc371c027b131371039bf128 +TEST= 287 +PT= ffffffffffffffffffffffff800000000000000000000000 +CT= 91ac67363405e7cfe3b1a556e4d1ab2203301c1b826a2861 +TEST= 288 +PT= ffffffffffffffffffffffff000000000000000000000000 +CT= 999f5e50823d801d4447f9feea48db96b56b28e03acf0c69 +TEST= 289 +PT= fffffffffffffffffffffffe000000000000000000000000 +CT= d207cf2305858f0005829d612fab6639e5a08592db21dcc0 +TEST= 290 +PT= fffffffffffffffffffffffc000000000000000000000000 +CT= a302cca204d90ff265660f7b3755070c222661ca32fc77a5 +TEST= 291 +PT= fffffffffffffffffffffff8000000000000000000000000 +CT= 3d8638b41c194e0dc0d0d496938d5357a33687e6b770d7f9 +TEST= 292 +PT= fffffffffffffffffffffff0000000000000000000000000 +CT= f09ecc1894d8c9c6a781834a7e3bdca488e0572d4cc99755 +TEST= 293 +PT= ffffffffffffffffffffffe0000000000000000000000000 +CT= 068cc4d49dcb2cedf597402280c731d1f7532d3b8328b3d1 +TEST= 294 +PT= ffffffffffffffffffffffc0000000000000000000000000 +CT= b9f32031a7db1f2109ce9724de5ceed8eca06a1b4e496940 +TEST= 295 +PT= ffffffffffffffffffffff80000000000000000000000000 +CT= cd6a8b14a441b06377cd61cf48eb93f3f587736d8db95222 +TEST= 296 +PT= ffffffffffffffffffffff00000000000000000000000000 +CT= 6aebcbd34cec7c56d627d8875ccf95210eaa3ad5f11227ee +TEST= 297 +PT= fffffffffffffffffffffe00000000000000000000000000 +CT= a339855d9034d9a4a59e504da28ca6a5664330be19ded2e2 +TEST= 298 +PT= fffffffffffffffffffffc00000000000000000000000000 +CT= 243123750a9675284732a8f8649c82ffd5c6298c93ff3fac +TEST= 299 +PT= fffffffffffffffffffff800000000000000000000000000 +CT= 063124b9a8911ba3947a61647d20bdc73d01a1946ebaa7b4 +TEST= 300 +PT= fffffffffffffffffffff000000000000000000000000000 +CT= a99e0587b8c5818230b78dc771c8eade6e69b41e1708d7f6 +TEST= 301 +PT= ffffffffffffffffffffe000000000000000000000000000 +CT= fef56830835917f6752e2a02ce4c0d864123a30cc54c5ac7 +TEST= 302 +PT= ffffffffffffffffffffc000000000000000000000000000 +CT= aae18cb800f157094e5bf6b6f1f287138fd81f981f73e0af +TEST= 303 +PT= ffffffffffffffffffff8000000000000000000000000000 +CT= 2fe2e7cfd548eefb9b5c6f75f2f31af527a0eee93079b250 +TEST= 304 +PT= ffffffffffffffffffff0000000000000000000000000000 +CT= fed838f2cfbd6100d48ebd0de6636ef9c083b1267fa63e2a +TEST= 305 +PT= fffffffffffffffffffe0000000000000000000000000000 +CT= 8ac011cc36c3997a036bae5e828ff77caa0a774f07945fd5 +TEST= 306 +PT= fffffffffffffffffffc0000000000000000000000000000 +CT= 2e9b08a56211d5543100d81e6c8ea187262460c68ffdb62d +TEST= 307 +PT= fffffffffffffffffff80000000000000000000000000000 +CT= 51493fb64814a8edc9f25fc0cf498543b3293bdef952c382 +TEST= 308 +PT= fffffffffffffffffff00000000000000000000000000000 +CT= d168c7acd2b6595ef4a60cfd1c47397c0954b37f43bde702 +TEST= 309 +PT= ffffffffffffffffffe00000000000000000000000000000 +CT= 63f408c0dfe695b523559bb2118a11df70b05aa26f7e1ce6 +TEST= 310 +PT= ffffffffffffffffffc00000000000000000000000000000 +CT= a9678ff01759e510157509b0d30d5d852eda6b631f8dfca1 +TEST= 311 +PT= ffffffffffffffffff800000000000000000000000000000 +CT= ecea5171c0752a852cae4fa87d8e6cb2f6ea3dc32c0d1ac5 +TEST= 312 +PT= ffffffffffffffffff000000000000000000000000000000 +CT= 6a20c49fb2b3b0c7a1c6fa891c3a06bf20a7de7c0462c41d +TEST= 313 +PT= fffffffffffffffffe000000000000000000000000000000 +CT= 3f726a7f9edd44f087f0065748f9da9da229cfe418d3c5b9 +TEST= 314 +PT= fffffffffffffffffc000000000000000000000000000000 +CT= 73a5cfa337ab4cb660f45048869a2dd27d45bfd654e3a5b1 +TEST= 315 +PT= fffffffffffffffff8000000000000000000000000000000 +CT= 52ce44ebd6daf1dde62766010b40adfb78193184e292658d +TEST= 316 +PT= fffffffffffffffff0000000000000000000000000000000 +CT= 9f8466111546aa15ab9bedac89be76f91292c6de9b18d894 +TEST= 317 +PT= ffffffffffffffffe0000000000000000000000000000000 +CT= 656aa95ff1c6908f18a38ff0068746ad95912df16771325f +TEST= 318 +PT= ffffffffffffffffc0000000000000000000000000000000 +CT= 1592f0697a30caf62bc76768d3c3612b286e74ba73938024 +TEST= 319 +PT= ffffffffffffffff80000000000000000000000000000000 +CT= 4b51da9da66af5c9a577c3c9f4f0cf6017fa7f2eee73439b +TEST= 320 +PT= ffffffffffffffff00000000000000000000000000000000 +CT= e9f8bf9f6a811127587c59dd1045323b6396d84aca114a03 +TEST= 321 +PT= fffffffffffffffe00000000000000000000000000000000 +CT= 685a552ea163b63aea2c4de2a40eaec72aba935565d81cc6 +TEST= 322 +PT= fffffffffffffffc00000000000000000000000000000000 +CT= 664858c24a557247c5412b6041e8f51e11f2cd5aaf50062d +TEST= 323 +PT= fffffffffffffff800000000000000000000000000000000 +CT= dd896ed821b5242752cb472439ab1d34e5e88ebd2f7f445d +TEST= 324 +PT= fffffffffffffff000000000000000000000000000000000 +CT= 8929150f20dc752814366bc2c44b3162627d966fe3a68abd +TEST= 325 +PT= ffffffffffffffe000000000000000000000000000000000 +CT= 665fdf158c235e13b2acd7a509e8405371cc549501b07cb8 +TEST= 326 +PT= ffffffffffffffc000000000000000000000000000000000 +CT= 9eda5807a40406061fbf3253189a93d4215aa20ecd857b1d +TEST= 327 +PT= ffffffffffffff8000000000000000000000000000000000 +CT= e3034738e5dda8f0e0cb40073e3fea87e66012366871928e +TEST= 328 +PT= ffffffffffffff0000000000000000000000000000000000 +CT= 82d6ed89ad2ed1c3ee1a2c7eb38752e2c2a390897301d038 +TEST= 329 +PT= fffffffffffffe0000000000000000000000000000000000 +CT= 65bc0a9561a3b97d94ac3a71f15aacca99a557ad6ac5be81 +TEST= 330 +PT= fffffffffffffc0000000000000000000000000000000000 +CT= 9a0d1f04668c1b113840096e1815cd63ecee2691f77aa57f +TEST= 331 +PT= fffffffffffff80000000000000000000000000000000000 +CT= be65a103f04ee528d6591eeac34fae2d7c0826ac5b92e889 +TEST= 332 +PT= fffffffffffff00000000000000000000000000000000000 +CT= d3b142cf5cdb37397873a0d07e407714ef03fcaf6851a3a7 +TEST= 333 +PT= ffffffffffffe00000000000000000000000000000000000 +CT= d45f8eefb084d7542628ab8ada631b7d7dee5c8f21192036 +TEST= 334 +PT= ffffffffffffc00000000000000000000000000000000000 +CT= 708883c3b499b6381c1f1c367eaba0c094b3eb6ac1cb0581 +TEST= 335 +PT= ffffffffffff800000000000000000000000000000000000 +CT= 58b51ac8bf284ce9966967518a1ab1b794ef40ef412007d1 +TEST= 336 +PT= ffffffffffff000000000000000000000000000000000000 +CT= d6c25be76bf17ee10a1fe8ff8519fb24b683d1626eca641b +TEST= 337 +PT= fffffffffffe000000000000000000000000000000000000 +CT= 8e36c1417aa77b6c8f71ccd555d92ae6f628f20c08126f52 +TEST= 338 +PT= fffffffffffc000000000000000000000000000000000000 +CT= 3ea2153c04389b10fc72bbef8f39cdb17ca2c9ebd78e8e70 +TEST= 339 +PT= fffffffffff8000000000000000000000000000000000000 +CT= 6cacb4c48256051cd025566d4394c51615a5e5680b8bfcb6 +TEST= 340 +PT= fffffffffff0000000000000000000000000000000000000 +CT= b4ce209b01e724101e46e272f455dcbc55625a2ba300e214 +TEST= 341 +PT= ffffffffffe0000000000000000000000000000000000000 +CT= 1123df596c95d992c2dd35d82d121ed391c0cf37b5885d25 +TEST= 342 +PT= ffffffffffc0000000000000000000000000000000000000 +CT= 1d0c6d764cbef350ef859f18ebb8f5f86d128d264dde3692 +TEST= 343 +PT= ffffffffff80000000000000000000000000000000000000 +CT= 582a058ea54d6c9744ae6ac48eb04d9e573fcc40bbaa1c51 +TEST= 344 +PT= ffffffffff00000000000000000000000000000000000000 +CT= 7b6166a44b9ed3c9b180186de766dac6bbe4330cd9cd12cf +TEST= 345 +PT= fffffffffe00000000000000000000000000000000000000 +CT= 57cb6ffba2451a3bc65eb25381d77c0e0a54d9b73230b9cd +TEST= 346 +PT= fffffffffc00000000000000000000000000000000000000 +CT= 49a290bd878639b15ad0bcd451ce9cb9313834977aad58dc +TEST= 347 +PT= fffffffff800000000000000000000000000000000000000 +CT= 9325a9e6d4eb419f28c746ba3343f267651f6c1df57bfac8 +TEST= 348 +PT= fffffffff000000000000000000000000000000000000000 +CT= f502921ff84addccf09e13892fd967a7a6a5d67e64a3eed2 +TEST= 349 +PT= ffffffffe000000000000000000000000000000000000000 +CT= 6c6cb0295b833fda127209d6dae6587886711b5970adc89f +TEST= 350 +PT= ffffffffc000000000000000000000000000000000000000 +CT= 58763121a870fe9b9869cc0fa8228fec6f6636d4b7746cbc +TEST= 351 +PT= ffffffff8000000000000000000000000000000000000000 +CT= a909e98ed72eab54e2aa1912fa371beaddbc3af98dcaeff2 +TEST= 352 +PT= ffffffff0000000000000000000000000000000000000000 +CT= 5b0d207ad1b10e2e9b7953cddc2161c51f4d32ec92947f5c +TEST= 353 +PT= fffffffe0000000000000000000000000000000000000000 +CT= 3c544534c95f86b4cd5819252f0e9b80d1e69ef8120ddc58 +TEST= 354 +PT= fffffffc0000000000000000000000000000000000000000 +CT= 7f8da164d51acff58f5ffe08f23f75fe0b2305095f1ef596 +TEST= 355 +PT= fffffff80000000000000000000000000000000000000000 +CT= 77a86133b6aafadda4e7cc3a26faad27288d3501ed7f420e +TEST= 356 +PT= fffffff00000000000000000000000000000000000000000 +CT= 803e0f7af2afa9ed2782c84dd5e71a7054b2bd71dc931660 +TEST= 357 +PT= ffffffe00000000000000000000000000000000000000000 +CT= 044ab536eeefe46997c8090e82bc32f4af5d2f59694f98e4 +TEST= 358 +PT= ffffffc00000000000000000000000000000000000000000 +CT= 0391b61b6e5322aab39561530a719462d2f7249a650f3c7f +TEST= 359 +PT= ffffff800000000000000000000000000000000000000000 +CT= d307364240babb1aa13eefeeb8c7fe0b5fe402863aaab2e2 +TEST= 360 +PT= ffffff000000000000000000000000000000000000000000 +CT= af6fc1895fd0b4bd557b2aaae75f14ecd59441bbc6108c97 +TEST= 361 +PT= fffffe000000000000000000000000000000000000000000 +CT= c58ca7d89af324bf2b5cf08084799d9a3d0e5c3d460d75cd +TEST= 362 +PT= fffffc000000000000000000000000000000000000000000 +CT= 02963f912d20da4abcc4f7235ee0a3908ae0c61fd7698f55 +TEST= 363 +PT= fffff8000000000000000000000000000000000000000000 +CT= 5b8fc1696faaaf2c45a13bf866d6e8ad353a4b3b23abe945 +TEST= 364 +PT= fffff0000000000000000000000000000000000000000000 +CT= 4cab9f56763c7fe97f68a46c182950640712718c6be232a1 +TEST= 365 +PT= ffffe0000000000000000000000000000000000000000000 +CT= d77a59adb6b8915736a66fa717159985099302385acb0bcf +TEST= 366 +PT= ffffc0000000000000000000000000000000000000000000 +CT= 6a977bc6ed581585d3041448149da1a344f02851b69f9199 +TEST= 367 +PT= ffff80000000000000000000000000000000000000000000 +CT= eff6e47c31b8c33d9781945463e3d5fb31d39b409ccc3075 +TEST= 368 +PT= ffff00000000000000000000000000000000000000000000 +CT= 5d6830e0bb41d2d2c1fc3029beece7a34f1d4810132781bb +TEST= 369 +PT= fffe00000000000000000000000000000000000000000000 +CT= 7f02f2824fffb6d5bfdcc9ccdf3be5c459f8a4de7136dba8 +TEST= 370 +PT= fffc00000000000000000000000000000000000000000000 +CT= b484f2a4dfcf40571c04cc5fa209e87c7a4f75866329ded7 +TEST= 371 +PT= fff800000000000000000000000000000000000000000000 +CT= 0bb8c10c155e326427278db575b6fccc3eafef12c4d1d151 +TEST= 372 +PT= fff000000000000000000000000000000000000000000000 +CT= 3dcdaabb4fe8d011bce22480f5812ee1a52ea70edf051714 +TEST= 373 +PT= ffe000000000000000000000000000000000000000000000 +CT= ff08cec0021b3541cc5f8f1deb22f4f851da3cf8d3451960 +TEST= 374 +PT= ffc000000000000000000000000000000000000000000000 +CT= 138c03bc05ae4897a999a33f02c7fdd14f7a6ad2ed620d73 +TEST= 375 +PT= ff8000000000000000000000000000000000000000000000 +CT= b4151925f45a8b05bc05e338b9725f67c3b4f7de4fb4b44a +TEST= 376 +PT= ff0000000000000000000000000000000000000000000000 +CT= 08366df55d161e4a1f2f3dd3ce3cf16ab15753680e62b15f +TEST= 377 +PT= fe0000000000000000000000000000000000000000000000 +CT= 58c91b1cf19344e7cacaaf4490bba2fb1890c2f6ae708448 +TEST= 378 +PT= fc0000000000000000000000000000000000000000000000 +CT= 8a71a7237d113d5e83ffdcbc7b59199173fb4bcd73fb3554 +TEST= 379 +PT= f80000000000000000000000000000000000000000000000 +CT= 516085956213685f584b4ef7730c318c6b4f51d875d796b1 +TEST= 380 +PT= f00000000000000000000000000000000000000000000000 +CT= b8f903191fcebcc69c6a6d9e5c912eb8d587814876ab6d6c +TEST= 381 +PT= e00000000000000000000000000000000000000000000000 +CT= 2b5537cd9f8a928c259ebf6134a1d240487a8e944adbe886 +TEST= 382 +PT= c00000000000000000000000000000000000000000000000 +CT= 1fbbb23b22f55d0b0934d298b150049e0d6d694ea9fb0ba3 +TEST= 383 +PT= 800000000000000000000000000000000000000000000000 +CT= d5abe078ffd84b955dd1296b5b55fcaee61a4149b3126274 diff --git a/flint/test/testvals/ecbnt84.txt b/flint/test/testvals/ecbnt84.txt new file mode 100644 index 0000000..14c9126 --- /dev/null +++ b/flint/test/testvals/ecbnt84.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= a693b288df7dae5b1757640276439230db77c4cd7a871e24d6162e54af434891 +TEST= 1 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 937667c4fb56ed574479ed1b27010930bd9651146223019bb827c74e28a024d6 +TEST= 2 +PT= 0000000000000000000000000000000000000000000000000000000000000003 +CT= da31e83c6135cd9ac4d43b1edda29ef08b98168611000759cea4eff52545caf8 +TEST= 3 +PT= 0000000000000000000000000000000000000000000000000000000000000007 +CT= 1e45b46086bdd8c2b331494dcccb03f54bdf13c0e4b0dc3fc01b34cd74c3eb63 +TEST= 4 +PT= 000000000000000000000000000000000000000000000000000000000000000f +CT= 3b1a2a2ac70b72d7f12e7eec96b7cd3be91665b7cf2c85da9e2130c1f9f70149 +TEST= 5 +PT= 000000000000000000000000000000000000000000000000000000000000001f +CT= badf9ef673f23b32bd771c2d9239873abf2c0d819746ba205fe7b8d9abda2a5b +TEST= 6 +PT= 000000000000000000000000000000000000000000000000000000000000003f +CT= 48e2b88875f1de1715278d8a61a8b9b30c5eb1ef108de59fe8e3c0f10fa94d5c +TEST= 7 +PT= 000000000000000000000000000000000000000000000000000000000000007f +CT= af2fc7eaefe9750d716d05fa07e2752b8e50d3962492bd52dd7ee772e82b4601 +TEST= 8 +PT= 00000000000000000000000000000000000000000000000000000000000000ff +CT= 0df3c39eb46ac470d2ca45c71d0ec30e0de6e70beeeb02d7839ef53177ffe9a5 +TEST= 9 +PT= 00000000000000000000000000000000000000000000000000000000000001ff +CT= b4cc267dcb7454dd11f53e4e9549328abdcb8e1dadf1e8d720f8a590fb127df3 +TEST= 10 +PT= 00000000000000000000000000000000000000000000000000000000000003ff +CT= f65c4fa5e657f4b0f88131bcca7ad59d1f9e13bec02b2266435fd74bd5dfbd54 +TEST= 11 +PT= 00000000000000000000000000000000000000000000000000000000000007ff +CT= 65b2ea9c7771a72dd5e31a6f86ce07450330cfd05761cf9f3e7eb49052eac26c +TEST= 12 +PT= 0000000000000000000000000000000000000000000000000000000000000fff +CT= f2f8bec99380e22c9032c684398423ad557c5a47c30d10e9ceece46b17d39f85 +TEST= 13 +PT= 0000000000000000000000000000000000000000000000000000000000001fff +CT= eefe28bb607303bbda085baa3eab0397327ba2110118b77ace4d56165469186a +TEST= 14 +PT= 0000000000000000000000000000000000000000000000000000000000003fff +CT= 4a25b7de430d92ff8215618f35831843ffaf69d89d8967520fc50156691b5d6c +TEST= 15 +PT= 0000000000000000000000000000000000000000000000000000000000007fff +CT= 3cb52c6bfd3a4b9b50360960cedf6a0c9a5f3435d4ad613ebb9d3415257c46ba +TEST= 16 +PT= 000000000000000000000000000000000000000000000000000000000000ffff +CT= fa8cfbf44e0af2e5e53f447b2160511384af07199cd53f9cf6df35a93595c3bc +TEST= 17 +PT= 000000000000000000000000000000000000000000000000000000000001ffff +CT= ca863d51049d219dd1e7f81f95bd6a4fd9495a9f3d8df9fc0b76616c1c4e441a +TEST= 18 +PT= 000000000000000000000000000000000000000000000000000000000003ffff +CT= 046422a1a73130e3e5694e76a4e8ba14cfb5068907e0acd1c7183c40e101ed8a +TEST= 19 +PT= 000000000000000000000000000000000000000000000000000000000007ffff +CT= f75c244eada4e6b171d6263cd4b493c862992581bbf2a8b49dd48eb814831de3 +TEST= 20 +PT= 00000000000000000000000000000000000000000000000000000000000fffff +CT= 2a1b665c9826978b03cb1f1ec0157739820baf3959388795f714f5c9dbc3a8d3 +TEST= 21 +PT= 00000000000000000000000000000000000000000000000000000000001fffff +CT= 8142b396f046ccbe65a2c34cf385d3d8c9eeb60237e7672d2324cde8316d4b8f +TEST= 22 +PT= 00000000000000000000000000000000000000000000000000000000003fffff +CT= df6cdcccfceb382256e4c6c042e807c502c06d7d3fc3b099b2e4d3084e703e66 +TEST= 23 +PT= 00000000000000000000000000000000000000000000000000000000007fffff +CT= 68dd6f713b65c916c5693736d3c9f07a216effe75dc108df11f8e57469a46a59 +TEST= 24 +PT= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= e873998c61d5281f2de112c32ac71f8a2b0434f85ed4ab5ec9916f38e1d1325f +TEST= 25 +PT= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= 27e17382eef1440c9020a699253178b847679ac534048641a78492b336af1935 +TEST= 26 +PT= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= 177a73bc28450ed5264120c7dc009a8f940cfb671a5510c799451c61ff6364d2 +TEST= 27 +PT= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= eccabe73dd75ab3e35dcc02141e5fc35c345a94adb3042524874c21570b761ba +TEST= 28 +PT= 000000000000000000000000000000000000000000000000000000000fffffff +CT= 6bc438743d0e59f6db7fb90d8cd3a21a66fbb162dda21a67af6e243709d97b64 +TEST= 29 +PT= 000000000000000000000000000000000000000000000000000000001fffffff +CT= 718c148212ebc827493a935bf2ff5f1b2de177061e05f542ca9ca7f309bfa6ff +TEST= 30 +PT= 000000000000000000000000000000000000000000000000000000003fffffff +CT= 823466b586c2fce635129410199bf6027dbe72c65d78fb85f5c05452b0305d23 +TEST= 31 +PT= 000000000000000000000000000000000000000000000000000000007fffffff +CT= ef78e0cfb3e01a6e9715a4e6ac1ef41e956c23cebfea6ecc6f648023407c8990 +TEST= 32 +PT= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= 7b99f2484e2d3301fc8c406880b3c2bef584366cb908831f262784c3a1b6a1f1 +TEST= 33 +PT= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= bdc905ca2476c4ee4a31544a74f43f62ed8c8fe29845a1d61565167411d982b4 +TEST= 34 +PT= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= d7fb1647c9a7c4d61e57f522541f858955125a4e49504fbfd012609b454aac04 +TEST= 35 +PT= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= ce2c60a603f9a460667398c698e857ccc941b0789ca4806c9e72da2ae3c53e72 +TEST= 36 +PT= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= d3e5d839b4ea0b03e222da6d5ce8cb494a673a5415d541c267b0ed4655fc6040 +TEST= 37 +PT= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= a87f798be5ca832f1149fd98d6eb1a029849764d7ca7bd9dfb6e0d0d10b8b9c2 +TEST= 38 +PT= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= 56c612ed4740540000f989a077a5b222b7568908911091608b5f0c6efa91cf45 +TEST= 39 +PT= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= 4d84e7b0cc3328b7b07f1c5fb4a62320054286ff8c8f682b311905fe6bdcea91 +TEST= 40 +PT= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= b84e0bfdc14c3befaca3f4fef05d61d68729392948cf12316b4a3cb6c604aeb2 +TEST= 41 +PT= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= 8c9267c1d8965116b53e91060e4ed2399da399475b4b35adcdfc893f62fe9baa +TEST= 42 +PT= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= 72f1b97a21e0ae3fd28edd8efeec634166b52c395c2d9fbc5b87e5c2cd6d47cb +TEST= 43 +PT= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= e598eeec8a8a176427f2cbbdbc401ff5c86be55516cfc04036cdb958030920d9 +TEST= 44 +PT= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= 62c5845ae2646e2338d3a4944fce4ff6581139353738a373c36d2c9c50912399 +TEST= 45 +PT= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= 6ec167cdb47ae87775b6c65e8412d846d5929345b0b3ce1b0a33419891c9136b +TEST= 46 +PT= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= ab64f90f310a63d29bb2ac988be645ef422cb57f8cabba6137197ed59e1271a2 +TEST= 47 +PT= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= e49796c9337e5bb582afb60d34ac422ba2c4f8a119f5b5ab0543dfbec016f4ce +TEST= 48 +PT= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= 3379726dc83fe6556faf128d068736ffaebfcf3e8307078632658ff0886fce95 +TEST= 49 +PT= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= 7526de45847a119e7ce13d0a05c39d9bc537bc6087ab008b04a02ff344ab69e0 +TEST= 50 +PT= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= fc96b4e46224c2d90ca5c993f59bd094bf88424a2b79ad97e6dbeae7683c6c95 +TEST= 51 +PT= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= 6a99ae971493e9afd72ca8e13688821b8c72536f8224978cc0b5b9b9ef7f4635 +TEST= 52 +PT= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= 154c258ae453ac415c948b4c5e31c984abb26fd31291a3431c5ac108856abbaf +TEST= 53 +PT= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= bbe38c501705abbf0ed86794138aeb937df8dadc4f65d054a8762e828b490c76 +TEST= 54 +PT= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= bfa81e00ed0129df9844d987a59999f5e7613404576ac8afc0399489332a0c60 +TEST= 55 +PT= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= dc6b88f0dd8c22f377bd611f0aa74feb6ffeb38902b11b75a5150d91bca5992f +TEST= 56 +PT= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= 2334ea4ddad80118492287ff31f872e620aaf619659d5dbd3fb4dd47c22222a8 +TEST= 57 +PT= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 88bd17d744a0763b68b6eef04eb9040555bfbcfe6508069aac7da9a03d8c5120 +TEST= 58 +PT= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= 27259a024ae17d40833ed5cf6cdf0c3e4c79e5a962904568ce09729435058be8 +TEST= 59 +PT= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= 8fdc40f5273fcebc5f82559baf2b5c3aa58ec5a3f707a3bf3fbc729281f9e70f +TEST= 60 +PT= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= 60d0a2608dd29ad5edeac5129d39ced58a389cbc56098696254d58cf365b14b8 +TEST= 61 +PT= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= c040d55496323d8871812a06e4b102b13ad1f6903755de8d58834cbd08e5113b +TEST= 62 +PT= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= d4a492079db25add9d64c8a868db7108a7e52690d503430a2e340fd9a89dba7f +TEST= 63 +PT= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= ebfeaa1f1cf31f18cfa70f3a48ec07a20453b8e05ff6f56903974a864f84040d +TEST= 64 +PT= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= 2db684a9b1c611459b2c2c0d4ce396134498d3a00cf413ba6fdeccd0cda90101 +TEST= 65 +PT= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= abaead55f91b77c542f85eab7df6c8327c76821d85c6ee1b0da0a06521f1d18b +TEST= 66 +PT= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= 8f97f76d47c422db13c065da23f473feb5aa8ebe66838a6b327766325b2c3fb6 +TEST= 67 +PT= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= c1adc8467385c03aba13c83cd63fa04f6b11d08f47287152d44b06daa1d2b88b +TEST= 68 +PT= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= b6e6a1c2f146ffd58d4f465177b88a509406d18e5a3b8e34dcf4019ea2a39371 +TEST= 69 +PT= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= d2e42f2d2b402e948d4a32b6c9854bb20cc58646dee14537180f5b93626b041f +TEST= 70 +PT= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= d1d8f0d9ca21fa000cc550dd61dbd9be127000374da22d0a752840d1bc38f549 +TEST= 71 +PT= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= 9c912856042b8a461cc388c8b3ef1951e0f408b0d5c96b7bf4377dfab7fcdce6 +TEST= 72 +PT= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= ebaebd16030130dc2611b609ee71038b40df96819abf77dd7093fffb30d7da69 +TEST= 73 +PT= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= 91b4507c1e936ca194bb678f056a539552e34bbd32bbd2add37343d3ccc9a566 +TEST= 74 +PT= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= 91780e53e0d022c9d528f762df094a4ce64e52bce2ab804cbaf788a63273e996 +TEST= 75 +PT= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= 146fed061dcc65c363a9b9ef03a50d52d4b9155cef120b8f44d629dd9610bff5 +TEST= 76 +PT= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= 70473035df47d4e0492cabccc5b334b336b1bfe3a9b09a512035225d254cf54f +TEST= 77 +PT= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= 2ca3e01bdcfc19a96a2910c3047aa394fdc9bb4a246274538b2c2bc669dfd988 +TEST= 78 +PT= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= d3f2807286890e0dc76bd8339ccaf4cf5409d67b1f4564b321b541f91feb2d93 +TEST= 79 +PT= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= cf90159366f7c7df7ec929009fdad4345b7dc09fbdb6da86528ac9cee3daea7c +TEST= 80 +PT= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= d2d64a3f55376abb51299b82ec4c3ccb0989984602a921b965a178c13d841ec3 +TEST= 81 +PT= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= bdaeb678bcb94594add315af52a8db98957395ebe0d1d581e4dbd7cd7c5d158b +TEST= 82 +PT= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= c53bb7a0d11a85c9aa34020dea306b382e8aec4613b4fdcbae8f1bafde8ba822 +TEST= 83 +PT= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= c27eaf2827d08ea1b620dadcccbdc533d1e3a3718928c56468e3561bd81e0b12 +TEST= 84 +PT= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= 581a40eef7e17ea8d6a8ea7d808a9dc49e6a50b0c4af3ed31b302513a854b7a5 +TEST= 85 +PT= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= 256a63cf9e3f8ad85e7860a1dbdf7d2c5b51d90742feeee059c7d91bfaea05eb +TEST= 86 +PT= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= 35aef9729ec4ede543402896194e1060a35651d9e5d278d5dc06b02c8db27835 +TEST= 87 +PT= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= 83617de85c91b9ebfc8d3c518946b988cf8ffcbbc651e2b49c8b3714828b5461 +TEST= 88 +PT= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= 098721283015e96af79a87bcd3e6173d8a9d2bdda542ae45b4a97096cef2218e +TEST= 89 +PT= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 03e670dcdd143877cbab2dca8bafdd3b36b656812caf5236aeb1ba5d7a7c084f +TEST= 90 +PT= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= 3e217f038568a8009a3f13a537e424d746ae2a87e22b1d70e24519ccc54fdb6e +TEST= 91 +PT= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= 0ad5cd80372f8de65ff5d932e6877a493577ab08954d6e22c7f228c6b4665dba +TEST= 92 +PT= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= ba7e7f1955338d7e72d23c00e59b861c03d759350826b6e3cf3c79cff1063940 +TEST= 93 +PT= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= dcc138a23dc8c82975545f8b669ea38a8fbea495c599f605212804d39f0571f0 +TEST= 94 +PT= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= c20122e8e6fef1df41dae279e4b187f78682c436624b0d0b966353238c8beed3 +TEST= 95 +PT= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= d8a686688c413521c25420aa4cf9da3db5fd74c24454a3ad03a760963e57498c +TEST= 96 +PT= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= 23c4e8982c2905cc8511136bc3661515c07ec369f0d61a212da0c360e7263116 +TEST= 97 +PT= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= a6d0e69959190331569b9500b17ef2cf26ca070cf48fa192f8265b0622f1f0fa +TEST= 98 +PT= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= e55d57270f570c27e3e282d04829b5fbf4d7b6c9a2586943069be407bb2b334d +TEST= 99 +PT= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= 7ec6cbceead5d30e1c7820b7e4aec4791a60b290b1225a084e3a44de20af6e96 +TEST= 100 +PT= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= 832af43af0f9812da6ad27c196b62ae76b25396b15fed0c6ab104602cd9430aa +TEST= 101 +PT= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= 68460d5fecc8e2bf33228ee6c1f49680682f7595522e73517b048b3543d097eb +TEST= 102 +PT= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= b4bf76dc1f07d6f61b2bbd22b1cc9c5a9f4f52106c6276bba833f2048a8e29a5 +TEST= 103 +PT= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= d994ae94f506f78d8b171fd79abf607d0632656b1269836d96822143d9d1aebf +TEST= 104 +PT= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= 290092b4eba9b24cad40100a1cbc8e54a7d9cc312e7045a92b5552e81813efbb +TEST= 105 +PT= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= 1cc9f36e207d5e8e94fcc316926ea0cbf7009ccd331d7f93b52c07ec3c9e37a3 +TEST= 106 +PT= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= e43964bdf2c89cb6ac4cc0155a3e5d31a34b244e812a6def708787c77aac590b +TEST= 107 +PT= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= c7219199873c49d40c610f2a431c42d27c18b817e41b1df0547aa5cefd6e3ab2 +TEST= 108 +PT= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= c4767fefb029118d13f87201ad85df0135da1ddae4d35b2b4d205f6f3f0925e3 +TEST= 109 +PT= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= 63dc9cc8b75a1fcc6c57422735e8e4bf0266463b53ed075d5243c238a823b50f +TEST= 110 +PT= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= d60f6e266911836666f438aa4ab175e101379347634804cd005d14a5850a5314 +TEST= 111 +PT= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= ea867240e1e1e8dd02b54d6ddcef2a1d10f75e2b6aa908377b6ec0a91c6c3edb +TEST= 112 +PT= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= 3cfcbe4b227b3aaa11fb3bf0780f004d1f70923f14fce55a3a752933e4b1acc8 +TEST= 113 +PT= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= 15b3857c72e8c002812bf16622e8548250ee90b5c2fe4584776f83e29e4cf4bd +TEST= 114 +PT= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= 08a46b07b54b3292ff45de030115dcf04148aadaf90b490adb350b4ef43c6c89 +TEST= 115 +PT= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= cd0e1eb2bb2a2937ec5a3bf0f4d21b4ede2f7cafbd2269a2f17438cb553d7465 +TEST= 116 +PT= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= 4a0508c4a792bc3574c5186f8f52ae9da60d186fa22208a14bd28ad90e1193cb +TEST= 117 +PT= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= c9d5effe302ab2cc3cedeaf678f0732f0f68111a7122255cbef0b36b65b031f1 +TEST= 118 +PT= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= af849640f532cf9f5e2f51ddc917e2923f7ea4820adc3e19bd4eae899c3a8929 +TEST= 119 +PT= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= 81bce6b9f10d2ab44c2de99fbab21cb8c4c7fd6fd58f4118d04e5308ef972f82 +TEST= 120 +PT= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= 19018645796a50e7b0db9a2775ac84a4943e4ed879de75068673eb81e1a8cfe1 +TEST= 121 +PT= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= 60907db8fb5bc3418c2c7e6f439badf8e6ca0a85a15f7d934b6bb26db4bff88b +TEST= 122 +PT= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= 79fa4a91fe44987967d8390b456f910d24aa9a6d2f1e4795d138bd905f059931 +TEST= 123 +PT= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 01825772b41bf66597e95648d5a87111af546093557c88d5e1de04262923546f +TEST= 124 +PT= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= 9bb816f2797f5ddb91a95e57d437b87d71419416b59c8e3cae55489f056dc7f1 +TEST= 125 +PT= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= 29b2276e92f6595f0b8e1476da717a28354da4206fc4317dec62cb07fc6b0c49 +TEST= 126 +PT= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 86cad0bc1978abeaa687c12c804aa7db9ffd6e639616c1e31c50af6cce91b933 +TEST= 127 +PT= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= 93e95da0e0c1710f5c7f07d36731b80fdce7ce127a9643864cde33b54c2b5700 +TEST= 128 +PT= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= 2e42c7cd93edea2eb0f3ba55a20056e4341933dd77d3518cdff08815b2e6b6b9 +TEST= 129 +PT= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= 806c314acc60adc4235b046f86f62666e2b73100dc752d23e75f10dbf3b2611b +TEST= 130 +PT= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= feb7f50b1c895452476331d450d996e38172374d733c8df03bfdf19f732bb4d2 +TEST= 131 +PT= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= bc0b6c662e52babd9b9df8471ce2c1ba3d5507992b266a6471034b7c2807b276 +TEST= 132 +PT= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 08308713d8c45c11d1dffb298cc4ed72089db0a0eea1c01bfba372ac9140bc9b +TEST= 133 +PT= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= 195e5e1972aae27bf9cea01b1e10d84c4628be59bf73734cbfbacb281ed44cfc +TEST= 134 +PT= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= 49c4f23648d9e8fe6aa46e21d6c866baf8cf8e4d6ed697aa00a7e067276df302 +TEST= 135 +PT= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= 40b2bd3ecee58fcb0129784aa8e1e0ade9256e4a99fe469047d8562de6d88401 +TEST= 136 +PT= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= e1751c737a4c6a42d96c7d79237da0cc77ccc1f61a5fc9dc4cbe3fc28d062c18 +TEST= 137 +PT= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= 505bb97de457729cf2852c0f26159f768a3e2909a77f6178e6aea50a2824249b +TEST= 138 +PT= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= 91734bf21242221d358e1801fbba3e71edf66f896919aad577145c35122912cc +TEST= 139 +PT= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= eb67d591332920324cf815ee12c670d4df85a9a3fb48211dc851459bd42a4299 +TEST= 140 +PT= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= 36b5cb0f05ce9a6d6d0cf4539bc4684d8895c798788016222dc40c4025c99a23 +TEST= 141 +PT= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= bb344b5baa191b23fa34982217ed9ca70f1d445f25beffdd124848692531d0bd +TEST= 142 +PT= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= 82f05337f6f3abea10f94c02bc0524a14a0593ceb23cb7622892a7abe4cab15f +TEST= 143 +PT= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= c2ed28ca7ebad06bed5040cc01d4f1d59794a707e12c827046717eaf853ec4b6 +TEST= 144 +PT= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 6044d24fdcdfb5c942f612361cf705b664b94e11a9f9432c559b70fed1575ec7 +TEST= 145 +PT= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= a1ae1882b8f527f3bb96991e434018447ad8202239c6c221dcb0b35957f34e0b +TEST= 146 +PT= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= 926e4951ff1ba20247cbb9f6002c51b9bc59c39a9adafea13d49252d6576fbed +TEST= 147 +PT= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= 1b09a079c9e62530b3627f310a548e061580e8a83bf1e9b1055fbf4e60ad8897 +TEST= 148 +PT= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= 602d9c4eaae80ffa66b16d855909016f078f6024b554c55ed990a5d35cb29833 +TEST= 149 +PT= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= 99846a93e82109eae75bd8456b7bb07da63401c86872a2d54098244c7b691a65 +TEST= 150 +PT= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= 03961ffc10928c26a00a13cf5a841a35fd9c93e4107465da7aab63bced5162b6 +TEST= 151 +PT= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= 7595eee2ac34b0dedfe61f7270834b4b37421e0e484833cd90660f4b600b7bc0 +TEST= 152 +PT= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= cee63193a0742b904fa249c7116193fbb5f28e1f08542285527c42ad349200ef +TEST= 153 +PT= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= a1a2a50a28749f2da06fbfa252a936970105918e0ac3e1c2ca94e1ecb727fcd5 +TEST= 154 +PT= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= 704443004ff5c67559ee7d1743a43b655085d4ac336ceb7da1bc39d89c70d0c5 +TEST= 155 +PT= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= 56b64a8086ce3819352f764da1cdc755974b8df65c2cfd39cb4bf7250ffc4103 +TEST= 156 +PT= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= fd52542a53def92215d7283524f89d24f86507e5ee63f692be27829fea9fceed +TEST= 157 +PT= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= 80acf438390858a1c764a542bc56a898a047b3ca9c7b81b414bf37a1de33850e +TEST= 158 +PT= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= a62e52342e62fab77851a9f61cc2109a5205cf84b35362057c5e1ae5ed985e30 +TEST= 159 +PT= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= 89a853d473d5f12ff064195d20e56841f6153def1422bb8a7a32809fe0e09204 +TEST= 160 +PT= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= 637d0068ae1ab467309ede4ada052cc4981356a7544c63e60ccd06169ce01ac9 +TEST= 161 +PT= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= 08cd2e060e1c827ab2debb008ca361a26385e9daee935a4b917077e98d698d78 +TEST= 162 +PT= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= 13d2ed5a9c9617077c7bd080da3decdeff6a82c78718e5ae2424214f4adac1b1 +TEST= 163 +PT= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= 3b84d7fb12c7e9da06f1d796be4909cfad585bf5c315189d9496fbee875021b2 +TEST= 164 +PT= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= 2baec60c80d761890ca49793aa6b03c03dfc6c0d6af0d618b68490b843c4a347 +TEST= 165 +PT= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= 214ee21351ade3965e9e10738265fa2316f57881d54a4653d88af27ce4f78125 +TEST= 166 +PT= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= fb7840056340f8dec9bf33eb5accc21e26306a95edfa0c8d4aea0db0fde5bb51 +TEST= 167 +PT= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= 7f93bf520f19e2f396daa1afa1d2fccf04913268a07c1736713f615d40e1d359 +TEST= 168 +PT= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 325845a2b2dbd1ce1b6c197e8682437f8b2b8b861d7b5cda847f1a7babba92b0 +TEST= 169 +PT= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= 66e80d0e9dbe24966b4f45ab106d4c7f6d63ad34f63b3b737e17782acf043c31 +TEST= 170 +PT= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= b12d87441c51a5d18fffd07c817e0fa461726330dce178a5ed43f1a3a789be55 +TEST= 171 +PT= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= 38d9347b58ebc0e7802f1799531c8c7d6ed70ee5bdc0fe009fe668626cff2bfe +TEST= 172 +PT= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= 643b7048280153fdd73a98100386c6d7e5362880353a78a045e7822ea309ff27 +TEST= 173 +PT= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= f05c09576b2ee1c0fb1579386ba0b23e1f0f049da19e47583007ef206f616fdb +TEST= 174 +PT= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= e261a7cd9e426d1ae76f2ff692b611a7bb371f07b53588c517d8eb55eacfa8d7 +TEST= 175 +PT= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= 1bfc14dc2f369c2b711d28bcdefa6977062e650cf4f1fd2676215723345c4f74 +TEST= 176 +PT= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= 710a590e48f32514dc7a0d21ccedeb333d491d78cdf0be2aff972523d668a742 +TEST= 177 +PT= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= c3550bcf122b419ad54588cca02b56569f75d5259874839ba74fb5316d2fce26 +TEST= 178 +PT= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= d10acf488a3b45d81b98a3c56af15ceb3f4f6a7797359d548b0e823802cbe11c +TEST= 179 +PT= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= 8300c026de16cf63b8494f82cf26540447b6e90b83c220f7f1d356ee53c234e0 +TEST= 180 +PT= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= 53eb4f2a5b1220852ec1879cb38c3930c076655c49a1347e9eaef7cd619b0c2a +TEST= 181 +PT= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= 4744e68fc5fd32825e89efea9818b40ea68942ba7914f170da47a813e540113c +TEST= 182 +PT= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= ea903d5cba2f6c337876b791d46ded6be5abf0f538d6ad256b304bf21963b8bc +TEST= 183 +PT= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= 090a0e5f8e7c0d421a7ff5ac68ed7727ee88bb48020285782e010858ad0a0d97 +TEST= 184 +PT= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= a272e57b6861129f7cc40be409a686b84d213c1c7e46828f6de3d73d63b56a86 +TEST= 185 +PT= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= 8a7d890a3cf7f45c6967289fb82dd0b576a2cd0204d7636e889def6496d4ac3e +TEST= 186 +PT= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= 55f7d14b949cd41b4a2012670b673877dc81bce030ee86df252f212dddcf8eae +TEST= 187 +PT= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= 32b60c56197909b64179004d3544ce3f3ec4b9c01462859d13f6778c93ecd48f +TEST= 188 +PT= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= df5424c66d3afdfc3dff3a188f47e2d8efd374fdab28b7bc65ec49c7771ebc11 +TEST= 189 +PT= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= 1626f1c1234ea261a99a22adbcb2b95f013b4f91ce4744e27adbe8ad1be4cf52 +TEST= 190 +PT= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= 8845cb4891ca353d37f1918e7f65d92857b856a5a7b941d31eb707ddb91bad3e +TEST= 191 +PT= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= 9fbf22484bc3bc6c54fb80b7141b13f37ace2fdea2ec37c694c6d0323799f4cb +TEST= 192 +PT= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 746e732ce5d5ab6a2d73598182b8603efd53a1db3510cd66f64120e1ea1aeda7 +TEST= 193 +PT= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 22a1e71d195683d9e70dbe8e0657f4e13ad9cd0315b5f4a4ae5a4126eb0cf5f9 +TEST= 194 +PT= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 27094127b56065fe8806b148a7db66d2930d34372272a0ebd24b03c500d20694 +TEST= 195 +PT= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 87aad12ee260f4c3bbb2901c89fc80efef595b0d2584c369ac1f09ecf14f980a +TEST= 196 +PT= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 585e01f203e5374879e3965b1b25c09cfbb6548167299db35ba37477d3c82132 +TEST= 197 +PT= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7e911072eb1fb81c627f02873356fc091d1707410ea97b20b14a79689f9ebd3f +TEST= 198 +PT= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 961e7601dc6e800df11f5db873356515669a5ba265937502c37361a33b4766f3 +TEST= 199 +PT= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 81da37f8eace6d058c74d59432ee449dd1f046562a8ea78e78943938fdcc29db +TEST= 200 +PT= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ff3d41258210313ccbf21909c335a9b16d82c1ea5f8009688f6b1adf67eb12fe +TEST= 201 +PT= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 01ecf862cb29a17ce12046c695a48ed3df62223fa8a1e28e1fd439f4729770a4 +TEST= 202 +PT= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c1b0ffd204c4794294c3a4127ef221cbdef462f45ede3ddc4c87e9cf03fb7997 +TEST= 203 +PT= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= de751f79068930e91d13ac19c346a0a31804835918a2a776ef514dc2f168a2f0 +TEST= 204 +PT= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 49cd767f84d09e50cfc7537a79d9d35fd65c5539fd755a486ec5280c29527b36 +TEST= 205 +PT= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 08b6504265ced482f48d249ec00adf1f6692e6507b3fddd423ad0688a33d4292 +TEST= 206 +PT= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6fad993fae8edfac68a6fe6344a61455c9ff3aff1e012d410bcc76e66fc22cc5 +TEST= 207 +PT= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b0866f9c157f41ef5dd80ab1caa2ccbaf2cab6ff292d4e314ccdfdac2138915e +TEST= 208 +PT= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 769038470d6a54686077690dcd17b2b836ebf7ff48dea536d7aa2772388462bd +TEST= 209 +PT= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8b09c5610411b09359f5594ad6ba1b805a80259c10c0faaae778a0532d2900ab +TEST= 210 +PT= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 55cee86323c2bb56748b0b954b51cbaacf855ad45ef5397987cc88da2487a860 +TEST= 211 +PT= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 800aee864f80d16b7f94d5fd2de73528727a3b8581aa90036178e791282f7735 +TEST= 212 +PT= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 928f069a0745bed92ce4d8ea6ff6e0a676f2f54c3b4526b55e22516fd14668c5 +TEST= 213 +PT= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b558969ec70a27a229475f776ba9aec854e9f47b35411876738e375c695aad5b +TEST= 214 +PT= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 38f78471bf54c9f720ce9dfc61572ff2ca2b52929cd2f0c41053219c7accf566 +TEST= 215 +PT= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a90544bde2f987d4fd2eb1441f0cd35023a535ef52d13746923ef7e2c764467d +TEST= 216 +PT= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 02dd7af9e7986a9ed712e13c85534fa3412a1d3f894529aafb7b993f29360637 +TEST= 217 +PT= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 939810c207b079e5fd5645b848900074e1e15cef27d25d1bedd927fe9fa831ce +TEST= 218 +PT= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3c30cff4168810cff0bda443b2f92530c7105eb1158c47079930b8d50b91d2d2 +TEST= 219 +PT= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2b983f688e23e6bdbadf0f874f0e7e339267e82a4f803f72ac4d7e43b1f7c817 +TEST= 220 +PT= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c12c0ffae116f7190e474746fe3e11981c397ba88efd47c0ab28040e693b9bc8 +TEST= 221 +PT= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 51e9f150eae3e4bb501b00b0d5d248854d3eb66218bcc7ff96ec4d5bea114e99 +TEST= 222 +PT= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1de1bd12caeb44d69dc82ab11d12276b3eb7798ba56449210699a9a42d73e58b +TEST= 223 +PT= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= da92a578fafb7cf7c91fd97880d6813512ec77d070be92d5a385de7f96073749 +TEST= 224 +PT= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ddad33a77c244de55179b391af91e2954a3019b8b83e1aea61288c9fa0171d54 +TEST= 225 +PT= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4e7ed6386f2d7fe7880ff50f9ab0ac23abb5d01a35e067a9eaa3c8be2ef73f36 +TEST= 226 +PT= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 865259a0423d713af4bca6ea6fe32278e81f3c2d7f94a01d0feda66db389e57f +TEST= 227 +PT= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7bad1b647c2c3ac286dbd50d45812e0551312dd9d4b7ae7fec0d5d4e8b1c3a03 +TEST= 228 +PT= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ea3fadad5cbd682eddcaed4574298aae66ca3f5c4e96b11496c30a1717a44031 +TEST= 229 +PT= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 418c50f05c38574ea63dcb6196ab73272949b2fbd6759490e74124f041e38e1c +TEST= 230 +PT= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bf44fcfaafd1728ad33ebe9fba606c649170a33d45308e22f183588fcaa4b897 +TEST= 231 +PT= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fe3ab2e5cc8c5d0e287ecc2690d8d1e87dac8be6da661b0717d443d913045301 +TEST= 232 +PT= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 888283fe8163158956bbf66fda419dc3f55385c22a879f33ffeae0d1e4149f40 +TEST= 233 +PT= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1188a2cfe7b504f930c026256f031a66754088cebdc6fa047925b8f05f14ff09 +TEST= 234 +PT= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ce53b2f66e8710edc8be53a5e898c6332f0141e22d90ac16da415a38aa069b2b +TEST= 235 +PT= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 837059a6d70adb424beca558f7a1157cbb0678f9126bbbef719a349185f727cb +TEST= 236 +PT= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1590ee93074e8a36812a7ccfca8edc4daaa259f8a8afc15107ade91364835415 +TEST= 237 +PT= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a4ccab28a4d15929289f2f3b5ccabf8171b27da963aadf9f69a36254e7a16539 +TEST= 238 +PT= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5f8b9a43c28cb6d9f9913b5a113500a952b21b457181de77f67bdb47eee1317a +TEST= 239 +PT= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= aa524ba995d330f4505fafb05bbe0ff84ac8e9b139191843102590f759422223 +TEST= 240 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f7302bd05a79d660d3c7d230dd72de28e979d2dabefa469d6694723da2d4c68d +TEST= 241 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ae3494bd314c153b797c636ebe68fd939520a818d88da8c89a9a0521ce27ccb1 +TEST= 242 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= dfc69436072b7985e780d842f72faaed25ab82b0ddb3e9c4963787bcb4880673 +TEST= 243 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c1e380dcbc71444ca386bbcf8b6ab6cf9be1adfd53b5b1180ccfff87e04b4c83 +TEST= 244 +PT= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e02e579f5a972d67dbfaaae5bacb2c49e5c647cb7dca488216d2f6455cda0f4f +TEST= 245 +PT= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4f5de8a11384b85d8b28b9459946aad4178edfe1d50fc660ae7f70d52e6baebd +TEST= 246 +PT= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9c2da993e8aa8ffc0e6e884e6fc46e190536f78378b0e2a7e1f008d8c5ed6bd2 +TEST= 247 +PT= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c4a16a7dba22f61938be5d2084df93b6e25937e5b644eb7bca3ae7225ba9314a +TEST= 248 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 42ce9ab6908fac875c1838e45454d685a8b113c6a03ba9c0c0b9285062651a6e +TEST= 249 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ecb7da30cc04547da701102770a1c73243a9d18c01bf42cb2be896c5741b25d9 +TEST= 250 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bf31b21c2503e13ba00591d591b973ca293cd1332e508dde88a830e81b9eb7e7 +TEST= 251 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 62c1a924de964a71a9ce89ce9e554a15f6f3b7d2cbd369d7ca641e8a4ede9e41 +TEST= 252 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ba0e4bf52ef627759664e30965d3fc0d8797c6d818a13cb6388da33f1f35c9ee +TEST= 253 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 35fe52e9c00c2bffb886f4e53b4571492113e79d07ff4101947ac4be7511e79e +TEST= 254 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9ffd71cb80211c1b6dbd99d8d4a25675069d82449c6d2f393a57ecce58426a4f +TEST= 255 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7ba3e0a78a74d9ae0e6251bae6aec54a0a6b5831b32d18ab1560ce2e65474785 +TEST= 256 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 05b14b961c8f45be9f8cf239b0b10a6b07fdc6409a638873e72f9c6f73031335 +TEST= 257 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= 5188e34d2cd0619da2b103b1320bbda956a106c788d7c4eb253649dcba157fb3 +TEST= 258 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= c87099e8e5ea58cdc24de1fbcfa6da66489a5e144fd4cd30e538cbafc3dc1dc1 +TEST= 259 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= c7b41ae14688eeaf6f7796c8ccbc70cfc1ffa4ea9a7b51140a22e807fa6b0819 +TEST= 260 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= ddce5f2273c475d5700880714ce5210eb36470e3547555c72eb6c8551eaaa430 +TEST= 261 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= ad813937e19e7e25056025806abf52e84d6437dbc8f71a20e559aca3c2c89439 +TEST= 262 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 122a38aad86817c108502140b4dfbf6343b4fb398e8e3c02f3f7207b790c89ce +TEST= 263 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= e689b30b6dae9bfb6426ae009620c83d8fe674d85b5ff5f12c5de7251f3f0dc9 +TEST= 264 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 06180ae57335600971674792aa23adb71756491b25ff062d00075b2aa6e14e0a +TEST= 265 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 45ffabfe227d8a730951f6090347547fc47af0c02bf011b4a2229f7fd0ebe8c9 +TEST= 266 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 93a1c4d326db25363d63d22380a7dcd038638ad912f98f7d1431b828daa0867a +TEST= 267 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 2773537f606163a45fffad6b192f3f2e5e1fab187ad78a7a381063b954f132fd +TEST= 268 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= f00fe0c76589cf8efd6d17ef1820993393d90c7ae867d0536b00e0fdfb412a78 +TEST= 269 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= cbf5da83ca6da225e8fcf1ef21791de59966f7a7d1771153452f3450390882b5 +TEST= 270 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= b612a416aa553728f47c97b7fe42f1a84ee9a865b296c06cad0e8a566475421f +TEST= 271 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= 665a7757adc52eb58b59bf5fbf1b566858bdee38d3f0cb6e78e9df8bbd477bd3 +TEST= 272 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= d9eabf1bbe3f0a11157a97552d9f4f4fbc0a2de70dde0b42d3b492ed416d5395 +TEST= 273 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= f99a96d61696c68c9fe873c09d3eaecf124c6516701faee4befccb763dd47d23 +TEST= 274 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 55e30b4e80c28b591f348a96554efaf62b498163557cc0d16410359e5c3b80c4 +TEST= 275 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= c5e01c2062cbf252c99e00e9ea88a211ace4f9e9b1b162d790d28b7708f75bab +TEST= 276 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= 42dfeff357e49021f3ec7059cc422cee13bb9fec9dce3aac391b28ece4b9b7ab +TEST= 277 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= ad2d2624bcf8b56d6f110817c1043845f3b274e543ac36fd64fcfcbf7895b22d +TEST= 278 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 4deecde4532b6afe6e99871c97dd7bae19aed05f94ca248619e86c7836379cd2 +TEST= 279 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= 4bcc1176d8aed32d34f190d092245e148620f57ad9adbc6c0d38a4806574047c +TEST= 280 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= d39c30541f814373ae0eb3faff0c2041f1665aa9a851715f355fc4bbcf79958d +TEST= 281 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= 91862162b8eca55a7fa4aba57fce58da97647ab961c7a884c92cd21c10647a03 +TEST= 282 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= 53c1a6f89cccb9052649dc7adf36fe14f3fa4205fd369bb599b472863289e625 +TEST= 283 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= 2fdd5aef38e32e2f0751ca2447bb5005d9e31215de4a646b60bf92cd02531462 +TEST= 284 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= 80c1950bb78dd5182383a802558201a141e830df0958a297376a4480b87e36f8 +TEST= 285 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= bc8c032a2a0a0ec85e652ac5cdcc768a88912b71ce313a8ad62e2bacb1295cdb +TEST= 286 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= d22299df77569aa2b6fb8f63b8ff4644e13d4aa5dcef5d331c2eba62684c199c +TEST= 287 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= c49fce1f53bd002a39e1f8f2beecd97c28a2012298b5333f59259133735413db +TEST= 288 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 2e60fe48888e148f5d4503effa0e63fc9456c50924ae17cb6d81295fe52f166b +TEST= 289 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= 7ceb8d958c4c1fa88039078b0f4b8acd6ca53534d7f1d35b7e2660749b923ef4 +TEST= 290 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= fae4d7e2e76b62e67adffa3976a9cf9be1e7c924da8b05d8b4301e618dcacad1 +TEST= 291 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= f0f817acde956ce01e98f5be6119a8246061fb4f07472cb729fb5c48fa754592 +TEST= 292 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= 6de2288401f4ec0645f0caef111963ab66f9cfa1508a2ace35c5d8d43b20a49a +TEST= 293 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= 6ae5bd7bcedae9bd66fabef8adb8d92a581dc60ab9086ec3403c5a05ca1dfeaa +TEST= 294 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= f2a50c6e7e73e131636be84599f6e392c8d757345fb32385ca64955a08e256a8 +TEST= 295 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= 3f0f7152b448bd0761f38e53d09eb5fb348b1d66bd527712a96f8b57a71b0c39 +TEST= 296 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= 0c60046b79d0699ef2259df7a7491f70fde23509562d2988b87ab3d2e73c28a1 +TEST= 297 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 6a52beedfb73cb6f7c970a42b50e4d78b92e0a5cfb5d9fb6660ce500aeab4e64 +TEST= 298 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= 1be2c7d166f5eb23c3c94c327c32fe6772dd31a5320b6239f9e123099432024f +TEST= 299 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= 871015c4bb73e00d8272ba4cda75b92fae13c6fd27a6952607f6ee5def7cc150 +TEST= 300 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= 63e7d1617a8c071525bae23c6112b4096aef711e79bd565673e66e4c7bb506fe +TEST= 301 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= 622a05a7e5ad39915e92d16951a537ee3ae624832c955f2c2c555a5fd7ccb24d +TEST= 302 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= 2bf2e914311ad0bdc0b4ae8fb53f81cb7c999e9b91001bedbee25387a5d14e94 +TEST= 303 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= b46bf1aa0f2d8b3408584bbc6cccd3058aea8a94937bcd0bae790a5b570798f4 +TEST= 304 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= 4d77b65ec8b0829546b2f22bbe9bef47a201c947d744bf95d13c18126fa46bf8 +TEST= 305 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= 4e5ff26117525b83514ba00a9e2fe1438a793388dd9b86c6f7d2cd3f5a74efdb +TEST= 306 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= 9d3c6ae3e593b027b1131a5e39859b19ed3ae43a0283d261a5373b5190748340 +TEST= 307 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= 2f345690112e66c277bcafa9caa4975632f917f45893d8d96184bb931d6375d9 +TEST= 308 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= fa5ee970d264dad4394eb85e1a73bf657e52c4ba0f49d3c4668665f2ebb17cc6 +TEST= 309 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= 4111749923e1742db42e2344984ea21b4d59bd2ee210ddf0ae7d75d79fa23137 +TEST= 310 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= 0a81be13a422b7a604cfdf4c50e4b372b078d0d08cab23aad40691d68907ce0f +TEST= 311 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= db15e742c329ebe64a4c668fc4e1b574013978c073645e4d67c3de83a774e479 +TEST= 312 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= 13d7612891bdb7d54daae1368c7252bc7728cfc448f88b0886753113921ca0f3 +TEST= 313 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= 27bff671b381b5b6d956fb47c41b57226d73c0d0d8fa2fe33f687890ef75d585 +TEST= 314 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 3bcbf9b16e47b502a58820edd06b4deaec595d1ca76dbc93a21476a4e031f315 +TEST= 315 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= 79536cf1fc6cb3eadb479adb718d9a70735d2711fd3102e71f4924d2356d5f1a +TEST= 316 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= 28a5f6d3114b289a192ba6e13a4ab5ccf4f171e5b5fe99ee03d217c0ea9f2510 +TEST= 317 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= 85ad205ce3627576e76f390ca2f6df98d0dfc446b0dc0bc2aa1f8601d88ccf57 +TEST= 318 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= 1da647252f6998cbc1fbd3f34f6ba338db2fbd79f0673d4786519fccba201192 +TEST= 319 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= 61d51b183b88f89e6a9f91444215076b007e892ce0b85f5304dd75939171105e +TEST= 320 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= 0dc816c6aa2dcaddd6f2da0990e7c4bbbaa2d8bad559ac2c7cabc47ac53598a6 +TEST= 321 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= 875293983131d5ffc2713e362f566da4583ac809aa6f0a447589170355d08e33 +TEST= 322 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= 815ef577d35217811945c7fa8f3f8cb046c55bb33ea1fc7f885d2b43d93493e4 +TEST= 323 +PT= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= 55c27ec74e878dd5cc1ea4ea54a0a36b82aa7dcad173f88626c2e1b6c5e2acfb +TEST= 324 +PT= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= f9cbceda41a6d210fe5b4d142b7e6c590133dd75c43c03f9cee94890a44de1cd +TEST= 325 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= bc60c9290e76de8eb3c57365808701d905ec67cd960bfe70f76fe0aea7acf621 +TEST= 326 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= bfe1a42d05afa189600090e960da3033ef798f5a11f976bd2602875a0c25f2c6 +TEST= 327 +PT= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= 2c14e3dfca031f9779008767a008dd84c4824cf20b89dfa272049c9fd50e56ef +TEST= 328 +PT= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= 9700d4a27c79f3b6fe763d1f67e7573e222731c1c4cf7eeb579459e97979a223 +TEST= 329 +PT= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= 431adc58abac7ae175a356f3ad6895e5445016837e1c3888de49371134f8d4dd +TEST= 330 +PT= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= a84f360626f6427c3a5291a4ab22c7b7b9a0f8f0d0a30770887b5532a189370d +TEST= 331 +PT= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= 4fc2415aaf32d77e00873dd734b0e251c17a97543ea63885244a1ffb5012a7c2 +TEST= 332 +PT= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= 13f0aa7a2815db60fd2478fbd0e1e1394a57d6e4854e9c18e772548777af1283 +TEST= 333 +PT= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= 86379e65014edb38cd7373509095ed7823317e0afb775590d9b15f3d4007027f +TEST= 334 +PT= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= 1b69a83e6be299a3eb017f36e70202e0ba8299100dff03615b1435b5f45320ba +TEST= 335 +PT= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= fe1a19f28e2855ac31def3b3ede12b7cc5b70e34342935b2970a3b9ce621d3ec +TEST= 336 +PT= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= 49a5d52231fb98793ab03d6a028efb68843b9e81efff1a17482f7c6f3fdd9f05 +TEST= 337 +PT= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= 4dcc24f732e698237235d254a2d31d69e8e105b8b5359dce1f8277daae6e9424 +TEST= 338 +PT= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 368f7603c5796dd18665f8c0dd338958c26d60218e3b9f230d5195255105aad3 +TEST= 339 +PT= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= d45cdc5dd20fc6f442fb93af9704043b2305cc13f015923635f5da3ae4f761a4 +TEST= 340 +PT= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= c4ce77087e3ae50e2bba56fc49d505ba11d6ecb2ef7b6a34ce3aaca07f1808e9 +TEST= 341 +PT= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= 5e367a630ba0d7b36566721bf99986b47351eb685d19ade7592b2edcd0b3d5ac +TEST= 342 +PT= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= 095ca8048d56f3cc1d8c7abdafcace312372ade24d7aaa090cf0b6898a80a5e1 +TEST= 343 +PT= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= 855a3c25ad89f2c996b8944622ecf53e191c7a94c2db75e3a396cc2280824d8a +TEST= 344 +PT= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= 14b4356eafaf0184c0b95d38ef8a3816776038eb9d379c58cb8dd0947faef418 +TEST= 345 +PT= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= 8e8d29dba9f0bb5cd0b5b1770aaae8a3efeeaf156ea01bd6d1fc5d1417a4cd50 +TEST= 346 +PT= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= 7caa87951309f592e0f6520b62da8868773c22c030706e9ec80ffec74a191359 +TEST= 347 +PT= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= 33b24b3417c93cb7c9b0b7e87a6e3bcc7cac4f628dec30d6e8d80890fd882d54 +TEST= 348 +PT= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= 96190cf564ce44ad4904395156a2e1220c06765dff73be5b7f77c23d6892344b +TEST= 349 +PT= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= ef9b53b9a05b5ceb34e9fe534076f6da6b6de27a958bb2e6778e2b554bd9a49b +TEST= 350 +PT= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= 76e40db4795fa1d9e9533d4f7f5f344bb7375799d4535a62ffaf3038d44a0102 +TEST= 351 +PT= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= 61c65ad3945b0222115d959e68f55966e7e50db0633cad31db857b9ff6153e02 +TEST= 352 +PT= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= 01c0c321ed99064c2122b847b968c4a2ac01e397160517f78d204b40353b130c +TEST= 353 +PT= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= 2a33266e2204ee2c1fd2ba1e5bc8986448ceea95217470bca7519f0b3755de35 +TEST= 354 +PT= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= b010937d5d64b47ef1862585c813eaeb853841b768b41a760b90d35701cb0993 +TEST= 355 +PT= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= 98dfd6e86ba747cb0d95688334985569b08473887f81f722f974ead36415f9c8 +TEST= 356 +PT= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= 5c006a8201d637a4401d2bd6b0bac5a1eeeb188a4f6e83e61447dd1c3a788c44 +TEST= 357 +PT= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= 3593b6e59455221602ac3debca80e994ca89137713cc763e785aecfcd258f97b +TEST= 358 +PT= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= 7cb944215faa4dcc1563f171fba80b6e9aa37af52098b3c90e533244d5ffddb3 +TEST= 359 +PT= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= f80b6d605419c5466a0d8c6d2c60e49dc273c9d8b27ddc5bc492ae719ebaa754 +TEST= 360 +PT= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= 63f23b337b40b7372acfc3fa4d24cefc6af15e7176960b4768bb0b1d6d5e1780 +TEST= 361 +PT= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= dfd394e454c05707a59266601885b61f883c42588ac03b18c8452f08d2746ecf +TEST= 362 +PT= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= fddf386ff494e14b1495f69890956412046686f8a14985144e8e7e3085634c99 +TEST= 363 +PT= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= 178867b7bef2acfb060b72855916e48fb445ffad4df21d88ea008f228d0558b1 +TEST= 364 +PT= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= cac43f15f9123d463b9682e222cf37731893fc52142a0e5f63ea62c9112ba911 +TEST= 365 +PT= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= 83711517f63f44a91ac89d32a13bd809956e23dd325d735cc38aa385ab8741d9 +TEST= 366 +PT= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= fe52c196aa32e93f51f04c1d227e35e637a16ffa3ad8e8b0946504de778129e7 +TEST= 367 +PT= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= 212f68163e44d67f002b51ea5d9004d6f27e597523c6957926a5a9d6129035a4 +TEST= 368 +PT= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= 311f7bd69f515122e44066d6c3bf28adf0dd8cda57151793cdb30d18d74bd5f0 +TEST= 369 +PT= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= 030cfc525389ef598de12413484b1de081d0bc0bbfa21091beefe37fda1b192f +TEST= 370 +PT= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= 3270f34631843dcea659384778837c0410b326c94859be5b35976264c47da7cb +TEST= 371 +PT= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= 73ce0c344dd851fc7b36607152c1fb28fc685bc720ae14062d560d7eb4d9693a +TEST= 372 +PT= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 8605fcb4f36f0b0b80fd284d23ef32b8e1a840a034d842da1d6f3b893da5360f +TEST= 373 +PT= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= 2076b14d8b63922f1901a7d19986b2268593fa288f5d2804d6e23f3ba75bd0c7 +TEST= 374 +PT= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= 28ad5b620156ef6033ee0819875b553da77096fec1119a3a2b9a91579b40e592 +TEST= 375 +PT= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= a25321faafeb6e25e341f57421126662b42a67b3e618ccd3553fc2fd07ee9515 +TEST= 376 +PT= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= fa64202cebf2b2a0e6dcd528081c4aaf5f0c67dcbb2d364ed9f9486297eba08b +TEST= 377 +PT= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= 11799b44eb28c67c776729ba7d92594ae25e94ef7ec6004da50b7fe355f4e7fb +TEST= 378 +PT= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= 2d8f004430ec356b21278eb0a97f7ce864dbc83fb004c1b1fd5cfe6020c7f695 +TEST= 379 +PT= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= 1191c1a72afc09dc00011944675800bdf882f5f489349b355ee76063114a0c8b +TEST= 380 +PT= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= 9c102d831bc901ce452bfaef60bbb6d8022368bcd620edd2eaf4178493865091 +TEST= 381 +PT= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 5e3788a18e55a4e411e93f0fe4810fd18a5c59aefc09f895dfbe9580215f9f21 +TEST= 382 +PT= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= b2aa8388ba5a72d5d1e421cc6ceb9a28bf51033264f54377e77a7b1ce820fab5 +TEST= 383 +PT= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= 174c227d5e7dc30ab00b7bd8729cc62f4d54e41734162c17fa442220812dea21 +TEST= 384 +PT= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= c8d4833858162662d805ce3b772b618b8844c6cc76fd445d191c5b8fa8bbc454 +TEST= 385 +PT= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= 8cbbf34cefc660087d412fdb0baad769acd4d48df46a615a949e136bd69d9365 +TEST= 386 +PT= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= 036155df0c17e05d80c54129da6b9abcf355f003b59f7ad1c46c2aa82b041497 +TEST= 387 +PT= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= bf9d252c1d003ea73e15e4a8040e8fd56cf251533cde2bbb35b3142d0c49765b +TEST= 388 +PT= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= 20a3e19beb04948921bb844d62a19f6a20b1299e37413fc5749235e7d574e101 +TEST= 389 +PT= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= 64e05c46ca262aee57203f21e13be9fb27dccbb48ceab252399bcaea7c8edbde +TEST= 390 +PT= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= 3a444e1633dfb2909a98a36a4cbf53ce0c5abc778de0e0d2f0b1f48238c761ef +TEST= 391 +PT= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= 16667d67013fe398140166ec77c43c960a15a84de2356abe82bddf8d0b7fbd3b +TEST= 392 +PT= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= b3d6e6b878d9bbefde2ab4de5cdf77845f8f08e2631aee8be1acfeb653180d74 +TEST= 393 +PT= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= 79871364891f0334cde2359133e72a1036bf693329b63d632fe379cbac3b8fe6 +TEST= 394 +PT= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= 7c8179f866c4fe6c49b1c7685896d61107d3114c6a0d06fab05360ded3b3d885 +TEST= 395 +PT= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= 5b0ce0f19799c1d77456a9f7f7e80a999a2635aab4e83e4b40a0e74e27ff5653 +TEST= 396 +PT= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= 95aa7029f154b9f6591d51a5a0a10a08c20af0739b41bd0c9a61998d1011a064 +TEST= 397 +PT= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= 92ac0b51df8a806c17401f319dd9907154a1a48c9fe714568432462106898fc0 +TEST= 398 +PT= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= d86fac76fae479917050f2f8631606c469371c2f2537a382557994d3bd447a13 +TEST= 399 +PT= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= 9af45eb0732ad9950f155d31aa21612fe9669aa03298b3d5003817efd5ef4700 +TEST= 400 +PT= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= 3c79eeba0ff2752c25fbc0f47a71a6b8fbc6d745192bc787775928527735618e +TEST= 401 +PT= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 9bcdd2a6468e651df26544976c24d6353a0640f27b41c0707df81d470f4cd17d +TEST= 402 +PT= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= 0fcb2076c1c4cf00969e37ef69b1119859346f6359d995f54ef606fe25cd3967 +TEST= 403 +PT= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= fd19a1f7e4850f4ef2cce03c46692b02a4f9071780d94cef5594d6872b4854ea +TEST= 404 +PT= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= 6ed08de3a12440facdef398cc34cfc09cc4ef2a57ef740a3fa4221884ca49646 +TEST= 405 +PT= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= 7a01ee4d09167a648208185cbd90f1aa9a35cb944e208ebc4129b709f984b38c +TEST= 406 +PT= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= 355f9fc84e6440f9833bb5c91f6f544f24e48956ee995be92ee7e6a6ea7c5db8 +TEST= 407 +PT= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= bb1ccf8dc584b757f1f0e507b02ccece863944480ba18260c2555749bc7c876c +TEST= 408 +PT= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= c028986e11fcd444baf089c2cec182712bf3d9f7675a27ae317e7efc608da04a +TEST= 409 +PT= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= 06d7bb1c0ef5fe0385599560c64ee6b0224abeb4a2f375cbe0e8d8436f90897a +TEST= 410 +PT= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= 11b5779d8f9f6b8c7544d634ee91b6812f0163a707e07441f242e6aea2987ec9 +TEST= 411 +PT= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= bd61d89cbc2f12da8683722f88ee1339ae3b86e14da05f905f62369bdc0617b7 +TEST= 412 +PT= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= 5b86a12d505dbbb9d3868efa530146f0e3a2d02e6df77102d9df039b10ddeb77 +TEST= 413 +PT= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= d12b839c06b90ed6e1367f6cbfdfe4a0d95764d2be492ae72c83692f1a46049e +TEST= 414 +PT= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= 60a6b9150b4f8a281adf9547e8cde43c87a80f686d5b9e787f8f8985d9988371 +TEST= 415 +PT= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= 8cf27d951fea60d714f36afe85715bc4bb1e80458a086f2487329ee79f39a2a1 +TEST= 416 +PT= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= 5e693ac9ea922f370afd1778bd918ca179c41fab08c09ce0bc7e402028e75399 +TEST= 417 +PT= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= 110ccf2804dac7f273261c554071a8bf1fb8dc1b0820ccc623bf029ab9283601 +TEST= 418 +PT= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= 636bc107eef3f5cfb9ae2e36e4f4b67a3948ae8579fdc0c99deff3b131cf661b +TEST= 419 +PT= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= 82d46757b3bee923344be1353fcfec5438627d1c5ed06a690f2b1b35aefd0aa3 +TEST= 420 +PT= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= 06ab9fc7ba931942a5a73f3443a39784d509eb003ea35a7d9c0febcb8a5e0692 +TEST= 421 +PT= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= ca368677d4923df36e54a60335e0297b4426764127e450ef84fd814fb13a955e +TEST= 422 +PT= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= b84d9d405f0666abaabe313251e4482ab277c4619b77b45a223c0649483c0808 +TEST= 423 +PT= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= 04726ee96628206a1f3245e3d52cd6bbcdef8526033ea416fc74da79fdd706ff +TEST= 424 +PT= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= 78294ef0bad5253e0eee53643912c71efc0d00ad735a2ba446103ea965bdf482 +TEST= 425 +PT= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= 63aa458e66aa1c762c60c6ed4b6fe5115cdbd4e89f8395acf3a84cc0a24ddfcb +TEST= 426 +PT= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= fb6823108f9273211bcef4bdd857f411e0e551672708229cd9fc8c3757b086c0 +TEST= 427 +PT= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= aa73f5dc2b15db903dc26e615555da98ccdbf57b20be6bbb00eed4d508c4856b +TEST= 428 +PT= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= a5d6cf7a98c2748373937fdc7f00918e9da27a7882ddacfc006b24d56a4d7afe +TEST= 429 +PT= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= 0280aa1d0a4056ebb1998974ca8f2a1d21e4bc80ae7077c975f6dfd323ad79d8 +TEST= 430 +PT= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= a27b9db889860285e575eb4a4f0d04ac74987e602dd0f43fca26343d5720fd7a +TEST= 431 +PT= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= 6b9140cba67ebc28b788ec4a04b66cc52b291ed2ecc67cdc0da159f732e1ac17 +TEST= 432 +PT= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= 8e48f8bd387691e80969bf47e734590b6bace5ace9572e8cacf727bc22a0e188 +TEST= 433 +PT= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= 18727e91459564d6035f2bc54555662d3f55ab13a674480f1f35a5eb07ff0aae +TEST= 434 +PT= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= 7766812fc6f95ecf7ae043a1e85c98bccc5c444ed3a3e025cfb508a14e9e64d3 +TEST= 435 +PT= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= 83fbd55bab540ba2d32f05817b78f354527c3b10433176b0784026374f4434b6 +TEST= 436 +PT= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= bf1a3ec2f1fd5b6b0a8a610086f62cb5f9e79a408fc0d6e688c4b4d32a55f376 +TEST= 437 +PT= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= 92634970b3dccd5d131fd591379beab4fbae177f62a452f21468b3f822079b42 +TEST= 438 +PT= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= 312f31a2d0a4a3ea1cdf6dd47bfd21d7a6e4c148589e1da89fd937685238cf31 +TEST= 439 +PT= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= 1e28b1018494460b9c0e3a8678b54430ebfef0f1853605eb7d9ae3007480d0a9 +TEST= 440 +PT= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= c0415d3f801ffe9996d108c98c1aa2946a68aaaad84445094e99ebe6fc83f571 +TEST= 441 +PT= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= c3b8ac934a34ac60b5237925de7191b1f47d74d25eacfa6e88624d0f353e6790 +TEST= 442 +PT= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= 03099c4e691e551922e1db72311ed2bd587bf232a61859dc7a8ee28a7500b25a +TEST= 443 +PT= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= ed95f2105902d207f44bfb72d0c896197c47e8452368d94cc9f721c0119f1aa0 +TEST= 444 +PT= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= 96c085df7c1b89c3ab0139007b805e2f2d2b6bd01d20dab7bb3344a309b835ba +TEST= 445 +PT= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= 8ba049fcc5bdef1236dc585f3f6dc2a9bd43f7dbd10a401b95ee4c5a2adfb7a8 +TEST= 446 +PT= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= 80e6ca38e6bd379400497e368eb5d0651b7cbd33e0ad2aff4e5a86dcfa4e24d1 +TEST= 447 +PT= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 5ead89c08a8b7a97f5505fb2555f9b714fbc90816e72e831158b2c33300ef21a +TEST= 448 +PT= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= e3a0a27a664ec9e6fce7f8bcb9bfe0d5eb34fd359988eaa9de593091aefa5e26 +TEST= 449 +PT= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= d241329c1c8601423893aa7db6a2cb496ddb2c8c78b4ce581b5035d59f088af5 +TEST= 450 +PT= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= 32e4cd2d65ed5830801f66e27eca71d53a45bf55a65668e77d662e7f178795ab +TEST= 451 +PT= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= dc1d59b51bbf281aa6395c00f8da8632327d50a9ff524766c7a9f8fa906ecc3c +TEST= 452 +PT= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= b8a29faa57931ef34315d090a029932aaae7dc6a5cf12a45116512fe24867b56 +TEST= 453 +PT= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= edd52b74559338ada2cd5f6b63908b11ca059ba4581370f956f8ec5926354d66 +TEST= 454 +PT= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 6786b5b20c1bd1de38cc5156a65a7870785804f90c401f5fe9a4511ec3011acf +TEST= 455 +PT= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= 1f29a0eb729eb01841a8123ac684f0e200520034f4a72abb2d765ccab6932386 +TEST= 456 +PT= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= 6b413282675b03a187c2d0751611e7332b19011361e9f895fcbf1e268a6db3d6 +TEST= 457 +PT= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= ca84f45e9a3fadf524e390a4588f3b1456ce243eeafd11ccf5e11110973bd66c +TEST= 458 +PT= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= b89264dfe2ebfba75b4cdf7615346c75511ad9df4cf229a6d7a66888d3095814 +TEST= 459 +PT= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= b8a30313b2d2c54971c43497ba99c2372ecf6155c1944d23123caed91d3d9243 +TEST= 460 +PT= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= ae634b1d73a738c29e77b5b81de001091e74d056a7eb96330baa05b68466f2ba +TEST= 461 +PT= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= 2b6bae6e4ed4751e3aac6fd42077d060c10dc2c1e2f11c1f0ea72dc2869389f1 +TEST= 462 +PT= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= bf9f1ad6e269d1f35cf04edb5e0f1492cbc85330ab4efa1b400ebe1ad5f3cfdf +TEST= 463 +PT= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= 24dac6982851b897f63d6bb3888cc803cde618c8c35df54fec387de0e3951374 +TEST= 464 +PT= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= f982f57d222eaaffcd0a88df83823a89af38a46d2ce87782fec2a507820adda1 +TEST= 465 +PT= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= 68acab0b65805dc1766052376aa843a843925bc6679a2836ccbf355f92b29931 +TEST= 466 +PT= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= a6b71abcf33e782c6aae4b982da35ec441a38fd09990f99540693d99b7faad22 +TEST= 467 +PT= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= 4b561f06c41815ca444a6728f30e60ae95671d6b97e4a7c496d2df12abc19197 +TEST= 468 +PT= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 0d070cbaf37e4604bd6389add9ecb38062a961fa0f877c294a320f0c54bd2bc4 +TEST= 469 +PT= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= d3fccc414031fde89ae0c270e99d9bb0e5382f8e842d6e870b2beee3ab8ef018 +TEST= 470 +PT= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= 873c313b95c6369dffccabf8d00b03cd956e3ef7fc6ecc4aeef3b2aa053d39f3 +TEST= 471 +PT= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= ea63179f722fd1d60fc849b1509a6ed20f1a5dc13bc22a9fdd7e4fd073339373 +TEST= 472 +PT= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= 65e50aaf8802526eb72ad85d934c0f4677443cc34abb09f24e926779a2ae089a +TEST= 473 +PT= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= 6440d966b636af45529c2defc2168758979ff32dd7667f91325cdf74b487215d +TEST= 474 +PT= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= f569aa50bb785e1c6f5d1df3c0477b784c45d1677126c787f402492532d54db7 +TEST= 475 +PT= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= 215cc54d64148cabf8c8da55cf594992172ad450fbe9a105f28411e706add14b +TEST= 476 +PT= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= 4e096bfa88f9c51a62b884aaf7fcaf199a5e92c08c814032e16f7fd95c4dcc0d +TEST= 477 +PT= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= 7ecdc1334dad3f876b38989d1f64fcbc7b2e50e25bf5d6812f0c85a7c04ab51b +TEST= 478 +PT= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= 3ea05c973fd713476d4c7c2a7becb0a98cbcf511c8739e2d8210016b422f2e65 +TEST= 479 +PT= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= b4167a05c61eb6f57fb1960a5fd8c781af25c27958e5cafe69a3e0a6b74e7b0a +TEST= 480 +PT= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= ead6cce5761b7a3470658a75e684ee02777e82b3fb6eca9cc07d41f9538065fc +TEST= 481 +PT= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= 6e5b4838227c1ef4e9d884f6b15b209428e9b5e5980999be1fe0df92f85d4cc3 +TEST= 482 +PT= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= 426e3cbc88d3d3f9ab3ebde51075979a470cb96fb44ffd2ced956274aa868025 +TEST= 483 +PT= fffffff800000000000000000000000000000000000000000000000000000000 +CT= 5f89036f33a9631fa4a443596387f5845e4f08e3735f625bdf76025e6e644c66 +TEST= 484 +PT= fffffff000000000000000000000000000000000000000000000000000000000 +CT= 07953a850d5f38b6146b1ee485666c7f742b90c020135309cf584c04aad62301 +TEST= 485 +PT= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= 1df281b8f7628f3c39f10a54ada4c43f342630f349de471bb68cde422228c45c +TEST= 486 +PT= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= d2d3bb4487418db87b2587478c328cb799c7bcd4be2a5c7581c6e4fd9e770440 +TEST= 487 +PT= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= 0ee6bbbfb8c2df6ae48e47f57a25e478188e86428b79d6dc001cbc63ed8c8867 +TEST= 488 +PT= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= d5d6487843cbbde652732d180d9e2a094ae79af5887868f95eddb8d108acabd7 +TEST= 489 +PT= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= 64d700411ec14fe448daf176d0b962be39645dffb754bf59685c099568ffe440 +TEST= 490 +PT= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= 36aa4fdd4e9d8936a027bf5b197d39b93a82063aabf2baa0b9c5057280256f73 +TEST= 491 +PT= fffff80000000000000000000000000000000000000000000000000000000000 +CT= 6f3ef1d96667fb22d89534ba054ff7d31f18fd2ec2b740c8f2c9a0fe9937cc3e +TEST= 492 +PT= fffff00000000000000000000000000000000000000000000000000000000000 +CT= 61021af92a4a39f4b92d0e6554febaf37270b4017642b60a26a1b73406c9ed74 +TEST= 493 +PT= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= 9e14cc421d461aa82d66daf8814e775496eaaeaef87aca12c8c20b47f60e2c01 +TEST= 494 +PT= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= 35dd6bfb90c977b7d1b1352a9f975710302feffe94e6d6da036f2c427a3b98ab +TEST= 495 +PT= ffff800000000000000000000000000000000000000000000000000000000000 +CT= 8b68819224804f1b687225187a5b5ed7d552baf42c2de83f3c9347b326f990e8 +TEST= 496 +PT= ffff000000000000000000000000000000000000000000000000000000000000 +CT= f3502173cd579cd85cd588e603f1b44d95c4ec10d9550689c9d9a6a671f5f474 +TEST= 497 +PT= fffe000000000000000000000000000000000000000000000000000000000000 +CT= 7c982f6a6d0785c9fa55f7bbd98800ae6b1fe97a611f7c69e8fedfa6e717a08c +TEST= 498 +PT= fffc000000000000000000000000000000000000000000000000000000000000 +CT= 61cf33e0e7a8b3fe56d21e24aa38299783007df53c6ac204d56c4f3d873ecb08 +TEST= 499 +PT= fff8000000000000000000000000000000000000000000000000000000000000 +CT= 28ad944d7c033587f8a417ac98e8c425b89b3ade51e795d6adc752ebb228ff45 +TEST= 500 +PT= fff0000000000000000000000000000000000000000000000000000000000000 +CT= 3500f4ad2cba140f5091dd1c28880bd9c89851fbbd018348b0cbc3b417c09041 +TEST= 501 +PT= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= 0f1a3d1c10806301e971695b2be2a2fbeab14da307d60ac7cd85b3e29d7e34d1 +TEST= 502 +PT= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= 20f4362f7bcc955776176472296de42f892089ae2eb055810cf1ab30024b60e0 +TEST= 503 +PT= ff80000000000000000000000000000000000000000000000000000000000000 +CT= e699a663721c764d1129c29fbc9dba127010c22c3d40425bccd3a636ebbbcc9d +TEST= 504 +PT= ff00000000000000000000000000000000000000000000000000000000000000 +CT= d38b5723c6089fb98c8c1df4ecddbf967c9f6c857640e1047e870d750cf09f54 +TEST= 505 +PT= fe00000000000000000000000000000000000000000000000000000000000000 +CT= b5bece28c4a3e84c5508cf5fe3e7ce50bee49e2dd5f5a4d4f74897c0baa588ef +TEST= 506 +PT= fc00000000000000000000000000000000000000000000000000000000000000 +CT= 6dc91ec791e9f232a6b0ce0dac386bf6e893cf4ad63e4b002ce2f8560f8d48f1 +TEST= 507 +PT= f800000000000000000000000000000000000000000000000000000000000000 +CT= 7d9ab8d58a80dc4e3515194efabb88472d06bbf4e91f5785886eb42078d91edd +TEST= 508 +PT= f000000000000000000000000000000000000000000000000000000000000000 +CT= ff6801a62e9e068464486872ecb5b06c503f6c2ad6372bf09ca417ce941d8363 +TEST= 509 +PT= e000000000000000000000000000000000000000000000000000000000000000 +CT= d6f95eba4164f5b68a2facf15df1ab64b2cc7ae817ac89af47a53ebc57d584bc +TEST= 510 +PT= c000000000000000000000000000000000000000000000000000000000000000 +CT= c298e141d3023f747bc758b546646e7f168a3da811b94ff4c817a3aaa30421bc +TEST= 511 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 105ad7cd0c5d2f7b40df76a3d264248f10493fbb5710f90a0a84e1e09437f529 diff --git a/flint/test/testvals/ecbnt86.txt b/flint/test/testvals/ecbnt86.txt new file mode 100644 index 0000000..5a3d90b --- /dev/null +++ b/flint/test/testvals/ecbnt86.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= f927363ef5b3b4984a9eb9109844152ec167f08102644e3f9028070433df9f2a +TEST= 1 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 084f30731a376a3a75478dc30e080862e353dc29dc381326706e59dc1e03512a +TEST= 2 +PT= 0000000000000000000000000000000000000000000000000000000000000003 +CT= f4204424a77bdbe2cf159298f56f24b5fb0bc1d22af3bf732053c8a02bb87901 +TEST= 3 +PT= 0000000000000000000000000000000000000000000000000000000000000007 +CT= f05e43ec1220e45c88bc43d26955a41cbeb75a5522d2f3f7364ca690a5e53817 +TEST= 4 +PT= 000000000000000000000000000000000000000000000000000000000000000f +CT= 1813020d349710ac723d27986440a1aad0f9930822a2f8c47a81f60af134af74 +TEST= 5 +PT= 000000000000000000000000000000000000000000000000000000000000001f +CT= ea33973f62721f3ac1d4e6c9f0ec15820a33ff0993aa2af2b23d104ff402b52b +TEST= 6 +PT= 000000000000000000000000000000000000000000000000000000000000003f +CT= 7e7c4a2b4a720e0e96095ab64ed4eb27f781e45140d65872a07a294182c3d001 +TEST= 7 +PT= 000000000000000000000000000000000000000000000000000000000000007f +CT= cabc47d19a6f5efaa0126104863fc80731cf2a449adbe0472b3cb1553f579f76 +TEST= 8 +PT= 00000000000000000000000000000000000000000000000000000000000000ff +CT= a1bb84350866258d0c8bd503ba56b9147fab7cc21b04cf1d0a271cb5b33db223 +TEST= 9 +PT= 00000000000000000000000000000000000000000000000000000000000001ff +CT= 6be840861c11e4621877cd1ce5cc320d85b2c773d583f1385b8e5f2a2b7e9305 +TEST= 10 +PT= 00000000000000000000000000000000000000000000000000000000000003ff +CT= 1d806ae7d0f3d4c41e64205f2a5ec55f3d2e25c6fd71ed60d1338a39c5323219 +TEST= 11 +PT= 00000000000000000000000000000000000000000000000000000000000007ff +CT= 42b96a6e9c4196743fa720b66568fcafb9f325ff103f4d90677ea4997040a1f6 +TEST= 12 +PT= 0000000000000000000000000000000000000000000000000000000000000fff +CT= 7f2195fe5e59ba254b8d9da5ce9a37bfcb84bdea82c08cf52139b63cc7ef78e5 +TEST= 13 +PT= 0000000000000000000000000000000000000000000000000000000000001fff +CT= 47d0d2b62e3af142d41574d36fce3717b5e94fc5e3ff622ca7b08f59edf702a4 +TEST= 14 +PT= 0000000000000000000000000000000000000000000000000000000000003fff +CT= 71d868ff90d6e5fc9c6600655f043ea1671893a19d04fed0c26b8bd961077c47 +TEST= 15 +PT= 0000000000000000000000000000000000000000000000000000000000007fff +CT= 2ae516db783a957de67884ab819c67d7f002d628f063d3c28fd43832e6e974d4 +TEST= 16 +PT= 000000000000000000000000000000000000000000000000000000000000ffff +CT= cadeab772c14c24ddf5c8368444e5bea78753a2c90039ae7549e273768c6085f +TEST= 17 +PT= 000000000000000000000000000000000000000000000000000000000001ffff +CT= 8e771d72def5984f602c0743c141a0513be9b97ec67f0dfe97730698065f3546 +TEST= 18 +PT= 000000000000000000000000000000000000000000000000000000000003ffff +CT= 223e109babab15197961c8e8b59711fd8b1e017b4cfc1f7eb7b0811e2c2b0979 +TEST= 19 +PT= 000000000000000000000000000000000000000000000000000000000007ffff +CT= 9fca7c1f4d552e18228dd4ec656d6fb00ef73bf28f02c6919a3ba4d10feae07e +TEST= 20 +PT= 00000000000000000000000000000000000000000000000000000000000fffff +CT= 5c39c907c9f33684fae12ca7c8d931454d3461902dafcbee7a2ff10bc2d090fb +TEST= 21 +PT= 00000000000000000000000000000000000000000000000000000000001fffff +CT= 66a457c3392b911ea792f0cef7a8db2a5fb2721c7ca09bee3f665be88d77e6eb +TEST= 22 +PT= 00000000000000000000000000000000000000000000000000000000003fffff +CT= 7eeacf5b46d3f20ee77d9b54d26170c876396b4bbe0f02c278604ad685bedd35 +TEST= 23 +PT= 00000000000000000000000000000000000000000000000000000000007fffff +CT= aaba2e57a6ab806d3f7a5dda95fa3c71262e354aa6deedea74d73eee38b082f3 +TEST= 24 +PT= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= 39891f85775ffa2fc90d62e4be9d69912a3f28aa2e7f7d31c06bf1a2bedb3039 +TEST= 25 +PT= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= 5abf135c981a4cccf506df3d993bc07942f734bd61a5834bc078a6b2a1e27f7b +TEST= 26 +PT= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= 43ecad5f10775dcaca2691465dcd2a4e442352d28c3382ecda893ec7d2ba0cfc +TEST= 27 +PT= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= ce5fb3ad594b9825b6e6d7a868e204c578266202f1c27e869da50401554609ea +TEST= 28 +PT= 000000000000000000000000000000000000000000000000000000000fffffff +CT= 17a50bb56517e159f3e06a284d9809721c60b44020e18af2750f13d6c275fe3d +TEST= 29 +PT= 000000000000000000000000000000000000000000000000000000001fffffff +CT= b545ec46606ef2d364c68bd70f2d5743470e1e5042cc6efe3131780b900042f5 +TEST= 30 +PT= 000000000000000000000000000000000000000000000000000000003fffffff +CT= 25c7668158649ea85fc70c02001856ef665e84a8da1b81a4dd54cd753dbf807c +TEST= 31 +PT= 000000000000000000000000000000000000000000000000000000007fffffff +CT= 4db694df266ee3dea865e9cc4d3a1ea47606821944a2f418093724f28aaea047 +TEST= 32 +PT= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= 50ca6fd8efcc7aa02b6887c178510ed8a67fa6fec756ff1ec8c048be2f48fd0d +TEST= 33 +PT= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= cc20d7317e89497cbeb9ac7df61f1c9692d8bf4e22437ce8ae895f0bcd54ecec +TEST= 34 +PT= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= d3faf637f03fd89cc08c0e958d7ec24f6d9c852007ce2e21a7eb656ec40b1d07 +TEST= 35 +PT= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= 52ef8e1bca8b2b9d45c50c019924bc1519a9abf180889e0e34cf7ebb9c155151 +TEST= 36 +PT= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= d1305e6943a16948fe11b9f599aaa8311ad98c95dd6afe2278a6ebfa0a487818 +TEST= 37 +PT= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= 1ccf9cb4cfe58360b09889815e3a1211952828432edc0485cabfb412ea373f78 +TEST= 38 +PT= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= abaafcf73ade14e482902cdd28af9523460b2fa0c2568c4f1ef61981f78cc3fd +TEST= 39 +PT= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= 55e64cb8369daf9668c4435b77cee05de35ee00244a5529ce105f03f7c94bd42 +TEST= 40 +PT= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= bc8e3d8ec90c2a59a65ff0b4eaa2a08353784aade089dbebfc968f40bf47a8a1 +TEST= 41 +PT= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= 247bb975be3929867d2bc790560db38636f09a7ab0a814ef84cbb9afecc24c34 +TEST= 42 +PT= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= fac59ad08cacfe53f183399a49719008c639a3e75f2908e2b7f19f8c3b0a338d +TEST= 43 +PT= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= 474bb2ee4cbae9ceed9f577e08d9418aa582f4aa83efa62d2c5df3f8777769c5 +TEST= 44 +PT= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= 345575aae1f2786d35dbbaef2190c3e319e5a75dfa36ae70966b1740800b504f +TEST= 45 +PT= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= 08eb6736aec892f6cb6f1c72652368651d434599d720daa7e0b8e27a92f5909d +TEST= 46 +PT= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= 2ca4789e547f037b3407843be3569b4cf35699065077b8fa07cd006d61c5faa2 +TEST= 47 +PT= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= 583edcf3c417f54c00cd7119889868ebac5af5b844dafd971a790c6abffd184e +TEST= 48 +PT= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= da708f0cc99537a2145a72b1972905f0f879b5f630b4f37c89c2d88e73932a85 +TEST= 49 +PT= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= a3fef4566579acfc2324944d669f4a6aa53f8387bd13d7b628861d8dd219fff6 +TEST= 50 +PT= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= df3ee24d9868e20648e620fb81e029da1b4512d9eca1617952f49cd0beab98e0 +TEST= 51 +PT= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= 5b682eed1710644f42023428f2a773c9d9efd819f7c22d005437d13247153de1 +TEST= 52 +PT= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= 76657e76c5cd417da14a603c1a331269c8303e527f2338a2461bcba0ad2bb99f +TEST= 53 +PT= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= 9c2e1870d19b8679c2b13be81536a00567ff221c1f95c4d39e255a0e743fc6e8 +TEST= 54 +PT= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= 2893079c1298ab0c382de994cca8168239a2c85a0a6e672fa957382760ba11ab +TEST= 55 +PT= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= cbf73a43ea77d4ce5b71999008dd3327d75805acd3ea8faac23abcced7478fda +TEST= 56 +PT= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= 28746b234f0fa631a61c9dd5bd8813e0fb939a726d743777f3a622fde952470b +TEST= 57 +PT= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 5cd303e858a7fe14bcb5907f5441035cdcc4067363392b70908bbdee8a5144b3 +TEST= 58 +PT= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= 55a93331f3f49e3830d021408d87b54712453f89bb18e1760d16e39a5010a882 +TEST= 59 +PT= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= c70d2a93b03e4e58a35050b2ebf8e45148c02ec65d4db24a74e4661a9dbbcc7a +TEST= 60 +PT= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= d9465fb11672f01736a972263dce52009cfde18ae73abd9bc5bdf27e6436545d +TEST= 61 +PT= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= 21cab30589ef9f9e9bd97b7d5aa36b59013a0b9e623067fe034fb7fb448d393d +TEST= 62 +PT= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= 012dd3a925c555c23b1ab2506ea9c74eda1e0a84f008cbe131c128685d3f57b8 +TEST= 63 +PT= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= 6a100da30f68a735a1510f6fe7cfbce5435dd5fd43dd2b77a6180a9b60742b26 +TEST= 64 +PT= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= 07516bc7d3b5c726f7a24796c1b99be90f3825ef7be678d3ef17c92373610625 +TEST= 65 +PT= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= b7b1a60e346fe2c8bfe90cbf0bc9991138d4929826ea2e0e2ef33f4453a5dd90 +TEST= 66 +PT= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= c501665414874b1599921179ac130e7c3da4a1f593cd70f51c940f09d19d6c6c +TEST= 67 +PT= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= 57a328da73580dc00d2b8208177d92c5c6dd134936ff0827833ed28889bb7d3e +TEST= 68 +PT= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= 31bcc0cbd55625340b37ae61116ca9ead012f4fcf28ae7d86aed47373ff78ec2 +TEST= 69 +PT= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= 11d87941546a56b9a7f7f2402d8cb4978a2ee081e10e1d09b121940c60fe9b69 +TEST= 70 +PT= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= 7c69807ea0637438804d72e18ab4f3dc3ef0972f997be57bb9d6cf3549c9db9f +TEST= 71 +PT= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= 8e44c2b709deab7eeeacdcde73c4f7eb63563fa040c201c8b717a667025add1c +TEST= 72 +PT= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= af631eedc10487ca43a32c3473d3787f6ff64ceb3d12468f0a63cd847009842f +TEST= 73 +PT= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= ac673d8bb1adc59717db613df059f2619c436231b0bc476d3dddbd9bd851dee8 +TEST= 74 +PT= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= a84cf72b6e5c709e936bd4838f696d22023bc19c4647edcb7e5ec85796b71fff +TEST= 75 +PT= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= 993bf4b7d01f6e63bf9d1328ede0ee419f558ad27750ba50f49c612754cca409 +TEST= 76 +PT= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= 36717b3e6cc04a28dc628577c784c1015626e2de9836cae4eda7fb60e7e0b855 +TEST= 77 +PT= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= 4af2982049e5cfedea81c385fe17d18187784ed74506ec5a16c81a525af04ec0 +TEST= 78 +PT= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= bdbe71d4f236b936feedb888d714fe335916583649d790059eb83e2d3c95f13d +TEST= 79 +PT= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= 318a1838bf27379873fa83747713f2f0b66c517917b41662cf4a8f93a6fbb481 +TEST= 80 +PT= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= 9fbf057da718a45393f381a31442cfc25fca7a3cc7f530138da31e7cb1694ff5 +TEST= 81 +PT= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= fb4497fa6b449fb70889cfa5893dcb163909154b9d8b651dd7b751bade93410a +TEST= 82 +PT= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= c4ba3de8ebe21f5a5f70626f99e7382fc7d313f6891440b4d8cff037e9ce54b9 +TEST= 83 +PT= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= b866099f691167fe21e3451dec42ae94a5502d5665499dafbc947c39d4040bf9 +TEST= 84 +PT= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= 57bbed8bb078fa3e53b59f9057f8791cadec1b868b3f68c348dcdfc2fcddcccf +TEST= 85 +PT= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= 5dc5ba101f3127d309fa6628f97dfdc99ef9520c10ca14950a7b866523eed369 +TEST= 86 +PT= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= 49a4fad4f9528ae589fa840839566d0d263486022f18b71c3e95c69cd8aa8c3a +TEST= 87 +PT= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= 9faa5dcbf9b6d956fe27f4efba92813aaae4daa3028c3cb30ea85a73a5d48483 +TEST= 88 +PT= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= 2e73efd314295f6cb341c3e573a6968f7df0b14f021ab53c58acf88d9d9228ed +TEST= 89 +PT= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 3e1f54a3d7f84f200be0b312d4227020e27d284413fdd13276368425a13811fd +TEST= 90 +PT= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= eb8df929025f5bcd1bcfda647fb99ec8abe7fb1a7d4a7d6314bbb07308d61c02 +TEST= 91 +PT= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= c1282eb183f9b575f7ab9679f62ecc15b21c5c3e1d4c558a4be2c7fc64ff6cc0 +TEST= 92 +PT= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= a21d9a8d41a8113f6683939929f1f02db548266feceff48fc659f8d981781069 +TEST= 93 +PT= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= 576d0e91ebbf7a2631534fe07d9c9dccf8f796fb4e3ed317cbe76bb8dd55e31e +TEST= 94 +PT= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= 9c89b78af84e26d730ccd153035cadf82fd4f83fdd53f7f1f64a4d41d8734bf4 +TEST= 95 +PT= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= 1c9be8a4cb4d40089a2e6a9e9f06c518e1e70f331b9ac1b77e986864a85ef709 +TEST= 96 +PT= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= d2e04fea1226c920d03e1000e1a4e1b11635a16f9c4b56c2f5580a3054ff203f +TEST= 97 +PT= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= 063fb4f674ea28419cb845ddd9afa259b5b0048266f7fac96b63d42a4d842f53 +TEST= 98 +PT= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= c119bc34c2761f29c8d65add959cee6c0016df1278d63804a2722f61f8922790 +TEST= 99 +PT= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= 1a9de294a78c0d054b0a920395b04840de8aea56a874388ddf75f0ff72cfd715 +TEST= 100 +PT= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= fe9313a29eb4a03ab62d7152d9b479d7302c3ae38607915808ec95814d784603 +TEST= 101 +PT= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= 796bcd14f869061941672da1bed519a1c248fb12627df8a40fffbd5a49acbbee +TEST= 102 +PT= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= b85926dc1b9d5151ef97c98a936b18ed04836222c974a7a4638da2a6310477e4 +TEST= 103 +PT= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= 8cd29967e14f34200ce25032e77ee1464f97d0b10ae30d0ea3ca5b826d3c6303 +TEST= 104 +PT= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= 118b261abdea93758948324c6308c821b395a465da8be812f18547f3aafec724 +TEST= 105 +PT= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= dd18529a28456dc956b2c3f3743587827a4befe5bda19717e2803fb90aeacc02 +TEST= 106 +PT= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= ee6bf60b162feb851661270a17bc7f89b5a4bff77583c976cce93a6d0987c37a +TEST= 107 +PT= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= 9f8a92562dac16fcd1491455ce10eda2781ff59568bd0fcddf6574060128bd9e +TEST= 108 +PT= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= 6840dc9bd2cf546fd3c42eafc699964ee1fae95c3a5468847e6cac53b147ff00 +TEST= 109 +PT= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= df49996de7466d2c2d7ccbfeb91419a288ef2fbb0bae75da61b1dcf1f1a9301e +TEST= 110 +PT= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= 84d6cf3d6de79f5ec388e5cbaba3d3525aaa5964789bd7468742cb522e5bb6bb +TEST= 111 +PT= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= 2aa24abb4c25484e241e80b15bdea936ba3f3e16d5886a3ca28a677a9bd73aeb +TEST= 112 +PT= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= 5b294d0a865b28755057e173dfbd4b3597534f8235e2df4d4f264f935a1664e4 +TEST= 113 +PT= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= 5d675271ebc0b76da248370ab59a2ceb272d10bb5055fe42dd3a53b0e6751ecf +TEST= 114 +PT= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= 0fb6b6695f9660fa67cfd15331e3dc593bde3e04d3b96e52ca8c7d2d47d17b14 +TEST= 115 +PT= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= 1a19263311e36082d019564e7c73226b0c4be25be57fb525378655a5ae83d6e7 +TEST= 116 +PT= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= 2d5071dbc0d66e859aaee3dcafeee3cec9a4aba50fc3cd1737bbf6a872894824 +TEST= 117 +PT= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= 8d3e57cb0ab616ec2d4355ed9d27994733737981512a75f3c2b3d09d0f91f5e3 +TEST= 118 +PT= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= 9d725ab4fecb832adb83da7bff30ffcdc12df2718431bc654182234551e7d7c2 +TEST= 119 +PT= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= d58eb7197b56560373a8899a6f52bae4c600ec8c9ab339d6ff5e451a5d967e80 +TEST= 120 +PT= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= c25d178c86a5aae65de46a2161c65d20bcdae40bf0fb6f3cdaade51d443291ef +TEST= 121 +PT= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= e53763e287202170873b9987ace05d04ed916bc4741adf818a6239ade160c9c3 +TEST= 122 +PT= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= 06f355579855acd0538484c8edd64877c3017727a854993f02066025e29a9bd9 +TEST= 123 +PT= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 7d17c9873031bc4e6b87c208413eaab55a32ecb104a121ac7ec641d093cf3e1a +TEST= 124 +PT= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= fd7343f4a47dc5155da83c50f3b0b4a0d65010358f776a435d185987b79cd234 +TEST= 125 +PT= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= 57554b452755ed7fea203c4b8df4e2822b19d48411bbeba03e6cab9663a711c8 +TEST= 126 +PT= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 515af807dc3717e0dfccd31543f462da11e2a4566c03a44c8d2b2d16d32914b8 +TEST= 127 +PT= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= e62b18f76419e6c0f5acfa7262934cb172f969102411052504fe7e00e8f0f200 +TEST= 128 +PT= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= 7e787928017b366ae8778df2339a32b3da69373a158952137066d79a2d522e9f +TEST= 129 +PT= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= 9125a8e2e3b1e8b8dd8b49c8aa3bfc4a7bdbaa2b1a67ca85cf11b63f57aae63a +TEST= 130 +PT= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= d935562837ef354258191781a4eebfa15c4ded57fcbbca29d675b14d72a611c3 +TEST= 131 +PT= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= 301f2157fcddb34b0f975ee90cff178750f2bf03a7fa9ab75107c90f8c0ab04d +TEST= 132 +PT= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 4777b041a74a75ee70bea5d4979ba2086a2f8e669f74287a0fbd3745754e92fb +TEST= 133 +PT= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= 9d1ca4e19a0d19544d9177f47c5a35c9975c9c4897e07426952ea42de80f83aa +TEST= 134 +PT= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= 9598da354722aef2afe6c06feac0343ff5480d6747f5c9c21ff1711ce68c44bb +TEST= 135 +PT= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= d7a6e6b11be63899c1d3fb655a1987103c939c527c097c26b229e8030c43c905 +TEST= 136 +PT= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= 34fd53533f149f06dabe24acec467780c319355eed10668070c5d9283eda7345 +TEST= 137 +PT= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= de8cb82978b4dcba5ff4d0745440059bd01b6a699673c6c4f56ffb3861126091 +TEST= 138 +PT= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= 4ea41278cdb61481f5355a9e4ca3d1dbfb0e137dd6eb7811e771d466386a177f +TEST= 139 +PT= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= d2dcbb6d4a3bec0eaa076a50047263c10d1beb95a31a48c90181d1ae4ee8a7de +TEST= 140 +PT= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= 804ac9253ef9ebfd8d471c5a3ae977b07bfb77ed396af82c11b489c0dcf36549 +TEST= 141 +PT= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= a4189c79f8812b46e9e68ea5f0558e647dd111cf60b9d218d678bd72a5b3db00 +TEST= 142 +PT= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= d9ef8700772f4e0e2e94901cca269fe99fe8c3334f0bc7743ecebf08c2cf3303 +TEST= 143 +PT= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= 9122edb95fa728e406e5ead1833da89d2d02eb04bce335653536cddf9b2c5e09 +TEST= 144 +PT= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 730663177a36c94d3f190906f2037a8c01e34edcc9a1ed9056328e9f074eb22e +TEST= 145 +PT= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= 417a7d5def91c59aeaab426f1a6f0539f3df0d0cdf014cfdcb079362255c2b27 +TEST= 146 +PT= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= 203b0e8a2ad6e908774839ae7f5f800d328ad4fdaf4b04f1f11e400b198cdd56 +TEST= 147 +PT= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= 85608901a0723e13332ea78e8313146e464e4bbba3e79344d0d29d2405d1fa9c +TEST= 148 +PT= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= 4b1841d7625f69b8fe515388bfbd7c00ae92ad75c843b276d9644973720d09dd +TEST= 149 +PT= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= 1164f348e8d8befe352b7c6e5309ad7c52b92bb92dcd08a174d3160eb0950dcb +TEST= 150 +PT= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= bf064a56d61954cc79e9e1259bad1d243cf564243bb06f58f0aeb073b5db808f +TEST= 151 +PT= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= d4ebb159b726866ba117b9ee86a453fff7a13aa853f5a5573c256d64bd6a3909 +TEST= 152 +PT= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= dbc7c38e80a7850f42d14dc36dc738cb656056a4fe2ee927167d5e435530a3a7 +TEST= 153 +PT= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= 1b38835fbfae7e94d34e6576c7e37c1b511abb6ed0ac87f8e6ca53e85c1c4b32 +TEST= 154 +PT= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= 656859e228737c5546c5b85b9f1a96c11b305b735a31c6d2896c221eb4f00133 +TEST= 155 +PT= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= acb947bee782a3de5e7f225d7387689fa11fef84b8a0cea006399a18642ab87d +TEST= 156 +PT= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= 2214a523488eb7fe988cc0f2bb90e7d4164b4102aa751c11e15b2d32086fb736 +TEST= 157 +PT= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= b9d553ae40ee8670b22103e5663ee133663f4059a3ba16634a7a9a08dd8ee4c8 +TEST= 158 +PT= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= d47db5afae9e95878e220d3850b257f92989014bc68235d00fa210f9fad46d3b +TEST= 159 +PT= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= e446f299d1d8792659fe269d47d646277896a5d6f96d1b87bbb73deef00aec55 +TEST= 160 +PT= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= 6e4b9e7d0027a86329af21fd3371251884b09c44c383ed0b830d3811f75f6566 +TEST= 161 +PT= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= 393d305acd298676fe34666c379553509eceb2dccd257306a0cda700b5af7382 +TEST= 162 +PT= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= e4a9f62e5112432908e5259d117257db6a51414875370c1cfab525216a370fc4 +TEST= 163 +PT= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= e0e98d119479c5d7175e5156713af08630ba3e003da05a011cf1c5c7eaae9a32 +TEST= 164 +PT= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= b8ad3918dc83b8cd8b32cefcc1fdbaa0c267d2aba6d60777d7a5ce6b67f7e7e5 +TEST= 165 +PT= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= 267fd373a9f178c0d6d282fb2d88a5783ed545e38888845d06ef5165088ec9af +TEST= 166 +PT= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= 9475828891d0e6e79e3d71179e94a427bd9de3b437f60fe97ea85a2f20b1a535 +TEST= 167 +PT= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= dcb751d25683a821c54941d12a4b67d735a9132a12de65ba3e6c9496fd0aeb8c +TEST= 168 +PT= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 3f8a27539a68cc834f6b0d899921e6326815630df0112b6cfa66ddec66fb83e0 +TEST= 169 +PT= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= e6967d59028dbd43960e31c331bb8bdfaa7fa34495622862e7c214084c8a5178 +TEST= 170 +PT= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= b9b27755b372a97ed7d4965090b043a6c2a7d099fc1788273f3a94a27ed3f962 +TEST= 171 +PT= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= dc2a0e8e3ef60070f8d27316c5ee9bbe71bc9c54515fe67311135caec82f3732 +TEST= 172 +PT= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= f27b4496b07f271cb97d89be9d2456f4b112d5c6e05d44364527d51dc8a4f38e +TEST= 173 +PT= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= c1d4aa31da3a57faf4e2ad7d0a833171ef46d88dd76b69fb563147b228dc239d +TEST= 174 +PT= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= 3f9d7ed146d6704aaf50dfe44bfba7559b6948060ca234e3692b3b0cf6c4970c +TEST= 175 +PT= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= 9f4d838b5a96ca9bc9004ff2b71f2bb0ef93032c07052142d169b4c537e35222 +TEST= 176 +PT= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= 91b6cc9fbea6bbe8e9deeb454a9ab1e1649c3f63f7d13e3c34d7e48a151ffda5 +TEST= 177 +PT= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= 70b09a7ecdebef26a09f944d303d53e86bbfb7f15d74d081c312c3fcb8f3f8e9 +TEST= 178 +PT= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= 62f582bc183154bdfa2f68b8ab8a94f57286c6c80d50537090967162084cdadc +TEST= 179 +PT= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= 20ec00baf3f86af34e1211e93e239043653923316e5f54c641c3a8114bb3353e +TEST= 180 +PT= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= e5145e24609daa6ff124842bfdac84688babd92824576a152d6e67adf93c2ed0 +TEST= 181 +PT= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= 8e7f1d790153146bded37ebafbc1a2a28546943c51ae57d8bacb591f4c19752e +TEST= 182 +PT= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= 763a6252db43e6db228f5306c4cc050faeaf9b366ca0dbfd51f607cde16719b3 +TEST= 183 +PT= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= 24624ec77c476abc626c6de4d96d8c5656fcf7bfc5aa730e9d3ef7381a5a673b +TEST= 184 +PT= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= 3625c6bfa14afdf289e6fdecc9206496acfab668e7a6082f532279738da724d8 +TEST= 185 +PT= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= 54a98eea30b873496b611332cfc5368cf448e59823c419f5a4767abfe1d1c77c +TEST= 186 +PT= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= c277904bdf5d6359bc46e59c9fff184adbb668f3439fe1aee4ac0caff5a0ebc2 +TEST= 187 +PT= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= 256b5142a89ea678d8b9102e17dd332ffeda6cb2536134e2a1ec19fa6e8fcdca +TEST= 188 +PT= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= f2f27a78f5c56c8af63000a5cf8e81d28e83730a930d7922e1caf2e0309cdf11 +TEST= 189 +PT= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= b211e3b695a19c9db96e7a9d7e8c6ce517250887a481a9c2d5dff1f81653b3fa +TEST= 190 +PT= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= 56d699e5a1e43d1ee330ae2b534e85ad875e584731085aeeb2a3ebdb3894f4f7 +TEST= 191 +PT= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= 3ea13e37bf511845d780e55773b70c2fd3f5026a23c5313741292b2d94cfaa75 +TEST= 192 +PT= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 59c28975090f45fe1d5d0d121f97c9a30b8d23c042de0ccb6c1917a609fbc30d +TEST= 193 +PT= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= a9956fd19ea0ce08ba948e73771debf3adbdbf834654433a0134f2fa374188d9 +TEST= 194 +PT= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= b211d8d8d55ebd46eb84e5da7a4af40abc3c8a3a44897475e068ca763cdb4b46 +TEST= 195 +PT= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 66a449faa33a8ddb5feff0ea7275c6973400ce045d40114e22fc859b8046590a +TEST= 196 +PT= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= f8551be1e914bb7e7becf042d2fcd3c53a6a9c2274880a1ac1dea3bca0c46fc5 +TEST= 197 +PT= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2ea3a749b49e283530bc1748293a03680118b25d61263da00121431ab075fa09 +TEST= 198 +PT= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= dddb908517fccc3bba15e3269320a2753565389c95237b7bf06f5d96db1ab7a5 +TEST= 199 +PT= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3be76b887a89697605aea47d72951fa0939a7d83473ea0b61dfb3d27211235be +TEST= 200 +PT= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5cee7b56f39d23e75fb966bc39eb4596b5021d562824f6428061d2dd0a3ca2f5 +TEST= 201 +PT= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b8252f84feb482a397799b88f6e08fb1c00e678fac8f5a305b440cd54a7ccd0f +TEST= 202 +PT= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 48ae27d177226e5664783af16a68fa93240e1232f31c74dd4da9be7f0fa24e74 +TEST= 203 +PT= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3d9794af9d4b2f928ffccbfd1deb320cfbd5899d4cc4dccf49138f6efe0b14fd +TEST= 204 +PT= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1e9dd9b661974dc01efa8b6d4227032b75db14232598d64639fabe171d3ebbd9 +TEST= 205 +PT= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0ce6019afa7167d99f3f3edf82f22e46202a0028c41db803be16d66ab6cafa28 +TEST= 206 +PT= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3f08f0449aacd992d46203b816ad43426901e07ba42b56a6bd5a312e0d3ca0fc +TEST= 207 +PT= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e222a224170d6572f843309003e438f539d3de0dc4109949a365bff1b2120660 +TEST= 208 +PT= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6627a566a43d5f5edcd562d89eeec26f6502ee40009a3dbf851cc55c9f5d8756 +TEST= 209 +PT= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 574df05ec7e096e46241095a4e0069b6086c76b065ad445839b5fa9b6f647fb5 +TEST= 210 +PT= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 08317f21761fd1664772bc48e0c9b51134cffa1bad21a45332a9888e23aee256 +TEST= 211 +PT= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2667fa457c4dee2d68741f5be323f62eae5bbcbef3c5800d0fdf69cad9ef4b82 +TEST= 212 +PT= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2559c6ad1279b4247166ec9b02e9c5d6f0ad5c2c3b4f460a148fee899785be93 +TEST= 213 +PT= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c8da68df4c8c1b237372d87fab84c7b083c5ed1d5e78b72d67ba7e1a1d632e0f +TEST= 214 +PT= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e0329982cb82db692e4b43fe6d0b3dde286bca95df6ab403d14efbacf65211d8 +TEST= 215 +PT= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e81ca46e68b325da9e6be59025bd9608f9fa99aed87cd48ad144d089e57f6381 +TEST= 216 +PT= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b6b0b3838b4ce0e02515a75efb88ea280308e549e750fd3a67e2d371896834f9 +TEST= 217 +PT= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 723bd9d8a78f96dd60e0db76c332b3b5d35adea9fbf9520370fdf42f313b0af2 +TEST= 218 +PT= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 779c6c8ecf53d34959895ccf65557dfb9711d76569c96888c7a98ec90f52231b +TEST= 219 +PT= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c5ac3c49319c0a2a2650b9a114ef3da138261081c49c615e159b9efcbef286cf +TEST= 220 +PT= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ed3a0890867876c54d4e5d9373f4d2d642c07e6af75183baa67f3b46a8b29343 +TEST= 221 +PT= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5ea0647ec7ba45e8205eba93bdb98d58a594522774c82fcf58932563c975a3b8 +TEST= 222 +PT= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7eaea1c17b44b9d992ed5ddd28d66af34799fbbbb2ffbe7635beb14df6edf69e +TEST= 223 +PT= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 52d0e9d0dc9111c8525c15dc31cc15118c9f009fa47f8e2e8b9c0121a2269fa7 +TEST= 224 +PT= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7be57aab5b465ee5125d6eb1e0bb999146f03db992d5fd52b69cb35840cff25a +TEST= 225 +PT= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6c4637853cc9be4875a946317bd8b8d0a87e376eb20fdac8591f22f3df4772cd +TEST= 226 +PT= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 37386f16b2632cf8ea0283ea1a7403c192702c40559db39f0ebd43b4996c772a +TEST= 227 +PT= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5ed9278c3a7831549465ff7072c463da773b12be05570c2238470db80620668d +TEST= 228 +PT= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 29a52863e49997286b8d8d13e112f0d651c26417589ce1b89c93b96c22f38a20 +TEST= 229 +PT= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9d813dde337d56812b234136bf80f042d792820630bf6391a7a618fc18a8f406 +TEST= 230 +PT= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 66a10b2dbfbe76009af66f0e536c726adb031fcbceb874bcf2b408c2bf347a9e +TEST= 231 +PT= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c062d2dad02d898cbc88c759b448962e9139992cb49dcafa99387da471869f5f +TEST= 232 +PT= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f24031e6446880c6d3f38eb28e0b30a313a9a82d9d0f5e4992db8d66ecf3d5df +TEST= 233 +PT= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2822cf7c1960463c0fb1ec98c6c190d05f3984c9d575ba6ff8649c3826c552aa +TEST= 234 +PT= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 067858c59501960d1a6b7aaee7ee95da2a06e48389c62f03a0201d8643fcd582 +TEST= 235 +PT= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4fa067b7f229768d7f9aafe3fc6e7cb10ca3d28fb1369bc927c2fd0e469b2a9f +TEST= 236 +PT= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d88e100ae0f9f6671d188edc96822b7b1d1e58e52b0cbc32a7e9579d1c64fbe8 +TEST= 237 +PT= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4cbccc2bcbccbf86b735a90b638ba98937ab8a068c1f9cd9f9690b98815eb329 +TEST= 238 +PT= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3fb2564335eafbd0c43855e747edce23717a8719e6d086308eb9b05d0a09eeb5 +TEST= 239 +PT= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1cc934dbc11e6205af11c273c7be4708656e4783c6279dc3afe560c4939565ea +TEST= 240 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f3b696334893f4dd03f57d71aef4002254ead8a9b11fec56d616927cb9bb9507 +TEST= 241 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5fabff81d30abdc535ed84c80185846ed98fb0d392206475a44e97df9ae5ba45 +TEST= 242 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 98eea4cb38731d4c104e217b02786a6927fa240cdc411af11aeef06ca44618b2 +TEST= 243 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 78f051c9f243ad3767aa2809fbd029c30a84e601f5f3a65ea5e435fc1006a352 +TEST= 244 +PT= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 4c7c7f71f215105b5ea22ce181b4a870076287f926fb43c620db79588c9b405c +TEST= 245 +PT= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f585d0c93ae28eba155517defc9243210992ccacc3133eb381d5ec380e56f246 +TEST= 246 +PT= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 586eec8cf85e5433a10167d32508b9574d0535720ec0a6eb324a898048ab4ebe +TEST= 247 +PT= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ad329798a2f147fdd355f782598976ddbbe23cdfbce5be9207743a2bb30b9f38 +TEST= 248 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= aa97617294ef4286da963cae5000a77a930f8ae3af2a5d5265ce75a2d9d5f4c0 +TEST= 249 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0d70e9b679646b3455e6910e54db28c0584f83cc2d462911826c3d0ea00f899c +TEST= 250 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fb0a206af3926d02960aa2b63a91532e450c20530e98e6c52c629508a9463a68 +TEST= 251 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= da9c16295a7606d3e391e58a2f026c6b19a1dafb5cadd1de850dc45709191c0d +TEST= 252 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d90c0e2e0ed2b07e7ddc6c3ed0804ed09c506643ca489cced29a9e2db820e8a4 +TEST= 253 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 55501d55084a6b374c1d89b3bc1cf53c236d9d0d9c4dba3ae1c3412a5ddc14c6 +TEST= 254 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 15f7fda81c506e856fcd331f6853fe96480e8e8c99b9b0c2ebee879f19658eec +TEST= 255 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 9b369a99a775e0db4e973c29859d88dd622fe24c7420e613586a913c6998da0b +TEST= 256 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3e7025d1d7bebee87f72c4f6f994339d8e4ec993a2d37b723b00aaa80fedd3c0 +TEST= 257 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= 62a2ae9507db1c57ce1a42384580b1b208c47a412695f5926f9d340cfb5713ba +TEST= 258 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= 34bcce01c8e4fe02c2d16ac3f6cbacc68474b6bffcd17b4ed8620ed3d1673940 +TEST= 259 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= a02a5eaada14fcfce57339851125a310dbd906a930b09c930a732c16db9a17e5 +TEST= 260 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= 9cbcfa2009ee1c53b3cd16cc42c7d5a84cae88f0f2cea9260c54064c43fd8a68 +TEST= 261 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= 9a05c204f905da04be3a6896e9dbaf23a53649d5128c51e17c13b58e8f6800ca +TEST= 262 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= 50bb410571b4cf3bcc420dbbb9fd36d8c240e5a0f04e3352c6c7ef70da95d910 +TEST= 263 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 8aa475f5d838972cb5f3f9ef387bb56357f9c8a27d2dce1cc54721df28295d56 +TEST= 264 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= 6ca93422962579f6cbc135ea5d93527627b820fb5029e96d1d07602034434171 +TEST= 265 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= e57797832f4800538b2dd5e822ab650e49fa80821de512e2010f2cea24b5760e +TEST= 266 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 556da4f88b3240e86f6a65692e79417c86006e15e5453644c3e2eeed7db421f9 +TEST= 267 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 588cfbaf4e46c2229bcec9883baa41c219bf96e701bbb06957585140c1498203 +TEST= 268 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= 1309b7292fba247f0360dcaa5dcbde1e2c98ec0beea1b4d1aff2c01e6bb936ab +TEST= 269 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= 7e7a6ac0452740c0edc66fef31fba2a59031218719f802ce6ce2993676107621 +TEST= 270 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 8540e9243c74114c1a2835711a097afd65e37e36560b029a96f094fb3fba5d32 +TEST= 271 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= acbb9e83d93e727ff859b798651b809c033c57e8eda96570978ce77f7f02392e +TEST= 272 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= cb3f7f3ed11ab2fc76c91ecd56671a83bdae72bbe123c4b18127331f2c85e013 +TEST= 273 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= 0233394979abc07066123e74252a096dbce5f74ea8a981d5469ca3c400a0f9ac +TEST= 274 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 14b7e13f1f9e26cee81a4bc0210d39d70feda44c2cbec827f87929e13e16253f +TEST= 275 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= 259a5edad6467ff35287e69106ebd77fd476818f8420daa1390f0dd5bd2498a6 +TEST= 276 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= f39e2f03a11ce623823b65faf7d87f9e4cd007291e33449281f4365198cd7a6e +TEST= 277 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= 06f283f2b7a79acfa71e128aa11ad53eba8ab300c0b68eb40e9270fc9d8cb4d4 +TEST= 278 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= d297b3a37acfb7697a0a63ef4b5ee01a2abcb3fa79085d61a51e4af3a5ff216d +TEST= 279 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= 52a53072a79952ab0374372bd1b36af2f51502da50757d1a735581092a4ff69c +TEST= 280 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= e70b315f637abfd6e84c300f994647b2fdff62f09095e88c585625aafcb03620 +TEST= 281 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= b4e7d911c564d4a532d17d5c01e8217a5e2287939ab35b825b102d38d7154f0b +TEST= 282 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= 87211aebbc49b12a33e019f186543ad817a03a4c073067a2185362db95f36f84 +TEST= 283 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= d3496581f30710be18244e927c48d9983b690baad14dd4ef0578a5ac6528f390 +TEST= 284 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= a817b79b8081e3af7e812a09032405d657e87f278a530ff681d372eb91a7154b +TEST= 285 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= 48b560c3d7ca33f4a65305a4a09bda5e93a9da7786fe23934115dd4d5027ff48 +TEST= 286 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= d98a014cbb8f685370cdbd12c9b4b1bdc369acb3a6fa4a8fcd90099f811c66fe +TEST= 287 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= 2893d9acb0b2373caec270bd90347c41c7825c43c26b674662d1e2f60cdcbeca +TEST= 288 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 5f833849ecdce685a715c60a4a14ee8ed030f16fbb3c0ef94448e429237ecaa1 +TEST= 289 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= beae2a2ba1f42bee7f70f2051132fa638e1fa662a87f133637bcbe88301142d3 +TEST= 290 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= 76f71167dfad7bf0ede5b7ea5e916709253be475972297f1cee4ba1e915bab51 +TEST= 291 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= 1937ea755c264d7d2a2d2bacf96df3888110abea6fdd88df5410798ed3f03617 +TEST= 292 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= e4369ef8a225483a2da6bf74d1b5c6ad524a9edd0ab7fba305769f8b811b24f9 +TEST= 293 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= a05a213ef74624b419321faf01feea31da6db90742da795ba8414f1827d02155 +TEST= 294 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= 3d6241887a77f1d94265e583ee4147f83ad0c88a18256307ef652c64b3858925 +TEST= 295 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= abc2dbd4a502089373b9e3a5402a77c4faeeef93bf5aa9b56f070e63c49f3e60 +TEST= 296 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= be5266930aca5fd6dc26e8df6b9a3c3449eca6efdcf51644d490cba483f833fb +TEST= 297 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 54b950d75177e34ce0903096839333c8d5c00fe064b964a4c4a11e503c53b6f0 +TEST= 298 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= c758bd4aab1d430d4c904166910565450b74aec7c06441fd8de06d8eba276b6e +TEST= 299 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= 9d50acf754d2a4ecdb2bc96677cae2dfced95eef3bb7c0e32c457de187508dd5 +TEST= 300 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= f7e2fdbd6d789f77f073293d5ffc34063de4a99d272e9dcf52568ecd558da8e9 +TEST= 301 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= 50d6686ec59899d40436390f803225848faf66a5d04a0e83380ef97631e0c97d +TEST= 302 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= 1d93593d3e2a63e83ec399d6a136e38b9a121470bbe38d6b07994265631728e2 +TEST= 303 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= 042b98a8dfda0fbf4de2f601cb7681bdd3b2930504fff775ade116383ecb24f6 +TEST= 304 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= edf7cd80890f13d3f23d5f58d31a867d15d24c7978419276cd0b8c2480cde17b +TEST= 305 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= b000d99485eab40cf5cce4f76292490c723c68360393105bd8d9df7aff075345 +TEST= 306 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= 6bddc94814eabb250f91f8cd75b2b66e6626ce323da170fc75d0792ffa851f08 +TEST= 307 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= c62c12790f48e2a1653879e8e2f6cf20caee826527d0547f04ae793d611c53eb +TEST= 308 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= c1a47dddafe9e3b145a4f354d502195a1a176ce84838c60fc6a64461d2d3600e +TEST= 309 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= e6368d2dccf9b637357626678d9987729c220ff9d6e8057252a998a1fd18dfa5 +TEST= 310 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= c9361a9601936cba3d20a7ce2b7c93b0a6ec1cca9c3821f3485af458b83397de +TEST= 311 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= 4b15e54c72d3103b9fcd258eacf81d52c2ee09984270d61a1353a6b2ad143750 +TEST= 312 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= 27e10adbb0bbb3f0f8e7f61b3dbbb7e2b3dcd97f19711d9e594f30fa92ec70c6 +TEST= 313 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= 5c95689486fc30fb8470fbff248a9aaa1a361c781e92bffe9ec8d03c24aed520 +TEST= 314 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 6675659adcd52e9bad5de85132171b36a9fdd34b2e74bb5e937fbcc617e46ed0 +TEST= 315 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= 00b8c4b4e66317de942db99b296cb9a6c4da0aa583b78bd452dd111e7512c881 +TEST= 316 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= a21b814d0338f7d6135ed6dea7730cdd92cc8b583a59a6e50ee6e14235a69ecc +TEST= 317 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= d48993f331b773c080e23d1d5c2ed911b6ca78affdd33d2ebef60a22c0a013bf +TEST= 318 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= e2c48d1a3d7fb26c707c8d3d2449baf3fc1ca1bbbe7fbb87d47521cd21208415 +TEST= 319 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= bf6cf6cced1859ef12bb5ee4eb772950cb2c455a16aee05721f279a47c192b33 +TEST= 320 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= 76038f0410343eaf97660e78fc29bf8013f7bd5d708cd34e9ecb03898774e7ba +TEST= 321 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= cf88841da50fe64cfb75f9f30d0c570f69c5df7d7fd2057fb2bde825ffe4c1ae +TEST= 322 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= 54c260bc9bc6b39d86465e8df6a84205b4b781ed4992f1ba4d251fa278412efe +TEST= 323 +PT= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= 64a65ede7aefe57b4bb46d4b8873ccdcb40114a814b8ebb2ffee56c0f581ede5 +TEST= 324 +PT= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= e7d211b517e6d2f77308808ce3989a877049883024b10439d724126ea49ca0e5 +TEST= 325 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= 7076e483310bfe5bac851ce46a0428b2de2ef4d1f42fb6cc14c6db546b6aef7b +TEST= 326 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= c761daa0de765a8b9285f4fc81becc3f5372f891faa1f3793842917d433d66d0 +TEST= 327 +PT= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= 5025c4ae5976134d09216e6040b5cc0282cefa258732a4cd921fe53b9eead695 +TEST= 328 +PT= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= e73b2cbf3a98032d9c66464a3e4e57d26fdb86782c2fc599788641f3c86fc34e +TEST= 329 +PT= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= 3227b30095c4a52e1e7d2830c626bb4e28f4777924896e1e03f74a517d0c1369 +TEST= 330 +PT= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= 797a7f2cc01dbb45e76d4d18bd6bf8e72c3de143697f0604630f6b87df6f0d91 +TEST= 331 +PT= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= d86270786251358300866fe371adc7eab2cfbc3ff6261590a94920c42f251621 +TEST= 332 +PT= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= b69a7e3ba94ca10db8f69d44f19aed4b92b35822b36d41cbdf7453fd35771235 +TEST= 333 +PT= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= 20e5cefee3d3414ba9c7f7add1a5d16902c2177fac53a6f3112cdfda5f532d00 +TEST= 334 +PT= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= 6c7d68dbcfbfe8e37646930a5cdac4c7e7ad4ac1cc79f245528aa07520922ec6 +TEST= 335 +PT= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= cc4692e4660822478bd2d3b443486bfb37b13cad1e7f0f81055007bfba748695 +TEST= 336 +PT= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= f9714a3d5b4d2020c7c489ab6d914f82e90bb3e611b8a4c9d3c71c7c44773cee +TEST= 337 +PT= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= 7a44cb044fe1cdea7aae34a0561adc996cfe9f2bfe95a99f8e976fdaf580e270 +TEST= 338 +PT= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 597195fe4a0930cb041b9ee43fe5c88df6cb0e64203db8c5f363cf03bca06e2f +TEST= 339 +PT= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= d5b945408d0d48f36179c2af50735a87d2758caece65f8b490366221daad0cd1 +TEST= 340 +PT= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= aa88422c341322c6472d1cd41cf695e2b841eb20ddd88220efdd0ae5b3790cd1 +TEST= 341 +PT= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= eb80fcce3ac45e8b6b179d8af716be8c3950b87a47dd51d3651a105da0341bb8 +TEST= 342 +PT= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= daf88fb9fe584094f121334a811831663f4176e85781f6f200ea388d9ebff2e3 +TEST= 343 +PT= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= 96f4e461df4b00a7b39703589b93e42475a96761b2022a1671203a1f3a020a3a +TEST= 344 +PT= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= 5f9986b3b54425600e7337a04ba119d65fe4e765b1eec675e2eb7cb5fa35c7cd +TEST= 345 +PT= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= 154eb8d06768bce19d21af4259e905191e1c134d2cf52da755b1105b0a62c8a4 +TEST= 346 +PT= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= b1649e97566b611506bf08584fce98177029740fe39f6d4968e79a71210bce41 +TEST= 347 +PT= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= 70d54bfad6d0f8e2f6eb2523237ac4d541b606544abc1b04f7334067061ba4a2 +TEST= 348 +PT= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= e588efc0efd16889493f2eac76485d014dece187ed2151eacbf33654b46d0e96 +TEST= 349 +PT= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= 01ac3a4fe72f2a922149b3c2ad27a3ee949c87c3867f81ac8ee580f3a33a0f80 +TEST= 350 +PT= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= 738b595acff8806c344649a0b5982df76775e8be6c1179abe8195d7b96265c17 +TEST= 351 +PT= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= 2cfa45c322d98673c08611bb6f139cdea3416ae177e91f909334dcca1570f50b +TEST= 352 +PT= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= 1f26b5958a8810eb29f7ceaed7d097861b9738acd5ecc00715e0e1597873b5df +TEST= 353 +PT= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= b2a7ed2fd4155297c3d17dd2793ad257e6342b9432ccfbdedb0cba271e444352 +TEST= 354 +PT= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= 3d5b1d2d5af154bdc9f9421be7adc003cf27fa32453fd0e3e58ab1fb1c991016 +TEST= 355 +PT= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= 92aad54e409a19f97d3e52ebba660fa58e398371ed0f5b282dad9a56a3dc0b6a +TEST= 356 +PT= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= aa106603093ac56e0c8fd21d51918f6e594a9540f03f755a42fc121e9ac29ff5 +TEST= 357 +PT= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= 015f93e26a7e1fb8c6adbffcdc701cf53f9c4c2bd8b6ee5a6bcca29f2f74c224 +TEST= 358 +PT= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= e99e919c234138df3c429112ee98f0279f220e6cd8cf69e71b81c9e14cb6027a +TEST= 359 +PT= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= a5530acf7cd7f75e71e4a2e833772a3329c00d762d03971ecf5499b3d08b19ef +TEST= 360 +PT= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= 16be60624659c98ce331c5d461ce42c640d9d86ac20e39cfe042206c63ad83f0 +TEST= 361 +PT= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= deffc1e1afa315898678d8ff302f1a6670a98b999b404340cc845134ca484ef2 +TEST= 362 +PT= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= bc3757e12211ea411baad519d05a31a2ff6baf1c5c62e8f6d14f50fdc2b5e042 +TEST= 363 +PT= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= 8a16e45a89b6b985e04f0c3c3fd8a532928fb04d67f7914b7e0af186656a3d94 +TEST= 364 +PT= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= 83dedffabb01af4129e485b8efab5b0bec9f842a6ed856c81b9a4f25dfcb9cd1 +TEST= 365 +PT= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= 061aa31538de259cd91afb12daff692a6af9b90c2d0f3f90c6811ee21fe3a4e9 +TEST= 366 +PT= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= e32f1b4b6fdb62461f12313a1d8c89f75b4b6da113427b14e169a1ac8145f197 +TEST= 367 +PT= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= 4ce4a935a1c7ca370426e34a886026a3ec5b8bb47535a61b571ce4b21c86792f +TEST= 368 +PT= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= cc6386df6d36898aaed7302a0ae88e2038da0b7ab8fa1eb33628898cc8b9b9ab +TEST= 369 +PT= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= 752164f6d53e90c6f375826e9eee7993d194f7b65795ebcd7298804ce64a8f26 +TEST= 370 +PT= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= f9d2b163559014220bbbfb9d9c1fd4490c31e7ba18a493070f500c7bef0f9f64 +TEST= 371 +PT= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= 628b5d44a5672e8f4e9ecab4962093fef5e93c35ffb95eaf5b6a61600cf4446e +TEST= 372 +PT= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 45e2e864690869be4e2ede9794331d67f6498194991ec517f8cd4c569ed51b21 +TEST= 373 +PT= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= bf36ad89c9953e1610f6aa3e21e01189eabd8fbe846af433d225a5c141bdc29a +TEST= 374 +PT= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= b0c0b60a622aa2bb360d7b9adc756b895434ad172a29b43d92ad146229ad921c +TEST= 375 +PT= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= 9926506bfc019fbe919321a739cb4c0f2b2c1fc75c4f7cf8accc4a34843a21a4 +TEST= 376 +PT= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= 1239c5653db4f0fecc39c7dd037449d361bfbdd225fcea3750527d570446cd6c +TEST= 377 +PT= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= ad5c38dac2424c21715f1278a38eb58da31a31ac99bbd47e4a80e8e650b59956 +TEST= 378 +PT= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= efa8a442f0016d89f46a242d695670558c1a5d7448c0d325ea879b894d9d0968 +TEST= 379 +PT= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= 319e49205349b124d2f7609fed5b8d15a92fe77bc7858e7ee2b37fec09698bce +TEST= 380 +PT= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= ca37d55a2eb6edaa0c4e9ddcf7b5eef5207d4175e5d3b457c813006ff2c45240 +TEST= 381 +PT= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 05d995dbd1a1799b513753f02ee86213edfa9421d41d245d7952c048a25d2ab5 +TEST= 382 +PT= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= 3b250295d8c90b8f1e3f154c95cdf7a388d75f4336909b92cded2e54620b3f2d +TEST= 383 +PT= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= dda93f4dd7dcf08af01a6601ec2c452d0ae1826536289e14e163a1c55d5e7a3d +TEST= 384 +PT= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= 492d4be2f53a742c4cfd2b5952e8c380ee17d8aa7355f29a87b1ece70344670d +TEST= 385 +PT= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= 669399ba2470b358b459ed8148ac2f43cb6e8202f875e8b9d5c7f5c58412f005 +TEST= 386 +PT= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= d938d1d8d47892373f90cff1e9098773692e3532fbd3f05b3a01ec43912cb288 +TEST= 387 +PT= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= 405fccd8037ae104d44eba9b739f4ed02e4841f2e4431b01ef5ae1f6250b37ca +TEST= 388 +PT= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= 515c6a6133b4a7268f050d49b193720677f4281b34d9764a961d5a8f91502c18 +TEST= 389 +PT= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= 6b1beca21ad616a6c1f5db1bfcf84aa4328169dfc8db54fd2914518e7779271b +TEST= 390 +PT= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= ff6d6d77aee65b8275a148f1db57d7fa62bcc99c0d2688f8d4be004d43e4b2d6 +TEST= 391 +PT= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= 92a0a9f56c7fff174750f9155937e5bc5df5d9c1be1625493ba01a54066f13de +TEST= 392 +PT= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= be42ab616fd5c66040f6acd8aa0fae7304343a798d26598412f21038090d5b75 +TEST= 393 +PT= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= 82c9e1b4ffa9167dcbcb0dc767a66b8e03a414c95ad531b401b6671f633c31a7 +TEST= 394 +PT= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= 18ef61b81e66c43395cea58d1e9f1895a4084b875e699b86b4a86908cf601ad0 +TEST= 395 +PT= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= a3a4895db9256fc1452291d92fb54a4ca2830f41712cedf65c1187e4cb6eb50f +TEST= 396 +PT= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= d84e1a867c2078ad1d41d2db847f492bfb2f1923e214189b83d3148d7fa24f72 +TEST= 397 +PT= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= 8ca3c8f0af4ecfd4bb4b9118bf6e6e16968de860124dca6f0bbe6707627185a0 +TEST= 398 +PT= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= 7aed1af905d42045503c539516a586e2afdd074e0debcc91f6945f3ef5211a87 +TEST= 399 +PT= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= d7185ba6178fa0acb0d4fefb6946f333517702f4804e19afc32a40dbf4fc6406 +TEST= 400 +PT= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= f46703688cbba318a9ef4eda02a675e3f3ffdbde38be55fcd48d70e95a11de84 +TEST= 401 +PT= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 43e5a78acc0e429b222d5bd77dca029b8f186a094bb91f7ab954926d172c039c +TEST= 402 +PT= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= 63ad29e696d058134efe5b712fde84d5541cc972bf282b15239b84c9d2c555ff +TEST= 403 +PT= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= 9bbf936f18577369df740ad80f19a483aeed668c6803c2300697c86c4214e445 +TEST= 404 +PT= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= 33d518c707ec2f49ad8b8f60da84768a5f81e77bf718ec6b2e909368da896917 +TEST= 405 +PT= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= cd46d0d26668ee5cd5273e4b34c2062fcb714584b8ab863fde2c9a4d7b10615f +TEST= 406 +PT= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= 4e25149b96bceef7f551514160241e7ea4210b6ecf58c46b399deeb7cc7d62bd +TEST= 407 +PT= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= 0c96ad4438954edf8aaebf3e6763b5679a69f838d2dd795d53e89bf5db3af141 +TEST= 408 +PT= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= 87fe77f9b9e3fecb3beef023437045a8ce296cd6b515745f0b57996289572185 +TEST= 409 +PT= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= 70b97053abedcffc6c1f3cfd89d40bc622af965011be10f32063ccbf80b2956e +TEST= 410 +PT= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= f544e3ca6566a6d8179169a0b8e8bba50c4bbcee6ffe598870a39bddbc1031f2 +TEST= 411 +PT= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= f950d2c697a9412c1d0a916556722a6ed062dba44d47e5be4767cd9b43ff468a +TEST= 412 +PT= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= b403133e9f9ac56def2e4c5e09c6acccb6e4bebc3dc09e9a53d879c704a6ac9f +TEST= 413 +PT= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= c636d3944613216b011e0a6ee843f7df445422562e21ab2fe0ef3431aeee24a4 +TEST= 414 +PT= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= 6989b1961b8fc23ed5a8dc61ea66e2b881cf9fccb2e6606ddc7add5dd03c6da0 +TEST= 415 +PT= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= a51a9eb830ce92061994ab495fa5f57d17dfdf4cbeb9d35f50d7e2d920d437c9 +TEST= 416 +PT= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= ed7f5223768ed4fb5762cd4c803257245f4a133245f2220892da09fbcf993afc +TEST= 417 +PT= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= 534329f96b50c9ae7c166145beed53e7fed3a48861b5fc81c41d0fd785e8305a +TEST= 418 +PT= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= 95e0b918849475b211c159117a0dc381f303a58ae8bd0f75fb28a50d913e850b +TEST= 419 +PT= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= d3f2eb49cc44c91b2caabe2186a4e5207ce6f3c3c69cb170fec8e9d77ac69a33 +TEST= 420 +PT= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= 21f9faaa44cb2a698d163971fd97e1710700dea4e83e923e8f59413827f65100 +TEST= 421 +PT= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= 07ffc62131dfc59d64866f4e06c61babafa4af07e7d806d3bb684e8a2314b046 +TEST= 422 +PT= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= 9cedb0e3f50b2da049420c303e0fc62c69352ed10517011dd852bacbc5fe25c5 +TEST= 423 +PT= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= e47f13e4fbc7c523c2f6cab404413018d9d7199652bd8f45b08a68766337ad94 +TEST= 424 +PT= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= c8b3d1189459a9eaaf8c1cf4d6965b06d83621f62dd63ef12f35d53cbe6885fe +TEST= 425 +PT= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= db421e53d2a12eaff5030c6f01ceb5ea2b7c6b00d2c7e424c240043a6f604888 +TEST= 426 +PT= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= 3dabded23ef5c25d586643f4f30cb35fbc84400597d3ebf5f10edb0f12971329 +TEST= 427 +PT= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= fe7db4828e28f9fc46e0e1f2f6add92437027ccc4ce9a40bd42e466665bb9192 +TEST= 428 +PT= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= 71e4ad71f7523a170580ebc0ec249987bf344e1de2e29f8c9040520ea00e5dcf +TEST= 429 +PT= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= f7e4a8f293bbbaf2281c9f1751c3a10554a63639ab2bb6e3dd56c1d8c053e7c2 +TEST= 430 +PT= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= 18d80465414548f68f8ac2282d48b8dc492c52e618374ba2ec75b63ec8b767c4 +TEST= 431 +PT= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= 10c22ab05d2648d33db85ec700d9f5f2fe12059b546878b10b75cdad44bc1101 +TEST= 432 +PT= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= 4724bdb5e1e841411f5219a86b2e83d855857c8b65752e218ca5d5a4c564fd36 +TEST= 433 +PT= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= 3b3103edf74d30bdd2c7329944ac6275a1a3252d22bbb97c23a907c724314620 +TEST= 434 +PT= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= c140d6dfaa6bebe9e28495e0a718b3bbdd941bed5b79a29ec7018f5455e2669e +TEST= 435 +PT= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= 033f6dd74a83b29f54a4c7aef4ba9cce5ea72a0e683d1466823d5488e923b535 +TEST= 436 +PT= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= 959e7587ad5a25404d5328faf602336e9f816910a688dff8e1dcf529e26e5179 +TEST= 437 +PT= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= 1b45f43f912e4d300ddb3a97d85c78bc5536f1265ee62f68340d9000ed2974bf +TEST= 438 +PT= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= a043528d0e65fcdb93350e3a2c0d71238147d513a384b12831bbee24b1ed302d +TEST= 439 +PT= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= e01d29811e00598308a55427fb995bee04bc45c5376c8586cd4e52e87189bf87 +TEST= 440 +PT= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= 536f748e88dc93208e25bc00805b1ca193757145348b86262be170cd86ade997 +TEST= 441 +PT= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= 40cb878677ac5e3e2b531a7937bec56dd1eaa6483556e7ab3a38828c93f8ef8a +TEST= 442 +PT= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= d00443d39d5dc27b3cbcba689daa936d8c9557be4e6571820d1b2a40ba3a293d +TEST= 443 +PT= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= 999a402e7ae9b8d27c4b23e5da2cd98390a12d700db8800b809fa3c00e8b30d1 +TEST= 444 +PT= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= 5d197f364215e9d9da0f24ae65f39ef36c4bba0ef8109636005e4a8bb427c95d +TEST= 445 +PT= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= 7aa940744fc70490a14511211c3d3cdd1cf0cf4064822dc60c9b8a12a89be871 +TEST= 446 +PT= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= 5381a21832eea564e344a3fdac83f8ca3871b94d23e9bd5be6ef31a79c43d3f5 +TEST= 447 +PT= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 7a4f5c2c4fb29ed7cbc7bc5f41ae51cf1210ab59110bd9addde22c8e5b7b4968 +TEST= 448 +PT= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= 7dea5702fac19d6591703de5300359ed1a630870910f227985f009ec447dab35 +TEST= 449 +PT= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= d82e4a1f86e6a1a5fbb98b95f6580adf3ba57f7c849ccd074c0c44a7cfcc7056 +TEST= 450 +PT= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= e5fca2be6ed31a88a5e3e655fd31e685be4275e226211b6a6a9af42134843212 +TEST= 451 +PT= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= 183bb8a7e9929e1d0325a7a2456319c045b2166cd0ec74a7778c5e4dab0dec23 +TEST= 452 +PT= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= c1d6666349116a7502cbfc6d975e99a144f01fe21369a4e88092a8ea23f61cb9 +TEST= 453 +PT= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= aec1bcca250cdf25c80227a6dff9047bf3d407631e7b62fd503e3c9d38bf2405 +TEST= 454 +PT= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 7ccda56a10a791d0b06dcfbf9f7bcb8c9933b4953aee79e5f84ec22bab79502d +TEST= 455 +PT= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= 0a0b39bb720f848292c233be7778da99b20280b2bbcc4d4c38b6ec339053a318 +TEST= 456 +PT= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= c757366486ad1e503174218ccbd0abb27b3c2abcb76d4072fb19932bf2c0e572 +TEST= 457 +PT= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= 33a4f1d37e7183b1734b2af308524de415dae30c688179c2845a23187ba1418d +TEST= 458 +PT= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= 13dbedec19c688cb263c2dec5e92a8278c2a5ad8d97077a0fc24799c09b0686d +TEST= 459 +PT= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= 2e33e627a00ddc66fb4b06441753d39d043b2ac916f23f8ed3b6bfac75d3d8c2 +TEST= 460 +PT= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= b74bc25ceefdb96571e93bb49c4d8f5fcda628dbe1fc07d33950ec6e05dfe0aa +TEST= 461 +PT= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= cb6056c15c706e353952b2dbc67161f61136d414a2801391359b89667ede23ee +TEST= 462 +PT= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= b285b1fbcea1d0a720696fb470446e4b36cd852bd5dea3ec4f04aa2f68b413df +TEST= 463 +PT= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= 2bee1f2991c3a612a4904247ca28c38130cd61ac42f943272ca31181ad8347bb +TEST= 464 +PT= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= 8c72029a6c098c9f39de891481d1335e23659653f33c670aa1e7be175a1d237b +TEST= 465 +PT= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= fe858ed0154c8e965a9a336c83cfba16fc5836b321be731be895dc76dcc20051 +TEST= 466 +PT= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= fc7166c1679614d82be3ae16517bd2c07e21a3d22f3e9422ad4b6b59ad017cb9 +TEST= 467 +PT= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= bf1e4be1f78e961943de1263e8158a3855cb787d22ebf30f8f8a5d39b62dd78e +TEST= 468 +PT= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 07461b8099f0e8e3a8e6c9585f1812c75ed531e426f75559b233b88364d1bc3b +TEST= 469 +PT= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= 30245a13007ec6983b9c4f4be8a76fd6e2e6c7865548476795ab3bb251a5f9ff +TEST= 470 +PT= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= df1f92c67a572241d078c1d863d4eb57ba819489fac3cb4dd40c8f6ab9d0deb4 +TEST= 471 +PT= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= eb13afc3e082cd016abda84473461ecaeacb7bf74368b019b0785d54eae79a61 +TEST= 472 +PT= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= 759ef8de1d6f9d2d87d16c3b0866858c11d1e0c47551f086d43d523b3670055d +TEST= 473 +PT= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= 9c40deec6837a71c3b0e826e14f7d51b3a60aa3ee164644b87616b06d7585a43 +TEST= 474 +PT= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= 9372898fb4cc30c145fb65d70310540ae09891d53133b4324c2eb587dd5836e8 +TEST= 475 +PT= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= 4a8e2ac7cd5b0bc61ed6fc8a3e6a43ffa72140e50817a57d8b9b9f5c6a068826 +TEST= 476 +PT= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= f43735e2be1ac8b0467eaf9b0360b7335784192d41fdb43eb65b537132fa9f88 +TEST= 477 +PT= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= 59f529d6e507221f2f1b364d0b68934b76e0d9793c20d03773f5e1e732718d06 +TEST= 478 +PT= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= 44d4868bcd78aeb5a86a3a27ffb290feeba5028da043189c6f70452cd5b75225 +TEST= 479 +PT= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= b96fd6942346568ab527b56ab0585a744d88d632d167bd906c30a6f413d350a2 +TEST= 480 +PT= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= 35df2f167bdc6a210816bb2da156e39359fd5544132fec6adf4156cbd075441c +TEST= 481 +PT= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= ba65433acd88ec748a01e97f40f452c8ee20e315c0d496806613b6db0c81ad29 +TEST= 482 +PT= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= 3021597b84f8c051369161505235386d3a5bc0414b57b9a6be6e0b9552013409 +TEST= 483 +PT= fffffff800000000000000000000000000000000000000000000000000000000 +CT= b0f0d8a20dea29f1311bbc05e4e412fb9bc97fa61ac784164172bcaffe8c94d2 +TEST= 484 +PT= fffffff000000000000000000000000000000000000000000000000000000000 +CT= 6f38bd2f788695a4722caa9edf74bef2b156d3e808511570565fc9e5aba9346d +TEST= 485 +PT= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= c040d16167e4ebb5da6e96b89c4e26a982614883c98b0b727f7e93d322d54a2a +TEST= 486 +PT= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= 5da37870b37f08aab1aa334230b813ff7252c9d21061c113a68db7971e275df1 +TEST= 487 +PT= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= a406b7612c6480dbcd076ac4691dea88eb41cd037cdd4c356533c03f2c117bc4 +TEST= 488 +PT= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= 7aba0a5296ab901a6302edee798d36725560dce0e33a872371109fc60e508af6 +TEST= 489 +PT= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= 964fefbae5ef83e0e76c240e80779aa6c5066f26e8ced2fd8590e7f138fdbd0b +TEST= 490 +PT= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= ad0e59869ada394cbac14d6808c2586832d1a58dc3a9e79feaa421d7230a53af +TEST= 491 +PT= fffff80000000000000000000000000000000000000000000000000000000000 +CT= 216e948be2573bd0f2308c4c91514cc9d3fa8ee2900190d5e1a7d1f5270b7315 +TEST= 492 +PT= fffff00000000000000000000000000000000000000000000000000000000000 +CT= 30eeeeb4d7cd6c91457bba36e2c54832a5ac258b8177b193ff7d0af0e8ac39f0 +TEST= 493 +PT= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= 3b1b95e96a4f60e4f5328087d5c9dd88e9a76747340952f833347a398335240a +TEST= 494 +PT= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= 0c51e32a6b74dee0d2682b93810e1bdc813464a9870914f218a9280709a12826 +TEST= 495 +PT= ffff800000000000000000000000000000000000000000000000000000000000 +CT= 4322c2dac35247b0006e77335fbae2a990db2a474b0cffdbd742458ba3a361bd +TEST= 496 +PT= ffff000000000000000000000000000000000000000000000000000000000000 +CT= e4c89f5218438a79df41d1c2430890df613987d767e76ddd565304693c0c594d +TEST= 497 +PT= fffe000000000000000000000000000000000000000000000000000000000000 +CT= 040c65582e80b14d7095fc1fe2c0c534356c9385159c3a02fa2622d3ca8eb523 +TEST= 498 +PT= fffc000000000000000000000000000000000000000000000000000000000000 +CT= 7f3283001856d775555c9e1e896ae21389bea147ab66aa06a52a4ae958c6027e +TEST= 499 +PT= fff8000000000000000000000000000000000000000000000000000000000000 +CT= fbf693e1f8093a0b42ee63ccf70d33f646732ee6b0a5d7ea662da9eecb1f3f30 +TEST= 500 +PT= fff0000000000000000000000000000000000000000000000000000000000000 +CT= eb25c16fcc0b5217e8644c3ba921404aea4dec8d5d7b724ec45bec9af679b929 +TEST= 501 +PT= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= 98f42a6892b3e81547e7516524a8d1426f4c1af3d218f4027aacb9c782a77403 +TEST= 502 +PT= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= 08bf0f080962270f8fd24fa400f602f9d33e6cc79791d8a724d84055a5dcd2f2 +TEST= 503 +PT= ff80000000000000000000000000000000000000000000000000000000000000 +CT= d97a2a0306207773b0e6f08c2d7e66e00520772855bc422b45bafe4e0ce2f4b7 +TEST= 504 +PT= ff00000000000000000000000000000000000000000000000000000000000000 +CT= a34e04ea5fc36f7251c5f69798747188b04cc1f75e9aa7449107ad75143e4f6c +TEST= 505 +PT= fe00000000000000000000000000000000000000000000000000000000000000 +CT= 3b5388e591a6d74eb7dceb797b54c04644d9c9b40920403268a332ae7ddfc501 +TEST= 506 +PT= fc00000000000000000000000000000000000000000000000000000000000000 +CT= 57bfb49897d5ccb5575e30a58a32e2105b6262995e74a26a96dfca1d2bde1b84 +TEST= 507 +PT= f800000000000000000000000000000000000000000000000000000000000000 +CT= f97c92213edc40231ddcfc9c1b1f15f235dc9518e54628a1a6040575f7b9f079 +TEST= 508 +PT= f000000000000000000000000000000000000000000000000000000000000000 +CT= 6a15437cc675f651369b104fb6be384e1e557f6b4d41bbe3da0e64f44749fa7b +TEST= 509 +PT= e000000000000000000000000000000000000000000000000000000000000000 +CT= 3656d7a7441c4a95a3e2a7515dab6f235731cfe253961afc6496a437f6c268ba +TEST= 510 +PT= c000000000000000000000000000000000000000000000000000000000000000 +CT= 74263b846d10a74c9b4d69cd7ff8c6ea003e5e3a5051b91ac2364948630ecdeb +TEST= 511 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 44b1262ffb313cae84f00112746266fc95264718b0533d22ca8c5022abff359c diff --git a/flint/test/testvals/ecbnt88.txt b/flint/test/testvals/ecbnt88.txt new file mode 100644 index 0000000..5668e79 --- /dev/null +++ b/flint/test/testvals/ecbnt88.txt @@ -0,0 +1,1547 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbnt88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= c6227e7740b7e53b5cb77865278eab0726f62366d9aabad908936123a1fc8af3 +TEST= 1 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 4e76ca69967125a9636f3554229556f6e2b2351cb4fd10b4e052afd85bebdfa8 +TEST= 2 +PT= 0000000000000000000000000000000000000000000000000000000000000003 +CT= da942a67378d750821520fde0a3aee6c713a498ccc5384bb25017733034c55d8 +TEST= 3 +PT= 0000000000000000000000000000000000000000000000000000000000000007 +CT= 3079c494f28edd2aa69caedae439021bff8479656055aba2df3ec7dc14211112 +TEST= 4 +PT= 000000000000000000000000000000000000000000000000000000000000000f +CT= a25e108a2dda2e43c23bc83dfa321eb0c3d13b89338805b53e72be9e3569357a +TEST= 5 +PT= 000000000000000000000000000000000000000000000000000000000000001f +CT= b67865d61e9903a8f8282a0b387a0272a1f2466f07b3db997b44cdda9ad5bad2 +TEST= 6 +PT= 000000000000000000000000000000000000000000000000000000000000003f +CT= 5bfe12055c511835b8aacb6b141a7d11981d0dd1e3587328afe4e64b667e72c5 +TEST= 7 +PT= 000000000000000000000000000000000000000000000000000000000000007f +CT= 0151386922af7975a921a9dc7fc0ff039d604ff18d283fa11442478feac6979d +TEST= 8 +PT= 00000000000000000000000000000000000000000000000000000000000000ff +CT= d1ad676c52543b476d06ae547c60d99808abf621af934128f928cb728d2d92cc +TEST= 9 +PT= 00000000000000000000000000000000000000000000000000000000000001ff +CT= 6a3372275829f15b749ae6bac0939bdde081531f8b8837e66ee1bc41b2c0276f +TEST= 10 +PT= 00000000000000000000000000000000000000000000000000000000000003ff +CT= f89095dfa7655caf5a0192ddfacb6e3574c316e15c2f0a96eb9073657ec0a1cc +TEST= 11 +PT= 00000000000000000000000000000000000000000000000000000000000007ff +CT= 5d083f8e6675201ad12bdd17c067a3f5e99170edc24cb9d364dc40f77203edc0 +TEST= 12 +PT= 0000000000000000000000000000000000000000000000000000000000000fff +CT= 9df5d15edf71a7b4eef66e21792ddfe05ea2fd08137f9849afd1c2fcad9f048f +TEST= 13 +PT= 0000000000000000000000000000000000000000000000000000000000001fff +CT= d15562eff903e94f8f0962610dff5f886875ab997cb35dbd498caf761a2d44f5 +TEST= 14 +PT= 0000000000000000000000000000000000000000000000000000000000003fff +CT= 4537408152af98bff2eeab8e01dbb9556185e6576175a0fbd0ee1f88753f5a81 +TEST= 15 +PT= 0000000000000000000000000000000000000000000000000000000000007fff +CT= c72782155db201175149d60d4ad66d3429d002e46d32ee031207c138ae016ddb +TEST= 16 +PT= 000000000000000000000000000000000000000000000000000000000000ffff +CT= 908dea4c44b2761a7a708b803ad05de74791f2baaaca8b3907078e5a7cc59a3e +TEST= 17 +PT= 000000000000000000000000000000000000000000000000000000000001ffff +CT= 8686d534d1e5a9159d02e0dbe6eca347b8f4aee06c947749eb3a1dfe80786321 +TEST= 18 +PT= 000000000000000000000000000000000000000000000000000000000003ffff +CT= bb4be228b1e9d52775971b40c6d98aff40048170aa2d4baf1858479707bb790d +TEST= 19 +PT= 000000000000000000000000000000000000000000000000000000000007ffff +CT= 6489a1d5b693c515ab8f72fd133c2609944fe2bac330959b66c500e8bd3dc935 +TEST= 20 +PT= 00000000000000000000000000000000000000000000000000000000000fffff +CT= 8b1e3b9e82cda8fa4ac5f68ca8afe9650495ae41d4210da39ebb5e81edbd2cc3 +TEST= 21 +PT= 00000000000000000000000000000000000000000000000000000000001fffff +CT= b2b702ec79510e7800477a1454373974b3d240d068a229087765d19ee974a63a +TEST= 22 +PT= 00000000000000000000000000000000000000000000000000000000003fffff +CT= a672e6136a07b6f9918ccd8dd3acff1f2bfb8871d4b5c9e9f55b2c619b5aa85a +TEST= 23 +PT= 00000000000000000000000000000000000000000000000000000000007fffff +CT= dc3e8890ffb0d56648b8a2e5dad2d6aafcc1be78aa56e207de9ffb774bc2ba80 +TEST= 24 +PT= 0000000000000000000000000000000000000000000000000000000000ffffff +CT= 5bfc25d300f8e1cc23b3841b961e4ffef68688ef939b75cd37aa01efe277ac11 +TEST= 25 +PT= 0000000000000000000000000000000000000000000000000000000001ffffff +CT= a9f95cb9039b547e985e3103008a6925046332f220e02b250a60fba8a12d2ed2 +TEST= 26 +PT= 0000000000000000000000000000000000000000000000000000000003ffffff +CT= ed983faf206df1420c66308e91c026ce5e2e1a9e855f8f0e6517dcb851ff1d75 +TEST= 27 +PT= 0000000000000000000000000000000000000000000000000000000007ffffff +CT= 5d26118763b68a9a17322896b8d4cf63e657623981e1ec8a2e33aef529edaf86 +TEST= 28 +PT= 000000000000000000000000000000000000000000000000000000000fffffff +CT= bb8c87d3e9afa51b115d13ba7041d0add3c0f714c660aea659a6de60a1d9d61d +TEST= 29 +PT= 000000000000000000000000000000000000000000000000000000001fffffff +CT= b3dff9b31de44100dbe8c443e3b359c5b229f9237dec588c9f9fae9279a5ac9b +TEST= 30 +PT= 000000000000000000000000000000000000000000000000000000003fffffff +CT= a9d0e3dbceff69e8691351eb79ef0fff6419f638cba63e0f80520cee8449df13 +TEST= 31 +PT= 000000000000000000000000000000000000000000000000000000007fffffff +CT= 3bee3ddfe0bdb2c4806f50b4144d3d16b84b77b702b1db6ffbbe5e610b71e921 +TEST= 32 +PT= 00000000000000000000000000000000000000000000000000000000ffffffff +CT= 69f2b8a12016cc914fef6a1623dd4deb8a32c8c0c4c3f07e1a8e89bfeca80243 +TEST= 33 +PT= 00000000000000000000000000000000000000000000000000000001ffffffff +CT= 1a23c3936844bc2fcb2b064dc898c74c388ac6c2842ea2b99418aaf24e73852d +TEST= 34 +PT= 00000000000000000000000000000000000000000000000000000003ffffffff +CT= 0354ff1bf18af104c978ee28f1c0254f4311ba4e63cbfa5ec8336cdc5946da17 +TEST= 35 +PT= 00000000000000000000000000000000000000000000000000000007ffffffff +CT= fc376772c593f1d0896a0c7fdd6c6528be71b1960163f3e194905601537d0050 +TEST= 36 +PT= 0000000000000000000000000000000000000000000000000000000fffffffff +CT= 37af04c4f36235d5d232a215e8d8b2abaf334fe3e8f8acc53be9c5e637ba2c92 +TEST= 37 +PT= 0000000000000000000000000000000000000000000000000000001fffffffff +CT= 87de4aafe6a2488be15fc802d1ee10f9d2dfeceac70f3298b16d97d90c4000eb +TEST= 38 +PT= 0000000000000000000000000000000000000000000000000000003fffffffff +CT= 8e4fb3ac12da50e50f3e54edc375af9c39f59243acff751199dfef7450b5d1fb +TEST= 39 +PT= 0000000000000000000000000000000000000000000000000000007fffffffff +CT= 2b69bf58c474810243155741d6098fbedb17eb705437696663cf6a9be082cf79 +TEST= 40 +PT= 000000000000000000000000000000000000000000000000000000ffffffffff +CT= 31afa0c80737b6d1c8d58d2116e130a3b86cf584679ca26764a47fe164c7838a +TEST= 41 +PT= 000000000000000000000000000000000000000000000000000001ffffffffff +CT= b44528d748d968aa6ecf3d2d9d5327c2b3d1cbd99ef309f9f80cb38c750a0456 +TEST= 42 +PT= 000000000000000000000000000000000000000000000000000003ffffffffff +CT= ba5f6c0256f9927d450382593211e752dbb640a961bf3f0d8b54e66cf4438191 +TEST= 43 +PT= 000000000000000000000000000000000000000000000000000007ffffffffff +CT= 833466b96ef1b315983b966a31c4886ebb09d13022b2520398f1630024a4c58b +TEST= 44 +PT= 00000000000000000000000000000000000000000000000000000fffffffffff +CT= ec330b9528c8c516279d8d47a5ac74d64a1a91534a9e4f6369718f652560c6db +TEST= 45 +PT= 00000000000000000000000000000000000000000000000000001fffffffffff +CT= 5337f66136cef6f34a739421302f7c8bb996d93f2b201d1791757cf56f510385 +TEST= 46 +PT= 00000000000000000000000000000000000000000000000000003fffffffffff +CT= b8e3d7261b463d7932b47e12dc9a8cc958f359ac57065871ae52e71fa43196ac +TEST= 47 +PT= 00000000000000000000000000000000000000000000000000007fffffffffff +CT= 271469c557b74d8b8740253494c63a91dfe32389a883c27c5e1041efb2c4a701 +TEST= 48 +PT= 0000000000000000000000000000000000000000000000000000ffffffffffff +CT= f4da658b5bbfebfad4ec1d27ba97fa5f7f8fea244783d969877e9f7d9e02bddd +TEST= 49 +PT= 0000000000000000000000000000000000000000000000000001ffffffffffff +CT= c642b618e3ff8a1bc8f9485e2a847f1e379e5fedc2e36e9a082783da54b9ce4a +TEST= 50 +PT= 0000000000000000000000000000000000000000000000000003ffffffffffff +CT= 9647b4ddd0334b51c60f64cded4582952d4dae361ecada003e4bf84f7c08ea87 +TEST= 51 +PT= 0000000000000000000000000000000000000000000000000007ffffffffffff +CT= 2900f915159a705a8f008cda9720bd412084f1b4512e18dc3485b9269b870dc5 +TEST= 52 +PT= 000000000000000000000000000000000000000000000000000fffffffffffff +CT= 75bcae6e11fec9080d93837080ad64012d78ec97454ef21c122e7cd28104b758 +TEST= 53 +PT= 000000000000000000000000000000000000000000000000001fffffffffffff +CT= 5e6690f3be7dc150de8b3549e8a2c207854ac0918c565fc02d0c55c546e0defc +TEST= 54 +PT= 000000000000000000000000000000000000000000000000003fffffffffffff +CT= e7a729ebc37669ecc739b640e04bc4de534fdf1db7ede1e685a4ef610c7d7457 +TEST= 55 +PT= 000000000000000000000000000000000000000000000000007fffffffffffff +CT= 463af0a6d75bf87761e6c0cfc96673c7aa6f2f775c8341ad019d6396fc582e70 +TEST= 56 +PT= 00000000000000000000000000000000000000000000000000ffffffffffffff +CT= 3e12405a721cc9e7b327fd8b6b000934a1fd371cb0c84fe935ecf69651b78ab5 +TEST= 57 +PT= 00000000000000000000000000000000000000000000000001ffffffffffffff +CT= 96b6bf492370f973a42594873865e1de6a2aaf7c8058eb9a25ee80ddbd4bad59 +TEST= 58 +PT= 00000000000000000000000000000000000000000000000003ffffffffffffff +CT= e86c8adb24e174d820ede595da277eeac25fc8720699be7daa780654a7fab0c4 +TEST= 59 +PT= 00000000000000000000000000000000000000000000000007ffffffffffffff +CT= db68f67c1f40e4665c54b6142a8f2d7e9cc9cffc3109a5334da3106c65da39aa +TEST= 60 +PT= 0000000000000000000000000000000000000000000000000fffffffffffffff +CT= 07d195640170e342e63f1460cc470af60c39aacc5ea00e04934e93b2bd36331c +TEST= 61 +PT= 0000000000000000000000000000000000000000000000001fffffffffffffff +CT= 90f94a048af79b2c3cc181b52b11679194220aa9c7d687d7d7abaeffe921730f +TEST= 62 +PT= 0000000000000000000000000000000000000000000000003fffffffffffffff +CT= e08ac59ba0f9f359e44bddd4755fb91e064f754ac496974b716b870ce99fe44b +TEST= 63 +PT= 0000000000000000000000000000000000000000000000007fffffffffffffff +CT= 0e52cd2968cf7504f68f247c6e9784d1c4253544c7f3e2e644a5ccd2d6f99143 +TEST= 64 +PT= 000000000000000000000000000000000000000000000000ffffffffffffffff +CT= f870a824a70acf8bdb1f6aa7f15da8b17abb3a1e75dec66ab50101781548647c +TEST= 65 +PT= 000000000000000000000000000000000000000000000001ffffffffffffffff +CT= 69dd34766e16a3ac35f4fd45507006fe162bdfe4b1c901dc1caac008e46f1b89 +TEST= 66 +PT= 000000000000000000000000000000000000000000000003ffffffffffffffff +CT= a7ebb4bc1a6365f61d98964643a02464e01594844bbe70da5421a04906c0bea6 +TEST= 67 +PT= 000000000000000000000000000000000000000000000007ffffffffffffffff +CT= fb6878910ae79550e419ded113210190585a0a737d819d61917b70d3b54468dd +TEST= 68 +PT= 00000000000000000000000000000000000000000000000fffffffffffffffff +CT= 59c44dd1e626862709b61986f3577486cc6d1a428135057f19f7a8d82ca8ad4a +TEST= 69 +PT= 00000000000000000000000000000000000000000000001fffffffffffffffff +CT= 5191f7e9bec87eb56ec9f1506c020ad2956b59057dc0ed0d92d60eef01102233 +TEST= 70 +PT= 00000000000000000000000000000000000000000000003fffffffffffffffff +CT= d1619863b73dcae8c713f7a237d2da3d75c6b89d671bf55f600bfdac8c14a3fe +TEST= 71 +PT= 00000000000000000000000000000000000000000000007fffffffffffffffff +CT= 593b5f2dcbdd987cb4dd05f45bde2799e16596c0f08d5400e0013399febd9d2a +TEST= 72 +PT= 0000000000000000000000000000000000000000000000ffffffffffffffffff +CT= 4fced42613bd30fc63859c4da1c3d0be378dbaece904ab17ea1cc3046e9e27df +TEST= 73 +PT= 0000000000000000000000000000000000000000000001ffffffffffffffffff +CT= 5d48a61e5817cba2434e591445acf24e0b852d81bb29737b457757db6e498c46 +TEST= 74 +PT= 0000000000000000000000000000000000000000000003ffffffffffffffffff +CT= 912878b39ddf3e6edf6724bc46f4ba48fde481df90dae9be26b4076e750033a6 +TEST= 75 +PT= 0000000000000000000000000000000000000000000007ffffffffffffffffff +CT= b6c39117b1b2000bb0992a167bd7dbae28af0b9fcab0621765b415751d5d3ad2 +TEST= 76 +PT= 000000000000000000000000000000000000000000000fffffffffffffffffff +CT= 1c9192e726c309f58103d1b66527edc205f505a373663f6945e73d6601a9de14 +TEST= 77 +PT= 000000000000000000000000000000000000000000001fffffffffffffffffff +CT= ffc4b83d3620958a6172b7f86f7ee468bc0615ca6d95226b23d39d0b4e89f88a +TEST= 78 +PT= 000000000000000000000000000000000000000000003fffffffffffffffffff +CT= 9d5364b487b01d65efaa680f495e571ae0f0379a29701668401afee01b43de17 +TEST= 79 +PT= 000000000000000000000000000000000000000000007fffffffffffffffffff +CT= 5b9f70663c6f058272dce25bf04faf7c7d497894619911093d430814423d62e7 +TEST= 80 +PT= 00000000000000000000000000000000000000000000ffffffffffffffffffff +CT= e253742fd00969dba3cbc8e81ab2ef25d379158ddf8b4650ac785ac133eb5344 +TEST= 81 +PT= 00000000000000000000000000000000000000000001ffffffffffffffffffff +CT= fb5110b3066ebe66276df9b1f604b0d020b64dfda53f33b07a4134b11f3221a6 +TEST= 82 +PT= 00000000000000000000000000000000000000000003ffffffffffffffffffff +CT= 15da928127c61a3b46fb82e262385ded342a513050e66207eea3a29d4589cc29 +TEST= 83 +PT= 00000000000000000000000000000000000000000007ffffffffffffffffffff +CT= 32e4f8f3ace96005e8bd3d12aad8edd07134ba3bf3e667b624ba84ef2c93ae6b +TEST= 84 +PT= 0000000000000000000000000000000000000000000fffffffffffffffffffff +CT= b0aecd6f05ac8f0ca6a30158377a916d74f1beed61c2044b07b121ae62f7428c +TEST= 85 +PT= 0000000000000000000000000000000000000000001fffffffffffffffffffff +CT= 5594f4d9d84eec82aaa1e4a6c20ce5bf1ed800e09df694d2c159549bf168ed52 +TEST= 86 +PT= 0000000000000000000000000000000000000000003fffffffffffffffffffff +CT= 7a137a6c34a0ba3c6d4942ec0d1aea05a753ab715c5c8617e16f840e1fe28c76 +TEST= 87 +PT= 0000000000000000000000000000000000000000007fffffffffffffffffffff +CT= cc705a47bbdab3f4e54dcf99d4c68b4bf75cd278fdbc0cb5b49f9aeec10e9c47 +TEST= 88 +PT= 000000000000000000000000000000000000000000ffffffffffffffffffffff +CT= 138fa4fe1d716f6f85d8eeb935f0427a642c4671a00f9e7d5c6c5c9b49bb11dc +TEST= 89 +PT= 000000000000000000000000000000000000000001ffffffffffffffffffffff +CT= 2ec897365074941b069d6f127e878fe55ace74dacce4562a82f92c577b749abb +TEST= 90 +PT= 000000000000000000000000000000000000000003ffffffffffffffffffffff +CT= 37e0b50134834a43779c8f189b23b05c3173c664ee4ce4b36f861ec480367ee7 +TEST= 91 +PT= 000000000000000000000000000000000000000007ffffffffffffffffffffff +CT= ed48a6d72c173bceac1cd7b72331d42dc5521383d2e671f4a1f4eb4c4ed1aa58 +TEST= 92 +PT= 00000000000000000000000000000000000000000fffffffffffffffffffffff +CT= 8712792c9a7e3ba4cdd2853c103c10353c1c902eb54b95ed9f9cef8d4ecb6441 +TEST= 93 +PT= 00000000000000000000000000000000000000001fffffffffffffffffffffff +CT= 98df82fe6df7b530d4a99aadfffdb3753de5236c39b09f93f7a62ed1f963e073 +TEST= 94 +PT= 00000000000000000000000000000000000000003fffffffffffffffffffffff +CT= 46fd1098ea1afb66bfa16080bf828f4252f6e4f082c5110a28b7d66406827414 +TEST= 95 +PT= 00000000000000000000000000000000000000007fffffffffffffffffffffff +CT= ef29b9a38e4cb4bc8c7321b53f4f2095fead51905a6c19a32e95a18263a6476a +TEST= 96 +PT= 0000000000000000000000000000000000000000ffffffffffffffffffffffff +CT= 88d14c0cff3987dad16e4826e68729462de8a52ad746ef69835bc78d13bdc142 +TEST= 97 +PT= 0000000000000000000000000000000000000001ffffffffffffffffffffffff +CT= 74b645a4c580f631edbffb03e99b103b34aa032752ad9e83c465481c6a7c61bb +TEST= 98 +PT= 0000000000000000000000000000000000000003ffffffffffffffffffffffff +CT= 5a14770abcd98511aba3e5f5c7ec1f7bbbf2cfb5ec800fa8483da10e0a6643ca +TEST= 99 +PT= 0000000000000000000000000000000000000007ffffffffffffffffffffffff +CT= 528e1856cd6481373ff47050aef10956fee33a2982fa0e2a4f65d9a997e68986 +TEST= 100 +PT= 000000000000000000000000000000000000000fffffffffffffffffffffffff +CT= 384c0b0a0d96bf3e38e59a8c703ef1299932e065b1d9c3e6055eb0c0b63bc00f +TEST= 101 +PT= 000000000000000000000000000000000000001fffffffffffffffffffffffff +CT= e46aa3b779bcb7626caa8393ec2e5d97e1a2973e3fe6b0ee853ec690917af08d +TEST= 102 +PT= 000000000000000000000000000000000000003fffffffffffffffffffffffff +CT= 8d272f0afb50611c5038be1881e28dc3628021c4c00cc10ce1693817a4fcff9b +TEST= 103 +PT= 000000000000000000000000000000000000007fffffffffffffffffffffffff +CT= 342e46179dee411e97feb783a534e98acbc5a70459d8f51a0e579c250d18e77b +TEST= 104 +PT= 00000000000000000000000000000000000000ffffffffffffffffffffffffff +CT= 8d544f7643cd0e44482b4e6b7245e66bff0009764c060c551636f78217c77f58 +TEST= 105 +PT= 00000000000000000000000000000000000001ffffffffffffffffffffffffff +CT= 768d0ee1f5f303c21ad17696ebf328ed331f78d06fc0e553e1223b4019320ef5 +TEST= 106 +PT= 00000000000000000000000000000000000003ffffffffffffffffffffffffff +CT= 57120cecd89132fba3e2dcd507e92683dff54b2ef9ab528498084033c1528d41 +TEST= 107 +PT= 00000000000000000000000000000000000007ffffffffffffffffffffffffff +CT= 21eb2ade12aa8d062cf29f0862987e675bc521c405405de590a258ba57c35c31 +TEST= 108 +PT= 0000000000000000000000000000000000000fffffffffffffffffffffffffff +CT= 9a31442b6a99b4668baff0b8aa41c8de1eab502e16e7ec72c73f02e4790ca742 +TEST= 109 +PT= 0000000000000000000000000000000000001fffffffffffffffffffffffffff +CT= e223bbbb322d70df26f34b95caf5cd07fb9f1bb9037a9ffddc7277eec4042d55 +TEST= 110 +PT= 0000000000000000000000000000000000003fffffffffffffffffffffffffff +CT= 8067bbb30f422a3b13ee6105ca028d1a76283952a3ea999d6965b65d78360164 +TEST= 111 +PT= 0000000000000000000000000000000000007fffffffffffffffffffffffffff +CT= 0a19ac9ae70fb8f44e14cec9604e9ebb110bf1ec8a6382ec4df0aa0da61ed9a8 +TEST= 112 +PT= 000000000000000000000000000000000000ffffffffffffffffffffffffffff +CT= e9c7b845cb5c63207777a429029d6acce994addeda492a060c78c05ce4156082 +TEST= 113 +PT= 000000000000000000000000000000000001ffffffffffffffffffffffffffff +CT= c86374deb3d2bfbcfeda4f8877431dd87717c91a5ee04ad75fb766c50653bef9 +TEST= 114 +PT= 000000000000000000000000000000000003ffffffffffffffffffffffffffff +CT= d19bad0607e5cf0961955dbcd20baaf1f0c9758318d812d3d36dca2a74e1a9e9 +TEST= 115 +PT= 000000000000000000000000000000000007ffffffffffffffffffffffffffff +CT= 25823026a5d61e56e79b69bfbc5d945cd85143d20c30e99e5cef3433f4133c2e +TEST= 116 +PT= 00000000000000000000000000000000000fffffffffffffffffffffffffffff +CT= 573730a6f08714337432cf67344b3008531ea0e2562e9e1be2a795fb3cc41bcd +TEST= 117 +PT= 00000000000000000000000000000000001fffffffffffffffffffffffffffff +CT= 8cb3ede2b402d22d3392d69ad31be063ae857fdab79aec095ca1bc626344676b +TEST= 118 +PT= 00000000000000000000000000000000003fffffffffffffffffffffffffffff +CT= b6c6df282c125d4f96643af58d81b90120270b316dd94eeac8f766d23162cbfc +TEST= 119 +PT= 00000000000000000000000000000000007fffffffffffffffffffffffffffff +CT= f462bfba85b55e99bc7bb13b4f542154d658fa5761763bfa637597c14a18baa8 +TEST= 120 +PT= 0000000000000000000000000000000000ffffffffffffffffffffffffffffff +CT= c619129e7a8c4233d5b787cd0dbbc470b13516af6d491601c7dd9cf239b55b85 +TEST= 121 +PT= 0000000000000000000000000000000001ffffffffffffffffffffffffffffff +CT= b8f750c27454918045ed5a34c26ca491d898908d53a5cf522b1f13275ade08de +TEST= 122 +PT= 0000000000000000000000000000000003ffffffffffffffffffffffffffffff +CT= cbb8e78ffd247677611acac3012c8f5de4aaea3665258d4f5940f90803106038 +TEST= 123 +PT= 0000000000000000000000000000000007ffffffffffffffffffffffffffffff +CT= 0e5e1015201961a1566569a97cbf7ace6474baee8311fbff326a32c72348d542 +TEST= 124 +PT= 000000000000000000000000000000000fffffffffffffffffffffffffffffff +CT= 90813845419c88983334f92bbe6d2bacdcc35888340f4e9831af31fd0a25d13b +TEST= 125 +PT= 000000000000000000000000000000001fffffffffffffffffffffffffffffff +CT= e48a6b51ba9fcb2b336f71c9693a18dcb81ffe0e9cf52439888d47cf8007ae93 +TEST= 126 +PT= 000000000000000000000000000000003fffffffffffffffffffffffffffffff +CT= 00649667141b0dce5df2df532349d7cb306b8f8381144e2281cc866d291ff46e +TEST= 127 +PT= 000000000000000000000000000000007fffffffffffffffffffffffffffffff +CT= 784df6617393206cbc4bf68d2dc9942e987dd09300bcb50eb4d5eb999e6495de +TEST= 128 +PT= 00000000000000000000000000000000ffffffffffffffffffffffffffffffff +CT= 73dfe8861d232871d055bedd6db0b782a277c954bc8515c1b81f52f19e7b2361 +TEST= 129 +PT= 00000000000000000000000000000001ffffffffffffffffffffffffffffffff +CT= 806ba26396b25828961c37d74bdbf418acbcdf63063bf664b9b3d979967b6b69 +TEST= 130 +PT= 00000000000000000000000000000003ffffffffffffffffffffffffffffffff +CT= 11fc4078cbc8a3fe8ff9f909ddbb850083e965d0888c08304a2b0c1ff77c823b +TEST= 131 +PT= 00000000000000000000000000000007ffffffffffffffffffffffffffffffff +CT= 72ac615397d7f29207b6cfc97a42dc5f03ecf7b1ca22f21a55bb1e047ef344b8 +TEST= 132 +PT= 0000000000000000000000000000000fffffffffffffffffffffffffffffffff +CT= 3cc13926eec6a6a08a092ffa3a2c25e5e463a43aedac967f8812ac1c893528c7 +TEST= 133 +PT= 0000000000000000000000000000001fffffffffffffffffffffffffffffffff +CT= c361f8afcb9b65a525f84d16d0a3505ecb4f59691d8698540872b30d697c6995 +TEST= 134 +PT= 0000000000000000000000000000003fffffffffffffffffffffffffffffffff +CT= 5bc3843b4a44ec4fbf865afde5c11c2bc3dbd2de4e69e2db0f9d3499d2040ea9 +TEST= 135 +PT= 0000000000000000000000000000007fffffffffffffffffffffffffffffffff +CT= a1dd7307db097225202ea26518ce96964fbf38757666d5890231c99cf16e056d +TEST= 136 +PT= 000000000000000000000000000000ffffffffffffffffffffffffffffffffff +CT= 7cfac972df6f96736021ad003a8c2aa73e3ee0685c433b71c8935d9af91a0078 +TEST= 137 +PT= 000000000000000000000000000001ffffffffffffffffffffffffffffffffff +CT= 332b3781686aed0bc99d18822b01704c6243aa083341eed977861b233a3a8d5c +TEST= 138 +PT= 000000000000000000000000000003ffffffffffffffffffffffffffffffffff +CT= b102cf2ff120483cd35812456a7f1c24b9c4728eee4a1d3e02fe0248a2e726c0 +TEST= 139 +PT= 000000000000000000000000000007ffffffffffffffffffffffffffffffffff +CT= 194b833d572873a6bee251a5b6d39001bf9fe8e82a804cd7ce90bbbbc1b5cf95 +TEST= 140 +PT= 00000000000000000000000000000fffffffffffffffffffffffffffffffffff +CT= 572fb0531b2d419c40fef91ae754ea88a6889267ec64d44ef2d5b5dc8cd22aa4 +TEST= 141 +PT= 00000000000000000000000000001fffffffffffffffffffffffffffffffffff +CT= f858757c16a62fe7a17ddd24310b497d6a65705e623abb7b141c9e061b5e7372 +TEST= 142 +PT= 00000000000000000000000000003fffffffffffffffffffffffffffffffffff +CT= 6a5a470c84f3256623d3bc7048e9c80b0e7babfc47caee6d5818253739c21992 +TEST= 143 +PT= 00000000000000000000000000007fffffffffffffffffffffffffffffffffff +CT= fcc4508c771439d14e033c45eb13a1c7fb364cf27d4ef866df4204aa3778aefb +TEST= 144 +PT= 0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +CT= 739cd73cfd723a7e393524efd1b9f62b40a5a690d92aab8e67bbd128bbd95f42 +TEST= 145 +PT= 0000000000000000000000000001ffffffffffffffffffffffffffffffffffff +CT= 60ff3378c58c37c46f7307ba9ba7c8264ae7a6af42594e592dfdc0190cee8f62 +TEST= 146 +PT= 0000000000000000000000000003ffffffffffffffffffffffffffffffffffff +CT= 3e31f37d1ef75b53cdd14a6cf4da8008b05e161f1dca2a8b80ce087f4e9edb93 +TEST= 147 +PT= 0000000000000000000000000007ffffffffffffffffffffffffffffffffffff +CT= a9a218d74d82c4b1d024b4b99d200de28fbcea5e3620c6c3d2ca288489810f3c +TEST= 148 +PT= 000000000000000000000000000fffffffffffffffffffffffffffffffffffff +CT= 09b550318ff1aceb98c773a668b3d303e85fee6254e48971f82c562ef6e4d8ae +TEST= 149 +PT= 000000000000000000000000001fffffffffffffffffffffffffffffffffffff +CT= a02883dad35abd3b931810e00f60952bc569aca151a61ff0e942d0fbc3dd7747 +TEST= 150 +PT= 000000000000000000000000003fffffffffffffffffffffffffffffffffffff +CT= b1171b5435fd2a8afb72fabce9574f68c6d7e5a73cb7cf04fe296a6fdbb06d5e +TEST= 151 +PT= 000000000000000000000000007fffffffffffffffffffffffffffffffffffff +CT= 37ed5a86c45ab57b82d8bc8ca9f39e844d89da75529ae8afa541273a5c03944e +TEST= 152 +PT= 00000000000000000000000000ffffffffffffffffffffffffffffffffffffff +CT= f02390dd210d512ae062c0a95e6e5972975d143cfcb0c4c815f63311dee5018c +TEST= 153 +PT= 00000000000000000000000001ffffffffffffffffffffffffffffffffffffff +CT= 46987f28c872a492bb21cbd71d1ac689477adcbbd20d69b23649fd182d335f00 +TEST= 154 +PT= 00000000000000000000000003ffffffffffffffffffffffffffffffffffffff +CT= b903f191ecdf8205a7668186722c084fa911c3c5e06169890c65648c513127a3 +TEST= 155 +PT= 00000000000000000000000007ffffffffffffffffffffffffffffffffffffff +CT= 474c4a2fd81be6092f90ad60083ca1890250b0d9a6c89f83bf4a23be2cc87d7b +TEST= 156 +PT= 0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +CT= 090f3e7cc3c64a228d53899e6e4e9d3789e668402d2abf5c17d2dc2e6cbf2421 +TEST= 157 +PT= 0000000000000000000000001fffffffffffffffffffffffffffffffffffffff +CT= 5dc9f56d3b9bce27b5e8db9970861a603408e9535189f801003a83f53f76ad20 +TEST= 158 +PT= 0000000000000000000000003fffffffffffffffffffffffffffffffffffffff +CT= fd20d9592f881bb60f9a7f9742e36af57b6336795e7e944816f7b658b6275445 +TEST= 159 +PT= 0000000000000000000000007fffffffffffffffffffffffffffffffffffffff +CT= 444b77b755b8b317de0040c19c91f78fc0c547e4029f1a3e5148fb5f54adc52b +TEST= 160 +PT= 000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +CT= d2d2ee1f446942130760344a15ee86489aba505bcc0e31f8ec3ebd22cc735e2b +TEST= 161 +PT= 000000000000000000000001ffffffffffffffffffffffffffffffffffffffff +CT= cf30721495dd42d0e6a8d0135e196472c36f1610cd1686092da09b67d90e1d14 +TEST= 162 +PT= 000000000000000000000003ffffffffffffffffffffffffffffffffffffffff +CT= 9a5e74122a8b6503e2ea44a6c555b2087c561e5c5c722b87cddb4caf54f6be62 +TEST= 163 +PT= 000000000000000000000007ffffffffffffffffffffffffffffffffffffffff +CT= be149b6f94b9c6bf097eb73cdb8ecb12b7568579e419e3f6fa27528acfa37be9 +TEST= 164 +PT= 00000000000000000000000fffffffffffffffffffffffffffffffffffffffff +CT= f0abc5c1e412616776ecd8954c7ec0d5908ded51682070f3f73eb5a00bf9c586 +TEST= 165 +PT= 00000000000000000000001fffffffffffffffffffffffffffffffffffffffff +CT= 6d410c6a559f814b1909ed0d344f798d93c0b1f829d532492f7780a9751ad959 +TEST= 166 +PT= 00000000000000000000003fffffffffffffffffffffffffffffffffffffffff +CT= cebc45f6655376128fe47fa9f37befe9bce4240e9b7787fe989f148d3b68b9fe +TEST= 167 +PT= 00000000000000000000007fffffffffffffffffffffffffffffffffffffffff +CT= 4b25dd34428c8dfab6e2c582298e472a8ac5f0101845f5bcecd7b3ce4135ad97 +TEST= 168 +PT= 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +CT= 06b5a124f6aae6aba9ff0a4ed6a44935b972ab3ca219f527555af5c0d369b090 +TEST= 169 +PT= 0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff +CT= 4bd5000224e920bdcaccb12cd836a1113b0154775cf076ffab3824df5a2434fa +TEST= 170 +PT= 0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff +CT= a06a9766c44dc377db986817a51222da358001ee8f2156e43c01a5be40891383 +TEST= 171 +PT= 0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff +CT= 805add1030d427191d6e90ddefc882af826a5b150881b069622195ff6d71607f +TEST= 172 +PT= 000000000000000000000fffffffffffffffffffffffffffffffffffffffffff +CT= 1cdda1125f8bd2d0d8ef4ad63718b4b416da770e9720b64518e661c437efe96a +TEST= 173 +PT= 000000000000000000001fffffffffffffffffffffffffffffffffffffffffff +CT= 94a5213f4125b4b6c6b85af0e764bc9cb8ba67fae14b07ffb792a0da40c13d8d +TEST= 174 +PT= 000000000000000000003fffffffffffffffffffffffffffffffffffffffffff +CT= c6e4ae5bac8208676c947a522572beb8404ef680df3f64039b3610580522a825 +TEST= 175 +PT= 000000000000000000007fffffffffffffffffffffffffffffffffffffffffff +CT= 307a90e7174e8f30403fc0b0e37ac6befdd6a424e4dac3b44f06292a79f7ec62 +TEST= 176 +PT= 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +CT= b9cd266a2e86fb1330c158d8d0815fb389dfb651f19cb2e4e75b06dcb3b7401a +TEST= 177 +PT= 00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff +CT= f2d2baabffef8521dfdb94ab70e91db99a2b174adc524b0e6478f7d3bf057c00 +TEST= 178 +PT= 00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +CT= 26b4f84f75c5043afd5b59d08453923766df3a2dcde6adecd682b461d0101315 +TEST= 179 +PT= 00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff +CT= cdea59f79e9b203e61e0b32587ccd31ea48a25026ad37ee7cef2cc1cbc2d5584 +TEST= 180 +PT= 0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff +CT= d8d95793e2efa78c38025931f9219b1b262ac611e6d83665eb2173c27d786118 +TEST= 181 +PT= 0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff +CT= 39f57737e19d92a0ebc5d864f0d1476aeb552953b20731b4a8f07f98948a366f +TEST= 182 +PT= 0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff +CT= 256e38c0068f9109f50c0371072e6980fef74b8f5cd8fb871d053b8557f80f90 +TEST= 183 +PT= 0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff +CT= cb268203e46b9bd5126a854cea0083451f37de942b7b16f24daaa75ee550e11b +TEST= 184 +PT= 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +CT= 34520b5f181d57f56cefef08e4d6988fd6b281cdc5debdcf240f9be87676f511 +TEST= 185 +PT= 000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff +CT= e0582c03386f7a7dd93b084e818fe55b7b60995a44b391d6bd34736a4e6ab2a6 +TEST= 186 +PT= 000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff +CT= e310d5198462ad7525ff3cb77ead9d4c2a41c722d9910082c47beaf4644dec99 +TEST= 187 +PT= 000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff +CT= 6f1430d2a4f28fc70babcc2c17fb8c1cc90f1044bc9384b4f1292b193e7635cb +TEST= 188 +PT= 00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff +CT= 3837d2d1f695ddf1951551969031b60e184421c75c888c031fafedf7a6908477 +TEST= 189 +PT= 00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff +CT= 0bb25cbd0e4cf4751b4d55b33c25a23a7de3ebfca3a93d191abbd6908e94dbe8 +TEST= 190 +PT= 00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff +CT= 0d1dd0007aed37c7372391a52067ed267625b26dc705fd34ce9c552e7748215b +TEST= 191 +PT= 00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff +CT= 4fe08b8dd2fc5809e39a7435291e4dec4b90d7557fa35e018257932aa70e0b12 +TEST= 192 +PT= 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 51aa39a4220caae9297f784df1ae2d01818a674a5efb1e6c507214b08a01cfe5 +TEST= 193 +PT= 0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 77333e56e711328495377727efef1454b7c93c55e3735fd58755e00d59c281da +TEST= 194 +PT= 0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 0188585cc4d7cd9c1266d594bdff62b22c4b651bbece4bebda161a8a988c8885 +TEST= 195 +PT= 0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff +CT= 84b9009414715512c66487d9e14a313b8c9e332359c02fa4cce2df34350038a3 +TEST= 196 +PT= 000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff +CT= e987477c58e550d80a8b0e2ff6b17673d3ac1e569ce469476445dc8df4037be3 +TEST= 197 +PT= 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2e4be21c6578eafd26ccaee638216099e94de5a4b2b22c944cd08482e04b841f +TEST= 198 +PT= 000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8437fc237983d5078a3f0cfdc6f0f3aac11ab8c15d8af4318246355da4c70f1d +TEST= 199 +PT= 000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8ea1da48a375e5f438027e19fe73d9370b0b1fe960157b6ca4056f3254f0daeb +TEST= 200 +PT= 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7842a1c0c32f1f44e984979dee4e781e5c34db09409811cecf49e94123196098 +TEST= 201 +PT= 00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8bd4370f30814ace0e58657fae19fb6ed04d54fb20dacf8ff242abc470eab1a9 +TEST= 202 +PT= 00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bfc57b8b15249fe667c6afac0b288aa3fa13010452244e50ec1802dffbbe0d6a +TEST= 203 +PT= 00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff +CT= c089af5149992d479c97a87305e86225f0ba7871065eb978d02d93baa57841f5 +TEST= 204 +PT= 0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 076d84b5839941149c6d3469a0932d22830749131bf795b48f841389802bb557 +TEST= 205 +PT= 0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e873f05f5e6a1f8b284f9b70853dbaca67cf8b4604ff3b87cc5200386a84ffb1 +TEST= 206 +PT= 0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 34744bddf5050ba3e87a481e9b96b4c9af4a534f0fad5d6faf750df6fbe59d11 +TEST= 207 +PT= 0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a328a265556987a6174bd5f6f5e5126048f6ebacb1dad3253f406add1d10233f +TEST= 208 +PT= 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 55fef39a2eaa763d17b6686045838794d0072cb6b60506fbfb26799101757349 +TEST= 209 +PT= 000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 5667d8faab21bfb75ec9cbdd769348e06e767bef9b120b60cafa62ef29c232ce +TEST= 210 +PT= 000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= aeeaac219365fa06797e84b14358e9a7742645eb1a31081b613fab6c78db1f08 +TEST= 211 +PT= 000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 2efb9303a9fc3e1d114575edbe2ed77fdebfe8250f0c2037dcc2828818d7abe2 +TEST= 212 +PT= 00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1538c28b751f8c3a64995782a112d646a401799cdd49194228f733597d127e33 +TEST= 213 +PT= 00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 25cbbbeb1fb12d09e2a81b09be606c518c7ece687940a757d71cb5b745ceac06 +TEST= 214 +PT= 00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f8a45fbd91cb38c60d83887eeb5444df1e5f175bd051dc171becf8abfb64c230 +TEST= 215 +PT= 00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 70d747e921cf7ac0d0fbb8e4b5b365da5f5478893d1216ad0f7fe34d5180730b +TEST= 216 +PT= 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 1aaae1bddef3ccaa7e045628a260f1ea9ded45f7f6396d6fbe522936a059d5fd +TEST= 217 +PT= 0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 92fe0d3003b9bf24d2fe800b6c7f168a984789adcd6e367ee0c2a2b3e44f2e84 +TEST= 218 +PT= 0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= cff2fb6ea1b5a5b43ede4002c5b8f5281ff5710bd7cb00f450c57efa7560134a +TEST= 219 +PT= 0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 70234c4055c9a14a798d8e31c92189964a2cb3eddcc29f36af761c87b30c5c28 +TEST= 220 +PT= 000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= eb1f9dde4b11702ec3d8db48a4eac0e9d2d35979080b14d6ea56e01a1acd5172 +TEST= 221 +PT= 000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 841e67bdca9d337519b978be21c79a532ac3d71e59b1ea5047f65327d46329e4 +TEST= 222 +PT= 000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f521368dbea5cd5c9378f46a77b59fac8f7020f7a4ff42fe1280edbebc3bacb5 +TEST= 223 +PT= 000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= bddbe76b4bd85dc356ed065feb65262d1016491c96e25ae5e51a25edfa007267 +TEST= 224 +PT= 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a573589a487ab98b46160821d6afdeb73344614f1b1b5e8eeb33034d0bbcb19a +TEST= 225 +PT= 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3831b57249a9aba2042cfeb5aa8f4cba97291e1fd11a2db694c01a1d6e3e9605 +TEST= 226 +PT= 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8aee1e294baa231bc7bd694fdc6e63926fe91444928628e50df007471096924c +TEST= 227 +PT= 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 49febe5cd93f62bd547d9643e0b90028310783bbe976c652d92abaf11626014d +TEST= 228 +PT= 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b7ea0239b356b2a163d23ad0e60e5f43e0b4ade2b6ee9355822c339a239bee51 +TEST= 229 +PT= 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d4b44b2a0df7e5e20826e4d7eef28597e3132088290ed184453ab9c928c7eddb +TEST= 230 +PT= 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ff9e783aa5673c06f41b477fed7cd0bb29e6821b8009e5d80a75e9def660edd4 +TEST= 231 +PT= 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8ef2ec8964b97f7d1590b5ffe8ce78f835d7d020d4f9c671d3592e060176584c +TEST= 232 +PT= 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= a64b148d89afb4c1f33562cf128313995e9a9f2f5e965965b9518e5c24fc8abb +TEST= 233 +PT= 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 7bbe192da041adcd40e883c62f145468cd19c419bf57cb9ad81f5cf5a16e3995 +TEST= 234 +PT= 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6246e95037ee6c1272deacb303f4e691a6d27ac301c9eb7aa220c940b4a3357d +TEST= 235 +PT= 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b96986f9769c1e737627f3e0b58ec4492ad00eed3f8409b189aa504afcc4582a +TEST= 236 +PT= 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 951fb29591d0f93e6d19fe0732544afaf1f346942a4c8faeb8184156ca598e39 +TEST= 237 +PT= 00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= b370ea10e8dab7f135c2d58c4cd11a21e228bbd63737285139e656f26c2a213e +TEST= 238 +PT= 00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= d949f1e1944e6dcb63b37b1cfb6f3df4aecb2e6e78bc3d53da60354946857d7c +TEST= 239 +PT= 00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ac79d701b75e9598275e503d9d791f052db0aa422873352e28c9541daf0b6d9a +TEST= 240 +PT= 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e5e34778e82d9f349fd8fd9e9ce3e301dbb88889c28c520a8dfaabe498d4d9a9 +TEST= 241 +PT= 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e8804bb6dacbaf7aff5502bd97f85c043372ccb3b0e811d020de04cc740f0b76 +TEST= 242 +PT= 0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= e9289bc3654a5b2270b146313602e7ed37fd5a2679add0a90b095fd6c95acbbf +TEST= 243 +PT= 0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fefd0c0df0250ae1d42d8006645aa65c945324aa42774de6f04ad38e51e3217f +TEST= 244 +PT= 000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ffbb22ca24ab2cdd389af049c056c742048adcaafe519dded7051536f57803b5 +TEST= 245 +PT= 001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= f4966337377dcff91396a9bf17206040d379896d35771ce25c051de83222ea15 +TEST= 246 +PT= 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 3a3bd4350d38035100d6fa681fd3462a338feef8fd4f4dda554995156de0ba75 +TEST= 247 +PT= 007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= fc824b7db67d9b11e30df5d2e39cf2981bf74daa19f4ec991980ffdfcc2a0295 +TEST= 248 +PT= 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 6bbd376ffd8d0552d971f1804ff9eae9fe359fa41556e93d356ef5ba0b99d62b +TEST= 249 +PT= 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= aeacfedbfd875f70fdaf842b3a7c3f46c64b7629f186a577555d6c914e3ef0a1 +TEST= 250 +PT= 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 45bbef2ed7f300af017ccb88e8c01ac53a347cc1f09b826fb082514dbe89d78b +TEST= 251 +PT= 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 8ff704ae35b97b8a419558f8889eb755787d71248ce69ba8ffd4ed960c889fd2 +TEST= 252 +PT= 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 59fa201573d6440790c13edc557c5bc4c8ec4e653179238d29f343e8c88cc79b +TEST= 253 +PT= 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 61385f2821978f63b8be535cc1d093a82b7673e1c4c0ab3ffd70b7fb74a5741e +TEST= 254 +PT= 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 43968795334a8489bd12423ed328f76cd67f150bb496be9dd6825f48ac14f9bf +TEST= 255 +PT= 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= 68327310045ce83116d2da1d7d70c7d09e0d0768215c4f424c1e86b198eb1594 +TEST= 256 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +CT= ced107c623531dba008d4c81c5a2665778cfe610f8151a18bf463b3643850538 +TEST= 257 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +CT= 99648a34ad29bd0b78f73fcbff73799daefd798d29b0bd81e1fc7c9c5e718e6b +TEST= 258 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +CT= d57ef294143a3abbd14f416fdc223f68c591147b7b77ce6087e020fbb3f869aa +TEST= 259 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 +CT= 4ec72b1ebc20d0c6b7875de109b5f7997a0ffcc960ca24f05d29fd079ef9e9fe +TEST= 260 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +CT= b0e9df678edef101fd9e9b1ba55fb495a4e38aee8678adca7f04c3bc9dd02eb1 +TEST= 261 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 +CT= b20c49101381f3dfa2a6d60fd6ca3ff716752c7e5d55b158b2d694868e475137 +TEST= 262 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 +CT= eb44a96f1a8e3cc82d806a724823c9a2717bc482a4eec64dc492f6b8b13ced63 +TEST= 263 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 +CT= 883161e98176da28bd9b97e58262498b70512b2298bc96f018a0c530f4f2add3 +TEST= 264 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +CT= bcbe2a1a52219fbdb6be467105746cd89e4ff7ae595828979c08af6eb8f30a02 +TEST= 265 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 +CT= 84380a195fa8157f1707176e91f600d67b75133462efec595067b81114d5d3e3 +TEST= 266 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 +CT= 1fb5547cec66fabd8e6d5e72007e8e5cfdc7325707740238d2a35d2a6b792fed +TEST= 267 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 +CT= 03f04ee675bae5242ec63a2fd347be95990d88eab151cfeaf134386feb691a19 +TEST= 268 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 +CT= 3fcfc589382d55e3894771a2ed0bbd83e88d4de4010f617325b692bc58c75d5d +TEST= 269 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 +CT= fec340ff96a51fdaaef809c474da02f1c4587ee5369195c030c6865bbb06d15a +TEST= 270 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 +CT= 2d9919e1e17d866c06224f3dd78f1498162cce233bf62b9a77c4049bb093dd8b +TEST= 271 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 +CT= b10e402d8693002117471f71bf28b400dee8f297424bc692cee4efe3a3db4753 +TEST= 272 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +CT= 0b3cae2f740d9e26d4c48ad50c2d437daaf7f3eece80bb33941b1b24043da1ec +TEST= 273 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 +CT= e65dd9f3453b9328e376b05f6cb2d801da87522081cd80f1c082c72ab6213bae +TEST= 274 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 +CT= 4897ad09b76bc5f3c581e114a89675ec5050dd748c20371b93c01e5a75b48c42 +TEST= 275 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 +CT= 2d8a85ca45e817552939464d6450197c78f1fa1d05d1981ca6dfe9718490117e +TEST= 276 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +CT= 6724359dcfc9073f0ff041880516168f1a04f798d4687af56663c7c3a3c6de7a +TEST= 277 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 +CT= bcee09955c98d72d45fc664f2b73abe68d1764b4280a909a7bb514541470b187 +TEST= 278 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 +CT= 929f64e1623b81498678f11e19d452eae6d01335c42138e2c789c970f0c0557f +TEST= 279 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 +CT= c50649cf8089602155bed586dbee1b3864cbd83f6ef87143c6167fbbf90da32e +TEST= 280 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +CT= f2957eb31bf398757a80e2dae34d030c6286d8cee219293a5e2dfc04cc49d5f8 +TEST= 281 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 +CT= d08da6be629c76270dc59a4054ad46196ca2ceb574d5c6d822faa1c828984a68 +TEST= 282 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 +CT= 2b52baf5a39fea23c5185585c066fbcaf8fe79c73f583e207861f43591b6bde3 +TEST= 283 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 +CT= fe1feae985e418f362f3642818c87ea0f798c9af5f26030d4e394334ef75b665 +TEST= 284 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 +CT= 182a5e69c2abeb0c482eec67d66a97dae1ea3e64497f080958e500817b7a8353 +TEST= 285 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 +CT= a749cfcb74d295e48e9bd6ffd7f0e7f177d36e9ecd36bfe0f4105d7f92b545e3 +TEST= 286 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 +CT= 162bb70f9f9e4ac558c05514ba980a01a46735c23f2251198caa81acccd364ef +TEST= 287 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 +CT= fde33d1f657ad4d8a76eb8ede5a3f359db573f97694ab383dc442f2710abcc9c +TEST= 288 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +CT= 5adfdaa9903c1098d931577b2d30647a88403583a0518b32f4a5e1bc73607930 +TEST= 289 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 +CT= 0dc5e772276c046e7dc6ea5f8c14469c7ec67f5d61bbb6a961504cb56aadd0e8 +TEST= 290 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +CT= 7a91541ba6a56fb5fd917e3b695ed87bfff1ac4d636468ab4b73d71979b556ad +TEST= 291 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 +CT= 32f185496baf1b64eed7a475aaff1fffb7c8bcdfd7160a8436fab2fc44e56890 +TEST= 292 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 +CT= ee1422d5b02d19f28cffbade8ce254e894a320eb61d57f3624d6c3557a17a8a8 +TEST= 293 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 +CT= 277ec5adb5e7bf49c6a2a7a5c3bfd2ca0e151819f6bf11e8e5c1405119b53fe8 +TEST= 294 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 +CT= aa5acf73d6e5694cab460624f61e22bf35e701b96134052f9f59b35436a0116a +TEST= 295 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 +CT= 80eb8933e123e2aba9a96e2595aa52ae2621e921f309e3643774ff0934c730fc +TEST= 296 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +CT= 535c9212c1a2f69529157f56a71a23ec6f6926fb38bb3351bfcc9e6b1d380c6a +TEST= 297 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 +CT= 58e223f249811042e9f3da8af7899f60d64be8d4eeb97764d6821e376f546c3b +TEST= 298 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +CT= 796ad1b9c7167f7efc0e673967df877a2c337deab99512e91bebd917c37c550f +TEST= 299 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 +CT= 6dfdd860f97d543976c31f7164fa3da2c96de995f060444d053bf2c2d599c605 +TEST= 300 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 +CT= 4fcacabce7cc685ef97dfac4b5fd006a6a7d3e80ac179be39ab15dfbe5aa218d +TEST= 301 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 +CT= e4919d54c0d5c769b22ec2d8a311aa8f9a9e2d2653a9adf20e61eb8bc8031e9d +TEST= 302 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 +CT= b614a88f5cc2f474f4f2d2fef1cd2c23d5e45ebc4cd1d6d21a03a32c1a459c94 +TEST= 303 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 +CT= fe25ae3bd1063cad3baa3a175e6f595aae38e4448b87ec7af13e856547a442fc +TEST= 304 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +CT= 27dac6d9e1105d5ebe4dd7d75593d1f1eb76a2b58562310dfb08c2a8f8661246 +TEST= 305 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 +CT= fe5a61be2ee493b5422c14c0f8eb6a54ce6040b02f06c6eb43d551f9cdc09801 +TEST= 306 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +CT= 4d1346c334c00493c1f18bff2a28ed737067645cb38b9ff2792693f16db2aaea +TEST= 307 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 +CT= 3ac5ef5a3b7bc16d1b64c73cb1163695ecaa6e5cb2b6dd657b8bf22182c549b8 +TEST= 308 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 +CT= da27733a1a0e8afb47a7a9825dd4c18f07f26504060d097f47fd40e8befc8f08 +TEST= 309 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 +CT= f2b64c3d07f87bed80c88280fd0337e3528b5851a2c3df75faabe1c2fb23530c +TEST= 310 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 +CT= ba39c003077193722436eba2a6f7d45b8e61ff0c15d90a52773b3bbc4cdde72e +TEST= 311 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 +CT= a464cd9fcbc9b1c48fb30ad2714e22122d51748a9187ccfea28fabed1233d1cb +TEST= 312 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 +CT= 4e03abce6ced75b08619b5dca7e42cf6c488e63f67e613e66c1105a93e206316 +TEST= 313 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 +CT= c0f3001c5c6acb028675e4ed823ea3f684e95b5d6a8ddef95895194da203104b +TEST= 314 +PT= fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 +CT= 7887d40cba66ab9d61389c3ac7920bff8cd25d652f160aed40916e54754834cd +TEST= 315 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 +CT= e8a1078def9f1a11873ab2bbcce5903427f159f0c17af6ad87ebfa65d8aa7619 +TEST= 316 +PT= fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 +CT= f2aa1e5d04b0824916cef9193b884674547418c34b2686229eabdde6b20b598a +TEST= 317 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 +CT= a1702d82e99ff5b3e1e8c2600cc72396fc0c92e6d3afd9c780d8f8965326d077 +TEST= 318 +PT= ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 +CT= d1ea4dd4d08a27e708344738a3ec2f1a96a71f3b7e318322b9a4de74fd2435d1 +TEST= 319 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 +CT= 4b09913c35afb0f69bdb5143c8887c33aee8bfbbaf989416069a02e11112a5bf +TEST= 320 +PT= ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +CT= b0ec5e123613a19fc4164311bd27e151fba91c0e0865ce36832ab7022be0c3ce +TEST= 321 +PT= fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 +CT= 3c4dc0636b34052e1adc0d2237a6ad35939bfd662ea4935e77cf835c0a5118f6 +TEST= 322 +PT= fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 +CT= c1474034864362a06d92015ffa13a7b5eb4a8b186716094b1a57eb0fa0c20144 +TEST= 323 +PT= fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 +CT= e8ab35a7392466b1519877683661c9b9c81e2590e3811020b7dd3544e8e87b00 +TEST= 324 +PT= fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 +CT= 1abcddbbf15386dc68a5c35688ca116bcb42804f5afd2aa75cc4ba08d0a63282 +TEST= 325 +PT= ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 +CT= 8be8ceaf35b969b10344fe8e108a170d85588ece41882a8c9864739484ea5579 +TEST= 326 +PT= ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 +CT= dd2cbc1076d2401ffbd49041ea3cce74e1d1a936f6741bd9a0eec589302be246 +TEST= 327 +PT= ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 +CT= dc20c5a394e39a4b1cd3673180d39b3bfb5e35fde443e8314fd1928a4e70deb4 +TEST= 328 +PT= ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +CT= 22407e1389bd00314db351ce484f142385e60a4e5bc58025b5a7f38baa74962a +TEST= 329 +PT= fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 +CT= 17e3d7fadfdbab73445045cc893d757a36406e394fe4756c787a3bdf2ede7c20 +TEST= 330 +PT= fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 +CT= 8420c1cd53ce008c88bab5740d6c36e4f04ea0590a35272671fb8663ae54f9bf +TEST= 331 +PT= fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 +CT= 19c1020ed44dd00cbdc50db50531bbca8c5a082d61f12f697473b3cee9465f12 +TEST= 332 +PT= fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 +CT= 2467f4b7281bbb2c241e9259d8454da59e75eb494447140e9df0dbb58ac0c81d +TEST= 333 +PT= ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 +CT= a79a53454bbd9ed0804f9d860743d9f0a2538194401e06c8c05d248cb956d21c +TEST= 334 +PT= ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 +CT= 6491aae58b4cac9252e122453d9674ff4d249cfeec3e742a3f25ac0f0e4682b9 +TEST= 335 +PT= ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 +CT= 766674c01cde120c4aa4ddfadfb76548c4ba232c4941c4d7bf2168b49264233e +TEST= 336 +PT= ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +CT= 20691faffb8c5a858e46dce48f29e69c40e81225743f1c1b8c8389babae8b9ee +TEST= 337 +PT= fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 +CT= e5279142df20568d8e0a3ac6f1ea71b01980aa651565f6aff1093735a7fa8efc +TEST= 338 +PT= fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 +CT= 376337e50f42af7daea72865edea7ed8191eb7da30550d86349a06c6851dca99 +TEST= 339 +PT= fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 +CT= 5b1875f00bca0da8fc11b3a44bc2a4d2f4ced544d6ffe3c90ca7ced9318defcc +TEST= 340 +PT= fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 +CT= 38a27e429b529f6776e946819cb98fb12f8d92e2d7c9b0adbf22d8a6078d07e6 +TEST= 341 +PT= ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 +CT= 3086ad4f3ce2945c5ff3e88a91fac36e23e2003641df37bbe99137c1c7110fb1 +TEST= 342 +PT= ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 +CT= 0ff5a884256258d99f267f1cd2ffdd95bf1be8471f391f3047a5a765f421b4f9 +TEST= 343 +PT= ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 +CT= 9484260242db89dbd32a40e6993ef20fd0557250b81f7b76d0877e345720eab8 +TEST= 344 +PT= ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +CT= b5b556f04e137408539622cd8084579299764462658265a57004351944b5a498 +TEST= 345 +PT= fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 +CT= fff9bc74e4dbe5c75667d107db961bdc1a2f5b867041d8c1f83778f208a49727 +TEST= 346 +PT= fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 +CT= 8c11645080c51db24a92cb1036b9ce89f77cc9bad8914afbb1e0b20b0b0e3d11 +TEST= 347 +PT= fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 +CT= 95c23eed89c5809af7766eb705a0a842950afe5700437fe2e21f4f663df1984e +TEST= 348 +PT= fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 +CT= 3f2110e263adc4c53b360acd726ba676e27c50970c8d9eedd85ac0abbd047b4d +TEST= 349 +PT= ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 +CT= 14b37a9bc283a55630ab064e7bda9fd62129596235207d2cb6f5e42302ca1d8b +TEST= 350 +PT= ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 +CT= 15a464a14dd383b5d5a7ae336f6c6d19354d4856486d6b5aac3eed76820d8e92 +TEST= 351 +PT= ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 +CT= b6a78d8fc1ac4872f165b8b0f296ebc27f87abc9fe5c729a99469732e8de35ea +TEST= 352 +PT= ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +CT= 3e7550125581844d8a58da1274b1262a4134eea9297692e64653b6d9d1f3e82d +TEST= 353 +PT= fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 +CT= 3e13d6bf316d6a1427e8c834f99831f3375077a05080aad71a556af49035ce11 +TEST= 354 +PT= fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 +CT= 2346553b61606b02ddfccddd41171c12ed0d888781fc9d0bcd5278e3a4dce26f +TEST= 355 +PT= fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 +CT= 48fab648f17219a9528ddd7d1afa03201178a05a6aee9a9486b8414ecd72cba6 +TEST= 356 +PT= fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 +CT= 328979995db3ba73de2e555531fc6c273d75566bd8154eb9ac28dcffeb4602b0 +TEST= 357 +PT= ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 +CT= b13d6b9745ee95f4552c00b8df43018513cfa423cdeb269a7b66b0e52b7d9106 +TEST= 358 +PT= ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 +CT= 79e93e7ccdcf097bd50bebf1641d72d8a3534d1762b56d4438736d830239d858 +TEST= 359 +PT= ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 +CT= dfa8ecdc454186b8eee4a47c848a0ad4d6c883ee2e3772e44be772a237d116ac +TEST= 360 +PT= ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +CT= 443945393c70d02daa3b925b762d57c7ada373dce398dd7cb3af3392a5f86d8a +TEST= 361 +PT= fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 +CT= 6b0e515892d18581ca360f7a9fbece8c82b1e4ce50fe47b1dcec105c10425695 +TEST= 362 +PT= fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 +CT= 7b61b94cb95ba0cc3702e390e76c428265e5e79d1c57f42448bc86dab7ab3213 +TEST= 363 +PT= fffffffffffffffffffffffffffffffffffff800000000000000000000000000 +CT= f0128bbd3309e6a10c0be3f24d1d387d675a1d63b9982735633e52f5b0f1eabb +TEST= 364 +PT= fffffffffffffffffffffffffffffffffffff000000000000000000000000000 +CT= 91b6fda0a01d5020fec0b148e916a170a09f69467b99130e07b7c81f59fad167 +TEST= 365 +PT= ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 +CT= aa3dd1d15cb75ba29ae77b5767e24277e4699ac7530b1bffe90abfa0a7534011 +TEST= 366 +PT= ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 +CT= 36e29b987f585c6e45dc57714d93ce87e8aa8cfd99bef4603ab0ba6d9ff33bd0 +TEST= 367 +PT= ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 +CT= d7f443564a18c95f367abf2c613641cf4a62f9e40a9a7685fb6253c0adf8cbec +TEST= 368 +PT= ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +CT= 0780c917e77fb3aef974bf8e8ade69fe4e31febeb86313f4c7032d54a0015ebe +TEST= 369 +PT= fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 +CT= 06ea4cb9b6b6d47a2813e7e51e1a8d1df47f160a2f9c539daec7f81915c456ae +TEST= 370 +PT= fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 +CT= 1491d2f47f1185b1eb354cf48af672d8c07473e128bb66a4d7f4fbc9bcb61e66 +TEST= 371 +PT= fffffffffffffffffffffffffffffffffff80000000000000000000000000000 +CT= 7445b151acac4ee16481b08f620ebe45209c2c9bbade9b99bc2eae83305674a2 +TEST= 372 +PT= fffffffffffffffffffffffffffffffffff00000000000000000000000000000 +CT= 4f35f65d37075d5c560887a6c195eb90c6a9ad32c47d52f1e55a48b338641d4b +TEST= 373 +PT= ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 +CT= 9e3a6bc72c64daa16c54267943efdf39c5c1bb450ae8d10a73b52a6a500bab7b +TEST= 374 +PT= ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 +CT= 2551e2c8cd5130a323f8909a01fa4bc4655e3c182c9c4ef80c53b2ae8b600978 +TEST= 375 +PT= ffffffffffffffffffffffffffffffffff800000000000000000000000000000 +CT= 3761ca92096df9a1eff613516b8f80d929af7b35b6546f897c913af83b86077e +TEST= 376 +PT= ffffffffffffffffffffffffffffffffff000000000000000000000000000000 +CT= 61fa7958067c68dd8a6691bf8f5246a6dfc3650a1736a766f370433addf4de20 +TEST= 377 +PT= fffffffffffffffffffffffffffffffffe000000000000000000000000000000 +CT= a89b29b26279a73c41fa2ce8708721b77fab67cc8d6ac72624af752f58725c43 +TEST= 378 +PT= fffffffffffffffffffffffffffffffffc000000000000000000000000000000 +CT= 015b1db423080be02ad9e33fdceeb6d6b3762326a46a5993ff68cf7da28d5021 +TEST= 379 +PT= fffffffffffffffffffffffffffffffff8000000000000000000000000000000 +CT= f7f3060a6bea28c2ca843c7f0dbdb633930cb1dd3fbc8b06c6b970ec134366a8 +TEST= 380 +PT= fffffffffffffffffffffffffffffffff0000000000000000000000000000000 +CT= 761b8ec25e9fd9fca83f420028acca5bcfdd7505e1cc4369a06f920970843634 +TEST= 381 +PT= ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 +CT= 18ee3e95e58877f958bb9645b566a0e5d55c6df0c25eb4be517806ef08bf05a6 +TEST= 382 +PT= ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 +CT= 1f886774a3b8b087ee633ff4a330dafae9d6b67d2c516666c86040efd31445a7 +TEST= 383 +PT= ffffffffffffffffffffffffffffffff80000000000000000000000000000000 +CT= 57dede793e1000cb2b76f34cc1e37b65d893e15491919a27fc07683729209486 +TEST= 384 +PT= ffffffffffffffffffffffffffffffff00000000000000000000000000000000 +CT= edfe49af56144bb3331cfa2aab00cdbaf41edb7c64b4f8a074bf365610d85a80 +TEST= 385 +PT= fffffffffffffffffffffffffffffffe00000000000000000000000000000000 +CT= 5a2b795864cbb4de9b9fd85c9738a5e810c7d280eaf8835a47f13b47f412aada +TEST= 386 +PT= fffffffffffffffffffffffffffffffc00000000000000000000000000000000 +CT= e61bd1598e653d2cdb01bbe575ae3981d3d484b2a613cac36b0d192b832bce9f +TEST= 387 +PT= fffffffffffffffffffffffffffffff800000000000000000000000000000000 +CT= 7175ce5b1a82ce09c1c74f42af6fb77b8f85f680569342e288727454aa633fa3 +TEST= 388 +PT= fffffffffffffffffffffffffffffff000000000000000000000000000000000 +CT= 2d1707fe886b76b29446be6a189aefeb7a52999046e6a8677db0aff4009946d1 +TEST= 389 +PT= ffffffffffffffffffffffffffffffe000000000000000000000000000000000 +CT= c42e3edcc722e0e7140b1c7070ddb84f2c43067d1cdb8364cebdce805a82ce82 +TEST= 390 +PT= ffffffffffffffffffffffffffffffc000000000000000000000000000000000 +CT= b882877e851d7efdd38d3141386e68c3ca86e771a591bda6321dd4cd8ae10028 +TEST= 391 +PT= ffffffffffffffffffffffffffffff8000000000000000000000000000000000 +CT= 0e4883403565e5724ab80c893cb07c7843c1e74e678371329ebf9d149dcee477 +TEST= 392 +PT= ffffffffffffffffffffffffffffff0000000000000000000000000000000000 +CT= 532679ce9095e99ae926cdc97cdee07f2ab40e3faf114e29083c16b699cfb598 +TEST= 393 +PT= fffffffffffffffffffffffffffffe0000000000000000000000000000000000 +CT= fb762e73229b0428418d4aead550fa021f9d26fd4826f12a13a1df9c1b02fbd9 +TEST= 394 +PT= fffffffffffffffffffffffffffffc0000000000000000000000000000000000 +CT= 0c0e9d27ce40735ee05d8af39283fdefb635eef36b37657ae5168c5055ad288a +TEST= 395 +PT= fffffffffffffffffffffffffffff80000000000000000000000000000000000 +CT= 055a5caa2bb63b8d8417a9bccd47f8e10199487a067093727ab305d8edd4e308 +TEST= 396 +PT= fffffffffffffffffffffffffffff00000000000000000000000000000000000 +CT= 990305bbe181202408531ec1314437ef734e9800d51fbd361c60fe78c12338f4 +TEST= 397 +PT= ffffffffffffffffffffffffffffe00000000000000000000000000000000000 +CT= 63ed431bc894f49c5e452e0a7c4446766ec54445595b9498c7c433cb312d93c5 +TEST= 398 +PT= ffffffffffffffffffffffffffffc00000000000000000000000000000000000 +CT= 64e7806e7d7ecb687a3da6502d9beea9f675e2fa202c95fd9d2e396a6c0edde9 +TEST= 399 +PT= ffffffffffffffffffffffffffff800000000000000000000000000000000000 +CT= e9c1dc24d2fa69d044b36b0a11ec0fa110842642f5e67e76ea371d410e1a7cf1 +TEST= 400 +PT= ffffffffffffffffffffffffffff000000000000000000000000000000000000 +CT= 946947e3a5dc72143dc57bfcc7539e884d7ce99957bf83c27e326c669e1d2222 +TEST= 401 +PT= fffffffffffffffffffffffffffe000000000000000000000000000000000000 +CT= 862f6989c74d856013a8f7955c0aa58ba1229473682b3e6ffd24f07435afc15b +TEST= 402 +PT= fffffffffffffffffffffffffffc000000000000000000000000000000000000 +CT= b15ab2b9ba7055322de8f46bd527b073305c69eb9f81fee72028fd9cc707f4d6 +TEST= 403 +PT= fffffffffffffffffffffffffff8000000000000000000000000000000000000 +CT= 980703b868335aab9c7ff47f535be56b3e1241b923d85d26b222be27f51c17c2 +TEST= 404 +PT= fffffffffffffffffffffffffff0000000000000000000000000000000000000 +CT= a9d7a48a35b61ac5201972950a4f88cb95a91b7337c21175411f26ef369643f8 +TEST= 405 +PT= ffffffffffffffffffffffffffe0000000000000000000000000000000000000 +CT= 32f4bfc54cb618ef9d9115695655a048381cae91e1460f6f8ffb2be65eb5dd59 +TEST= 406 +PT= ffffffffffffffffffffffffffc0000000000000000000000000000000000000 +CT= 8ae3ffdd40274c153c620735cf622f4bff6fce9b7596cc30ad17f6c02c805461 +TEST= 407 +PT= ffffffffffffffffffffffffff80000000000000000000000000000000000000 +CT= 244bff296217db731a4b97b2a691e8e5f2e480537619249c5b696b36c48f3a35 +TEST= 408 +PT= ffffffffffffffffffffffffff00000000000000000000000000000000000000 +CT= ba79bebf70c997327bc83cfdbede2f7d5a7d190fbbe9b01e0175ab09cc9933be +TEST= 409 +PT= fffffffffffffffffffffffffe00000000000000000000000000000000000000 +CT= 1bcf2535e103d9ac8c85c03d98710383babbda31efa86d4721517562d307f30c +TEST= 410 +PT= fffffffffffffffffffffffffc00000000000000000000000000000000000000 +CT= c4b3f7355fd13f578b322f5e2ab09f9bf9496fea31a70e666a8d332709c16022 +TEST= 411 +PT= fffffffffffffffffffffffff800000000000000000000000000000000000000 +CT= 6d234cd80f6f84d22166990412e166c7fae57b0c1d582db7c3c5f31db392ab5c +TEST= 412 +PT= fffffffffffffffffffffffff000000000000000000000000000000000000000 +CT= 8efe4756b15dd1cc61982ac615964006a5b3d7d9a54e96477c80451c7b2ebb83 +TEST= 413 +PT= ffffffffffffffffffffffffe000000000000000000000000000000000000000 +CT= 8505af98dff74429e6ffc058045f1d532326d27f143cf5dd2245e5661c02baf5 +TEST= 414 +PT= ffffffffffffffffffffffffc000000000000000000000000000000000000000 +CT= 9c685f5158ed8786048af8072e91c8824641c49793d2c8361894898a25985d0e +TEST= 415 +PT= ffffffffffffffffffffffff8000000000000000000000000000000000000000 +CT= 56d947b3e171cbfb0d7e96a80d0f899e8ae89505b2a6c57851c5e7df0e63fed0 +TEST= 416 +PT= ffffffffffffffffffffffff0000000000000000000000000000000000000000 +CT= 17d6a4ed362b78849e1920dbba5b56a2f02cd9501882695785d0ff1935582bd6 +TEST= 417 +PT= fffffffffffffffffffffffe0000000000000000000000000000000000000000 +CT= d6ab26fb7fbaebe6e2a1e9091b98be4b2a7798c80a57ace8ab17834e69cf0414 +TEST= 418 +PT= fffffffffffffffffffffffc0000000000000000000000000000000000000000 +CT= 0cea61a2d17d2499a7bf44ca6a0883d18ec6a66ef550a04ba833dc1abc57e038 +TEST= 419 +PT= fffffffffffffffffffffff80000000000000000000000000000000000000000 +CT= db6ee5c1d514f981cf72e70af58fc25597d1a75f13ecb9fa4b1cc2d05b4d7802 +TEST= 420 +PT= fffffffffffffffffffffff00000000000000000000000000000000000000000 +CT= 59596d58c8d9ed76351ced271b508c5d088e8000818bc1cd5cbb9e19d1850d8f +TEST= 421 +PT= ffffffffffffffffffffffe00000000000000000000000000000000000000000 +CT= 5a8b304b931648928ef699045d9825046ad930c7f854768ceb56085bcaece8e1 +TEST= 422 +PT= ffffffffffffffffffffffc00000000000000000000000000000000000000000 +CT= a3105356f9623c6ff6539af2d7b6d3d42139fa533fdc5fe702b5320da6b1aa5b +TEST= 423 +PT= ffffffffffffffffffffff800000000000000000000000000000000000000000 +CT= 6954980e84c8c148e7dac03f0524a92ba4d69c9b2ab2c3f739730c2e838398a4 +TEST= 424 +PT= ffffffffffffffffffffff000000000000000000000000000000000000000000 +CT= 87672c673fd8cba725d7aeb510424741950a1f4ded36089a23280dd7b2d83c27 +TEST= 425 +PT= fffffffffffffffffffffe000000000000000000000000000000000000000000 +CT= 5d1dff19044f5c6aa0046b9af3a774b2d673b9409bea924c198880922fbded1e +TEST= 426 +PT= fffffffffffffffffffffc000000000000000000000000000000000000000000 +CT= 362b96e1ddd5b2e882f4c08a7230ccb0c990b5119051fb63e46567a4a7cdbb52 +TEST= 427 +PT= fffffffffffffffffffff8000000000000000000000000000000000000000000 +CT= 1f380cd7500ac2c48d669422b3a7cd16d1efc8f8f8a44a059303e2d31bd48b08 +TEST= 428 +PT= fffffffffffffffffffff0000000000000000000000000000000000000000000 +CT= 97ac48db94c3bb2e0cf92565c6f367407fa78ad4fd358266a7c1826ccac172e0 +TEST= 429 +PT= ffffffffffffffffffffe0000000000000000000000000000000000000000000 +CT= 36859d4326564a5679ba5fa4c400afa4046a92db56f48c2177f0f69584eb0823 +TEST= 430 +PT= ffffffffffffffffffffc0000000000000000000000000000000000000000000 +CT= 92d53e4cfc35e219e1e1bc70b3bc9936335ce75fa2578ad3be9655f0fa139873 +TEST= 431 +PT= ffffffffffffffffffff80000000000000000000000000000000000000000000 +CT= 835ba5d6a3e907dcf7883b05ea56e00b02ea8e35ca5634c49e5cf37f3234c920 +TEST= 432 +PT= ffffffffffffffffffff00000000000000000000000000000000000000000000 +CT= 04f7d28c55b85f2913a2486f1daa3f11c1ccf2d423f16bbd17032dbb6acbb427 +TEST= 433 +PT= fffffffffffffffffffe00000000000000000000000000000000000000000000 +CT= 2774e837f02fbb85c453e9df5a39adb63cfffc82330915dbc6fdd54e57e6fa78 +TEST= 434 +PT= fffffffffffffffffffc00000000000000000000000000000000000000000000 +CT= 8313e9b7fb9c0eda65a07a4239a8f793457189c3075cc9e7fc676eefae21cdca +TEST= 435 +PT= fffffffffffffffffff800000000000000000000000000000000000000000000 +CT= c9d16587e161e8b65dc1b74f4577a2f386e6180d4af82a1a58e7759bec4280e9 +TEST= 436 +PT= fffffffffffffffffff000000000000000000000000000000000000000000000 +CT= c2010ad3fd4d4e3759066c4e864040a63a60f588ec3dcdec17a8976a8b61a2ae +TEST= 437 +PT= ffffffffffffffffffe000000000000000000000000000000000000000000000 +CT= 259f0f9b1176b045db17455559e01087f87fec1e0ab1dc14ff79d792f06d28f0 +TEST= 438 +PT= ffffffffffffffffffc000000000000000000000000000000000000000000000 +CT= eec1d5fa4d447dbfd5bbe5391ff7d957f1f81ea35e978b1d0718ea2a03ec74e9 +TEST= 439 +PT= ffffffffffffffffff8000000000000000000000000000000000000000000000 +CT= dbcf8bf8fd9b549ca61191511457453eb9633021fece8e4d70361a174be8e769 +TEST= 440 +PT= ffffffffffffffffff0000000000000000000000000000000000000000000000 +CT= b9c234fd9d2f26d1c4e9c9edfc055c994c3334e2f87c2fcffd1d92d3c00a89c4 +TEST= 441 +PT= fffffffffffffffffe0000000000000000000000000000000000000000000000 +CT= d795accd989bafc7b38370261a526f6ecfa7f798c60ef4269a8358a27b9d0493 +TEST= 442 +PT= fffffffffffffffffc0000000000000000000000000000000000000000000000 +CT= 1c4e9a2b5b7cb055875bf2d31c87778d139fc3fa6196cd805d8509ccd180a0fc +TEST= 443 +PT= fffffffffffffffff80000000000000000000000000000000000000000000000 +CT= e2bf727c5d47190be33932a34d0744999e88d5fa6038267f6a77b4922520377e +TEST= 444 +PT= fffffffffffffffff00000000000000000000000000000000000000000000000 +CT= 8eef6f85d1c020b3d541abbe1ca67280c8dc6d519ed366dcbe3486c230112dc5 +TEST= 445 +PT= ffffffffffffffffe00000000000000000000000000000000000000000000000 +CT= b42b9e3df93a24ddb288d8cfbc3b7aacba7058e56bd63e2b22b50ce9ce19b0f1 +TEST= 446 +PT= ffffffffffffffffc00000000000000000000000000000000000000000000000 +CT= 881cd32640226efdcc9f559e41b1039684d895abf907281770bf2a4031de8956 +TEST= 447 +PT= ffffffffffffffff800000000000000000000000000000000000000000000000 +CT= 48edf7f4a1d004954215bf0b639657b1e35004e1f9ce8b459fe2009265d3cc0f +TEST= 448 +PT= ffffffffffffffff000000000000000000000000000000000000000000000000 +CT= 95fa6f8f19a528b6b203d39f2c5ea4a9bb5456355c54e530c781eec273168e8f +TEST= 449 +PT= fffffffffffffffe000000000000000000000000000000000000000000000000 +CT= c827eb8d3c34a0ca3cc2acf267d2e589b5cf7269a7d870bc1a38b1cd548b66f9 +TEST= 450 +PT= fffffffffffffffc000000000000000000000000000000000000000000000000 +CT= 4b0d9ce9e244485948bc89c0a06e47311a78e892d5dbaeaea3a34d86f17f0291 +TEST= 451 +PT= fffffffffffffff8000000000000000000000000000000000000000000000000 +CT= 157e3fe9fce17941ffa9bd284ca1359f7d7ec703dfe31bddb10c525cf795869b +TEST= 452 +PT= fffffffffffffff0000000000000000000000000000000000000000000000000 +CT= 637a27cb6909be4e7fccaef9f1f51bb20e9fe185c88a2ddd6b41cf465829bf4d +TEST= 453 +PT= ffffffffffffffe0000000000000000000000000000000000000000000000000 +CT= c2ba571fa215fbdac96eaca45ba4513edd969d30cf0134271a7d92f48e4365d0 +TEST= 454 +PT= ffffffffffffffc0000000000000000000000000000000000000000000000000 +CT= 5f46bdb7444b82243551af3664617b408a5178f3597f23c8e9b185b339ec4884 +TEST= 455 +PT= ffffffffffffff80000000000000000000000000000000000000000000000000 +CT= f548346ceb7ba6d4a001e7701158247c91c56110fbce20db2e2c736609f9b126 +TEST= 456 +PT= ffffffffffffff00000000000000000000000000000000000000000000000000 +CT= 67a47756904595088cff28a04ee2cfdcca7a19a1439123c3326b62815c5e1452 +TEST= 457 +PT= fffffffffffffe00000000000000000000000000000000000000000000000000 +CT= e789b07f02cff8e2ac75830c1fd20199cc3a20208b99b847ca0a8235afb9c764 +TEST= 458 +PT= fffffffffffffc00000000000000000000000000000000000000000000000000 +CT= d52e599f6512ccc69126bb057a223124ad8df75295444335a722e8b439338757 +TEST= 459 +PT= fffffffffffff800000000000000000000000000000000000000000000000000 +CT= dee0a48a1ace71b839b70adc2bce5c46701c4ae59a0917d84b11d1c4127c89ae +TEST= 460 +PT= fffffffffffff000000000000000000000000000000000000000000000000000 +CT= 03f5e4118a2062485599e5136fa71831edcfbab42e7a195cacaecf5fbd1a30a5 +TEST= 461 +PT= ffffffffffffe000000000000000000000000000000000000000000000000000 +CT= f260a97227c4b715d1f50647905ac2123a2c1da21ef64d6cfeef49963664d4c2 +TEST= 462 +PT= ffffffffffffc000000000000000000000000000000000000000000000000000 +CT= bd3b07c9a9f27fba20667f4ec901e040d7fee5c3f1376e92b2ad4e1f8be07a0a +TEST= 463 +PT= ffffffffffff8000000000000000000000000000000000000000000000000000 +CT= a85f319c8774741415274c5fed6f3255e3954dd5ee5d17033c4b535647258043 +TEST= 464 +PT= ffffffffffff0000000000000000000000000000000000000000000000000000 +CT= 17b29a93c3538b48415a763f4a8bcc0c1c64b6c8afca45d55d2ab9a13eb097a1 +TEST= 465 +PT= fffffffffffe0000000000000000000000000000000000000000000000000000 +CT= 0172ddea2d505b294c945612348c685809896492b8236c4b78f6222549a09903 +TEST= 466 +PT= fffffffffffc0000000000000000000000000000000000000000000000000000 +CT= ef6835359cb869d52e37bbd79e0f2e7e3f9c19279d0252f3b7cc9284053a20fe +TEST= 467 +PT= fffffffffff80000000000000000000000000000000000000000000000000000 +CT= a877159594ce436cf8b4136a13d8800594ef331811e75624b689cb031564c04a +TEST= 468 +PT= fffffffffff00000000000000000000000000000000000000000000000000000 +CT= 0e48d4d6d5be8f094238114a6a4bd0a4260eac8280455568dace35fa64b658c9 +TEST= 469 +PT= ffffffffffe00000000000000000000000000000000000000000000000000000 +CT= ad8903dfc2e84b0ff8e3c8c8125e591724eba3d307997990ec5aa813df97a7f3 +TEST= 470 +PT= ffffffffffc00000000000000000000000000000000000000000000000000000 +CT= 722fb5e1e5fc072fcd32b218de0c2898fe1409f7f46303baa3801df23a0b50da +TEST= 471 +PT= ffffffffff800000000000000000000000000000000000000000000000000000 +CT= 6ad546a7ed16f514c13ed86c50ed0a1d7dedce1fb08a23744d26683a183a91b2 +TEST= 472 +PT= ffffffffff000000000000000000000000000000000000000000000000000000 +CT= 0016a7c0eb4c1fcfdb46de37529a728394225d744594d173123bf961e23cf442 +TEST= 473 +PT= fffffffffe000000000000000000000000000000000000000000000000000000 +CT= 4eb25bb10178ed70aefbf4252cd7b174c45b589981ac9471ebfd3dbf76369cec +TEST= 474 +PT= fffffffffc000000000000000000000000000000000000000000000000000000 +CT= 8caa6108033ca15d0f47fd77191b6b85b4aefeff20b102417d0df07a83e89eea +TEST= 475 +PT= fffffffff8000000000000000000000000000000000000000000000000000000 +CT= 0bc744c8d2b8e43127235881cf049c8a345c883b33876b0a3d49909ce3497a1f +TEST= 476 +PT= fffffffff0000000000000000000000000000000000000000000000000000000 +CT= 87bec4c8f01612dad32ded4ce2f29e5caf6a2d5669cc4beb9f241727e1850512 +TEST= 477 +PT= ffffffffe0000000000000000000000000000000000000000000000000000000 +CT= fea865b4112cf65bc5d87cd51e139bc2b8f8433d58a2b1e5e76973791d744878 +TEST= 478 +PT= ffffffffc0000000000000000000000000000000000000000000000000000000 +CT= 1250fe007d19ac3de44b899923b38a2bac8a4b7ecc6dca01dbfdc6ece8178419 +TEST= 479 +PT= ffffffff80000000000000000000000000000000000000000000000000000000 +CT= c48f497a39c62bfc75730150a7f96af98eed012937ec2848f06a1a2238674892 +TEST= 480 +PT= ffffffff00000000000000000000000000000000000000000000000000000000 +CT= 4f9912dc73834d765dd857b8fefe0f1dc0bd2798a1de0600b5aa63eaf67bd10b +TEST= 481 +PT= fffffffe00000000000000000000000000000000000000000000000000000000 +CT= a6334cf20d8eb781bf6c3f57f9aa55c4148a42d233938d2cdaf9ffdef56db163 +TEST= 482 +PT= fffffffc00000000000000000000000000000000000000000000000000000000 +CT= 8e8d674df2e80b261a50eea6abb305e7184a39b249070eea2245b046d0f4af8a +TEST= 483 +PT= fffffff800000000000000000000000000000000000000000000000000000000 +CT= 1eba4aa01180e89da23c175670f043ec8a09da7402c5e66f2c9ff8538f200a3d +TEST= 484 +PT= fffffff000000000000000000000000000000000000000000000000000000000 +CT= 80e0656951b9762f25153de4ba0235b93a1e35905e685aecfc31da812857a03f +TEST= 485 +PT= ffffffe000000000000000000000000000000000000000000000000000000000 +CT= fc135805cc1920b02912403c40e4ec3969ffb2484fcca65da91793ac6883e6d9 +TEST= 486 +PT= ffffffc000000000000000000000000000000000000000000000000000000000 +CT= abcf4c34d98b88d7972044c22c582672a357a423dfa4115c0bc861b52eab772d +TEST= 487 +PT= ffffff8000000000000000000000000000000000000000000000000000000000 +CT= 00910e1caeaad4ad67f205009e0058ce7822f4d707cdc9110e17da39b7ac9228 +TEST= 488 +PT= ffffff0000000000000000000000000000000000000000000000000000000000 +CT= ee82a49520ddd40f5305f80a7959f74f7d9586938572ec38f9b3dc5132ad8f0d +TEST= 489 +PT= fffffe0000000000000000000000000000000000000000000000000000000000 +CT= a8ad9068f356db62a41bf19af0ecea33f7a528134eb5a39368d947516cdf5b3a +TEST= 490 +PT= fffffc0000000000000000000000000000000000000000000000000000000000 +CT= c6b7f3b5909d1a2f7d21ffeab8e39b786f460e9af3d3bac92ec5e5e469443987 +TEST= 491 +PT= fffff80000000000000000000000000000000000000000000000000000000000 +CT= edb86d86d1c635c76f9403f31a204d52a5371e2a3a2145275422addb0d08eed4 +TEST= 492 +PT= fffff00000000000000000000000000000000000000000000000000000000000 +CT= a44469cc6cf329a3ab99326b4ebab67fe078b3190806ff6e496b1215ac3acb27 +TEST= 493 +PT= ffffe00000000000000000000000000000000000000000000000000000000000 +CT= 8e2a29db49aed625ce9801a8038158b8efd7290a56cae350594a239bee7361ba +TEST= 494 +PT= ffffc00000000000000000000000000000000000000000000000000000000000 +CT= 97f80d80af578c6bd8d8925f1d13196a4ee1c85e4b435ae83e9a3f55413110ce +TEST= 495 +PT= ffff800000000000000000000000000000000000000000000000000000000000 +CT= aaca7e219f3886c7f0c6a455d5738912a6d476d92d3f56943e4e82faeb1234a4 +TEST= 496 +PT= ffff000000000000000000000000000000000000000000000000000000000000 +CT= edb6854353b89e4e569ce3776b318e73926b5874b08763f48ac04e80e9398f0c +TEST= 497 +PT= fffe000000000000000000000000000000000000000000000000000000000000 +CT= 67be0bbac4877b1b6d55b4f98762a5b007c4569bd11cf3818164ded967a363d6 +TEST= 498 +PT= fffc000000000000000000000000000000000000000000000000000000000000 +CT= 406aae3d3cb63c79b69d5d0c5c8709eb0e504112c27efaea975389d3bd3b9128 +TEST= 499 +PT= fff8000000000000000000000000000000000000000000000000000000000000 +CT= 1e822516a7513f01b1d7773f0230579dd20fcb32178830acb3819dd56c6ca314 +TEST= 500 +PT= fff0000000000000000000000000000000000000000000000000000000000000 +CT= 17ca6bdf017cb102256cd5ba1a81d12d8e5a5f101931a1e227a05376e550f395 +TEST= 501 +PT= ffe0000000000000000000000000000000000000000000000000000000000000 +CT= 29dbf858b089509b837b54efb9a2faa38fb48474e16a3c45c99d34136ae51864 +TEST= 502 +PT= ffc0000000000000000000000000000000000000000000000000000000000000 +CT= 75db2277b0bc900d4d66d332c7e8237159dbaf78f7632fabee0fd7df1fee567d +TEST= 503 +PT= ff80000000000000000000000000000000000000000000000000000000000000 +CT= 9b8f32f0e9b4f455248f4853da56c21a6d1accb68feb8ec70804cfbd3c754b0f +TEST= 504 +PT= ff00000000000000000000000000000000000000000000000000000000000000 +CT= 64b5583093900aaf0386b98fe94f06c03a413c7337cf3eee216a2fee1de3e24a +TEST= 505 +PT= fe00000000000000000000000000000000000000000000000000000000000000 +CT= 82a4721c10d5a1a9997fb61eb5d6a8ead01f526f9ace278461e652105bfff72c +TEST= 506 +PT= fc00000000000000000000000000000000000000000000000000000000000000 +CT= bfc73fcb537f27b99566e09373109dc48e2185abfeec25d960fc17e5f8e0824b +TEST= 507 +PT= f800000000000000000000000000000000000000000000000000000000000000 +CT= aa49d10142579512192868b08d9cfa3771df41fc1dcceab3be1a0a7b230d7d1f +TEST= 508 +PT= f000000000000000000000000000000000000000000000000000000000000000 +CT= 4ed02267106e06c6426edfdcb7ccd5f4e4509ea85e6eaeafe413dbae881c90a0 +TEST= 509 +PT= e000000000000000000000000000000000000000000000000000000000000000 +CT= 734f91bf41643b3022a26585598b841256e866a2c46e8c3a0f0aa03a4debf2ac +TEST= 510 +PT= c000000000000000000000000000000000000000000000000000000000000000 +CT= 7bc205c8309d8a0a0a0ac487bd67ef67fb9b74609e0778648b689973e736736f +TEST= 511 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 159a08e46e616e6e9978502010daff922eb362e77dcaaf02eaeb7354eb8b8dba diff --git a/flint/test/testvals/ecbvk44.txt b/flint/test/testvals/ecbvk44.txt new file mode 100644 index 0000000..6a11fea --- /dev/null +++ b/flint/test/testvals/ecbvk44.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= 66e94bd4ef8a2c3b884cfa59ca342b2e +TEST= 1 +KEY= 80000000000000000000000000000000 +CT= 0edd33d3c621e546455bd8ba1418bec8 +TEST= 2 +KEY= 40000000000000000000000000000000 +CT= c0cc0c5da5bd63acd44a80774fad5222 +TEST= 3 +KEY= 20000000000000000000000000000000 +CT= 2f0b4b71bc77851b9ca56d42eb8ff080 +TEST= 4 +KEY= 10000000000000000000000000000000 +CT= 6b1e2fffe8a114009d8fe22f6db5f876 +TEST= 5 +KEY= 08000000000000000000000000000000 +CT= 9aa042c315f94cbb97b62202f83358f5 +TEST= 6 +KEY= 04000000000000000000000000000000 +CT= dbe01de67e346a800c4c4b4880311de4 +TEST= 7 +KEY= 02000000000000000000000000000000 +CT= c117d2238d53836acd92ddcdb85d6a21 +TEST= 8 +KEY= 01000000000000000000000000000000 +CT= dc0ed85df9611abb7249cdd168c5467e +TEST= 9 +KEY= 00800000000000000000000000000000 +CT= 807d678fff1f56fa92de3381904842f2 +TEST= 10 +KEY= 00400000000000000000000000000000 +CT= 0e53b3fcad8e4b130ef73aeb957fb402 +TEST= 11 +KEY= 00200000000000000000000000000000 +CT= 969ffd3b7c35439417e7bde923035d65 +TEST= 12 +KEY= 00100000000000000000000000000000 +CT= a99b512c19ca56070491166a1503bf15 +TEST= 13 +KEY= 00080000000000000000000000000000 +CT= 6e9985252126ee344d26ae369d2327e3 +TEST= 14 +KEY= 00040000000000000000000000000000 +CT= b85f4809f904c275491fcdcd1610387e +TEST= 15 +KEY= 00020000000000000000000000000000 +CT= ed365b8d7d20c1f5d53fb94dd211df7b +TEST= 16 +KEY= 00010000000000000000000000000000 +CT= b3a575e86a8db4a7135d604c43304896 +TEST= 17 +KEY= 00008000000000000000000000000000 +CT= 89704bcb8e69f846259eb0accbc7f8a2 +TEST= 18 +KEY= 00004000000000000000000000000000 +CT= c56ee7c92197861f10d7a92b90882055 +TEST= 19 +KEY= 00002000000000000000000000000000 +CT= 92f296f6846e0eaf9422a5a24a08b069 +TEST= 20 +KEY= 00001000000000000000000000000000 +CT= e67e32bb8f11deb8699318bee9e91a60 +TEST= 21 +KEY= 00000800000000000000000000000000 +CT= b08eef85eaf626dd91b65c4c3a97d92b +TEST= 22 +KEY= 00000400000000000000000000000000 +CT= 661083a6addce79bb4e0859ab5538013 +TEST= 23 +KEY= 00000200000000000000000000000000 +CT= 55dfe2941e0eb10afc0b333bd34de1fe +TEST= 24 +KEY= 00000100000000000000000000000000 +CT= 6bfe5945e715c9662609770f8846087a +TEST= 25 +KEY= 00000080000000000000000000000000 +CT= 79848e9c30c2f8cda8b325f7fed2b139 +TEST= 26 +KEY= 00000040000000000000000000000000 +CT= 7a713a53b99fef34ac04deef80965bd0 +TEST= 27 +KEY= 00000020000000000000000000000000 +CT= 18144a2b46620d32c3c32ce52d49257f +TEST= 28 +KEY= 00000010000000000000000000000000 +CT= 872e827c70887c80749f7b8bb1847c7e +TEST= 29 +KEY= 00000008000000000000000000000000 +CT= 6b86c6a4fe6a60c59b1a3102f8de49f3 +TEST= 30 +KEY= 00000004000000000000000000000000 +CT= 9848bb3dfdf6f532f094679a4c231a20 +TEST= 31 +KEY= 00000002000000000000000000000000 +CT= 925ad528e852e329b2091cd3f1c2bcee +TEST= 32 +KEY= 00000001000000000000000000000000 +CT= 80df436544b0dd596722e46792a40cd8 +TEST= 33 +KEY= 00000000800000000000000000000000 +CT= 525daf18f93e83e1e74bbbdde4263bba +TEST= 34 +KEY= 00000000400000000000000000000000 +CT= f65c9d2ee485d24701ffa3313b9d5be6 +TEST= 35 +KEY= 00000000200000000000000000000000 +CT= e4fc8d8bca06425bdf94afa40fcc14ba +TEST= 36 +KEY= 00000000100000000000000000000000 +CT= a53f0a5ca1e4e6440bb975ff320de6f8 +TEST= 37 +KEY= 00000000080000000000000000000000 +CT= d55313b9394080462e87e02899b553f0 +TEST= 38 +KEY= 00000000040000000000000000000000 +CT= 34a71d761f71bcd344384c7f97d27906 +TEST= 39 +KEY= 00000000020000000000000000000000 +CT= 233f3d819599612ebc89580245c996a8 +TEST= 40 +KEY= 00000000010000000000000000000000 +CT= b4f1374e5268dbcb676e447529e53f89 +TEST= 41 +KEY= 00000000008000000000000000000000 +CT= 0816bd27861d2ba891d1044e39951e96 +TEST= 42 +KEY= 00000000004000000000000000000000 +CT= f3be9ea3f10c73ca64fde5db13a951d1 +TEST= 43 +KEY= 00000000002000000000000000000000 +CT= 2448086a8106fbd03048ddf857d3f1c8 +TEST= 44 +KEY= 00000000001000000000000000000000 +CT= 670756e65bec8b68f03d77cdcdce7b91 +TEST= 45 +KEY= 00000000000800000000000000000000 +CT= ef968cf0d36fd6c6effd225f6fb44ca9 +TEST= 46 +KEY= 00000000000400000000000000000000 +CT= 2e8767157922e3826ddcec1b0cc1e105 +TEST= 47 +KEY= 00000000000200000000000000000000 +CT= 78ce7eec670e45a967bab17e26a1ad36 +TEST= 48 +KEY= 00000000000100000000000000000000 +CT= 3c5cee825655f098f6e81a2f417da3fb +TEST= 49 +KEY= 00000000000080000000000000000000 +CT= 67bfdb431dce1292200bc6f5207adb12 +TEST= 50 +KEY= 00000000000040000000000000000000 +CT= 7540fd38e447c0779228548747843a6f +TEST= 51 +KEY= 00000000000020000000000000000000 +CT= b85e513301f8a936ea9ec8a21a85b5e6 +TEST= 52 +KEY= 00000000000010000000000000000000 +CT= 04c67dbf16c11427d507a455de2c9bc5 +TEST= 53 +KEY= 00000000000008000000000000000000 +CT= 03f75eb8959e55079cffb4ff149a37b6 +TEST= 54 +KEY= 00000000000004000000000000000000 +CT= 74550287f666c63bb9bc7838433434b0 +TEST= 55 +KEY= 00000000000002000000000000000000 +CT= 7d537200195ebc3aefd1eaab1c385221 +TEST= 56 +KEY= 00000000000001000000000000000000 +CT= ce24e4d40c68a82b535cbd3c8e21652a +TEST= 57 +KEY= 00000000000000800000000000000000 +CT= ab20072405aa8fc40265c6f1f3dc8bc0 +TEST= 58 +KEY= 00000000000000400000000000000000 +CT= 6cfd2cf688f566b093f67b9b3839e80a +TEST= 59 +KEY= 00000000000000200000000000000000 +CT= bd95977e6b7239d407a012c5544bf584 +TEST= 60 +KEY= 00000000000000100000000000000000 +CT= df9c0130ac77e7c72c997f587b46dbe0 +TEST= 61 +KEY= 00000000000000080000000000000000 +CT= e7f1b82cadc53a648798945b34efeff2 +TEST= 62 +KEY= 00000000000000040000000000000000 +CT= 932c6dbf69255cf13edcdb72233acea3 +TEST= 63 +KEY= 00000000000000020000000000000000 +CT= 5c76002bc7206560efe550c80b8f12cc +TEST= 64 +KEY= 00000000000000010000000000000000 +CT= f6b7bdd1caeebab574683893c4475484 +TEST= 65 +KEY= 00000000000000008000000000000000 +CT= a920e37cc6dc6b31da8c0169569f5034 +TEST= 66 +KEY= 00000000000000004000000000000000 +CT= 919380ecd9c778bc513148b0c28d65fd +TEST= 67 +KEY= 00000000000000002000000000000000 +CT= ee67308dd3f2d9e6c2170755e5784be1 +TEST= 68 +KEY= 00000000000000001000000000000000 +CT= 3cc73e53b85609023a05e149b223ae09 +TEST= 69 +KEY= 00000000000000000800000000000000 +CT= 983e8af7cf05ebb28d71eb841c9406e6 +TEST= 70 +KEY= 00000000000000000400000000000000 +CT= 0f3099b2d31fa5299ee5bf43193287fc +TEST= 71 +KEY= 00000000000000000200000000000000 +CT= b763d84f38c27fe6931dceb6715d4db6 +TEST= 72 +KEY= 00000000000000000100000000000000 +CT= 5ae3c9b0e3cc29c0c61565cd01f8a248 +TEST= 73 +KEY= 00000000000000000080000000000000 +CT= f58083572cd90981958565d48d2dee25 +TEST= 74 +KEY= 00000000000000000040000000000000 +CT= 7e6255eef8f70c0ef10337aab1cccef8 +TEST= 75 +KEY= 00000000000000000020000000000000 +CT= aad4bac34db22821841ce2f631961902 +TEST= 76 +KEY= 00000000000000000010000000000000 +CT= d7431c0409bb1441ba9c6858dc7d4e81 +TEST= 77 +KEY= 00000000000000000008000000000000 +CT= ef9298c65e339f6e801a59c626456993 +TEST= 78 +KEY= 00000000000000000004000000000000 +CT= 53fe29f68ff541abc3f0ef3350b72f7e +TEST= 79 +KEY= 00000000000000000002000000000000 +CT= f6bba5c10db02529e2c2da3fb582cc14 +TEST= 80 +KEY= 00000000000000000001000000000000 +CT= e4239aa37fc531a386dad1126fc0e9cd +TEST= 81 +KEY= 00000000000000000000800000000000 +CT= 8f7758f857d15bbe7bfd0e416404c365 +TEST= 82 +KEY= 00000000000000000000400000000000 +CT= d273eb57c687bcd1b4ea7218a509e7b8 +TEST= 83 +KEY= 00000000000000000000200000000000 +CT= 65d64f8d76e8b3423fa25c4eb58a210a +TEST= 84 +KEY= 00000000000000000000100000000000 +CT= 623d802b4ec450d66a16625702fcdbe0 +TEST= 85 +KEY= 00000000000000000000080000000000 +CT= 7496460cb28e5791baeaf9b68fb00022 +TEST= 86 +KEY= 00000000000000000000040000000000 +CT= 34ea600f18bb0694b41681a49d510c1d +TEST= 87 +KEY= 00000000000000000000020000000000 +CT= 5f8ff0d47d5766d29b5d6e8f46423bd8 +TEST= 88 +KEY= 00000000000000000000010000000000 +CT= 225f9286c5928bf09f84d3f93f541959 +TEST= 89 +KEY= 00000000000000000000008000000000 +CT= b21e90d25df383416a5f072cebeb1ffb +TEST= 90 +KEY= 00000000000000000000004000000000 +CT= 4aefcda089318125453eb9e8eb5e492e +TEST= 91 +KEY= 00000000000000000000002000000000 +CT= 4d3e75c6cd40ec4869bc85158591adb8 +TEST= 92 +KEY= 00000000000000000000001000000000 +CT= 63a8b904405436a1b99d7751866771b7 +TEST= 93 +KEY= 00000000000000000000000800000000 +CT= 64f0daae47529199792eae172ba53293 +TEST= 94 +KEY= 00000000000000000000000400000000 +CT= c3eef84bea18225d515a8c852a9047ee +TEST= 95 +KEY= 00000000000000000000000200000000 +CT= a44ac422b47d47b81af73b3e9ac9596e +TEST= 96 +KEY= 00000000000000000000000100000000 +CT= d16e04a8fbc435094f8d53adf25f5084 +TEST= 97 +KEY= 00000000000000000000000080000000 +CT= ef13dc34bab03e124eead8b6bf44b532 +TEST= 98 +KEY= 00000000000000000000000040000000 +CT= d94799075c24dcc067af0d392049250d +TEST= 99 +KEY= 00000000000000000000000020000000 +CT= 14f431771eddce4764c21a2254b5e3c8 +TEST= 100 +KEY= 00000000000000000000000010000000 +CT= 7039329f36f2ed682b02991f28d64679 +TEST= 101 +KEY= 00000000000000000000000008000000 +CT= 124ee24ede5551639db8b8b941f6141d +TEST= 102 +KEY= 00000000000000000000000004000000 +CT= c2852879a34d5184e478ec918b993fee +TEST= 103 +KEY= 00000000000000000000000002000000 +CT= 86a806a3525b93e432053c9ab5abbedf +TEST= 104 +KEY= 00000000000000000000000001000000 +CT= c1609bf5a4f07e37c17a36366ec23ecc +TEST= 105 +KEY= 00000000000000000000000000800000 +CT= 7e81e7cb92159a51ffcea331b1e8ea53 +TEST= 106 +KEY= 00000000000000000000000000400000 +CT= 37a7be002856c5a59a6e03eafce7729a +TEST= 107 +KEY= 00000000000000000000000000200000 +CT= bdf98a5a4f91e890c9a1d1e5faab138f +TEST= 108 +KEY= 00000000000000000000000000100000 +CT= 4e96acb66e051f2bc739cc3d3e34a26b +TEST= 109 +KEY= 00000000000000000000000000080000 +CT= ee996cdd120eb86e21ecfa49e8e1fcf1 +TEST= 110 +KEY= 00000000000000000000000000040000 +CT= 61b9e6b579dbf6070c351a1440dd85ff +TEST= 111 +KEY= 00000000000000000000000000020000 +CT= ac369e484316440b40dfc83aa96e28e7 +TEST= 112 +KEY= 00000000000000000000000000010000 +CT= 0a2d16de985c76d45c579c1159413bbe +TEST= 113 +KEY= 00000000000000000000000000008000 +CT= da3fdc38da1d374fa4802cda1a1c6b0f +TEST= 114 +KEY= 00000000000000000000000000004000 +CT= b842523d4c41c2211afe43a5800adce3 +TEST= 115 +KEY= 00000000000000000000000000002000 +CT= 9e2cda90d8e992dba6c73d8229567192 +TEST= 116 +KEY= 00000000000000000000000000001000 +CT= d49583b781d9e20f5be101415957fc49 +TEST= 117 +KEY= 00000000000000000000000000000800 +CT= ef09da5c12b376e458b9b8670032498e +TEST= 118 +KEY= 00000000000000000000000000000400 +CT= a96be0463da774461a5e1d5a9dd1ac10 +TEST= 119 +KEY= 00000000000000000000000000000200 +CT= 32cee3341060790d2d4b1362ef397090 +TEST= 120 +KEY= 00000000000000000000000000000100 +CT= 21cea416a3d3359d2c4d58fb6a035f06 +TEST= 121 +KEY= 00000000000000000000000000000080 +CT= 172aeab3d507678ecaf455c12587adb7 +TEST= 122 +KEY= 00000000000000000000000000000040 +CT= b6f897941ef8ebff9fe80a567ef38478 +TEST= 123 +KEY= 00000000000000000000000000000020 +CT= a9723259d94a7dc662fb0c782ca3f1dd +TEST= 124 +KEY= 00000000000000000000000000000010 +CT= 2f91c984b9a4839f30001b9f430493b4 +TEST= 125 +KEY= 00000000000000000000000000000008 +CT= 0472406345a610b048cb99ee0ef3fa0f +TEST= 126 +KEY= 00000000000000000000000000000004 +CT= f5f39086646f8c05ed16efa4b617957c +TEST= 127 +KEY= 00000000000000000000000000000002 +CT= 26d50f485a30408d5af47a5736292450 +TEST= 128 +KEY= 00000000000000000000000000000001 +CT= 0545aad56da2a97c3663d1432a3d1c84 diff --git a/flint/test/testvals/ecbvk46.txt b/flint/test/testvals/ecbvk46.txt new file mode 100644 index 0000000..054ec5d --- /dev/null +++ b/flint/test/testvals/ecbvk46.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= aae06992acbf52a3e8f4a96ec9300bd7 +TEST= 1 +KEY= 800000000000000000000000000000000000000000000000 +CT= de885dc87f5a92594082d02cc1e1b42c +TEST= 2 +KEY= 400000000000000000000000000000000000000000000000 +CT= c749194f94673f9dd2aa1932849630c1 +TEST= 3 +KEY= 200000000000000000000000000000000000000000000000 +CT= 0cef643313912934d310297b90f56ecc +TEST= 4 +KEY= 100000000000000000000000000000000000000000000000 +CT= c4495d39d4a553b225fba02a7b1b87e1 +TEST= 5 +KEY= 080000000000000000000000000000000000000000000000 +CT= 636d10b1a0bcab541d680a7970adc830 +TEST= 6 +KEY= 040000000000000000000000000000000000000000000000 +CT= 07cf045786bd6afcc147d99e45a901a7 +TEST= 7 +KEY= 020000000000000000000000000000000000000000000000 +CT= 6a8e3f425a7599348f95398448827976 +TEST= 8 +KEY= 010000000000000000000000000000000000000000000000 +CT= 5518276836148a00d91089a20d8bff57 +TEST= 9 +KEY= 008000000000000000000000000000000000000000000000 +CT= f267e07b5e87e3bc20b969c61d4fcb06 +TEST= 10 +KEY= 004000000000000000000000000000000000000000000000 +CT= 5a1cde69571d401bfcd20debada2212c +TEST= 11 +KEY= 002000000000000000000000000000000000000000000000 +CT= 70a9057263254701d12add7d74cd509e +TEST= 12 +KEY= 001000000000000000000000000000000000000000000000 +CT= 35713a7e108031279388a33a0fe2e190 +TEST= 13 +KEY= 000800000000000000000000000000000000000000000000 +CT= e74ede82b1254714f0c7b4b243108655 +TEST= 14 +KEY= 000400000000000000000000000000000000000000000000 +CT= 39272e3100faa37b55b862320d1b3eb3 +TEST= 15 +KEY= 000200000000000000000000000000000000000000000000 +CT= 6d6e24c659fc5aef712f77bca19c9dd0 +TEST= 16 +KEY= 000100000000000000000000000000000000000000000000 +CT= 76d18212f972370d3cc2c6c372c6cf2f +TEST= 17 +KEY= 000080000000000000000000000000000000000000000000 +CT= b21a1f0bae39e55c7594ed570a7783ea +TEST= 18 +KEY= 000040000000000000000000000000000000000000000000 +CT= 77de202111895ac48dd1c974b358b458 +TEST= 19 +KEY= 000020000000000000000000000000000000000000000000 +CT= 67810b311969012aaf7b504ffaf39fd1 +TEST= 20 +KEY= 000010000000000000000000000000000000000000000000 +CT= c22ea2344d3e9417a6ba07843e713aea +TEST= 21 +KEY= 000008000000000000000000000000000000000000000000 +CT= c79caf4b97bee0bd0630ab354539d653 +TEST= 22 +KEY= 000004000000000000000000000000000000000000000000 +CT= 135fd1af761d9ae23df4aa6b86760db4 +TEST= 23 +KEY= 000002000000000000000000000000000000000000000000 +CT= d4659d0b06acd4d56ab8d11a16fd83b9 +TEST= 24 +KEY= 000001000000000000000000000000000000000000000000 +CT= f7d270028fc188e4e4f35a4aaa25d4d4 +TEST= 25 +KEY= 000000800000000000000000000000000000000000000000 +CT= 345cae5a8c9620a9913d5473985852ff +TEST= 26 +KEY= 000000400000000000000000000000000000000000000000 +CT= 4e8980adde60b0e42c0b287fea41e729 +TEST= 27 +KEY= 000000200000000000000000000000000000000000000000 +CT= f11b6d74e1f15155633dc39743c1a527 +TEST= 28 +KEY= 000000100000000000000000000000000000000000000000 +CT= 9c87916c0180064f9d3179c6f5dd8c35 +TEST= 29 +KEY= 000000080000000000000000000000000000000000000000 +CT= 71ab186bcaea518e461d4f7fad230e6a +TEST= 30 +KEY= 000000040000000000000000000000000000000000000000 +CT= c4a31bbc3daaf742f9141c2a5001a49c +TEST= 31 +KEY= 000000020000000000000000000000000000000000000000 +CT= e7c47b7b1d40f182a8928c8a55671d07 +TEST= 32 +KEY= 000000010000000000000000000000000000000000000000 +CT= 8e17f294b28fa373c6249538868a7eef +TEST= 33 +KEY= 000000008000000000000000000000000000000000000000 +CT= 754404096a5cbc08af09491be249141a +TEST= 34 +KEY= 000000004000000000000000000000000000000000000000 +CT= 101cb56e55f05d86369b6d1069204f0a +TEST= 35 +KEY= 000000002000000000000000000000000000000000000000 +CT= 73f19bb6604205c6ee227b9759791e41 +TEST= 36 +KEY= 000000001000000000000000000000000000000000000000 +CT= 6270c0028f0d136c37a56b2cb64d24d6 +TEST= 37 +KEY= 000000000800000000000000000000000000000000000000 +CT= a3bf7c2c38d1114a087ecf212e694346 +TEST= 38 +KEY= 000000000400000000000000000000000000000000000000 +CT= 49cabff2cef7d9f95f5efb1f7a1a7dde +TEST= 39 +KEY= 000000000200000000000000000000000000000000000000 +CT= ec7f8a47cc59b849469255ad49f62752 +TEST= 40 +KEY= 000000000100000000000000000000000000000000000000 +CT= 68fae55a13efaf9b07b3552a8a0dc9d1 +TEST= 41 +KEY= 000000000080000000000000000000000000000000000000 +CT= 211e6b19c69faef481f64f24099cda65 +TEST= 42 +KEY= 000000000040000000000000000000000000000000000000 +CT= dbb918c75bc5732416f79fb0c8ee4c5c +TEST= 43 +KEY= 000000000020000000000000000000000000000000000000 +CT= 98d494e5d963a6c8b92536d3ec35e3fd +TEST= 44 +KEY= 000000000010000000000000000000000000000000000000 +CT= c9a873404d403d6f074190851d67781a +TEST= 45 +KEY= 000000000008000000000000000000000000000000000000 +CT= 073aef4a7c77d921928cb0dd9d27cae7 +TEST= 46 +KEY= 000000000004000000000000000000000000000000000000 +CT= 89bde25cee36fde769a10e52298cf90f +TEST= 47 +KEY= 000000000002000000000000000000000000000000000000 +CT= 26d0842d37ead38557c65e0a5e5f122e +TEST= 48 +KEY= 000000000001000000000000000000000000000000000000 +CT= f8294ba375af46b3f22905bbaffab107 +TEST= 49 +KEY= 000000000000800000000000000000000000000000000000 +CT= 2ad63eb4d0d43813b979cf72b35bdb94 +TEST= 50 +KEY= 000000000000400000000000000000000000000000000000 +CT= 7710c171ee0f4efa39be4c995180181d +TEST= 51 +KEY= 000000000000200000000000000000000000000000000000 +CT= c0cb2b40dba7be8c0698fae1e4b80ff8 +TEST= 52 +KEY= 000000000000100000000000000000000000000000000000 +CT= 97970e505194622fd955ca1b80b784e9 +TEST= 53 +KEY= 000000000000080000000000000000000000000000000000 +CT= 7cb1824b29f850900df2cad9cf04c1cf +TEST= 54 +KEY= 000000000000040000000000000000000000000000000000 +CT= fdf4f036bb988e42f2f62de63fe19a64 +TEST= 55 +KEY= 000000000000020000000000000000000000000000000000 +CT= 08908cfe2c82606b2c15df61b75cf3e2 +TEST= 56 +KEY= 000000000000010000000000000000000000000000000000 +CT= b3aa689ef2d07ff365acb9adba2af07a +TEST= 57 +KEY= 000000000000008000000000000000000000000000000000 +CT= f2672cd8eaa3b98776660d0263656f5c +TEST= 58 +KEY= 000000000000004000000000000000000000000000000000 +CT= 5bdeac00e986687b9e1d94a0da7bf452 +TEST= 59 +KEY= 000000000000002000000000000000000000000000000000 +CT= e6d57bd66ea1627363ee0c4b711b0b21 +TEST= 60 +KEY= 000000000000001000000000000000000000000000000000 +CT= 03730dd6acb4ad9996a63be7765ec06f +TEST= 61 +KEY= 000000000000000800000000000000000000000000000000 +CT= a470e361aa5437b2be8586d2f78de582 +TEST= 62 +KEY= 000000000000000400000000000000000000000000000000 +CT= 7567feefa559911fd479670246b484e3 +TEST= 63 +KEY= 000000000000000200000000000000000000000000000000 +CT= 29829dea15a4e7a4c049045e7b106e29 +TEST= 64 +KEY= 000000000000000100000000000000000000000000000000 +CT= a407834c3d89d48a2cb7a152208fa4ed +TEST= 65 +KEY= 000000000000000080000000000000000000000000000000 +CT= 68f948053f78fef0d8f9fe7ef3a89819 +TEST= 66 +KEY= 000000000000000040000000000000000000000000000000 +CT= b605174cab13ad8fe3b20da3ae7b0234 +TEST= 67 +KEY= 000000000000000020000000000000000000000000000000 +CT= ccab8f0aebff032893996d383cbfdbfa +TEST= 68 +KEY= 000000000000000010000000000000000000000000000000 +CT= af14bb8428c9730b7dc17b6c1cbebcc8 +TEST= 69 +KEY= 000000000000000008000000000000000000000000000000 +CT= 5a41a21332040877eb7b89e8e80d19fe +TEST= 70 +KEY= 000000000000000004000000000000000000000000000000 +CT= ac1ba52efcdde368b1596f2f0ad893a0 +TEST= 71 +KEY= 000000000000000002000000000000000000000000000000 +CT= 41b890e31b9045e6ecdc1bc3f2db9bcc +TEST= 72 +KEY= 000000000000000001000000000000000000000000000000 +CT= 4d54a549728e55b19a23660424a0f146 +TEST= 73 +KEY= 000000000000000000800000000000000000000000000000 +CT= a917581f41c47c7ddcffd5285e2d6a61 +TEST= 74 +KEY= 000000000000000000400000000000000000000000000000 +CT= 604df24ba6099b93a7405a524d764fcb +TEST= 75 +KEY= 000000000000000000200000000000000000000000000000 +CT= 78d9d156f28b190e232d1b7ae7fc730a +TEST= 76 +KEY= 000000000000000000100000000000000000000000000000 +CT= 5a12c39e442cd7f27b3cd77f5d029582 +TEST= 77 +KEY= 000000000000000000080000000000000000000000000000 +CT= ff2bf2f47cf7b0f28ee25af95dbf790d +TEST= 78 +KEY= 000000000000000000040000000000000000000000000000 +CT= 1863bb7d193bda39df090659eb8ae48b +TEST= 79 +KEY= 000000000000000000020000000000000000000000000000 +CT= 38178f2fb4cfcf31e87e1abcdc023eb5 +TEST= 80 +KEY= 000000000000000000010000000000000000000000000000 +CT= f5b13dc690cc0d541c6ba533023dc8c9 +TEST= 81 +KEY= 000000000000000000008000000000000000000000000000 +CT= 48ec05238d7375d126dc9d08884d4827 +TEST= 82 +KEY= 000000000000000000004000000000000000000000000000 +CT= acd0d81139691b310b92a6e377bacc87 +TEST= 83 +KEY= 000000000000000000002000000000000000000000000000 +CT= 9a4aa43578b55ce9cc178f0d2e162c79 +TEST= 84 +KEY= 000000000000000000001000000000000000000000000000 +CT= 08ad94bc737db3c87d49b9e01b720d81 +TEST= 85 +KEY= 000000000000000000000800000000000000000000000000 +CT= 3bcfb2d5d210e8332900c5991d551a2a +TEST= 86 +KEY= 000000000000000000000400000000000000000000000000 +CT= c5f0c6b9397acb29635ce1a0da2d8d96 +TEST= 87 +KEY= 000000000000000000000200000000000000000000000000 +CT= 844a29efc693e2fa9900f87fbf5dcd5f +TEST= 88 +KEY= 000000000000000000000100000000000000000000000000 +CT= 5126a1c41051fea158be41200e1ea59d +TEST= 89 +KEY= 000000000000000000000080000000000000000000000000 +CT= 302123ca7b4f46d667fffb0eb6aa7703 +TEST= 90 +KEY= 000000000000000000000040000000000000000000000000 +CT= a9d16bce7db5c024277709ee2a88d91a +TEST= 91 +KEY= 000000000000000000000020000000000000000000000000 +CT= f013c5ec123a26cfc34b598c992a996b +TEST= 92 +KEY= 000000000000000000000010000000000000000000000000 +CT= e38a825cd971a1d2e56fb1dba248f2a8 +TEST= 93 +KEY= 000000000000000000000008000000000000000000000000 +CT= 6e701773c0311e0bd4c5a097406d22b3 +TEST= 94 +KEY= 000000000000000000000004000000000000000000000000 +CT= 754262cef0c64be4c3e67c35abe439f7 +TEST= 95 +KEY= 000000000000000000000002000000000000000000000000 +CT= c9c2d4c47df7d55cfa0ee5f1fe5070f4 +TEST= 96 +KEY= 000000000000000000000001000000000000000000000000 +CT= 6ab4bea85b172573d8bd2d5f4329f13d +TEST= 97 +KEY= 000000000000000000000000800000000000000000000000 +CT= 11f03ef28e2cc9ae5165c587f7396c8c +TEST= 98 +KEY= 000000000000000000000000400000000000000000000000 +CT= 0682f2eb1a68bac7949922c630dd27fa +TEST= 99 +KEY= 000000000000000000000000200000000000000000000000 +CT= abb0fec0413d659afe8e3dcf6ba873bb +TEST= 100 +KEY= 000000000000000000000000100000000000000000000000 +CT= fe86a32e19f805d6569b2efadd9c92aa +TEST= 101 +KEY= 000000000000000000000000080000000000000000000000 +CT= e434e472275d1837d3d717f2eecc88c3 +TEST= 102 +KEY= 000000000000000000000000040000000000000000000000 +CT= 74e57dcd12a21d26ef8adafa5e60469a +TEST= 103 +KEY= 000000000000000000000000020000000000000000000000 +CT= c275429d6dad45ddd423fa63c816a9c1 +TEST= 104 +KEY= 000000000000000000000000010000000000000000000000 +CT= 7f6ec1a9ae729e86f7744aed4b8f4f07 +TEST= 105 +KEY= 000000000000000000000000008000000000000000000000 +CT= 48b5a71ab9292bd4f9e608ef102636b2 +TEST= 106 +KEY= 000000000000000000000000004000000000000000000000 +CT= 076fb95d5f536c78cbed3181bccf3cf1 +TEST= 107 +KEY= 000000000000000000000000002000000000000000000000 +CT= bfa76bea1e684fd3bf9256119ee0bc0f +TEST= 108 +KEY= 000000000000000000000000001000000000000000000000 +CT= 7d395923d56577f3ff8670998f8c4a71 +TEST= 109 +KEY= 000000000000000000000000000800000000000000000000 +CT= ba02c986e529ac18a882c34ba389625f +TEST= 110 +KEY= 000000000000000000000000000400000000000000000000 +CT= 3dfcf2d882afe75d3a191193013a84b5 +TEST= 111 +KEY= 000000000000000000000000000200000000000000000000 +CT= fad1fde1d0241784b63080d2c74d236c +TEST= 112 +KEY= 000000000000000000000000000100000000000000000000 +CT= 7d6c80d39e41f007a14fb9cd2b2c15cd +TEST= 113 +KEY= 000000000000000000000000000080000000000000000000 +CT= 7975f401fc10637bb33ea2db058ff6ec +TEST= 114 +KEY= 000000000000000000000000000040000000000000000000 +CT= 657983865c55a818f02b7fcd52ed7e99 +TEST= 115 +KEY= 000000000000000000000000000020000000000000000000 +CT= b32beb1776f9827ff4c3ac9997e84b20 +TEST= 116 +KEY= 000000000000000000000000000010000000000000000000 +CT= 2ae2c7c374f0a41e3d46dbc3e66bb59f +TEST= 117 +KEY= 000000000000000000000000000008000000000000000000 +CT= 4d835e4abdd4bdc6b88316a6e931a07f +TEST= 118 +KEY= 000000000000000000000000000004000000000000000000 +CT= e07efabff1c353f7384ebb87b435a3f3 +TEST= 119 +KEY= 000000000000000000000000000002000000000000000000 +CT= ed3088dc3faf89ad87b4356ff1bb09c2 +TEST= 120 +KEY= 000000000000000000000000000001000000000000000000 +CT= 4324d01140c156fc898c2e32ba03fb05 +TEST= 121 +KEY= 000000000000000000000000000000800000000000000000 +CT= be15d016facb5bafbc24fa9289132166 +TEST= 122 +KEY= 000000000000000000000000000000400000000000000000 +CT= ac9b7048edb1acf4d97a5b0b3f50884b +TEST= 123 +KEY= 000000000000000000000000000000200000000000000000 +CT= 448bece1f86c7845dfa9a4bb2a016fb3 +TEST= 124 +KEY= 000000000000000000000000000000100000000000000000 +CT= 10dd445e87686eb46ea9b1abc49257f0 +TEST= 125 +KEY= 000000000000000000000000000000080000000000000000 +CT= b7fccf7659fa756d4b7303eea6c07458 +TEST= 126 +KEY= 000000000000000000000000000000040000000000000000 +CT= 289117115ca3513baa7640b1004872c2 +TEST= 127 +KEY= 000000000000000000000000000000020000000000000000 +CT= 57cb42f7ee7186051f50b93ffa7b35bf +TEST= 128 +KEY= 000000000000000000000000000000010000000000000000 +CT= f2741bfbfb81663b9136802fb9c3126a +TEST= 129 +KEY= 000000000000000000000000000000008000000000000000 +CT= e32dddc5c7398c096e3bd535b31db5ce +TEST= 130 +KEY= 000000000000000000000000000000004000000000000000 +CT= 81d3c204e608af9cc713eaebcb72433f +TEST= 131 +KEY= 000000000000000000000000000000002000000000000000 +CT= d4deef4bfc36aaa579496e6935f8f98e +TEST= 132 +KEY= 000000000000000000000000000000001000000000000000 +CT= c356db082b97802b038571c392c5c8f6 +TEST= 133 +KEY= 000000000000000000000000000000000800000000000000 +CT= a3919ecd4861845f2527b77f06ac6a4e +TEST= 134 +KEY= 000000000000000000000000000000000400000000000000 +CT= a53858e17a2f802a20e40d44494ffda0 +TEST= 135 +KEY= 000000000000000000000000000000000200000000000000 +CT= 5d989e122b78c758921edbeeb827f0c0 +TEST= 136 +KEY= 000000000000000000000000000000000100000000000000 +CT= 4b1c0c8f9e7830cc3c4be7bd226fa8de +TEST= 137 +KEY= 000000000000000000000000000000000080000000000000 +CT= 82c40c5fd897fbca7b899c70713573a1 +TEST= 138 +KEY= 000000000000000000000000000000000040000000000000 +CT= ed13ee2d45e00f75ccdb51ea8e3e36ad +TEST= 139 +KEY= 000000000000000000000000000000000020000000000000 +CT= f121799eefe8432423176a3ccf6462bb +TEST= 140 +KEY= 000000000000000000000000000000000010000000000000 +CT= 4fa0c06f07997e98271dd86f7b355c50 +TEST= 141 +KEY= 000000000000000000000000000000000008000000000000 +CT= 849eb364b4e81d058649dc5b1bf029b9 +TEST= 142 +KEY= 000000000000000000000000000000000004000000000000 +CT= f48f9e0de8de7ad944a207809335d9b1 +TEST= 143 +KEY= 000000000000000000000000000000000002000000000000 +CT= e59e9205b5a81a4fd26dfcf308966022 +TEST= 144 +KEY= 000000000000000000000000000000000001000000000000 +CT= 3a91a1be14aae9ed700bdf9d70018804 +TEST= 145 +KEY= 000000000000000000000000000000000000800000000000 +CT= 8abad78dcb79a48d79070e7da89664ec +TEST= 146 +KEY= 000000000000000000000000000000000000400000000000 +CT= b68377d98aae6044938a7457f6c649d9 +TEST= 147 +KEY= 000000000000000000000000000000000000200000000000 +CT= e4e1275c42f5f1b63d662c099d6ce33d +TEST= 148 +KEY= 000000000000000000000000000000000000100000000000 +CT= 7def32a34c6be668f17da1bb193b06ef +TEST= 149 +KEY= 000000000000000000000000000000000000080000000000 +CT= 78b6000cc3d30cb3a74b68d0edbd2b53 +TEST= 150 +KEY= 000000000000000000000000000000000000040000000000 +CT= 0a47531de88dd8ae5c23eae4f7d1f2d5 +TEST= 151 +KEY= 000000000000000000000000000000000000020000000000 +CT= 667b24e8000cf68231ec484581d922e5 +TEST= 152 +KEY= 000000000000000000000000000000000000010000000000 +CT= 39daa5ebd4aacae130e9c33236c52024 +TEST= 153 +KEY= 000000000000000000000000000000000000008000000000 +CT= e3c88760b3cb21360668a63e55bb45d1 +TEST= 154 +KEY= 000000000000000000000000000000000000004000000000 +CT= f131ee903c1cdb49d416866fd5d8de51 +TEST= 155 +KEY= 000000000000000000000000000000000000002000000000 +CT= 7a1916135b0447cf4033fc13047a583a +TEST= 156 +KEY= 000000000000000000000000000000000000001000000000 +CT= f7d55fb27991143dcdfa90ddf0424fcb +TEST= 157 +KEY= 000000000000000000000000000000000000000800000000 +CT= ea93e7d1ca1111dbd8f7ec111a848c0c +TEST= 158 +KEY= 000000000000000000000000000000000000000400000000 +CT= 2a689e39dfd3cbcbe221326e95888779 +TEST= 159 +KEY= 000000000000000000000000000000000000000200000000 +CT= c1ce399ca762318ac2c40d1928b4c57d +TEST= 160 +KEY= 000000000000000000000000000000000000000100000000 +CT= d43fb6f2b2879c8bfaf0092da2ca63ed +TEST= 161 +KEY= 000000000000000000000000000000000000000080000000 +CT= 224563e617158df97650af5d130e78a5 +TEST= 162 +KEY= 000000000000000000000000000000000000000040000000 +CT= 6562fdf6833b7c4f7484ae6ebcc243dd +TEST= 163 +KEY= 000000000000000000000000000000000000000020000000 +CT= 93d58ba7bed22615d661d002885a7457 +TEST= 164 +KEY= 000000000000000000000000000000000000000010000000 +CT= 9a0ef559003ad9e52d3e09ed3c1d3320 +TEST= 165 +KEY= 000000000000000000000000000000000000000008000000 +CT= 96baf5a7dc6f3dd27eb4c717a85d261c +TEST= 166 +KEY= 000000000000000000000000000000000000000004000000 +CT= b8762e06884900e8452293190e19ccdb +TEST= 167 +KEY= 000000000000000000000000000000000000000002000000 +CT= 785416a22bd63cbabf4b1789355197d3 +TEST= 168 +KEY= 000000000000000000000000000000000000000001000000 +CT= a0d20ce1489baa69a3612dce90f7abf6 +TEST= 169 +KEY= 000000000000000000000000000000000000000000800000 +CT= 700244e93dc94230cc607ffba0e48f32 +TEST= 170 +KEY= 000000000000000000000000000000000000000000400000 +CT= 85329e476829f872a2b4a7e59f91ff2d +TEST= 171 +KEY= 000000000000000000000000000000000000000000200000 +CT= e4219b4935d988db719b8b8b2b53d247 +TEST= 172 +KEY= 000000000000000000000000000000000000000000100000 +CT= 6acdd04fd13d4db4409fe8dd13fd737b +TEST= 173 +KEY= 000000000000000000000000000000000000000000080000 +CT= 9eb7a670ab59e15be582378701c1ec14 +TEST= 174 +KEY= 000000000000000000000000000000000000000000040000 +CT= 29df2d6935fe657763bc7a9f22d3d492 +TEST= 175 +KEY= 000000000000000000000000000000000000000000020000 +CT= 99303359d4a13afdbe6c784028ce533a +TEST= 176 +KEY= 000000000000000000000000000000000000000000010000 +CT= ff5c70a6334545f33b9dbf7bea0417ca +TEST= 177 +KEY= 000000000000000000000000000000000000000000008000 +CT= 289f58a17e4c50eda4269efb3df55815 +TEST= 178 +KEY= 000000000000000000000000000000000000000000004000 +CT= ea35dcb416e9e1c2861d1682f062b5eb +TEST= 179 +KEY= 000000000000000000000000000000000000000000002000 +CT= 3a47bf354be775383c50b0c0a83e3a58 +TEST= 180 +KEY= 000000000000000000000000000000000000000000001000 +CT= bf6c1dc069fb95d05d43b01d8206d66b +TEST= 181 +KEY= 000000000000000000000000000000000000000000000800 +CT= 046d1d580d5898da6595f32fd1f0c33d +TEST= 182 +KEY= 000000000000000000000000000000000000000000000400 +CT= 5f57803b7b82a110f7e9855d6a546082 +TEST= 183 +KEY= 000000000000000000000000000000000000000000000200 +CT= 25336ecf34e7be97862cdff715ff05a8 +TEST= 184 +KEY= 000000000000000000000000000000000000000000000100 +CT= acbaa2a943d8078022d693890e8c4fef +TEST= 185 +KEY= 000000000000000000000000000000000000000000000080 +CT= 3947597879f6b58e4e2f0df825a83a38 +TEST= 186 +KEY= 000000000000000000000000000000000000000000000040 +CT= 4eb8cc3335496130655bf3ca570a4fc0 +TEST= 187 +KEY= 000000000000000000000000000000000000000000000020 +CT= bbda7769ad1fda425e18332d97868824 +TEST= 188 +KEY= 000000000000000000000000000000000000000000000010 +CT= 5e7532d22ddb0829a29c868198397154 +TEST= 189 +KEY= 000000000000000000000000000000000000000000000008 +CT= e66da67b630ab7ae3e682855e1a1698e +TEST= 190 +KEY= 000000000000000000000000000000000000000000000004 +CT= 4d93800f671b48559a64d1ea030a590a +TEST= 191 +KEY= 000000000000000000000000000000000000000000000002 +CT= f33159fcc7d9ae30c062cd3b322ac764 +TEST= 192 +KEY= 000000000000000000000000000000000000000000000001 +CT= 8bae4efb70d33a9792eea9be70889d72 diff --git a/flint/test/testvals/ecbvk48.txt b/flint/test/testvals/ecbvk48.txt new file mode 100644 index 0000000..ab83f68 --- /dev/null +++ b/flint/test/testvals/ecbvk48.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +PT= 00000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= dc95c078a2408989ad48a21492842087 +TEST= 1 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= e35a6dcb19b201a01ebcfa8aa22b5759 +TEST= 2 +KEY= 4000000000000000000000000000000000000000000000000000000000000000 +CT= 5075c2405b76f22f553488cae47ce90b +TEST= 3 +KEY= 2000000000000000000000000000000000000000000000000000000000000000 +CT= 49df95d844a0145a7de01c91793302d3 +TEST= 4 +KEY= 1000000000000000000000000000000000000000000000000000000000000000 +CT= e7396d778e940b8418a86120e5f421fe +TEST= 5 +KEY= 0800000000000000000000000000000000000000000000000000000000000000 +CT= 05f535c36fcede4657be37f4087db1ef +TEST= 6 +KEY= 0400000000000000000000000000000000000000000000000000000000000000 +CT= d0c1dddd10da777c68ab36af51f2c204 +TEST= 7 +KEY= 0200000000000000000000000000000000000000000000000000000000000000 +CT= 1c55fb811b5c6464c4e5de1535a75514 +TEST= 8 +KEY= 0100000000000000000000000000000000000000000000000000000000000000 +CT= 52917f3ae957d5230d3a2af57c7b5a71 +TEST= 9 +KEY= 0080000000000000000000000000000000000000000000000000000000000000 +CT= c6e3d5501752dd5e9aef086d6b45d705 +TEST= 10 +KEY= 0040000000000000000000000000000000000000000000000000000000000000 +CT= a24a9c7af1d9b1e17e1c9a3e711b3fa7 +TEST= 11 +KEY= 0020000000000000000000000000000000000000000000000000000000000000 +CT= b881eca724a6d43dbc6b96f6f59a0d20 +TEST= 12 +KEY= 0010000000000000000000000000000000000000000000000000000000000000 +CT= ec524d9a24dfff2a9639879b83b8e137 +TEST= 13 +KEY= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 34c4f345f5466215a037f443635d6f75 +TEST= 14 +KEY= 0004000000000000000000000000000000000000000000000000000000000000 +CT= 5ba5055bedb8895f672e29f2eb5a355d +TEST= 15 +KEY= 0002000000000000000000000000000000000000000000000000000000000000 +CT= b3f692aa3a435259ebbef9b51ad1e08d +TEST= 16 +KEY= 0001000000000000000000000000000000000000000000000000000000000000 +CT= 414feb4376f2c64a5d2fbb2ed531ba7d +TEST= 17 +KEY= 0000800000000000000000000000000000000000000000000000000000000000 +CT= a20d519e3bca3303f07e81719f61605e +TEST= 18 +KEY= 0000400000000000000000000000000000000000000000000000000000000000 +CT= a08d10e520af811f45bd60a2dc0dc4b1 +TEST= 19 +KEY= 0000200000000000000000000000000000000000000000000000000000000000 +CT= b06893a8c563c430e6f3858826efbbe4 +TEST= 20 +KEY= 0000100000000000000000000000000000000000000000000000000000000000 +CT= 0ffee26ae2d3929c6bd9c6bedff84409 +TEST= 21 +KEY= 0000080000000000000000000000000000000000000000000000000000000000 +CT= 4d0f5e906ed77801fc0ef53edc5f9e2b +TEST= 22 +KEY= 0000040000000000000000000000000000000000000000000000000000000000 +CT= 8b6ec00119ad8b026dce56ea7defe930 +TEST= 23 +KEY= 0000020000000000000000000000000000000000000000000000000000000000 +CT= 69026591d43363ee9d83b5007f0b484e +TEST= 24 +KEY= 0000010000000000000000000000000000000000000000000000000000000000 +CT= 27135d86950c6a2f86872706279a4761 +TEST= 25 +KEY= 0000008000000000000000000000000000000000000000000000000000000000 +CT= 35e6db8723f281da410c3ac8535ed77c +TEST= 26 +KEY= 0000004000000000000000000000000000000000000000000000000000000000 +CT= 57427cf214b8c28e4bbf487ccb8d0e09 +TEST= 27 +KEY= 0000002000000000000000000000000000000000000000000000000000000000 +CT= 6df01bf56e5131ac87f96e99cab86367 +TEST= 28 +KEY= 0000001000000000000000000000000000000000000000000000000000000000 +CT= 3856c5b55790b768bbf7d43031579bcf +TEST= 29 +KEY= 0000000800000000000000000000000000000000000000000000000000000000 +CT= 1e6ed8fb7c15bc4d2f63ba7037ed44d0 +TEST= 30 +KEY= 0000000400000000000000000000000000000000000000000000000000000000 +CT= e1b2ed6cd8d93d455534e401156d4bcf +TEST= 31 +KEY= 0000000200000000000000000000000000000000000000000000000000000000 +CT= efbcca5bdfdad10e875f02336212ce36 +TEST= 32 +KEY= 0000000100000000000000000000000000000000000000000000000000000000 +CT= 0b777f02fd18dce2646dcfe868dfafad +TEST= 33 +KEY= 0000000080000000000000000000000000000000000000000000000000000000 +CT= c8a104b5693d1b14f5bf1f10100bf508 +TEST= 34 +KEY= 0000000040000000000000000000000000000000000000000000000000000000 +CT= 4cce6615244afcb38408fece219962ea +TEST= 35 +KEY= 0000000020000000000000000000000000000000000000000000000000000000 +CT= f99e7845d3a255b394c9c050cba258b1 +TEST= 36 +KEY= 0000000010000000000000000000000000000000000000000000000000000000 +CT= b4afbb787f9bcfb7b55fdf447f611295 +TEST= 37 +KEY= 0000000008000000000000000000000000000000000000000000000000000000 +CT= ae1c426a697faf2808b7ef6addb5c020 +TEST= 38 +KEY= 0000000004000000000000000000000000000000000000000000000000000000 +CT= 7572f92811a85b9bdd38dead9945bcae +TEST= 39 +KEY= 0000000002000000000000000000000000000000000000000000000000000000 +CT= 71bc7aa46e43fb95a181527d9f6a360f +TEST= 40 +KEY= 0000000001000000000000000000000000000000000000000000000000000000 +CT= 5542ef2923066f1ec8f546dd0d8e7ca8 +TEST= 41 +KEY= 0000000000800000000000000000000000000000000000000000000000000000 +CT= 6b92317c7d623790b748fdd7efc42422 +TEST= 42 +KEY= 0000000000400000000000000000000000000000000000000000000000000000 +CT= 0fe7c097e899c71ef045360f8d6c25cf +TEST= 43 +KEY= 0000000000200000000000000000000000000000000000000000000000000000 +CT= 4ece7ee107d0264d04693151c25b9df6 +TEST= 44 +KEY= 0000000000100000000000000000000000000000000000000000000000000000 +CT= fd6ae687cbfca9e301045888d3bb9605 +TEST= 45 +KEY= 0000000000080000000000000000000000000000000000000000000000000000 +CT= 476b579c8556c7254424902cc1d6d36e +TEST= 46 +KEY= 0000000000040000000000000000000000000000000000000000000000000000 +CT= 4133cbcdfdd6b8860a1fc18665d6d71b +TEST= 47 +KEY= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 3b36ec2664798c108b816812c65dfdc7 +TEST= 48 +KEY= 0000000000010000000000000000000000000000000000000000000000000000 +CT= 364e20a234fea385d48dc5a09c9e70cf +TEST= 49 +KEY= 0000000000008000000000000000000000000000000000000000000000000000 +CT= 4a4ba25969de3f5ee5642c71aad0efd1 +TEST= 50 +KEY= 0000000000004000000000000000000000000000000000000000000000000000 +CT= e42cbaae43297f67a76c1c501bb79e36 +TEST= 51 +KEY= 0000000000002000000000000000000000000000000000000000000000000000 +CT= 23cededa4c15b4c037e8c61492217937 +TEST= 52 +KEY= 0000000000001000000000000000000000000000000000000000000000000000 +CT= a1719147a1f4a1a1180bd16e8593dcde +TEST= 53 +KEY= 0000000000000800000000000000000000000000000000000000000000000000 +CT= ab82337e9fb0ec60d1f25a1d0014192c +TEST= 54 +KEY= 0000000000000400000000000000000000000000000000000000000000000000 +CT= 74bf2d8fc5a8388df1a3a4d7d33fc164 +TEST= 55 +KEY= 0000000000000200000000000000000000000000000000000000000000000000 +CT= d5b493317e6fbc6fffd664b3c491368a +TEST= 56 +KEY= 0000000000000100000000000000000000000000000000000000000000000000 +CT= ba767381586da56a2a8d503d5f7ada0b +TEST= 57 +KEY= 0000000000000080000000000000000000000000000000000000000000000000 +CT= e8e6bc57dfe9ccadb0decabf4e5cf91f +TEST= 58 +KEY= 0000000000000040000000000000000000000000000000000000000000000000 +CT= 3c8e5a5cdc9ceed90815d1f84bb2998c +TEST= 59 +KEY= 0000000000000020000000000000000000000000000000000000000000000000 +CT= 283843020ba38f056001b2fd585f7cc9 +TEST= 60 +KEY= 0000000000000010000000000000000000000000000000000000000000000000 +CT= d8adc7426f623ece8741a70621d28870 +TEST= 61 +KEY= 0000000000000008000000000000000000000000000000000000000000000000 +CT= d7c5c215592d06f00e6a80da69a28ea9 +TEST= 62 +KEY= 0000000000000004000000000000000000000000000000000000000000000000 +CT= 52cf6fa433c3c870cac70190358f7f16 +TEST= 63 +KEY= 0000000000000002000000000000000000000000000000000000000000000000 +CT= f63d442a584da71786adec9f3346df75 +TEST= 64 +KEY= 0000000000000001000000000000000000000000000000000000000000000000 +CT= 549078f4b0ca7079b45f9a5adafafd99 +TEST= 65 +KEY= 0000000000000000800000000000000000000000000000000000000000000000 +CT= f2a5986ee4e9984be2bafb79ea8152fa +TEST= 66 +KEY= 0000000000000000400000000000000000000000000000000000000000000000 +CT= 8a74535017b4db2776668a1fae64384c +TEST= 67 +KEY= 0000000000000000200000000000000000000000000000000000000000000000 +CT= e613342f57a97fd95dc088711a5d0ecd +TEST= 68 +KEY= 0000000000000000100000000000000000000000000000000000000000000000 +CT= 3ffaebf6b22cf1dc82ae17cd48175b01 +TEST= 69 +KEY= 0000000000000000080000000000000000000000000000000000000000000000 +CT= bafd52efa15c248ccbf9757735e6b1ce +TEST= 70 +KEY= 0000000000000000040000000000000000000000000000000000000000000000 +CT= 7af94bc018d9ddd4539d2dd1c6f4000f +TEST= 71 +KEY= 0000000000000000020000000000000000000000000000000000000000000000 +CT= fe177ad61ca0fdb281086fba8fe76803 +TEST= 72 +KEY= 0000000000000000010000000000000000000000000000000000000000000000 +CT= 74dbea15e2e9285bad163d7d534251b6 +TEST= 73 +KEY= 0000000000000000008000000000000000000000000000000000000000000000 +CT= 23dd21331b3a92f200fe56ff050ffe74 +TEST= 74 +KEY= 0000000000000000004000000000000000000000000000000000000000000000 +CT= a69c5aa34ab20a858cafa766eaced6d8 +TEST= 75 +KEY= 0000000000000000002000000000000000000000000000000000000000000000 +CT= 3f72bb4df2a4f941a4a09cb78f04b97a +TEST= 76 +KEY= 0000000000000000001000000000000000000000000000000000000000000000 +CT= 72cc43577e1fd5fd14622d24d97fcdcc +TEST= 77 +KEY= 0000000000000000000800000000000000000000000000000000000000000000 +CT= d83af8ebe93e0b6b99cafade224937d1 +TEST= 78 +KEY= 0000000000000000000400000000000000000000000000000000000000000000 +CT= 44042329128d56caa8d084c8bd769d1e +TEST= 79 +KEY= 0000000000000000000200000000000000000000000000000000000000000000 +CT= 14102d72290de4f2c430add1ed64ba1d +TEST= 80 +KEY= 0000000000000000000100000000000000000000000000000000000000000000 +CT= 449124097b1ecd0ae7065206df06f03c +TEST= 81 +KEY= 0000000000000000000080000000000000000000000000000000000000000000 +CT= d060a99f8cc153a42e11e5f97bd7584a +TEST= 82 +KEY= 0000000000000000000040000000000000000000000000000000000000000000 +CT= 65605b3ea9261488d53e48602adea299 +TEST= 83 +KEY= 0000000000000000000020000000000000000000000000000000000000000000 +CT= c5e5cad7a208de8ea6be049efe5c7346 +TEST= 84 +KEY= 0000000000000000000010000000000000000000000000000000000000000000 +CT= 4c280c46d2181646048dd5bc0c0831a5 +TEST= 85 +KEY= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 5dd65cf37f2a0929559aabafda08e730 +TEST= 86 +KEY= 0000000000000000000004000000000000000000000000000000000000000000 +CT= 31f2335caaf264172f69a693225e6d22 +TEST= 87 +KEY= 0000000000000000000002000000000000000000000000000000000000000000 +CT= 3e28b35f99a72662590da96426dd377f +TEST= 88 +KEY= 0000000000000000000001000000000000000000000000000000000000000000 +CT= 570f40f5d7b20441486578ed344343be +TEST= 89 +KEY= 0000000000000000000000800000000000000000000000000000000000000000 +CT= c54308ad1c9e3b19f8b7417873045a8c +TEST= 90 +KEY= 0000000000000000000000400000000000000000000000000000000000000000 +CT= cbf335e39ce13ade2b696179e8fd0ce1 +TEST= 91 +KEY= 0000000000000000000000200000000000000000000000000000000000000000 +CT= 9c2fbf422355d8293083d51f4a3c18a9 +TEST= 92 +KEY= 0000000000000000000000100000000000000000000000000000000000000000 +CT= 5ed8b5a31ecefab16c9aa6986da67bce +TEST= 93 +KEY= 0000000000000000000000080000000000000000000000000000000000000000 +CT= 627815dcfc814abc75900041b1dd7b59 +TEST= 94 +KEY= 0000000000000000000000040000000000000000000000000000000000000000 +CT= 9ef3e82a50a59f166260494f7a7f2cc3 +TEST= 95 +KEY= 0000000000000000000000020000000000000000000000000000000000000000 +CT= 878cd0d8d920888b5935d6c351128737 +TEST= 96 +KEY= 0000000000000000000000010000000000000000000000000000000000000000 +CT= e44429474d6fc3084eb2a6b8b46af754 +TEST= 97 +KEY= 0000000000000000000000008000000000000000000000000000000000000000 +CT= ebaacf9641d54e1fb18d0a2be4f19be5 +TEST= 98 +KEY= 0000000000000000000000004000000000000000000000000000000000000000 +CT= 13b3bf497cee780e123c7e193dea3a01 +TEST= 99 +KEY= 0000000000000000000000002000000000000000000000000000000000000000 +CT= 6e8f381de00a41161f0df03b4155bfd4 +TEST= 100 +KEY= 0000000000000000000000001000000000000000000000000000000000000000 +CT= 35e4f29bba2bae01144910783c3fef49 +TEST= 101 +KEY= 0000000000000000000000000800000000000000000000000000000000000000 +CT= 55b17bd66788ceac366398a31f289ffb +TEST= 102 +KEY= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 11341f56c0d6d1008d28741daa7679ce +TEST= 103 +KEY= 0000000000000000000000000200000000000000000000000000000000000000 +CT= 4df7253df421d83358bdbe924745d98c +TEST= 104 +KEY= 0000000000000000000000000100000000000000000000000000000000000000 +CT= bae2ee651116d93edc8e83b5f3347be1 +TEST= 105 +KEY= 0000000000000000000000000080000000000000000000000000000000000000 +CT= f9721abd06709157183af3965a659d9d +TEST= 106 +KEY= 0000000000000000000000000040000000000000000000000000000000000000 +CT= 19a1c252a613fe2860a4ae6d75ce6fa3 +TEST= 107 +KEY= 0000000000000000000000000020000000000000000000000000000000000000 +CT= b5ddb2f5d9752c949fbde3fff5556c6e +TEST= 108 +KEY= 0000000000000000000000000010000000000000000000000000000000000000 +CT= 81b044fcffc78eccfcd171aad0405c66 +TEST= 109 +KEY= 0000000000000000000000000008000000000000000000000000000000000000 +CT= c640566d3c06020eb2c42f1d62e56a9b +TEST= 110 +KEY= 0000000000000000000000000004000000000000000000000000000000000000 +CT= ea6c4bcf425291679fdffd26a424fbcc +TEST= 111 +KEY= 0000000000000000000000000002000000000000000000000000000000000000 +CT= 57f6901465d9440d9f15ee2cba5a4090 +TEST= 112 +KEY= 0000000000000000000000000001000000000000000000000000000000000000 +CT= fbcfa74cadc7406260f63d96c8aab6b1 +TEST= 113 +KEY= 0000000000000000000000000000800000000000000000000000000000000000 +CT= dff4f096cea211d4bbdaca033d0ec7d1 +TEST= 114 +KEY= 0000000000000000000000000000400000000000000000000000000000000000 +CT= 1ee5190d551f0f42f675227a381296a9 +TEST= 115 +KEY= 0000000000000000000000000000200000000000000000000000000000000000 +CT= f98e1905012e580f097623c10b93054f +TEST= 116 +KEY= 0000000000000000000000000000100000000000000000000000000000000000 +CT= e7d43743d21dd3c9f168c86856558b9a +TEST= 117 +KEY= 0000000000000000000000000000080000000000000000000000000000000000 +CT= 632a9dda730dab67593c5d08d8ac1059 +TEST= 118 +KEY= 0000000000000000000000000000040000000000000000000000000000000000 +CT= e084317000715b9057bc9de9f3ab6124 +TEST= 119 +KEY= 0000000000000000000000000000020000000000000000000000000000000000 +CT= 61f9ef33a0bb4e666c2ed99101919fab +TEST= 120 +KEY= 0000000000000000000000000000010000000000000000000000000000000000 +CT= 6dc1d68a11834657d46703c22578d59a +TEST= 121 +KEY= 0000000000000000000000000000008000000000000000000000000000000000 +CT= 53ac1548863d3d16f1d4dc7242e05f2c +TEST= 122 +KEY= 0000000000000000000000000000004000000000000000000000000000000000 +CT= e82cd587a408306ad78ceae0916b9f8c +TEST= 123 +KEY= 0000000000000000000000000000002000000000000000000000000000000000 +CT= 0fd2d40ea6ad17a3a767f0a8600d6295 +TEST= 124 +KEY= 0000000000000000000000000000001000000000000000000000000000000000 +CT= ad84cc8255adb39dfca23f92761ae7e9 +TEST= 125 +KEY= 0000000000000000000000000000000800000000000000000000000000000000 +CT= f4f20cf7d51bee7da024a2b11a7eca0b +TEST= 126 +KEY= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 5057691b85d9ce93a193214db0a016b6 +TEST= 127 +KEY= 0000000000000000000000000000000200000000000000000000000000000000 +CT= 0f58c960876390bdef4bb6be95caa1ee +TEST= 128 +KEY= 0000000000000000000000000000000100000000000000000000000000000000 +CT= 9a3e66eebc21bc0bd9430b341ef465fa +TEST= 129 +KEY= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 20415035f34b8bcbcb28abf07f78f0d4 +TEST= 130 +KEY= 0000000000000000000000000000000040000000000000000000000000000000 +CT= ac89fc7ba10479ebf10de65bcef89b3c +TEST= 131 +KEY= 0000000000000000000000000000000020000000000000000000000000000000 +CT= 068fa75a30be443171af3f6feb1a20d2 +TEST= 132 +KEY= 0000000000000000000000000000000010000000000000000000000000000000 +CT= 50e02f213246c525a8c27700ca34b502 +TEST= 133 +KEY= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 227da47d5a0906db3ab042bb0a695fb6 +TEST= 134 +KEY= 0000000000000000000000000000000004000000000000000000000000000000 +CT= 8663ac30ed12514f1de46777f4514bfc +TEST= 135 +KEY= 0000000000000000000000000000000002000000000000000000000000000000 +CT= a987d4bc12e1de9f4b6df43567c34a8b +TEST= 136 +KEY= 0000000000000000000000000000000001000000000000000000000000000000 +CT= 6d5a0370f599aca605f63b04e5143d0c +TEST= 137 +KEY= 0000000000000000000000000000000000800000000000000000000000000000 +CT= 9809266e378b07b7afdb3baa97b7e442 +TEST= 138 +KEY= 0000000000000000000000000000000000400000000000000000000000000000 +CT= 8f753252b30cccace12d9a301f4d5090 +TEST= 139 +KEY= 0000000000000000000000000000000000200000000000000000000000000000 +CT= 032465f6c0ce34d41962f561692a1aff +TEST= 140 +KEY= 0000000000000000000000000000000000100000000000000000000000000000 +CT= c50e9ad5beb8f3b00821dd47ff8ac093 +TEST= 141 +KEY= 0000000000000000000000000000000000080000000000000000000000000000 +CT= 9c6fea3d46268d54a6829b2ad25bb276 +TEST= 142 +KEY= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 0fd8575e87706f561343d7b3a41e044a +TEST= 143 +KEY= 0000000000000000000000000000000000020000000000000000000000000000 +CT= bee9beb3739540d88cbce77925f0a114 +TEST= 144 +KEY= 0000000000000000000000000000000000010000000000000000000000000000 +CT= d24eaee7fffbac3d6f26c2dce0dcde28 +TEST= 145 +KEY= 0000000000000000000000000000000000008000000000000000000000000000 +CT= 47771a90398ff0f7fa821c2f8f5e1398 +TEST= 146 +KEY= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 4639741b6f84b135ad118c8249b64ed0 +TEST= 147 +KEY= 0000000000000000000000000000000000002000000000000000000000000000 +CT= 8ee5505ec85567697a3306f250a27720 +TEST= 148 +KEY= 0000000000000000000000000000000000001000000000000000000000000000 +CT= 7c8a19ac1aefbc5e0119d91a5f05d4c2 +TEST= 149 +KEY= 0000000000000000000000000000000000000800000000000000000000000000 +CT= 5141b9b672e54773b672e3a6c424887b +TEST= 150 +KEY= 0000000000000000000000000000000000000400000000000000000000000000 +CT= b5a2d3cd206653c6402f34fb0ae3613d +TEST= 151 +KEY= 0000000000000000000000000000000000000200000000000000000000000000 +CT= 0f5bd9408738231d114b0a82753279a3 +TEST= 152 +KEY= 0000000000000000000000000000000000000100000000000000000000000000 +CT= fef033ff4268ea487fc74c5e43a45338 +TEST= 153 +KEY= 0000000000000000000000000000000000000080000000000000000000000000 +CT= a3edc09dcd529b113910d904ad855581 +TEST= 154 +KEY= 0000000000000000000000000000000000000040000000000000000000000000 +CT= ab8fbb6f27a0ac7c55b59fdd36b72f1c +TEST= 155 +KEY= 0000000000000000000000000000000000000020000000000000000000000000 +CT= eea44d5ed4d769cc930cd83d8999ec46 +TEST= 156 +KEY= 0000000000000000000000000000000000000010000000000000000000000000 +CT= 6972276803ae9aa7c6f431ab10979c34 +TEST= 157 +KEY= 0000000000000000000000000000000000000008000000000000000000000000 +CT= 86deaa9f39244101818178474d7dbde9 +TEST= 158 +KEY= 0000000000000000000000000000000000000004000000000000000000000000 +CT= 88c6b466ea361d662d8d08cbf181f4fe +TEST= 159 +KEY= 0000000000000000000000000000000000000002000000000000000000000000 +CT= 91ab2c6b7c63ff59f7cbeebf91b20b95 +TEST= 160 +KEY= 0000000000000000000000000000000000000001000000000000000000000000 +CT= 2dfe6c146ad5b3d8c3c1718f13b48e01 +TEST= 161 +KEY= 0000000000000000000000000000000000000000800000000000000000000000 +CT= c7cff1623451711391a302eec3584aaa +TEST= 162 +KEY= 0000000000000000000000000000000000000000400000000000000000000000 +CT= 089fe845cc05011686c66019d18be050 +TEST= 163 +KEY= 0000000000000000000000000000000000000000200000000000000000000000 +CT= 08c8410b9b427211a67124b0dccead48 +TEST= 164 +KEY= 0000000000000000000000000000000000000000100000000000000000000000 +CT= 8d91592f5566085254784606334d7629 +TEST= 165 +KEY= 0000000000000000000000000000000000000000080000000000000000000000 +CT= 3298feaaf2e1201d6299ff8846639c97 +TEST= 166 +KEY= 0000000000000000000000000000000000000000040000000000000000000000 +CT= c497cb9f0bdfe0efc8c2f3f90760aa72 +TEST= 167 +KEY= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 2788afd046e0309cbe4424690da2ab89 +TEST= 168 +KEY= 0000000000000000000000000000000000000000010000000000000000000000 +CT= e9891707f25ef29fee372890d4258982 +TEST= 169 +KEY= 0000000000000000000000000000000000000000008000000000000000000000 +CT= db041d94a23d45d4d4dced5a030caf61 +TEST= 170 +KEY= 0000000000000000000000000000000000000000004000000000000000000000 +CT= ffafdbf0ecb18df9ea02c27077448e6d +TEST= 171 +KEY= 0000000000000000000000000000000000000000002000000000000000000000 +CT= 2daaa42a7d0a1d3b0e4761d99cf2150a +TEST= 172 +KEY= 0000000000000000000000000000000000000000001000000000000000000000 +CT= 3b7a54cb7cf30abe263dd6ed5bfe8d63 +TEST= 173 +KEY= 0000000000000000000000000000000000000000000800000000000000000000 +CT= eefa090174c590c448a55d43648f534a +TEST= 174 +KEY= 0000000000000000000000000000000000000000000400000000000000000000 +CT= 9e15798731ed42f43ea2740a691da872 +TEST= 175 +KEY= 0000000000000000000000000000000000000000000200000000000000000000 +CT= 31fbd661540a5deaad1017cfd3909ec8 +TEST= 176 +KEY= 0000000000000000000000000000000000000000000100000000000000000000 +CT= cda9ae05f224140e28cb951721b44d6a +TEST= 177 +KEY= 0000000000000000000000000000000000000000000080000000000000000000 +CT= 0c5bc512c60a1eac3434efb1a8fbb182 +TEST= 178 +KEY= 0000000000000000000000000000000000000000000040000000000000000000 +CT= aa863610deeeeb62d045e87ea30b59b5 +TEST= 179 +KEY= 0000000000000000000000000000000000000000000020000000000000000000 +CT= 6ac2448de568d279c7eebe1df403920c +TEST= 180 +KEY= 0000000000000000000000000000000000000000000010000000000000000000 +CT= e2011e3d292b26888ae801215fd0cb40 +TEST= 181 +KEY= 0000000000000000000000000000000000000000000008000000000000000000 +CT= e06f3e15ee3a61672d1c99bade5b9dbe +TEST= 182 +KEY= 0000000000000000000000000000000000000000000004000000000000000000 +CT= bb7027f0548cf6712ceb4c7a4b28e178 +TEST= 183 +KEY= 0000000000000000000000000000000000000000000002000000000000000000 +CT= 061ec21fb70fadbdf87c3bd2ae23825b +TEST= 184 +KEY= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 4c21f26fe94abbac381352375314c3eb +TEST= 185 +KEY= 0000000000000000000000000000000000000000000000800000000000000000 +CT= f7cee6dd99909c2b569eeda61ed8942e +TEST= 186 +KEY= 0000000000000000000000000000000000000000000000400000000000000000 +CT= ce98c4a876c65e4ccb261ebb1d9df7f5 +TEST= 187 +KEY= 0000000000000000000000000000000000000000000000200000000000000000 +CT= a5491881cf833c3604abc08044f402ac +TEST= 188 +KEY= 0000000000000000000000000000000000000000000000100000000000000000 +CT= a1ba16e64cccb3087d57a768507b0bfc +TEST= 189 +KEY= 0000000000000000000000000000000000000000000000080000000000000000 +CT= d55951e202d2949ebd3be43120c738bf +TEST= 190 +KEY= 0000000000000000000000000000000000000000000000040000000000000000 +CT= ebb8e43069e69f450efec65dcd52b7fd +TEST= 191 +KEY= 0000000000000000000000000000000000000000000000020000000000000000 +CT= 2b292135663b4aa5abfe9423d57e7ee9 +TEST= 192 +KEY= 0000000000000000000000000000000000000000000000010000000000000000 +CT= e91bf974b3be3ad966249d8655292a85 +TEST= 193 +KEY= 0000000000000000000000000000000000000000000000008000000000000000 +CT= 384365998eaa9562236cc58f6adf9610 +TEST= 194 +KEY= 0000000000000000000000000000000000000000000000004000000000000000 +CT= c2e997012aa3d4d8d359c9a947cbe69f +TEST= 195 +KEY= 0000000000000000000000000000000000000000000000002000000000000000 +CT= f49421204148ba213be87e2d5c22b0bf +TEST= 196 +KEY= 0000000000000000000000000000000000000000000000001000000000000000 +CT= 82ed0ed9953aa92e4df30929ca65c00f +TEST= 197 +KEY= 0000000000000000000000000000000000000000000000000800000000000000 +CT= 291eb1d11653c8479437c74a977f5106 +TEST= 198 +KEY= 0000000000000000000000000000000000000000000000000400000000000000 +CT= bcb997b1939b8983abd550d6025683e3 +TEST= 199 +KEY= 0000000000000000000000000000000000000000000000000200000000000000 +CT= 1fba2592c6f489775caada71f9b983e9 +TEST= 200 +KEY= 0000000000000000000000000000000000000000000000000100000000000000 +CT= 969f66f217af1a3db9e41c1b29039824 +TEST= 201 +KEY= 0000000000000000000000000000000000000000000000000080000000000000 +CT= a54bb7d6b17e423ac0a7744c19073cb8 +TEST= 202 +KEY= 0000000000000000000000000000000000000000000000000040000000000000 +CT= b0ac6e6578d1021f47dcf9748a32ead5 +TEST= 203 +KEY= 0000000000000000000000000000000000000000000000000020000000000000 +CT= b87b361c3b7b194c77a4358d4669153e +TEST= 204 +KEY= 0000000000000000000000000000000000000000000000000010000000000000 +CT= 46a133847f96eaa8282a799dc8899d58 +TEST= 205 +KEY= 0000000000000000000000000000000000000000000000000008000000000000 +CT= 2265ec3a9f2d5c9547a091cc8cfb18ea +TEST= 206 +KEY= 0000000000000000000000000000000000000000000000000004000000000000 +CT= 54cbf3a6fc4fe56d426117aa1ffd1dde +TEST= 207 +KEY= 0000000000000000000000000000000000000000000000000002000000000000 +CT= 5312877cceab6cfb0905394a370a8003 +TEST= 208 +KEY= 0000000000000000000000000000000000000000000000000001000000000000 +CT= 7190bd6ec613fe38b84ecfe28f702fe4 +TEST= 209 +KEY= 0000000000000000000000000000000000000000000000000000800000000000 +CT= d1fa5b9ca89a43b04c05f0ef29ef68cd +TEST= 210 +KEY= 0000000000000000000000000000000000000000000000000000400000000000 +CT= 808285751548ed934fd1056d2d9ae8ba +TEST= 211 +KEY= 0000000000000000000000000000000000000000000000000000200000000000 +CT= 2758def3e7b95a9ae89777be64d5a6cf +TEST= 212 +KEY= 0000000000000000000000000000000000000000000000000000100000000000 +CT= 07d81f87db3e0acc82b01e08fb22f3c1 +TEST= 213 +KEY= 0000000000000000000000000000000000000000000000000000080000000000 +CT= 8da250e5553d650711a75ee1cb4fd1c7 +TEST= 214 +KEY= 0000000000000000000000000000000000000000000000000000040000000000 +CT= a93d946bd0e87f32719df5f158cee669 +TEST= 215 +KEY= 0000000000000000000000000000000000000000000000000000020000000000 +CT= 03945236ec2a4d4eaf30b8abeb54330d +TEST= 216 +KEY= 0000000000000000000000000000000000000000000000000000010000000000 +CT= 11cc35301f24b79dde31aea2d1354f88 +TEST= 217 +KEY= 0000000000000000000000000000000000000000000000000000008000000000 +CT= e73715b3e8d9a290f44ae6ffbf247e5d +TEST= 218 +KEY= 0000000000000000000000000000000000000000000000000000004000000000 +CT= 7345e07732b71cb158bbf64cca5c5b96 +TEST= 219 +KEY= 0000000000000000000000000000000000000000000000000000002000000000 +CT= 6e128f296d24705a1924fd9b70c4ed04 +TEST= 220 +KEY= 0000000000000000000000000000000000000000000000000000001000000000 +CT= 95a789776f036783fbd330947083f54f +TEST= 221 +KEY= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 360dec2533ea4aa2e3e54fd3de2906eb +TEST= 222 +KEY= 0000000000000000000000000000000000000000000000000000000400000000 +CT= e68efd7fecf4d601ea22727bd764965b +TEST= 223 +KEY= 0000000000000000000000000000000000000000000000000000000200000000 +CT= 9065c64a8bff44ac33edbb611cf83d7b +TEST= 224 +KEY= 0000000000000000000000000000000000000000000000000000000100000000 +CT= 8f33c8df2a7a51ce8090e8f123bc3723 +TEST= 225 +KEY= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 807f391ffba8291ba625623210f99018 +TEST= 226 +KEY= 0000000000000000000000000000000000000000000000000000000040000000 +CT= 5e8b3f3a701522ce5caa761c929d6292 +TEST= 227 +KEY= 0000000000000000000000000000000000000000000000000000000020000000 +CT= 3ba404dc38735a78289e3809e8364835 +TEST= 228 +KEY= 0000000000000000000000000000000000000000000000000000000010000000 +CT= d23bedbad229f8305dc425b6b759dcc9 +TEST= 229 +KEY= 0000000000000000000000000000000000000000000000000000000008000000 +CT= 44880f21cf5913040ae376aee2a10ad8 +TEST= 230 +KEY= 0000000000000000000000000000000000000000000000000000000004000000 +CT= 9bc98e29d057c0e828c3b5cce69256c1 +TEST= 231 +KEY= 0000000000000000000000000000000000000000000000000000000002000000 +CT= b293cc7a975da141a68279368057cc41 +TEST= 232 +KEY= 0000000000000000000000000000000000000000000000000000000001000000 +CT= 8d60fb87acd91385b313be5f1d7bd30f +TEST= 233 +KEY= 0000000000000000000000000000000000000000000000000000000000800000 +CT= 2c8e56132d70291b303c48fdf75543cd +TEST= 234 +KEY= 0000000000000000000000000000000000000000000000000000000000400000 +CT= d1f80035b826791f6ce4e59b7db1bb0d +TEST= 235 +KEY= 0000000000000000000000000000000000000000000000000000000000200000 +CT= 42ce6224fc36469339a133dd08173bd4 +TEST= 236 +KEY= 0000000000000000000000000000000000000000000000000000000000100000 +CT= 61817155ea41bcba2af7f06ae7cbf585 +TEST= 237 +KEY= 0000000000000000000000000000000000000000000000000000000000080000 +CT= d1923a9866068d2ef5fb77d57c3315b6 +TEST= 238 +KEY= 0000000000000000000000000000000000000000000000000000000000040000 +CT= b37cbdb5d719f49691ca968ef2e84140 +TEST= 239 +KEY= 0000000000000000000000000000000000000000000000000000000000020000 +CT= ec974e653a055d7f8f22171030f68e1d +TEST= 240 +KEY= 0000000000000000000000000000000000000000000000000000000000010000 +CT= dde5d3b9aad9c32213bb3675a822499c +TEST= 241 +KEY= 0000000000000000000000000000000000000000000000000000000000008000 +CT= d3b6e9216ea1ae57eb1c628a3c38ab78 +TEST= 242 +KEY= 0000000000000000000000000000000000000000000000000000000000004000 +CT= 82c99ecc69472b7e96324b042ae8b87a +TEST= 243 +KEY= 0000000000000000000000000000000000000000000000000000000000002000 +CT= 97144dc5338c43600f84439c0aa0d147 +TEST= 244 +KEY= 0000000000000000000000000000000000000000000000000000000000001000 +CT= 400ac4a0bbada1db2121eb144c7e5209 +TEST= 245 +KEY= 0000000000000000000000000000000000000000000000000000000000000800 +CT= efd9d550eb419ed278f4885a490ab54c +TEST= 246 +KEY= 0000000000000000000000000000000000000000000000000000000000000400 +CT= 2ab7816e149b7c0404c88a8857793670 +TEST= 247 +KEY= 0000000000000000000000000000000000000000000000000000000000000200 +CT= 5b591dff9e8dee15bad24c025dbca481 +TEST= 248 +KEY= 0000000000000000000000000000000000000000000000000000000000000100 +CT= 0c06633e30721c3749f49ad8cbf2b754 +TEST= 249 +KEY= 0000000000000000000000000000000000000000000000000000000000000080 +CT= 96d6d31a41b5123b2035fd91a921d4ca +TEST= 250 +KEY= 0000000000000000000000000000000000000000000000000000000000000040 +CT= e7f6c34d86668bc2805ca7793c5e86ad +TEST= 251 +KEY= 0000000000000000000000000000000000000000000000000000000000000020 +CT= f46dff5ff500d6879c4d3e45cf0cf0f3 +TEST= 252 +KEY= 0000000000000000000000000000000000000000000000000000000000000010 +CT= 60d842d9c61da7495c116197b7cecbbe +TEST= 253 +KEY= 0000000000000000000000000000000000000000000000000000000000000008 +CT= d45b24edb673353ebdf248b8fa06b67a +TEST= 254 +KEY= 0000000000000000000000000000000000000000000000000000000000000004 +CT= 119eaebcc165d0bd02c0d35dc82ef992 +TEST= 255 +KEY= 0000000000000000000000000000000000000000000000000000000000000002 +CT= e673143680414ada301d0ed34626b9fe +TEST= 256 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 6b6cfe160a6263631b292f879eeff926 diff --git a/flint/test/testvals/ecbvk64.txt b/flint/test/testvals/ecbvk64.txt new file mode 100644 index 0000000..7c90309 --- /dev/null +++ b/flint/test/testvals/ecbvk64.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= a92732eb488d8bb98ecd8d95dc9c02e052f250ad369b3849 +TEST= 1 +KEY= 80000000000000000000000000000000 +CT= 06a2d21e6032777963cb2d66cd92179c32f92923e54f32b0 +TEST= 2 +KEY= 40000000000000000000000000000000 +CT= 300e1ed560c9ecbac2642c792ac996adcd6c767b5f743301 +TEST= 3 +KEY= 20000000000000000000000000000000 +CT= 9f2b6374b9ff710b5d6ef1dc268c801178ff7952749664e1 +TEST= 4 +KEY= 10000000000000000000000000000000 +CT= b43b766c038f15b9159a19b294f149566d70a6daddd5eb2d +TEST= 5 +KEY= 08000000000000000000000000000000 +CT= 37e6fc554372a79bb4b1c192a4016cb06315ed4d478f5d48 +TEST= 6 +KEY= 04000000000000000000000000000000 +CT= dbc23a11efe695ae489d358e5edddec39b0f9fccd64d24f3 +TEST= 7 +KEY= 02000000000000000000000000000000 +CT= 0561298b101f669e8b85282527426013099ce771e9ade846 +TEST= 8 +KEY= 01000000000000000000000000000000 +CT= 023a67f4591abd1dc00c5abebebe0397a3b347451ad3112d +TEST= 9 +KEY= 00800000000000000000000000000000 +CT= 6031429c0b3e3562153baa0d5445c16d1e177def4a5d2835 +TEST= 10 +KEY= 00400000000000000000000000000000 +CT= aae3e00db54b019b287bf4e4bd3b01118e344b45dfc45a24 +TEST= 11 +KEY= 00200000000000000000000000000000 +CT= b272c45a8a98610c7a041360da320a2d1dc8ffeaa54d18aa +TEST= 12 +KEY= 00100000000000000000000000000000 +CT= 3b487700c8a9f2ca2739c4fe3c6b7707d6df5f2418801b86 +TEST= 13 +KEY= 00080000000000000000000000000000 +CT= d542f7b7d9f95d9bca90583dec4eaa751acc30317494aaa5 +TEST= 14 +KEY= 00040000000000000000000000000000 +CT= ec9e0658875e85f2415a9d46b671e2b84cd597d9e5e87287 +TEST= 15 +KEY= 00020000000000000000000000000000 +CT= 33bb0c3f64647063fddfcb15018e428bc7c7e861e1c8358f +TEST= 16 +KEY= 00010000000000000000000000000000 +CT= 0b77f71f46efdb4f6a480eb1cedcb3f249e3b165a102cac7 +TEST= 17 +KEY= 00008000000000000000000000000000 +CT= 83af3e3243eafddc48dc16c93b4daa15378241b81314abe1 +TEST= 18 +KEY= 00004000000000000000000000000000 +CT= 355d16e077193f2e0e2676d87798cbed96a44afd64e288b0 +TEST= 19 +KEY= 00002000000000000000000000000000 +CT= 02a6b297748c490a47036630e1fa3bb780b135acd88164fc +TEST= 20 +KEY= 00001000000000000000000000000000 +CT= f0e5b40a5adbe4bbe034d9429ec1debc54a99aaa9aa7a224 +TEST= 21 +KEY= 00000800000000000000000000000000 +CT= 29917af494517f3bde2bdd5121206b7b7f70fd3522074e4d +TEST= 22 +KEY= 00000400000000000000000000000000 +CT= fbe95e9fb4da8786b0f111ca64621690f94eff5c0da244f5 +TEST= 23 +KEY= 00000200000000000000000000000000 +CT= 1e7cd93ce615cc1625639e502f34e2dab5f08948e003c4d3 +TEST= 24 +KEY= 00000100000000000000000000000000 +CT= 6a726784998fa073d8ba8436c7b281c1bb73db997468f034 +TEST= 25 +KEY= 00000080000000000000000000000000 +CT= fa93129fb3ebea49f7847c4aeb7370777ffe46dfc08ee027 +TEST= 26 +KEY= 00000040000000000000000000000000 +CT= d818484dcd3a4f6250784de928846ca37f6da95b939622f8 +TEST= 27 +KEY= 00000020000000000000000000000000 +CT= af14ad4be7e8e4e9317f79311f01e06ee3226b0526b35a29 +TEST= 28 +KEY= 00000010000000000000000000000000 +CT= 4e9deb27d69f720f7db5efd71d680aceea4a295467be8241 +TEST= 29 +KEY= 00000008000000000000000000000000 +CT= 755b4cc972a4109c5a4fe375a024d09878d7a2eadf33b88e +TEST= 30 +KEY= 00000004000000000000000000000000 +CT= 9010a8f8e8f0691a3075b174110a1bfd56008c01f9ab5f13 +TEST= 31 +KEY= 00000002000000000000000000000000 +CT= dcdddc819835d1503ac13b8848fd6c4d1e3b003b47eb000a +TEST= 32 +KEY= 00000001000000000000000000000000 +CT= fcdd31b6ce1a5d3ccbddb311ed37eb5da3950c964cdd9c52 +TEST= 33 +KEY= 00000000800000000000000000000000 +CT= 13646518f5ec2c5aaa307cdaa99577b4bf8bdb8d58c97764 +TEST= 34 +KEY= 00000000400000000000000000000000 +CT= 41735cfa519fdef434f39da2d7662e201eb8ffd3b63ca321 +TEST= 35 +KEY= 00000000200000000000000000000000 +CT= e8bca573a177630e8847bc3c541ed18782eedf322fed1bfa +TEST= 36 +KEY= 00000000100000000000000000000000 +CT= a36055529f2b47f1d6d23d698c16cbf8ca245373d69b3556 +TEST= 37 +KEY= 00000000080000000000000000000000 +CT= f9a8ed32221dc7896bbb01d19f84a4b90901e2efd70108fb +TEST= 38 +KEY= 00000000040000000000000000000000 +CT= b6d56d4421821e338740b2423946d38e70cca2d15ee0e65f +TEST= 39 +KEY= 00000000020000000000000000000000 +CT= 3640be75ef97484480ddc5dd11b15f4c20ecae39587889c9 +TEST= 40 +KEY= 00000000010000000000000000000000 +CT= 8432c65de4f6206e72c33cfb42b18e550c9609a4d0d41b90 +TEST= 41 +KEY= 00000000008000000000000000000000 +CT= c22af7962cc904aada29a57b1ea160bf694ace385132deaf +TEST= 42 +KEY= 00000000004000000000000000000000 +CT= c7aa4d54476b20246a8eac6a5bb08a4975df78b573e461c5 +TEST= 43 +KEY= 00000000002000000000000000000000 +CT= 8b768aae972d05fe351b60a67c2f2d7e0a72b3734ff06cdd +TEST= 44 +KEY= 00000000001000000000000000000000 +CT= 7dab6fad735435c54b7dcc42af7c7346feb08112c4486d40 +TEST= 45 +KEY= 00000000000800000000000000000000 +CT= 213401244cdb1f78b98189cdb7d74f7b28e9f9cbc8fcbd20 +TEST= 46 +KEY= 00000000000400000000000000000000 +CT= dae8b97f7356f4a2a65f2f989ce53b32e0f580e01ef7d4de +TEST= 47 +KEY= 00000000000200000000000000000000 +CT= 871d273663a0db6be9928e4cef318b3d608115cfe0a1e327 +TEST= 48 +KEY= 00000000000100000000000000000000 +CT= 52e6d5ec89bc5fd2e3bb97a5791b320f59ab46ae298e5f83 +TEST= 49 +KEY= 00000000000080000000000000000000 +CT= 4c84e17f30e85949ec287ea75fb153c23f643dbd0b368da9 +TEST= 50 +KEY= 00000000000040000000000000000000 +CT= 079a4b4b565bc01605ca960f9c82ae3b5172afa1d7e38a60 +TEST= 51 +KEY= 00000000000020000000000000000000 +CT= b010f56a57404cbe8a226e72c2827d004da6c9a0bd831f91 +TEST= 52 +KEY= 00000000000010000000000000000000 +CT= 87d2c838c3173fb6bb739c5397c30ab1bda1b50deaaeadca +TEST= 53 +KEY= 00000000000008000000000000000000 +CT= 3f527cb9a3fda8d636a3a08c8543988958c9cb85b7e6824c +TEST= 54 +KEY= 00000000000004000000000000000000 +CT= 25efa8a2be6772d6efa9a1910884b78e8255ea6ffdb8dfeb +TEST= 55 +KEY= 00000000000002000000000000000000 +CT= 71e8fea125fb2f3e193085d81f92638ec105dee748eae6b6 +TEST= 56 +KEY= 00000000000001000000000000000000 +CT= e0f516c028f30dde493bd9cbd5fc534bd2aea7ebc5b4c148 +TEST= 57 +KEY= 00000000000000800000000000000000 +CT= 15568ca9350eabca101b3403afc66e3ca55f583dc986e328 +TEST= 58 +KEY= 00000000000000400000000000000000 +CT= 5fe4c4cb3c8163993e7b1206d0483a281449cee042f8cc23 +TEST= 59 +KEY= 00000000000000200000000000000000 +CT= 793e784635e751bbaf220267a335da24d2ab0ca426535749 +TEST= 60 +KEY= 00000000000000100000000000000000 +CT= 1512a79db2bdec3f837997e94d3f03bab3d6c31a26354335 +TEST= 61 +KEY= 00000000000000080000000000000000 +CT= 4a03c79a5d928e8df3d95c4a218e20ccae2bd66f93853685 +TEST= 62 +KEY= 00000000000000040000000000000000 +CT= cac0acf28057c42ded6c0b19f905aefbe7f15ef5f6b0f510 +TEST= 63 +KEY= 00000000000000020000000000000000 +CT= 6bce59959794601b7d84758142b4133d2d1de200bab79a51 +TEST= 64 +KEY= 00000000000000010000000000000000 +CT= 661b2727becb2d1083820294030461a20d2cabd6806cc7f8 +TEST= 65 +KEY= 00000000000000008000000000000000 +CT= 38945abc9f301fe4b7acf50f5182ff5c2be166370a4cb8f0 +TEST= 66 +KEY= 00000000000000004000000000000000 +CT= a5b455c534114e54b1d377cd8b7a617cf2adc7ca10b46303 +TEST= 67 +KEY= 00000000000000002000000000000000 +CT= a58fbe2911b1cad2aa4c02f0e70e266506aed93a51c0339b +TEST= 68 +KEY= 00000000000000001000000000000000 +CT= 8621194f950f50f715b464c9649bf9f7a59b02118686cd61 +TEST= 69 +KEY= 00000000000000000800000000000000 +CT= 1dc385a23de9a995b4a3f5a1f5a4e410716bcfea14d06cdc +TEST= 70 +KEY= 00000000000000000400000000000000 +CT= fd59f1ef6695d75fbee742db89f558a756bf20e9164b3bb1 +TEST= 71 +KEY= 00000000000000000200000000000000 +CT= 5b05fde7894bf4c15da864f5f0fefb4e8dc03c3062cf106a +TEST= 72 +KEY= 00000000000000000100000000000000 +CT= 3cb06db0e04c16fba70a233835c5a1e0fd899a6a7fe12603 +TEST= 73 +KEY= 00000000000000000080000000000000 +CT= 853b98dd5b5675f45f745f507b164c3317e15faffc71fec7 +TEST= 74 +KEY= 00000000000000000040000000000000 +CT= 7558be4be662cc6f64364b628d405298dd31900929a11398 +TEST= 75 +KEY= 00000000000000000020000000000000 +CT= dfc084bb18270d709abf2afec60e87765e76b5949a81f692 +TEST= 76 +KEY= 00000000000000000010000000000000 +CT= f4c0d99fe78b31de838b3cb4e72d420c12e46e4ac84ab27e +TEST= 77 +KEY= 00000000000000000008000000000000 +CT= cd79da9ae337a40d8e18b4fe82091b37ef7de8772cf26572 +TEST= 78 +KEY= 00000000000000000004000000000000 +CT= 4f0aea49ce91bd702ae5103cf2466566866153b5b7f3992b +TEST= 79 +KEY= 00000000000000000002000000000000 +CT= badf598fed2d271066ab6736fbdd124db25a72cb8e27a97a +TEST= 80 +KEY= 00000000000000000001000000000000 +CT= 2951d7d81db9033c9442300d1abf641980f7d19e158a5646 +TEST= 81 +KEY= 00000000000000000000800000000000 +CT= 855031cf3d1de1109aba0ad1c4b6aebf4c1ee9fdedfb4c7a +TEST= 82 +KEY= 00000000000000000000400000000000 +CT= bfa1fb808817c5e0dc22f2249b79dc79e8f0e27206b36010 +TEST= 83 +KEY= 00000000000000000000200000000000 +CT= 349cfa798235fc1dc9cfc14f93eeedf615071e428d7a2b3a +TEST= 84 +KEY= 00000000000000000000100000000000 +CT= c3ab1efc10db33c84e1582c89c027b6ff5aa7f89903eb1cc +TEST= 85 +KEY= 00000000000000000000080000000000 +CT= a97aee681118d821241fb4c29cbefa1ec6959fbdcb5eeb13 +TEST= 86 +KEY= 00000000000000000000040000000000 +CT= d205f67fd81132178c94084680542d87f0482932b3b5ec4b +TEST= 87 +KEY= 00000000000000000000020000000000 +CT= b8674567b84de9950acaf9aacd96852f07922410b00a1aaa +TEST= 88 +KEY= 00000000000000000000010000000000 +CT= 1822a777f228eff67cc08a64431f53a74439a3283c085edf +TEST= 89 +KEY= 00000000000000000000008000000000 +CT= 50e5ff45887003d68c57db31453764b78509bb799b8e6041 +TEST= 90 +KEY= 00000000000000000000004000000000 +CT= 7029caf2a53ede142fbc83e60ab7bb3cec5a52cec2e49efb +TEST= 91 +KEY= 00000000000000000000002000000000 +CT= 5c8b9fbf44e278ca2e5fc5ffbd078680af6db7a8b9b3c0f5 +TEST= 92 +KEY= 00000000000000000000001000000000 +CT= 98017bff6d5111d90688e53f0842931d0424c3cfc571698e +TEST= 93 +KEY= 00000000000000000000000800000000 +CT= 7bcc4e004c0f8c961160938163cf8478ca1b690373add938 +TEST= 94 +KEY= 00000000000000000000000400000000 +CT= a6c00b80464936762d7c3509c757464af8a288215b1f7244 +TEST= 95 +KEY= 00000000000000000000000200000000 +CT= 1dd4ebfce894b78dddf025d5ac233700bd20201bccfbe54b +TEST= 96 +KEY= 00000000000000000000000100000000 +CT= 9310d3b4536f0d64fa558882074560d10bd06bb75fd56cc3 +TEST= 97 +KEY= 00000000000000000000000080000000 +CT= 2094170d2040f487ea9bc5c215d27c6e1ab0fe5343141fe4 +TEST= 98 +KEY= 00000000000000000000000040000000 +CT= a418f6e5aaa25fa1f4b80578fcfa9d6804d58867860cf4ac +TEST= 99 +KEY= 00000000000000000000000020000000 +CT= 4c682c9f1714ceb668670c875feddc3d985e39e84cd74e4d +TEST= 100 +KEY= 00000000000000000000000010000000 +CT= 9c26cd164e729b75dd6f7ea4e080547999bc2294ee80fe58 +TEST= 101 +KEY= 00000000000000000000000008000000 +CT= 9e01569d4d50787bb9b1301d3bc7eff70e12ac03b52eb628 +TEST= 102 +KEY= 00000000000000000000000004000000 +CT= e1fb3ce412d4f252466a0746bdc220bb6f065d6abe3daf56 +TEST= 103 +KEY= 00000000000000000000000002000000 +CT= 886c9f84f28f6fe305ce3011c06af8b25a7dce901199f955 +TEST= 104 +KEY= 00000000000000000000000001000000 +CT= 85cef223753e6e7447fac328c9a3aeb9e8b1c5d1ec61afbf +TEST= 105 +KEY= 00000000000000000000000000800000 +CT= a97676b1e75c3ac81aab1a3029acb12c380235d4f0d5e117 +TEST= 106 +KEY= 00000000000000000000000000400000 +CT= de863bbc787209430e59eb1d6b1f068305747adec160429a +TEST= 107 +KEY= 00000000000000000000000000200000 +CT= a96163f4af353b64cf9cf316af8368117becda0dbd062cfb +TEST= 108 +KEY= 00000000000000000000000000100000 +CT= 72d6568384a8780c01f4ca05068aac908869e23c2d60fa95 +TEST= 109 +KEY= 00000000000000000000000000080000 +CT= c14358b98e320e29b644d0f3911a7df495def71e98637c7c +TEST= 110 +KEY= 00000000000000000000000000040000 +CT= ff94112e4c649771d2632d17a63c730018a03da1a6f4f348 +TEST= 111 +KEY= 00000000000000000000000000020000 +CT= 258939644de617232b26a07c55b2507ebf0b8498642e01eb +TEST= 112 +KEY= 00000000000000000000000000010000 +CT= 629989f706395cdf0175522221f414d39898a80dee8023c0 +TEST= 113 +KEY= 00000000000000000000000000008000 +CT= 00b582147721d33893f3a9bd51137fa8e871739e75451ed4 +TEST= 114 +KEY= 00000000000000000000000000004000 +CT= da6a2b0e9a2b9b21473265a52fcee7233e0e334a1ba0e38d +TEST= 115 +KEY= 00000000000000000000000000002000 +CT= ef25fe9bd5f9dc5433c626fb9814248c8c3f0f1307b5b5dd +TEST= 116 +KEY= 00000000000000000000000000001000 +CT= d568f9c552a2229382264210c5fddb37636eaaa97864e3d5 +TEST= 117 +KEY= 00000000000000000000000000000800 +CT= a9c222d44d81abf88668094208e35480bf96e0bc6c9053e5 +TEST= 118 +KEY= 00000000000000000000000000000400 +CT= 58b072272ab733ea8eb388a4af263c153382b74934a4c7c0 +TEST= 119 +KEY= 00000000000000000000000000000200 +CT= d5255246cc1e0639af7099c1b3c593ab5da8c2ba3c6b17ed +TEST= 120 +KEY= 00000000000000000000000000000100 +CT= 503ffaa327daf06dda848ba6cd857f4cb14a705b4cfeda82 +TEST= 121 +KEY= 00000000000000000000000000000080 +CT= 016867aa9c79fa678fc920d3e09ca25cf14d76f73cddcbbd +TEST= 122 +KEY= 00000000000000000000000000000040 +CT= 18d2dfbc2e192f9c15eb00c255cdf8939715dec330223d03 +TEST= 123 +KEY= 00000000000000000000000000000020 +CT= 7b70abb305e4e5bda2552fbe37a583a3bf67ba9be2f990ed +TEST= 124 +KEY= 00000000000000000000000000000010 +CT= f43a383460233bf2bf70548cc1ba4bba2f709f47aa8587ab +TEST= 125 +KEY= 00000000000000000000000000000008 +CT= 7d6888561728a0138eb50cc65d62b8b1ea69b5d3f78d4480 +TEST= 126 +KEY= 00000000000000000000000000000004 +CT= 56e506262ba2b1ecf9a5c7e1944fbaa91d6a05c40bef769d +TEST= 127 +KEY= 00000000000000000000000000000002 +CT= 378ed24889b77639afcf688c25fc4ee6930414f3336e14cd +TEST= 128 +KEY= 00000000000000000000000000000001 +CT= 20eca6a356f99b76695c4bb84af26f82e62f77d65d8f46bc diff --git a/flint/test/testvals/ecbvk66.txt b/flint/test/testvals/ecbvk66.txt new file mode 100644 index 0000000..ca173b3 --- /dev/null +++ b/flint/test/testvals/ecbvk66.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= c6348be20007bac4a8bd62890c8147a2432e760e9a9f9ab8 +TEST= 1 +KEY= 800000000000000000000000000000000000000000000000 +CT= 564d36fdeb8bf7e275f010b2f5ee69cfeae67ea0e37e3209 +TEST= 2 +KEY= 400000000000000000000000000000000000000000000000 +CT= 90ccbc988c12fc076e976f650a82eb216f84c9fca1e2eb5c +TEST= 3 +KEY= 200000000000000000000000000000000000000000000000 +CT= 10ba36374c245661bf08677196dbe0cbfe3906adc4120b5a +TEST= 4 +KEY= 100000000000000000000000000000000000000000000000 +CT= 5f46f8bf8c1fb6bf9bb8374a51aead075ccfe746c39fd000 +TEST= 5 +KEY= 080000000000000000000000000000000000000000000000 +CT= efeab1dfd943e17b530140fbc05f03aab2629943d9639d76 +TEST= 6 +KEY= 040000000000000000000000000000000000000000000000 +CT= 25e4c419721fccdfcee346ded46f4fce4a195e3b4544f168 +TEST= 7 +KEY= 020000000000000000000000000000000000000000000000 +CT= 9bfaa22e81f74f57116eb408492e042de7e6dc763775e17c +TEST= 8 +KEY= 010000000000000000000000000000000000000000000000 +CT= 975bf14b5000f464014560b1f214558c3fbd18e4bb58f631 +TEST= 9 +KEY= 008000000000000000000000000000000000000000000000 +CT= ecd338bf18755c836b1a6100c812d6a3563b21c65488629b +TEST= 10 +KEY= 004000000000000000000000000000000000000000000000 +CT= 5cd0eff844c037883fdf1d3e19469ec8bc00b1f366138d54 +TEST= 11 +KEY= 002000000000000000000000000000000000000000000000 +CT= 870cc18b4bbe44d1a78c43ce96f0d6c69dacbc5f81639f40 +TEST= 12 +KEY= 001000000000000000000000000000000000000000000000 +CT= b9a0aa967027e1b039e5d3fa85b2ee599d6979a044ebfe21 +TEST= 13 +KEY= 000800000000000000000000000000000000000000000000 +CT= 69b3109cbeef48c2ed76a5efb365675e0e3b102fb9d61291 +TEST= 14 +KEY= 000400000000000000000000000000000000000000000000 +CT= 0628c9a437237bd5719bacce19aa0c87386ee5013cd970fb +TEST= 15 +KEY= 000200000000000000000000000000000000000000000000 +CT= fead946468d37a053393d0931d41be6f142b30c8c5a64c06 +TEST= 16 +KEY= 000100000000000000000000000000000000000000000000 +CT= 2f1bddee08ee45469874a68dc8d4d4f2b1bd728b52f05bd4 +TEST= 17 +KEY= 000080000000000000000000000000000000000000000000 +CT= d9d4620d17634bf619633e4511d2565a1a6263279820a8bf +TEST= 18 +KEY= 000040000000000000000000000000000000000000000000 +CT= 1959193c7c51bb29d297ddc3a4c09243db8d9455f2be2bb1 +TEST= 19 +KEY= 000020000000000000000000000000000000000000000000 +CT= 81706cc8753a7d5dc8653cdacab5488bcabd9f3e19cf819d +TEST= 20 +KEY= 000010000000000000000000000000000000000000000000 +CT= 4adb8dabd314ba208b7adcb69f2757afa44a2141972c7422 +TEST= 21 +KEY= 000008000000000000000000000000000000000000000000 +CT= 7280fd30362988e3fd09b16e1c2c30bb6d36f5c3a9623a88 +TEST= 22 +KEY= 000004000000000000000000000000000000000000000000 +CT= c084722599a335770c2d5ebe2339cab5f7512d3b3d23b8c1 +TEST= 23 +KEY= 000002000000000000000000000000000000000000000000 +CT= 6e2ff560405b8e3af57dd41a96abe4e79a26526bfa37a086 +TEST= 24 +KEY= 000001000000000000000000000000000000000000000000 +CT= 0643ff3ae8d8e82c45666a45bcf727dd40f6f83aef38fcb5 +TEST= 25 +KEY= 000000800000000000000000000000000000000000000000 +CT= d23714a2b5fa08a009c23e5facd307962c61e88748e4396a +TEST= 26 +KEY= 000000400000000000000000000000000000000000000000 +CT= 54775ea115f3f011bef403bcb1022013e639da7594e0cf8c +TEST= 27 +KEY= 000000200000000000000000000000000000000000000000 +CT= f2503b0114ab8a4a921a4f5d83ff542994742e64c841f39e +TEST= 28 +KEY= 000000100000000000000000000000000000000000000000 +CT= c01482674db749ee5be16e136f36e162b35df9fe9b42fbe1 +TEST= 29 +KEY= 000000080000000000000000000000000000000000000000 +CT= b409716cffa223def936171986033291f006326515177838 +TEST= 30 +KEY= 000000040000000000000000000000000000000000000000 +CT= 58b6fd5f4c7082c8de2d0eaa269074cdc3552684e445fa9d +TEST= 31 +KEY= 000000020000000000000000000000000000000000000000 +CT= 133f3039b5aa70455f6e7a106fb7e7836288af327fd23d11 +TEST= 32 +KEY= 000000010000000000000000000000000000000000000000 +CT= bf7fc93f2a2038b3c044105ba80cb1a508e4bbcfe0dd51d5 +TEST= 33 +KEY= 000000008000000000000000000000000000000000000000 +CT= bc8399759cb22a816bd2b99292169a8b34a3b576a3064a8c +TEST= 34 +KEY= 000000004000000000000000000000000000000000000000 +CT= 9b650c799b495aa4c7175554a889cfc12f4b731da0855f51 +TEST= 35 +KEY= 000000002000000000000000000000000000000000000000 +CT= 196ea369e243247c21058829ebe443721808fb8ab76aab95 +TEST= 36 +KEY= 000000001000000000000000000000000000000000000000 +CT= 96d7ba777e09f738cdb31a4ccc07b32dd19781bbcf8bda12 +TEST= 37 +KEY= 000000000800000000000000000000000000000000000000 +CT= b6a98095b40f52d5ea04d4663e5776b2fbf5be21b434e306 +TEST= 38 +KEY= 000000000400000000000000000000000000000000000000 +CT= 0eba2d168d919bb95e27d2a8b54ee9760a181b483b285d2f +TEST= 39 +KEY= 000000000200000000000000000000000000000000000000 +CT= 4cdd725c54491fceec2e7a7302f91242e7da925e39b35247 +TEST= 40 +KEY= 000000000100000000000000000000000000000000000000 +CT= e84a5ef2693c5a73e409def7d79171462999d3b937cb9f6d +TEST= 41 +KEY= 000000000080000000000000000000000000000000000000 +CT= 3795c71063cc6b0f6fbde9fdff80072dc12b198d641a44a6 +TEST= 42 +KEY= 000000000040000000000000000000000000000000000000 +CT= 17cab87ce01b18f238f70c144472fdd5ff43959c990395f3 +TEST= 43 +KEY= 000000000020000000000000000000000000000000000000 +CT= a9e1a302ef44c7656b0855abf008717274c0b77ac1c61141 +TEST= 44 +KEY= 000000000010000000000000000000000000000000000000 +CT= 7ed3172749b16faa331a758c90caa9d249c99d411dbee264 +TEST= 45 +KEY= 000000000008000000000000000000000000000000000000 +CT= 7db2980e871d35627548aff7651e03540c5e8d287eb68acb +TEST= 46 +KEY= 000000000004000000000000000000000000000000000000 +CT= 19c6d730d28ee4b0ef68c7d6e6214d582aca746de58b4c3b +TEST= 47 +KEY= 000000000002000000000000000000000000000000000000 +CT= abc79ee6f801f8f916b47a07de50d3578d8c782c58a753ca +TEST= 48 +KEY= 000000000001000000000000000000000000000000000000 +CT= 5d5ef6aa3ab528fc498683f50b98053f5ea6c799d0a0cc3e +TEST= 49 +KEY= 000000000000800000000000000000000000000000000000 +CT= 235060c7dee707d34a80d4b0571ef4a206ca9b2544d2571d +TEST= 50 +KEY= 000000000000400000000000000000000000000000000000 +CT= 72d697cf127ecd781d7747d585c88cc52ba2427a8d85a325 +TEST= 51 +KEY= 000000000000200000000000000000000000000000000000 +CT= fa4859951bc4fceba0cba5c26e5ad58140dc4236ca79882d +TEST= 52 +KEY= 000000000000100000000000000000000000000000000000 +CT= 0f7b6a967f8d72c282d8f2918f734f1065bb3eeef132f8dd +TEST= 53 +KEY= 000000000000080000000000000000000000000000000000 +CT= 0421dbe373a6c60844b19d8d50b4575388a30df98af5fe17 +TEST= 54 +KEY= 000000000000040000000000000000000000000000000000 +CT= 08fb4cb46fce757d2127044dec52742703c73a79266630c5 +TEST= 55 +KEY= 000000000000020000000000000000000000000000000000 +CT= 710f7ff046ae7ca689256bd60cbd800e193cac58c02c836c +TEST= 56 +KEY= 000000000000010000000000000000000000000000000000 +CT= f8aa53e586038e27cf9e9448b94bf9ea2b3319ff3b7a7467 +TEST= 57 +KEY= 000000000000008000000000000000000000000000000000 +CT= ae5d88d60b04067396e6a1708e7990ab1e45b8f9dc047e2e +TEST= 58 +KEY= 000000000000004000000000000000000000000000000000 +CT= d7acdbce3c8624431deb20bc2cfef3ef04d95c793e3e191a +TEST= 59 +KEY= 000000000000002000000000000000000000000000000000 +CT= d856f14f867427c876875eb400661cc14661be3b94c30a72 +TEST= 60 +KEY= 000000000000001000000000000000000000000000000000 +CT= 4b29ef392226f83058be945331b1f84aa3acaa0ac789e7f9 +TEST= 61 +KEY= 000000000000000800000000000000000000000000000000 +CT= 1ef887297e25a6dabc296f63bfcbfc36b4de08d74cb9bfa0 +TEST= 62 +KEY= 000000000000000400000000000000000000000000000000 +CT= 7416602b4ecd735918e3bd14f3d94cffb648843325e5c07f +TEST= 63 +KEY= 000000000000000200000000000000000000000000000000 +CT= b19dbedfa819d663a054bdad2f48b768028841190b4f24cd +TEST= 64 +KEY= 000000000000000100000000000000000000000000000000 +CT= 415b57b0ccfe9fba50302358ac24a704d9afb08ff15248dd +TEST= 65 +KEY= 000000000000000080000000000000000000000000000000 +CT= 7aa2b3e8d47b860941cdbccf551284f9de93d77151854ad9 +TEST= 66 +KEY= 000000000000000040000000000000000000000000000000 +CT= 2c24f9fe80966ab898c64947404c35ab813a99c7a4768c59 +TEST= 67 +KEY= 000000000000000020000000000000000000000000000000 +CT= af5b21686f8deaace1c84b16290ad8be021da6b7b85d3dea +TEST= 68 +KEY= 000000000000000010000000000000000000000000000000 +CT= aaa48e39906d49d360d0a475cf4a75b8b235afb34121494a +TEST= 69 +KEY= 000000000000000008000000000000000000000000000000 +CT= 3a48507b8d846d0b657c130e80227b9373657993d45f4f2e +TEST= 70 +KEY= 000000000000000004000000000000000000000000000000 +CT= 70229d549f05babc775f72965926686ecec4d5439b50b552 +TEST= 71 +KEY= 000000000000000002000000000000000000000000000000 +CT= 2d0881c1257354c714dfe3255d13604a6569fa249106a610 +TEST= 72 +KEY= 000000000000000001000000000000000000000000000000 +CT= ac5794d702c2399753a72217aab70e53e0b2ba4270391432 +TEST= 73 +KEY= 000000000000000000800000000000000000000000000000 +CT= 3ce6ee4b86082b175d488038f1228e810e71c7ba7cb35640 +TEST= 74 +KEY= 000000000000000000400000000000000000000000000000 +CT= 92033c2df33604abb2efd784af9812b05b39da92783de8f8 +TEST= 75 +KEY= 000000000000000000200000000000000000000000000000 +CT= 40b682c51abd3026c68cce4cf9de217b706b33ed72b8fff5 +TEST= 76 +KEY= 000000000000000000100000000000000000000000000000 +CT= 57e4ab110f58001523e6ac28d0b5dcfde2e53cf558181e76 +TEST= 77 +KEY= 000000000000000000080000000000000000000000000000 +CT= f21abc6db909ffc9726ef1044e2a84fd542ffc4e87c131a2 +TEST= 78 +KEY= 000000000000000000040000000000000000000000000000 +CT= 6172f42db01683b17be6ccad2720a37b7e0f3b7f3a116a0f +TEST= 79 +KEY= 000000000000000000020000000000000000000000000000 +CT= 14365505c5a5dfb5bf0971555494ebfa8590ffc7f8279e4d +TEST= 80 +KEY= 000000000000000000010000000000000000000000000000 +CT= a6333c8b8b5f0c1b7cbbdd88e5204e2c84009d510db7e9d4 +TEST= 81 +KEY= 000000000000000000008000000000000000000000000000 +CT= aaa550fd0b88a47c4639bca8419bd4f45d1e777316ec7756 +TEST= 82 +KEY= 000000000000000000004000000000000000000000000000 +CT= fdf320e8010b852ef9dfc3cdf69018a8d57edefeb05a5777 +TEST= 83 +KEY= 000000000000000000002000000000000000000000000000 +CT= f0e8568ed9c163002b2e69b839d79d4512d35f6b6081f0d9 +TEST= 84 +KEY= 000000000000000000001000000000000000000000000000 +CT= c6d8225ed5a5ce4b596e76c48a9773f792da87e8531ea1a6 +TEST= 85 +KEY= 000000000000000000000800000000000000000000000000 +CT= 5a5ddf3560fa00f9d76a46eccd704379490cd3deaf60341f +TEST= 86 +KEY= 000000000000000000000400000000000000000000000000 +CT= 41f972655f8dc98dc269ee9f00ac513def4159341d4c72e9 +TEST= 87 +KEY= 000000000000000000000200000000000000000000000000 +CT= 492fa7c7002f6954fdf60eb25942b242b6c90c5d613b2869 +TEST= 88 +KEY= 000000000000000000000100000000000000000000000000 +CT= 0037d73c22de5c6bcbcadf7b8ea60145b54f3164010ae5ae +TEST= 89 +KEY= 000000000000000000000080000000000000000000000000 +CT= 079ca08a0e24fb724b147155bdd27dd0f1bd01814734148e +TEST= 90 +KEY= 000000000000000000000040000000000000000000000000 +CT= 4d1ee4a16c9e34c12bebf7dcc7491299b3fcd19387fc6f39 +TEST= 91 +KEY= 000000000000000000000020000000000000000000000000 +CT= f751df0720bc369916cf4513a7c346be4c947c2c4fbdff72 +TEST= 92 +KEY= 000000000000000000000010000000000000000000000000 +CT= a5ead84bbfa32055a34c1d3c9e6451db57e98e0337e34d1a +TEST= 93 +KEY= 000000000000000000000008000000000000000000000000 +CT= 7a7610cd8e34c9859453f477b9c0ff71c2975414f8b8d765 +TEST= 94 +KEY= 000000000000000000000004000000000000000000000000 +CT= 12f6367c2fef4def006ef782ce4764fd18a4e3d9655ca1ac +TEST= 95 +KEY= 000000000000000000000002000000000000000000000000 +CT= 5777aa671c66d81789ac3faafe700d4870f21d7b19e1170f +TEST= 96 +KEY= 000000000000000000000001000000000000000000000000 +CT= 02a89197a2414d4abdcdde435c0e51c76e953c8bee539d49 +TEST= 97 +KEY= 000000000000000000000000800000000000000000000000 +CT= 215c834d4eb6411ee761bbe21c0331ddfecb20b70474dd92 +TEST= 98 +KEY= 000000000000000000000000400000000000000000000000 +CT= aea31d5fcbf0dee9944f7a555bc6fbcd72844e2e236e9048 +TEST= 99 +KEY= 000000000000000000000000200000000000000000000000 +CT= 9e600ebe3b4a7e6d2a0682351f1440cbab56788f76adfdcf +TEST= 100 +KEY= 000000000000000000000000100000000000000000000000 +CT= 5159495f6fdcfaa9b59ed37686653ee5cfdded1a6331fb2e +TEST= 101 +KEY= 000000000000000000000000080000000000000000000000 +CT= 896525fec1c1bfe75f8a064ac07476ae98dc88db896b9255 +TEST= 102 +KEY= 000000000000000000000000040000000000000000000000 +CT= 8446f46bf0bd563b283a3c8656114f304c0428115cbe1d75 +TEST= 103 +KEY= 000000000000000000000000020000000000000000000000 +CT= 239e1c363996d575215cef1a89763eff570905d50fdda8d2 +TEST= 104 +KEY= 000000000000000000000000010000000000000000000000 +CT= b2b783213b9b4ee7f256bad9fcfbf9186d651cef2288ba50 +TEST= 105 +KEY= 000000000000000000000000008000000000000000000000 +CT= caf1d50df7efd13b8729e6afb4f611477be07dfaaa1841e6 +TEST= 106 +KEY= 000000000000000000000000004000000000000000000000 +CT= 5430f0f97c1978af24804ebeceb7c8697c60a66a94449f88 +TEST= 107 +KEY= 000000000000000000000000002000000000000000000000 +CT= 9d279832e554c9d7e5d185b4b5836fa1d5d97a3bd3b9aa76 +TEST= 108 +KEY= 000000000000000000000000001000000000000000000000 +CT= 98a8b35d371c8374f58baf93d4657c0ab23b579c82cdb8d3 +TEST= 109 +KEY= 000000000000000000000000000800000000000000000000 +CT= ce4d53f62a451cbe09e3f88601b44a5f074dc3b1c7122bd2 +TEST= 110 +KEY= 000000000000000000000000000400000000000000000000 +CT= af17775e7f525c61107488b05d4cdc68315c572cdabb7b2d +TEST= 111 +KEY= 000000000000000000000000000200000000000000000000 +CT= 7a910677367a9ccd0f96c9a91623234bae72c3daa5dc2902 +TEST= 112 +KEY= 000000000000000000000000000100000000000000000000 +CT= 35cfe214f13e44323732da13c9f74379a5c80f4acd61fc71 +TEST= 113 +KEY= 000000000000000000000000000080000000000000000000 +CT= a80a4e0233a0af6d7811fc38d9c377831e056f468341d5f6 +TEST= 114 +KEY= 000000000000000000000000000040000000000000000000 +CT= 2082618b596e34143b0ed4f0c2def0ef9cdb03a7ecbc6fe1 +TEST= 115 +KEY= 000000000000000000000000000020000000000000000000 +CT= d5d257c2b412bf205221ca4e7f919e86d2e2aadce7621b4e +TEST= 116 +KEY= 000000000000000000000000000010000000000000000000 +CT= 4e204a8ba3bfbc86ee6fe94055fc0e4b72a339a8534885c9 +TEST= 117 +KEY= 000000000000000000000000000008000000000000000000 +CT= 781f92b080068063474f2e5a30633794ea66d5aaf5754d78 +TEST= 118 +KEY= 000000000000000000000000000004000000000000000000 +CT= 46848acec142ea103d74cbcaa72a07df5531aaaca87d1937 +TEST= 119 +KEY= 000000000000000000000000000002000000000000000000 +CT= 6736e584f137cfa04744669aaf99f8b513e744f6636c0769 +TEST= 120 +KEY= 000000000000000000000000000001000000000000000000 +CT= 866677a0cf249de6557b3eda02b40a882350ce740550da02 +TEST= 121 +KEY= 000000000000000000000000000000800000000000000000 +CT= a83e6783764c977f9c1e3f3780a0a6c2bcd69f4888f8a318 +TEST= 122 +KEY= 000000000000000000000000000000400000000000000000 +CT= 855fef4bed49a44d66ef19ac6172f1b4b4433d32dcd5ae09 +TEST= 123 +KEY= 000000000000000000000000000000200000000000000000 +CT= ed9cff1ded7c2351709cbd4c769a5254ee84ed5c546a1375 +TEST= 124 +KEY= 000000000000000000000000000000100000000000000000 +CT= 81bc572dec7629b2b8ee3ef8512296f29fa8d076c2f69607 +TEST= 125 +KEY= 000000000000000000000000000000080000000000000000 +CT= 5eb91edfad95f61a61e29aa906fa61c811c6db4ab6cd1be4 +TEST= 126 +KEY= 000000000000000000000000000000040000000000000000 +CT= 32c4878b4b5861af9c6eca11c2e07d30b3e08c6251139baf +TEST= 127 +KEY= 000000000000000000000000000000020000000000000000 +CT= feaed004d704fc0878589846634d25471afb77df1ab1c3d3 +TEST= 128 +KEY= 000000000000000000000000000000010000000000000000 +CT= 172db0bdd70d617824736fd50c36bf5c3d13a3492fd046d9 +TEST= 129 +KEY= 000000000000000000000000000000008000000000000000 +CT= 5693a339eff0b1868ee10e6f66613aa8935a6e2cc681799c +TEST= 130 +KEY= 000000000000000000000000000000004000000000000000 +CT= 08904361348980ee2c350e45b8316d90f074075941e82aa8 +TEST= 131 +KEY= 000000000000000000000000000000002000000000000000 +CT= 308e27e224e4722360206342dc77d3b5e1f4bae93c091558 +TEST= 132 +KEY= 000000000000000000000000000000001000000000000000 +CT= 1cb401fb79ebb94d868832dc61d48f89ffdccdc041728cc7 +TEST= 133 +KEY= 000000000000000000000000000000000800000000000000 +CT= 4ce9291bcced6cb1f3275d3b58c79f369bcc13feb9c4fb23 +TEST= 134 +KEY= 000000000000000000000000000000000400000000000000 +CT= 6190a58ce5dea2c0145594c899a3e36bc058e71e041c60a2 +TEST= 135 +KEY= 000000000000000000000000000000000200000000000000 +CT= af7a8f8cca6346f47a91bc673833d2f3e33c72f529d7783c +TEST= 136 +KEY= 000000000000000000000000000000000100000000000000 +CT= 280b0c5490129f8729b1d03a44e21727fd9fb4c3a1b4b314 +TEST= 137 +KEY= 000000000000000000000000000000000080000000000000 +CT= 998082e7e04e7edbd3b6af246b92aa9a5e42d0964bdf21a5 +TEST= 138 +KEY= 000000000000000000000000000000000040000000000000 +CT= 255456e2bf3e5ecdccf5ec5bf9f4172557b6393914b2deb9 +TEST= 139 +KEY= 000000000000000000000000000000000020000000000000 +CT= 166b39647e357d78f1beab06d12ab3e5b2cde06603f3017b +TEST= 140 +KEY= 000000000000000000000000000000000010000000000000 +CT= ec8253f4514426a8ada7a0a33ced2fcefe8ec022b2e235af +TEST= 141 +KEY= 000000000000000000000000000000000008000000000000 +CT= 2560b23f6c5a2efce32d84926b6e7aad7e07cfb73b36679f +TEST= 142 +KEY= 000000000000000000000000000000000004000000000000 +CT= 6f600d922df0c082848a764cad24713d61a9d41f65de4413 +TEST= 143 +KEY= 000000000000000000000000000000000002000000000000 +CT= 0f94d05b4af0b5e6dbae94555c7ace3d6391c36264e7c3af +TEST= 144 +KEY= 000000000000000000000000000000000001000000000000 +CT= 5d3e84177ac8f60c8068f43ea36fa6724bd01dab5295a57f +TEST= 145 +KEY= 000000000000000000000000000000000000800000000000 +CT= 9a229ac612ed7c79770a95108a7c5540e62e3367f4f90f56 +TEST= 146 +KEY= 000000000000000000000000000000000000400000000000 +CT= a8236f4b7f71e638189846ce855bd64587ff285d13ed442a +TEST= 147 +KEY= 000000000000000000000000000000000000200000000000 +CT= 80ecff5e8ebb29ba37e50254172afe2f709014ab14e86669 +TEST= 148 +KEY= 000000000000000000000000000000000000100000000000 +CT= 60a70d9318995bec0cb41a92c07568872bec6d3b5259e0ac +TEST= 149 +KEY= 000000000000000000000000000000000000080000000000 +CT= 714666fc411b93f2b393cfa3ebbbb3d534fd36c772b5d857 +TEST= 150 +KEY= 000000000000000000000000000000000000040000000000 +CT= dfae96e8567327c97d3a7c41004927f7f6cc1e5f65902174 +TEST= 151 +KEY= 000000000000000000000000000000000000020000000000 +CT= 9f67ff41154a4346d6e10b9f31c4f0da87bee3dc2162d815 +TEST= 152 +KEY= 000000000000000000000000000000000000010000000000 +CT= faed4fdee882fb00033cf46eeb7d3b83cbcf4cb34131ba46 +TEST= 153 +KEY= 000000000000000000000000000000000000008000000000 +CT= baab46c09385a7303612af8e8e76e5caa228e5543862afd0 +TEST= 154 +KEY= 000000000000000000000000000000000000004000000000 +CT= 346a7c7c13f244763cf8d41f438bdb7c585f6bdceea567ec +TEST= 155 +KEY= 000000000000000000000000000000000000002000000000 +CT= 4010e85adfa61b25917c70d50cb8c4824b216e80b0afc538 +TEST= 156 +KEY= 000000000000000000000000000000000000001000000000 +CT= fb4660be4056cf7c03cf66f6d7c9df22867718ec38410b97 +TEST= 157 +KEY= 000000000000000000000000000000000000000800000000 +CT= d485ae2ab3c1905d8737bf85b10060c7e32d65401550d5d4 +TEST= 158 +KEY= 000000000000000000000000000000000000000400000000 +CT= 66610ddeffe504fc86ec5eb372d26895f8effd8ffb85af04 +TEST= 159 +KEY= 000000000000000000000000000000000000000200000000 +CT= 9255df1048e4a57ca496ddd266e3490f7fc3342a7affdbb3 +TEST= 160 +KEY= 000000000000000000000000000000000000000100000000 +CT= c51df2c112f0f093145b4b2c432b7f6be6177e82efbbd0a0 +TEST= 161 +KEY= 000000000000000000000000000000000000000080000000 +CT= 4ec23902223c5227a6f80c783dcc930b08746ae7761bd32c +TEST= 162 +KEY= 000000000000000000000000000000000000000040000000 +CT= ddfa9569b1156b61b09de58c60db20e2262d6e0d94780103 +TEST= 163 +KEY= 000000000000000000000000000000000000000020000000 +CT= 7fa7c3b8a9826325bd052607bf6d7a9ffddf04d822d66786 +TEST= 164 +KEY= 000000000000000000000000000000000000000010000000 +CT= 2baca2a1b83dc2e0cd916a1fef12908a8e3d8240f6cc036e +TEST= 165 +KEY= 000000000000000000000000000000000000000008000000 +CT= 9b2fd464aaeaae0b5dd66d5ed8bfcca30eba3ccafc5a6a53 +TEST= 166 +KEY= 000000000000000000000000000000000000000004000000 +CT= d68115447b4f64648853ed242395e82e94577764ba23a5f1 +TEST= 167 +KEY= 000000000000000000000000000000000000000002000000 +CT= 882e83c80904ac773e1fd475c7c5d38a02cf9610dad02dbd +TEST= 168 +KEY= 000000000000000000000000000000000000000001000000 +CT= f3b51c8fa12c77a48b7571765c5dfe3cb77c60bddf6b2e45 +TEST= 169 +KEY= 000000000000000000000000000000000000000000800000 +CT= 5269b9309696b39a99816cb36675f34e4d209267e7eab140 +TEST= 170 +KEY= 000000000000000000000000000000000000000000400000 +CT= 1ca239cd2ab2740976cdecb1526296dada823c113e538b41 +TEST= 171 +KEY= 000000000000000000000000000000000000000000200000 +CT= 01a437e0f7d1a879594fb7c483c259d64dec515f6e9343d1 +TEST= 172 +KEY= 000000000000000000000000000000000000000000100000 +CT= 3eabefcf9f7aff9e7af42311132e32fb164680f2a285e5d1 +TEST= 173 +KEY= 000000000000000000000000000000000000000000080000 +CT= 09b8953699a6f74149546a41f1fcd28f9689da38dca5ec66 +TEST= 174 +KEY= 000000000000000000000000000000000000000000040000 +CT= 5cc916807979c509f27d8a56cdc93d710c2c1c5dac835248 +TEST= 175 +KEY= 000000000000000000000000000000000000000000020000 +CT= 496b3892c2fd87a41a47b2e630672d1bee318342abcf4dee +TEST= 176 +KEY= 000000000000000000000000000000000000000000010000 +CT= 4bff5fc254e3a55feaf0045bcb8e49dd7d65a1c24c2ebefc +TEST= 177 +KEY= 000000000000000000000000000000000000000000008000 +CT= 1e71ed43cef1994fa5a10f29c07d6f90b81588a386202d89 +TEST= 178 +KEY= 000000000000000000000000000000000000000000004000 +CT= bf9f6d0d39f87169b051da91d629cf741e64f6dd1cff934d +TEST= 179 +KEY= 000000000000000000000000000000000000000000002000 +CT= 276aa86a1753bb95c4a361600ee669205d854fb6a3325a69 +TEST= 180 +KEY= 000000000000000000000000000000000000000000001000 +CT= 8fa3060706a1b22759c905e6cf3f68765fcbc73138321a8e +TEST= 181 +KEY= 000000000000000000000000000000000000000000000800 +CT= 95da87f34bf8efea9fca1641b167416c8735d3bcef078410 +TEST= 182 +KEY= 000000000000000000000000000000000000000000000400 +CT= df6561dbad3fcc1b103f4327366720aff881b59f2698c8ed +TEST= 183 +KEY= 000000000000000000000000000000000000000000000200 +CT= 43768f34215a74603bfdd0eb3924f1dd95fa35f10ed8f526 +TEST= 184 +KEY= 000000000000000000000000000000000000000000000100 +CT= 9ab60dcbafe33ae0f579191e0bd4ba91107736990bc51897 +TEST= 185 +KEY= 000000000000000000000000000000000000000000000080 +CT= ed4fa0c653316777b5bf78dbd5394cbc57217f2009fdec65 +TEST= 186 +KEY= 000000000000000000000000000000000000000000000040 +CT= b3c34d16200f7ffd32fe13dd16ca3fc45d4a91bc4ffe25dc +TEST= 187 +KEY= 000000000000000000000000000000000000000000000020 +CT= 8f43bb4bbca4b0fff161ee342a57cd380faf57c2565c9f61 +TEST= 188 +KEY= 000000000000000000000000000000000000000000000010 +CT= d89efdf563544781917490973a6a63b59ce670f8d40bb9b6 +TEST= 189 +KEY= 000000000000000000000000000000000000000000000008 +CT= 37eadf2ce97bdbfa79cdd61985c5385095565b89dda87b2d +TEST= 190 +KEY= 000000000000000000000000000000000000000000000004 +CT= 213da839ce7f93a35cad669a048448742ca367a99eee7c4a +TEST= 191 +KEY= 000000000000000000000000000000000000000000000002 +CT= d1017a1bd5ddf638fc91a07c4b099caa71ad5967a75f89ae +TEST= 192 +KEY= 000000000000000000000000000000000000000000000001 +CT= 65910384efb6cfc6c0d3a7780ca0527c130db79261a2ff4b diff --git a/flint/test/testvals/ecbvk68.txt b/flint/test/testvals/ecbvk68.txt new file mode 100644 index 0000000..cf8e70c --- /dev/null +++ b/flint/test/testvals/ecbvk68.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +PT= 000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= 17004e806faef168fc9cd56f98f070982075c70c8132b945 +TEST= 1 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 06eb844dec23f29f029be85fdce578cec5c663ce0c70403c +TEST= 2 +KEY= 4000000000000000000000000000000000000000000000000000000000000000 +CT= 8db2bbbd69d4470f6e9fc0658e219bff05c0f93c510d99d3 +TEST= 3 +KEY= 2000000000000000000000000000000000000000000000000000000000000000 +CT= eeb0daa865958ff4387a0f3e28249f3211974438dda1fe55 +TEST= 4 +KEY= 1000000000000000000000000000000000000000000000000000000000000000 +CT= d1e57047bb578392e6a3ec416c8ef46c7ef942ea9d62912e +TEST= 5 +KEY= 0800000000000000000000000000000000000000000000000000000000000000 +CT= 90c5e47e1983834633f9b769602038f66e67123b630c1ca0 +TEST= 6 +KEY= 0400000000000000000000000000000000000000000000000000000000000000 +CT= 90ee39931a604d8e5b3f12a24ca84170d06ad9fe08e68d89 +TEST= 7 +KEY= 0200000000000000000000000000000000000000000000000000000000000000 +CT= 9d939b6534cd34c771c83edba207c5fa3d27ddbe93040777 +TEST= 8 +KEY= 0100000000000000000000000000000000000000000000000000000000000000 +CT= 8f362762c3a4c3b03aeb39fa666829ccad833e4578e6b55d +TEST= 9 +KEY= 0080000000000000000000000000000000000000000000000000000000000000 +CT= 4d038063fbc5922727553d9fd9d6bc8227ad7d74886b7c76 +TEST= 10 +KEY= 0040000000000000000000000000000000000000000000000000000000000000 +CT= a4f7d69e8ed3f3c9381bdf8eb61152cd5523c40e9621b82b +TEST= 11 +KEY= 0020000000000000000000000000000000000000000000000000000000000000 +CT= 0bda8c6fe2d4ea27dced92fd8f18ded5b768c6bcf77619f0 +TEST= 12 +KEY= 0010000000000000000000000000000000000000000000000000000000000000 +CT= 51ec1674841c4208ddb4443c530cb516d4b0d4d9c25ccb15 +TEST= 13 +KEY= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 4999fa87baf7e7b713c99199cb4dd1d96c0a9d3d2b01969e +TEST= 14 +KEY= 0004000000000000000000000000000000000000000000000000000000000000 +CT= 240f19cec3f54ca9870302b784451641ae9b02b0ec727cc8 +TEST= 15 +KEY= 0002000000000000000000000000000000000000000000000000000000000000 +CT= 7c437bec678e76ed44464aa2bcb3c73eb795e8b6adc66959 +TEST= 16 +KEY= 0001000000000000000000000000000000000000000000000000000000000000 +CT= 523ec03a6d8a488eda74a3c44dc07095acaeb6f3f33cd8db +TEST= 17 +KEY= 0000800000000000000000000000000000000000000000000000000000000000 +CT= 7c11ded2b39a88c3c862fc8f4fe116769993305ec4c6b9b0 +TEST= 18 +KEY= 0000400000000000000000000000000000000000000000000000000000000000 +CT= 1d7d2096eb7005c15e667b3301cc48c346ef1f0cd706b0f8 +TEST= 19 +KEY= 0000200000000000000000000000000000000000000000000000000000000000 +CT= 356a647a53908fb573fab41e2509284d4a03aab2ac87f1e2 +TEST= 20 +KEY= 0000100000000000000000000000000000000000000000000000000000000000 +CT= 7453ae7e675a31f74c84e41415918367958e889719ab4373 +TEST= 21 +KEY= 0000080000000000000000000000000000000000000000000000000000000000 +CT= 8b7baafc32d6e30cf9c56ca9c41df382fe296b4d651c20bc +TEST= 22 +KEY= 0000040000000000000000000000000000000000000000000000000000000000 +CT= ed13a2a3efce88f25f3576a4b5cdb84ae203087756903ff5 +TEST= 23 +KEY= 0000020000000000000000000000000000000000000000000000000000000000 +CT= 08d80b4871077b0c640b6af11aee31f0fecd4c6eb4c13f19 +TEST= 24 +KEY= 0000010000000000000000000000000000000000000000000000000000000000 +CT= 8a6267418eac641836d56d015b7b2ffecdc023ab723a3e77 +TEST= 25 +KEY= 0000008000000000000000000000000000000000000000000000000000000000 +CT= 8e73d50f3a1a9d72af18399dc0c480c0a8cf32e59e8deaa3 +TEST= 26 +KEY= 0000004000000000000000000000000000000000000000000000000000000000 +CT= f8d4974ec3a1bd28689c41776de83368aaa4295863c2b97f +TEST= 27 +KEY= 0000002000000000000000000000000000000000000000000000000000000000 +CT= cd2fbd9b924d673ba64ffe28754c5274d997ecf9a5bd49b4 +TEST= 28 +KEY= 0000001000000000000000000000000000000000000000000000000000000000 +CT= 4bd674b141780f33cabfed9d3cbeb9419da97ca1b7d29d77 +TEST= 29 +KEY= 0000000800000000000000000000000000000000000000000000000000000000 +CT= 62e93b3f3dce327446dc2ccdf041c8f842f89a1b22b98d4f +TEST= 30 +KEY= 0000000400000000000000000000000000000000000000000000000000000000 +CT= 8cb3cef4ece5ef1721ec243c10a1a9021b3e8339e20e6a16 +TEST= 31 +KEY= 0000000200000000000000000000000000000000000000000000000000000000 +CT= 81e752debdb359a99c85374d30b47ec706ab822bcb939bfd +TEST= 32 +KEY= 0000000100000000000000000000000000000000000000000000000000000000 +CT= ef98a87d75ca8d31ec192776410a1ba725b46632d4508e48 +TEST= 33 +KEY= 0000000080000000000000000000000000000000000000000000000000000000 +CT= da8917e38927e9283c267a060d782d8bb4d42cd67be40e21 +TEST= 34 +KEY= 0000000040000000000000000000000000000000000000000000000000000000 +CT= 947adc00dda8a23c2ee2193b494d1a7112e730e3270695a1 +TEST= 35 +KEY= 0000000020000000000000000000000000000000000000000000000000000000 +CT= ba256c7ded3ff182270e4fa0b4c918b35438c37b0cff0a2b +TEST= 36 +KEY= 0000000010000000000000000000000000000000000000000000000000000000 +CT= da70d2107f0f906c7ec6337b9477f454acbf4716f5f40da1 +TEST= 37 +KEY= 0000000008000000000000000000000000000000000000000000000000000000 +CT= 0976aebc2b954cf488a6466ff6ffbab4c9c139fce6a39699 +TEST= 38 +KEY= 0000000004000000000000000000000000000000000000000000000000000000 +CT= 18e64a070747350515770a1b23eda0edb51c571d6494cd7a +TEST= 39 +KEY= 0000000002000000000000000000000000000000000000000000000000000000 +CT= ef110fb2d262766f6a81b35b9fcc670aaa4d7895085e6e97 +TEST= 40 +KEY= 0000000001000000000000000000000000000000000000000000000000000000 +CT= bc2c0ea02416bdcd1ba199205d29e293556df31f44b8d0a7 +TEST= 41 +KEY= 0000000000800000000000000000000000000000000000000000000000000000 +CT= d9940689b38e43b7eba0d315e625936616bd17c7f27a48e7 +TEST= 42 +KEY= 0000000000400000000000000000000000000000000000000000000000000000 +CT= bae5d99de993b4161daac3943f7673fb69f0586cca846018 +TEST= 43 +KEY= 0000000000200000000000000000000000000000000000000000000000000000 +CT= 6aa7471f49f21170ee2498a92c772af37f6e2d16d56890e2 +TEST= 44 +KEY= 0000000000100000000000000000000000000000000000000000000000000000 +CT= 407486defa7d2e904f0c18f25eb1e5168a47bfddfd8e9453 +TEST= 45 +KEY= 0000000000080000000000000000000000000000000000000000000000000000 +CT= 1a3c1a96e10ffeb0f8e9d205823daaf5ce0eb01800fef683 +TEST= 46 +KEY= 0000000000040000000000000000000000000000000000000000000000000000 +CT= 1155ca7bbf8a0086c14dcf84b33a9f71ffbd851c391deea6 +TEST= 47 +KEY= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 24b9573f03f558ba760700bfdbb6859bafbcc20304baf2ef +TEST= 48 +KEY= 0000000000010000000000000000000000000000000000000000000000000000 +CT= 2554d8b67bbbd1a84b9b345d3e6d0e5d27dc72fa906c97c9 +TEST= 49 +KEY= 0000000000008000000000000000000000000000000000000000000000000000 +CT= d2447e8a7608529ae433717dd291790c71bd8d9f0eed72b0 +TEST= 50 +KEY= 0000000000004000000000000000000000000000000000000000000000000000 +CT= ee045f84f81ac5e70595f44a502822046eb20303124d07e7 +TEST= 51 +KEY= 0000000000002000000000000000000000000000000000000000000000000000 +CT= 321251ebc947fa62a24c0979fe79c5bbc4dae4a981be7858 +TEST= 52 +KEY= 0000000000001000000000000000000000000000000000000000000000000000 +CT= 6850f5d97d802d6d1c8e92d7e562c6ed302856f6c57b98de +TEST= 53 +KEY= 0000000000000800000000000000000000000000000000000000000000000000 +CT= b8740348226ed0bd7dc23a1e03e0773b19f1990cac4dc74b +TEST= 54 +KEY= 0000000000000400000000000000000000000000000000000000000000000000 +CT= ec69529f29b47555ceab8846e15031f0cde4d88463be717f +TEST= 55 +KEY= 0000000000000200000000000000000000000000000000000000000000000000 +CT= 673c945b5fdaf0f3c85516034794ea8165964de7986b3300 +TEST= 56 +KEY= 0000000000000100000000000000000000000000000000000000000000000000 +CT= 5088d237f6e11e31bc603ea13bea64318bdcff02b181f91c +TEST= 57 +KEY= 0000000000000080000000000000000000000000000000000000000000000000 +CT= d9126ce1f5ac8bcf56f6104d56373a0b16db6e778d54fca0 +TEST= 58 +KEY= 0000000000000040000000000000000000000000000000000000000000000000 +CT= c53bb5ee23de60a9fbcfb5933483f8e079d31bd125a37a49 +TEST= 59 +KEY= 0000000000000020000000000000000000000000000000000000000000000000 +CT= 62ad0c4003729afbfffcc9e4eb0b1b9746b3433b31303f5c +TEST= 60 +KEY= 0000000000000010000000000000000000000000000000000000000000000000 +CT= 69bd5cb2302dfe9a989a393aec2ff874411d6f3156f8d12f +TEST= 61 +KEY= 0000000000000008000000000000000000000000000000000000000000000000 +CT= 1488620d5826a90c2bd3d33cf2437f6992e205df0519cef4 +TEST= 62 +KEY= 0000000000000004000000000000000000000000000000000000000000000000 +CT= f787c161459a837de182721e5ccd284028986b3ffa35092f +TEST= 63 +KEY= 0000000000000002000000000000000000000000000000000000000000000000 +CT= 029b35a5d89a343efdd19e7a48419453786b52e1adc16830 +TEST= 64 +KEY= 0000000000000001000000000000000000000000000000000000000000000000 +CT= 331e16228ebcb1d24e84600d83a55e8ee5093117a08013e2 +TEST= 65 +KEY= 0000000000000000800000000000000000000000000000000000000000000000 +CT= 86f04ebffd3b41b5b4f0324c61171c9c47de80d6c745c0d5 +TEST= 66 +KEY= 0000000000000000400000000000000000000000000000000000000000000000 +CT= 709a9a88e0710c77b7df52baacb8866889b29d461c2ddc31 +TEST= 67 +KEY= 0000000000000000200000000000000000000000000000000000000000000000 +CT= 3d4a69239955f1c4ca4dbb454aba82a28a6c84d0bf9b7651 +TEST= 68 +KEY= 0000000000000000100000000000000000000000000000000000000000000000 +CT= 54ecacc029b79f7f554e8caa2229a6947383e1c6c85b4f0c +TEST= 69 +KEY= 0000000000000000080000000000000000000000000000000000000000000000 +CT= a75391b48067de95eb6650de49e095b98a7ad6a994a05e21 +TEST= 70 +KEY= 0000000000000000040000000000000000000000000000000000000000000000 +CT= 940efc1a2c1e99737d3a236f61369f3d96058f19d277f53f +TEST= 71 +KEY= 0000000000000000020000000000000000000000000000000000000000000000 +CT= a810ea2d34f88628c2f69aa2c0714ba7faf4f23568c4b4ed +TEST= 72 +KEY= 0000000000000000010000000000000000000000000000000000000000000000 +CT= a3a19c0085d7bebcc2de63bbc8153695a8302c3b0dcb4dc9 +TEST= 73 +KEY= 0000000000000000008000000000000000000000000000000000000000000000 +CT= ba66183f0586c99e7fb382fb54fb3325ab885883c622cede +TEST= 74 +KEY= 0000000000000000004000000000000000000000000000000000000000000000 +CT= 338ad8795fc86342dc8d6f449b8ce578ffce2ec4430dd2e2 +TEST= 75 +KEY= 0000000000000000002000000000000000000000000000000000000000000000 +CT= 8461cb9993cb33622f87368ebd190d3435bd44a826ec006e +TEST= 76 +KEY= 0000000000000000001000000000000000000000000000000000000000000000 +CT= 03131a6698553c3bdd2b2795d91e2930d0339a1f72f85978 +TEST= 77 +KEY= 0000000000000000000800000000000000000000000000000000000000000000 +CT= d920c76e39aa562cef6962539504312b243d7787eaecec79 +TEST= 78 +KEY= 0000000000000000000400000000000000000000000000000000000000000000 +CT= 1aec2f8347e9c64be9c9f483f906e599e6e5e642699798a3 +TEST= 79 +KEY= 0000000000000000000200000000000000000000000000000000000000000000 +CT= b917882693d2fb443e7ccd668ae347d0a63a2060a1cdcc3c +TEST= 80 +KEY= 0000000000000000000100000000000000000000000000000000000000000000 +CT= a21d117df97c45bbb91fe7576673d578934a695e43b57526 +TEST= 81 +KEY= 0000000000000000000080000000000000000000000000000000000000000000 +CT= 5756dc82d305e1d89cef8891027b0f28995dc8861908118f +TEST= 82 +KEY= 0000000000000000000040000000000000000000000000000000000000000000 +CT= e9eab61fda575bcb4d4592664fb47eb76244a7cd62a79e88 +TEST= 83 +KEY= 0000000000000000000020000000000000000000000000000000000000000000 +CT= aae7862ffc4354b6b1fa0c83561881df7f7e39974768434b +TEST= 84 +KEY= 0000000000000000000010000000000000000000000000000000000000000000 +CT= 826ba8ea11f749f8221f80efbbfb2afd6e979ea7d6eb6654 +TEST= 85 +KEY= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 48673ff9a30f44f8787a1bb3718f4884ac9fa9f85a5488ac +TEST= 86 +KEY= 0000000000000000000004000000000000000000000000000000000000000000 +CT= 4a26344718db4cf8fef0523bb5b7fdba51cd17b588151c35 +TEST= 87 +KEY= 0000000000000000000002000000000000000000000000000000000000000000 +CT= e7ec16733598a8d8d52312bf8216acf4855617d5db432ccb +TEST= 88 +KEY= 0000000000000000000001000000000000000000000000000000000000000000 +CT= 123961dd8505848432eb3b604a567ba21eff6be87618c422 +TEST= 89 +KEY= 0000000000000000000000800000000000000000000000000000000000000000 +CT= 9026bff232bb8412befc133435907cdd1786e5e10d3ee0b9 +TEST= 90 +KEY= 0000000000000000000000400000000000000000000000000000000000000000 +CT= 54a6e5b6aa194bfd05016535d554d6bdf330832cb3661b1a +TEST= 91 +KEY= 0000000000000000000000200000000000000000000000000000000000000000 +CT= d472d81c47b21c44cde01fe152749573a059f4f9a05f5d6e +TEST= 92 +KEY= 0000000000000000000000100000000000000000000000000000000000000000 +CT= 04a4b6a113526f25d98870077e3cdd28378a61eeb1471899 +TEST= 93 +KEY= 0000000000000000000000080000000000000000000000000000000000000000 +CT= 16bed2ef08f36f3d184ba5217a811bb654688f09ad559343 +TEST= 94 +KEY= 0000000000000000000000040000000000000000000000000000000000000000 +CT= 01dc5528e5b30a26d285b70f9b95e57fd5ee3a3b3269abea +TEST= 95 +KEY= 0000000000000000000000020000000000000000000000000000000000000000 +CT= ea87eb63d83644d131d751fb0b2e543e7a170aedc5bb1dc5 +TEST= 96 +KEY= 0000000000000000000000010000000000000000000000000000000000000000 +CT= a6bcf34faeded0d0e2b6479839f43dd547d5fcaa58e2700f +TEST= 97 +KEY= 0000000000000000000000008000000000000000000000000000000000000000 +CT= 3af2c5918b0c04a962701d67cc703854307fc00fc9e80778 +TEST= 98 +KEY= 0000000000000000000000004000000000000000000000000000000000000000 +CT= 06e32f4b7c07e957404d3196fe35f9929d203ba88a174472 +TEST= 99 +KEY= 0000000000000000000000002000000000000000000000000000000000000000 +CT= e47ec97d666a12e68fd66e2ec353929f0caa57f8792c1a47 +TEST= 100 +KEY= 0000000000000000000000001000000000000000000000000000000000000000 +CT= eb63dde8cd8211b38814b666f01cadb0b83f68e17b0cd10e +TEST= 101 +KEY= 0000000000000000000000000800000000000000000000000000000000000000 +CT= f0cffa6bccf181a0aca0663fa8d8352f31be9a4ba0be9af4 +TEST= 102 +KEY= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 293b0c027954e915f2dfce219625bf0c92ecafcc523f17a3 +TEST= 103 +KEY= 0000000000000000000000000200000000000000000000000000000000000000 +CT= 894de32909d4ddd3bc44a72e618851ce16e666a7999b25d7 +TEST= 104 +KEY= 0000000000000000000000000100000000000000000000000000000000000000 +CT= 6596f0b82dfb5b2ee9f43a180e80dddbaaa2577eb6738400 +TEST= 105 +KEY= 0000000000000000000000000080000000000000000000000000000000000000 +CT= 4700486b592c77f8fc382e12669693f5b0349f084939cbc9 +TEST= 106 +KEY= 0000000000000000000000000040000000000000000000000000000000000000 +CT= 005519ae2d64750ca5a246fb9809529f6934876a69b17cf8 +TEST= 107 +KEY= 0000000000000000000000000020000000000000000000000000000000000000 +CT= af4585949a5259685a605cf5f3d249ae6bd614aa57aa8632 +TEST= 108 +KEY= 0000000000000000000000000010000000000000000000000000000000000000 +CT= 6040beb6e6adbdbf68f8ad998adb9e081677f2e1967b620c +TEST= 109 +KEY= 0000000000000000000000000008000000000000000000000000000000000000 +CT= ef776765830e8b66bfa787afd53746b004af303038b0ea0e +TEST= 110 +KEY= 0000000000000000000000000004000000000000000000000000000000000000 +CT= d8895fc0f4ea6124e00bfcdc3773e8ae8ddeb54c3cdcc311 +TEST= 111 +KEY= 0000000000000000000000000002000000000000000000000000000000000000 +CT= c2d16a59a6f63923819084291fd206115ef5b43e757f3de0 +TEST= 112 +KEY= 0000000000000000000000000001000000000000000000000000000000000000 +CT= c19cdf952d6517522c29125b8f34e43636b9557d1586b768 +TEST= 113 +KEY= 0000000000000000000000000000800000000000000000000000000000000000 +CT= 064dcedb2df67a2f8b516d4df005d267037d4242b1bb417e +TEST= 114 +KEY= 0000000000000000000000000000400000000000000000000000000000000000 +CT= 7f20576fef5b24eb21ff2cb11cfa2851f4f0ab3e4a0dcecc +TEST= 115 +KEY= 0000000000000000000000000000200000000000000000000000000000000000 +CT= b78f496731719f206c48dc876b4ce988e0824e535cf13698 +TEST= 116 +KEY= 0000000000000000000000000000100000000000000000000000000000000000 +CT= b5652c2d8313ba4fdf899fc8c27534f89c2037a5e35f77f4 +TEST= 117 +KEY= 0000000000000000000000000000080000000000000000000000000000000000 +CT= 70ea0af629d7d8723e183788325bd325ec8b2bfb6a95acaf +TEST= 118 +KEY= 0000000000000000000000000000040000000000000000000000000000000000 +CT= 2fe01f461303d90f65ea55e9d9370395db7ec976df60b1cb +TEST= 119 +KEY= 0000000000000000000000000000020000000000000000000000000000000000 +CT= 9870df915bab14960cd2d33c4a7c81f5b01bb290b81af015 +TEST= 120 +KEY= 0000000000000000000000000000010000000000000000000000000000000000 +CT= a8104bccf93a2e97ea5292025742e41eaf8c724933d6e530 +TEST= 121 +KEY= 0000000000000000000000000000008000000000000000000000000000000000 +CT= 30670ab1196210f5e0f047a68c860fc949a3b8ae2c391e06 +TEST= 122 +KEY= 0000000000000000000000000000004000000000000000000000000000000000 +CT= 02200eb4a693d10db11fb35e1a06a4c1ab612f015e7fd8c6 +TEST= 123 +KEY= 0000000000000000000000000000002000000000000000000000000000000000 +CT= 950e8a9511ca99e6419d0b1a14fea15a1dd95b81d63ca58a +TEST= 124 +KEY= 0000000000000000000000000000001000000000000000000000000000000000 +CT= ee60fa4ac29b5f199ad9821aa85a09f9324bd7f2fdb1c113 +TEST= 125 +KEY= 0000000000000000000000000000000800000000000000000000000000000000 +CT= f2ff98012b0574a310c5970b479f80326501e9a69f4a8d15 +TEST= 126 +KEY= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 577abb265a37c3313b1a8f1fdfb7af9e79bdcb9483caba4a +TEST= 127 +KEY= 0000000000000000000000000000000200000000000000000000000000000000 +CT= 67e05a028ceebac56a7e12e519cc3d7ab2f3147246902630 +TEST= 128 +KEY= 0000000000000000000000000000000100000000000000000000000000000000 +CT= 2dfe0473b4e53b40e0bfcce378c65aceb375c3384d7011a1 +TEST= 129 +KEY= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 4f43f0ec7429db3783e9af23a520d6511c787de490ff2977 +TEST= 130 +KEY= 0000000000000000000000000000000040000000000000000000000000000000 +CT= d0c7bafb76e7c7ab0279ea332b0cb6baf6b3ca67a1a81179 +TEST= 131 +KEY= 0000000000000000000000000000000020000000000000000000000000000000 +CT= f294e5c84c8c0b0c79e39399f28deff28e8720930c0e09f2 +TEST= 132 +KEY= 0000000000000000000000000000000010000000000000000000000000000000 +CT= 26614ace69948313a0c503b70bd3f2a108bfa21064ea9255 +TEST= 133 +KEY= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 01a9c5bddc68a40bcec48f4a0433e5219bcb90b1816d3509 +TEST= 134 +KEY= 0000000000000000000000000000000004000000000000000000000000000000 +CT= 20c2b1340607d42026a039464f119198f532c1902733f58b +TEST= 135 +KEY= 0000000000000000000000000000000002000000000000000000000000000000 +CT= c0d00639c9df1ae397f27e559b33863536593686e60e0608 +TEST= 136 +KEY= 0000000000000000000000000000000001000000000000000000000000000000 +CT= 7744c132529bd77944bd8685c4e63125aad45228ff143e2c +TEST= 137 +KEY= 0000000000000000000000000000000000800000000000000000000000000000 +CT= aa922c965d6b920928598f20d9896953f47079cd500278cd +TEST= 138 +KEY= 0000000000000000000000000000000000400000000000000000000000000000 +CT= 831a6689d8921741382b0c40b627ddd8766a4ea1067c034c +TEST= 139 +KEY= 0000000000000000000000000000000000200000000000000000000000000000 +CT= 42ead987b7a451188d022037b458396360e7fd9c54cd4ee9 +TEST= 140 +KEY= 0000000000000000000000000000000000100000000000000000000000000000 +CT= 6e5b4122ad064787d3241873edbb6cff0fba8ee22b6ec8c8 +TEST= 141 +KEY= 0000000000000000000000000000000000080000000000000000000000000000 +CT= 7011972028524156b6c5217aac967b438e45fd0bcfad44aa +TEST= 142 +KEY= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 7cdb684d7eb41c9947ee3979c5b1ccb89e401a7799e4ad68 +TEST= 143 +KEY= 0000000000000000000000000000000000020000000000000000000000000000 +CT= cdc8bbf300c27253df65b01b99c90ecada168d99bb4a949b +TEST= 144 +KEY= 0000000000000000000000000000000000010000000000000000000000000000 +CT= 135ea808fa367191206ba040504c31f9343b3713acd902db +TEST= 145 +KEY= 0000000000000000000000000000000000008000000000000000000000000000 +CT= 9acc3fb5183d94337f1aa4b4058a696f4d55ab060460997a +TEST= 146 +KEY= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 863cf4ce451971be18bf87337bf34d7cf2c92ffd2052c25e +TEST= 147 +KEY= 0000000000000000000000000000000000002000000000000000000000000000 +CT= 6afcb57789f5c3d6326d7f69b2b56ad99b41f48ada0d2271 +TEST= 148 +KEY= 0000000000000000000000000000000000001000000000000000000000000000 +CT= b3bd6a1aa867dc7034bad5b655b55c5bf3a1ebc711f97c21 +TEST= 149 +KEY= 0000000000000000000000000000000000000800000000000000000000000000 +CT= 2ddcada2d243e6e52ee9f56e8617a3e14ac9590f3304ac74 +TEST= 150 +KEY= 0000000000000000000000000000000000000400000000000000000000000000 +CT= 614ce0bb92b4cb05da0cd6fa00a6e709e0fce02c2324052d +TEST= 151 +KEY= 0000000000000000000000000000000000000200000000000000000000000000 +CT= 21e15348dc4c45130df37cd5e91bc1b823d60614ae48b753 +TEST= 152 +KEY= 0000000000000000000000000000000000000100000000000000000000000000 +CT= 7a94b39c6e49937cc0a6bc4d6824645c2e0d68fedc70d294 +TEST= 153 +KEY= 0000000000000000000000000000000000000080000000000000000000000000 +CT= 3aef69d3c8b1dd9915166d01f6aaa44de916762c03a68bc9 +TEST= 154 +KEY= 0000000000000000000000000000000000000040000000000000000000000000 +CT= abd3b71b41042a6622f9f9b2710514cd1c03d5a277e633d1 +TEST= 155 +KEY= 0000000000000000000000000000000000000020000000000000000000000000 +CT= 62f41559b6bfc6f179bd934ab2cb73d995109add8921d38b +TEST= 156 +KEY= 0000000000000000000000000000000000000010000000000000000000000000 +CT= 8235411aa3ae8d59d8cc3c3c6849637b13ce42ceab606c4d +TEST= 157 +KEY= 0000000000000000000000000000000000000008000000000000000000000000 +CT= d54bda7798cb0b5c08034702150066dc460d34c485f5f81f +TEST= 158 +KEY= 0000000000000000000000000000000000000004000000000000000000000000 +CT= 8115676ca5ae34db0d9818aba62692661ad864c1274a1b50 +TEST= 159 +KEY= 0000000000000000000000000000000000000002000000000000000000000000 +CT= 8dccf7f403fc9eedc68c4ea0b097103707a743927826cc65 +TEST= 160 +KEY= 0000000000000000000000000000000000000001000000000000000000000000 +CT= 4c86d4e68ad93765e4bd18a458095c351d90978d559d2bb3 +TEST= 161 +KEY= 0000000000000000000000000000000000000000800000000000000000000000 +CT= a50d837e038321e64841996c361de849a15449bd5f98c721 +TEST= 162 +KEY= 0000000000000000000000000000000000000000400000000000000000000000 +CT= 7ce8b70184f8e47913c8e9dc48a366eea660846199eac81c +TEST= 163 +KEY= 0000000000000000000000000000000000000000200000000000000000000000 +CT= dc113c50378cfe4a70e0905e723381d85d38b74abcacb586 +TEST= 164 +KEY= 0000000000000000000000000000000000000000100000000000000000000000 +CT= 319eeddc911dbd4c66f5f72249d7194f249d302995247f6f +TEST= 165 +KEY= 0000000000000000000000000000000000000000080000000000000000000000 +CT= 8e83558bcc6ea13cef2c26d88eae0b0077a3bf3f9c3d66b6 +TEST= 166 +KEY= 0000000000000000000000000000000000000000040000000000000000000000 +CT= e8dd24dbd4699e2fcbfad381e99e3b84a18be05d449b7e70 +TEST= 167 +KEY= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 6d07f1ff9f79f5a8289c1b1143454d77b3765ba019720fbf +TEST= 168 +KEY= 0000000000000000000000000000000000000000010000000000000000000000 +CT= 244beafa00a15ae6c6eee096e715a15424258357f9b79382 +TEST= 169 +KEY= 0000000000000000000000000000000000000000008000000000000000000000 +CT= b0ea1eef57fc584e03a4f22b3b9910779e4d20a1919978c9 +TEST= 170 +KEY= 0000000000000000000000000000000000000000004000000000000000000000 +CT= 476d022c3d92a2709cc646d929de2d148e9895a8daa9be65 +TEST= 171 +KEY= 0000000000000000000000000000000000000000002000000000000000000000 +CT= ea1451e6c5f9f67ad5c9d7296d433009fa205fd1927d4fda +TEST= 172 +KEY= 0000000000000000000000000000000000000000001000000000000000000000 +CT= ec07b99a88c71a4d4daef92009e41817c5d83eae769e375f +TEST= 173 +KEY= 0000000000000000000000000000000000000000000800000000000000000000 +CT= b7e0ae931cfe185cca5ed6d2030be801d619c2f56ad06bf1 +TEST= 174 +KEY= 0000000000000000000000000000000000000000000400000000000000000000 +CT= da7f4871c04905a7bea682d8b9c6dd1254d5a0ec599ad6ca +TEST= 175 +KEY= 0000000000000000000000000000000000000000000200000000000000000000 +CT= 777dba68a52bd14e03e6e9b802efcd9beae276f86615754c +TEST= 176 +KEY= 0000000000000000000000000000000000000000000100000000000000000000 +CT= c011a1de4005ba0744fda108ba7dbf3443426f81bded8e9c +TEST= 177 +KEY= 0000000000000000000000000000000000000000000080000000000000000000 +CT= 22f69b03ecb58f6a6447054dbb03927c8bfe22d4d73726d2 +TEST= 178 +KEY= 0000000000000000000000000000000000000000000040000000000000000000 +CT= 382143c439ec5555a5f19d137484f7ea2c04027349e88a9a +TEST= 179 +KEY= 0000000000000000000000000000000000000000000020000000000000000000 +CT= a9633321f88a9615d3e52002b1edebfac62eafdd020d2c6e +TEST= 180 +KEY= 0000000000000000000000000000000000000000000010000000000000000000 +CT= c8d785c9562d5e2ff0f53bacd5c966030a3cdae9085bae05 +TEST= 181 +KEY= 0000000000000000000000000000000000000000000008000000000000000000 +CT= 140b7caae8d35539d6ddfaf83b8371a48ef1e46310fd5fc5 +TEST= 182 +KEY= 0000000000000000000000000000000000000000000004000000000000000000 +CT= eff73ee98ed0cf5d8900f0e8be24b77ea410d1058b871ebd +TEST= 183 +KEY= 0000000000000000000000000000000000000000000002000000000000000000 +CT= 262ef4413d1ae833257fac2e5a2100c005ad1a5f5d27eba7 +TEST= 184 +KEY= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 5cab892287a09594e245bcd207a857cf7ec47b29761d43fc +TEST= 185 +KEY= 0000000000000000000000000000000000000000000000800000000000000000 +CT= 9e9dea9ad276a7a734b51f90c22f93434d2c5412e36649b3 +TEST= 186 +KEY= 0000000000000000000000000000000000000000000000400000000000000000 +CT= 38cbd9774fbe3303ea4a246f358505ec4b9ca51e94a58427 +TEST= 187 +KEY= 0000000000000000000000000000000000000000000000200000000000000000 +CT= 521c1da4dd2e2db768c3e62768048e18ed8a607af63addbf +TEST= 188 +KEY= 0000000000000000000000000000000000000000000000100000000000000000 +CT= 9cd6f8dfdd8e494111f0c29c9217138d33436a75ce0ce928 +TEST= 189 +KEY= 0000000000000000000000000000000000000000000000080000000000000000 +CT= 6be31c139be282c9cb96c210ffda6602f4da62cbf34342c3 +TEST= 190 +KEY= 0000000000000000000000000000000000000000000000040000000000000000 +CT= 46aa460eae4cdddc66786224c35ae40e9e20edf10854826b +TEST= 191 +KEY= 0000000000000000000000000000000000000000000000020000000000000000 +CT= 77e3329104a3fed39a4a59f44eae668b306e5475d8deced2 +TEST= 192 +KEY= 0000000000000000000000000000000000000000000000010000000000000000 +CT= b88d979d6aa1285703b42e7c18a3fe8a546d453529e86a37 +TEST= 193 +KEY= 0000000000000000000000000000000000000000000000008000000000000000 +CT= 73d01eedee40d0ba92117ce661c2bdfc5bb5630a47a45f25 +TEST= 194 +KEY= 0000000000000000000000000000000000000000000000004000000000000000 +CT= 26ede0729b297705e831c2b4b5a07315174a9cce24638d1e +TEST= 195 +KEY= 0000000000000000000000000000000000000000000000002000000000000000 +CT= b926fee269aa8ad5ba81ee7fd8d2d7415e3ecd4fa00e3a95 +TEST= 196 +KEY= 0000000000000000000000000000000000000000000000001000000000000000 +CT= 6aa2004c625f2975790533adcc780c1bafdecc23ef53734e +TEST= 197 +KEY= 0000000000000000000000000000000000000000000000000800000000000000 +CT= c401148e5cc56744370e192fed2372ef5897edcbe92fbb65 +TEST= 198 +KEY= 0000000000000000000000000000000000000000000000000400000000000000 +CT= 1eefcd83132be9fc8606c01426a2dfd42175b39ee685c1b0 +TEST= 199 +KEY= 0000000000000000000000000000000000000000000000000200000000000000 +CT= ceae676b1ba8144dc52e332b1535fe2a8a2ffba363055b09 +TEST= 200 +KEY= 0000000000000000000000000000000000000000000000000100000000000000 +CT= e1f14d0267d802f38e0236eb4fb1eec443c1c7f78cad18d5 +TEST= 201 +KEY= 0000000000000000000000000000000000000000000000000080000000000000 +CT= 90a660f7f04525a5ec4c51787efac77e67c3d0320a9fc3d4 +TEST= 202 +KEY= 0000000000000000000000000000000000000000000000000040000000000000 +CT= a9a35ed89c8f60acebab895c943a37472792a0dfcdee43e6 +TEST= 203 +KEY= 0000000000000000000000000000000000000000000000000020000000000000 +CT= 5f318582887574d3b2d391e44780e719514bba57f5c57518 +TEST= 204 +KEY= 0000000000000000000000000000000000000000000000000010000000000000 +CT= d3679e24912e5e57c79f685545b7984695e3d6a37bc46632 +TEST= 205 +KEY= 0000000000000000000000000000000000000000000000000008000000000000 +CT= 2ef510d6ca554efe89bc989577f6620a672f25cd0dcfc0ce +TEST= 206 +KEY= 0000000000000000000000000000000000000000000000000004000000000000 +CT= 4e838724f51de599428f7604b3d06772e6e8aa57ed6c13cd +TEST= 207 +KEY= 0000000000000000000000000000000000000000000000000002000000000000 +CT= 8363a7762998f87969c614d5f0e9d8501dc014c3fcd79382 +TEST= 208 +KEY= 0000000000000000000000000000000000000000000000000001000000000000 +CT= 1678682f9bc37d5b721ea08697452e992f0a6a840d56ca3c +TEST= 209 +KEY= 0000000000000000000000000000000000000000000000000000800000000000 +CT= febb91626099a1254d39c3361477d32a3ed6f76483fd5de8 +TEST= 210 +KEY= 0000000000000000000000000000000000000000000000000000400000000000 +CT= db42ef7cf6fd2885a1d5f1de58ed266d4a5f80c9d8b162a5 +TEST= 211 +KEY= 0000000000000000000000000000000000000000000000000000200000000000 +CT= 591c2fba5baae06a04a8fa917abfefa758b360781363a284 +TEST= 212 +KEY= 0000000000000000000000000000000000000000000000000000100000000000 +CT= b2e64e94e9cae090bff056e7b5becb1595fb5d21618fbde5 +TEST= 213 +KEY= 0000000000000000000000000000000000000000000000000000080000000000 +CT= 88a9f117538923dd939bf0776c0940fb3353808050aa19bb +TEST= 214 +KEY= 0000000000000000000000000000000000000000000000000000040000000000 +CT= 605c259c30f4ea543658e5034166827341bbec87c241330f +TEST= 215 +KEY= 0000000000000000000000000000000000000000000000000000020000000000 +CT= 663254645673b4103cc4a9899838e643f4ae324d447ed75c +TEST= 216 +KEY= 0000000000000000000000000000000000000000000000000000010000000000 +CT= 6b33ed5d4f39231cf9991b9d3dfe0945626e91833a4110c8 +TEST= 217 +KEY= 0000000000000000000000000000000000000000000000000000008000000000 +CT= 9fd9249f751bb363c007e61c3f246ee0c362891bbe39ad36 +TEST= 218 +KEY= 0000000000000000000000000000000000000000000000000000004000000000 +CT= a46ecefac31ac89f1fc1619bfd62ec4b7ec6c83794dd3383 +TEST= 219 +KEY= 0000000000000000000000000000000000000000000000000000002000000000 +CT= df7348fe59d92abab5a5bfb5f5cd0c93a3e772c8aabca7da +TEST= 220 +KEY= 0000000000000000000000000000000000000000000000000000001000000000 +CT= 82716bbbc12d70bfb9a80b8bb9d0bea46ddc4703aa270111 +TEST= 221 +KEY= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 49cda2a3f76b8d2d91131df1b408e556114e0807b52e79c8 +TEST= 222 +KEY= 0000000000000000000000000000000000000000000000000000000400000000 +CT= d5401a793d10c9fe4ed0ab4b4633d986406122116c1ee79a +TEST= 223 +KEY= 0000000000000000000000000000000000000000000000000000000200000000 +CT= dc3392fe681879d2d18452cae97b650ea647f06a10df6934 +TEST= 224 +KEY= 0000000000000000000000000000000000000000000000000000000100000000 +CT= 6af517bd29b3ee226e7f8773ab5dccd2e1f983cee20cf01e +TEST= 225 +KEY= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 9f019f2aebb66bc0f26768a900290972840964678e78dd4e +TEST= 226 +KEY= 0000000000000000000000000000000000000000000000000000000040000000 +CT= 130b5825bf9d81fc29548df8624ce2e75006107ae762f088 +TEST= 227 +KEY= 0000000000000000000000000000000000000000000000000000000020000000 +CT= 83d9e01f40b1e118be4c41e4ef974a49f69bd2b2b5e1c908 +TEST= 228 +KEY= 0000000000000000000000000000000000000000000000000000000010000000 +CT= b73ebebdfbaf2b96943232da1bf06785575d8a65b7b14b11 +TEST= 229 +KEY= 0000000000000000000000000000000000000000000000000000000008000000 +CT= 85b8c80674fc608232e7940126e3a93adab6057a73714797 +TEST= 230 +KEY= 0000000000000000000000000000000000000000000000000000000004000000 +CT= 89bee8cff53254004e2b8f57d241d76d12dad71de05ffcdc +TEST= 231 +KEY= 0000000000000000000000000000000000000000000000000000000002000000 +CT= a186b7caaa401b6acf06b9930328d60473f174d7d1d343de +TEST= 232 +KEY= 0000000000000000000000000000000000000000000000000000000001000000 +CT= fbf136bb88385af8ba6c8a7729469e15b638307678b4755a +TEST= 233 +KEY= 0000000000000000000000000000000000000000000000000000000000800000 +CT= 3b84a4c13112e66ef7d08ba7c2ae3b5fa9e8e2ef74d1b0df +TEST= 234 +KEY= 0000000000000000000000000000000000000000000000000000000000400000 +CT= 24eb7a6272ac2a13adb24fb5576f0463e965d567641050f4 +TEST= 235 +KEY= 0000000000000000000000000000000000000000000000000000000000200000 +CT= f3ffbeefc3f224f40dacd98dc059f67fdd5f900d82b91d39 +TEST= 236 +KEY= 0000000000000000000000000000000000000000000000000000000000100000 +CT= 3ec70f3dccf699c983c1136a21ad455fc538572633fb9072 +TEST= 237 +KEY= 0000000000000000000000000000000000000000000000000000000000080000 +CT= d395a2d6236e2b9968a1b07ae6a9a583d218bc4a03fcd4a0 +TEST= 238 +KEY= 0000000000000000000000000000000000000000000000000000000000040000 +CT= 569d5bb9cd8d4a610ca8708f19820931f2dd6bb18fb1384d +TEST= 239 +KEY= 0000000000000000000000000000000000000000000000000000000000020000 +CT= d9a13980c448be7bbd055ee700edde8b1a3cb0a274914f1e +TEST= 240 +KEY= 0000000000000000000000000000000000000000000000000000000000010000 +CT= 74b273fbca73410da48ae6b7d2aa31054971c24aa720594d +TEST= 241 +KEY= 0000000000000000000000000000000000000000000000000000000000008000 +CT= ec0fb72664e0a373c9642f5ec7a54abd6fb1d0a5bf50a6ca +TEST= 242 +KEY= 0000000000000000000000000000000000000000000000000000000000004000 +CT= d9ecaede72f7e3193cea0996ed08d95b9be18849201d7351 +TEST= 243 +KEY= 0000000000000000000000000000000000000000000000000000000000002000 +CT= 1909bf0ae0c6cce7a2a90eba57b1d17a7f3762c9bd4c4660 +TEST= 244 +KEY= 0000000000000000000000000000000000000000000000000000000000001000 +CT= e4025b38f3f0cf03869acd506c232ce5dcdbfb14cf55e0c8 +TEST= 245 +KEY= 0000000000000000000000000000000000000000000000000000000000000800 +CT= ab2b1b4fd8edf1d6d090abea38d2d30007c8cc7b20c76899 +TEST= 246 +KEY= 0000000000000000000000000000000000000000000000000000000000000400 +CT= 4390ce8330587c7cdf2396db6158f3500ed8301096b78dd6 +TEST= 247 +KEY= 0000000000000000000000000000000000000000000000000000000000000200 +CT= c57dc75b34ea4df648d567b1436365f13c1d3f0bceab832f +TEST= 248 +KEY= 0000000000000000000000000000000000000000000000000000000000000100 +CT= ff61c004e4f3aaabdfaa5c795360b62d53c5f2cf99c121d8 +TEST= 249 +KEY= 0000000000000000000000000000000000000000000000000000000000000080 +CT= b75bcbc3ea574d29f1832000e30458ee7d070cc308848290 +TEST= 250 +KEY= 0000000000000000000000000000000000000000000000000000000000000040 +CT= 0373990b137f8be1a953fad1a897ac2a3e0521bf5c60bdb1 +TEST= 251 +KEY= 0000000000000000000000000000000000000000000000000000000000000020 +CT= 53af0df3a74b5b4bd490f260a26a7d84f5689c1559777145 +TEST= 252 +KEY= 0000000000000000000000000000000000000000000000000000000000000010 +CT= 836be43a6084b9b4e0c09bf3494e3359062d67cae344d1b9 +TEST= 253 +KEY= 0000000000000000000000000000000000000000000000000000000000000008 +CT= 63c9e741dbdc529e583f19ec603a2da5c8828c55dd39200d +TEST= 254 +KEY= 0000000000000000000000000000000000000000000000000000000000000004 +CT= 8c85ed72f7d229685ea023480f8e12d2f97423f5b79caea8 +TEST= 255 +KEY= 0000000000000000000000000000000000000000000000000000000000000002 +CT= 92ebc03fb7c5672f464e47b30bde28569ca1c8cbde1135b9 +TEST= 256 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 798ebef822d0f7228cf6b474b918390ea0e82724938ba487 diff --git a/flint/test/testvals/ecbvk84.txt b/flint/test/testvals/ecbvk84.txt new file mode 100644 index 0000000..377e400 --- /dev/null +++ b/flint/test/testvals/ecbvk84.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 00000000000000000000000000000000 +CT= a693b288df7dae5b1757640276439230db77c4cd7a871e24d6162e54af434891 +TEST= 1 +KEY= 80000000000000000000000000000000 +CT= dd5f0f030eb01470daa8057151b6a5a24d694c94fc2efc0000e6a35bfb661fed +TEST= 2 +KEY= 40000000000000000000000000000000 +CT= 8978a62a86ef403b2419cf7b3a86d2ccd6c9e850f95c82e4d8fce9c2f24127fc +TEST= 3 +KEY= 20000000000000000000000000000000 +CT= 06f73384ec236d93c20c901dcc5bbb779d8b8c22692612c1abdab96deaae202b +TEST= 4 +KEY= 10000000000000000000000000000000 +CT= 661b12924763c7198f44cfdb0b3e20edab3e1e2ba80fb715d7b6f4b89aa5f6ee +TEST= 5 +KEY= 08000000000000000000000000000000 +CT= f263ba895301671ae7f8b1ee2e51f714c18df5fbe11edfac9ff09fdd91ab6c6b +TEST= 6 +KEY= 04000000000000000000000000000000 +CT= 6ac3f13fe15ee034b8729cbc0e5e6ee292aef0835e30fc616db21ae0f0afaec9 +TEST= 7 +KEY= 02000000000000000000000000000000 +CT= 5fb397f836015fb0ac899d52252d9cbe91f17880dcdf2ba436cde606b50b50fd +TEST= 8 +KEY= 01000000000000000000000000000000 +CT= 0d166d15e764fb6bc005df25b169d93f1cc03580e9dd4a19c4bd7cd32e6ca03b +TEST= 9 +KEY= 00800000000000000000000000000000 +CT= 580675f862e3a7b92a5e62d4821480fe9e98768aa5fae4d732124ee4d75aa114 +TEST= 10 +KEY= 00400000000000000000000000000000 +CT= 380726eb9507564c219a9c7d06b9352b63f222ec848e17e2eefbd4b07f7d408d +TEST= 11 +KEY= 00200000000000000000000000000000 +CT= 8de9809b5f2936ab5b2eb29e41f4ce3c7f388dd41411368f5b6bb0e8c6d4a6a2 +TEST= 12 +KEY= 00100000000000000000000000000000 +CT= 54d5b7cb7e41695c790317b0c91e48e20ba28867834cea73bdbc2601f670c171 +TEST= 13 +KEY= 00080000000000000000000000000000 +CT= 112974e784a867ce1899475b0768ac8700ffe9a147fd10bbc57b4df7b830fa56 +TEST= 14 +KEY= 00040000000000000000000000000000 +CT= c4281fc8550c90c251b7cdfd38b675596ce7ed75fee0edb1551ae5ab3e76d952 +TEST= 15 +KEY= 00020000000000000000000000000000 +CT= a7016dfb2e35ad1db9cac0dd82db08aad48eecc83d1ebe21301512c6b1e87759 +TEST= 16 +KEY= 00010000000000000000000000000000 +CT= b969f5140734b1eb80e6ca39ad90e3607faad118c0702214f408dde99f3438b1 +TEST= 17 +KEY= 00008000000000000000000000000000 +CT= 4076e9c750affff134bc2b44ade229936749dfd1f61581cabf0414dd447245e2 +TEST= 18 +KEY= 00004000000000000000000000000000 +CT= a8f36fed6103244c9e162124827806815e1bf7196f7df643743d9abbbb4cb5db +TEST= 19 +KEY= 00002000000000000000000000000000 +CT= 077fd7dd7d9c9e8c45ceb5ed1ad24cdb7fc6fa6d05d1bc6fee7d734d05f96223 +TEST= 20 +KEY= 00001000000000000000000000000000 +CT= b9ea320f93a5df55edd8370028f3eef75a183921013d99ea981b73e900ee305d +TEST= 21 +KEY= 00000800000000000000000000000000 +CT= 09784d676f1ed5b05443c2cda588f06585d1ab759ae3db2e6825e2492e03479b +TEST= 22 +KEY= 00000400000000000000000000000000 +CT= 5e037c26228f3935c83a0405d1c6200e1025245263fb9dd7a1b7e11bd987a52d +TEST= 23 +KEY= 00000200000000000000000000000000 +CT= eb9b2d563ed0228112605db65737af7247764bab4e811d85fb8fc2e4ce4741ac +TEST= 24 +KEY= 00000100000000000000000000000000 +CT= e29163d49f0b38276b7a585c8564e964634d183d6d13a36ec766df15e702fa6c +TEST= 25 +KEY= 00000080000000000000000000000000 +CT= 05d6b9acc238132f46ba6a217c7916d1fb201b6e770a93ecb95eb412176b8e45 +TEST= 26 +KEY= 00000040000000000000000000000000 +CT= fba6605bc762efb3d79834624b6556ddc566b6492e7ca33a89ae9c04b6a64b6d +TEST= 27 +KEY= 00000020000000000000000000000000 +CT= 54028f2e937ef2f44a22d4b04b32dc74048f33feaf7eb24577d49822281e6441 +TEST= 28 +KEY= 00000010000000000000000000000000 +CT= ae6175dcdc3b20b11e9a3bdc579af7273582161bfcdc9c798cc0833256719096 +TEST= 29 +KEY= 00000008000000000000000000000000 +CT= 3bea04fc7affff968004cea938948ab44fa79a4e7d3174388c3150a2be983ec1 +TEST= 30 +KEY= 00000004000000000000000000000000 +CT= 27381539da6288cb8feaf770879cfdc4671b05f02ccf2078904cc46218d4807d +TEST= 31 +KEY= 00000002000000000000000000000000 +CT= ded3d257ac18ac1d4c4e781a07223762107cb0af52dd57b04c93040a9fc49ba4 +TEST= 32 +KEY= 00000001000000000000000000000000 +CT= fa09e984c14dea14809a00f8681a4ad15e0a084df4363d1aaea39856e32ab92a +TEST= 33 +KEY= 00000000800000000000000000000000 +CT= a33e700efe86b2ccff84dddcea9aa45c85637cb1e1b9a0bddd88080bfd8e6c83 +TEST= 34 +KEY= 00000000400000000000000000000000 +CT= 629ddfc8e46cd4ec136287938695287de514134e599476019c1fdb8eb6406785 +TEST= 35 +KEY= 00000000200000000000000000000000 +CT= 184af8c9ae75b16d4edfe9ffc96b2295fd6a15f2f946accd6e0fcdd025441fa3 +TEST= 36 +KEY= 00000000100000000000000000000000 +CT= 9d03644d9676147b58bc6b7ca5e2eddc295c26cac982e3b54e79d81919ce9cbd +TEST= 37 +KEY= 00000000080000000000000000000000 +CT= 0789a4ee1ce54b116beba8463571b6eb3411bf9de74f95dbb79028531915b3d8 +TEST= 38 +KEY= 00000000040000000000000000000000 +CT= c9b057ed60097cd41425d5f72b496c84c4ceaab5357bf8a216b873e1392de06a +TEST= 39 +KEY= 00000000020000000000000000000000 +CT= 6d2724537d5e99a3eb8bef930808b79c291f292e232cfb45511f6e1164bd945e +TEST= 40 +KEY= 00000000010000000000000000000000 +CT= 2be4fef1d8fdfbb9373ad539c5e42d39aebe18ef3f40e9555b2088dfab47157e +TEST= 41 +KEY= 00000000008000000000000000000000 +CT= 59e958fd99f940f84a7e30cebae99b50fdb0bc687b24ac67cd27bfd9c9b81157 +TEST= 42 +KEY= 00000000004000000000000000000000 +CT= 42d0b805693a65a137b2d49c3d61c0de9dacafbe8e30a1c5d822626afeb87fc1 +TEST= 43 +KEY= 00000000002000000000000000000000 +CT= 9f546e5d0c3624038af9ea8810e2717fb86e6024a99349c067e86abcbd414566 +TEST= 44 +KEY= 00000000001000000000000000000000 +CT= 4600a390eae9396b855554d9f132f3c735f27e4adf6c7e6d7df817e950b651df +TEST= 45 +KEY= 00000000000800000000000000000000 +CT= 43409e14230ac5526e72686c9d79e19dd353a702966f8d5ab64dd4dde649e8b5 +TEST= 46 +KEY= 00000000000400000000000000000000 +CT= 394d566fade7fa50bbf5ed92eaefec41be3c53667f2acb4eb8249214c8098911 +TEST= 47 +KEY= 00000000000200000000000000000000 +CT= fe95850b9d93c15749ee79330ff165db88f6a8d776251a4bb7fc3255f579569a +TEST= 48 +KEY= 00000000000100000000000000000000 +CT= 3a61011009941ac51929ffff8a5162265e0dd93496d937c5710f2e553460316e +TEST= 49 +KEY= 00000000000080000000000000000000 +CT= 72c7d18f7f7a0e70e24a6f7621a15ed865c22c09b39de30961f11845193eb1da +TEST= 50 +KEY= 00000000000040000000000000000000 +CT= 79ba5c5fd3b25264a3b3a40c06781ae295fbf8173637df40b9bc70b7d9585186 +TEST= 51 +KEY= 00000000000020000000000000000000 +CT= b969922ab629e2106d1627cf063020aadbda23cdec8302e4bf047014dfaf1d8e +TEST= 52 +KEY= 00000000000010000000000000000000 +CT= 98148f53c67eb9e64abf1c152d90fb89c29799694afaf148cbaf7976f844ca4d +TEST= 53 +KEY= 00000000000008000000000000000000 +CT= 657947441dcb94bcb57c787b625c0d8fa696ed454d6db295246bd71f957b05cb +TEST= 54 +KEY= 00000000000004000000000000000000 +CT= 0eac65884fa13bc6d55de5796d2c35c4e33e71aa9c17ac83e7ce45764149ee74 +TEST= 55 +KEY= 00000000000002000000000000000000 +CT= b8426053981c39cf6dd3968b7ad06e514e2ef46f9ffcb3f0f31f6fe038bd845c +TEST= 56 +KEY= 00000000000001000000000000000000 +CT= db3654dd456df89e6b259bde40bb19038f6edf0c4f878c21a41cc65197432c9e +TEST= 57 +KEY= 00000000000000800000000000000000 +CT= 2341b935b19e6770fe6da6c1945d8905f725c6f175421aa00c310614fda9886d +TEST= 58 +KEY= 00000000000000400000000000000000 +CT= 934cc8bd34ee16a6b70e66c0d8dcc420cd32704be80dbb003e203810bd0a20f3 +TEST= 59 +KEY= 00000000000000200000000000000000 +CT= 89b8e93a4f3eaf380725337c1109da2db33f5bd734e4dfb99dbb6bee38f15175 +TEST= 60 +KEY= 00000000000000100000000000000000 +CT= 18d5eed4c32ef50f31c6108047d4c0666ba040f57f665fb849855ffb4f14a96e +TEST= 61 +KEY= 00000000000000080000000000000000 +CT= 80bbf27aec51d3b006774f87c388458f20ca03109e4bbfe47272a43ee489a8c6 +TEST= 62 +KEY= 00000000000000040000000000000000 +CT= 7b79c08628db0fd47f32cf48f94efd537f460682502a66831e80fe3827b4cb4f +TEST= 63 +KEY= 00000000000000020000000000000000 +CT= 8b46f6906bbe67ad424431ddfdfc752d6760ab2ef877dd8c74b4d3758a9b0a52 +TEST= 64 +KEY= 00000000000000010000000000000000 +CT= 9c2cfe9aed5d843321e1cc3475bd68e183a05be440b3205c3d74a31ca6c0aad7 +TEST= 65 +KEY= 00000000000000008000000000000000 +CT= b8215a1c89216cf2aa9bc8cad5d711b5b8fbb2e5efd94583dc734c9daf11818f +TEST= 66 +KEY= 00000000000000004000000000000000 +CT= d092d9f97a52359537c560bfa84d253e4782518a89a18f8d75a1bd549be398a6 +TEST= 67 +KEY= 00000000000000002000000000000000 +CT= 2d9c2860be76454759b3a8eeb2f734d4bcb7926fd4eee62bd4ad48c8ff257fbb +TEST= 68 +KEY= 00000000000000001000000000000000 +CT= 32d35f96b9da7045444bf4186ab7c3e2733c0aaf55888aed5eafe663dfa5a2d4 +TEST= 69 +KEY= 00000000000000000800000000000000 +CT= 683f1d89520fb36827a564dacda4b782164e8a2fe2b445c0d471b9391f900ab1 +TEST= 70 +KEY= 00000000000000000400000000000000 +CT= c5eb3843bc70f4b68965a356dfd56706c22429f8be809faca498c5a0012da2dc +TEST= 71 +KEY= 00000000000000000200000000000000 +CT= 184cfb7d8452f9807b13bc7e9718ebc20e696f76e96429faa9412b3d8af3c522 +TEST= 72 +KEY= 00000000000000000100000000000000 +CT= cf8d1e28043dcbbd89db9fa56468b82d06ec73b64aa3ab112f82eb2055154a4f +TEST= 73 +KEY= 00000000000000000080000000000000 +CT= 40c5f0d62b2f054715d8623c76b2b3359cae6928f8c82b15fc1630880fd2187a +TEST= 74 +KEY= 00000000000000000040000000000000 +CT= 1447a2b99b586f8d65252e8f317f2b669c97dcaa46470e068bf33df239bf60c0 +TEST= 75 +KEY= 00000000000000000020000000000000 +CT= 761ebd8736863a102adf9365e2cc27efb13a7b62e6f9253a435daebf8d96a814 +TEST= 76 +KEY= 00000000000000000010000000000000 +CT= e0519fb9b7e6a3cf6954801ca16937e6f8f542bb864e015ddcb2da535e460cd2 +TEST= 77 +KEY= 00000000000000000008000000000000 +CT= 7f0b2912c7bf169d17dadae668db7194c6b5cc3c3f841754316d323763d24618 +TEST= 78 +KEY= 00000000000000000004000000000000 +CT= 328b3bf4defe533b803dff1662baa9b22f5e1d66e053fa68d29542139641306e +TEST= 79 +KEY= 00000000000000000002000000000000 +CT= 8f15cb33643672677586cac90dd3f3a6ef6269623f27c9f71da16e0e47687234 +TEST= 80 +KEY= 00000000000000000001000000000000 +CT= 7c6cce46e2fcbd63984ac3e094602272c8158f5c0b251a8f0a76cfb65933b122 +TEST= 81 +KEY= 00000000000000000000800000000000 +CT= 6735be3409da197717339ae274d63874098fb885a50a12652f45f1e32c62c8c7 +TEST= 82 +KEY= 00000000000000000000400000000000 +CT= 78d2613e2c6b9024864ab6020437109e3c814e0c71f9be5fa65599497ac94289 +TEST= 83 +KEY= 00000000000000000000200000000000 +CT= 38931fca1f3e8e1442b51e805a00a1b73748f1e1ac7b36051a661320eef6cbba +TEST= 84 +KEY= 00000000000000000000100000000000 +CT= ae90389d6b0cb8737b7b6c2745e700ca7bf6534939ee2a40a71c5a9449abc8ef +TEST= 85 +KEY= 00000000000000000000080000000000 +CT= 4fc2af43a742bdc2449a58c2b1361944d7d01e7bb7d84f5182cc2eb41903bca6 +TEST= 86 +KEY= 00000000000000000000040000000000 +CT= 01251fd03d388e91a5f978aabdaa8cb8abfc8a63f1566e37cc3363bf0ab5216b +TEST= 87 +KEY= 00000000000000000000020000000000 +CT= 82b33c834a01d696cd26d594b8070a3987a3e45aeddcf736d068b9637dc8aa15 +TEST= 88 +KEY= 00000000000000000000010000000000 +CT= 14f38c8707738ac7d949bca4e94b444c38bcb389eda7f876e8a67060f1c5096b +TEST= 89 +KEY= 00000000000000000000008000000000 +CT= 2e264b23bee7d6a2e928ede778a2d7d76f4fbe70f393ae5f5d07270097ee7cef +TEST= 90 +KEY= 00000000000000000000004000000000 +CT= 81ee9075b933bf4d97a8ca8071f8be7ac1139983b2bfc21f395e73bb4b43d1d2 +TEST= 91 +KEY= 00000000000000000000002000000000 +CT= 2c155b5f6af1f51646426dcfd6bd026c2a11acfefa2d4645187b76dbb888ab38 +TEST= 92 +KEY= 00000000000000000000001000000000 +CT= 8e6a799b9ad53e2303d3dc50e2bb758f38c0bd03d46de94ba163e066a0833633 +TEST= 93 +KEY= 00000000000000000000000800000000 +CT= fcb0e370318cbdbb85f9b8cf648501b9fa8af5cf251c8e46a088ab3d129df614 +TEST= 94 +KEY= 00000000000000000000000400000000 +CT= e68011e861634229a63128228b118219f418884e26fadecb61a3a869b176da2c +TEST= 95 +KEY= 00000000000000000000000200000000 +CT= c410dc8bce3e26c431388a8d9fec80963f749e6db7a8b0bccff387024ba73bee +TEST= 96 +KEY= 00000000000000000000000100000000 +CT= da727b6958942c17ba65966645ca4b2d4be79c97cb2e91589e5cda8822040359 +TEST= 97 +KEY= 00000000000000000000000080000000 +CT= 84ca6e215c748118c65a4400f21568eecaa69c2e8e47b4261f08b44c16134151 +TEST= 98 +KEY= 00000000000000000000000040000000 +CT= a5ad0102ff2f20fd9fd889ecf5922b1d682187cfcd91f3b1cdca4d1aaf804248 +TEST= 99 +KEY= 00000000000000000000000020000000 +CT= fcc0475a1a4321cd30933cb910ee48bde57af4e561b0a77b41bf733b9a36f0b1 +TEST= 100 +KEY= 00000000000000000000000010000000 +CT= bb99d60340b28b28a77ff0ee0ebd2cb7c64c97af809484a87bc4fd41e15812bd +TEST= 101 +KEY= 00000000000000000000000008000000 +CT= badbca83a3c6334ed0b8d12b562d53f3535e8daf1416e2273dded99e0aafe61b +TEST= 102 +KEY= 00000000000000000000000004000000 +CT= db04cf2dfaa67f06e30e03bc4f9acb0ed0de04be72ad104478a739741fa7d34a +TEST= 103 +KEY= 00000000000000000000000002000000 +CT= a9389a317db47fcab7053161fee52f78f6aee8bba195934b5783d38dc7ad41c8 +TEST= 104 +KEY= 00000000000000000000000001000000 +CT= dcb0406cdcce1a7cf999f4782e504dc525c4e0635ffce078f3414260c94bf3eb +TEST= 105 +KEY= 00000000000000000000000000800000 +CT= 3f20760f36d2f2d4972a86a5843bff3d6280ce23df367691c3a33a634cebd477 +TEST= 106 +KEY= 00000000000000000000000000400000 +CT= 651e0d4d0035b72b8d847ddc3941acbc2f6189f087898b54f329832598b994b0 +TEST= 107 +KEY= 00000000000000000000000000200000 +CT= 0f93c8a611e3649c976077c368537b3b32727c485c24326b7eda3e851021d346 +TEST= 108 +KEY= 00000000000000000000000000100000 +CT= e311fca783d08deb864a16b1752c37ce34aabb6e0d48dcb0d17996638e95bbc4 +TEST= 109 +KEY= 00000000000000000000000000080000 +CT= f434ddfd629787d73a2c98989da7489cfbee7d3952a8f235716663025b45b178 +TEST= 110 +KEY= 00000000000000000000000000040000 +CT= 28dcf48483a943d0d6e9691d8db04cdc38ec32969b92a2ba4c9262ab592e7163 +TEST= 111 +KEY= 00000000000000000000000000020000 +CT= f00b718cf92d8850467e8ab329541d630aafd2e8d186249e37a7ef270edf2aab +TEST= 112 +KEY= 00000000000000000000000000010000 +CT= f44e4b7acac09dd0c9ac9dae7365124f248f24d20cedf95cc4eb14668d651774 +TEST= 113 +KEY= 00000000000000000000000000008000 +CT= 3a9256db59fe107ce949a0c95ce9a9e79352950c7ac4ee763b67cf72599d1d16 +TEST= 114 +KEY= 00000000000000000000000000004000 +CT= b449ade26d75c726ae5eeadfed4a50952f7c9ccced40a6d0a67651d14c4cfa4b +TEST= 115 +KEY= 00000000000000000000000000002000 +CT= 1636e1bddd35f4575768362ba6034dea82a8a05127720603bb1ff978304aeebd +TEST= 116 +KEY= 00000000000000000000000000001000 +CT= ad0cdb633d921f98e65ac8947545e4c3e27228c8a08cbfe6cdac63cf0396119a +TEST= 117 +KEY= 00000000000000000000000000000800 +CT= 71c605b12e53e795edc63682dd3a9376bce84ff9430a40706586fbb7cc20c37c +TEST= 118 +KEY= 00000000000000000000000000000400 +CT= 701de763e01b8287149afeb82b8bd2df599b107f51f128a3c26d5a28dbb45a17 +TEST= 119 +KEY= 00000000000000000000000000000200 +CT= ea8e0427f00fa9382b386b447cb717e12a69ccaa779754d05882052839e4fab4 +TEST= 120 +KEY= 00000000000000000000000000000100 +CT= 13409e26679fa9ecc83e6caa6e5a68292ea53d953a80e5c4bc559b54dbf9fb4e +TEST= 121 +KEY= 00000000000000000000000000000080 +CT= 34c10b44e15fbc782c97173705fbc76b6e96431813c1943a7b88e951a4b8ec99 +TEST= 122 +KEY= 00000000000000000000000000000040 +CT= 3ee5d419f529efaefcf37173f96dfb6799f9b17e4204195f7440c06a7f786f1c +TEST= 123 +KEY= 00000000000000000000000000000020 +CT= 2fd35e53ecbf9be4b6782c1870dd7d2f1f8147f8784ad87f3ada2da7aa672711 +TEST= 124 +KEY= 00000000000000000000000000000010 +CT= 03a7778ce5ef4118f919163dacb361dd19f89795fabc6495e0bf624d8a2846c0 +TEST= 125 +KEY= 00000000000000000000000000000008 +CT= 3a6441f5236f3b0d7806757a97661ed9f38c70df595aff4e4e611bffd22dc9d2 +TEST= 126 +KEY= 00000000000000000000000000000004 +CT= cb95e05f2ff86f6a5b679c1d065d96a0f725a4520f36cda5eca3d8b97614e9c5 +TEST= 127 +KEY= 00000000000000000000000000000002 +CT= 76a65ad2cd65222725bb8759c5f285f69457eacc066f0d9333d8377ae66cd871 +TEST= 128 +KEY= 00000000000000000000000000000001 +CT= 88cc57d51a2170390ef956db28009eba8ddce3e0419c5d7f584b537929739309 diff --git a/flint/test/testvals/ecbvk86.txt b/flint/test/testvals/ecbvk86.txt new file mode 100644 index 0000000..8d70b3f --- /dev/null +++ b/flint/test/testvals/ecbvk86.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 000000000000000000000000000000000000000000000000 +CT= f927363ef5b3b4984a9eb9109844152ec167f08102644e3f9028070433df9f2a +TEST= 1 +KEY= 800000000000000000000000000000000000000000000000 +CT= af2df17e790c8eb31b3d9d35486357292bb266fa9962a1d3ef533c47759f7548 +TEST= 2 +KEY= 400000000000000000000000000000000000000000000000 +CT= 7a686d8aeac29583a876aea0a6b77337c289d6b61a2c47c364e8cecb77d9a3fc +TEST= 3 +KEY= 200000000000000000000000000000000000000000000000 +CT= 30824bd5d14d6764b37d171c174ff7fc1e035a1b04056d30255e4340ca5d88bb +TEST= 4 +KEY= 100000000000000000000000000000000000000000000000 +CT= 018e2bd76fdead0eb8347892d152ca2528d324a8d068fc18f50c8dcf1f9826cd +TEST= 5 +KEY= 080000000000000000000000000000000000000000000000 +CT= 2a3cfc6d1b8ebb510c5792b3f3a153c3a7c2197fb4d695c118d061cb3efd935e +TEST= 6 +KEY= 040000000000000000000000000000000000000000000000 +CT= 3667c64168435bfa69a0409070e2e0bbd49590f0e9590327434574f43ef1d72c +TEST= 7 +KEY= 020000000000000000000000000000000000000000000000 +CT= 356774bd1fd43558a2275a4e9840c8f2b6926976277d6711c272bb0832759f33 +TEST= 8 +KEY= 010000000000000000000000000000000000000000000000 +CT= 3aca28e66aab1736af80697079813bfb9fcd5575219f5a5711e66ddda39fbc78 +TEST= 9 +KEY= 008000000000000000000000000000000000000000000000 +CT= 9ff8ccd1ab87afd8026cc83e0d5a4581eaa4a1ed1bc6cc397c14fa3217d16eba +TEST= 10 +KEY= 004000000000000000000000000000000000000000000000 +CT= 45b7d143e96203995e464047b6e0bd29a27a007dd0f680e9a19471c36ea1ce09 +TEST= 11 +KEY= 002000000000000000000000000000000000000000000000 +CT= 78ec7d04617b15db1d08722c1fd77534d4142aef5714712a64e82b2b71d66b77 +TEST= 12 +KEY= 001000000000000000000000000000000000000000000000 +CT= f65728b1fc935fec2acf2f94d5dc346419fe45cc86efba8fee1218fde45c0395 +TEST= 13 +KEY= 000800000000000000000000000000000000000000000000 +CT= 82437062118596f7f2299dfefba6c185e85d4384af2b1e3a4eaacbe167a14d95 +TEST= 14 +KEY= 000400000000000000000000000000000000000000000000 +CT= 01225432417d71b9ed7896301659eb919c468b2e88d292000368d7e30587667b +TEST= 15 +KEY= 000200000000000000000000000000000000000000000000 +CT= 79ae9122cca2549bd8b78c4f71081e026591ba1719ee63d151a61983d3484c35 +TEST= 16 +KEY= 000100000000000000000000000000000000000000000000 +CT= 087dd7676823cf35811320dde2cec1ad970523e52470891745407dede871b003 +TEST= 17 +KEY= 000080000000000000000000000000000000000000000000 +CT= cb048a979a81dc0765a04091e2d1cbc90599d077ab6f1158ef34369336655d60 +TEST= 18 +KEY= 000040000000000000000000000000000000000000000000 +CT= 407f1849e571907c2620be0d00b07567f9f4c43afd4f0555aa2b6186eb1608c5 +TEST= 19 +KEY= 000020000000000000000000000000000000000000000000 +CT= bdd36f0dcf0f9724c2c3d6e102318436019cb98aa9dade3be66ba227a809087d +TEST= 20 +KEY= 000010000000000000000000000000000000000000000000 +CT= c5a6bcf1a2b7e6233ebfc90c391725665360ff10f83b8af0607fbf59da5f5804 +TEST= 21 +KEY= 000008000000000000000000000000000000000000000000 +CT= 5a118390ad80b8e51e3286dd19fe35e2c6b53f166a5c467e1cdd018e69bd191c +TEST= 22 +KEY= 000004000000000000000000000000000000000000000000 +CT= 641ab94414d8e75765d63e24c8819990133b6ab5b11e2f96382be36941c6c3a5 +TEST= 23 +KEY= 000002000000000000000000000000000000000000000000 +CT= 75b1ad9730c3e827024ac2e646b62b47bab377fd4864467e1c4cf258df7d382b +TEST= 24 +KEY= 000001000000000000000000000000000000000000000000 +CT= e0b5fd5ef00ae75592e4808ee1c68728c45adfef4c5baffe0753493e52715e98 +TEST= 25 +KEY= 000000800000000000000000000000000000000000000000 +CT= ac5f809c514dedb05de5e602f69e37e7a73b2f958ef1f458951409ed3584a97a +TEST= 26 +KEY= 000000400000000000000000000000000000000000000000 +CT= d68e59cf891d7d1678bfeedf75784cc5bbf3d3c04d2c5459516543bbdc3e19e8 +TEST= 27 +KEY= 000000200000000000000000000000000000000000000000 +CT= e23a62d970356cd77f5c2ad66152089bed735d7d01b172e27b70ced96dddc02d +TEST= 28 +KEY= 000000100000000000000000000000000000000000000000 +CT= 73a2cf45d54a952a6be40100d8abe0d061a653c2556f436a0417c5b396fabe06 +TEST= 29 +KEY= 000000080000000000000000000000000000000000000000 +CT= bdb0c5d7a0644ef5561bcb29e67ee1f7a4c9b3926156b3c9842fa6a0b6f41ddd +TEST= 30 +KEY= 000000040000000000000000000000000000000000000000 +CT= bf8e2eeb085002404d970e42433618f515ae2c0e1dbbbe5e13bba957ded59602 +TEST= 31 +KEY= 000000020000000000000000000000000000000000000000 +CT= bc0c0121ce46598904435c5751e02a0f0b352816d548d188dab2972baab25b3c +TEST= 32 +KEY= 000000010000000000000000000000000000000000000000 +CT= a02333098a14dc955988cb0f489089e63553f7eeaff987625a394c17ce64dc13 +TEST= 33 +KEY= 000000008000000000000000000000000000000000000000 +CT= 3df6d238ce89f12f7be8ad862ce2c859bedcb838b3ed7bb2623c0d76ed7e0bcd +TEST= 34 +KEY= 000000004000000000000000000000000000000000000000 +CT= af8bb8bd46b117932c9b5397c0ffb37cedb82f31f95d687ee214cdd71428c526 +TEST= 35 +KEY= 000000002000000000000000000000000000000000000000 +CT= fb73784e3e88bb3e900624ca59e2317ba4e9d91f842340a5a278a86f9d7eea78 +TEST= 36 +KEY= 000000001000000000000000000000000000000000000000 +CT= b719d07e18bdcc7354ac432b27e0de6c922f31df409461acf4e996b108c7d4dc +TEST= 37 +KEY= 000000000800000000000000000000000000000000000000 +CT= aee463b9cdcf09c6c934e065edd2ed2e515908dd238f991ded684b5a4b011e73 +TEST= 38 +KEY= 000000000400000000000000000000000000000000000000 +CT= c3a08e6581c8ad1312b31e71b0168e1c2fe1d225992db08e420bec7cb710b8a9 +TEST= 39 +KEY= 000000000200000000000000000000000000000000000000 +CT= 061dfb439cb6030fedacd7802c33787b4a47ddef4cf9c8c5ed1cefe8a75b3edf +TEST= 40 +KEY= 000000000100000000000000000000000000000000000000 +CT= 0ec5b1a48cec0e5340c8d21ff0bc6941bcdfd58d0bf9004bac981e5dd4646350 +TEST= 41 +KEY= 000000000080000000000000000000000000000000000000 +CT= 8a5f1d3445b530cefa0cefb7a2c21089f1171f29f496ef5730b433c25b2e171b +TEST= 42 +KEY= 000000000040000000000000000000000000000000000000 +CT= b7a6bb6b71d4260510f3300fe90fd201609269cae57ab33a10ffcf384f4b55dd +TEST= 43 +KEY= 000000000020000000000000000000000000000000000000 +CT= 4a803c846ffde5cf9f74060b0164df76f70065d48da26214840c249462dbfb3f +TEST= 44 +KEY= 000000000010000000000000000000000000000000000000 +CT= df6ff94d458ec1d275d7609ae22dc8c40fbc5880da867bad53e0d0de474ea6ca +TEST= 45 +KEY= 000000000008000000000000000000000000000000000000 +CT= 068c3b985ca95e02650cd33a32ae0a3d5639b30addb8744bae09568b702a3a1e +TEST= 46 +KEY= 000000000004000000000000000000000000000000000000 +CT= dc09af29dc8bdd955b61361c41d6976f743a4f7958dada487dddb82fd3137a1a +TEST= 47 +KEY= 000000000002000000000000000000000000000000000000 +CT= 8d4876492c1ca41fdc1dac0d113886a0e4c18e2beb48b0eb3ba413b0c29ef315 +TEST= 48 +KEY= 000000000001000000000000000000000000000000000000 +CT= 5e57a9c466bb3aaa96e0b2c0c80942cb0c0274192e464e024ce5697ebb61458e +TEST= 49 +KEY= 000000000000800000000000000000000000000000000000 +CT= 54658a25fb60e75b75de81fa9a970b3e39c3451e91c6b6261e4c4600e1502c3e +TEST= 50 +KEY= 000000000000400000000000000000000000000000000000 +CT= d4d13e16bb0c864b63eddc5d02e8b5ce5ba600cf77b13088611b1a3adf46e34b +TEST= 51 +KEY= 000000000000200000000000000000000000000000000000 +CT= bbb1e8dc1d3e262f7286860d04e849c26870b63342d17af760cc471db45bcdf7 +TEST= 52 +KEY= 000000000000100000000000000000000000000000000000 +CT= 040438f7030b1480c93c47a4e43a294a6bc2b1063ea83ceae554b3e77b2072ea +TEST= 53 +KEY= 000000000000080000000000000000000000000000000000 +CT= 28193c3ab95d78d47cca1238a5ab84186b7e015735b767d3ec25900d1233243f +TEST= 54 +KEY= 000000000000040000000000000000000000000000000000 +CT= bc19f550a0a3fd5624feb64cfac80800782614a9304a4e38c79230474f11f081 +TEST= 55 +KEY= 000000000000020000000000000000000000000000000000 +CT= 89b2d0977e3241683ef155496f861fe60276f59979ede9d9e74786f6f3a450fd +TEST= 56 +KEY= 000000000000010000000000000000000000000000000000 +CT= a0b5a4b5e4da02b4c7688030d9436752332eec72b5171cfa2c99cc9907a95118 +TEST= 57 +KEY= 000000000000008000000000000000000000000000000000 +CT= 4bc3dab5bb12ed27aa402324b4bea56e59720dc3c2fd65298d1a6ab7f7f2d77f +TEST= 58 +KEY= 000000000000004000000000000000000000000000000000 +CT= 02e5e7f651803d6c72d3dd2ab4a5da69aa435b28f9dd11831c704185bc176e98 +TEST= 59 +KEY= 000000000000002000000000000000000000000000000000 +CT= 043965c9097eeca5218799b5bdbd5602ea6e3f259f3c14fa80101814e44f64f6 +TEST= 60 +KEY= 000000000000001000000000000000000000000000000000 +CT= 8fdc3ee48d1b0b8404a1c0a3f0575bdff007a8e10ee6a307f479daaca88aa2c6 +TEST= 61 +KEY= 000000000000000800000000000000000000000000000000 +CT= e03bb6089be851e28e294f0217e93f5e50e0279f0ea6924b5854ddb7e75f850a +TEST= 62 +KEY= 000000000000000400000000000000000000000000000000 +CT= 0a3d6179dfaf2912c0136e1e336f6c5a0f74b36af4956ee455aec9c799c1f239 +TEST= 63 +KEY= 000000000000000200000000000000000000000000000000 +CT= f120ea8dbe01f60fe0fa9ec76340506da35b4706fe3825fdef25b67618a632c1 +TEST= 64 +KEY= 000000000000000100000000000000000000000000000000 +CT= 25d1467966361f2ac7cabbafb3513aee32f486286cb593b6405c6314c5206624 +TEST= 65 +KEY= 000000000000000080000000000000000000000000000000 +CT= 8655d5730744c4351725f1d5ca49249fbe576cda46fa43cd29bb446d0c245b6a +TEST= 66 +KEY= 000000000000000040000000000000000000000000000000 +CT= 6dd1d285e9d0a439d860a5e4f40f368311bf3113d0531e3118d9458538ce1750 +TEST= 67 +KEY= 000000000000000020000000000000000000000000000000 +CT= 90a6804daefda46c4a1162a85a927a792c1c39fa85e0d1e61aa7bc6fb81131cd +TEST= 68 +KEY= 000000000000000010000000000000000000000000000000 +CT= 0da7c25f3b618b9363b2d1d4c3931e84d74f166449209378f931b9ea3c99b64d +TEST= 69 +KEY= 000000000000000008000000000000000000000000000000 +CT= 523d501a903421a83e5657057226746f2976298f12ea106c889b04c0e853955d +TEST= 70 +KEY= 000000000000000004000000000000000000000000000000 +CT= 4f70e187e69ef6de911532144f8e1d4ce94b554139643805ff5b5cfc52035539 +TEST= 71 +KEY= 000000000000000002000000000000000000000000000000 +CT= 0c5f9c673e264823cfe06f6fa78dd306ac5eee948f1385ebeaf29c3cb146bdfe +TEST= 72 +KEY= 000000000000000001000000000000000000000000000000 +CT= cf24b9c5ad7cb7e0e371dae950e2b6edf5e551264a1c0248881ae44d8bd99987 +TEST= 73 +KEY= 000000000000000000800000000000000000000000000000 +CT= a9f98f298fff5f936ec55553fc8ff5b916ec3e02c82b70d32899ab858656dc21 +TEST= 74 +KEY= 000000000000000000400000000000000000000000000000 +CT= 667acd0e3d8d1e1c7b6ec7d2dead8c235a5237af3ae2199889f6ac167514c290 +TEST= 75 +KEY= 000000000000000000200000000000000000000000000000 +CT= 42a71dc4b46dbe50e810aa59b7e10c1c3ebea4ae21a9520bb89c3ab1303608b0 +TEST= 76 +KEY= 000000000000000000100000000000000000000000000000 +CT= 8aae249c75b986428cfb1f40df298d3d082c95f5b41636b971673dffcf0dd107 +TEST= 77 +KEY= 000000000000000000080000000000000000000000000000 +CT= 0ba51ae1d061d4f00bfef9b62a7086d9d1238e37f3c66ed9b55f5c1a357e2f2c +TEST= 78 +KEY= 000000000000000000040000000000000000000000000000 +CT= 959229c68fe30f29cfd795a6558bd241b1f600ec95f6d118bdb296c12a5f9da0 +TEST= 79 +KEY= 000000000000000000020000000000000000000000000000 +CT= 6419d8ab77f534ea07c186091c40cca2f916881b637db7db7f8a3e1a9fa213f7 +TEST= 80 +KEY= 000000000000000000010000000000000000000000000000 +CT= d76a8cfab43dac47f0132dcb201f59df8973b1387f5a60d64b530ebed0296364 +TEST= 81 +KEY= 000000000000000000008000000000000000000000000000 +CT= 842b00ec0468a7ea14a9ea638a7af2c5168225f56fee91b002937747b8279745 +TEST= 82 +KEY= 000000000000000000004000000000000000000000000000 +CT= 5c810ef6f6a6648a2891fc499d9fcd68b2f32b2ce461c3ad3a9eab6b4f8fe7d0 +TEST= 83 +KEY= 000000000000000000002000000000000000000000000000 +CT= 5d61bbaa90c7a7e2d1dbb6a42eaff23adf5cd5222b5db92863e28148517aca87 +TEST= 84 +KEY= 000000000000000000001000000000000000000000000000 +CT= 73ac21379b54001618fba905151af038e6201a9f4673b4efd3ccdb6beb714aa4 +TEST= 85 +KEY= 000000000000000000000800000000000000000000000000 +CT= cdc3a92b47c735e9f4482ac4159135baca886c6de86c20e76daf89ac202fdbf3 +TEST= 86 +KEY= 000000000000000000000400000000000000000000000000 +CT= 80eec65e151a6b3ba5b613db06d1fd0a834b5466c07d222d0820fd983a06d03e +TEST= 87 +KEY= 000000000000000000000200000000000000000000000000 +CT= ef0b1ba3acd70e19a856d6a7f07e85ab97534adf27d4cf4d68731c64a5e8ac91 +TEST= 88 +KEY= 000000000000000000000100000000000000000000000000 +CT= 6283ccd38fdb6ca02c7e0e4ec4aa32a9a4b243adc6cb7c7b637c789f8cf4e90d +TEST= 89 +KEY= 000000000000000000000080000000000000000000000000 +CT= a617e8cf6d4d4f525f09e60770b3bf23a364176bef5553727df14daa2fa4bda9 +TEST= 90 +KEY= 000000000000000000000040000000000000000000000000 +CT= f9f8a1930ed5c4aab604a1f7b768a278b975b27c51ea977c64dfed47e768fe0c +TEST= 91 +KEY= 000000000000000000000020000000000000000000000000 +CT= 75762438625d25ef1d96b7e823dc005ddeb1a5765bab3705c101ef285bd62b6f +TEST= 92 +KEY= 000000000000000000000010000000000000000000000000 +CT= 4efe5f7445ee52b8e1140e183351baf9b433d66ce67439ad76f3a8fe9d61dc1d +TEST= 93 +KEY= 000000000000000000000008000000000000000000000000 +CT= ff444af8affa0f9f71e250cc7537d7cd69c6e399f1e5a14f8971421c16a64bdf +TEST= 94 +KEY= 000000000000000000000004000000000000000000000000 +CT= c557e4cea2726640ff15b8fa3e0d983a1208b83f57baaade5c912addb2f19fee +TEST= 95 +KEY= 000000000000000000000002000000000000000000000000 +CT= e4b989a84974ac4634ba0a739ffd1f19d52586e6ece7a1015c8483453cdef707 +TEST= 96 +KEY= 000000000000000000000001000000000000000000000000 +CT= 08fd96c37fba15f9ecfa787724ee74862b9210b65e5890ea1a6bbc7c4e52b45e +TEST= 97 +KEY= 000000000000000000000000800000000000000000000000 +CT= 481d0d1c30af91be651a13a62e044ed39e0da41b10d554c42433f6d905117a8f +TEST= 98 +KEY= 000000000000000000000000400000000000000000000000 +CT= 4d17fbe824169c51f841fb5c6a3da3f7fbb4d2a57e92fb7fd830d79055c4c3fc +TEST= 99 +KEY= 000000000000000000000000200000000000000000000000 +CT= 4a36171b1fe52e5a045fcc60fe1a78aa7fc600db7f0612b1479805d90afcfaa8 +TEST= 100 +KEY= 000000000000000000000000100000000000000000000000 +CT= 075c98378383dd79d912a5ee1c89c6d1ac520276156e54689efb25835b663d00 +TEST= 101 +KEY= 000000000000000000000000080000000000000000000000 +CT= 51cd19939d5547f4d0984ba7406daa64c4f6bcb108481faa95b4b124595fce8d +TEST= 102 +KEY= 000000000000000000000000040000000000000000000000 +CT= 0b747dbe45cde020593862fc0daf3c06898ee4246271c80efc00eef863071f67 +TEST= 103 +KEY= 000000000000000000000000020000000000000000000000 +CT= 56c29aee30278a3679e718dda037a687cd4e6046029b56259dd25158f7f7b909 +TEST= 104 +KEY= 000000000000000000000000010000000000000000000000 +CT= a9e7dc3f98ae91456c5cd95d8dd45f6b14eddecd740a359bd1cc7856e4d9fa86 +TEST= 105 +KEY= 000000000000000000000000008000000000000000000000 +CT= d998e1b323737c8bfc246b6a223a8272289e8a6de91c3cf667d3f42fb89f1fac +TEST= 106 +KEY= 000000000000000000000000004000000000000000000000 +CT= bad3df64f608fcf858e31b81a867a0e3c4c611330594a9a6c9130ee0cdb96e38 +TEST= 107 +KEY= 000000000000000000000000002000000000000000000000 +CT= 0b37fc2e3a46f2550951f122b90e330265b5cfa99076a1aceca251317200e212 +TEST= 108 +KEY= 000000000000000000000000001000000000000000000000 +CT= 909d319ceb95aeaf23b8a2d5d5d7b023c10e5137834ca263fef94a38d61aba17 +TEST= 109 +KEY= 000000000000000000000000000800000000000000000000 +CT= 2273125f1c5639bc68aa5a6ae43027e25c6f6624c95e5020d93416679ae3af25 +TEST= 110 +KEY= 000000000000000000000000000400000000000000000000 +CT= 3342ebadfd2086491b241770f80a950c059f3e781c66273de5749025673fdced +TEST= 111 +KEY= 000000000000000000000000000200000000000000000000 +CT= 5fd82d03acb6e7bef4ccd56fc79b49f2dd8aafc82ea24d34aa1f5c93e199f890 +TEST= 112 +KEY= 000000000000000000000000000100000000000000000000 +CT= a75afbd969d3cda715912e3cf27e2456415a56548bfbae9b7a2cf4f72b09da32 +TEST= 113 +KEY= 000000000000000000000000000080000000000000000000 +CT= 742b3d0f01be33c00cd192d8baba816d2fec75426d32d4c5e260865364a596f9 +TEST= 114 +KEY= 000000000000000000000000000040000000000000000000 +CT= 1340bffd6d5a6b80ff725d2e45bb32d298d345d5b7a71f6ce6c1867d1e479e42 +TEST= 115 +KEY= 000000000000000000000000000020000000000000000000 +CT= b05e92b49f6fe3f56d8f7e4720d560a9cba66aa50256184a75125cfad9ce31ba +TEST= 116 +KEY= 000000000000000000000000000010000000000000000000 +CT= 54cadf5a5181ee502f150b1914f62e725d629e471e0d49a7bd2c77bde5730376 +TEST= 117 +KEY= 000000000000000000000000000008000000000000000000 +CT= 8d43029916608c90577937b035c448c523440964908d6d1dbbdeb11bea47f820 +TEST= 118 +KEY= 000000000000000000000000000004000000000000000000 +CT= a80e086711391e24b80922e1a3e0e47eaa03af08379e9962b113686555791818 +TEST= 119 +KEY= 000000000000000000000000000002000000000000000000 +CT= 97a9644cd9c6c9186b75cd22fea3abca565bb19f0243063a2e7b4381c3a3a024 +TEST= 120 +KEY= 000000000000000000000000000001000000000000000000 +CT= 133b36f78ada881d0e66dd21b8c16333fb8fbf02270ddd8b8afe55bd5b7bb58c +TEST= 121 +KEY= 000000000000000000000000000000800000000000000000 +CT= f31561b9c233071cd860f72444e9b7887ee88ab77ed278ebe9d17633eeaf98ec +TEST= 122 +KEY= 000000000000000000000000000000400000000000000000 +CT= 8cf3a291cdb4931570139738cc3d572b16eb0edf343121d974484284bdb0c5b6 +TEST= 123 +KEY= 000000000000000000000000000000200000000000000000 +CT= 73d71d8ff83fd9ed2e1b9507b8f3737f287d1a24510bbfb80071b4ba00beb528 +TEST= 124 +KEY= 000000000000000000000000000000100000000000000000 +CT= 5d029bae265fe337ae40b4845fbe29f5a082e8ad096d223164b72253c6d876dc +TEST= 125 +KEY= 000000000000000000000000000000080000000000000000 +CT= dca60b70346f263fd93d12b86f454484ca54d20f82074d21a602f659ff286884 +TEST= 126 +KEY= 000000000000000000000000000000040000000000000000 +CT= eb12ebb56118c6646dbcd4d80959625d0996d744a5c628952f5af5827c9f401c +TEST= 127 +KEY= 000000000000000000000000000000020000000000000000 +CT= b13c3939f0ad71f0e8c778fce62d7703abe5ef705588f86107bcac54f5caa09f +TEST= 128 +KEY= 000000000000000000000000000000010000000000000000 +CT= 78b3c8b44da8c43e2684e69152a9f5a2018b7d97ce524fa80a95a55a6af98f36 +TEST= 129 +KEY= 000000000000000000000000000000008000000000000000 +CT= 8825102b5330c8913016ce44a703961be62529f3920a07f3cdc5383cf834fff2 +TEST= 130 +KEY= 000000000000000000000000000000004000000000000000 +CT= e9de5038a641c805367e2a43bbc019acaa8289606af46e83a0a444ab49ddd072 +TEST= 131 +KEY= 000000000000000000000000000000002000000000000000 +CT= 99551b3aa9918a1b7a3a924fa71e3f42d1f1562bb2dba8e83dd7ccaf8b9b2621 +TEST= 132 +KEY= 000000000000000000000000000000001000000000000000 +CT= bcf55c6c25c7319bdc352b6f286b80da52bd3c5ac1b3212c4907b50615a59fcf +TEST= 133 +KEY= 000000000000000000000000000000000800000000000000 +CT= 5e48007f5f5565c74c86ef4930ab0cb88c94e7cbf727c8048ddfc3d5e8b7bcbf +TEST= 134 +KEY= 000000000000000000000000000000000400000000000000 +CT= 3fc2ee6596ac4385f070d5b2750a0f04d3d929e0f713107630afec787d798f7f +TEST= 135 +KEY= 000000000000000000000000000000000200000000000000 +CT= 8bc3641fcc37f7cf8510975ade20807fa3561f30aa78a8c8e350c32a67e5b5e3 +TEST= 136 +KEY= 000000000000000000000000000000000100000000000000 +CT= 02ad8ffddfc5956813ba748aa5d832e1359ba41a98a79ebdfebd8f13724df619 +TEST= 137 +KEY= 000000000000000000000000000000000080000000000000 +CT= 6c25183099d1d1961b7ab395fdde375f07239f10a198c70313dc8846a6581e36 +TEST= 138 +KEY= 000000000000000000000000000000000040000000000000 +CT= a952ad863beaa68e09ed095fb017828b6048b918654a5c80bcd26d56a464352d +TEST= 139 +KEY= 000000000000000000000000000000000020000000000000 +CT= fa2e8e08ddfe110846b3c964aa2899baa1fb16367004eff540d70dca2dc7516b +TEST= 140 +KEY= 000000000000000000000000000000000010000000000000 +CT= e87a26fb032d27706d31bfe9d8e20aea6cbf48caa5829c28ef6eb9ae3c254006 +TEST= 141 +KEY= 000000000000000000000000000000000008000000000000 +CT= 73d83b2e3d86139fa6beb0405fd71c1342b1088fa1197e41919f7d7465563948 +TEST= 142 +KEY= 000000000000000000000000000000000004000000000000 +CT= 0815273601545c59511545cd214ac81c6caefa118aa05fe9c4e22717e8c299cf +TEST= 143 +KEY= 000000000000000000000000000000000002000000000000 +CT= 599919a533dd4eb323e511e2ae39b607f0ccd72dd5ccfbba1e7532df17bcff97 +TEST= 144 +KEY= 000000000000000000000000000000000001000000000000 +CT= a041e78a5d17723393c005dbb64db03930510fea868757d00b3bf1c104652ba6 +TEST= 145 +KEY= 000000000000000000000000000000000000800000000000 +CT= 82f57b4986f1e8585e8743c755f226a881aef2de10a2966dbcce99fb7d8c3f3a +TEST= 146 +KEY= 000000000000000000000000000000000000400000000000 +CT= 1541fec38dd9cf6edec7477b6e57cad423295655a718fc76c127a1e9d4cded0f +TEST= 147 +KEY= 000000000000000000000000000000000000200000000000 +CT= f5a02b2cd665d2ffe294a642d48f51f19d9c408dbb9d2114e7143cee85c87454 +TEST= 148 +KEY= 000000000000000000000000000000000000100000000000 +CT= 1b5c61d08126843ef1285b006623f499818d21f9d29930357b418cc6b8dd11fb +TEST= 149 +KEY= 000000000000000000000000000000000000080000000000 +CT= 4a71c4a04e590c8d430f62587290540ad61a058c0d2952010ddc0bd82491f614 +TEST= 150 +KEY= 000000000000000000000000000000000000040000000000 +CT= d886f034b88f7443daef17487a5bf32b4da81424febf79f28555f27dc0e6f0fe +TEST= 151 +KEY= 000000000000000000000000000000000000020000000000 +CT= 38c2c0684bd0866219ea0ec04c3b95453ed6058475dad86dc9c3fbe7b8ad4f89 +TEST= 152 +KEY= 000000000000000000000000000000000000010000000000 +CT= 2c090c9c6624afec27ba3a8faefa6d10f4c59000c340195577a1c8ae7e90c1e7 +TEST= 153 +KEY= 000000000000000000000000000000000000008000000000 +CT= c098b3f0a88ad3c4da5eb525f3fdb8d539a4695fd92cfc9a67059d0775f509da +TEST= 154 +KEY= 000000000000000000000000000000000000004000000000 +CT= 5d4fc5b3fdf8932b02d367f3ef664972788d80b6b9e1c1c33ab68be77b85c52e +TEST= 155 +KEY= 000000000000000000000000000000000000002000000000 +CT= a0dbcbe62a080e8b583ddc7ab189e4e95406132f6749406c8d775ec7eea92161 +TEST= 156 +KEY= 000000000000000000000000000000000000001000000000 +CT= efe960385d8bb45450013746880832850414b4d7453cf9aab498555ba2f14f08 +TEST= 157 +KEY= 000000000000000000000000000000000000000800000000 +CT= 2f55eafb757e7eaf944cd269cea0df5e13d43d77ae3e23012ff31092ae7d201e +TEST= 158 +KEY= 000000000000000000000000000000000000000400000000 +CT= 7f369e5f01c09ee8b86a3ac207bc73a9e6679f222ae91a5acc4a56ead53d7556 +TEST= 159 +KEY= 000000000000000000000000000000000000000200000000 +CT= 62cb6ef45bc98c62db3cc759797cbf31dd8fdb487a766d388905796df2878252 +TEST= 160 +KEY= 000000000000000000000000000000000000000100000000 +CT= 542b2673d1c33c3e3f57fbd857b5347bb847ef6feac23e03b3b55eddeccaf259 +TEST= 161 +KEY= 000000000000000000000000000000000000000080000000 +CT= c2e9ea20364af341743e1042d587503bb4d409c131e6f9e8cebaa173020c7169 +TEST= 162 +KEY= 000000000000000000000000000000000000000040000000 +CT= 57593326bc8eaf87476318f9fafec28a275866fdb4ca75d63e900ed1a9dc0b2d +TEST= 163 +KEY= 000000000000000000000000000000000000000020000000 +CT= d110d3a8a3775a8505517ca4782864c9627649fc14eb6b372f0f86627976a77c +TEST= 164 +KEY= 000000000000000000000000000000000000000010000000 +CT= dbfcec7315fb761200128de2846ba4e4b5bb8c2fa120666a789ffeba52d213ec +TEST= 165 +KEY= 000000000000000000000000000000000000000008000000 +CT= 89745fa7009af7feb36bfea484b09da127c710be6c042bd6f06fc6e708730f70 +TEST= 166 +KEY= 000000000000000000000000000000000000000004000000 +CT= 750c42336409076cb2991c4d78f1b4020422d459963992f03b798d90cc354e32 +TEST= 167 +KEY= 000000000000000000000000000000000000000002000000 +CT= dbc87792bbb4ca0ad73647bf2d610e26a0c8d31319d6a95fbbd8fc3c4c494f98 +TEST= 168 +KEY= 000000000000000000000000000000000000000001000000 +CT= 7e2b00174fece6d1c981dfe99c1af4f9b5d5066c786c43d63e04d39e5fd14002 +TEST= 169 +KEY= 000000000000000000000000000000000000000000800000 +CT= f31933fe36009430c0201f4fbc60fe6c35308f65c9ebc20dbdc79c0579855bc9 +TEST= 170 +KEY= 000000000000000000000000000000000000000000400000 +CT= 0adc3ed345f339f6e25569ae418354fd3a5e4380e0e27b6395f7771cac944699 +TEST= 171 +KEY= 000000000000000000000000000000000000000000200000 +CT= b7e5ae7179f6585d8f1b9039f97608406aa00fea8df8724c17f8c0e6a390c91c +TEST= 172 +KEY= 000000000000000000000000000000000000000000100000 +CT= d4dfb7f367a60f6ee22189752ebcf182fa7cc748f32818831ec9353d97dc5812 +TEST= 173 +KEY= 000000000000000000000000000000000000000000080000 +CT= f718933086131b4f9aa0943e855af6950fc896f3f752f6db0f24e53452abdca7 +TEST= 174 +KEY= 000000000000000000000000000000000000000000040000 +CT= 57226eb839987eaaf175dabe1d651be0f558f2189823a3a78f8007412950e24a +TEST= 175 +KEY= 000000000000000000000000000000000000000000020000 +CT= ea197f31dfb7d9ffed80e7a3f903af936dbe9b1eac157cd9b6127e37cc52782c +TEST= 176 +KEY= 000000000000000000000000000000000000000000010000 +CT= 60578bcc93e3d5ee8aa01f705ca4d8360e154fb6a756018f58cf5e23d29a215f +TEST= 177 +KEY= 000000000000000000000000000000000000000000008000 +CT= 0581d8dbaebe20a96aa9328aafbb62749f24eba686ce83093da11e8fbdad3638 +TEST= 178 +KEY= 000000000000000000000000000000000000000000004000 +CT= 871f25c29be0fa2ee14d1cbaa8221c61017e9cd2c477298257c85652318b1f8e +TEST= 179 +KEY= 000000000000000000000000000000000000000000002000 +CT= cbaf1b249acf867e6fff2f2791d2f328865444485e0593786d222e58703a9d3d +TEST= 180 +KEY= 000000000000000000000000000000000000000000001000 +CT= 15675a8077c27828e24ecee4d6135e7b7f91186a9cf3327f66207b4b2be12c2c +TEST= 181 +KEY= 000000000000000000000000000000000000000000000800 +CT= 79927b4bfa223174727b8cd8e8b6f96b8f485abfa35549fa8e495b8bf8470070 +TEST= 182 +KEY= 000000000000000000000000000000000000000000000400 +CT= 42de6da2776a1062aade08adbaec0ce70f9eb25ed4ad9126784662446fae5ff6 +TEST= 183 +KEY= 000000000000000000000000000000000000000000000200 +CT= ae13e2a0162faceac843702dac6819ca4779ab8d0b60dd70f200a46991b28d8f +TEST= 184 +KEY= 000000000000000000000000000000000000000000000100 +CT= 49167c724ec7e37f7626f4e47e32f562b4c6b4e51506e27e355a45463c2f129b +TEST= 185 +KEY= 000000000000000000000000000000000000000000000080 +CT= f003174d4ecd74a58c50e45f3850e6b2b626a8f5752dda31586ba34cd3f6fab6 +TEST= 186 +KEY= 000000000000000000000000000000000000000000000040 +CT= cf98a04f50aa8cfc593c8ffdef2d879e52e81bbc5f803bd05a7893d67a86c913 +TEST= 187 +KEY= 000000000000000000000000000000000000000000000020 +CT= cb304a9c303eb64332c47b80147e77bc4c1816b95ebae404d10207b01cb23647 +TEST= 188 +KEY= 000000000000000000000000000000000000000000000010 +CT= 8224b8702dd7c95de8f571fe26e01cdc3f8c03e1d1dee379973a15d61f91feaf +TEST= 189 +KEY= 000000000000000000000000000000000000000000000008 +CT= d6eeff7ac4f7d7263dea52087531e10c428e0a7cd03c21a4491138987397e56f +TEST= 190 +KEY= 000000000000000000000000000000000000000000000004 +CT= 963d50a8feb4793d2c15776cb83efdb38ad2bb4bbf399ed315673e6547aac9e8 +TEST= 191 +KEY= 000000000000000000000000000000000000000000000002 +CT= 1110d8cf956229575ee5b8257026af3fa12a8af7415e644a6726001cccf32660 +TEST= 192 +KEY= 000000000000000000000000000000000000000000000001 +CT= 44ec9f59b8b6e3b6d53c3ce7b37803a5a1dbbeb4b25d8aac68c2ed73798be273 diff --git a/flint/test/testvals/ecbvk88.txt b/flint/test/testvals/ecbvk88.txt new file mode 100644 index 0000000..863d6eb --- /dev/null +++ b/flint/test/testvals/ecbvk88.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Key Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvk88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +PT= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +CT= c6227e7740b7e53b5cb77865278eab0726f62366d9aabad908936123a1fc8af3 +TEST= 1 +KEY= 8000000000000000000000000000000000000000000000000000000000000000 +CT= e62abce069837b65309be4eda2c0e149fe56c07b7082d3287f592c4a4927a277 +TEST= 2 +KEY= 4000000000000000000000000000000000000000000000000000000000000000 +CT= 1f00b4dd622c0b2951f25970b0ed47a65f513112daca242b5292ca314917bf94 +TEST= 3 +KEY= 2000000000000000000000000000000000000000000000000000000000000000 +CT= 2aa9f4be159f9f8777561281c1cc4fcd7435e6e855e222426c309838abd5ffee +TEST= 4 +KEY= 1000000000000000000000000000000000000000000000000000000000000000 +CT= b4adf28c3a85c337aa3150e3032b941aa49f12f911221dd91a62919cad447cfb +TEST= 5 +KEY= 0800000000000000000000000000000000000000000000000000000000000000 +CT= 99fec55d4ae12b7a92636089d78c63223431c76dfec0c6681af8cf7fc13f6f19 +TEST= 6 +KEY= 0400000000000000000000000000000000000000000000000000000000000000 +CT= 99daf38537b3cce351ed4de66a822845426661fce21e8db5360c174b5a7fd329 +TEST= 7 +KEY= 0200000000000000000000000000000000000000000000000000000000000000 +CT= f59b6f00336ed715bbf2d1e47aeac87ccb422ced85be600997dfc766f3a5eb0d +TEST= 8 +KEY= 0100000000000000000000000000000000000000000000000000000000000000 +CT= d4eefcc0ca4d64b1ec6e8809ebec2cf7a7903d7fbd6a32ac2421a7da109a8c7c +TEST= 9 +KEY= 0080000000000000000000000000000000000000000000000000000000000000 +CT= 3772c4eafc6c5a7b99a0b36f52f6bac4b069eb6f966115f5933bccf586b966ee +TEST= 10 +KEY= 0040000000000000000000000000000000000000000000000000000000000000 +CT= c1b8501fa558a0c0a49784aeaba5a9e242690e406c43df87e1692413a19e5840 +TEST= 11 +KEY= 0020000000000000000000000000000000000000000000000000000000000000 +CT= f78ba05e5c36165ecc017c3187eea80ba6fa963748316a2e580000d9e296be83 +TEST= 12 +KEY= 0010000000000000000000000000000000000000000000000000000000000000 +CT= 6c0c5f6c7238da5d8a4b064b58d20b52a453d30d71fbe9a076d1592b2f0e4a84 +TEST= 13 +KEY= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 90c60d9355de2ab8d4b9366355a6dbf4d125a1ae0720413c62cb19ca6aa6e6bc +TEST= 14 +KEY= 0004000000000000000000000000000000000000000000000000000000000000 +CT= 662a703505e8c001b2d78a47c09ec099b3c8848e4be4dd124467deeed2a763a1 +TEST= 15 +KEY= 0002000000000000000000000000000000000000000000000000000000000000 +CT= 47d20677be50d31a953985a05b9754be61e07e32273b5805de4089cf1b63e3de +TEST= 16 +KEY= 0001000000000000000000000000000000000000000000000000000000000000 +CT= 3a0543702bd713ba46dcc9afefde08300e3389d666141352938040195eed80e5 +TEST= 17 +KEY= 0000800000000000000000000000000000000000000000000000000000000000 +CT= c9d48a39d27b4c04a50c6f6e7c5db8057aa27c113552761d06ef233ed9b037d6 +TEST= 18 +KEY= 0000400000000000000000000000000000000000000000000000000000000000 +CT= 178a86a7a54e2ccdbbaf17dd08dba911b3d425050faae956ea5e3a264cdd5abe +TEST= 19 +KEY= 0000200000000000000000000000000000000000000000000000000000000000 +CT= 415bea5e8d4c32434d5349887904c5519d2fe56e2ef5800ace3bcb98ccc9d622 +TEST= 20 +KEY= 0000100000000000000000000000000000000000000000000000000000000000 +CT= e1f05ecea6f13fbbc361cb33f17039e82dfef78a251fbee78ba0476454ecea83 +TEST= 21 +KEY= 0000080000000000000000000000000000000000000000000000000000000000 +CT= 29e54bd2da59931e847d1c89f5b548e69ba7485c6635582e485a9aec6706b19b +TEST= 22 +KEY= 0000040000000000000000000000000000000000000000000000000000000000 +CT= e9310c8105fa7b1972e5d26ec1ea3cd157b03b5556acbb316f711d9c2382827e +TEST= 23 +KEY= 0000020000000000000000000000000000000000000000000000000000000000 +CT= 19f34d0fa07b0167d76ee54ac867490a9dc6f4b8d3b5004da145431b62b517ec +TEST= 24 +KEY= 0000010000000000000000000000000000000000000000000000000000000000 +CT= 66075b1cd47eb53fa163711f97c74a95490cad9c584520731d32ac19d5a62ccf +TEST= 25 +KEY= 0000008000000000000000000000000000000000000000000000000000000000 +CT= ab607de3b080962b2e6540c417b942491ef4236aa799e030fb54ae69e71b999b +TEST= 26 +KEY= 0000004000000000000000000000000000000000000000000000000000000000 +CT= c7e89752ee024b9ad386d0228b97831cfe4349ff3b2d9fea718cd12555e32192 +TEST= 27 +KEY= 0000002000000000000000000000000000000000000000000000000000000000 +CT= 09a14c3cb5005fd1010dd067e97a401743eb54e7a1cb13b80c9c1720188ed62c +TEST= 28 +KEY= 0000001000000000000000000000000000000000000000000000000000000000 +CT= 3e9c7a1ab4c84b0801b8b042e59c4e6ccd4fefd33d4828d32c01293c80dfc7da +TEST= 29 +KEY= 0000000800000000000000000000000000000000000000000000000000000000 +CT= 48e0b25d1f7b4bd94465506ff9a9618443ec9532f677f50d6b394e66b0923be3 +TEST= 30 +KEY= 0000000400000000000000000000000000000000000000000000000000000000 +CT= e65991417355c0789051cbd614e3a74f8020dc7b723bcae3c6983d920a553fcc +TEST= 31 +KEY= 0000000200000000000000000000000000000000000000000000000000000000 +CT= 6d2b0224323a70cf86b751e05251ae1fbbd11d0be27eae05826c8e4d9929d001 +TEST= 32 +KEY= 0000000100000000000000000000000000000000000000000000000000000000 +CT= c79618a67ad73455047b01eaaee4a33f506ee40514a95d27dc67646656b26cfe +TEST= 33 +KEY= 0000000080000000000000000000000000000000000000000000000000000000 +CT= ee467fd8bfed07ef5150d7765c46f8f1eb880a517c7a834d626c4321d1b7cf46 +TEST= 34 +KEY= 0000000040000000000000000000000000000000000000000000000000000000 +CT= db8035c525c65b5a6758fcb8442e28a7191c015eebd2331c4aed162daa8d221b +TEST= 35 +KEY= 0000000020000000000000000000000000000000000000000000000000000000 +CT= de19371fb6828601f676e0be9e2fb6a1b5678b236c493d4fa31acedbd2ea640c +TEST= 36 +KEY= 0000000010000000000000000000000000000000000000000000000000000000 +CT= ea550f8304e14ffeb2b4d9e024ac4e4c97a0c3830790b4100ec37398b417cad9 +TEST= 37 +KEY= 0000000008000000000000000000000000000000000000000000000000000000 +CT= d7da9eba369c9d4e587ce368a6749510c39e07cee47fdcf13d30f595299fa991 +TEST= 38 +KEY= 0000000004000000000000000000000000000000000000000000000000000000 +CT= c4715b4ba27b22ac2fc58714ee2569eb88eae7b54c96d039a25a12687c1de478 +TEST= 39 +KEY= 0000000002000000000000000000000000000000000000000000000000000000 +CT= 151a240a0d998d734292be7d2c7fa91e6ccf5f3f9901d811b7ff72cf8763462e +TEST= 40 +KEY= 0000000001000000000000000000000000000000000000000000000000000000 +CT= 62dd4bdd276c01b38a979c4638a42e8845e3f1065e2547a4b8c2c3b8b7ff6ae1 +TEST= 41 +KEY= 0000000000800000000000000000000000000000000000000000000000000000 +CT= 88c72a394091be2e2eef2f9bee50c4add1c7dd75372cc9ef91cfdd0fef2f7bd3 +TEST= 42 +KEY= 0000000000400000000000000000000000000000000000000000000000000000 +CT= fd9afddc217d4d7ee7dac3fa3f55b1e7024ec0271a2f9483e784225f526930ec +TEST= 43 +KEY= 0000000000200000000000000000000000000000000000000000000000000000 +CT= f72a0a1222a6e0edf6d4abcb67e49940c0dceecc81667ec4b4471c5f12a36764 +TEST= 44 +KEY= 0000000000100000000000000000000000000000000000000000000000000000 +CT= b28157be7197b731430a30ce82673a56d8e2f3d3491273b482821da1a0bff1ba +TEST= 45 +KEY= 0000000000080000000000000000000000000000000000000000000000000000 +CT= 97d8a07287c9a11abe44a9a49439a464fd84658f982433c118584fde17b1abcf +TEST= 46 +KEY= 0000000000040000000000000000000000000000000000000000000000000000 +CT= 615dfac197b3cd329fff55a3a1431081609a6f7a5fe42b8cd0869449d9ef90b1 +TEST= 47 +KEY= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 6748cb7b1a6e2b8c3295ecc4696c3ff191f3a9f279d0e530d5a261d52a5f311f +TEST= 48 +KEY= 0000000000010000000000000000000000000000000000000000000000000000 +CT= 9673e6b7cad86f047e9ea6708a5c432b7c71a5561c086f7f863fdbd6c7473098 +TEST= 49 +KEY= 0000000000008000000000000000000000000000000000000000000000000000 +CT= 58209e5a2ab45b580901a8d001f7ad33a0383304ea9e6bfd9635877132c22ed1 +TEST= 50 +KEY= 0000000000004000000000000000000000000000000000000000000000000000 +CT= 974dd3ba5241e304d830d2fb4ad1a5ab2f5eef4490df6f52aff32933eeea5855 +TEST= 51 +KEY= 0000000000002000000000000000000000000000000000000000000000000000 +CT= 93b2f6621e354808fd7654c64034c9109489e048d079bf44c6c589a769d3c142 +TEST= 52 +KEY= 0000000000001000000000000000000000000000000000000000000000000000 +CT= 4eec5f7e505b66a7d834a8538b1f7290b6f4b16542143ee7d4bf75e725b476ef +TEST= 53 +KEY= 0000000000000800000000000000000000000000000000000000000000000000 +CT= e7b600a095052a3939a1984c63c0014de4c1ceaef77d1a940f815341ea87aacd +TEST= 54 +KEY= 0000000000000400000000000000000000000000000000000000000000000000 +CT= 1dfc2f69e669bcb6b93a760c40b33cc9aa3de394476c2eea0185b72b6a532218 +TEST= 55 +KEY= 0000000000000200000000000000000000000000000000000000000000000000 +CT= fb28b4503e6eb01a36e029d1a01652d50c05b47dfc5fae54215d0e8c01e1f64c +TEST= 56 +KEY= 0000000000000100000000000000000000000000000000000000000000000000 +CT= 23427fe46ae8fcab6e1d8526dc0e415b9ca62026c8d08c124e0a66e4fa7e27c9 +TEST= 57 +KEY= 0000000000000080000000000000000000000000000000000000000000000000 +CT= 5c1a8e46e68d655f4c94f265fe6eee7a2416cea6e00bc4e055249ae7e62516e9 +TEST= 58 +KEY= 0000000000000040000000000000000000000000000000000000000000000000 +CT= 689dbf9d2e01f5e7e1ce86d96376e53d894d4262c348f56ad8f99047c6d97cfc +TEST= 59 +KEY= 0000000000000020000000000000000000000000000000000000000000000000 +CT= ab15b92c6c840e7e3356464ab6a42861d5f2f68be5903fa478bc2aec69e8c9ae +TEST= 60 +KEY= 0000000000000010000000000000000000000000000000000000000000000000 +CT= f91495b43e0103031f160f0ea4d397d37962c43c10ec3cc2ebe8265d908d56f1 +TEST= 61 +KEY= 0000000000000008000000000000000000000000000000000000000000000000 +CT= dc5013af6dbc99134657f754304b3ed9db2b4b64c67a4a121694dd95f2bcf6e9 +TEST= 62 +KEY= 0000000000000004000000000000000000000000000000000000000000000000 +CT= d7ac94948f2ee332a093c6577b6625e16cd9641834a9b017c7045ecd9c650583 +TEST= 63 +KEY= 0000000000000002000000000000000000000000000000000000000000000000 +CT= cb977f4cb15a6467af49570c1ef23ef3e5bdf0c4cd7ddc93b9100203271e76eb +TEST= 64 +KEY= 0000000000000001000000000000000000000000000000000000000000000000 +CT= 08b46c13defd1f11387fea8723921bdae1257a888e598c08fda51973346d0238 +TEST= 65 +KEY= 0000000000000000800000000000000000000000000000000000000000000000 +CT= 6d746ce164fed414ee162aaac46cdc3e364bb8c8b7a1dcb7f7a2612115ae815c +TEST= 66 +KEY= 0000000000000000400000000000000000000000000000000000000000000000 +CT= 76efe75d04b1c928f54198bbc63ecc55393151fe5426c0e2cadb031ff116f1fe +TEST= 67 +KEY= 0000000000000000200000000000000000000000000000000000000000000000 +CT= 7e8228bbfd7d8a9f102d992720549ce223584a5432434a02a100e863c0f2ccc1 +TEST= 68 +KEY= 0000000000000000100000000000000000000000000000000000000000000000 +CT= 1c3f516eb9ad0705cd3c8c58eda4526f12214c716ee8c41632535d9d487f470f +TEST= 69 +KEY= 0000000000000000080000000000000000000000000000000000000000000000 +CT= b4d8ba0a6c6b7a0d28c8bfb3c5eeca5231ae72dd64a0b4b4e40bcc6b69f6cf38 +TEST= 70 +KEY= 0000000000000000040000000000000000000000000000000000000000000000 +CT= a1648242e5382554b2da01f2ccae223ab6921cd0cee4d7758081baf531a0f3c0 +TEST= 71 +KEY= 0000000000000000020000000000000000000000000000000000000000000000 +CT= 5692d119bd1aa5df7ef4480f4043f468b684320de712525b81944a9c3c085d3b +TEST= 72 +KEY= 0000000000000000010000000000000000000000000000000000000000000000 +CT= 39f4541290418897bcb0e5400a1f9c0a2f404d9127922b4c7f7e43b8fc94c048 +TEST= 73 +KEY= 0000000000000000008000000000000000000000000000000000000000000000 +CT= c8256e1e15b64821e3f34759c3d52512918e844807cd1248eea200810067c79e +TEST= 74 +KEY= 0000000000000000004000000000000000000000000000000000000000000000 +CT= e228d807351cc034772da21ca7369204a37ead5d393208b0d211c0f6f9072ca0 +TEST= 75 +KEY= 0000000000000000002000000000000000000000000000000000000000000000 +CT= 3c8b2346a449c4cfd331959485b17af7c9a8c09ece4ef0210a89575c6fadbb43 +TEST= 76 +KEY= 0000000000000000001000000000000000000000000000000000000000000000 +CT= ea84c350f103afc77bd650a668e3b9a67603b306243ec5c7f67bbab515d28770 +TEST= 77 +KEY= 0000000000000000000800000000000000000000000000000000000000000000 +CT= d042f0261064414743631a93dc61de57e9ac4888b73ec0a4f794c270db2af68c +TEST= 78 +KEY= 0000000000000000000400000000000000000000000000000000000000000000 +CT= f461d5ea36cf488464018c0f0f3860ae2fb9771c27d7803cc33415eef13df7a0 +TEST= 79 +KEY= 0000000000000000000200000000000000000000000000000000000000000000 +CT= 82d2a07161ff353e962dcb9d3f872d3596fd7f1dcb062c37f514b732d2b72eee +TEST= 80 +KEY= 0000000000000000000100000000000000000000000000000000000000000000 +CT= e4892948c138ea9be2921c28a4d61dafc9e916cee0440b54998936654b847abb +TEST= 81 +KEY= 0000000000000000000080000000000000000000000000000000000000000000 +CT= de22ec11911d5179ef857907408162d8e046f65f41d7d9112176788be0547a24 +TEST= 82 +KEY= 0000000000000000000040000000000000000000000000000000000000000000 +CT= e98819b5ac57309d05abefa621851bac563d3b47238869351421bcc7811b1481 +TEST= 83 +KEY= 0000000000000000000020000000000000000000000000000000000000000000 +CT= 1df9e8c6aec195bd956bcadafa793004ea61c4460a49a0ed68c2037cb91e7545 +TEST= 84 +KEY= 0000000000000000000010000000000000000000000000000000000000000000 +CT= 1f378b9f92681a79aa8a9ca7622aaffb6132134131b5e1b915fa322e181d6b0b +TEST= 85 +KEY= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 9079fef687ddcaed2078b5225183ece14c6ffb150ca55cc540248ce951419304 +TEST= 86 +KEY= 0000000000000000000004000000000000000000000000000000000000000000 +CT= aceaa14bf0576e7b29680b6c178800d4424df9519070f9ef4627538027aa643c +TEST= 87 +KEY= 0000000000000000000002000000000000000000000000000000000000000000 +CT= 8d3f38ee1280c2b5106253ceab8ec3531ca7f9b11816c2cdb6da44909ca3862d +TEST= 88 +KEY= 0000000000000000000001000000000000000000000000000000000000000000 +CT= d5d69afdb86c9869b473f8ad20a32bc9f5da703b19d2465ef4a250536e1a881c +TEST= 89 +KEY= 0000000000000000000000800000000000000000000000000000000000000000 +CT= 9339ce28d9033a3f5e06466eec21ac24b7ed6e9a81cb1b4adb96239a770ee460 +TEST= 90 +KEY= 0000000000000000000000400000000000000000000000000000000000000000 +CT= d055863ceaf13ee85c55e8a59fa3f7e3935461872c765c28bdc74df8210c7743 +TEST= 91 +KEY= 0000000000000000000000200000000000000000000000000000000000000000 +CT= c741ed9717174a30f153226979d18adb212b3b5e695a33c589aab7e2e4f70104 +TEST= 92 +KEY= 0000000000000000000000100000000000000000000000000000000000000000 +CT= b9d69203f21ace3a9b36eef270a5e7ef399ff5a7e155db7269e21975cebb5c8b +TEST= 93 +KEY= 0000000000000000000000080000000000000000000000000000000000000000 +CT= 51a24a5cf23765edfa15b58c2c438f11f3c0d0b17358f36e166576ce8f8cfdd7 +TEST= 94 +KEY= 0000000000000000000000040000000000000000000000000000000000000000 +CT= c8f595e99e699fdb532d54b8de3c39c681a61ab33801e1e4260c176a3aae8b1c +TEST= 95 +KEY= 0000000000000000000000020000000000000000000000000000000000000000 +CT= 30426ab509dfdb745ee01942ead05366529d790ebf1895df5dd7d825b46ac390 +TEST= 96 +KEY= 0000000000000000000000010000000000000000000000000000000000000000 +CT= f7ea7aa6feb6cd71a61d138dcdb069541abe4f3d3f1b8d89c6957e4c690e4a98 +TEST= 97 +KEY= 0000000000000000000000008000000000000000000000000000000000000000 +CT= fbbae972809d83ace1076f835da7f032f7f2aa23f2c126f0349b35f66ad6527a +TEST= 98 +KEY= 0000000000000000000000004000000000000000000000000000000000000000 +CT= 0405b8ae7c92412e715c6214e2f2c87dd43d64479a707af61bcc68cfb8c58c5a +TEST= 99 +KEY= 0000000000000000000000002000000000000000000000000000000000000000 +CT= f802a2c72415bd4568300a26b6af4bf3215034d75ddee9902840f6557774e414 +TEST= 100 +KEY= 0000000000000000000000001000000000000000000000000000000000000000 +CT= c2ec851e49b1c130f04134eec59f8464083980c6feb7c453584a1f73fe123678 +TEST= 101 +KEY= 0000000000000000000000000800000000000000000000000000000000000000 +CT= 3c6127087f103f61e289bba7c07444cbb3eac5f95c15db41f61adf0ac3ba9791 +TEST= 102 +KEY= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 59a3f049173246b40b4e1f51598a6c9ec896ad2481d90ebf62cf9405d58504f4 +TEST= 103 +KEY= 0000000000000000000000000200000000000000000000000000000000000000 +CT= 902dc9c82e7c5a63d876517573baddb0f49c80ce4f02290fd0730a3ce1d9f6e2 +TEST= 104 +KEY= 0000000000000000000000000100000000000000000000000000000000000000 +CT= 229d41f898800b1423864011ecdb8c491744c47d9fdaf03aa6441439274327d4 +TEST= 105 +KEY= 0000000000000000000000000080000000000000000000000000000000000000 +CT= 0a06a3b4d202cfee6e1b3697daa1b77a030bfc9f8ff33b908fb5c29fcbf126e2 +TEST= 106 +KEY= 0000000000000000000000000040000000000000000000000000000000000000 +CT= c477c0a36fa732c6da99ef63c9ba6c527e0d713483ef1aaafd516f68396f67eb +TEST= 107 +KEY= 0000000000000000000000000020000000000000000000000000000000000000 +CT= 78b56d36a48b60bb57e8a130bb72c7374e52b30606513aa98b3f14664bc7a098 +TEST= 108 +KEY= 0000000000000000000000000010000000000000000000000000000000000000 +CT= c77d50d2a04cff23c2471a86b9ec1023e157158093aa35b7d49d06ff7af3fb91 +TEST= 109 +KEY= 0000000000000000000000000008000000000000000000000000000000000000 +CT= 5345e9a57efb835ba8a184fbf21a717c0f83fc537f003c4e8e6c496786012ac7 +TEST= 110 +KEY= 0000000000000000000000000004000000000000000000000000000000000000 +CT= 4ed343c1d7863c581160035313d78471a05071324ab3b57a4a4fe0c729aaaa7b +TEST= 111 +KEY= 0000000000000000000000000002000000000000000000000000000000000000 +CT= 9a6f1c700e81fe59de6184f98deabf5d0db0c470f53c116329e69d5d145101e4 +TEST= 112 +KEY= 0000000000000000000000000001000000000000000000000000000000000000 +CT= 53ec1b8e00e93ddead4f7aaee0de2f388afc030c3a45766014eb0fdde4d100c2 +TEST= 113 +KEY= 0000000000000000000000000000800000000000000000000000000000000000 +CT= 476889d9c91548b1267e69558b186484395b2c3ccb7f365376932d322dc3ad64 +TEST= 114 +KEY= 0000000000000000000000000000400000000000000000000000000000000000 +CT= d546791a0e290cfbfdb8fa2ec32a62ce6a432d77f49864637e81a5d4a46b11c2 +TEST= 115 +KEY= 0000000000000000000000000000200000000000000000000000000000000000 +CT= 0d3fd5a68061a29e315babd4d59d5fc9f2f93a81deca75a7c0a7815fe73e62fb +TEST= 116 +KEY= 0000000000000000000000000000100000000000000000000000000000000000 +CT= 7451af92d292fddd70b31232827d498a545c1fa03dba573078e425e5f9408d3c +TEST= 117 +KEY= 0000000000000000000000000000080000000000000000000000000000000000 +CT= d756ce81f51763bfc4728e88409858963a3e8d1dd1713284892bc6478de01884 +TEST= 118 +KEY= 0000000000000000000000000000040000000000000000000000000000000000 +CT= 11a18f3a96550d717f443c2c3f2fb02556165eabcf4cd422508017a5221f3d33 +TEST= 119 +KEY= 0000000000000000000000000000020000000000000000000000000000000000 +CT= 76c40b2594636d0a3cf0cf2cf28744bef8ec8e1833a942206a8f52dffe09d159 +TEST= 120 +KEY= 0000000000000000000000000000010000000000000000000000000000000000 +CT= 45a566c17f620c237f7e981e1918cd9299791782fc042713ca0c59883218a09a +TEST= 121 +KEY= 0000000000000000000000000000008000000000000000000000000000000000 +CT= ff3cc84d1bd3869c62ee8526582be6fa186eb15962b907a00f918bdfe1d97e2a +TEST= 122 +KEY= 0000000000000000000000000000004000000000000000000000000000000000 +CT= 5a55f9084e841a9f600b917c3793b15886b296b59d9415cc8faae06a32eb6975 +TEST= 123 +KEY= 0000000000000000000000000000002000000000000000000000000000000000 +CT= c2d7bc24fb0948288e90f9d0116a3e4394561109747afc49033355b93dc0626b +TEST= 124 +KEY= 0000000000000000000000000000001000000000000000000000000000000000 +CT= a1ff70cd70764b1017a79f2bf1a00ee82cce1ecadb0b456bee25ca2948d4833f +TEST= 125 +KEY= 0000000000000000000000000000000800000000000000000000000000000000 +CT= a640d7e8fde034fa279b1256d81b715727eaa3c7ea42df210ceacadcaa3f8a5f +TEST= 126 +KEY= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 13a5dedad499c7e56ce687e012a797c12d0cdf818af59eca5a35132e594f1937 +TEST= 127 +KEY= 0000000000000000000000000000000200000000000000000000000000000000 +CT= 5357f51f63be6632631538e796b692c03aed3fb7c22990e91f535701f523e833 +TEST= 128 +KEY= 0000000000000000000000000000000100000000000000000000000000000000 +CT= 1f061c4370e3d46daa1675968c84a3785f470593d185ece8ca7c4f04b88634af +TEST= 129 +KEY= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 2cf493b077229e255997d0488878c95fae56302b63be4b9e2d10418eac128b78 +TEST= 130 +KEY= 0000000000000000000000000000000040000000000000000000000000000000 +CT= 3516ff86cc97f19dec9cdb4ae64cdd63d5e51414931d95b0835975bb5852db43 +TEST= 131 +KEY= 0000000000000000000000000000000020000000000000000000000000000000 +CT= e1568453bf2a3e51b206367556adb81e71e261f8b31af7c8234c7e2ba4a73f1a +TEST= 132 +KEY= 0000000000000000000000000000000010000000000000000000000000000000 +CT= ffd34c2cae47227beeef61380faf0022da059c63ed78c57a049cefdd8c9758d9 +TEST= 133 +KEY= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 240955924495dcbf34789354f1dbc80389563684c68828b1224f1e589eddd44d +TEST= 134 +KEY= 0000000000000000000000000000000004000000000000000000000000000000 +CT= 1f9c2536df3c1e0b0829f947741d9cb60e98e9c05125e205e55458e706defbac +TEST= 135 +KEY= 0000000000000000000000000000000002000000000000000000000000000000 +CT= e1c4add8d484dae7a7b333d3ca1e4b7141e8c1ee112883b2d0a0fc6f8ba45651 +TEST= 136 +KEY= 0000000000000000000000000000000001000000000000000000000000000000 +CT= b8a2a03684c16a971dc92035a6c57c0093f78cf6c3c91efd55985a3d92b55890 +TEST= 137 +KEY= 0000000000000000000000000000000000800000000000000000000000000000 +CT= 1f970619086cd0722f062dd1003aebe6db10b246a754414a839f1750df86192c +TEST= 138 +KEY= 0000000000000000000000000000000000400000000000000000000000000000 +CT= 8544605018c035630f0c6101095b8fc9d36eda53daf77f2bb092437dffd3ad08 +TEST= 139 +KEY= 0000000000000000000000000000000000200000000000000000000000000000 +CT= fdde9ffc871b62b682b0df0b11bd8c1eb9c53e9d98737c804d582b7078b47258 +TEST= 140 +KEY= 0000000000000000000000000000000000100000000000000000000000000000 +CT= 5961c0dd51060045319b28fb437f79b4ee0beb90d9478aedc5f798a507674e5a +TEST= 141 +KEY= 0000000000000000000000000000000000080000000000000000000000000000 +CT= d84a016e353727d59e26ee9f4fbd8abc4e364671d0a73dcfad37fdd67539e654 +TEST= 142 +KEY= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 37d2dbd08d91f918a16581f422c20af3b36735cee5b019a9f3bfc4c4e571ca14 +TEST= 143 +KEY= 0000000000000000000000000000000000020000000000000000000000000000 +CT= a5009abb2cd81eafc207a9ccc04343829df6ff6234b23f9c262fb15e4c09553e +TEST= 144 +KEY= 0000000000000000000000000000000000010000000000000000000000000000 +CT= b0676b1dbcab2f171241546969eba372be9c181b258305142ee851f224c16bdd +TEST= 145 +KEY= 0000000000000000000000000000000000008000000000000000000000000000 +CT= 2fc55ac29d175dbe4ca3ce0409e3d645f5b31e1618ed130f2f9b48990bcbd2c8 +TEST= 146 +KEY= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 17f5bc9e0f3eafcb29d89ca0399968b6499b24595d4854eb89e5e6c632f68bd3 +TEST= 147 +KEY= 0000000000000000000000000000000000002000000000000000000000000000 +CT= 4c62dbfbd01121e6febad46da32a774cb0eb159d7ad7253a2dc83978336fbd02 +TEST= 148 +KEY= 0000000000000000000000000000000000001000000000000000000000000000 +CT= a1e95e4d5b164f33bcd7cd3383abf65840cb9ec696063d79dde8d9d6d7c9d525 +TEST= 149 +KEY= 0000000000000000000000000000000000000800000000000000000000000000 +CT= dc3c9dcfe89eac3770adfbb42b64fac8ad16bbc77e560a4589d77ee1d31e05cb +TEST= 150 +KEY= 0000000000000000000000000000000000000400000000000000000000000000 +CT= bc5aa5ecf3331ca1601e58d6431a5b4b61652a67d9a381b5a15cbfa1724557f8 +TEST= 151 +KEY= 0000000000000000000000000000000000000200000000000000000000000000 +CT= baf2bb22ebd4e69319747d0651bcf4e3bcb2089294261d7d736ed1a5e2a135bd +TEST= 152 +KEY= 0000000000000000000000000000000000000100000000000000000000000000 +CT= cd54cd77b44d34416c948af75ac479a84b102e1cdbcb79c7877f45ea3392afbb +TEST= 153 +KEY= 0000000000000000000000000000000000000080000000000000000000000000 +CT= 22832253637366f0eed703d3b5b5905c97a7de98caabdfd3b165425658bc31ef +TEST= 154 +KEY= 0000000000000000000000000000000000000040000000000000000000000000 +CT= a4bf9162707a79f1d8e66b2edfc01cd4ac14d2504c3035dd02c9d431b417d4f8 +TEST= 155 +KEY= 0000000000000000000000000000000000000020000000000000000000000000 +CT= 2716c9f2b31ce2035d63da609cdc065ed18e454212b68c5697c888b37d5ab1f2 +TEST= 156 +KEY= 0000000000000000000000000000000000000010000000000000000000000000 +CT= f9bbac9b5b20a9b7c881a66285007d07dd68675cf9d6ca71ff38f3772d2b347b +TEST= 157 +KEY= 0000000000000000000000000000000000000008000000000000000000000000 +CT= 6a955134e058762dc94cc4e8b4d80bc801e0e69c95a63d813cf9559a5cd0df6b +TEST= 158 +KEY= 0000000000000000000000000000000000000004000000000000000000000000 +CT= 637521d91e4553793fa9f0cbf9e8ee1d5c32ee417a0506b3a8f1c631d0600210 +TEST= 159 +KEY= 0000000000000000000000000000000000000002000000000000000000000000 +CT= 4848797bb0fa32dd7baac0b003b9dbaaf1bad8a5f77c20161b5856cf06878a0a +TEST= 160 +KEY= 0000000000000000000000000000000000000001000000000000000000000000 +CT= c861086856c9bebbbb514d5050467abb62c8243493296992db91a83133e358a3 +TEST= 161 +KEY= 0000000000000000000000000000000000000000800000000000000000000000 +CT= 2e9dd9309faaf6562c165039aa63594f14be73825a5816069446478f4e9ce2a5 +TEST= 162 +KEY= 0000000000000000000000000000000000000000400000000000000000000000 +CT= d79bde8cdcf1443e5cd4ac72c0f18cbdfc4a44a1c371189b4379f6acb4b6486a +TEST= 163 +KEY= 0000000000000000000000000000000000000000200000000000000000000000 +CT= 030646d9fa4a766a280810732a379282f04c8214080f13c1171b69c4b1863819 +TEST= 164 +KEY= 0000000000000000000000000000000000000000100000000000000000000000 +CT= bc7866c9d45bda583c47bcd4ca64b71834c2e32f4ce36efc902ee1eb37ab4205 +TEST= 165 +KEY= 0000000000000000000000000000000000000000080000000000000000000000 +CT= 13d04226fc33f840c573b9cab6901a80788b1b7bab03f53bf4bc6bde4aa4ed58 +TEST= 166 +KEY= 0000000000000000000000000000000000000000040000000000000000000000 +CT= 7c2642af31c0816357b83337f8ea702b0ad7a66eb1caa6a15475cb048029d11e +TEST= 167 +KEY= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 76022b724aafeb241e251715d197941ad5434d474765e036eb52cd20edebecc7 +TEST= 168 +KEY= 0000000000000000000000000000000000000000010000000000000000000000 +CT= 968d848169de2489c58410efcae45b0a4bd27354bae7e1e216807eeea8efab07 +TEST= 169 +KEY= 0000000000000000000000000000000000000000008000000000000000000000 +CT= ae120198c6ca4baa7ead8fdecc89c4544277897103dc44c0af8ef6ff4addafbe +TEST= 170 +KEY= 0000000000000000000000000000000000000000004000000000000000000000 +CT= 6dbd4a4b0d1ea7d08892424e774f4298422981b8647e1fcda596f527831e36bd +TEST= 171 +KEY= 0000000000000000000000000000000000000000002000000000000000000000 +CT= d5cccd14426065f95b6bbb5881d0cdd333749ba2c36690792ac1887eb6dcfdd1 +TEST= 172 +KEY= 0000000000000000000000000000000000000000001000000000000000000000 +CT= 07b59f152cfa4d7d57ba8cab3de1f84587c9a5171ab1a7ebd622d71e39e95d3c +TEST= 173 +KEY= 0000000000000000000000000000000000000000000800000000000000000000 +CT= 7422237b779401d1521a328c1fe8150552cabe6322ce87ef833ca7d76e3fcf67 +TEST= 174 +KEY= 0000000000000000000000000000000000000000000400000000000000000000 +CT= a8aa5ce289dd5d790ba5dffac3b062d2a54d0c2002c55922303876223f8b3d6c +TEST= 175 +KEY= 0000000000000000000000000000000000000000000200000000000000000000 +CT= bae46a2ccdef2d0ac4e80b3180dce1294e187db9c2cab29ef7bb67c605f30fdd +TEST= 176 +KEY= 0000000000000000000000000000000000000000000100000000000000000000 +CT= 118f534c74f12856f10d11d37400a97607068aa6a6e1ae118ada8d202520d6f9 +TEST= 177 +KEY= 0000000000000000000000000000000000000000000080000000000000000000 +CT= 0cc8b179c5f2a2916973a806e0ae42e9fb144d56798c1ef4c88530f6724f92b4 +TEST= 178 +KEY= 0000000000000000000000000000000000000000000040000000000000000000 +CT= f0a2e660ad16ad79da8d5e58e265cbb7ffb1bef1d557e15277250953ebeb4f52 +TEST= 179 +KEY= 0000000000000000000000000000000000000000000020000000000000000000 +CT= 70dfa1fa543a6c680124cbed9a9fff9fc75a8e550011863ee11b89f0fdee3365 +TEST= 180 +KEY= 0000000000000000000000000000000000000000000010000000000000000000 +CT= 4c9b800c7563b0df6e1f3a1bfe8767315b5f2bdcac5e326067f52ac809c63b94 +TEST= 181 +KEY= 0000000000000000000000000000000000000000000008000000000000000000 +CT= 64a9655c9855553130d52f4bf542c2b1efe7f3bd64ca55c855807019cccec5f8 +TEST= 182 +KEY= 0000000000000000000000000000000000000000000004000000000000000000 +CT= 9cf49c9667ba864e144648e49604bd60c2a62ad1c85691991427144b50e65613 +TEST= 183 +KEY= 0000000000000000000000000000000000000000000002000000000000000000 +CT= 05228a544535f0fe373059732a43bb90a73674cc82af3f49f637ae7ef9a5bdbd +TEST= 184 +KEY= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 2a4cf55abb3854360a33203dfe08e8a2c1ea9e0f16750d9e6e057a998adf0690 +TEST= 185 +KEY= 0000000000000000000000000000000000000000000000800000000000000000 +CT= 1eaafa51caa6a476ae73cb9bc53563cb55dda19b42ff21223faf5f78926ed762 +TEST= 186 +KEY= 0000000000000000000000000000000000000000000000400000000000000000 +CT= 83bbec09cd9b73523b76f87aa5a9057ffae14083f00486fb7f70ab539970f15f +TEST= 187 +KEY= 0000000000000000000000000000000000000000000000200000000000000000 +CT= 8505585c8945b7b1bcf30bd85b0abe1267823444ed46d7522344b2e57fb43857 +TEST= 188 +KEY= 0000000000000000000000000000000000000000000000100000000000000000 +CT= 17a4b99490698946392e8639201598f91756a9e7e268dbacbe1ed85b91d82fa6 +TEST= 189 +KEY= 0000000000000000000000000000000000000000000000080000000000000000 +CT= 0b51ef9579d6fe1d8e20dcf0d0531216e525cef0fdbde6ed4c9e9eb881eda863 +TEST= 190 +KEY= 0000000000000000000000000000000000000000000000040000000000000000 +CT= a3c5d2bd4f728da9f7967b45ffdab79ccae701b22529a78f2222afea6a6bfd26 +TEST= 191 +KEY= 0000000000000000000000000000000000000000000000020000000000000000 +CT= 57b76b0a7a542175186a30f8e576097deb0226b19383beba103bff61ef96bb19 +TEST= 192 +KEY= 0000000000000000000000000000000000000000000000010000000000000000 +CT= 89158557342b2ebc02e69d9e4c3ea9829229c5efe4b5c7940afea58fef64c64b +TEST= 193 +KEY= 0000000000000000000000000000000000000000000000008000000000000000 +CT= 18a8ff1f8b285be8ac4102fc6e0aac078aa3ffd2096d70f7e4305844891839b0 +TEST= 194 +KEY= 0000000000000000000000000000000000000000000000004000000000000000 +CT= b53706b184d41b8716c45f69cc8cba0cfaa545956d4f11e136127cf9a35ec181 +TEST= 195 +KEY= 0000000000000000000000000000000000000000000000002000000000000000 +CT= d33b60b8807c11d62da568ae0e207757fbfd0955aa46c45815d2e8516c169d2a +TEST= 196 +KEY= 0000000000000000000000000000000000000000000000001000000000000000 +CT= 7510b3cbbc27011999362ef6f9072f8bcfec08eb694ab76d2949693a8e219ec3 +TEST= 197 +KEY= 0000000000000000000000000000000000000000000000000800000000000000 +CT= f8e32e6b72469858c508c76dbb94b50b3dacf78241f491cea973e59d0c5b6971 +TEST= 198 +KEY= 0000000000000000000000000000000000000000000000000400000000000000 +CT= 128b867ced2f08489f52fa25d92dc35f96cadba1ac9991e267a765d9642f170c +TEST= 199 +KEY= 0000000000000000000000000000000000000000000000000200000000000000 +CT= a967c06efe7073393cebaac9cd640ef94f824667dce97f3951d704d4a0c9e6ff +TEST= 200 +KEY= 0000000000000000000000000000000000000000000000000100000000000000 +CT= 4e553e5657504e405b720a052a7b9b4801cb4afe38816b0566ed7bfc9a63e217 +TEST= 201 +KEY= 0000000000000000000000000000000000000000000000000080000000000000 +CT= 8813374aed23ae5e481e5a86e7607954cc2dc74f062c1bb918c4f6d8a9278773 +TEST= 202 +KEY= 0000000000000000000000000000000000000000000000000040000000000000 +CT= 8e86b5214953e6e46ffb1791d3fa37a1316305fc8e6aaf42e97cb135bed74ded +TEST= 203 +KEY= 0000000000000000000000000000000000000000000000000020000000000000 +CT= 4430266a20df83eb608f861312faf46a10f12b7c31b4cacf8214e7e058192d0b +TEST= 204 +KEY= 0000000000000000000000000000000000000000000000000010000000000000 +CT= 4d1268e518e05c6874f31ef11323ac0e7774da0f9dfcae3439845f97aa2a0859 +TEST= 205 +KEY= 0000000000000000000000000000000000000000000000000008000000000000 +CT= e4447f74946828a608ff304479bb0b4772b8f7ec0befef377041b154fb563d30 +TEST= 206 +KEY= 0000000000000000000000000000000000000000000000000004000000000000 +CT= 7a5982ac217353fa8d22c155072ba932c0d7790e17945c4005e641ac6fe128c8 +TEST= 207 +KEY= 0000000000000000000000000000000000000000000000000002000000000000 +CT= d1819c8216c6817e939b8d7b02a0c32555307136613e0045811b526eb8b6cf89 +TEST= 208 +KEY= 0000000000000000000000000000000000000000000000000001000000000000 +CT= b3c70ead63624003796ca181d66840b43fc6972a7fadf8f59726030dd74e0127 +TEST= 209 +KEY= 0000000000000000000000000000000000000000000000000000800000000000 +CT= 4973d2253470edeba03e1653279f6056943cc9375d531fbcfaa4059a3e7f007a +TEST= 210 +KEY= 0000000000000000000000000000000000000000000000000000400000000000 +CT= 6ebabbcc7e899778bfc3902e9fc64ced4dc777868db633d97c344ad2b94472de +TEST= 211 +KEY= 0000000000000000000000000000000000000000000000000000200000000000 +CT= 909417c79c6893d2652aa3e49a6a7d27c00c62dbf3e4a5317c100e892cc84a50 +TEST= 212 +KEY= 0000000000000000000000000000000000000000000000000000100000000000 +CT= c4f2c48296bc561334d9b47df516850692c67370e477ef0f6b95fa60f9229a1b +TEST= 213 +KEY= 0000000000000000000000000000000000000000000000000000080000000000 +CT= 171d0e29fddc7906a176ab54eab7a8b6d8af5770895b539cc2dac5fb20643098 +TEST= 214 +KEY= 0000000000000000000000000000000000000000000000000000040000000000 +CT= 348f5f888d3c88d5fc447094e11d9112df0a71f065247fd7dd5c339dd7d2dbea +TEST= 215 +KEY= 0000000000000000000000000000000000000000000000000000020000000000 +CT= 35d2678473e6a487ec9fe5479ec8832daf5a48caa0eb88e361fb0ae76dc5c1a0 +TEST= 216 +KEY= 0000000000000000000000000000000000000000000000000000010000000000 +CT= 0068f1515f833e126ac89a036736d99a738c3ff4abeb4cdfe7603f6db9daf978 +TEST= 217 +KEY= 0000000000000000000000000000000000000000000000000000008000000000 +CT= fa11972d900664c0224d9c81d0218add13f36d400b13fbfda7ff83becc10dc0c +TEST= 218 +KEY= 0000000000000000000000000000000000000000000000000000004000000000 +CT= ec1c5f031fd15b9a5fef81a34e3975129edb8990f90f31bdd3729e6178ea9600 +TEST= 219 +KEY= 0000000000000000000000000000000000000000000000000000002000000000 +CT= 320c0b8e506efe9fc327dade91cbc8063e206bb2a257f1f34fe0f4db011c6a04 +TEST= 220 +KEY= 0000000000000000000000000000000000000000000000000000001000000000 +CT= a13d3ca148b13289d620ab9f68e62ab143d8ffe4f1277642a63c0bfff30452b7 +TEST= 221 +KEY= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 99bfaef8581cdf07905d431b27170e76346f16147e68b4a090b6a3ea8a3a7d96 +TEST= 222 +KEY= 0000000000000000000000000000000000000000000000000000000400000000 +CT= 3a75eb377c519059bec403fc723a2a5179606a59dee94dafa29825796efbea88 +TEST= 223 +KEY= 0000000000000000000000000000000000000000000000000000000200000000 +CT= 131638cdd609693e2b9c452cd3f7fdf63b1a47160ee6099d570833d5292cb906 +TEST= 224 +KEY= 0000000000000000000000000000000000000000000000000000000100000000 +CT= 02aa9942522c4b12f08ce4f66a0e79a83027cd42a54b0945b71b1e6d6c0b6566 +TEST= 225 +KEY= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 685f50cb58fa55a47e2c0e0f86dcba93c0066ac8347cad257ba3e8ee2c844d41 +TEST= 226 +KEY= 0000000000000000000000000000000000000000000000000000000040000000 +CT= 01606b1581e83a4e7ab8333f7bd96536908a6ef03f847f05a8f48e29b955737d +TEST= 227 +KEY= 0000000000000000000000000000000000000000000000000000000020000000 +CT= 81de5d25bc9c9a752103b8dd0a16590e57c61821e724ab426751f4c6c1208d0a +TEST= 228 +KEY= 0000000000000000000000000000000000000000000000000000000010000000 +CT= 2659d9d2914703437881aacd41343020ef420c5fc5c830391bbae9146262c96b +TEST= 229 +KEY= 0000000000000000000000000000000000000000000000000000000008000000 +CT= f89b02d68c6fa1423723b6bdd09a778fd61136bdc5ae6d46d69e045d59a5cd1b +TEST= 230 +KEY= 0000000000000000000000000000000000000000000000000000000004000000 +CT= d799c80e82b893132e227445b8e7011a76208624a3e0698b1ab8daf1c523d609 +TEST= 231 +KEY= 0000000000000000000000000000000000000000000000000000000002000000 +CT= 0016149b410c82bb333b88724552eb7492b900e45d40c5b38741757471ab78be +TEST= 232 +KEY= 0000000000000000000000000000000000000000000000000000000001000000 +CT= aa0a845d27ebd57352d1da20ee7feedba08b1345d09465ed9d6df1b3e10241ce +TEST= 233 +KEY= 0000000000000000000000000000000000000000000000000000000000800000 +CT= 58c802957dd266961fe1bca56f3e3c06642e701dc83196ecaa8adc4641cb8749 +TEST= 234 +KEY= 0000000000000000000000000000000000000000000000000000000000400000 +CT= 3e7cead1bcb6594f46353d429995269f9d7eb042fd41fc826f0b4eea19b7e847 +TEST= 235 +KEY= 0000000000000000000000000000000000000000000000000000000000200000 +CT= 1a0417b0420962cbe0b0299b4e1ce1bef15ed69325152c596b56f48095c327e9 +TEST= 236 +KEY= 0000000000000000000000000000000000000000000000000000000000100000 +CT= 20923ce166643d69cd1a671eb2568b097c4b6c55bd32997d6f6cbcb20dbc36a4 +TEST= 237 +KEY= 0000000000000000000000000000000000000000000000000000000000080000 +CT= 8be4b4c2c25f9e4171dfe752809b4d57945f310b1da475369b42a0a4a324a3bc +TEST= 238 +KEY= 0000000000000000000000000000000000000000000000000000000000040000 +CT= 9b18b22877e16bf8a1126f62c1345bdc5e24bda7ab671f5e5a0cffa07ef46d76 +TEST= 239 +KEY= 0000000000000000000000000000000000000000000000000000000000020000 +CT= f6979db4fe6f60580aee6096bf868eba25ff70cc6dd97b05bf96521dc284b255 +TEST= 240 +KEY= 0000000000000000000000000000000000000000000000000000000000010000 +CT= fe20bd8425193742e77e4b36b2989c7ff80bfd99210b19851e6eb664fa603d8b +TEST= 241 +KEY= 0000000000000000000000000000000000000000000000000000000000008000 +CT= c3d9bc9e1546f0c0161ba00858385eb4d8b22d5314a3c3d65fd3746e64a87620 +TEST= 242 +KEY= 0000000000000000000000000000000000000000000000000000000000004000 +CT= 0208d2c0edfa7a7072ceed989f0b50c2e315a74f856e6f597b789eaaabfb1519 +TEST= 243 +KEY= 0000000000000000000000000000000000000000000000000000000000002000 +CT= be11408af65fdfe5f2e7fc58f4cfb491947a89ca6960d8fdba060b89cc62aa9c +TEST= 244 +KEY= 0000000000000000000000000000000000000000000000000000000000001000 +CT= 60ba1a5b6fe239892ea20c7bbf58bd6cadc5e2933caec3452e48b996854aa844 +TEST= 245 +KEY= 0000000000000000000000000000000000000000000000000000000000000800 +CT= f524657fe50fd1c31e15ac4951e8e0783c636bebcdace9998ce611a1ec4bb434 +TEST= 246 +KEY= 0000000000000000000000000000000000000000000000000000000000000400 +CT= 4940a0abddc2a5c806148b58f3c70af1b6908aa69e571a58fe77b29c7376c554 +TEST= 247 +KEY= 0000000000000000000000000000000000000000000000000000000000000200 +CT= f1a0c8e0562b9395e405dd5f945a9ee5b1c984008629f38db8b27355c4403269 +TEST= 248 +KEY= 0000000000000000000000000000000000000000000000000000000000000100 +CT= 2e590563ff9396c65f13cb3126a50db69a9a9b0da11f9b1a1aebb34c4c850bfd +TEST= 249 +KEY= 0000000000000000000000000000000000000000000000000000000000000080 +CT= 7e76ce42b1b48031de43ea5ab520e5957206578f2cb4a35b8a3d1b84cc075f89 +TEST= 250 +KEY= 0000000000000000000000000000000000000000000000000000000000000040 +CT= ecb1895d86379357facba092737f83bcc66e0e8704c95408947e6a0f70764c5d +TEST= 251 +KEY= 0000000000000000000000000000000000000000000000000000000000000020 +CT= f4bc305f593c2c8d15a6f084ee2415da7c32c36a84de6ed7e796a815ef3d8e50 +TEST= 252 +KEY= 0000000000000000000000000000000000000000000000000000000000000010 +CT= e91a1d3a0cb10e3f128f2cf667979fcbeef87c2b0f3fd8690b109e845f9ac22a +TEST= 253 +KEY= 0000000000000000000000000000000000000000000000000000000000000008 +CT= 867826dcd013316a02afca9bfe05acf31b3b77e1efc97c8ecd0bb605c7759a02 +TEST= 254 +KEY= 0000000000000000000000000000000000000000000000000000000000000004 +CT= a30f9ba3c38eed22982c0e3cd0799e710425c9ad5994081dd689f3460a47e837 +TEST= 255 +KEY= 0000000000000000000000000000000000000000000000000000000000000002 +CT= e90247fa8c26ef0ab8018fcd8c7c7a08e5e8bc76d3163986fe3d8a60f9cc1ff4 +TEST= 256 +KEY= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 7536b4b6490c083597f6596de8c627b1c75d0f4f9ba24de284ff575e25dda7eb diff --git a/flint/test/testvals/ecbvt44.txt b/flint/test/testvals/ecbvt44.txt new file mode 100644 index 0000000..333291e --- /dev/null +++ b/flint/test/testvals/ecbvt44.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt44.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= 66e94bd4ef8a2c3b884cfa59ca342b2e +TEST= 1 +PT= 80000000000000000000000000000000 +CT= 3ad78e726c1ec02b7ebfe92b23d9ec34 +TEST= 2 +PT= 40000000000000000000000000000000 +CT= 45bc707d29e8204d88dfba2f0b0cad9b +TEST= 3 +PT= 20000000000000000000000000000000 +CT= 161556838018f52805cdbd6202002e3f +TEST= 4 +PT= 10000000000000000000000000000000 +CT= f5569b3ab6a6d11efde1bf0a64c6854a +TEST= 5 +PT= 08000000000000000000000000000000 +CT= 64e82b50e501fbd7dd4116921159b83e +TEST= 6 +PT= 04000000000000000000000000000000 +CT= baac12fb613a7de11450375c74034041 +TEST= 7 +PT= 02000000000000000000000000000000 +CT= bcf176a7eaad8085ebacea362462a281 +TEST= 8 +PT= 01000000000000000000000000000000 +CT= 47711816e91d6ff059bbbf2bf58e0fd3 +TEST= 9 +PT= 00800000000000000000000000000000 +CT= b970dfbe40698af1638fe38bd3df3b2f +TEST= 10 +PT= 00400000000000000000000000000000 +CT= f95b59a44f391e14cf20b74bdc32fcff +TEST= 11 +PT= 00200000000000000000000000000000 +CT= 720f74ae04a2a435b9a7256e49378f5b +TEST= 12 +PT= 00100000000000000000000000000000 +CT= 2a0445f61d36bfa7e277070730cf76da +TEST= 13 +PT= 00080000000000000000000000000000 +CT= 8d0536b997aefec1d94011bab6699a03 +TEST= 14 +PT= 00040000000000000000000000000000 +CT= 674f002e19f6ed47eff319e51fad4498 +TEST= 15 +PT= 00020000000000000000000000000000 +CT= 292c02c5cb9163c80ac0f6cf1dd8e92d +TEST= 16 +PT= 00010000000000000000000000000000 +CT= fa321cf18ef5fe727dd82a5c1e945141 +TEST= 17 +PT= 00008000000000000000000000000000 +CT= a5a7afe1034c39cccebe3c584bc0be05 +TEST= 18 +PT= 00004000000000000000000000000000 +CT= 4ff5a52e697e77d081205dbdb21cea39 +TEST= 19 +PT= 00002000000000000000000000000000 +CT= 209e88dc94c9003000ce0769af7b7166 +TEST= 20 +PT= 00001000000000000000000000000000 +CT= 5dee41af864cb4b650e5f51551824d38 +TEST= 21 +PT= 00000800000000000000000000000000 +CT= a79a63fa7e4503ae6d6e09f5f9053030 +TEST= 22 +PT= 00000400000000000000000000000000 +CT= a48316749fae7fac7002031a6afd8ba7 +TEST= 23 +PT= 00000200000000000000000000000000 +CT= d6eee8a7357a0e1d64262ca9c337ac42 +TEST= 24 +PT= 00000100000000000000000000000000 +CT= b013ca8a62a858053e9fb667ed39829e +TEST= 25 +PT= 00000080000000000000000000000000 +CT= df6ea9e4538a45a52d5c1a43c88f4b55 +TEST= 26 +PT= 00000040000000000000000000000000 +CT= 7d03ba451371591d3fd5547d9165c73b +TEST= 27 +PT= 00000020000000000000000000000000 +CT= 0e0426281a6277e186499d365d5f49ff +TEST= 28 +PT= 00000010000000000000000000000000 +CT= dbc02169dd2059e6cc4c57c1fedf5ab4 +TEST= 29 +PT= 00000008000000000000000000000000 +CT= 826590e05d167da6f00dcc75e22788eb +TEST= 30 +PT= 00000004000000000000000000000000 +CT= 34a73f21a04421d9786335faab49423a +TEST= 31 +PT= 00000002000000000000000000000000 +CT= ed347d0e0128ee1a7392a1d36ab78aa9 +TEST= 32 +PT= 00000001000000000000000000000000 +CT= ee944b2fe6e9fc888042608da9615f75 +TEST= 33 +PT= 00000000800000000000000000000000 +CT= 9e7c85a909ef7218ba7947cfb4718f46 +TEST= 34 +PT= 00000000400000000000000000000000 +CT= 811ae07a0b2b1f816587fa73699ae77d +TEST= 35 +PT= 00000000200000000000000000000000 +CT= 68466fbf43c2fe13d4b18f7ec5ea745f +TEST= 36 +PT= 00000000100000000000000000000000 +CT= d20b015c7191b219780956e6101f9354 +TEST= 37 +PT= 00000000080000000000000000000000 +CT= 5939d5c1bbf54ee1b3e326d757bdde25 +TEST= 38 +PT= 00000000040000000000000000000000 +CT= b1fdafe9a0240e8ffea19ce94b5105d3 +TEST= 39 +PT= 00000000020000000000000000000000 +CT= d62962ece02cdd68c06bdfefb2f9495b +TEST= 40 +PT= 00000000010000000000000000000000 +CT= b3bb2de6f3c26587ba8bac4f7ad9499a +TEST= 41 +PT= 00000000008000000000000000000000 +CT= e0b1072d6d9ff703d6fbef77852b0a6b +TEST= 42 +PT= 00000000004000000000000000000000 +CT= d8dd51c907f478de0228e83e61fd1758 +TEST= 43 +PT= 00000000002000000000000000000000 +CT= a42dffe6e7c1671c06a25236fdd10017 +TEST= 44 +PT= 00000000001000000000000000000000 +CT= 25acf141550bfab9ef451b6c6a5b2163 +TEST= 45 +PT= 00000000000800000000000000000000 +CT= 4da7fca3949b16e821dbc84f19581018 +TEST= 46 +PT= 00000000000400000000000000000000 +CT= 7d49b6347cbcc8919c7fa96a37a7a215 +TEST= 47 +PT= 00000000000200000000000000000000 +CT= 900024b29a08c6721b95ba3b753ddb4d +TEST= 48 +PT= 00000000000100000000000000000000 +CT= 6d2182fb283b6934d90ba7848cab5e66 +TEST= 49 +PT= 00000000000080000000000000000000 +CT= f73ef01b448d23a4d90de8b2f9666e7a +TEST= 50 +PT= 00000000000040000000000000000000 +CT= 4ad9cda2418643e9a3d926af5e6b0412 +TEST= 51 +PT= 00000000000020000000000000000000 +CT= 7caec8e7e5953997d545b033201c8c5b +TEST= 52 +PT= 00000000000010000000000000000000 +CT= 3c43ca1f6b6864503e27b48d88230cf5 +TEST= 53 +PT= 00000000000008000000000000000000 +CT= 44f779b93108fe9feec880d79ba74488 +TEST= 54 +PT= 00000000000004000000000000000000 +CT= 9e50e8d9cfd3a682a78e527c9072a1cf +TEST= 55 +PT= 00000000000002000000000000000000 +CT= 68d000cbc838bbe3c505d6f814c01f28 +TEST= 56 +PT= 00000000000001000000000000000000 +CT= 2cb2a9fec1acd1d9b0fa05205e304f57 +TEST= 57 +PT= 00000000000000800000000000000000 +CT= 01eb2806606e46444520a5cc6180cd4b +TEST= 58 +PT= 00000000000000400000000000000000 +CT= daa9b25168cc702326f217f1a0c0b162 +TEST= 59 +PT= 00000000000000200000000000000000 +CT= 3e07e648975d9578d03555b1755807ed +TEST= 60 +PT= 00000000000000100000000000000000 +CT= 0b45f52e802c8b8de09579425b80b711 +TEST= 61 +PT= 00000000000000080000000000000000 +CT= 659595da0b68f6df0dd6ca77202986e1 +TEST= 62 +PT= 00000000000000040000000000000000 +CT= 05ff42873893536e58c8fa98a45c73c4 +TEST= 63 +PT= 00000000000000020000000000000000 +CT= b5b03421de8bbffc4eadec767339a9bd +TEST= 64 +PT= 00000000000000010000000000000000 +CT= 788bcd111ecf73d4e78d2e21bef55460 +TEST= 65 +PT= 00000000000000008000000000000000 +CT= 909cd9ec6790359f982dc6f2393d5315 +TEST= 66 +PT= 00000000000000004000000000000000 +CT= 332950f361535ff24efac8c76293f12c +TEST= 67 +PT= 00000000000000002000000000000000 +CT= a68ccd4e330ffda9d576da436db53d75 +TEST= 68 +PT= 00000000000000001000000000000000 +CT= 27c8a1ccfdb0b015d1ed5b3e77143791 +TEST= 69 +PT= 00000000000000000800000000000000 +CT= d76a4b95887a77df610dd3e1d3b20325 +TEST= 70 +PT= 00000000000000000400000000000000 +CT= c068ab0de71c66dae83c361ef4b2d989 +TEST= 71 +PT= 00000000000000000200000000000000 +CT= c2120bcd49eda9a288b3b4be79ac8158 +TEST= 72 +PT= 00000000000000000100000000000000 +CT= 0c546f62bf2773cd0f564fceca7ba688 +TEST= 73 +PT= 00000000000000000080000000000000 +CT= 18f3462bede4920213ccb66dab1640aa +TEST= 74 +PT= 00000000000000000040000000000000 +CT= fe42f245edd0e24b216aebd8b392d690 +TEST= 75 +PT= 00000000000000000020000000000000 +CT= 3d3eebc8d3d1558a194c2d00c337ff2b +TEST= 76 +PT= 00000000000000000010000000000000 +CT= 29aaedf043e785db42836f79be6cba28 +TEST= 77 +PT= 00000000000000000008000000000000 +CT= 215f90c6744e2944358e78619159a611 +TEST= 78 +PT= 00000000000000000004000000000000 +CT= 8606b1aa9e1d548e5442b06551e2c6dc +TEST= 79 +PT= 00000000000000000002000000000000 +CT= 987bb4b8740ec0ede7fea97df033b5b1 +TEST= 80 +PT= 00000000000000000001000000000000 +CT= c0a3500da5b0ae07d2f450930beedf1b +TEST= 81 +PT= 00000000000000000000800000000000 +CT= 525fdf8312fe8f32c781481a8daaae37 +TEST= 82 +PT= 00000000000000000000400000000000 +CT= bfd2c56ae5fb9c9de33a6944572a6487 +TEST= 83 +PT= 00000000000000000000200000000000 +CT= 7975a57a425cdf5aa1fa929101f650b0 +TEST= 84 +PT= 00000000000000000000100000000000 +CT= bf174bc49609a8709b2cd8366daa79fe +TEST= 85 +PT= 00000000000000000000080000000000 +CT= 06c50c43222f56c874b1704e9f44bf7d +TEST= 86 +PT= 00000000000000000000040000000000 +CT= 0cec48cd34043ea29ca3b8ed5278721e +TEST= 87 +PT= 00000000000000000000020000000000 +CT= 9548ea34a1560197b304d0acb8a1698d +TEST= 88 +PT= 00000000000000000000010000000000 +CT= 22f9e9b1bd73b6b5b7d3062c986272f3 +TEST= 89 +PT= 00000000000000000000008000000000 +CT= fee8e934bd0873295059002230e298d4 +TEST= 90 +PT= 00000000000000000000004000000000 +CT= 1b08e2e3eb820d139cb4abbdbe81d00d +TEST= 91 +PT= 00000000000000000000002000000000 +CT= 0021177681e4d90ceaf69dced0145125 +TEST= 92 +PT= 00000000000000000000001000000000 +CT= 4a8e314452ca8a8a3619fc54bc423643 +TEST= 93 +PT= 00000000000000000000000800000000 +CT= 65047474f7222c94c6965425ff1bfd0a +TEST= 94 +PT= 00000000000000000000000400000000 +CT= e123f551a9c4a8489622b16f961a9aa4 +TEST= 95 +PT= 00000000000000000000000200000000 +CT= ef05530948b80915028bb2b6fe429380 +TEST= 96 +PT= 00000000000000000000000100000000 +CT= 72535b7fe0f0f777cedcd55cd77e2ddf +TEST= 97 +PT= 00000000000000000000000080000000 +CT= 3423d8efc31fa2f4c365c77d8f3b5c63 +TEST= 98 +PT= 00000000000000000000000040000000 +CT= de0e51c264663f3c5dbc59580a98d8e4 +TEST= 99 +PT= 00000000000000000000000020000000 +CT= b2d9391166680947ab09264156719679 +TEST= 100 +PT= 00000000000000000000000010000000 +CT= 10db79f23b06d263835c424af749adb7 +TEST= 101 +PT= 00000000000000000000000008000000 +CT= ddf72d27e6b01ec107ea3e005b59563b +TEST= 102 +PT= 00000000000000000000000004000000 +CT= 8266b57485a5954a4236751de07f6694 +TEST= 103 +PT= 00000000000000000000000002000000 +CT= 669a501e1f1ade6e5523de01d6dbc987 +TEST= 104 +PT= 00000000000000000000000001000000 +CT= c20c48f2989725d461d1db589dc0896e +TEST= 105 +PT= 00000000000000000000000000800000 +CT= de35158e7810ed1191825d2aa98fa97d +TEST= 106 +PT= 00000000000000000000000000400000 +CT= 4fe294f2c0f34d0671b693a237ebddc8 +TEST= 107 +PT= 00000000000000000000000000200000 +CT= 087ae74b10ccbfdf6739feb9559c01a4 +TEST= 108 +PT= 00000000000000000000000000100000 +CT= 5dc278970b7def77a5536c77ab59c207 +TEST= 109 +PT= 00000000000000000000000000080000 +CT= 7607f078c77085184eaa9b060c1fbfff +TEST= 110 +PT= 00000000000000000000000000040000 +CT= 9db841531bcbe7998dad19993fb3cc00 +TEST= 111 +PT= 00000000000000000000000000020000 +CT= d6a089b654854a94560bae13298835b8 +TEST= 112 +PT= 00000000000000000000000000010000 +CT= e1e223c4cf90cc5d195b370d65114622 +TEST= 113 +PT= 00000000000000000000000000008000 +CT= 1cbed73c50d053bdad372ceee54836a1 +TEST= 114 +PT= 00000000000000000000000000004000 +CT= d309e69376d257adf2bfda152b26555f +TEST= 115 +PT= 00000000000000000000000000002000 +CT= 740f7649117f0dee6eaa7789a9994c36 +TEST= 116 +PT= 00000000000000000000000000001000 +CT= 76ae64417c297184d668c5fd908b3ce5 +TEST= 117 +PT= 00000000000000000000000000000800 +CT= 6095fea4aa8035591f1787a819c48787 +TEST= 118 +PT= 00000000000000000000000000000400 +CT= d1ff4e7acd1c79967febab0f7465d450 +TEST= 119 +PT= 00000000000000000000000000000200 +CT= 5f5ad3c42b9489557bb63bf49ecf5f8a +TEST= 120 +PT= 00000000000000000000000000000100 +CT= fb56cc09b680b1d07c5a52149e29f07c +TEST= 121 +PT= 00000000000000000000000000000080 +CT= ff49b8df4a97cbe03833e66197620dad +TEST= 122 +PT= 00000000000000000000000000000040 +CT= 5e070ade533d2e090ed0f5be13bc0983 +TEST= 123 +PT= 00000000000000000000000000000020 +CT= 3ab4fb1d2b7ba376590a2c241d1f508d +TEST= 124 +PT= 00000000000000000000000000000010 +CT= 58b2431bc0bede02550f40238969ec78 +TEST= 125 +PT= 00000000000000000000000000000008 +CT= 0253786e126504f0dab90c48a30321de +TEST= 126 +PT= 00000000000000000000000000000004 +CT= 200211214e7394da2089b6acd093abe0 +TEST= 127 +PT= 00000000000000000000000000000002 +CT= 0388dace60b6a392f328c2b971b2fe78 +TEST= 128 +PT= 00000000000000000000000000000001 +CT= 58e2fccefa7e3061367f1d57a4e7455a diff --git a/flint/test/testvals/ecbvt46.txt b/flint/test/testvals/ecbvt46.txt new file mode 100644 index 0000000..9d9b2f6 --- /dev/null +++ b/flint/test/testvals/ecbvt46.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt46.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= aae06992acbf52a3e8f4a96ec9300bd7 +TEST= 1 +PT= 80000000000000000000000000000000 +CT= 6cd02513e8d4dc986b4afe087a60bd0c +TEST= 2 +PT= 40000000000000000000000000000000 +CT= 423d2772a0ca56daabb48d2129062987 +TEST= 3 +PT= 20000000000000000000000000000000 +CT= 1021f2a8da70eb2219dc16804445ff98 +TEST= 4 +PT= 10000000000000000000000000000000 +CT= c636e35b402577f96974d8804295ebb8 +TEST= 5 +PT= 08000000000000000000000000000000 +CT= 1566d2e57e8393c19e29f892ea28a9a7 +TEST= 6 +PT= 04000000000000000000000000000000 +CT= 883c878fed70b36cc09d040f9619dd19 +TEST= 7 +PT= 02000000000000000000000000000000 +CT= 06734593a974965790e715594fc34aa9 +TEST= 8 +PT= 01000000000000000000000000000000 +CT= f19b389948d9a45534e5bd36c984134a +TEST= 9 +PT= 00800000000000000000000000000000 +CT= d8410dfc14fa6d175ec968ea8cac514c +TEST= 10 +PT= 00400000000000000000000000000000 +CT= 7e6c6ebb4029a177cf7b2fdd9ac6bb7a +TEST= 11 +PT= 00200000000000000000000000000000 +CT= 4b51dd4850dc0a6c3a46d924003d2c27 +TEST= 12 +PT= 00100000000000000000000000000000 +CT= 2e510a9d917b15be32a192b12a668f23 +TEST= 13 +PT= 00080000000000000000000000000000 +CT= 88f6f79962b0fb77fea8e7c632d3108e +TEST= 14 +PT= 00040000000000000000000000000000 +CT= a3a35ab1d88daf07b52794a0f065383a +TEST= 15 +PT= 00020000000000000000000000000000 +CT= dc6cc878433e2b3bb193049a4ecbfc53 +TEST= 16 +PT= 00010000000000000000000000000000 +CT= efcd3763eb7b1a415938248a9a5b4fd5 +TEST= 17 +PT= 00008000000000000000000000000000 +CT= ab7e9fb9a66dbe5bb44854f07d9015ee +TEST= 18 +PT= 00004000000000000000000000000000 +CT= 8b8e9d3365f8f6743ecf7e33e99255a4 +TEST= 19 +PT= 00002000000000000000000000000000 +CT= 54d37b4f176ff3d8f6afc866066d8572 +TEST= 20 +PT= 00001000000000000000000000000000 +CT= e83310889480fbf3c00342e3126d0d02 +TEST= 21 +PT= 00000800000000000000000000000000 +CT= d321ab2511f92f098174aa2de6e85da2 +TEST= 22 +PT= 00000400000000000000000000000000 +CT= d8e3f40b1112d5149d58c481dfa9983f +TEST= 23 +PT= 00000200000000000000000000000000 +CT= 2454c4e0806639ddf19854d6c68054ad +TEST= 24 +PT= 00000100000000000000000000000000 +CT= a5506d410f7ca32f3955dd79d9d09418 +TEST= 25 +PT= 00000080000000000000000000000000 +CT= 7908ee40677699568a7dc1aa317c7e4e +TEST= 26 +PT= 00000040000000000000000000000000 +CT= b4b7b29dd43b2f5cf765e25192273982 +TEST= 27 +PT= 00000020000000000000000000000000 +CT= 92afe9668159beffe2a86f8503260164 +TEST= 28 +PT= 00000010000000000000000000000000 +CT= 5c36a232fba6d187a84657ad4028b18f +TEST= 29 +PT= 00000008000000000000000000000000 +CT= a2e994dfab3a798df8f54f6da87e58e2 +TEST= 30 +PT= 00000004000000000000000000000000 +CT= 6cdab10a72adf77d71d0765baae95631 +TEST= 31 +PT= 00000002000000000000000000000000 +CT= 9fe3c801bcaaf7bb800f2e6bf3278e21 +TEST= 32 +PT= 00000001000000000000000000000000 +CT= b459d90d9a6c392e5493bc91cf5a0863 +TEST= 33 +PT= 00000000800000000000000000000000 +CT= 0518a9fa5007f6787e0fb4e5ac27d758 +TEST= 34 +PT= 00000000400000000000000000000000 +CT= bed9795415d28599700ed7952384a963 +TEST= 35 +PT= 00000000200000000000000000000000 +CT= f0140421173d60251ef6cab0229b1b50 +TEST= 36 +PT= 00000000100000000000000000000000 +CT= 460eb4652b3f6779ea28cb11b37529ed +TEST= 37 +PT= 00000000080000000000000000000000 +CT= c4283d351c960a6ac13cd19ccf03ae38 +TEST= 38 +PT= 00000000040000000000000000000000 +CT= 6815a10047b2c834a798ebdcc6786c75 +TEST= 39 +PT= 00000000020000000000000000000000 +CT= 99ba19f0cdd5990d0386b32ce56c9c4c +TEST= 40 +PT= 00000000010000000000000000000000 +CT= de76f62c61e07915162da13e79679dec +TEST= 41 +PT= 00000000008000000000000000000000 +CT= dd0325d6854803d06d1d2277d5fb8d67 +TEST= 42 +PT= 00000000004000000000000000000000 +CT= 580b71a41de37d6fac83ccb0b3bb1c97 +TEST= 43 +PT= 00000000002000000000000000000000 +CT= e9b1ab470a1b02ef0ff5e6754a092c96 +TEST= 44 +PT= 00000000001000000000000000000000 +CT= 8590620f5af5993b7410282f4126bc1f +TEST= 45 +PT= 00000000000800000000000000000000 +CT= 8d4914d2f1b22b2e268e66e532d29d7c +TEST= 46 +PT= 00000000000400000000000000000000 +CT= fd826ce48e62c5e30867044b86ba4b56 +TEST= 47 +PT= 00000000000200000000000000000000 +CT= 100e7b831c9f35fa1271f5f1316c6fcf +TEST= 48 +PT= 00000000000100000000000000000000 +CT= 0a2dd0c17f68b996aa96c007003d0b31 +TEST= 49 +PT= 00000000000080000000000000000000 +CT= c95f68c57e06b0a2e1f623c83c5d80bf +TEST= 50 +PT= 00000000000040000000000000000000 +CT= 571cafc92c7c8a5ec54c0741e186905c +TEST= 51 +PT= 00000000000020000000000000000000 +CT= 22514353e95312c112255e1eed0b2df6 +TEST= 52 +PT= 00000000000010000000000000000000 +CT= 791a8bf462bd17580bd9152c6d11c6c5 +TEST= 53 +PT= 00000000000008000000000000000000 +CT= 5882a0178d548f84a165db809c60dc28 +TEST= 54 +PT= 00000000000004000000000000000000 +CT= 3ce4a90eed4458ca6039e42ddadb71c3 +TEST= 55 +PT= 00000000000002000000000000000000 +CT= d3cbab261207a16be2751e77044fd7c9 +TEST= 56 +PT= 00000000000001000000000000000000 +CT= 24e32b698a7b32217093628b01f424ab +TEST= 57 +PT= 00000000000000800000000000000000 +CT= 9f6afc0af27cf565110c77e3c24f4f5b +TEST= 58 +PT= 00000000000000400000000000000000 +CT= e088aa5cda20ef267bb039b00c72c45b +TEST= 59 +PT= 00000000000000200000000000000000 +CT= 5cf1018b7e0ba1775601c2e279900360 +TEST= 60 +PT= 00000000000000100000000000000000 +CT= 3b1a7388b89fb9416ad8753cf5af35d2 +TEST= 61 +PT= 00000000000000080000000000000000 +CT= 137fa4ed00afcd9f5d8bc0d14bd5837a +TEST= 62 +PT= 00000000000000040000000000000000 +CT= 806f5c9b663559bb56f234881e4a3e60 +TEST= 63 +PT= 00000000000000020000000000000000 +CT= 8069a449152292df2de8642992c632b6 +TEST= 64 +PT= 00000000000000010000000000000000 +CT= 37c6cf2a1abd1b1f1922b46c7b4a280d +TEST= 65 +PT= 00000000000000008000000000000000 +CT= 7a2835260e5a0aa2b5dc301800ec8438 +TEST= 66 +PT= 00000000000000004000000000000000 +CT= ee81faf2f9058213ffcacf281cb8509e +TEST= 67 +PT= 00000000000000002000000000000000 +CT= 57f22d93c37129ba331fdba38e005a1e +TEST= 68 +PT= 00000000000000001000000000000000 +CT= ec798782e87b7d9f780cc3c3a46519b5 +TEST= 69 +PT= 00000000000000000800000000000000 +CT= 43ea28497f5d40e3a4744fa2edaa42de +TEST= 70 +PT= 00000000000000000400000000000000 +CT= 91f004e7debf41b3414dd8c5c317372c +TEST= 71 +PT= 00000000000000000200000000000000 +CT= c249eae54e7b4df43b938c1b4cc28314 +TEST= 72 +PT= 00000000000000000100000000000000 +CT= 32c289d7eefb99d2f17ad7b7d45fe1ec +TEST= 73 +PT= 00000000000000000080000000000000 +CT= a675fb2e8ddbf810cef01cf2b728cd2b +TEST= 74 +PT= 00000000000000000040000000000000 +CT= a418aaab6e6921cc731aa8a349386080 +TEST= 75 +PT= 00000000000000000020000000000000 +CT= 2e2b0f44863e67d9b0215c4abd60417f +TEST= 76 +PT= 00000000000000000010000000000000 +CT= f0af7cb19e911d481f6426daefdd2240 +TEST= 77 +PT= 00000000000000000008000000000000 +CT= cb1304daaa2df6878f56ac2e0f887e04 +TEST= 78 +PT= 00000000000000000004000000000000 +CT= b1b70a7e6a0cd1916d9b78bea19084ae +TEST= 79 +PT= 00000000000000000002000000000000 +CT= 0cde9f9be646a5fce3436b794a9cfc65 +TEST= 80 +PT= 00000000000000000001000000000000 +CT= 68c7946d476a0a36674b36afd7e5df33 +TEST= 81 +PT= 00000000000000000000800000000000 +CT= 48770159a07dd8dfff06c80105f8d57c +TEST= 82 +PT= 00000000000000000000400000000000 +CT= 665e62801b3260e3c45bd3be34dfdebe +TEST= 83 +PT= 00000000000000000000200000000000 +CT= 4159c1f686bfbe5b0e50bdb0da532b69 +TEST= 84 +PT= 00000000000000000000100000000000 +CT= 6333100a5a4ad917dc2d4e78a04869a3 +TEST= 85 +PT= 00000000000000000000080000000000 +CT= 866a4519ab1d199f25886b89d0539acc +TEST= 86 +PT= 00000000000000000000040000000000 +CT= ec0cfd37e4cbc7e8be385283f7aea75a +TEST= 87 +PT= 00000000000000000000020000000000 +CT= ca2f383aacca0810aa13f3e710621422 +TEST= 88 +PT= 00000000000000000000010000000000 +CT= 1d0eef6870444f950937831ec0a55d98 +TEST= 89 +PT= 00000000000000000000008000000000 +CT= 37839b35ed6801e7670496d479a95017 +TEST= 90 +PT= 00000000000000000000004000000000 +CT= 02317c8c7098c4f94ab867ac7a49dd8d +TEST= 91 +PT= 00000000000000000000002000000000 +CT= ffb4cb4e3f7f8bf3367ebd43236518b4 +TEST= 92 +PT= 00000000000000000000001000000000 +CT= 36bedef1e4aa3e4a40a305741713fcbf +TEST= 93 +PT= 00000000000000000000000800000000 +CT= b2dfe3c4870269c1e3feec39161540d9 +TEST= 94 +PT= 00000000000000000000000400000000 +CT= 147ef2518ad45da0026056ecbf6a3dfa +TEST= 95 +PT= 00000000000000000000000200000000 +CT= 027a75e4de635790e47ace90d7928804 +TEST= 96 +PT= 00000000000000000000000100000000 +CT= c4cf3ccb59bf87d0afbd629f48cfbb7b +TEST= 97 +PT= 00000000000000000000000080000000 +CT= 35165c93f564c97e1c32ef97e8151a87 +TEST= 98 +PT= 00000000000000000000000040000000 +CT= 449de37f7d5a1bbd628abbe7e061701d +TEST= 99 +PT= 00000000000000000000000020000000 +CT= b1d45eaf218f1799b149bad677fe129f +TEST= 100 +PT= 00000000000000000000000010000000 +CT= be08ac6db6bd0583aa9d2abc71c73dcd +TEST= 101 +PT= 00000000000000000000000008000000 +CT= bcc835bd3df1a79e4c7c145b899a5c25 +TEST= 102 +PT= 00000000000000000000000004000000 +CT= 3d311ea611ff5af371301c58a8e9912d +TEST= 103 +PT= 00000000000000000000000002000000 +CT= a5a1bea594acc7ca80f09ea5addb5c71 +TEST= 104 +PT= 00000000000000000000000001000000 +CT= 0f09492429fe7222d6cd8190d9f2ffbf +TEST= 105 +PT= 00000000000000000000000000800000 +CT= 816d2220a16b8aaee71364fd43636c6f +TEST= 106 +PT= 00000000000000000000000000400000 +CT= d7e8702408419ed73191b107eaf75a0b +TEST= 107 +PT= 00000000000000000000000000200000 +CT= 9b170efb1e235b433c78e276bea082f0 +TEST= 108 +PT= 00000000000000000000000000100000 +CT= 03bbecc5598ae974430f29395522f096 +TEST= 109 +PT= 00000000000000000000000000080000 +CT= db53517766c0e8cf42059607cba89380 +TEST= 110 +PT= 00000000000000000000000000040000 +CT= 2e2af4b7931f0aeffac5471148a5bb97 +TEST= 111 +PT= 00000000000000000000000000020000 +CT= c872c0408266403b984f635ff5683de4 +TEST= 112 +PT= 00000000000000000000000000010000 +CT= 15dcf750b0e3a68ad1f4efd07e8967b4 +TEST= 113 +PT= 00000000000000000000000000008000 +CT= b41092048e9e6a749f6fd8ce515a23a3 +TEST= 114 +PT= 00000000000000000000000000004000 +CT= 4da9267d62507994312bd5c99adde730 +TEST= 115 +PT= 00000000000000000000000000002000 +CT= 9e2fca6d1d626e9c6a924ebf7dbf618a +TEST= 116 +PT= 00000000000000000000000000001000 +CT= e092e8d7ef2c2465aefb2493c3063590 +TEST= 117 +PT= 00000000000000000000000000000800 +CT= 1c0e58da37d1068378a88dbe2ede4e10 +TEST= 118 +PT= 00000000000000000000000000000400 +CT= 19063f854232b8509a6a3a6d46809959 +TEST= 119 +PT= 00000000000000000000000000000200 +CT= 447fb09e54efa285f7530f25c4ea0022 +TEST= 120 +PT= 00000000000000000000000000000100 +CT= f6abe86321be40e1fbfdafed37cc1d9b +TEST= 121 +PT= 00000000000000000000000000000080 +CT= 4e8506cd006666341d6cf51f98b41f35 +TEST= 122 +PT= 00000000000000000000000000000040 +CT= 53995de0009ca18becafb8307c54c14c +TEST= 123 +PT= 00000000000000000000000000000020 +CT= 2006bf99f4c58b6cc2627856593faeea +TEST= 124 +PT= 00000000000000000000000000000010 +CT= 2da697d2737cb30b744a4644fa1cbc6e +TEST= 125 +PT= 00000000000000000000000000000008 +CT= 47a22acdb60c3a986a8f76ecd0ea3433 +TEST= 126 +PT= 00000000000000000000000000000004 +CT= fdaa17c2cde20268fe36e164ea532151 +TEST= 127 +PT= 00000000000000000000000000000002 +CT= 98e7247c07f0fe411c267e4384b0f600 +TEST= 128 +PT= 00000000000000000000000000000001 +CT= cd33b28ac773f74ba00ed1f312572435 diff --git a/flint/test/testvals/ecbvt48.txt b/flint/test/testvals/ecbvt48.txt new file mode 100644 index 0000000..683078a --- /dev/null +++ b/flint/test/testvals/ecbvt48.txt @@ -0,0 +1,398 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt48.txt +============================================== + +BLOCKSIZE=128 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 00000000000000000000000000000000 +CT= dc95c078a2408989ad48a21492842087 +TEST= 1 +PT= 80000000000000000000000000000000 +CT= ddc6bf790c15760d8d9aeb6f9a75fd4e +TEST= 2 +PT= 40000000000000000000000000000000 +CT= c7098c217c334d0c9bdf37ea13b0822c +TEST= 3 +PT= 20000000000000000000000000000000 +CT= 60f0fb0d4c56a8d4eefec5264204042d +TEST= 4 +PT= 10000000000000000000000000000000 +CT= 73376fbbf654d0686e0e84001477106b +TEST= 5 +PT= 08000000000000000000000000000000 +CT= 2f443b52ba5f0c6ea0602c7c4fd259b6 +TEST= 6 +PT= 04000000000000000000000000000000 +CT= 75d11b0e3a68c4223d88dbf017977dd7 +TEST= 7 +PT= 02000000000000000000000000000000 +CT= 779b38d15bffb63d8d609d551a5cc98e +TEST= 8 +PT= 01000000000000000000000000000000 +CT= 5275f3d86b4fb8684593133ebfa53cd3 +TEST= 9 +PT= 00800000000000000000000000000000 +CT= 1cef2074b336cec62f12dea2f6ab1481 +TEST= 10 +PT= 00400000000000000000000000000000 +CT= 1aef5abbad9d7160874578dcd8bae172 +TEST= 11 +PT= 00200000000000000000000000000000 +CT= 46c525db17e72f26bf03216846b6f609 +TEST= 12 +PT= 00100000000000000000000000000000 +CT= e24411f941bbe08788781e3ec52cbaa4 +TEST= 13 +PT= 00080000000000000000000000000000 +CT= 83a3dedd1dd27018f6a6477e40527581 +TEST= 14 +PT= 00040000000000000000000000000000 +CT= b68f8a2cdbab0c923c67fc8f0f1087de +TEST= 15 +PT= 00020000000000000000000000000000 +CT= 649944a70c32bf87a7409e7ae128fde8 +TEST= 16 +PT= 00010000000000000000000000000000 +CT= 2846526d67387539c89314de9e0c2d02 +TEST= 17 +PT= 00008000000000000000000000000000 +CT= a9a0b8402e53c70dd1688054ba58ddfd +TEST= 18 +PT= 00004000000000000000000000000000 +CT= 4a72e6e1b79c83ac4be3eba5699eed48 +TEST= 19 +PT= 00002000000000000000000000000000 +CT= b0e36b867ba4ff2b77d0614b0e364e4c +TEST= 20 +PT= 00001000000000000000000000000000 +CT= 49b57de141f6418e3090f24ddd4014b6 +TEST= 21 +PT= 00000800000000000000000000000000 +CT= a6c0d5b9797258e1987ac5f6cd20146d +TEST= 22 +PT= 00000400000000000000000000000000 +CT= 426cf4bdcaa369175965d26e7c71eea2 +TEST= 23 +PT= 00000200000000000000000000000000 +CT= e27f484ce54bc99bc1a52bda3b518a26 +TEST= 24 +PT= 00000100000000000000000000000000 +CT= d16d186284c7e6ee64b8104e0ef20ba5 +TEST= 25 +PT= 00000080000000000000000000000000 +CT= 6431f8538ad54e1e044a9f71f8ef556b +TEST= 26 +PT= 00000040000000000000000000000000 +CT= ecd57ceb451d27eb96c55b2042257e8e +TEST= 27 +PT= 00000020000000000000000000000000 +CT= 4f0f188dc911b1954afbc734c9f68872 +TEST= 28 +PT= 00000010000000000000000000000000 +CT= b54def0337626b65614e81edfde620f3 +TEST= 29 +PT= 00000008000000000000000000000000 +CT= 6655d8074cae0b90b0d3a3fe72d4d9db +TEST= 30 +PT= 00000004000000000000000000000000 +CT= c6b74b6b9eb4fc0c9a237db1b616d09a +TEST= 31 +PT= 00000002000000000000000000000000 +CT= d7b5d076ea56ec2b20791d7ad51ccf8f +TEST= 32 +PT= 00000001000000000000000000000000 +CT= fe160c224bf003ce3bddc90cb52ed22c +TEST= 33 +PT= 00000000800000000000000000000000 +CT= 5e00da9ba94b5ec0d258d8a8002e0f6a +TEST= 34 +PT= 00000000400000000000000000000000 +CT= 09ac6dcff4dacff1651e2ba212a292a3 +TEST= 35 +PT= 00000000200000000000000000000000 +CT= b283617e318d99af83a05d9810ba89f7 +TEST= 36 +PT= 00000000100000000000000000000000 +CT= 0b5f70ccb40b0ef2538ae9b4a9770b35 +TEST= 37 +PT= 00000000080000000000000000000000 +CT= 43282bf180248fb517839b37f4ddaae4 +TEST= 38 +PT= 00000000040000000000000000000000 +CT= ddbd534c8b2e6d30a268f88c55ad765b +TEST= 39 +PT= 00000000020000000000000000000000 +CT= a41a164e50ec2d9f175e752b755e0b5c +TEST= 40 +PT= 00000000010000000000000000000000 +CT= 37bff99ff2f7aa97779e4adf6f13fb10 +TEST= 41 +PT= 00000000008000000000000000000000 +CT= 9ba4f7bd298152903a683c4cec669216 +TEST= 42 +PT= 00000000004000000000000000000000 +CT= 5fb750c7ce10de7b4504248914d0da06 +TEST= 43 +PT= 00000000002000000000000000000000 +CT= 3e748bfa108e086f51d56ec74a9e0fb9 +TEST= 44 +PT= 00000000001000000000000000000000 +CT= 31d4e56b99f5b73c1b8437df332afb98 +TEST= 45 +PT= 00000000000800000000000000000000 +CT= 9dc6717b84fc55d266e7b1d9b5c52a5f +TEST= 46 +PT= 00000000000400000000000000000000 +CT= 8ef8ba007f23c0a50fc120e07041bccd +TEST= 47 +PT= 00000000000200000000000000000000 +CT= c58f38e1839fc1918a12b8c9e88c66b6 +TEST= 48 +PT= 00000000000100000000000000000000 +CT= b695d72a3fcf508c4050e12e40061c2d +TEST= 49 +PT= 00000000000080000000000000000000 +CT= 5d2736ad478a50583bc8c11beff16d7a +TEST= 50 +PT= 00000000000040000000000000000000 +CT= df0eaca8f17847ad41f9578f14c7b56b +TEST= 51 +PT= 00000000000020000000000000000000 +CT= e5aa14ad48ad0a3c47cc35d5f8020e51 +TEST= 52 +PT= 00000000000010000000000000000000 +CT= 11be6c8f58ebd8cef1a53f591a68e8ce +TEST= 53 +PT= 00000000000008000000000000000000 +CT= ecfe7bafcbf42c1fee015488770b3053 +TEST= 54 +PT= 00000000000004000000000000000000 +CT= e552649f8d8ec4a1e1cd6df50b6e6777 +TEST= 55 +PT= 00000000000002000000000000000000 +CT= 521c0629de93b9119cdb1ddc5809ddea +TEST= 56 +PT= 00000000000001000000000000000000 +CT= cb38a62a0bab1784156ba038cba99bf6 +TEST= 57 +PT= 00000000000000800000000000000000 +CT= 76ccee8aaacd394de1eef3dda10cb54b +TEST= 58 +PT= 00000000000000400000000000000000 +CT= 6aff910fa1d5673140e2db59b8416049 +TEST= 59 +PT= 00000000000000200000000000000000 +CT= 064a12c0ef73fb386801bf4f35f3120d +TEST= 60 +PT= 00000000000000100000000000000000 +CT= 2240e374929d5b1bb8ff0ffdddf640ec +TEST= 61 +PT= 00000000000000080000000000000000 +CT= d4ba15c904c7692185de85c02052e180 +TEST= 62 +PT= 00000000000000040000000000000000 +CT= 1714a315ab0166728a44cd91d4ae9018 +TEST= 63 +PT= 00000000000000020000000000000000 +CT= 6c970bdd9f0e222722ea31a1d12dd0ad +TEST= 64 +PT= 00000000000000010000000000000000 +CT= f5956edf02bd36a401bbb6ce77c3d3fb +TEST= 65 +PT= 00000000000000008000000000000000 +CT= 0ca11f122ccd7c259dc597eed3df9bc4 +TEST= 66 +PT= 00000000000000004000000000000000 +CT= 50109ab4912ad2560b206f331b62eb6c +TEST= 67 +PT= 00000000000000002000000000000000 +CT= dbe7c91a4175614889a2d4befd64845e +TEST= 68 +PT= 00000000000000001000000000000000 +CT= 0d3322853a571a6b46b79c0228e0dd25 +TEST= 69 +PT= 00000000000000000800000000000000 +CT= 96e4ee0bb9a11c6fb8522f285baddeb6 +TEST= 70 +PT= 00000000000000000400000000000000 +CT= 96705c52d2cfce82e630c93477c79c49 +TEST= 71 +PT= 00000000000000000200000000000000 +CT= c50130aed6a126149d71f3888c83c232 +TEST= 72 +PT= 00000000000000000100000000000000 +CT= 4816efe3deb380566eba0c17bf582090 +TEST= 73 +PT= 00000000000000000080000000000000 +CT= 0390857b4c8c98e4cf7a2b6f3394c507 +TEST= 74 +PT= 00000000000000000040000000000000 +CT= 422e73a02025ebe8b8b5d6e0fa24fcb2 +TEST= 75 +PT= 00000000000000000020000000000000 +CT= 3271aa7f4bf1d7c38050a43076d4ff76 +TEST= 76 +PT= 00000000000000000010000000000000 +CT= d2074946f0d37b8975607bfc2e70234c +TEST= 77 +PT= 00000000000000000008000000000000 +CT= 1a509194c1270ab92e5a42d3a9f8d98b +TEST= 78 +PT= 00000000000000000004000000000000 +CT= 512438946360ccc4a5c6d73f6eed7130 +TEST= 79 +PT= 00000000000000000002000000000000 +CT= 98cfcdec46ebea1a286b3004f2746a0d +TEST= 80 +PT= 00000000000000000001000000000000 +CT= a1cf369949677a3af3d58e3eabf2741b +TEST= 81 +PT= 00000000000000000000800000000000 +CT= d84c2e1a0e4a52166fa8ff6889d1e5e2 +TEST= 82 +PT= 00000000000000000000400000000000 +CT= 4ad91cceef60119b5078fd162d2735de +TEST= 83 +PT= 00000000000000000000200000000000 +CT= 2860793d818e97aaff1d339d7702438d +TEST= 84 +PT= 00000000000000000000100000000000 +CT= 6f9068be73364ae250d89d78a6c9ce6f +TEST= 85 +PT= 00000000000000000000080000000000 +CT= 024fc3fef4883feb1a8dd005305fecce +TEST= 86 +PT= 00000000000000000000040000000000 +CT= 08a61fe0816d75ea15eb3c9fb9ccded6 +TEST= 87 +PT= 00000000000000000000020000000000 +CT= 449c86dfa13f260175ce39797686ffa4 +TEST= 88 +PT= 00000000000000000000010000000000 +CT= 4ffffc29a59858e1133f2bfb1a8a4817 +TEST= 89 +PT= 00000000000000000000008000000000 +CT= 19425d1f6480b25096561295697dc2b7 +TEST= 90 +PT= 00000000000000000000004000000000 +CT= 31974727ecdd2c77c3a428fc3a8cb3fc +TEST= 91 +PT= 00000000000000000000002000000000 +CT= a57cd704b3c95e744d08df443458f2f5 +TEST= 92 +PT= 00000000000000000000001000000000 +CT= 486d8c193db1ed73acb17990442fc40b +TEST= 93 +PT= 00000000000000000000000800000000 +CT= 5e4dbf4e83ab3bc055b9fcc7a6b3a763 +TEST= 94 +PT= 00000000000000000000000400000000 +CT= acf2e0a693fbbcba4d41b861e0d89e37 +TEST= 95 +PT= 00000000000000000000000200000000 +CT= 32a7cb2ae066a51d2b78fc4b4cfcb608 +TEST= 96 +PT= 00000000000000000000000100000000 +CT= 677d494dbb73caf55c1990158da12f14 +TEST= 97 +PT= 00000000000000000000000080000000 +CT= 082a0d2367512adf0d75a151bfbe0a17 +TEST= 98 +PT= 00000000000000000000000040000000 +CT= 5e5bb7337923c482ce8cba249e6a8c7d +TEST= 99 +PT= 00000000000000000000000020000000 +CT= d3001ba7c7026ee3e5003179530afcfc +TEST= 100 +PT= 00000000000000000000000010000000 +CT= 46ec44f8931e629fe8fd8961312edde1 +TEST= 101 +PT= 00000000000000000000000008000000 +CT= c5f8ecd79c7b30e81d17e32079969310 +TEST= 102 +PT= 00000000000000000000000004000000 +CT= 5b8ad6919e24caebcc55401aee0c9802 +TEST= 103 +PT= 00000000000000000000000002000000 +CT= c2302b7e701b5cc7f8b29e3516dbbfa6 +TEST= 104 +PT= 00000000000000000000000001000000 +CT= a1d04d6a76f9f7a94d49faa64a87f244 +TEST= 105 +PT= 00000000000000000000000000800000 +CT= 7fb6f92d35b5cb6c631600edb9e860ba +TEST= 106 +PT= 00000000000000000000000000400000 +CT= b2ef7078bcface07aeec3f9b48830eb3 +TEST= 107 +PT= 00000000000000000000000000200000 +CT= f475a7493d24c7036e53390374c378b3 +TEST= 108 +PT= 00000000000000000000000000100000 +CT= b36802ac987377a37bd8eadc97c57d60 +TEST= 109 +PT= 00000000000000000000000000080000 +CT= addcd3d19689c4ddc738ce5f69dc9505 +TEST= 110 +PT= 00000000000000000000000000040000 +CT= 0daf8ca22884915403c0f0bb1f4bd74f +TEST= 111 +PT= 00000000000000000000000000020000 +CT= 4af36bae2660503b3248e4685059fd05 +TEST= 112 +PT= 00000000000000000000000000010000 +CT= 7d5631814dd8e917d97a0d514c743971 +TEST= 113 +PT= 00000000000000000000000000008000 +CT= bc3352500fc0cbb9db5b5f6b491c1be8 +TEST= 114 +PT= 00000000000000000000000000004000 +CT= 6a4a30ba87e87af65c90aeb7afedc76b +TEST= 115 +PT= 00000000000000000000000000002000 +CT= 77e6125897668ac8e73e8c79a6ff8336 +TEST= 116 +PT= 00000000000000000000000000001000 +CT= 3fa9d39104ebb323c7aaaa248960dd1e +TEST= 117 +PT= 00000000000000000000000000000800 +CT= fad75ad76ab10adc49036b250e229d39 +TEST= 118 +PT= 00000000000000000000000000000400 +CT= 2facaa5fe35b228a16ac74088d702ec4 +TEST= 119 +PT= 00000000000000000000000000000200 +CT= 88b6cbcfdfef8ad91720a1bb69a1f33e +TEST= 120 +PT= 00000000000000000000000000000100 +CT= c7e9d250998632d444356242ef04058d +TEST= 121 +PT= 00000000000000000000000000000080 +CT= b14dad8d3d9153f46c0d3a1ad63c7a05 +TEST= 122 +PT= 00000000000000000000000000000040 +CT= 60aba678a506608d0845966d29b5f790 +TEST= 123 +PT= 00000000000000000000000000000020 +CT= 482dc43f2388ef25d24144e144bd834e +TEST= 124 +PT= 00000000000000000000000000000010 +CT= 1490a05a7cee43bde98b56e309dc0126 +TEST= 125 +PT= 00000000000000000000000000000008 +CT= abfa77cd6e85da245fb0bdc5e52cfc29 +TEST= 126 +PT= 00000000000000000000000000000004 +CT= dd4ab1284d4ae17b41e85924470c36f7 +TEST= 127 +PT= 00000000000000000000000000000002 +CT= cea7403d4d606b6e074ec5d3baf39d18 +TEST= 128 +PT= 00000000000000000000000000000001 +CT= 530f8afbc74536b9a963b4f1c4cb738b diff --git a/flint/test/testvals/ecbvt64.txt b/flint/test/testvals/ecbvt64.txt new file mode 100644 index 0000000..ec1cbbe --- /dev/null +++ b/flint/test/testvals/ecbvt64.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt64.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= a92732eb488d8bb98ecd8d95dc9c02e052f250ad369b3849 +TEST= 1 +PT= 800000000000000000000000000000000000000000000000 +CT= 7894247f2c9cea36ee9b148c250b5fda23241ed93898eed3 +TEST= 2 +PT= 400000000000000000000000000000000000000000000000 +CT= d7ffe778c7e53791677036861e43df8b7b943eb3fbe2debb +TEST= 3 +PT= 200000000000000000000000000000000000000000000000 +CT= 72ed97df6c2a1d060652e4659c79cb4caaf13cd908670cf7 +TEST= 4 +PT= 100000000000000000000000000000000000000000000000 +CT= 23700c24e531ea2c4a0b294baff2408b626b317f498bdb2e +TEST= 5 +PT= 080000000000000000000000000000000000000000000000 +CT= 3cb3586ccc5aca78dd6819c14aa652887c09b5175b61d3e0 +TEST= 6 +PT= 040000000000000000000000000000000000000000000000 +CT= 0b78d32fa4c08883379950077be16db1d845def494ab18e5 +TEST= 7 +PT= 020000000000000000000000000000000000000000000000 +CT= 58bdda71c1254464fd66c859bb907d4717e3fc93a0670755 +TEST= 8 +PT= 010000000000000000000000000000000000000000000000 +CT= 26bc5f23d27fb2a48292867f310748bacb0550859db8fd35 +TEST= 9 +PT= 008000000000000000000000000000000000000000000000 +CT= 22b9f54f54d31605abec029e8247094cf4ad263da2e445c6 +TEST= 10 +PT= 004000000000000000000000000000000000000000000000 +CT= 6f77651f95bda6403086ac8bbffa4f11d7af672a517a5444 +TEST= 11 +PT= 002000000000000000000000000000000000000000000000 +CT= c84de416f707f7ff6d18e619f520fef42fd8c4700967c2df +TEST= 12 +PT= 001000000000000000000000000000000000000000000000 +CT= 21662c035c7a56d6b1885f19d98af1be97780518aa56df3d +TEST= 13 +PT= 000800000000000000000000000000000000000000000000 +CT= 7d1c73be6ea4dc334030884e9b99524b0dd9f5d8342dd512 +TEST= 14 +PT= 000400000000000000000000000000000000000000000000 +CT= e15a6ee6c57ddbe56023c978ae1fe3c7be84e4e4e51f3671 +TEST= 15 +PT= 000200000000000000000000000000000000000000000000 +CT= df3f559776b8348b10a85c41e5c401351d10d51fd6fbe473 +TEST= 16 +PT= 000100000000000000000000000000000000000000000000 +CT= b0cebde7ae0ba1bd7d6aa0cbdf93fec54cd3018e49492ed8 +TEST= 17 +PT= 000080000000000000000000000000000000000000000000 +CT= 480a4a3834fe86c75096ffe70539bf9f520b5ba1f15c82a3 +TEST= 18 +PT= 000040000000000000000000000000000000000000000000 +CT= c3ca44999f25d7cf3385b0931b9bb0799a1279a5c5981e08 +TEST= 19 +PT= 000020000000000000000000000000000000000000000000 +CT= 016a280652898a1d3d7d057a9969cd3a4d31b5a662c2359d +TEST= 20 +PT= 000010000000000000000000000000000000000000000000 +CT= a037fb4136840e1dfe9ebcfb828785b9023762a9ae9ef64d +TEST= 21 +PT= 000008000000000000000000000000000000000000000000 +CT= 4f122281b6b9bea3a050464bcca31aab94392fa72b6b30a9 +TEST= 22 +PT= 000004000000000000000000000000000000000000000000 +CT= f211968e40b5734ec95e32d48ec502317e91713abc6f2121 +TEST= 23 +PT= 000002000000000000000000000000000000000000000000 +CT= f34b7d06758c99d8d2c9d7e871ffe87934a713d54083b19b +TEST= 24 +PT= 000001000000000000000000000000000000000000000000 +CT= efcdfb87c05ec3597fe43d10797ad9744355005453475b11 +TEST= 25 +PT= 000000800000000000000000000000000000000000000000 +CT= 15f55c1de09d62207527314c31e70742aa5ee052d88ad86b +TEST= 26 +PT= 000000400000000000000000000000000000000000000000 +CT= 1ce18736c2d0566c36e18ba0333c036eedc7d43eb283822b +TEST= 27 +PT= 000000200000000000000000000000000000000000000000 +CT= 3685a5120b3ac4c2d797bd10ce968881f083706827c3f774 +TEST= 28 +PT= 000000100000000000000000000000000000000000000000 +CT= 21ca53bbd803e453a816a063a7e402b21803eef0d5e3eb99 +TEST= 29 +PT= 000000080000000000000000000000000000000000000000 +CT= 7c74c992bdc2d3174ab0eae605c29247bf505a1e75259b75 +TEST= 30 +PT= 000000040000000000000000000000000000000000000000 +CT= 9a4e387983a3b7cd547b4f48a1af1f662d63c62f2c2bf6e5 +TEST= 31 +PT= 000000020000000000000000000000000000000000000000 +CT= 01efc950b61c1030821fa0142bad54ed2b77b7297cc3cea0 +TEST= 32 +PT= 000000010000000000000000000000000000000000000000 +CT= 0981e972c86185f11d572116daaf8448769eb3bd3dd7c8e1 +TEST= 33 +PT= 000000008000000000000000000000000000000000000000 +CT= d4fd8a1499f488216d28fae9e5d329b16b49a547ae128d67 +TEST= 34 +PT= 000000004000000000000000000000000000000000000000 +CT= 18fe5a8602cff12061ff37366136f4afee9456cdfabbde1b +TEST= 35 +PT= 000000002000000000000000000000000000000000000000 +CT= dae99e0d537b391fda5660cd752796eb7ae444edc1be0b10 +TEST= 36 +PT= 000000001000000000000000000000000000000000000000 +CT= 6d1bdca9390e1749c9f6d053f030a485c4a485eecdb0f322 +TEST= 37 +PT= 000000000800000000000000000000000000000000000000 +CT= fe6a6e960a72f704809ed283334b657004864dc0764af8e7 +TEST= 38 +PT= 000000000400000000000000000000000000000000000000 +CT= b48825c255060c4071056b551f58581c2c295e3c706f440c +TEST= 39 +PT= 000000000200000000000000000000000000000000000000 +CT= 6f0ebf83eb021e017b3a8f4f3fb3f7b01d7ab6b569b305fc +TEST= 40 +PT= 000000000100000000000000000000000000000000000000 +CT= a8cef1daa1f1322c277161456bcbe705be00fed2493b68df +TEST= 41 +PT= 000000000080000000000000000000000000000000000000 +CT= 4cbc9727f447e385dc66bd60994ed8c2b5cf3a2a03f42322 +TEST= 42 +PT= 000000000040000000000000000000000000000000000000 +CT= 2fb40c48e16990bc06565452baa9ff37e3a7a3eb459997ef +TEST= 43 +PT= 000000000020000000000000000000000000000000000000 +CT= b7b569d879cf0eebfca27ebe183784d6c918b5b41477ca7b +TEST= 44 +PT= 000000000010000000000000000000000000000000000000 +CT= 561a8c2569558c6dd15346dbc6bf67a3ff76f5007a6b17cf +TEST= 45 +PT= 000000000008000000000000000000000000000000000000 +CT= 61a6cc245a89e2431f1d3d29ddf0190b0866f528a24d0afe +TEST= 46 +PT= 000000000004000000000000000000000000000000000000 +CT= d3c37043f8767fe7a9c87322ad3d634d2a2064c5405ee87f +TEST= 47 +PT= 000000000002000000000000000000000000000000000000 +CT= cf4374af07d46d63b1ffaa6fd2e22c2e9df301fece14a1f7 +TEST= 48 +PT= 000000000001000000000000000000000000000000000000 +CT= 8ab43d67142ff87ca754b8cec7632fb80553fb735a604aa9 +TEST= 49 +PT= 000000000000800000000000000000000000000000000000 +CT= e42034a67233e6a82ffdf36f3f519ff14864cc9e054df04f +TEST= 50 +PT= 000000000000400000000000000000000000000000000000 +CT= aa895c83b00371d93b2d4ccc03c8010f23aca7d1d8b94894 +TEST= 51 +PT= 000000000000200000000000000000000000000000000000 +CT= 184aae405c2ba2b4836b8652527f4a754175a95e8f65a4cd +TEST= 52 +PT= 000000000000100000000000000000000000000000000000 +CT= 4eb662f3680ba63b3d0d012c025ddd88bfd06809b394dccb +TEST= 53 +PT= 000000000000080000000000000000000000000000000000 +CT= 146652b0a7b4b3b25a9a4f6f360af18315fffdaf17c1150d +TEST= 54 +PT= 000000000000040000000000000000000000000000000000 +CT= 4cdcd710d380fe1b55b2d2238fa267735fca1cb5f3dfab50 +TEST= 55 +PT= 000000000000020000000000000000000000000000000000 +CT= 579d3ef16e0eb3c54db4acea7e128c9e3c8698ed488c22b7 +TEST= 56 +PT= 000000000000010000000000000000000000000000000000 +CT= 4ca256fee45f23d09952beb162fadf91c6ba1eb581e5ba93 +TEST= 57 +PT= 000000000000008000000000000000000000000000000000 +CT= c4f7028b975ec42cf723dd1e91fed8a12cc752c2d3ff786c +TEST= 58 +PT= 000000000000004000000000000000000000000000000000 +CT= 26a81c93ce4ed6e518b97afee30facb18fe858720a6df380 +TEST= 59 +PT= 000000000000002000000000000000000000000000000000 +CT= afe0a4521f21da5c154999d653be08c093e81612afcf022b +TEST= 60 +PT= 000000000000001000000000000000000000000000000000 +CT= 12409952c6ccad85abdeea61a80bf207a051ef1bec5c827c +TEST= 61 +PT= 000000000000000800000000000000000000000000000000 +CT= 8384beb36d9f94c6712335fb44e2fa8937fdf0de0061382c +TEST= 62 +PT= 000000000000000400000000000000000000000000000000 +CT= 9e5a1cb6078cbff9b08d90c925cb79b1fb0a8d15f5de5ce0 +TEST= 63 +PT= 000000000000000200000000000000000000000000000000 +CT= bde30722edb526c435f7ab5e1f9cb0c50ddc16feadca39d1 +TEST= 64 +PT= 000000000000000100000000000000000000000000000000 +CT= 645faf4f17cbdaa6794cc4ff1286325d5a2f72e91e4047ba +TEST= 65 +PT= 000000000000000080000000000000000000000000000000 +CT= a7ea31e95965dd0b75d0851187b0bc8f91539ae4c3852d60 +TEST= 66 +PT= 000000000000000040000000000000000000000000000000 +CT= eb59126c3ccebb8735fd0da4196ee0976916d086dd7b757b +TEST= 67 +PT= 000000000000000020000000000000000000000000000000 +CT= 549b436e5e9ac66a885a93e0ced17dc6eb89e5c389ff7c25 +TEST= 68 +PT= 000000000000000010000000000000000000000000000000 +CT= 3c3abc3757e57f92b0e98dbd88a4db14fe7d30a18368ce73 +TEST= 69 +PT= 000000000000000008000000000000000000000000000000 +CT= bc12c6a2fdb212f5dcc801cfb0865b2d9a0452cc715029c4 +TEST= 70 +PT= 000000000000000004000000000000000000000000000000 +CT= e80f1329b85419b4657a2b7b2bf6c3693e8d9d6c9a3d39dc +TEST= 71 +PT= 000000000000000002000000000000000000000000000000 +CT= 16ffae3a56bd49dbe99718a2b43077134f123a4570213c57 +TEST= 72 +PT= 000000000000000001000000000000000000000000000000 +CT= fa8e6706f9987a494648ffe706ee7f24c1e056c5d1a83d3c +TEST= 73 +PT= 000000000000000000800000000000000000000000000000 +CT= 50f17ee06f8a60f7fe5e17b28ecbe9354dfc4f737f3a1fea +TEST= 74 +PT= 000000000000000000400000000000000000000000000000 +CT= 53f3c6d44748c00c0a52b6b8c0e90410e4b68ce56195950a +TEST= 75 +PT= 000000000000000000200000000000000000000000000000 +CT= 228f1a30bfcd420e65ed25e2d73b55707629194263791804 +TEST= 76 +PT= 000000000000000000100000000000000000000000000000 +CT= f7dbd7b92aec8e058be6dad76d321255852361c1c8057655 +TEST= 77 +PT= 000000000000000000080000000000000000000000000000 +CT= 908fbcdd50be890ee6b4d33aee3f79dfbb42d54768424f5a +TEST= 78 +PT= 000000000000000000040000000000000000000000000000 +CT= b2d20643d882a4cd26f669bf75d8e1737566576a8810626b +TEST= 79 +PT= 000000000000000000020000000000000000000000000000 +CT= 89d3dd8176d41b3b3fb547d97c25e29a701172d2225a683f +TEST= 80 +PT= 000000000000000000010000000000000000000000000000 +CT= 8fa2ef43d40733f5d05a6748a6605c3a70c6f3bb549d8482 +TEST= 81 +PT= 000000000000000000008000000000000000000000000000 +CT= 9e9559cb619be70790bbedede92b942722de4b2c77eff26b +TEST= 82 +PT= 000000000000000000004000000000000000000000000000 +CT= 4eb87f53d01c21cd65030ec7d578521367094143bbc59c8a +TEST= 83 +PT= 000000000000000000002000000000000000000000000000 +CT= 3c8d0ed0931968af6901bbaa6f7e8bb7e2f347f0d8ad6060 +TEST= 84 +PT= 000000000000000000001000000000000000000000000000 +CT= 8dc84d4ff98a93da245968c0a0eb33486f2c904b8fdc4dd2 +TEST= 85 +PT= 000000000000000000000800000000000000000000000000 +CT= 32ed996683bb09678fd2a861f946fdc3eacf49ebffa1a1fc +TEST= 86 +PT= 000000000000000000000400000000000000000000000000 +CT= d25677710d88a346fed8c31fda3594bc716fb734a069311a +TEST= 87 +PT= 000000000000000000000200000000000000000000000000 +CT= 1c96361c49622db56bc9a7097a24a8d4e7cde3c3054de2ab +TEST= 88 +PT= 000000000000000000000100000000000000000000000000 +CT= aa5d6fdff7b85db94ce546a2eab2e69d8f8d2f4baccd5e7d +TEST= 89 +PT= 000000000000000000000080000000000000000000000000 +CT= db5a282a091fa414bf52a3d734925a61e3bc667a67696e01 +TEST= 90 +PT= 000000000000000000000040000000000000000000000000 +CT= 35cbd00473433a99a02161684344af58c26e127d789b8352 +TEST= 91 +PT= 000000000000000000000020000000000000000000000000 +CT= 16e0ba7f870f9b41c4011f6a2475b254e5b9cbae30a20037 +TEST= 92 +PT= 000000000000000000000010000000000000000000000000 +CT= d4f05c75de97f0f6207521f0532673fa545798fb4db07717 +TEST= 93 +PT= 000000000000000000000008000000000000000000000000 +CT= 780510dad3dd18e10b294b2f65a478b897cff329a9a1d75e +TEST= 94 +PT= 000000000000000000000004000000000000000000000000 +CT= e4c52621f5eaa7e913a243d409c22de6a46550084e02c003 +TEST= 95 +PT= 000000000000000000000002000000000000000000000000 +CT= 9aeae258218e1003de6b6d5edbe060a7a17e9ec94659213c +TEST= 96 +PT= 000000000000000000000001000000000000000000000000 +CT= 62d7fc506a17acdcc35d1e59c2a3a8d883eee6d74e7d866c +TEST= 97 +PT= 000000000000000000000000800000000000000000000000 +CT= 47eeb9c1dfa039b4a922797525e85b3727c1785e8f87343a +TEST= 98 +PT= 000000000000000000000000400000000000000000000000 +CT= 10ee87917b32b5a5b897965b707927bc4c1a46d5448f1a89 +TEST= 99 +PT= 000000000000000000000000200000000000000000000000 +CT= 28e65004c22259dde3ac4106aeb3284f3b636bf50dd01d3b +TEST= 100 +PT= 000000000000000000000000100000000000000000000000 +CT= 904c8ce8b1f6fa99faa35347811c0c080e7342c2aa0d1e1a +TEST= 101 +PT= 000000000000000000000000080000000000000000000000 +CT= fa003f8c546d287c5f96d00a065adc0fb8ef5b516b0e2485 +TEST= 102 +PT= 000000000000000000000000040000000000000000000000 +CT= cda13f3939e7b21caa24b1774eb72c2a5d712f464ddc279d +TEST= 103 +PT= 000000000000000000000000020000000000000000000000 +CT= 65940e52ded6d19a8305fe5b7c4b19e8d0fc6b266901a1af +TEST= 104 +PT= 000000000000000000000000010000000000000000000000 +CT= 6c66d0cc4a3f45f3b54e73c80a0588ba8827428fd8148a13 +TEST= 105 +PT= 000000000000000000000000008000000000000000000000 +CT= 1e3e8b59879187d749f556884df8c154e5bf9eba32cc170e +TEST= 106 +PT= 000000000000000000000000004000000000000000000000 +CT= 70085e01ee906bd40a6a11de295824d29ac28a76355d750b +TEST= 107 +PT= 000000000000000000000000002000000000000000000000 +CT= 88ae820e405a01c715dd8ca63cbf07e05a6e0e9fec28e578 +TEST= 108 +PT= 000000000000000000000000001000000000000000000000 +CT= 620505650b3c43c01f35d12a5ea89ac72ec49ca4499d9996 +TEST= 109 +PT= 000000000000000000000000000800000000000000000000 +CT= 4c3832663a8a975e782153d7a52d4425d1baa4d6b31e01a9 +TEST= 110 +PT= 000000000000000000000000000400000000000000000000 +CT= 1e30650fedbd69eab49c29c26d544dd45abc7060bd87e082 +TEST= 111 +PT= 000000000000000000000000000200000000000000000000 +CT= f2de64a2200734666ff9944ea4cf9fe87765980cfce4e3ed +TEST= 112 +PT= 000000000000000000000000000100000000000000000000 +CT= d9e0938d5c85f0c61b0d210ecacc00c442af91c1ff38d0fb +TEST= 113 +PT= 000000000000000000000000000080000000000000000000 +CT= 13a41ab6b197a22d1e4a7dc39e823388b119c8631ad6bcb2 +TEST= 114 +PT= 000000000000000000000000000040000000000000000000 +CT= ad89be1da812c197ab1957d00414e93211ba7ce4bd0127ab +TEST= 115 +PT= 000000000000000000000000000020000000000000000000 +CT= e16b84041c672e39d83a3673d2fc27e8387c9a29884596e0 +TEST= 116 +PT= 000000000000000000000000000010000000000000000000 +CT= a031927d2fd3b5aec62c1d88e83b89d35d1ff8c82231b5b3 +TEST= 117 +PT= 000000000000000000000000000008000000000000000000 +CT= 9fb7ac597440ae0c2fcb4b8454caff81e6191abb07e572ca +TEST= 118 +PT= 000000000000000000000000000004000000000000000000 +CT= 9907aec83dc97569a7c2db423c6068a5e6a9972fbe2a5d6d +TEST= 119 +PT= 000000000000000000000000000002000000000000000000 +CT= 29aa048fca4fe7d44d0d1b03e5fa82a88240e0826e5724c7 +TEST= 120 +PT= 000000000000000000000000000001000000000000000000 +CT= eb07bc18fe4a214f903882d7478d4f23951e0283a6fe3e59 +TEST= 121 +PT= 000000000000000000000000000000800000000000000000 +CT= 3e987755987fbc057cf58593dc08352d4dde96644e644ba8 +TEST= 122 +PT= 000000000000000000000000000000400000000000000000 +CT= d1379681288e0ec0b21fbde8091ee6ffd5d44431c8f730eb +TEST= 123 +PT= 000000000000000000000000000000200000000000000000 +CT= 4ac123dac17625af56d21ee11e3430869285bb593dca8fe4 +TEST= 124 +PT= 000000000000000000000000000000100000000000000000 +CT= 437c6862b346c9366d38317438e422a24ac2e240fc27ee27 +TEST= 125 +PT= 000000000000000000000000000000080000000000000000 +CT= 7375b0a9ebb7da6dff0a40ab88ae7ece1f39be40cd679b30 +TEST= 126 +PT= 000000000000000000000000000000040000000000000000 +CT= 597c5382a6b7ec59501da5940b2e76ba970e821d5eb4b9e6 +TEST= 127 +PT= 000000000000000000000000000000020000000000000000 +CT= 10b2d4915e5eb8578cd07620f918a5b8e2f1aa21206935c6 +TEST= 128 +PT= 000000000000000000000000000000010000000000000000 +CT= 54f96f6c205008a313448864755271498d5cc2fc645e4f29 +TEST= 129 +PT= 000000000000000000000000000000008000000000000000 +CT= 9564393e265799dc3222f2c5332ae425709c728eaae6a273 +TEST= 130 +PT= 000000000000000000000000000000004000000000000000 +CT= b3e28c9ea373b28b6f05cd5bc6bfa342a1b3be74056169cc +TEST= 131 +PT= 000000000000000000000000000000002000000000000000 +CT= 94293f52a10524b1d88a6d00de28ed0540001aa667afa831 +TEST= 132 +PT= 000000000000000000000000000000001000000000000000 +CT= 26c8cc9513158c8bd4e4592f7a302dca800fa455cf7b92f7 +TEST= 133 +PT= 000000000000000000000000000000000800000000000000 +CT= 95c0e6eddeda558f262a315b6400d96d798d5be47cd7a825 +TEST= 134 +PT= 000000000000000000000000000000000400000000000000 +CT= c50b726f8197049d50141c30333646ee63d81acad5cd3066 +TEST= 135 +PT= 000000000000000000000000000000000200000000000000 +CT= 29e5a39bd472dbc86d85b394263d8d08af6aa6cb5be172bc +TEST= 136 +PT= 000000000000000000000000000000000100000000000000 +CT= 9c2ed14ebea46b46d94160f9472770d4b7e00dad170f81a7 +TEST= 137 +PT= 000000000000000000000000000000000080000000000000 +CT= e23364ec9f5e935fd5753021613ddd671137aba6e5b07462 +TEST= 138 +PT= 000000000000000000000000000000000040000000000000 +CT= 538693d7d81a21a132fb2d6780915e6977902bca0bd2cac6 +TEST= 139 +PT= 000000000000000000000000000000000020000000000000 +CT= a71486c81a4eb46ef012b864bc37b334e9aae656b8d143a2 +TEST= 140 +PT= 000000000000000000000000000000000010000000000000 +CT= 1bb31d70d8f6218370355cdb1d1e4a0d467f3977a51974e6 +TEST= 141 +PT= 000000000000000000000000000000000008000000000000 +CT= b067e80b3ea80116bda6c55fb5368e2bd79bb849f2e05781 +TEST= 142 +PT= 000000000000000000000000000000000004000000000000 +CT= e047a39be15c7e4547bde74447b13ca98f441997e217c6ac +TEST= 143 +PT= 000000000000000000000000000000000002000000000000 +CT= 6e64f9c233fe375311be8ddb22280a3c5061e87c88c83227 +TEST= 144 +PT= 000000000000000000000000000000000001000000000000 +CT= 0c813b1d3917a81f453d9fa32b96872fa3f3c729cecf697d +TEST= 145 +PT= 000000000000000000000000000000000000800000000000 +CT= 6021e4bf90f2c59ab7a58001c4ddc79333ab07f17d8048d8 +TEST= 146 +PT= 000000000000000000000000000000000000400000000000 +CT= a37c4431ca4264ff377841d926fc73cd64bb50702d54b4e2 +TEST= 147 +PT= 000000000000000000000000000000000000200000000000 +CT= 8df80b2502ddb7ce5e52a70555088dae9a58ddd7170edc69 +TEST= 148 +PT= 000000000000000000000000000000000000100000000000 +CT= 4e7882819b4e8b87eea5ee1ebc02e37f22ef2bc9d6a37daa +TEST= 149 +PT= 000000000000000000000000000000000000080000000000 +CT= 168bbe4f39c48411495e856c417f8d618519fc38e68e26ea +TEST= 150 +PT= 000000000000000000000000000000000000040000000000 +CT= aaa8e8bde91f75ae84fc10fd1c57a01ca996a737ca9334b1 +TEST= 151 +PT= 000000000000000000000000000000000000020000000000 +CT= 2f71096a7a969cd5399e09aebb6b0118c410e73393c068bf +TEST= 152 +PT= 000000000000000000000000000000000000010000000000 +CT= 120755f4d318eecf7853f34d23c8b9903e88f95989296ad7 +TEST= 153 +PT= 000000000000000000000000000000000000008000000000 +CT= 931abb548a4362b612bc18d8755fa68811d49e2cb0ae661f +TEST= 154 +PT= 000000000000000000000000000000000000004000000000 +CT= 2f8bb260f36c0099fa2ac23888c994d79400ee5b0754c6de +TEST= 155 +PT= 000000000000000000000000000000000000002000000000 +CT= dbb7694d961165cb29f75d4de9f58df9e158201add0769f4 +TEST= 156 +PT= 000000000000000000000000000000000000001000000000 +CT= 8bb43a124210ac5ff250a9de1470347d188eb1a8d763e4b8 +TEST= 157 +PT= 000000000000000000000000000000000000000800000000 +CT= e645d6a860b5d0c5bdfaa214d8666683f0b6f0dc56e37577 +TEST= 158 +PT= 000000000000000000000000000000000000000400000000 +CT= 66748f6afd115447fad159eaeade6ceef6930f2fa49b151c +TEST= 159 +PT= 000000000000000000000000000000000000000200000000 +CT= 250a3829bf0a96b11ca6da2562fa9d00c30fbe2ef8bbe3a9 +TEST= 160 +PT= 000000000000000000000000000000000000000100000000 +CT= 96be8518b9c9f09a81f44da320df756ae35d926b66b18d73 +TEST= 161 +PT= 000000000000000000000000000000000000000080000000 +CT= 2c90ed2c2168d560d6b05868259efc65d5a036499864d765 +TEST= 162 +PT= 000000000000000000000000000000000000000040000000 +CT= 190c171dacc2d9ef9fb80f894b769b3b74edfe66566913fa +TEST= 163 +PT= 000000000000000000000000000000000000000020000000 +CT= 94ed9dd76741b5f80ba16a31b1840fd9f7a708e92657fd79 +TEST= 164 +PT= 000000000000000000000000000000000000000010000000 +CT= 88708d2f75e2fe3cfe2dcc3614aa985dfd737c11363bb863 +TEST= 165 +PT= 000000000000000000000000000000000000000008000000 +CT= 82bb180b682caab038cb7d8348d4e2a828689228e5105152 +TEST= 166 +PT= 000000000000000000000000000000000000000004000000 +CT= 61086b073f9cf701b8e54c8c2ae96f2deb6c10e288eea67f +TEST= 167 +PT= 000000000000000000000000000000000000000002000000 +CT= 05d6df6dda48a3781d55292193bf0a38d49a93fd60c65fd3 +TEST= 168 +PT= 000000000000000000000000000000000000000001000000 +CT= 18c3961f368d8e1b9de20814257873b6530ca2c0ced87e58 +TEST= 169 +PT= 000000000000000000000000000000000000000000800000 +CT= 33c820064d2f08a14c5a54ff4e0da1ee80b957197b0f0304 +TEST= 170 +PT= 000000000000000000000000000000000000000000400000 +CT= 3cf70a7cfb2ed7547cd77641fbe9aa2f754a7b6de3055020 +TEST= 171 +PT= 000000000000000000000000000000000000000000200000 +CT= e24f7d774991b36b39b3c7052b56721008b58d3bc0dc50cb +TEST= 172 +PT= 000000000000000000000000000000000000000000100000 +CT= 16f876c532452a40c3f271edff7544e243cb2df9f1244b53 +TEST= 173 +PT= 000000000000000000000000000000000000000000080000 +CT= 3f2e754344cbb6655433383b1bb593ce507e25f7ef92a044 +TEST= 174 +PT= 000000000000000000000000000000000000000000040000 +CT= c850ae97a3b1bf3deaf449912e9099118727c40358709461 +TEST= 175 +PT= 000000000000000000000000000000000000000000020000 +CT= c55e8514419a1ca84ab32c9d20ae2f9ef1e8da65930c8d09 +TEST= 176 +PT= 000000000000000000000000000000000000000000010000 +CT= ecb6d37cebf3b5e53ef7ca16112ba76b7976591dfe64829d +TEST= 177 +PT= 000000000000000000000000000000000000000000008000 +CT= 9513c89b9bbad239a4411c6050f1a6b096620993472a8de5 +TEST= 178 +PT= 000000000000000000000000000000000000000000004000 +CT= 2b5c2c79ced46ac8661968374a0746f84a13af40d5f7f66c +TEST= 179 +PT= 000000000000000000000000000000000000000000002000 +CT= 7936c178404a1bfd1995a254624eb9e5a3d52f236f558556 +TEST= 180 +PT= 000000000000000000000000000000000000000000001000 +CT= 00e791237b7a0da69e9d45e1a3c7eb71fc2e66de63569f58 +TEST= 181 +PT= 000000000000000000000000000000000000000000000800 +CT= b6e04bcb9127f24345bbec6c2eadc5de8c5d66ac580c401a +TEST= 182 +PT= 000000000000000000000000000000000000000000000400 +CT= 561894f59d1714fa6eb0fdf2427f62eaac53ccc14d49f994 +TEST= 183 +PT= 000000000000000000000000000000000000000000000200 +CT= 17f0e5d28eb5f179f3b2d0bc64c099112bfd88d6cde2a534 +TEST= 184 +PT= 000000000000000000000000000000000000000000000100 +CT= d5e0df6e3308a8174d15e87996ffe167c45534a31061e39b +TEST= 185 +PT= 000000000000000000000000000000000000000000000080 +CT= af66354537572cfd6f6dfb5162168886387104875e7cf391 +TEST= 186 +PT= 000000000000000000000000000000000000000000000040 +CT= ed8ac89ce5bcdaa239d358bee1c559fd248a06ada4c2dc6d +TEST= 187 +PT= 000000000000000000000000000000000000000000000020 +CT= 543308f743d6b746640a1b34b0eb8d7cd6b0aa267de57e6d +TEST= 188 +PT= 000000000000000000000000000000000000000000000010 +CT= 82babc3b9c25ed8dc10eef5d8c63fbed6623f06dc4a42b21 +TEST= 189 +PT= 000000000000000000000000000000000000000000000008 +CT= ba4951de627cb46987620027cfd6bad92be3a15fbc24a758 +TEST= 190 +PT= 000000000000000000000000000000000000000000000004 +CT= 1d50a5cd011263791f5a7fbb7800f4ef088dba216081780b +TEST= 191 +PT= 000000000000000000000000000000000000000000000002 +CT= aa75c62874ebd8a8f7a79d412c53548727c9e2a1205570ca +TEST= 192 +PT= 000000000000000000000000000000000000000000000001 +CT= 697383c2e7b9854c70ce4744aedbbb0f92ba054533b3bd48 diff --git a/flint/test/testvals/ecbvt66.txt b/flint/test/testvals/ecbvt66.txt new file mode 100644 index 0000000..ee150fd --- /dev/null +++ b/flint/test/testvals/ecbvt66.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt66.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= c6348be20007bac4a8bd62890c8147a2432e760e9a9f9ab8 +TEST= 1 +PT= 800000000000000000000000000000000000000000000000 +CT= 1731ef5e3daa190268df945239bb11e0d7b9c48cf5eec4e3 +TEST= 2 +PT= 400000000000000000000000000000000000000000000000 +CT= 4d4a4a0778c29b4929a5040babe96aa5f5f2eb14015788e7 +TEST= 3 +PT= 200000000000000000000000000000000000000000000000 +CT= ea9ea44d66c337f20cc4fdc9d682aa95c225021bc6c51db9 +TEST= 4 +PT= 100000000000000000000000000000000000000000000000 +CT= 3a01be083ad986a220598e45de90f46d6d539871975946da +TEST= 5 +PT= 080000000000000000000000000000000000000000000000 +CT= 99a20c35bc09720cb8d18b8cade704e099c2ea82c0faf123 +TEST= 6 +PT= 040000000000000000000000000000000000000000000000 +CT= 7ed2b2d32b2003cd58dcdbec49bdb2a4a3bedfb8fd269634 +TEST= 7 +PT= 020000000000000000000000000000000000000000000000 +CT= e6d0c04d508546c9a8cd3f11f47b27a4c8ca3d11e27844da +TEST= 8 +PT= 010000000000000000000000000000000000000000000000 +CT= d0b6ca5c4d9fbf97cb7aaa53ce922032fb84a86466e9d22e +TEST= 9 +PT= 008000000000000000000000000000000000000000000000 +CT= fcbf42ee369ceef171b76fc78c6e028559e701ce57004033 +TEST= 10 +PT= 004000000000000000000000000000000000000000000000 +CT= 65cec5e53877560e3f3b4ccc235d2d8aab06878c75d4b354 +TEST= 11 +PT= 002000000000000000000000000000000000000000000000 +CT= 5de6964327d1fef1b04e09d1e9ab2162bc3fa8c488016b70 +TEST= 12 +PT= 001000000000000000000000000000000000000000000000 +CT= 4a502ea9fae65e766b6a3f20cdd6b9be655c3d45c1548502 +TEST= 13 +PT= 000800000000000000000000000000000000000000000000 +CT= 104609debee0c346b0057ce211c815f35a26aa57ceec8058 +TEST= 14 +PT= 000400000000000000000000000000000000000000000000 +CT= ba6dd5e4593951b8b5d9589a0a3aa52f8ae608702863123b +TEST= 15 +PT= 000200000000000000000000000000000000000000000000 +CT= f66fb6f10fc5bb0165a4a691ad677abe29d5df7d46415c6a +TEST= 16 +PT= 000100000000000000000000000000000000000000000000 +CT= bac22182e320ef923b3cc67145593d3cdac7620797502484 +TEST= 17 +PT= 000080000000000000000000000000000000000000000000 +CT= 99182ab77af351f2cba9e881a6e13f6b7b680b7f8d74e0b1 +TEST= 18 +PT= 000040000000000000000000000000000000000000000000 +CT= d654f2cd8efd4b75a166c4b776e3261132dd4b29ad5606c5 +TEST= 19 +PT= 000020000000000000000000000000000000000000000000 +CT= ae43edbe4d3e10e44a1f8cfbe86a0deb1d4421c8360cac46 +TEST= 20 +PT= 000010000000000000000000000000000000000000000000 +CT= d52be485d959955f23c154ddb1064c169a3c9c643ad5c554 +TEST= 21 +PT= 000008000000000000000000000000000000000000000000 +CT= 9e447439c4ab81fb805f400000317a6fbaa670ab6dcfae54 +TEST= 22 +PT= 000004000000000000000000000000000000000000000000 +CT= b614c37108c34ee8d1b64412afd7820b8795cb8381d3e7f6 +TEST= 23 +PT= 000002000000000000000000000000000000000000000000 +CT= c661504e6577f853900c5552619ec77b32224a7982c48176 +TEST= 24 +PT= 000001000000000000000000000000000000000000000000 +CT= b3c8e3c345ce5d3465fcebad79999e638a39452b1e4c183e +TEST= 25 +PT= 000000800000000000000000000000000000000000000000 +CT= cf6df93b0ac033232418838302ef4744980a7050509a1327 +TEST= 26 +PT= 000000400000000000000000000000000000000000000000 +CT= b9d8a3d429e9e453dabb44c5a0e48f396215db441e895dbd +TEST= 27 +PT= 000000200000000000000000000000000000000000000000 +CT= ab3a63b8558d984887b368ae048289a6a24fa35bd322f5a9 +TEST= 28 +PT= 000000100000000000000000000000000000000000000000 +CT= fd36bb6e3f5847f758f9414f3ee7d1f93faf444a66e8dd0a +TEST= 29 +PT= 000000080000000000000000000000000000000000000000 +CT= 9779ace7add42283317834c8be363914b3f0093f87ddabe8 +TEST= 30 +PT= 000000040000000000000000000000000000000000000000 +CT= 5ad318827355916c9eece86b4ba54d07e9259e6bd9b980aa +TEST= 31 +PT= 000000020000000000000000000000000000000000000000 +CT= 7492402cca3a1173bd81f325a9c98f6e8da5af899b642e9a +TEST= 32 +PT= 000000010000000000000000000000000000000000000000 +CT= 6309b4d208e1210163919cc4d093bdf4a5ab7243c6abe63b +TEST= 33 +PT= 000000008000000000000000000000000000000000000000 +CT= 6ba0974bb0fd37449f02a2218ca6961bb8d4590a0a671349 +TEST= 34 +PT= 000000004000000000000000000000000000000000000000 +CT= 02134a0a7cde048dc6fc61252c46ee5d0116597a59881494 +TEST= 35 +PT= 000000002000000000000000000000000000000000000000 +CT= 93b6fa2a579e6878cc5021873b70f6acf9d672d0f7d9a21e +TEST= 36 +PT= 000000001000000000000000000000000000000000000000 +CT= 910e79b713a4069ea829d50b993cea8091782df17ba0ac1f +TEST= 37 +PT= 000000000800000000000000000000000000000000000000 +CT= e378e889056e3b2757b324e8cc5cf87cf1eb27fe29039bbd +TEST= 38 +PT= 000000000400000000000000000000000000000000000000 +CT= b5c7990ce1125992f676a8d79719b14db99238386c891300 +TEST= 39 +PT= 000000000200000000000000000000000000000000000000 +CT= 6aac22fd31e18dee7309a380fe815d4b66015a15033a1574 +TEST= 40 +PT= 000000000100000000000000000000000000000000000000 +CT= e149d898c3089f5f6a498f35e7d30c6abda332ae05a138e4 +TEST= 41 +PT= 000000000080000000000000000000000000000000000000 +CT= d1103798b8fd9bf3c8d2e6fb3af64889273b4ea162abf37b +TEST= 42 +PT= 000000000040000000000000000000000000000000000000 +CT= 278ff212b81b0f177faa529102cba6fa17f8d81f0b076212 +TEST= 43 +PT= 000000000020000000000000000000000000000000000000 +CT= a159b37735cf00fbbe27e48a5ad6fe4a524ac17623a945df +TEST= 44 +PT= 000000000010000000000000000000000000000000000000 +CT= 632bd1d142b267db939ab7ad279c749ba134c5284589176a +TEST= 45 +PT= 000000000008000000000000000000000000000000000000 +CT= 954b18a4d533fd00c8d65344af72bd9ad2f3539dacfb5f2a +TEST= 46 +PT= 000000000004000000000000000000000000000000000000 +CT= 59814c4aaaabd2ee0f8a08fde6e8a871eb9350e0dc33cbc5 +TEST= 47 +PT= 000000000002000000000000000000000000000000000000 +CT= 48bd9a35a5e7131bd4e88dbe53e046fcbdc5df19e473ea07 +TEST= 48 +PT= 000000000001000000000000000000000000000000000000 +CT= f53ea188028322a6887bbbc3918216173ec9d79dac97db1b +TEST= 49 +PT= 000000000000800000000000000000000000000000000000 +CT= 55835b341cb1ad39ac617e3b9a17b2988cfc1e1e3c972fff +TEST= 50 +PT= 000000000000400000000000000000000000000000000000 +CT= a51203cdd1306aad73ccb13c5cda9101187e3938ea8cc25b +TEST= 51 +PT= 000000000000200000000000000000000000000000000000 +CT= 1edb469123f29a57eca3252bcb33e61a367f18fa89e887b4 +TEST= 52 +PT= 000000000000100000000000000000000000000000000000 +CT= bd16074619fdcd889fc29cfb073d6f1abdd0d0d6303221e4 +TEST= 53 +PT= 000000000000080000000000000000000000000000000000 +CT= d5dec9ae95d646a13da1bcda0739b60141effcc18c3757f9 +TEST= 54 +PT= 000000000000040000000000000000000000000000000000 +CT= 528894aa8d4e57d33b936be1875746e913ec8445c125fd89 +TEST= 55 +PT= 000000000000020000000000000000000000000000000000 +CT= a9f16854e5a8020c0370fc8ad4290d390656445c902ae012 +TEST= 56 +PT= 000000000000010000000000000000000000000000000000 +CT= 419cdcda8285b8b54e5fb00610e9457690767d2cac5c4b5e +TEST= 57 +PT= 000000000000008000000000000000000000000000000000 +CT= 44546002309713c3191ad2e76bb8fd3eaba7d5d4bfafe4e9 +TEST= 58 +PT= 000000000000004000000000000000000000000000000000 +CT= 4f2445373f100635aae79c147687ebe01d94ea0d26378957 +TEST= 59 +PT= 000000000000002000000000000000000000000000000000 +CT= 218bbf381e4d09604e7122506b2fe7ae686d1b323b366612 +TEST= 60 +PT= 000000000000001000000000000000000000000000000000 +CT= 805a4d358cd978806ce8b8438b08df2137b3e5ddc0209774 +TEST= 61 +PT= 000000000000000800000000000000000000000000000000 +CT= 1e2c7987e16100b91353e298264c179e601b8394178606ae +TEST= 62 +PT= 000000000000000400000000000000000000000000000000 +CT= a95049ff2132c05a2f1634ec01d4e685e73b2cedc4e39edd +TEST= 63 +PT= 000000000000000200000000000000000000000000000000 +CT= 3ed03058911ff2f870d3f8f767d550b2c285a065c7d30d2d +TEST= 64 +PT= 000000000000000100000000000000000000000000000000 +CT= dab1155b404345270376ad786ded813b7f9febbf2376980b +TEST= 65 +PT= 000000000000000080000000000000000000000000000000 +CT= bd64808678ca7d82b9eda2d9e91969364b90c946500e507c +TEST= 66 +PT= 000000000000000040000000000000000000000000000000 +CT= eb1db22062b4138e434b27dc70711dbf0d1d80905435c5f6 +TEST= 67 +PT= 000000000000000020000000000000000000000000000000 +CT= a66db464c3f376b5783f5566b15ff689b87e284a337e5bb0 +TEST= 68 +PT= 000000000000000010000000000000000000000000000000 +CT= 82077bf644a5f52b8d4956db043d9374ce2ec331efc80b3e +TEST= 69 +PT= 000000000000000008000000000000000000000000000000 +CT= 0c559191226d0aa9399ca3b3529b2e98fb07073d355bb3a6 +TEST= 70 +PT= 000000000000000004000000000000000000000000000000 +CT= b33cbb7d3a13624d54c466b0d2186b9e9fb54ddcfda36473 +TEST= 71 +PT= 000000000000000002000000000000000000000000000000 +CT= 7bd1989930b04a58b0ff55d156c708c2e65af62145b71d60 +TEST= 72 +PT= 000000000000000001000000000000000000000000000000 +CT= f8d56b09a50a92d3f2eab48be010397f9a304c0b59720896 +TEST= 73 +PT= 000000000000000000800000000000000000000000000000 +CT= 9afeb52bd0a11efdf379adf952d53f59cd30db26cf4b872e +TEST= 74 +PT= 000000000000000000400000000000000000000000000000 +CT= f94f0c081e17f527a2207bf90b6d13d7376710483d5beb3f +TEST= 75 +PT= 000000000000000000200000000000000000000000000000 +CT= badcbfa21889f8c98f8dc9fc50ab5168d8e920397ef1c0ac +TEST= 76 +PT= 000000000000000000100000000000000000000000000000 +CT= 90b72fa52760efb1aff0255b2548f4644f40f68f1192459d +TEST= 77 +PT= 000000000000000000080000000000000000000000000000 +CT= e7b6e220fd683f76335057503e547f3b4bc001a62ba94dcb +TEST= 78 +PT= 000000000000000000040000000000000000000000000000 +CT= 6cf7bd7c0e2e7836237b8d8cb40b09fb3756805bced73310 +TEST= 79 +PT= 000000000000000000020000000000000000000000000000 +CT= 83420a406dc79fc1d7caf7a7c11bd5f5239553d9bf81173b +TEST= 80 +PT= 000000000000000000010000000000000000000000000000 +CT= b2db9e6e7d2b2660e7dd0474d81a7e65e3c27ba77629e379 +TEST= 81 +PT= 000000000000000000008000000000000000000000000000 +CT= 28ec1fa0f1f0bca600925a4f4947fc6ce2c94f2889f9762b +TEST= 82 +PT= 000000000000000000004000000000000000000000000000 +CT= 3e7d037cd8a2bbff63d216b2b5acde0735ce56cf968ce4b3 +TEST= 83 +PT= 000000000000000000002000000000000000000000000000 +CT= 826510e3ce36d2007e05e30c6a93a0ea19a85e303d476d73 +TEST= 84 +PT= 000000000000000000001000000000000000000000000000 +CT= b71f51b225667f68f98e78f5a0c056bf1254748c63cf1eb7 +TEST= 85 +PT= 000000000000000000000800000000000000000000000000 +CT= 2f0b994023ac5c555c6880095dc1ced294829a075ba4f874 +TEST= 86 +PT= 000000000000000000000400000000000000000000000000 +CT= 5ad0149775e869b21c4458c44a924ef02234d69f33b217d1 +TEST= 87 +PT= 000000000000000000000200000000000000000000000000 +CT= e5093f34358002238bd35f565a42af8ea02bae3ca1fc2cce +TEST= 88 +PT= 000000000000000000000100000000000000000000000000 +CT= 5030760b6d37db6f05735d628e73f3c27852de2fbf9e10b0 +TEST= 89 +PT= 000000000000000000000080000000000000000000000000 +CT= f3124f697a8c68fae9b07d0b0fd9336959d4e1aa004b48e4 +TEST= 90 +PT= 000000000000000000000040000000000000000000000000 +CT= ca550503e89a4384d7af6e33fe61c32f9214fdd458bad41f +TEST= 91 +PT= 000000000000000000000020000000000000000000000000 +CT= bdd1f84d1e851ebf82ee17a92f9fb7941c008a278897aec1 +TEST= 92 +PT= 000000000000000000000010000000000000000000000000 +CT= a2b18c1140fc8c1c90aa1df5a5939e1543a63c98de924eaa +TEST= 93 +PT= 000000000000000000000008000000000000000000000000 +CT= f379a2ef318fbaf97da2bfbb70fa89f987fa3fc4a29d75f1 +TEST= 94 +PT= 000000000000000000000004000000000000000000000000 +CT= 69e29f59633921de86e4a4e7a2c7b3e5c12ffd2fc608fa51 +TEST= 95 +PT= 000000000000000000000002000000000000000000000000 +CT= 69c11a6f4eb698a0e7d2b62c35f9512040505593b7c2abac +TEST= 96 +PT= 000000000000000000000001000000000000000000000000 +CT= f9986fd9d6c5bf8e2167db84a79354e274fb96ad044217d0 +TEST= 97 +PT= 000000000000000000000000800000000000000000000000 +CT= 18b92e56e892df910c5a419f9d1bd886d11e9c763f55f00d +TEST= 98 +PT= 000000000000000000000000400000000000000000000000 +CT= 64a4b143e384d93174532fa692fd0b5299e1bfaf26a22431 +TEST= 99 +PT= 000000000000000000000000200000000000000000000000 +CT= 408b2f87e54268aea5976cb3b660c492982cea8b2747b27c +TEST= 100 +PT= 000000000000000000000000100000000000000000000000 +CT= 7a0efc61e34b09659764c8b0313a57817691acdd3b695d92 +TEST= 101 +PT= 000000000000000000000000080000000000000000000000 +CT= 1c86ba1f9c7f9ec42b2d4facae451c2b11469c9180b5e0cb +TEST= 102 +PT= 000000000000000000000000040000000000000000000000 +CT= 9f4d1ad565b07174f36ba870b98b0623a7d552d7d45a4ce3 +TEST= 103 +PT= 000000000000000000000000020000000000000000000000 +CT= bc22211835da4e1657203d486816637509ce949ed27b4460 +TEST= 104 +PT= 000000000000000000000000010000000000000000000000 +CT= 69d3951c6124773d93581408f50b2167e5e0c2c970b2c7e8 +TEST= 105 +PT= 000000000000000000000000008000000000000000000000 +CT= fd31fa1654c967de3fbb31ee4fa43dd0cf1ea0d94b8f1d9d +TEST= 106 +PT= 000000000000000000000000004000000000000000000000 +CT= 4df34180b9571bceb4e2b660e80a24ba312fc6b0bf9cab95 +TEST= 107 +PT= 000000000000000000000000002000000000000000000000 +CT= 36e555687ab4a7e5b4836280050e5c968744142f85987b3d +TEST= 108 +PT= 000000000000000000000000001000000000000000000000 +CT= 9d357003abd04e54e9afe2aa20e43243a0846b695295e911 +TEST= 109 +PT= 000000000000000000000000000800000000000000000000 +CT= 370df08a5e8dbc993555976c3d3803bba8b6dca2dc64fc18 +TEST= 110 +PT= 000000000000000000000000000400000000000000000000 +CT= 2fea0a7c7636e01fc93af8727d1fa6ce676f4103a6893606 +TEST= 111 +PT= 000000000000000000000000000200000000000000000000 +CT= b727ec965ddd71e2ea39ef02ed825eb04deaab3e5e040226 +TEST= 112 +PT= 000000000000000000000000000100000000000000000000 +CT= 9599ccfaea7398d8e1bab549e03f852d65d304276691623d +TEST= 113 +PT= 000000000000000000000000000080000000000000000000 +CT= d23965132c8e2bb6e52d43f1ba9681faea1cc3f790e1eacb +TEST= 114 +PT= 000000000000000000000000000040000000000000000000 +CT= 9a96e9e598dd3632bbbeb22915ae45c968639b87427e4084 +TEST= 115 +PT= 000000000000000000000000000020000000000000000000 +CT= fc866848ecc8193997af2b148896ece5d04999e2c0bea0d9 +TEST= 116 +PT= 000000000000000000000000000010000000000000000000 +CT= 0aac7c981118e3474d92731bb4935a57f32ee5c55074f3ee +TEST= 117 +PT= 000000000000000000000000000008000000000000000000 +CT= 51c2ef30a49537da821db5a79267fce263517536a2c3854e +TEST= 118 +PT= 000000000000000000000000000004000000000000000000 +CT= e81044af9efa40e9dd9d2367011480a9af1cc7b514ae5534 +TEST= 119 +PT= 000000000000000000000000000002000000000000000000 +CT= 85f20efd90a15eb29b63742cec999d012f14fcaf89858ae9 +TEST= 120 +PT= 000000000000000000000000000001000000000000000000 +CT= baed7866d0bb69df39575b370aaec20754a559601e8c7afd +TEST= 121 +PT= 000000000000000000000000000000800000000000000000 +CT= fd2476e4e9e334c966f198b41d04b7f55cfede4c11fc17e3 +TEST= 122 +PT= 000000000000000000000000000000400000000000000000 +CT= 4a898ce7765241a01f2111b5e4cd92b48f8545b548d6b1bd +TEST= 123 +PT= 000000000000000000000000000000200000000000000000 +CT= 7893d09ac4e3bb2f66fcca345f36c973bee982265a2a4ac0 +TEST= 124 +PT= 000000000000000000000000000000100000000000000000 +CT= b13002fe55bad09a9466af4e3bdcfa2af22e88c1d741f2d3 +TEST= 125 +PT= 000000000000000000000000000000080000000000000000 +CT= db05124b6b26343ebfefdfc9d790d0ee9b344a59c341cbb0 +TEST= 126 +PT= 000000000000000000000000000000040000000000000000 +CT= 4698feb81986fda984e32ba77636e663646d0774fc85cabf +TEST= 127 +PT= 000000000000000000000000000000020000000000000000 +CT= 1a04837ae451bda5b1c3a75ad536ee418a64f891102c27db +TEST= 128 +PT= 000000000000000000000000000000010000000000000000 +CT= 37698d62a4b20f4a3211548f5b76d593e26f3df215276f2d +TEST= 129 +PT= 000000000000000000000000000000008000000000000000 +CT= 8a8c122f8686f8ebe6829682acc708e67e55c49259509982 +TEST= 130 +PT= 000000000000000000000000000000004000000000000000 +CT= 75eac8dad5c330c9c5a3ffe620bd1d8fa0690087575bf60b +TEST= 131 +PT= 000000000000000000000000000000002000000000000000 +CT= ec678d7b847db0248d1357b3f9f4d381ffde6671d94b2889 +TEST= 132 +PT= 000000000000000000000000000000001000000000000000 +CT= c7b2f9de1ffb47fa2eb9854761cc532af008910e590af5e7 +TEST= 133 +PT= 000000000000000000000000000000000800000000000000 +CT= 59ba721fd1453750acec6d3a205503d481135f59917cea57 +TEST= 134 +PT= 000000000000000000000000000000000400000000000000 +CT= 42990135c6e0ace39b8607ef825bc9afb710b8f73e3a3f81 +TEST= 135 +PT= 000000000000000000000000000000000200000000000000 +CT= 05d24fddce774d93b38c75e74746c8e58d80c5df6fb5e576 +TEST= 136 +PT= 000000000000000000000000000000000100000000000000 +CT= e0a4252d0b1ef4db042bd1d207bcb1e17550817939936683 +TEST= 137 +PT= 000000000000000000000000000000000080000000000000 +CT= d722c518bc79a73b2c7eb479ff69be5f3ce4edbe09d8ca06 +TEST= 138 +PT= 000000000000000000000000000000000040000000000000 +CT= 4f59eed7e693d63254e410ae98897be75dd6b3d8c1f65276 +TEST= 139 +PT= 000000000000000000000000000000000020000000000000 +CT= 4c83c687217b079673f019ac3a71fe706209f91b04c0743c +TEST= 140 +PT= 000000000000000000000000000000000010000000000000 +CT= dbfcc877701d71bb3f5dc148805bbb3e75d6782f979493ff +TEST= 141 +PT= 000000000000000000000000000000000008000000000000 +CT= 8bd31f1423c8df445707ec50e865a3351e14bcdab1770594 +TEST= 142 +PT= 000000000000000000000000000000000004000000000000 +CT= 1970a119ae24c6f895a1c597a9feddaa4f74af5aa781fa8b +TEST= 143 +PT= 000000000000000000000000000000000002000000000000 +CT= 37b7f14f867d24f7a24cf3d845571608b234db91235ab417 +TEST= 144 +PT= 000000000000000000000000000000000001000000000000 +CT= 41b6b8073ac69a62c70447a178d0396e39d3391aea9d1fa5 +TEST= 145 +PT= 000000000000000000000000000000000000800000000000 +CT= 85c9ec0cf6c8d24239f2d308ab2998252385d1bb7d5801d4 +TEST= 146 +PT= 000000000000000000000000000000000000400000000000 +CT= 04a431e61cbeb2f6b17a56e8901bb374825e8981e94ac3bd +TEST= 147 +PT= 000000000000000000000000000000000000200000000000 +CT= eb63379329aa18457eb19ea3fa5208830be2059f6664fb2b +TEST= 148 +PT= 000000000000000000000000000000000000100000000000 +CT= d224dca68857f0978fe514f000f5bcd610af3f9d786876bd +TEST= 149 +PT= 000000000000000000000000000000000000080000000000 +CT= 857113c915b614ad1a32b6afacc6202d79372ae1f72b30bd +TEST= 150 +PT= 000000000000000000000000000000000000040000000000 +CT= 06bd6fe32969d2e24a0d268e0b1f8e8398b6d9f2d060a4b2 +TEST= 151 +PT= 000000000000000000000000000000000000020000000000 +CT= b1ad7e5d04b7a887772836aba7ba87e51ad0a32d1b609652 +TEST= 152 +PT= 000000000000000000000000000000000000010000000000 +CT= 07ed5af3f20378bb5cd4436c716a01df232032019443646e +TEST= 153 +PT= 000000000000000000000000000000000000008000000000 +CT= 2b0276a06425722f9e342bf8d3f8e79bc52a5bb81feee434 +TEST= 154 +PT= 000000000000000000000000000000000000004000000000 +CT= fe1a11c3f143cc06d94ce87480ae731d3d1ad9eb2c93e36a +TEST= 155 +PT= 000000000000000000000000000000000000002000000000 +CT= b526abac99fd6fe3de3d7ca68d182ce0770fb315838ce640 +TEST= 156 +PT= 000000000000000000000000000000000000001000000000 +CT= 788ccdf7d7c2e647ed329ea5e4d18fcc2ef3e66132af64d9 +TEST= 157 +PT= 000000000000000000000000000000000000000800000000 +CT= 8bde86c666fc9089546ea9767cc5151dbd73ded608632d2a +TEST= 158 +PT= 000000000000000000000000000000000000000400000000 +CT= c3b690142b52cec235316423efb7cde8f9ca75e9144b3b82 +TEST= 159 +PT= 000000000000000000000000000000000000000200000000 +CT= 6d510e16005f120a877dde3eac6973137a1959c9fdb83995 +TEST= 160 +PT= 000000000000000000000000000000000000000100000000 +CT= a1087ea8d34d07e4238597ce712727ed46368ff913bd54d2 +TEST= 161 +PT= 000000000000000000000000000000000000000080000000 +CT= 9d91ac886b037acc9cca099cedd6b9205d669c0a41a6f55d +TEST= 162 +PT= 000000000000000000000000000000000000000040000000 +CT= db40f4e2851b77051f6ec6e7febb204648b72b7ae4706035 +TEST= 163 +PT= 000000000000000000000000000000000000000020000000 +CT= b51acda56957ee7321c00c1fa62f8a85b0092c4926458d47 +TEST= 164 +PT= 000000000000000000000000000000000000000010000000 +CT= 635fff72e20dd43255e5d8621dc28af97c6c635b27ecdffa +TEST= 165 +PT= 000000000000000000000000000000000000000008000000 +CT= 802aff648218f747f5fde4097e141c28398e09b750a09121 +TEST= 166 +PT= 000000000000000000000000000000000000000004000000 +CT= 42de6ec44ea818072ebbc55d533d9740aff5b2e489ada89a +TEST= 167 +PT= 000000000000000000000000000000000000000002000000 +CT= 069b2055dd9c9d250c6d1d099ac351784b6b64948eb98b9c +TEST= 168 +PT= 000000000000000000000000000000000000000001000000 +CT= 19c96c3534d70b0d03d6d47dd6fa6b9204641b6234bd66e2 +TEST= 169 +PT= 000000000000000000000000000000000000000000800000 +CT= 39288eb7ebe89a6174037d40b33947d3ed335f8694ad79f9 +TEST= 170 +PT= 000000000000000000000000000000000000000000400000 +CT= 31a032c28e0a685b472b98aa8d54bfb294622ee5c04ac410 +TEST= 171 +PT= 000000000000000000000000000000000000000000200000 +CT= 1c5837a365612fb77b184c4f414b54a46cee4f73a6bd47f2 +TEST= 172 +PT= 000000000000000000000000000000000000000000100000 +CT= 5643330b93549ecb657498a4bb161c7069ceba84d90073c5 +TEST= 173 +PT= 000000000000000000000000000000000000000000080000 +CT= b89efd849f57857d5cd89d608368a7718645c04a729d575c +TEST= 174 +PT= 000000000000000000000000000000000000000000040000 +CT= f098cdc3e9753642700f2c745c41bbf833470d30a6065d23 +TEST= 175 +PT= 000000000000000000000000000000000000000000020000 +CT= 4c3ee31937ac55c5db9496f9e8fec9c986461a2039a74798 +TEST= 176 +PT= 000000000000000000000000000000000000000000010000 +CT= de38278a433dba1c677c238fe9dc91003481d6b8f3c2e866 +TEST= 177 +PT= 000000000000000000000000000000000000000000008000 +CT= b56b0f381712a79e0fdbe45a7c9f824bbf2e9a89c5dfd8f9 +TEST= 178 +PT= 000000000000000000000000000000000000000000004000 +CT= 17d6f09cb07584b0758af15dced84333d408e053e14772c9 +TEST= 179 +PT= 000000000000000000000000000000000000000000002000 +CT= 380a834440f63c2751442ce4ecc41cc50c479ab442ef5630 +TEST= 180 +PT= 000000000000000000000000000000000000000000001000 +CT= df1ffda1dd8860d16f55b149ce297e1846b123edbdadfb36 +TEST= 181 +PT= 000000000000000000000000000000000000000000000800 +CT= 5ca1a40a8bbb464056a097db64992855514d5c13d9beed55 +TEST= 182 +PT= 000000000000000000000000000000000000000000000400 +CT= ba6dbf0e70e9779626ea6652596b373a0f7e1cdbf4b3ea4d +TEST= 183 +PT= 000000000000000000000000000000000000000000000200 +CT= 2dbdefbd059cd6c9cd15ba47e2356d4e5d151358856d0f7d +TEST= 184 +PT= 000000000000000000000000000000000000000000000100 +CT= 955a35c8325d916f86082bcc6c120f7b3054106f662164fc +TEST= 185 +PT= 000000000000000000000000000000000000000000000080 +CT= 5e2858e75188dfb3b5d49ab94d69a098814799857230ab7b +TEST= 186 +PT= 000000000000000000000000000000000000000000000040 +CT= 9e59302d2a4f8d9bcce05f103a85152741fcc7beabc4efad +TEST= 187 +PT= 000000000000000000000000000000000000000000000020 +CT= adecab1fe3685e61fb5f55baf05b3e321d1ab27ab0dcec67 +TEST= 188 +PT= 000000000000000000000000000000000000000000000010 +CT= 2ca42a59672226caa25141002fa33f95fec0b2665fcabd6d +TEST= 189 +PT= 000000000000000000000000000000000000000000000008 +CT= 948e7c567e38204feea7b6babe55da62e83ac2a5385c47d1 +TEST= 190 +PT= 000000000000000000000000000000000000000000000004 +CT= 9c5d77aed611929e67c4919b0de2b2d1725b1afa1c50f1e1 +TEST= 191 +PT= 000000000000000000000000000000000000000000000002 +CT= 8d087523eeed5fb1c3a0dfe9d4638ef7a55cf4031ce16bd8 +TEST= 192 +PT= 000000000000000000000000000000000000000000000001 +CT= cdaee1ce3361ed5b6ed38043105868613ad03eccde1c44a2 diff --git a/flint/test/testvals/ecbvt68.txt b/flint/test/testvals/ecbvt68.txt new file mode 100644 index 0000000..143f352 --- /dev/null +++ b/flint/test/testvals/ecbvt68.txt @@ -0,0 +1,590 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt68.txt +============================================== + +BLOCKSIZE=192 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 000000000000000000000000000000000000000000000000 +CT= 17004e806faef168fc9cd56f98f070982075c70c8132b945 +TEST= 1 +PT= 800000000000000000000000000000000000000000000000 +CT= d5abe078ffd84b955dd1296b5b55fcaee61a4149b3126274 +TEST= 2 +PT= 400000000000000000000000000000000000000000000000 +CT= 4c75599812d9d9ea9df46c22060aedf09c335ef8aec66bd7 +TEST= 3 +PT= 200000000000000000000000000000000000000000000000 +CT= 589f6a6ba500d8d5598595957d66922328b6a9e0d744ecc0 +TEST= 4 +PT= 100000000000000000000000000000000000000000000000 +CT= f281c3faed9ff92f6e44f98b2d67ac1f011c86af1e4d6096 +TEST= 5 +PT= 080000000000000000000000000000000000000000000000 +CT= bcbcc6ed79ce1013fd0338f05445d5bfe5c61d38378f217f +TEST= 6 +PT= 040000000000000000000000000000000000000000000000 +CT= 2178bd4d6b90e4b1b675c13655bbaec631dd2ca0192f68c4 +TEST= 7 +PT= 020000000000000000000000000000000000000000000000 +CT= db1f06603c62345e6bdf29cd81ca08dc7b1aef7c9b5b25c5 +TEST= 8 +PT= 010000000000000000000000000000000000000000000000 +CT= 0fb579b6b6cfc40ff1c209a5173cedf5153fc5ab47e51c64 +TEST= 9 +PT= 008000000000000000000000000000000000000000000000 +CT= df209a0f1710b9a4af6e00b833246fa52234d7031a8b2860 +TEST= 10 +PT= 004000000000000000000000000000000000000000000000 +CT= 5a7dbfbf87d63627f83c61dbb1b98c05e3a9b9329620d993 +TEST= 11 +PT= 002000000000000000000000000000000000000000000000 +CT= d3852d96deb7057e0c19593b686574ff12237fdd21240c6f +TEST= 12 +PT= 001000000000000000000000000000000000000000000000 +CT= 9fde46deca000bf7d54356f63eb5940764d6ceb1123ffc6e +TEST= 13 +PT= 000800000000000000000000000000000000000000000000 +CT= d0fbadebb0375aab3a0d019b35ec37ce3ebf7cd668df03d8 +TEST= 14 +PT= 000400000000000000000000000000000000000000000000 +CT= 2a67445ba607af8c472c0d6594f67cf16c04d2fd90c6986f +TEST= 15 +PT= 000200000000000000000000000000000000000000000000 +CT= 366e936886c1042e2417c49a20e0b96d587051983b9dbf05 +TEST= 16 +PT= 000100000000000000000000000000000000000000000000 +CT= f3b03b19c37edef0021dbe30bb00fa5f5ab8b4c2caf4818b +TEST= 17 +PT= 000080000000000000000000000000000000000000000000 +CT= 4e178eb7778edcbe248e96895b9912185bdfd81c05238e49 +TEST= 18 +PT= 000040000000000000000000000000000000000000000000 +CT= b3cd2e6ef842582cf2edab3efaa78e34dad462e1306f3a0b +TEST= 19 +PT= 000020000000000000000000000000000000000000000000 +CT= db45bfe1c1b81cfabe6f9019a749f5c27406e5856a4eb066 +TEST= 20 +PT= 000010000000000000000000000000000000000000000000 +CT= 1278e87e2f20d2b38125a7c1a793c1011a07ea9a6637604d +TEST= 21 +PT= 000008000000000000000000000000000000000000000000 +CT= 63ae6ec6ba44743eb06dbad59715513993fb4013a304e0c9 +TEST= 22 +PT= 000004000000000000000000000000000000000000000000 +CT= c4e0fb85cb9fe79a85c9c4bc2d9401555b6920fde61918e9 +TEST= 23 +PT= 000002000000000000000000000000000000000000000000 +CT= df3bb60c61b7fbfc0eff9d1e1124cedc5e1f7a20ef9cb858 +TEST= 24 +PT= 000001000000000000000000000000000000000000000000 +CT= 2bd9c13622b4fbfddb2ab36bb01f8377b847cb938a902f05 +TEST= 25 +PT= 000000800000000000000000000000000000000000000000 +CT= 39b316b8848452d4a16ab5d83689f14bd38df22a189df53c +TEST= 26 +PT= 000000400000000000000000000000000000000000000000 +CT= 75f6d230eb6d4bf7be298ed2003b552e668b5283e1b0c3a3 +TEST= 27 +PT= 000000200000000000000000000000000000000000000000 +CT= 75ff57e1da915f9a801a55df901b76bb20df77bdeaa17ee1 +TEST= 28 +PT= 000000100000000000000000000000000000000000000000 +CT= d163371c180fb9ed4e5fd419dd06227dd3544e89e49332c1 +TEST= 29 +PT= 000000080000000000000000000000000000000000000000 +CT= e28352389430ce7518886a852409e31bf101b6d335884210 +TEST= 30 +PT= 000000040000000000000000000000000000000000000000 +CT= d1da8b38e3e16ad2e05010db9f319c44436c485dc22d8f6a +TEST= 31 +PT= 000000020000000000000000000000000000000000000000 +CT= 29c98ac1e237be9f81e84b75a6fafb1548ef9b5d569767de +TEST= 32 +PT= 000000010000000000000000000000000000000000000000 +CT= fbf5845148ee0c1997c86ab5a4076c4b795cf83168e55827 +TEST= 33 +PT= 000000008000000000000000000000000000000000000000 +CT= e8be1ccd25f82ece51cd3ec87973705c6c46f95765cc3211 +TEST= 34 +PT= 000000004000000000000000000000000000000000000000 +CT= 4a12bb0a8a330b29503872115139c8ec7e70396d2af69932 +TEST= 35 +PT= 000000002000000000000000000000000000000000000000 +CT= 2a8b10f3802ecfa455f910098f1cd9bad2b7c32b56c30957 +TEST= 36 +PT= 000000001000000000000000000000000000000000000000 +CT= b1efa8484ced40f6f037b54f18475d879b1fc31496dfda0f +TEST= 37 +PT= 000000000800000000000000000000000000000000000000 +CT= 9ae3a021c00dbe5868b8eb6cc51ce68cc76dcc8b3ab8a0c8 +TEST= 38 +PT= 000000000400000000000000000000000000000000000000 +CT= 5fb3eb2a67ae76d9d66f61259e443e72637de2b09311d05c +TEST= 39 +PT= 000000000200000000000000000000000000000000000000 +CT= 743721dc08cba1ce77a414ef3abdbb35aa02ff9d24b1f7ed +TEST= 40 +PT= 000000000100000000000000000000000000000000000000 +CT= 508e9bd2c05aa311a4f07cf8fbbe218b8f418ab7191e3cf9 +TEST= 41 +PT= 000000000080000000000000000000000000000000000000 +CT= 155c8b887a494efa5884438588d4caa832980c8f1fe9b16b +TEST= 42 +PT= 000000000040000000000000000000000000000000000000 +CT= 1c60009adc363044da33265664ef23a6b4afa27d0b349c85 +TEST= 43 +PT= 000000000020000000000000000000000000000000000000 +CT= 7462313daac998dffda3d2ba99cf8602c193b98f38c67046 +TEST= 44 +PT= 000000000010000000000000000000000000000000000000 +CT= 980a748429401502dbb19e9b6efb4ea57bd42ef9597fdcc1 +TEST= 45 +PT= 000000000008000000000000000000000000000000000000 +CT= 37b36407579dc15e264a37b202751378f32280d0f1bd3198 +TEST= 46 +PT= 000000000004000000000000000000000000000000000000 +CT= 7db854642cca7629bd52c69701ce664066c844632dd97c71 +TEST= 47 +PT= 000000000002000000000000000000000000000000000000 +CT= edffebaa5221c9042f3b42dd3cea569f8734af38a220a640 +TEST= 48 +PT= 000000000001000000000000000000000000000000000000 +CT= 387bc0403adbeb35b8a58461f782823db6fc20f6c8f4af02 +TEST= 49 +PT= 000000000000800000000000000000000000000000000000 +CT= 63b6470813c6f0467788a9a7af83a6848f4c5c40d91b25e3 +TEST= 50 +PT= 000000000000400000000000000000000000000000000000 +CT= 1a34970353f8cf4fd170a214fa069fa31350c81fbcf89ca9 +TEST= 51 +PT= 000000000000200000000000000000000000000000000000 +CT= 26e573d8570b505eaea9d1f4f0867f969c64658bcad15d75 +TEST= 52 +PT= 000000000000100000000000000000000000000000000000 +CT= 337fd6fe2627f3942dc3ad66487968a25437f68ea9b36178 +TEST= 53 +PT= 000000000000080000000000000000000000000000000000 +CT= 73cb19a4075df227ea6eed9ef2891809157c892f6c5bf1c9 +TEST= 54 +PT= 000000000000040000000000000000000000000000000000 +CT= 8f8a1c0c17695f0029906dea7d42acd824bcdc0f1c78319c +TEST= 55 +PT= 000000000000020000000000000000000000000000000000 +CT= 6433e64662f22b1670eb9adc8bb3cc02027ff074af1c8aaa +TEST= 56 +PT= 000000000000010000000000000000000000000000000000 +CT= 81d2902c459e9548de980dc0a1c35f5a835b713233bb1af3 +TEST= 57 +PT= 000000000000008000000000000000000000000000000000 +CT= 84d22a62fe6969722a0a827aa39fd98273518e805aca6bcb +TEST= 58 +PT= 000000000000004000000000000000000000000000000000 +CT= e2451b898bdbc3967a90a9cd372427ecbdfd32ad4b420627 +TEST= 59 +PT= 000000000000002000000000000000000000000000000000 +CT= 17ab7c72ff8516f008a83c608a468aa85608d5cb27cc07b1 +TEST= 60 +PT= 000000000000001000000000000000000000000000000000 +CT= 3df9efec9f96b077a7ae42c4dd74dd4123b09291c8cbb5e9 +TEST= 61 +PT= 000000000000000800000000000000000000000000000000 +CT= 93268ba09a0011e5b199072da991705bdc11690cae25527a +TEST= 62 +PT= 000000000000000400000000000000000000000000000000 +CT= 0e8dc5b4fd1e3555a7de89728858725fbbd89ee03aa9b2f3 +TEST= 63 +PT= 000000000000000200000000000000000000000000000000 +CT= 6aad497b06f81e8faf4326ec06524361bff1dd4724f7307e +TEST= 64 +PT= 000000000000000100000000000000000000000000000000 +CT= 153ff2185b9ccfba658dce0a092630ed633799e1bc789db5 +TEST= 65 +PT= 000000000000000080000000000000000000000000000000 +CT= c561004674c37670b90e1d2d68eb9ffc1873242c12ba7b5e +TEST= 66 +PT= 000000000000000040000000000000000000000000000000 +CT= 8af404b9023a4839fc8c91d476a72c2e174c8d8010841d34 +TEST= 67 +PT= 000000000000000020000000000000000000000000000000 +CT= 9d047944f0bc71110e3b141c5338953815fc3e2ba54ad797 +TEST= 68 +PT= 000000000000000010000000000000000000000000000000 +CT= 3999628ef6cfa401e76bb829541eab6be3a7a111e8a0a9d7 +TEST= 69 +PT= 000000000000000008000000000000000000000000000000 +CT= 1190c8d24769b53252f4f92f17b6e7330770a4814848cbbc +TEST= 70 +PT= 000000000000000004000000000000000000000000000000 +CT= 3fb6b5b6fb062c4293cb2504244db194be90e0d7d4124526 +TEST= 71 +PT= 000000000000000002000000000000000000000000000000 +CT= 7a7212934cf480e64ebe8ba45eb81db00d9670f653829334 +TEST= 72 +PT= 000000000000000001000000000000000000000000000000 +CT= 0cb8db6f76753c3ab599abc6cb6a39207f4defb27c3d3a22 +TEST= 73 +PT= 000000000000000000800000000000000000000000000000 +CT= 5b98f4d67f26f6902814be43b1be5a6f7af4deb09bbca53d +TEST= 74 +PT= 000000000000000000400000000000000000000000000000 +CT= a7b9a8d4b3f812ac4fd41367a783bc603f871f2b7ef58a30 +TEST= 75 +PT= 000000000000000000200000000000000000000000000000 +CT= 1f301185f917a2b0759f28611c6408c9f2ffceb06f945974 +TEST= 76 +PT= 000000000000000000100000000000000000000000000000 +CT= 1c047528606b52c2f74f832c4008b4bf10920b3f0fd4f999 +TEST= 77 +PT= 000000000000000000080000000000000000000000000000 +CT= 4f67df0848d38df25f27a35d41b9db1b02987ba358528fc3 +TEST= 78 +PT= 000000000000000000040000000000000000000000000000 +CT= 0360b0914d190704316f15ee4c0bba0fac44d9b22699c686 +TEST= 79 +PT= 000000000000000000020000000000000000000000000000 +CT= ec39a8297d360c90944447bdce6e3bc1513e6b4c0b444fe1 +TEST= 80 +PT= 000000000000000000010000000000000000000000000000 +CT= d0368f2b418beb90d07719ef2c178a40a919a8f6d1e14723 +TEST= 81 +PT= 000000000000000000008000000000000000000000000000 +CT= 5f9ba7d21ba93969ac5e8026d2c189ecb2ead03d1ae595d9 +TEST= 82 +PT= 000000000000000000004000000000000000000000000000 +CT= 236d6e3537f622ec73adfe0c698d792bb427e2cb65fe753b +TEST= 83 +PT= 000000000000000000002000000000000000000000000000 +CT= 3eb6404e9ae2952350a3f10c6b9b43838e0cea7e4dea39d9 +TEST= 84 +PT= 000000000000000000001000000000000000000000000000 +CT= 47d8faee473394181cc236e58a2f1cfaa44a796db975cfaf +TEST= 85 +PT= 000000000000000000000800000000000000000000000000 +CT= 71014aafbd986c41628ea265a6a089d29f442cc0b5d7fd88 +TEST= 86 +PT= 000000000000000000000400000000000000000000000000 +CT= b64557cb0fb56f6bd44ae3e1bdd16947649668e2876bd232 +TEST= 87 +PT= 000000000000000000000200000000000000000000000000 +CT= 0501921ed2bc38bec631b62efd0938dbe94e908b043f30c3 +TEST= 88 +PT= 000000000000000000000100000000000000000000000000 +CT= 4cf0804f304f450cdbf1c0267da591a019a848f7f6be0c44 +TEST= 89 +PT= 000000000000000000000080000000000000000000000000 +CT= 8719383d7d973e306e0c893801438cf3122e733baf6e1ee3 +TEST= 90 +PT= 000000000000000000000040000000000000000000000000 +CT= 14bbf3adf103289e2bbfb8c5938bf74d843bc5de1d92524e +TEST= 91 +PT= 000000000000000000000020000000000000000000000000 +CT= bdda18bb3f5055e38201024c899c91811d0db18aa8246fe7 +TEST= 92 +PT= 000000000000000000000010000000000000000000000000 +CT= 1b1c69a3668aa0dee59465a220801480c2b793c17f06502d +TEST= 93 +PT= 000000000000000000000008000000000000000000000000 +CT= 4158f67a8a5c47b251aeee4cc94d1be73623f4a7340d85fa +TEST= 94 +PT= 000000000000000000000004000000000000000000000000 +CT= 16a0d671db58adb45aafdf1f93033fd04bef681a88f01fef +TEST= 95 +PT= 000000000000000000000002000000000000000000000000 +CT= 7acf7f1d7f36f3cfcce7c06402120017847eecc8558030f8 +TEST= 96 +PT= 000000000000000000000001000000000000000000000000 +CT= fb4cbc2ffc640f5c5599c3ae577906debc1d74e4c5e3aca7 +TEST= 97 +PT= 000000000000000000000000800000000000000000000000 +CT= 84a0525f0106469ab3d45ebfcb67d1b436199d09719da6da +TEST= 98 +PT= 000000000000000000000000400000000000000000000000 +CT= a80048c71ff95e88509c14c593b757c13f4561f7c815ecd5 +TEST= 99 +PT= 000000000000000000000000200000000000000000000000 +CT= 7cef25428e3f3f888d6ddee2969837bbfa9a24e61e440e44 +TEST= 100 +PT= 000000000000000000000000100000000000000000000000 +CT= b2c2e8d49ad500b3e9ef9ecd71e126d419f0fcbd05d86f31 +TEST= 101 +PT= 000000000000000000000000080000000000000000000000 +CT= e038165ee20e208430cdde744ab8a4ffa8b787a9c10fb139 +TEST= 102 +PT= 000000000000000000000000040000000000000000000000 +CT= 59ada02054d1f0de8f5e7795e437e96527e1c0125ecd241e +TEST= 103 +PT= 000000000000000000000000020000000000000000000000 +CT= 070f33a8ff3c3089e08c30254d512c2ef219f058a5022f1b +TEST= 104 +PT= 000000000000000000000000010000000000000000000000 +CT= b4e4903a8ef56206761925fcfc4252d706a3ef850bd54f45 +TEST= 105 +PT= 000000000000000000000000008000000000000000000000 +CT= 1808eafda4b33126ed6b8402f45a3db30ba583c86321413b +TEST= 106 +PT= 000000000000000000000000004000000000000000000000 +CT= 558189682e43a96502ed48ce9e8c1a3d510bd6a49edb9cf4 +TEST= 107 +PT= 000000000000000000000000002000000000000000000000 +CT= a50b2226dd859d37d5b43b6e508531de9d626b851710b27b +TEST= 108 +PT= 000000000000000000000000001000000000000000000000 +CT= 866ea628964f17dee209724b482ec1231254322c1d6b1aac +TEST= 109 +PT= 000000000000000000000000000800000000000000000000 +CT= ce225c27b314fcd70700606531c03ca7361c57ee54e5d7ad +TEST= 110 +PT= 000000000000000000000000000400000000000000000000 +CT= 9bbde1c3888ee62f2aef5a351714f24e01c64c58875210a8 +TEST= 111 +PT= 000000000000000000000000000200000000000000000000 +CT= 316ad74390d1f0e597d0d6ddc0bb7b599263cb82beeeb4d4 +TEST= 112 +PT= 000000000000000000000000000100000000000000000000 +CT= fcea13099f38c7de30e1ed38248f62f7df857138868773b1 +TEST= 113 +PT= 000000000000000000000000000080000000000000000000 +CT= 51e3c334d3b1986e92cf08b9312109d6b322460649115faf +TEST= 114 +PT= 000000000000000000000000000040000000000000000000 +CT= 85a2736002339d60970ab3283e52f804e2e2bfc2339275cc +TEST= 115 +PT= 000000000000000000000000000020000000000000000000 +CT= c9217ffb4982d1c6fa7cb57b99d3d1c0e6a31af1805c4152 +TEST= 116 +PT= 000000000000000000000000000010000000000000000000 +CT= 71a22c824109362b222c997a1a7cda4a5340027335a582e1 +TEST= 117 +PT= 000000000000000000000000000008000000000000000000 +CT= 37f0797585c0aa1a7f0f751fb6354725fecb42048a056446 +TEST= 118 +PT= 000000000000000000000000000004000000000000000000 +CT= 023e0b3f527bf28ea3273c075e5791aa565ef48b7e4d874b +TEST= 119 +PT= 000000000000000000000000000002000000000000000000 +CT= 67f68d00f5ce36f357da9e7682f8408b905fc50adca704b6 +TEST= 120 +PT= 000000000000000000000000000001000000000000000000 +CT= fb8a3cde22db0b93946326e1902e2f6107f6c35d83429c5f +TEST= 121 +PT= 000000000000000000000000000000800000000000000000 +CT= a786a0e7e5818f6ca24843c42ff84c6710fd3613926cdca6 +TEST= 122 +PT= 000000000000000000000000000000400000000000000000 +CT= 1ba60777998d7aac515cd639cab9957a46980ff17725e6b2 +TEST= 123 +PT= 000000000000000000000000000000200000000000000000 +CT= 7bcf1c2339b3a4a63314f1efd30179af89edb360c58deca0 +TEST= 124 +PT= 000000000000000000000000000000100000000000000000 +CT= eae748fdaacb284c62bb312584d92cde11457f5f976a696e +TEST= 125 +PT= 000000000000000000000000000000080000000000000000 +CT= 5d4938ee5c3e0861f0129f3087520e1a92817d7e2fa2bbb3 +TEST= 126 +PT= 000000000000000000000000000000040000000000000000 +CT= 7b68b3f9426ab006836d5ecbfb85b1c77a028084c9416e46 +TEST= 127 +PT= 000000000000000000000000000000020000000000000000 +CT= 3d92ac7b061522b66f5c2ca9157c7460c16f0e522a8d93f3 +TEST= 128 +PT= 000000000000000000000000000000010000000000000000 +CT= 03ee74b4b158d4b71d92464162e4183181a56d1fa9b9b7e6 +TEST= 129 +PT= 000000000000000000000000000000008000000000000000 +CT= 7f1ddd3335f67a70d490c8610e74f72331139467d711ee5b +TEST= 130 +PT= 000000000000000000000000000000004000000000000000 +CT= 7ac94dabe4235caa6bdf84bd7b62a08bca7f10a274c1a2ee +TEST= 131 +PT= 000000000000000000000000000000002000000000000000 +CT= 6df24f411ff03c61c04d0ceb31aa5a464cf1d4efc2a347b7 +TEST= 132 +PT= 000000000000000000000000000000001000000000000000 +CT= 38f2f6f8148c1d59e98eb55c046d54b354c67a46a1c5e9ba +TEST= 133 +PT= 000000000000000000000000000000000800000000000000 +CT= 98638c1c51a161b5acb0e62a1de56edb42b7fc9e9c2c383d +TEST= 134 +PT= 000000000000000000000000000000000400000000000000 +CT= 8832eb84e0494edae3fbd080acf25b4cec1e13a706492d20 +TEST= 135 +PT= 000000000000000000000000000000000200000000000000 +CT= 62f7e08c4adf52c10fe9c2db800330962517d6a2541ad667 +TEST= 136 +PT= 000000000000000000000000000000000100000000000000 +CT= 61c1c853de9b67d03ab4ff773ab75767511056caf58bdfdf +TEST= 137 +PT= 000000000000000000000000000000000080000000000000 +CT= 3f06cd85e198438998387400bff43c1d3e544959e98742f7 +TEST= 138 +PT= 000000000000000000000000000000000040000000000000 +CT= 514ab9cafe800dcac52b5ceecc7e614f1a216c7a0b6c1846 +TEST= 139 +PT= 000000000000000000000000000000000020000000000000 +CT= 38cebca747def3769fce78675d99d7440542be10e0c1f6d9 +TEST= 140 +PT= 000000000000000000000000000000000010000000000000 +CT= 480c83cca3e1e6d8bc5b9b3aa07e2604e3570e5ec59aa93e +TEST= 141 +PT= 000000000000000000000000000000000008000000000000 +CT= c7db0dee6dafffdb2d2cf9a28eb08900951c4dfaf550983e +TEST= 142 +PT= 000000000000000000000000000000000004000000000000 +CT= 3db1131ae9d30d5e5d2229b76d4b624bad6a76b7447f30a1 +TEST= 143 +PT= 000000000000000000000000000000000002000000000000 +CT= 9b814726345079adb90a9383d14609b9978a70a4f1c3ea6f +TEST= 144 +PT= 000000000000000000000000000000000001000000000000 +CT= bfa4c72adad492329ae6681f42983cb87ccabc96d2b480aa +TEST= 145 +PT= 000000000000000000000000000000000000800000000000 +CT= 1ec8b42217bb706de8d32ef36829dc741500700825f204d3 +TEST= 146 +PT= 000000000000000000000000000000000000400000000000 +CT= eaebd54c62941d75aaedc0b87ce2ce43bd86003d93910309 +TEST= 147 +PT= 000000000000000000000000000000000000200000000000 +CT= a72d0c8e51982b90740e9b7496ee1ab0e4f00e64decefb15 +TEST= 148 +PT= 000000000000000000000000000000000000100000000000 +CT= e275516033f9b6c2cdeea881410fd38f6af38802f00d9168 +TEST= 149 +PT= 000000000000000000000000000000000000080000000000 +CT= 453c34409b03620185c9e98596dc243ad2e4a1d1590b2db8 +TEST= 150 +PT= 000000000000000000000000000000000000040000000000 +CT= cc1412193550ca1839c4904a951d4bf4a997599761357e66 +TEST= 151 +PT= 000000000000000000000000000000000000020000000000 +CT= 85a9f2baaac77c3bc2621a53c6a25b4fe6c14b0b5b296c86 +TEST= 152 +PT= 000000000000000000000000000000000000010000000000 +CT= 07039a593a6fa416edcae9f4cfdc693b970259c65b601884 +TEST= 153 +PT= 000000000000000000000000000000000000008000000000 +CT= 925e39a532b89623a8427a4775179f138412597a449605d7 +TEST= 154 +PT= 000000000000000000000000000000000000004000000000 +CT= 7bb42850edec756670f618d6cd65a11a9438ea0cf191b2e7 +TEST= 155 +PT= 000000000000000000000000000000000000002000000000 +CT= 6c1480010ff849b34ffcc37ab4b652f434dc5d9963eee4c3 +TEST= 156 +PT= 000000000000000000000000000000000000001000000000 +CT= ff5de717d20f8466f7bc1ba8dbebcb1b7be15538279fb26b +TEST= 157 +PT= 000000000000000000000000000000000000000800000000 +CT= 479f376b165c5b03229820ff51b4be6f6600d76a2b20cb0e +TEST= 158 +PT= 000000000000000000000000000000000000000400000000 +CT= 0647586fb87ed32246d5936f7f7db89a94d3b4c820f8ea85 +TEST= 159 +PT= 000000000000000000000000000000000000000200000000 +CT= cc7f54f6feda253feacfb14d8e9f6f9d65140eeb0b73b161 +TEST= 160 +PT= 000000000000000000000000000000000000000100000000 +CT= 081bec724fa2af42177729bd3d35c6aa0fba1540c27008cf +TEST= 161 +PT= 000000000000000000000000000000000000000080000000 +CT= 60f25dbcc41e21446607603e53968f4b5cbedeb079443910 +TEST= 162 +PT= 000000000000000000000000000000000000000040000000 +CT= 551be5ac059b452051717d1abddf2248f66626502c2a3eee +TEST= 163 +PT= 000000000000000000000000000000000000000020000000 +CT= 34fd11b26d971b9d23775cb39b9fb1838423ffa45a7b3c19 +TEST= 164 +PT= 000000000000000000000000000000000000000010000000 +CT= 1eae5a7e7939b99cf0f195934638f0bd25892df6644cfd21 +TEST= 165 +PT= 000000000000000000000000000000000000000008000000 +CT= 7df4d6c3012c9648f2a716b1887459cb15afd3ba344bedc2 +TEST= 166 +PT= 000000000000000000000000000000000000000004000000 +CT= 27fc2ecbb7485a6445db65bd9ac60f12cdf8cd98a42411d5 +TEST= 167 +PT= 000000000000000000000000000000000000000002000000 +CT= fade7b797714ef84e0598d1db2af560b358963c1c9e92c9c +TEST= 168 +PT= 000000000000000000000000000000000000000001000000 +CT= 7782722aacf61136cf79b9ba11aa0e17368e114444f5981b +TEST= 169 +PT= 000000000000000000000000000000000000000000800000 +CT= 4dbc721ee554a31e03595de199109a727e8dd5b31873567a +TEST= 170 +PT= 000000000000000000000000000000000000000000400000 +CT= 255d8850e6b3402a97fc6febbc7775922a4b32d9f70fb07e +TEST= 171 +PT= 000000000000000000000000000000000000000000200000 +CT= 2853ba61f87e6564f001490b3c44f4cb773b3a1b24617b3f +TEST= 172 +PT= 000000000000000000000000000000000000000000100000 +CT= da8d7a2dab2c0dc3646835b44086dbab2951ce8c4d03109b +TEST= 173 +PT= 000000000000000000000000000000000000000000080000 +CT= 4220f6aa26727fd13100e496e9c2d36b37c7a93da673a079 +TEST= 174 +PT= 000000000000000000000000000000000000000000040000 +CT= 5da4b9f3ecb2b3cf241db52a2d91c744fcb1795c6e331225 +TEST= 175 +PT= 000000000000000000000000000000000000000000020000 +CT= debec59e0c7aeb5cbe9e9e05297ac319bc6e834b9a451b80 +TEST= 176 +PT= 000000000000000000000000000000000000000000010000 +CT= bf7c626a34173156d7cf6de2cc1bd2a8a74a96e496b8c127 +TEST= 177 +PT= 000000000000000000000000000000000000000000008000 +CT= d6eabc05d814b20012f89c4082d91b25932017c173910de3 +TEST= 178 +PT= 000000000000000000000000000000000000000000004000 +CT= c82d30448c2536ca90eff3aa1bd84c5ecc8acf1e21be98cb +TEST= 179 +PT= 000000000000000000000000000000000000000000002000 +CT= 462fe5079c5848f3f82e8512927dad49ca165ff0e63293aa +TEST= 180 +PT= 000000000000000000000000000000000000000000001000 +CT= 07f04cee790acea110bb0c4a2e9ca021e445d40abfe7bf76 +TEST= 181 +PT= 000000000000000000000000000000000000000000000800 +CT= a7428c568674f762b7d38347185591cac779ffcd0e8665f8 +TEST= 182 +PT= 000000000000000000000000000000000000000000000400 +CT= 5dd85ae42d9f7a0e9e0b507bcdec662c0f96ec06409b680b +TEST= 183 +PT= 000000000000000000000000000000000000000000000200 +CT= 905363fdee1f2d34747bf3e183e1ad0fb909a23447441748 +TEST= 184 +PT= 000000000000000000000000000000000000000000000100 +CT= a83246d9a5a079dfec01c732f00ea91f8ef17047ec743a4f +TEST= 185 +PT= 000000000000000000000000000000000000000000000080 +CT= 3707f92f462fa1708d9f0635d889ce365e08d19c09235f63 +TEST= 186 +PT= 000000000000000000000000000000000000000000000040 +CT= 7744fa2bd060b185d109e331b6086dfeed882cd4459ea7fa +TEST= 187 +PT= 000000000000000000000000000000000000000000000020 +CT= 39bb2acfb89b49e00227b7f7ba760bcfb47762551fc11e7b +TEST= 188 +PT= 000000000000000000000000000000000000000000000010 +CT= 6a0319e74c13d58b2310d6db6905a521b900f1427b27968e +TEST= 189 +PT= 000000000000000000000000000000000000000000000008 +CT= 93045676a898cde8799ac922a52908529f4c2f1c85ce2b72 +TEST= 190 +PT= 000000000000000000000000000000000000000000000004 +CT= f0e0c49d30162c57dee6b4f571bfedceb4bdce6029b73586 +TEST= 191 +PT= 000000000000000000000000000000000000000000000002 +CT= 732231333cb70d613ccbb3bce539bb5dbbf2deb0b9c348c0 +TEST= 192 +PT= 000000000000000000000000000000000000000000000001 +CT= ebef350a100c2652694e7bdc4e39d27c4ac7774363f855af diff --git a/flint/test/testvals/ecbvt84.txt b/flint/test/testvals/ecbvt84.txt new file mode 100644 index 0000000..f3d3e50 --- /dev/null +++ b/flint/test/testvals/ecbvt84.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt84.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 128 + +KEY= 00000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= a693b288df7dae5b1757640276439230db77c4cd7a871e24d6162e54af434891 +TEST= 1 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 105ad7cd0c5d2f7b40df76a3d264248f10493fbb5710f90a0a84e1e09437f529 +TEST= 2 +PT= 4000000000000000000000000000000000000000000000000000000000000000 +CT= b40827d4a748b5caa3116cab3ba8b8819b662811a21be0958bd112abad99aa8a +TEST= 3 +PT= 2000000000000000000000000000000000000000000000000000000000000000 +CT= 37b628a510eab3679f094f1eab86ba17b0a4b5af5cd7ced892f2309d8ad69dce +TEST= 4 +PT= 1000000000000000000000000000000000000000000000000000000000000000 +CT= 09abaf39a2ba205872bb73a5257f6588ab37fb7adc85c13ddb43e5916be78506 +TEST= 5 +PT= 0800000000000000000000000000000000000000000000000000000000000000 +CT= 68bfe083e17dcb4a3a6c3da4ac769de5c5ecbe09bcb8be77ee7f9029c580477d +TEST= 6 +PT= 0400000000000000000000000000000000000000000000000000000000000000 +CT= e52223b1e6e1945efc9cb0dc20c84de8274dd739cd70b38bafc21e58d5779041 +TEST= 7 +PT= 0200000000000000000000000000000000000000000000000000000000000000 +CT= 0426aee28eb8958fd64118f7b57220bf054af5ad267b42900c426d326269610b +TEST= 8 +PT= 0100000000000000000000000000000000000000000000000000000000000000 +CT= 7b35ed23d6dbdbb8544a4db5e265694a07e25a432f7864cd17a5bbbaaad1f027 +TEST= 9 +PT= 0080000000000000000000000000000000000000000000000000000000000000 +CT= ae2ecb2c759dbf9fe702713139d6b4664c848b2a8c79dc97de429f0768544bc0 +TEST= 10 +PT= 0040000000000000000000000000000000000000000000000000000000000000 +CT= b52ad816e22573bd107c68d0a85c6bf7e72f2cdad7816ab504a9a5118b44aed0 +TEST= 11 +PT= 0020000000000000000000000000000000000000000000000000000000000000 +CT= 559e3a9c4747e7a3827c1fa9861dd4579085bc6f64c270357b7b7e9dd4062235 +TEST= 12 +PT= 0010000000000000000000000000000000000000000000000000000000000000 +CT= 9ac0512dbf37fd4a8221240bbe72817e96b17efe72d6ac953dcf24bbe8c7a0ba +TEST= 13 +PT= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 974ae354ed5b4a1b64b16f5b85fe039fa072eb276499ca2c82bc2a3057c1c78d +TEST= 14 +PT= 0004000000000000000000000000000000000000000000000000000000000000 +CT= 76611a6456ee4794321c13832c753090e034de0082d4f04774271599b72757f0 +TEST= 15 +PT= 0002000000000000000000000000000000000000000000000000000000000000 +CT= 90babb7cb1f6f91995553178140aca388068ef16901392013d7f0afd88bc7e39 +TEST= 16 +PT= 0001000000000000000000000000000000000000000000000000000000000000 +CT= b8c2256bfc85470b2fb050f5c4c34d8062b25d7874d0da237d114a18e21c43b6 +TEST= 17 +PT= 0000800000000000000000000000000000000000000000000000000000000000 +CT= 3fe9ae8437534db31e62e514218bc47d77bc196eb152c82fef3cda14da5586ad +TEST= 18 +PT= 0000400000000000000000000000000000000000000000000000000000000000 +CT= d5bac71fdcae2def10d6acc893ad11c15d87d8974f2a007b6381edb27941ad65 +TEST= 19 +PT= 0000200000000000000000000000000000000000000000000000000000000000 +CT= 6890537566355c894f6cb2cda2fc43c8118cd24f5b72f53edb0b28bf2d927484 +TEST= 20 +PT= 0000100000000000000000000000000000000000000000000000000000000000 +CT= f0e841110a0d75d75ecf2301739694843ba5aa725957262f8dce94e8afcd9f31 +TEST= 21 +PT= 0000080000000000000000000000000000000000000000000000000000000000 +CT= 369fc86ffa855e6b16a06598937c29a3d7b064e8fcf6ab7bc25324d5c4d6259a +TEST= 22 +PT= 0000040000000000000000000000000000000000000000000000000000000000 +CT= 96a04fe8e2f183abdd99a55fc6e43572ad255ba42907c761c30e76207aad5841 +TEST= 23 +PT= 0000020000000000000000000000000000000000000000000000000000000000 +CT= adbefb9bda52286ee9805148527496b97abce6a63b38350339cd0331c018d72b +TEST= 24 +PT= 0000010000000000000000000000000000000000000000000000000000000000 +CT= e754392cdbc666eb7435243a99b49ca0f3af906706a998b7938b9dabb5c1b330 +TEST= 25 +PT= 0000008000000000000000000000000000000000000000000000000000000000 +CT= fbb8b9d0ba4a918e6649f31f5da713da3ca54d147ffc9f4b29cbe4b81989b3cd +TEST= 26 +PT= 0000004000000000000000000000000000000000000000000000000000000000 +CT= f4ee9d88ca8a59ad18947c3553b9f5e6aaf677de71be483ba45b6681f5af989d +TEST= 27 +PT= 0000002000000000000000000000000000000000000000000000000000000000 +CT= ffb72a327703359ac21db93a5d3f23844c8a85fe5c735b744b88d4d0b14e81bd +TEST= 28 +PT= 0000001000000000000000000000000000000000000000000000000000000000 +CT= e5f98ce1e4ea9dcf9c2117fd0fa245e2372120ddaf2fc46ab618bf716c1d4159 +TEST= 29 +PT= 0000000800000000000000000000000000000000000000000000000000000000 +CT= 6ce7f6c3021d44356fae878a2c6d99e49a62daa9bcd8019762f79b4e3e4a3c4a +TEST= 30 +PT= 0000000400000000000000000000000000000000000000000000000000000000 +CT= 98d07eb1358b3730485fce62cfa26822e97b8d91819e650e74283cd4fbd9a6b1 +TEST= 31 +PT= 0000000200000000000000000000000000000000000000000000000000000000 +CT= c438c6b27c0eb508f0b2f76ebd49803e06ee9125603cf73236997763cdb47009 +TEST= 32 +PT= 0000000100000000000000000000000000000000000000000000000000000000 +CT= e7a0ea6c0100896626281b257723b6664f41adb953a5a9f5a885a03efc0d1059 +TEST= 33 +PT= 0000000080000000000000000000000000000000000000000000000000000000 +CT= 70e1a4f4d7c5dd1eaf23aa8b9c5124b92891c90fb968aa8431f81e9def1f9036 +TEST= 34 +PT= 0000000040000000000000000000000000000000000000000000000000000000 +CT= 67beea6f8a12c061044efef042670ddc0cdced455054f0d615300f0d3467b472 +TEST= 35 +PT= 0000000020000000000000000000000000000000000000000000000000000000 +CT= 1232c5a23948d6730280573e2ce8e24475e5e1661755ea468a18c5e834671ae5 +TEST= 36 +PT= 0000000010000000000000000000000000000000000000000000000000000000 +CT= 11fe7ae04d400bd4de3e50d8040e6610bd91a4f4ae12043b883d7bb9f4953836 +TEST= 37 +PT= 0000000008000000000000000000000000000000000000000000000000000000 +CT= 3e4c293a12174d835e9559fa1fd0810f2db83814d42d28029c3e19fe859a6199 +TEST= 38 +PT= 0000000004000000000000000000000000000000000000000000000000000000 +CT= 6cc4b779145908b7351df0b92e0ba048f6df7525ce24a30573c66678239312e0 +TEST= 39 +PT= 0000000002000000000000000000000000000000000000000000000000000000 +CT= b3b2576e2f6df47dd691a6b68246c2b6c7170b22536c1c9faca9549984e2a58f +TEST= 40 +PT= 0000000001000000000000000000000000000000000000000000000000000000 +CT= a28f2a9f666e6297cb426d77c917270ba52668e933bbb9f57de0d49d8c0d97d1 +TEST= 41 +PT= 0000000000800000000000000000000000000000000000000000000000000000 +CT= c816e595f34eca4db812f1da310c3f91c02a3940f3baf683958bbd75ce8da1b7 +TEST= 42 +PT= 0000000000400000000000000000000000000000000000000000000000000000 +CT= fe74770d05691cd94496df0699c06136328d72a1c5ce0f9c89cf3fc1dca14d2a +TEST= 43 +PT= 0000000000200000000000000000000000000000000000000000000000000000 +CT= 4689898bd70e8cf89e89009e3b03619b1ad53ebe1160967cba93bb385eabbba5 +TEST= 44 +PT= 0000000000100000000000000000000000000000000000000000000000000000 +CT= cefd14f9cd8a8afad7353a922063f2b03b55da8cecf2f420897de296d375fe2b +TEST= 45 +PT= 0000000000080000000000000000000000000000000000000000000000000000 +CT= bf0429d40423cbb8ea7f7760eeb724116df58628910504465546bd32f3e110fd +TEST= 46 +PT= 0000000000040000000000000000000000000000000000000000000000000000 +CT= 0a84ee47b61f524a313c21e5acde29dcee3a1b280275a641b45ff73d26081074 +TEST= 47 +PT= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 9cb75c5e069f5acc2214f028fdbb455afb7c174d2f57340208bb7d0d14f16ef8 +TEST= 48 +PT= 0000000000010000000000000000000000000000000000000000000000000000 +CT= e2ff3f27d3abcd41c4b280d2255801981228980d9836b8046464cd541b756c91 +TEST= 49 +PT= 0000000000008000000000000000000000000000000000000000000000000000 +CT= 213f354bdc04ebbd5255909e62a73f4ed304657afd5ca4b3adf64f1281535c99 +TEST= 50 +PT= 0000000000004000000000000000000000000000000000000000000000000000 +CT= d6776e3bb39dace5ae6b3890b1d8c051cc6414fc25e063a900b3c55e3c6f3637 +TEST= 51 +PT= 0000000000002000000000000000000000000000000000000000000000000000 +CT= bdd425e478ecbf95ff0520c61da2f464d288c7e5347674c27b847cbc16bed7a2 +TEST= 52 +PT= 0000000000001000000000000000000000000000000000000000000000000000 +CT= f482558454e9d7e9874eda5032c9d414e1b612444c314545e86762c87125b748 +TEST= 53 +PT= 0000000000000800000000000000000000000000000000000000000000000000 +CT= cfa6ed5d341d6203142bc3741ca8405ea32533fcfd07d978fe5cfa2951b3895c +TEST= 54 +PT= 0000000000000400000000000000000000000000000000000000000000000000 +CT= e2a2500e5cdc00adea4deb78b94c4f20b27cd16265fac8db88a2db9ef8c73005 +TEST= 55 +PT= 0000000000000200000000000000000000000000000000000000000000000000 +CT= 2ea5b3075971905cbed43c8d998cec3596e9431fa4275615f7ab825d2dd8d270 +TEST= 56 +PT= 0000000000000100000000000000000000000000000000000000000000000000 +CT= 09aa847885fdd29625ff62961a35d9df0aea2c9f4c702979573f2fc1e369ab9c +TEST= 57 +PT= 0000000000000080000000000000000000000000000000000000000000000000 +CT= 3e2d661f9976525d0618c8d34698671d751b9697d707889054f8f81b155d5b25 +TEST= 58 +PT= 0000000000000040000000000000000000000000000000000000000000000000 +CT= bbbdbd3a36469496c6fb80432eb23a79d490e7c3c7813926f1c53e5c9a31034f +TEST= 59 +PT= 0000000000000020000000000000000000000000000000000000000000000000 +CT= 2a81889cea4c09265ba01fd24d755db8f9663c7c64459b916e5d9b173ac097ca +TEST= 60 +PT= 0000000000000010000000000000000000000000000000000000000000000000 +CT= 7ebe29df822a06cd07c3adb20eed597360b47634e1513cf2046e731be0e2745c +TEST= 61 +PT= 0000000000000008000000000000000000000000000000000000000000000000 +CT= 89744c239c182564ca9e50e49a3ca06a16af9dd86117cca31ceaba5d1c6fc0e0 +TEST= 62 +PT= 0000000000000004000000000000000000000000000000000000000000000000 +CT= 4d1e1faf6727ee2bc2366cd686a682a9526f7c83ff60ed930b6288d59d572266 +TEST= 63 +PT= 0000000000000002000000000000000000000000000000000000000000000000 +CT= 33604dbb5acb07681b5216e12fc0ed645313439883bf7f6916831ad02e769abd +TEST= 64 +PT= 0000000000000001000000000000000000000000000000000000000000000000 +CT= 14d33a2f429586e71db6bdd522311ff31464179ffe3f95d0c608e68055350d33 +TEST= 65 +PT= 0000000000000000800000000000000000000000000000000000000000000000 +CT= ba1682d51d8fa20e85e5f7020cc8b2f2ee8332df31087ee49b4034d4d955a472 +TEST= 66 +PT= 0000000000000000400000000000000000000000000000000000000000000000 +CT= c7385fa2b7299503fdad56c7cf26d398c2968ae8fb294048bc1e836267992011 +TEST= 67 +PT= 0000000000000000200000000000000000000000000000000000000000000000 +CT= b9ce9928a8b9e403faf9447053b367355b15f58d74967ca880c87620b3c86084 +TEST= 68 +PT= 0000000000000000100000000000000000000000000000000000000000000000 +CT= 00a375a106dd49940c2753867ff2c357b013dc84dbffb0bec5c498991754ec29 +TEST= 69 +PT= 0000000000000000080000000000000000000000000000000000000000000000 +CT= 8f00bcbeeab9f9f759e399e12a6abbead07d40073988ed3c79a18f055e5fc73a +TEST= 70 +PT= 0000000000000000040000000000000000000000000000000000000000000000 +CT= 07358633da20041de603de95d9211a99b269ee7f4db364efcbcf2d300d71932c +TEST= 71 +PT= 0000000000000000020000000000000000000000000000000000000000000000 +CT= e3eefc51cdd8acc4b5ed3e0699b1b359a5a966ec4dd1c8bdf8860a00743103be +TEST= 72 +PT= 0000000000000000010000000000000000000000000000000000000000000000 +CT= 4e32a576415fc83dff605bd3a43e0124a2b8a72121e79a88aa290fd74222d0cb +TEST= 73 +PT= 0000000000000000008000000000000000000000000000000000000000000000 +CT= 565f32da75d9b661c8fba37c8c0345e130b9419b64e24a61732673537a630844 +TEST= 74 +PT= 0000000000000000004000000000000000000000000000000000000000000000 +CT= ca1bae8868f42c78d020c487d63d8b6d14c1eb72cde445476ef7e06a8a3e273e +TEST= 75 +PT= 0000000000000000002000000000000000000000000000000000000000000000 +CT= 88520d43198634791b950ffe9b1b9fbeddfc5a389405a6be02791926e185b93b +TEST= 76 +PT= 0000000000000000001000000000000000000000000000000000000000000000 +CT= 4ed7abc33b69594bad1ae72c74a3753a9e92d1c9588514cfa057be44de39e75a +TEST= 77 +PT= 0000000000000000000800000000000000000000000000000000000000000000 +CT= 509ce053385f4daaf372b9880a9062ca37599e636e1edb3cbaa4354881a173c1 +TEST= 78 +PT= 0000000000000000000400000000000000000000000000000000000000000000 +CT= 0281641126390fee9e7132ce283897b5f555cfe08a441d3ccc6558febe3d48c7 +TEST= 79 +PT= 0000000000000000000200000000000000000000000000000000000000000000 +CT= 7153f69ec604285e39d589dab83b9a8143ac4a0d7c0fad2be6c301a65413b474 +TEST= 80 +PT= 0000000000000000000100000000000000000000000000000000000000000000 +CT= dd3bb43bbc621940c630dd56fe47972d9aeeaf888276fbd09857c0b9b19be204 +TEST= 81 +PT= 0000000000000000000080000000000000000000000000000000000000000000 +CT= 6067fd27fe782b2718bdf24346acb3c7a656548459448bbcdc441bf80723bb4d +TEST= 82 +PT= 0000000000000000000040000000000000000000000000000000000000000000 +CT= 8fc887cb9851d293d56713ae09f9706765093859f46be4ad06d272d89aba0f5d +TEST= 83 +PT= 0000000000000000000020000000000000000000000000000000000000000000 +CT= db2b2a37209441c5c4a565cd7aa6b2d5763fe54b885865f3be789c5534121680 +TEST= 84 +PT= 0000000000000000000010000000000000000000000000000000000000000000 +CT= 80ed373207d17c24d6f2d71af9481edfbc328f814ba227059d3ecc20bf5b96ae +TEST= 85 +PT= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 2d992981aaa6ce1b163b6016d7c0100c5a86b0b3f00d613e6feb731c0912480d +TEST= 86 +PT= 0000000000000000000004000000000000000000000000000000000000000000 +CT= edd56f2a14b8579c72e3715880ecfef2e0483f8ca2d3e562b33b45d8fed8239f +TEST= 87 +PT= 0000000000000000000002000000000000000000000000000000000000000000 +CT= b597871df24130aea78599bef0f4fee1163a42264150de4c29c7e31b47281af5 +TEST= 88 +PT= 0000000000000000000001000000000000000000000000000000000000000000 +CT= debf9e2c6d284318e18fe9e18d3ec5ece3b76e84b9f712139f47f9b6ce414a3d +TEST= 89 +PT= 0000000000000000000000800000000000000000000000000000000000000000 +CT= 36583f08d674ae23e625e2465c4a3f18bcd2b8540963c648d4cbae111fbc74d6 +TEST= 90 +PT= 0000000000000000000000400000000000000000000000000000000000000000 +CT= 2daa5f0c12e9d7fa136358089ebbfea2c8f843fa086f9544ed871e520ca9ec24 +TEST= 91 +PT= 0000000000000000000000200000000000000000000000000000000000000000 +CT= 0498d49a68aac51eb6997cff018b3e58959a678f3fa6e821deb9b28ed5eac40f +TEST= 92 +PT= 0000000000000000000000100000000000000000000000000000000000000000 +CT= db470c1ae2005083e05cb28843550713e9ee66d05c8f2015c7d49e58e73f9557 +TEST= 93 +PT= 0000000000000000000000080000000000000000000000000000000000000000 +CT= 91f3d5cee69ec856d963e6524570ae8a41939a2e5dbc01f812a00f787583642c +TEST= 94 +PT= 0000000000000000000000040000000000000000000000000000000000000000 +CT= fb0b0940ce587a08afa4fe504a83c63c7c2292a0db8c6712c9987c00deeee746 +TEST= 95 +PT= 0000000000000000000000020000000000000000000000000000000000000000 +CT= c223bd1df1fb3afdb9f302aae76e5b022e6a43b8956c18b6262af149ab5a68ac +TEST= 96 +PT= 0000000000000000000000010000000000000000000000000000000000000000 +CT= 57848d67a5010f8a26525274c71999986c6121124a337c4e43978afd65c9f33f +TEST= 97 +PT= 0000000000000000000000008000000000000000000000000000000000000000 +CT= 38a24b3e1fb79aa6a3451806e2f99b5e21124e17021782bf9d925822970e1baa +TEST= 98 +PT= 0000000000000000000000004000000000000000000000000000000000000000 +CT= 224fdf3e902ddf3ec6c0c0488c2b04709997f62dfc34969d63685cc662c17801 +TEST= 99 +PT= 0000000000000000000000002000000000000000000000000000000000000000 +CT= d9df65f4e45664c967472a1d5465217398d506036bbe7387b2ab577f1148c4ef +TEST= 100 +PT= 0000000000000000000000001000000000000000000000000000000000000000 +CT= 2aca4df8c51d7eb7e6fe2882e560062a7f9584d491fc8a193d069dc00cadd7a1 +TEST= 101 +PT= 0000000000000000000000000800000000000000000000000000000000000000 +CT= b90fe28900209cb56810b8d8b03075698e87e87fb75673af9182dd60d8fb9799 +TEST= 102 +PT= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 1a60a12a44ce4b6d66730d6f7b46ac051f0e9d6a798b76f428e833b56049b80b +TEST= 103 +PT= 0000000000000000000000000200000000000000000000000000000000000000 +CT= 90f6e27fe8775652021b9f0ba7fbf5dacaa0f385fcc32d27f64ce48482f675e7 +TEST= 104 +PT= 0000000000000000000000000100000000000000000000000000000000000000 +CT= 3778db556408625d04f472c45305af7cb45122456deeeae7b6c0baad0a651825 +TEST= 105 +PT= 0000000000000000000000000080000000000000000000000000000000000000 +CT= 38c3c79bec26f4248566e73c98aeaf455aa77617ad700c8e49e4ea76948d9a23 +TEST= 106 +PT= 0000000000000000000000000040000000000000000000000000000000000000 +CT= a76afa00e176cb9a911e28a4873b177a54ec72ca6887e7c73e6683ae57f7aa82 +TEST= 107 +PT= 0000000000000000000000000020000000000000000000000000000000000000 +CT= 9b88cfceabcdff2a27a3d669a1e44df582b39f781a7ec8a6fecb3a6c535615c6 +TEST= 108 +PT= 0000000000000000000000000010000000000000000000000000000000000000 +CT= 38f43c35c04a27513f1f36ae00d0c940f71faad6b16c42387d06016bae8d5d27 +TEST= 109 +PT= 0000000000000000000000000008000000000000000000000000000000000000 +CT= 2275e6edbb1bc9eed59c4901df05b937956f0561426fdc2e92d235f167b3c080 +TEST= 110 +PT= 0000000000000000000000000004000000000000000000000000000000000000 +CT= 91aeab9f486905dd829dd2f5fdc7767715f72f61f1b4bbc46aad7224ff8ef238 +TEST= 111 +PT= 0000000000000000000000000002000000000000000000000000000000000000 +CT= 0d1d54b60bd0c88302e33ed2b7745ae1faa4f59d534beb69c4d79b5e39c3ce6c +TEST= 112 +PT= 0000000000000000000000000001000000000000000000000000000000000000 +CT= f4183958ae4814644bc4da70d6e8cf512359a6969d25a4f3b8d62dd2313871c5 +TEST= 113 +PT= 0000000000000000000000000000800000000000000000000000000000000000 +CT= bc552d7264b54ca5ad42aa8ec6f6097cf9082e43afb45942e5f32249f0b235d4 +TEST= 114 +PT= 0000000000000000000000000000400000000000000000000000000000000000 +CT= f75d1cbc0fbaad5eb20d98888340dc05f781efd368fd846f62edf9c938469c5a +TEST= 115 +PT= 0000000000000000000000000000200000000000000000000000000000000000 +CT= 2aa861d438f836ed4f525696db7d6df545961a5a30e729c0fba8335fdbd2d35f +TEST= 116 +PT= 0000000000000000000000000000100000000000000000000000000000000000 +CT= 53487b55c8954fb3918e5bf67b2714d3fbea1e0e93a12b2ef89e26f755a5388a +TEST= 117 +PT= 0000000000000000000000000000080000000000000000000000000000000000 +CT= 94361418f6edf2464b5727145741a68da559368e88366067f3d092a220d760dd +TEST= 118 +PT= 0000000000000000000000000000040000000000000000000000000000000000 +CT= 5557bf2d69be6a079b2c0038538a44768d33e88faaa554cba053a565d7f41f8e +TEST= 119 +PT= 0000000000000000000000000000020000000000000000000000000000000000 +CT= d526cacbc0a2b4b7db7b4a47e6cade2ad538787a83d271b4cd3bb0c73200fdd4 +TEST= 120 +PT= 0000000000000000000000000000010000000000000000000000000000000000 +CT= 936d957ec81a69b67445b0bae1e78563f6ca9dbac1a71700d8f4a64c2326444c +TEST= 121 +PT= 0000000000000000000000000000008000000000000000000000000000000000 +CT= 0d21638af04a94cf7354f08e79fa6bc30dd934cf3a13508fccbbfa48a4b489f2 +TEST= 122 +PT= 0000000000000000000000000000004000000000000000000000000000000000 +CT= 9d0ab39cd0f3266a962461f130e692993fed47cdb5942dc941a97eced6eead93 +TEST= 123 +PT= 0000000000000000000000000000002000000000000000000000000000000000 +CT= 14f54b5e2d58c5e98aa3009d86cbd32637668d860e1ad7e4751e54a2b195b301 +TEST= 124 +PT= 0000000000000000000000000000001000000000000000000000000000000000 +CT= 84e6b19e44a1ebc7ca39ef0703a90c9d9b938a94d143a5363ea5a2c9b1036408 +TEST= 125 +PT= 0000000000000000000000000000000800000000000000000000000000000000 +CT= 16869f6564f4f980e1a98cbc07acab80891a036a9ddc90345e6d765f41b33887 +TEST= 126 +PT= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 77f50efea41bf0c47fb47944009ea3e1260f00e8506f2589331480ad452c4059 +TEST= 127 +PT= 0000000000000000000000000000000200000000000000000000000000000000 +CT= b90bef8f95acb1bf9f6dc6486a76918f4bf6a7be18cc0d94f12de41acd7722d6 +TEST= 128 +PT= 0000000000000000000000000000000100000000000000000000000000000000 +CT= 499be47b02b7c40ea243adc50e0a45b62559cfe223a83dd16122963201af9bf0 +TEST= 129 +PT= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 97d3486427f3f8cf9bb5cd9c1ba5160ceaea15a6e382a726ad8a9db2b323fe68 +TEST= 130 +PT= 0000000000000000000000000000000040000000000000000000000000000000 +CT= 585d02ba12864c5fcf3ebf22bcff169d656f66fb456e79bd327974566d072e3f +TEST= 131 +PT= 0000000000000000000000000000000020000000000000000000000000000000 +CT= 8074b63e094b84062a03f11b731a701b1e01b4164658d7b306eec90507d55c3b +TEST= 132 +PT= 0000000000000000000000000000000010000000000000000000000000000000 +CT= 2fb33218bc59dfc92d475390adae7fb8d78647dafff09717e0235f58e3a914a7 +TEST= 133 +PT= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 4ba10df43def9d23175fa50f2c4ffb0ff8da3541a1564b4e760ea78eb277da58 +TEST= 134 +PT= 0000000000000000000000000000000004000000000000000000000000000000 +CT= 788f41a956ec11482dcf0f92e9fad993fc23592ab6f6fdba3d21d0e08a5f09f7 +TEST= 135 +PT= 0000000000000000000000000000000002000000000000000000000000000000 +CT= 75fda082ae1bb6450cd03d0ff6b7b1922b6f61c8257f37a8836bb1e9af4defa8 +TEST= 136 +PT= 0000000000000000000000000000000001000000000000000000000000000000 +CT= 7bf5e2112870140d62fc4346ae5257792540b3aa00a49115bb07276b53c2e7da +TEST= 137 +PT= 0000000000000000000000000000000000800000000000000000000000000000 +CT= 37b6a4294a683bca2edb8da12a8e6fd652daffc33de8d24f42ed8aa3312aa7aa +TEST= 138 +PT= 0000000000000000000000000000000000400000000000000000000000000000 +CT= b4a3cb067905ea77d87b8f87f9f7be43389224de2e0841539bc8debc2921386a +TEST= 139 +PT= 0000000000000000000000000000000000200000000000000000000000000000 +CT= e202ff72fee4540190692acff8b3ec9fc61b4d0964bf3978852b1514fb673275 +TEST= 140 +PT= 0000000000000000000000000000000000100000000000000000000000000000 +CT= 04b87d036aa72c03b86fd44812e7d99762bb9da8d01fdedb55b1b5d5a1797c5d +TEST= 141 +PT= 0000000000000000000000000000000000080000000000000000000000000000 +CT= be5d2168021cae396ca43fffa826c2cef0b8d8c818bf8b5cad8f7e874b52ba0a +TEST= 142 +PT= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 79890f59a90b744686ca8198fdcbe6db6ad11460fde92570737f253e17ef5973 +TEST= 143 +PT= 0000000000000000000000000000000000020000000000000000000000000000 +CT= 308a5d45512389177c68da15027c5f5ac31dc1c8debbfaa845022be9b997c91a +TEST= 144 +PT= 0000000000000000000000000000000000010000000000000000000000000000 +CT= 61963646556bba5fc362238176ee0f26f780265a6ceea19345cf9432d4066cd9 +TEST= 145 +PT= 0000000000000000000000000000000000008000000000000000000000000000 +CT= 363fc57b6a6b3769ebcb961fdd4e3f628e324758c16759239bc6f3ad249ed346 +TEST= 146 +PT= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 5f65dec14aebad2d59a963a3c6e1eb54deb04e9e8218c40f4dbbe4a458d16b38 +TEST= 147 +PT= 0000000000000000000000000000000000002000000000000000000000000000 +CT= d3c7500be0471b177ef9cbe0127287ee7b49dd6b399e0187d1fdcfc4a6460f38 +TEST= 148 +PT= 0000000000000000000000000000000000001000000000000000000000000000 +CT= a0ef5784177cd50b4f4974bd28e24ea647bdb0a5fd4a2d25ec7d9303ff3e3b16 +TEST= 149 +PT= 0000000000000000000000000000000000000800000000000000000000000000 +CT= aaa29cbd1de0bdb570dde8f5c0a2c160f1f32814ec72721f21d6ce845d66e9bb +TEST= 150 +PT= 0000000000000000000000000000000000000400000000000000000000000000 +CT= 331556223f8ddd2bc1cb2f9958350ee2b6b57d38c708d2fc5f428dccb7ecc9d6 +TEST= 151 +PT= 0000000000000000000000000000000000000200000000000000000000000000 +CT= 95dc1b1b1ef90b7923fb6e4169f2d6ba4763f5dc354d4ddc3d0e93c022e66a86 +TEST= 152 +PT= 0000000000000000000000000000000000000100000000000000000000000000 +CT= b43b6d47436e4875ab83aa933ff604c05ef52278fa96390b7fb061fd57db5eda +TEST= 153 +PT= 0000000000000000000000000000000000000080000000000000000000000000 +CT= 85207d29c12771313f0e6f65108edd228c923c7b45f029b30b60cb8db26a7291 +TEST= 154 +PT= 0000000000000000000000000000000000000040000000000000000000000000 +CT= 76088456e379b66a41d3b7c62a56b93153b7640f423745c732ec1a5b70172956 +TEST= 155 +PT= 0000000000000000000000000000000000000020000000000000000000000000 +CT= aa2444e71556a34d609b6611b1089db299185c941d1beee6629bc20877768506 +TEST= 156 +PT= 0000000000000000000000000000000000000010000000000000000000000000 +CT= d51231ade54fe86979da7948f8faa3f4bea9aff9179458f4e6da553014860aa4 +TEST= 157 +PT= 0000000000000000000000000000000000000008000000000000000000000000 +CT= 13c6a8229c564cab17465368f54a181c8c6f7dfeab649132eec5cd9f8d1acaf2 +TEST= 158 +PT= 0000000000000000000000000000000000000004000000000000000000000000 +CT= 9eb17375652f3465b288d516962cf240d979be5bced909f331bb2bf078ebc378 +TEST= 159 +PT= 0000000000000000000000000000000000000002000000000000000000000000 +CT= c27f291be45576d5d0674559b40cc0d1b21dff84189bed0fa6c8d256636d3dfe +TEST= 160 +PT= 0000000000000000000000000000000000000001000000000000000000000000 +CT= 996fe78f3c4c52740edcef34896b3a55b065daf3ed8f285bf5f68e4053f39537 +TEST= 161 +PT= 0000000000000000000000000000000000000000800000000000000000000000 +CT= c308ec1cdc0a014d85196a66a7301b7e6440cc127dd6270c7926dcdc27ba0dc2 +TEST= 162 +PT= 0000000000000000000000000000000000000000400000000000000000000000 +CT= f199a61cbb2d8a5e28d92d5f33e9ab3312d61c6ba2d83ce7a8e480fdff805d0d +TEST= 163 +PT= 0000000000000000000000000000000000000000200000000000000000000000 +CT= 70a77ab3aacd7eefc410ea45d46cbec425fec5089ca7a4387e792463007ce0f5 +TEST= 164 +PT= 0000000000000000000000000000000000000000100000000000000000000000 +CT= 59cc80466db3fc054cc8ce2e96d0f00a95a1bcf924d2b8d8898d6e3b43bcb9d5 +TEST= 165 +PT= 0000000000000000000000000000000000000000080000000000000000000000 +CT= 19f955341e77fb36371f48e5889ee32f60aa5e105e9dc334bd20886df589f42e +TEST= 166 +PT= 0000000000000000000000000000000000000000040000000000000000000000 +CT= 45cafdc9ba9e28b230d0233440cbc24b9377ec772705a09f426b6e7dc946412c +TEST= 167 +PT= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 39d04da0384f4dd69012fe0d1200c22cef02f14825bcdd7b1d0f4d38f49ef95c +TEST= 168 +PT= 0000000000000000000000000000000000000000010000000000000000000000 +CT= d62918eeee8bd8a93c983ebcc86a3d60cf3fdb7540cac359c5ff2a6709a66a3e +TEST= 169 +PT= 0000000000000000000000000000000000000000008000000000000000000000 +CT= 8aa62868b9df8815503230cc90fa8995a30932568c56d86914f5d1eb085624fc +TEST= 170 +PT= 0000000000000000000000000000000000000000004000000000000000000000 +CT= 5e475a46cf9f7a431fe919af5b0feea111ca597b1db0ccdd23086699c1f144d9 +TEST= 171 +PT= 0000000000000000000000000000000000000000002000000000000000000000 +CT= e32222ca456845dc8b9877266f0558d1dfb596ce2f9cf7a2d7d929bdfb89d06a +TEST= 172 +PT= 0000000000000000000000000000000000000000001000000000000000000000 +CT= 44fc9f061ec48318d0c531fc5a6981bff3ec47a8459788ac3fc6d1f9d8cd017a +TEST= 173 +PT= 0000000000000000000000000000000000000000000800000000000000000000 +CT= ac112c692e6bcc8148691b1678ad9fc265dfc3ff275b2e023cd9ad747382a777 +TEST= 174 +PT= 0000000000000000000000000000000000000000000400000000000000000000 +CT= 56a1cef05e98b0f50c9fe8fe4b5779476d713f6deb8af3314f984cf351b3e851 +TEST= 175 +PT= 0000000000000000000000000000000000000000000200000000000000000000 +CT= 8b2885d73d098d4373c1581b2c27a4ed9876a69a4487f0a7ab1f814d94057f7d +TEST= 176 +PT= 0000000000000000000000000000000000000000000100000000000000000000 +CT= d12e5eabac738d8bdbaefafb926afa09cb501856327f94d402dd4b4402061a92 +TEST= 177 +PT= 0000000000000000000000000000000000000000000080000000000000000000 +CT= 7a0965716d382e620219feb5027bf59aaf23f190baea5c230be1a17f1771267a +TEST= 178 +PT= 0000000000000000000000000000000000000000000040000000000000000000 +CT= eefcc0119b3500bb99a78125c007c12d91f48310429fe0f7aded1df59f9c3622 +TEST= 179 +PT= 0000000000000000000000000000000000000000000020000000000000000000 +CT= ad5e7595a766e3f0a7f176450b50c1770700999ca6ddb21a3d369668fa26d000 +TEST= 180 +PT= 0000000000000000000000000000000000000000000010000000000000000000 +CT= 3c6f9d419d22b96709e8516b0621ca9e690ef9175013acb3bd3bf255101a8fa4 +TEST= 181 +PT= 0000000000000000000000000000000000000000000008000000000000000000 +CT= ff14e1d4fe7f0f88499c9b5b4d2a1556ace16e004eba33a36c1e56a0775c5334 +TEST= 182 +PT= 0000000000000000000000000000000000000000000004000000000000000000 +CT= e5aafcc3eba6266d04b9fa70494cd75f017885bb2092adb8bf8bd30a403dc44f +TEST= 183 +PT= 0000000000000000000000000000000000000000000002000000000000000000 +CT= e5fc3b46502dc6f2bac96ff1dfbf398cb6b8fcf9f7e1d75822b8cd2f036de242 +TEST= 184 +PT= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 711d523262c862e041b3fa0a88c91cf31df1de5c0f82ae3ad00708a0863c861e +TEST= 185 +PT= 0000000000000000000000000000000000000000000000800000000000000000 +CT= 523c5377bd8e58d22b0b16f03e23da1be801a8b41162a611059814cf537f5deb +TEST= 186 +PT= 0000000000000000000000000000000000000000000000400000000000000000 +CT= b03d79db537c77dcf32cc7ddc35b72b2dc110f43c49e47e3366db4174250acd0 +TEST= 187 +PT= 0000000000000000000000000000000000000000000000200000000000000000 +CT= 636c45dd2ad9e56464105ac2d53e27e45cc1fe65266822e2ae432e5ceba1643b +TEST= 188 +PT= 0000000000000000000000000000000000000000000000100000000000000000 +CT= 60a9a8baa6a310e2ec5303d00bac84fcfa3d43ec3639278f897e6e4422b5983f +TEST= 189 +PT= 0000000000000000000000000000000000000000000000080000000000000000 +CT= 738c314bffaece9b9c9764a7569e820cc0938b9a235237a6598d1c8fa7ed31d2 +TEST= 190 +PT= 0000000000000000000000000000000000000000000000040000000000000000 +CT= 4b37a36455ea7f6a52e7da25088d19c66e68fb2ccb0b23eb7993abc4e1de31cc +TEST= 191 +PT= 0000000000000000000000000000000000000000000000020000000000000000 +CT= 212e73246373814813d371e2b3ef9107039c9fee9c1d3884a30d1b15412d59fa +TEST= 192 +PT= 0000000000000000000000000000000000000000000000010000000000000000 +CT= 40a526a9c9f2701298f9c6f030f8487c245558d3ff30bd8b1b6fa09ef433f3df +TEST= 193 +PT= 0000000000000000000000000000000000000000000000008000000000000000 +CT= 5342d8ca95e57148be83fcce62e96096e344ff93d1898c3db235239325eab64a +TEST= 194 +PT= 0000000000000000000000000000000000000000000000004000000000000000 +CT= a141ed53198f317561fbde2068c99a34ee85fc2112b52f9ed04ffa28946b7cf6 +TEST= 195 +PT= 0000000000000000000000000000000000000000000000002000000000000000 +CT= a74c96e37354eb3c7679cacf905f1889af2b94a98a999e021a30c0be5d00f54e +TEST= 196 +PT= 0000000000000000000000000000000000000000000000001000000000000000 +CT= b810fbbc74110cee9154a653f05874e8c4d491843708124d1917b40e485c49b5 +TEST= 197 +PT= 0000000000000000000000000000000000000000000000000800000000000000 +CT= e2bb74287a704cb5c646aac5b50713f74d826f1f1b3cf12bae87490367311547 +TEST= 198 +PT= 0000000000000000000000000000000000000000000000000400000000000000 +CT= c13cec8ed578d8ce7faf516ec722ee956abdb8e787e1b27101f6fa8d81e14481 +TEST= 199 +PT= 0000000000000000000000000000000000000000000000000200000000000000 +CT= a3de874ebf6b5de878c925a6ac0f865532e79ee32ec66c1f66dc2ee44f028368 +TEST= 200 +PT= 0000000000000000000000000000000000000000000000000100000000000000 +CT= 16a04075ae8ae1b5451308b466647a97a8766e99c0851a19df5f57d8562a3e14 +TEST= 201 +PT= 0000000000000000000000000000000000000000000000000080000000000000 +CT= b66bff420d6eaf94ee39a98382e678ee5f9e497b2709d15f6a65f52d23db8a7f +TEST= 202 +PT= 0000000000000000000000000000000000000000000000000040000000000000 +CT= b5c6d224c5330d0ee63a11e3918f973bd7046df6ae2f58e48e4e7e9bd69f6323 +TEST= 203 +PT= 0000000000000000000000000000000000000000000000000020000000000000 +CT= 1f0461543fe9570d28cd5c3aad26299a8573cbc9fbe11ea7a488e0da54f7337c +TEST= 204 +PT= 0000000000000000000000000000000000000000000000000010000000000000 +CT= 43ecffaf3dba3b28cb146312ed7226c1023c6be5d7d7acd03a991507e58b2c7f +TEST= 205 +PT= 0000000000000000000000000000000000000000000000000008000000000000 +CT= 839aca294748704c8e98312643941216f44d3928d6197bd72e8b3e510561f61d +TEST= 206 +PT= 0000000000000000000000000000000000000000000000000004000000000000 +CT= 1709eedeb30a24c70ecc1137034da97aa30fe66ef2e07ede9696e8644cbaeca0 +TEST= 207 +PT= 0000000000000000000000000000000000000000000000000002000000000000 +CT= 49f46b3897582ff6939fae35496feaff631a3aca222232ef98000f693a4d0c36 +TEST= 208 +PT= 0000000000000000000000000000000000000000000000000001000000000000 +CT= 8f6f1bfa5dd3b465cc729f0f48e598a0d62c5d6df450a73004d3892a44a98c99 +TEST= 209 +PT= 0000000000000000000000000000000000000000000000000000800000000000 +CT= 704c805881c1864a968cd3cb7efbff268fe1e98bc802aac3df53883fc0634098 +TEST= 210 +PT= 0000000000000000000000000000000000000000000000000000400000000000 +CT= 073b25ff7b8dbe205f2daf2b91b58fc3cd05fe4166f24e3792dd59c12d54817b +TEST= 211 +PT= 0000000000000000000000000000000000000000000000000000200000000000 +CT= 7df25f058d5a5a2e4deba6c5f3bd84c9235d8733c0390a263c086b58b287e02c +TEST= 212 +PT= 0000000000000000000000000000000000000000000000000000100000000000 +CT= bfa3a8e389006c42c2784ea5c1c0d988dce613040dd9b34397dc04ce8277acbe +TEST= 213 +PT= 0000000000000000000000000000000000000000000000000000080000000000 +CT= 38f7ff73cc2ff527edcc853d0b548ebef04487616d23dd0755a5c28bca866dc8 +TEST= 214 +PT= 0000000000000000000000000000000000000000000000000000040000000000 +CT= 7ae48a101648663d785705a4f1c017e941b978cb74491b19c0462aae7736b446 +TEST= 215 +PT= 0000000000000000000000000000000000000000000000000000020000000000 +CT= ba12a0a1c3c14403bb425d5988ef1f728be2018df89f54031a58b4124a3cf125 +TEST= 216 +PT= 0000000000000000000000000000000000000000000000000000010000000000 +CT= 7bfa5931d5c5dc816177baf412f0bacaacd6b9a4fe64270fab43fab27786f307 +TEST= 217 +PT= 0000000000000000000000000000000000000000000000000000008000000000 +CT= ee58b6b06827ad0bb4c59e4dba0dcdc0a6c493c81d72474125c11682dd63549a +TEST= 218 +PT= 0000000000000000000000000000000000000000000000000000004000000000 +CT= d1238704bbe958eea372bb51323f8c07b57b5c50016fc40d706d2c3adc092d75 +TEST= 219 +PT= 0000000000000000000000000000000000000000000000000000002000000000 +CT= 89b96d87eb1def67d7fdf945fbbd3fd3a8798894d5eedbb483e04b320b92c3a1 +TEST= 220 +PT= 0000000000000000000000000000000000000000000000000000001000000000 +CT= 649b2aa0f2ddf7f2b27087bd2966523c261363a1c29f5e2ce0ebc9150130f0e0 +TEST= 221 +PT= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 14bbc079f7849a741092c8f067f827cd8ca8443596770fb922d5a6b46ffaa05c +TEST= 222 +PT= 0000000000000000000000000000000000000000000000000000000400000000 +CT= 99c01fd09dffaeac82ea2d331a8feb00e81656a73fb359d658304d190727db2b +TEST= 223 +PT= 0000000000000000000000000000000000000000000000000000000200000000 +CT= 2bc48d3135c9d98b2774895a18660ea831baedc31756b000eb5cc1e54c4534eb +TEST= 224 +PT= 0000000000000000000000000000000000000000000000000000000100000000 +CT= d41347dbabf80538a4b1e1d5821d341ec1dd86848649445bd72a3d965e0e8c2b +TEST= 225 +PT= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 1e2e447fab34b7d113ba6282e8abf1c8d989f6d93768388386bced3825bc48b3 +TEST= 226 +PT= 0000000000000000000000000000000000000000000000000000000040000000 +CT= b1d985071c3e230d6418090a296b2417adcdd74ef4e2901617837d9e53168cdf +TEST= 227 +PT= 0000000000000000000000000000000000000000000000000000000020000000 +CT= 91fb31ddfff15d452a0b8df71b9ab879dc4c2b6396cc4d7690876a175f54312e +TEST= 228 +PT= 0000000000000000000000000000000000000000000000000000000010000000 +CT= b8b75f10d03559989fdfb273d3f827efe468e829a8cf9588ba36433c1c334c0c +TEST= 229 +PT= 0000000000000000000000000000000000000000000000000000000008000000 +CT= 087d474d98ace8047e8e51789e96e5f476910fce431bbff8ba5d1c11d4af9fdc +TEST= 230 +PT= 0000000000000000000000000000000000000000000000000000000004000000 +CT= 6e84df2a8330c658f7b66a123e0ef28673a87b17f69c1e8b71c8e01778e1e35e +TEST= 231 +PT= 0000000000000000000000000000000000000000000000000000000002000000 +CT= 90edd1bcb070e81d497890cfc0e8065526884330eea3ae3c6ffbe153290a1b76 +TEST= 232 +PT= 0000000000000000000000000000000000000000000000000000000001000000 +CT= f895fcf65879d3392d2d38581ee0297033637cb9152fd1138d67066ceb1617af +TEST= 233 +PT= 0000000000000000000000000000000000000000000000000000000000800000 +CT= b898a5795fcf2d7be420631d96a2fa4a6fef803aa19e5519c2c313ab1a29aca9 +TEST= 234 +PT= 0000000000000000000000000000000000000000000000000000000000400000 +CT= 0f534d4ea66bb897f745665f4b2efd3fb00b6ffa0e7a2d0f543ff0f3019d7228 +TEST= 235 +PT= 0000000000000000000000000000000000000000000000000000000000200000 +CT= a6252ee9c6bf7c9effcb802db9c8a7ec541d282938af68943ce59c4fd3b77f95 +TEST= 236 +PT= 0000000000000000000000000000000000000000000000000000000000100000 +CT= 5259840c4a3436d73eb101e91743ff250008905b18d299c85112ddb6c642f48b +TEST= 237 +PT= 0000000000000000000000000000000000000000000000000000000000080000 +CT= 28bf6109a4640782f4e2d684ccb83e1efcfb186999d92f21255982361ae472e6 +TEST= 238 +PT= 0000000000000000000000000000000000000000000000000000000000040000 +CT= 2f22ef8e22143325d8c6c228c1be49676f9b62da1f71900baf902f1dffc133e3 +TEST= 239 +PT= 0000000000000000000000000000000000000000000000000000000000020000 +CT= 0e035be3cf0d9e0a151dd844550a229eed090f76a56c1cf85e5d5897ba848d69 +TEST= 240 +PT= 0000000000000000000000000000000000000000000000000000000000010000 +CT= 316389ac2b7bbede57d5ebf66d1d3f774e13a001cce36afc20e4bc82098aa9b7 +TEST= 241 +PT= 0000000000000000000000000000000000000000000000000000000000008000 +CT= 4a62b29a79be083e27a47bd8ecc20f94c7a50f53f175e7d841aef06e77359cd2 +TEST= 242 +PT= 0000000000000000000000000000000000000000000000000000000000004000 +CT= 1b1dcca7b8a0b7a310a4a18348def11751b39ea093594c8015b1bee4b1f80779 +TEST= 243 +PT= 0000000000000000000000000000000000000000000000000000000000002000 +CT= 072751509753edf0b6fc4aca821c852e7a34bdc292c4376e0f7525bd768c231b +TEST= 244 +PT= 0000000000000000000000000000000000000000000000000000000000001000 +CT= a9a278c7aac9fb2a73258f9b1f026a679a5fb834e5a3d606f0b8f81eff31c0ec +TEST= 245 +PT= 0000000000000000000000000000000000000000000000000000000000000800 +CT= ae7abd337f749c7fcfae1319e36ac73ac9d1d6c494b4ba2605ecf359434f84f4 +TEST= 246 +PT= 0000000000000000000000000000000000000000000000000000000000000400 +CT= 6255ddc3813939648414230138e3363a6683fb3ba2e1a03bf2785438b836de66 +TEST= 247 +PT= 0000000000000000000000000000000000000000000000000000000000000200 +CT= a4a1cd5906f8749440918a28d585033cc17e1ca368a0d04600f008b22090599d +TEST= 248 +PT= 0000000000000000000000000000000000000000000000000000000000000100 +CT= 4683d700e3d660ce1573ddbdf5ea06af6e2a06cbbfc37c32a88355b314096e09 +TEST= 249 +PT= 0000000000000000000000000000000000000000000000000000000000000080 +CT= 73167db29b00526e87698a18f3f462bc3e199970b2f7369d567ee0d056c58697 +TEST= 250 +PT= 0000000000000000000000000000000000000000000000000000000000000040 +CT= 44995bfd7f86a54d9e4c5a5195180210e90846e5329817ee179f0dcf62c6fb42 +TEST= 251 +PT= 0000000000000000000000000000000000000000000000000000000000000020 +CT= 3d881128039668ebf7e960b30ab88a9907e37de4dcba61e0054df1b4bcab88c0 +TEST= 252 +PT= 0000000000000000000000000000000000000000000000000000000000000010 +CT= 63a375f5c625d042883029d272144466d36349d99e0d78cf06aa2fc3c7504d33 +TEST= 253 +PT= 0000000000000000000000000000000000000000000000000000000000000008 +CT= df9330e6a321ea8a046a6605b159c01e90d9e2a25c464c2698279d21dc804c73 +TEST= 254 +PT= 0000000000000000000000000000000000000000000000000000000000000004 +CT= 2daf44b271ee04a05c6577d171d763c8b492bcdcd21c8f252d6e93d09621eb24 +TEST= 255 +PT= 0000000000000000000000000000000000000000000000000000000000000002 +CT= af178c0708cf0f53a7296e3d71d51ab233deaad27a5d0fce070c2f131944c0d2 +TEST= 256 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 937667c4fb56ed574479ed1b27010930bd9651146223019bb827c74e28a024d6 diff --git a/flint/test/testvals/ecbvt86.txt b/flint/test/testvals/ecbvt86.txt new file mode 100644 index 0000000..cc3da70 --- /dev/null +++ b/flint/test/testvals/ecbvt86.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt86.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 192 + +KEY= 000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= f927363ef5b3b4984a9eb9109844152ec167f08102644e3f9028070433df9f2a +TEST= 1 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 44b1262ffb313cae84f00112746266fc95264718b0533d22ca8c5022abff359c +TEST= 2 +PT= 4000000000000000000000000000000000000000000000000000000000000000 +CT= f9511a5cda9fa6beea177b29a7158cbfdc52b9260e23d1de844eb20e2620da75 +TEST= 3 +PT= 2000000000000000000000000000000000000000000000000000000000000000 +CT= 7dc7df92902388a1585f2c696369d1edf3addc74477bd343666300949868c1ee +TEST= 4 +PT= 1000000000000000000000000000000000000000000000000000000000000000 +CT= dd0ae58b0abdfc2a082d949d24e40534baf3987a2515f44351c700203ae21c54 +TEST= 5 +PT= 0800000000000000000000000000000000000000000000000000000000000000 +CT= 941be4052f93b36e832ad3f5334137ac51f1f3a05c2bcaaf4277d35c9159aa5c +TEST= 6 +PT= 0400000000000000000000000000000000000000000000000000000000000000 +CT= 809c330f09fec8b8a97ebf722c93ca401606a37dc569027db84a98a8c61a136f +TEST= 7 +PT= 0200000000000000000000000000000000000000000000000000000000000000 +CT= 757470565c3e5798e73af15c29c58d1259b8c8e2367733891d04a2ebb1185e4f +TEST= 8 +PT= 0100000000000000000000000000000000000000000000000000000000000000 +CT= 8987656999a5f1c87eba3765ad61eddf73ee39ff677de0233546cdc3b42586b8 +TEST= 9 +PT= 0080000000000000000000000000000000000000000000000000000000000000 +CT= b6487fcf1d6b118e1d4d86c436f1824eb09a4e8fe3f7ada5e7f9d0066f31c0c4 +TEST= 10 +PT= 0040000000000000000000000000000000000000000000000000000000000000 +CT= 30bc171cde173a5223a13d27d63236b82e7273bef108d22dfb5675e876fa0cd7 +TEST= 11 +PT= 0020000000000000000000000000000000000000000000000000000000000000 +CT= 2c0ccd1b9dbb4a433f8a7b7c151b84ab2934d87d4f198235d8d3a02ff654b530 +TEST= 12 +PT= 0010000000000000000000000000000000000000000000000000000000000000 +CT= c3ddb595e36c0f740d95d0f8e9bd92dea3ab4980526560a29f607e7e87d40bc6 +TEST= 13 +PT= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 36a3101ee1920b48312c3819e0ed9be8576baf7ab03ccf9277a735338b0dc134 +TEST= 14 +PT= 0004000000000000000000000000000000000000000000000000000000000000 +CT= 9b9547b77e4582a94314adeb7c9e70a62278dc9f38c07607ecad5af4ee2208a1 +TEST= 15 +PT= 0002000000000000000000000000000000000000000000000000000000000000 +CT= 5e4a73365a4bddd6bdd94c34631080d87f607f05db02c2e80e96cb78ae927c0e +TEST= 16 +PT= 0001000000000000000000000000000000000000000000000000000000000000 +CT= cc0e19c6cbf374f47b1b605ca5a8514b179a1574b18bcd748922df7f4cde61ce +TEST= 17 +PT= 0000800000000000000000000000000000000000000000000000000000000000 +CT= 249cb1fc8b5ba23c9fbf0f4187d11a809591f7083bd36214eb25e8013403f611 +TEST= 18 +PT= 0000400000000000000000000000000000000000000000000000000000000000 +CT= b1b60ae26360ae7911a05ae5e04ad56546512e5f49a991700af9c407041ca601 +TEST= 19 +PT= 0000200000000000000000000000000000000000000000000000000000000000 +CT= b161899874c3f94ab08194e4cf63e95a9f3daa00af61ecda7595ce69f4d54bb2 +TEST= 20 +PT= 0000100000000000000000000000000000000000000000000000000000000000 +CT= a834f8037b5b90c7d27c0b2be03955e5bccee089ff00f3b463fae14399f8c33d +TEST= 21 +PT= 0000080000000000000000000000000000000000000000000000000000000000 +CT= 54079d979c8fa04f724839e665513b4e8dc02694d4b408cceaa14af5736be62e +TEST= 22 +PT= 0000040000000000000000000000000000000000000000000000000000000000 +CT= 2469376e5ee338f9d878d339c1d0b992378e674d1aad0b40f629d054e4215267 +TEST= 23 +PT= 0000020000000000000000000000000000000000000000000000000000000000 +CT= ca5b6a586d885ce1752271722167e928fee38eb031cfbfb499c5f379afb9c7ac +TEST= 24 +PT= 0000010000000000000000000000000000000000000000000000000000000000 +CT= 4bb34e9f5c1910ba3a0e2e0a87adda8e405875927837718c299b2e28f6228bbf +TEST= 25 +PT= 0000008000000000000000000000000000000000000000000000000000000000 +CT= ae10256ad776f432faa7aa6c21e4bbd33fe2df270ee7624a6049d5058a80e45e +TEST= 26 +PT= 0000004000000000000000000000000000000000000000000000000000000000 +CT= 8a39c8037b27fe1b8947b18fa8931a7b9d31518500b262a1da72ae1fd1c0c358 +TEST= 27 +PT= 0000002000000000000000000000000000000000000000000000000000000000 +CT= 6b158c19969c7ac69ba4f5108e2efdbcd367adb4fbeeb53f63d3ec86212b2a71 +TEST= 28 +PT= 0000001000000000000000000000000000000000000000000000000000000000 +CT= 59d6212dee5a68178d7b5664dcd842f18c2a986ec23529e9549d9f45f93d6f24 +TEST= 29 +PT= 0000000800000000000000000000000000000000000000000000000000000000 +CT= 3a74410a6c259f448eb162b3b01d288e83eed85744fed08cc41ba6b9a872ca28 +TEST= 30 +PT= 0000000400000000000000000000000000000000000000000000000000000000 +CT= db69857de67f726617c5da3673dd2e37e12915c8f39f0bda9a2823e91e91bc13 +TEST= 31 +PT= 0000000200000000000000000000000000000000000000000000000000000000 +CT= 95ec3bb1289b2bfdfe195d243ccc8f7fa126fe9bd008de2e04aed85105e2ab3b +TEST= 32 +PT= 0000000100000000000000000000000000000000000000000000000000000000 +CT= 7fc2eca7fb9dfb43b8856b1548b47108d986cf98d1af9f4638d97dd88d166d8a +TEST= 33 +PT= 0000000080000000000000000000000000000000000000000000000000000000 +CT= 38df3fefedfed41558111dcff19653f50d90f16798bea47701b01b0241157d6d +TEST= 34 +PT= 0000000040000000000000000000000000000000000000000000000000000000 +CT= 31a865020b28b5b09c7c499e3771df9ee737a86fcb6fc8772940d16dcf438ca5 +TEST= 35 +PT= 0000000020000000000000000000000000000000000000000000000000000000 +CT= f14133c79df5bef7fab5b07ad37ca784bf2d47dcd8b54765945c374b06df6819 +TEST= 36 +PT= 0000000010000000000000000000000000000000000000000000000000000000 +CT= f934c2697a0a6fc50ed46d902f5e4f9721b8d4569eb486af56e276058666123b +TEST= 37 +PT= 0000000008000000000000000000000000000000000000000000000000000000 +CT= d8c4dc78fa01c7775388fc83d5bc4625a36c736a47c56132af88cd48d97a0efb +TEST= 38 +PT= 0000000004000000000000000000000000000000000000000000000000000000 +CT= adbc722a31e01f05197fa89e94331ff0e74e566bf225987424e4395c09c302ed +TEST= 39 +PT= 0000000002000000000000000000000000000000000000000000000000000000 +CT= f0b801928a9ed313e8c28edef6b0cf842e964fc66268521ab6c435c9d27037d7 +TEST= 40 +PT= 0000000001000000000000000000000000000000000000000000000000000000 +CT= 483335c9b56899754441638780932fafcb6d50281d33f3369acfa53d76e4ad4c +TEST= 41 +PT= 0000000000800000000000000000000000000000000000000000000000000000 +CT= 35bc721e0b342e11401b710017b6d414959bef29a8b8b1acf00fc3235833a916 +TEST= 42 +PT= 0000000000400000000000000000000000000000000000000000000000000000 +CT= 4104e38310fc8e2c78054e4b2a601fae31527e61cb5ca31370246cb1b547b7ee +TEST= 43 +PT= 0000000000200000000000000000000000000000000000000000000000000000 +CT= c198725ed04ab0329126e7803f167e578ed1d6c966ba20fb4c36555e1a318900 +TEST= 44 +PT= 0000000000100000000000000000000000000000000000000000000000000000 +CT= ccebadaf4ae657811244054c2a5e6840a5922b0ff48088ff881868f193803d4f +TEST= 45 +PT= 0000000000080000000000000000000000000000000000000000000000000000 +CT= 4cd8c59333e7438c1c22ed0ce18e9f605240bb228435778cec69cd984c327f0c +TEST= 46 +PT= 0000000000040000000000000000000000000000000000000000000000000000 +CT= c7e4043bddc95a90f86d1dabaad3db5ce5c4269de68f194c7ec59f9ef4642b12 +TEST= 47 +PT= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 8bf6c928583bb60bcf51c9033c3f00ac16e7bc70e3071c86e889ac6537679892 +TEST= 48 +PT= 0000000000010000000000000000000000000000000000000000000000000000 +CT= 3f6c2eb7922a69476be096a13f707408e0510276833186b93b13ba548ce111ad +TEST= 49 +PT= 0000000000008000000000000000000000000000000000000000000000000000 +CT= 9367c2958432bcb77f8f270eb2bfc659239774535d0ce0e67e470511896f9feb +TEST= 50 +PT= 0000000000004000000000000000000000000000000000000000000000000000 +CT= 5954e015fc1b25d623ab783ec11dcf27aec128275b30494f8c73034eea340d64 +TEST= 51 +PT= 0000000000002000000000000000000000000000000000000000000000000000 +CT= 1fa081d8be8f3f3f2297ce61d02ccbb509ecbaaa27c1b0539e8059cefec85512 +TEST= 52 +PT= 0000000000001000000000000000000000000000000000000000000000000000 +CT= ce9662526a0da65b07c1aa88da89bfa8d24701b3bc52e4b8f1d8614ba081b24d +TEST= 53 +PT= 0000000000000800000000000000000000000000000000000000000000000000 +CT= fc5e5755dddccbd545856eed62b182b16ab406cdf2591964878940bbd3810634 +TEST= 54 +PT= 0000000000000400000000000000000000000000000000000000000000000000 +CT= 9edbe39ca85027f74a0674155641116bb2c79451d00c56d2c63b314d5e50b7a5 +TEST= 55 +PT= 0000000000000200000000000000000000000000000000000000000000000000 +CT= 46e63f15ba05dde1836e36985df3227dcbdb146b133586ab87537f855a87f7a7 +TEST= 56 +PT= 0000000000000100000000000000000000000000000000000000000000000000 +CT= 6d0521107f7e09e3750f421a994254383b5db8755226bf19dd13d29c4fee2ea1 +TEST= 57 +PT= 0000000000000080000000000000000000000000000000000000000000000000 +CT= 2a8fe502c81a17dea7e22de5ba6864355cab4643c0ea7acad72f2a7ef37d83f0 +TEST= 58 +PT= 0000000000000040000000000000000000000000000000000000000000000000 +CT= e1efec30c72b96fec2a8e15d8448f4a704a8cab21007de35d3348021414531ed +TEST= 59 +PT= 0000000000000020000000000000000000000000000000000000000000000000 +CT= d1416173e3fa847af930d9c3a14df4b7fffc87c54fcfc3166b64b8b679d312d9 +TEST= 60 +PT= 0000000000000010000000000000000000000000000000000000000000000000 +CT= 079980a47d780751a07e68ecbbfdc31b4b942895ad434021d5209976ac98fe03 +TEST= 61 +PT= 0000000000000008000000000000000000000000000000000000000000000000 +CT= 298afcca9764391460b1d5dd3d10e5e0ab26cb76e1546a985b15f23457afaa03 +TEST= 62 +PT= 0000000000000004000000000000000000000000000000000000000000000000 +CT= fc44aea49e5b06b02f4dec3c17ebb7aae96e4b0f6f5341decaac589471c3f8c2 +TEST= 63 +PT= 0000000000000002000000000000000000000000000000000000000000000000 +CT= 67c31faf23e7dc1bd8e19559d24c42f9ab26ce16e73b98de979fa9072c72be0a +TEST= 64 +PT= 0000000000000001000000000000000000000000000000000000000000000000 +CT= 1ae488d77fd9420f7dbb197dd1f3f35fee15ac365a944da60bb77e3271da56a3 +TEST= 65 +PT= 0000000000000000800000000000000000000000000000000000000000000000 +CT= 019dda9878f586cc3b6f27bd0820a5b64a54917db1041f46a34f313383890adb +TEST= 66 +PT= 0000000000000000400000000000000000000000000000000000000000000000 +CT= 7f17e22ad12aead4012afc250bd9b37488955abc0dda1fdcb4c86f9cdae969ab +TEST= 67 +PT= 0000000000000000200000000000000000000000000000000000000000000000 +CT= 03f1ea5a5027e43ee8762a93089e6a7c5153752c73e46c1347950da55b9b3333 +TEST= 68 +PT= 0000000000000000100000000000000000000000000000000000000000000000 +CT= ff1eee3a2300dab44bdba0ff11892cdeb50d43a32d969b9d45f5e3080fd3752e +TEST= 69 +PT= 0000000000000000080000000000000000000000000000000000000000000000 +CT= 343666b7401f0ae9d8a0c71587af6ba8c81d4126eb59ef800e6934dfae23e207 +TEST= 70 +PT= 0000000000000000040000000000000000000000000000000000000000000000 +CT= 5ef3bad0e074441d48090208835bb362b2781a2e149f95d5305c2fbb915c4222 +TEST= 71 +PT= 0000000000000000020000000000000000000000000000000000000000000000 +CT= 6b8088e25e08d1ff89cedd8a2df096c982c179608c28e0a904d4fc2e71b4e942 +TEST= 72 +PT= 0000000000000000010000000000000000000000000000000000000000000000 +CT= d50d26960356980749e7a2c2f24f55589e60ea79b4050d28b8ba81a9c18348a3 +TEST= 73 +PT= 0000000000000000008000000000000000000000000000000000000000000000 +CT= 49a23e73c3b782ffbcf4a29178ecea6185c1367e067d725eef6f2df4cef4e880 +TEST= 74 +PT= 0000000000000000004000000000000000000000000000000000000000000000 +CT= f538e7d07b8f54e6f9a4f17831eb0a9de53229e1c779cfe77e175b4d17a8bc16 +TEST= 75 +PT= 0000000000000000002000000000000000000000000000000000000000000000 +CT= f60bfb1d4f1f5453a7a9458e0d2c1bc5c3a8b2a67da479772e0d00a2529c614b +TEST= 76 +PT= 0000000000000000001000000000000000000000000000000000000000000000 +CT= c9231390d0c6ba5c13cd40b3ee833d725bfd10d337786c3102b64991d0bdca87 +TEST= 77 +PT= 0000000000000000000800000000000000000000000000000000000000000000 +CT= c635dcd37b1ff9cbdf9c97474e422d9bc17071b23fe09100143dd5c43f92bdb6 +TEST= 78 +PT= 0000000000000000000400000000000000000000000000000000000000000000 +CT= 022284cb32388488c436553f40978da5fe18869cea4f37cef0c3fb75a2e35c91 +TEST= 79 +PT= 0000000000000000000200000000000000000000000000000000000000000000 +CT= 0347ec38cfbcb0b13d6b2303fbedf70ea689216ecfea74cd47275899bf55d0b8 +TEST= 80 +PT= 0000000000000000000100000000000000000000000000000000000000000000 +CT= 6c7208c107b2d4ba88578503c09d25520c87fcbdde3caadc264ee734879a6ef2 +TEST= 81 +PT= 0000000000000000000080000000000000000000000000000000000000000000 +CT= 03c659e23d0eed7227fdc65d5309d1fc07b9e8a8903a123e98c432a48abc7ee5 +TEST= 82 +PT= 0000000000000000000040000000000000000000000000000000000000000000 +CT= cb1a837b445f48d4bf9254e201dbcd66c9097addb91d87210d722b2f26dfa153 +TEST= 83 +PT= 0000000000000000000020000000000000000000000000000000000000000000 +CT= 6cc7459c4d1caba6ac2b2413ca36ea97ea61dad07f25d6aed35a498426578dc6 +TEST= 84 +PT= 0000000000000000000010000000000000000000000000000000000000000000 +CT= 3404063540f9fb123f6459f8aa7b9979f89762c7c787f53ea7a3d4d6a37f7be2 +TEST= 85 +PT= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 6166eef41e17cdede5881a2dffebb0ecf63378293e64e79ed67b4377ba3bfd32 +TEST= 86 +PT= 0000000000000000000004000000000000000000000000000000000000000000 +CT= dbee6ac86a26a8622ad824f272346eeac160ad99a73bfa4d491f1d12de598403 +TEST= 87 +PT= 0000000000000000000002000000000000000000000000000000000000000000 +CT= 9b049c3b5618184473769900a3e3b0f41367002e24fea280125960dc734fcc34 +TEST= 88 +PT= 0000000000000000000001000000000000000000000000000000000000000000 +CT= 09e88025c33753ea89fa6e5b0f8e2a16b79840f817e32cb3dbc50a7f8eb0deb9 +TEST= 89 +PT= 0000000000000000000000800000000000000000000000000000000000000000 +CT= de728425d7fe2de0aa40806bb0301f13ab3115f8849eb14b860196cae7ea6cd7 +TEST= 90 +PT= 0000000000000000000000400000000000000000000000000000000000000000 +CT= 4456e85a74e7d6a91ebace741471460ca562f03c77bbc8fa9205bb5750826db0 +TEST= 91 +PT= 0000000000000000000000200000000000000000000000000000000000000000 +CT= 8b3bdbb8a788c30f6e9d7dc7864858e7cd6ec0e971bab685c078b990ac4ff66a +TEST= 92 +PT= 0000000000000000000000100000000000000000000000000000000000000000 +CT= b8abae8e28c0f308c67ad104ac918676e15c046c733301b721900e070654a4b1 +TEST= 93 +PT= 0000000000000000000000080000000000000000000000000000000000000000 +CT= bc1af3b343e457d585b50a7d33e72a79de4adf1bdb97b1c83f1c48fdf6201748 +TEST= 94 +PT= 0000000000000000000000040000000000000000000000000000000000000000 +CT= 1c84259030d9b48f7f3b76fe9d5e0f3fe9c5bbd518587a35d5e4b3fcc9cd5d9e +TEST= 95 +PT= 0000000000000000000000020000000000000000000000000000000000000000 +CT= da3efae84de9d8410996369e70871908b2b99ef46fdb95c04bf49a3cea3446cd +TEST= 96 +PT= 0000000000000000000000010000000000000000000000000000000000000000 +CT= dcc58491c1509cbc353943b684cc1f11d845416eed26aac693391d1102504e5a +TEST= 97 +PT= 0000000000000000000000008000000000000000000000000000000000000000 +CT= 06d26d54f59a4b43d48a12acd0ff5b595b08a9d0d537b9889e38408750c5e983 +TEST= 98 +PT= 0000000000000000000000004000000000000000000000000000000000000000 +CT= 246cf810f055f4c59262edb26aafafc6836ed576f6856cdc576d211eb914c623 +TEST= 99 +PT= 0000000000000000000000002000000000000000000000000000000000000000 +CT= d0f0f562c115e113b06d3bca4d8dd4021f4504972f46719609c1c348adcd965e +TEST= 100 +PT= 0000000000000000000000001000000000000000000000000000000000000000 +CT= 211814fdda6bdd04e55416aed0046ef38e74f8d773480dff8f1149cb0ab79b2e +TEST= 101 +PT= 0000000000000000000000000800000000000000000000000000000000000000 +CT= abf4536568314878775a09cac284f8069aad62349d27fec3de629409e231f0d4 +TEST= 102 +PT= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 8b235500399eea75cb358373625bd89ee4e3958250a561b3bccb97f04fe7e6b8 +TEST= 103 +PT= 0000000000000000000000000200000000000000000000000000000000000000 +CT= 529c315f707454a443370e2b0aa056ec5b5b144e4ec0c2c48b3f1a7e0698a45c +TEST= 104 +PT= 0000000000000000000000000100000000000000000000000000000000000000 +CT= 540e189c3ea6e32ada2553727b78e6cf5f67de54fc5465a12763b36ba70e980f +TEST= 105 +PT= 0000000000000000000000000080000000000000000000000000000000000000 +CT= 5de5682500b4c5b6520f5e8ab21b1cc1bc18d0f8c62083241667fbf476f47b26 +TEST= 106 +PT= 0000000000000000000000000040000000000000000000000000000000000000 +CT= d41da6b099585e55b18b0871f6363754f7f3295b8d2fb57350b01d0aada67974 +TEST= 107 +PT= 0000000000000000000000000020000000000000000000000000000000000000 +CT= 142811e73e660ac4791e9a1c74411161fb08a60a38b2b4b26aa43dfe54f8c493 +TEST= 108 +PT= 0000000000000000000000000010000000000000000000000000000000000000 +CT= 3102bedc64b66ba99e208bb49beb5e74b8f03e50293942f28aa0e3735e961997 +TEST= 109 +PT= 0000000000000000000000000008000000000000000000000000000000000000 +CT= 91a7c1f11edb7db68187d87f2f69d35c81378316f7fce839e32573369c1c0e1e +TEST= 110 +PT= 0000000000000000000000000004000000000000000000000000000000000000 +CT= d660bbee1a0c35850c73167fe70406c7d2450e454a0886403aef10026183b474 +TEST= 111 +PT= 0000000000000000000000000002000000000000000000000000000000000000 +CT= a2d804af8263ec66f5b6439576f42b13f9d3638c237ea1b2ead169d14b41d44d +TEST= 112 +PT= 0000000000000000000000000001000000000000000000000000000000000000 +CT= c3fc622a66d26c6cf2b2f12a0b1adfdb01d66902b5ce9af8fa303f1ed2d80cbd +TEST= 113 +PT= 0000000000000000000000000000800000000000000000000000000000000000 +CT= 1a9deaa44fad0cd661009137805bb00defbad8c3f81f780f9eb632e861e28908 +TEST= 114 +PT= 0000000000000000000000000000400000000000000000000000000000000000 +CT= 530c02a91c7cf9e6889274bb9a9ff687be29f59c99fa3cb42032634e2dc7d585 +TEST= 115 +PT= 0000000000000000000000000000200000000000000000000000000000000000 +CT= 3499c0e0dbf4bc55672b04c7aa951a1129caad6f1382e54c8d44d24dd5ddef8a +TEST= 116 +PT= 0000000000000000000000000000100000000000000000000000000000000000 +CT= bcae9d5ac7b8d8ef98766bd1003c84ebf5922d328bed61c662b0c75bab6564bc +TEST= 117 +PT= 0000000000000000000000000000080000000000000000000000000000000000 +CT= ab02841043529dcf256fbde59e73f25dbc4198d8a7deb28ea9da2428ccf87274 +TEST= 118 +PT= 0000000000000000000000000000040000000000000000000000000000000000 +CT= 4fe2f5641dd5db20765017581d795d9b1a5b1b5f05052456aae4c6a3856916a1 +TEST= 119 +PT= 0000000000000000000000000000020000000000000000000000000000000000 +CT= b0b5ecd903a1c9a6b6b45838323d3298c446275423e7addfdc1bedd81af4ae27 +TEST= 120 +PT= 0000000000000000000000000000010000000000000000000000000000000000 +CT= 3759b60e23bf39e4676a3c85162a1dfe73dc99cb91543be358d635d0c74a2623 +TEST= 121 +PT= 0000000000000000000000000000008000000000000000000000000000000000 +CT= effd5347437e42694dd2bb0fe6d186bfcf8f7e390df3ff57bc29ff214f2af51a +TEST= 122 +PT= 0000000000000000000000000000004000000000000000000000000000000000 +CT= 88bb3245035c1f301d327ef146acc8a60cf5f84c3be86b4f9f74a81d08bebd44 +TEST= 123 +PT= 0000000000000000000000000000002000000000000000000000000000000000 +CT= 1afefd3ba68f063bcb86da7ab16011c7192daa1833df709262b3413a677a9fcd +TEST= 124 +PT= 0000000000000000000000000000001000000000000000000000000000000000 +CT= 638bda18b315a2b4f714907bf14f93f998b0e6db4eab69e26c04e6b325ba95e2 +TEST= 125 +PT= 0000000000000000000000000000000800000000000000000000000000000000 +CT= 6dfefd11f7d832e616797eb977d432d9f7f40c6c650ed6aadf4c0891818fd182 +TEST= 126 +PT= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 20908b2df9daf95e9ef9d64c3c7d926a3f41169202194a8525e5e92ac4b1f5d3 +TEST= 127 +PT= 0000000000000000000000000000000200000000000000000000000000000000 +CT= ff233969469787e6fe47ad8582ee728f2cd449b1d027062a30b3e4ed3f0e8f76 +TEST= 128 +PT= 0000000000000000000000000000000100000000000000000000000000000000 +CT= d0e9cc177acfce72b17361a0b89f7a05c57addcbb5c4be918b75a1d0fc922229 +TEST= 129 +PT= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 14a4e3ed2b195340725ec922a98376fce4493e92824eed5e51d0354b427c15fa +TEST= 130 +PT= 0000000000000000000000000000000040000000000000000000000000000000 +CT= 61a23c017c88e31539e3e8ca2fadedce9f4afa4dd1f5a0396edaf29d6f1f7a87 +TEST= 131 +PT= 0000000000000000000000000000000020000000000000000000000000000000 +CT= 18ea8807d2444b354d19994f79c12f4b573e79fc7c417262c7aafcabe5739690 +TEST= 132 +PT= 0000000000000000000000000000000010000000000000000000000000000000 +CT= d318b7997d7d8045237ee96ef4a851af8bce52d5b25fe4b5de9d6533554294ad +TEST= 133 +PT= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 07e9f74e9191800df7c9faf0b46aac7cba6cea13ec642acfc661e555b4b5359f +TEST= 134 +PT= 0000000000000000000000000000000004000000000000000000000000000000 +CT= 7bde7fc0d5cdcdb2c74d4b0f29b780e74fbddf0021bd998ba85da5034b8b97d4 +TEST= 135 +PT= 0000000000000000000000000000000002000000000000000000000000000000 +CT= 0234288816557414c881a3c5ae3882fbdcca828baebd9dd736589ece838240a8 +TEST= 136 +PT= 0000000000000000000000000000000001000000000000000000000000000000 +CT= e0e19b590f75a60f2344cbf8b22415a2fbc78563cc4e17117c3fd44e8b22f8a4 +TEST= 137 +PT= 0000000000000000000000000000000000800000000000000000000000000000 +CT= 05292a3f11abff047420148b61f8a61afb8045cceedd2c888e58fb4b81372dca +TEST= 138 +PT= 0000000000000000000000000000000000400000000000000000000000000000 +CT= 32b0e59554d670c8cfe34410b165a360a1513a1175f3a05606e29c0c8a014590 +TEST= 139 +PT= 0000000000000000000000000000000000200000000000000000000000000000 +CT= e577ce6ee8d57d0f22d412ccf3601ab48123aaedff201322accf8f67436da696 +TEST= 140 +PT= 0000000000000000000000000000000000100000000000000000000000000000 +CT= 5100bedc21c9b48962ee08795b653b3aedb7f57cd3e9e34b9a97e484deaf4ae7 +TEST= 141 +PT= 0000000000000000000000000000000000080000000000000000000000000000 +CT= ab5ea4dbc579aeff218633301bf7e91c9857453974dbaa3a5c24ddea962d7d27 +TEST= 142 +PT= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 5e4f33b53ae5271867d836232ed56cc36980db04019dba42873859473c5a396c +TEST= 143 +PT= 0000000000000000000000000000000000020000000000000000000000000000 +CT= 6c3e07f49453310de1423cd01d8f6766c5a6949040fb9d9e5c59f2a1d6ff16db +TEST= 144 +PT= 0000000000000000000000000000000000010000000000000000000000000000 +CT= ce24694c54147c9c36d0574ec9570477f507308806abf8908a10530a8fc530a2 +TEST= 145 +PT= 0000000000000000000000000000000000008000000000000000000000000000 +CT= 9c7239de75b01c172a020bb20c1854b097e74844a2583e32e4f9ebb069238625 +TEST= 146 +PT= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 4281df43e8629ab2af934418844de2533e89977177de1cfb5a2baa85dff1a0d6 +TEST= 147 +PT= 0000000000000000000000000000000000002000000000000000000000000000 +CT= 914193d95378c1eb049646cfed5bd428777b26cbdfdb62f8a39bc555d949b0c2 +TEST= 148 +PT= 0000000000000000000000000000000000001000000000000000000000000000 +CT= d2d75d9afdae6440b83eeba6fad5c7f2876ffc51a24ecb07f6cd045a552a071e +TEST= 149 +PT= 0000000000000000000000000000000000000800000000000000000000000000 +CT= 2f76652fced406072b843eae49c8728a52e17d2dd6349760af68969c3d702d67 +TEST= 150 +PT= 0000000000000000000000000000000000000400000000000000000000000000 +CT= 2cc04d84676a5836054191e226015c39f36a8e6c7bd66d578b8bcf4fbf6efab7 +TEST= 151 +PT= 0000000000000000000000000000000000000200000000000000000000000000 +CT= 8c51eae4a4f6e809d18ed7a93a11d5fff8bbadbc2f4b437eebc63a9e9740faef +TEST= 152 +PT= 0000000000000000000000000000000000000100000000000000000000000000 +CT= 38045bd39c33c2439214e9202db5986b15b10f0c2338bfa08cab3146301b2979 +TEST= 153 +PT= 0000000000000000000000000000000000000080000000000000000000000000 +CT= 7129f769bf3d29c1e9b8b52c6754d69f9204ebfde093ea169c219cc0dee5a823 +TEST= 154 +PT= 0000000000000000000000000000000000000040000000000000000000000000 +CT= 85b1f850908e3c25b8fc56b30c174d059954b5f3182a28589c3b144d51571d89 +TEST= 155 +PT= 0000000000000000000000000000000000000020000000000000000000000000 +CT= 3526264d1cbb1971d25b0f8e0f052c9192070928385a83631330a3ef77268229 +TEST= 156 +PT= 0000000000000000000000000000000000000010000000000000000000000000 +CT= 41052606ec9c16534113fe36d8512664886b421944ac8394f4431a42850bca2c +TEST= 157 +PT= 0000000000000000000000000000000000000008000000000000000000000000 +CT= b18f30677be7469f3b4f254b144a3da1f2f8f445e5df3bd1675e7198effa82fc +TEST= 158 +PT= 0000000000000000000000000000000000000004000000000000000000000000 +CT= fd473cd25c3ee13671d55a9f0b07731de31432893088801d15f5263ac27177ea +TEST= 159 +PT= 0000000000000000000000000000000000000002000000000000000000000000 +CT= 957a64fb877ef527fe9f5da3494747c21404c92b16a2cfc8329a9b3b082d2d4e +TEST= 160 +PT= 0000000000000000000000000000000000000001000000000000000000000000 +CT= f4f2632866fe9312ffeefde2dc35d5f9d8b411024751077d8857febb5eb88d5e +TEST= 161 +PT= 0000000000000000000000000000000000000000800000000000000000000000 +CT= 147d0d6313e8b08c9b5ce080cd7cb031f5c716e67a7146d6db547444832725bb +TEST= 162 +PT= 0000000000000000000000000000000000000000400000000000000000000000 +CT= 28139e06b595e8061e7213c59596fca89c0bef245b4c1fde0550d406394bc170 +TEST= 163 +PT= 0000000000000000000000000000000000000000200000000000000000000000 +CT= cef6e5df7587f6c0ae455535318408362ae432cd3928dca850e63956b95b5e82 +TEST= 164 +PT= 0000000000000000000000000000000000000000100000000000000000000000 +CT= 7392c9190919658a07bec57b9943d9720a91151296eecb08040b36abc4b36050 +TEST= 165 +PT= 0000000000000000000000000000000000000000080000000000000000000000 +CT= b27f3be3bc4825397a3e0698abd3aaa132a38b0a9445facb9bded62af0107b18 +TEST= 166 +PT= 0000000000000000000000000000000000000000040000000000000000000000 +CT= ee1e04bdf56fd5ec93c0069bb6a34060d6b17acd67159313595c9fd75b0ba81e +TEST= 167 +PT= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 1a2bd7d2f6009bea4ce432db7913d5b53749f39004ea16e50d04eb93fb855aeb +TEST= 168 +PT= 0000000000000000000000000000000000000000010000000000000000000000 +CT= 36697e0d4aad9c0e14b9c03b3508a38e06ba6a5c237708926689845ec157c7bc +TEST= 169 +PT= 0000000000000000000000000000000000000000008000000000000000000000 +CT= 24598ea7874ec400e67693eb9ea92cfc0bbe358d9c4a65065a8d01f1fdc53432 +TEST= 170 +PT= 0000000000000000000000000000000000000000004000000000000000000000 +CT= bba25f69940c9624e0c9d1dde8aae3d9331e40513b4c94ae4f22c10a51d88376 +TEST= 171 +PT= 0000000000000000000000000000000000000000002000000000000000000000 +CT= 0d14bc7a788ed8a51c96a4f0876582a270c35ca5b95a58fd768a4d2ac0d73b01 +TEST= 172 +PT= 0000000000000000000000000000000000000000001000000000000000000000 +CT= 25909a25f3100f3d1f3ad699569aa73526ce438b99afd53fea0d0d5c955ebbd6 +TEST= 173 +PT= 0000000000000000000000000000000000000000000800000000000000000000 +CT= a85ef51128b1b399e78a0bbdc300aadfab66ce29f1dee3d742f8266776fb178f +TEST= 174 +PT= 0000000000000000000000000000000000000000000400000000000000000000 +CT= 6ff6d76b0c38f8769cfec9a74b1a36ff222035ef69b9713d51e6aa1214c543e6 +TEST= 175 +PT= 0000000000000000000000000000000000000000000200000000000000000000 +CT= 2ffcdbb6c0331a5156ecea91944c85d25b0d6a399f2ab504c56a861f939ffc03 +TEST= 176 +PT= 0000000000000000000000000000000000000000000100000000000000000000 +CT= c6bb91ef6d26350a8316d82fa6c4fc553c334216991f3e4c6f44e1dc688e925a +TEST= 177 +PT= 0000000000000000000000000000000000000000000080000000000000000000 +CT= a9df8158e82ac3d0cae6c19dfde5dfd734421a6327d17c4a6315e88e786cc856 +TEST= 178 +PT= 0000000000000000000000000000000000000000000040000000000000000000 +CT= d34689aab7aa510201d09e96f11da8ee0f7f76720326e76cc69501eeae6b7544 +TEST= 179 +PT= 0000000000000000000000000000000000000000000020000000000000000000 +CT= f9aca45c6d891b1e1f7363e205bfc4df24c09d30cc0fc9f20484568428bb7961 +TEST= 180 +PT= 0000000000000000000000000000000000000000000010000000000000000000 +CT= dc83514c6d87d431b3bd75971fd1b786edef37edb90653f8b13d9c0f7a4342d4 +TEST= 181 +PT= 0000000000000000000000000000000000000000000008000000000000000000 +CT= 99e50f37b7e2731e9da251e4f2056d7388178000dea13df371930699c173eda7 +TEST= 182 +PT= 0000000000000000000000000000000000000000000004000000000000000000 +CT= 95ca04d5bf30122dc6b75d72594872eb6d95ea80afb4c7bd5a0e4df8b2423239 +TEST= 183 +PT= 0000000000000000000000000000000000000000000002000000000000000000 +CT= a7d79e9311fa8f78421081999edcc8b8ce57b63b673b300bbdfedf84540ee620 +TEST= 184 +PT= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 69a9f4961d49f7628c29c91fe0c2d49b286eeadbd8688cd8c454090efb5373db +TEST= 185 +PT= 0000000000000000000000000000000000000000000000800000000000000000 +CT= a903a8c0710b33c036bec768bf2f3eb19966260e7db3c11f7ed827e934ae5703 +TEST= 186 +PT= 0000000000000000000000000000000000000000000000400000000000000000 +CT= e4ef4e08b9d6e5090ee28741cd56b67af48045bea83242ea35bfc5be8bfcfcce +TEST= 187 +PT= 0000000000000000000000000000000000000000000000200000000000000000 +CT= 5e926943331dfe290146169152a93168065fce057027ab04a0fca0d6170b9ae7 +TEST= 188 +PT= 0000000000000000000000000000000000000000000000100000000000000000 +CT= 90942d19bcfc6b4612f89269ddf7301c7236765da832eabc91a6318ac655c58d +TEST= 189 +PT= 0000000000000000000000000000000000000000000000080000000000000000 +CT= e554630c26cebcdb1dc38363515201e74c74d72b35594f86e57de95296ade90b +TEST= 190 +PT= 0000000000000000000000000000000000000000000000040000000000000000 +CT= 1c51d8843e8fb78518f29116307d03eb310587007a9e18662c5f0a617893f39f +TEST= 191 +PT= 0000000000000000000000000000000000000000000000020000000000000000 +CT= 3d1becea574ae5b6c4062b2d927086bd9a6eac631dd6603a28f3456f80fa2b9e +TEST= 192 +PT= 0000000000000000000000000000000000000000000000010000000000000000 +CT= e9c5f4afe00391effda20b95452ef56694a4d990fe8160cac3702911a315f106 +TEST= 193 +PT= 0000000000000000000000000000000000000000000000008000000000000000 +CT= 4c2a8ee417313702c3618686ce684d7a434c308f517db5f2f8cd185e334f5398 +TEST= 194 +PT= 0000000000000000000000000000000000000000000000004000000000000000 +CT= 529ca256ef7a208c9384f1d22587de34eac63c231f2a08138ae3ed37d117a3aa +TEST= 195 +PT= 0000000000000000000000000000000000000000000000002000000000000000 +CT= 8e1ce82ef519d52dc55c7e0b1081f8b7d703846a3a78153558a747a943deabfc +TEST= 196 +PT= 0000000000000000000000000000000000000000000000001000000000000000 +CT= 0bc92aad380f1088cffd1e270ede2d34c46da6ca5fd47cdacfcb88309a6c7171 +TEST= 197 +PT= 0000000000000000000000000000000000000000000000000800000000000000 +CT= 3986ec57161c4404d804338b15c863855e0b0460a2232c2982921518a813fa4b +TEST= 198 +PT= 0000000000000000000000000000000000000000000000000400000000000000 +CT= a410268ac091e0eaed8d3cd3585db31c31f8eec905f61ba521ce03e63ce0a470 +TEST= 199 +PT= 0000000000000000000000000000000000000000000000000200000000000000 +CT= 77cb76748e4b3398ca038627819fbd78808e37ee00fdecde507bd7ad8d82e0df +TEST= 200 +PT= 0000000000000000000000000000000000000000000000000100000000000000 +CT= baf5afd51661a5193425e79f23d55dda66e0517c249c7dda801971b1c5246607 +TEST= 201 +PT= 0000000000000000000000000000000000000000000000000080000000000000 +CT= b6089e8effb2dabd6d19e8f278e4d2729ee2da63f1c8ba7ab8f29933ff1060f6 +TEST= 202 +PT= 0000000000000000000000000000000000000000000000000040000000000000 +CT= c69fd8857592ef7e86049dd6c17acee8d82be06a5f3f1b1c933bab923c951a3d +TEST= 203 +PT= 0000000000000000000000000000000000000000000000000020000000000000 +CT= f28bb6e1e01b830c904ccad8eccb82f9ed76d93caed23d0fcf12af2363fd93df +TEST= 204 +PT= 0000000000000000000000000000000000000000000000000010000000000000 +CT= 80f57f8c0341aa79f963c6fefee9dbe196e793ccf7be456cbac7de0ed7582c28 +TEST= 205 +PT= 0000000000000000000000000000000000000000000000000008000000000000 +CT= 91609897d5120a76dd614f12a3063b5b479f88a6c2216cf5e70393df24ee0277 +TEST= 206 +PT= 0000000000000000000000000000000000000000000000000004000000000000 +CT= 002949804574daaa35c9a2e1b2b92283a1fce44ef98a0be9528364c89f170e98 +TEST= 207 +PT= 0000000000000000000000000000000000000000000000000002000000000000 +CT= b344a3b2bb289190981f574e11fbcfad66a67575932b48cf7fb2ee6d6c36cbb9 +TEST= 208 +PT= 0000000000000000000000000000000000000000000000000001000000000000 +CT= e385c8d2c50f085ed5c6ac560875a20dc61e8979982b8af8916d82b0d4208637 +TEST= 209 +PT= 0000000000000000000000000000000000000000000000000000800000000000 +CT= bb8382eb8161f3eab968fe992c69c3913cb1409d9ad98f845dad521a3984be17 +TEST= 210 +PT= 0000000000000000000000000000000000000000000000000000400000000000 +CT= 27b5f71d66154360650e73674c47b492af77551b63f282dd773724ceefb04b5b +TEST= 211 +PT= 0000000000000000000000000000000000000000000000000000200000000000 +CT= 83f15a486397c09ac16b741cde3ccf5352baee5f02c390568c346d17cce281ca +TEST= 212 +PT= 0000000000000000000000000000000000000000000000000000100000000000 +CT= 5d94e46147d1964ed14fb957f787c7f284b157219e32c6e4d91701bcbaddc500 +TEST= 213 +PT= 0000000000000000000000000000000000000000000000000000080000000000 +CT= e9c7e64cfb4655edc898d8f82547f35dfc82c001f0aaa7d175d4b3249ce479de +TEST= 214 +PT= 0000000000000000000000000000000000000000000000000000040000000000 +CT= 1eb29d236baf3eee90d2c4f69dedced58e2ea49317ce2a0b79c95e78b99ee5dc +TEST= 215 +PT= 0000000000000000000000000000000000000000000000000000020000000000 +CT= a72c16466e4ec9ade76a946aa04076735bf14ee275ad10fab876b967fe3c335e +TEST= 216 +PT= 0000000000000000000000000000000000000000000000000000010000000000 +CT= d5ab942580f4b3950ae4fa2c92dcc10c086198af1f47252b6033f9efab5bd6ff +TEST= 217 +PT= 0000000000000000000000000000000000000000000000000000008000000000 +CT= 1fb68f637fc451ec303639b522e857251c6afae20963007401ffbbf9ff960561 +TEST= 218 +PT= 0000000000000000000000000000000000000000000000000000004000000000 +CT= 0d8f06e41682ded320520d3ebe425ae6e26f47c2882dfb169ca12e2a75b3f5d1 +TEST= 219 +PT= 0000000000000000000000000000000000000000000000000000002000000000 +CT= c6611473d15ef6ceb6e315d557c9257297606dfb94e6546ba5b3fefe432b79a1 +TEST= 220 +PT= 0000000000000000000000000000000000000000000000000000001000000000 +CT= bf178f9f25628830edf476bbea34f0e1d0c9889b78c8c5e69e2a98efcf7c1532 +TEST= 221 +PT= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 53dd21ed2270206300843acbd1bf24793feef599db74f8075f24174ef26a568e +TEST= 222 +PT= 0000000000000000000000000000000000000000000000000000000400000000 +CT= 4b5c4f59c8c272bfbbfddeab0707b888cec232f3b979299b357e2bc4a1ffdf3e +TEST= 223 +PT= 0000000000000000000000000000000000000000000000000000000200000000 +CT= 4ab66b879c54d10063d5c87eb67267a99dd68332df2ae057fabf96d4143c21e7 +TEST= 224 +PT= 0000000000000000000000000000000000000000000000000000000100000000 +CT= 750544373e7db94696ac35472a19baa13b77fa0b06c5678b8b9e18bfc8fff1d7 +TEST= 225 +PT= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 530cd58fd4ed2c82f85204868e5b262a27e36764b007a529186cb40a4b66fa66 +TEST= 226 +PT= 0000000000000000000000000000000000000000000000000000000040000000 +CT= dfeb4ebaac592429ca2009fa8ca008f29e33ec3262106ae3cfc430fdabac3aad +TEST= 227 +PT= 0000000000000000000000000000000000000000000000000000000020000000 +CT= cbb21c76e97b7e574870c87d2cb7c28e22f7e10a6703e773e1a648dc3672a4cb +TEST= 228 +PT= 0000000000000000000000000000000000000000000000000000000010000000 +CT= 5f36b1c670f183c098086e7659e9a046fc7c1298dba609e5df3c7f0a5bece6d5 +TEST= 229 +PT= 0000000000000000000000000000000000000000000000000000000008000000 +CT= 1e8f75747d24c73ec274fe4d54356d39ead2a172cd81234170dd108f6acb44c5 +TEST= 230 +PT= 0000000000000000000000000000000000000000000000000000000004000000 +CT= ff67aab735b7cf22e10624b62df21b66ca0491a959f06782fdd3b9111b4e75ed +TEST= 231 +PT= 0000000000000000000000000000000000000000000000000000000002000000 +CT= bf176e6f37b976b769e15cfeff07abcd198d8e12d23f527dd462744e360209e5 +TEST= 232 +PT= 0000000000000000000000000000000000000000000000000000000001000000 +CT= efd31eda868e95d0d651973a6ec67a56a12b53d2547c8fa2d5b15e5c4428b7d9 +TEST= 233 +PT= 0000000000000000000000000000000000000000000000000000000000800000 +CT= c27274ca8288ca7fb5223e7519267a01a12da9a3871f58191ce15f6bf1c7c304 +TEST= 234 +PT= 0000000000000000000000000000000000000000000000000000000000400000 +CT= ad5a5d33840943fb39c116cc7e880ec82d9d0ccc677b88b44c021f899d7de31c +TEST= 235 +PT= 0000000000000000000000000000000000000000000000000000000000200000 +CT= 20b83e0891187aa1d707ad296a7f8c0bd94f3b2a65cfc509a2ed23dafae3d268 +TEST= 236 +PT= 0000000000000000000000000000000000000000000000000000000000100000 +CT= d9cacfd30ecf2b3f1c35a4f683aa8bfefdec6aa9497235c46fad0ca030305252 +TEST= 237 +PT= 0000000000000000000000000000000000000000000000000000000000080000 +CT= 92435919d9e35f85edbcab48dbd24cd7fcd1d2d7f8ffbff1f544189513f28d52 +TEST= 238 +PT= 0000000000000000000000000000000000000000000000000000000000040000 +CT= e490bec4ad613f1b7fb0713a8bc8c3e13fa49ea983fc5b9261af87971a2c320d +TEST= 239 +PT= 0000000000000000000000000000000000000000000000000000000000020000 +CT= eab2f234d01c5e831d6a1628ef93d302de79a70bddb9dd2fd864a1c4a6fdf926 +TEST= 240 +PT= 0000000000000000000000000000000000000000000000000000000000010000 +CT= e0f27543ed1aafb72d8dc05449e719de8d9e92c5c033ae63a1b744aed7ea8214 +TEST= 241 +PT= 0000000000000000000000000000000000000000000000000000000000008000 +CT= f03d03013b73c3be14d9334640089a9227f12a7e707a1fdf75d041dd9b5fdd93 +TEST= 242 +PT= 0000000000000000000000000000000000000000000000000000000000004000 +CT= f4040a66e27c8de5945faf841a5043ea185314efb4b812e5105d1826d89d6973 +TEST= 243 +PT= 0000000000000000000000000000000000000000000000000000000000002000 +CT= 0fd3ec04162043e0c1885d9254e6836667403c74bae407c4b4fc51071af6250d +TEST= 244 +PT= 0000000000000000000000000000000000000000000000000000000000001000 +CT= 60e788a550fb762f4403e6b6d99eecd83860b286f3e1c61e3f9f5c73ffe56c39 +TEST= 245 +PT= 0000000000000000000000000000000000000000000000000000000000000800 +CT= 364e9ee19cda2fc4d8179a6a495cdb30baa397b1e71131e7f32aecf70ece06f9 +TEST= 246 +PT= 0000000000000000000000000000000000000000000000000000000000000400 +CT= 44b306dd8ebfaae44269c7d0ca547a286a75f355256835443c57e7e350d18c5d +TEST= 247 +PT= 0000000000000000000000000000000000000000000000000000000000000200 +CT= 269e030eddb71fc88492bb2a474499e4e1a87cc4d2b3079b60ba88f2f8e1d580 +TEST= 248 +PT= 0000000000000000000000000000000000000000000000000000000000000100 +CT= 2e411ec89089190e56c2d48de5c2febb3705b16388991f0f4fb2ba877bac7c33 +TEST= 249 +PT= 0000000000000000000000000000000000000000000000000000000000000080 +CT= 232062a975eea25f44d53144c96d9d769d10571b05660fff64ba0ec173c66132 +TEST= 250 +PT= 0000000000000000000000000000000000000000000000000000000000000040 +CT= c268dbc0114deace11f71ef965c827c38e6a013f57740c3616d70d3e561b130a +TEST= 251 +PT= 0000000000000000000000000000000000000000000000000000000000000020 +CT= f2e0012c9f41ef81ce497c77d5576e39a70643cc271489125963dd09681c3d7c +TEST= 252 +PT= 0000000000000000000000000000000000000000000000000000000000000010 +CT= 0e512072fb97e8e2696dcceccb338466a6f837df97265c5a0dc66f71748f12f2 +TEST= 253 +PT= 0000000000000000000000000000000000000000000000000000000000000008 +CT= 7c7add0c1414c47ef909097f522d683a2229a8804b0aaf5f19ea714afa0ab1e1 +TEST= 254 +PT= 0000000000000000000000000000000000000000000000000000000000000004 +CT= daea3f9abcbebe6089b50c7f873bcb75cfa162f19588bd35191db5c170a3dd8e +TEST= 255 +PT= 0000000000000000000000000000000000000000000000000000000000000002 +CT= 7259a6a622986b87dd5c4dfcaee73a14f83a425330ffabac52f5a36b5169aa29 +TEST= 256 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 084f30731a376a3a75478dc30e080862e353dc29dc381326706e59dc1e03512a diff --git a/flint/test/testvals/ecbvt88.txt b/flint/test/testvals/ecbvt88.txt new file mode 100644 index 0000000..e0ca7cc --- /dev/null +++ b/flint/test/testvals/ecbvt88.txt @@ -0,0 +1,782 @@ +============================================== +Author: Dr B R Gladman (brg@gladman.uk.net) +Test: ECB Variable Text Known Answer Tests +Algorithm: Extended Rijndael (an AES Superset) +Filename: ecbvt88.txt +============================================== + +BLOCKSIZE=256 +KEYSIZE= 256 + +KEY= 0000000000000000000000000000000000000000000000000000000000000000 +TEST= 0 +PT= 0000000000000000000000000000000000000000000000000000000000000000 +CT= c6227e7740b7e53b5cb77865278eab0726f62366d9aabad908936123a1fc8af3 +TEST= 1 +PT= 8000000000000000000000000000000000000000000000000000000000000000 +CT= 159a08e46e616e6e9978502010daff922eb362e77dcaaf02eaeb7354eb8b8dba +TEST= 2 +PT= 4000000000000000000000000000000000000000000000000000000000000000 +CT= 2756ddecd7558b198962f092d7ba3eef45d9e287380aab8e852658092aa9dfa1 +TEST= 3 +PT= 2000000000000000000000000000000000000000000000000000000000000000 +CT= 87b829fb7b0c16c408151d323fcb8b56ebc0573747d46c2b47bfd533ed3273c9 +TEST= 4 +PT= 1000000000000000000000000000000000000000000000000000000000000000 +CT= db462eec713d4cc89607dca35c4fe6e8d618c8bdacd3dd1c0a1b14e6ca8c23c6 +TEST= 5 +PT= 0800000000000000000000000000000000000000000000000000000000000000 +CT= d5229b0958734c47a8bf379ee9c028c14a979404948665fbe55d284765e17549 +TEST= 6 +PT= 0400000000000000000000000000000000000000000000000000000000000000 +CT= f70fd92d2badd0f3d7b546f55994e405ee7a21714e3dc454468dbd6c424add78 +TEST= 7 +PT= 0200000000000000000000000000000000000000000000000000000000000000 +CT= c22285a701ea88e9cd562410fddaef80d62878bb25ef3b3a02763ba8d15ca6fb +TEST= 8 +PT= 0100000000000000000000000000000000000000000000000000000000000000 +CT= 1c321e91c7dae8afd91bd94680506ac401c85b66233538e5aa829c4765f4db19 +TEST= 9 +PT= 0080000000000000000000000000000000000000000000000000000000000000 +CT= 9383243a275d070cd5cf45fa7b413f767edfb1df0225e9c9cfcd18660c21b81f +TEST= 10 +PT= 0040000000000000000000000000000000000000000000000000000000000000 +CT= d5fb4ddc348be13d12f46a6a775fee88391513d9ac33f746af4bc0b2a75ab233 +TEST= 11 +PT= 0020000000000000000000000000000000000000000000000000000000000000 +CT= d346b7f1aafc18316a131333e6478e8376e099cd1674aee749421aa3c5aca5c5 +TEST= 12 +PT= 0010000000000000000000000000000000000000000000000000000000000000 +CT= f0e5f60f8d001aea032a4dcdf32259ff085ec96eb03f9476a5775b46e4227c44 +TEST= 13 +PT= 0008000000000000000000000000000000000000000000000000000000000000 +CT= 4114c76c8a25d9454cccd0222b025f4d0b379128cd639179b63f43ae31408e21 +TEST= 14 +PT= 0004000000000000000000000000000000000000000000000000000000000000 +CT= b60d299a449af9706d4551e26a79ad4b8e0dc56f51fa1430fc91f181deae9830 +TEST= 15 +PT= 0002000000000000000000000000000000000000000000000000000000000000 +CT= a64749c04234b7d75f5fd0e492ecddc5558d0e20292a32c0253ef3e6a8ccc616 +TEST= 16 +PT= 0001000000000000000000000000000000000000000000000000000000000000 +CT= 14a3b90e441cb7cdb6a8158d0d32e720e1844c537c9fe5590fb7d6709e0bc815 +TEST= 17 +PT= 0000800000000000000000000000000000000000000000000000000000000000 +CT= 50e5d39217de2dbd3ae6c0e0b4188288013c19be1f17f29b3156218c45893c52 +TEST= 18 +PT= 0000400000000000000000000000000000000000000000000000000000000000 +CT= 96c0d0d5c72f9636ba46fbdb918178a9a00acab31d2b21ec0dcc3c169c7d3a92 +TEST= 19 +PT= 0000200000000000000000000000000000000000000000000000000000000000 +CT= 0307e04b1715e192e408ed0dfdd75f454abb5413f3a0fcc747d9c6a583a82fbf +TEST= 20 +PT= 0000100000000000000000000000000000000000000000000000000000000000 +CT= 5ac4e4e2fb25ab712a2f0410a51fc28c0ce5189091cd682f6a349054aa2342e9 +TEST= 21 +PT= 0000080000000000000000000000000000000000000000000000000000000000 +CT= c46d5dc6cd52d8c09695ad714d34a8db173624201bb4a21c3a8bf49f4e7114f9 +TEST= 22 +PT= 0000040000000000000000000000000000000000000000000000000000000000 +CT= 5e17c1e5d0472d2365882031d6f1d8e7dbe96a05bb7e35abd0331a1b35333c1a +TEST= 23 +PT= 0000020000000000000000000000000000000000000000000000000000000000 +CT= 1db9ad8f8a7b83bdfae66664dae723545ff7f59987c7a4945b149fac48bcfdbc +TEST= 24 +PT= 0000010000000000000000000000000000000000000000000000000000000000 +CT= 98319ed85e882d376b5e902577b6dcf045ed86fcf6da7e9c04bd941309718b1e +TEST= 25 +PT= 0000008000000000000000000000000000000000000000000000000000000000 +CT= 3b06f8ca569f562a0abbb514e88339678ef5f49252f7fbf336d5c23018668c61 +TEST= 26 +PT= 0000004000000000000000000000000000000000000000000000000000000000 +CT= 0dc1c0aa841fc8c65c48d0a4916d4717c4710ed1f2f40363ddcddc0e12ebb58b +TEST= 27 +PT= 0000002000000000000000000000000000000000000000000000000000000000 +CT= ce1bc5e170b59eeeb9acf43faa23ff7f7cbde82de823b6a5ff2ea776fb9ea6e3 +TEST= 28 +PT= 0000001000000000000000000000000000000000000000000000000000000000 +CT= 060c0fc5ec22b5a6c32536be381acef338d4f93c298ab1cc03d3b5d1dea6de2d +TEST= 29 +PT= 0000000800000000000000000000000000000000000000000000000000000000 +CT= be596d1e70bff7c9c47b161c549ca6ce51bea5277283f394b229c74c51876b5e +TEST= 30 +PT= 0000000400000000000000000000000000000000000000000000000000000000 +CT= 39fc48c746c570960a3ac66823cce875deffe8f1596320ea76a6fd07fba282b8 +TEST= 31 +PT= 0000000200000000000000000000000000000000000000000000000000000000 +CT= b1efaeaa903589bc4b3c084a9b82590273cf28affc51371ffa797d566ea71299 +TEST= 32 +PT= 0000000100000000000000000000000000000000000000000000000000000000 +CT= 8f0be02c549e9a503434da70aac3f7a38601306d897fcb96116800deb271d9fb +TEST= 33 +PT= 0000000080000000000000000000000000000000000000000000000000000000 +CT= 88605ad3d0be80667101c7b383090c0a58c1598f8523e8ee362ce3e3dd01d809 +TEST= 34 +PT= 0000000040000000000000000000000000000000000000000000000000000000 +CT= 64aab92b2ae069df8fa0b0b57c37b2279a9b3a85f22530f234099cfa6e4c46b7 +TEST= 35 +PT= 0000000020000000000000000000000000000000000000000000000000000000 +CT= a5476af75629c62c9953112fc495545be8d788aecec3b06df2880ed966c825d7 +TEST= 36 +PT= 0000000010000000000000000000000000000000000000000000000000000000 +CT= 31942f7f925b8e132c4dce44eb80b6b6edc7d1f408b54c62abf781784385ec01 +TEST= 37 +PT= 0000000008000000000000000000000000000000000000000000000000000000 +CT= 41f7fc22dc84db014c907c05493c4bbb439a2642434226ecd7438ca4d167a1cd +TEST= 38 +PT= 0000000004000000000000000000000000000000000000000000000000000000 +CT= d675d2e65629b2631fe787dc22a38f44ab8bcf75ec1b4692e6873b7081557e78 +TEST= 39 +PT= 0000000002000000000000000000000000000000000000000000000000000000 +CT= 43984a531bdc861c60484d90c305dc32fa8fa0a1d7faa90c202fc2066f79925f +TEST= 40 +PT= 0000000001000000000000000000000000000000000000000000000000000000 +CT= c25b3d292e6f84f4d0067ea5577994738f2a63c0c8a9a9a9336d20ddac98a873 +TEST= 41 +PT= 0000000000800000000000000000000000000000000000000000000000000000 +CT= a5b0e3fbee4314c0b583be8eeba681200be4c741780f8263d760dcfb7225d325 +TEST= 42 +PT= 0000000000400000000000000000000000000000000000000000000000000000 +CT= f3ef68b5d3d96bbecb1a84b12479fa346d6027a04969240fd7699d72f5b0ba65 +TEST= 43 +PT= 0000000000200000000000000000000000000000000000000000000000000000 +CT= c06027365be9eeec1d838270cf63cc4e1ce42a9552484eb1579d667a8e19538b +TEST= 44 +PT= 0000000000100000000000000000000000000000000000000000000000000000 +CT= 6cbdca1cb266d72a4ddb5088fab90935f7404c7de3ea03beb854ba7a5622974f +TEST= 45 +PT= 0000000000080000000000000000000000000000000000000000000000000000 +CT= d49872b9cc9726d706ce5b77e69e94cd59efff097d668bddb16a750b53cada5b +TEST= 46 +PT= 0000000000040000000000000000000000000000000000000000000000000000 +CT= 936f8882f78ad7388a8a428ed163ce27d1f2c676387c15b81ebfe8d71f1110f4 +TEST= 47 +PT= 0000000000020000000000000000000000000000000000000000000000000000 +CT= 17f0021d77e273e5fe68c6ae1f1c8680a038ee5c72fb6d634b91e32170f157be +TEST= 48 +PT= 0000000000010000000000000000000000000000000000000000000000000000 +CT= bca6eade3e2a94593e21c5f1a7c0d59f11cd4e9dd00a6ca7e6c36259a0f63965 +TEST= 49 +PT= 0000000000008000000000000000000000000000000000000000000000000000 +CT= 1ebbba8a0488ad94552f03b98c5d3b0937f7b82e65d10e1c1808b285cd1dc466 +TEST= 50 +PT= 0000000000004000000000000000000000000000000000000000000000000000 +CT= ed79e4bb8a6cab9fd7c299e267a634bc8ce35cd6574af3a01bc9266a70ff7882 +TEST= 51 +PT= 0000000000002000000000000000000000000000000000000000000000000000 +CT= 2995d003e685c40b61a280d78574e524a5cc6026a0ae5bb59573ec5818c77b7d +TEST= 52 +PT= 0000000000001000000000000000000000000000000000000000000000000000 +CT= 0f963c8daabb3def96dfe038fec3f45bffcbff906a9da128716fe75d07b56538 +TEST= 53 +PT= 0000000000000800000000000000000000000000000000000000000000000000 +CT= 2681a68decaa54f1850f6ff329f6fb73aad16dd1f6ccbf53df488adbd8aa35eb +TEST= 54 +PT= 0000000000000400000000000000000000000000000000000000000000000000 +CT= af8d99ae9ea4fc5aa61266e4f9a30ab0020b48d96afb829f7445dcfc35f6268a +TEST= 55 +PT= 0000000000000200000000000000000000000000000000000000000000000000 +CT= 528797ab443be0740caa08dede1ddbfab3820e9be676b4321aa66b730b87941e +TEST= 56 +PT= 0000000000000100000000000000000000000000000000000000000000000000 +CT= b4d536d89e460f27af8f14b3d2c6e39d7686137bce7a1daa0b1daf6be10a649a +TEST= 57 +PT= 0000000000000080000000000000000000000000000000000000000000000000 +CT= 710a74ed6173a8e5bbb5e2741fea1f2e6f5de427af003fa3e81f0749dab429f7 +TEST= 58 +PT= 0000000000000040000000000000000000000000000000000000000000000000 +CT= ebe9e3584a5a011a8f402c831696f18b5477a6c104e1b60891db6e8fe258852c +TEST= 59 +PT= 0000000000000020000000000000000000000000000000000000000000000000 +CT= a1241e6ef73947b9cf230f47e6411d1cf2ade5ddbe773b8d67f3d14cfd8e18c8 +TEST= 60 +PT= 0000000000000010000000000000000000000000000000000000000000000000 +CT= dd685c20d67387e9aed6efb5e2e0b92e76a6abb6ff408018aa78b38b8d1200a5 +TEST= 61 +PT= 0000000000000008000000000000000000000000000000000000000000000000 +CT= 97e3215699594d226e20b5196a49884032fefe9c6e62eafaa84516498dc0b692 +TEST= 62 +PT= 0000000000000004000000000000000000000000000000000000000000000000 +CT= f01b0f6fb015fd9721b29a46e163aaec2b642aecc1f63bb899a8c46be305b1b6 +TEST= 63 +PT= 0000000000000002000000000000000000000000000000000000000000000000 +CT= d0dba2364c17f68bcea2a377d43b8c8fe8d966dc0719dd7971221a303035c977 +TEST= 64 +PT= 0000000000000001000000000000000000000000000000000000000000000000 +CT= c7b2d12de072f97c19383d4477047f14557a666c06663d2eaf955cf58d138673 +TEST= 65 +PT= 0000000000000000800000000000000000000000000000000000000000000000 +CT= 507ef285b7327520cb1feba04789d4ed38b2fd5703cc3b2a2015ee18567ac88c +TEST= 66 +PT= 0000000000000000400000000000000000000000000000000000000000000000 +CT= 6bf8dc83607f593376c085f5c5bdee1c7170c5a462e4f20caefd4f8c83310f49 +TEST= 67 +PT= 0000000000000000200000000000000000000000000000000000000000000000 +CT= e12d94a98727a904dd5905dfa52e2cce489a1668a3013041994707a427b170bc +TEST= 68 +PT= 0000000000000000100000000000000000000000000000000000000000000000 +CT= 00055b1212dc17bd846eabf8e38beea66ad99150796661774142c46627339666 +TEST= 69 +PT= 0000000000000000080000000000000000000000000000000000000000000000 +CT= 54617740fd24ddb3f284f0b37e5f727f13c9f02998ebbdcbbd8cb4094088c614 +TEST= 70 +PT= 0000000000000000040000000000000000000000000000000000000000000000 +CT= 68470556fb7a3cabb4553a1cad7c5e8a07955efda99eb30e186efd0b0c35ac8b +TEST= 71 +PT= 0000000000000000020000000000000000000000000000000000000000000000 +CT= d277024d90bec99e421c7cfd7bc5cb53ba82b86645b6602f374421c2c617192c +TEST= 72 +PT= 0000000000000000010000000000000000000000000000000000000000000000 +CT= e9fa835b4ca51c1c943149626ba520f086c2fb69c821f386649316bd32a9abcf +TEST= 73 +PT= 0000000000000000008000000000000000000000000000000000000000000000 +CT= 9a4aebd90524d393a3ab5bb9f4eb1416a2578598e79afa3fe21e2586e7130c18 +TEST= 74 +PT= 0000000000000000004000000000000000000000000000000000000000000000 +CT= ddfe529d6102d66fbf55520e239614ca334f52cdcb39b0626074906527da13a1 +TEST= 75 +PT= 0000000000000000002000000000000000000000000000000000000000000000 +CT= 3a66bdc9e7abd352599d14e6faaa8832fdccf20d5dbbc8073bc232e2245452cf +TEST= 76 +PT= 0000000000000000001000000000000000000000000000000000000000000000 +CT= dcb8976c02e5834b68e8b046dbf2390279df8d44969f813539b6af2be6b8cbb8 +TEST= 77 +PT= 0000000000000000000800000000000000000000000000000000000000000000 +CT= 155cd07158b0f2d97ba8aa1ca96b7f82846a1235b10f363ce3372b8f49743de3 +TEST= 78 +PT= 0000000000000000000400000000000000000000000000000000000000000000 +CT= e7d7969b979a33a238ae685a252e5d2195193a9ee3dec27c72e4f552061539ca +TEST= 79 +PT= 0000000000000000000200000000000000000000000000000000000000000000 +CT= 63a15294a260a5027b3e8e9ab28bdb637dc01a330f2462984026f51bbb301434 +TEST= 80 +PT= 0000000000000000000100000000000000000000000000000000000000000000 +CT= 23b1349912f2fa5ba605184268073763910dbe010548c2a9cf2a013f75e60259 +TEST= 81 +PT= 0000000000000000000080000000000000000000000000000000000000000000 +CT= 28a27daec9a2effe6694e58ff41e2248a7f00b7c39b1eab97daf0639097f6ff7 +TEST= 82 +PT= 0000000000000000000040000000000000000000000000000000000000000000 +CT= a3b22420e0f14dea34087f1917948af888711be3f903086a63e9435750f7cb49 +TEST= 83 +PT= 0000000000000000000020000000000000000000000000000000000000000000 +CT= a546ba24ae2549b78dd56e87d66149d7a72dbca78a6d25f70033f7ab95f0f910 +TEST= 84 +PT= 0000000000000000000010000000000000000000000000000000000000000000 +CT= a280d51898e085d7b8affcb1382f2da75e07ef8781028ff9540904897e0ce245 +TEST= 85 +PT= 0000000000000000000008000000000000000000000000000000000000000000 +CT= 7547b9fd5710b6f3f9b47b59503a15cab55e364066d1fd9cd27b9bacea97bff5 +TEST= 86 +PT= 0000000000000000000004000000000000000000000000000000000000000000 +CT= 6f4d0be49c91e3b310308f84cd065c532dc33cff8b95a9519faf6216a971fa91 +TEST= 87 +PT= 0000000000000000000002000000000000000000000000000000000000000000 +CT= 32ea3d00dfd28a8100fb853ea6cffee9c7bb93e12bf7853f4a1ea6ba3cfdc47e +TEST= 88 +PT= 0000000000000000000001000000000000000000000000000000000000000000 +CT= 5b5f1eab2e9a9e939dd1d2c6166743678e900c77cad87c094df259f6075e8d1f +TEST= 89 +PT= 0000000000000000000000800000000000000000000000000000000000000000 +CT= de2b50c67caf6bdb639852975db99612abb4862b2286abf5677c829abaf37df2 +TEST= 90 +PT= 0000000000000000000000400000000000000000000000000000000000000000 +CT= d5c6d6b72e8bba8f9bf89b7a75d7034933dea36bac6e6181416307517ab15d92 +TEST= 91 +PT= 0000000000000000000000200000000000000000000000000000000000000000 +CT= 58e48d593c3cd98c6bdf0ec64798abd876234222b7f45b84565f53276705fdba +TEST= 92 +PT= 0000000000000000000000100000000000000000000000000000000000000000 +CT= 91b73f11445863c5e022926714848de79c8348bfc5b8034019018443151b3cf8 +TEST= 93 +PT= 0000000000000000000000080000000000000000000000000000000000000000 +CT= 9b4317cbf474b1c7ea3661f2d9a720e50911a13e4a05b44176de1011cd13aab2 +TEST= 94 +PT= 0000000000000000000000040000000000000000000000000000000000000000 +CT= f8eab7560fffc063e294965823f568840082e33616a2207d5e5691ac01c76d34 +TEST= 95 +PT= 0000000000000000000000020000000000000000000000000000000000000000 +CT= 3296a36fa1fc6c79b6cf1c29b0a56eba9601ba2b65818dd0140f75cdf1f1b9c8 +TEST= 96 +PT= 0000000000000000000000010000000000000000000000000000000000000000 +CT= 340eb62aea74802d0e11e6fbf67d4ccba6637375c44817a523daf1f58f7d78a0 +TEST= 97 +PT= 0000000000000000000000008000000000000000000000000000000000000000 +CT= b9ee3ed630ecebecc82d8441f6136b397b2b199b6b3605534c6e6b15e4760351 +TEST= 98 +PT= 0000000000000000000000004000000000000000000000000000000000000000 +CT= d1c058dd1a82cd6828559c4ce5d046a39a70b08aaf90e4095a69d562acd8a43c +TEST= 99 +PT= 0000000000000000000000002000000000000000000000000000000000000000 +CT= 41165f8599572b373e1ab1098888475087bec43c965693e4337d41e9b75b7c68 +TEST= 100 +PT= 0000000000000000000000001000000000000000000000000000000000000000 +CT= 3e0d577dfcfa14f697c35669643165835c9eaa9bd61b9e1bcada5528428885c4 +TEST= 101 +PT= 0000000000000000000000000800000000000000000000000000000000000000 +CT= 21113bb952a487e5a028291a3b754f4840192959de87dd02b8a230c4191809f3 +TEST= 102 +PT= 0000000000000000000000000400000000000000000000000000000000000000 +CT= 837ad13a75157e39191fad599c128727b08883081440d2bb6e06af4482a96ecc +TEST= 103 +PT= 0000000000000000000000000200000000000000000000000000000000000000 +CT= be33e270ebdf2863d54c1ecc8391191930a1575e431b0be547cf109dcf6368f2 +TEST= 104 +PT= 0000000000000000000000000100000000000000000000000000000000000000 +CT= 81aabcf17ff5f81d64e0ab2db0c32935ec7ccf9380df9a95bc22ccc4a664b30f +TEST= 105 +PT= 0000000000000000000000000080000000000000000000000000000000000000 +CT= 4e791a1545666e37b682e2a3068a4fab7384c33a86b07d2bd91ce31d284cb972 +TEST= 106 +PT= 0000000000000000000000000040000000000000000000000000000000000000 +CT= 99b4debf7e4a007c95c99e1cf233cb6f1126ebd1420b87753361fecf9a671f0f +TEST= 107 +PT= 0000000000000000000000000020000000000000000000000000000000000000 +CT= 5e01145b9028c959d1e73fc213409b16bb703fc098bec26ac91bcbe75b17f1dc +TEST= 108 +PT= 0000000000000000000000000010000000000000000000000000000000000000 +CT= ac8a760928e3e6500b992ce2528284b2d7bdcc860cd1c64b95a8e58f658cdd11 +TEST= 109 +PT= 0000000000000000000000000008000000000000000000000000000000000000 +CT= a868ae25824a4250d023bc8cbb8f210c53412083270a5bef073a5293b27320c9 +TEST= 110 +PT= 0000000000000000000000000004000000000000000000000000000000000000 +CT= f568f802f8646895a98e2b5a547a99ba820dac907b4263f7a2bfca512a4c8e52 +TEST= 111 +PT= 0000000000000000000000000002000000000000000000000000000000000000 +CT= 53b23541ec29d40fb4e9eced544e127ab890a05869ec1663f0cd14082589921b +TEST= 112 +PT= 0000000000000000000000000001000000000000000000000000000000000000 +CT= 0c7b960bb6ed362f70106fb04816539355c2bed64f7dd54649ed817a1c0d2186 +TEST= 113 +PT= 0000000000000000000000000000800000000000000000000000000000000000 +CT= f613214ba4f646fed69b7f1070e2b5d46551a436bb170d323361ae25a1812f48 +TEST= 114 +PT= 0000000000000000000000000000400000000000000000000000000000000000 +CT= 9bfe0344a31c33d784474a1ca8ce2c6fc6bf1416d6f7512bd437de6be4b1e881 +TEST= 115 +PT= 0000000000000000000000000000200000000000000000000000000000000000 +CT= c72b447fff6abfe6696b320b8b8f04540ec0e7bec1cc4fd029baa9f85933a7b1 +TEST= 116 +PT= 0000000000000000000000000000100000000000000000000000000000000000 +CT= 453e977a6b4b21f40ba199eb438c999cd030fc83795a4e79c2a361e5165d49c5 +TEST= 117 +PT= 0000000000000000000000000000080000000000000000000000000000000000 +CT= cd55ade41d0131df901f2a446024ec0282672132808523089d59198f292b7fde +TEST= 118 +PT= 0000000000000000000000000000040000000000000000000000000000000000 +CT= 2636abbcfd9a084dabd9529c18957105faf0cec133e692a165342bc9ee3a0296 +TEST= 119 +PT= 0000000000000000000000000000020000000000000000000000000000000000 +CT= 43e5edc2cc9413a942d578baa58aaf5914a1da796453f5278948d39a5688b15d +TEST= 120 +PT= 0000000000000000000000000000010000000000000000000000000000000000 +CT= d0da385c4954caadfb9024464eb85e5c0a4fc35f4b92d06fb846531a3a1ffa10 +TEST= 121 +PT= 0000000000000000000000000000008000000000000000000000000000000000 +CT= a40143c2b18fed3211556c9d3f33daa14fdb9b471ce599abfba365670a52a1e3 +TEST= 122 +PT= 0000000000000000000000000000004000000000000000000000000000000000 +CT= eb11c60babc90d05fd15ae90a2f3ad33858aa953f977ad58a1d4581aa0d5e70a +TEST= 123 +PT= 0000000000000000000000000000002000000000000000000000000000000000 +CT= e4a24f1f6b6f66a4e249e012b641e9266b1c568c8d593a982925f55bbbf0962c +TEST= 124 +PT= 0000000000000000000000000000001000000000000000000000000000000000 +CT= 9b1bc7616f38d1a7e402fd21d2f1793706dbdb467e3599a4eab32e92d549b6c9 +TEST= 125 +PT= 0000000000000000000000000000000800000000000000000000000000000000 +CT= 96ade7d4951ba6e4b1e3d6f58b08f76d3a3dc5f8fd61602a9ebbf2fc321cbae0 +TEST= 126 +PT= 0000000000000000000000000000000400000000000000000000000000000000 +CT= 88e6982fc828879e451ef53a62807a3298ca0b9972c7403bee5d50c271227792 +TEST= 127 +PT= 0000000000000000000000000000000200000000000000000000000000000000 +CT= 8a2eae501ca6326fbbd83d12bfd85c597b3f2bf26608437954e911369794defa +TEST= 128 +PT= 0000000000000000000000000000000100000000000000000000000000000000 +CT= 85622596d517a2c789282f428cedef7a5f6458b7b5942084f9d3a7c792fa9bbb +TEST= 129 +PT= 0000000000000000000000000000000080000000000000000000000000000000 +CT= 77ab6a501bac915eed99a09d195e5feb7947e7ef1c70db15fcc9086013b23de8 +TEST= 130 +PT= 0000000000000000000000000000000040000000000000000000000000000000 +CT= 22645db6b8caa590dee4375bc42cecc9cf813284cc88ab26dd1c11464bdabb4f +TEST= 131 +PT= 0000000000000000000000000000000020000000000000000000000000000000 +CT= 6889720874eaa5b3f301f02f7b805be89fc755186950dd1923ddffdf19d22606 +TEST= 132 +PT= 0000000000000000000000000000000010000000000000000000000000000000 +CT= 410db4a2544ed20b5f7700df2943df5f58c655bab892eac4e5e9d9b547319692 +TEST= 133 +PT= 0000000000000000000000000000000008000000000000000000000000000000 +CT= 1f8c7936234968755d5eb503b14ae2b94b3ef9935294c7c5942a381298fb4fad +TEST= 134 +PT= 0000000000000000000000000000000004000000000000000000000000000000 +CT= b8524e8412a9aec1bed4d3382d85f6ce3b63834917b4112730aa1b430667137b +TEST= 135 +PT= 0000000000000000000000000000000002000000000000000000000000000000 +CT= 3a86f57883d3a822a3424bfeafa1d8030832c24ec31b80f983ba4547d65bf8ff +TEST= 136 +PT= 0000000000000000000000000000000001000000000000000000000000000000 +CT= 76bad44bc5543edba34eeff6ac878ad202533e59cff52ea08f87649fe8c05d91 +TEST= 137 +PT= 0000000000000000000000000000000000800000000000000000000000000000 +CT= d98fbb63d0a24615b3fd9ca5e63a83e6586973730bc65552c110fb5549cdc808 +TEST= 138 +PT= 0000000000000000000000000000000000400000000000000000000000000000 +CT= 97a5f39c0981eeed83c0cfbeb3f5ba9b04d2e1bc32d9d28e15c424339ddf3d25 +TEST= 139 +PT= 0000000000000000000000000000000000200000000000000000000000000000 +CT= 5ed876afb44e2ab8a5c9268e60a22bdf422996bb1be05159e285d45e8fa9ac39 +TEST= 140 +PT= 0000000000000000000000000000000000100000000000000000000000000000 +CT= 6b77da2e5aec4146d537bfb392224713eb5d75599cfee815362c3756f5463519 +TEST= 141 +PT= 0000000000000000000000000000000000080000000000000000000000000000 +CT= aa99005f0e72cf3eedcb5584ccf7f86123e0d178d2c09ce7fe75b4f62066b4fd +TEST= 142 +PT= 0000000000000000000000000000000000040000000000000000000000000000 +CT= 5f32e0be477ec28ade9a0ccb506deabd5f177fef9052f8a2a7cbacd8ac98aa08 +TEST= 143 +PT= 0000000000000000000000000000000000020000000000000000000000000000 +CT= f633cc1b26b1b96791e83f320b41358158eefd03e203b14721fee5ce1991326b +TEST= 144 +PT= 0000000000000000000000000000000000010000000000000000000000000000 +CT= bce85c5e33f310d507e36fb5fb10dc6d2803174e3b17d5a9a79500b9a53f6ebf +TEST= 145 +PT= 0000000000000000000000000000000000008000000000000000000000000000 +CT= f304b3f1302a8a7a45f173d9fd7f287bff83c0d4c7e4ca3212950dda75a693dc +TEST= 146 +PT= 0000000000000000000000000000000000004000000000000000000000000000 +CT= 719dbbdc17aacc09512cec61b31f622f29c11d2aba601303b018743c26f51a81 +TEST= 147 +PT= 0000000000000000000000000000000000002000000000000000000000000000 +CT= 4b67109b0110868441bcfebf962e50342459ef2700031fe61d026159353d169f +TEST= 148 +PT= 0000000000000000000000000000000000001000000000000000000000000000 +CT= a285d7435e4fcf213ee8e38970b70e1e541e4f59228064c6d9cabb36e9a7b610 +TEST= 149 +PT= 0000000000000000000000000000000000000800000000000000000000000000 +CT= b13683df936b517f328bb5fc4ef39295746fefa5b2e850e352257052357b44a7 +TEST= 150 +PT= 0000000000000000000000000000000000000400000000000000000000000000 +CT= 80bb2f435911230fc40c60ceee27de288e21ebea2b29201cde8b5a177fb0c023 +TEST= 151 +PT= 0000000000000000000000000000000000000200000000000000000000000000 +CT= 52b3169af17342613e4246fad76a74370afd3469c6233534843ec4acc3df60cb +TEST= 152 +PT= 0000000000000000000000000000000000000100000000000000000000000000 +CT= 19cafc35d3ff5230bc017a7dbc0d70273667727037fb6cb6fa3d3da93fe0456a +TEST= 153 +PT= 0000000000000000000000000000000000000080000000000000000000000000 +CT= ce3d26b183e5ceb9dc0688c535f83ce82fcd54000c99dc4aa1b904fe2c1e9325 +TEST= 154 +PT= 0000000000000000000000000000000000000040000000000000000000000000 +CT= 8f1ee16f0d66fca5d6410d1c26a5c6d6c11d6638068182ff645775dd1b23881c +TEST= 155 +PT= 0000000000000000000000000000000000000020000000000000000000000000 +CT= c25207fb8aa860ec25fd12f430fae1a06c7ee5d209722c343327278b0226826d +TEST= 156 +PT= 0000000000000000000000000000000000000010000000000000000000000000 +CT= 8801e4b948018041ec87203fb4057d91cb5aae0d12d5fe2c3da89b57f36bb927 +TEST= 157 +PT= 0000000000000000000000000000000000000008000000000000000000000000 +CT= 84f34767ce04f0b6c6166caee3541c20e7b886ec61aad17e83ece41cd7730536 +TEST= 158 +PT= 0000000000000000000000000000000000000004000000000000000000000000 +CT= 3f69636d722e69e2527dc5f4f9924e8319dcf76cef85389ac99b2e7c04ce334a +TEST= 159 +PT= 0000000000000000000000000000000000000002000000000000000000000000 +CT= 4c8a8f38b7c8206241e533f9f0fad407fa470fdcf2841251f4f8741dfd1d4036 +TEST= 160 +PT= 0000000000000000000000000000000000000001000000000000000000000000 +CT= 2a33e564b687ae2c53bb82940489095eba9c3aaf59501578b73c1b6b6655a308 +TEST= 161 +PT= 0000000000000000000000000000000000000000800000000000000000000000 +CT= eff15fd2b9ab31ad930f0672c4d0829e1090ef04867e15ba560404d1aed63cde +TEST= 162 +PT= 0000000000000000000000000000000000000000400000000000000000000000 +CT= 62fc81cc6bf9866b59f1e75a71469bcece37f255d82aebf756cc9d7739c87e1d +TEST= 163 +PT= 0000000000000000000000000000000000000000200000000000000000000000 +CT= 4cfc070f8719eac2b1c8577597bf8488cce6b0f93cc4a3790dd9a1adb4fd832d +TEST= 164 +PT= 0000000000000000000000000000000000000000100000000000000000000000 +CT= c6ca176ac7529b6f2e084958b6b2c62b14bfa6936ed98f85f23a642a33e9574f +TEST= 165 +PT= 0000000000000000000000000000000000000000080000000000000000000000 +CT= fd5756b19479eda38b695a70399b196da36014ae1ef4d7d514698af2baef22e6 +TEST= 166 +PT= 0000000000000000000000000000000000000000040000000000000000000000 +CT= e01b5f005cb0f00511b90232f6fd4aa7bfc41dc86c6c83d24129f6c75c1b10b9 +TEST= 167 +PT= 0000000000000000000000000000000000000000020000000000000000000000 +CT= 82d5477ff003642905d83717c3f55b7a567295b8733628acbe4b09a9b0d6ae4a +TEST= 168 +PT= 0000000000000000000000000000000000000000010000000000000000000000 +CT= bbb0df94bfd61ea10557c8b8ce87d7f94ac44a1c8d76ac8896c76b6c8ad7f06d +TEST= 169 +PT= 0000000000000000000000000000000000000000008000000000000000000000 +CT= 33ad5f9ec582024b62be712b5fa334a4608d802bd9d2ad49dab5541832a30474 +TEST= 170 +PT= 0000000000000000000000000000000000000000004000000000000000000000 +CT= 6d216271aee5608db45d8d525aaa6576d1cef07bb7f52e0a296e924620cb087a +TEST= 171 +PT= 0000000000000000000000000000000000000000002000000000000000000000 +CT= 1cd10f271de3a216331f9ed90ca3198942e208fec018e1a479fae40512280ce6 +TEST= 172 +PT= 0000000000000000000000000000000000000000001000000000000000000000 +CT= 8a5ff925ca8e6011e0711560f592b74e10d5d404f0fd95b4d7d0b93d8f0dcb80 +TEST= 173 +PT= 0000000000000000000000000000000000000000000800000000000000000000 +CT= 05a54e868f1bd15eb253c445e3941ecb2e1fb982e554b9732b8ec61a62fb99c5 +TEST= 174 +PT= 0000000000000000000000000000000000000000000400000000000000000000 +CT= 59bccecd2d5b841c687ce6cf1a0b5b49116d8ca8139871f5c1f174da3dfe954b +TEST= 175 +PT= 0000000000000000000000000000000000000000000200000000000000000000 +CT= 995faef6c79e3418eb742c77b0a0803ead48c7aab3e9fddc8ed1d0938114a1fc +TEST= 176 +PT= 0000000000000000000000000000000000000000000100000000000000000000 +CT= ed5cd51f429f3fb862e1b5cc8cebc1b59ab0fc39fb95a18f1732701f040b9b55 +TEST= 177 +PT= 0000000000000000000000000000000000000000000080000000000000000000 +CT= fd8a0ab8cd37585652bf3bc3b1ca68570024753f1e4a9c9887512b738ed499f6 +TEST= 178 +PT= 0000000000000000000000000000000000000000000040000000000000000000 +CT= 380082ea6260573fe470784844d2438c6e26493b05db6605ed3b5eb2a6334808 +TEST= 179 +PT= 0000000000000000000000000000000000000000000020000000000000000000 +CT= de8653defdb8aa085bdd89f49f399b00b3fddff4d76931152024555b3fbe6945 +TEST= 180 +PT= 0000000000000000000000000000000000000000000010000000000000000000 +CT= 9e7782727c34affea48aee2914fb1f8e43d043bca4700bbe6641389dc1796978 +TEST= 181 +PT= 0000000000000000000000000000000000000000000008000000000000000000 +CT= 417a89d662cd869bd8dbdf9ce9a976b8ec839091d3f9e06762bcd3e9c266fa74 +TEST= 182 +PT= 0000000000000000000000000000000000000000000004000000000000000000 +CT= 000805336120446fc866aa793a7c85a3c54ae01529f1575b158ca008856e9ead +TEST= 183 +PT= 0000000000000000000000000000000000000000000002000000000000000000 +CT= be1e3d37c32e47f76031172d93c979901ccbf29a89f57d985403b4b3f0343190 +TEST= 184 +PT= 0000000000000000000000000000000000000000000001000000000000000000 +CT= 3834e1f6987e21210e389ae09d19c235a43e680dfcaa82c858b0e26d34895d27 +TEST= 185 +PT= 0000000000000000000000000000000000000000000000800000000000000000 +CT= f09c427c1413f199a13c447a2369bb50ae1282cae9fcc92da1b91ff27abe71c3 +TEST= 186 +PT= 0000000000000000000000000000000000000000000000400000000000000000 +CT= 0a9102f968e6fcf93cb9ce9db54d980ca057e607465cdb176510e4c5f5cbeb81 +TEST= 187 +PT= 0000000000000000000000000000000000000000000000200000000000000000 +CT= 4bd96c4cfaf1c62ae163479ec84976d9607f70a55ab841adfe67bf571632a986 +TEST= 188 +PT= 0000000000000000000000000000000000000000000000100000000000000000 +CT= 457db5a7d67f8f2a893e8d612dcfea647f4a9d69ef9ea600f012000122b212f6 +TEST= 189 +PT= 0000000000000000000000000000000000000000000000080000000000000000 +CT= 437e9ae368fdc663446e4f75697d007ab92bb2fce75d71f95a3f6e4adb646ca3 +TEST= 190 +PT= 0000000000000000000000000000000000000000000000040000000000000000 +CT= 533ab8105b6eb5327cea6d6b48cf5e64ca2bb876ff6a8d7f25ccbc61ae61a1a2 +TEST= 191 +PT= 0000000000000000000000000000000000000000000000020000000000000000 +CT= c9a106f360d9fe47314cd96b4c315c3ee12fc6cfafdf26f0acd87aa2b8309fa4 +TEST= 192 +PT= 0000000000000000000000000000000000000000000000010000000000000000 +CT= a15de0314a68ef44c700ef9eafbc975b11b865a2ebcfc395a13d289c638c4f79 +TEST= 193 +PT= 0000000000000000000000000000000000000000000000008000000000000000 +CT= a10de38af8a9c27f4933e67af30d7731aeb82ecd77c213a5043fdf3d4780f9ee +TEST= 194 +PT= 0000000000000000000000000000000000000000000000004000000000000000 +CT= c96e180896ed57cd92f730c0643a6bc1e0cb0ec1259a466377d66c65069d1829 +TEST= 195 +PT= 0000000000000000000000000000000000000000000000002000000000000000 +CT= 5f4d09e9e2694fbaf813473ffb82298ac1c5ef45b7ac820a2473ef25600e3f0a +TEST= 196 +PT= 0000000000000000000000000000000000000000000000001000000000000000 +CT= 9f15c934109bdf4ec30f3e960c975df2534ac2a9330e70c45009f516af89a256 +TEST= 197 +PT= 0000000000000000000000000000000000000000000000000800000000000000 +CT= 5dfdf11495bac03af29b6fcee18903ff8a8886623e8655274a0390547c72d9e1 +TEST= 198 +PT= 0000000000000000000000000000000000000000000000000400000000000000 +CT= 7477c57fc0beb56a897f6963f5108168f24893b019093b31b7f843e97c50805a +TEST= 199 +PT= 0000000000000000000000000000000000000000000000000200000000000000 +CT= 05f7ca03f78e26ab72eed999f293c00dd39d0a2bad0505e58cae732d7fb74985 +TEST= 200 +PT= 0000000000000000000000000000000000000000000000000100000000000000 +CT= 2776e188db0712fbf1368dc137f17f0e554aff44089d2584423110b09e6722d1 +TEST= 201 +PT= 0000000000000000000000000000000000000000000000000080000000000000 +CT= fe2fec490ad052c49ad6d4d11c4fa9d9e741bebc8e466884e73b89a9016a3fa4 +TEST= 202 +PT= 0000000000000000000000000000000000000000000000000040000000000000 +CT= 92609f9a0265c60d9407855e78ad234dae764db7c6701cf9790d4711b9b9df07 +TEST= 203 +PT= 0000000000000000000000000000000000000000000000000020000000000000 +CT= 4e87849c320f941b153c84076f0b5539027f85e26d31e8a7c9f98d060b94ccb5 +TEST= 204 +PT= 0000000000000000000000000000000000000000000000000010000000000000 +CT= a05284f47ab62f85dd9cded2bd5352e2139ff152119f18f68820282b18466f00 +TEST= 205 +PT= 0000000000000000000000000000000000000000000000000008000000000000 +CT= 0c9b1268a131e7a220219b757b953494e8ce8e8a062afaa9fcbe6636c307c519 +TEST= 206 +PT= 0000000000000000000000000000000000000000000000000004000000000000 +CT= b9318ff37a67cc3086ce10e32e22138c7fb217b164f72c0667ca3fade8d7301d +TEST= 207 +PT= 0000000000000000000000000000000000000000000000000002000000000000 +CT= 574c5474c80af3369f23853090a735ff213b75981b8147304547b3940dbbf0b3 +TEST= 208 +PT= 0000000000000000000000000000000000000000000000000001000000000000 +CT= 9bf92bb60f95c1d238db196a36915dcc93fdc05fdbf09f37fb09ad22cba59a6c +TEST= 209 +PT= 0000000000000000000000000000000000000000000000000000800000000000 +CT= cc0defab50ec22e171e74da8210cf0f17fd86cb178787c324d1c3a5534d1c509 +TEST= 210 +PT= 0000000000000000000000000000000000000000000000000000400000000000 +CT= 789fe3dfeb970f4007b36bd7bd32c013443d0984b1198f0bc697e365c6fe4de3 +TEST= 211 +PT= 0000000000000000000000000000000000000000000000000000200000000000 +CT= b87eff0a2f8f8b58908c627a00a8ae772918c9e6697ccf9794fcb401aae89146 +TEST= 212 +PT= 0000000000000000000000000000000000000000000000000000100000000000 +CT= b0c85f6c79052782271c7b6ec123c5af3c4792b3b69022ae9240754d33e06145 +TEST= 213 +PT= 0000000000000000000000000000000000000000000000000000080000000000 +CT= c24788b79d53257243fc735f9803a1a283b7e2af911b6cd08b5eb750610bc00d +TEST= 214 +PT= 0000000000000000000000000000000000000000000000000000040000000000 +CT= a4f77b7a96f2f4ea12e33dc7237641e968b90579015f25673b7bff1c2dcea61f +TEST= 215 +PT= 0000000000000000000000000000000000000000000000000000020000000000 +CT= b207393c8ba33fed50c808577add89d2aabb0120344b06ab34812aa27fab27cf +TEST= 216 +PT= 0000000000000000000000000000000000000000000000000000010000000000 +CT= 41257163efb5107b8d1c93ff4fd87ef00e449ea384d5c9d938e40280ae25c423 +TEST= 217 +PT= 0000000000000000000000000000000000000000000000000000008000000000 +CT= 92a67db9c7054efcc5c10f498bd9704a5d6b99de2166bf0a3e5a1c262b925673 +TEST= 218 +PT= 0000000000000000000000000000000000000000000000000000004000000000 +CT= 20e7ce1e814c7a9ecc225d38536b5e72382eb6bf10c445319517f07a1fa0db3a +TEST= 219 +PT= 0000000000000000000000000000000000000000000000000000002000000000 +CT= a37ef319768ef70cf0f0fc3d35b1bd03f4c6da5aaf6c63902f2df3e5ec4308bd +TEST= 220 +PT= 0000000000000000000000000000000000000000000000000000001000000000 +CT= 37c2cd34191a7f7c6c0326223971abd58c2323b7ddd5bd4749f96c72eaefd87d +TEST= 221 +PT= 0000000000000000000000000000000000000000000000000000000800000000 +CT= 7e0a97842baaad53004ac1c654f1bbd02774885cb434e9ebf0ed3dec7c1902aa +TEST= 222 +PT= 0000000000000000000000000000000000000000000000000000000400000000 +CT= efdbf9672a7b72312193d4b4dc2576ca44b52995251b8a015dc71f97a0bfa01a +TEST= 223 +PT= 0000000000000000000000000000000000000000000000000000000200000000 +CT= db9eca5589721eb9ec07dcb9bbddee7d7dcd2fb2a1d7e316bea90d993bdd0b0e +TEST= 224 +PT= 0000000000000000000000000000000000000000000000000000000100000000 +CT= 13aa8910264c5d069a1f3738fa94c7fa1e85bfff154bd2b8eec8873ce9cd5a78 +TEST= 225 +PT= 0000000000000000000000000000000000000000000000000000000080000000 +CT= 394b010768746ea3c1da16884aea9a394264d161c3b4ea7859e931890cc27ef3 +TEST= 226 +PT= 0000000000000000000000000000000000000000000000000000000040000000 +CT= 88e63dc83b7cff6e470aecb3e19cc1f92bb3e1ec2d6153572abaa61c5b694ffa +TEST= 227 +PT= 0000000000000000000000000000000000000000000000000000000020000000 +CT= 994ab3593bb83ab6cad8c9a49d4bcfd60f2319484b8f83da13c0e76fa7eb4a73 +TEST= 228 +PT= 0000000000000000000000000000000000000000000000000000000010000000 +CT= f7a3a03b39b0f212c5cd57e53ae3a35d67edd0a0b61c8f580b1b4f7774d395f5 +TEST= 229 +PT= 0000000000000000000000000000000000000000000000000000000008000000 +CT= 8b9323c4a21b9fc798c9a8e864ac6b3acf1a8a44de7e30cf13bbbf3c4aa00a6a +TEST= 230 +PT= 0000000000000000000000000000000000000000000000000000000004000000 +CT= 3ca30b4c0639373209f3cb8b0a6977b4184acdf454bd36444958cd4820b8bad2 +TEST= 231 +PT= 0000000000000000000000000000000000000000000000000000000002000000 +CT= bb0ffa34f002cffb6513083426c580ae6a8da4b7b94ab99cae7906648bee1c8f +TEST= 232 +PT= 0000000000000000000000000000000000000000000000000000000001000000 +CT= 0b4e83158b945090ff653b68084ea1d7029b0c1a7f79c19d5233560120164254 +TEST= 233 +PT= 0000000000000000000000000000000000000000000000000000000000800000 +CT= 387b568d87bb6f817c66ca97c466bde7aa3eaccdceb547981da45a1ba9972c70 +TEST= 234 +PT= 0000000000000000000000000000000000000000000000000000000000400000 +CT= cf28bdb3d54886398a153490366fa08045fadc5c24d432be30d6df8f9cab7587 +TEST= 235 +PT= 0000000000000000000000000000000000000000000000000000000000200000 +CT= 8e379aa3511520c818c02b88df0caa2875ac1b743d1d4d0cf62fee427581cbe6 +TEST= 236 +PT= 0000000000000000000000000000000000000000000000000000000000100000 +CT= b2260193e5cf278d257cee98a3654a0c13c802da08f3c9c99e77edbc2fbc548c +TEST= 237 +PT= 0000000000000000000000000000000000000000000000000000000000080000 +CT= 293a5a66a5c5b3527e8529468651710fd1ed0a8a4ff5866c1783a64d89fbefb3 +TEST= 238 +PT= 0000000000000000000000000000000000000000000000000000000000040000 +CT= cc61d00d81c71e179bd1fc288dd32c011838fc36110be44ca10c824716306512 +TEST= 239 +PT= 0000000000000000000000000000000000000000000000000000000000020000 +CT= 5ff4c1ebcb003d8eccc65d1c0d3a953b5eebeca12d9bbc26b3320ba99b933fc0 +TEST= 240 +PT= 0000000000000000000000000000000000000000000000000000000000010000 +CT= 10937a475c980ca4f2ba34c4ddbb8616c70ad623cd390032fd2c2328f7593472 +TEST= 241 +PT= 0000000000000000000000000000000000000000000000000000000000008000 +CT= ab2628cb2ba2d9be33b1fd631e9c0c777afd8d7201a8155769e7fdef41f4e805 +TEST= 242 +PT= 0000000000000000000000000000000000000000000000000000000000004000 +CT= 3a6ac9849184607217749b09d2ca08f9d1ca9e34723960587d0b2278f517c5a0 +TEST= 243 +PT= 0000000000000000000000000000000000000000000000000000000000002000 +CT= 8d1446ee0d0900f15223eff0c1cb4130cbc6bfb96efe5c0078d002997f2657b8 +TEST= 244 +PT= 0000000000000000000000000000000000000000000000000000000000001000 +CT= 6320bf3bde490870df0f663d94234ae5ac66ee92ed74bf53cd5e3e38e10b65df +TEST= 245 +PT= 0000000000000000000000000000000000000000000000000000000000000800 +CT= 21a6ca7bfc4f4abdaa3bb134ede214be37fe70cf9223343faa4cda08565e7cec +TEST= 246 +PT= 0000000000000000000000000000000000000000000000000000000000000400 +CT= b2bac026ece9ac9f585557f89c5863618a9ab90f352df6ee595c0d0ad8aa7f17 +TEST= 247 +PT= 0000000000000000000000000000000000000000000000000000000000000200 +CT= 47185372d1bfff7f227a9e5c27a9c62c9eb3d47f30931277192eefcde4d99c58 +TEST= 248 +PT= 0000000000000000000000000000000000000000000000000000000000000100 +CT= 9db9e5672aa28b4b71713d5db4dd0034a67d2f6bdf61c24536da1fb90d8565bf +TEST= 249 +PT= 0000000000000000000000000000000000000000000000000000000000000080 +CT= 4525778dd986d7b3874e7bae219e776d64deec907c94e4d7e4ba6d12cdc057ff +TEST= 250 +PT= 0000000000000000000000000000000000000000000000000000000000000040 +CT= 78db8e772b561268b71188bbfed2cf4190ca9e8708d8d5b657d5ae08430074dc +TEST= 251 +PT= 0000000000000000000000000000000000000000000000000000000000000020 +CT= 3dfad01dccea90a1a7f5882220550216dfd062aaca7bfc082ee50439458d77a3 +TEST= 252 +PT= 0000000000000000000000000000000000000000000000000000000000000010 +CT= 6fb0726c7b7c52601f03b0ca0fb1c0c24cb7e31403d99bf5a206c89c95c63ac4 +TEST= 253 +PT= 0000000000000000000000000000000000000000000000000000000000000008 +CT= 5d1921a486d7b5c43ce9dabe4db6dda07ab595a625fe149f4733c7d1830f23ab +TEST= 254 +PT= 0000000000000000000000000000000000000000000000000000000000000004 +CT= e3258f76dc034132a29a48c0584c6ba8aa78aafc5b84bedc8f1d8d188f03bee5 +TEST= 255 +PT= 0000000000000000000000000000000000000000000000000000000000000002 +CT= ef42ba65727897318a81b564e150f752f165d2721df262b0d9e3f8a0dc8aadfb +TEST= 256 +PT= 0000000000000000000000000000000000000000000000000000000000000001 +CT= 4e76ca69967125a9636f3554229556f6e2b2351cb4fd10b4e052afd85bebdfa8 diff --git a/flint/test/testvals/test1.bin b/flint/test/testvals/test1.bin new file mode 100644 index 0000000000000000000000000000000000000000..9b7f8c365f9df624d877824526b0bd27573ad876 GIT binary patch literal 153533 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�y@5s0Xuv-xjgfo?@fq}05AQuk1ZlP$d4mk7Mf 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 literal 0 HcmV?d00001 diff --git a/flint/test/testvals/test2.bin b/flint/test/testvals/test2.bin new file mode 100644 index 0000000000000000000000000000000000000000..fb18989a5549ef155fae9b8fee08bd51c94db1fb GIT binary patch literal 255477 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 LW4m_x?62DVH0ohs92Myuee@s5b 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 literal 0 HcmV?d00001 diff --git a/flint/test/testvals/test3.bin b/flint/test/testvals/test3.bin new file mode 100644 index 0000000000000000000000000000000000000000..8b479f562c5f016822adf4a863b129536fa29afd GIT binary patch literal 869492 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%0A|3Ht_yulvhO}7I}WcdhUKoU3g)4m$Kgvq?UX$y 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 R6m9P~#3d41>-6<28(Er*9z>uh2#@JFjs z+n@!o&7~xaRSGaU1mO~qvNWC95w(b4%wby0}ZvG)~!{2um<4+ zNJtlgSq|2IxCUOZArk6+b1n_wzeF>Pg7eUxki(IdA6@B%d&tKNbKj2+ONd5oz!vQSc+) z$ULcN+VJ9{KGE!nsV3P>k28L*JhTYYIz~{*RymKIH$qm-FCvkd%X)cQckWM*2T%1- zBE+1xhi8aUj&HKLbdR`0-E+N!u+a2)Q$NPYlZy#^K$0UAw+?5VrwLd%P=10rXSiNtv3I z-#K-qPYL8^fQoZF5miz$7=#ziDOY_qhZ&b^b}lY1e_2`JP3V9edvc^#E2O*C8>Bdd z^BSws$s_`V)&ERQM@*_Kk21`-){*%@o*H+h_t^jfxoXI4d5oolVPexBh_)(f0n#=) zf}ORGz9oH3K4J&w?)i~8F9!8yTkR01#C@~f(mt<+jzI##J4WV)eP*5@U>tsC*_eUK z3`4jim)yMxr2`odq;fG%xliGrehi0`Jm;3a8LyZRTNF&OD+vA~L+W`ozP7nsq}NYZ zSMF9+lUp+Rp;TnS`#>;D-dZvB*MxZ9FcmfR-f5r^$1nz0%!A}i_VrS(Qq;j(q~ha0 z7ul~{-Uy+tYam%vnfQuW2Hlm(%U~}`@kB%u9WVjytJP*CNuE;jIB>?ITXX?RcCMWp zTdac>Z`L~C823qBCgezAmP7L^MF8P~qNn~CDJm!po3Qk+5uownSIc-HmBL@JODfOh zBqUjKT6_TZHC5024SHl3Rj;5-+O;(vX%9YfuYyIr!e-Y3V06@*m5hk?N#lxE(Me?D z^yo7F{h9VZ8P4sm;vQ4$q%Yz2Y++r!^Z`#(ItaQ_i1*I_dXu5dXqrgKPKi88hPv(Y zC`e&6*oGn>inzU)gg(t8@(;zF_SSN-4mziA^*OzeR{&-eO^?Gxad?r5tR7r`4I$wk z9;*+(WBXm#_t{;Yi#Ni+*nNil^LWGm6{C79L*SC(C~Qh}A4Bih=W}DLKUuHW3^Iv6KCJwIczkz*4o0#TuXTE#ZveO#k7#K8HLZdj1(YK-!yj$8 zzphb2J?DF)Si;BtDPAI?RRuLw#h7;lgN7TRS1B%ROY%tIRu zvmFqsg#l}_K^h-IuR)R!`hvVgd#5l47nAjPew$N)<|42PtIYPUmw^(vUl0P7OJLv`X& zktlG6K?P(FP9k-u-;G=Bv93;Q7(8DXY5Or%r80JMg{uAmG)fJA+95?KTwkqWO*X@1 zBu8EbXGVIap18h!@&@LnlP*j^^*h$V7Q$2nX=*AX61_p0bTUIMt;4yy4SEchsF1q$ zaS$KFAlXj4&f%P47F`{ip{K{^rCg3_S01R{RIOknOw;XtK< z5hPsEJb|?RTt^AA1feV~=^OBCm-pSHSCmOciuSAUd@|yVI<(hSu@;`eqvzc-AWys4 z&UT5gQoDpdpsi7Gwy;3kQLobr9}+y|Xd_jQVeu*6N6z8){4FA?y?GSuTWq2!PAtU8 zXq8%rK|t#5kulPK8bP5O0Cc@9@H;}~;E@Qfw5-#vGq=Q-YZVSw%`V}x2&T&y__bz& zCcn*+X{;>{x&}L5@1B^M-VP3SP68emJ=e!%1pO^}`Jxe++U?Jc)ubCJbS`J7Ddvd` zz|d8zrZs36lP2TRAujT=gj)a%ELL*An!Qol&@Mfn?47T)`2h$y{<@_* zzh)!QNnXvdO&9DA)kQXb*cjwnzLm+pL$dZUc^|^%+WYxf zTm7sIc`X~4F6gR0sn06nyPZoLWXl?uDti#of2q-d1j;B%4t~0=Zc_C1Db3OQ&$^^Q z&4sYhx9OTPGox^m(KE0#zm(62cvnmMdt_A4zuKq`Du7cp@X19kQAa=@eY7}ym}^~E zL+{5M8e+x{k>#Yn7@#(6-cC4jKAZulA^C~zX<+~5O|$L%=Nm6VWcp{3yotnfYNXpp24B1*2?$6ajAb)30ApxD4SBlL zE!ZIN5G1^~*iI&W#Q4I^fLAzPh4Ot0ul;frK)Jc^l%5-gS5|YV@ZU5 zwP%JXiEJ+n&$&S+CoQOjqab($1-CU8`qxRESlbSW%Kfw2 z7@o(RGI{>#$*~L{x3>8OOv9SyEJM5v28%4Yz96t&p5B0@_XuxtV6pgU3;BDh7vbAy zkT?fPOXjF@f?M*Yl0b5kA(KpR4{UrR2?Uu>uv3_X{oyM$9_tC{DWdvqCdwIBu=F2& z_%y=8kUj@5Lzid|aR*9MUR!9Buo0HNHvZw-cEk#*`Mwl`b71a5`BnDvf_*9@%atuG z&4*@DwoX*M*bf3Wk-X{;YV$agN*gCn2egtHb@TbmQnpT{O4cCoT2dvsZ`QTpCl3|V z;F29c3Rq!YhOo(%+<4f)HH139%(j777*wtYmc6~6+vdh=b(*~pXh52ExYg|bE_>wj<#CzQSFG@eneA=qKkBl2r&$ZB86TO$oPddkQgCsvS)+ zR>=N+sezwLUsyIBKD_f-PTRlB|M$^2UoVwpulxq@mLqpWa)Uww+`OGf*5?eH&ukP> zUw&2(5tGz5nZ9#8Nx#2^UJiLztdb~j(f%J_^nSuNV+fFdtq*%^j#oXN$I(A#-O}Fc zB|sC==3EUL#EN>Me2CMG5asZ-X!;@tnYRrUBcwD=dC7xtQ>w-a6I-oJQOuY1W6g?g zLuxRZjm+!-79(^&0Sg{Qsg6+d{m|1EEPPy*Jh4uqL}^B*F>fQW1uxCngi+#Mxwx$u zPI1`Sqy$AjxjCRielNXZchvFYu)|Dxh z-$58$Q`&1Xf`cz;B{q3dh9bXTS)pM%UE?33RS|a=s{G`q^!`2EFfV~bS1dAn)TCas z+W_MKwk&rp*G|67R-;*BIR24)o9tMxs31>p`?oHj(TS$K5b8|}H?Z;HSkE~2#IevO zf;c$e-o`S5c6!-kB7td-jg9Vv&*FlRR{)TNYMIbn$dIIiO;OV6aI$!QL$Va0k{ z$_3kQ>HCq;GA(>;ORHAeZbm<;o0I_R49HVGm6FTF&vXC^9Fno@0ly>JwQ_$_e7 zp=cX4Z09^V+|7RMmGDav|AJyb!j40G%_aVC(pgfjyOKRgeY2mE?M8ID{Q7dLcZHD= z$inwX)iblaFCzl3vtVd;xz+}hamMXPS)D;tZckm++l{vj;ubn-6DGI`Ky8?q#{htxM$&g`n5qt+6BU^}|~(2Lj-5O0nY;2_FPnyFGmrlMihs8izg>_>N^+$L3n zZ>^MRsH0|=9aM5?@RcE&2nE>pLHNs7OyOVH zDpx1*KWLkfMm8A)KO6Dxj*Y&~jOi7YYZ2#HNgH1L#LI1Kb7|kI$9qFul$;8TjW_dn znbj-78w~mh^uVX%FNB9_(=_c{=sWQ3hrBMnSkfmhth1!}5<+H;^-JD6KDws;^^$i?lLlj!<%Xi`@TW*A zja=nEDe?PTjRbnv7#OnnGi_qC&6awvw@aWstnl|Sa7uBpxa%4gxaO2~bJYNK%>nf# zF_Pp#nPUKVw}q9P()6n_-?+mU#bug_9fdY0T8@m0Qi=Pg*iRwxmZsXkQjJ@s9t2;H z-@6kt#1zfZcZUw_U?iJbp7F66%ZNkzl0e4q_stno;;JzhV2C4^Cf!m9*%s-@xXUm4 zB_zzF=DKP((fY2`Y_;ax?UegKTW-<|CRLMS+B#B21JvpY83XvHVqCO^q$&!wy8x0vZO6ag_$_lV)3)$mTiD46lu4O0uyEtE z(bxP@s)SW!cD4fhd4ik>wbiw)fnsv8g0Rq4X~%nGRZi8*3|tNW#TxWRDj!!i+|R-c zs#vu_Dg{HuDv<;J{z~opZas+11Co2ZJWQS-}jK)xQ#~iJYGeucduPrkTslM>lkms4dy80*mm? zc|kZ}l==z9IWDUTuXk7Y zAHR3|YN;dm34*L?T2Gjk%VZ1<4**Y#s#Qsa9f-?ZNygkDl5~2jEd>Q_7YN=1Ba5{h z5hoh&WP_U**XDnn;`SbT+252VVfdJdopNd|iY^g)}$-_1%x!t0g! ziQXAH18yAKkM?i~zl!i*MFN01PJ8)o^u7zD@)!kBr{_ywbMHX#_QOZjn^3=P)ROG% zV4<@);p}L633g^&Q87JFLCY=8l3m4uo8jiq?vKXO{umE$s0!a>Ig|i}*|wH;(IEuT z03rDG63m+2yKH4#W#A&b1CPD~Bg=B0MO?FgdWEx&r8E4TA*x0qtxqHl5mV>xHbefC zN&LER_ZA+wn9z6gs8Gd^y~@q z!0r*dLbkr)UDV&yO{U@Im&K3gscL)ciI5@aD@`C;qd-1}J)C8{dEU8AngQ(D&|?&= zEGfLrTz-sDN#vR6+8{aD5g-E(eZyYh zMC7Og=k1F_ABqMrCgXH0A~;G%=f82b(C{}v8+e_mGK3ym`{ThoE&ppaNgXo5Qw~~k zbJmTBNA^>_ufd6;JDz0rMBr0;P8Sm@dU8qdB&C;42QiR4NgpND{tPXpthsGNwuF=e z$c0=oRh4FYSiCP zl5U(#a{@d?4nvupM?MlZO!t{X#rBn?a+_BJr*R;fUgh8xvOmVy@BkV5&^GUrSU<%> zxJ?wR2tvOe@3%?**&}I1jz(_0uIO(C!?7+>JMUgg6}KUO)8egfT*hOYH|WZXGtzQE z(}!oW^|E*b+pZ)0bakv|D<5c^*yCZzu;6p=%YfqB@D+IFYtYZ}NTw9&e>#*Dsz(42 zQyj|}GAq;z!>*RUZkOYe5khbQ2e$GpDsLTY^YKW3nff+2*kCc|(7T1`DEG}ee3{~h ze=A@3NY-Cg$UzXWH=XX9UH&-Gu-S=u zLNl7+Impl@o}C@lMYeDP2e-zre;3{;+F&`HcM-RB>=Tzl3n9w8XT+<_8yzfIYz=+? zK`Pa`|JOIQ>-MH5JFba9$#QvI1JE&fyaR>90;get%Ky zw0e~DJ9>jctx@0_`Ib?3-@lPHcC#;u0xG3u{aaYzqW+;%4q}j$alls}%3YeVc9GL6 zg$&h23=E`%BTDc7jvL0a{A9?z!PggDHjj&i((9_rP4;K&VL8mE4ZW$8P$%&Rs%_P8 zCQgL@@kwh&(cf4f?~DYW*|dfe7lzowPT(XhTsL@)2?ffIo0{@WOF|>8x?Et*<4C^x zZG_I3Cfm)xddN8?8u8}2I>4EA;1)r|XxdCq!o??+Krn{WdiXl*UHko%1W#1EQIB1G z;a=JOw6rU-f%)yA6+*V95|JT*&8}a25uk$VNbyLI@hCn2=ZeSFQyCg*s`4B7Le2iZ zbR!*zg&0}y|G;r%qkpLM<;NFeNQ;%w0V}%J3(EB%q>FW>mMi|UDQ8mus&fziHPl|} z6E%imTt!L zLrr1uo~ij~Zy|eAVhYD@9Yf@zGVqb=N>HVlUWIT>f5NXQH=GBr;2Ns5aqp`&|19OI zX2m+1llbgjMW~MYy0)2#`RXqiRgQmA4EA*b0saqB-(Ex8<+fNl5_x~0nh8!Q3KZn9 zClN+#@=g_|Z3qrV?D{5A!+T}3p|(A$!#RaTw2oymg#0m>ht$@+FI}z2s9TZo$6L@u z_T3>e053hdjC+RK7P3p14o+~bEv-Pq_q-t4ISK_@Y_CB!Fz3wAjtf-_mmeM+0{59# z{XvV+z@)rRy7Ws}U7XRV1(JIaiJ?tR#W`ZuK#8YB?rykret!8#h2@z0dMD8X6>Q&l zxenPn)~uZJpE<)^Ai-_fd?-G(UZO}(sFSPF1e}z2L zWbtL`_oh%TKt*(QPag9fXmeNH2k0quB(?W!7Fv4Uqy8l(mHo?V$wipGYqIFV)G}rPIPN;Ss5^0Y!AHIU`7S9*nHv6v>Xrr^}GU&=CUZ9UMQ$4gdpAxhoy#AyH zHJ&9Tgq=Tx$Bnqs4_~ooJTZLWjS~<@6&xb~a>`e-p4?@;o*ihrJaWjN84S4Ssh@0n zmddC!vMS4$4KC%%!9dCOiTRUwX*NQs7#VQhSZIpmAXC>)ten(pWqlBdbvtW*oX$mk zfq~1-?!GWMeJXKVg&urm9)*Ks-HGaq-Qc&~qi(a7VENH0M6cJ1J=~yO-YxP}y_uZt zsixdXEK`82|M>uarASVyGp=v&xh4mt}av-391kDMC9cBUZ(eb zTssOug&!oD;h3SSHpz>eA{1yo`kWm2y?wGU`sRup?{z6OUFfH^l*6XUZYtG(1rGHa zBs+LDs@y@6E3I+2Bc5ol)w0vO1R{a<(8EnU~kNF#Zq?5@`NpmCG<4@Bg`4&&nxu`wiVl zbKIKRDUa+a;KO~^e{5&>Xj27~d6AYsmH)aPG43p!Ut(;l0)5+H-G--(C-s+3<5(Gf z0e)Ogs4tMo!O*hoe6k_!=e3Uzxn$;~MpS z#Z2+XLGE>vta$&t3^?k$kw492VyBVOIa-WiEZ;QM%3?xjlaI=w5mDQM+WjYsL0!}J zG4%fy2U}NXg@1n0Nw@dLUjoDl6f4W01=7hQ3v{OYG`VgmunWNcrw$Gz$-R$AEBv2D z!9*z+*t@5p$dO*_9*lheX-$QvH` zYw{n5a=PvqZ@p6NQe`dyxf$(7jCR)ab~I*HR|b#sUhiylw2gYsJ8W8*DjtdNUPgM*TcTaL?|i01g1$WI*9Y z3Ov`U2HSX-s<;5R*u3Mn0FnY|OnDCHHlO?Ch`vqC>){ARzIq7JxA*`m&- zO0T(tRD7a3TP8DIIs^@1&zuh2xNQkJh813-!1tzsHuZ6BM;(RV!$pA=HVm)>k2ef#Nu3L2OiZ-frnEhtVUbY*9^(x-JkwW_+_8=l z!>3@r?pm&Astk%inp*q8GYN;oc*$lmW+aYw7%sdR*w5h!i1pN;jk1BnHP8SZ^1?lu*E_e(j*JfNqZ*|W&% za1bWdsdjz_;TrfZ^RPq=WUp+3+KF$C1T6!Q2utr{I|jLl-)9x>bjwC&+)5;lpQAmW zr!)1Vf8gHOgKdFCJVckoK>3ibTzxNw8BB*VOR1vl(1ZRzgCl(6$=TpASWtE9;W(4d&!PmC4#sp476~$TQdb`b-@8F z#O(sHpyOWne44vcUY3ZD@w3?AzY}X^i)=5Xc#BvqAfHD;1v&IBBNn(oc?VY#_Nz_@ zV==gG-B0=Ma?X&g1qM5*P7g^XQzzk39;){PI-3npPtkhT+v~%Y#|?uK5*w(|(++E8 zAlMDZJh&##iRu0gGiOay*<@0Ek>bzvl5f}a8zAv5gTo@yMKgP;5)!RzzY1!!e(>~8)g0O$G-tgoFy?qjimk>x`(Pj3 z7qQvQR%A4e6))TB15@h6)Ze29JOf2+jH?52-?ghAfVwe3~7fR!x4#b_)H|mJtLKbza|2azJO>2qVF?lI-HIzTBB|XlS znifN>s3pyR41Cf26X)lX9cP@kMc0|c9{azv?b7`Pd^TRiVf#l(p$2H4gPzqC z%)S)q57Ev6h{$nO%qF6GfUHZcuJIl@{vGV^)k1^>R-Po7#hNRH1FT_-jt59)TB6f9 zA>WRxQJ%&W1#2r%wSE)2SrNsmgBawOQ0c$Sy3Zn>(aAUT8gf%uk6lwK@EL`r$QA&VvH@{^1yJlHwD=6GEr9$XY zsyDfH`jm3oGDkzAi@JzPej=K65DZ@6PWl+n&GRcjP-EwJT|+aNYhg+c2aX_qv&J2QrDu-~0or+~*xuP{H|mGGO6Ktq!XRb?WU*LM-i0 z0s;dQTlDPhxCu+^<1Q=T>Ca|?bwCOS`(|ZJxI0Z+Pt>G13Kpi%m79Lz`mR$`IC12n zg(ZH`oi!+j;%&V?X1m{hQ*Tw%YZavMFRdpag4x=8VOK`LVb+K7XjXK6`(%AxF;OtX z3aS%wsz01q{V{o=AL(v$dLAb8c$!I_RbPTxR9K=jaT z-DJ@RK$5j)8{-rST#*z!+vqx)Pe*~1F2YopQt%}L)&~I`iP4v?lb2fhX+L5&(uIh6 zRgWV=&5W7dV|m3;pTrfr*5)h#qAd}8H-+x?Rho3Occ-0})I|-Y0&Orn%Tnya_bBt>>GMTwMoWdQ=PEu{9C}-H0_A|@Fe$@i`axUq=8!kFX==GuW&#%RH6O+l+$%{r6 z3~3}WG8moxc#|J{k3>CU%HS$>z4VYAzN;}Gz_UH&h<;5u=VRCJeZu+zFY5T)6FE9a zCD1QEh1Ee+WIf9ud^`^45OA$94xA=>(H~S5gR|(g8k(tp6YHn;0Z%z;M;C+4#b3hXQmm$iv@eaXB@c)p}t|Yv<^$DUR95l}XYe zYOZBh8HN@e zB2v3OAB&!{ZC($S!1u^%UcgO`VDurW?dpQI#E`mf|Nxsaz-LFu z&x`$pR`EvRwgQpkWb756gUs+CDQd`Y|e~pKQzOF-&NWq3p1uW4EnMpDz43;c?*`@12nE^g^P^&V&VSYIp^?g6S zHn5Pj^l2=WW#(MC>C(@N6yz&hHlmmyqxCmZ0TNS<`$Mx=uCTp))NNRP6^3AenCm#2 zeq6mzdkB4)JPy|}(BnOua>92@=V*m;84~s8FVmJYlsEC;z;nmm5w~S)I$@cH2$>0C z+Y@SWMY6UCK;Zij+o6j4_T@Z<cc;!Ilrn_u#EV#kXv*U(B!SF9GnFF! zUwBjA*pq4UXFpVnEEOfQuUsnUkaw2&F`8T-5QxjZmA2=kJr&2ABvLQXq=Wm?`jQ6!dWe1yVn4-KCy{Izhm1shOm_}_5T=lWz zD-E@m%Q4GUbB)REb{I(s@DaKDX1Rg+7czFE2d?AA=P-AD+tj-qAC$%KgKmb41t%3MqD)L2O%(9LNyAeoQqLEvJHP>96 zLXd&FiE(s=M2A&N?5;a9o`FVdvDwRQzc`@Ukm`zfC|aF8gaHNH-9@Rmt&(m(465?<6BV+@tw=}Wc5EnI}6BY zg0Wp@SXBQO22X=x#=MJnMmPqEQiXp7c`C5|?+fQY)uGprW46fMCmx+S*(zZo<97 zrKbXpMQwe#nVZAV7s-F5xM5D{7l{<@ZDb;3)7}oZ|4z!9pTj4@bd>+01>Go5{T75L z8!;ZwL$n!CW)T!jd@8sbZH!lZf4iCOs)Oe0KRZ{TS_wkFPBif5XZS)3VCdSJgy z*RTw4h8A>$)iuNuTHbv7mWOh%NZ3u2uVN1?8-$Fhw0FRSVXexZnU4RspKz66KM5yT zEE`{Z;KjP*tXZ%e9W-aMTts(DX;brXIgQk-pVV*PEYAO+7%z1CVIL7h`8Y~>#@ieSE64jedz^I4Rg6-Qs{Z2* zr5k6wk{l`MrsgXgc&UA&U%7Wt6Vu%9j0pLE16hnf$)iexLKItJij+T>0mY}LvUT4c zuuq42USLW2^wy#|nDjU4;CSw>W%fWuYzDG#D8M0BHaJ_#KD@a{zT+b@oDCCO;JK|L z4R7~yRc1HvXtz9qg-JCEE2BQ+n|Y!x(aT5_zJqE7IVas_e;X*N_{vmoWgZgNrC<(T z#yHMA$O_ybB6;K`8=U2?!ERnskSV4i`7L2-o^U+-3OfKPHma??g+b-(ReX;65YgXl zJCnO-y8X}>r?_*(hL93=a*y4`@#jb}{F5=lN*EHh6YbUfMYleE|8&-4AImr-d4kAe z+g%OOdGV9N3XSE>Z6|BDZzyyX15-7GzcS>&5)ja3_49g_1U+}eVy~+UMJC3*8CF{` zWjG78=1u*Rdhblz`3quVO)rk>y#XVQZ!&87B(XhaR#4drns>cv!*Qc@D=s<_jJmtS zgh`v!%!?6XqO(k~eeGz)!xVI-sKatQ4a%=s(Ny~WOU#NtMH@1H3`=1Q0Gm7-V})9{ z5n=t(S9@)D-1C!NNXsy!vOE9m-y1@6Ojc+k+wwW@(>J;-v%T*40|rXR=b--tD3q`I zII}X3qnKBubqr6zkwpy_Cn=m22&--i_9&VcQ`V-Vewe=cZXLqH8Ky{Wja_$hCk~v7 zq{eK&unP9ndgrxcIg{2*dfh^9sr+-GSkaU!k!RGHl1*zYV1*x}!iEVUGB7}c5sx`e z6Ty}{BS#(+n}1mo&rlP?;su-+7a0C{?CMiit8ds@Z0XYu7Xl&#v3;%iLbD|4d#4mm zy=@9GQ-_ZvmZK9pyd?u@&ioER<}+dWxp@6PwGs~a2(mb30eNckY^)2UHIlsScnk*( zJUqvinXP7Q3fCenTeq`AG5z_}o5fF7i|qZ_hbul8Za*$w%D^1e2Vv!~h0v0ytF4iK ziPGGI3DopA1$9xBP@)){)91PMP$TI*5i=M6VCBD(-orbWtyre^U`DTLcqK%X`8m7($GpgGnc?sj#KG}Z!bMJ4n^ z@#;;Y>{*@=3Z_R7(ol=V+c&?QjZSyHv9=SC9?izQjQZTz5Z&PhiYEK{0wkMDC`bXi zRHX_Lk)>d=;yT4tZCt-#*0V$JDv2=RI`{v3Av(W1;}*%~4L2XypbHOo84kRJg8#jD zA1qi}7L0K+V3YKpfaTYS%ff#gtj^jdY&uFvtFFol@xu&j?ZMIaX3VuPda-W>SG#*J zeSUNp2-Ai%X~yO=)KqJ-w~7ZUtaMmnPpHe^q4>MR>|98*_{&&0?X6&!%V1&2yUl4l zF+P`G3kxXn$ryo%N26C5{wWUa>zCI=e2CMjpq@=Jo^)k9X8EfnE^@>r`Q5Vr^Qpbt zW|>DoYYSau`lJEJ58i=$1~}GoydlJPCw{P{GmU8}8@|)w3>31vx0MM36=WFR9+~bV z%6)2}nPGTX+I_-6m%)@=r-w;~=F7g4B?Q}aBO5uQrcGufpIT;p;uE}in0CibeRdbp zjnUZL0=V||6oj!+4vzzIfYe#zuaC;iycW5+?YdsX`>SQZ67)VI^ncYvL0kG~;=ILN zyTQb@?73_0jdGv)1ts5Bjunu^iKWh4Z@Dm|Vw0;mIN-!OB00)sIbV?x9URE=z6l^W zkj(mhEUA#}C~);IZag*SESIfC5z*Ih=?x^CBhl7KheZh_u(x<&#U%%!i7RRtD2Z#1 zDH_=YLX)iVY$!wmF*v(OB%d=h25vOrA)vdXD6{=@Yuuyx{E8(am(K{lq-yB>8%YGi znk)1wi|X+BDjwros9g-C?!>YtKTmydY7#`ju4ozMrWaL)TlYbbL^TFZY=Y4iw(BLk zeDbeoyCI)zH-BsDG;aT`;#9CcDsj9~NM=f;zd@5D0O&+;JBZ^2z}P;XYw)Wjxu3{1 zt~Kp4r?!oj#ZFg)OBf0M@QgFXgDOuBE|fxfaP0b00So57J5{6*%T%u%)E_F7LK3+= z$~G!cS?q3Ud!X!1lY|*R`Cv|^1e?Yn_*Ty=@*J#(RG3)NU*bzSUkmw*XMRp5kql(R zmngm=I$tP}yiDF5Ia4FoSm{O%w65ZJi%v3r)DVhEe^RqcBk3mlG(QLhkCH> zp^ZHTNO}@*t4LhZo@eGDwpYakUfAq|)kBPVC<2-fOq|^?Z;e$wO&j)u4M!Hf<5s0L z@2?_*4x?A#BBvS%_$Yo-r3Wtlze1{iWhK|X^oX%&pxP1SUCyU)6Kf{_Qesh0*~9bu zOcX=C>w3qzVzg_I6^-p6tfXcUV4%*LEFBoN;Q z(32OSIQlNN6@Y$PjX&r#H`b4P9_9W1Y4SU8TxEgMIvg?iYXuJc3`)nO7;?6RT`*w~ ziH(Xc|CM_A#yNM-Ectzv(mv@t%V*NQbhY+7UG*}TumxFsxFhT|xCdc#l@3?3R`*(x z(j%dL^uYzQiahf@ZJypf|4wi_Xy~WHxBFkG9(=A4)y%$mMMKPmeXiU5HCSLpEZoaCgL9c5V2AkK}*|o2L!veewzyYRxs=m`KL8b27;yi2AcgM{+Mf6HtwLtcP^_T%AoM^PwBeSM4 zHFz4X12cIULU6L@R!N_4^}QYL?1K6!qOR9y$|A4 zO3adUw&h?N-sO*2-o1EDOczO17{^0N;a=}x{!H+$u|VIGIk$=90YHk?)iAtrndi^H z{P`yP$7*Gq=oW2A36-)MQ}qWB45d$N*su|s%*8ZyLvWFbUI@E}zbf>Hk&n(BmA9P< zsS=VH82UTUjXoamYEerO&fr3<%T!gf8~_JE-HLr&Q-k|W3#HW2A1{>=jm`tt6(u)= zjWdJ5>Dab93A~rN`A=>@-tVzH>y==Y_D;sSQv>9R_%+-#x~G;=$y9foBwkK<452=o z`GnX?K46Q=XgY!ELrOI|+iC;@RLQ~PM%_(_XqnrANxH;OQhh=3Sz@-Y*q8}s z*-_!6F6UI99D$Fjg5pU(*dJUb6ITXZ1xl>UUS#w@uAmJB(bQMuI{?BY1@7VyZ4ym+SWt8Hm;0y{(-)AtJ(O8V5lMl8j4`t-veRr`&^PUvM zvx53Yk@6kuhNd-c8~f*@P_yq?BQYRgdIy(X-wuv$`W(?HqV(_ut$5O-#^O)e>a1na$-uI<

aj&zr_6^<$n{d)pR7LJq0La%9Kv-w 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

lv2eTv7$)q<>I&9tc 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
fP5DGg}FP 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 z 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

<`?mUezs7 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

>YGou=$ZwiVNP9Vq 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ΜU9#k=62hLMf}$W-~| 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 +#include "flintpp.h" + +#define MAXTESTLEN (CLINTMAXBIT/2) +#define CLINTRNDLN (1 + ulrand64_l() % (MAXTESTLEN/2)) + +static int general_tests (int); + +int main () +{ + cout << "Testmodule " << __FILE__ + << " compiled for FLINT/C-Library Version " + << verstr_l () << endl; + + initrand64_lt (); + general_tests (10000); + + cout << "All tests in " << __FILE__ << " passed." << endl; + return 0; +} + + +static int general_tests (int nooftests) +{ + LINT a, b, u, v, g, gg; + int i, sign_u, sign_v; + + for (i = 1; i <= nooftests; i++) + { + a = randl (CLINTRNDLN/2); + b = randl (CLINTRNDLN/2); + + g = gcd (a, b); + gg = xgcd (a, b, u, sign_u, v, sign_v); + + if (g != gg) + { + cerr << "Error in comparing results of friend functions" << endl; + cerr << "gcd and xgcd in test " << i << " near line " << __LINE__ << endl; + exit (-1); + } + + if (g == 1 && b > 1) + { + if ((a * inv (a, b)) % b != 1) + { + cerr << "Error in friend function inv in test " << i; + cerr << " near line " << __LINE__ << endl; + exit (-1); + } + } + + if (a * b != g * lcm (a, b)) // gcd (a, b) * lcm (a, b) = a * b + { + cerr << "Error in friend function lcm" << endl; + cerr << "in test " << i << " near line " << __LINE__ << endl; + exit (-1); + } + + + a *= u; + b *= v; + + if (sign_u == 1 && sign_v == 1) a += b; + if (sign_u == -1 && sign_v == 1) a = b - a; + if (sign_u == 1 && sign_v == -1) a -= b; + + if (a != gg) + { + cerr << "Error in friend function xgcd in test " << i; + cerr << " near line " << __LINE__ << endl; + exit (-1); + } + } + + + for (i = 1; i <= nooftests; i++) + { + a = randl (CLINTRNDLN/2); + b = randl (CLINTRNDLN/2); + + g = a.gcd (b); + gg = a.xgcd (b, u, sign_u, v, sign_v); + + if (g != gg) + { + cerr << "Error in comparing results of member functions" << endl; + cerr << "gcd and xgcd in test " << i << " near line " << __LINE__ << endl; + exit (-1); + } + + if (g == 1 && b > 1) + { + if ((a * a.inv (b)) % b != 1) + { + cerr << "Error in member function inv in test " << i; + cerr << " near line " << __LINE__ << endl; + exit (-1); + } + } + + if (a * b != g * a.lcm (b)) // gcd (a, b) * lcm (a, b) = a * b + { + cerr << "Error in member function lcm" << endl; + cerr << "in test " << i << " near line " << __LINE__ << endl; + exit (-1); + } + + + a *= u; + b *= v; + + if (sign_u == 1 && sign_v == 1) a += b; + if (sign_u == -1 && sign_v == 1) a = b - a; + if (sign_u == 1 && sign_v == -1) a -= b; + + if (a != gg) + { + cerr << "Error in member function xgcd in test " << i; + cerr << " near line " << __LINE__ << endl; + exit (-1); + } + } + + return 0; +} + +

X)lcHu#2c^wpR3tLTNz^H1YGnKtl)Z$Irwyt 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