Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2011 18:43:35

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

2 вопроса

Здравствуйте. У меня такая проблема, точнее сказать их две.
Мне надо создать генератор поролей.
Он должен делать следующее:
1. Спрашивать у пользоватея длину пороля
2. В зависимости от длины генерирует случайные цифры. Проверяет повторяются ли они, если есть повторы генерирует снова, пока не создаст уникальный пароль
3. Цифры это индексы в массиве со знаками. В цикле он выдаёт соответствующие буквы/цифры.
4. Делает с созданным паролем все возможные вариации и выдаёт лучшие.

Мои проблемы:
Как мне сделать в одном цикле чтоб генерировал/ проверял
Програмный код, которые делает все возможные вариации работает только с конретным словом, а у меня не получается создать из “пороля” слово (Знаю, что не очень понятно, но в коде будет видно)

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

#Generator porolei
#Fail
file=open("/ps.txt","r")

znaki=[]
def ridade_lugemine(file,list):
for rida in file:
rida.split("\t")
rida=rida.rstrip("\n")
list.append(rida)

ridade_lugemine(file,znaki)

#Dlina paroli
print "Vvedite dlinu parolya:",
pikkus=input()
while pikkus>16:
if (pikkus>16):
print "Parol dlinne 4em 16 znakov, poprobui ese raz!"
pikkus=input()
else:
continue

from random import*

parool=[]

#TUT PERVAYA PROBLEMA
for i in range(0,pikkus):
parool.append(randint(1,len(znaki)-1))

print parool #пока что указываю принт, что бы наглядно видеть, позже программа должна будет выдавать только самые удачные вариации

for i in range(len(parool)):
for j in range(i):
if (parool[j]==parool[i]):
j+=1
print "Fuck"
#Вот тут ещё может быть проблема, что программа начинает повторять цифры начиная с длины в 7 знаков. Можно ли её это как-то запретить, а то она и останется генерировать?

slovo=0
for i in range(0,len(parool)):
slovo=znaki[parool[i]]
print slovo,
print

def perm(algus,veel):
if len(veel)==1:
print(algus+veel[0])
else:
for i in range(0,len(veel)):
perm(algus+veel[i],veel[:i]+veel[i+1:])

perm('',slovo)



Отредактировано (Фев. 22, 2011 19:49:00)

Офлайн

#2 Фев. 22, 2011 19:00:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

2 вопроса

не запускал, но в коде явно есть ошибки:
rida.split(“\t”)
rida=rida.rstrip(“\n”) # у массива вроде как нет rstrip, нужно поменять с прде строкой местами
list.append(rida) # переменной list нет, есть znaki
slovo=tahed[parool] # что за tahed?

а вообще вам пригодится метод:

>>> import random
>>> random.sample('qwertyuiopasdfghjkl',10)
['g', 'e', 'j', 'r', 'h', 's', 'o', 't', 'f', 'k']

Офлайн

#3 Фев. 22, 2011 19:53:32

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

2 вопроса

o7412369815963
За tahed извиняюсь, я просто переводила, что бы было понятнее, и пропустила в этом месте.. Исправила.
За метод спасибо



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version