iT邦幫忙

0

MySQL的MD5問題

在下想要把其中一個資料表中的password一欄的值
全部MD5

可是我不用MD5函數一次只能做一個的樣子
不知道要如何才對
想請大家指教
不知道有什麼書是合適的?可否推薦相關的書籍

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
8
godstamp
iT邦新手 3 級 ‧ 2010-04-27 00:04:19
最佳解答

請問是資料表已經有資料了,並且要將 password 欄位的值都改成 md5 嗎?
如果是這樣的話...直接下語法應該就可以了...
UPDATE 資料表 SET password=MD5(password) WHERE 1;

外獅佬 iT邦大師 1 級 ‧ 2010-04-27 09:15:19 檢舉

要先確定好欄位長度吧....怕是原本的欄位長度不夠儲存MD5編碼。

10
lcjan
iT邦研究生 4 級 ‧ 2010-04-24 17:28:30

txreformer提到:
在下想要把其中一個資料表中的password一欄的值
全部MD5

你是想要把Password加密嗎?
為的是不是不想直接從資料庫看出Password?

如果是這個目的,MD5並不適合用來加密,因為他不是加密演算。
MD5是雜湊演算法之一,取MD5後的值是固定長度,32位數(16進位表示),
而且取出來的值是不可逆的,也就是說你無法從MD5反算出你原來的資訊。
通常MD5是被拿來做驗證用途,如數位簽章,訊息摘要等
目的是要確認某一個數位媒體或檔案在傳輸或儲存過程中有無被竄改。

MD5簡介:http://zh.wikipedia.org/zh-tw/MD5

看更多先前的回應...收起先前的回應...
小成 iT邦高手 10 級 ‧ 2010-04-24 21:45:55 檢舉

密碼不可逆不是更好?
不然資料庫被偷走怎辦?
而且只要把輸入的密碼一樣做MD5運算後然後跟DB中的欄位比對~應該可以達成目的吧?

lirick42 iT邦新手 1 級 ‧ 2010-04-24 21:57:59 檢舉

1.將密碼轉為MD5碼,可以避免密碼無法直接被看出來...
2.不可逆無所謂,因為可以把輸入的值轉成MD5,在去做比對即可

lcjan iT邦研究生 4 級 ‧ 2010-04-24 23:52:50 檢舉

聽兩位一說,我了解txreformer想要做的事了。
我用Delphi有現成元件可以取MD5
MySQL我就沒輒

fillano iT邦超人 1 級 ‧ 2010-04-26 10:17:36 檢舉

mysql本身就有md5()函數可以用。

6
外獅佬
iT邦大師 1 級 ‧ 2010-04-26 09:14:48

MySQL有個不可逆的加密函數,叫做PASSWORD....
直接用
PASSWORD('你的密碼')
就可以把密碼加密成固定長度的字串了。
MySQL 4.1版以前的PASSWORD,會加密字串成一個16 bytes的字串;4.1版之後,則是41 bytes

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2010-04-26 10:23:34 檢舉

mysql有md5函數阿,password函數使用的演算法是sha-1。

外獅佬 iT邦大師 1 級 ‧ 2010-04-26 10:27:52 檢舉

不推薦使用MD5的原因是...MD5已經被破解,可以偽造...XDD安全性上比較不理想。

可以參考以下這篇文章:
http://bojack.pixnet.net/blog/post/11990831

fillano iT邦超人 1 級 ‧ 2010-04-27 09:42:45 檢舉

你仔細看一下,blackjack提到的是一個駭客工具網站,裡面有md5 hash前後的對照,這不是即時算出來的,而是利用計算結果累積出來的,用這種方法,不論你用的是md5, sha-1甚至sha-256都沒用,只要查表查得到就能破,跟使用哪個hash方法沒直接關係。我也可以自己建一些資源來累積sha的密碼資源阿,先用字典hash出常用的密碼對照,然後再用brute慢慢累積,並且歡迎駭客貢獻密碼對照等等。在這樣的威脅下,唯一可靠的只有密碼複雜度跟長度。

不過目前用md5的人比較多,sha反而少吧?這樣至少駭客投入資源較少的話,也許威脅會少一點。

lirick42 iT邦新手 1 級 ‧ 2010-04-27 13:06:59 檢舉

其實現在什麼都不安全了...
許多人都有建立資料庫
可以反查

8
fillano
iT邦超人 1 級 ‧ 2010-04-26 10:35:27

還是直接回答好了...

我是要做批次建立帳號的
我用的是xoops
所以密碼必須是MD5加密過後的才行

這樣的話,其實在insert的時候配合md5就好了不是嗎?如果你用csv格式做批次匯入,程式要剖析應該沒什麼困難。如果要用mysql client匯入,你可以先用程式把csv剖析處理成sql,也不困難阿。如果你使用linux,那可以考慮用awk或sed來處理。

0
SunAllen
iT邦研究生 1 級 ‧ 2011-01-04 22:54:21

謝謝L大大的函數,正好在找說讚忙

我要發表回答

立即登入回答