PDA

View Full Version : چند حقه در Python



code_baz
چهارشنبه 25 خرداد 1390, 15:54 عصر
با سلام

بیایید اینجا نکات به درد بخور و احیانا قطعه کد های آموزنده (و به درد بخور) رو اینجا بزاریم.
به خصوص از دوستان با تجربه دست یاری میطلبیم.
به نظرم جای چنین تاپیکی توی این قسمت کم بود.

code_baz
چهارشنبه 25 خرداد 1390, 16:18 عصر
تو این لینک (http://www.universalwebservices.net/web-programming-resources/python/advanced-sorting-techniques) نحوه sort کردن روز های هفته رو با استفاده از دیکشنری و lambda توضیح میده
این برای شروع بود انشاالله دوستان نکات جالبتری ارایه میدن

code_baz
پنج شنبه 26 خرداد 1390, 10:56 صبح
secure password generator:
با استفاده از random.SystemRandom اعداد تصادفی مطمنی ساخته میشه.در این مورد پایتون برای ساخت اعداد تصادفی از امکانات خود سیستم عامل استفاده میکنه که در ویندوز پایتون از API CryptGenRandom (http://en.wikipedia.org/wiki/CryptGenRandom) استفاده میکنه و در لینوکس از dev/random (http://en.wikipedia.org/wiki//dev/random) (اینم بخونین (http://docs.python.org/library/os.html#os.urandom))و تو بعضی از سیستم ها هم چنین امکاناتی وجود نداره.
تابع shuffle هم یه بار دیگه پسورد ساخته شده رو به هم میریزه(یه مدل محکم کاری)
و در آخر هم میریزه توی دیتا بیس البته یوزرنیم ها هم unique هستند.


import random,string,sqlite3
def shuffle(cont):
"cont:container"
lim=len(cont)-1
c=list(cont)
for _ in "."*(lim/2):
a=random.randint(0,lim)
b=random.randint(0,lim)
t=c[a]
c[a]=c[b]
c[b]=t
return "".join(c)

def Gen_Pass(name,n):
#--------------------Data Base
conn=sqlite3.connect("pass.db")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS passwords(user TEXT UNIQUE,pass TEXT UNIQUE)")
#--------------------
rand=random.SystemRandom()
lst=list(string.letters[:52])
word=""
for i in range(n):
word+=lst[rand.randint(0,len(lst)-1)]
word=shuffle(word)
try:
cur.execute("INSERT OR IGNORE INTO passwords(user,pass) VALUES (?,?)",(name,word))
conn.commit()
print "ok , now it is inserted"
except:
print "there are some problems"
cur.close()
conn.close()
if __name__=="__main__":
Gen_Pass("amir",8)



البته راههای دیگه ای هم برای افزایش امنیت هست مثل استفاده از ماژول های رمزنگاری (http://www.python.org/doc//current/library/hashlib.html) یا این لینک (http://www.python-forum.org/pythonforum/viewtopic.php?f=2&t=10690)
نظرتون چیه راه بهتری سراغ دارین ؟