Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2015, 13:08   #21
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Попробовал сделать так и + осуществил кодировку в BASE64(так требуется), текст получается неверным

Последний раз редактировалось lastell; 04.06.2015 в 13:14.
lastell вне форума Ответить с цитированием
Старый 04.06.2015, 13:22   #22
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Либо используйте готовое Crypto API от MS(Стилет ссылок накидал), либо пишите по RFC с нуля сами. Недоделки дописывать и так тяжко, а в случае шифрования ещё и повесится хочется.
Человек_Борща вне форума Ответить с цитированием
Старый 04.06.2015, 14:08   #23
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Либо используйте готовое Crypto API от MS(Стилет ссылок накидал), либо пишите по RFC с нуля сами. Недоделки дописывать и так тяжко, а в случае шифрования ещё и повесится хочется.
Я попробовал использовать по тем примерам, что дали (cryptoapi), но ничего не получилось.
lastell вне форума Ответить с цитированием
Старый 04.06.2015, 14:22   #24
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Пользуюсь этим:

Код:
function EncryptString(source: string;key: string): string;
  var
    DecryptedData, EncryptedData, KeyPair: TStringStream;
    RSA: HCRYPTPROV;
    HPair: HCRYPTKEY;
    DDataSize, EDataSize: DWORD;
  begin
    DecryptedData := TStringStream.Create(source);
    EncryptedData := TStringStream.Create;
    KeyPair := TStringStream.Create;

    // Инициализаируем CryptoAPI
    CryptAcquireContext(@RSA, nil, nil, PROV_RSA_FULL,
      CRYPT_VERIFYCONTEXT);

    // Импортируем ключ
    KeyPair.WriteString(key);
    CryptImportKey(RSA, PByte(KeyPair.Memory), KeyPair.Size, 0, 0,
      @HPair);

    // Готовим буфер
     DecryptedData.SetSize(DDataSize);
    DDataSize := Length(source);
    CopyMemory(DecryptedData.Memory, pointer(source), DDataSize);
     EDataSize := SizeOf(source);
    CryptEncrypt(HPair, 0, true, 0, nil, @EDataSize, 0);

    // Шифруем
    DDataSize := DecryptedData.Size;
    CryptEncrypt(HPair, 0, true, 0, PByte(DecryptedData.Memory),
      @DDataSize, EDataSize);

    Result := DecryptedData.DataString;

    // Освобождаем занятые ресурсы
    FreeAndNil(DecryptedData);
    FreeAndNil(EncryptedData);
    FreeAndNil(KeyPair);
    CryptDestroyKey(HPair);
    CryptReleaseContext(RSA, 0);
  end;
Результат неверен!

Пробую это:

Код:
function EncryptString(source: string;key: string): string;
  var
    DecryptedData, EncryptedData, KeyPair: TStringStream;
    RSA: HCRYPTPROV;
    HPair: HCRYPTKEY;
    DDataSize, EDataSize: DWORD;
  begin
    DecryptedData := TStringStream.Create(source);
    EncryptedData := TStringStream.Create;
    KeyPair := TStringStream.Create;

    // Инициализаируем CryptoAPI
    CryptAcquireContext(@RSA, nil, nil, PROV_RSA_FULL,
      CRYPT_VERIFYCONTEXT);

    // Импортируем ключ
    KeyPair.WriteString(key);
    CryptImportKey(RSA, PByte(KeyPair.Memory), KeyPair.Size, 0, 0,
      @HPair);

    // Готовим буфер
    EDataSize := SizeOf(source);
    CryptEncrypt(HPair, 0, true, 0, nil, @EDataSize, 0);

    // Шифруем
    DDataSize := DecryptedData.Size;
    CryptEncrypt(HPair, 0, true, 0, PByte(DecryptedData.Memory),
      @DDataSize, EDataSize);

    Result := DecryptedData.DataString;

    // Освобождаем занятые ресурсы
    FreeAndNil(DecryptedData);
    FreeAndNil(EncryptedData);
    FreeAndNil(KeyPair);
    CryptDestroyKey(HPair);
    CryptReleaseContext(RSA, 0);
  end;
Результат тоже неверен

Последний раз редактировалось lastell; 04.06.2015 в 14:35.
lastell вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RSA Шифрование Ericnex Помощь студентам 4 18.11.2013 17:36
Шифрование методом RSA c++\c Lokomoss Помощь студентам 7 01.11.2012 16:48
RSA шифрование на C++ Lervil Фриланс 9 04.07.2011 09:38
DES и RSA шифрование! korneplodik Помощь студентам 0 16.05.2011 10:56
RSA шифрование Slimbr Помощь студентам 0 12.12.2009 13:30