2014-07-14 5 views
0

comme je peux le lire sur Internet: l'algorithme Blowfish est symétrique. Et de PHP.net crypt fonction est crypting one.Crypt func permet également Blowfish comme algorithme de hachage. Donc, si je suis correct quand j'associe le cryptage symétrique avec la procédure de cryptage bidirectionnel. Je vois une contradiction. Certainement, en utilisant crypt() + Blowfish donnera à quelqu'un la chance de décrypter la chaîne, si jamais il connaîtra le sel secret? (je pense en fait pas depuis que je peux voir de la chaîne crypted le sel crypting est inclus)En utilisant la fonction crypt PHP avec l'algorithme de hachage Blowfish, est-ce cryptage symétrique ou non?

Un grand merci

Répondre

2

Un algorithme de chiffrement tel que blowfish peut être utilisé dans le cadre d'un algorithme de hachage. Blowfish est juste un "bloc de construction" et peut être utilisé à des fins différentes. Il peut être implémenté en tant qu'outil de chiffrement/déchiffrement ou en tant que primitive cryptographique d'un algorithme de hachage. Cela ne signifie pas que vous êtes soudainement capable d'inverser un algorithme de hachage.

Le simple fait que la sortie de l'algorithme de hachage est toujours une longueur constante est un cadeau qu'il ne peut pas être inversé. Vous ne pouvez pas crypter un nombre infini de valeurs d'entrée potentielles d'une manière réversible dans une sortie de longueur fixe. L'algorithme est nécessairement avec perte.

comme une simple illustration, Blowfish peut être utilisé comme celui-ci à Crypter données (qui peuvent ensuite être déchiffré):

ABCD EFGH IJKL MNOP ... 
    | | | | 
    v v v v 
NPCQ JQ0C MPZW LKAQ 

Chaque bloc de l'entrée est transformé en texte chiffré individuellement par blowfish. C'est pourquoi blowfish est appelé un code de bloc (par opposition à flux de chiffrement qui traiterait l'entrée comme un flux, pas comme un ensemble de blocs de longueur fixe). Le résultat de cette opération est un tas de blocs qui peuvent être inversés. La sortie est de la même longueur que l'entrée (plus le remplissage pour remplir un bloc si nécessaire).

Une fonction de hachage en utilisant Blowfish fonctionne comme suit:

ABCD EFGH  IJKL  MNOP ... 
    | |   |   | 
    v v   v   v 
NPCQ JQ0C  MPZW  LKAQ 
    | |   |   | 
    +----+--> PMQZ --+--> OLMQ --+--> UALG ... 

La sortie de chaque bloc est exécuté par une fonction de compression qui combine deux blocs en un seul. La sortie des deux premiers blocs est combinée (en PMQZ), puis cette valeur est combinée avec la sortie du troisième bloc (en OLMQ) et ainsi de suite. La sortie de la dernière compression est le résultat du hachage.Comme vous le voyez, blowfish est utilisé en interne comme un chiffrement cryptographique, mais sa sortie est combinée avec une fonction de compression avec perte qui rend impossible l'inversion de la sortie.

1

choses sont cryptées déchiffrable, si elle n'est pas déchiffrable on l'appelle le hachage, le hachage est de un façon.

0

Vous y pensez de la mauvaise façon; le sel et le mot de passe sont utilisés ensemble comme clé, alors qu'il y a une chaîne magique qui est la donnée (le mot de passe n'est pas la donnée). Sans la clé, pas de décryptage. Ceci est alors répété (ce que fait bcrypt). Pour une très bonne réponse, voir sha512 vs blowfish vs bcrypt.

Questions connexes