1

如何将类对象保存到文件中,然后使用打开和关闭的密钥对其进行加密。

关闭的密钥必须是一个所有的(只是为了安全)

每个文件的打开密钥必须不同。

我想使用这段代码......看起来这是我想要的,但我仍然需要 Encryption

    public ObjectToFile(_Object : object, _FileName : string) : bool
{
    try
    {
        // create new memory stream
        mutable _MemoryStream : System.IO.MemoryStream = System.IO.MemoryStream();

        // create new BinaryFormatter
        def _BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
                    = System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

        // Serializes an object, or graph of connected objects, to the given stream.
        _BinaryFormatter.Serialize(_MemoryStream, _Object);

        // convert stream to byte array
        mutable _ByteArray : array[byte] = _MemoryStream.ToArray();

        // Open file for writing
        def _FileStream : System.IO.FileStream = 
        System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);

        // Writes a block of bytes to this stream using data from a byte array.
        _FileStream.Write(_ByteArray, 0, _ByteArray.Length);

        // close file stream
        _FileStream.Close();

        // cleanup
        _MemoryStream.Close();
        _MemoryStream.Dispose();
        _MemoryStream = null;
        _ByteArray = null;

         true
    }
    catch
    {
        | e is Exception => // Error
        {
            Console.WriteLine("Exception caught in process: {0}", e.ToString());
            false
        }
    }
}

对版主:请不要删除 C# 标签,因为我能够获得 C# 答案,并且获得 nemerle 答案的机会很低 :)

4

1 回答 1

1

.Net 中没有为此的标准库(至少我不知道)。但是您可以遵循以下原则:

你有 2 把钥匙。对称(AES)或非对称(公钥和私钥)。钥匙 1 关闭,钥匙 2 开启。

对于您创建的每个文件,第三个密钥通常是对称 (AES) 密钥。您使用密钥 1 和密钥 2 加密的此密钥,以及您存储在文件头中的这 2 次加密的结果。使用密钥 3,您可以加密您的数据。

要读取,您可以选择密钥 1 或密钥 2 来解密您需要的密钥(密钥 3)来读取文件的内容。

System.Security.Cryptography命名空间包含您需要的所有内容。

于 2010-02-26T09:11:38.177 回答