【发布时间】:2023-02-16 23:03:41
【问题描述】:
仍然对 Python 有所涉猎,但我的目标是读取 CSV 文件并使用 SHA256 散列特定列,然后以 Base64 输出。
这是需要进行的转换的示例 这个计算器可以在https://www.liavaag.org/English/SHA-Generator/找到
这是我目前的代码
import hashlib
import csv
import base64
with open('File1.csv') as csvfile:
with open('File2.csv', 'w') as newfile:
reader = csv.DictReader(csvfile)
for i, r in enumerate(reader):
# writing csv headers
if i == 0:
newfile.write(','.join(r) + '\n')
# hashing the 'CardNumber' column
r['consumer_id'] = base64.b64encode(hashlib.sha256(r['consumer_id']).encode('utf-8')).digest()
# writing the new row to the file with hashed 'CardNumber'
newfile.write(','.join(r.values()) + '\n')
我收到的错误是
r['consumer_id'] = base64.b64encode(hashlib.sha256(r['consumer_id']).encode('utf-8')).digest()
TypeError: Strings must be encoded before hashing
【问题讨论】:
-
只需将关闭的括号
)移到r["consumer_id"]:base64.b64encode(hashlib.sha256(r['consumer_id'].encode('utf-8'))).digest()之后。 -
@MattDMo 更正后,还需要重新home
digest()