漆黑天使复活 2021-04-03 23:50 采纳率: 44.4%
浏览 179
已结题

Django 用指定秘钥加密内容保存保存到数据库,然后用再解密

实际要实现的功能,就是给每一个用户输入的内容都以用户的某个特征值,例如账号,邮箱,作为加密的秘钥,然后把加密后的内容储存在数据库中,目的是希望即便是数据管理员直接方案数据库也不知道用户输入了什么,然后只有当用户用自己的秘钥访问的时候,才能再前台看到它自己输入的内容

 

用的是Django,MySQL

小白一个。。求大神推荐个思路或方案案例。。。非常感谢

  • 写回答

4条回答 默认 最新

  • 沐川 2021-04-04 00:22
    关注

    使用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); 
    
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?