Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96

    [VB] Problema con funzione inversa...

    Salve a tutti io ho creato una funzione aggiungicar che serve per aggiungere dei caratteri in più in una stringa in base ad una password(si tratta di una funzione da utilizzare in un programma di
    crittografia) che ricevo in input e funziona nel seguente modo:

    Riceve in input il testo e una chiave

    *Analizza il testo per trovare il codice ascii massimo e minimo contenuto nel testo

    *Legge il testo e la chiave carattere per carattere

    *Se il codice ascii della chiave è divisibile per 2 o per 7 allora al testo aggiunge un carattere creato a caso con il codice ascii compreso tra il massimo e il minimo, altrimenti passa al
    carattere successivo.

    [code]
    Public Function aggiungicar(chiave As String, ByVal testo As String) As String
    Dim t As String
    le = Len(testo)
    lc = Len(chiave)
    'analizzo il testo
    maxi = 0
    mini = 255
    For i = 1 To Len(testo)
    va = Asc(Mid$(testo, i, 1))
    If va < mini Then mini = va
    If va > maxi Then maxi = va
    Next


    For i = 1 To le

    If c < lc Then c = c + 1 Else c = 1

    ch = Asc(Mid$(chiave, c, 1)) 'valore chiave
    t = t & Mid$(testo, i, 1) 'lettera testo
    If ch Mod 2 = 0 Or ch Mod 7 = 0 Then

    Randomize Timer
    ca = Int((maxi - mini + 1) * Rnd + mini)
    t = t & Mid$(testo, i, 1)
    t = t & Chr$(ca)

    Else
    t = t & Mid$(testo, i, 1)
    End If
    Next
    aggiungicar=t
    End Function
    [\code]


    E questo codice funziona perfettamente. Il problema è che ora devo creare anche la funzione

    in grado di fare il contrario, ovvero una volta ricevuto il testo con i caratteri in più e la password

    (che deve essere la stessa che è stata usata per la funzione aggiungicar) "ripulisca il testo e

    mi restituisca la stringa di partenza. Io ho creato questa funzione ma non funziona

    correttamente

    [code]
    Public Function toglicar(ByVal chiave As String, ByVal testo As String) As String
    Dim t As String
    le = Len(testo)
    lc = Len(chiave)

    For i = 1 To le

    ii = ii + 1
    If c < lc Then c = c + 1 Else c = 1
    ch = Asc(Mid$(chiave, c, 1)) 'valore letto dalla chiave
    If ch Mod 2 <> 0 And ch Mod 7 <> 0 Then t = t & Mid$(testo, ii, 1)

    Next
    toglicar = t

    End Function
    [\code]

    Ad esempio utilizzando come testo "testo di prova" e come password "prova" ottengo:

    testo di prova
    tfeVstGo ^doi RprRo<va%

    applicando ora la funzione toglicar al testo e utilzzando come password "prova" dovrei riottenere:

    testo di prova

    C'è qualcuno che può darmi una mano???
    Ringrazio anticipatamente chiunque riesca ad aiutarmi

    Ciao, Andrea

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Te l'ho cambiata un attimo:
    codice:
    Public Function AggiungiCar(ByVal Chiave As String, ByVal Testo As String) As String
    Dim Cont2 As Integer
    Dim Cont As Integer
    Dim Car As Integer
    
    Dim VMax As Byte
    Dim VMin As Byte
    
    '--------------------------------
    VMax = 0
    VMin = 255
    For Cont = 1 To Len(Testo)
      Car = Asc(Mid$(Testo, Cont, 1))
      If Car < VMin Then VMin = Car
      If Car > VMax Then VMax = Car
    Next Cont
    '--------------------------------
    
    For Cont = 1 To Len(Testo)
      If Cont2 < Len(Chiave) Then
        Cont2 = Cont2 + 1
      Else
        Cont2 = 1
      End If
      Car = Asc(Mid$(Chiave, Cont2, 1))
      AggiungiCar = AggiungiCar & Mid$(Testo, Cont, 1)
      If Car Mod 2 = 0 Or Car Mod 7 = 0 Then
        Randomize Timer
        AggiungiCar = AggiungiCar & Chr(Int((VMax - VMin + 1) * Rnd + VMin))
      End If
    Next Cont
    End Function
    
    Public Function TogliCar(ByVal Chiave As String, ByVal Testo As String) As String
    Dim Car As Integer
    Dim Cont As Integer
    Dim Cont2 As Integer
    
    For Cont = 1 To Len(Testo)
      If Cont2 < Len(Chiave) Then
        Cont2 = Cont2 + 1
      Else
        Cont2 = 1
      End If
      Car = Asc(Mid$(Chiave, Cont2, 1))
      TogliCar = TogliCar & Mid(Testo, Cont, 1)
      If Car Mod 2 = 0 Or Car Mod 7 = 0 Then
        Cont = Cont + 1
      End If
    Next Cont
    End Function
    Ciao Calem

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96
    Funziona!!!! Grazie!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.