2011-08-08 32 views
5

Tôi biết đủ về mật mã để làm cho cuộc sống khó khăn cho một lập trình viên mới làm quen và bị cười bởi các chuyên gia bảo mật. Vì vậy, với ý nghĩ đó, tôi hỏi: an toàn là javax.crypto.Cipher? Tôi nhận ra rằng bất cứ điều gì có thể bị bẻ khóa bởi ai đó với ý chí và một cách, nhưng tôi vẫn muốn biết chi tiết tương đối.Bảo mật là javax.crypto.Cipher như thế nào?

Lý do tôi hỏi là tôi muốn lưu trữ tên tài khoản và mật khẩu sẽ được gửi thông qua lớp học Cryptor của tôi sẽ mã hóa chúng và muốn biết liệu điều này có thực hiện được không. Nếu bất kỳ ai có bất kỳ tài liệu nào mà tôi có thể đọc, điều đó sẽ được đánh giá rất cao.

Cảm ơn ~ Aedon

+0

Đọc lướt qua tài liệu [Jasypt] (http://www.jasypt.org/). Có rất nhiều liên kết tốt trôi nổi trong đó. – Jeremy

Trả lời

4

Nếu bạn định lưu trữ mật khẩu một cách an toàn thì yêu cầu của bạn hoàn toàn khác với yêu cầu "giao tiếp an toàn/riêng tư". Bản thân số Cipher không đủ để bảo vệ bạn. Bạn cần phải sử dụng một trong những

trong hoàn cảnh đó. Here là một số đối số và liên kết liên quan đến bảo mật mật khẩu.

Đấm là mã hóa "bình thường" (hoặc băm, quá) chỉ là cách quá nhanh để ngăn chặn những kẻ tấn công nghiêm trọng. Bạn muốn giả tạo làm chậm toàn bộ quá trình để làm cho nó càng khó càng tốt cho ai đó có hệ thống tấn công ứng dụng của bạn. Một người dùng sẽ không nhận thấy sự khác biệt giữa 1 hoặc 500 mili giây khi nhập mật khẩu nhưng đối với kẻ tấn công, điều này có nghĩa là để phá vỡ sơ đồ của bạn, nó sẽ mất 500 lần thời gian trung bình - vì vậy nếu nó có 1 tháng để tìm mật khẩu hợp lệ trước, bây giờ sẽ mất 500 tháng.

+0

Cảm ơn bạn đã giải thích chi tiết. – AedonEtLIRA

6

Mật mã là lớp chung để áp dụng thuật toán mã hóa/giải mã. Bảo mật của nó phụ thuộc vào thuật toán mã hóa thực tế được sử dụng (DES, triple-DES, AES, vv), về kích thước của khóa của nó và trên kiểu chuỗi khối mà bạn chọn.

+0

Ah, tôi hiểu rồi. Làm thế nào bạn có thể thay đổi kích thước của khóa? Tôi đã nhận được một số lượng lớn của flak ngoại lệ khi tôi cố gắng sử dụng một khóa 32 byte cho 'SercretKeySpec' và' IvParameterSpec' của tôi? Tôi đã xem qua các tài liệu nhưng nó không rõ ràng. – AedonEtLIRA

+0

DES có khóa 64 bit trong đó chỉ 56 bit thực sự được sử dụng. AES có khóa 128 hoặc 256 bit. Nếu bạn đang mã hóa tên tài khoản và mật khẩu, tôi khuyên bạn nên sử dụng AES-128 ở chế độ CTR, theo cách đó bạn sẽ không mở rộng dữ liệu của mình bằng đệm. Chế độ CTR không cần đệm như chế độ CBC. – rossum

Các vấn đề liên quan