MD5加密高手破解一般需要多久,c#怎么创建Md5呀

.Net技术 码拜 8年前 (2016-03-07) 1840次浏览
当然建个方法给本人更好
解决方案

20

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
/// <summary>
/// 数据加密解密
/// </summary>
    public class Hash
    {
        /// <summary>
        /// 公用密钥
        /// </summary>
       const string key = "CSDN";
        /// <summary>
        /// 标准字串解密
        /// </summary>
        /// <param name="strText">解密字串</param>
        /// <param name="key">密钥</param>
        /// <returns></returns>
        //public static string DecryptString(string strText, string key)
        public static string DeCode(string strText)
        {
            try
            {
                byte[] buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(key));
                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                provider.Key = buffer;
                provider.Mode = CipherMode.ECB;
                byte[] inputBuffer = Convert.FromBase64String(strText);
                return Encoding.ASCII.GetString(provider.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length));
            }
            catch
            {
                return "加密密钥错误!";
            }
        }
        /// <summary>
        /// UTF8字串解密(中文)
        /// </summary>
        /// <param name="strText">解密字串</param>
        /// <param name="key">密钥</param>
        /// <returns></returns>
        //public static string DecryptUTF8String(string strText, string key)
        public static string DeCodeUTF8(string strText)
        {
            try
            {
                byte[] buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(key));
                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                provider.Key = buffer;
                provider.Mode = CipherMode.ECB;
                byte[] inputBuffer = Convert.FromBase64String(strText);
                return Encoding.UTF8.GetString(provider.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length));
            }
            catch
            {
                return "加密密钥错误!";
            }
        }
        /// <summary>
        /// 标准字串加密
        /// </summary>
        /// <param name="strText">加密字串</param>
        /// <param name="key">密钥</param>
        /// <returns></returns>
        //public static string EncryptString(string strText, string key)
        public static string EnCode(string strText)
        {
            byte[] buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(key));
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
            provider.Key = buffer;
            provider.Mode = CipherMode.ECB;
            byte[] bytes = Encoding.ASCII.GetBytes(strText);
            string str = Convert.ToBase64String(provider.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length));
            provider = null;
            return str;
        }
        /// <summary>
        /// UTF8字串加密(中文)
        /// </summary>
        /// <param name="strText">加密字串</param>
        /// <param name="key">密钥</param>
        /// <returns></returns>
        //public static string EncryptUTF8String(string strText, string key)
        public static string EnCodeUTF8(string strText)
        {
            byte[] buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(key));
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
            provider.Key = buffer;
            provider.Mode = CipherMode.ECB;
            byte[] bytes = Encoding.UTF8.GetBytes(strText);
            string str = Convert.ToBase64String(provider.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length));
            provider = null;
            return str;
        }
    }

这是原来本人用的MD5的代码建的一个类

20

那所谓的“碰撞”,它跟破解无关,其实就是个噱头。
例如说一篇合同书获得一个 md5 签名,假设你给一个“碰撞”结果,问一下你给的内容能恰好就是这篇合同吗?假设人家验证结果中必须在某个地方有10个字,或假设人家验证结果的长度必须跟原来的合同一样大小,还“碰撞个鬼”啊!碰撞其实都是哄外行的。
相似地,有的人要求你先在一个网站上吧你要验证的内容输入一遍,然后他保存到数据库中。然后再让你输入md5签名,于是它1秒钟内给你查询出你输入的内容了。他骗你说”看,本人破解了md5了吧?“,这是不是就是哄小傻子的呢?原因是这个根本不需要破解任何东西,根本不针对加密,任何转换方法(甚至任何$@#~!&*$$&*做法)都可以这样用查表方法来糊弄一下,这也叫做破解

20

哄小傻子,才是“破解”。
你让我们说真话,你听吗?

20

你只能说碰撞存在,但不一定是明文
至于你说网上那种爆库的手段,那其实只是数据库查询,他只是收集了大量md5的密文和明文,算不上破解
当然这种东西其实也没啥用处,原因是实际上md5的明文本人就不一定就只是单纯的密码,而且你要愿意也可以不仅仅是标准md5,还可以是带密钥的Hmac md5算法

20

MD5都是穷举这种暴力破解方式,所以这问题就转化为从数据库遍历找到明文需要多少时间……

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MD5加密高手破解一般需要多久,c#怎么创建Md5呀
喜欢 (0)
[1034331897@qq.com]
分享 (0)