當前位置:首頁 » 密碼管理 » MD5加密演算法

MD5加密演算法

發布時間: 2022-01-09 17:07:44

Ⅰ 幫忙解釋一下這段MD5加密演算法,不勝感激

byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
//以上代碼計算出s的md5值
int j = md.length;
//以上代碼計算出MD5值的長度,一般16
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);
//以上代碼是將十六進制的byte轉為十六進制的字元串

Ⅱ MD5加密演算法是什麼呢

C.報文摘要
MD5即Message-Digest Algorithm 5(信息-摘要演算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。

Ⅲ MD5加密和哈希演算法是什麼

MD5(Message-Digest Algorithm 5,信息-摘要演算法 5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法、Hash演算法),主流編程語言普遍已有MD5實現。將數據(如英文字元串,漢字,文件等)運算為另一固定長度值是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。 哈希演算法將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨後的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數據的哈希值可以檢驗數據的完整性。
哈希表是根據設定的哈希函數H(key)和處理沖突方法將一組關鍵字映象到一個有限的地址區間上,並以關鍵字在地址區間中的象作為記錄在表中的存儲位置,這種表稱為哈希表或散列,所得存儲位置稱為哈希地址或散列地址。作為線性數據結構與表格和隊列等相比,哈希表無疑是查找速度比較快的一種。

Ⅳ md5加密演算法

最後結果:OWJiODYzNGM3MDcxNDM0MQ==
MD5轉換:9bb8634c70714341
BASE64轉換:OWJiODYzNGM3MDcxNDM0MQ==
網站:http://www.cmd5.com
http://tool.admin5.com/tools/tools/base64.htm

Ⅳ md5加密是什麼

md5的全稱是message-digest algorithm 5(信息-摘要演算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來,經md2、md3和md4發展而來。它的作用是讓大容量信息在用數字簽名軟體簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的大整數)。不管是md2、md4還是md5,它們都需要獲得一個隨機長度的信息並產生一個128位的信息摘要。雖然這些演算法的結構或多或少有些相似,但md2的設計與md4和md5完全不同,那是因為md2是為8位機器做過設計優化的,而md4和md5卻是面向32位的電腦。這三個演算法的描述和c語言源代碼在internet rfcs 1321中有詳細的描述(http://www.ietf.org/rfc/rfc1321.txt),這是一份最權威的文檔,由ronald l. rivest在1992年8月向ieft提交。

MD5將任意長度的「位元組串」變換成一個128bit的大整數,並且它是一個不可逆的字元串變換演算法,換句話說就是,即使你看到源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
MD5還廣泛用於加密和解密技術上,在很多操作系統中,用戶的密碼是以MD5值(或類似的其它演算法)的方式保存的, 用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然後再去和系統中保存的MD5值進行比較,而系統並不「知道」用戶的密碼是什麼。

Ⅵ 講講md5加密

一、MD5是何方神聖?

所謂MD5,即"Message-Digest Algorithm 5(信息-摘要演算法)",它由MD2、MD3、MD4發展而來的一種單向函數演算法(也就是HASH演算法),它是國際著名的公鑰加密演算法標准RSA的第一設計者R.Rivest於上個世紀90年代初開發出來的。MD5的最大作用在於,將不同格式的大容量文件信息在用數字簽名軟體來簽署私人密鑰前"壓縮"成一種保密的格式,關鍵之處在於——這種"壓縮"是不可逆的。

為了讓讀者朋友對MD5的應用有個直觀的認識,筆者以一個比方和一個實例來簡要描述一下其工作過程:

大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為任何文件(不管其大小、格式、數量)產生一個同樣獨一無二的"數字指紋",如果任何人對文件做了任何改動,其MD5值也就是對應的"數字指紋"都會發生變化。

我們常常在某些軟體下載站點的某軟體信息中看到其MD5值,它的作用就在於我們可以在下載該軟體後,對下載回來的文件用專門的軟體(如Windows MD5 Check等)做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用MD5演算法來進行文件校驗的方案被大量應用到軟體下載站、論壇資料庫、系統文件安全等方面。

筆者上面提到的例子只是MD5的一個基本應用,實際上MD5還被用於加密解密技術上,如Unix、各類BSD系統登錄密碼(在MD5誕生前採用的是DES加密演算法,後因MD5安全性更高,DES被淘汰)、通信信息加密(如大家熟悉的即時通信軟體MyIM)、數字簽名等諸多方面。

二、MD5的消亡之路

實際上,從MD5誕生之日起,來自美國名為Van Oorschot和Wiener的兩位密碼學專家就發現了一個暴力搜尋沖突的函數,並預算出"使用一個專門用來搜索MD5沖突的機器可以平均每24天就找到一個沖突"。不過由於該方案僅僅從理論上證明了MD5的不安全性,且實現的代價及其誇張(當時要製造這種專門的計算機,成本需要100萬美元),於是MD5自其誕生十多年來一直未有新版本或者被其它演算法徹底取代。

在接下來的日子裡,有關MD5的破譯又誕生了"野蠻攻擊",也就是用"窮舉法"從所有可能產生的結果中找到被MD5加密的原始明文,不過由於MD5採用128位加密方法,即使一台機器每秒嘗試10億條明文,那麼要破譯出原始明文大概需要10的22次方年,而一款名為"MD5爆破工具"的軟體,每秒進行的運算僅僅為2萬次!

經過無數MD5演算法研究專家的努力,先後又誕生了"生日攻擊"、"微分攻擊"等多種破譯方法(相關信息大家可以參考研究成果,大大推進了md5演算法消亡的進程。盡管在研究報告中並沒有提及具體的實現方法,我們可以認為,md5被徹底攻破已經掃除了技術上的障礙,剩下的僅僅是時間和精力上的問題。/" target=_blank>http://www.md5crk.com)。此次山東大學幾位教授的最新研究成果,大大推進了MD5演算法消亡的進程。盡管在研究報告中並沒有提及具體的實現方法,我們可以認為,MD5被徹底攻破已經掃除了技術上的障礙,剩下的僅僅是時間和精力上的問題。

Ⅶ md5加密的演算法是否只有一種

MD5演算法基本上都是一樣的,有一個標準的演算法,但是不排除部分人重寫MD5的演算法導致無法驗證。
一般來說,MD5的核心演算法都是一樣的,會把信息加密成一個128位的2進制位元組流,然後把2進制位元組流轉為16進制的字元串。理論上來說,二進制位元組流轉16進制字元串這一步有可能會因為不同的人不同。但是如果按標準的話,MD5加密應該是一致的。
為了安全,你可以把自己的MD5加密方法提供給對方。

Ⅷ 求MD5加密演算法的C語言源碼

(轉載) #include <stdio.h> #include <stdlib.h> #include <memory.h> #include <time.h> #include <errno.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include "../md5/md5.h" #define T1 0xd76aa478 #define T2 0xe8c7b756 #define T3 0x242070db #define T4 0xc1bdceee #define T5 0xf57c0faf #define T6 0x4787c62a #define T7 0xa8304613 #define T8 0xfd469501 #define T9 0x698098d8 #define T10 0x8b44f7af #define T11 0xffff5bb1 #define T12 0x895cd7be #define T13 0x6b901122 #define T14 0xfd987193 #define T15 0xa679438e #define T16 0x49b40821 #define T17 0xf61e2562 #define T18 0xc040b340 #define T19 0x265e5a51 #define T20 0xe9b6c7aa #define T21 0xd62f105d #define T22 0x02441453 #define T23 0xd8a1e681 #define T24 0xe7d3fbc8 #define T25 0x21e1cde6 #define T26 0xc33707d6 #define T27 0xf4d50d87 #define T28 0x455a14ed #define T29 0xa9e3e905 #define T30 0xfcefa3f8 #define T31 0x676f02d9 #define T32 0x8d2a4c8a #define T33 0xfffa3942 #define T34 0x8771f681 #define T35 0x6d9d6122 #define T36 0xfde5380c #define T37 0xa4beea44 #define T38 0x4bdecfa9 #define T39 0xf6bb4b60 #define T40 0xbebfbc70 #define T41 0x289b7ec6 #define T42 0xeaa127fa #define T43 0xd4ef3085 #define T44 0x04881d05 #define T45 0xd9d4d039 #define T46 0xe6db99e5 #define T47 0x1fa27cf8 #define T48 0xc4ac5665 #define T49 0xf4292244 #define T50 0x432aff97 #define T51 0xab9423a7 #define T52 0xfc93a039 #define T53 0x655b59c3 #define T54 0x8f0ccc92 #define T55 0xffeff47d #define T56 0x85845dd1 #define T57 0x6fa87e4f #define T58 0xfe2ce6e0 #define T59 0xa3014314 #define T60 0x4e0811a1 #define T61 0xf7537e82 #define T62 0xbd3af235 #define T63 0x2ad7d2bb #define T64 0xeb86d391 static void md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) { md5_word_t a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2], d = pms->abcd[3]; md5_word_t t; #ifndef ARCH_IS_BIG_ENDIAN # define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */ #endif #if ARCH_IS_BIG_ENDIAN /* * On big-endian machines, we must arrange the bytes in the right * order. (This also works on machines of unknown byte order.) */ md5_word_t X[16]; const md5_byte_t *xp = data; int i; for (i = 0; i < 16; i, xp = 4) X[i] = xp[0] (xp[1] << 8) (xp[2] << 16) (xp[3] << 24); #else /* !ARCH_IS_BIG_ENDIAN */ /* * On little-endian machines, we can process properly aligned data * without ing it. */ md5_word_t xbuf[16]; const md5_word_t *X; if (!((data - (const md5_byte_t *)0) & 3)) { /* data are properly aligned */ X = (const md5_word_t *)data; } else { /* not aligned */ memcpy(xbuf, data, 64); X = xbuf; } #endif #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) /* Round 1. */ /* Let [abcd k s i] denote the operation a = b ((a F(b,c,d) X[k] T[i]) <<< s). */ #define F(x, y, z) (((x) & (y)) | (~(x) & (z))) #define SET(a, b, c, d, k, s, Ti)\ t = a F(b,c,d) X[k] Ti;\ a = ROTATE_LEFT(t, s) b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 7, T1); SET(d, a, b, c, 1, 12, T2); SET(c, d, a, b, 2, 17, T3); SET(b, c, d, a, 3, 22, T4); SET(a, b, c, d, 4, 7, T5); SET(d, a, b, c, 5, 12, T6); SET(c, d, a, b, 6, 17, T7); SET(b, c, d, a, 7, 22, T8); SET(a, b, c, d, 8, 7, T9); SET(d, a, b, c, 9, 12, T10); SET(c, d, a, b, 10, 17, T11); SET(b, c, d, a, 11, 22, T12); SET(a, b, c, d, 12, 7, T13); SET(d, a, b, c, 13, 12, T14); SET(c, d, a, b, 14, 17, T15); SET(b, c, d, a, 15, 22, T16); #undef SET /* Round 2. */ /* Let [abcd k s i] denote the operation a = b ((a G(b,c,d) X[k] T[i]) <<< s). */ #define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) #define SET(a, b, c, d, k, s, Ti)\ t = a G(b,c,d) X[k] Ti;\ a = ROTATE_LEFT(t, s) b /* Do the following 16 operations. */ SET(a, b, c, d, 1, 5, T17); SET(d, a, b, c, 6, 9, T18); SET(c, d, a, b, 11, 14, T19); SET(b, c, d, a, 0, 20, T20); SET(a, b, c, d, 5, 5, T21); SET(d, a, b, c, 10, 9, T22); SET(c, d, a, b, 15, 14, T23); SET(b, c, d, a, 4, 20, T24); SET(a, b, c, d, 9, 5, T25); SET(d, a, b, c, 14, 9, T26); SET(c, d, a, b, 3, 14, T27); SET(b, c, d, a, 8, 20, T28); SET(a, b, c, d, 13, 5, T29); SET(d, a, b, c, 2, 9, T30); SET(c, d, a, b, 7, 14, T31); SET(b, c, d, a, 12, 20, T32); #undef SET

Ⅸ MD5加密演算法破解

MD5演算法是不可逆運算
每個數據通過加密成MD5後,在加密的伺服器上,這組MD5值會對應這組數據,並自動存儲。
如果你想知道MD5所對應的數據只有兩種方法:
1,去CMD5網站上查,有的是付費的一般不會出現對應值,如果沒付費,一般可以查到。
2,用窮舉法,舉出數據生成MD5值去對應,這種方法,不能實現,因為你不知道那個數據是什麼,可以是文件,也可以是一組數。如果是一組數,還有可能會實現,不知道你要窮舉到哪天了。。。

Ⅹ MD5加密演算法的問題

md5隻能加密不能解密, 也就是說他只能暴力破解 通過循環不停生成新的md5和你的比較, 相同的才是真的, 根據現在cpu的力量這個時間的長度 應該有幾十年吧

熱點內容
單片機android 發布:2024-09-20 09:07:24 瀏覽:765
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:664
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:311
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:289
手機版網易我的世界伺服器推薦 發布:2024-09-20 08:41:52 瀏覽:817
安卓x7怎麼邊打游戲邊看視頻 發布:2024-09-20 08:41:52 瀏覽:162
sql資料庫安全 發布:2024-09-20 08:31:32 瀏覽:94
蘋果連接id伺服器出錯是怎麼回事 發布:2024-09-20 08:01:07 瀏覽:507
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:658
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:481