I'm embarking on the fool's errand of attempting to understand the Monero hash algorithm. Using this link -- https://cryptonote.org/cns/cns008.txt, I'm struggling to understand this step

3. Scratchpad
      for i = 0..9 do:
          block = aes_round(block, round_keys[i])

The docs say "SubBytes, ShiftRows and MixColumns steps are performed". SO which of these function is "aes_round" ? What would be an example input and output?

3 Answers 3


An AES round uses the three functions (SubBytes, ShiftRows and MixColumns).

The Wikipedia article on AES has a high-level description of the algorithm and links to the AES standard, reference source code, etc.

  • 2
    I started a bounty on this because I'd like some examples, waht thigns look like, e.g. inputs and outputs after each round. SO advises against links because they move or get broken over time. As such, I'd like it all explained here.
    – Dave
    Commented Apr 27, 2018 at 16:49

from hardlydifficult's explainer, this AES round is described as:

"... near standard AES encryption. Each block is encrypted using each round key, sequentially (so 8 blocks * 10 rounds per block means 80 AES rounds so far). The only difference from AES encryption is the 'initial round' and 'final round' as described here are excluded."

it's "near standard" because you need to:

"... Note that unlike in the AES encryption algorithm, the first and the last rounds are not special."

Here's the scratchpad initialization diagram from the explainer:

enter image description here


The AES implementation is the only thing I see that has changed in the Algorithm. This was created by a developer who worked for Intel years ago, and seems to only effect older CPU's, have yet to see any type of change in the Cryptonight that indiciates anything except causing older systems not to function on the Algorithm that is supposed to protect the CPU systems and stop the ASIC Miner Rigs. In fact Bit-main sold out of the X3 Miner Rig for Cryptonight today.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.