Boa noite
Estou tentando criptografar alguns campos.
Uso a função CriptografarSHA256
Agora quando tento gerar aos campos "chave, usuario, maquina" criptografados, não vai.
Alguma dica?
Obrigado
Estou tentando criptografar alguns campos.
Uso a função CriptografarSHA256
- Código:
Public Function CriptografarSHA256(texto As String) As String
Dim sha As Object
Dim bytes() As Byte
Dim hash() As Byte
Dim i As Integer
Dim hashHex As String
' Crie um objeto de hash SHA-256
Set sha = CreateObject("System.Security.Cryptography.SHA256Managed")
' Converta a string em bytes
bytes = StrConv(texto, vbFromUnicode)
' Calcule o hash
hash = sha.ComputeHash_2((bytes))
' Converta o hash em uma representação hexadecimal
For i = LBound(hash) To UBound(hash)
hashHex = hashHex & Right("0" & Hex(hash(i)), 2)
Next i
' Libere o objeto SHA
Set sha = Nothing
' Retorne o hash hexadecimal
CriptografarSHA256 = hashHex
End Function
Uma outra função para gerar chaves
Public Function fncGerarChave() As String
Dim blnUsuario As Boolean
Dim blnMaquina As Boolean
Dim varChave As Variant
Dim objSHA As Object
Dim objBytes() As Byte
Dim objEncodedBytes() As Byte
Dim i As Integer
Dim chaveCriptografada As String
chaveCriptografada = CriptografarSHA256("varChave")
Dim usuarioCriptografado As String
Dim maquinaCriptografada As String
'------------------------------------------------
' Verifica se houve troca de usuário ou de máquina
'------------------------------------------------
blnUsuario = Nz(DLookup("Usuario", "tblRegistro")) = Environ("UserName")
blnMaquina = Nz(DLookup("Maquina", "tblRegistro")) = Environ("ComputerName")
' Crie um objeto para calcular o hash SHA-256
Set objSHA = CreateObject("System.Security.Cryptography.SHA256Managed")
Randomize
'---------------------------------
' Gera nova chave de comprimento 8
'---------------------------------
varChave = Int(Rnd * 99999999)
If Len(varChave) < 8 Then varChave = varChave & String(8 - Len(varChave), "0")
'---------------------------------------------------------------------
' Grava chave, nome do usuário e nome da máquina na tabela tblRegistro
'---------------------------------------------------------------------
If DCount("*", "tblRegistro") = 0 Then
' Insere novo registro
CurrentDb.Execute "INSERT INTO tblRegistro (chave,usuario,maquina) VALUES ('" & varChave & "','" _
& Environ("UserName") & "','" & Environ("ComputerName") & "');"
ElseIf IsNull(DLookup("chave", "tblRegistro")) Or blnUsuario = False Or blnMaquina = False Then
' Atualiza registro existente
CurrentDb.Execute "UPDATE tblRegistro SET chave = '" & varChave & "',usuario ='" _
& Environ("UserName") & "',maquina ='" & Environ("ComputerName") & "';"
End If
' Converte a chave original em bytes
objBytes = StrConv(varChave, vbFromUnicode)
' Calcula o hash SHA-256
Set objSHA = CreateObject("System.Security.Cryptography.SHA256Managed")
objEncodedBytes = objSHA.ComputeHash_2(objBytes)
' Converte os bytes em uma string hexadecimal
Dim resultado As String
resultado = ""
For i = LBound(objEncodedBytes) To UBound(objEncodedBytes)
resultado = resultado & Right("0" & Hex(objEncodedBytes(i)), 2)
Next i
' Retorna a chave criptografada
fncGerarChave = resultado
End Function
Agora quando tento gerar aos campos "chave, usuario, maquina" criptografados, não vai.
Alguma dica?
Obrigado