+ -
当前位置:首页 → 问答吧 → Eric4+pyqt4

Eric4+pyqt4

时间:2011-12-25

来源:互联网

用python写了个密码生成器,使用pyqt和hashlib。
将网站先sha256一下,然后加上自定义的一个字符串再sha256一下,最后md5一下,用这个作为网站的密码。这样不同的网站就可以实现不同的密码了,而自己也只用记忆一个自定义字符串。感觉这个方法还是比较安全的吧。大家帮看看有没有什么漏洞。
主要的代码就三行
代码:
shaString = hashlib.new('sha256', stringWebsite).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()

作者: bobobo80   发布时间: 2011-12-25

这也搞一个界面。。。

作者: eexpress   发布时间: 2011-12-25

界面就是随便加上的,主要是方法没什么漏洞吧。

作者: bobobo80   发布时间: 2011-12-25

进来支持一下,貌似最近很多人受CSDN的影响……

作者: YeLee   发布时间: 2011-12-25

热门下载

更多