Criptografia de dados

Criptografia de Dados

Muitas vezes precisamos passar dados de uma pagina para outra geralmente usando-se QueryString (ex. login.aspx?id=1), existem situações em que não existe nenhum problema o usuário visualizar essas informações, mas há casos em que é necessário esconder essas informações para isso utilizamos a criptografia. O exemplo que vou mostrar agora é o algoritmo de Rijndael que é o novo DES, definido pelo governo americano, o Rijndael utiliza uma chave mais forte (256bits).

 

O exemplo acima criptografado ficaria assim (Ex. login.aspx?id=vLyHARA8A0m2SknVd0azxw==). Essa criptografia é tão segura que seria mais fácil acertarmos na Sena varias vezes do que acertar essa Senha de uma forma aleatória.

 

.NET Framework fornece as seguintes classes que podem ser usadas para implementar um algoritmo de cifragem usando chave privada:

01. RC2CryptoServiceProvider (algoritmo RC2)
02. DESCryptoServiceProvider (algoritmo DES)
03. TrippleDESCryptoServiceProvider (algoritmo TrippleDES)
04. RijndaelManaged (algoritmo Rijndael ) –>> Estamos usando este método

Vamos criar um pequeno exemplo que irá cifrar e decifrar dados. Por Exemplo:

Nome a ser cifrado: damon abdiel
Resultado cifrado: gSX8U2bgPCUjL5XvQZZ6zg==&Data2=NBeC47qEzqK0xSqtwmfYVw==

Resultado decifrado: damon abdiel

 

Inicie um novo projeto no VS.NET e escolha um projeto do tipo Asp.net Web Application usando VB.NET.

Teremos duas pagina a de login.aspx e a de resposta.aspx

Componentes da pagina INDEX.ASPX:

Textbox

tbID

Button

btEntrar

Na pagina inclua o código abaixo:

‘ ****************************************************************
‘ ***** Use os seguintes imports
‘ ****************************************************************

Imports System.Security.Cryptography
Imports System.IO
Imports System.Text

Private ChaveSecreta As String = “uiw78r5zxHr4%#125*”

‘************************************
’***** Função executada pelo botão Entrar
’************************************

    Sub Botao_Entrar(ByVal Sender As Object, ByVal E As EventArgs)

‘*****************************************************************
’***** Aqui invocamos a função de cifrar e depois redirecionamos a QueryString já criptografada
’*****************************************************************

               Dim strCaminho As String = “./resposta.aspx?Data1=” & Me.Cifrar(Me.tb_ID.Text, ChaveSecreta)

                   Response.Redirect(strCaminho)

    End Sub

    ‘ ***************************************************************
    ‘ ***** Função responsável por Cifrar a sua String                               
    ‘ ***** Use da seguinte forma:                                                              
    ‘ ***** Call Cifrar(“Palavra”, “SuaChaveSecreta(Ex.2345)”)                   
    ‘ ***************************************************************

    Private Function Cifrar(ByVal vstrTextToBeEncrypted As String, ByVal vstrEncryptionKey As String) As String

        Dim bytValue() As Byte
        Dim bytKey() As Byte
        Dim bytEncoded() As Byte
        Dim bytIV() As Byte = {121, 241, 10, 1, 132, 74, 11, 39, 255, 91, 45, 78, 14, 211, 22, 62}
        Dim intLength As Integer
        Dim intRemaining As Integer
        Dim objMemoryStream As New MemoryStream
        Dim objCryptoStream As CryptoStream
        Dim objRijndaelManaged As RijndaelManaged

‘ ***************************************************************
‘ ****** Descarta todos os caracteres nulos da palavra a ser cifrada
‘ ***************************************************************

        vstrTextToBeEncrypted = TiraCaracteresNulos(vstrTextToBeEncrypted)

‘ ***************************************************************
‘ ****** O valor deve estar dentro da tabela ASCII (i.e., no DBCS chars)
‘ ***************************************************************

        bytValue = Encoding.ASCII.GetBytes(vstrTextToBeEncrypted.ToCharArray)

        intLength = Len(vstrEncryptionKey)

