Algorithme de hachage Java Cryptonight-longueur de clé AES étendue?


Je travaille sur une application de mineur de crypto-monnaie Java basée sur un algorithme cryptonight.

J'essaie d'implémenter la fonction de hachage basée sur ce document: https://cryptonote.org/cns/cns008.txt

Mon code:

public byte[] mine(String hash) {
    byte[] out = hash.getBytes();
    out = doKeccak(out);

    //Make key
    byte[] key = new byte[32];
    System.arraycopy(out, 0, key, 0, 32);

    //Make blocks
    byte[][] blocks = new byte[8][];
    for (int i = 0; i < 8; ++i)
        System.arraycopy(out, 64 + 16 * i, blocks[i], 0, 16);

    byte[][] keys = new byte[11][];
    keys[0]=key;
    for (int i = 0; i < 10; ++i) {
        keys[i+1]=new byte[32];
        Rijndael.expandKey(keys[i], keys[i+1], 0, 32, 32);
    }

    //byte[] pad = new byte[2097152];

    //Encrypt blocks
    for (int bid = 0; bid < 8; ++bid) {
        for (int i = 0; i < 10; ++i) {
            blocks[bid] = AES.encrypt(blocks[i], keys[i+1]);
        }
    }

    return Utils.byteToHex(out);
}

L'utilisation de la Rijndael.expandKey méthode ressemble à ça: public static void expandKey(byte[] key, byte[] out, int offset, int keySize, int expKeySize)

Quel numéro dois-je entrer dans la taille de clé étendue? Je ne peux pas voir cela dans la documentation, c'est pourquoi je le demande ici.

Author: gyurix, 2018-02-02

1 answers

Cryptonight utilise l'algorithme AES modifié. Dans l'algorithme standard, vous développez la clé de 256 bits en 15 clés de 128 bits chacune. Pour cryptonight, vous n'avez besoin que de 10 clés de 128 bits chacune. La longueur de sortie doit donc être de 1280 bits ou 160 octets

Le bon article qui explique la planification des clés avec des exemples de code Java (inclure le cas pour l'algorithme AES modifié Cryptonight):

Http://cryptoexplained.tech/hash-algorithmes aes-clé-annexe

Et le code source:

Https://github.com/cryptoexplained/hash-algorithms/blob/master/src/main/java/tech/cryptoexplained/hash/aes/Aes.java

 1
Author: alexey28, 2018-08-03 04:21:27