2016-08-24 1 views
-4

je crée une table de hachage SHA512 avec le code suivant:Décrypter Swift hachage SHA512

func createSHA512(source:String) -> String { 
    let rawstr:NSString = NSString(format: "%@%@", source, "xxxxxxxxxxxxxx"); 
    let data = rawstr.dataUsingEncoding(NSUTF8StringEncoding)!; 
    var digest = [UInt8](count:Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0); 
    CC_SHA512(data.bytes, CC_LONG(data.length), &digest); 
    let output = NSMutableString(capacity: Int(CC_SHA512_DIGEST_LENGTH)); 
    for byte in digest { 
     output.appendFormat("%02x", byte); 
    } 
    return output as String; 
} 

Est-il possible de décrypter ce Hash avec Swift 2 à la chaîne d'origine?

+2

Le but même d'un hachage est qu'il ne peut pas être annulé (non haché, décrypté). Ce n'est pas une méthode de cryptage. – Codo

+0

Ceci n'est possible que par la force brute ou si vous avez une table arc-en-ciel qui contient des hachages et leurs "originaux" connus. Vous ne pouvez pas déchiffrer un hachage. – donnywals

+2

Une recherche SO pour 'decrypt sha hash' a (actuellement) 351 hits. Je ne peux pas imaginer qu'aucun d'entre eux n'ait répondu à votre question. –

Répondre

2

SHA est un hachage, pas un cryptage. Un hachage n'inclut pas toutes les informations dans l'original et c'est une fonction à sens unique. C'est une signature des données d'origine, pas une version de celui-ci.

Donc non, il ne peut pas être annulé pour récupérer l'original. La seule option pour «inverser» serait de créer des suppositions de l'original et essayer de les hacher pour voir si le résultat correspond. Notez que les hachages ne sont pas uniques, donc même si vous avez une correspondance, vous ne pouvez pas garantir à 100% qu'elle correspond à l'original, mais seulement qu'elle a la même valeur.