Data Protection with System.Security

From IronPython Cookbook

Revision as of 22:38, 19 July 2013 by MichaelFoord (Talk | contribs)

An example (from Steve Gilham) of using ProtectedData class from the System.Security assembly.

import clr
from System.Security.Cryptography import *
import System.Text
import System

  def getSecureValue(self, section, key, default):
    raw = self.getValue(section, key, None)
    if raw== None:
      return default
      array = System.Convert.FromBase64String(raw)
      chars = ProtectedData.Unprotect(array,
        None, DataProtectionScope.CurrentUser)
      result = System.Text.Encoding.UTF8.GetString(chars)
      for i in range(chars.Length):
        chars[i] = 0
      return result
    except System.Exception, ex:
      print ex.ToString()
      return default

  def setSecureValue(self, section, key, value):
    bytes = System.Text.Encoding.UTF8.GetBytes(value)
      safed = ProtectedData.Protect(bytes,
        None, DataProtectionScope.CurrentUser)
      for i in range(bytes.Length):
        bytes[i] = 0
      string = System.Convert.ToBase64String(safed)
      for i in range(safed.Length):
        safed[i] = 0
      self.setValue(section, key, string)
    except System.Exception, ex:
      print ex.ToString()

This code also works with Mono.

For other unrelated security concerns, please visit this website. There you'll find a variety of topics and products able to assist you or your business.

Back to Contents.