MD5被破解后,网站大家现在都用什么方法做加密?

sherrywang 2014-12-01 10:22:54
如题,MD5被解密后,网站大家现在都用什么方法做加密呢?
做了个购物的网站,快要上线了,原来用户登录用的是MD5,现在不知道该咋改,来听听大家的做法,学习一下,谢谢大家啦!
...全文
6841 59 打赏 收藏 转发到动态 举报
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
christ2 2017-01-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/christ2/article/details/51884570
crudong 2016-11-02
  • 打赏
  • 举报
回复
新手看了大神们的分析后,就想问个问题,MD5值应该是保存在服务器上的吧?如果攻击者想要碰撞你这个MD5值是不是必须首先得知道这个MD5值是什么呢?那么反过来讲,如果攻击者已经知道你这个MD5值,是不是已经意味着你的服务器已经被攻破了呢?那既然你的服务器被攻破了,攻击者还有必要回到你设计的网站界面上输入一个运算后与服务器保存的MD5值一致的明文吗? 还是你们网站设计时会把数据库上保存的MD5值提取出来然后显示给客户看?
神宇寒轩 2016-10-10
  • 打赏
  • 举报
回复
--破解世界两大密码加密堡垒的山东大学密码学家 http://baike.baidu.com/link?url=HQKbJDHcVRLoMxufl8ryyxj3WsYBZyWv5hFoNsMU3ihITVTbc6yKpQ4o3uFRxqF1LTFoBcNhE6LnhVhXEHWe5LPRsyRVQDIaisswvzCGsAi
qq_36090118 2016-09-08
  • 打赏
  • 举报
回复
md5 md5解密 批量MD5解密 sha1 sha1解密 ntlm解密 mysql解密 md5解密网站www.wmd5.com支持各种哈希解密, www.wmd5.com实时批量解密MD5 成功率90%以上
lliuyonggang 2015-04-18
  • 打赏
  • 举报
回复
楼上的都可以看看md5碰撞就明白了,楼主说的这个东西是md5碰撞,的确是已经出现了而且时间也都不短了
sherrywang 2014-12-18
  • 打赏
  • 举报
回复
学习了,谢谢大家!都是大神啊
  • 打赏
  • 举报
回复
就能让加密程度提高1亿倍 --> 就能让签名程度提高1亿倍
  • 打赏
  • 举报
回复
是的。比如说我们要求总长度不可大于1万字节,某两个位置开始必须写上“csdn”这四个字母,那么满足这种规则的碰撞的难度就一下子大了千万倍。更何况我们一般都是要求用用户各种信息、产品各种信息的组合来验证内容,我们不会轻易接受胡乱碰撞出来的结果。 “碰撞是存在的”这是一个学术上的论题,原本是让我们知道如何稍微改进一下软件,就能让加密程度提高1亿倍。让一些人传为夸大的谣言,是件颇为荒唐的事情。
software_artisan 2014-12-14
  • 打赏
  • 举报
回复
不是破解,是碰撞。是两个字符串的MD5值一样,这样的话,就是我虽然不知道你的原文是什么,但我可以制造一个字符串,使其MD5值和你原文一致,这样就能骗过系统验证,达到攻击的目的。但是,这个方法不是万能的,伪造相同长度的原文就非常非常困难,原文长度越短,伪造越难。16位长度的字符串谁给我来个碰撞看看?
wflpeng 2014-12-10
  • 打赏
  • 举报
回复
MD5 属于不可逆的啊 这怎么破解 也求方法
华芸智森 2014-12-10
  • 打赏
  • 举报
回复
加盐或加干扰的目的是防字典破解. 但防不了中间人攻击. 其实,防止的办法有很多.最简单的,就是加RSA包装一次.这样可以一定程度上防中间人.
华芸智森 2014-12-10
  • 打赏
  • 举报
回复
引用 43 楼 Z65443344 的回复:
[quote=引用 42 楼 MSTOP 的回复:] 所谓"加盐"是不能防碰撞的.加盐或两次MD5是为了防字典破解. 随意举个例. 如你的密码是: 123456 , MD5是:9876535464 碰撞就是产生一个和你密码MD5值一样的字符串.如:ABCDEFGH. 用户在前台输入 ABCDEFGH 和你输入 123456 是一样的,因为两者的MD5值一样. 加盐能防止界面的输入,但防不了中间人.
解决办法就是不要纯MD5 不管MD5重复多少次,最终还是MD5,还是无法防碰撞 但是MD5是固定位数的,32位16进制数 假如你按如下的规则生成密文: MD5(密码+盐)+MD5(盐) 或者再将上面的64位16进制数打乱一下次序,我不信谁还能碰撞出来[/quote] 碰撞与MD5原密码长度无关.因为MD5 是一个一对多的关系. A字符生成DM5值是:456C2A8C-6408-4624-B2D5-93983CF1E671 . 碰撞就是找出另一个字符B.它生成的MD5值也是:456C2A8C-6408-4624-B2D5-93983CF1E671 . 在输入密框部分,如果不加干扰.那么,对密码验证来说:输入A和输入B是一样的.因为它两生成的MD5值是一样. 但碰撞有个特点.就是:1.长度和A刚刚好的可能性基本为0. 2.碰撞往往会产生非键盘字符. 所以,要过滤,并加干扰.
whatdoyousay 2014-12-03
  • 打赏
  • 举报
