Шифрование пароля в Delphi

    public static List<T> FindControlByType<T>(Control mainControl,bool getAllChild = false) where T :Control
    {
        List<T> lt = new List<T>();
        for (int i = 0; i < mainControl.Controls.Count; i++)
        {
            if (mainControl.Controls[i] is T) lt.Add((T)mainControl.Controls[i]);
            if (getAllChild) lt.AddRange(FindControlByType<T>(mainControl.Controls[i], getAllChild));
        }
        return lt;
    }
17
задан Jorge Castro 25 September 2012 в 14:16
поделиться

15 ответов

Я просто удалил бы файлы, и если бы мусорное ведро все еще полно, я открыл бы Terminal (Ctrl - Alt - T), тип "113" и нажал бы Enter. Это изменит указатель мыши в X. Парение мышь по Панели инструментов Единицы и нажатию левая кнопка мыши. Это уничтожит панель инструментов, и одну секунду спустя она возвратится.

РЕДАКТИРОВАНИЕ: подход xkill уничтожит сессию и приложения, работающие в нем, и необходимо будет войти в систему снова. Это действительно приводит к пустому trashcan значку все же. (Протестированный под 14,04): кажется, что это - давнишняя ошибка со многими дубликатами, см.: https://bugs.launchpad.net/ubuntu / + source/gnome-applets / + ошибка/269441

3
ответ дан Elder Geek 22 October 2019 в 15:02
поделиться

Я второй рекомендация для David Barton библиотека DCPCrypt . Я использовал его успешно в нескольких проектах, и это не возьмет спустя больше чем 15 минут после чтения примеров использования. Это использует лицензию MIT, таким образом, можно использовать его свободно в коммерческих проектах и иначе. DCPCrypt реализует много алгоритмов, включая Rijndael, который является AES.

существуют много googlable автономны (единый блок) реализации также - вопрос - какому Вы доверяете, если Вы не готовы проверить correctedness конкретной библиотеки сами.

17
ответ дан 30 November 2019 в 10:22
поделиться

У меня была та же проблема. Файлы, которые были удалены из Карты памяти, заставляли Мусор казаться полным даже при том, что это было пусто. Как только я освободил мусор со смонтированной Картой памяти, мусор был убран.

8
ответ дан Ulysnep 22 October 2019 в 15:02
поделиться

Найденный, что удаление файлов от жесткого диска расширения заставляет корзину быть полной даже при том, что нет. Решение состоит в том, чтобы переместить файлы, которые Вы хотите удалить от внешнего до корзины, чем пустой. Или выйдите из системы и войдите в

2
ответ дан shaneo 22 October 2019 в 15:02
поделиться

Мусор на рабочем столе пытается подвести итог всего мусора, к которому может получить доступ текущий пользователь.

Каждый диск, каждый диск, имеет свой собственный мусор, вид разговора.

Так (настольный) мусор, остающийся полной после того, как, палка usb отключается средства:

  • мусор не был освобожден, в то время как палка usb была включена,
  • , удаленные файлы на той палке usb все еще присутствуют, они были просто перемещены во "встроенную" .trash папку, но не на самом деле удалены.

, Если это происходит просто, включают назад, что палка usb, или внешний диск и удаленные файлы появятся снова в (настольном) мусоре. Теперь пустой, что мусор и файлы от всего "связанного" мусора будут на самом деле удалены.

Это не ошибка. Это, как мусор работает под человечностью Linux.

2
ответ дан Coeur Noir 22 October 2019 в 15:02
поделиться

Nick, конечно, прав - я просто предполагаю, что Вы знаете то, что Вы делаете, когда Вы говорите, что хотите провести все 15 минут на реализации решения по обеспечению безопасности. Библиотека DCPCrypt также реализует много алгоритмов хеширования, если Вы решаете пойти тем (лучшим) путем.

0
ответ дан 30 November 2019 в 10:22
поделиться

Я reccomend, использующий некоторый тип соли. Не храните склеп (пароль) в файле конфигурации, но insted этого склепа хранилища (соль + пароль). Как 'соль' можно использовать что-то, что требуется, чтобы открывать базу данных, например, db_name+user_name. Поскольку склеп функционирует, можно использовать некоторый известный algortithm в качестве AES, Идеи, DES или чего-то столь же простого как xoring каждый байт с байтом от некоторой другой строки, та строка будет ключом. Сделать это более отличающимся для решения Вас может использовать некоторые случайные байты и сохранить их.

