DECRYPTSTR(Text: STRING[];
Secret: SECRETTYPE;
EncryptionAlgID:
NUMERIC[0];
[ EncryptionKeyLen: NUMERIC[0]; ]
[ HashingAlgID:
NUMERIC[0]; ]
[ CSPName: STRING[]; ]
[ CSPType: NUMERIC[0] ]
): STRING[];
SECRETTYPE = STRING[] | NUMERIC[0]
Функция расшифровывает строку Text; способ дешифрования зависит от параметра Secret. Если в параметр Secret передана строка, считается, что это пароль. Если передано число, предполагается альтернативный секрет из набора констант CSECR. Значение CSECR_PKCU задает дешифрование приватным ключом из ключевой пары пользователя; приватный ключ хранится в защищенном виде в системном реестре в профиле пользователя. Значение CSECR_INTERNAL1 задает дешифрование внутренним ключом, который хранится в скрытом виде в бинарном коде приложений ASB. Внутренний ключ предназначен только для передачи секретных данных в другие приложения ASB, например wMailTo, поэтому дешифрование внутренним ключом запрещено; функция выбросит исключение.
Расшифрование паролем функция выполняет следующим образом.
Расшифрование публичным ключом пользователя функция выполняет следующим образом.
При помощи параметров CSPName и CSPType можно явно указать соответственно имя и тип криптопровайдера (Cryptography Service Provider - CSP), для чего предусмотрены наборы констант CSP_NAME и CSP_TYPE. Криптопровайдер - это модуль операционной системы, содержащий библиотеку криптографических функций со стандартизованным интерфейсом. По умолчанию используется криптопровайдер CSP_NAME_MS_ENHANCED ("Microsoft Enhanced Cryptographic Provider v1.0") с типом CSP_TYPE_RSA_FULL. Узнать набор криптографических алгоритмов, поставляемых криптопровайдером, можно при помощи утилиты EnumAlgs.exe.
Необязательные параметры, начиная с HashingAlgID задавать явно не рекомендуется. Они заведены попросту "на всякий случай".
Если функция выбросила исключение 482, одной из причин может быть неверный пароль.
Числовой код не является идентификатором алгоритма шифрования | Исключение 483 |
Числовой код не является идентификатором алгоритма хеширования | Исключение 484 |
Исходная строка является некорректной и не может быть декодирована алгоритмом Base64 | Исключение 481 |
Не удалось расшифровать строку | Исключение 482 |
PlainText := DECRYPTSTR(EncryptedText, Password, CALG_DES);