亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

連接字符串/從文件中獲取值的問題

連接字符串/從文件中獲取值的問題

慕萊塢森 2022-07-19 15:44:50
我一直在編寫一個以哈希形式保存密碼的程序,但我試圖從我的文件中獲取一個值,該值存儲鹽的值。出于某種原因,它似乎不起作用。這是我的代碼:hashpass = hashlib.sha256()salt = ['hbjGVY0Kj07,kbjgvhjb,ZsGhnBi0lp]for line in login:            usr = input()            pas = input()            log = line.split(',')            if usr in line:                x = line                salt_num = int(x[2])                setpass = str(pas + salt[salt_num])                hashpass.update(setpass.encode('utf-8'))我已經嘗試了一切,但是當我連接字符串時仍然沒有結果,我只是得到了 pas 的值
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

我已經解決了這個問題,但是在比較變量hashpass和log[1]時遇到不同的錯誤,當比較我的程序聲稱密碼錯誤時,這是整個程序供參考。


login = open('login.csv','r')

def logging():

    atmptcount = 0

    while atmptcount < 3:

        usr = input('Please enter your username: ')

        pas = input('Please enter your password: ')

        hashpass = hashlib.sha256()

        for line in login:

            log = line.split(',')

            if usr.upper() in line:

                print(log[2])

                salt_num = int(log[2])

                setpass = str(pas + salt[salt_num])

                hashpass.update(setpass.encode('utf-8'))

            if usr == log[0] and hashpass.hexdigest() == log[1]:

                print('correct')

                return True


        print(hashpass.hexdigest())

        print(log[1])

        atmptcount = atmptcount + 1

        print('Sorry you have entered your details incorrectly, please try again')

        login.seek(0)

    print('Sorry, you have reached your maximum login attempts!')

    return False

我稍微更改了變量名,但它是 saem 概念


查看完整回答
反對 回復 2022-07-19
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

這是我嘗試過的,它有效。您共享的代碼有一些問題,我會要求您與原始代碼進行交叉檢查。


import hashlib

hashpass = hashlib.sha256()

salt = ['hbjGVY0Kj07','kbjgvhjb','ZsGhnBi0lp']

login = ["user,68a782faf939dfa370345934d255101926b7f59b3a65ab7db5b0bc6f78ec25e5,0"]


for line in login:

            #print(line)

            usr = input()     # I input "user"

            pas = input()     # I input "qwerty"

            log = line.split(',')

            #print(log)

            if usr in line:

                x = log

                salt_num = int(x[2])

                setpass = str(pas + salt[salt_num])

                print(setpass)

                hashpass.update(setpass.encode('utf-8'))


OUTPUT --> qwertyhbjGVY0Kj07

我建議你檢查的事情:

  • 列表中的所有項目salt都用引號引起來,即字符串。

  • Login 是一個字符串列表,其中包含帶有逗號分隔值的元素,就像我創建的那樣。

  • x=linex=log里面if condition。


查看完整回答
反對 回復 2022-07-19
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號