Так для хранения:

  1. init_str: = 5 случайных байтов
  2. new_password: = посолите + пароль//соль: = db_name + user_name
  3. crypted_password = xor_bytes (init_str + new_password, 'моя ключевая фраза')
  4. crypted_password: = init_str + хранилище crypted_password
  5. crypted_password в конфигурации, поскольку это будет байтами, которые Вы можете hexify или base64 это

И соединить:

  1. данные разделения, считанные с конфигурации в init_str и crypted_password
  2. new_password = xor_bytes (init_str + crypted_password, 'моя ключевая фраза')
  3. пароль: = удалите (db_name + user_name) от new_password
1
ответ дан 30 November 2019 в 10:22
поделиться

Просто напоминание.

, Если бы donВґt необходимо взаимодействовать со склепом других, освобождает, затем DCP или LockBox сделали бы задание.

, НО

при необходимости в нем, чтобы быть полностью совместимыми с rinjdael спецификациями, забудьте свободные компоненты, theyВґre довольно "паршивый" большую часть времени.

1
ответ дан 30 November 2019 в 10:22
поделиться

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

то, Что необходимо сделать, сохранить хеши предварительно выбранного (и секрет) соленое значение + пароль. Т.е. свяжите соль и пароль, хешируйте результат и сохраните этот хеш. При аутентификации сделайте то же - связывает соленое значение и предоставленный пользователями пароль, хеш, затем проверяет на равенство. Это делает нападения таблицы радуги невыполнимыми.

, Конечно, если пользователь отправляет пароли по сети (например, если Вы работаете над веб-приложением или клиент-серверным приложением), затем Вы не должны отправлять пароль в открытом тексте через, таким образом, вместо того, чтобы хранить хеш (соль + пароль) необходимо сохранить и проверить по хешу (соль + хеш (пароль)), и сделать, чтобы клиент предварительно хешировал предоставленный пользователями пароль и отправил тот по сети. Это защищает пароль Вашего пользователя также, должен пользователь (как многие делают), снова используют тот же пароль в нескольких целях.

1
ответ дан 30 November 2019 в 10:22
поделиться

Я использовал этот библиотека , действительно быстрый для добавления. Но шоу Wiki еще немного решений.

2
ответ дан 30 November 2019 в 10:22
поделиться

У меня всегда есть пользователь Turbopower Lockbox. Это работает хорошо, и очень простой в использовании. Я на самом деле использую его для точно того же самого, храня пароль в текстовом файле конфигурации.

http://sourceforge.net/projects/tplockbox/

3
ответ дан 30 November 2019 в 10:22
поделиться

TOndrej имеет правильный подход. Вы никогда не должны хранить пароль с помощью обратимого шифра. Как было правильно указано, если Ваш "основной" ключ был когда-либо поставлен под угрозу, вся система поставлена под угрозу. Используя необратимый хеш, такой как MD5, намного более безопасно, и можно сохранить хешированное значение как открытый текст. Просто хешируйте введенный пароль и затем сравните его с сохраненным хешем.

3
ответ дан 30 November 2019 в 10:22
поделиться

Я думаю, что Turbopower LockBox является превосходной библиотекой для криптографии:

http://sourceforge.net/projects/tplockbox/

я не знаю, является ли это слишком большим для Вашего использования, но это очень просто в использовании, и можно зашифровать строку с 5 строками кода. Это - все в примерах.

8
ответ дан 30 November 2019 в 10:22
поделиться

Даже если Вы шифруете, мне кажется, что Ваш ключ расшифровки, а также зашифрованный пароль оба будет в Вашем исполняемом файле, что означает, что никоим образом не просто безопасность с помощью мрака. Любой может взять ключ расшифровки и зашифрованные пароли и генерировать необработанные пароли.

то, Что Вы хотите, является односторонним хэшем.

2
ответ дан 30 November 2019 в 10:22
поделиться

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

зашифрованные пароли Хранения могут быть опасными, потому что, если кто-то получает Ваш "основной" пароль, они могут получить пароли всех Ваших пользователей.

, Если Вы решаете использовать MD5, можно использовать MessageDigest_5.pas, который идет с Delphi (по крайней мере, он включен с моей копией Delphi 2007). Существуют также другие реализации с исходным кодом Delphi, из которого можно выбрать.

16
ответ дан 30 November 2019 в 10:22
поделиться
Другие вопросы по тегам:

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