Página 1 de 1

Criptografia - AES, DES, 3DES, RC2, RC4

Enviado: 29 Jul 2017 11:59
por dbsh

Código: Selecionar todos

//xp, window vista, 2003 server ou posterior
//Capicom.dll - Capicom 2.0 - Capicom.h

#define CAPICOM_HASH_ALGORITHM_SHA1     0
#define CAPICOM_HASH_ALGORITHM_MD2      1
#define CAPICOM_HASH_ALGORITHM_MD4      2
#define CAPICOM_HASH_ALGORITHM_MD5      3
#define CAPICOM_HASH_ALGORITHM_SHA_256  4
#define CAPICOM_HASH_ALGORITHM_SHA_384  5
#define CAPICOM_HASH_ALGORITHM_SHA_512  6

#define CAPICOM_ENCRYPTION_ALGORITHM_RC2  0
#define CAPICOM_ENCRYPTION_ALGORITHM_RC4  1
#define CAPICOM_ENCRYPTION_ALGORITHM_DES  2
#define CAPICOM_ENCRYPTION_ALGORITHM_3DES 3
#define CAPICOM_ENCRYPTION_ALGORITHM_AES  4 // v2.0

#define CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM  0 
#define CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS  1 
#define CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS  2 
#define CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS 3 
#define CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS 4 // AES v2.0 
#define CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS 5 // AES v2.0 

//EX:
PROCEDURE Main()
//criando um Hash como chave de criptografia
Chave    := HashCapiCom( "texto para gerar hash", CAPICOM_HASH_ALGORITHM_SHA_512 )
Cript    := CriptCapicom( "teste de criptografia", Chave, CAPICOM_ENCRYPTION_ALGORITHM_AES, CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS   )
Descript := DescriptCapiCom( Cript, Chave, CAPICOM_ENCRYPTION_ALGORITHM_AES, CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS )

//criando minha propria chave
Chave    := "ADBGB634G"
Cript    := CriptCapiCom( "teste de criptografia", CAPICOM_ENCRYPTION_ALGORITHM_AES, CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS )
Descript := DescriptCapiCom( Cript, Chave, CAPICOM_ENCRYPTION_ALGORITHM_AES, CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS )
RETURN


FUNCTION HashCapicom( sTexto, AlgoritimoHash  )
LOCAL objHash

IF sTexto = NIL
   sTexto := DToS(Date()) + Time()
ENDIF

IF AlgoritimoHash = NIL
   AlgoritimoHash := CAPICOM_HASH_ALGORITHM_SHA_512
ENDIF

objHash := CreateObject("CAPICOM.HashedData.1")
objHash:Algorithm := AlgoritimoHash
objHash:Hash( sTexto )

//? "Hash.......: ", objHash:Value
//? "Hash Tamanh: ", Len(objHash:Value)
//? "Algoritimo.: ", objHash:Algorithm
  
RETURN objHash:Value


FUNCTION CriptCapiCom( sTexto, strHash, AlgoritimoCript, TamanhoChave )
LOCAL objEnc

IF AlgoritimoCript = NIL
   AlgoritimoCript := CAPICOM_ENCRYPTION_ALGORITHM_AES
ENDIF

IF TamanhoChave = NIL
   TamanhoChave := CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
ENDIF

objEnc  := CreateObject("CAPICOM.EncryptedData.1")

objEnc:Algorithm := AlgoritimoCript
objEnc:Algorithm:KeyLength := TamanhoChave
objEnc:SetSecret( strHash )
objEnc:Content := sTexto

//? "Encriptado.: ", objEnc:Encrypt
//? "Encrip Tam.: ", Len(objEnc:Encrypt)
//? "Algoritimo.: ", objEnc:Algorithm
//?

RETURN objEnc:Encrypt


FUNCTION DescriptCapiCom( sTexto, strHash, AlgoritimoCript, TamanhoChave )
LOCAL objDec

IF AlgoritimoCript = NIL
   AlgoritimoCript := CAPICOM_ENCRYPTION_ALGORITHM_AES
ENDIF

IF TamanhoChave = NIL
   TamanhoChave := CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
ENDIF

objDec  := CreateObject("CAPICOM.EncryptedData.1")

objDec:Algorithm := AlgoritimoCript
objDec:Algorithm:KeyLength := TamanhoChave
objDec:SetSecret( strHash )
objDec:Decrypt( sTexto )

//? "Descriptado: ", objDec:Content
//? "Descrip Tam: ", Len(objDec:Content)
//? "Algoritimo.: ", objDec:Algorithm
//?
    
RETURN objDec:Content