Python學習——2.base64的編碼encode()出錯:TypeError: a bytes-like object is required, not 'str'

先上第一次的代碼:

import base64

# 字典文件路徑
dic_file_path = 'C:/Users/muzi/Downloads/271_b790fbaa9f8480532fff81553e908114d783bc30/10_million_password_list_top_100.txt'
with open(dic_file_path, 'r') as f:
    password_dic = f.readlines()

username = "admin" # 用戶名
for password in password_dic:
    encodestr = base64.b64encode("admin:" + password.strip())
    print(encodestr)

以上是我做題時第一次的base64編碼:但在編譯的時候遇到了錯誤
在這裏插入圖片描述
後來我搜索了一下,問題出在了Python3對base的編碼問題中:
python3.x與Python2不一樣,字符都爲unicode編碼,而b64encode函數的參數爲byte類型,所以必須先轉碼。

修改後:

import base64

# 字典文件路徑
dic_file_path = 'C:/Users/muzi/Downloads/271_b790fbaa9f8480532fff81553e908114d783bc30/10_million_password_list_top_100.txt'
with open(dic_file_path, 'r') as f:
    password_dic = f.readlines()

username = "admin" # 用戶名
for password in password_dic:
    encodestr = base64.b64encode(("admin:" + password.strip()).encode('utf-8'))
print(encodestr)

結果爲:
在這裏插入圖片描述
b’ '代表byte的意思。我們只要再將byte轉換回去就可以。

print(str(encodestr,'utf-8'))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章