为什么unhex(十进制的原密码)之后,密码验证通过,而用unhex(16进制的加密密码)...
为什么unhex(十进制的原密码)之后,密码验证通过,而用unhex(16进制的加密密码),密码验证不通过?
unhex里不是应该放十六进制数吗?
import mysql.connector
config={
"host":"localhost",
"port":"3306",
"user":"root",
"password":"111111",
"database":"vega"
}
con=mysql.connector.connect(**config)
# username="1 or 1=1"
# password="1 or 1=1"
username="admin"
password="123456"
sql="select count(*) from t_user where user_name=%s"\
" and aes_decrypt(unhex(password),'HelloWorld')=%s";
cursor=con.cursor()
cursor.execute(sql,(username,password))
#execute传入的第二个参数是元组
# print(cursor.fetchone())
print(cursor.fetchone()[0])
con.close()
正在回答
同学,你好。表中存储的password是加密之后的数据,在sql语句中根据查询到的password解密后与传入的password进行判断,值并不相等,因此是取不到对应数据的。
同学在查询时去掉解密语句,直接使用提供的password查询即可
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
- 参与学习 人
- 提交作业 625 份
- 解答问题 2669 个
数据库作为企业储存和管理数据的根本,掌握数据库是每个开发工程师必备的技能,本阶段带你学会用Python操作MySQL、Redis和MongoDB三大主流数据库。夯实数据库基础。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星