Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1711, comments - 2324, trackbacks - 356

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Microsoft MVP

My MVP Profile

My MVP Corner Page

Il mio libro su VB2012!

Il mio nuovo libro su Visual Basic 2012 E' uscito il mio libro "Visual Basic 2012 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su VS LightSwitch!

Il mio nuovo libro su Visual Studio LightSwitch E' uscito il mio libro "Visual Studio LightSwitch Unleashed". Clicca sulla copertina per info!

Visual Basic Tips & Tricks Team Member

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!


Guarda i miei webcast MSDN

Altri spazi

CodePlex download Scarica i miei progetti open-source su CodePlex!

Cerca nel blog



Seguimi su Twitter!

Article Categories

Archives

Post Categories

Image Galleries

.NET Framework

Back to basics

Blogroll

Help 1.x e 2.0

Microsoft & MSDN

Setup & Deployment

Visual Basic .NET e 2005

Windows Phone: proteggere dati sensibili (Visual Basic)

La tutela della privacy è importante in tanti contesti, ma forse in un dispositivo mobile lo è ancora di più. Non a caso, per l'invio di applicazioni al Marketplace di Windows Phone 7 per la certificazione, è necessario rispettare tutta una serie di policy.

Nello sviluppo per Windows Phone valgono ancora molti concetti relativi al namespace System.Security.Cryptography del .NET Framework, e proprio una tecnica già esistente ci permette di utilizzare un metodo semplificato per la protezione di informazioni, per così dire, meno delicate.

Esiste infatti la classe ProtectedData che espone due metodi condivisi, Protect e Unprotect. Il primo riceve una stringa e la restituisce sotto forma di array di byte sotto encryption. Il secondo, ovviamente, vuole l'array di byte e restituisce la stringa originaria.

Ciò premesso, vediamo come definire una classe che faccia uso di questa tecnica:

Imports System.Security.Cryptography
Imports System.Text
 
Public Class CryptoService
 
    Public Shared Function EncryptString(data As StringAs Byte()
        Dim PinByte = Encoding.UTF8.GetBytes(data)
 
        Dim ProtectedPinByte = ProtectedData.Protect(PinByte, Nothing)
        Return ProtectedPinByte
    End Function
 
    Public Shared Function DecryptData(data As Byte()) As String
        Dim unprotected = ProtectedData.Unprotect(data, Nothing)
        Return Encoding.UTF8.GetString(unprotected, 0, unprotected.Length)
    End Function
 
End Class

Il primo metodo, chiamato EncryptString, converte dapprima la stringa in array di byte e poi la protegge con il metodo ProtectedData.Protect. Viceversa, il secondo metodo, chiamato DecryptData, ottiene l'array di byte non protetto e ne restituisce la stringa corrispondente. L'utilizzo di questa tecnica va poi abbinato all'uso degli stream e dell'isolated storage del dispositivo. Il seguente codice dimostra come leggere informazioni protette e come elaborarle:

            Dim store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
            Using protStream As New IsolatedStorageFileStream("miofile.bin", IO.FileMode.Open, store)
                Dim pinArray As Byte() = New Byte(CInt(protStream.Length - 1)) {}
                protStream.Read(pinArray, 0, pinArray.Length)
                info = CryptoService.DecryptData(pinArray)
            End Using

Dove info è una variabile di tipo stringa dichiarata altrove. Il seguente codice, invece, scrive in un file il contenuto di una stringa proteggendolo:

            Using protStream As New IsolatedStorageFileStream("miofile.bin", IO.FileMode.Create, store)
                Dim dati = "info delicatissime"
                Dim datiProtetti = CryptoService.EncryptString(dati)
                protStream.Write(datiProtetti, 0, datiProtetti.Length)
            End Using

A seconda del tipo di informazioni da proteggere può essere conveniente utilizzare altre tecniche, questa comunque è molto semplice e certamente efficace all'interno delle nostre app. Un'occhiata a MSDN per concludere.

Alessandro

Print | posted on giovedì 19 gennaio 2012 21:00 | Filed Under [ Visual Basic Silverlight e Windows Phone ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 1 and 6 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET