2010-05-06 9 views
8

Xin chào, tôi muốn biết kỹ thuật mã hóa tốt nhất để mã hóa và mã hóa tệp văn bản.Mã hóa/giải mã tệp văn bản trong Delphi?

Kịch bản của tôi:

Tôi có phần mềm có hai loại người dùng Administrator và nhà khai thác. Yêu cầu của chúng tôi là mã hóa tệp văn bản khi Quản trị viên nhập dữ liệu bằng GUI và lưu nó. Tệp được mã hóa đó sẽ là đầu vào cho Toán tử và họ chỉ cần chọn tệp đó và sử dụng tệp đó. Ở đây tập tin nên được tự động giải mã dữ liệu để tính toán thêm khi Operator chọn những tập tin đó.

Vui lòng giúp tôi sử dụng kỹ thuật mã hóa/giải mã nào?

Trả lời

19

Quy tắc vàng khi thực hiện mật mã là hiểu rằng mật mã nói chung là rất khó.

Có vô số cách tiếp cận/thuật toán khác nhau để lựa chọn và không có thuật toán/phương pháp đơn lẻ nào có thể được cho là tốt nhất. Tất cả phụ thuộc vào nhu cầu và khả năng của bạn để ảnh hưởng đến việc phân phối ứng dụng, v.v.

Ví dụ về tình huống có khả năng xảy ra là trong kịch bản của bạn "khóa" giải mã cần được phân phối với (các) ứng dụng và có thể làm cho nó không an toàn . Điều này thường được gọi là vấn đề "Phân phối khóa".

Một nơi tốt để bắt đầu đọc về mật mã là http://en.wikipedia.org/wiki/Cryptography.

Đối sẵn sàng thứ làm cho Delphi có một vài gói tốt có sẵn:

trang Torry cũng có một danh sách dài các thành phần:

tôi khuyên bạn sử dụng một số việc triển khai hiện có và không bắt đầu để làm của riêng của mình, kể từ khi tạo một algo crypto làm việc an toàn là rất rất khó khăn.

+0

DEC (Bộ mã hóa Delphi Encryption Compendium) rất mạnh mẽ. Khuyến nghị tốt! –

+2

Bản thân Windows cung cấp triển khai rất tốt cho các thuật toán mã hóa khác nhau bằng Windows CryptoAPI. Tôi khuyên bạn nên sử dụng CryptoAPI hoặc viết lớp trình bao bọc xung quanh các hàm CryptoAPI và sử dụng chúng trong mã của bạn. – vcldeveloper

+0

Cảm ơn bạn đã cung cấp cho tôi một khởi đầu tốt –

3

Khi di chuyển thông điệp mã hóa từ vị trí/ứng dụng sang vị trí khác, một trong những vấn đề bạn phải xem xét là nơi lưu trữ các khóa mã hóa/giải mã.

Khi tôi nhận được kịch bản của bạn, có vẻ như nó được xây dựng trong các ứng dụng của bạn. Nếu cần nhớ sử dụng các thủ thuật để ẩn nó: Các chuỗi mật khẩu phải được chia thành nhiều bit và chỉ được nối vào một vùng nhớ được bảo vệ, mà phải được đánh dấu là không thể đánh dấu (mật khẩu khác có thể được nhìn thấy trong pagefile).
Các quy tắc tương tự cho nội dung không được mã hóa (tệp văn bản). Tốt nhất là nó không bao giờ được lưu (thậm chí tạm thời) không được mã hóa vào đĩa. Nếu nó được lưu, ghi đè ngày có rác sau khi sử dụng, trước khi xóa nó.

Một phê duyệt khác (đặc biệt nếu bạn đã sử dụng thành phần nén), là tệp (văn bản), có thể được nén bằng mật khẩu.

3

Thật ra, không có kỹ thuật "tốt nhất".Về cơ bản nó phụ thuộc vào độ nhạy của dữ liệu bạn đang cố gắng bảo vệ và số lượng người có thể truy cập dữ liệu này. Những gì có thể là "tốt nhất" đối với tôi có thể là quá mức cần thiết cho dự án của bạn. Trong trường hợp của bạn, bạn có thể sử dụng bất kỳ phương thức mã hóa khóa kép nào. Hoặc asymmetric key. Về cơ bản, quản trị viên có một khóa và toán tử có một khóa. Sau đó, quản trị viên có thể mã hóa các tệp, nhưng anh ta sẽ không thể giải mã chúng một lần nữa, trừ khi anh ta có một phím toán tử. Toán tử có thể giải mã tệp và -if cần mã hóa tệp mà chỉ quản trị viên mới có thể truy cập. (Các khóa không đối xứng mã hóa theo cả hai cách.)

Có một số giải pháp sử dụng các khóa không đối xứng này. Một trong đó sẽ là tốt nhất là một trong đó bạn có thể thêm vào dự án của bạn một cách dễ dàng nhất trong khi vẫn cung cấp đủ bảo vệ cho nhu cầu của bạn.

Xây dựng thuật toán khóa không đối xứng của riêng bạn cũng có thể, nếu bạn là một thuật sĩ toán học thực sự. Các tính toán phức tạp và liên quan đến các số nguyên tố cực cao trong hầu hết các giải pháp. Như K. Sandell nói, hãy tìm một giải pháp tốt, hiện có phù hợp với nhu cầu của bạn một cách tốt nhất.