首页 > 其他分享 >MD5加密

MD5加密

时间:2023-03-01 15:47:10浏览次数:34  
标签:文件 加密 string -- sb MD5

//MD5的用途? //1 防篡改: //发个文档,事先给别人一个MD5,是文档的摘要, //源代码管理器svn--即使电脑断网了,文件有任何改动都能被发现--本地存了一个文件的MD5--文件有更新,就再对比下MD5 //极速秒传--扫描文件的MD5--跟已有的文件MD5比对--吻合表示文件已存在不用再上传   //2 密码保存,防止看到明文 //密码应该只有用户知道----数据库不能存明文---但是又需要验证 //MD5加密下原始密码---数据库存密文---下次登录把密码MD5后再比对 //密文是可见的,所以要求密码不能太简单,加盐(123456+zhaoxi)     //3 防止抵赖,数字签名 //把一些内容摘要一下,由权威的第三方去保障,将来这个文件就是你做的,不能抵赖

 //MD5的用途?
                    //1 防篡改:
                    //发个文档,事先给别人一个MD5,是文档的摘要,
                    //源代码管理器svn--即使电脑断网了,文件有任何改动都能被发现--本地存了一个文件的MD5--文件有更新,就再对比下MD5
                    //极速秒传--扫描文件的MD5--跟已有的文件MD5比对--吻合表示文件已存在不用再上传

                    //2 密码保存,防止看到明文
                    //密码应该只有用户知道----数据库不能存明文---但是又需要验证
                    //MD5加密下原始密码---数据库存密文---下次登录把密码MD5后再比对
                    //密文是可见的,所以要求密码不能太简单,加盐(123456+zhaoxi)
                    

                    //3 防止抵赖,数字签名
                    //把一些内容摘要一下,由权威的第三方去保障,将来这个文件就是你做的,不能抵赖
/// <summary>
    /// 不可逆加密
    /// 1 防止被篡改
    /// 2 防止明文存储
    /// 3 防止抵赖,数字签名
    /// </summary>
    public class MD5Encrypt
    {
        #region MD5
        /// <summary>
        /// MD5加密,和动网上的16/32位MD5加密结果相同,
        /// 使用的UTF8编码
        /// </summary>
        /// <param name="source">待加密字串</param>
        /// <param name="length">16或32值之一,其它则采用.net默认MD5加密算法</param>
        /// <returns>加密后的字串</returns>
        public static string Encrypt(string source, int length = 32)//默认参数
        {
            if (string.IsNullOrEmpty(source)) return string.Empty;
            HashAlgorithm provider = CryptoConfig.CreateFromName("MD5") as HashAlgorithm;
            byte[] bytes = Encoding.UTF8.GetBytes(source);//这里需要区别编码的
            byte[] hashValue = provider.ComputeHash(bytes);
            StringBuilder sb = new StringBuilder();
            switch (length)
            {
                case 16://16位密文是32位密文的9到24位字符
                    for (int i = 4; i < 12; i++)
                    {
                        sb.Append(hashValue[i].ToString("x2"));
                    }
                    break;
                case 32:
                    for (int i = 0; i < 16; i++)
                    {
                        sb.Append(hashValue[i].ToString("x2"));
                    }
                    break;
                default:
                    for (int i = 0; i < hashValue.Length; i++)
                    {
                        sb.Append(hashValue[i].ToString("x2"));
                    }
                    break;
            }
            return sb.ToString();
        }
        #endregion MD5

        #region MD5摘要
        /// <summary>
        /// 获取文件的MD5摘要
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static string AbstractFile(string fileName)
        {
            using (FileStream file = new FileStream(fileName, FileMode.Open))
            {
                return AbstractFile(file);
            }
        }
        /// <summary>
        /// 根据stream获取文件摘要
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static string AbstractFile(Stream stream)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] retVal = md5.ComputeHash(stream);

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2"));
            }
            return sb.ToString();
        }
        #endregion
    }

 

标签:文件,加密,string,--,sb,MD5
From: https://www.cnblogs.com/FanJunCheng521/p/17168477.html

相关文章

  • RSA加密解密
    相比较于Des对称可逆加密性能要差加密解密速度不快安全性好公开加密key,保证数据的安全传递公开解密key,保证数据的不可抵赖公钥就是公开的key私钥就是不公开的keyC#......
  • RSA加密解密及RSA加签验签
    https://www.cnblogs.com/loveyou/p/7299524.html RSA加密解密及RSA加签验签 RSA安全性应用场景说明在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念......
  • 【加密与解密】第七章①
    应用层进程通过系统调用进入内核,由系统底层完成相应地功能,这个时候内核执行出在该进程的上下文空间中。内核一指系统内核本身,二指第三方软件以内核模块方式加载的驱动文件......
  • 面试官:怎么设计大文件、大数据场景下的传输加密方案?
    某年某月某一天,冷冽寒风中,姚小毛走进了某家公司,开始了新一轮的面试。一阵寒暄后。面试官:“你好,看你的项目经验中有做过数据加密的工作,你是使用什么加密算法加解密的?”......
  • Https 加密过程 ——为什么要加密
    HTTPS协议也是应用层的一种网络协议,与HTPP协议报文格式都一样,仅在HTTP协议的基础上,引入了加密层。由于HTTP协议内容的明文传输,导致其传输过程十分不安全,所以加密的HTTPS可......
  • 北京智游科技(爱加密)-渗透测试实习生-2023-02-27
    一、面试问题环节1.先做个简单的自我介绍吧2.sql注入的原理、分类?3.sql注入的绕过?简单讲一些4.ssrf了解吗?能造成哪些危害?对应的用到的协议有哪些?5.提权了解吗?讲一讲Wi......
  • 对俄制裁仍未起效?美国将手伸向了加密货币……
       Chainalysis报告显示,自俄乌冲突以来,乌克兰已获得7000万美元加密捐赠资金,其中ETH以2890万美元的捐款位居榜首,而BTC和USDT捐助者分别捐款2280万美元和1159万美元。 ......
  • 记一次前端请求与响应包全加密的解码过程
    即上次解密后,开发不死心,过了几个月,给返回包也进行了加密。并对前端js进行了压缩混淆   根据观察,初步认为服务端也进行了相同的rsa+aes加密,然后把rsa加密后的key和i......
  • Java基础——(综合练习)普通加密
    packagecom.zhao.test;publicclassTest18{/*需求:​某系统的数字密码(大于0),比如1983,采用加密方式进行传输。规则如下:......
  • net 6 使用 加密sqlite
    用加密sqlite使用了sqlciphone1、在nuget中安装(1)microsoft.entityframeworkcore.sqlite.core (2)sqlitepclraw.bundle_e_sqlcipher2、设置连接字符串在appsettings.j......