如何使用python制作一个简单的密码本

1 问题

在生活中我们常常见过各种小密码比如门锁密码,小电驴的密码等等,今天就带大家了解如何制作一个简单的密码本。

2 方法

第一步,把密码的位数的区间设为我们实例化密码本的一个参数:
第二步,确定要轮询的字符组合,就是确认密码中是否有大小写字母和特殊字符。
第三步,在__init__方法中,设定模式:
model = 1 纯数字密码本,model = 2 数字带字母密码本,model = 3 数字带字母再带特殊字符密码本
第四步,把密码本变成一个可迭代对
第五步,再把密码本变成一个迭代器,这样每次迭代都会生成不同的密码(理论上)。

代码清单 1

class PasswordBook:

    def __init__(self, min_len, max_len):  
        if min_len < max_len:
            self.min_len = min_len
            self.max_len = max_len
        else:
            self.min_len = max_len
            self.max_len = min_len
class PasswordBook:

    small_character = "abcdefghijklmnopqrstuvwxyz"
    big_character = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    number = "0123456789"
    special_sign = "~!@#$%^&amp;*()_+|}{[]&apos;;,./<>:=-"

    def __init__(self, min_len, max_len, model):  
        self.model = model
        if min_len < max_len:
            self.min_len = min_len
            self.max_len = max_len
        else:
            self.min_len = max_len
            self.max_len = min_len

    def __iter__(self):  
        return self
class PasswordBook:

    small_character = "abcdefghijklmnopqrstuvwxyz"
    big_character = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    number = "0123456789"
    special_sign = "~!@#$%^&amp;*()_+|}{[]&apos;;,./<>:=-"

    def __init__(self, min_len, max_len, model):  
        self.model = model
        if min_len < max_len:
            self.min_len = min_len
            self.max_len = max_len
        else:
            self.min_len = max_len
            self.max_len = min_len
import random

class PasswordBook:

    small_character = "abcdefghijklmnopqrstuvwxyz"
    big_character = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    number = "0123456789"
    special_sign = "~!@#$%^&amp;*()_+|}{[]&apos;;,./<>:=-"

    def __init__(self, min_len, max_len, model):  
        self.model = model
        if min_len < max_len:
            self.min_len = min_len
            self.max_len = max_len
        else:
            self.min_len = max_len
            self.max_len = min_len

    def __iter__(self):  
        return self

    def __next__(self):  
        result_word = &apos;&apos;
        # 判断模式
        if model == 1:
            words = self.number
        elif model == 2:
            words = self.number+self.small_character+self.big_character
        else:
            words = self.number+self.small_character+self.big_character+self.special_sign
        # 随机迭代输出符合要求的密码
        for i in range(0, random.randint(self.min_len, self.max_len)):  
            result_word += random.choice(words)  
        return result_word
输出结果:H3h%7(y*
3uF^tIG
A&amp;)7UYe
5Q><
US;[*
p&apos;$t
8b>
G&apos;4
S0wBoRU+KW
#
bA}G&apos;Qt;
.Q8#$bFz
o{0J
RW6<F8c~X-
)~USp&amp;&amp;]
x
*
%$P^
tM^
9@6WBnu#t
VtL{1
7P5&amp;2gqc/I
&apos;F%@suk@_
reV
M$
P9O5Vayi#[
eg2O:&apos;48
o
6iuday5e0
R3K%[)Er
CI3K^G
E58^Yt47
:8q8
9IeXxK$

3 结语

针对如何用python制作一个密码本的问题,小组成员通过把模式(model)的判断,密码的生成都写到_next_方法中,以及在函数中重复利用迭代的方法解决问题,通过几次实验的改进和密码的错试,证明该方法是有效的,本文的方法有一些不足或考虑不周的地方,比如密码较为简单,未来可以通过多利用特殊字符使得密码的安全性提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值