Repository: pyrogram/tgcrypto Branch: master Commit: a8aee6431796 Files: 31 Total size: 315.3 KB Directory structure: gitextract_oyonldn1/ ├── .github/ │ └── workflows/ │ └── wheels.yml ├── .gitignore ├── COPYING ├── COPYING.lesser ├── MANIFEST.in ├── NOTICE ├── README.md ├── pyproject.toml ├── setup.py ├── tests/ │ ├── __init__.py │ ├── cbc/ │ │ ├── __init__.py │ │ ├── test_cbc.py │ │ └── vectors/ │ │ ├── CBCGFSbox256.rsp │ │ ├── CBCKeySbox256.rsp │ │ ├── CBCMMT256.rsp │ │ ├── CBCVarKey256.rsp │ │ └── CBCVarTxt256.rsp │ ├── ctr/ │ │ ├── __init__.py │ │ └── test_ctr.py │ └── ige/ │ ├── __init__.py │ └── test_ige.py ├── tgcrypto/ │ ├── aes256.c │ ├── aes256.h │ ├── cbc256.c │ ├── cbc256.h │ ├── ctr256.c │ ├── ctr256.h │ ├── ige256.c │ ├── ige256.h │ └── tgcrypto.c └── tox.ini ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/workflows/wheels.yml ================================================ name: Build wheels on: [push] jobs: build_wheels: name: Build wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v3 - name: Build wheels uses: pypa/cibuildwheel@v2.11.2 env: CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" CIBW_TEST_REQUIRES: tox CIBW_TEST_COMMAND: cd {project} && tox CIBW_TEST_SKIP: "*-win*" CIBW_BUILD_VERBOSITY: 1 - name: Store wheels uses: actions/upload-artifact@v2 with: path: ./wheelhouse/*.whl ================================================ FILE: .gitignore ================================================ # PyCharm stuff .idea/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ # Translations *.mo *.pot # Django stuff: *.log .static_storage/ .media/ local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ ================================================ FILE: COPYING ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: COPYING.lesser ================================================ GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ================================================ FILE: MANIFEST.in ================================================ ## Include include COPYING COPYING.lesser NOTICE recursive-include tgcrypto *.c *.h ================================================ FILE: NOTICE ================================================ Pyrogram - Telegram MTProto API Client Library for Python Copyright (C) 2017-present Dan This file is part of Pyrogram. Pyrogram is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pyrogram is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Pyrogram. If not, see . ================================================ FILE: README.md ================================================ # TgCrypto > [!NOTE] > The project is no longer maintained or supported. Thanks for appreciating it. > [!NOTE] > The implementations of the algorithms presented in this repository are to be considered for educational purposes only. > Fast and Portable Cryptography Extension Library for Pyrogram **TgCrypto** is a Cryptography Library written in C as a Python extension. It is designed to be portable, fast, easy to install and use. TgCrypto is intended for [Pyrogram](https://github.com/pyrogram/pyrogram) and implements the cryptographic algorithms Telegram requires, namely: - **`AES-256-IGE`** - used in [MTProto v2.0](https://core.telegram.org/mtproto). - **`AES-256-CTR`** - used for [CDN encrypted files](https://core.telegram.org/cdn). - **`AES-256-CBC`** - used for [encrypted passport credentials](https://core.telegram.org/passport). ## Requirements - Python 3.7 or higher. ## Installation ``` bash $ pip3 install -U tgcrypto ``` ## API TgCrypto API consists of these six methods: ```python def ige256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ... def ige256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ... def ctr256_encrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ... def ctr256_decrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ... def cbc256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ... def cbc256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ... ``` ## Usage ### IGE Mode **Note**: Data must be padded to match a multiple of the block size (16 bytes). ``` python import os import tgcrypto data = os.urandom(10 * 1024 * 1024 + 7) # 10 MB of random data + 7 bytes to show padding key = os.urandom(32) # Random Key iv = os.urandom(32) # Random IV # Pad with zeroes: -7 % 16 = 9 data += bytes(-len(data) % 16) ige_encrypted = tgcrypto.ige256_encrypt(data, key, iv) ige_decrypted = tgcrypto.ige256_decrypt(ige_encrypted, key, iv) print(data == ige_decrypted) # True ``` ### CTR Mode (single chunk) ``` python import os import tgcrypto data = os.urandom(10 * 1024 * 1024) # 10 MB of random data key = os.urandom(32) # Random Key enc_iv = bytearray(os.urandom(16)) # Random IV dec_iv = enc_iv.copy() # Keep a copy for decryption ctr_encrypted = tgcrypto.ctr256_encrypt(data, key, enc_iv, bytes(1)) ctr_decrypted = tgcrypto.ctr256_decrypt(ctr_encrypted, key, dec_iv, bytes(1)) print(data == ctr_decrypted) # True ``` ### CTR Mode (stream) ``` python import os from io import BytesIO import tgcrypto data = BytesIO(os.urandom(10 * 1024 * 1024)) # 10 MB of random data key = os.urandom(32) # Random Key enc_iv = bytearray(os.urandom(16)) # Random IV dec_iv = enc_iv.copy() # Keep a copy for decryption enc_state = bytes(1) # Encryption state, starts from 0 dec_state = bytes(1) # Decryption state, starts from 0 encrypted_data = BytesIO() # Encrypted data buffer decrypted_data = BytesIO() # Decrypted data buffer while True: chunk = data.read(1024) if not chunk: break # Write 1K encrypted bytes into the encrypted data buffer encrypted_data.write(tgcrypto.ctr256_encrypt(chunk, key, enc_iv, enc_state)) # Reset position. We need to read it now encrypted_data.seek(0) while True: chunk = encrypted_data.read(1024) if not chunk: break # Write 1K decrypted bytes into the decrypted data buffer decrypted_data.write(tgcrypto.ctr256_decrypt(chunk, key, dec_iv, dec_state)) print(data.getvalue() == decrypted_data.getvalue()) # True ``` ### CBC Mode **Note**: Data must be padded to match a multiple of the block size (16 bytes). ``` python import os import tgcrypto data = os.urandom(10 * 1024 * 1024 + 7) # 10 MB of random data + 7 bytes to show padding key = os.urandom(32) # Random Key enc_iv = bytearray(os.urandom(16)) # Random IV dec_iv = enc_iv.copy() # Keep a copy for decryption # Pad with zeroes: -7 % 16 = 9 data += bytes(-len(data) % 16) cbc_encrypted = tgcrypto.cbc256_encrypt(data, key, enc_iv) cbc_decrypted = tgcrypto.cbc256_decrypt(cbc_encrypted, key, dec_iv) print(data == cbc_decrypted) # True ``` ## Testing 1. Clone this repository: `git clone https://github.com/pyrogram/tgcrypto`. 2. Enter the directory: `cd tgcrypto`. 3. Install `tox`: `pip3 install tox` 4. Run tests: `tox`. ## License [LGPLv3+](COPYING.lesser) © 2017-present [Dan](https://github.com/delivrance) ================================================ FILE: pyproject.toml ================================================ [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" ================================================ FILE: setup.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . from setuptools import setup, Extension, find_packages with open("README.md", encoding="utf-8") as f: readme = f.read() setup( name="TgCrypto", version="1.2.5", description="Fast and Portable Cryptography Extension Library for Pyrogram", long_description=readme, long_description_content_type="text/markdown", url="https://github.com/pyrogram", download_url="https://github.com/pyrogram/tgcrypto/releases/latest", author="Dan", author_email="dan@pyrogram.org", license="LGPLv3+", classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Security", "Topic :: Security :: Cryptography", "Topic :: Internet", "Topic :: Communications", "Topic :: Communications :: Chat", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], keywords="pyrogram telegram crypto cryptography encryption mtproto extension library aes", project_urls={ "Tracker": "https://github.com/pyrogram/tgcrypto/issues", "Community": "https://t.me/pyrogram", "Source": "https://github.com/pyrogram/tgcrypto", "Documentation": "https://docs.pyrogram.org", }, python_requires="~=3.7", packages=find_packages(), test_suite="tests", zip_safe=False, ext_modules=[ Extension( "tgcrypto", sources=[ "tgcrypto/tgcrypto.c", "tgcrypto/aes256.c", "tgcrypto/ige256.c", "tgcrypto/ctr256.c", "tgcrypto/cbc256.c" ] ) ] ) ================================================ FILE: tests/__init__.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . ================================================ FILE: tests/cbc/__init__.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . ================================================ FILE: tests/cbc/test_cbc.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . import os import random import re import unittest import tgcrypto class TestCBC256NIST(unittest.TestCase): # https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/AES_CBC.pdf def test_cbc256_encrypt(self): key = bytes.fromhex(""" 603DEB10 15CA71BE 2B73AEF0 857D7781 1F352C07 3B6108D7 2D9810A3 0914DFF4 """.replace(" ", "").replace("\n", "")) iv = bytes.fromhex(""" 00010203 04050607 08090A0B 0C0D0E0F """.replace(" ", "").replace("\n", "")) plaintext = bytes.fromhex(""" 6BC1BEE2 2E409F96 E93D7E11 7393172A AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51 30C81C46 A35CE411 E5FBC119 1A0A52EF F69F2445 DF4F9B17 AD2B417B E66C3710 """.replace(" ", "").replace("\n", "")) ciphertext = bytes.fromhex(""" F58C4C04 D6E5F1BA 779EABFB 5F7BFBD6 9CFC4E96 7EDB808D 679F777B C6702C7D 39F23369 A9D9BACF A530E263 04231461 B2EB05E2 C39BE9FC DA6C1907 8C6A9D1B """.replace(" ", "").replace("\n", "")) self.assertEqual(tgcrypto.cbc256_encrypt(plaintext, key, iv), ciphertext) def test_cbc256_decrypt(self): key = bytes.fromhex(""" 603DEB10 15CA71BE 2B73AEF0 857D7781 1F352C07 3B6108D7 2D9810A3 0914DFF4 """.replace(" ", "").replace("\n", "")) iv = bytes.fromhex(""" 00010203 04050607 08090A0B 0C0D0E0F """.replace(" ", "").replace("\n", "")) ciphertext = bytes.fromhex(""" F58C4C04 D6E5F1BA 779EABFB 5F7BFBD6 9CFC4E96 7EDB808D 679F777B C6702C7D 39F23369 A9D9BACF A530E263 04231461 B2EB05E2 C39BE9FC DA6C1907 8C6A9D1B """.replace(" ", "").replace("\n", "")) plaintext = bytes.fromhex(""" 6BC1BEE2 2E409F96 E93D7E11 7393172A AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51 30C81C46 A35CE411 E5FBC119 1A0A52EF F69F2445 DF4F9B17 AD2B417B E66C3710 """.replace(" ", "").replace("\n", "")) self.assertEqual(tgcrypto.cbc256_decrypt(ciphertext, key, iv), plaintext) class TestCBC256Cryptography(unittest.TestCase): # https://github.com/pyca/cryptography/blob/cd4de3ce6dc2a0dd4171b869e187857e4125853b/vectors/cryptography_vectors/ciphers/AES/CBC TEMPLATE = """ def test_cbc256_{mode}_{name}_{count}(self): key = bytes.fromhex("{key}") iv = bytes.fromhex("{iv}") plaintext = bytes.fromhex("{plaintext}") ciphertext = bytes.fromhex("{ciphertext}") self.assertEqual(tgcrypto.cbc256_{mode}({input}, key, iv), {output}) """.replace("\n ", "\n") PATTERN = r"COUNT = (\d+)\nKEY = (\w+)\nIV = (\w+)\n(PLAINTEXT|CIPHERTEXT) = (\w+)\n(PLAINTEXT|CIPHERTEXT) = (\w+)" BASE_PATH = os.path.dirname(__file__) + "/vectors" for path in os.listdir(BASE_PATH): path = BASE_PATH + "/" + path with open(path, "r", encoding="utf-8") as f: for match in re.finditer(PATTERN, f.read()): count, key, iv, plain_or_cipher, bytes1, _, bytes2 = match.groups() if plain_or_cipher == "PLAINTEXT": mode = "encrypt" plaintext = bytes1 ciphertext = bytes2 input = "plaintext" output = "ciphertext" else: mode = "decrypt" plaintext = bytes2 ciphertext = bytes1 input = "ciphertext" output = "plaintext" exec( TEMPLATE.format( mode=mode, name=os.path.split(path)[-1].split(".")[0], count=count, key=key, iv=iv, plaintext=plaintext, ciphertext=ciphertext, input=input, output=output ) ) class TestCBC256Input(unittest.TestCase): TYPE_ERROR_PATTERN = r"'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'" def test_cbc256_encrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.cbc256_encrypt(os.urandom(16), os.urandom(32)) def test_cbc256_encrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.cbc256_encrypt(1, 2, 3) def test_cbc256_encrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.cbc256_encrypt(b"", os.urandom(32), os.urandom(16)) def test_cbc256_encrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.cbc256_encrypt(os.urandom(16), os.urandom(31), os.urandom(16)) def test_cbc256_encrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 16 bytes"): tgcrypto.cbc256_encrypt(os.urandom(16), os.urandom(32), os.urandom(15)) def test_cbc256_decrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.cbc256_decrypt(os.urandom(16), os.urandom(32)) def test_cbc256_decrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.cbc256_decrypt(1, 2, 3) def test_cbc256_decrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.cbc256_decrypt(b"", os.urandom(32), os.urandom(16)) def test_cbc256_decrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.cbc256_decrypt(os.urandom(16), os.urandom(31), os.urandom(16)) def test_cbc256_decrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 16 bytes"): tgcrypto.cbc256_decrypt(os.urandom(16), os.urandom(32), os.urandom(15)) class TestCBC256Random(unittest.TestCase): DATA_CHUNK_MAX_SIZE = 64 KEY_SIZE = 32 IV_SIZE = 16 TESTS_AMOUNT = 500 TEMPLATE = """ def test_cbc256_random_{mode1}_{count}(self): data = {data} key = {key} iv = {iv} iv_copy = iv.copy() a = tgcrypto.cbc256_{mode1}(data, key, iv) b = tgcrypto.cbc256_{mode2}(a, key, iv_copy) self.assertEqual(data, b) """.replace("\n ", "\n") for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="encrypt", mode2="decrypt", count=count, data=os.urandom(random.randint(1, DATA_CHUNK_MAX_SIZE) * 16), key=os.urandom(KEY_SIZE), iv=bytearray(os.urandom(IV_SIZE)), ) ) for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="decrypt", mode2="encrypt", count=count, data=os.urandom(random.randint(1, DATA_CHUNK_MAX_SIZE) * 16), key=os.urandom(KEY_SIZE), iv=bytearray(os.urandom(IV_SIZE)), ) ) if __name__ == "__main__": unittest.main() ================================================ FILE: tests/cbc/vectors/CBCGFSbox256.rsp ================================================ # CAVS 11.1 # Config info for aes_values # AESVS GFSbox test data for CBC # State : Encrypt and Decrypt # Key Length : 256 # Generated on Fri Apr 22 15:11:38 2011 [ENCRYPT] COUNT = 0 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 014730f80ac625fe84f026c60bfd547d CIPHERTEXT = 5c9d844ed46f9885085e5d6a4f94c7d7 COUNT = 1 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 0b24af36193ce4665f2825d7b4749c98 CIPHERTEXT = a9ff75bd7cf6613d3731c77c3b6d0c04 COUNT = 2 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 761c1fe41a18acf20d241650611d90f1 CIPHERTEXT = 623a52fcea5d443e48d9181ab32c7421 COUNT = 3 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 8a560769d605868ad80d819bdba03771 CIPHERTEXT = 38f2c7ae10612415d27ca190d27da8b4 COUNT = 4 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 91fbef2d15a97816060bee1feaa49afe CIPHERTEXT = 1bc704f1bce135ceb810341b216d7abe [DECRYPT] COUNT = 0 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5c9d844ed46f9885085e5d6a4f94c7d7 PLAINTEXT = 014730f80ac625fe84f026c60bfd547d COUNT = 1 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a9ff75bd7cf6613d3731c77c3b6d0c04 PLAINTEXT = 0b24af36193ce4665f2825d7b4749c98 COUNT = 2 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 623a52fcea5d443e48d9181ab32c7421 PLAINTEXT = 761c1fe41a18acf20d241650611d90f1 COUNT = 3 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 38f2c7ae10612415d27ca190d27da8b4 PLAINTEXT = 8a560769d605868ad80d819bdba03771 COUNT = 4 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1bc704f1bce135ceb810341b216d7abe PLAINTEXT = 91fbef2d15a97816060bee1feaa49afe ================================================ FILE: tests/cbc/vectors/CBCKeySbox256.rsp ================================================ # CAVS 11.1 # Config info for aes_values # AESVS KeySbox test data for CBC # State : Encrypt and Decrypt # Key Length : 256 # Generated on Fri Apr 22 15:11:38 2011 [ENCRYPT] COUNT = 0 KEY = c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 46f2fb342d6f0ab477476fc501242c5f COUNT = 1 KEY = 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4bf3b0a69aeb6657794f2901b1440ad4 COUNT = 2 KEY = c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 352065272169abf9856843927d0674fd COUNT = 3 KEY = 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4307456a9e67813b452e15fa8fffe398 COUNT = 4 KEY = b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4663446607354989477a5c6f0f007ef4 COUNT = 5 KEY = 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 531c2c38344578b84d50b3c917bbb6e1 COUNT = 6 KEY = dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = fc6aec906323480005c58e7e1ab004ad COUNT = 7 KEY = f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a3944b95ca0b52043584ef02151926a8 COUNT = 8 KEY = 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a74289fe73a4c123ca189ea1e1b49ad5 COUNT = 9 KEY = 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b91d4ea4488644b56cf0812fa7fcf5fc COUNT = 10 KEY = ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 304f81ab61a80c2e743b94d5002a126b COUNT = 11 KEY = 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 649a71545378c783e368c9ade7114f6c COUNT = 12 KEY = 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 47cb030da2ab051dfc6c4bf6910d12bb COUNT = 13 KEY = 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 798c7c005dee432b2c8ea5dfa381ecc3 COUNT = 14 KEY = b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 637c31dc2591a07636f646b72daabbe7 COUNT = 15 KEY = fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 179a49c712154bbffbe6e7a84a18e220 [DECRYPT] COUNT = 0 KEY = c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558 IV = 00000000000000000000000000000000 CIPHERTEXT = 46f2fb342d6f0ab477476fc501242c5f PLAINTEXT = 00000000000000000000000000000000 COUNT = 1 KEY = 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64 IV = 00000000000000000000000000000000 CIPHERTEXT = 4bf3b0a69aeb6657794f2901b1440ad4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 2 KEY = c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c IV = 00000000000000000000000000000000 CIPHERTEXT = 352065272169abf9856843927d0674fd PLAINTEXT = 00000000000000000000000000000000 COUNT = 3 KEY = 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627 IV = 00000000000000000000000000000000 CIPHERTEXT = 4307456a9e67813b452e15fa8fffe398 PLAINTEXT = 00000000000000000000000000000000 COUNT = 4 KEY = b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f IV = 00000000000000000000000000000000 CIPHERTEXT = 4663446607354989477a5c6f0f007ef4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 5 KEY = 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9 IV = 00000000000000000000000000000000 CIPHERTEXT = 531c2c38344578b84d50b3c917bbb6e1 PLAINTEXT = 00000000000000000000000000000000 COUNT = 6 KEY = dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf IV = 00000000000000000000000000000000 CIPHERTEXT = fc6aec906323480005c58e7e1ab004ad PLAINTEXT = 00000000000000000000000000000000 COUNT = 7 KEY = f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9 IV = 00000000000000000000000000000000 CIPHERTEXT = a3944b95ca0b52043584ef02151926a8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 8 KEY = 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e IV = 00000000000000000000000000000000 CIPHERTEXT = a74289fe73a4c123ca189ea1e1b49ad5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 9 KEY = 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707 IV = 00000000000000000000000000000000 CIPHERTEXT = b91d4ea4488644b56cf0812fa7fcf5fc PLAINTEXT = 00000000000000000000000000000000 COUNT = 10 KEY = ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc IV = 00000000000000000000000000000000 CIPHERTEXT = 304f81ab61a80c2e743b94d5002a126b PLAINTEXT = 00000000000000000000000000000000 COUNT = 11 KEY = 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887 IV = 00000000000000000000000000000000 CIPHERTEXT = 649a71545378c783e368c9ade7114f6c PLAINTEXT = 00000000000000000000000000000000 COUNT = 12 KEY = 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee IV = 00000000000000000000000000000000 CIPHERTEXT = 47cb030da2ab051dfc6c4bf6910d12bb PLAINTEXT = 00000000000000000000000000000000 COUNT = 13 KEY = 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1 IV = 00000000000000000000000000000000 CIPHERTEXT = 798c7c005dee432b2c8ea5dfa381ecc3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 14 KEY = b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07 IV = 00000000000000000000000000000000 CIPHERTEXT = 637c31dc2591a07636f646b72daabbe7 PLAINTEXT = 00000000000000000000000000000000 COUNT = 15 KEY = fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e IV = 00000000000000000000000000000000 CIPHERTEXT = 179a49c712154bbffbe6e7a84a18e220 PLAINTEXT = 00000000000000000000000000000000 ================================================ FILE: tests/cbc/vectors/CBCMMT256.rsp ================================================ # CAVS 11.1 # Config info for aes_values # AESVS MMT test data for CBC # State : Encrypt and Decrypt # Key Length : 256 # Generated on Fri Apr 22 15:11:38 2011 [ENCRYPT] COUNT = 0 KEY = 6ed76d2d97c69fd1339589523931f2a6cff554b15f738f21ec72dd97a7330907 IV = 851e8764776e6796aab722dbb644ace8 PLAINTEXT = 6282b8c05c5c1530b97d4816ca434762 CIPHERTEXT = 6acc04142e100a65f51b97adf5172c41 COUNT = 1 KEY = dce26c6b4cfb286510da4eecd2cffe6cdf430f33db9b5f77b460679bd49d13ae IV = fdeaa134c8d7379d457175fd1a57d3fc PLAINTEXT = 50e9eee1ac528009e8cbcd356975881f957254b13f91d7c6662d10312052eb00 CIPHERTEXT = 2fa0df722a9fd3b64cb18fb2b3db55ff2267422757289413f8f657507412a64c COUNT = 2 KEY = fe8901fecd3ccd2ec5fdc7c7a0b50519c245b42d611a5ef9e90268d59f3edf33 IV = bd416cb3b9892228d8f1df575692e4d0 PLAINTEXT = 8d3aa196ec3d7c9b5bb122e7fe77fb1295a6da75abe5d3a510194d3a8a4157d5c89d40619716619859da3ec9b247ced9 CIPHERTEXT = 608e82c7ab04007adb22e389a44797fed7de090c8c03ca8a2c5acd9e84df37fbc58ce8edb293e98f02b640d6d1d72464 COUNT = 3 KEY = 0493ff637108af6a5b8e90ac1fdf035a3d4bafd1afb573be7ade9e8682e663e5 IV = c0cd2bebccbb6c49920bd5482ac756e8 PLAINTEXT = 8b37f9148df4bb25956be6310c73c8dc58ea9714ff49b643107b34c9bff096a94fedd6823526abc27a8e0b16616eee254ab4567dd68e8ccd4c38ac563b13639c CIPHERTEXT = 05d5c77729421b08b737e41119fa4438d1f570cc772a4d6c3df7ffeda0384ef84288ce37fc4c4c7d1125a499b051364c389fd639bdda647daa3bdadab2eb5594 COUNT = 4 KEY = 9adc8fbd506e032af7fa20cf5343719de6d1288c158c63d6878aaf64ce26ca85 IV = 11958dc6ab81e1c7f01631e9944e620f PLAINTEXT = c7917f84f747cd8c4b4fedc2219bdbc5f4d07588389d8248854cf2c2f89667a2d7bcf53e73d32684535f42318e24cd45793950b3825e5d5c5c8fcd3e5dda4ce9246d18337ef3052d8b21c5561c8b660e CIPHERTEXT = 9c99e68236bb2e929db1089c7750f1b356d39ab9d0c40c3e2f05108ae9d0c30b04832ccdbdc08ebfa426b7f5efde986ed05784ce368193bb3699bc691065ac62e258b9aa4cc557e2b45b49ce05511e65 COUNT = 5 KEY = 73b8faf00b3302ac99855cf6f9e9e48518690a5906a4869d4dcf48d282faae2a IV = b3cb97a80a539912b8c21f450d3b9395 PLAINTEXT = 3adea6e06e42c4f041021491f2775ef6378cb08824165edc4f6448e232175b60d0345b9f9c78df6596ec9d22b7b9e76e8f3c76b32d5d67273f1d83fe7a6fc3dd3c49139170fa5701b3beac61b490f0a9e13f844640c4500f9ad3087adfb0ae10 CIPHERTEXT = ac3d6dbafe2e0f740632fd9e820bf6044cd5b1551cbb9cc03c0b25c39ccb7f33b83aacfca40a3265f2bbff879153448acacb88fcfb3bb7b10fe463a68c0109f028382e3e557b1adf02ed648ab6bb895df0205d26ebbfa9a5fd8cebd8e4bee3dc COUNT = 6 KEY = 9ddf3745896504ff360a51a3eb49c01b79fccebc71c3abcb94a949408b05b2c9 IV = e79026639d4aa230b5ccffb0b29d79bc PLAINTEXT = cf52e5c3954c51b94c9e38acb8c9a7c76aebdaa9943eae0a1ce155a2efdb4d46985d935511471452d9ee64d2461cb2991d59fc0060697f9a671672163230f367fed1422316e52d29eceacb8768f56d9b80f6d278093c9a8acd3cfd7edd8ebd5c293859f64d2f8486ae1bd593c65bc014 CIPHERTEXT = 34df561bd2cfebbcb7af3b4b8d21ca5258312e7e2e4e538e35ad2490b6112f0d7f148f6aa8d522a7f3c61d785bd667db0e1dc4606c318ea4f26af4fe7d11d4dcff0456511b4aed1a0d91ba4a1fd6cd9029187bc5881a5a07fe02049d39368e83139b12825bae2c7be81e6f12c61bb5c5 COUNT = 7 KEY = 458b67bf212d20f3a57fce392065582dcefbf381aa22949f8338ab9052260e1d IV = 4c12effc5963d40459602675153e9649 PLAINTEXT = 256fd73ce35ae3ea9c25dd2a9454493e96d8633fe633b56176dce8785ce5dbbb84dbf2c8a2eeb1e96b51899605e4f13bbc11b93bf6f39b3469be14858b5b720d4a522d36feed7a329c9b1e852c9280c47db8039c17c4921571a07d1864128330e09c308ddea1694e95c84500f1a61e614197e86a30ecc28df64ccb3ccf5437aa CIPHERTEXT = 90b7b9630a2378f53f501ab7beff039155008071bc8438e789932cfd3eb1299195465e6633849463fdb44375278e2fdb1310821e6492cf80ff15cb772509fb426f3aeee27bd4938882fd2ae6b5bd9d91fa4a43b17bb439ebbe59c042310163a82a5fe5388796eee35a181a1271f00be29b852d8fa759bad01ff4678f010594cd COUNT = 8 KEY = d2412db0845d84e5732b8bbd642957473b81fb99ca8bff70e7920d16c1dbec89 IV = 51c619fcf0b23f0c7925f400a6cacb6d PLAINTEXT = 026006c4a71a180c9929824d9d095b8faaa86fc4fa25ecac61d85ff6de92dfa8702688c02a282c1b8af4449707f22d75e91991015db22374c95f8f195d5bb0afeb03040ff8965e0e1339dba5653e174f8aa5a1b39fe3ac839ce307a4e44b4f8f1b0063f738ec18acdbff2ebfe07383e734558723e741f0a1836dafdf9de82210a9248bc113b3c1bc8b4e252ca01bd803 CIPHERTEXT = 0254b23463bcabec5a395eb74c8fb0eb137a07bc6f5e9f61ec0b057de305714f8fa294221c91a159c315939b81e300ee902192ec5f15254428d8772f79324ec43298ca21c00b370273ee5e5ed90e43efa1e05a5d171209fe34f9f29237dba2a6726650fd3b1321747d1208863c6c3c6b3e2d879ab5f25782f08ba8f2abbe63e0bedb4a227e81afb36bb6645508356d34 COUNT = 9 KEY = 48be597e632c16772324c8d3fa1d9c5a9ecd010f14ec5d110d3bfec376c5532b IV = d6d581b8cf04ebd3b6eaa1b53f047ee1 PLAINTEXT = 0c63d413d3864570e70bb6618bf8a4b9585586688c32bba0a5ecc1362fada74ada32c52acfd1aa7444ba567b4e7daaecf7cc1cb29182af164ae5232b002868695635599807a9a7f07a1f137e97b1e1c9dabc89b6a5e4afa9db5855edaa575056a8f4f8242216242bb0c256310d9d329826ac353d715fa39f80cec144d6424558f9f70b98c920096e0f2c855d594885a00625880e9dfb734163cecef72cf030b8 CIPHERTEXT = fc5873e50de8faf4c6b84ba707b0854e9db9ab2e9f7d707fbba338c6843a18fc6facebaf663d26296fb329b4d26f18494c79e09e779647f9bafa87489630d79f4301610c2300c19dbf3148b7cac8c4f4944102754f332e92b6f7c5e75bc6179eb877a078d4719009021744c14f13fd2a55a2b9c44d18000685a845a4f632c7c56a77306efa66a24d05d088dcd7c13fe24fc447275965db9e4d37fbc9304448cd [DECRYPT] COUNT = 0 KEY = 43e953b2aea08a3ad52d182f58c72b9c60fbe4a9ca46a3cb89e3863845e22c9e IV = ddbbb0173f1e2deb2394a62aa2a0240e CIPHERTEXT = d51d19ded5ca4ae14b2b20b027ffb020 PLAINTEXT = 07270d0e63aa36daed8c6ade13ac1af1 COUNT = 1 KEY = addf88c1ab997eb58c0455288c3a4fa320ada8c18a69cc90aa99c73b174dfde6 IV = 60cc50e0887532e0d4f3d2f20c3c5d58 CIPHERTEXT = 6cb4e2f4ddf79a8e08c96c7f4040e8a83266c07fc88dd0074ee25b00d445985a PLAINTEXT = 98a8a9d84356bf403a9ccc384a06fe043dfeecb89e59ce0cb8bd0a495ef76cf0 COUNT = 2 KEY = 54682728db5035eb04b79645c64a95606abb6ba392b6633d79173c027c5acf77 IV = 2eb94297772851963dd39a1eb95d438f CIPHERTEXT = e4046d05385ab789c6a72866e08350f93f583e2a005ca0faecc32b5cfc323d461c76c107307654db5566a5bd693e227c PLAINTEXT = 0faa5d01b9afad3bb519575daaf4c60a5ed4ca2ba20c625bc4f08799addcf89d19796d1eff0bd790c622dc22c1094ec7 COUNT = 3 KEY = 7482c47004aef406115ca5fd499788d582efc0b29dc9e951b1f959406693a54f IV = 485ebf2215d20b816ea53944829717ce CIPHERTEXT = 6c24f19b9c0b18d7126bf68090cb8ae72db3ca7eabb594f506aae7a2493e5326a5afae4ec4d109375b56e2b6ff4c9cf639e72c63dc8114c796df95b3c6b62021 PLAINTEXT = 82fec664466d585023821c2e39a0c43345669a41244d05018a23d7159515f8ff4d88b01cd0eb83070d0077e065d74d7373816b61505718f8d4f270286a59d45e COUNT = 4 KEY = 3ae38d4ebf7e7f6dc0a1e31e5efa7ca123fdc321e533e79fedd5132c5999ef5b IV = 36d55dc9edf8669beecd9a2a029092b9 CIPHERTEXT = d50ea48c8962962f7c3d301fa9f877245026c204a7771292cddca1e7ffebbef00e86d72910b7d8a756dfb45c9f1040978bb748ca537edd90b670ecee375e15d98582b9f93b6355adc9f80f4fb2108fb9 PLAINTEXT = 8d22db30c4253c3e3add9685c14d55b05f7cf7626c52cccfcbe9b99fd8913663b8b1f22e277a4cc3d0e7e978a34782eb876867556ad4728486d5e890ea738243e3700a696d6eb58cd81c0e60eb121c50 COUNT = 5 KEY = d30bfc0b2a19d5b8b6f8f46ab7f444ee136a7fa3fbdaf530cc3e8976339afcc4 IV = 80be76a7f885d2c06b37d6a528fae0cd CIPHERTEXT = 31e4677a17aed120bd3af69fbb0e4b645b9e8c104e280b799ddd49f1e241c3ccb7d40e1c6ff226bf04f8049c51a86e2981cf1331c824d7d451746ccf77fc22fd3717001ee51913d81f7a06fb0037f309957579f695670f2c4c7397d2d990374e PLAINTEXT = 0b6e2a8213169b3b78db6de324e286f0366044e035c6970afbf0a1a5c32a05b24ba706cd9c6609737651a81b2bcf4c681dc0861983a5aec76e6c8b244112d64d489e84328974737394b83a39459011727162652b7aa793bfb1b71488b7dec96b COUNT = 6 KEY = 64a256a663527ebea71f8d770990b4cee4a2d3afbfd33fb12c7ac300ef59e49a IV = 18cce9147f295c5c00dbe0424089d3b4 CIPHERTEXT = d99771963b7ae5202e382ff8c06e035367909cd24fe5ada7f3d39bfaeb5de98b04eaf4989648e00112f0d2aadb8c5f2157b64581450359965140c141e5fb631e43469d65d1b7370eb3b396399fec32cced294a5eee46d6547f7bbd49dee148b4bc31d6c493cfd28f3908e36cb698629d PLAINTEXT = f7e0f79cfddd15ed3600ab2d29c56ba3c8e96d1a896aff6dec773e6ea4710a77f2f4ec646b76efda6428c175d007c84aa9f4b18c5e1bac5f27f7307b737655eee813f7e1f5880a37ac63ad1666e7883083b648454d45786f53ea3db1b5129291138abe40c79fcb7ab7c6f6b9ea133b5f COUNT = 7 KEY = 31358e8af34d6ac31c958bbd5c8fb33c334714bffb41700d28b07f11cfe891e7 IV = 144516246a752c329056d884daf3c89d CIPHERTEXT = b32e2b171b63827034ebb0d1909f7ef1d51c5f82c1bb9bc26bc4ac4dccdee8357dca6154c2510ae1c87b1b422b02b621bb06cac280023894fcff3406af08ee9be1dd72419beccddff77c722d992cdcc87e9c7486f56ab406ea608d8c6aeb060c64cf2785ad1a159147567e39e303370da445247526d95942bf4d7e88057178b0 PLAINTEXT = cfc155a3967de347f58fa2e8bbeb4183d6d32f7427155e6ab39cddf2e627c572acae02f1f243f3b784e73e21e7e520eacd3befafbee814867334c6ee8c2f0ee7376d3c72728cde7813173dbdfe3357deac41d3ae2a04229c0262f2d109d01f5d03e7f848fb50c28849146c02a2f4ebf7d7ffe3c9d40e31970bf151873672ef2b COUNT = 8 KEY = 5b4b69339891db4e3337c3486f439dfbd0fb2a782ca71ef0059819d51669d93c IV = 2b28a2d19ba9ecd149dae96622c21769 CIPHERTEXT = ba21db8ec170fa4d73cfc381687f3fa188dd2d012bef48007f3dc88329e22ba32fe235a315be362546468b9db6af6705c6e5d4d36822f42883c08d4a994cc454a7db292c4ca1f4b62ebf8e479a5d545d6af9978d2cfee7bc80999192c2c8662ce9b4be11af40bd68f3e2d5685bb28c0f3dc08017c0aba8263e6fdc45ed7f9893bf14fd3a86c418a35c5667e642d59985 PLAINTEXT = a0bb1d2fdeb7e6bf34c690fe7b72a5e9d65796aa57982fe340c286d6923dbddb426566ff58e9c0b3af52e4db446f6cc5daa5bfcf4e3c85db5a5638e670c370cce128db22c97542a64a63846f18a228d3462a11376dcb71f66ec52ebda474f7b6752915b0801797974bc51eb1218127fed60f1009430eb5089fb3ba5f28fad24c518ccddc2501393ceb6dffc46a159421 COUNT = 9 KEY = 87725bd43a45608814180773f0e7ab95a3c859d83a2130e884190e44d14c6996 IV = e49651988ebbb72eb8bb80bb9abbca34 CIPHERTEXT = 5b97a9d423f4b97413f388d9a341e727bb339f8e18a3fac2f2fb85abdc8f135deb30054a1afdc9b6ed7da16c55eba6b0d4d10c74e1d9a7cf8edfaeaa684ac0bd9f9d24ba674955c79dc6be32aee1c260b558ff07e3a4d49d24162011ff254db8be078e8ad07e648e6bf5679376cb4321a5ef01afe6ad8816fcc7634669c8c4389295c9241e45fff39f3225f7745032daeebe99d4b19bcb215d1bfdb36eda2c24 PLAINTEXT = bfe5c6354b7a3ff3e192e05775b9b75807de12e38a626b8bf0e12d5fff78e4f1775aa7d792d885162e66d88930f9c3b2cdf8654f56972504803190386270f0aa43645db187af41fcea639b1f8026ccdd0c23e0de37094a8b941ecb7602998a4b2604e69fc04219585d854600e0ad6f99a53b2504043c08b1c3e214d17cde053cbdf91daa999ed5b47c37983ba3ee254bc5c793837daaa8c85cfc12f7f54f699f ================================================ FILE: tests/cbc/vectors/CBCVarKey256.rsp ================================================ # CAVS 11.1 # Config info for aes_values # AESVS VarKey test data for CBC # State : Encrypt and Decrypt # Key Length : 256 # Generated on Fri Apr 22 15:11:38 2011 [ENCRYPT] COUNT = 0 KEY = 8000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e35a6dcb19b201a01ebcfa8aa22b5759 COUNT = 1 KEY = c000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b29169cdcf2d83e838125a12ee6aa400 COUNT = 2 KEY = e000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d8f3a72fc3cdf74dfaf6c3e6b97b2fa6 COUNT = 3 KEY = f000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1c777679d50037c79491a94da76a9a35 COUNT = 4 KEY = f800000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9cf4893ecafa0a0247a898e040691559 COUNT = 5 KEY = fc00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8fbb413703735326310a269bd3aa94b2 COUNT = 6 KEY = fe00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 60e32246bed2b0e859e55c1cc6b26502 COUNT = 7 KEY = ff00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ec52a212f80a09df6317021bc2a9819e COUNT = 8 KEY = ff80000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f23e5b600eb70dbccf6c0b1d9a68182c COUNT = 9 KEY = ffc0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a3f599d63a82a968c33fe26590745970 COUNT = 10 KEY = ffe0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d1ccb9b1337002cbac42c520b5d67722 COUNT = 11 KEY = fff0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cc111f6c37cf40a1159d00fb59fb0488 COUNT = 12 KEY = fff8000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = dc43b51ab609052372989a26e9cdd714 COUNT = 13 KEY = fffc000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4dcede8da9e2578f39703d4433dc6459 COUNT = 14 KEY = fffe000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1a4c1c263bbccfafc11782894685e3a8 COUNT = 15 KEY = ffff000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 937ad84880db50613423d6d527a2823d COUNT = 16 KEY = ffff800000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 610b71dfc688e150d8152c5b35ebc14d COUNT = 17 KEY = ffffc00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 27ef2495dabf323885aab39c80f18d8b COUNT = 18 KEY = ffffe00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 633cafea395bc03adae3a1e2068e4b4e COUNT = 19 KEY = fffff00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6e1b482b53761cf631819b749a6f3724 COUNT = 20 KEY = fffff80000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 976e6f851ab52c771998dbb2d71c75a9 COUNT = 21 KEY = fffffc0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 85f2ba84f8c307cf525e124c3e22e6cc COUNT = 22 KEY = fffffe0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6bcca98bf6a835fa64955f72de4115fe COUNT = 23 KEY = ffffff0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2c75e2d36eebd65411f14fd0eb1d2a06 COUNT = 24 KEY = ffffff8000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = bd49295006250ffca5100b6007a0eade COUNT = 25 KEY = ffffffc000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a190527d0ef7c70f459cd3940df316ec COUNT = 26 KEY = ffffffe000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = bbd1097a62433f79449fa97d4ee80dbf COUNT = 27 KEY = fffffff000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 07058e408f5b99b0e0f061a1761b5b3b COUNT = 28 KEY = fffffff800000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5fd1f13fa0f31e37fabde328f894eac2 COUNT = 29 KEY = fffffffc00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = fc4af7c948df26e2ef3e01c1ee5b8f6f COUNT = 30 KEY = fffffffe00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 829fd7208fb92d44a074a677ee9861ac COUNT = 31 KEY = ffffffff00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ad9fc613a703251b54c64a0e76431711 COUNT = 32 KEY = ffffffff80000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 33ac9eccc4cc75e2711618f80b1548e8 COUNT = 33 KEY = ffffffffc0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2025c74b8ad8f4cda17ee2049c4c902d COUNT = 34 KEY = ffffffffe0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f85ca05fe528f1ce9b790166e8d551e7 COUNT = 35 KEY = fffffffff0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6f6238d8966048d4967154e0dad5a6c9 COUNT = 36 KEY = fffffffff8000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f2b21b4e7640a9b3346de8b82fb41e49 COUNT = 37 KEY = fffffffffc000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f836f251ad1d11d49dc344628b1884e1 COUNT = 38 KEY = fffffffffe000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 077e9470ae7abea5a9769d49182628c3 COUNT = 39 KEY = ffffffffff000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e0dcc2d27fc9865633f85223cf0d611f COUNT = 40 KEY = ffffffffff800000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = be66cfea2fecd6bf0ec7b4352c99bcaa COUNT = 41 KEY = ffffffffffc00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = df31144f87a2ef523facdcf21a427804 COUNT = 42 KEY = ffffffffffe00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b5bb0f5629fb6aae5e1839a3c3625d63 COUNT = 43 KEY = fffffffffff00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3c9db3335306fe1ec612bdbfae6b6028 COUNT = 44 KEY = fffffffffff80000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3dd5c34634a79d3cfcc8339760e6f5f4 COUNT = 45 KEY = fffffffffffc0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 82bda118a3ed7af314fa2ccc5c07b761 COUNT = 46 KEY = fffffffffffe0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2937a64f7d4f46fe6fea3b349ec78e38 COUNT = 47 KEY = ffffffffffff0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 225f068c28476605735ad671bb8f39f3 COUNT = 48 KEY = ffffffffffff8000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ae682c5ecd71898e08942ac9aa89875c COUNT = 49 KEY = ffffffffffffc000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5e031cb9d676c3022d7f26227e85c38f COUNT = 50 KEY = ffffffffffffe000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a78463fb064db5d52bb64bfef64f2dda COUNT = 51 KEY = fffffffffffff000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8aa9b75e784593876c53a00eae5af52b COUNT = 52 KEY = fffffffffffff800000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3f84566df23da48af692722fe980573a COUNT = 53 KEY = fffffffffffffc00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 31690b5ed41c7eb42a1e83270a7ff0e6 COUNT = 54 KEY = fffffffffffffe00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 77dd7702646d55f08365e477d3590eda COUNT = 55 KEY = ffffffffffffff00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4c022ac62b3cb78d739cc67b3e20bb7e COUNT = 56 KEY = ffffffffffffff80000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 092fa137ce18b5dfe7906f550bb13370 COUNT = 57 KEY = ffffffffffffffc0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3e0cdadf2e68353c0027672c97144dd3 COUNT = 58 KEY = ffffffffffffffe0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d8c4b200b383fc1f2b2ea677618a1d27 COUNT = 59 KEY = fffffffffffffff0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 11825f99b0e9bb3477c1c0713b015aac COUNT = 60 KEY = fffffffffffffff8000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f8b9fffb5c187f7ddc7ab10f4fb77576 COUNT = 61 KEY = fffffffffffffffc000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ffb4e87a32b37d6f2c8328d3b5377802 COUNT = 62 KEY = fffffffffffffffe000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d276c13a5d220f4da9224e74896391ce COUNT = 63 KEY = ffffffffffffffff000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 94efe7a0e2e031e2536da01df799c927 COUNT = 64 KEY = ffffffffffffffff800000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8f8fd822680a85974e53a5a8eb9d38de COUNT = 65 KEY = ffffffffffffffffc00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e0f0a91b2e45f8cc37b7805a3042588d COUNT = 66 KEY = ffffffffffffffffe00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 597a6252255e46d6364dbeeda31e279c COUNT = 67 KEY = fffffffffffffffff00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f51a0f694442b8f05571797fec7ee8bf COUNT = 68 KEY = fffffffffffffffff80000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9ff071b165b5198a93dddeebc54d09b5 COUNT = 69 KEY = fffffffffffffffffc0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c20a19fd5758b0c4bc1a5df89cf73877 COUNT = 70 KEY = fffffffffffffffffe0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 97120166307119ca2280e9315668e96f COUNT = 71 KEY = ffffffffffffffffff0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4b3b9f1e099c2a09dc091e90e4f18f0a COUNT = 72 KEY = ffffffffffffffffff8000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = eb040b891d4b37f6851f7ec219cd3f6d COUNT = 73 KEY = ffffffffffffffffffc000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9f0fdec08b7fd79aa39535bea42db92a COUNT = 74 KEY = ffffffffffffffffffe000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2e70f168fc74bf911df240bcd2cef236 COUNT = 75 KEY = fffffffffffffffffff000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 462ccd7f5fd1108dbc152f3cacad328b COUNT = 76 KEY = fffffffffffffffffff800000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a4af534a7d0b643a01868785d86dfb95 COUNT = 77 KEY = fffffffffffffffffffc00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ab980296197e1a5022326c31da4bf6f3 COUNT = 78 KEY = fffffffffffffffffffe00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f97d57b3333b6281b07d486db2d4e20c COUNT = 79 KEY = ffffffffffffffffffff00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f33fa36720231afe4c759ade6bd62eb6 COUNT = 80 KEY = ffffffffffffffffffff80000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = fdcfac0c02ca538343c68117e0a15938 COUNT = 81 KEY = ffffffffffffffffffffc0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ad4916f5ee5772be764fc027b8a6e539 COUNT = 82 KEY = ffffffffffffffffffffe0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2e16873e1678610d7e14c02d002ea845 COUNT = 83 KEY = fffffffffffffffffffff0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4e6e627c1acc51340053a8236d579576 COUNT = 84 KEY = fffffffffffffffffffff8000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ab0c8410aeeead92feec1eb430d652cb COUNT = 85 KEY = fffffffffffffffffffffc000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e86f7e23e835e114977f60e1a592202e COUNT = 86 KEY = fffffffffffffffffffffe000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e68ad5055a367041fade09d9a70a794b COUNT = 87 KEY = ffffffffffffffffffffff000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 0791823a3c666bb6162825e78606a7fe COUNT = 88 KEY = ffffffffffffffffffffff800000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = dcca366a9bf47b7b868b77e25c18a364 COUNT = 89 KEY = ffffffffffffffffffffffc00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 684c9efc237e4a442965f84bce20247a COUNT = 90 KEY = ffffffffffffffffffffffe00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a858411ffbe63fdb9c8aa1bfaed67b52 COUNT = 91 KEY = fffffffffffffffffffffff00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 04bc3da2179c3015498b0e03910db5b8 COUNT = 92 KEY = fffffffffffffffffffffff80000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 40071eeab3f935dbc25d00841460260f COUNT = 93 KEY = fffffffffffffffffffffffc0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 0ebd7c30ed2016e08ba806ddb008bcc8 COUNT = 94 KEY = fffffffffffffffffffffffe0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 15c6becf0f4cec7129cbd22d1a79b1b8 COUNT = 95 KEY = ffffffffffffffffffffffff0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 0aeede5b91f721700e9e62edbf60b781 COUNT = 96 KEY = ffffffffffffffffffffffff8000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 266581af0dcfbed1585e0a242c64b8df COUNT = 97 KEY = ffffffffffffffffffffffffc000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6693dc911662ae473216ba22189a511a COUNT = 98 KEY = ffffffffffffffffffffffffe000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 7606fa36d86473e6fb3a1bb0e2c0adf5 COUNT = 99 KEY = fffffffffffffffffffffffff000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 112078e9e11fbb78e26ffb8899e96b9a COUNT = 100 KEY = fffffffffffffffffffffffff800000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 40b264e921e9e4a82694589ef3798262 COUNT = 101 KEY = fffffffffffffffffffffffffc00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8d4595cb4fa7026715f55bd68e2882f9 COUNT = 102 KEY = fffffffffffffffffffffffffe00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b588a302bdbc09197df1edae68926ed9 COUNT = 103 KEY = ffffffffffffffffffffffffff00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 33f7502390b8a4a221cfecd0666624ba COUNT = 104 KEY = ffffffffffffffffffffffffff80000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3d20253adbce3be2373767c4d822c566 COUNT = 105 KEY = ffffffffffffffffffffffffffc0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a42734a3929bf84cf0116c9856a3c18c COUNT = 106 KEY = ffffffffffffffffffffffffffe0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e3abc4939457422bb957da3c56938c6d COUNT = 107 KEY = fffffffffffffffffffffffffff0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 972bdd2e7c525130fadc8f76fc6f4b3f COUNT = 108 KEY = fffffffffffffffffffffffffff8000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 84a83d7b94c699cbcb8a7d9b61f64093 COUNT = 109 KEY = fffffffffffffffffffffffffffc000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ce61d63514aded03d43e6ebfc3a9001f COUNT = 110 KEY = fffffffffffffffffffffffffffe000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6c839dd58eeae6b8a36af48ed63d2dc9 COUNT = 111 KEY = ffffffffffffffffffffffffffff000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cd5ece55b8da3bf622c4100df5de46f9 COUNT = 112 KEY = ffffffffffffffffffffffffffff800000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3b6f46f40e0ac5fc0a9c1105f800f48d COUNT = 113 KEY = ffffffffffffffffffffffffffffc00000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ba26d47da3aeb028de4fb5b3a854a24b COUNT = 114 KEY = ffffffffffffffffffffffffffffe00000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 87f53bf620d3677268445212904389d5 COUNT = 115 KEY = fffffffffffffffffffffffffffff00000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 10617d28b5e0f4605492b182a5d7f9f6 COUNT = 116 KEY = fffffffffffffffffffffffffffff80000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9aaec4fabbf6fae2a71feff02e372b39 COUNT = 117 KEY = fffffffffffffffffffffffffffffc0000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3a90c62d88b5c42809abf782488ed130 COUNT = 118 KEY = fffffffffffffffffffffffffffffe0000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = f1f1c5a40899e15772857ccb65c7a09a COUNT = 119 KEY = ffffffffffffffffffffffffffffff0000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 190843d29b25a3897c692ce1dd81ee52 COUNT = 120 KEY = ffffffffffffffffffffffffffffff8000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a866bc65b6941d86e8420a7ffb0964db COUNT = 121 KEY = ffffffffffffffffffffffffffffffc000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8193c6ff85225ced4255e92f6e078a14 COUNT = 122 KEY = ffffffffffffffffffffffffffffffe000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9661cb2424d7d4a380d547f9e7ec1cb9 COUNT = 123 KEY = fffffffffffffffffffffffffffffff000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 86f93d9ec08453a071e2e2877877a9c8 COUNT = 124 KEY = fffffffffffffffffffffffffffffff800000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 27eefa80ce6a4a9d598e3fec365434d2 COUNT = 125 KEY = fffffffffffffffffffffffffffffffc00000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d62068444578e3ab39ce7ec95dd045dc COUNT = 126 KEY = fffffffffffffffffffffffffffffffe00000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b5f71d4dd9a71fe5d8bc8ba7e6ea3048 COUNT = 127 KEY = ffffffffffffffffffffffffffffffff00000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6825a347ac479d4f9d95c5cb8d3fd7e9 COUNT = 128 KEY = ffffffffffffffffffffffffffffffff80000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e3714e94a5778955cc0346358e94783a COUNT = 129 KEY = ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d836b44bb29e0c7d89fa4b2d4b677d2a COUNT = 130 KEY = ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5d454b75021d76d4b84f873a8f877b92 COUNT = 131 KEY = fffffffffffffffffffffffffffffffff0000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c3498f7eced2095314fc28115885b33f COUNT = 132 KEY = fffffffffffffffffffffffffffffffff8000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6e668856539ad8e405bd123fe6c88530 COUNT = 133 KEY = fffffffffffffffffffffffffffffffffc000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8680db7f3a87b8605543cfdbe6754076 COUNT = 134 KEY = fffffffffffffffffffffffffffffffffe000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6c5d03b13069c3658b3179be91b0800c COUNT = 135 KEY = ffffffffffffffffffffffffffffffffff000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ef1b384ac4d93eda00c92add0995ea5f COUNT = 136 KEY = ffffffffffffffffffffffffffffffffff800000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = bf8115805471741bd5ad20a03944790f COUNT = 137 KEY = ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c64c24b6894b038b3c0d09b1df068b0b COUNT = 138 KEY = ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3967a10cffe27d0178545fbf6a40544b COUNT = 139 KEY = fffffffffffffffffffffffffffffffffff00000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 7c85e9c95de1a9ec5a5363a8a053472d COUNT = 140 KEY = fffffffffffffffffffffffffffffffffff80000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a9eec03c8abec7ba68315c2c8c2316e0 COUNT = 141 KEY = fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cac8e414c2f388227ae14986fc983524 COUNT = 142 KEY = fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5d942b7f4622ce056c3ce3ce5f1dd9d6 COUNT = 143 KEY = ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d240d648ce21a3020282c3f1b528a0b6 COUNT = 144 KEY = ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 45d089c36d5c5a4efc689e3b0de10dd5 COUNT = 145 KEY = ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b4da5df4becb5462e03a0ed00d295629 COUNT = 146 KEY = ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = dcf4e129136c1a4b7a0f38935cc34b2b COUNT = 147 KEY = fffffffffffffffffffffffffffffffffffff000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d9a4c7618b0ce48a3d5aee1a1c0114c4 COUNT = 148 KEY = fffffffffffffffffffffffffffffffffffff800000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ca352df025c65c7b0bf306fbee0f36ba COUNT = 149 KEY = fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 238aca23fd3409f38af63378ed2f5473 COUNT = 150 KEY = fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 59836a0e06a79691b36667d5380d8188 COUNT = 151 KEY = ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 33905080f7acf1cdae0a91fc3e85aee4 COUNT = 152 KEY = ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 72c9e4646dbc3d6320fc6689d93e8833 COUNT = 153 KEY = ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ba77413dea5925b7f5417ea47ff19f59 COUNT = 154 KEY = ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6cae8129f843d86dc786a0fb1a184970 COUNT = 155 KEY = fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = fcfefb534100796eebbd990206754e19 COUNT = 156 KEY = fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8c791d5fdddf470da04f3e6dc4a5b5b5 COUNT = 157 KEY = fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c93bbdc07a4611ae4bb266ea5034a387 COUNT = 158 KEY = fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c102e38e489aa74762f3efc5bb23205a COUNT = 159 KEY = ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 93201481665cbafc1fcc220bc545fb3d COUNT = 160 KEY = ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4960757ec6ce68cf195e454cfd0f32ca COUNT = 161 KEY = ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = feec7ce6a6cbd07c043416737f1bbb33 COUNT = 162 KEY = ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 11c5413904487a805d70a8edd9c35527 COUNT = 163 KEY = fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 347846b2b2e36f1f0324c86f7f1b98e2 COUNT = 164 KEY = fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 332eee1a0cbd19ca2d69b426894044f0 COUNT = 165 KEY = fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 866b5b3977ba6efa5128efbda9ff03cd COUNT = 166 KEY = fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cc1445ee94c0f08cdee5c344ecd1e233 COUNT = 167 KEY = ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = be288319029363c2622feba4b05dfdfe COUNT = 168 KEY = ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cfd1875523f3cd21c395651e6ee15e56 COUNT = 169 KEY = ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cb5a408657837c53bf16f9d8465dce19 COUNT = 170 KEY = ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ca0bf42cb107f55ccff2fc09ee08ca15 COUNT = 171 KEY = fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = fdd9bbb4a7dc2e4a23536a5880a2db67 COUNT = 172 KEY = fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ede447b362c484993dec9442a3b46aef COUNT = 173 KEY = fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 10dffb05904bff7c4781df780ad26837 COUNT = 174 KEY = fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c33bc13e8de88ac25232aa7496398783 COUNT = 175 KEY = ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ca359c70803a3b2a3d542e8781dea975 COUNT = 176 KEY = ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = bcc65b526f88d05b89ce8a52021fdb06 COUNT = 177 KEY = ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = db91a38855c8c4643851fbfb358b0109 COUNT = 178 KEY = ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ca6e8893a114ae8e27d5ab03a5499610 COUNT = 179 KEY = fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6629d2b8df97da728cdd8b1e7f945077 COUNT = 180 KEY = fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4570a5a18cfc0dd582f1d88d5c9a1720 COUNT = 181 KEY = fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 72bc65aa8e89562e3f274d45af1cd10b COUNT = 182 KEY = fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 98551da1a6503276ae1c77625f9ea615 COUNT = 183 KEY = ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 0ddfe51ced7e3f4ae927daa3fe452cee COUNT = 184 KEY = ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = db826251e4ce384b80218b0e1da1dd4c COUNT = 185 KEY = ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2cacf728b88abbad7011ed0e64a1680c COUNT = 186 KEY = ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 330d8ee7c5677e099ac74c9994ee4cfb COUNT = 187 KEY = fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = edf61ae362e882ddc0167474a7a77f3a COUNT = 188 KEY = fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6168b00ba7859e0970ecfd757efecf7c COUNT = 189 KEY = fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d1415447866230d28bb1ea18a4cdfd02 COUNT = 190 KEY = fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 516183392f7a8763afec68a060264141 COUNT = 191 KEY = ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 77565c8d73cfd4130b4aa14d8911710f COUNT = 192 KEY = ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 37232a4ed21ccc27c19c9610078cabac COUNT = 193 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 804f32ea71828c7d329077e712231666 COUNT = 194 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d64424f23cb97215e9c2c6f28d29eab7 COUNT = 195 KEY = fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 023e82b533f68c75c238cebdb2ee89a2 COUNT = 196 KEY = fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 193a3d24157a51f1ee0893f6777417e7 COUNT = 197 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 84ecacfcd400084d078612b1945f2ef5 COUNT = 198 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1dcd8bb173259eb33a5242b0de31a455 COUNT = 199 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 35e9eddbc375e792c19992c19165012b COUNT = 200 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8a772231c01dfdd7c98e4cfddcc0807a COUNT = 201 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6eda7ff6b8319180ff0d6e65629d01c3 COUNT = 202 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = c267ef0e2d01a993944dd397101413cb COUNT = 203 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e9f80e9d845bcc0f62926af72eabca39 COUNT = 204 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 6702990727aa0878637b45dcd3a3b074 COUNT = 205 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2e2e647d5360e09230a5d738ca33471e COUNT = 206 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1f56413c7add6f43d1d56e4f02190330 COUNT = 207 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 69cd0606e15af729d6bca143016d9842 COUNT = 208 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a085d7c1a500873a20099c4caa3c3f5b COUNT = 209 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4fc0d230f8891415b87b83f95f2e09d1 COUNT = 210 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4327d08c523d8eba697a4336507d1f42 COUNT = 211 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 7a15aab82701efa5ae36ab1d6b76290f COUNT = 212 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5bf0051893a18bb30e139a58fed0fa54 COUNT = 213 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 97e8adf65638fd9cdf3bc22c17fe4dbd COUNT = 214 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1ee6ee326583a0586491c96418d1a35d COUNT = 215 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 26b549c2ec756f82ecc48008e529956b COUNT = 216 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 70377b6da669b072129e057cc28e9ca5 COUNT = 217 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9c94b8b0cb8bcc919072262b3fa05ad9 COUNT = 218 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2fbb83dfd0d7abcb05cd28cad2dfb523 COUNT = 219 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 96877803de77744bb970d0a91f4debae COUNT = 220 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 7379f3370cf6e5ce12ae5969c8eea312 COUNT = 221 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 02dc99fa3d4f98ce80985e7233889313 COUNT = 222 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1e38e759075ba5cab6457da51844295a COUNT = 223 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 70bed8dbf615868a1f9d9b05d3e7a267 COUNT = 224 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 234b148b8cb1d8c32b287e896903d150 COUNT = 225 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 294b033df4da853f4be3e243f7e513f4 COUNT = 226 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3f58c950f0367160adec45f2441e7411 COUNT = 227 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 37f655536a704e5ace182d742a820cf4 COUNT = 228 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ea7bd6bb63418731aeac790fe42d61e8 COUNT = 229 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = e74a4c999b4c064e48bb1e413f51e5ea COUNT = 230 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = ba9ebefdb4ccf30f296cecb3bc1943e8 COUNT = 231 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3194367a4898c502c13bb7478640a72d COUNT = 232 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = da797713263d6f33a5478a65ef60d412 COUNT = 233 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d1ac39bb1ef86b9c1344f214679aa376 COUNT = 234 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2fdea9e650532be5bc0e7325337fd363 COUNT = 235 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d3a204dbd9c2af158b6ca67a5156ce4a COUNT = 236 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 3a0a0e75a8da36735aee6684d965a778 COUNT = 237 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 52fc3e620492ea99641ea168da5b6d52 COUNT = 238 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d2e0c7f15b4772467d2cfc873000b2ca COUNT = 239 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 563531135e0c4d70a38f8bdb190ba04e COUNT = 240 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = a8a39a0f5663f4c0fe5f2d3cafff421a COUNT = 241 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = d94b5e90db354c1e42f61fabe167b2c0 COUNT = 242 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 50e6d3c9b6698a7cd276f96b1473f35a COUNT = 243 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 9338f08e0ebee96905d8f2e825208f43 COUNT = 244 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 8b378c86672aa54a3a266ba19d2580ca COUNT = 245 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cca7c3086f5f9511b31233da7cab9160 COUNT = 246 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 5b40ff4ec9be536ba23035fa4f06064c COUNT = 247 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 60eb5af8416b257149372194e8b88749 COUNT = 248 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 2f005a8aed8a361c92e440c15520cbd1 COUNT = 249 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 7b03627611678a997717578807a800e2 COUNT = 250 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = cf78618f74f6f3696e0a4779b90b5a77 COUNT = 251 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 03720371a04962eaea0a852e69972858 COUNT = 252 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 1f8a8133aa8ccf70e2bd3285831ca6b7 COUNT = 253 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 27936bd27fb1468fc8b48bc483321725 COUNT = 254 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = b07d4f3e2cd2ef2eb545980754dfea0f COUNT = 255 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff IV = 00000000000000000000000000000000 PLAINTEXT = 00000000000000000000000000000000 CIPHERTEXT = 4bf85f1b5d54adbc307b0a048389adcb [DECRYPT] COUNT = 0 KEY = 8000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e35a6dcb19b201a01ebcfa8aa22b5759 PLAINTEXT = 00000000000000000000000000000000 COUNT = 1 KEY = c000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b29169cdcf2d83e838125a12ee6aa400 PLAINTEXT = 00000000000000000000000000000000 COUNT = 2 KEY = e000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d8f3a72fc3cdf74dfaf6c3e6b97b2fa6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 3 KEY = f000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1c777679d50037c79491a94da76a9a35 PLAINTEXT = 00000000000000000000000000000000 COUNT = 4 KEY = f800000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9cf4893ecafa0a0247a898e040691559 PLAINTEXT = 00000000000000000000000000000000 COUNT = 5 KEY = fc00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8fbb413703735326310a269bd3aa94b2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 6 KEY = fe00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 60e32246bed2b0e859e55c1cc6b26502 PLAINTEXT = 00000000000000000000000000000000 COUNT = 7 KEY = ff00000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ec52a212f80a09df6317021bc2a9819e PLAINTEXT = 00000000000000000000000000000000 COUNT = 8 KEY = ff80000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f23e5b600eb70dbccf6c0b1d9a68182c PLAINTEXT = 00000000000000000000000000000000 COUNT = 9 KEY = ffc0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a3f599d63a82a968c33fe26590745970 PLAINTEXT = 00000000000000000000000000000000 COUNT = 10 KEY = ffe0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d1ccb9b1337002cbac42c520b5d67722 PLAINTEXT = 00000000000000000000000000000000 COUNT = 11 KEY = fff0000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cc111f6c37cf40a1159d00fb59fb0488 PLAINTEXT = 00000000000000000000000000000000 COUNT = 12 KEY = fff8000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = dc43b51ab609052372989a26e9cdd714 PLAINTEXT = 00000000000000000000000000000000 COUNT = 13 KEY = fffc000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4dcede8da9e2578f39703d4433dc6459 PLAINTEXT = 00000000000000000000000000000000 COUNT = 14 KEY = fffe000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1a4c1c263bbccfafc11782894685e3a8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 15 KEY = ffff000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 937ad84880db50613423d6d527a2823d PLAINTEXT = 00000000000000000000000000000000 COUNT = 16 KEY = ffff800000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 610b71dfc688e150d8152c5b35ebc14d PLAINTEXT = 00000000000000000000000000000000 COUNT = 17 KEY = ffffc00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 27ef2495dabf323885aab39c80f18d8b PLAINTEXT = 00000000000000000000000000000000 COUNT = 18 KEY = ffffe00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 633cafea395bc03adae3a1e2068e4b4e PLAINTEXT = 00000000000000000000000000000000 COUNT = 19 KEY = fffff00000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6e1b482b53761cf631819b749a6f3724 PLAINTEXT = 00000000000000000000000000000000 COUNT = 20 KEY = fffff80000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 976e6f851ab52c771998dbb2d71c75a9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 21 KEY = fffffc0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 85f2ba84f8c307cf525e124c3e22e6cc PLAINTEXT = 00000000000000000000000000000000 COUNT = 22 KEY = fffffe0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6bcca98bf6a835fa64955f72de4115fe PLAINTEXT = 00000000000000000000000000000000 COUNT = 23 KEY = ffffff0000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2c75e2d36eebd65411f14fd0eb1d2a06 PLAINTEXT = 00000000000000000000000000000000 COUNT = 24 KEY = ffffff8000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = bd49295006250ffca5100b6007a0eade PLAINTEXT = 00000000000000000000000000000000 COUNT = 25 KEY = ffffffc000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a190527d0ef7c70f459cd3940df316ec PLAINTEXT = 00000000000000000000000000000000 COUNT = 26 KEY = ffffffe000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = bbd1097a62433f79449fa97d4ee80dbf PLAINTEXT = 00000000000000000000000000000000 COUNT = 27 KEY = fffffff000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 07058e408f5b99b0e0f061a1761b5b3b PLAINTEXT = 00000000000000000000000000000000 COUNT = 28 KEY = fffffff800000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5fd1f13fa0f31e37fabde328f894eac2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 29 KEY = fffffffc00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fc4af7c948df26e2ef3e01c1ee5b8f6f PLAINTEXT = 00000000000000000000000000000000 COUNT = 30 KEY = fffffffe00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 829fd7208fb92d44a074a677ee9861ac PLAINTEXT = 00000000000000000000000000000000 COUNT = 31 KEY = ffffffff00000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ad9fc613a703251b54c64a0e76431711 PLAINTEXT = 00000000000000000000000000000000 COUNT = 32 KEY = ffffffff80000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 33ac9eccc4cc75e2711618f80b1548e8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 33 KEY = ffffffffc0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2025c74b8ad8f4cda17ee2049c4c902d PLAINTEXT = 00000000000000000000000000000000 COUNT = 34 KEY = ffffffffe0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f85ca05fe528f1ce9b790166e8d551e7 PLAINTEXT = 00000000000000000000000000000000 COUNT = 35 KEY = fffffffff0000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6f6238d8966048d4967154e0dad5a6c9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 36 KEY = fffffffff8000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f2b21b4e7640a9b3346de8b82fb41e49 PLAINTEXT = 00000000000000000000000000000000 COUNT = 37 KEY = fffffffffc000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f836f251ad1d11d49dc344628b1884e1 PLAINTEXT = 00000000000000000000000000000000 COUNT = 38 KEY = fffffffffe000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 077e9470ae7abea5a9769d49182628c3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 39 KEY = ffffffffff000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e0dcc2d27fc9865633f85223cf0d611f PLAINTEXT = 00000000000000000000000000000000 COUNT = 40 KEY = ffffffffff800000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = be66cfea2fecd6bf0ec7b4352c99bcaa PLAINTEXT = 00000000000000000000000000000000 COUNT = 41 KEY = ffffffffffc00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = df31144f87a2ef523facdcf21a427804 PLAINTEXT = 00000000000000000000000000000000 COUNT = 42 KEY = ffffffffffe00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b5bb0f5629fb6aae5e1839a3c3625d63 PLAINTEXT = 00000000000000000000000000000000 COUNT = 43 KEY = fffffffffff00000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3c9db3335306fe1ec612bdbfae6b6028 PLAINTEXT = 00000000000000000000000000000000 COUNT = 44 KEY = fffffffffff80000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3dd5c34634a79d3cfcc8339760e6f5f4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 45 KEY = fffffffffffc0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 82bda118a3ed7af314fa2ccc5c07b761 PLAINTEXT = 00000000000000000000000000000000 COUNT = 46 KEY = fffffffffffe0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2937a64f7d4f46fe6fea3b349ec78e38 PLAINTEXT = 00000000000000000000000000000000 COUNT = 47 KEY = ffffffffffff0000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 225f068c28476605735ad671bb8f39f3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 48 KEY = ffffffffffff8000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ae682c5ecd71898e08942ac9aa89875c PLAINTEXT = 00000000000000000000000000000000 COUNT = 49 KEY = ffffffffffffc000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5e031cb9d676c3022d7f26227e85c38f PLAINTEXT = 00000000000000000000000000000000 COUNT = 50 KEY = ffffffffffffe000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a78463fb064db5d52bb64bfef64f2dda PLAINTEXT = 00000000000000000000000000000000 COUNT = 51 KEY = fffffffffffff000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8aa9b75e784593876c53a00eae5af52b PLAINTEXT = 00000000000000000000000000000000 COUNT = 52 KEY = fffffffffffff800000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3f84566df23da48af692722fe980573a PLAINTEXT = 00000000000000000000000000000000 COUNT = 53 KEY = fffffffffffffc00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 31690b5ed41c7eb42a1e83270a7ff0e6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 54 KEY = fffffffffffffe00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 77dd7702646d55f08365e477d3590eda PLAINTEXT = 00000000000000000000000000000000 COUNT = 55 KEY = ffffffffffffff00000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4c022ac62b3cb78d739cc67b3e20bb7e PLAINTEXT = 00000000000000000000000000000000 COUNT = 56 KEY = ffffffffffffff80000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 092fa137ce18b5dfe7906f550bb13370 PLAINTEXT = 00000000000000000000000000000000 COUNT = 57 KEY = ffffffffffffffc0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3e0cdadf2e68353c0027672c97144dd3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 58 KEY = ffffffffffffffe0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d8c4b200b383fc1f2b2ea677618a1d27 PLAINTEXT = 00000000000000000000000000000000 COUNT = 59 KEY = fffffffffffffff0000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 11825f99b0e9bb3477c1c0713b015aac PLAINTEXT = 00000000000000000000000000000000 COUNT = 60 KEY = fffffffffffffff8000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f8b9fffb5c187f7ddc7ab10f4fb77576 PLAINTEXT = 00000000000000000000000000000000 COUNT = 61 KEY = fffffffffffffffc000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ffb4e87a32b37d6f2c8328d3b5377802 PLAINTEXT = 00000000000000000000000000000000 COUNT = 62 KEY = fffffffffffffffe000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d276c13a5d220f4da9224e74896391ce PLAINTEXT = 00000000000000000000000000000000 COUNT = 63 KEY = ffffffffffffffff000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 94efe7a0e2e031e2536da01df799c927 PLAINTEXT = 00000000000000000000000000000000 COUNT = 64 KEY = ffffffffffffffff800000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8f8fd822680a85974e53a5a8eb9d38de PLAINTEXT = 00000000000000000000000000000000 COUNT = 65 KEY = ffffffffffffffffc00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e0f0a91b2e45f8cc37b7805a3042588d PLAINTEXT = 00000000000000000000000000000000 COUNT = 66 KEY = ffffffffffffffffe00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 597a6252255e46d6364dbeeda31e279c PLAINTEXT = 00000000000000000000000000000000 COUNT = 67 KEY = fffffffffffffffff00000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f51a0f694442b8f05571797fec7ee8bf PLAINTEXT = 00000000000000000000000000000000 COUNT = 68 KEY = fffffffffffffffff80000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9ff071b165b5198a93dddeebc54d09b5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 69 KEY = fffffffffffffffffc0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c20a19fd5758b0c4bc1a5df89cf73877 PLAINTEXT = 00000000000000000000000000000000 COUNT = 70 KEY = fffffffffffffffffe0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 97120166307119ca2280e9315668e96f PLAINTEXT = 00000000000000000000000000000000 COUNT = 71 KEY = ffffffffffffffffff0000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4b3b9f1e099c2a09dc091e90e4f18f0a PLAINTEXT = 00000000000000000000000000000000 COUNT = 72 KEY = ffffffffffffffffff8000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = eb040b891d4b37f6851f7ec219cd3f6d PLAINTEXT = 00000000000000000000000000000000 COUNT = 73 KEY = ffffffffffffffffffc000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9f0fdec08b7fd79aa39535bea42db92a PLAINTEXT = 00000000000000000000000000000000 COUNT = 74 KEY = ffffffffffffffffffe000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2e70f168fc74bf911df240bcd2cef236 PLAINTEXT = 00000000000000000000000000000000 COUNT = 75 KEY = fffffffffffffffffff000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 462ccd7f5fd1108dbc152f3cacad328b PLAINTEXT = 00000000000000000000000000000000 COUNT = 76 KEY = fffffffffffffffffff800000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a4af534a7d0b643a01868785d86dfb95 PLAINTEXT = 00000000000000000000000000000000 COUNT = 77 KEY = fffffffffffffffffffc00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ab980296197e1a5022326c31da4bf6f3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 78 KEY = fffffffffffffffffffe00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f97d57b3333b6281b07d486db2d4e20c PLAINTEXT = 00000000000000000000000000000000 COUNT = 79 KEY = ffffffffffffffffffff00000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f33fa36720231afe4c759ade6bd62eb6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 80 KEY = ffffffffffffffffffff80000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fdcfac0c02ca538343c68117e0a15938 PLAINTEXT = 00000000000000000000000000000000 COUNT = 81 KEY = ffffffffffffffffffffc0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ad4916f5ee5772be764fc027b8a6e539 PLAINTEXT = 00000000000000000000000000000000 COUNT = 82 KEY = ffffffffffffffffffffe0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2e16873e1678610d7e14c02d002ea845 PLAINTEXT = 00000000000000000000000000000000 COUNT = 83 KEY = fffffffffffffffffffff0000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4e6e627c1acc51340053a8236d579576 PLAINTEXT = 00000000000000000000000000000000 COUNT = 84 KEY = fffffffffffffffffffff8000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ab0c8410aeeead92feec1eb430d652cb PLAINTEXT = 00000000000000000000000000000000 COUNT = 85 KEY = fffffffffffffffffffffc000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e86f7e23e835e114977f60e1a592202e PLAINTEXT = 00000000000000000000000000000000 COUNT = 86 KEY = fffffffffffffffffffffe000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e68ad5055a367041fade09d9a70a794b PLAINTEXT = 00000000000000000000000000000000 COUNT = 87 KEY = ffffffffffffffffffffff000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0791823a3c666bb6162825e78606a7fe PLAINTEXT = 00000000000000000000000000000000 COUNT = 88 KEY = ffffffffffffffffffffff800000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = dcca366a9bf47b7b868b77e25c18a364 PLAINTEXT = 00000000000000000000000000000000 COUNT = 89 KEY = ffffffffffffffffffffffc00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 684c9efc237e4a442965f84bce20247a PLAINTEXT = 00000000000000000000000000000000 COUNT = 90 KEY = ffffffffffffffffffffffe00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a858411ffbe63fdb9c8aa1bfaed67b52 PLAINTEXT = 00000000000000000000000000000000 COUNT = 91 KEY = fffffffffffffffffffffff00000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 04bc3da2179c3015498b0e03910db5b8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 92 KEY = fffffffffffffffffffffff80000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 40071eeab3f935dbc25d00841460260f PLAINTEXT = 00000000000000000000000000000000 COUNT = 93 KEY = fffffffffffffffffffffffc0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0ebd7c30ed2016e08ba806ddb008bcc8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 94 KEY = fffffffffffffffffffffffe0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 15c6becf0f4cec7129cbd22d1a79b1b8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 95 KEY = ffffffffffffffffffffffff0000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0aeede5b91f721700e9e62edbf60b781 PLAINTEXT = 00000000000000000000000000000000 COUNT = 96 KEY = ffffffffffffffffffffffff8000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 266581af0dcfbed1585e0a242c64b8df PLAINTEXT = 00000000000000000000000000000000 COUNT = 97 KEY = ffffffffffffffffffffffffc000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6693dc911662ae473216ba22189a511a PLAINTEXT = 00000000000000000000000000000000 COUNT = 98 KEY = ffffffffffffffffffffffffe000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7606fa36d86473e6fb3a1bb0e2c0adf5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 99 KEY = fffffffffffffffffffffffff000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 112078e9e11fbb78e26ffb8899e96b9a PLAINTEXT = 00000000000000000000000000000000 COUNT = 100 KEY = fffffffffffffffffffffffff800000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 40b264e921e9e4a82694589ef3798262 PLAINTEXT = 00000000000000000000000000000000 COUNT = 101 KEY = fffffffffffffffffffffffffc00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8d4595cb4fa7026715f55bd68e2882f9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 102 KEY = fffffffffffffffffffffffffe00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b588a302bdbc09197df1edae68926ed9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 103 KEY = ffffffffffffffffffffffffff00000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 33f7502390b8a4a221cfecd0666624ba PLAINTEXT = 00000000000000000000000000000000 COUNT = 104 KEY = ffffffffffffffffffffffffff80000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3d20253adbce3be2373767c4d822c566 PLAINTEXT = 00000000000000000000000000000000 COUNT = 105 KEY = ffffffffffffffffffffffffffc0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a42734a3929bf84cf0116c9856a3c18c PLAINTEXT = 00000000000000000000000000000000 COUNT = 106 KEY = ffffffffffffffffffffffffffe0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e3abc4939457422bb957da3c56938c6d PLAINTEXT = 00000000000000000000000000000000 COUNT = 107 KEY = fffffffffffffffffffffffffff0000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 972bdd2e7c525130fadc8f76fc6f4b3f PLAINTEXT = 00000000000000000000000000000000 COUNT = 108 KEY = fffffffffffffffffffffffffff8000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 84a83d7b94c699cbcb8a7d9b61f64093 PLAINTEXT = 00000000000000000000000000000000 COUNT = 109 KEY = fffffffffffffffffffffffffffc000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ce61d63514aded03d43e6ebfc3a9001f PLAINTEXT = 00000000000000000000000000000000 COUNT = 110 KEY = fffffffffffffffffffffffffffe000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6c839dd58eeae6b8a36af48ed63d2dc9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 111 KEY = ffffffffffffffffffffffffffff000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cd5ece55b8da3bf622c4100df5de46f9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 112 KEY = ffffffffffffffffffffffffffff800000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3b6f46f40e0ac5fc0a9c1105f800f48d PLAINTEXT = 00000000000000000000000000000000 COUNT = 113 KEY = ffffffffffffffffffffffffffffc00000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ba26d47da3aeb028de4fb5b3a854a24b PLAINTEXT = 00000000000000000000000000000000 COUNT = 114 KEY = ffffffffffffffffffffffffffffe00000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 87f53bf620d3677268445212904389d5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 115 KEY = fffffffffffffffffffffffffffff00000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 10617d28b5e0f4605492b182a5d7f9f6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 116 KEY = fffffffffffffffffffffffffffff80000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9aaec4fabbf6fae2a71feff02e372b39 PLAINTEXT = 00000000000000000000000000000000 COUNT = 117 KEY = fffffffffffffffffffffffffffffc0000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3a90c62d88b5c42809abf782488ed130 PLAINTEXT = 00000000000000000000000000000000 COUNT = 118 KEY = fffffffffffffffffffffffffffffe0000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f1f1c5a40899e15772857ccb65c7a09a PLAINTEXT = 00000000000000000000000000000000 COUNT = 119 KEY = ffffffffffffffffffffffffffffff0000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 190843d29b25a3897c692ce1dd81ee52 PLAINTEXT = 00000000000000000000000000000000 COUNT = 120 KEY = ffffffffffffffffffffffffffffff8000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a866bc65b6941d86e8420a7ffb0964db PLAINTEXT = 00000000000000000000000000000000 COUNT = 121 KEY = ffffffffffffffffffffffffffffffc000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8193c6ff85225ced4255e92f6e078a14 PLAINTEXT = 00000000000000000000000000000000 COUNT = 122 KEY = ffffffffffffffffffffffffffffffe000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9661cb2424d7d4a380d547f9e7ec1cb9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 123 KEY = fffffffffffffffffffffffffffffff000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 86f93d9ec08453a071e2e2877877a9c8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 124 KEY = fffffffffffffffffffffffffffffff800000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 27eefa80ce6a4a9d598e3fec365434d2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 125 KEY = fffffffffffffffffffffffffffffffc00000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d62068444578e3ab39ce7ec95dd045dc PLAINTEXT = 00000000000000000000000000000000 COUNT = 126 KEY = fffffffffffffffffffffffffffffffe00000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b5f71d4dd9a71fe5d8bc8ba7e6ea3048 PLAINTEXT = 00000000000000000000000000000000 COUNT = 127 KEY = ffffffffffffffffffffffffffffffff00000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6825a347ac479d4f9d95c5cb8d3fd7e9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 128 KEY = ffffffffffffffffffffffffffffffff80000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e3714e94a5778955cc0346358e94783a PLAINTEXT = 00000000000000000000000000000000 COUNT = 129 KEY = ffffffffffffffffffffffffffffffffc0000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d836b44bb29e0c7d89fa4b2d4b677d2a PLAINTEXT = 00000000000000000000000000000000 COUNT = 130 KEY = ffffffffffffffffffffffffffffffffe0000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5d454b75021d76d4b84f873a8f877b92 PLAINTEXT = 00000000000000000000000000000000 COUNT = 131 KEY = fffffffffffffffffffffffffffffffff0000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c3498f7eced2095314fc28115885b33f PLAINTEXT = 00000000000000000000000000000000 COUNT = 132 KEY = fffffffffffffffffffffffffffffffff8000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6e668856539ad8e405bd123fe6c88530 PLAINTEXT = 00000000000000000000000000000000 COUNT = 133 KEY = fffffffffffffffffffffffffffffffffc000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8680db7f3a87b8605543cfdbe6754076 PLAINTEXT = 00000000000000000000000000000000 COUNT = 134 KEY = fffffffffffffffffffffffffffffffffe000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6c5d03b13069c3658b3179be91b0800c PLAINTEXT = 00000000000000000000000000000000 COUNT = 135 KEY = ffffffffffffffffffffffffffffffffff000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ef1b384ac4d93eda00c92add0995ea5f PLAINTEXT = 00000000000000000000000000000000 COUNT = 136 KEY = ffffffffffffffffffffffffffffffffff800000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = bf8115805471741bd5ad20a03944790f PLAINTEXT = 00000000000000000000000000000000 COUNT = 137 KEY = ffffffffffffffffffffffffffffffffffc00000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c64c24b6894b038b3c0d09b1df068b0b PLAINTEXT = 00000000000000000000000000000000 COUNT = 138 KEY = ffffffffffffffffffffffffffffffffffe00000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3967a10cffe27d0178545fbf6a40544b PLAINTEXT = 00000000000000000000000000000000 COUNT = 139 KEY = fffffffffffffffffffffffffffffffffff00000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7c85e9c95de1a9ec5a5363a8a053472d PLAINTEXT = 00000000000000000000000000000000 COUNT = 140 KEY = fffffffffffffffffffffffffffffffffff80000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a9eec03c8abec7ba68315c2c8c2316e0 PLAINTEXT = 00000000000000000000000000000000 COUNT = 141 KEY = fffffffffffffffffffffffffffffffffffc0000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cac8e414c2f388227ae14986fc983524 PLAINTEXT = 00000000000000000000000000000000 COUNT = 142 KEY = fffffffffffffffffffffffffffffffffffe0000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5d942b7f4622ce056c3ce3ce5f1dd9d6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 143 KEY = ffffffffffffffffffffffffffffffffffff0000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d240d648ce21a3020282c3f1b528a0b6 PLAINTEXT = 00000000000000000000000000000000 COUNT = 144 KEY = ffffffffffffffffffffffffffffffffffff8000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 45d089c36d5c5a4efc689e3b0de10dd5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 145 KEY = ffffffffffffffffffffffffffffffffffffc000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b4da5df4becb5462e03a0ed00d295629 PLAINTEXT = 00000000000000000000000000000000 COUNT = 146 KEY = ffffffffffffffffffffffffffffffffffffe000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = dcf4e129136c1a4b7a0f38935cc34b2b PLAINTEXT = 00000000000000000000000000000000 COUNT = 147 KEY = fffffffffffffffffffffffffffffffffffff000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d9a4c7618b0ce48a3d5aee1a1c0114c4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 148 KEY = fffffffffffffffffffffffffffffffffffff800000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ca352df025c65c7b0bf306fbee0f36ba PLAINTEXT = 00000000000000000000000000000000 COUNT = 149 KEY = fffffffffffffffffffffffffffffffffffffc00000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 238aca23fd3409f38af63378ed2f5473 PLAINTEXT = 00000000000000000000000000000000 COUNT = 150 KEY = fffffffffffffffffffffffffffffffffffffe00000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 59836a0e06a79691b36667d5380d8188 PLAINTEXT = 00000000000000000000000000000000 COUNT = 151 KEY = ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 33905080f7acf1cdae0a91fc3e85aee4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 152 KEY = ffffffffffffffffffffffffffffffffffffff80000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 72c9e4646dbc3d6320fc6689d93e8833 PLAINTEXT = 00000000000000000000000000000000 COUNT = 153 KEY = ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ba77413dea5925b7f5417ea47ff19f59 PLAINTEXT = 00000000000000000000000000000000 COUNT = 154 KEY = ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6cae8129f843d86dc786a0fb1a184970 PLAINTEXT = 00000000000000000000000000000000 COUNT = 155 KEY = fffffffffffffffffffffffffffffffffffffff0000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fcfefb534100796eebbd990206754e19 PLAINTEXT = 00000000000000000000000000000000 COUNT = 156 KEY = fffffffffffffffffffffffffffffffffffffff8000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8c791d5fdddf470da04f3e6dc4a5b5b5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 157 KEY = fffffffffffffffffffffffffffffffffffffffc000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c93bbdc07a4611ae4bb266ea5034a387 PLAINTEXT = 00000000000000000000000000000000 COUNT = 158 KEY = fffffffffffffffffffffffffffffffffffffffe000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c102e38e489aa74762f3efc5bb23205a PLAINTEXT = 00000000000000000000000000000000 COUNT = 159 KEY = ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 93201481665cbafc1fcc220bc545fb3d PLAINTEXT = 00000000000000000000000000000000 COUNT = 160 KEY = ffffffffffffffffffffffffffffffffffffffff800000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4960757ec6ce68cf195e454cfd0f32ca PLAINTEXT = 00000000000000000000000000000000 COUNT = 161 KEY = ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = feec7ce6a6cbd07c043416737f1bbb33 PLAINTEXT = 00000000000000000000000000000000 COUNT = 162 KEY = ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 11c5413904487a805d70a8edd9c35527 PLAINTEXT = 00000000000000000000000000000000 COUNT = 163 KEY = fffffffffffffffffffffffffffffffffffffffff00000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 347846b2b2e36f1f0324c86f7f1b98e2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 164 KEY = fffffffffffffffffffffffffffffffffffffffff80000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 332eee1a0cbd19ca2d69b426894044f0 PLAINTEXT = 00000000000000000000000000000000 COUNT = 165 KEY = fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 866b5b3977ba6efa5128efbda9ff03cd PLAINTEXT = 00000000000000000000000000000000 COUNT = 166 KEY = fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cc1445ee94c0f08cdee5c344ecd1e233 PLAINTEXT = 00000000000000000000000000000000 COUNT = 167 KEY = ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = be288319029363c2622feba4b05dfdfe PLAINTEXT = 00000000000000000000000000000000 COUNT = 168 KEY = ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cfd1875523f3cd21c395651e6ee15e56 PLAINTEXT = 00000000000000000000000000000000 COUNT = 169 KEY = ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cb5a408657837c53bf16f9d8465dce19 PLAINTEXT = 00000000000000000000000000000000 COUNT = 170 KEY = ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ca0bf42cb107f55ccff2fc09ee08ca15 PLAINTEXT = 00000000000000000000000000000000 COUNT = 171 KEY = fffffffffffffffffffffffffffffffffffffffffff000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fdd9bbb4a7dc2e4a23536a5880a2db67 PLAINTEXT = 00000000000000000000000000000000 COUNT = 172 KEY = fffffffffffffffffffffffffffffffffffffffffff800000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ede447b362c484993dec9442a3b46aef PLAINTEXT = 00000000000000000000000000000000 COUNT = 173 KEY = fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 10dffb05904bff7c4781df780ad26837 PLAINTEXT = 00000000000000000000000000000000 COUNT = 174 KEY = fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c33bc13e8de88ac25232aa7496398783 PLAINTEXT = 00000000000000000000000000000000 COUNT = 175 KEY = ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ca359c70803a3b2a3d542e8781dea975 PLAINTEXT = 00000000000000000000000000000000 COUNT = 176 KEY = ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = bcc65b526f88d05b89ce8a52021fdb06 PLAINTEXT = 00000000000000000000000000000000 COUNT = 177 KEY = ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = db91a38855c8c4643851fbfb358b0109 PLAINTEXT = 00000000000000000000000000000000 COUNT = 178 KEY = ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ca6e8893a114ae8e27d5ab03a5499610 PLAINTEXT = 00000000000000000000000000000000 COUNT = 179 KEY = fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6629d2b8df97da728cdd8b1e7f945077 PLAINTEXT = 00000000000000000000000000000000 COUNT = 180 KEY = fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4570a5a18cfc0dd582f1d88d5c9a1720 PLAINTEXT = 00000000000000000000000000000000 COUNT = 181 KEY = fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 72bc65aa8e89562e3f274d45af1cd10b PLAINTEXT = 00000000000000000000000000000000 COUNT = 182 KEY = fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 98551da1a6503276ae1c77625f9ea615 PLAINTEXT = 00000000000000000000000000000000 COUNT = 183 KEY = ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0ddfe51ced7e3f4ae927daa3fe452cee PLAINTEXT = 00000000000000000000000000000000 COUNT = 184 KEY = ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = db826251e4ce384b80218b0e1da1dd4c PLAINTEXT = 00000000000000000000000000000000 COUNT = 185 KEY = ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2cacf728b88abbad7011ed0e64a1680c PLAINTEXT = 00000000000000000000000000000000 COUNT = 186 KEY = ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 330d8ee7c5677e099ac74c9994ee4cfb PLAINTEXT = 00000000000000000000000000000000 COUNT = 187 KEY = fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = edf61ae362e882ddc0167474a7a77f3a PLAINTEXT = 00000000000000000000000000000000 COUNT = 188 KEY = fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6168b00ba7859e0970ecfd757efecf7c PLAINTEXT = 00000000000000000000000000000000 COUNT = 189 KEY = fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d1415447866230d28bb1ea18a4cdfd02 PLAINTEXT = 00000000000000000000000000000000 COUNT = 190 KEY = fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 516183392f7a8763afec68a060264141 PLAINTEXT = 00000000000000000000000000000000 COUNT = 191 KEY = ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 77565c8d73cfd4130b4aa14d8911710f PLAINTEXT = 00000000000000000000000000000000 COUNT = 192 KEY = ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 37232a4ed21ccc27c19c9610078cabac PLAINTEXT = 00000000000000000000000000000000 COUNT = 193 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 804f32ea71828c7d329077e712231666 PLAINTEXT = 00000000000000000000000000000000 COUNT = 194 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d64424f23cb97215e9c2c6f28d29eab7 PLAINTEXT = 00000000000000000000000000000000 COUNT = 195 KEY = fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 023e82b533f68c75c238cebdb2ee89a2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 196 KEY = fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 193a3d24157a51f1ee0893f6777417e7 PLAINTEXT = 00000000000000000000000000000000 COUNT = 197 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 84ecacfcd400084d078612b1945f2ef5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 198 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1dcd8bb173259eb33a5242b0de31a455 PLAINTEXT = 00000000000000000000000000000000 COUNT = 199 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 35e9eddbc375e792c19992c19165012b PLAINTEXT = 00000000000000000000000000000000 COUNT = 200 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8a772231c01dfdd7c98e4cfddcc0807a PLAINTEXT = 00000000000000000000000000000000 COUNT = 201 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6eda7ff6b8319180ff0d6e65629d01c3 PLAINTEXT = 00000000000000000000000000000000 COUNT = 202 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c267ef0e2d01a993944dd397101413cb PLAINTEXT = 00000000000000000000000000000000 COUNT = 203 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e9f80e9d845bcc0f62926af72eabca39 PLAINTEXT = 00000000000000000000000000000000 COUNT = 204 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6702990727aa0878637b45dcd3a3b074 PLAINTEXT = 00000000000000000000000000000000 COUNT = 205 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2e2e647d5360e09230a5d738ca33471e PLAINTEXT = 00000000000000000000000000000000 COUNT = 206 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1f56413c7add6f43d1d56e4f02190330 PLAINTEXT = 00000000000000000000000000000000 COUNT = 207 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 69cd0606e15af729d6bca143016d9842 PLAINTEXT = 00000000000000000000000000000000 COUNT = 208 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a085d7c1a500873a20099c4caa3c3f5b PLAINTEXT = 00000000000000000000000000000000 COUNT = 209 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4fc0d230f8891415b87b83f95f2e09d1 PLAINTEXT = 00000000000000000000000000000000 COUNT = 210 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4327d08c523d8eba697a4336507d1f42 PLAINTEXT = 00000000000000000000000000000000 COUNT = 211 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7a15aab82701efa5ae36ab1d6b76290f PLAINTEXT = 00000000000000000000000000000000 COUNT = 212 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5bf0051893a18bb30e139a58fed0fa54 PLAINTEXT = 00000000000000000000000000000000 COUNT = 213 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 97e8adf65638fd9cdf3bc22c17fe4dbd PLAINTEXT = 00000000000000000000000000000000 COUNT = 214 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1ee6ee326583a0586491c96418d1a35d PLAINTEXT = 00000000000000000000000000000000 COUNT = 215 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 26b549c2ec756f82ecc48008e529956b PLAINTEXT = 00000000000000000000000000000000 COUNT = 216 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 70377b6da669b072129e057cc28e9ca5 PLAINTEXT = 00000000000000000000000000000000 COUNT = 217 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9c94b8b0cb8bcc919072262b3fa05ad9 PLAINTEXT = 00000000000000000000000000000000 COUNT = 218 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2fbb83dfd0d7abcb05cd28cad2dfb523 PLAINTEXT = 00000000000000000000000000000000 COUNT = 219 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 96877803de77744bb970d0a91f4debae PLAINTEXT = 00000000000000000000000000000000 COUNT = 220 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7379f3370cf6e5ce12ae5969c8eea312 PLAINTEXT = 00000000000000000000000000000000 COUNT = 221 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 02dc99fa3d4f98ce80985e7233889313 PLAINTEXT = 00000000000000000000000000000000 COUNT = 222 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1e38e759075ba5cab6457da51844295a PLAINTEXT = 00000000000000000000000000000000 COUNT = 223 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 70bed8dbf615868a1f9d9b05d3e7a267 PLAINTEXT = 00000000000000000000000000000000 COUNT = 224 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 234b148b8cb1d8c32b287e896903d150 PLAINTEXT = 00000000000000000000000000000000 COUNT = 225 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 294b033df4da853f4be3e243f7e513f4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 226 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3f58c950f0367160adec45f2441e7411 PLAINTEXT = 00000000000000000000000000000000 COUNT = 227 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 37f655536a704e5ace182d742a820cf4 PLAINTEXT = 00000000000000000000000000000000 COUNT = 228 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ea7bd6bb63418731aeac790fe42d61e8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 229 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e74a4c999b4c064e48bb1e413f51e5ea PLAINTEXT = 00000000000000000000000000000000 COUNT = 230 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ba9ebefdb4ccf30f296cecb3bc1943e8 PLAINTEXT = 00000000000000000000000000000000 COUNT = 231 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3194367a4898c502c13bb7478640a72d PLAINTEXT = 00000000000000000000000000000000 COUNT = 232 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000 IV = 00000000000000000000000000000000 CIPHERTEXT = da797713263d6f33a5478a65ef60d412 PLAINTEXT = 00000000000000000000000000000000 COUNT = 233 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 IV = 00000000000000000000000000000000 CIPHERTEXT = d1ac39bb1ef86b9c1344f214679aa376 PLAINTEXT = 00000000000000000000000000000000 COUNT = 234 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2fdea9e650532be5bc0e7325337fd363 PLAINTEXT = 00000000000000000000000000000000 COUNT = 235 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 IV = 00000000000000000000000000000000 CIPHERTEXT = d3a204dbd9c2af158b6ca67a5156ce4a PLAINTEXT = 00000000000000000000000000000000 COUNT = 236 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3a0a0e75a8da36735aee6684d965a778 PLAINTEXT = 00000000000000000000000000000000 COUNT = 237 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000 IV = 00000000000000000000000000000000 CIPHERTEXT = 52fc3e620492ea99641ea168da5b6d52 PLAINTEXT = 00000000000000000000000000000000 COUNT = 238 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000 IV = 00000000000000000000000000000000 CIPHERTEXT = d2e0c7f15b4772467d2cfc873000b2ca PLAINTEXT = 00000000000000000000000000000000 COUNT = 239 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 IV = 00000000000000000000000000000000 CIPHERTEXT = 563531135e0c4d70a38f8bdb190ba04e PLAINTEXT = 00000000000000000000000000000000 COUNT = 240 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 IV = 00000000000000000000000000000000 CIPHERTEXT = a8a39a0f5663f4c0fe5f2d3cafff421a PLAINTEXT = 00000000000000000000000000000000 COUNT = 241 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 IV = 00000000000000000000000000000000 CIPHERTEXT = d94b5e90db354c1e42f61fabe167b2c0 PLAINTEXT = 00000000000000000000000000000000 COUNT = 242 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000 IV = 00000000000000000000000000000000 CIPHERTEXT = 50e6d3c9b6698a7cd276f96b1473f35a PLAINTEXT = 00000000000000000000000000000000 COUNT = 243 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9338f08e0ebee96905d8f2e825208f43 PLAINTEXT = 00000000000000000000000000000000 COUNT = 244 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800 IV = 00000000000000000000000000000000 CIPHERTEXT = 8b378c86672aa54a3a266ba19d2580ca PLAINTEXT = 00000000000000000000000000000000 COUNT = 245 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00 IV = 00000000000000000000000000000000 CIPHERTEXT = cca7c3086f5f9511b31233da7cab9160 PLAINTEXT = 00000000000000000000000000000000 COUNT = 246 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00 IV = 00000000000000000000000000000000 CIPHERTEXT = 5b40ff4ec9be536ba23035fa4f06064c PLAINTEXT = 00000000000000000000000000000000 COUNT = 247 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 IV = 00000000000000000000000000000000 CIPHERTEXT = 60eb5af8416b257149372194e8b88749 PLAINTEXT = 00000000000000000000000000000000 COUNT = 248 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80 IV = 00000000000000000000000000000000 CIPHERTEXT = 2f005a8aed8a361c92e440c15520cbd1 PLAINTEXT = 00000000000000000000000000000000 COUNT = 249 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 IV = 00000000000000000000000000000000 CIPHERTEXT = 7b03627611678a997717578807a800e2 PLAINTEXT = 00000000000000000000000000000000 COUNT = 250 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 IV = 00000000000000000000000000000000 CIPHERTEXT = cf78618f74f6f3696e0a4779b90b5a77 PLAINTEXT = 00000000000000000000000000000000 COUNT = 251 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 IV = 00000000000000000000000000000000 CIPHERTEXT = 03720371a04962eaea0a852e69972858 PLAINTEXT = 00000000000000000000000000000000 COUNT = 252 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8 IV = 00000000000000000000000000000000 CIPHERTEXT = 1f8a8133aa8ccf70e2bd3285831ca6b7 PLAINTEXT = 00000000000000000000000000000000 COUNT = 253 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc IV = 00000000000000000000000000000000 CIPHERTEXT = 27936bd27fb1468fc8b48bc483321725 PLAINTEXT = 00000000000000000000000000000000 COUNT = 254 KEY = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe IV = 00000000000000000000000000000000 CIPHERTEXT = b07d4f3e2cd2ef2eb545980754dfea0f PLAINTEXT = 00000000000000000000000000000000 COUNT = 255 KEY = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff IV = 00000000000000000000000000000000 CIPHERTEXT = 4bf85f1b5d54adbc307b0a048389adcb PLAINTEXT = 00000000000000000000000000000000 ================================================ FILE: tests/cbc/vectors/CBCVarTxt256.rsp ================================================ # CAVS 11.1 # Config info for aes_values # AESVS VarTxt test data for CBC # State : Encrypt and Decrypt # Key Length : 256 # Generated on Fri Apr 22 15:11:38 2011 [ENCRYPT] COUNT = 0 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = 80000000000000000000000000000000 CIPHERTEXT = ddc6bf790c15760d8d9aeb6f9a75fd4e COUNT = 1 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = c0000000000000000000000000000000 CIPHERTEXT = 0a6bdc6d4c1e6280301fd8e97ddbe601 COUNT = 2 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = e0000000000000000000000000000000 CIPHERTEXT = 9b80eefb7ebe2d2b16247aa0efc72f5d COUNT = 3 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = f0000000000000000000000000000000 CIPHERTEXT = 7f2c5ece07a98d8bee13c51177395ff7 COUNT = 4 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = f8000000000000000000000000000000 CIPHERTEXT = 7818d800dcf6f4be1e0e94f403d1e4c2 COUNT = 5 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fc000000000000000000000000000000 CIPHERTEXT = e74cd1c92f0919c35a0324123d6177d3 COUNT = 6 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fe000000000000000000000000000000 CIPHERTEXT = 8092a4dcf2da7e77e93bdd371dfed82e COUNT = 7 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ff000000000000000000000000000000 CIPHERTEXT = 49af6b372135acef10132e548f217b17 COUNT = 8 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ff800000000000000000000000000000 CIPHERTEXT = 8bcd40f94ebb63b9f7909676e667f1e7 COUNT = 9 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffc00000000000000000000000000000 CIPHERTEXT = fe1cffb83f45dcfb38b29be438dbd3ab COUNT = 10 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffe00000000000000000000000000000 CIPHERTEXT = 0dc58a8d886623705aec15cb1e70dc0e COUNT = 11 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fff00000000000000000000000000000 CIPHERTEXT = c218faa16056bd0774c3e8d79c35a5e4 COUNT = 12 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fff80000000000000000000000000000 CIPHERTEXT = 047bba83f7aa841731504e012208fc9e COUNT = 13 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffc0000000000000000000000000000 CIPHERTEXT = dc8f0e4915fd81ba70a331310882f6da COUNT = 14 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffe0000000000000000000000000000 CIPHERTEXT = 1569859ea6b7206c30bf4fd0cbfac33c COUNT = 15 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffff0000000000000000000000000000 CIPHERTEXT = 300ade92f88f48fa2df730ec16ef44cd COUNT = 16 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffff8000000000000000000000000000 CIPHERTEXT = 1fe6cc3c05965dc08eb0590c95ac71d0 COUNT = 17 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffc000000000000000000000000000 CIPHERTEXT = 59e858eaaa97fec38111275b6cf5abc0 COUNT = 18 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffe000000000000000000000000000 CIPHERTEXT = 2239455e7afe3b0616100288cc5a723b COUNT = 19 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffff000000000000000000000000000 CIPHERTEXT = 3ee500c5c8d63479717163e55c5c4522 COUNT = 20 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffff800000000000000000000000000 CIPHERTEXT = d5e38bf15f16d90e3e214041d774daa8 COUNT = 21 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffc00000000000000000000000000 CIPHERTEXT = b1f4066e6f4f187dfe5f2ad1b17819d0 COUNT = 22 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffe00000000000000000000000000 CIPHERTEXT = 6ef4cc4de49b11065d7af2909854794a COUNT = 23 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffff00000000000000000000000000 CIPHERTEXT = ac86bc606b6640c309e782f232bf367f COUNT = 24 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffff80000000000000000000000000 CIPHERTEXT = 36aff0ef7bf3280772cf4cac80a0d2b2 COUNT = 25 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffc0000000000000000000000000 CIPHERTEXT = 1f8eedea0f62a1406d58cfc3ecea72cf COUNT = 26 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffe0000000000000000000000000 CIPHERTEXT = abf4154a3375a1d3e6b1d454438f95a6 COUNT = 27 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffff0000000000000000000000000 CIPHERTEXT = 96f96e9d607f6615fc192061ee648b07 COUNT = 28 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffff8000000000000000000000000 CIPHERTEXT = cf37cdaaa0d2d536c71857634c792064 COUNT = 29 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffc000000000000000000000000 CIPHERTEXT = fbd6640c80245c2b805373f130703127 COUNT = 30 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffe000000000000000000000000 CIPHERTEXT = 8d6a8afe55a6e481badae0d146f436db COUNT = 31 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffff000000000000000000000000 CIPHERTEXT = 6a4981f2915e3e68af6c22385dd06756 COUNT = 32 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffff800000000000000000000000 CIPHERTEXT = 42a1136e5f8d8d21d3101998642d573b COUNT = 33 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffc00000000000000000000000 CIPHERTEXT = 9b471596dc69ae1586cee6158b0b0181 COUNT = 34 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffe00000000000000000000000 CIPHERTEXT = 753665c4af1eff33aa8b628bf8741cfd COUNT = 35 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffff00000000000000000000000 CIPHERTEXT = 9a682acf40be01f5b2a4193c9a82404d COUNT = 36 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffff80000000000000000000000 CIPHERTEXT = 54fafe26e4287f17d1935f87eb9ade01 COUNT = 37 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffc0000000000000000000000 CIPHERTEXT = 49d541b2e74cfe73e6a8e8225f7bd449 COUNT = 38 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffe0000000000000000000000 CIPHERTEXT = 11a45530f624ff6f76a1b3826626ff7b COUNT = 39 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffff0000000000000000000000 CIPHERTEXT = f96b0c4a8bc6c86130289f60b43b8fba COUNT = 40 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffff8000000000000000000000 CIPHERTEXT = 48c7d0e80834ebdc35b6735f76b46c8b COUNT = 41 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffc000000000000000000000 CIPHERTEXT = 2463531ab54d66955e73edc4cb8eaa45 COUNT = 42 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffe000000000000000000000 CIPHERTEXT = ac9bd8e2530469134b9d5b065d4f565b COUNT = 43 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffff000000000000000000000 CIPHERTEXT = 3f5f9106d0e52f973d4890e6f37e8a00 COUNT = 44 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffff800000000000000000000 CIPHERTEXT = 20ebc86f1304d272e2e207e59db639f0 COUNT = 45 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffc00000000000000000000 CIPHERTEXT = e67ae6426bf9526c972cff072b52252c COUNT = 46 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffe00000000000000000000 CIPHERTEXT = 1a518dddaf9efa0d002cc58d107edfc8 COUNT = 47 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffff00000000000000000000 CIPHERTEXT = ead731af4d3a2fe3b34bed047942a49f COUNT = 48 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffff80000000000000000000 CIPHERTEXT = b1d4efe40242f83e93b6c8d7efb5eae9 COUNT = 49 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffc0000000000000000000 CIPHERTEXT = cd2b1fec11fd906c5c7630099443610a COUNT = 50 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffe0000000000000000000 CIPHERTEXT = a1853fe47fe29289d153161d06387d21 COUNT = 51 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffff0000000000000000000 CIPHERTEXT = 4632154179a555c17ea604d0889fab14 COUNT = 52 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffff8000000000000000000 CIPHERTEXT = dd27cac6401a022e8f38f9f93e774417 COUNT = 53 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffc000000000000000000 CIPHERTEXT = c090313eb98674f35f3123385fb95d4d COUNT = 54 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffe000000000000000000 CIPHERTEXT = cc3526262b92f02edce548f716b9f45c COUNT = 55 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffff000000000000000000 CIPHERTEXT = c0838d1a2b16a7c7f0dfcc433c399c33 COUNT = 56 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffff800000000000000000 CIPHERTEXT = 0d9ac756eb297695eed4d382eb126d26 COUNT = 57 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffc00000000000000000 CIPHERTEXT = 56ede9dda3f6f141bff1757fa689c3e1 COUNT = 58 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffe00000000000000000 CIPHERTEXT = 768f520efe0f23e61d3ec8ad9ce91774 COUNT = 59 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffff00000000000000000 CIPHERTEXT = b1144ddfa75755213390e7c596660490 COUNT = 60 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffff80000000000000000 CIPHERTEXT = 1d7c0c4040b355b9d107a99325e3b050 COUNT = 61 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffc0000000000000000 CIPHERTEXT = d8e2bb1ae8ee3dcf5bf7d6c38da82a1a COUNT = 62 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffe0000000000000000 CIPHERTEXT = faf82d178af25a9886a47e7f789b98d7 COUNT = 63 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffff0000000000000000 CIPHERTEXT = 9b58dbfd77fe5aca9cfc190cd1b82d19 COUNT = 64 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffff8000000000000000 CIPHERTEXT = 77f392089042e478ac16c0c86a0b5db5 COUNT = 65 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffc000000000000000 CIPHERTEXT = 19f08e3420ee69b477ca1420281c4782 COUNT = 66 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffe000000000000000 CIPHERTEXT = a1b19beee4e117139f74b3c53fdcb875 COUNT = 67 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffff000000000000000 CIPHERTEXT = a37a5869b218a9f3a0868d19aea0ad6a COUNT = 68 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffff800000000000000 CIPHERTEXT = bc3594e865bcd0261b13202731f33580 COUNT = 69 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffc00000000000000 CIPHERTEXT = 811441ce1d309eee7185e8c752c07557 COUNT = 70 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffe00000000000000 CIPHERTEXT = 959971ce4134190563518e700b9874d1 COUNT = 71 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffff00000000000000 CIPHERTEXT = 76b5614a042707c98e2132e2e805fe63 COUNT = 72 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffff80000000000000 CIPHERTEXT = 7d9fa6a57530d0f036fec31c230b0cc6 COUNT = 73 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffc0000000000000 CIPHERTEXT = 964153a83bf6989a4ba80daa91c3e081 COUNT = 74 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffe0000000000000 CIPHERTEXT = a013014d4ce8054cf2591d06f6f2f176 COUNT = 75 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffff0000000000000 CIPHERTEXT = d1c5f6399bf382502e385eee1474a869 COUNT = 76 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffff8000000000000 CIPHERTEXT = 0007e20b8298ec354f0f5fe7470f36bd COUNT = 77 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffc000000000000 CIPHERTEXT = b95ba05b332da61ef63a2b31fcad9879 COUNT = 78 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffe000000000000 CIPHERTEXT = 4620a49bd967491561669ab25dce45f4 COUNT = 79 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffff000000000000 CIPHERTEXT = 12e71214ae8e04f0bb63d7425c6f14d5 COUNT = 80 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffff800000000000 CIPHERTEXT = 4cc42fc1407b008fe350907c092e80ac COUNT = 81 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffc00000000000 CIPHERTEXT = 08b244ce7cbc8ee97fbba808cb146fda COUNT = 82 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffe00000000000 CIPHERTEXT = 39b333e8694f21546ad1edd9d87ed95b COUNT = 83 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffff00000000000 CIPHERTEXT = 3b271f8ab2e6e4a20ba8090f43ba78f3 COUNT = 84 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffff80000000000 CIPHERTEXT = 9ad983f3bf651cd0393f0a73cccdea50 COUNT = 85 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffc0000000000 CIPHERTEXT = 8f476cbff75c1f725ce18e4bbcd19b32 COUNT = 86 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffe0000000000 CIPHERTEXT = 905b6267f1d6ab5320835a133f096f2a COUNT = 87 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffff0000000000 CIPHERTEXT = 145b60d6d0193c23f4221848a892d61a COUNT = 88 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffff8000000000 CIPHERTEXT = 55cfb3fb6d75cad0445bbc8dafa25b0f COUNT = 89 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffc000000000 CIPHERTEXT = 7b8e7098e357ef71237d46d8b075b0f5 COUNT = 90 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffe000000000 CIPHERTEXT = 2bf27229901eb40f2df9d8398d1505ae COUNT = 91 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffff000000000 CIPHERTEXT = 83a63402a77f9ad5c1e931a931ecd706 COUNT = 92 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffff800000000 CIPHERTEXT = 6f8ba6521152d31f2bada1843e26b973 COUNT = 93 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffc00000000 CIPHERTEXT = e5c3b8e30fd2d8e6239b17b44bd23bbd COUNT = 94 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffe00000000 CIPHERTEXT = 1ac1f7102c59933e8b2ddc3f14e94baa COUNT = 95 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffff00000000 CIPHERTEXT = 21d9ba49f276b45f11af8fc71a088e3d COUNT = 96 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffff80000000 CIPHERTEXT = 649f1cddc3792b4638635a392bc9bade COUNT = 97 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffc0000000 CIPHERTEXT = e2775e4b59c1bc2e31a2078c11b5a08c COUNT = 98 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffe0000000 CIPHERTEXT = 2be1fae5048a25582a679ca10905eb80 COUNT = 99 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffff0000000 CIPHERTEXT = da86f292c6f41ea34fb2068df75ecc29 COUNT = 100 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffff8000000 CIPHERTEXT = 220df19f85d69b1b562fa69a3c5beca5 COUNT = 101 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffc000000 CIPHERTEXT = 1f11d5d0355e0b556ccdb6c7f5083b4d COUNT = 102 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffe000000 CIPHERTEXT = 62526b78be79cb384633c91f83b4151b COUNT = 103 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffff000000 CIPHERTEXT = 90ddbcb950843592dd47bbef00fdc876 COUNT = 104 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffff800000 CIPHERTEXT = 2fd0e41c5b8402277354a7391d2618e2 COUNT = 105 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffc00000 CIPHERTEXT = 3cdf13e72dee4c581bafec70b85f9660 COUNT = 106 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffe00000 CIPHERTEXT = afa2ffc137577092e2b654fa199d2c43 COUNT = 107 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffff00000 CIPHERTEXT = 8d683ee63e60d208e343ce48dbc44cac COUNT = 108 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffff80000 CIPHERTEXT = 705a4ef8ba2133729c20185c3d3a4763 COUNT = 109 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffc0000 CIPHERTEXT = 0861a861c3db4e94194211b77ed761b9 COUNT = 110 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffe0000 CIPHERTEXT = 4b00c27e8b26da7eab9d3a88dec8b031 COUNT = 111 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffff0000 CIPHERTEXT = 5f397bf03084820cc8810d52e5b666e9 COUNT = 112 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffff8000 CIPHERTEXT = 63fafabb72c07bfbd3ddc9b1203104b8 COUNT = 113 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffc000 CIPHERTEXT = 683e2140585b18452dd4ffbb93c95df9 COUNT = 114 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffe000 CIPHERTEXT = 286894e48e537f8763b56707d7d155c8 COUNT = 115 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffff000 CIPHERTEXT = a423deabc173dcf7e2c4c53e77d37cd1 COUNT = 116 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffff800 CIPHERTEXT = eb8168313e1cfdfdb5e986d5429cf172 COUNT = 117 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffc00 CIPHERTEXT = 27127daafc9accd2fb334ec3eba52323 COUNT = 118 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffe00 CIPHERTEXT = ee0715b96f72e3f7a22a5064fc592f4c COUNT = 119 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffff00 CIPHERTEXT = 29ee526770f2a11dcfa989d1ce88830f COUNT = 120 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffff80 CIPHERTEXT = 0493370e054b09871130fe49af730a5a COUNT = 121 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffffc0 CIPHERTEXT = 9b7b940f6c509f9e44a4ee140448ee46 COUNT = 122 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffffe0 CIPHERTEXT = 2915be4a1ecfdcbe3e023811a12bb6c7 COUNT = 123 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffff0 CIPHERTEXT = 7240e524bc51d8c4d440b1be55d1062c COUNT = 124 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffff8 CIPHERTEXT = da63039d38cb4612b2dc36ba26684b93 COUNT = 125 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffffc CIPHERTEXT = 0f59cb5a4b522e2ac56c1a64f558ad9a COUNT = 126 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = fffffffffffffffffffffffffffffffe CIPHERTEXT = 7bfe9d876c6d63c1d035da8fe21c409d COUNT = 127 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 PLAINTEXT = ffffffffffffffffffffffffffffffff CIPHERTEXT = acdace8078a32b1a182bfa4987ca1347 [DECRYPT] COUNT = 0 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ddc6bf790c15760d8d9aeb6f9a75fd4e PLAINTEXT = 80000000000000000000000000000000 COUNT = 1 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0a6bdc6d4c1e6280301fd8e97ddbe601 PLAINTEXT = c0000000000000000000000000000000 COUNT = 2 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9b80eefb7ebe2d2b16247aa0efc72f5d PLAINTEXT = e0000000000000000000000000000000 COUNT = 3 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7f2c5ece07a98d8bee13c51177395ff7 PLAINTEXT = f0000000000000000000000000000000 COUNT = 4 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7818d800dcf6f4be1e0e94f403d1e4c2 PLAINTEXT = f8000000000000000000000000000000 COUNT = 5 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e74cd1c92f0919c35a0324123d6177d3 PLAINTEXT = fc000000000000000000000000000000 COUNT = 6 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8092a4dcf2da7e77e93bdd371dfed82e PLAINTEXT = fe000000000000000000000000000000 COUNT = 7 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 49af6b372135acef10132e548f217b17 PLAINTEXT = ff000000000000000000000000000000 COUNT = 8 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8bcd40f94ebb63b9f7909676e667f1e7 PLAINTEXT = ff800000000000000000000000000000 COUNT = 9 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fe1cffb83f45dcfb38b29be438dbd3ab PLAINTEXT = ffc00000000000000000000000000000 COUNT = 10 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0dc58a8d886623705aec15cb1e70dc0e PLAINTEXT = ffe00000000000000000000000000000 COUNT = 11 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c218faa16056bd0774c3e8d79c35a5e4 PLAINTEXT = fff00000000000000000000000000000 COUNT = 12 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 047bba83f7aa841731504e012208fc9e PLAINTEXT = fff80000000000000000000000000000 COUNT = 13 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = dc8f0e4915fd81ba70a331310882f6da PLAINTEXT = fffc0000000000000000000000000000 COUNT = 14 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1569859ea6b7206c30bf4fd0cbfac33c PLAINTEXT = fffe0000000000000000000000000000 COUNT = 15 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 300ade92f88f48fa2df730ec16ef44cd PLAINTEXT = ffff0000000000000000000000000000 COUNT = 16 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1fe6cc3c05965dc08eb0590c95ac71d0 PLAINTEXT = ffff8000000000000000000000000000 COUNT = 17 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 59e858eaaa97fec38111275b6cf5abc0 PLAINTEXT = ffffc000000000000000000000000000 COUNT = 18 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2239455e7afe3b0616100288cc5a723b PLAINTEXT = ffffe000000000000000000000000000 COUNT = 19 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3ee500c5c8d63479717163e55c5c4522 PLAINTEXT = fffff000000000000000000000000000 COUNT = 20 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d5e38bf15f16d90e3e214041d774daa8 PLAINTEXT = fffff800000000000000000000000000 COUNT = 21 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b1f4066e6f4f187dfe5f2ad1b17819d0 PLAINTEXT = fffffc00000000000000000000000000 COUNT = 22 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6ef4cc4de49b11065d7af2909854794a PLAINTEXT = fffffe00000000000000000000000000 COUNT = 23 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ac86bc606b6640c309e782f232bf367f PLAINTEXT = ffffff00000000000000000000000000 COUNT = 24 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 36aff0ef7bf3280772cf4cac80a0d2b2 PLAINTEXT = ffffff80000000000000000000000000 COUNT = 25 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1f8eedea0f62a1406d58cfc3ecea72cf PLAINTEXT = ffffffc0000000000000000000000000 COUNT = 26 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = abf4154a3375a1d3e6b1d454438f95a6 PLAINTEXT = ffffffe0000000000000000000000000 COUNT = 27 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 96f96e9d607f6615fc192061ee648b07 PLAINTEXT = fffffff0000000000000000000000000 COUNT = 28 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cf37cdaaa0d2d536c71857634c792064 PLAINTEXT = fffffff8000000000000000000000000 COUNT = 29 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = fbd6640c80245c2b805373f130703127 PLAINTEXT = fffffffc000000000000000000000000 COUNT = 30 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8d6a8afe55a6e481badae0d146f436db PLAINTEXT = fffffffe000000000000000000000000 COUNT = 31 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6a4981f2915e3e68af6c22385dd06756 PLAINTEXT = ffffffff000000000000000000000000 COUNT = 32 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 42a1136e5f8d8d21d3101998642d573b PLAINTEXT = ffffffff800000000000000000000000 COUNT = 33 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9b471596dc69ae1586cee6158b0b0181 PLAINTEXT = ffffffffc00000000000000000000000 COUNT = 34 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 753665c4af1eff33aa8b628bf8741cfd PLAINTEXT = ffffffffe00000000000000000000000 COUNT = 35 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9a682acf40be01f5b2a4193c9a82404d PLAINTEXT = fffffffff00000000000000000000000 COUNT = 36 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 54fafe26e4287f17d1935f87eb9ade01 PLAINTEXT = fffffffff80000000000000000000000 COUNT = 37 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 49d541b2e74cfe73e6a8e8225f7bd449 PLAINTEXT = fffffffffc0000000000000000000000 COUNT = 38 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 11a45530f624ff6f76a1b3826626ff7b PLAINTEXT = fffffffffe0000000000000000000000 COUNT = 39 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = f96b0c4a8bc6c86130289f60b43b8fba PLAINTEXT = ffffffffff0000000000000000000000 COUNT = 40 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 48c7d0e80834ebdc35b6735f76b46c8b PLAINTEXT = ffffffffff8000000000000000000000 COUNT = 41 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2463531ab54d66955e73edc4cb8eaa45 PLAINTEXT = ffffffffffc000000000000000000000 COUNT = 42 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ac9bd8e2530469134b9d5b065d4f565b PLAINTEXT = ffffffffffe000000000000000000000 COUNT = 43 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3f5f9106d0e52f973d4890e6f37e8a00 PLAINTEXT = fffffffffff000000000000000000000 COUNT = 44 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 20ebc86f1304d272e2e207e59db639f0 PLAINTEXT = fffffffffff800000000000000000000 COUNT = 45 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e67ae6426bf9526c972cff072b52252c PLAINTEXT = fffffffffffc00000000000000000000 COUNT = 46 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1a518dddaf9efa0d002cc58d107edfc8 PLAINTEXT = fffffffffffe00000000000000000000 COUNT = 47 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ead731af4d3a2fe3b34bed047942a49f PLAINTEXT = ffffffffffff00000000000000000000 COUNT = 48 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b1d4efe40242f83e93b6c8d7efb5eae9 PLAINTEXT = ffffffffffff80000000000000000000 COUNT = 49 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cd2b1fec11fd906c5c7630099443610a PLAINTEXT = ffffffffffffc0000000000000000000 COUNT = 50 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a1853fe47fe29289d153161d06387d21 PLAINTEXT = ffffffffffffe0000000000000000000 COUNT = 51 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4632154179a555c17ea604d0889fab14 PLAINTEXT = fffffffffffff0000000000000000000 COUNT = 52 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = dd27cac6401a022e8f38f9f93e774417 PLAINTEXT = fffffffffffff8000000000000000000 COUNT = 53 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c090313eb98674f35f3123385fb95d4d PLAINTEXT = fffffffffffffc000000000000000000 COUNT = 54 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = cc3526262b92f02edce548f716b9f45c PLAINTEXT = fffffffffffffe000000000000000000 COUNT = 55 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = c0838d1a2b16a7c7f0dfcc433c399c33 PLAINTEXT = ffffffffffffff000000000000000000 COUNT = 56 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0d9ac756eb297695eed4d382eb126d26 PLAINTEXT = ffffffffffffff800000000000000000 COUNT = 57 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 56ede9dda3f6f141bff1757fa689c3e1 PLAINTEXT = ffffffffffffffc00000000000000000 COUNT = 58 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 768f520efe0f23e61d3ec8ad9ce91774 PLAINTEXT = ffffffffffffffe00000000000000000 COUNT = 59 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b1144ddfa75755213390e7c596660490 PLAINTEXT = fffffffffffffff00000000000000000 COUNT = 60 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1d7c0c4040b355b9d107a99325e3b050 PLAINTEXT = fffffffffffffff80000000000000000 COUNT = 61 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d8e2bb1ae8ee3dcf5bf7d6c38da82a1a PLAINTEXT = fffffffffffffffc0000000000000000 COUNT = 62 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = faf82d178af25a9886a47e7f789b98d7 PLAINTEXT = fffffffffffffffe0000000000000000 COUNT = 63 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9b58dbfd77fe5aca9cfc190cd1b82d19 PLAINTEXT = ffffffffffffffff0000000000000000 COUNT = 64 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 77f392089042e478ac16c0c86a0b5db5 PLAINTEXT = ffffffffffffffff8000000000000000 COUNT = 65 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 19f08e3420ee69b477ca1420281c4782 PLAINTEXT = ffffffffffffffffc000000000000000 COUNT = 66 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a1b19beee4e117139f74b3c53fdcb875 PLAINTEXT = ffffffffffffffffe000000000000000 COUNT = 67 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a37a5869b218a9f3a0868d19aea0ad6a PLAINTEXT = fffffffffffffffff000000000000000 COUNT = 68 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = bc3594e865bcd0261b13202731f33580 PLAINTEXT = fffffffffffffffff800000000000000 COUNT = 69 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 811441ce1d309eee7185e8c752c07557 PLAINTEXT = fffffffffffffffffc00000000000000 COUNT = 70 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 959971ce4134190563518e700b9874d1 PLAINTEXT = fffffffffffffffffe00000000000000 COUNT = 71 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 76b5614a042707c98e2132e2e805fe63 PLAINTEXT = ffffffffffffffffff00000000000000 COUNT = 72 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7d9fa6a57530d0f036fec31c230b0cc6 PLAINTEXT = ffffffffffffffffff80000000000000 COUNT = 73 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 964153a83bf6989a4ba80daa91c3e081 PLAINTEXT = ffffffffffffffffffc0000000000000 COUNT = 74 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a013014d4ce8054cf2591d06f6f2f176 PLAINTEXT = ffffffffffffffffffe0000000000000 COUNT = 75 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = d1c5f6399bf382502e385eee1474a869 PLAINTEXT = fffffffffffffffffff0000000000000 COUNT = 76 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0007e20b8298ec354f0f5fe7470f36bd PLAINTEXT = fffffffffffffffffff8000000000000 COUNT = 77 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = b95ba05b332da61ef63a2b31fcad9879 PLAINTEXT = fffffffffffffffffffc000000000000 COUNT = 78 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4620a49bd967491561669ab25dce45f4 PLAINTEXT = fffffffffffffffffffe000000000000 COUNT = 79 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 12e71214ae8e04f0bb63d7425c6f14d5 PLAINTEXT = ffffffffffffffffffff000000000000 COUNT = 80 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4cc42fc1407b008fe350907c092e80ac PLAINTEXT = ffffffffffffffffffff800000000000 COUNT = 81 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 08b244ce7cbc8ee97fbba808cb146fda PLAINTEXT = ffffffffffffffffffffc00000000000 COUNT = 82 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 39b333e8694f21546ad1edd9d87ed95b PLAINTEXT = ffffffffffffffffffffe00000000000 COUNT = 83 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3b271f8ab2e6e4a20ba8090f43ba78f3 PLAINTEXT = fffffffffffffffffffff00000000000 COUNT = 84 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9ad983f3bf651cd0393f0a73cccdea50 PLAINTEXT = fffffffffffffffffffff80000000000 COUNT = 85 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8f476cbff75c1f725ce18e4bbcd19b32 PLAINTEXT = fffffffffffffffffffffc0000000000 COUNT = 86 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 905b6267f1d6ab5320835a133f096f2a PLAINTEXT = fffffffffffffffffffffe0000000000 COUNT = 87 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 145b60d6d0193c23f4221848a892d61a PLAINTEXT = ffffffffffffffffffffff0000000000 COUNT = 88 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 55cfb3fb6d75cad0445bbc8dafa25b0f PLAINTEXT = ffffffffffffffffffffff8000000000 COUNT = 89 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7b8e7098e357ef71237d46d8b075b0f5 PLAINTEXT = ffffffffffffffffffffffc000000000 COUNT = 90 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2bf27229901eb40f2df9d8398d1505ae PLAINTEXT = ffffffffffffffffffffffe000000000 COUNT = 91 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 83a63402a77f9ad5c1e931a931ecd706 PLAINTEXT = fffffffffffffffffffffff000000000 COUNT = 92 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 6f8ba6521152d31f2bada1843e26b973 PLAINTEXT = fffffffffffffffffffffff800000000 COUNT = 93 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e5c3b8e30fd2d8e6239b17b44bd23bbd PLAINTEXT = fffffffffffffffffffffffc00000000 COUNT = 94 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1ac1f7102c59933e8b2ddc3f14e94baa PLAINTEXT = fffffffffffffffffffffffe00000000 COUNT = 95 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 21d9ba49f276b45f11af8fc71a088e3d PLAINTEXT = ffffffffffffffffffffffff00000000 COUNT = 96 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 649f1cddc3792b4638635a392bc9bade PLAINTEXT = ffffffffffffffffffffffff80000000 COUNT = 97 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = e2775e4b59c1bc2e31a2078c11b5a08c PLAINTEXT = ffffffffffffffffffffffffc0000000 COUNT = 98 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2be1fae5048a25582a679ca10905eb80 PLAINTEXT = ffffffffffffffffffffffffe0000000 COUNT = 99 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = da86f292c6f41ea34fb2068df75ecc29 PLAINTEXT = fffffffffffffffffffffffff0000000 COUNT = 100 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 220df19f85d69b1b562fa69a3c5beca5 PLAINTEXT = fffffffffffffffffffffffff8000000 COUNT = 101 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 1f11d5d0355e0b556ccdb6c7f5083b4d PLAINTEXT = fffffffffffffffffffffffffc000000 COUNT = 102 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 62526b78be79cb384633c91f83b4151b PLAINTEXT = fffffffffffffffffffffffffe000000 COUNT = 103 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 90ddbcb950843592dd47bbef00fdc876 PLAINTEXT = ffffffffffffffffffffffffff000000 COUNT = 104 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2fd0e41c5b8402277354a7391d2618e2 PLAINTEXT = ffffffffffffffffffffffffff800000 COUNT = 105 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 3cdf13e72dee4c581bafec70b85f9660 PLAINTEXT = ffffffffffffffffffffffffffc00000 COUNT = 106 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = afa2ffc137577092e2b654fa199d2c43 PLAINTEXT = ffffffffffffffffffffffffffe00000 COUNT = 107 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 8d683ee63e60d208e343ce48dbc44cac PLAINTEXT = fffffffffffffffffffffffffff00000 COUNT = 108 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 705a4ef8ba2133729c20185c3d3a4763 PLAINTEXT = fffffffffffffffffffffffffff80000 COUNT = 109 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0861a861c3db4e94194211b77ed761b9 PLAINTEXT = fffffffffffffffffffffffffffc0000 COUNT = 110 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 4b00c27e8b26da7eab9d3a88dec8b031 PLAINTEXT = fffffffffffffffffffffffffffe0000 COUNT = 111 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 5f397bf03084820cc8810d52e5b666e9 PLAINTEXT = ffffffffffffffffffffffffffff0000 COUNT = 112 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 63fafabb72c07bfbd3ddc9b1203104b8 PLAINTEXT = ffffffffffffffffffffffffffff8000 COUNT = 113 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 683e2140585b18452dd4ffbb93c95df9 PLAINTEXT = ffffffffffffffffffffffffffffc000 COUNT = 114 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 286894e48e537f8763b56707d7d155c8 PLAINTEXT = ffffffffffffffffffffffffffffe000 COUNT = 115 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = a423deabc173dcf7e2c4c53e77d37cd1 PLAINTEXT = fffffffffffffffffffffffffffff000 COUNT = 116 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = eb8168313e1cfdfdb5e986d5429cf172 PLAINTEXT = fffffffffffffffffffffffffffff800 COUNT = 117 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 27127daafc9accd2fb334ec3eba52323 PLAINTEXT = fffffffffffffffffffffffffffffc00 COUNT = 118 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = ee0715b96f72e3f7a22a5064fc592f4c PLAINTEXT = fffffffffffffffffffffffffffffe00 COUNT = 119 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 29ee526770f2a11dcfa989d1ce88830f PLAINTEXT = ffffffffffffffffffffffffffffff00 COUNT = 120 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0493370e054b09871130fe49af730a5a PLAINTEXT = ffffffffffffffffffffffffffffff80 COUNT = 121 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 9b7b940f6c509f9e44a4ee140448ee46 PLAINTEXT = ffffffffffffffffffffffffffffffc0 COUNT = 122 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 2915be4a1ecfdcbe3e023811a12bb6c7 PLAINTEXT = ffffffffffffffffffffffffffffffe0 COUNT = 123 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7240e524bc51d8c4d440b1be55d1062c PLAINTEXT = fffffffffffffffffffffffffffffff0 COUNT = 124 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = da63039d38cb4612b2dc36ba26684b93 PLAINTEXT = fffffffffffffffffffffffffffffff8 COUNT = 125 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 0f59cb5a4b522e2ac56c1a64f558ad9a PLAINTEXT = fffffffffffffffffffffffffffffffc COUNT = 126 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = 7bfe9d876c6d63c1d035da8fe21c409d PLAINTEXT = fffffffffffffffffffffffffffffffe COUNT = 127 KEY = 0000000000000000000000000000000000000000000000000000000000000000 IV = 00000000000000000000000000000000 CIPHERTEXT = acdace8078a32b1a182bfa4987ca1347 PLAINTEXT = ffffffffffffffffffffffffffffffff ================================================ FILE: tests/ctr/__init__.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . ================================================ FILE: tests/ctr/test_ctr.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . import os import random import unittest import tgcrypto class TestCTR256NIST(unittest.TestCase): # https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/AES_CTR.pdf def test_ctr256_encrypt(self): key = bytes.fromhex(""" 603DEB10 15CA71BE 2B73AEF0 857D7781 1F352C07 3B6108D7 2D9810A3 0914DFF4 """.replace(" ", "").replace("\n", "")) iv = bytes.fromhex(""" F0F1F2F3 F4F5F6F7 F8F9FAFB FCFDFEFF """.replace(" ", "").replace("\n", "")) plaintext = bytes.fromhex(""" 6BC1BEE2 2E409F96 E93D7E11 7393172A AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51 30C81C46 A35CE411 E5FBC119 1A0A52EF F69F2445 DF4F9B17 AD2B417B E66C3710 """.replace(" ", "").replace("\n", "")) ciphertext = bytes.fromhex(""" 601EC313 775789A5 B7A7F504 BBF3D228 F443E3CA 4D62B59A CA84E990 CACAF5C5 2B0930DA A23DE94C E87017BA 2D84988D DFC9C58D B67AADA6 13C2DD08 457941A6 """.replace(" ", "").replace("\n", "")) self.assertEqual(tgcrypto.ctr256_encrypt(plaintext, key, iv, bytes(1)), ciphertext) def test_ctr256_decrypt(self): key = bytes.fromhex(""" 603DEB10 15CA71BE 2B73AEF0 857D7781 1F352C07 3B6108D7 2D9810A3 0914DFF4 """.replace(" ", "").replace("\n", "")) iv = bytes.fromhex(""" F0F1F2F3 F4F5F6F7 F8F9FAFB FCFDFEFF """.replace(" ", "").replace("\n", "")) ciphertext = bytes.fromhex(""" 601EC313 775789A5 B7A7F504 BBF3D228 F443E3CA 4D62B59A CA84E990 CACAF5C5 2B0930DA A23DE94C E87017BA 2D84988D DFC9C58D B67AADA6 13C2DD08 457941A6 """.replace(" ", "").replace("\n", "")) plaintext = bytes.fromhex(""" 6BC1BEE2 2E409F96 E93D7E11 7393172A AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51 30C81C46 A35CE411 E5FBC119 1A0A52EF F69F2445 DF4F9B17 AD2B417B E66C3710 """.replace(" ", "").replace("\n", "")) self.assertEqual(tgcrypto.ctr256_decrypt(ciphertext, key, iv, bytes(1)), plaintext) class TestCTR256Cryptography(unittest.TestCase): # https://github.com/pyca/cryptography/blob/cd4de3ce6dc2a0dd4171b869e187857e4125853b/vectors/cryptography_vectors/ciphers/AES/CTR/aes-256-ctr.txt def test_ctr256_encrypt_extra1(self): key = bytes.fromhex("776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104") iv = bytes.fromhex("00000060DB5672C97AA8F0B200000001") plaintext = bytes.fromhex("53696E676C6520626C6F636B206D7367") ciphertext = bytes.fromhex("145AD01DBF824EC7560863DC71E3E0C0") self.assertEqual(tgcrypto.ctr256_encrypt(plaintext, key, iv, bytes(1)), ciphertext) def test_ctr256_encrypt_extra2(self): key = bytes.fromhex("F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884") iv = bytes.fromhex("00FAAC24C1585EF15A43D87500000001") plaintext = bytes.fromhex("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F") ciphertext = bytes.fromhex("F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1C") self.assertEqual(tgcrypto.ctr256_encrypt(plaintext, key, iv, bytes(1)), ciphertext) def test_ctr256_encrypt_extra3(self): key = bytes.fromhex("FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153D") iv = bytes.fromhex("001CC5B751A51D70A1C1114800000001") plaintext = bytes.fromhex("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223") ciphertext = bytes.fromhex("EB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8") self.assertEqual(tgcrypto.ctr256_encrypt(plaintext, key, iv, bytes(1)), ciphertext) class TestCTR256Input(unittest.TestCase): TYPE_ERROR_PATTERN = r"'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'" def test_ctr256_encrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.ctr256_encrypt(os.urandom(8), os.urandom(32), os.urandom(16)) def test_ctr256_encrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.ctr256_encrypt(1, 2, 3, 4) def test_ctr256_encrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.ctr256_encrypt(b"", os.urandom(32), os.urandom(16), bytes(1)) def test_ctr256_encrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.ctr256_encrypt(os.urandom(8), os.urandom(31), os.urandom(16), bytes(1)) def test_ctr256_encrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 16 bytes"): tgcrypto.ctr256_encrypt(os.urandom(8), os.urandom(32), os.urandom(15), bytes(1)) def test_ctr256_encrypt_invalid_state_size(self): with self.assertRaisesRegex(ValueError, r"State size must be exactly 1 byte"): tgcrypto.ctr256_encrypt(os.urandom(8), os.urandom(32), os.urandom(16), bytes([1, 2, 3])) def test_ctr256_encrypt_invalid_state_value(self): with self.assertRaisesRegex(ValueError, r"State value must be in the range \[0, 15\]"): tgcrypto.ctr256_encrypt(os.urandom(8), os.urandom(32), os.urandom(16), bytes([16])) def test_ctr256_decrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.ctr256_decrypt(os.urandom(8), os.urandom(32), os.urandom(16)) def test_ctr256_decrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.ctr256_decrypt(1, 2, 3, 4) def test_ctr256_decrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.ctr256_decrypt(b"", os.urandom(32), os.urandom(16), bytes(1)) def test_ctr256_decrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.ctr256_decrypt(os.urandom(8), os.urandom(31), os.urandom(16), bytes(1)) def test_ctr256_decrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 16 bytes"): tgcrypto.ctr256_decrypt(os.urandom(8), os.urandom(32), os.urandom(15), bytes(1)) def test_ctr256_decrypt_invalid_state_size(self): with self.assertRaisesRegex(ValueError, r"State size must be exactly 1 byte"): tgcrypto.ctr256_decrypt(os.urandom(8), os.urandom(32), os.urandom(16), bytes([1, 2, 3])) def test_ctr256_decrypt_invalid_state_value(self): with self.assertRaisesRegex(ValueError, r"State value must be in the range \[0, 15\]"): tgcrypto.ctr256_decrypt(os.urandom(8), os.urandom(32), os.urandom(16), bytes([16])) class TestCTR256Random(unittest.TestCase): DATA_MAX_SIZE = 1024 KEY_SIZE = 32 IV_SIZE = 16 TESTS_AMOUNT = 500 TEMPLATE = """ def test_ctr256_random_{mode1}_{count}(self): data = {data} key = {key} iv = {iv} iv_copy = iv.copy() state = {state} state_copy = state.copy() a = tgcrypto.ctr256_{mode1}(data, key, iv, state) b = tgcrypto.ctr256_{mode2}(a, key, iv_copy, state_copy) self.assertEqual(data, b) """.replace("\n ", "\n") for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="encrypt", mode2="decrypt", count=count, data=os.urandom(random.randint(1, DATA_MAX_SIZE)), key=os.urandom(KEY_SIZE), iv=bytearray(os.urandom(IV_SIZE)), state=bytearray([random.randint(0, 15)]) ) ) for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="decrypt", mode2="encrypt", count=count, data=os.urandom(random.randint(1, DATA_MAX_SIZE)), key=os.urandom(KEY_SIZE), iv=bytearray(os.urandom(IV_SIZE)), state=bytearray([random.randint(0, 15)]) ) ) if __name__ == "__main__": unittest.main() ================================================ FILE: tests/ige/__init__.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . ================================================ FILE: tests/ige/test_ige.py ================================================ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan # # This file is part of Pyrogram. # # Pyrogram is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pyrogram is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . import os import random import unittest import tgcrypto class TestIGE256Input(unittest.TestCase): TYPE_ERROR_PATTERN = r"'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'" def test_ige256_encrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.ige256_encrypt(os.urandom(16), os.urandom(32)) def test_ige256_encrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.ige256_encrypt(1, 2, 3) def test_ige256_encrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.ige256_encrypt(b"", os.urandom(32), os.urandom(32)) def test_ige256_encrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.ige256_encrypt(os.urandom(16), os.urandom(31), os.urandom(32)) def test_ige256_encrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 32 bytes"): tgcrypto.ige256_encrypt(os.urandom(16), os.urandom(32), os.urandom(31)) def test_ige256_decrypt_invalid_args_count(self): with self.assertRaisesRegex(TypeError, r"function takes exactly \d arguments \(\d given\)"): tgcrypto.ige256_decrypt(os.urandom(16), os.urandom(32)) def test_ige256_decrypt_invalid_args_type(self): with self.assertRaisesRegex(TypeError, self.TYPE_ERROR_PATTERN): tgcrypto.ige256_decrypt(1, 2, 3) def test_ige256_decrypt_empty_data(self): with self.assertRaisesRegex(ValueError, r"Data must not be empty"): tgcrypto.ige256_decrypt(b"", os.urandom(32), os.urandom(32)) def test_ige256_decrypt_invalid_key_size(self): with self.assertRaisesRegex(ValueError, r"Key size must be exactly 32 bytes"): tgcrypto.ige256_decrypt(os.urandom(16), os.urandom(31), os.urandom(32)) def test_ige256_decrypt_invalid_iv_size(self): with self.assertRaisesRegex(ValueError, r"IV size must be exactly 32 bytes"): tgcrypto.ige256_decrypt(os.urandom(16), os.urandom(32), os.urandom(31)) class TestIGE256Random(unittest.TestCase): DATA_CHUNK_MAX_SIZE = 64 KEY_SIZE = 32 IV_SIZE = 32 TESTS_AMOUNT = 500 TEMPLATE = """ def test_ige256_random_{mode1}_{count}(self): data = {data} key = {key} iv = {iv} a = tgcrypto.ige256_{mode1}(data, key, iv) b = tgcrypto.ige256_{mode2}(a, key, iv) self.assertEqual(data, b) """.replace("\n ", "\n") for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="encrypt", mode2="decrypt", count=count, data=os.urandom(random.randint(1, DATA_CHUNK_MAX_SIZE) * 16), key=os.urandom(KEY_SIZE), iv=os.urandom(IV_SIZE), ) ) for count in range(TESTS_AMOUNT): exec( TEMPLATE.format( mode1="decrypt", mode2="encrypt", count=count, data=os.urandom(random.randint(1, DATA_CHUNK_MAX_SIZE) * 16), key=os.urandom(KEY_SIZE), iv=os.urandom(IV_SIZE), ) ) if __name__ == "__main__": unittest.main() ================================================ FILE: tgcrypto/aes256.c ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #include "aes256.h" #define LROTL(x) (((x) << 8) | ((x) >> 24)) #define LROTR(x) (((x) >> 8) | ((x) << 24)) #define SWAP(x) ((LROTL((x)) & 0x00ff00ff) | (LROTR((x)) & 0xff00ff00)) #define GET(p) SWAP(*((uint32_t *)(p))) #define PUT(ct, st) (*((uint32_t *)(ct)) = SWAP((st))) static const uint32_t Te0[256] = { 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a }; static const uint32_t Te1[256] = { 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 }; static const uint32_t Te2[256] = { 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 }; static const uint32_t Te3[256] = { 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c }; static const uint32_t Td0[256] = { 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 }; static const uint32_t Td1[256] = { 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 }; static const uint32_t Td2[256] = { 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8 }; static const uint32_t Td3[256] = { 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0 }; static const uint8_t SBOX[16][16] = { {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 uint8_t SBOX1[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 }; static const uint32_t RCON[10] = { 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000, 0x1b000000, 0x36000000 }; uint32_t sub_word(uint32_t word) { return ( (SBOX[word >> 4 & 0x0f][word & 0xf]) + (SBOX[word >> 12 & 0x0f][word >> 8 & 0x0f] << 8) + (SBOX[word >> 20 & 0x0f][word >> 16 & 0x0f] << 16) + (SBOX[word >> 28 & 0x0f][word >> 24 & 0x0f] << 24) ); } void aes256_set_encryption_key(const uint8_t key[32], uint32_t expandedKey[60]) { uint32_t Nb = 4, Nr = 14, Nk = 8, i, tmp; for (i = 0; i < Nk; ++i) expandedKey[i] = ( key[4 * i] << 24 | key[4 * i + 1] << 16 | key[4 * i + 2] << 8 | key[4 * i + 3] ); for (i = Nk; i < Nb * (Nr + 1); ++i) { tmp = expandedKey[i - 1]; if (i % Nk == 0) tmp = sub_word(tmp << 8 | tmp >> 24) ^ RCON[(i - 1) / Nk]; else if (Nk > 6 && i % Nk == 4) tmp = sub_word(tmp); expandedKey[i] = expandedKey[i - Nk] ^ tmp; } } void aes256_set_decryption_key(const uint8_t key[32], uint32_t expandedKey[60]) { uint32_t i, j, k, tmp; aes256_set_encryption_key(key, expandedKey); for (i = 0, j = 56; i < j; i += 4, j -= 4) for (k = 0; k < 4; ++k) { tmp = expandedKey[i + k]; expandedKey[i + k] = expandedKey[j + k]; expandedKey[j + k] = tmp; } for (i = 4; i < 56; i += 4) for (j = 0; j < 4; ++j) expandedKey[i + j] = ( Td0[Te1[(expandedKey[i + j] >> 24)] & 0xff] ^ Td1[Te1[(expandedKey[i + j] >> 16) & 0xff] & 0xff] ^ Td2[Te1[(expandedKey[i + j] >> 8) & 0xff] & 0xff] ^ Td3[Te1[(expandedKey[i + j]) & 0xff] & 0xff] ); } void aes256_encrypt(const uint8_t in[16], uint8_t out[16], const uint32_t key[60]) { uint32_t s0, s1, s2, s3, t0, t1, t2, t3; s0 = GET(in) ^ key[0]; s1 = GET(in + 4) ^ key[1]; s2 = GET(in + 8) ^ key[2]; s3 = GET(in + 12) ^ key[3]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[4]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[5]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[6]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[7]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[8]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[9]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[10]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[11]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[12]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[13]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[14]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[15]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[16]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[17]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[18]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[19]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[20]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[21]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[22]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[23]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[24]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[25]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[26]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[27]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[28]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[29]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[30]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[31]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[32]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[33]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[34]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[35]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[36]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[37]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[38]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[39]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[40]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[41]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[42]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[43]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[44]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[45]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[46]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[47]; s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ key[48]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ key[49]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ key[50]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ key[51]; t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ key[52]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ key[53]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ key[54]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ key[55]; s0 = ( (Te2[(t0 >> 24)] & 0xff000000) ^ (Te3[(t1 >> 16) & 0xff] & 0x00ff0000) ^ (Te0[(t2 >> 8) & 0xff] & 0x0000ff00) ^ (Te1[(t3) & 0xff] & 0x000000ff) ^ key[56] ); PUT(out, s0); s1 = ( (Te2[(t1 >> 24)] & 0xff000000) ^ (Te3[(t2 >> 16) & 0xff] & 0x00ff0000) ^ (Te0[(t3 >> 8) & 0xff] & 0x0000ff00) ^ (Te1[(t0) & 0xff] & 0x000000ff) ^ key[57] ); PUT(out + 4, s1); s2 = ( (Te2[(t2 >> 24)] & 0xff000000) ^ (Te3[(t3 >> 16) & 0xff] & 0x00ff0000) ^ (Te0[(t0 >> 8) & 0xff] & 0x0000ff00) ^ (Te1[(t1) & 0xff] & 0x000000ff) ^ key[58] ); PUT(out + 8, s2); s3 = ( (Te2[(t3 >> 24)] & 0xff000000) ^ (Te3[(t0 >> 16) & 0xff] & 0x00ff0000) ^ (Te0[(t1 >> 8) & 0xff] & 0x0000ff00) ^ (Te1[(t2) & 0xff] & 0x000000ff) ^ key[59] ); PUT(out + 12, s3); } void aes256_decrypt(const uint8_t in[16], uint8_t out[16], const uint32_t key[60]) { uint32_t s0, s1, s2, s3, t0, t1, t2, t3; s0 = GET(in) ^ key[0]; s1 = GET(in + 4) ^ key[1]; s2 = GET(in + 8) ^ key[2]; s3 = GET(in + 12) ^ key[3]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[4]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[5]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[6]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[7]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[8]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[9]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[10]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[11]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[12]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[13]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[14]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[15]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[16]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[17]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[18]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[19]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[20]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[21]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[22]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[23]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[24]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[25]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[26]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[27]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[28]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[29]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[30]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[31]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[32]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[33]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[34]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[35]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[36]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[37]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[38]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[39]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[40]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[41]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[42]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[43]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[44]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[45]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[46]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[47]; s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ key[48]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ key[49]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ key[50]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ key[51]; t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ key[52]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ key[53]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ key[54]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ key[55]; s0 = ( ((uint32_t) SBOX1[(t0 >> 24)] << 24) ^ ((uint32_t) SBOX1[(t3 >> 16) & 0xff] << 16) ^ ((uint32_t) SBOX1[(t2 >> 8) & 0xff] << 8) ^ ((uint32_t) SBOX1[(t1) & 0xff]) ^ key[56] ); PUT(out, s0); s1 = ( ((uint32_t) SBOX1[(t1 >> 24)] << 24) ^ ((uint32_t) SBOX1[(t0 >> 16) & 0xff] << 16) ^ ((uint32_t) SBOX1[(t3 >> 8) & 0xff] << 8) ^ ((uint32_t) SBOX1[(t2) & 0xff]) ^ key[57] ); PUT(out + 4, s1); s2 = ( ((uint32_t) SBOX1[(t2 >> 24)] << 24) ^ ((uint32_t) SBOX1[(t1 >> 16) & 0xff] << 16) ^ ((uint32_t) SBOX1[(t0 >> 8) & 0xff] << 8) ^ ((uint32_t) SBOX1[(t3) & 0xff]) ^ key[58] ); PUT(out + 8, s2); s3 = ( ((uint32_t) SBOX1[(t3 >> 24)] << 24) ^ ((uint32_t) SBOX1[(t2 >> 16) & 0xff] << 16) ^ ((uint32_t) SBOX1[(t1 >> 8) & 0xff] << 8) ^ ((uint32_t) SBOX1[(t0) & 0xff]) ^ key[59] ); PUT(out + 12, s3); } ================================================ FILE: tgcrypto/aes256.h ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #include #include #include #ifndef AES256_H #define AES256_H #define AES_BLOCK_SIZE 16 #define EXPANDED_KEY_SIZE 60 void aes256_set_encryption_key(const uint8_t key[32], uint32_t expandedKey[60]); void aes256_set_decryption_key(const uint8_t key[32], uint32_t expandedKey[60]); void aes256_encrypt(const uint8_t in[16], uint8_t out[16], const uint32_t expandedKey[60]); void aes256_decrypt(const uint8_t in[16], uint8_t out[16], const uint32_t expandedKey[60]); #endif // AES256_H ================================================ FILE: tgcrypto/cbc256.c ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #include "aes256.h" uint8_t *cbc256(const uint8_t in[], uint32_t length, const uint8_t key[32], uint8_t iv[16], uint8_t encrypt) { uint8_t *out = (uint8_t *) malloc(length * sizeof(uint8_t)); uint8_t nextIv[AES_BLOCK_SIZE]; uint32_t expandedKey[EXPANDED_KEY_SIZE]; uint32_t i, j; memcpy(out, in, length); if (encrypt) { aes256_set_encryption_key(key, expandedKey); for (i = 0; i < length; i += AES_BLOCK_SIZE) { for (j = 0; j < AES_BLOCK_SIZE; ++j) out[i + j] ^= iv[j]; aes256_encrypt(&out[i], &out[i], expandedKey); memcpy(iv, &out[i], AES_BLOCK_SIZE); } } else { aes256_set_decryption_key(key, expandedKey); for (i = 0; i < length; i += AES_BLOCK_SIZE) { memcpy(nextIv, &out[i], AES_BLOCK_SIZE); aes256_decrypt(&out[i], &out[i], expandedKey); for (j = 0; j < AES_BLOCK_SIZE; ++j) out[i + j] ^= iv[j]; memcpy(iv, nextIv, AES_BLOCK_SIZE); } } return out; } ================================================ FILE: tgcrypto/cbc256.h ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #ifndef CBC256_H #define CBC256_H uint8_t *cbc256(const uint8_t in[], uint32_t length, const uint8_t key[32], uint8_t iv[16], uint8_t encrypt); #endif // CBC256_H ================================================ FILE: tgcrypto/ctr256.c ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #include "aes256.h" #define MIN(a, b) (((a) < (b)) ? (a) : (b)) uint8_t *ctr256(const uint8_t in[], uint32_t length, const uint8_t key[32], uint8_t iv[16], uint8_t *state) { uint8_t *out = (uint8_t *) malloc(length * sizeof(uint8_t)); uint8_t chunk[AES_BLOCK_SIZE]; uint32_t expandedKey[EXPANDED_KEY_SIZE]; uint32_t i, j, k; memcpy(out, in, length); aes256_set_encryption_key(key, expandedKey); aes256_encrypt(iv, chunk, expandedKey); for (i = 0; i < length; i += AES_BLOCK_SIZE) for (j = 0; j < MIN(length - i, AES_BLOCK_SIZE); ++j) { out[i + j] ^= chunk[(*state)++]; if (*state >= AES_BLOCK_SIZE) *state = 0; if (*state == 0) { k = AES_BLOCK_SIZE; while(k--) if (++iv[k]) break; aes256_encrypt(iv, chunk, expandedKey); } } return out; } ================================================ FILE: tgcrypto/ctr256.h ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #ifndef CTR256_H #define CTR256_H uint8_t *ctr256(const uint8_t in[], uint32_t length, const uint8_t key[32], uint8_t iv[16], uint8_t *state); #endif // CTR256_H ================================================ FILE: tgcrypto/ige256.c ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #include "aes256.h" uint8_t *ige256(const uint8_t in[], uint32_t length, const uint8_t key[32], const uint8_t iv[32], uint8_t encrypt) { uint8_t *out = (uint8_t *) malloc(length * sizeof(uint8_t)); uint8_t iv1[AES_BLOCK_SIZE], iv2[AES_BLOCK_SIZE]; uint8_t chunk[AES_BLOCK_SIZE], buffer[AES_BLOCK_SIZE]; uint32_t expandedKey[EXPANDED_KEY_SIZE]; uint32_t i, j; memcpy(encrypt ? iv1 : iv2, (uint8_t *) iv, AES_BLOCK_SIZE); memcpy(encrypt ? iv2 : iv1, (uint8_t *) iv + AES_BLOCK_SIZE, AES_BLOCK_SIZE); (encrypt ? aes256_set_encryption_key : aes256_set_decryption_key)(key, expandedKey); for (i = 0; i < length; i += AES_BLOCK_SIZE) { memcpy(chunk, &in[i], AES_BLOCK_SIZE); for (j = 0; j < AES_BLOCK_SIZE; ++j) buffer[j] = in[i + j] ^ iv1[j]; (encrypt ? aes256_encrypt : aes256_decrypt)((uint8_t * ) & buffer, &out[i], expandedKey); for (j = 0; j < AES_BLOCK_SIZE; ++j) out[i + j] ^= iv2[j]; memcpy(iv1, &out[i], AES_BLOCK_SIZE); memcpy(iv2, chunk, AES_BLOCK_SIZE); } return out; } ================================================ FILE: tgcrypto/ige256.h ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #ifndef IGE256_H #define IGE256_H uint8_t *ige256(const uint8_t in[], uint32_t length, const uint8_t key[32], const uint8_t iv[32], uint8_t encrypt); #endif // IGE256_H ================================================ FILE: tgcrypto/tgcrypto.c ================================================ /* * Pyrogram - Telegram MTProto API Client Library for Python * Copyright (C) 2017-present Dan * * This file is part of Pyrogram. * * Pyrogram is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pyrogram is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Pyrogram. If not, see . */ #define PY_SSIZE_T_CLEAN #include #include "aes256.h" #include "ige256.h" #include "ctr256.h" #include "cbc256.h" #define DESCRIPTION "Fast and Portable Cryptography Extension Library for Pyrogram\n" \ "TgCrypto is part of Pyrogram, a Telegram MTProto library for Python\n" \ "You can learn more about Pyrogram here: https://pyrogram.org\n" static PyObject *ige(PyObject *args, uint8_t encrypt) { Py_buffer data, key, iv; uint8_t *buf; PyObject *out; if (!PyArg_ParseTuple(args, "y*y*y*", &data, &key, &iv)) return NULL; if (data.len == 0) { PyErr_SetString(PyExc_ValueError, "Data must not be empty"); return NULL; } if (data.len % 16 != 0) { PyErr_SetString(PyExc_ValueError, "Data size must match a multiple of 16 bytes"); return NULL; } if (key.len != 32) { PyErr_SetString(PyExc_ValueError, "Key size must be exactly 32 bytes"); return NULL; } if (iv.len != 32) { PyErr_SetString(PyExc_ValueError, "IV size must be exactly 32 bytes"); return NULL; } Py_BEGIN_ALLOW_THREADS buf = ige256(data.buf, data.len, key.buf, iv.buf, encrypt); Py_END_ALLOW_THREADS PyBuffer_Release(&data); PyBuffer_Release(&key); PyBuffer_Release(&iv); out = Py_BuildValue("y#", buf, data.len); free(buf); return out; } static PyObject *ige256_encrypt(PyObject *self, PyObject *args) { return ige(args, 1); } static PyObject *ige256_decrypt(PyObject *self, PyObject *args) { return ige(args, 0); } static PyObject *ctr256_encrypt(PyObject *self, PyObject *args) { Py_buffer data, key, iv, state; uint8_t *buf; PyObject *out; if (!PyArg_ParseTuple(args, "y*y*y*y*", &data, &key, &iv, &state)) return NULL; if (data.len == 0) { PyErr_SetString(PyExc_ValueError, "Data must not be empty"); return NULL; } if (key.len != 32) { PyErr_SetString(PyExc_ValueError, "Key size must be exactly 32 bytes"); return NULL; } if (iv.len != 16) { PyErr_SetString(PyExc_ValueError, "IV size must be exactly 16 bytes"); return NULL; } if (state.len != 1) { PyErr_SetString(PyExc_ValueError, "State size must be exactly 1 byte"); return NULL; } if (*(uint8_t *) state.buf > 15) { PyErr_SetString(PyExc_ValueError, "State value must be in the range [0, 15]"); return NULL; } Py_BEGIN_ALLOW_THREADS buf = ctr256(data.buf, data.len, key.buf, iv.buf, state.buf); Py_END_ALLOW_THREADS PyBuffer_Release(&data); PyBuffer_Release(&key); PyBuffer_Release(&iv); out = Py_BuildValue("y#", buf, data.len); free(buf); return out; } static PyObject *cbc(PyObject *args, uint8_t encrypt) { Py_buffer data, key, iv; uint8_t *buf; PyObject *out; if (!PyArg_ParseTuple(args, "y*y*y*", &data, &key, &iv)) return NULL; if (data.len == 0) { PyErr_SetString(PyExc_ValueError, "Data must not be empty"); return NULL; } if (data.len % 16 != 0) { PyErr_SetString(PyExc_ValueError, "Data size must match a multiple of 16 bytes"); return NULL; } if (key.len != 32) { PyErr_SetString(PyExc_ValueError, "Key size must be exactly 32 bytes"); return NULL; } if (iv.len != 16) { PyErr_SetString(PyExc_ValueError, "IV size must be exactly 16 bytes"); return NULL; } Py_BEGIN_ALLOW_THREADS buf = cbc256(data.buf, data.len, key.buf, iv.buf, encrypt); Py_END_ALLOW_THREADS PyBuffer_Release(&data); PyBuffer_Release(&key); PyBuffer_Release(&iv); out = Py_BuildValue("y#", buf, data.len); free(buf); return out; } static PyObject *cbc256_encrypt(PyObject *self, PyObject *args) { return cbc(args, 1); } static PyObject *cbc256_decrypt(PyObject *self, PyObject *args) { return cbc(args, 0); } PyDoc_STRVAR( ige256_encrypt_docs, "ige256_encrypt(data, key, iv)\n" "--\n\n" "AES-256-IGE Encryption" ); PyDoc_STRVAR( ige256_decrypt_docs, "ige256_decrypt(data, key, iv)\n" "--\n\n" "AES-256-IGE Decryption" ); PyDoc_STRVAR( ctr256_encrypt_docs, "ctr256_encrypt(data, key, iv, state)\n" "--\n\n" "AES-256-CTR Encryption" ); PyDoc_STRVAR( ctr256_decrypt_docs, "ctr256_decrypt(data, key, iv, state)\n" "--\n\n" "AES-256-CTR Decryption" ); PyDoc_STRVAR( cbc256_encrypt_docs, "cbc256_encrypt(data, key, iv)\n" "--\n\n" "AES-256-CBC Encryption" ); PyDoc_STRVAR( cbc256_decrypt_docs, "cbc256_decrypt(data, key, iv)\n" "--\n\n" "AES-256-CBC Encryption" ); static PyMethodDef methods[] = { {"ige256_encrypt", (PyCFunction) ige256_encrypt, METH_VARARGS, ige256_encrypt_docs}, {"ige256_decrypt", (PyCFunction) ige256_decrypt, METH_VARARGS, ige256_decrypt_docs}, {"ctr256_encrypt", (PyCFunction) ctr256_encrypt, METH_VARARGS, ctr256_encrypt_docs}, {"ctr256_decrypt", (PyCFunction) ctr256_encrypt, METH_VARARGS, ctr256_decrypt_docs}, {"cbc256_encrypt", (PyCFunction) cbc256_encrypt, METH_VARARGS, cbc256_encrypt_docs}, {"cbc256_decrypt", (PyCFunction) cbc256_decrypt, METH_VARARGS, cbc256_decrypt_docs}, {NULL} }; static struct PyModuleDef module = { PyModuleDef_HEAD_INIT, "TgCrypto", DESCRIPTION, -1, methods }; PyMODINIT_FUNC PyInit_tgcrypto(void) { return PyModule_Create(&module); } ================================================ FILE: tox.ini ================================================ [testenv] deps = pytest commands = pytest {posargs}