[Desenvolvimento] Trabalhando com dados criptografados no Windows Phone

0

Olá pessoal, tudo bom?

Sempre que desenvolvemos qualquer tipo de aplicativo, umas das precauções básicas é com a segurança dos dados a serem manipulados. Pensando nisso, resolvi escrever esse post para demonstrar uma forma de armazenar dados, de forma segura, na IsolatedStorage do Windows Phone.

No exemplo faço um teste criptografando uma string e armazenando seu conteúdo em um arquivo no próprio dispositivo. Na sequencia, há o retorno da string criptografada para texto “limpo”.

Para implementação será necessário importar os namespaces abaixo:

1
2
3
4
using System.IO;
using System.IO.IsolatedStorage;
using System.Security.Cryptography;
using System.Text;

Para a interface da aplicação implemente o código a seguir no arquivo MainPage.xaml de seu projeto Windows Phone no Visual Studio.

1
2
3
4
5
6
...
 
  <button name="btnCriptografar"></button>
  <button name="btnDescriptografar"></button>
 
...

No arquivo C# implementaremos os seguintes métodos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
...
private void btnCriptografar_Click(object sender, RoutedEventArgs e)
{
  byte[] texto = Encoding.UTF8.GetBytes(txtTexto.Text);
  byte[] textoProtegido = ProtectedData.Protect(texto, null);
  this.ArmazenarDados(textoProtegido);
  txtTexto.Text = string.Empty;
  MessageBox.Show("Texto criptografado e armazenado.");
}
 
private void ArmazenarDados(byte[] textoProtegido)
{
  IsolatedStorageFile isostore = IsolatedStorageFile.GetUserStoreForApplication();
  IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("dados.dat", FileMode.Create, isostore);
  fileStream.Write(textoProtegido, 0, textoProtegido.Length);
  fileStream.Close();
}
 
private void btnDescriptografar_Click(object sender, RoutedEventArgs e)
{
  byte[] texto = LerDados();
  byte[] textoLimpo = ProtectedData.Unprotect(texto, null);
  txtTexto.Text = Encoding.UTF8.GetString(textoLimpo, 0, textoLimpo.Length);
}
 
private byte[] LerDados()
{
  IsolatedStorageFile isostore = IsolatedStorageFile.GetUserStoreForApplication();
  IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("dados.dat", FileMode.Open, isostore);
  Stream st = new StreamReader(fileStream).BaseStream;
  byte[] texto = new byte[st.Length];
  st.Read(texto, 0, texto.Length);
  st.Close();
  fileStream.Close();
  return texto;
}
...

Vejam nas imagens abaixo o resultado da aplicação.

criptografia

Bem pessoal é isso!

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.