Java/Android中的MD5加密加鹽方法
MD5加密不加鹽方法:
MD5是一個安全的雜湊演算法(Hash Functions),是雜湊演算法中的一種,輸入兩個不同的明文不會得到相同的輸出值。根據密文不能得到明文,其過程不可逆,也就是MD5只能用於加密認證,密文是無法解密。
程式碼:
public String md5(String str) { MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(str.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { System.exit(-1); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) md5StrBuff.append("0").append( Integer.toHexString(0xFF & byteArray[i])); else md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } return md5StrBuff.toString(); }
MD5加密加鹽方法:
雖然MD5自身是不可逆,但是現在網路上的MD5資料庫的資料量已經非常龐大,大部分常用密碼都可以通過碰撞的方法給暴力破解出來,網上比較有名的有彩虹表都能很好的破解常用MD5加密,所以一般通過加鹽的方式來提高資料的安全;
鹽值加密:把你原來密碼,加上一些鹽然後再進行一些列的加密演算法。比如你的密碼是:899312 使用者名稱是:jiandan在security 中鹽值加密可以是這樣加鹽的899312{jiandan} 然後 ,在進行一些列的加密
程式碼:
package com.itgocome.framework.security; import java.security.MessageDigest; import java.util.Random; import org.apache.commons.codec.binary.Hex; /** * @author Rain * @email
[email protected] * @date 2013-06-01 */ public class PasswordUtil { /** * 生成含有隨機鹽的密碼 */ public static String generate(String password) { Random r = new Random(); StringBuilder sb = new StringBuilder(16); sb.append(r.nextInt(99999999)).append(r.nextInt(99999999)); int len = sb.length(); if (len < 16) { for (int i = 0; i < 16 - len; i++) { sb.append("0"); } } String salt = sb.toString(); password = md5Hex(password + salt); char[] cs = new char[48]; for (int i = 0; i < 48; i += 3) { cs[i] = password.charAt(i / 3 * 2); char c = salt.charAt(i / 3); cs[i + 1] = c; cs[i + 2] = password.charAt(i / 3 * 2 + 1); } return new String(cs); } /** * 校驗密碼是否正確 */ public static boolean verify(String password, String md5) { char[] cs1 = new char[32]; char[] cs2 = new char[16]; for (int i = 0; i < 48; i += 3) { cs1[i / 3 * 2] = md5.charAt(i); cs1[i / 3 * 2 + 1] = md5.charAt(i + 2); cs2[i / 3] = md5.charAt(i + 1); } String salt = new String(cs2); return md5Hex(password + salt).equals(new String(cs1)); } /** * 獲取十六進位制字串形式的MD5摘要 */ public static String md5Hex(String src) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] bs = md5.digest(src.getBytes()); return new String(new Hex().encode(bs)); } catch (Exception e) { return null; } } public static void main(String[] args) { String password = generate("admin"); System.out.println(verify("admin", password)); } }
相關推薦
Android中MD5加密加鹽
MD5加密不加鹽方法: MD5是一個安全的雜湊演算法(Hash Functions),是雜湊演算法中的一種,輸入兩個不同的明文不會得到相同的輸出值。根據密文不能得到明文,其過程不可逆,也就是MD5只能用於加密認證,密文是無法解密。 程式碼: [java] view plain copy print
Java/Android中的MD5加密加鹽方法
MD5加密不加鹽方法: MD5是一個安全的雜湊演算法(Hash Functions),是雜湊演算法中的一種,輸入兩個不同的明文不會得到相同的輸出值。根據密文不能得到明文,其過程不可逆,也就是MD
android中MD5加密工具類
/** * md5工具類 * * @author xiaoke * */ public class MD5Util {/*** * @param psdMD5要加密的物件* @returnMD5加密後市返回一個32位數的字串,返回“”,代表加密異常*/pub
ShiroMD5位密碼加密加鹽方法
package com.hp.util; import org.apache.shiro.crypto.hash.Md5Hash; public class Md5Util { // 設定加鹽加密的方式 public static String md5(String
密碼Md5加密+加鹽
package com.example.phone.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Digest
MD5+DES在C#.NET與Java/Android中的加解密使用
main 模式 NPU ++ 代碼 加密、解密 ets 推薦 lock 一、背景後臺(C#.NET)使用一個MD5+DES的加解密算法,查了下,很多網友都使用了這個算法。在Android裏,也需要這個算法,如何把這個加解密算法切換成Java版,成了難題。畢竟好久沒涉及到這一
Java中md5加密
com char common span edi case codec mdt imp 方法一、 public final static String md5(String s) { char hexDigits[] = {‘0‘,‘1‘,‘2‘,‘
Java/Android中的3DES加密
3DES(或稱為Triple DES)是通過DES進行3次加密,金鑰的長度為DES的金鑰3倍,加密後的資料長度與DES加密長度相同。安全方面相對於DES加密更加安全,不容易被破解。 程式碼: /* 定義加密方式, DESede:加密演算法; ECB:工作模式 ; NOPad
Java/Android中的DES加密
DES (Data Encrypt Standard資料庫加密標準) 是一種對稱加密演算法,目前在安全方面沒有AES那麼安全,所以逐漸被市場淘汰。一些系統都已經放棄使用DES加密,採用3DES或者AES加密,不過一些過老的系統中還是採用DES加密,所以將程
Java/Android中漢字轉拼音的兩種方法,優劣比較
一、前言 在我們的開發中,有時會有這樣的需求,就是聯絡人列表按照拼音順序排列(如通訊錄)。於是,我也在網上搜到了許多這類的文章,就兩種最常見的做法在此進行簡單的比較和分析 二、漢字轉拼音的方法 使用第三方pinyin4j的jar包。 下載地址 , Android St
JAVA中MD5加密(MD5工具類)
工具類如下:import java.security.MessageDigest; /** * @Author:Starry * @Description: * @Date:Created in 9
hashlib 文件校驗,MD5動態加鹽返回加密後字符
str span 文件 date code return tro mod update hashlib 文件校驗 # for循環校驗 import hashlib def check_md5(file): ret = hashlib.md5() with
java中MD5加密解密
package com.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; /
Java/Android中SHA1和SHA256加密
SHA1(Secure Hash Algorithm,譯作安全雜湊演算法)是Hash演算法中的一種,適合用於數字簽名資料認證,加密過程不可逆不能進行解密。 MD5與SHA1都是Hash演算法,MD
md5 加鹽原理和常用的加鹽方法
現在的MD5密碼資料庫的資料量已經非常龐大了,大部分常用密碼都可以通過MD5摘要反向查詢到密碼明文。為了防止內部人員(能夠接觸到資料庫或者資料庫備份檔案的人員)和外部入侵者通過MD5反查密碼明文,更好地保護使用者的密碼和
潛移默化學會WPF(安全篇<一>)--MD5加密三種方法加實踐 - AYUI框架 - 博客園
get exist 發揮 post bstr alt ado hpa bst 原文:潛移默化學會WPF(安全篇)--MD5加密三種方法加實踐 - AYUI框架 - 博客園一、MD5潛移默化公式 System.Web.Security.FormsAuthe
Java中MD5加密、解密工具類
length pri 一個 stringbu util new ron abc 轉換 package org.hzp.util; import java.io.UnsupportedEncodingException; import java.security.
js md5加密的使用方法
加密 方式 使用 nbsp http files md5 hex 使用方式 1, 有一些怕別別人獲取到的信息就需要加密一下啦,這裏說一下 MD5的使用方式,很簡單 首先下載 http://files.cnblogs.com/tuyile006/md5.rar 2.
Java反射中method.isBridge() 橋接方法
clas interface rgs super logs his oid @override 查看 橋接方法是 JDK 1.5 引入泛型後,為了使Java的泛型方法生成的字節碼和 1.5 版本前的字節碼相兼容,由編譯器自動生成的方法。我們可以通過Method.isBrid
php登錄加密加鹽
也會 由於 body 再計算 針對 校驗 成功 salt 弱密碼 1 背景 涉及身份驗證的系統都需要存儲用戶的認證信息,常用的用戶認證方式主要為用戶名和密碼的方式,為了安全起見,用戶輸入的密碼需要保存為密文形式,可采用已公開的不可逆的hash加密算法,比如S