| ||||
| ||||
Плюнул на эти непонятки с типами и решил поработать при помощи CAPICOM. Все очень просто и понятно, только вот незадача: беру файл, оборачиваю в конверт. При обратном преобразовании исходный файл ну никак не получается :( var Inner: TMemoryStream; begin CertStore := CreateOleObject(’Capicom.Store’); EnvelopedData := CreateOleObject(’Capicom.EnvelopedData’); //открыли хранилище сертификатов CertStore.Open(CAPICOM_CURRENT_USER_STORE, ’MY’, CAPICOM_STORE_OPEN_READ_ONLY); Cert := CertStore.Certificates[1]; //взяли файл Inner := TMemoryStream.Create; Inner.LoadFromFile(’d:\file.txt’); //загрузили его в блок памяти GetMem(Buf, Inner.Size); Inner.Position := 0; Inner.ReadBuffer(Buf[0], Inner.Size); //параметы для конверта EnvelopedData.Content := Buf[0]; EnvelopedData.Recipients.Clear; EnvelopedData.Recipients.Add(Cert); //упаковываем в конверт sRes := EnvelopedData.Encrypt(CAPICOM_ENCODE_BASE64); //расшифровываем то, что получилось EnvelopedData.Decrypt(sRes); sRes := EnvelopedData.Content; В результате в переменной sRes какая-то непонятная строка. :( Помогите! :) | ||||
Ответы: | ||||
| ||||
Уже разобрался. Причина в кривых ручках :) В качестве контента для шифрования я передавал первый байт строки :) | ||||