`

MD5密码加密

阅读更多
方法一:
public class SHAEncrypt {
	
	static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  
		    'a', 'b', 'c', 'd', 'e', 'f' };  
	
	public static String encryptPwd(String password){
		MessageDigest ssha = null;
		try {
			ssha = MessageDigest.getInstance("SHA");
			ssha.update(password.getBytes());
		} catch (NoSuchAlgorithmException e) {
			Log.error("None of the encryption algorithm(没有该加密算法)");
			e.printStackTrace();
		}
		return ssha.digest().toString();
	}
	
	
	
	public static String encryptPwd(String password, String algorithm) throws Exception{
		try {
			MessageDigest ssha = MessageDigest.getInstance(algorithm);
			ssha.update(password.getBytes());
			byte[] bytes = ssha.digest();
			int j = bytes.length ;
			char str[] = new char[j * 2];
			int k = 0 ;
			for (int i = 0; i < j; i++) {
				byte byte0 = bytes[i];
				str[k++] = hexDigits[byte0 >>> 4  &  0xf ];                  
				str[k++] = hexDigits[byte0  &  0xf ];
			}
			return new String(str);
		} catch (NoSuchAlgorithmException e) {
			Log.error("None of the encryption algorithm(没有该加密算法)");
			e.printStackTrace();
			throw new Exception("encryptPwd failed");
		}
	}
	
	/**
	 * MD5二次加密
	 * 
	 * @date 2013-1-4 下午03:32:54
	 * @param password
	 * @return
	 * @throws Exception 	
	 * @return String
	 */
	public static String MD5SecondaryEncrypt(String password) throws Exception{
		return  encryptPwd(encryptPwd(password, "MD5"),"MD5");
	}
	
	/**
	 * 根据密码明文和密码类型获取密码
	 * 
	 * @date 2013-1-4 下午03:12:10
	 * @param passType  0=明文, 1=MD5, 2=crypt, 3=ssha ,4=MD5*3,5=LDAP, 6=external WEB
	 * @return 	
	 * @return String
	 */
	public static String getPwdByPassType( String password, int passType){
		String encryptPwd = null;
		try {
			switch (passType) {
			case 0:
				encryptPwd = password;
				break;
			case 1:
				encryptPwd = encryptPwd(password, "MD5");
				break;
			case 2:
				encryptPwd = password;
				break;
			case 3:
				encryptPwd = encryptPwd(password, "MD5");
				break;
			case 4:
				encryptPwd = MD5SecondaryEncrypt(password);
				break;
			case 5:
				encryptPwd = password;
				break;
			default:
				break;
			}
		} catch (Exception e) {
			Log.error("getPwdByPassType failed:"+e);
			e.printStackTrace();
		}
		
		return encryptPwd;
	}
	
	
	public static void main(String[] args) {
		try {
			System.out.println(SHAEncrypt.encryptPwd("123", "MD5"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}




方法一:原理一样
import java.security.MessageDigest; 

/**
 * 对密码进行加密和验证的类
 */
public class CipherUtil {
	
	//十六进制下数字到字符的映射数组  
    private final static String[] hexDigits = {"0", "1", "2", "3", "4",  
        "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};  
      
    /** * 把inputString加密     */  
    public static String generatePassword(String inputString){  
        return encodeByMD5(inputString);  
    }  
      
    /** 
     * 验证输入的密码是否正确 
     * @param password    加密后的密码 
     * @param inputString    输入的字符串 
     * @return    验证结果,TRUE:正确 FALSE:错误 
     */  
    public static boolean validatePassword(String password, String inputString){  
        if(password.equals(encodeByMD5(inputString))){  
            return true;  
        } else{  
            return false;  
        }  
    }  
    
    /**  对字符串进行MD5加密     */  
    private static String encodeByMD5(String originString){  
        if (originString != null){  
            try{  
                //创建具有指定算法名称的信息摘要  
                MessageDigest md = MessageDigest.getInstance("MD5");  
                //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算  
                byte[] results = md.digest(originString.getBytes());  
                //将得到的字节数组变成字符串返回  
                String resultString = byteArrayToHexString(results);  
                return resultString.toUpperCase();  
            } catch(Exception ex){  
                ex.printStackTrace();  
            }  
        }  
        return null;  
    }  
      
    /**  
     * 转换字节数组为十六进制字符串 
     * @param     字节数组 
     * @return    十六进制字符串 
     */  
    private static String byteArrayToHexString(byte[] b){  
        StringBuffer resultSb = new StringBuffer();  
        for (int i = 0; i < b.length; i++){  
            resultSb.append(byteToHexString(b[i]));  
        }  
        return resultSb.toString();  
    }  
      
    /** 将一个字节转化成十六进制形式的字符串     */  
    private static String byteToHexString(byte b){  
        int n = b;  
        if (n < 0)  
            n = 256 + n;  
        int d1 = n / 16;  
        int d2 = n % 16;  
        return hexDigits[d1] + hexDigits[d2];  
    }  
    
    public static void main(String[] args) {  
        String pwd1="123";  
        String pwd2="";  
        System.out.println("未加密的密码:"+pwd1);  
        //将123加密  
        pwd2 = CipherUtil.generatePassword(pwd1);  
        System.out.println("加密后的密码:"+pwd2);  
          
        System.out.print("验证密码是否下确:");  
        if(CipherUtil.validatePassword(pwd2, pwd1)) {  
            System.out.println("正确");  
        }  
        else {  
            System.out.println("错误");  
        }  
    }
}

分享到:
评论

相关推荐

    md5 密码加密

    md5 密码加密 绝对不会被反编译。。适合一般的文件密码加密。。。

    MD5密码加密文档

    在"MD5密码加密文档"中,MD5被用于对密码进行加密处理。通常,我们不直接存储用户的明文密码,而是将其通过MD5或其他哈希函数转化为哈希值,存储这个哈希值。这样,即使数据库被泄露,攻击者也无法直接获取到用户的...

    MD5密码加密技术.zip

    在你下载的"MD5密码加密技术.zip"文件中,可能包含了上述Java代码示例,以及如何将这些加密后的MD5值与MySQL数据库进行交互的示例。你可以直接运行这些代码,以理解和应用MD5密码加密技术。通过学习和实践这个代码,...

    java MD5密码加密

    java MD5密码加密.

    MD5 密码加密方式(png)

    MD5 密码加密方式

    MD5密码加密技术……

    这种转换过程是不可逆的,即不能通过MD5值恢复原始数据,因此常用于数据完整性校验和密码存储。 MD5的基本原理是通过一系列的数学运算,包括位操作、异或、加法等,将输入的数据“混合”成一个固定的长度。这些运算...

    crypto-js 对密码md5加密,DES加密

    ### crypto-js 库在前端开发中的应用:MD5与DES加密技术详解 #### 一、前言 在当今数字化时代,信息安全变得尤为重要。无论是保护用户的个人信息还是确保数据传输的安全性,加密技术都扮演着至关重要的角色。在...

    jquery md5 密码加密

    这是一个js文件,只要在页面上添加javascript引就可以使用。使用该文件,可在javascript或jquery中把密码通过md5的加密进行加密,安全,简单,方便,同时可以进行关于md5的其他操作

    C#中的MD5密码加密的方法及代码

    //md5加密 在项目中加入本文附带的ContorString文件,在需要加密的页面引用System.Web.Security,并写入以下代码: " ContorString md5=new ContorString(); string loginPwd = md5.MDString(this.TextBox2.Text.Trim...

    C#页面中密码MD5加密

    MD5的主要用途包括但不限于:文件完整性检查、密码加密存储、数字签名等。 #### 二、MD5在C#中的应用 在C#开发中,MD5主要用于密码的安全存储以及数据校验等方面。通过将原始数据经过MD5算法处理后得到一个固定长度...

    java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句.pdf

    在实际开发中,除了密码加密,还应考虑使用HTTPS协议传输数据,以及在服务器端进行输入验证,防止SQL注入等攻击。同时,定期更新密码策略,限制密码的复杂性和生命周期,也是保护用户信息安全的重要措施。

    jsp网页中用户登陆密码的MD5加密

    MD5加密是一种常用的密码学哈希函数,用于确保数据的完整性和_authentication。MD5算法是RSA Data Security公司在1992年发布的,用于生成一个128位的哈希值。MD5加密广泛应用于各种领域,包括数据存储、网络传输和...

    使用MD5算法对密码进行加密

    描述中提到“程序完全可以运行”,暗示存在一个实现MD5密码加密的代码示例。在实际应用中,通常会使用编程语言的库函数来完成MD5哈希计算,例如Python的`hashlib`库、Java的`java.security.MessageDigest`类等。 ...

    MD5加密工具类

    md5加密类,可以通过md5加密保证密码的安全性

    前端实现MD5对密码进行加密

    附:如果遇到MD5加密文件,而又不知道的密码的,请在数据库中换上这组加密的数据。 admin---16位加密---7a57a5a743894a0e admin---32位加密---21232f297a57a5a743894a0e4a801fc3 admin---40位加密---7a57a5a743894...

    md5批量加密 dll外部动态库

    综合以上信息,我们可以得出,这个压缩包提供了一个完整的解决方案,包括了MD5加密所需的所有组件,从底层算法实现到用户界面和交互功能,用户可以方便地对大量字符密码进行快速且安全的MD5加密。这对于开发者来说是...

    Spring boot登录项目,有验证码,MD5加密。还有简单的 增删改查,还有分页

    这是我自己写的一个Spring boot项目的登录源码,里面登录用到了动态验证码,Mybatis 逆向生成工具,密码使用Base64加密前端,后端解密以后,再用MD5加密到数据库比对。还有资源页面的增删改查和页面分页:...

    批量MD5加密工具

    批量MD5加密工具,如"苏苏MD5批量加密工具.exe",是为了方便用户处理大量文件的MD5计算而设计的。这样的工具通常具有以下功能: 1. **多文件处理**:一次可以处理多个文件,节省了逐个手动计算的时间。 2. **快速...

    (Java密码加密)MD5方式

    在IT行业中,密码的安全性是至关重要的,尤其是在网络服务中,如用户登录...总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大的加密策略来保护用户的敏感信息。

    MD5加密解密生成器

    提供MD5最新加密解密等功能 1.MD5加密 加密时请输入明文,软件会自动加密,点击密码后会自动辅助 2.MD5解密 Md5解密加密专家支持以下类型的解密: md5、md5(md5($pass))、md5(md5(md5($pass)))、MD5(MD5...

Global site tag (gtag.js) - Google Analytics