VBA - Cifra de César

Faça uma pergunta

Nesta dica, vamos ver a implementação em VBA do célebre método de criptografia. Se você não conhece, veja Cifra de César.

Pré-requisito: o código ASCII.


Option Explicit

Sub Main_Caesar()
Dim Ch As String
Ch = Cifra_César("Ave Caesar morituri te salutant", 7)
Debug.Print Ch
Debug.Print Cifra_César(Ch, -7)
End Sub

Function Cifra_César(sTe As String, Número As Long) As String
Dim vT, sG As String, sT As String, i As Long, bA As Byte
Const MAJ As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const NL As Byte = 26
Const DMA As Byte = 65 - NL
Const DMI As Byte = 97 - NL

sT = sTe
If Número < NL And Número > NL * -1 Then
sG = String(NL * 4, " ")
LSet sG = Shift & Shift & Shift
vT = Split(StrConv(sG, vbUnicode), Chr(0))
For i = 1 To Len(sT)
If Mid(sT, i, 1) Like "[a-zA-Z]" Then
bA = Asc(Mid(sT, i, 1))
If Mid(sT, i, 1) = vT(bA - DMA) Then
Mid(sT, i) = vT(bA - DMA + Nbre)
Else
Mid(sT, i) = LCase(vT(bA - DMI + Nbre))
End If
End If
Next i
End If
Cifra_César = sT
End Function

Foto: © Microsoft.
Jean-François Pillou

Jean-François Pillou - Fundador do CCM
Mais conhecido como Jeff, Jean-François Pillou é o fundador do CommentCaMarche.net. Ele também é CEO do CCM Benchmark e diretor digital do Grupo Figaro.

Mais informações sobre a equipe do CCM

Veja também