SHA256

Segue uma aplicação do SHA256 para geração de hashs em cadeia para validação de dados em uma planilha qualquer.
Basta criar um módulo no ambiente de desenvolvedor do Excel (Alt+F11) e colar o código abaixo. Este código habilitará uma função de criptografia SHA256. Para utilizar esta função, após código inserido em um módulo, basta digitar em uma célula qualquer “=HASH_SHA256_RnC()” e selecionar a célula que deseja criar uma hash.

A seguir, disponibilizo o download com o código aberto de uma planilha pronta. Lembre de habilitar a macro do Excel!

Código SHA256 a ser copiado e colado em um módulo:

Option Explicit
Public Function HASH_SHA256_RnC(ByVal sInput As String) As String
    HASH_SHA256_RnC = SHA256(sInput)
End Function
Public Function SHA256(sInput As String, Optional bB64 As Boolean = 0) As String
    Dim Encoder As Object
    Set Encoder = CreateObject("System.Text.UTF8Encoding")
    Dim Encoder_SHA256 As Object
    Set Encoder_SHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")
    Dim TextToHash() As Byte
    TextToHash = Encoder.GetBytes_4(sInput)
    
    Dim bytes() As Byte
    bytes = Encoder_SHA256.ComputeHash_2((TextToHash))
    
    If bB64 = True Then
        SHA256 = ConvToBase64String(bytes)
    Else
        SHA256 = ConvToHexString(bytes)
    End If
    
    Set Encoder = Nothing
    Set Encoder_SHA256 = Nothing

End Function
Public Function ConvToBase64String(vIn As Variant) As Variant
    Dim oD As Object
    Set oD = CreateObject("MSXML2.DOMDocument")
      With oD
        .LoadXML "<root />"
        .DocumentElement.DataType = "bin.base64"
        .DocumentElement.nodeTypedValue = vIn
      End With
    ConvToBase64String = Replace(oD.DocumentElement.Text, vbLf, "")
    
    Set oD = Nothing
    
End Function
Public Function ConvToHexString(vIn As Variant) As Variant
    Dim oD As Object
    Set oD = CreateObject("MSXML2.DOMDocument")
      With oD
        .LoadXML "<root />"
        .DocumentElement.DataType = "bin.Hex"
        .DocumentElement.nodeTypedValue = vIn
      End With
    ConvToHexString = Replace(oD.DocumentElement.Text, vbLf, "")
    
    Set oD = Nothing
End Function