Encrypt per Access in visualbasic

di il
6 risposte

Encrypt per Access in visualbasic

Ciao Ragazzi sono nuovo e spero di non sbagliare sezione o impostazione del messaggio,

Vi spiego il mio problema, ho utilizzato un codice che mi permette di criptare e decriptare uno specifico campo, funziona perfettamente ma l'unico inconveniente è che nel criptare il campo utilizza codici asci ad esempio codificando un codice fiscale mi dà come risultato
¸©ª¬´©™–g¸—–©––˜¸ siccome lo esporto in xml nell'importazione non riconoscono questi caratteri e creano problemi di accettazione.

vi è un modo che permetta di codificare con caratteri "non ascii"? ho provato a cercare altri comandi da sostituire ad ASC ma non penso che sia questo il problema,
spero di essere stato chiaro vi incollo il codice per vedere se si può modificare per ottenere il risultato richiesto.

grazie a tutti
Option Compare Database
Option Explicit
Const PASSWORD_KEY = "f"
'modificare la chiave con una a piacimento

'================================================
' Function: encrypt
'
' Purpose: To encrypt or decrypt a string using
' a predefined key value stored as
' the constant PASSWORD_KEY. The same
' string encrypted twice won't always
' look the same because the function
' chooses a random starting position
' within the key to encrypt values.
'
' Call: gResult = encryt("Hello World", true)
'
' In: strFull - String containing the
' text to encrypt/decrypt
'
' fEncrypt - Boolean set to TRUE to
' encrypt the string, FALSE
' to decrypt it.
'
' Out: none
'
' Returns: String - The encrypted/decrypted
' value if successful, ""
' otherwise
'
' History: 98/06/10 created by Dima Mnushkin
'
'================================================
Public Function encrypt(strFull As String, _
fEncrypt As Boolean) As String
On Error GoTo Err_encrypt

Dim intInputPos As Integer
Dim intPassKeyPos As Integer
Dim strOutput As String
Dim intTemp As Integer
Dim strStartingPos As String

If strFull = "" Then GoTo Exit_encrypt

' Encrypt a value
If fEncrypt Then
' Initialize the random function
Randomize

' Determine the starting position to use in
' the encryption string
intPassKeyPos = Int(Len(PASSWORD_KEY) * _
Rnd + 1)

' Encrypt the starting position used in
' preparation to storing it in the middle of
' the encrypted result
intTemp = intPassKeyPos + _
Asc(Left(PASSWORD_KEY, 1))
If intTemp > 255 Then intTemp = intTemp - 255
strStartingPos = Chr(intTemp)

' Encrypt the full string
For intInputPos = 1 To Len(strFull)
intPassKeyPos = intPassKeyPos + 1

' Wrap to the beginning of the key if we have
' have used up the last character.
If intPassKeyPos > Len(PASSWORD_KEY) Then
intPassKeyPos = 1
End If

' Add the value of the character to be
' encrypted to the value of the character
' stored at the current position in the key
intTemp = Asc(Mid(strFull, intInputPos, 1) _
) + Asc(Mid(PASSWORD_KEY, _
intPassKeyPos, 1))
If intTemp > 255 Then intTemp = intTemp - 255

' If we are at middle of the result string,
' insert our encrypted starting position so
' we can decrypt this string later.
If CInt(Len(strFull) / 2) + 1 = intInputPos _
Then strOutput = strOutput & strStartingPos

strOutput = strOutput & Chr(intTemp)

Next intInputPos

' Decrypt a value
Else
' Retrieve the encrypted starting position from
' the middle of the string to be decrypted
intPassKeyPos = Asc(Mid(strFull, _
CInt((Len(strFull) - 1) / 2) + 1, 1)) - _
Asc(Left(PASSWORD_KEY, 1))

If intPassKeyPos < 0 Then _
intPassKeyPos = intPassKeyPos + 255

' Decrypt the full string
For intInputPos = 1 To Len(strFull)
intPassKeyPos = intPassKeyPos + 1

If intPassKeyPos > Len(PASSWORD_KEY) Then _
intPassKeyPos = 1

' Decrypt each character by subtracting the
' value of the corresponding character stored
' in the key.
intTemp = Asc(Mid(strFull, intInputPos, 1)) - _
Asc(Mid(PASSWORD_KEY, intPassKeyPos, 1))

If intTemp <= 0 Then intTemp = intTemp + 255

' If we are looking at the middle character,
' ignore it since its the encrypted starting
' position.
If intInputPos = CInt((Len(strFull) - 1) / 2) + _
1 Then
intPassKeyPos = intPassKeyPos - 1

Else
strOutput = strOutput & Chr(intTemp)

End If

Next intInputPos

End If

encrypt = strOutput

Exit_encrypt:
Exit Function

Err_encrypt:
encrypt = ""
MsgBox Error
Resume Exit_encrypt

End Function

6 Risposte

  • Re: Encrypt per Access in visualbasic

    Ciao, ti consiglio di usare un'altro algoritmo di criptazione come Rijndael

    Se cerchi in rete trovi le funzioni di criptazione e decriptazione già fatte e funzionanti.

    Ciao
  • Re: Encrypt per Access in visualbasic

    Rijndael cripta l'intero file ma non uno specifico campo o sbaglio? riesci a darmi un codice che faccia al caso mio? ho cercato ma ne ho trovati di diversi, se volete vi allego il file creato così capirete meglio la funzione, è molto semplice come file.
  • Re: Encrypt per Access in visualbasic

    Altrimenti seè troppo complicato modificare questo codice, sapreste indicarmi un codice che mi permetta di modificare le lettere di una determinata colonna così da poter criptare diversamente,

    basterebbe anche che a comando modificasse le lettere di una colonna

    ad esempio se nella colonna trova: angelo123 dopo aver premuto il tasto "cripta" modifichi il testo in bohfmn234 praticamente sostituisce le lettere aggiungendo un carattere, premendo decripta riporta tutto come prima, andrebbe benissimo anche in questo modo perchè non mi importa la complessità della crittografia ma solo che non sia in chiaro.
    Spero riusciate ad aiutarmi

    grazie
  • Re: Encrypt per Access in visualbasic

    Ciao scusami non stavo monitorando più il thread.
    Con l'algoritmo di Rijndael cripti un testo, poi che il testo sia il contenuto di un campo di database o il contenuto di un file testuale non cambia lo scopo.
  • Re: Encrypt per Access in visualbasic

    Grazie ho cercato un pò in giro ma in vba su access2007 non riconosce il comando Rijndael,
    modificare questo non è facile ma creare l'altra funzione è fattibile?
  • Re: Encrypt per Access in visualbasic

    L'argomento mi interessa molto. Il codice credo che a me vada bene così, ma dato che sono ancora poco esperto non so come farlo funzionare. Spiego: Ho una form Pazienti dove inserisco cognome nome, data di nascita e codice fiscale dei pazienti di una casa di riposo. Vorrei criptarli. Come devo fare ad utilizzare il codice postato?????
    Grazie a tutti quelli che mi dedicheranno un po di tempo!
Devi accedere o registrarti per scrivere nel forum
6 risposte