回复
学习了
於黾 2014-12-03
  • 打赏
  • 举报
回复
或者如果你是个网站,根本就可以采用17楼的办法,再验证一下明文长度和格式,就完全可以防止碰撞 除非破解你密码的人根本不去研究MD5,而是破解了你的客户端软件,然后直接用你数据库里的密文去登陆服务端 而如果你是单机版,根本连服务端都没有,那破解了软件之后,根本也不需要什么用户名密码就能使用全部的功能了 而网站是发布在服务器IIS上的,基本没什么可能修改你的源码 而有能力黑进服务器修改源码的人,也完全没必要那么做,人家直接就去修改数据库,直接操作文件了,根本不需要破解密码
於黾 2014-12-03
  • 打赏
  • 举报
回复
引用 42 楼 MSTOP 的回复:
所谓"加盐"是不能防碰撞的.加盐或两次MD5是为了防字典破解. 随意举个例. 如你的密码是: 123456 , MD5是:9876535464 碰撞就是产生一个和你密码MD5值一样的字符串.如:ABCDEFGH. 用户在前台输入 ABCDEFGH 和你输入 123456 是一样的,因为两者的MD5值一样. 加盐能防止界面的输入,但防不了中间人.
解决办法就是不要纯MD5 不管MD5重复多少次,最终还是MD5,还是无法防碰撞 但是MD5是固定位数的,32位16进制数 假如你按如下的规则生成密文: MD5(密码+盐)+MD5(盐) 或者再将上面的64位16进制数打乱一下次序,我不信谁还能碰撞出来
  • 打赏
  • 举报
回复

       /// <summary>
        /// 加密解密钥匙
        /// </summary>
        private static string Key = "1b3@..&A";

        /// <summary>
        /// 加密函数
        /// </summary>
        /// <param name="data">加密数据</param>
        /// <returns>返回加密后数据</returns>
        public static string DesEncrypt(string data)
        {
            string result = string.Empty;
            try
            {
                if (string.IsNullOrEmpty(data) == false)
                {
                    //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(Key);//建立加密对象的密钥和偏移量
                    des.IV = ASCIIEncoding.ASCII.GetBytes(Key); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
                    byte[] inputbyteArray = Encoding.Default.GetBytes(data);//把字符串放到byte数组中
                    MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 

                    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                    cs.Write(inputbyteArray, 0, inputbyteArray.Length);
                    cs.FlushFinalBlock();

                    StringBuilder ret = new StringBuilder();
                    foreach (byte b in ms.ToArray())
                    {
                        ret.AppendFormat("{0:X2}", b);
                    }
                    result = ret.ToString();
                }
            }
            catch (Exception)
            {
               
                result = "";
            }
            return result;
        }
        /// <summary>
        /// 解密E函数
        /// </summary>
        /// <param name="data">被解密的字符串</param>
        /// <returns>返回被解密的字符串</returns>
        public static string DesDecrypt(string data)
        {
            string result = string.Empty;
            try
            {
                if (string.IsNullOrEmpty(data) == false)
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    byte[] inputbyteArray = new byte[data.Length / 2];
                    for (int i = 0; i < data.Length / 2; i++)
                    {
                        int x = Convert.ToInt32(data.Substring(i * 2, 2), 16);
                        inputbyteArray[i] = (byte)x;
                    }
                    des.Key = ASCIIEncoding.ASCII.GetBytes(Key);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(Key);
                    MemoryStream ms = new MemoryStream();
                    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                    cs.Write(inputbyteArray, 0, inputbyteArray.Length);
                    cs.FlushFinalBlock();
                    result = System.Text.Encoding.Default.GetString(ms.ToArray());
                }
            }
            catch (Exception e)
            {
              
                result = "";
            }
            return result;
        }
来,使用这个
snn318 2014-12-03
  • 打赏
  • 举报
回复
好拽,谁把md5破解的
华芸智森 2014-12-03
  • 打赏
  • 举报
回复
所谓"加盐"是不能防碰撞的.加盐或两次MD5是为了防字典破解. 随意举个例. 如你的密码是: 123456 , MD5是:9876535464 碰撞就是产生一个和你密码MD5值一样的字符串.如:ABCDEFGH. 用户在前台输入 ABCDEFGH 和你输入 123456 是一样的,因为两者的MD5值一样. 加盐能防止界面的输入,但防不了中间人.
完美的神速 2014-12-02
  • 打赏
  • 举报
回复
md5没有被破解,那些网站只是按照一些人提供的数据推测出明文,但是成功率也是很低的。 你可以自己写加密算法,或者在MD5加密后,自己再二次处理,这个处理方法就要你自己来定了。
孤飞俊驰 2014-12-02
  • 打赏
  • 举报
回复
10楼的方法不错,就是给MD5数据加盐。
加载更多回复(35)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