Entendendo DES e 3DES
DES é um algoritmo de criptografia padrão que utiliza criptografia de chave simétrica, com uma chave de 8 bytes. O 3DES, ou Triple DES, é uma transição para o AES, usando uma chave dupla de 16 bytes (K = KL || KR) para criptografar ou descriptografar blocos de 8 bytes de texto claro, aplicando o algoritmo DES três vezes. A fórmula é Y = DES(KL[DES-1(KR[DES(KL[X])])]) para criptografia e X = DES-1(KL[DES(KR[DES-1(KL[Y])])]) para descriptografia. O 3DES é amplamente utilizaod em cartões IC e CPU por sua segurança.
Suporte a 3DES no Plugin Web para Cartões IC
O plugin web para cartões IC da Youwo Tech suporta DES e 3DES, podendo ser usado independentemente ou integrado com cartões IC. Por ser baseado em algoritmos padrão, os dados criptografados podem ser descriptografados em outros dispositivos, garantindo compatibilidade.
Interfaces para DES e 3DES
O plugin oferece funções específicas para criptografia e descriptografia. A função principal é:
Des(DesData, DesDataFormat)
Essa função é configurada por propriedades adicionais:
- DesDir: Direção da criptografia - 0: nenhuma, 1: criptografar, 2: descriptografar.
- DesMode: Modo de processamento dos dados - 0: dados originais, 1: inversão dos dados, 2: dados originais concatenados com sua inversão.
- DesKey: Chave para DES (8 bytes) ou 3DES (16 bytes).
- DesKeyMode: Formato da chave - 0: string hexadecimal, 1: string comum.
Os parâmetros são: DesData (dados a processar) e DesDataFormat (0 para string hexadecimal, 1 para string comum). O retorno é tratado por uma função de callback.
Exemplo de Criptografia em JavaScript
function startEncryption() {
var chaveSecreta = "11223344556677889900AABBCCDDEEFF"; // Chave de 16 bytes para 3DES
var dadosClaro = "1234567812345678";
var modoProcessamento = 0;
rfidreader.DesDir = 1; // Criptografar
rfidreader.DesMode = modoProcessamento;
rfidreader.DesKey = chaveSecreta;
rfidreader.DesKeyMode = 0; // Formato hexadecimal
rfidreader.Des(dadosClaro, 0);
}
Para descriptografar, altere DesDir para 2 e use o mesmo código. A resposta é capturada assim:
rfidreader.onResult(function(resultado) {
if (resultado.FunctionID === 22 && resultado.Result > 0) {
var dadosCriptografados = resultado.strData;
// Processar os dados
} else {
console.error("Falha na operação");
}
});
Integração com Cartões IC
Ao trabalhar com cartões IC, é possível criptografar ou descriptografar dados durante a leitura ou escrita, otimizando o processo. Funções como M1ReadBlock, M1WriteBlock, M1ReadSector e M1WriteSector suportam operações DES/3DES simultâneas, controladas pelas mesmas propriedades (DesDir, DesMode, DesKey, DesKeyMode).
Para cartões CPU, o plugin facilita cálculos como a autenticação de chaves usando 3DES em números aleatórios, essencial em muitas aplicações de segurança.