Nếu bạn muốn viết các hàm của riêng mình để mã hóa và giải mã dữ liệu, bạn chỉ cần gọi DBMS_CRYPTO
encrypt
và decrypt
các phương pháp với các tham số thích hợp (tức là chọn thuật toán mã hóa, khóa của bạn, v.v.).
Tất nhiên, nếu bạn viết các quy trình của riêng mình, giả sử rằng bạn lưu trữ khóa trong cơ sở dữ liệu hoặc nơi nào đó mà cơ sở dữ liệu có quyền truy cập, bạn sẽ không làm được gì nhiều để bảo mật. Thật tệ khi gửi mật khẩu không được mã hóa qua mạng nhưng nói chung còn tệ hơn nhiều nếu lưu trữ mật khẩu không được mã hóa trong cơ sở dữ liệu (hoặc mật khẩu được mã hóa nếu có decrypt
trong cơ sở dữ liệu có quyền truy cập vào khóa để giải mã dữ liệu). Nói chung, việc đánh cắp dữ liệu từ cơ sở dữ liệu dễ dàng hơn rất nhiều so với việc đánh cắp dữ liệu được gửi qua mạng để tìm mật khẩu.
Tất nhiên, câu trả lời đúng sẽ là kiến trúc lại hệ thống để bạn hoàn toàn không lưu trữ mật khẩu. Bạn nên lưu trữ hàm băm mật khẩu (bạn cũng có thể tạo mã này bằng cách sử dụng DBMS_CRYPTO
gói) không thể đảo ngược.