Рейндаэль / AES от C # до VB6 - PullRequest
4 голосов
/ 15 апреля 2009

Мне нужно зашифровать массив байтов в VB6 и расшифровать его в C # (NET 2.0). И наоборот (от C # до VB6).

В C # я использовал класс RijndaelManaged. В VB6 я использовал бесплатные кусочки из интернета. Лучше всего кажется http://www.frez.co.uk/freecode.htm#rijndael Но две реализации генерируют разные выходные данные, начиная с одного и того же ввода: (

Возможно, это проблема с вектором IV в RijndaelManaged ... Я не понимаю ...

Есть ли решение / опыт использования Rijndael / AES между VB6 и NET? Или TripleDes ....

спасибо

ОБНОВЛЕНИЕ: ВАЖНО: Машина, на которой запускается приложение vb6, не имеет NET Framework. Поэтому я не могу использовать Interop и / или класс оболочки NET, представленный как COM. :(

Ответы [ 6 ]

8 голосов
/ 15 апреля 2009

Вы можете использовать взаимодействие из .NET для вызова реализации C # из VB6. Таким образом, обе стороны будут использовать одну и ту же библиотеку.

Вот дополнительная информация: http://msdn.microsoft.com/en-us/library/hfzzah2c(vs.71).aspx

1 голос
/ 13 мая 2009

Я только что схватил SlowAES , реализацию AES на Javascript, и встроил ее в компонент сценариев Windows, что делает его доступным через COM. Затем я смог позвонить в компонент с COM-клиентов. Я не пробовал VB6, потому что у меня нет Visual Studio 6. Но для COM-клиентов, которые я пробовал, я обнаружил, что шифрование полностью совместимо с .NET и классом RijndaelManaged () используйте ту же клавишу, IV, режим и размер ключа.

SlowAES ограничен; например, я не видел режим ECB. Но материал, который я тестировал, совместим с .NET.

Доступен источник файла WSC . Этот источник также включает в себя RFC2898-совместимый PBKDF2, используемый из VB6. Таким образом, вы можете установить ключ от пароля. Он совместим с классом Rfc2898DeriveBytes в .NET.

См. Также, связанный вопрос .

0 голосов
/ 05 июля 2011

Если вы можете сделать простое преобразование C в C #, вот хорошее решение. Он прекрасно работает с VB6 / php и C. Взгляните на Шифрование для C ++, Visual Basic, php с использованием PC1 .

0 голосов
/ 20 октября 2010

VbCorLib теперь поддерживает криптографию, включая Rijndael.

Это бесплатно и .NET-как. Ссылка: http://vbcorlib.blogspot.com/

0 голосов
/ 07 февраля 2010

Взгляните на:

http://www.frez.co.uk/freecode.htm

0 голосов
/ 16 апреля 2009

Может быть, я дам вам некоторую информацию относительно IV.

Вектор инициализации - это данные, отправленные в виде открытого текста, которые должны генерироваться случайным образом для каждого шифрования, чтобы сделать атаки стереотипных заголовков более трудными или невозможными. Конечно, и для шифратора, и для дешифратора ДОЛЖНЫ быть установлены одинаковые значения.

Также есть некоторые режимы, в которых могут выполняться шифрование и дешифрование. Взгляните на эту страницу: Википедия: Режим работы блочного шифра . Вы также должны убедиться, что этот режим одинаков для них обоих.

...