Domanda

Gli strumenti di classe MessageDigest l'algoritmo SHA-1 (tra molti altri). L'algoritmo SHA-1 permette di utilizzare diverse "semi" o digerisce iniziali. Vedere SHA-1 psuedocodarlo

L'algoritmo inizializza variabili, o il seme:

Initialize variables:
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0

Tuttavia la classe MessageDigest, come descritto nella Manuale Java online , non fornisce API per impostare queste variabili iniziali. Infatti, non precisa il valore delle variabili iniziali.

Come faccio a impostare il seme iniziale per l'algoritmo SHA-1?

Dove si trova un esempio di SHA-1 in Java, mediante un seme iniziale ?
(Sto cercando l'attuazione SHA-1, a meno che gli usi di esempio MessageDigest con un seme iniziale alternativa.)

È stato utile?

Soluzione 2

La funzione Java non può essere fornito con un seme iniziale.

I copiato un'implementazione C di SHA-1 algoritmo e modificato per consentire la modifica dei valori iniziali seme.

Altri suggerimenti

Dove ti vedi la necessità di un seme in uno SHA-1 digerire? Normalmente in algoritmo di crittografia con un bisogno di fonte di numeri casuali, un seme è "necessaria". Ma in SHA-1 non è nemmeno utilizzare numeri casuali a tutti, quindi non c'è seme o vettore iniziale di set. Le variabili che hai menzionato sono 'dure' (costanti), fanno parte dell'algoritmo, non c'è bisogno o l'uso di modificare i valori di h0-4.

Mi consiglia di utilizzare un sale invece di un seme per MessageDigest funzioni hash famiglia. Un sale viene applicato, per esempio, anteponendo il sale byte all'ingresso.

Anteporre un sale è anche più potente modificando direttamente i valori di inizializzazione, perché oltre a modificare lo stato interno del hash, se il sale non è un multiplo della dimensione del blocco digest, allora può anche perturbare l'allineamento con cui l'ingresso è alimentato alla funzione hash.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top