CRIPTOGRAFIA

JPAULO101 17/02/2011 12:04:18
#365737
Olá pessola blz. Olha venho novamente pedir ajuda do veras aqui, estou usando uma classe para criptografar uma senha, mais as informação são gravadas em um arquivo ini, pois ainda não fiz algo para gravar no ini os dados criptografados. Alguém poderia mim ajuda. Agradeço muito.

Class

Public Function CriptSenha(Psenha As String) As Variant
Dim v_sqlerrm As String
Dim SenhaCript As String
Dim var1 As String
Const MIN_ASC = 32
Const MAX_ASC = 126
Const NUM_ASC = MAX_ASC - MIN_ASC + 1

chave = 2001 [ô][ô]qualquer nº para montar o algorítimo da criptografia
Dim offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer

to_text = [Ô][Ô]
offset = NumericPassword(chave)
Rnd -1
Randomize offset
str_len = Len(Psenha)
For i = 1 To str_len
ch = Asc(Mid$(Psenha, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch + offset) Mod NUM_ASC)
ch = ch + MIN_ASC
to_text = to_text & Chr$(ch)
End If
Next i

CriptSenha = to_text
End Function

Private Function NumericPassword(ByVal password As String) As Long
Dim value As Long
Dim ch As Long
Dim shift1 As Long
Dim shift2 As Long
Dim i As Integer
Dim str_len As Integer

str_len = Len(password)
For i = 1 To str_len
[ô] Adiciona a próxima letra
ch = Asc(Mid$(password, i, 1))
value = value Xor (ch * 2 ^ shift1)
value = value Xor (ch * 2 ^ shift2)

[ô] Change the shift offsets.
shift1 = (shift1 + 7) Mod 19
shift2 = (shift2 + 13) Mod 23
Next i
NumericPassword = value
End Function

Gravar e Ler os dos dados no arquivo ini

Private Sub LoadData()

