Есть ли исходный код AES (VB.NET), который расшифровывает зашифрованные сообщения AS3CRYPTO - PullRequest
0 голосов
/ 13 марта 2009

Есть ли простой ASP.NET (.VB) для шифрования AES?

здесь ссылка на c # one, но она сложная и имеет довольно много параметров, например salt. [http://www.gutgames.com/post/AES-Encryption-in-C.aspx]

Мне нужен простой, который работает вместе с классом GOOGLEAS3, который легко вызывается так:

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();

1 Ответ

0 голосов
/ 13 марта 2009

AES встроен в среду как класс Aes в System.Security.Cryptography. Существует две конкретные реализации, одна управляемая, другая с использованием Windows Crypto Service Provider (более быстрая, но не переносимая на другие платформы). Также есть реализация Rijndael , из которой происходит AES.

Помните, что вам нужен вектор инициализации, а также ключ для шифрования / дешифрования, так как это блочный шифр. Если вы шифруете без установки одного, будет использоваться случайный, но вам нужно будет сохранить и получить его для расшифровки.

Пример кода: (взято из главы 6 моей будущей книги ухмылка )

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();
}

и расшифровать

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();
}

заменить класс RijndaelManaged одним из классов AES и подходящим ключом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...