2011-08-19 2 views
0

J'essayais d'adapter l'exemple de Håvard Stranden (http://ox.no/posts/rsa-using-bouncycastle) d'un algorithme RSA en utilisant BouncyCastle dans un algorithme TEA, en utilisant aussi les exemples qui viennent avec BouncyCastle, et j'ai fait le code suivant pour crypter ma chaîne:Implémentation de l'algorithme TEA en utilisant BouncyCastle

byte[] data = Encoding.UTF8.GetBytes("This is an encoding test!!!..."); 

TeaEngine e = new TeaEngine(); 
e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword"))); 

int blockSize = e.GetBlockSize(); 

byte[] outBytes = new byte[data.Length]; 

List<byte> output = new List<byte>(); 
for (int chunkPosition = 0; chunkPosition < data.Length; chunkPosition += blockSize) 
{ 
    int chunkSize = Math.Min(blockSize, data.Length - (chunkPosition * blockSize)); 
    if (e.IsPartialBlockOkay) 
    { 
      e.ProcessBlock(data, chunkPosition, outBytes, chunkPosition); 
    } 
    else 
    { 
      e.ProcessBlock(data, chunkPosition, outBytes, chunkPosition); 
    } 
} 

Console.WriteLine("Encrypted: " + Encoding.UTF8.GetString(output.ToArray())); 

Mais je reçois toujours une erreur. Une idée sur la façon de l'implémenter?

Merci à l'avance

EDIT: Désolé de ne pas afficher le journal des erreurs, mais je a publié ce billet à une heure plus tard et l'a oublié

Ici, il va: à e.Init (true, nouvelles KeyParameter (Encoding.UTF8.GetBytes ("MyPassword"))); Je reçois un "Index était en dehors des limites du tableau."

+2

Pourquoi diable voulez-vous * pas * inclure l'erreur réelle que vous obtenez dans votre question? Sommes-nous censés lire dans votre esprit? –

+0

Je lis seulement les esprits les mardis et les jeudis. C'est une chose syndicale. – Amy

Répondre

1

TEA utilise une clé de 128 bits, soit 16 octets. Utilisez un mot de passe est de 16 octets (ou utiliser une fonction clé de dérivation pour obtenir une clé de 16 octets d'un mot de passe plus court):

e.Init(true, new KeyParameter(Encoding.UTF8.GetBytes("MyPassword123456"))); 
Questions connexes