鱼C论坛

 找回密码
 立即注册
查看: 2970|回复: 10

[已解决]38讲动动手1题

[复制链接]
发表于 2022-5-2 16:24:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
user = input("请输入用户名:")

initialuserpassword = {"小甲鱼":"I_love_FishC","不二如是":"FishC5201314"}
while user in initialuserpassword:
    print("改用户名已被注册!!!")
    user = input("请重新输入用户名:")
password = input("请输入密码:")
initialuserpassword[user] = password
   
print("-------------\n目前已注册的用户名是:")
for each in initialuserpassword:
    print(each)
values = initialuserpassword.values()
print(values)
import hashlib
for pwd in values:
    print(pwd)
    result = hashlib.md5(b"str(pwd)")
    print(result.hexdigest())
以上是我想到的,结果如下
请输入用户名:的加拉法
请输入密码:123
-------------
目前已注册的用户名是:
小甲鱼
不二如是
的加拉法
dict_values(['I_love_FishC', 'FishC5201314', '123'])
I_love_FishC
450c77ff2d8fd9a27d9902f05927c7b6
FishC5201314
450c77ff2d8fd9a27d9902f05927c7b6
123
450c77ff2d8fd9a27d9902f05927c7b6
很显然没有实现题目要求,可是我也不知道加密的那个参数该怎么放,而且加密结果还是重复的
最佳答案
2022-5-2 16:33:04
加密后你直接修改原来的字典即可:
user = input("请输入用户名:")

initialuserpassword = {"小甲鱼":"I_love_FishC","不二如是":"FishC5201314"}
while user in initialuserpassword:
    print("该用户名已被注册!!!")
    user = input("请重新输入用户名:")
password = input("请输入密码:")
initialuserpassword[user] = password
   
print("-------------\n目前已注册的用户名是:")
for each in initialuserpassword:
    print(each)

import hashlib
for k, v in initialuserpassword.items():
    initialuserpassword[k] = hashlib.md5(v.encode()).hexdigest()

print('-------------')
print('加密后:')
print(initialuserpassword)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-2 16:29:23 | 显示全部楼层
user = input("请输入用户名:")

initialuserpassword = {"小甲鱼":"I_love_FishC","不二如是":"FishC5201314"}
while user in initialuserpassword:
    print("该用户名已被注册!!!")
    user = input("请重新输入用户名:")
password = input("请输入密码:")
initialuserpassword[user] = password
   
print("-------------\n目前已注册的用户名是:")
for each in initialuserpassword:
    print(each)
values = initialuserpassword.values()
print(values)
import hashlib
for pwd in values:
    print(pwd)
    result = hashlib.md5(pwd.encode()) # 你那个是对同一个字节串b"str(pwd)"进行hash,当然结果一样了
    print(result.hexdigest())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 16:33:04 | 显示全部楼层    本楼为最佳答案   
加密后你直接修改原来的字典即可:
user = input("请输入用户名:")

initialuserpassword = {"小甲鱼":"I_love_FishC","不二如是":"FishC5201314"}
while user in initialuserpassword:
    print("该用户名已被注册!!!")
    user = input("请重新输入用户名:")
password = input("请输入密码:")
initialuserpassword[user] = password
   
print("-------------\n目前已注册的用户名是:")
for each in initialuserpassword:
    print(each)

import hashlib
for k, v in initialuserpassword.items():
    initialuserpassword[k] = hashlib.md5(v.encode()).hexdigest()

print('-------------')
print('加密后:')
print(initialuserpassword)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-2 17:13:25 | 显示全部楼层

pwd 不是一个变量吗?不是取自于values的三个值吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-2 17:13:57 | 显示全部楼层
isdkz 发表于 2022-5-2 16:33
加密后你直接修改原来的字典即可:

厉害,我看看,学习学习,嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 17:14:42 | 显示全部楼层
舍侠 发表于 2022-5-2 17:13
pwd 不是一个变量吗?不是取自于values的三个值吗?

对呀,但是字典里面的键值就是字符串呀,字符串可以使用 encode 方法变成 字节串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-2 17:18:17 | 显示全部楼层
isdkz 发表于 2022-5-2 17:14
对呀,但是字典里面的键值就是字符串呀,字符串可以使用 encode 方法变成 字节串

我就是说的加密结果重复的那个,变量不是三个值吗?怎么加密出来是重复的呢,哪里出现错误了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 17:20:30 | 显示全部楼层
舍侠 发表于 2022-5-2 17:18
我就是说的加密结果重复的那个,变量不是三个值吗?怎么加密出来是重复的呢,哪里出现错误了?

你用 b"str(pwd)" 的话,就是直接把 str(pwd) 当成一个字节串了呀,

而不是函数调用 str(pwd),同一个字节串当然结果一样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-2 17:23:17 | 显示全部楼层
isdkz 发表于 2022-5-2 17:20
你用 b"str(pwd)" 的话,就是直接把 str(pwd) 当成一个字节串了呀,

而不是函数调用 str(pwd),同一个 ...

好的,那我再试试str(pwd)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 17:24:54 | 显示全部楼层
舍侠 发表于 2022-5-2 17:23
好的,那我再试试str(pwd)

pwd 本来就是字符串了,没必要用 str,还有 hash.md5 需要字节串,

所以你直接把 str 的返回值传进去是不行的,字符串跟字节串是不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-3 10:20:47 | 显示全部楼层
isdkz 发表于 2022-5-2 17:24
pwd 本来就是字符串了,没必要用 str,还有 hash.md5 需要字节串,

所以你直接把 str 的返回值传进去 ...


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 11:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表