我已将我的移动设备上的数据库迁移远离VistaDB,因为它太慢了。我现在正在使用ProtoBuf在存储卡上创建一系列平面文件,唯一的问题是显然没有加密。
哪种加密方法最适合ProtoBuf?我基本上将一组数据实体序列化到一个文件中,然后从File反序列化回到我的集合中。我认为加密的最佳位置是在读/写的FileStream中。
数据将包含NI编号,名称和地址,因此必须是安全的。任何人都不知道吗?
答案 0 :(得分:4)
我认为你走在正确的轨道上。你应该能够做到这样的事情:
ICryptoTransform encryptor = ...
Stream encStream = new CryptoStream(outputFileStream, encryptor, CryptoStreamMode.Write);
Serializer.Serialize(encStream, obj);
encStream.FlushFinalBlock()
encStream.Close();
ICryptoTransform decryptor = ...
Stream decStream = new CryptoStream(inputputFileStream, decryptor, CryptoStreamMode.Read);
Serializer.Deserialize<Type>(decStream);
decStream.FlushFinalBlock()
decStream.Close();
有关.NET加密框架的基础知识(包括如何获取ICryptoTransform对象,请参阅What’s the best way to encrypt short strings in .NET?等其他问题。
答案 1 :(得分:1)
另一种选择是通过安装系统范围的file system filter来实际加密存储数据的整个文件夹。这里的优点是:
当然缺点(对于那些不写C的人来说)就是你不能用C#编写它。
答案 2 :(得分:0)
如果您担心密钥机密性。使其基于密码,并多次哈希手动输入的密码以生成密钥。