cuốn sách gpt4 ai đã làm

Tránh/phát hiện thao tác trên các tệp đã xuất

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:00:39 38 4
mua khóa gpt4 Nike

Tôi đang phát triển ứng dụng C++ Qt. Để hỗ trợ người dùng trong trường hợp ứng dụng hoặc thiết bị được kết nối của nó gặp trục trặc, chương trình sẽ xuất tất cả cài đặt bên trong và lưu trữ chúng trong một tệp thông thường (hiện là csv). Tập tin này sau đó sẽ được gửi đến công ty (ví dụ: qua đường bưu điện).

Để tránh việc vô tình thao túng cài đặt đã xuất (ví dụ: người dùng thao tác thủ công sau khi xuất), tôi cần một số cơ chế để phát hiện điều này.

Cách tiếp cận nên đơn giản nhất có thể vì đây không phải là thông tin quá quan trọng nhưng vẫn hiệu quả.

Tất cả những gì tôi có thể nghĩ đến là băm hoặc mã hóa, nhưng tôi khá chắc chắn rằng đã có một giải pháp đơn giản và hiệu quả cho việc này.

câu trả lời hay nhất

Bạn có thể sử dụng một trong một số sơ đồ chữ ký tóm tắt hoặc mật mã. Vì tính năng này phải hoạt động ngoại tuyến nên tệp thực thi của bạn phải chứa một bí mật - có thể là khóa chung để mã hóa khóa chung hoặc nói cách khác, nhưng bạn không bao giờ có thể tự bảo vệ mình trước kẻ tấn công kiên quyết vi phạm theo cách này. Một sơ đồ đơn giản không thể bỏ qua nếu không có kỹ thuật đảo ngược là đủ; nếu ai đó có thể thiết kế ngược nó thì bạn đã thất bại.

Một trong những giải pháp đơn giản nhất là băm nội dung của tệp và nối thêm (hoặc đặt trước) một bí mật riêng tư rồi nối hàm băm vào cuối tệp. Ở đầu nhận, bạn bỏ qua việc băm, thêm bí mật, thử lại và so sánh.

Nếu công cụ kiểm tra cần độc lập và dễ sử dụng, có hai lựa chọn:

  1. Xây dựng Qt dưới dạng liên kết tĩnh và liên kết tĩnh với thời gian chạy C++. Sau đó xây dựng công cụ bằng phiên bản Qt đó: nó sẽ rất nhỏ, dưới 1 MB và không có phụ thuộc.

  2. Cung cấp trình xác thực dưới dạng một tệp html duy nhất và cho phép nó sử dụng API tệp JavaScript .Người dùng mở tệp html trong trình duyệt web của họ, kéo và thả tệp vào vùng thả và nhận phản hồi ngay lập tức. Ngày nay, nó có thể chạy trên mọi trình duyệt phổ biến như Edge, Chrome, Safari, Firefox, Konqueror…

Một cách đơn giản để thực hiện điều này trong Qt là thêm biểu diễn thập lục phân SHA-256 của nội dung và thêm một bí mật:

const tĩnh kHexSealSize = 2+64; // hex SHA-256
static QByteArray kSecret { "Mọi thứ sẽ trở nên khó chịu nếu không có muối };

QByteArray sealHash(const QByteArray & data, int size = -1) {
if (size < 0) size = data.size();
Băm QCryptographicHash(QCryptographicHash::Sha256);
hash.addData(data.constData(), kích thước);
hash.addData(kSecret);
con dấu tự động = QByteArray("\r\n") + hash.result().toHex();
Q_ASSERT(hex.size() == kHexSealSize);
con dấu trả lại;
}

Con dấu QByteArray(const QByteArray & data) {
return data + sealHash(data);
}

/// Returns whether a seal is valid
bool checkSeal(const QByteArray & data) {
if (data.size() < kHexSealSize) return false;
auto hexSrc = data.right(kHexSealSize);
auto hexCmp = sealHash(data, data.size() - kHexSealSize);
return hexSrc == hexCmp;
}

关于c++ - 避免/检测对导出文件的操纵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36986790/

38 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress