Различия между CAPICOM TripleDES и System.Security.Cryptography TripleDES

Я пытаюсь отказаться от использования CAPICOM, так как больше не могу его использовать (64-битная машина с Windows 7).

Существующий код для использования TripleDES выглядит следующим образом:

EncryptedDataClass cryptic = new EncryptedDataClass();
cryptic.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM.CAPICOM_ENCRYPTION_ALGORITHM_3DES;
cryptic.SetSecret(secretKey, CAPICOM_SECRET_TYPE.CAPICOM_SECRET_PASSWORD);
cryptic.Content = stringToEncrypt;
encryptedString = cryptic.Encrypt(CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_ANY);

Единственная информация, предоставляемая для шифрования, - это secretKey. И secretKey получается около десяти байт. Есть ли способ использовать класс .NET для такого же шифрования. Примечание: это используется для проверки подключения к веб-службе, которая по-прежнему будет использовать CAPICOM. Любая помощь или идеи приветствуются.


person Posthuma    schedule 20.07.2010    source источник
comment
ты решил это? У меня точно такая же проблема ....   -  person    schedule 29.06.2011
comment
Никогда не мог решить эту проблему. Клиент решил оставить старую dll черного ящика на месте.   -  person Posthuma    schedule 05.07.2011
comment
@ user821181, см. мой ответ ниже.   -  person Ben    schedule 19.01.2012
comment
Если какой-либо ответ правильный или полезный, примите его или проголосуйте за него.   -  person Ben    schedule 12.02.2012
comment
К сожалению, ни один из них не был ответом или полезен. Суть вопроса в том, как заставить шифрование .NET работать с устаревшей dll CAPICOM на другом конце.   -  person Posthuma    schedule 29.03.2012


Ответы (3)


SetSecret - это не ключ !!

из MSDN:

CAPICOM_SECRET_TYPE Перечисление

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

Константы CAPICOM_SECRET_PASSWORD Ключ шифрования должен быть получен из пароля.

person Dmitry    schedule 18.04.2012

Не совсем ответ на ваш вопрос и не идеален, но мы столкнулись с той же проблемой с CAPICOM и заставили его работать в 64-битном мире:

  • Скопируйте двоичный файл в [windows] \ syswow64
  • Зарегистрируйте службу (запустите из этого пути, regsvr32 capicon.dll)
person Sam    schedule 17.10.2011
comment
Это сработает. Но я пытался реализовать с помощью инструментов шифрования .NET и работать со старой CAPICOM dll. - person Posthuma; 17.10.2011

Вы можете использовать CAPICOM из 32-битного процесса на 64-битной машине (очевидно). Если вы используете его из скрипта, вы должны использовать 32-битные версии cscript.exe и wscript.exe. То есть:

c:\windows\sysWOW64\cscript.exe "c:\path\to\script.wsf"

c:\windows\sysWOW64\cscript.exe "c:\path\to\another\vbscript.vbs"

Это прекрасно работает, сейчас я делаю это в продакшене.

Кроме того, в этом ответе есть пошаговое руководство по регистрации суррогата для CAPICOM, чтобы его можно было использовать из 64-битных процессов (включая 64-битный скрипт).

На самом деле я сделал это, чтобы использовать CAPICOM из 64-битного SQL Server, и он отлично работает.

person Ben    schedule 19.01.2012