urandompython
❶ python基礎教程 10-11例子如何執行
2020年最新Python零基礎教程(高清視頻)網路網盤
鏈接:
若資源有問題歡迎追問~
❷ 如何在AES CTR適用於Python和PyCrypto
首先,AES-CTR的整點是,你並不需要填充。這是一個流密碼(不同於ECB / CBC等)!
之所以出現這種行為,你在問題中所描述的是明文(4位元組/ 32位)為四個小如AES(128位)的塊大小。而到了crypto反對你只得到數據經過塊大小後回來。所以,你的問題將通過實例化一個新的解決cryto對象,像這樣:
counter = os.urandom(16) # fixed counter - do not use this in proction!
key = os.urandom(32) # 256 bits key
encrypto = AES.new(key, AES.MODE_CTR, counter=lambda: counter)
encrypted = encrypto.encrypt("asdk")
# Instantiate a new cipher for decryption
decrypto = AES.new(key, AES.MODE_CTR, counter=lambda: counter)
print decrypto.decrypt(encrypted) # prints "asdk"
❸ 怎麼用flask+mysql來實現一個簡單的用戶注冊和登陸效果的頁面
用flask+mysql實現用戶的注冊和登錄:
一個簡單的用戶注冊和登錄的頁面,就兩個部分。
涉及到資料庫,存儲用戶數據(注冊),讀出用戶數據(登錄驗證)。搞清楚如何用python連接和操作資料庫即可,還有了解sql資料庫語句,sqlite和mysql差不多的,看幾眼多試幾下就了解了。
網站程序,前端如何發送表單,後端獲取用戶發送的請求,和資料庫中數據驗證是否能夠登錄,然後登錄後如何保存用戶登錄信息,就是使用的cookie,不過在flask中是session(其實session也是cookie,flask把它封裝了下,成了加密的cookie)。
舉例如下:
(fn):
@wraps(fn)
defwrapper(*args,**kwds):
user=session.get('logged_in',None)
ifuser:
returnfn(user=user)
else:
returnredirect(url_for('signin',next=request.path))
[email protected]('/home')@authorizedefhome(**kwds):
username=kwds['user']
returnrender_template('index.html',username=username)#加密存儲密碼_password(password,salt=None):
ifnotsalt:
salt=os.urandom(16).encode('hex')#length32
result=password
foriinrange(3):
result=hashlib.sha256(password+salt).hexdigest()[::2]#length32
returnresult,salt#簡單的錯誤處理classloginError(Exception):
def__init__(self,value):
self.value=value
def__str__(self):
returnrepr(self.value)#注冊登錄(下面的代碼沒有實際運行過)#連接資料庫我是使用的是mysql.connector#http://dev.mysql.com/downloads/connector/python/#寫法和常用的MySQL-python稍有所不同#下面沒有連接資料庫的代碼@app.route('/register/',methods=['GET','POST'])defrequest():
ifrequest.method=='GET':
returnrender_template("register.html")
ifrequest.method=='POST':
#這里最好需要驗證用戶輸入,我就不寫了
u=request.form['username']
p,s=encrypt_password(request.form['password'])
g.db.cursor.execute('INSERTINTOusers(name,password,salt)VALUES(%s,%s,%s)',(u,p,s,)
g.db.commit()
returnredirect(url_for('signin'))@app.route('/signin/',methods=['GET','POST'])defsignin():
ifrequest.method=='GET':
referrer=request.args.get('next','/')
returnrender_template("login.html",next=referrer)
ifrequest.method=='POST':
u=request.form['username']
p=request.form['password']
n=request.form['next']
try:
g.db.cursor.execute('SELECT`name`FROMusersWHEREname=%s',(u,))
ifnotg.db.cursor.fetchone():
raiseloginError(u'錯誤的用戶名或者密碼!')
g.db.cursor.execute('SELECT`salt`,`password`FROMusersWHEREname=%s',(u,))
salt,password=g.db.cursor.fetchone()
ifencrypt_password(p,salt)[0]==password:
session['logged_in']=u
returnredirect(next)
else:
raiseloginError(u'錯誤的用戶名或者密碼!')
exceptloginErrorase:
returnrender_template('login.html',next=next,error=e.value)@app.route('/signout/',methods=['POST'])defsignout():
session.pop('logged_in',None)
returnredirect(url_for('home'))
❹ Python進行 AES CBC-128bit PKCS7/PKCS5 填充加密解密
你看一下這個例子吧。可以參考下面的地址:前面加上http,把句號改成點。
likang。me/blog/2013/06/05/python-pycrypto-aes-ecb-pkcs-5/
#-*-coding:utf-8-*-
fromCrypto.CipherimportAES
importos
BS=AES.block_size
pad=lambdas:s+(BS-len(s)%BS)*chr(BS-len(s)%BS)
unpad=lambdas:s[0:-ord(s[-1])]
key=os.urandom(16)#thelengthcanbe(16,24,32)
text='tobeencrypted'
cipher=AES.new(key)
encrypted=cipher.encrypt(pad(text)).encode('hex')
printencrypted#willbesomethinglike''
decrypted=unpad(cipher.decrypt(encrypted.decode('hex')))
printdecrypted#willbe'tobeencrypted'
❺ 八種在 Linux 上生成隨機密碼的方法
在Linux上生成隨機密碼的方法
本文將指導您使用8種不同的方法在Linux終端中生成隨機密碼,其中一些使用原生Linux命令,另一些則通過在Linux機器上輕松安裝的第三方工具實現。
這些方法旨在生成獨特且隨機的字母字元串,可作為新用戶密碼。無論用戶基數如何,這些密碼都是獨一無二的。接下來,讓我們一起探索8種在Linux上生成隨機密碼的方法。
使用mkpasswd實用程序生成密碼
在基於RHEL的系統上,mkpasswd隨expect軟體包一起安裝;在基於Debian的系統上,它包含在whois軟體包中。要正確使用mkpasswd,請先安裝父軟體包。運行mkpasswd命令以獲得密碼。
不同系統上的命令可能有所不同,您可以使用參數控制長度等選項。查閱man手冊以深入了解。
使用openssl生成密碼
幾乎所有Linux發行版都包含openssl。利用其隨機功能,我們可以生成可用作密碼的隨機字母字元串。
使用base64編碼隨機函數,最後一個數字參數表示所需長度。
使用urandom生成密碼
設備文件/dev/urandom是獲取隨機字元串的另一種方法。通過使用tr功能並裁剪輸出,將其作為密碼。
使用dd命令生成密碼
通過使用/dev/urandom設備配合dd命令,我們可以獲取隨機字元串。
將結果通過base64編碼使其可讀。使用數值獲取所需長度。簡潔輸出命令如下:
使用md5sum生成密碼
計算MD5校驗值是一種生成可用作密碼的隨機字元串的方法。校驗值確實像是隨機字元串的組合,可用於密碼。確保計算源是一個變數,這樣每次運行命令時生成的校驗值都會不同。
將date命令的輸出通過md5sum得到校驗和!您還可以使用cut命令裁剪所需長度。
使用pwgen生成密碼
pwgen軟體包可以在類似EPEL軟體倉庫中找到。pwgen專注於生成可發音的密碼,但它們不在英語詞典中,也不是純英文的。在標准發行版倉庫中可能找不到這個工具。安裝此軟體包後,運行pwgen命令行。將得到密碼列表!
pwgen還有許多自定義選項,這些都可以在man手冊中查閱。
使用gpg工具生成密碼
GPG是遵循OpenPGP標準的加密及簽名工具,大部分gpg工具都預先安裝在系統中。如果沒有,則可以尋找gpg或gpg2軟體包並安裝它。
使用以下命令生成密碼:
傳入生成隨機位元組序列選項(--gen-random),質量為1(第一個參數),次數12(第二個參數)。選項--armor保證以base64編碼輸出。
使用xkcdpass生成密碼
xkcdpass工具由xkcd網站啟發,專門用於生成好記且復雜的密碼。這是一個Python軟體包,可以在Python官網找到。
安裝步驟和測試輸出已在相關頁面上提及。運行xkcdpass命令,將隨機提供幾個像下面這樣的字典單詞:
您可以使用這些單詞作為其他命令的輸入,例如md5sum,或每個單詞的第N個字母來生成密碼!您甚至可以將所有單片語合成一個超長的密碼,既好記又不易被電腦程序破解。
在Linux上,還有像Diceware、KeePassX、Revelation、PasswordMaker等工具,可以考慮用於生成強隨機密碼。