Свободная библиотека Encryption для [закрытого] Delphi

Решение только с String.format:

System.out.println(String.format("%-14s$%,.2f","Income",50000.));

будет напечатано Income $50,000.00

27
задан Shannon Matthews 23 December 2011 в 07:17
поделиться

8 ответов

Алгоритм RSA не обязательно устарел, но важен размер ключа. Это все еще регулярно используется повсеместно. Длина ключа RSA 3072 бит должна использоваться, если требуется защита после 2030 года. Это всего лишь функция улучшения вычислительной мощности, а не слабость алгоритма.

Я смотрел на LockBox до того, как SongBeamer начал его поддерживать (Delphi 2007). Я обнаружил, что RSA нестабилен - просто сбой или время от времени выдает неправильные результаты. Возможно, это было исправлено с тех пор. Если вы собираетесь его использовать, убедитесь, что он поддерживает необходимую длину ключей, а затем создайте несколько автоматических тестов с известными входами и выходами. Убедитесь, что он работает стабильно. Если это так, то используйте его всеми средствами.

Вы также можете использовать Microsoft Crypto API для шифрования RSA. Я написал оболочку для Delphi 2007 , но не обновил ее для Unicode (я знаю, как мне не стыдно). Кто-то еще может обновить его, чтобы легко работать с Юникодом.

Другим вариантом может быть использование криптографических функций .NET Framework через взаимодействие с COM или что-то еще.

13
ответ дан Argalatyr 28 November 2019 в 04:50
поделиться

Привет, Брюс! Я использую эту библиотеку начиная с Delphi 5,

Delphi Encryption Compedium Part I v.5.2

  • Полное переписывание прежнего DEC 3, Обновление к DEC 5.1 (выпущено в 2006 году)
  • Многие шифры (Blowfish, Twofish, 3DES, Rijndael ...)
  • Многие хэши (MD2 / 4 / 5, SHA1-512, RipeMD128-320 ...)
  • Функции контрольной суммы (CRC32, CRC16 ...)
  • Функции преобразования текста (MIME Base 64, XX / UU Coding ... )
  • Безопасные функции случайных чисел
  • с шифрованием шифров в режимах (CTS / CBC / CFB / OFB / ECB ...)
  • Полная и простая объектно-ориентированная
  • Высокооптимизированное, быстрое ядро ​​
  • Поддерживает ANSI и Unicode в D2009 (и ниже с использованием WideStrings) ...

Является бесплатным и с кодом Sorce, к сожалению, не реализует RSA.

12
ответ дан RRUZ 28 November 2019 в 04:50
поделиться
​​

Похоже, что D2010 работает сделано :

TurboPower LockBox . Шифрование данных . 4 сентября 2009 г. . Загрузить

Статус: Должно работать нормально.
Эта библиотека была расширена и теперь поддерживает шифрование Ansi и UnicodeStrings.
04.09.2009
* Пакеты Delphi 2010
* должен компилироваться без подсказок и предупреждений

9
ответ дан 28 November 2019 в 04:50
поделиться
  • Как упоминал Аргалатыр, DCPCrypt работает с Delphi 2009, но не поддерживает RSA;

  • ChillKat поддерживает RSA и AES для Delphi, но это не бесплатно;

  • Сергей Кириченко сделал бесплатную реализацию Rijndael, которую вы можете скачать здесь: http://rcolonel.tripod.com/dwnload/rc_rnd.zip . Файлы датированы ноябрем 2000 года, поэтому я не знаю, будет ли он работать непосредственно в более новой версии Delphi.

  • Раньше был zip-файл с кодом Delphi для загрузки здесь: http: //ace.ulyssis .student.kuleuven.ac.be / ~ triade / GInt / bin / RSA.zip , но разработчик, вероятно, закончил свое исследование, и университет удалил его домашнюю страницу. На этой китайской веб-странице я мог видеть содержимое файла (найдите на странице RSA.pas и щелкните ссылку).