‘ ****************************************************************
‘ ****** A chave cifrada será de 256 bits long (32 bytes)
‘ ****** Se for maior que 32 bytes então será truncado.
‘ ****** Se for menor que 32 bytes será alocado.
‘ ****** Usando upper-case Xs.
‘ ****************************************************************

        If intLength >= 32 Then

            vstrEncryptionKey = Strings.Left(vstrEncryptionKey, 32)

        Else

            intLength = Len(vstrEncryptionKey)
            intRemaining = 32 – intLength
            vstrEncryptionKey = vstrEncryptionKey & Strings.StrDup(intRemaining, “X”)

        End If

        bytKey = Encoding.ASCII.GetBytes(vstrEncryptionKey.ToCharArray)
        objRijndaelManaged = New RijndaelManaged

        Try

            objCryptoStream = New CryptoStream(objMemoryStream, objRijndaelManaged.CreateEncryptor(bytKey, bytIV), CryptoStreamMode.Write)
            objCryptoStream.Write(bytValue, 0, bytValue.Length)
            objCryptoStream.FlushFinalBlock()
            bytEncoded = objMemoryStream.ToArray
            objMemoryStream.Close()
            objCryptoStream.Close()

        Catch

        End Try

        Return Convert.ToBase64String(bytEncoded)

    End Function

    ‘ ***************************************************************
    ‘ ***** Função responsável por tirar os espaços em branco da                     
    ‘ ***** variável a ser cifrada                                                                          
    ‘ ***** Esta função é chamada internamente                                                 
    ‘ ***************************************************************

    Private Function TiraCaracteresNulos(ByVal vstrStringWithNulls As String) As String

        Dim intPosition As Integer
        Dim strStringWithOutNulls As String
        intPosition = 1
        strStringWithOutNulls = vstrStringWithNulls
        Do While intPosition > 0

            intPosition = InStr(intPosition, vstrStringWithNulls, vbNullChar)
            If intPosition > 0 Then
                strStringWithOutNulls = Left$(strStringWithOutNulls, intPosition – 1) & _
                Right$(strStringWithOutNulls, Len(strStringWithOutNulls) – intPosition)

            End If

            If intPosition > strStringWithOutNulls.Length Then

                Exit Do

            End If

        Loop

        Return strStringWithOutNulls

    End Function

Agora a pagina RESPOSTA.ASPX

 

‘ ****************************************************************
‘ ***** Use os seguintes imports
‘ ****************************************************************

Imports System.Security.Cryptography
Imports System.IO
Imports System.Text

Private ChaveSecreta As String = “uiw78r5zxHr4%#125*”

 

        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

            If Convert.ToString(Request.QueryString(“Data1”)) <> “” Then

 

                Dim strID, strSenha As String

 

                strID = Me.Decifrar(Request.QueryString(“Data1”).ToString(), ChaveSecreta)

 

Response.write(“ID – ” & strID)

 

           End If

 End Sub

 

‘ **************************************************************
‘ ***** Função Responsável por Decifrar a sua String Cifrada
‘ ***** Use da seguinte forma:
‘ ***** Call Decifrar (“Palavra”, “SuaChaveSecreta(Ex.2345)”)
‘ **************************************************************

 

Private Function Decifrar(ByVal vstrStringToBeDecrypted As String, ByVal vstrDecryptionKey As String) As String

 

            Dim bytDataToBeDecrypted() As Byte

            Dim bytTemp() As Byte

            Dim bytIV() As Byte = {121, 241, 10, 1, 132, 74, 11, 39, 255, 91, 45, 78, 14, 211, 22, 62}

            Dim objRijndaelManaged As New RijndaelManaged

            Dim objMemoryStream As MemoryStream

            Dim objCryptoStream As CryptoStream

            Dim bytDecryptionKey() As Byte

 

            Dim intLength As Integer

            Dim intRemaining As Integer

            Dim intCtr As Integer

            Dim strReturnString As String = String.Empty

            Dim achrCharacterArray() As Char

            Dim intIndex As Integer

‘ ***************************************************************
‘ ****** Convert base64 cifrada para byte array
‘ ****** Convert base64 cifrada para byte array
‘ ***************************************************************

 

            bytDataToBeDecrypted = Convert.FromBase64String(vstrStringToBeDecrypted)

 

‘ ***************************************************************
‘ ****** A chave cifrada sera de 256 bits long (32 bytes)
‘ ****** Se for maior que 32 bytes então será truncado.
‘ ****** Se for menor que 32 bytes será alocado.
‘ ****** Usando upper-case Xs.
‘ ***************************************************************

 

            intLength = Len(vstrDecryptionKey)

 

            If intLength >= 32 Then

                vstrDecryptionKey = Strings.Left(vstrDecryptionKey, 32)

            Else

                intLength = Len(vstrDecryptionKey)

                intRemaining = 32 – intLength

                vstrDecryptionKey = vstrDecryptionKey & Strings.StrDup(intRemaining, “X”)

            End If

 

            bytDecryptionKey = Encoding.ASCII.GetBytes(vstrDecryptionKey.ToCharArray)

 

            ReDim bytTemp(bytDataToBeDecrypted.Length)

 

            objMemoryStream = New MemoryStream(bytDataToBeDecrypted)

 

