2012-01-11 25 views
8

Trong Oracle SQL, có hàm MD5 hoặc một cái gì đó có sẵn cho tôi không? Tôi muốn làm một cái gì đó như ...Có hàm MD5 Sum trong PL/SQL

select name, md5_sum(name) from person; 
+0

Xem thêm http://stackoverflow.com/q/1749753/272735 Câu trả lời cơ bản giống nhau ngay cả các thuật toán băm khác nhau (MD5 so với SHA1). – user272735

Trả lời

8

Xem this Tahiti Link. Dưới Quy trình và chức năng MD5 nó cho biết Các chương trình con này tạo ra băm MD5 của dữ liệu. Thuật toán MD5 đảm bảo tính toàn vẹn dữ liệu bằng cách tạo ra một giá trị thông điệp mật mã 128 bit từ dữ liệu đã cho.

Cũng lưu ý, rằng DBMS_OBFUSCATION_TOOLKIT bị phản đối và có thể/nên được thay thế bằng DBMS_CRYPTO, xem this Tahiti Link

+0

Cảm ơn bạn đã liên kết ... bây giờ tôi cần quảng cáo chiêu hàng này cho một số DBA để cung cấp cho tôi. Oh well ... ít nhất nó tồn tại, không phải chức năng OOB. Cảm ơn –

-4

đừng nghĩ rằng nó đi kèm với nó ngay ra khỏi hộp. bạn cần phải xác định của riêng bạn.

+5

không nghĩ rằng bạn đã thực hiện đủ nghiên cứu ... –

12

Bạn có thể muốn kiểm tra các thủ tục DBMS_OBFUSCATION_TOOLKIT.MD5.

Dưới đây là một ví dụ:

 SQL> column md5_val FORMAT A40 
    SQL> SELECT DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw('Eddie')) md5_val 
     2 FROM DUAL; 
    MD5_VAL 
    ---------------------------------------- 
    E5F6C83E6E97C74FC9E9760FC8972AED 

    1 row selected. 
+0

'DBMS_OBFUSCATION_TOOLKIT' không được dùng ít nhất kể từ 11g R2. Thay vào đó hãy sử dụng 'DBMS_CRYPTO'. (Hoặc 'STANDARD_HASH' trong 12c.) – user272735

9

Trong 12c bạn có thể sử dụng STANDARD_HASH. Nó có sẵn theo mặc định, không yêu cầu bất kỳ đối tượng PL/SQL hoặc các giá trị mã hóa cứng nào và không bị phản đối.

SQL> select standard_hash('Finally, an easy way to do this.', 'MD5') md5 
    2 from dual; 

MD5 
-------------------------------- 
456E4D024B4BB704169E21DEB895B0E2