На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Encrypting Messages Using CryptoAPI



To encrypt a message, a session key must first be generated using the CryptGenKey function. Making this call generates a random key and returns a handle so the key can be used to encrypt and decrypt data. The encryption algorithm to use is also specified at this point. Because the CryptoAPI does not permit applications to use public-key algorithms to encrypt bulk data, you should specify a symmetric algorithm such as RC2 or RC4, with the CryptGenKey call.

Alternatively, if an application needs to encrypt the message in such a way that anyone with a given password can decrypt the data, the CryptDeriveKey function should be used to transform the password into a key suitable for encryption. Note that, in this case, this function is called instead of the CryptGenKey function and the subsequent CryptExportKey calls are not needed.
Once the key has been generated, extra cryptographic properties of the key can be set with the CryptSetKeyParam function. For example, this function allows different sections of the file to be encrypted with different key salts and provides a way to change the cipher mode or initialization vector of the key. These parameters can be used to make the encryption conform with a particular data encryption standard.

Encrypt the data in the file with the CryptEncrypt function. The CryptEncrypt function takes a session key, which was generated in the previous step, and encrypts a buffer of data. Note that as the data is encrypted, the data may be slightly expanded by the encryption algorithm. The application is responsible for remembering the length of the encrypted data so the proper length can later be given to the CryptDecrypt function.
To allow the current user to decrypt the data in the future, the CryptExportKey function is used to save the decryption key in an encrypted form (a key blob) that can only be decrypted with the user's private key. This function requires the user's key exchange public key for this purpose, which can be obtained by using the CryptGetUserKey function. The CryptExportKey function will return a key blob that must be stored by the application for use in decrypting the file.

Note that if the application has certificates (or public keys) for other users, it can permit other users to decrypt the file by performing CryptExportKey calls for each user it wants to give access. The returned key blobs must be stored by the application, as in the previous step.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Кодирующие Сообщения, использовавшие CryptoAPI



Чтобы кодировать сообщение, сеансовый ключ должен сначала сгенерирован используя функцию CryptGenKey. Получение этого вызова генерирует произвольную клавишу и возвращает ручку, так что клавиша может быть использована, чтобы кодировать и декодировать данные. Шифровальный алгоритм в использование также определен в этой точке. Поскольку CryptoAPI не разрешает, чтобы использовать общественные-ключевые алгоритмы, чтобы кодировать насыпные данные, Вы должны определить симметричный алгоритм как например, RC2 или RC4, с вызовом CryptGenKey.

Кроме того, если приложению нужно кодировать сообщение таким образом, чтобы каждый с данным паролем может декодировать данные, функция CryptDeriveKey должна быть использована, чтобы превращать пароль на клавишу пригодную для шифрования. Отметьте, что, в этом случае, эта функция вызвана вместо функции CryptGenKey и последующие вызовы CryptExportKey - не нужно.
Как только клавиша будет сгенерированными, дополнительными шифровальными свойствами клавиши может быть установлено функцией CryptSetKeyParam. Например, эта функция допускает другие секции файла, который нужно кодироваться с другими ключевыми солями и обеспечивал путь изменять режим шифра или вектора инициализации клавиши. Эти параметры могут быть использованы, чтобы делать шифрованием соответствовать шифровальному стандарту конкретных данных.

Закодируйте данные в файле с функцией CryptEncrypt. Функция CryptEncrypt принимает сеансовую клавишу, которая была сгенерирована в предшествующей мере и кодировать буфер данных. Отметьте, что как данные закодированы, данные могут немного быть расширены шифровальным алгоритмом. Приложение ответственное за помнящую длину закодированных данных, так что соответствующая длина может позже дана функции CryptDecrypt.
Для того, чтобы позволять текущего пользователя, чтобы декодировать данные в будущем, функция CryptExportKey использована, чтобы сохранять расшифровке клавишу в закодированной форме ( ключевая капля), что может только декодировано частной клавишей пользователя. Эта функция требует клавишу пользователя биржевой общественной клавиши с этой целью, который может быть получен использованием функции CryptGetUserKey. Функция CryptExportKey возвращает ключевую каплю, которая должна быть загружена заявкой на использование в декодирующем файле.

Отметьтесь, что если приложение имеет сертификаты (или общественные клавиши) для других пользователей, оно может разрешить пользователей, чтобы декодировать файл выполняя призывы CryptExportKey к каждому пользователю это хочет давать доступ. Возвращанные ключевые капли должны быть загружены приложением, как в предшествующем шаге.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz