Eric4+pyqt4
时间:2011-12-25
来源:互联网
用python写了个密码生成器,使用pyqt和hashlib。
将网站先sha256一下,然后加上自定义的一个字符串再sha256一下,最后md5一下,用这个作为网站的密码。这样不同的网站就可以实现不同的密码了,而自己也只用记忆一个自定义字符串。感觉这个方法还是比较安全的吧。大家帮看看有没有什么漏洞。
主要的代码就三行
全部代码如下:
将网站先sha256一下,然后加上自定义的一个字符串再sha256一下,最后md5一下,用这个作为网站的密码。这样不同的网站就可以实现不同的密码了,而自己也只用记忆一个自定义字符串。感觉这个方法还是比较安全的吧。大家帮看看有没有什么漏洞。
主要的代码就三行
代码:
shaString = hashlib.new('sha256', stringWebsite).hexdigest()
shaString = hashlib.new('sha256', shaString+stringCustom).hexdigest()
md5String = hashlib.new('md5', shaString).hexdigest()
shaString = hashlib.new('sha256', shaString+stringCustom).hexdigest()
md5String = hashlib.new('md5', shaString).hexdigest()
全部代码如下:
代码:
#!/usr/bin/env python
# coding:utf-8
'''
Created on 2011-12-24
'''
from PyQt4 import QtCore, QtGui
import sys, hashlib
class myWidget(QtGui.QWidget):
def __init__(self):
super(myWidget, self).__init__()
self.initUI()
def initUI(self):
self.labelWebsite = QtGui.QLabel(self)
self.labelWebsite.setText('Website')
self.lineEditWebsite = QtGui.QLineEdit(self)
self.labelCustom = QtGui.QLabel(self)
self.labelCustom.setText('Custom string')
self.lineEditCustom = QtGui.QLineEdit(self)
self.buttonGenerate = QtGui.QPushButton('Generate', self)
self.buttonGenerate.clicked.connect(self.generate)
self.spinboxGen = QtGui.QSpinBox(self)
self.spinboxGen.setMaximum(32)
self.spinboxGen.setMinimum(8)
self.spinboxGen.setValue(16)
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.buttonGenerate)
hbox.addWidget(self.spinboxGen)
self.lineEditPassword = QtGui.QLineEdit(self)
self.lineEditPassword.setReadOnly(True)
vbox = QtGui.QVBoxLayout()
vbox.addWidget(self.labelWebsite)
vbox.addWidget(self.lineEditWebsite)
vbox.addWidget(self.labelCustom)
vbox.addWidget(self.lineEditCustom)
vbox.addLayout(hbox)
vbox.addWidget(self.lineEditPassword)
self.setLayout(vbox)
self.setWindowTitle('genPass')
self.setGeometry(500,300,350,200)
self.show()
def generate(self):
stringWebsite = self.lineEditWebsite.text().toAscii()
stringCustom = self.lineEditCustom.text().toAscii()
shaString = hashlib.new('sha256', stringWebsite).hexdigest()
shaString = hashlib.new('sha256', shaString+stringCustom).hexdigest()
md5String = hashlib.new('md5', shaString).hexdigest()
bit = self.spinboxGen.value()
self.lineEditPassword.setText(md5String[:bit])
self.lineEditPassword.setFocus()
self.lineEditPassword.selectAll()
def main():
app = QtGui.QApplication(sys.argv)
w = myWidget()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
# coding:utf-8
'''
Created on 2011-12-24
'''
from PyQt4 import QtCore, QtGui
import sys, hashlib
class myWidget(QtGui.QWidget):
def __init__(self):
super(myWidget, self).__init__()
self.initUI()
def initUI(self):
self.labelWebsite = QtGui.QLabel(self)
self.labelWebsite.setText('Website')
self.lineEditWebsite = QtGui.QLineEdit(self)
self.labelCustom = QtGui.QLabel(self)
self.labelCustom.setText('Custom string')
self.lineEditCustom = QtGui.QLineEdit(self)
self.buttonGenerate = QtGui.QPushButton('Generate', self)
self.buttonGenerate.clicked.connect(self.generate)
self.spinboxGen = QtGui.QSpinBox(self)
self.spinboxGen.setMaximum(32)
self.spinboxGen.setMinimum(8)
self.spinboxGen.setValue(16)
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.buttonGenerate)
hbox.addWidget(self.spinboxGen)
self.lineEditPassword = QtGui.QLineEdit(self)
self.lineEditPassword.setReadOnly(True)
vbox = QtGui.QVBoxLayout()
vbox.addWidget(self.labelWebsite)
vbox.addWidget(self.lineEditWebsite)
vbox.addWidget(self.labelCustom)
vbox.addWidget(self.lineEditCustom)
vbox.addLayout(hbox)
vbox.addWidget(self.lineEditPassword)
self.setLayout(vbox)
self.setWindowTitle('genPass')
self.setGeometry(500,300,350,200)
self.show()
def generate(self):
stringWebsite = self.lineEditWebsite.text().toAscii()
stringCustom = self.lineEditCustom.text().toAscii()
shaString = hashlib.new('sha256', stringWebsite).hexdigest()
shaString = hashlib.new('sha256', shaString+stringCustom).hexdigest()
md5String = hashlib.new('md5', shaString).hexdigest()
bit = self.spinboxGen.value()
self.lineEditPassword.setText(md5String[:bit])
self.lineEditPassword.setFocus()
self.lineEditPassword.selectAll()
def main():
app = QtGui.QApplication(sys.argv)
w = myWidget()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
作者: bobobo80 发布时间: 2011-12-25
这也搞一个界面。。。
作者: eexpress 发布时间: 2011-12-25
界面就是随便加上的,主要是方法没什么漏洞吧。
作者: bobobo80 发布时间: 2011-12-25
进来支持一下,貌似最近很多人受CSDN的影响……
作者: YeLee 发布时间: 2011-12-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28