Mostrando postagens com marcador Na Meia. Mostrar todas as postagens

Criptografia usando 3DES em C# e VB.Net

Exemplo de criptografia usando 3DES em C# e VB.Net
 


  Const passphrase As String = "2C446B15-732344-4234239-93234456-C1BC52F50478"

        Public Shared Function Criptografar(Message As String) As String
            Dim Results As Byte()
            Dim UTF8 As New System.Text.UTF8Encoding()
            Dim HashProvider As New MD5CryptoServiceProvider()
            Dim TDESKey As Byte() = HashProvider.ComputeHash(UTF8.GetBytes(passphrase))
            Dim TDESAlgorithm As New TripleDESCryptoServiceProvider()
            TDESAlgorithm.Key = TDESKey
            TDESAlgorithm.Mode = CipherMode.ECB
            TDESAlgorithm.Padding = PaddingMode.PKCS7
            Dim DataToEncrypt As Byte() = UTF8.GetBytes(Message)
            Try
                Dim Encryptor As ICryptoTransform = TDESAlgorithm.CreateEncryptor()
                Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length)
            Finally
                TDESAlgorithm.Clear()
                HashProvider.Clear()
            End Try
            Return Convert.ToBase64String(Results)
        End Function


        Public Shared Function Descriptografar(Message As String) As String
            Dim Results As Byte()
            Dim UTF8 As New System.Text.UTF8Encoding()
            Dim HashProvider As New MD5CryptoServiceProvider()
            Dim TDESKey As Byte() = HashProvider.ComputeHash(UTF8.GetBytes(passphrase))
            Dim TDESAlgorithm As New TripleDESCryptoServiceProvider()
            TDESAlgorithm.Key = TDESKey
            TDESAlgorithm.Mode = CipherMode.ECB
            TDESAlgorithm.Padding = PaddingMode.PKCS7
            Dim DataToDecrypt As Byte() = Convert.FromBase64String(Message)
            Try
                Dim Decryptor As ICryptoTransform = TDESAlgorithm.CreateDecryptor()
                Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length)
            Finally
                TDESAlgorithm.Clear()
                HashProvider.Clear()
            End Try
            Return UTF8.GetString(Results)
        End Function


 


const string passphrase = "2CDD6B23-7345-45789-93565-C3453345345G43453F38";
    public static string Criptografar(string Message)
    {
        byte[] Results = null;
        System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(passphrase));
        TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
        TDESAlgorithm.Key = TDESKey;
        TDESAlgorithm.Mode = CipherMode.ECB;
        TDESAlgorithm.Padding = PaddingMode.PKCS7;
        byte[] DataToEncrypt = UTF8.GetBytes(Message);
        try
        {
            ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
            Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
        }
        finally
        {
            TDESAlgorithm.Clear();
            HashProvider.Clear();
        }
        return Convert.ToBase64String(Results);
    }


    public static string Descriptografar(string Message)
    {
        byte[] Results = null;
        System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(passphrase));
        TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
        TDESAlgorithm.Key = TDESKey;
        TDESAlgorithm.Mode = CipherMode.ECB;
        TDESAlgorithm.Padding = PaddingMode.PKCS7;
        byte[] DataToDecrypt = Convert.FromBase64String(Message);
        try
        {
            ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
            Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
        }
        finally
        {
            TDESAlgorithm.Clear();
            HashProvider.Clear();
        }
        return UTF8.GetString(Results);
    }


Pastas no SQL Management Studio

Depois de anos sonhando com essa feature, finalmente há alguns meses atrás me indicaram o SQLTreeo um plugin que cria pastas no SQL Management Studio.

Se você tem um banco que tem centenas de tabelas/procedures, com certeza vai se familiarizar com a penosa tarefa encontrar à tabela/procedure específica que você precisa à cada 5 minutos.

O que o plugin faz é criar pastas virtuais, usando as propriedades extendidas dos elementos do banco. Assim você pode navegar e organizar as tabelas, procedures, views e etc da mesma maneira que organiza as pastas de um diretório.

Abaixo está um exemplo de como ficou meu banco:
Antes
Depois

Usando a API do Linkedin no ASP.Net

Exemplo de como se usar a API do Linkedin usando o ASP.Net.

Download

Exemplo de validador customizado em ASP.NET

O primeiro passo é extender a classe "BaseValidator" que fica dentro de "System.Web.UI.WebControls".

Uma vez feito isto sobscreva o método "EvaluateIsValid", retornando "true" ou "false" para a validação.

Para recuperar o campo uma opção é criar uma propriedade, neste exemplo foi criado "Controle".

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;

