1. 10 Jun, 2017 4 commits
  2. 05 Jun, 2017 2 commits
    • Bobulous's avatar
    • Bobulous's avatar
      Converted KeccakState into an abstract superclass and created a dedicated... · fc970c07
      Bobulous authored
      Converted KeccakState into an abstract superclass and created a dedicated subclass for each permutation width.
      
      Created the abstract KeccakShortState superclass to contain common methods used by both the Keccak[400] and Keccak[200] implementations (which use a Java int primitive for each lane, despite the lane data being shorter than 32 bits).
      
      Moved the calculation of rotation and round constants out of KeccakSponge, and instead added hardcoded, pre-calculated values into the KeccakState subclasses (seeing as these constants are determined solely by the permutation width).
      
      Created a new KeccakUtilities class and moved the rotation and round constant methods into out, seeing as they are of interest for future reference, but do not need to be available to the KeccakSponge or KeccakState classes any longer.
      
      These changes have reduced runtime by about 37% (for the Keccak[1600] tests). For the first time, all SHA3 hash functions process the 1 gibibyte "extremely long known-answer test" in less than a minute (now less than fifty seconds in fact). Raw throughput (on my Intel Core i5-4460 3.20GHz desktop, running Java OpenJDK 1.8.0_131 on Kubuntu 16.04 on Linux 4.4.0-78 [64-bit], hashing a generated stream of 1GiB without any disk access) is 326.9 Mbit/s for SHA3-224 and 177.0 Mbit/s for SHA3-512.
      
      Minor tidy up and correction of comment text throughout the package.
      fc970c07
  3. 28 May, 2017 2 commits
  4. 27 May, 2017 4 commits
  5. 26 May, 2017 2 commits
  6. 24 May, 2017 3 commits