2009-10-19 5 views
-1

J'ai une base de données SQL stockant des mots de passe cryptés via une application .NET, que j'ai besoin de décrypter via une application ColdFusion. Je n'arrive tout simplement pas à faire avancer les choses pour que le décryptage des FC fonctionne. Toute aide serait appréciée. Merci.Aide au décryptage des mots de passe ColdFusion créés dans .NET

Le code de décryptage .NET est:

public string Decrypt(string input) 
{ 
    try 
    { 
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 

    int ZeroBasedByteCount = (input.Length/2); 

    //Put the input string into the byte array 
    byte[] inputByteArray = new byte[ZeroBasedByteCount]; 

    int i; 
    int x; 

    for (x = 0;x<ZeroBasedByteCount;x++) 
    { 
    i = (Convert.ToInt32(input.Substring(x * 2, 2), 16)); 
    inputByteArray[x] = (byte)i; 
    } 

    //Create the crypto objects 
    des.Key = ASCIIEncoding.ASCII.GetBytes(key); 
    des.IV = ASCIIEncoding.ASCII.GetBytes(key); 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 

    //Flush the data through the crypto stream into the memory stream 
    cs.Write(inputByteArray, 0, inputByteArray.Length); 
    cs.FlushFinalBlock(); 

    //Get the decrypted data back from the memory stream 
    StringBuilder ret = new StringBuilder(); 

    foreach(byte b in ms.ToArray()) 
    { 
    ret.Append((char)b); 
    } 

    return ret.ToString(); 

    } 
    catch(Exception ex) 
    { 
    throw(ex); 
    return null; 
    } 
} 
+0

D'où vient la variable clé? –

+3

Bien que cela ne résout pas ce problème spécifique, vous ne devriez pas avoir à déchiffrer les mots de passe de toute façon - ils doivent toujours utiliser un hachage unidirectionnel, et vérifier les tentatives de cryptage et comparer les deux valeurs cryptées. –

+1

@Peter Boughton: Amen à cela. – Tomalak

Répondre

0

Avez-vous lu le docs for the CF Decrypt function et déterminé ce que vous avez besoin des valeurs pour le codage, IVorSalt et/ou itérations arguments? (On dirait que l'algorithme est DES.)

+0

J'ai lu les docs et il semble que ce qui me pose problème, c'est le traitement du mot de passe et de la clé, que j'ai avec l'ancien système, afin qu'ils fournissent les mêmes valeurs dans CF.NEt. Le processus CF doit donner la même valeur que: – KnightStalker

+0

int ZeroBasedByteCount = (input.Length/2); // Met la chaîne d'entrée dans le byte array byte [] inputByteArray = new byte [ZeroBasedByteCount]; int i; int x; pour (x = 0; x KnightStalker

Questions connexes