Sobre os comandos de criptografia
Started by Boller, Feb., 08 2025 3:00 AM - 1 reply
Registered member 3,774 messages
Posted on February, 08 2025 - 3:00 AM
O comando Crypt em WLanguage é usado para criptografar dados, como textos ou arquivos, utilizando um algoritmo de criptografia seguro. Sintaxe sResultado IS Buffer = Crypt(sDados, sChave [, criptografia, cadeia ou buffer]) • sDados → O dado a ser criptografado (string ou buffer). • sChave → A chave de criptografia (string). • criptografia (opcional) → Algoritmo de criptografia (por exemplo, cryptSecure). • cadeia ou buffer (opcional) → Especifica se o retorno será um buffer ou string. Exemplo 1: Criptografar e Descriptografar uma String sTexto IS STRING = "SenhaSecreta123" sChave IS STRING = "ChaveSegura" sCriptografado IS Buffer = Crypt(sTexto, sChave, cryptSecure) sDescriptografado IS STRING = Uncrypt(sCriptografado, sChave, cryptSecure) Info("Criptografado: " + BufferToString(sCriptografado, encodeHexa)) Info("Descriptografado: " + sDescriptografado) Exemplo 2: Criptografar um Arquivo sArquivoOrigem IS STRING = "C:\MeusDados\arquivo.txt" sArquivoDestino IS STRING = "C:\MeusDados\arquivo.crypt" sChave IS STRING = "ChaveForte123" Crypt(sArquivoOrigem, sChave, cryptSecure, sArquivoDestino) Info("Arquivo criptografado com sucesso!") Exemplo 3: Criptografar e Descriptografar um Buffer sBufferOrigem IS Buffer = StringToBuffer("Texto para proteger") sChave IS STRING = "ChaveUltraSecreta" sBufferCriptografado IS Buffer = Crypt(sBufferOrigem, sChave, cryptAES256) sBufferDescriptografado IS Buffer = Uncrypt(sBufferCriptografado, sChave, cryptAES256) Info("Descriptografado: " + BufferToString(sBufferDescriptografado, encodeANSI)) Observações 1. Sempre use uma chave segura para criptografia. 2. Para segurança avançada, prefira algoritmos como cryptAES256. 3. Dados criptografados podem ser armazenados em banco de dados ou arquivos com segurança. Imagem O comando Crypt em WLanguage passou por diversas modificações ao longo das versões do WX (Windev, Webdev e Windev Mobile), devido a incompatibilidades entre plataformas (Windows, Web e Mobile) e aprimoramentos nos algoritmos de criptografia. Evolução e Incompatibilidades Versões antigas (antes da v20) • O Crypt usava métodos de criptografia mais simples e, em alguns casos, obsoletos, como cryptNone (sem criptografia) e cryptSimple. • A criptografia era determinística, ou seja, o mesmo dado sempre gerava a mesma saída para a mesma chave. • Em alguns sistemas (especialmente no Mobile), a criptografia podia ter comportamento inconsistente. • O cryptNone não protegia os dados e era usado apenas para compatibilidade. Versões intermediárias (v20 – v25) • Introdução do cryptRC5, cryptRSA e melhorias no cryptAES. • O cryptSecure passou a ser recomendado para criptografia segura e portável entre Windows, Web e Mobile. • A estrutura de buffers melhorou, tornando a manipulação de dados mais eficiente. Versões recentes (v26+) • Foi introduzido o cryptAES256, que é atualmente o padrão mais seguro e recomendado. • Melhor suporte para Web e Mobile, garantindo compatibilidade total entre as plataformas. • Criação de métodos que garantem que a criptografia seja não determinística (adicionando IV – Initialization Vector), tornando ataques por análise de padrão mais difíceis. Qual comando deve ser usado? Para compatibilidade entre Windows, Web e Mobile, a melhor opção atualmente é: Crypt(sDados, sChave, cryptAES256) • cryptAES256: Algoritmo AES-256, seguro e amplamente aceito. • Usar Buffer em vez de String: Melhor para integridade dos dados. • Evitar cryptNone e cryptSimple: São inseguros e obsoletos. • Não usar cryptRSA para criptografia geral: O RSA é assíncrono e mais adequado para troca de chaves do que para criptografar grandes volumes de dados. Exemplo recomendado para Windows, Web e Mobile Criptografando e descriptografando uma string sTexto IS STRING = "MinhaSenhaSuperSecreta" sChave IS STRING = "ChaveForteSegura" sCriptografado IS Buffer = Crypt(sTexto, sChave, cryptAES256) sDescriptografado IS STRING = Uncrypt(sCriptografado, sChave, cryptAES256) Info("Texto Original: " + sTexto) Info("Criptografado: " + BufferToString(sCriptografado, encodeHexa)) Info("Descriptografado: " + sDescriptografado) Criptografando um arquivo (Windows, Web e Mobile) sArquivoOrigem IS STRING = "C:\Dados\relatorio.pdf" sArquivoDestino IS STRING = "C:\Dados\relatorio.crypt" sChave IS STRING = "ChaveSegura123" Crypt(sArquivoOrigem, sChave, cryptAES256, sArquivoDestino) Info("Arquivo criptografado com sucesso!") Resumo Versão Comando recomendado Motivo Antes da v20 Evitar cryptNone, cryptSimple Inseguro e desatualizado v20 – v25 cryptAES128, cryptSecure Melhor segurança, mas AES256 ainda não era padrão v26+ cryptAES256 Melhor segurança, compatível com todas as plataformas Se for necessário garantir compatibilidade entre Webdev, Windev e Windev Mobile, sempre utilize cryptAES256. Essa opção evita problemas de incompatibilidade entre plataformas e garante uma criptografia forte e atualizada. Sim, além do Crypt e do CryptStandard, existem outros comandos no WX (Windev, Webdev e Windev Mobile) relacionados à criptografia. Cada um tem suas particularidades e objetivos, dependendo da necessidade de segurança e compatibilidade entre as plataformas. Lista de Comandos de Criptografia no WX 1. Crypt O comando principal para criptografia de dados. Suporta diversos algoritmos e pode ser usado para criptografar strings, buffers e arquivos. Sintaxe: Crypt(sDados, sChave [, criptografia, cadeia ou buffer]) • Algoritmos suportados: • cryptNone (Sem criptografia, usado apenas para compatibilidade) • cryptSimple (Obsoleto, baixa segurança) • cryptRC5 (Desatualizado) • cryptAES128 (AES-128, seguro) • cryptAES256 (AES-256, mais seguro e recomendado) • cryptRSA (Usado para troca de chaves, não recomendado para grandes volumes de dados) • cryptSecure (Automático, escolhe o mais seguro disponível) 2. CryptStandard Usado para criptografia conforme padrões específicos. Esse comando permite garantir que a criptografia siga padrões aceitos para comunicação segura. Sintaxe: CryptStandard(sDados, sChave, tipoCriptografia [, modo]) • Algoritmos comuns: • cryptAES128 • cryptAES256 • cryptRSA • cryptSHA256 (Usado para hash, não para criptografia reversível) • Permite escolher modos como cryptCBC (Cipher Block Chaining) ou cryptECB (Electronic Codebook). 3. Uncrypt Descriptografa um dado previamente criptografado com Crypt ou CryptStandard. Sintaxe: Uncrypt(sDadoCriptografado, sChave, algoritmo) Exemplo: sTexto IS STRING = "MeuTextoSecreto" sChave IS STRING = "ChaveSegura" sCriptografado IS Buffer = Crypt(sTexto, sChave, cryptAES256) sDescriptografado IS STRING = Uncrypt(sCriptografado, sChave, cryptAES256) Info("Descriptografado: " + sDescriptografado) 4. HashString Cria um hash de uma string, muito útil para armazenar senhas de forma segura. Sintaxe: sHash IS STRING = HashString(sTexto, hashSHA256) • Algoritmos disponíveis: • hashMD5 (obsoleto e inseguro) • hashSHA1 (melhor que MD5, mas ainda fraco) • hashSHA256 (recomendado) • hashSHA512 (mais seguro, mas gera hashes grandes) 5. HashFile Calcula o hash de um arquivo, útil para verificar integridade. Sintaxe: sHashArquivo IS STRING = HashFile("C:\Arquivo.zip", hashSHA256) 6. Encode Codifica uma string ou buffer em diferentes formatos, como Base64 ou Hexadecimal. Sintaxe: sBase64 IS STRING = Encode(sDados, encodeBASE64) 7. Decode Decodifica um dado previamente codificado com Encode. Sintaxe: sTexto IS STRING = Decode(sBase64, encodeBASE64) Resumo: Quando Usar Cada Comando? Comando Uso Principal Plataforma Crypt Criptografia geral (recomendado cryptAES256) Windows, Web e Mobile CryptStandard Para criptografia seguindo padrões internacionais Windows, Web e Mobile Uncrypt Descriptografar dados Windows, Web e Mobile HashString Criar hashes seguros de senhas Windows, Web e Mobile HashFile Verificar integridade de arquivos Windows, Web e Mobile Encode Converter para Base64 ou Hexadecimal Windows, Web e Mobile Decode Reverter conversão Base64 ou Hexadecimal Windows, Web e Mobile Conclusão Se precisar criptografar dados de forma segura e compatível entre Windev, Webdev e Windev Mobile, use Crypt com cryptAES256. Se precisar seguir padrões internacionais, use CryptStandard. Para senhas, prefira HashString com hashSHA256 ou superior. Nas versões 20 era de um jeito E foi evoluindo e se adequando, essas informações poucos levam em consideração e daí a senha no Windev funciona e no Windev Mobile não descripta e acha que tem algo errado e na verdade NÃO usou o comando adequado. Bons estudos Help.Windev.com -- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianobollerhttp://wxinformatica.com.br/
Registered member 7 messages
Posted on February, 08 2025 - 9:22 AM
O comando Crypt em WLanguage é usado para criptografar dados, como textos ou arquivos, com um algoritmo seguro. A sintaxe básica é sResultado = Crypt(sDados, sChave [, criptografia, cadeia ou buffer]). Você pode criptografar strings, arquivos e buffers, e depois descriptografar usando a função Uncrypt. Certifique-se de manter suas chaves de criptografia seguras.