Tôi đang cố gắng triển khai một kỹ thuật mã hóa tệp văn bản đơn giản và tôi đang sử dụng mã sau để làm như vậy. Mã không được viết bởi tôi, tôi chỉ googled và đã nhận nó. Kỹ thuật mã hóa có vẻ khá đơn giản, súc tích và dễ thực hiện. Tôi thấy rằng nó chỉ có một chức năng có thể thực hiện mã hóa và giải mã khi đang di chuyển. Chỉ cần vượt qua chính nó sẽ làm các trick. Tuy nhiên, tôi chỉ muốn biết, liệu tôi có thể kiểm tra xem chìa khóa có được thông qua bởi người dùng là chính xác hay không. Hiện tại, nó sẽ chỉ mã hóa/giải mã tệp văn bản dựa trên khóa đã truyền. Nhưng không có cơ chế để kiểm tra xem chúng tôi có đang giải mã bằng khóa chính xác hay không. Bất kể chìa khóa nào chúng ta vượt qua, nó sẽ được giải mã, nhưng nó sẽ không thể đọc được. Bất kỳ ý tưởng làm thế nào để giải quyết vấn đề này ..?Mã hóa tệp văn bản đơn giản dựa trên khóa
procedure TEnDeCrypt.EnDecryptFile(pathin, pathout: string; Chave: Word);
var
InMS, OutMS: TMemoryStream;
cnt: Integer;
C: byte;
begin
InMS := TMemoryStream.Create;
OutMS := TMemoryStream.Create;
try
InMS.LoadFromFile(pathin);
InMS.Position := 0;
for cnt := 0 to InMS.Size - 1 DO
begin
InMS.Read(C, 1);
C := (C xor not (ord(chave shr cnt)));
OutMS.Write(C, 1);
end;
OutMS.SaveToFile(pathout);
finally
InMS.Free;
OutMS.Free;
end;
end;
Tôi không biết tại sao mọi người lại bỏ phiếu! – jimsweb
Đó không phải là tôi, nhưng loại mã hóa này không phải là rất an toàn, và không đáng để đầu tư. Đó là sự xáo trộn hơn mã hóa. Đối với câu hỏi thực sự của bạn: không có cách nào, vì bạn không có hệ thống khóa thực sự có thể xác thực một cách an toàn mà không chứa phần bí mật. –
cảm ơn Marco. Có kỹ thuật nào khác mà tôi có thể đạt được không? Tôi chỉ muốn đảm bảo rằng người dùng đã nhập đúng khóa. Tôi không quan tâm đến sức mạnh của mã hóa. Nó có thể là một đơn giản. – jimsweb