java.security.MessageDigest的使用(1)!

來源:互聯網
上載者:User

    我們知道,編程中資料的傳輸,儲存,為了考慮安全性的問題,需要將資料進行加密.我們拿資料庫做例子.如果一個使用者註冊系統的資料庫,沒有對使用者的資訊進行儲存,如,我去頁面註冊,輸入"Vicky","123456".註冊.web伺服器未對資料進行加密而直接寫入資料庫,那麼資料庫中的使用者資訊,便是一個直接可用的資料!一旦伺服器伺服器被黑~那麼使用者的資訊將毫無保留的展現在駭客面前...為瞭解決這個弊端,現在大多數都會將資訊進行MD5加密.如"Vicky"與"123456"加密後,會產生16位或者32位字串.而駭客即便獲得這些資料也無法使用...

    MD5是常用的加密方法,這裡主要講述JDK中的java.security.MessageDigest加密方式!

@Test public void testMD() { try { String username = "Vicky"; MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(username.getBytes()); String usernameMD5 = messageDigest.digest().toString(); System.out.println(usernameMD5); } catch (Exception e) { e.printStackTrace(); } } 列印的是:[B@107077e,這是因為輸出的是byte[](messageDigest.digest()得到的是個二進位byte數組,有可能某些byte是不可列印的字元。)...我們可以使用Base64來處理byte[]

@Test public void testMD() { try { String username = "Vicky"; MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(username.getBytes()); System.out.println(Base64.encode(messageDigest.digest())); } catch (Exception e) { e.printStackTrace(); } }

列印的是:AgwpBZPO+ErqxOosJp0ybQ== 

當然我們可以編寫函數,處理二進位轉hex字串.

如:

/** * 將16位byte[] 轉換為32位String * * @param buffer * @return */ private String toHex(byte buffer[]) { StringBuffer sb = new StringBuffer(buffer.length * 2); for (int i = 0; i < buffer.length; i++) { sb.append(Character.forDigit((buffer[i] & 240) >> 4, 16)); sb.append(Character.forDigit(buffer[i] & 15, 16)); } return sb.toString(); }

編寫測試語句

@Test public void testMD() { try { String username = "Vicky"; MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(username.getBytes()); System.out.println(toHex(messageDigest.digest())); } catch (Exception e) { e.printStackTrace(); } }

列印:020c290593cef84aeac4ea2c269d326d,返回的是32位的字串!!!

這樣我們便可以直接使用JDK為我們提供的加密類與函數了!

 

MessageDigest不僅僅只為我們提供了"MD5"加密,還提供了"SHA-1"

建立的方法只為: MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");

MD5與SHA-1的區別為:MD5是16位,SHA是20位(這是兩種報文摘要的演算法)

 

難道 MessageDigest 只能用作資料加密嗎?如何使用MessageDigest產生安全性權杖!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.