Я не знаю точно, что вы имеете в виду под «давно в зубах» (старый?), Но я бы просто выбрал Lockbox, потому что он предоставляет все, что вам нужно. За исключением обновления 2009 года, последние официальные изменения были внесены в 2003 году. Но послушайте, если это сработает, то работает.

5
ответ дан 28 November 2019 в 04:50
поделиться

Для примера кода LockBox может подойти, но я бы больше не использовал его в производстве. Шифрование действительно идет «в зубах». Алгоритмы устаревают. Необнаруженные ранее недостатки, улучшенные методы криптоанализа, математические достижения, увеличивающаяся мощность процессора делают некогда безопасные алгоритмы и размеры ключей уже недостаточно безопасными. 3DES, MD5, SHA-1 уже считаются недостаточными. Атаки на AES были недавно опубликованы ( http://eprint.iacr.org/2009/374 ). Минимальный рекомендуемый размер ключа RSA теперь составляет 1024 бита, в то время как ключи 2048 и 3072 рекомендуются, если данные необходимо защищать в течение многих лет. Lockbox предлагает только ключи размером 1024 бит или меньше . Также необходимо выбрать правильный режим блочного шифрования. А класс LockBox TLbRijndael (AES) по умолчанию использует ECB, который имеет известные недостатки и не предлагает ничего, кроме CBC. Из-за важности электронной безопасности, приобретенной за эти годы, и последующих исследований как хорошими, так и плохими парнями, семилетняя библиотека действительно устарела - просто перекомпилировать ее и добавить поддержку строк UTF-16 недостаточно. Имейте в виду, что ложная безопасность хуже, чем ее отсутствие. Если системному администратору говорят, что «у нас нет никакой защиты», он сам будет работать над обеспечением безопасности (например, IPSec, VPN и т.п.). Если ему говорят: «Да, у нас есть RSA и AES!» он будет чувствовать себя нормально, даже если ваша реализация AES и RSA устарела и более не безопасна.

3
ответ дан 28 November 2019 в 04:50
поделиться

Вы не можете делать то, о чем просите; но вы можете «обмануть», используя тот факт, что в PHP вы можете иметь функцию с тем же именем, что и класс; эти имена не будут конфликтовать.

Итак, если вы объявили такой класс:

class Test {
    public function __construct($param) {
        $this->_var = $param;
    }
    public function myMethod() {
        return $this->_var * 2;
    }
    protected $_var;
}

Затем вы можете объявить функцию, которая возвращает экземпляр этого класса - и имеет то же имя, что и класс:

function Test($param) {
    return new Test($param);
}

] И теперь стало возможно использовать однострочник, как вы и просили - единственное, что вы вызываете функцию, не используя new:

$a = Test(10)->myMethod();
var_dump($a);

И это работает: вот, я получаю:

int 20

в качестве вывода.


И, что лучше, вы можете добавить в свою функцию немного phpdoc:

/**
 * @return Test
 */
function Test($param) {
    return new Test($param);
}

Таким образом, у вас даже будут подсказки в вашей IDE - по крайней мере, с Eclipse PDT 2.x; см. скриншот:



Edit 2010-11-30: Просто для информации, несколько дней назад был отправлен новый RFC,

1
ответ дан 28 November 2019 в 04:50
поделиться

It seems like there are lots of free Delphi AES implementations. Feel free to add your favourites here.

There don't seem to be as many free RSA implementations, and very few libraries that offer both.

It looks like LockBox is still a pretty reasonable option. Especially since I don't need encryption that will take literally years to crack.

I think using Microsoft's Crypto API directly might be the most practical option.

0
ответ дан 28 November 2019 в 04:50
поделиться

Даниэле Тети выпустил коллекцию фильтров DataSnap для Delphi 2010, которая включает хеширование, шифр и сжатие. Он упоминает, что может также реализовать асимметричные шифры в будущем.

http://www.danieleteti.it/

Это открытый исходный код, поэтому, пожалуйста, не стесняйтесь вносить свой вклад.

0
ответ дан 28 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: