Algoritmo per creare una sequenza superincremento

0

Sto costruendo un'implementazione del [Merkle-Hellman Knapsack Cryptosystem] per il mio studio. ( link )

Una delle cose che vorrei fare è creare una nuova chiave privata. Una chiave privata in Knapsack Cryptosystem consiste principalmente * di un cosiddetto zaino di aumento del surriscaldamento . Questa è una sequenza di numeri K dove K[n] > (K[0] + K[1] + ... + K[n-1] .

Mi chiedo se esistono metodi intelligenti per costruire una nuova sequenza per la quale ciò è vero. È facile creare a lo spazio per il supercrescimento (come 1, 2, 4, 8, 16, ... ), ma fino ad ora ho trovato relativamente difficile farlo correttamente per una sequenza non prevedibile.

Ci sono degli algoritmi (che probabilmente incorporano un valore da un generatore di numeri casuali) che possono farlo?

* ci sono anche altri due numeri da calcolare per la chiave privata, ma questo è al di fuori dello scopo di questa domanda.

    
posta Qqwy 15.09.2016 - 23:13
fonte

1 risposta

1

Non credo che questo debba essere difficile. Conosci la somma degli elementi 0 fino a n-1 , quindi generare n è semplice come scegliere un valore più grande di quello. Un generatore di numeri casuali crittograficamente sicuro dovrebbe funzionare bene quando si esegue questa operazione, fornendo la risposta:

K[n] = sum(K[0] ... K[n-1]) + random(1, c)

Seleziona un valore c tale che non si verifichi un overflow durante la generazione dell'elenco e utilizzalo per generare un elenco per tutto il tempo che desideri.

    
risposta data 16.09.2016 - 00:19
fonte

Leggi altre domande sui tag