Pergunta

O MessageDigest classe implementa o algoritmo SHA-1 (entre muitos outros).O algoritmo SHA-1 permite o uso de diferentes "sementes" ou inicial digere.Ver SHA-1 Psuedocode

O algoritmo inicializa variáveis, ou seja, a semente:

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

No entanto, a MessageDigest de classe, conforme descrito no On-Line De Java Manual, não fornece nenhuma API para definir esses inicial de variáveis.Na verdade, ele não indicar o valor inicial das variáveis.

Como posso definir a semente inicial para o algoritmo SHA-1?

Onde está um exemplo de SHA-1 em linguagem Java, USANDO UMA SEMENTE INICIAL?
(Eu estou olhando para o SHA-1 execução, a menos que o exemplo usa MessageDigest uma alternativa semente inicial.)

Foi útil?

Solução 2

O Java função não pode ser fornecido com uma semente inicial.

Eu copiei de um C implementação do algoritmo SHA-1 e modificado para permitir a alteração dos valores de propagação inicial.

Outras dicas

Onde você vê a necessidade de uma semente em um SHA-1 digerir?Normalmente no algoritmo de criptografia com uma necessidade de fonte de números aleatórios, uma semente é "necessário".Mas no SHA-1 você não usar números aleatórios, então não é nenhuma semente ou inicial do vetor a para definir.As variáveis que você mencionou são "duros" (constantes), eles são parte do algoritmo, sem a necessidade ou utilizar para alterar os valores de h0-4.

Eu recomendo o uso de um sal em vez de uma semente para MessageDigest família de funções de hash.Um sal é aplicado, por exemplo, adicionar o sal bytes de entrada.

Colocar um sal também é mais poderoso do que diretamente a definição de valores de semente, porque, além de alterar o estado interno do hash, se o sal não é um múltiplo de a digerir o tamanho do bloco, em seguida, ele também pode perturbar o alinhamento com que a entrada é alimentado para a função de hash.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top