2009-05-26 47 views
8

Tôi cần phải băm (MD5) tất cả mật khẩu trong cơ sở dữ liệu Sql Server 2000 của chúng tôi. Tôi có thể dễ dàng tạo ra một chương trình C#/VB.NET để chuyển đổi (băm) tất cả các mật khẩu, nhưng tôi đã tự hỏi (nhiều hơn cho giáo dục của tôi hơn là một nhu cầu hấp dẫn thực sự) nếu nó có thể tính toán MD5 hash trực tiếp trong T-SQL.
Nhờ bất kỳ ai sẽ trả lời.Có thể tính toán hàm băm MD5 trực tiếp trong ngôn ngữ T-SQL không?

+0

Có liên quan, đối với các phiên bản sau SQL Server 2000: http://stackoverflow.com/q/3525997/1569 –

Trả lời

4

Đang sử dụng mã này nhưng không phải là ngôn ngữ gốc.

http://www.codeproject.com/KB/database/xp_md5.aspx

+0

Cảm ơn bạn rất nhiều. Tôi hy vọng sẽ tìm cách để làm điều đó trực tiếp với các câu lệnh SQL, nhưng điều này cũng tốt! –

7

Năm 2005 và sau đó, bạn có thể gọi HashBytes() chức năng. Năm 2000, điều gần nhất là pwdencrypt/pwdcompare, mặc dù những chức năng đó có những cạm bẫy riêng của họ (đọc các nhận xét của liên kết).

+0

Cảm ơn bạn rất nhiều vì đã trả lời. Cuối cùng, tôi chọn câu trả lời của Daniel bởi vì tôi đang tìm kiếm băm MD5, nhưng câu trả lời của bạn rất gần và gợi ý về pwdencryt/pwdcompare khiến tôi học được điều gì đó thật sự thú vị. –

2

Không, không có lệnh TSQL bản địa để tạo MD5 hash trong SQL Server 2000.

Năm 2005 trở lên bạn có thể sử dụng HashBytes chức năng: http://msdn.microsoft.com/en-us/library/ms174415.aspx

+0

Mặc dù tôi đã chọn một câu trả lời khác, dù sao tôi vẫn muốn cảm ơn bạn rất nhiều vì đã trả lời của bạn. –

0

Không có gì huyền diệu về md5 là, bạn có thể thực hiện nó như một hàm tsql tinh khiết nếu bạn muốn. Tôi không chắc chắn nó sẽ là niềm vui trong TSQL, nhưng có nên không có gì ngăn cản bạn làm như vậy :)

1

Xin vui lòng xem bên dưới ví dụ/giải pháp sử dụng 2008

DECLARE @HashThis nvarchar(4000); 
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf'); 
SELECT HashBytes('md5', @HashThis); 
GO 
-1

Chỉ cần cho các hồ sơ:

UPDATE T_WHATEVER_YOUR_TABLE_NAME_IS 
    SET PREFIX_Hash = LOWER(SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', LOWER('a-string-with-utf8-encoded-international-text'))), 3, 32)) 
Các vấn đề liên quan