Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重新连接到数据库会导致以null结尾的二进制字符串_Python_Bcrypt_Pymysql - Fatal编程技术网

Python 重新连接到数据库会导致以null结尾的二进制字符串

Python 重新连接到数据库会导致以null结尾的二进制字符串,python,bcrypt,pymysql,Python,Bcrypt,Pymysql,我在做一个密码验证系统。我有一个二进制(60)列来存储密码,我正在使用bcrypt对密码进行哈希运算。当我使用相同的pymysql连接来存储和检索密码时,我能够验证密码。但是,当我创建新连接时,密码不再验证 特别是我遇到的问题是,当我有一个新连接时返回的结果在末尾有一堆空字节。我试着剥去这些,但结果仍然不匹配。(b'$2b$12$Y9iqA5faupXeUcCzS8jrEOkBdQrpLOCUp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0

我在做一个密码验证系统。我有一个二进制(60)列来存储密码,我正在使用
bcrypt
对密码进行哈希运算。当我使用相同的
pymysql
连接来存储和检索密码时,我能够验证密码。但是,当我创建新连接时,密码不再验证

特别是我遇到的问题是,当我有一个新连接时返回的结果在末尾有一堆空字节。我试着剥去这些,但结果仍然不匹配。(
b'$2b$12$Y9iqA5faupXeUcCzS8jrEOkBdQrpLOCUp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vs
b'$2b$12$Yzpcua55O0RSNqqSzTZ/k.JCZY6VALV8UTXLPCEZH8MYLVFSOA'

我存储或编码这些散列的方式是否有问题

# CONNECTING #
conn = pymysql.connect(os.environ["db_host"], 
                        user=os.environ["db_user"], 
                        passwd=os.environ["db_password"],
                        db=os.environ["db_name"], 
                        connect_timeout=5, 
                        charset='utf8mb4')
# STORING #
newlyhashed = bcrypt.hashpw(apikey.encode(), bcrypt.gensalt())
cur.execute("UPDATE api_users \
                          SET secret = _binary %s \
                          WHERE api_users.name = %s", 
            [pymysql.Binary(newlyhashed),"user"])
# RETRIEVING #
dcur.execute("SELECT secret FROM api_users \
              WHERE api_users.name = %s","user")
# VERIFYING #
verify = row["secret"]
bcrypt.checkpw(apikey.encode(), verify)

断开和重新连接之间的区别应该告诉我!如果返回的结果与两个不同的连接不同,则可能忽略了提交

我相信空字节是我尝试使用PhpMyAdmin更新哈希时的产物。剥离它们并没有什么区别,因为散列实际上是一个不同的密码