Не заставляйте тесты зависеть друг от друга. Это не очень хорошая практика, как описано здесь .
Если вы хотите повторно использовать ответ на запрос, вы можете обернуть его в прибор .
@pytest.fixture(scope="module")
def response():
import requests
return requests.get()
def test(response):
Было бы также неплохо посмеяться над запросом, чтобы сделать тесты независимыми от удаленного ресурса. Для этого вы можете использовать библиотеку ответов .
import responses
import requests
@responses.activate
def test_simple():
responses.add(responses.GET, 'http://twitter.com/api/1/foobar',
json={'error': 'not found'}, status=404)
resp = requests.get('http://twitter.com/api/1/foobar')
Одним из основных недостатков является то, что у вас не обязательно есть «128 битов энтропии», как указано в исходном вопросе.
Многие алгоритмы GUID содержат информацию, встроенную в них в предсказуемые шаблоны, например, MAC-адрес компьютера, дату / время или инкрементную последовательность. Криптоанализ WinAPI GUID показал, учитывая начальное состояние, которое можно предсказать до следующих 250 000 GUID, возвращаемых функцией UuidCreate
Например, у меня есть приблизительно 50% шанс угадать первую цифру в первой позиции третьей группы цифр, так как это будет 1 (для направляющих V1) или 4 (для направляющих V4)
Источник: http://en.wikipedia.org/wiki/Globally_Unique_Identifier
Если вам действительно нужен безопасный пароль, рассмотрите вместо него кодовую фразу . Длинная фраза легко запоминается и очень трудна для грубой силы.
Если вам нужен безопасный пароль, который вы хотите оставить диспетчеру паролей в UNIX-подобной системе, вам гораздо лучше просто извлечь его из / dev / random и зашифровать его во что-нибудь удобочитаемый. для 128 битов энтропии вы можете использовать что-то простое, например
head -c 16 /dev/random | openssl enc -a -e
, которое дает такой пароль, как 5eqIviKu4pFTqSPnYosVKg ==
, не слишком длинное, безопасное, случайное, самоубийство, которое нужно запомнить.
Редактировать: добавлены преимущества этот метод над UUID включает дополнительную безопасность в PRNG (/ dev / random) и более короткие пароли, аналогичные недостатки
Недавно я написал код для преобразования первых 64 битов контрольной суммы в последовательность из четырех английских слов. Это делает хорошую контрольную сумму (гораздо проще запомнить, чем шестнадцатеричный беспорядок), но я не уверен, что доверю ей как паролю. Если вы защищаете что-то безопасное, вы должны использовать надежный пароль, который вы запоминаете и не записываете. Если нет, то подойдет любой старый пароль.
Минусы:
... плюсы:
Пароли с большими случайными числами уже были созданы ранее. Они называются OTP и гораздо более безопасны, чем вы предлагаете, потому что они меняются со временем и имеют тенденцию генерироваться защищенными устройствами. Конечно, это актуально, только если вы разрабатываете систему паролей.
Я думаю, что вы действительно хотите криптографически-случайное число , а не GUID. GUID и UUID не являются случайными - как сказал JohnFx, они имеют тенденцию включать обнаруживаемые значения, такие как MAC-адрес или текущую временную метку, чтобы гарантировать уникальность.
Вместо этого вы должны взглянуть на любой крипто-API, доступный для вас, и найти источник высокоэнтропийных случайных чисел. Убедитесь, что документация обещает, что вывод подходит для криптографии, а не только для обычного PRNG. Например, / dev / random в системах Unix является хорошим источником. Затем просто разверните столько случайных байтов, сколько хотите.
Лично это кажется слишком хардкорным. Я предпочел бы генерировать строки, которые содержат немного меньше энтропии на символ, но их легче набирать и запоминать. Например, Есть несколько алгоритмов, которые комбинируют случайные слоги, чтобы создать произносимые бессмысленные слова; добавьте несколько цифр и знаков препинания, и вы получите хороший пароль.
Мне нравятся мои пароли , надежные и местоименные (попробуйте один из сайтов , перечисленных здесь , для онлайн-демонстрации, не забудьте выбрать сайт "v2", чтобы получить местоимение-руководство ).
Con: Вы не можете перепечатать его, а значит, вам придется копировать и вставлять. Если у вас есть программа управления паролями в вашей системе, это не проблема. Но если вы окажетесь в системе, в которой вы этого не сделаете, просто перепечатать это будет очень сложно.
А потом, после нескольких попыток, вы окажетесь взаперти ...
Жизнь может стать очень раздражает.
Даже если вы запишите его, хороший пароль - это то, что вы можете набирать последовательно без ошибок.
Cons:
So unless they're system passwords which change rarely, I doubt they are good passwords.
Does anyone ever need to enter it as a password? Or do you want to use it as a one-time thing? Because seriously, no one wants to enter a GUID in a passwordfield. People have trouble enough as it is, entering WEP/WPA2 wifi network keys. And most of the time, those are one-timers.
@Miyagi: that's the most obvious con ofcourse. They'll have to write it down.
Con:
It would be nearly impossible to remember a 32-byte alpha numeric string.
Technically they would be good passwords In real life, they would be horrible passwords
You would end up having to write down the passwords, use a password manager, or some other form to actually use the password... in a way moving the failure point from the password to another aspect.
Consider using passphrases. Sentences with substitutions for certain letters or other characters, and for numbers, typing them with the SHIFT, converting easy to remember numbers in to well defined character sequences.
For example bcs19850101bcs would be bcs!(*%)!)!bcs
Con: