JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 技巧文件  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 將字串利用 MD5/SHA 編碼 [by browser]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-06-11 15:23 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
以下為簡易的sample code
算是快速入門使用MD5/SHA 編碼字串:

1•一開始要

import java.security.*;

2•產生一個 MessageDigest class,並且指定使用的編碼,如下:

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

或者

MessageDigest sha = MessageDigest.getInstance("SHA-1");

3•將字串丟入編碼,如下(以 MD5 為例):

String test = "username=browser";
md.update(test.getBytes());


4•計算出摘要(digest)

byte[] digest = md.digest();

最後 digest 即為經過MD5/SHA編碼後的字串


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
cb750tw





發文: 22
積分: 0
於 2003-07-23 21:46 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如何解碼呢

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:cb750tw]
Forth



版主

發文: 676
積分: 8
於 2003-07-23 21:52 user profilesend a private message to usersend email to Forthreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
MD5/SHA-1就像CRC一樣,不能從產生出來的東西找回原本的資料

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:Forth]
cb750tw





發文: 22
積分: 0
於 2003-07-23 22:28 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這樣子啊...
那我利用此法加了密的資料,
經過了internet傳送,
該如何解密?

還是此法是用在密碼的比對方面,
而不是用在我說的方式.

那麼internet上的保密方式,
要用什麼方式才不是明碼傳送,
要自己寫編碼功能嗎,
有什麼現成的lib可以用呢.

謝謝回答


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:cb750tw]
Forth



版主

發文: 676
積分: 8
於 2003-07-23 22:30 user profilesend a private message to usersend email to Forthreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
現成的就直接用SSL,不知道是否符合你的需求

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:cb750tw]
cb750tw





發文: 22
積分: 0
於 2003-07-23 22:42 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ok,謝謝你.

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
ak74

火星人遊地球



發文: 50
積分: 2
於 2003-07-24 11:59 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
剛好正在找這一方面的資訊,竟然這裡就有了!
我只能說browser大大你真神∼


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
sdargon





發文: 109
積分: 0
於 2003-10-24 16:34 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
奇怪...
怎麼取出來的字串像"|U畈?<?? #怀"
byte[]轉字串不是用new String(byte[])嗎?
還是說變成那樣子的字串是正常的?


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
piggy

piggy



發文: 333
積分: 2
於 2003-10-25 15:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不知到我的觀念跟大家的觀念一不一樣
就我所知MD5好像不是用來加密的
而是A把某個東西(字串 or 檔案)算出一組MD5之後
A把東西傳給B
B再算一次MD5, 如果兩個MD5的字串相同
表示A傳給B的東西是沒有被修改過的

所以你可以常常看到你在某些網站下載東西時
除了原始的檔案外
它還會附上一組MD5
讓你檢查檔案下載是不是正確的
例如:jakarta.apache.org


piggy edited on 2003-10-25 15:04
reply to postreply to post
An Apple a day, keeps M$ away
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:sdargon]
tempo



版主

發文: 645
積分: 7
於 2003-10-26 00:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sdargon wrote:
奇怪...
怎麼取出來的字串像"|U畈?<?? #怀"
byte[]轉字串不是用new String(byte[])嗎?
還是說變成那樣子的字串是正常的?

正常的, 因為資料經過 MD5 或是 SHA-1 就會轉成 binary ...
可利用下面這段程式把他轉回來字串:
1
2
3
4
5
6
7
8
9
final StringBuffer buffer = new StringBuffer();
for (int i = 0; i < digest.length; ++i)
{
    final byte b = digest[i];
    final int value = (b & 0x7F) + (b < 0 ? 128 : 0);
    buffer.append(value < 16 ? "0" : "");
    buffer.append(Integer.toHexString(value));
}
return buffer.toString();


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:piggy]
tempo



版主

發文: 645
積分: 7
於 2003-10-26 00:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
piggy wrote:
不知到我的觀念跟大家的觀念一不一樣
就我所知MD5好像不是用來加密的
而是A把某個東西(字串 or 檔案)算出一組MD5之後
A把東西傳給B
B再算一次MD5, 如果兩個MD5的字串相同
表示A傳給B的東西是沒有被修改過的

