码迷,mamicode.com
首页 > 系统相关 > 详细

md5作为检验数据完整性的加密算法最常用,c#实现MD5的方法

时间:2014-07-17 11:26:04      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:md5   c#   实现md5   

md5的C#实现方法,自定义md5方法,完全跳过现今网络上的md5库,实现md5加密的完全安全。

md5虽然很强大,但运用不好照样可以被黑。简单数字和字母的短字符串md5的加密字符在现在的网络中一下就可以查询到,也就是可以直接解密,md5库里直接就有了。所以md5的加密还是自己定义个规则,这样更安全。

请看下面例子的“自定义MD5方法”中的“Md5EncodeMamicode”,简单的实现思路,更安全的安全方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace M_Class
{
    /// <summary>
    /// [MD5加密][mamicode.com提供]
    /// </summary>
    public class MD5code
    {
        /// <summary>
        /// [构造函数]
        /// </summary>
        public MD5code()
        { }

        /// <summary>
        /// 默认加密方式
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string Md5Encode(string str)
        {
            return Md5Encode32(str);
        }


        /// <summary>
        /// 32位MD5算法加密
        /// </summary>
        /// <param name="str">需要加密的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string Md5Encode32(string str)
        {
            string password = "";
           MD5 md5 = MD5.Create();
           byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
           foreach (byte b in s)
               password += b.ToString("X2");
           return password;
        }

        #region 自定义MD5方法

        /// <summary>
        /// mamicode的MD5加密法
        /// </summary>
        /// <param name="uid">用户ID</param>
        /// <param name="MamicodePWD">需要加密的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string Md5EncodeMamicode(string uid, string MamicodePWD)
        {
            ///加密规则说明:分3步
            ///第1步:对pwd进行一次md5加密
            ///第2步:拼接新字符串,用户ID+pwd+第1步加密后字符串取第5位开始的15位字符
            ///第3步:将第2步拼接的字符串再一次md5加密
                        
            string Secretkey1 = Md5Encode32(MamicodePWD);
            string Secretkey2 = uid + Secretkey1 + Secretkey1.Substring(5, 15);
            string Secretkey3 = Md5Encode32(Secretkey2);
            
            return Secretkey3;
        }

        #endregion


    }
} 

md5作为检验数据完整性的加密算法最常用,c#实现MD5的方法

标签:md5   c#   实现md5   

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!