zoukankan      html  css  js  c++  java
  • MD5

     1 using System;
     2 using System.Collections.Generic;
     3 using System.IO;
     4 using System.Linq;
     5 using System.Security.Cryptography;
     6 using System.Text;
     7 using System.Threading.Tasks;
     8 
     9 namespace MyEncrypt
    10 {
    11     /// <summary>
    12     /// 不可逆加密
    13     /// 1 防止被篡改
    14     /// 2 防止明文存储
    15     /// 3 防止抵赖,数字签名
    16     /// </summary>
    17     public class MD5Encrypt
    18     {
    19         #region MD5
    20         /// <summary>
    21         /// MD5加密,和动网上的16/32位MD5加密结果相同,
    22         /// 使用的UTF8编码
    23         /// </summary>
    24         /// <param name="source">待加密字串</param>
    25         /// <param name="length">16或32值之一,其它则采用.net默认MD5加密算法</param>
    26         /// <returns>加密后的字串</returns>
    27         public static string Encrypt(string source, int length = 32)//默认参数
    28         {
    29             if (string.IsNullOrEmpty(source)) return string.Empty;
    30             HashAlgorithm provider = CryptoConfig.CreateFromName("MD5") as HashAlgorithm;
    31             byte[] bytes = Encoding.UTF8.GetBytes(source);//这里需要区别编码的
    32             byte[] hashValue = provider.ComputeHash(bytes);
    33             StringBuilder sb = new StringBuilder();
    34             switch (length)
    35             {
    36                 case 16://16位密文是32位密文的9到24位字符
    37                     for (int i = 4; i < 12; i++)
    38                     {
    39                         sb.Append(hashValue[i].ToString("x2"));
    40                     }
    41                     break;
    42                 case 32:
    43                     for (int i = 0; i < 16; i++)
    44                     {
    45                         sb.Append(hashValue[i].ToString("x2"));
    46                     }
    47                     break;
    48                 default:
    49                     for (int i = 0; i < hashValue.Length; i++)
    50                     {
    51                         sb.Append(hashValue[i].ToString("x2"));
    52                     }
    53                     break;
    54             }
    55             return sb.ToString();
    56         }
    57         #endregion MD5
    58 
    59         #region MD5摘要
    60         /// <summary>
    61         /// 获取文件的MD5摘要
    62         /// </summary>
    63         /// <param name="fileName"></param>
    64         /// <returns></returns>
    65         public static string AbstractFile(string fileName)
    66         {
    67             FileStream file = new FileStream(fileName, FileMode.Open);
    68             MD5 md5 = new MD5CryptoServiceProvider();
    69             byte[] retVal = md5.ComputeHash(file);
    70             file.Close();
    71 
    72             StringBuilder sb = new StringBuilder();
    73             for (int i = 0; i < retVal.Length; i++)
    74             {
    75                 sb.Append(retVal[i].ToString("x2"));
    76             }
    77             return sb.ToString();
    78         }
    79         #endregion
    80     }
    81 }
  • 相关阅读:
    Perface(TCP/IP 协议族)
    CHAPTER 2 Database Environment
    Chapter 1 Introduction
    2. Instructions: Language of the computer (指令:计算机语言)
    sed命令
    磁盘配额
    外设,镜像
    磁盘及文件系统挂载
    网络客户端工具命令
    TCP协议
  • 原文地址:https://www.cnblogs.com/AlexOneBlogs/p/7407073.html
Copyright © 2011-2022 走看看