所以你可以常常看到你在某些網站下載東西時
除了原始的檔案外
它還會附上一組MD5
讓你檢查檔案下載是不是正確的
例如:jakarta.apache.org

對呀..同樣的道理把密碼用 md5 轉過以後存在資料庫裡..
可以避免資料庫裡存放的密碼被別人盜走..

以後使用者 login 的時候就把輸入的密碼 md5 之後跟資料庫裡的比對..
一樣就是密碼正確..

這樣也算是某種加密吧~~


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
u8823510



發文: 0
積分: 0
於 2004-01-28 22:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
SHA 和 MD5 是為雜湊函數,主要是用來作為產生訊息摘要(message digest)的,訊息摘要(message digest)其顧名思義就是將一段訊息摘要出一部份出來,而雜湊函數可將任意長度的訊息摘要成一段固定長度的訊息~ 其應用,例如,我們要將一段很長很大的訊息簽章時,可能會耗費很長的時間,所以我們會先產生一段跟原文要簽署的訊息摘要出來,這樣我們只要對這段訊息摘要簽署就可以了,不用對整份文件作簽署,如此既可達到文件的不可否認性,及完整性,又可以加快處理速度! 另外, 雜湊函數其厲害的原因是,他產生出來的訊息摘要是無法還原回原文的,它是屬於單向不可逆函數,而且只要變動1小bit的訊息摘要,就會與原文所產生的訊息摘要完全不一樣,因此,他也可以確保訊息的精確性,所以很多linux系統的密碼都會支授md5這類的雜湊函數來編碼~~~~ 如有錯誤,煩請更正!!! Smile 謝謝~

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:browser]
dugout





發文: 22
積分: 0
於 2004-02-03 17:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
谁知道怎么解码??

reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:dugout]
sdargon





發文: 109
積分: 0
於 2004-02-04 10:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dugout wrote:
谁知道怎么解码??

SHA 和 MD5 是為雜湊函數
這就表示它們無法解碼了...
而且它們的碼數好像是固定的
所以可能會有不同的東西編碼出來後卻一樣
在這種情形下...是沒辦法正確的解出原來的東西的


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:sdargon]
dugout





發文: 22
積分: 0
於 2004-02-04 15:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sdargon wrote:
所以可能會有不同的東西編碼出來後卻一樣
在這種情形下...是沒辦法正確的解出原來的東西的


那樣的話做密碼驗證的時候用md5還有什麽意義啊,就是有可能密碼不對了,還是可以登錄阿??不知道我有沒有錯的


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:dugout]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-02-04 16:10 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dugout wrote:
就是有可能密碼不對了,還是可以登錄阿??不知道我有沒有錯的

你沒錯
你運氣好矇到就可以登入別人的帳號
P.S. 只是這種機會比中樂透頭彩還難


worookie edited on 2004-02-04 16:15
reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:dugout]
LancelotLiu

電腦籃球唱歌



發文: 100
積分: 1
於 2004-02-04 19:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dugout wrote:
那樣的話做密碼驗證的時候用md5還有什?意義啊,就是有可能密碼不對了,還是可以登錄阿??不知道我有沒有錯的


MD5 的 Output 是 16 byte
SHA-1的 Output 是 20 byte

所以被你猜對的機率分別是
256的16次方和
256的20次方

這也許可以是個討論的主題:哪兩組密碼經過MD5後的結果相同?


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:LancelotLiu]
sdargon





發文: 109
積分: 0
於 2004-02-09 09:08 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
LancelotLiu wrote:
MD5 的 Output 是 16 byte
SHA-1的 Output 是 20 byte

所以被你猜對的機率分別是
256的16次方和
256的20次方

這也許可以是個討論的主題:哪兩組密碼經過MD5後的結果相同?


對於密碼的輸入欄位
我想大家通常都不會開到16個字吧?
如此~
則使用者密碼的組合就只剩下...
62(大小寫英文加數字)的16次方以下
那在這樣子的情況下
編碼後被猜中密碼的機率是...
62的16次方之一或是???


sdargon edited on 2004-02-09 09:11
reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:dugout]
kamy





