none
Coluna de uma tabela com criptografia RRS feed

  • Pergunta

  • Estou com UMA coluna de uma tabela que não estou conseguindo encontrar o tipo de criptografia que a pessoa usou.
    O campo é um varchar onde armazena um texto (na realidade um arquivo de nota nfe).
    O campo me traz : 

    "axwAAB+LCAAAAAAABADsvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++9...."

    Teria que me trazer assim:

    "<?xml version="1.0" encoding="utf-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><NFe "

    Pelo que vi não é um MD5 ou algo em HASH pois me trariam um "0x" inicial. É um SALT me parece.

    Alguma função T-SQL que me traria essa informação do campo ou algum algoritmo para descriptografar ?
    quinta-feira, 16 de abril de 2020 13:00

Todas as Respostas

  • Wagner,

    Estamos falando de qual versão do SQL Server, pois até a versão 2012 tinhamos alguns certificados de criptografia, que depois foram adicionados outros.

    O SQL Server possui sim alguns funções para criptografar e descriptografar, mas isso depende muito da maneira e método de criptografia, bem com, de qual certificado foi utilizado.

    Você destacou que a coluna é do tipo Varchar(), estranho utilizar esta coluna para se armazenar valores criptografados, por padrão o SQL Server recomendo o uso do tipo de dados Varbinary() ou NVarbinary(), mas podem ser utilizar o NVarchar() ou até mesmo NChar(), em último caso o Varchar() pode ser adotado, o que não é tão recomendado.

    Veja este tradicional exemplo de como podemos criptografar dados no SQL Server até a versão 2012:

    --Declarando um variável @HashThis--
    DECLARE @MeuValorCriptografado NVarChar(max);
    
    SELECT @MeuValorCriptografado = CONVERT(nvarchar,'Pedro');
    
    /* Utilizando a função HashBytes para converter a sentença 
    com uso dos Algoritmos Hash + SHA1, SHA, MD5, MD4, MD2 */
    
    SELECT HashBytes('SHA1', @MeuValorCriptografado) Resultado
    Union 
    SELECT HashBytes('SHA', @MeuValorCriptografado)
    Union 
    Select HashBytes('MD5', @MeuValorCriptografado)
    Union 
    Select HashBytes('MD4', @MeuValorCriptografado)
    Union 
    Select HashBytes('MD2', @MeuValorCriptografado)
    Union
    Select HashBytes('SHA2_256', @MeuValorCriptografado)
    Union
    Select HashBytes('SHA2_512', @MeuValorCriptografado)
    Go

    Este outro exemplo, apresenta o uso de criptografia aplicada a uma tabela para uma coluna específica:

    CREATE DATABASE CRIPTOGRAFIA
    Go
    
    USE CRIPTOGRAFIA
    Go
    
    CREATE TABLE MeusDadosCriptografados
     (Codigo Int Identity(1,1) Primary Key,
       Descricao Varchar(10),
       ValorOriginal VarChar(20) Not Null,
       ValorCriptografado VarBinary(256)) 
    Go
    
    Insert Into MeusDadosCriptografados (Descricao,ValorOriginal)
    Values ('Frase','Oi Mundo')
       
    Insert Into MeusDadosCriptografados (Descricao,ValorOriginal)
    Values ('Frase','Este é um Teste')
    Go
    
    Select * from MeusDadosCriptografados
    Go
    
    -- Criptografando os dados utilizando a função EncryptByPassPhrase --   
    DECLARE @Frase NVarChar(256)
    SET @Frase = 'Esta será a frase utilizada na criptografia dos dados';
    
    UPDATE MeusDadosCriptografados
    SET ValorCriptografado = EncryptByPassPhrase(@Frase, ValorOriginal)
    
    Select * from MeusDadosCriptografados
    Go
    
    -- Descriptografando os dados utilizando a função DecryptByPassPhrase --
    DECLARE @Frase NVarChar(256)
    SET @Frase = 'Esta será a frase utilizada na criptografia dos dados';
    
    Select Convert(VarChar(Max),DecryptByPassPhrase(@Frase, ValorCriptografado))
    from MeusDadosCriptografados
    Go
    
    Select * from MeusDadosCriptografados
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 16 de abril de 2020 23:44
    Moderador