2010-01-09 36 views
1

我一直在使用OpenGL在C++中處理項目,並且希望將當前場景保存爲文本文件。沿x,y,z和它的顏色等立方體簡單的東西。執行文件完整性

我的問題是關於如何確保該文件未被用戶更改。我想過計算字符串的校驗和並將其包含在文件中。

例如校驗和,字符串

但是這又對用戶修改值是開放的。

任何建議,或者這只是一個寫一個好的解析器的情況?

乾杯

回答

3

理論上:你不行。

實際:它加密和模糊處理程序中的關鍵(這是多少DRM作品)

雖然你將永遠無法停止確定的用戶。爲什麼用戶無法修改它如此重要?

如果您希望用戶能夠讀取但不能修改該文件的最後一行HMAC和密鑰。

+1

這個想法是爲了確保加載的文件格式正確,並且在加載過程中不會導致問題。畢竟,我認爲這確實是寫一個體面的解析器的情況。無論如何感謝您的輸入。 – Ljdawson 2010-01-09 21:16:46

+2

如果您只想確保格式正確,那麼一定要使用「正確的解析器」路線。 – 2010-01-09 21:27:38

0

要求文件不能被用戶修改的要求有多嚴格?也就是說,你願意付出多少努力來確保用戶無法修補該文件?該文件是否需要用戶可讀?如果你真的不希望用戶更改文件,也許某種類型的加密是答案(只要用戶不需要能夠讀取文件)。像這樣的trivial XOR encryption scheme可能就足夠了。

1

而不是阻止用戶更改文件是更好的在使用它之前驗證文件的內容。創建一個能夠檢測(並修復?)錯誤的好解析器。

讓用戶做他想做的事情,因爲一些錯誤可能是可以修復的。發出警告。使用哈希函數可以防止用戶執行任何操作。