2013-07-29 81 views
3

我想更新數據庫中的所有密碼以使MD5散列密碼。下面的問題並沒有解決我的問題:Firebird:如何製作md5哈希?

UPDATE USERS SET USERPASS = hash('SALT' || USERPASS); 

問題是:它返回一個散列,它不是使用MD5算法生成的。我如何在Firebird中實現md5哈希算法?

+1

據我所知,Firebird中的HASH函數不是一個加密哈希,而更像是存在於Java中的'hashcode()'函數。另外:你真的不應該使用密碼的MD5,使用像pbkdf2,bcrypt或scrypt更強大的東西。 –

回答

5

不幸的是,hash函數的algortihm在the documentation中沒有提到...無論如何,您可以將它實現爲UDF或使用實現它的第三方UDF庫。在IBPhoenix網站上有一個UDF Libraries for Firebird的列表,似乎rFunc和FreeAdhocUDF庫都有一個(我只檢查了這兩個,可能還有其他的)。

+0

怎麼樣sha256或sha512? –

+3

在IBPhoenix網站列表中包含'fb_mhash/fb_shash',它被描述爲「實現到mhash庫(libmhash)的接口」。 [mhash](http://mhash.sourceforge.net/)支持sha256和sha512,所以它似乎符合法案。 IBPhoenix網站上的鏈接被破壞,但谷歌發現這一點:http://nixbit.com/cat/programming/libraries/fb-mhash/ – ain

+0

散列算法說是「ELF」,無論是 –