‘ ***************************************************************
‘ ****** Escrever o valor decifrado depois que é convertido
‘ ***************************************************************

 

            Try

 

                objCryptoStream = New CryptoStream(objMemoryStream, _

                objRijndaelManaged.CreateDecryptor(bytDecryptionKey, bytIV), _

                CryptoStreamMode.Read)

 

                objCryptoStream.Read(bytTemp, 0, bytTemp.Length)

 

                objCryptoStream.FlushFinalBlock()

                objMemoryStream.Close()

                objCryptoStream.Close()

 

            Catch

 

            End Try

‘ ***************************************************************
‘ ****** Retorna o valor decifrado
‘ ***************************************************************

            Return TiraCaracteresNulos(Encoding.ASCII.GetString(bytTemp))

 

        End Function

 

        ‘ ***************************************************************

        ‘ ***** Função responsável por tirar os espaços em branco da                     

        ‘ ***** variável a ser cifrada                                                                         

        ‘ ***** Esta função é chamada internamente                                                  

        ‘ ***************************************************************

 

        Private Function TiraCaracteresNulos(ByVal vstrStringWithNulls As String) As String

 

            Dim intPosition As Integer

            Dim strStringWithOutNulls As String

 

            intPosition = 1

            strStringWithOutNulls = vstrStringWithNulls

 

            Do While intPosition > 0

                intPosition = InStr(intPosition, vstrStringWithNulls, vbNullChar)

 

                If intPosition > 0 Then

                    strStringWithOutNulls = Left$(strStringWithOutNulls, intPosition – 1) & _

                    Right$(strStringWithOutNulls, Len(strStringWithOutNulls) – intPosition)

                End If

 

                If intPosition > strStringWithOutNulls.Length Then

                    Exit Do

                End If

            Loop

 

            Return strStringWithOutNulls

 

        End Function

Publicado em .NET, ASP.NET. 1 Comment »

Shop7 – Backup

Realizar o backup do sistema shop control 7 é essencial, pois a unica maneira de recuperar seus dados é aplicando a restauração do backup.

Para realizar o backup siga os passos abaixo:

  1. Pare o SQL – click duas vezes sob o icone do SQL ele tem uma seta verde e fica ao lado do relogio
  2. Click no botão [STOP]
  3. Click em [SIM]
  4. Feche o SQL no [X]
  5. Abra o icone que fica na area de trabalho – [PROGRAMA DE BACKUP]
  6. Marque todos os [ITENS A COPIAR]
  7. Click em [INICIA COPIA]
  8. Ao terminar feche no [X]
  9. Click duas vezes no SQL – um icone que está localizado proximo ao relogio do windows ele provavelmente deve estar com um quadrado vermelho.
  10. Click em [START]
  11. Feche o SQL no [X]

Agora que você já fez o backup no HD é preciso copia-lo para um CD-ROM, para fazer isso existe duas maneiras, a primeira é atraves do proprio Windows outra é atraves do Nero.

Vamos primeiro atraves do proprio Windows: (obs. só é possivel gravar pelo windows com o XP):

  1. Abra a pasta que está na area de trabalho com o nome de – BACKUP SHOP7
  2. Na janela que irá se abrir localize o arquivo, ele sempre estará com o seguinte formato – BACKUP SHOP7 EM XX DE XX DE XXXX – sendo o “x” referente a data em que você está realizando o backup.
  3. Click com o botão direito do mouse e depois escolha – Enviar para CD (D:) – OBS. a mensagem pode ser outra depende da midia que você estiver gravando.
  4. Feche a janela no [X]
  5. Abra o icone do – [MEU COMPUTADOR]
  6. Click no botão direto do mouse sobre o D:
  7. Escolha [GRAVAR ESTES ARQUIVOS NO CD]
  8. Click no botão [AVANÇAR]
  9. Ao terminar click no botã [CONCLUIDO]

Enfim podemos demonstrar como fazer para guardar o banco de dados num cd com o nero.

  1. Abra o Nero
  2. Click no icone da [ESTRELINHA]
  3. Criar disco de dados
  4. Click em Adcionar
  5. Click nos arquivos que deseja adcionar.
  6. depois no botão ADCIONAR
  7. Click em concluido
  8. Click em Avançar
  9. Click em Gravar
  10. Click em OK
  11. Click em Avançar
  12. Click em Sair

Agora você estará apto para realizar os backup sabendo realmete o que estará fazendo.