用python来实现以下的内容: 1、创建若干个用户名’a’,’b’,’c’,每个用户名对应一个简单密码,用SHA-1算法将密码加密存放入用户账户表里面; 2、ui提示输入用户名,密码,然后对新输入的密码仍然用SHA-1加密,与用户账户表中的对应账户密码记录对比; 3、若比较结果一致,则返回用户账户表中的对应账户密码和新输入的密码并且输出一行OK, 如果比较结果不一致的话,则返回’密码错误FALSE’。 要求:有简易的ui界面或者在命令行里面输入也行
时间: 2023-05-10 10:56:05 浏览: 72
以下是Python代码实现:
import hashlib
# 创建用户账户表
user_table = {
'a': hashlib.sha1(b'123456').hexdigest(),
'b': hashlib.sha1(b'abcdef').hexdigest(),
'c': hashlib.sha1(b'qwerty').hexdigest()
}
# ui提示输入用户名和密码
username = input('请输入用户名:')
password = input('请输入密码:')
# 对新输入的密码进行SHA-1加密
hashed_password = hashlib.sha1(password.encode('utf-8')).hexdigest()
# 比较新输入的密码和用户账户表中的对应账户密码记录
if username in user_table and hashed_password == user_table[username]:
print('OK')
else:
print('密码错误FALSE')
相关问题
编写一个程序,使之接收三个运行参数,分别为两个文件路径和一个无符号整数型,首先读取第一个路径对应文件内容,其中包含保存的若干用户的用户名和明文密码,用无符号整数型作为偏移量对密码进行凯撒密码加密,将用户名和加密后的密码输出到第二个路径对应的文件中,运行时加密偏移量为1
好的,这是一个关于文件读写和字符串处理的问题。下面是实现的 Python 代码:
```python
import sys
# 读取命令行参数
file_in = sys.argv[1]
file_out = sys.argv[2]
offset = int(sys.argv[3])
# 打开输入和输出文件
with open(file_in, "r") as f_in, open(file_out, "w") as f_out:
for line in f_in:
# 读取每一行数据并分割出用户名和密码
username, password = line.strip().split()
# 对密码进行凯撒密码加密
encrypt_password = "".join([chr((ord(c) - ord('a') + offset) % 26 + ord('a')) for c in password])
# 输出用户名和加密后的密码到输出文件中
f_out.write(f"{username} {encrypt_password}\n")
```
这段代码首先使用 `sys.argv` 获取命令行参数,第一个参数为输入文件路径,第二个参数为输出文件路径,第三个参数为加密偏移量。注意,这里的命令行参数都是字符串类型,需要使用 `int()` 函数将偏移量转换为整数类型。
接着,使用 `with open()` 语句打开输入文件和输出文件,使用 `r` 和 `w` 模式分别表示读和写。然后使用 `for` 循环遍历每一行数据,使用 `strip()` 方法去除每一行两端的空白字符,并使用 `split()` 方法分割出用户名和密码。注意,这里的 `split()` 方法默认以空格作为分隔符。
接下来,对密码进行凯撒密码加密。对于字符串中的每一个字符,将其转换为 ASCII 码值后减去小写字母 `a` 的 ASCII 码值,然后加上偏移量并取模,最后加上小写字母 `a` 的 ASCII 码值并转换为字符。这样就完成了一个字符的加密,将所有字符加密后再使用 `join()` 方法连接成新的字符串。
最后,使用 `f_out.write()` 方法将用户名和加密后的密码格式化后输出到输出文件中。注意,这里的 `f-string` 格式化字符串同样可以方便地插入变量。
最后,使用 `with` 语句自动关闭输入和输出文件,避免资源泄漏。
设计一个字典里嵌套集合的数据结构,形式为{用户名1:{电影1,电影2.…},用户名2:{电影3,…},…}表示若干用户分别喜欢看的电影名称。往设计好的数据结构中输入一些数据,然后计算并输出爱好最相似的
用户及其共同喜欢的电影。
可以使用Python中的字典和集合来实现该数据结构。具体实现如下:
```
data = {
'user1': {'movie1', 'movie2', 'movie3'},
'user2': {'movie2', 'movie3', 'movie4'},
'user3': {'movie1', 'movie3', 'movie5'}
}
```
其中,每个用户名作为字典的键,对应的值为一个集合,包含该用户喜欢的电影名称。
接下来,可以通过遍历字典,找出两个用户共同喜欢的电影,从而计算出他们的爱好相似度。具体实现如下:
```
max_similar =
similar_users = []
for user1 in data:
for user2 in data:
if user1 != user2:
common_movies = data[user1] & data[user2]
similarity = len(common_movies) / len(data[user1] | data[user2])
if similarity > max_similar:
max_similar = similarity
similar_users = [(user1, user2)]
elif similarity == max_similar:
similar_users.append((user1, user2))
print('爱好最相似的用户是:')
for user1, user2 in similar_users:
print(user1, '和', user2, '共同喜欢的电影有:', data[user1] & data[user2])
```
该代码会输出爱好最相似的用户及他们共同喜欢的电影。如果有多组爱好相似度相同的用户,会一并输出。
阅读全文