這是我的代碼,反序列化時出現此錯誤。我在同一個調用中測試它,所以.NET的版本控制不應該成爲問題。我的用戶數據是一個基本的poco對象。加密和編碼序列化數據有什麼問題嗎?
步驟1中,序列化和加密:
byte[] userDataArray;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, _logicLibrary.userData);
userDataArray = ms.ToArray();
}
string data = Encoding.UTF8.GetString(userDataArray);
var encrytedUserData = logic.Encrypt(data);
return Encoding.UTF8.GetBytes(encrytedUserData);
步驟2解密和反序列化:
public UserData DeserializeUserData(string data) { string decryptedSerializedData = _logicLibrary.RunDecrypt(data); var dataBytes = Encoding.UTF8.GetBytes(decryptedSerializedData); BinaryFormatter bf = new BinaryFormatter(); using (MemoryStream ms = new MemoryStream(dataBytes)) { return bf.Deserialize(ms) as UserData; } }
反序列化時我的錯誤是這樣的:
{「二進制流「189 '不包含有效的BinaryHeader。可能的 原因是無效的流或對象版本在 序列化和反序列化。「}
爲什麼要將字節從二進制序列化轉換爲字符串?這可能是你的問題的原因。 –
你正在破壞你的序列化數據,它是二進制數據,你不能將它轉換爲字符串而不會破壞它。 – Gusman
這是用戶數據,需要加密並保存。認爲這會工作。 –