LocalServidor = PegaStrDoIni([Ô]SYSServidorLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
LocalPorta = PegaStrDoIni([Ô]SYSPortaLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
LocalUsuario = PegaStrDoIni([Ô]SYSUsuarioLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
LocalSenha = PegaStrDoIni([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
LocalCaminho = PegaStrDoIni([Ô]SYSCaminhoLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])


txt_Servidor.Text = LocalServidor
txt_Porta.Text = LocalPorta
txt_Usuario.Text = LocalUsuario
txt_Senha.Text = LocalSenha
txt_Caminho.Text = LocalCaminho

End Sub

Private Sub WiretData()

Call WriteINI([Ô]SYSServidorLocal[Ô], [Ô]Valor[Ô], txt_Servidor.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
Call WriteINI([Ô]SYSPortaLocal[Ô], [Ô]Valor[Ô], txt_Porta.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
Call WriteINI([Ô]SYSUsuarioLocal[Ô], [Ô]Valor[Ô], txt_Usuario.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
Call WriteINI([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], txt_Senha.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
Call WriteINI([Ô]SYSCaminhoLocal[Ô], [Ô]Valor[Ô], txt_Caminho.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])

Call WriteINI([Ô]SysCompacFormat[Ô], [Ô]Valor[Ô], FormaCompac, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])

End Sub
MARCELO.TREZE 17/02/2011 12:50:56
#365746
eu acho que voce nao esta sabendo usar a funcao

entao vamos la

primeiro nao cole a funcao em um classmodule mas sim em um module

o codigo completo incluindo a escrita e leitura em arquivo ini e este:

[ô]****************** INICIO leitura e escrita em arquivo INI 
Declare Function WritePrivateProfileString Lib [Ô]kernel32[Ô] Alias [Ô]WritePrivateProfileStringA[Ô] (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function GetPrivateProfileString Lib [Ô]kernel32[Ô] Alias [Ô]GetPrivateProfileStringA[Ô] (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Ret As String

Public Sub GravarINI(filename As String, Section As String, Key As String, Text As String)
WritePrivateProfileString Section, Key, Text, filename
End Sub

Public Function LerINI(filename As String, Section As String, Key As String)
Ret = Space$(255)
RetLen = GetPrivateProfileString(Section, Key, [Ô][Ô], Ret, Len(Ret), filename)
Ret = Left$(Ret, RetLen)
ReadINI = Ret
End Function



Public Function CriptSenha(Psenha As String) As Variant
Dim v_sqlerrm As String
Dim SenhaCript As String
Dim var1 As String
Const MIN_ASC = 32
Const MAX_ASC = 126
Const NUM_ASC = MAX_ASC - MIN_ASC + 1

chave = 2001 [ô][ô]qualquer nº para montar o algorítimo da criptografia
Dim offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer

to_text = [Ô][Ô]
offset = NumericPassword(chave)
Rnd -1
Randomize offset
str_len = Len(Psenha)
For i = 1 To str_len
ch = Asc(Mid$(Psenha, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch + offset) Mod NUM_ASC)
ch = ch + MIN_ASC
to_text = to_text & Chr$(ch)
End If
Next i

CriptSenha = to_text
End Function


Public Function DeCriptSenha(Psenha As String) As Variant

Dim v_sqlerrm As String
Dim SenhaCript As String

Dim var1 As String

Const MIN_ASC = 32 [ô] Space.
Const MAX_ASC = 126 [ô] ~.
Const NUM_ASC = MAX_ASC - MIN_ASC + 1

chave = 2001 [ô][ô]qualquer nº para montar o algorítimo da criptografia
Dim offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer

to_text = [Ô][Ô]
offset = NumericPassword(chave)
Rnd -1
Randomize offset
str_len = Len(Psenha)
For i = 1 To str_len
ch = Asc(Mid$(Psenha, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch - offset) Mod NUM_ASC)
If ch < 0 Then ch = ch + NUM_ASC
ch = ch + MIN_ASC
to_text = to_text & Chr$(ch)
End If
Next i

DeCriptSenha = to_text

End Function


Private Function NumericPassword(ByVal password As String) As Long
Dim value As Long
Dim ch As Long
Dim shift1 As Long
Dim shift2 As Long
Dim i As Integer
Dim str_len As Integer

str_len = Len(password)
For i = 1 To str_len
[ô] Adiciona a próxima letra
ch = Asc(Mid$(password, i, 1))
value = value Xor (ch * 2 ^ shift1)
value = value Xor (ch * 2 ^ shift2)

[ô] Change the shift offsets.
shift1 = (shift1 + 7) Mod 19
shift2 = (shift2 + 13) Mod 23
Next i
NumericPassword = value
End Function


para usar em seu arquivo ini e facil veja

para criptografar seria ssim

Private Sub GravarDados()
[ô] para gravar seria assim
[ô] GravarINI([Nome_do_arquivo_ini], [sessao], [chave], [texto]

GravarINI App.Path & [Ô]\CompacSystem.ini[Ô], [Ô]SYSServidorLocal[Ô], [Ô]Valor[Ô], txt_Servidor.Text
GravarINI App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSPortaLocal[Ô], [Ô]Valor[Ô], txt_Porta.Text
GravarINI App.Path & [Ô]\CompacSystem.ini[Ô], [Ô]SYSUsuarioLocal[Ô], [Ô]Valor[Ô], txt_Usuario.Text
GravarINI App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], CriptSenha(txt_Senha.Text)
GravarINI App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSCaminhoLocal[Ô], [Ô]Valor[Ô], txt_Caminho.Text
GravarINI App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SysCompacFormat[Ô], [Ô]Valor[Ô], FormaCompac

End Sub


para ler estes dados descriptografando seria assim


Private Sub LoadData()
[ô] para ler seira assim
LerINI ([nome_do_arquivo_ini],[sessao] , [chave})

LLocalServidor = LerINI(App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSServidorLocal[Ô], [Ô]Valor[Ô])
LocalPorta = LerINI(App.Path & [Ô]\CompacSystem.ini[Ô][Ô]SYSPortaLocal[Ô], [Ô]Valor[Ô])
LocalUsuario = LerINI(App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSUsuarioLocal[Ô], [Ô]Valor[Ô])
LocalSenha = DeCriptSenha( LerINI(App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô]))
LocalCaminho = LerINI(App.Path & [Ô]\CompacSystem.ini[Ô],[Ô]SYSCaminhoLocal[Ô], [Ô]Valor[Ô])


txt_Servidor.Text = LocalServidor
txt_Porta.Text = LocalPorta
txt_Usuario.Text = LocalUsuario
txt_Senha.Text = LocalSenha
txt_Caminho.Text = LocalCaminho

End Sub


veja bem fiz algumas alteracoes apenas para melhorar o entendimento

veja se funciona ao contento

JPAULO101 17/02/2011 16:20:19
#365792
Grande Marcelo Blz. Olha já tenho essa função em modulo, o sistema já ler e gravar normal, mais seu a função de criptografia e descriptografia, gostaria de acrescentar essa função para criptografar a senha grando gravar.

declarei as seguintes variáveis

Dim LocalCode As String, LocalNome As String
Dim LocalServidor As String, LocalUsuario As String, LocalSenha As String, LocalCaminho As String, LocalPorta As String
Dim Diretorio As String, PastaDescarga As String, PastaEnvio As String, PastaBackup As String


Gostaria de colocar a função de criptografia e descriptografia apenas nessas linhas.

LocalSenha = PegaStrDoIni([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô])
Call WriteINI([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], txt_Senha.Text, App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô]

Agradeço
MARCELO.TREZE 17/02/2011 16:38:15
#365794
Resposta escolhida
assim colega

LocalSenha = DeCriptSenha(PegaStrDoIni([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô], App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô]))
Call WriteINI([Ô]SYSSenhaLocal[Ô], [Ô]Valor[Ô],CriptSenha(txt_Senha.Text), App.Path + [Ô]\[Ô] + [Ô]CompacSystem.ini[Ô]
JPAULO101 17/02/2011 19:18:01
#365816
Agora sim, Muito obrigado Mercelo.
Tópico encerrado , respostas não são mais permitidas