论坛首页 Java企业应用论坛

.NET与JAVA 同步的MD5加密方式

浏览 6527 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-06-30   最后修改:2009-06-30

.NET中MD5加密

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using OAOnline.BLL;
using System.Diagnostics;
using System.Text;
using System.Security.Cryptography;
using System.IO;
//1、加密成32位16进制字符串
    protected string HashMD5_String(string str)
        {
            return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
        }

//2、同上,增加偏移量

        public string GetMD5(string sDataIn, string move)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] byt, bytHash;
            byt = System.Text.Encoding.UTF8.GetBytes(move + sDataIn);
            bytHash = md5.ComputeHash(byt);     
            md5.Clear();
            string sTemp = "";
            for (int i = 0; i < bytHash.Length; i++)
            {
               sTemp += bytHash[i].ToString("x").PadLeft(2, '0');        
            }
            return sTemp;
        }

//3、将字符串编码成ASCII数组后进行MD5加密,然后再编码成ASCII字符串
        public static string MD5Encrypt(string strEnc)
        {
            string str = "加密失败!";
            try
            {

                System.Security.Cryptography.MD5CryptoServiceProvider MD5 = new System.Security.Cryptography.MD5CryptoServiceProvider();                
                str = ASCIIEncoding.ASCII.GetString(MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strEnc)));
                return str;
            }
            catch (System.Exception ex)
            {
                throw (ex);
            }     
        }

 

 

JAVA中的md5加密

  import java.security.MessageDigest;

public class MD5Ecnrypt {        
    //将字符串加密成MD5,32位16进制字串,如"3031209"转成"e043a49740adde7aae4f34818c52528e"
    public static String EncodeMD5Hex(String text) throws Exception {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(text.getBytes("US-ASCII"));
        byte[] digest = md.digest();    
        StringBuffer md5 = new StringBuffer();
        for (int i = 0; i < digest.length; i++) {
            md5.append(Character.forDigit((digest[i] & 0xF0) >> 4, 16));
            md5.append(Character.forDigit((digest[i] & 0xF), 16));
        }
        return md5.toString();
    }
    //将字符串加密成ASCII字串,如"3031209"转成"?C??@??z?O4??RR?"
    public static String EncodeMD5ASCII(String text) throws Exception {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(text.getBytes("US-ASCII"));
        byte[] digest = md.digest();        
        return new String(digest,"US-ASCII");        
    }
    //将ASCII字串编码成16进制字串,如:“?C??@??z?O4??RR?“转成”3f433f3f403f3f7a3f4f343f3f52523f“
    //参数text
    //返回结果16进制字符串
    public static String DecodeMD5Hex(String text) throws Exception {        
        byte[] digest = text.getBytes();        
        StringBuffer md5 = new StringBuffer();
        for (int i = 0; i < digest.length; i++) {
            md5.append(Character.forDigit((digest[i] & 0xF0) >> 4, 16));
            md5.append(Character.forDigit((digest[i] & 0xF), 16));
        }
        return md5.toString();    
    }
    //比较输入密码MD5加密后与数据库密码相等
    //参数a:输入的密码
    //参数b:数据库的ASCII字串
    //返回结果:a进行md5加密后和b相等则为真,反之则为假
    public static Boolean CheckPSW(String a,String b) throws Exception
    {        
        String strone=EncodeMD5ASCII(a);            
        return strone.equals(b);
    }
}

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics