Шифрование паролей

Я считаю, что синтаксис предыдущих ответов является избыточным и трудно запоминаемым. Пандас представил метод query() в v0.13, и я предпочитаю его. Для вашего вопроса вы можете сделать df.query('col == val')

Воспроизводится из http://pandas.pydata.org/pandas-docs/version/0.17.0/indexing.html#indexing-query

In [167]: n = 10

In [168]: df = pd.DataFrame(np.random.rand(n, 3), columns=list('abc'))

In [169]: df
Out[169]: 
          a         b         c
0  0.687704  0.582314  0.281645
1  0.250846  0.610021  0.420121
2  0.624328  0.401816  0.932146
3  0.011763  0.022921  0.244186
4  0.590198  0.325680  0.890392
5  0.598892  0.296424  0.007312
6  0.634625  0.803069  0.123872
7  0.924168  0.325076  0.303746
8  0.116822  0.364564  0.454607
9  0.986142  0.751953  0.561512

# pure python
In [170]: df[(df.a < df.b) & (df.b < df.c)]
Out[170]: 
          a         b         c
3  0.011763  0.022921  0.244186
8  0.116822  0.364564  0.454607

# query
In [171]: df.query('(a < b) & (b < c)')
Out[171]: 
          a         b         c
3  0.011763  0.022921  0.244186
8  0.116822  0.364564  0.454607

Вы также можете получить доступ к переменным в среде, добавив @.

exclude = ('red', 'orange')
df.query('color not in @exclude')

32
задан Chris 26 November 2019 в 13:33
поделиться

6 ответов

При выборе метода шифрования для системы входа в систему затем, скорость не является другом, у Jeff был to-frow с Thomas Ptacek о паролях и , заключение состояло в том, что необходимо использовать самое медленное, большая часть метода надежного шифрования, которому можно предоставить.

Из блога Thomas Ptacek:
Скорость точно, что Вы don’t хотят в функции хэша пароля.

современные схемы пароля подвергаются нападению с возрастающими взломщиками пароля.

Возрастающие взломщики don’t предварительно вычисляют все возможные взломанные пароли. Они рассматривают каждый хэш пароля индивидуально, и они подают свой словарь через функцию хэша пароля тем же путем, Ваша страница входа в систему PHP была бы. Взломщики таблицы Rainbow как Ophcrack используют пространство для нападения на пароли; возрастающие взломщики как John Превосходный человек, Трещина и LC5 работают со временем: статистические данные и вычисляют.

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

, Чем лучше можно оптимизировать функцию хэша пароля, тем быстрее функция хэша пароля добирается, более слабое, которое схема. MD5 и SHA1, даже стандартные блочные шифры как DES, разработаны, чтобы быть быстрыми. MD5, SHA1 и DES являются хешами слабого пароля. На современных центральных процессорах сырые данные crypto стандартные блоки как DES и MD5 могут быть bitsliced, векторизованным и параллелизированным для создания молнии поисков пароля быстро. Игра закончена реализации FPGA стоят только сотен долларов.

32
ответ дан 27 November 2019 в 20:29
поделиться

Я с Peter. Разработчик, кажется, не понимает паролей. Все мы выбираем (и я виновен в этом также), MD5 или SHA1, потому что они быстры. Размышление об этом ('cuz кто-то недавно указал на это мне), который не имеет никакого смысла. Мы должны выбирать алгоритм хеширования, это глупо медленный. Я имею в виду в масштабе вещей, оживленный сайт хеширует пароли что? каждая 1/2 минута? Кто заботится, требуется ли 0,8 секунды по сравнению с мудрым сервером 0,03 секунд? Но что дополнительное замедление огромно для предотвращения всех типов общих грубых-forcish нападений.

От моего чтения, bcrypt специально предназначен для хеширования безопасного пароля. Это основано на шифре, и существуют многие реализация.

Для PHP, PHPPass http://www.openwall.com/phpass/

выезда Для любого делающего.NET, BCrypt.NET выезда http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

15
ответ дан 27 November 2019 в 20:29
поделиться

Нужно указать, что Вы не хотите к , шифруют пароль, Вы хотите к [1 112] хеш это.

Зашифрованные пароли могут быть дешифрованы, позволив кому-то видеть пароль. Хеширование является односторонней операцией, таким образом, старый пароль пользователя (криптографически) уводят.

<час>

, Что касается которого алгоритма необходимо выбрать - используют в настоящее время принимаемый стандартный:

  • SHA-256

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

  • пароль: password1
  • соль: PasswordSaltDesignedForThisQuestion

Добавляют соль к паролю пользователя:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
8
ответ дан 27 November 2019 в 20:29
поделиться

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

7
ответ дан 27 November 2019 в 20:29
поделиться

Я не обязательно ищу самое быстрое, но хороший баланс, часть сервера, для которого разрабатывается этот код, является довольно медленной, сценарий, который хеширует и хранит пароль, занимает 5-6 секунд для выполнения, и я сузил его к хешированию (если я комментирую долго обсуждение, он работает через 1-2 секунды).

Это не должно быть самым безопасным, я не ввожу в заблуждение для банка (прямо сейчас), но я, конечно НЕ БУДУ хранить пароли как простой текст.

1
ответ дан 27 November 2019 в 20:29
поделиться

Используйте эту функцию при вставке в базу данных Password_harsh ($password, PASSWORD_DEFAULT); И при выборе из базы данных Вы сравниваете пароль, который Вы вставляете с тем в базу данных с помощью функции, если (password_verify ($password, $databasePassword)) {

}else{
echo "password not correct";
}

Это будет резкий пароль в безопасном формате

0
ответ дан 27 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

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