pCloud Partner Program

SQL 2005的HashBytes function (MD5, SHA1)

程式技術/Database 2008/05/19 00:54
views: 127620 times
在 SQL 2005版本中, 已內建了 HashBytes function 用來做 Hash 的功能, 可以參考該 function 的用法: http://msdn.microsoft.com/en-us/library/ms174415.aspx. 不過這個功能在 SQL 2000 的版本內並無內建, 若有需要可以參考 code project 上的 MD5 Hash SQL Server Extended Stored Procedure, 或是使用純 T-SQL 的方式的 MD5 : MD5算法的T-SQL實現(FOR SQL2000) .

使用方式很簡單, 直接呼叫 HashBytes 函數並指定演算法即可, 如下:


不過傳回的是 varbinary , 若是要取回為字串的型態, 得再用 sys.fn_VarBinToHexStr() 這個 function 來轉換, 如下:


參考文章:
好用的 MS SQL 2005 欄位字串加密應用 ( MD5 與 SHA1 )
SQL Server 数据库中的 MD5 和 SHA1

另外若是要作密碼加密使用的話, 在 SQL 2000 中有內建 PWDCOMPARE, PWDENCRYPT 這些函數可供使用, 可以參考 BlueShop 討論.
top

Trackback Address :: http://diary.tw/tim/trackback/502

  1. chainchung 2008/05/19 15:11 MODIFY/DELETE REPLY

    有了 LINQ 是否就可以不用學 SQL 指令了哩? 這樣, 程式人員就可以把精神花在前端程式上, 不需管後端怎麼處理.

    • Timothy 2008/05/20 23:13 MODIFY/DELETE

      從LINQ的設計出發點及概念來看, 的確是這樣子沒錯, 不過在現在, 或是不久的將來, T-SQL仍是 developer務必要學會的一項技能, 當然, 隨著開發工具及語言的進步, 相信會愈來愈方便開發分工化及各開發人員的方便著想囉!

  2. 不是東西的東西 vs 沒有邏輯的邏輯 2008/05/22 15:44 MODIFY/DELETE REPLY

    事實上;不需這麼麻煩 sql2k 支援使用外部的 ACTIVEX , 所以你可以自己寫一個ACTIVEX 給 ;SQL SERVER 內的STORE PROCEDURE 來使用

    • Timothy 2008/05/22 23:46 MODIFY/DELETE

      感謝lazy guy 兄的指教, sql2k 列出的方案使用純的 T-SQL 的確是落落長, 而且效能一定也大打折扣. 使用 activex 或 extend store procedure 的方式或許更為方便, 效能也更好, 不過基於可攜的考量, 在某些狀況下, 使用 T-SQL 還是有他的方便之處. 但效能是很重要的一件事啦!

  3. 2009/09/24 16:37 MODIFY/DELETE REPLY

    不過我發現到,當直接用在欄位上時,會因為欄位的屬性char or nvarchar而產生不同的編碥結果.當有char屬性的欄位時,最好都轉成char的型態,但也要用Rtrim來將空白去除,不然也會產生不正確的結果

  4. 2009/09/24 16:38 MODIFY/DELETE REPLY

    還有加了sys.fn_VarBinToHexStr的效果,好像只是大小寫轉換,前頭還是有0x的字元,要用right函式來取出所要的長度(md5: 32, sha1: 40)來用

  5. 2009/09/25 09:02 MODIFY/DELETE REPLY

    上一則的留言,是我沒發現到~~加了sys.fn_VarBinToHexStr函式是真的將資料轉成純文字,只是用Microsoft SQL Server Management Studio查看時,真的會以為只是大小寫的轉換.

Write a comment


PREV : [1] : ... [338] : [339] : [340] : [341] : [342] : [343] : [344] : [345] : [346] : ... [476] : NEXT



Nextbit Robin 5.2吋六核心智慧型手機 Microsoft Office 365 中文家用版PKC (無光碟)
ASUS華碩 AC1900 雙頻無線路由器 RT-AC68U 美國 VORNADO 533 渦流空氣循環機 (黑色)
御茶園 每朝健康綠茶(650mlx24入) 每朝健康 雙纖綠茶(650mlx24入)


 Waiting...