最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

MD5加密的簡(jiǎn)單java實(shí)現(xiàn)

2018-12-06 16:15 作者:校招VIP  | 我要投稿

1.先大致說(shuō)一下什么是MD5加密。

MD5的全稱(chēng)是Message-Digest Algorithm 5(信息-摘要算法),看了很多大神的文章,自己有了點(diǎn)理解 ,MD5其實(shí)不算是加密算法,而是一種信息的摘要。它的特性是不可逆的,所以除了暴力破解 一般逆序算法是得不到結(jié)果的。

舉個(gè)例子:比如1+99=100,MD5接到的字符是1和99 然后通過(guò)自己的算法最后生成100 但知道結(jié)果是100卻很難推測(cè)出是通過(guò)1+99得來(lái)的。再比如 一本書(shū)的每一頁(yè)取一個(gè)字,最后通過(guò)計(jì)算得出一個(gè)MD5碼,但卻很難通過(guò)這個(gè)MD5碼去推測(cè)出這本書(shū)的內(nèi)容。這也就是MD5的不可逆的原因。舉的例子和對(duì)MD5的理解僅代表本人自己的觀(guān)點(diǎn),如有錯(cuò)誤還請(qǐng)各位大神批評(píng)指正。

2.這篇文章不討論復(fù)雜的MD5的算法實(shí)現(xiàn),由于本人并非科班出生,只是在項(xiàng)目中要用所以大致使用了一下,具體原理等以后有空閑時(shí)間慢慢研究。話(huà)不多說(shuō),直接上代碼。

3.分享兩個(gè)方法①getMD5() 和? ②MD5(),傳入要加密的字符str,返回加密成功的字符.??

方法①生成的是小寫(xiě)字母+數(shù)字;

方法②生成的是大寫(xiě)字母+數(shù)字,方法2要是想得到小寫(xiě)字母+數(shù)字就把hexDigits數(shù)組中的大寫(xiě)換成小寫(xiě)。 大小寫(xiě)可以通過(guò)String類(lèi)的方法處理

package com.nebula.app.app.common.utils;

?

import java.math.BigInteger;

import java.security.MessageDigest;

?

public class AppMD5Util {

/**

? ? ?* 對(duì)字符串md5加密(小寫(xiě)+字母)

? ? ?*

? ? ?* @param str 傳入要加密的字符串

? ? ?* @return? MD5加密后的字符串

? ? ?*/

? ? public static String getMD5(String str) {

? ? ? ? try {

? ? ? ? ? ? // 生成一個(gè)MD5加密計(jì)算摘要

? ? ? ? ? ? MessageDigest md = MessageDigest.getInstance("MD5");

? ? ? ? ? ? // 計(jì)算md5函數(shù)

? ? ? ? ? ? md.update(str.getBytes());

? ? ? ? ? ? // digest()最后確定返回md5 hash值,返回值為8為字符串。因?yàn)閙d5 hash值是16位的hex值,實(shí)際上就是8位的字符

? ? ? ? ? ? // BigInteger函數(shù)則將8位的字符串轉(zhuǎn)換成16位hex值,用字符串來(lái)表示;得到字符串形式的hash值

? ? ? ? ? ? return new BigInteger(1, md.digest()).toString(16);

? ? ? ? } catch (Exception e) {

? ? ? ? ? ?e.printStackTrace();

? ? ? ? ? ?return null;

? ? ? ? }

? ? }

? ??

? ??

? ? /**

? ? ?* 對(duì)字符串md5加密(大寫(xiě)+數(shù)字)

? ? ?*

? ? ?* @param str 傳入要加密的字符串

? ? ?* @return? MD5加密后的字符串

? ? ?*/

? ??

? ? public static String MD5(String s) {

? ? ? ? char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};? ? ? ?

?

? ? ? ? try {

? ? ? ? ? ? byte[] btInput = s.getBytes();

? ? ? ? ? ? // 獲得MD5摘要算法的 MessageDigest 對(duì)象

? ? ? ? ? ? MessageDigest mdInst = MessageDigest.getInstance("MD5");

? ? ? ? ? ? // 使用指定的字節(jié)更新摘要

? ? ? ? ? ? mdInst.update(btInput);

? ? ? ? ? ? // 獲得密文

? ? ? ? ? ? byte[] md = mdInst.digest();

? ? ? ? ? ? // 把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式

? ? ? ? ? ? int j = md.length;

? ? ? ? ? ? char str[] = new char[j * 2];

? ? ? ? ? ? int k = 0;

? ? ? ? ? ? for (int i = 0; i < j; i++) {

? ? ? ? ? ? ? ? byte byte0 = md[i];

? ? ? ? ? ? ? ? str[k++] = hexDigits[byte0 >>> 4 & 0xf];

? ? ? ? ? ? ? ? str[k++] = hexDigits[byte0 & 0xf];

? ? ? ? ? ? }

? ? ? ? ? ? return new String(str);

? ? ? ? } catch (Exception e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

?

? ? ? ? ?public static void main(String[] args) {

? ? ? ? String md5 = MD5("password");

? ? ? ? ? ? ? String md52 = getMD5("password22");? ? ? ? ?

? ? }

}

4.上述方法可直接拿來(lái)應(yīng)急使用 ,建議有時(shí)間還是了解MD5的實(shí)現(xiàn),拿來(lái)主義不靠譜呀,哈哈。

MD5加密的簡(jiǎn)單java實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
西畴县| 福泉市| 县级市| 西盟| 祁连县| 吴忠市| 香格里拉县| 磐石市| 宁远县| 比如县| 嘉禾县| 平昌县| 英山县| 古丈县| 兴安县| 巫溪县| 莱州市| 桓仁| 西峡县| 辉县市| 菏泽市| 金溪县| 温泉县| 乳山市| 瑞安市| 安宁市| 新沂市| 丰都县| 资中县| 古交市| 延安市| 南部县| 江都市| 正安县| 康保县| 汉寿县| 曲周县| 福州市| 温州市| 黄平县| 嘉鱼县|