2009-03-13 6 views
0

Existe-t-il un simple ASP.NET (.VB) disponible pour le cryptage AES?Y a-t-il un code source AES (VB.NET) qui décrypte les messages cryptés AS3CRYPTO

Voici un lien vers C# un mais son compliqué ayant beaucoup de paramètres, par exemple le sel. [

je besoin d'un simple qui fonctionne avec GOOGLEAS3 classe appelée facilement comme ceci:

var key:ByteArray = Hex.toArray("1234567890abcdef"); 
var pt:ByteArray = Hex.toArray(Hex.fromString("aaaaaaaaaaaaaaaaaaaa")); 
var aes:AESKey = new AESKey(key); 
aes.encrypt(pt); 
var out:String = Hex.fromArray(pt).toUpperCase(); 

Répondre

0

AES est intégré dans le cadre, comme la classe Aes dans System.Security.Cryptography. Il existe deux implémentations concrètes, l'une gérée, l'autre utilisant Windows Crypto Service Provider (plus rapide, mais non portable vers d'autres plateformes). Il y a aussi une implémentation de Rijndael, dont dérive AES. N'oubliez pas que vous avez besoin d'un vecteur d'initialisation, ainsi que de la clé pour crypter/décrypter, car c'est un chiffrement par bloc. Si vous cryptez sans en configurer un, un sera utilisé, mais vous devrez le stocker et le récupérer pour le déchiffrement.

Exemple de code: (levé du chapitre 6 de mon livre à paraître grin)

static byte[] Encrypt(byte[] clearText, byte[] key, byte[] iv) 
{ 
    // Create an instance of our encyrption algorithm. 
    RijndaelManaged rijndael = new RijndaelManaged(); 

    // Create an encryptor using our key and IV 
    ICryptoTransform transform = rijndael.CreateEncryptor(key, iv); 

    // Create the streams for input and output 
    MemoryStream outputStream = new MemoryStream(); 
    CryptoStream inputStream = new CryptoStream(
     outputStream, 
     transform, 
     CryptoStreamMode.Write); 

    // Feed our data into the crypto stream. 
    inputStream.Write(clearText, 0, clearText.Length); 

    // Flush the crypto stream. 
    inputStream.FlushFinalBlock(); 

    // And finally return our encrypted data. 
    return outputStream.ToArray(); 
} 

et pour décrypter

static byte[] Decyrpt(byte[] clearText, byte[] key, byte[] iv) 
{ 
    // Create an instance of our encryption algorithm. 
    RijndaelManaged rijndael = new RijndaelManaged(); 

    // Create an decryptor using our key and IV 
    ICryptoTransform transform = rijndael.CreateDecryptor(key, iv); 

    // Create the streams for input and output 
    MemoryStream outputStream = new MemoryStream(); 
    CryptoStream inputStream = new CryptoStream(
     outputStream, 
     transform, 
     CryptoStreamMode.Write); 

    // Feed our data into the crypto stream. 
    inputStream.Write(clearText, 0, clearText.Length); 

    // Flush the crypto stream. 
    inputStream.FlushFinalBlock(); 

    // And finally return our decrypted data. 
    return outputStream.ToArray(); 
} 

remplacer la classe RijndaelManaged avec l'une des classes AES et approprié clé.

+0

J'essaye de faire ceci, et je continue à obtenir une violation de taille de clé. Voici ma clé: string verySecureKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; Quand je fais: var algo = new System.Security.Cryptography.RijndaelManaged(); keyArray = UTF8Encoding.UTF8.GetBytes (verySecureKey); algo.Key = keyArray; Je reçois une violation de clé sur la dernière ligne (64 bits au lieu de 32) - mais cela fonctionne très bien dans AS3Crypto. Pensées? – aronchick