• 关于MD5的介绍


            MD5常常作为文件的签名出现,我们在下载文件的时候,常常会看到文件页面上附带一个扩展名为.MD5的文本或者一行字符,这行字符就是就是把整个文件当作原数据通过MD5计算后的值,我们下载文件后,可以用检查文件MD5信息的软件对下载到的文件在进行一次计算。两次结果对比就可以确保下载到文件的准确性。
    另一种常见用途就是网站敏感信息加密,比如用户名密码,支付签名等等。随着https技术的普及,现在的网站广泛采用前台明文传输到后台,MD5加密(使用偏移量)的方式保护敏感数据保护站点和数据安全。

    MD5解密方法
      我在存储数据库的时候,通过md5加密方法将字段进行加密,当我在读取该字段时如何正确的读取原来的值啊
      ------解决方案--------------------
      没办法,MD5是不可逆的。

      你需要使用可逆加密算法。
      ------解决方案--------------------
      插入表中的时候md5加密
      比如:
      $sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";
      $qid=mysql_query($sql);
      读取的时候
      $pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd ']);
      ------解决方案--------------------
      如果业务要求可还原,那么不要采用MD5,请使用可逆加密算法,如DES加密。

      MD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确
      linux/unix操作系统一般采用MD5进行用户密码加密。

      ------解决方案--------------------
      MD5目前所谓的破解只是采用碰撞法找到了对等因子。
      比如:string1的MD5码为MD1,而现在我们做到的只是又找到了一个string2,它的MD5码也是MD1。
      结果就是:用户登陆某采用MD5加密的系统时,本来密码是12345,现在可能用abcde也能登陆。
      想想可能还原吗?如果可以还原,那天大的信息也能用32位长的字符串表示了,这不成了超级压缩算法了吗,整个宇宙的信息都可以用32位长表示了。不可逆的!


    SQL语句举例:

     1 elect   
     2 a.pre_apply_no
     3 ,a.book_date
     4 ,a.smg2_input_date
     5 ,t2.smg2_input_date
     6 ,b.id_card
     7 ,b.name
     8 ,md5(b.id_card) as id_card_md5
     9 ,md5(b.name) as name_md5
    10 ,d.overdue_days
    11 ,d.current_period
    12 ,d.need_repay_day
    13 ,get_json_object(e.searchresult,'$.newscore_level') as newscore_level
    14 from 
    15 (select pre_apply_no, loan_apply_no, book_date, smg2_input_date, smg5_credit_label_out
    16 from houbank_analysis_sh.t_xloan_decision_data_allin 
    17 where book_date >= '2019-03-01'
    18 and smg5_credit_label_out in ('1','1.0')) a 
    19 join houbank_analysis_sh.t_xloan_loan_lable b
    20 on a.pre_apply_no = b.pre_apply_no
    21 join houbank_cvt.xloan_cr_app_api_evaluate_input_cvt c
    22 on a.pre_apply_no = c.objectid
    23 join houbank_analysis_sh.t_repay_detail_dh d
    24 on a.loan_apply_no = d.loan_apply_no
    25 join houbank_cvt.xloan_cr_app_api_evaluate_result_cvt e 
    26 on a.pre_apply_no = e.objectid
    27 join  houbank_analysis_tmp_sh.t_xloan_decision_data_second t2
    28 on a.pre_apply_no = t2.objectid
    29 where get_json_object(c.searchresult, '$.lastpdl_loan_time') = ''
    30 and d.need_repay_day < '2019-07-01'
    生活不止眼前的苟且,还有诗与远方的田野! 我会定期更新我的微博,来一起自学python! --------如有问题欢迎指正~------------
  • 相关阅读:
    运维与自动化系列①运维与自动化概述
    Git系列②之部署企业级开源仓库gitlab服务器
    Git系列①之仓库管理互联网托管平台github.com的使用
    win10安装MarkdownPad 2报错This view has crashed的处理及md简单语法
    fpm定制化RPM包之nginx rpm包的制作
    mysql管理工具percona-toolkit-3简单使用介绍
    生产环境elasticsearch5.0报错IllegalArgumentException: number of documents in the index cannot exceed 2147483519的处理
    web缓存服务器varnish-4.1.6的部署及配置详解
    elasticsearch5.0.1集群排错的几个思路总结
    解决tomcat报错javax.imageio.IIOException: Can't create output stream!
  • 原文地址:https://www.cnblogs.com/huangchenggener/p/10935846.html
Copyright © 2020-2023  润新知