namespace Validadores
{
    public class ValidadorCPF : BaseValidator
    {
        private TextBox _controle;
        private TextBox Controle
        {
            get
            {
                if (_controle == null)
                    _controle = (TextBox)FindControl(ControlToValidate);

                return _controle;
            }
        }

        protected override bool EvaluateIsValid()
        {
            return Valida(Controle.Text);
        }

        /// 
        /// Função retirada de:
        ///     -http://social.msdn.microsoft.com/Forums/pt/vscsharppt/thread/1dbe81e6-c063-4ae5-ae1d-5643fb4b0e62
        /// 
        /// 
        /// 
        public bool Valida(string cpf)
        {

            int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
            int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };

            string tempCpf;
            string digito;
            int soma;
            int resto;

            cpf = cpf.Trim();
            cpf = cpf.Replace(".", "").Replace("-", "");

            if (cpf.Length != 11)
                return false;

            tempCpf = cpf.Substring(0, 9);
            soma = 0;

            for (int i = 0; i < 9; i++)
                soma += int.Parse(tempCpf[i].ToString()) * multiplicador1[i];

            resto = soma % 11;

            if (resto < 2)
                resto = 0;
            else
                resto = 11 - resto;

            digito = resto.ToString();

            tempCpf = tempCpf + digito;

            soma = 0;

            for (int i = 0; i < 10; i++)
                soma += int.Parse(tempCpf[i].ToString()) * multiplicador2[i];

            resto = soma % 11;

            if (resto < 2)
                resto = 0;
            else
                resto = 11 - resto;

            digito = digito + resto.ToString();

            return cpf.EndsWith(digito);

        }
    }
}

Para adicionar o validador na página primeiro crie uma tag Register atribuindo os valores de "Namespace" e "Assembly". Feito isto é só utilizar normalmente como qualquer outro validador.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register TagPrefix="v" Namespace="Validadores" Assembly="App_Code" %>



    


    


Download exemplo

Exemplo de com chamar um método dinamicamente

Exemplo de com chamar um método dinamicamente:
//Carregando DLL
Assembly assembly = Assembly.Load(AssemblyName);
//Carregando Classe
Type classe = assembly.GetType(Namespace);
//Carregando Método
MethodInfo metodo = classe.GetMethod("ValidarCampo");
//Criando instancia da classe
object objeto = Activator.CreateInstance(classe);
//Criando parâmetros do método
object[] parametros = new object[] { ("Param1", "Param2" };
//Chamando método
object retorno = metodo.Invoke(objeto, parametros);

Exemplo de como realizar query que ignore acentos no SqlServer

Basta adicionar "collate Latin1_General_CI_AI" na frente do campo em questão.

SELECT * FROM tableFoo WHERE fieldFoo collate Latin1_General_CI_AI LIKE "%Fóo%";

Exemplo de SQL Recursivo para SQL Server

set nocount on
 
  declare @Exemplo table 
  ( 
      ID int  Primary key NOT NULL ,
      PAI int,
      MENU nvarchar(100),
      Salary money
   )
 
  /* Montado tabela teste */
  insert into @Exemplo values(1,null,'PAI',10)
  insert into @Exemplo values(2,1,'FILHO 1',9)
  insert into @Exemplo values(3,1,'FILHO 2',8)
  insert into @Exemplo values(4,2,'NETO 1',7)
  insert into @Exemplo values(5,2,'NETO 2',6)
  insert into @Exemplo values(6,1,'FILHO 2',5)
  insert into @Exemplo values(7,4,'BISNETO 1',4)
  insert into @Exemplo values(8,4,'BISNETO 2',3)
  insert into @Exemplo values(9,6,'BISNETO 3',2)
  insert into @Exemplo values(10,8,'TATARANETO 1',20)

  set nocount off;

 with Recursao (ID,PAI,MENU,HIERARQUIA)
 as
 (
   select ID,PAI,MENU,
          convert(varchar(100),'') HIERARQUIA
      from @Exemplo
      where PAI is null
   union all
   select R1.ID,
          R1.PAI,
          R1.MENU,
          case when DataLength(R2.HIERARQUIA) > 0
                    then convert(varchar(100),R2.HIERARQUIA + '.'
                                 + cast(R1.PAI as varchar(10))) 
                    else convert(varchar(100),
                                cast(R1.PAI as varchar(10))) 
                    end as HIERARQUIA
      from @Exemplo as R1
     join Recursao as R2 on R1.PAI = R2.ID
  )

select * from Recursao order by HIERARQUIA asc 


Resultado: