Crypt-Square
view release on metacpan or search on metacpan
0xd8b8e890UL, 0xb13c0ddeUL, 0xd08d0433UL, 0x5ce20368UL,
0x5ddae4c5UL, 0xdc589e3bUL, 0x0f9d460aUL, 0xdac8d33fUL,
0x8f27db59UL, 0xfc8cc4a8UL, 0xbf99ac79UL, 0x5a724e6cUL,
0xcaa2fe8cUL, 0xd1b5e39eUL, 0xea76a41fUL, 0xb004ea73UL,
};
#endif /* ?LITTLE_ENDIAN */
/**
* The Square block cipher.
*
* Algorithm developed by Joan Daemen <daemen.j@protonworld.com> and
* Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>. Description available
* from http://www.esat.kuleuven.ac.be/~cosicart/pdf/VR-9700.PDF
*
* This implementation is in the public domain.
*
* @author Paulo S.L.M. Barreto <pbarreto@nw.com.br>
* @author George Barwood <george.barwood@dial.pipex.com>
* @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
*
* Caveat: this code assumes 32-bit words and probably will not work
* otherwise.
*
* To correctly visualize this file, please set tabstop = 4.
*
* @version 2.7 (1999.06.29)
*
* =============================================================================
*
* Differences from version 2.6 (1997.05.24)
*
* - Fixed tables (files sqgen.c and consequently square.tab) and hashing
* computation (files sqhash.c and sqtest.c) for big-endian platforms.
* Thanks to Alan Hawrelak <alan@celcorp.com> for kindly pointing out
* the errors and helping in the debugging process.
*
* - Fixed the e-mails listed on this note.
*
* =============================================================================
*
* Differences from version 2.5 (1997.04.25)
*
* - Improved key scheduling setup to enhance hashing performance. Modules
* sqgen.c and sqtest.c have been updated accordingly. The new scheme
* (suggested by Vincent Rijmen) uses tables instead of explicit GF(2^8)
* multiplications. Increase in size of the generated code is very small.
*
* - Hashing scheme (Matyas-Meyer-Oseas) added.
*
* =============================================================================
*
* Differences from version 2.4 (1997.04.09):
*
* - Changed all initialization functions so that the IV (when applicable)
* is separately loaded.
*
* - Ciphertext Stealing (CTS) mode added.
*
* - Output Feedback (OFB) mode added.
*
* - Cipher Block Chaining (CBC) mode added.
*
* - Split square.c int several files according to the specific functionality
* (basic functions, modes, testing).
*
* - Flipped tables according to the endianness of the subjacent platform
* for best performance.
*
* - Changed "maketabs.c" to "sqgen.c" for compatibility with the Pegwit system.
*
* =============================================================================
*
* Differences from version 2.3 (1997.04.09):
*
* - Defined function squareExpandKey() to enhance performance of both CFB
* initialization and hash computation (available in version 2.6).
*
* - Changed definition of function squareTransform() to accept a single in-out
* parameter, and optimized function squareGenerateRoundKeys accordingly.
*
* =============================================================================
*
* Differences from version 2.2 (1997.03.03):
*
* - Cipher feedback (CFB) mode added (heavily based on an old public domain CFB
* shell written by Colin Plumb for the IDEA cipher).
*
* - Fixed word size problem (64 bits rather than 32) arising on the Alpha.
*
* - Reformatted indented sections of compiler directives for use with old,
* non-ANSI compliant compilers.
*
* Differences from version 2.1 (1997.03.03):
*
* - Added optional Microsoft x86 assembler version, which increases performance
* by up to 20% depending on the target machine, and generates smaller code.
*
* Differences from version 2.0 (1997.02.11):
*
* - Added typecasts to the build-up of out[] in function squareTransform()
* to make it portable to 16-bit (MSDOS) systems.
*
* - Truncated alogtab[] back to 256 elements and changed the mul() macro
* accordingly. Using an extended table to avoid a division seemed an
* unnecessary storage overhead (it could be useful to speed up hash
* functions derived from Square, but other optimizations are likely to be
* more effective).
*
* Differences from version 2.0 (1997.02.11):
*
* - Updated definition of Square algorithm (version 1.0 implemented an
* embryonic form of Square).
*
* ==============================================================================
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
( run in 0.493 second using v1.01-cache-2.11-cpan-e1769b4cff6 )