protect bytes data .net

2019-08-06 11:48发布

问题:

am trying to protect bytes data using the protectedmemory and protecteddata in .net application

form this site, http://www.codedigest.com/Articles/Framework/69_Data_Encryption_and_Decryption_using_DPAPI_classes_in_NET.aspx is seems i can only protect a few bytes

and also, i cannot get the sample provided here http://msdn.microsoft.com/en-us/library/ms229741(v=vs.85).aspx to run

I get the following errors:

Name 'MemoryProtectionScope' is not declared. (BC30451)
Name 'DataProtectionScope' is not declared. (BC30451)
Name 'ProtectedMemory' is not declared. (BC30451)

can anyone help me with other methods of doing this.

回答1:

What makes you think that you can only protect a few bytes from that article ? The API is quite simple - remember that the encryption doesn't happen in place, a new array is returned with the encrypted content.

Here is a full example of using ProtectedData.Protect and back:

void Main()
{
    string data  = new WebClient().DownloadString("http://www.stackoverflow.com");
    var buffer = Encoding.UTF8.GetBytes(data);
    buffer = System.Security.Cryptography.ProtectedData.Protect(buffer, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);
    // Data is now protected.

    // Unprotect
    buffer = System.Security.Cryptography.ProtectedData.Unprotect(buffer, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);  
    string decrypted = Encoding.UTF8.GetString(buffer);
    Debug.Assert(data == decrypted);
}

Also, you will need to add a reference to the System.Security assembly.