發文: 1
積分: 0
於 2004-03-30 17:40 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dugout wrote:
那樣的話做密碼驗證的時候用md5還有什麽意義啊,就是有可能密碼不對了,還是可以登錄阿??不知道我有沒有錯的

我記得我看MD5的RFC的時候,好像有提到他不可能有重覆的情況發生,如果沒記錯的話。


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:kamy]
LancelotLiu

電腦籃球唱歌



發文: 100
積分: 1
於 2004-03-30 18:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
kamy wrote:
我記得我看MD5的RFC的時候,好像有提到他不可能有重覆的情況發生,如果沒記錯的話。


這句話可能要修正,
MD5 的結果是 16 byte,
也就是說最多只會有 256 的 16 次方種排列組合(不過也夠多了)

一般密碼在有長度的限制下,
不同密碼的MD5的結果應該是不會相同的
但當沒有長度限制的時候,亦即有無限多個密碼時,
明碼跟 MD5 的結果一定就是多對一的情況了,
也就是會有重複的情況發生。

以上為個人的猜測與推論
也許要真的去了解 MD5 的做法,才能下定論。


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:LancelotLiu]
jihib





發文: 2
積分: 0
於 2004-05-21 12:00 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
LancelotLiu wrote:
這句話可能要修正,
MD5 的結果是 16 byte,
也就是說最多只會有 256 的 16 次方種排列組合(不過也夠多了)

一般密碼在有長度的限制下,
不同密碼的MD5的結果應該是不會相同的
但當沒有長度限制的時候,亦即有無限多個密碼時,
明碼跟 MD5 的結果一定就是多對一的情況了,
也就是會有重複的情況發生。

以上為個人的猜測與推論
也許要真的去了解 MD5 的做法,才能下定論。


不管你的 input 為何, MD5 algorithm 的第一步會把 input
附上 一連串的 bits 再加上以 64 bits ( 代表 input 的長度 )
使整個 input 長度湊成 512 的倍數 , 接著就分成 4 個 word buffer
( 一個 word buffer => 32 bits ) 去做 4 次運算 ..

比較詳細的做法 可參考 RFC 1321
RFC 1321 中會提到 MD5 algorithm 及 source code
http://community.roxen.com/developers/idocs/rfc/rfc1321.html


jihib edited on 2004-05-21 12:04
reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:dugout]
orion_wu





發文: 61
積分: 0
於 2006-09-22 11:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dugout wrote:
那樣的話做密碼驗證的時候用md5還有什麽意義啊,就是有可能密碼不對了,還是可以登錄阿??不知道我有沒有錯的


我覺得不能這麼說,MD5是驗證用的,密碼不對了當然就不能登錄啦
一般登入管理是管理者會先將密碼存在資料庫,然後使用者登錄時再將使用者輸入的密碼和資料庫的資料作比對。
所以現在問題是比對的方式,如果資料庫存明碼不安全,所以要加密,如果用一般可反解的加密方式(如DES),在忘記密碼的情況下,可以用Key解回來看看。但MD5就沒辦法解回來,因為是雜湊出來的,但是她還是可以驗證妳的密碼,因為你只要敲錯一個字,產生的編碼就會和資料庫裡存的不一樣,而且絕對沒有人可以根據計算方式反推回密碼的值,所以用MD5的方式存密碼反而是最安全的。
至於說不小心敲對了可以登錄,那是機率問題,跟是否加密無關。


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:orion_wu]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2006-09-22 11:55 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
orion_wu wrote:
絕對沒有人可以根據計算方式反推回密碼的值,所以用MD5的方式存密碼反而是最安全的。

有人可以


reply to postreply to post
作者 Re:將字串利用 MD5/SHA 編碼 [by browser] [Re:worookie]
LancelotLiu

電腦籃球唱歌



發文: 100
積分: 1
於 2006-09-25 02:21 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
有人可以


據說去年還前年有人發表了論文說已經破解 MD5,可以參考下面的文章
http://freesf.tw/modules/news/article.php?storyid=1342

但是後來就沒看到相關的訊息了......


reply to postreply to post
» JWorld@TW »  Java 技巧文件

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8