实际要实现的功能,就是给每一个用户输入的内容都以用户的某个特征值,例如账号,邮箱,作为加密的秘钥,然后把加密后的内容储存在数据库中,目的是希望即便是数据管理员直接方案数据库也不知道用户输入了什么,然后只有当用户用自己的秘钥访问的时候,才能再前台看到它自己输入的内容
用的是Django,MySQL
小白一个。。求大神推荐个思路或方案案例。。。非常感谢
实际要实现的功能,就是给每一个用户输入的内容都以用户的某个特征值,例如账号,邮箱,作为加密的秘钥,然后把加密后的内容储存在数据库中,目的是希望即便是数据管理员直接方案数据库也不知道用户输入了什么,然后只有当用户用自己的秘钥访问的时候,才能再前台看到它自己输入的内容
用的是Django,MySQL
小白一个。。求大神推荐个思路或方案案例。。。非常感谢
使用MySQL的MD5函数进行单向加密。
也可以使用MySQL的ENCRYPT函数进行单向加密,这个是可加盐的。
当然这些方式也可以直接在python代码中去实现,就是先进行加密,然后再存入数据库,解码也是一样。python中的pycrypto包可以提供ENCRYPT的单向加密,hashlib包的md5可以提供MD5单向加密
参考语句:
-- password在数据库中是加密存储的,无法双向破解。
-- MD5,不加盐
-- 插入密码
INSERT INTO table_user (username, password) VALUES ('Matt', MD5('mattpasswd'));
-- 验证密码是否正确
SELECT * FROM table_user WHERE username='Matt' AND password=MD5('mattpasswd');
-- ENCRYPT,使用用户名进行加盐加密
INSERT INTO table_user (username, password) VALUES ('Matt', ENCRYPT('mattpasswd', username));
SELECT * FROM table_user WHERE username='Matt' AND password=ENCRYPT('mattpasswd', username);