我有一個C#類,如下所示:如何序列化C#中的對象並防止篡改?
public class TestObj
{
private int intval;
private string stringval;
private int[] intarray;
private string[] stringarray;
//... public properties not shown here
}
我想這個序列化類的一個實例爲一個字符串。
另外:
我會追加這個字符串作爲查詢字符串參數去一個URL。所以我想盡一切努力確保字符串不容易被篡改。
此外,我想序列化方法是有效的,所以字符串的大小是最小的。
我應該使用特定的.NET Framework類/方法的任何建議?
問題在於它沒有解決共享或更新與目標的祕密。據推測,如果他想防止篡改,那麼另一方需要知道如何檢查無效值。另外,如果他使用可預測的祕密,有人可能會篡改對象並重新計算散列。 – Omniwombat 2009-08-25 21:32:14
不要重新發明輪子。 CLR提供HMAC簽名,由適當的密碼技術人員進行審查。 – 2009-08-25 21:33:45
@Omniwombat:這當然不是一個高度安全的場景,因爲他正在處理查詢字符串信息傳輸。純粹的祕密存在會甩掉任何「攻擊者」。此外,祕密可以被選擇爲無限期地複雜,這使得哈希解決方案可以擴展到安全需求,但是在那種情況下,我寧願沿着線加密整個字符串。無論哪種方式,對於任何防篡改他都需要訪問目的地。 – Alex 2009-08-25 21:37:58