点点滴滴 访问量:
posts - 84,comments - 117,trackbacks - 7
环境:vs.net2005/sql server2000/xp测试通过
1.MD5 16位加密实例
       
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;

namespace md5
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            Console.WriteLine(UserMd5(
"8"));
            Console.WriteLine(GetMd5Str(
"8"));
        }

        
/// <summary>
        
/// MD5 16位加密
        
/// </summary>
        
/// <param name="ConvertString"></param>
        
/// <returns></returns>

        public static string GetMd5Str(string ConvertString)
        
{
            MD5CryptoServiceProvider md5 
= new MD5CryptoServiceProvider();
            
string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 48);
            t2 
= t2.Replace("-""");
            
return t2;
        }


        
/// <summary>
        
/// MD5 32位加密
        
/// </summary>
        
/// <param name="str"></param>
        
/// <returns></returns>

       static  string UserMd5(string str)
        
{
            
string cl = str;
            
string pwd = "";
            MD5 md5 
= MD5.Create();//实例化一个md5对像
            
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            
{
                
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 

                pwd 
= pwd + s[i].ToString("X");
                
            }

            
return pwd;
        }

    }

}

posted on 2007-01-08 18:59 sopper 阅读(2532) 评论(11)  编辑 收藏

FeedBack:
2007-04-09 13:51 | stone [未注册用户]
方法中有小错误:
pwd = pwd + s[i].ToString("X");
如果s[i]是0~9,则只能转换为一位十六进制,不会占二位十六进制,最终得到的正确的值
  回复  引用    
2007-07-02 00:47 | sunday      
兄弟有加密就没有解密吗??那就等于有毒药就没有解药了..
  回复  引用  查看    
2007-07-31 18:17 | 过路的爱梅 [未注册用户]
有错误,转换出来的值有错误
  回复  引用    
2007-08-09 21:02 | sopper [未注册用户]
@过路的爱梅

请指明错误在哪里?
你认为原因是?
谢谢
  回复  引用    
2007-09-03 14:24 | daniel [未注册用户]
32位md5加密得到的结果居然大多数时候位数不够,怎么回事儿?
  回复  引用    
2007-09-27 08:29 | 田倩 [未注册用户]
有没有简单的winform注册实例啊
  回复  引用    
2007-09-27 08:31 | 田倩 [未注册用户]
将注册信息最后添加到access数据库中。。。。登录时验证数据库中是否存在该用户
  回复  引用    
#8楼 [楼主]
2007-09-27 09:23 | sopper      
@田倩
不明白你意思

  回复  引用  查看    
2008-05-13 13:47 | 浅愿 [未注册用户]
怎么结果中的0全部不见了。导致结果位数不够。
  回复  引用    
2008-09-11 19:08 | wintersday [未注册用户]
if (s[i] < 16)
{
pwd = pwd + "0" + s[i].ToString("x");
}
else
{
pwd = pwd + s[i].ToString("x");
}

  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-12 17:52 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: