2009-06-02 7 views
2

Je travaille avec un service côté serveur que je ne contrôle pas. Les belles œuvres dans la norme C# suivant, mais ne fonctionne pas (en raison de manquer des cours) dans Silverlight crypto 2 et 3.Comment puis-je contourner les classes de cryptage manquantes dans silverlight 2/3?

static String DecryptString() 
    { 
     s = "<cipherTextHere>"; 

     byte[] toDecryptArray = Convert.FromBase64String(s); 
     string key = "<key here>"; 

     byte[] keyArray = new byte[key.Length/2]; 
     for (int i = 0; i < keyArray.Length; i++) 
     { 
      keyArray[i] = Convert.ToByte(Convert.ToInt32(key.Substring(i * 2, 2), 16)); 
     } 

     using (var algo = new System.Security.Cryptography.AesManaged()) 
     { 

      // The two lines below are the problem 
      // as SL does not give me the option to select padding or ciphermode 
      algo.Padding = PaddingMode.PKCS7; 
      algo.Mode = CipherMode.ECB; 

      algo.Key = keyArray; 

      ICryptoTransform cTransform = algo.CreateDecryptor(); 
      byte[] resultArray = cTransform.TransformFinalBlock(
           toDecryptArray, 0, toDecryptArray.Length); 

      return (UTF8Encoding.UTF8.GetString(resultArray, 0, resultArray.Length)); 

     } 
    } 

Quelles sont mes options?

Répondre

0

Solution de someone smart: "Vous ne pouvez pas sélectionner de remplissage ou de chiffrement pour AesManaged dans Silverlight, donc vous devrez utiliser la valeur par défaut.Padding est par défaut PKCS7 comme dans votre code C#, mais le mode de chiffrement est CBC."

Cela fonctionne, mais maintenant je vais devoir aller convinnce le fournisseur de services pour passer :(

0

Appelez le Legion of the Bouncy Castle pour vous aider à sortir de cette contrainte.

+0

le problème est qu'ils ne semblent pas avoir quoi que ce soit compilé pour silverlight. – aronchick

+0

assez facile à décompiler personnalisé pour Silverlight, ils ont déjà une version pour Compact Framework –

1

Vous pouvez écrire votre propre fournisseur de chiffrement, ou vous pouvez rechercher des composants tiers qui ont déjà résolu le problème.

Je sais que xceed a implémenté un fournisseur de compression pour Silverlight, donc la compression et le cryptage sont définitivement possibles.

essayer

Cryptography Tutorial

+0

Avez-vous une suggestion pour lancer mon propre fournisseur de cryptage dans Silverlight? – aronchick

+0

a ajouté l'hyperlien à la réponse originale – Peter

0

Silverlight 2 ne possède une partie de l'espace de noms System.Security.Cryptography mis en œuvre. Voir la documentation here. Qu'est-ce qui manque pour toi?

+0

c'était la possibilité de définir le mode de remplissage et de chiffrement qui manquait. – aronchick

Questions connexes