Pokaż wyniki od 1 do 8 z 8
Pomocy w EXCELU!
  1. #1
    Użytkownik Awatar warriorus
    Dołączył
    10.08.2008
    Mieszka w
    Nakło nad Notecią
    Posty
    207
    Wątków
    56
    Siła reputacji
    10

    Domyślnie Pomocy w EXCELU!

    Dostałem zadanie do zrobienia w excelu ale nie za bardzo wiem jak się zabrać za nie! Muszę napisać program w arkuszu do którego podajemy słowo lub zdanie (jakiś tekst) i wpisujemy słowo kluczowe przez które dany ciąg znaków będzie kodowany! Innymi słowy ma być to algorytm Vigenere'a (szyfrowanie z kluczem).
    Kto potrafi lub ma jakiś pomysł przeszukałem już dość dużo ale niestety nie widzę interesujących mnie odpowiedzi!
    Uwaga: To jest stary temat
    Ta dyskusja jest starsza niż 90 dni. Informacje w niej zawarte mogą już nie być aktualne

  2. #2
    Świeżak
    Dołączył
    31.03.2009
    Posty
    1
    Wątków
    0
    Siła reputacji
    7

    Domyślnie Odp: Pomocy w EXCELU!

    Witam!
    Wklej poniższy kod do modułu w VBA Excel'a i w ten sposób będziesz miał dostępne dwie funkcje (w funkcjach użytkownika): "SzyfrowanieVigenere" i "DeszyfrowanieVigenere"
    Kod:
    Option Explicit
    'deklaracja zmiennych globalnych wykorzystywanych w funkcjach
    'szyfrowania i deszyfrowania metodą Vigenere'a
    
    'Jako tablica Vigenere'a posłużyła mi tablica kodów ASCII,
    'a dokładnie znaki od 97 do 122 reprezentujące kolejne małe
    'litery alfabetu łacińskiego od "a" do "z"
    
    Dim k As Integer, i As Byte, j As Byte, wycHasla As String
    Function SzyfrowanieVigenere(TekstJawny As String, haslo As String)
    Dim zmSzyfrogram As String
    'wycinanie i szfrowanie kolejnego znaku z tekstu jawnego.
    'Powtarzaj operację od pierwszego do ostatniego znaku tekstu jawnego
        For k = 1 To Len(TekstJawny)
    'znajdź w pierwszym wierszu numer kolumny, w której znajduję się
    'litera wyciętą z tekstu jawnego i przypisz tą wartość zmiennej "j"
            For j = 0 To 25
                If LCase(Mid(TekstJawny, k, 1)) = Chr(97 + (j Mod 26)) Then Exit For
            Next j
    'jeżeli długość teksu jawnego modulo długość tekstu hasła
    'wynosi zero, wtedy wytnij ostatnią literę z hasła
            If k Mod Len(haslo) = 0 Then
                wycHasla = LCase(Mid(haslo, Len(haslo), 1))
    'w przeciwnym przypadku wycinaj kolejną literę hasła
            Else
                wycHasla = LCase(Mid(haslo, k Mod Len(haslo), 1))
            End If
    'znajdź w pierwszej kolumnie numer wiersza, w którym znajduje się
    'litera wycięta z tekstu hasła i przypisz tą wartość zmiennej "i"
            For i = 0 To 26
                If wycHasla = Chr(97 + (i Mod 26)) Then Exit For
            Next i
    'zwiększ zmienną szyfrogramu o literę pobraną z i-tego wiersza
    'i j-tej kolumny. W ten sposób twórz zakodowany ciąg
            zmSzyfrogram = zmSzyfrogram & Chr(97 + ((i + j) Mod 26))
        Next k
    'zwróć wynik zaszyfrowanego tekstu
        SzyfrowanieVigenere = zmSzyfrogram
    End Function
    Function DeszyfrowanieVigenere(Szyfrogram As String, haslo As String)
    Dim zmTekstJawny As String
    'wycinanie i dekodowanie kolejnego znaku z szyfrogramu.
    'powtarzaj operację od pierwszego do ostatniego znaku szyfrogramu
        For k = 1 To Len(Szyfrogram)
    'jeżeli długość teksu szyfrogramu modulo długość tekstu hasła
    'wynosi zero, wtedy wytnij ostatnią literę z hasła
            If k Mod Len(haslo) = 0 Then
                wycHasla = LCase(Mid(haslo, Len(haslo), 1))
    'w przeciwnym przypadku wycinaj kolejną literę hasła
            Else
                wycHasla = LCase(Mid(haslo, k Mod Len(haslo), 1))
            End If
    'znajdź, w którym wierszu tablicy znajduję się jako pierwsza,
    'litera wycięta z hasła i przypisz ten wiersz pod zmienną "i"
            For i = 0 To 26
                If wycHasla = Chr(97 + (i Mod 26)) Then Exit For
            Next i
    'w znalezionym wierszu znajdź kolumnę zawierającą odpowiednio
    'wyciątą literę z szyfrogramu, nr kolumny przypisz pod zmienną "j"
            For j = 0 To 25
                If LCase(Mid(Szyfrogram, k, 1)) = Chr(97 + ((i + j) Mod 26)) Then Exit For
            Next j
    'zwiększ zmieną tekstu jawnego (odkodowanego) kolejną literę z
    'pierwszego wiersza i "j-tej" kolumny
            zmTekstJawny = zmTekstJawny & Chr(97 + (j Mod 26))
        Next k
    'zwróć wynik odkodowanego tekstu
        DeszyfrowanieVigenere = zmTekstJawny
    End Function
    Funkcje są mojego autorstwa więc spokojnie nikt Ci nie zarzuci plagiatu
    Sam je kiedyś pisałem na zaliczenie, daj znać później jaką tym razem ocenę dostałem
    Algorytm nie jest doskonały, szyfruje tylko litery łacińskie bez jakichkolwiek innych znaków drukowanych i niedrukowanych, ale za to masz komentarze do poszczególnych kroków funkcji. Jak chcesz to możesz go dopracować.

  3. #3
    Użytkownik
    Założyciel Tematu
    Awatar warriorus
    Dołączył
    10.08.2008
    Mieszka w
    Nakło nad Notecią
    Posty
    207
    Wątków
    56
    Siła reputacji
    10

    Domyślnie Odp: Pomocy w EXCELU!

    Dzięki bardzo dzisaij to przetestuję i dam Ci znać jak poszło!

  4. #4
    Użytkownik
    Założyciel Tematu
    Awatar warriorus
    Dołączył
    10.08.2008
    Mieszka w
    Nakło nad Notecią
    Posty
    207
    Wątków
    56
    Siła reputacji
    10

    Domyślnie Odp: Pomocy w EXCELU!

    i dostałem 5 ;D

  5. #5
    Użytkownik
    Dołączył
    07.06.2008
    Posty
    152
    Wątków
    5
    Siła reputacji
    10

    Domyślnie Odp: Pomocy w EXCELU!

    Cytat Zamieszczone przez kyniu79 Zobacz posta
    Funkcje są mojego autorstwa więc spokojnie nikt Ci nie zarzuci plagiatu
    Sam je kiedyś pisałem na zaliczenie, daj znać później jaką tym razem ocenę dostałem
    Algorytm nie jest doskonały, szyfruje tylko litery łacińskie bez jakichkolwiek innych znaków drukowanych i niedrukowanych, ale za to masz komentarze do poszczególnych kroków funkcji. Jak chcesz to możesz go dopracować.
    Twojego autorstwa, a nie jego więc plagiat jest.

  6. #6
    Użytkownik
    Założyciel Tematu
    Awatar warriorus
    Dołączył
    10.08.2008
    Mieszka w
    Nakło nad Notecią
    Posty
    207
    Wątków
    56
    Siła reputacji
    10

    Domyślnie Odp: Pomocy w EXCELU!

    oj się czepiasz zmieniłem pare rzeczy jak mi się podobało nie ma plagiatu ;D to było już dawno

  7. #7
    Świeżak
    Dołączył
    14.03.2010
    Posty
    1
    Wątków
    0
    Siła reputacji
    5

    Domyślnie Odp: Pomocy w EXCELU!

    Świetna funkcja! Szukałem długo czegoś czym mógłbym zakodować hasła, które przechowuje w excelu a teraz już znalazłem. Mam jednak pytanie, jak wprowadzić do tablicy duże litery i znaki specjalne, tak aby można było kodować silniejsze hasła?
    Ostatnio edytowane przez efan82 ; 14.03.2010 o 22:11

  8. #8
    Aktywny Użytkownik Awatar matek3005
    Dołączył
    19.10.2008
    Posty
    363
    Wątków
    3
    Siła reputacji
    11

    Domyślnie Odp: Pomocy w EXCELU!

    załóż nowy temat, a nie odświeżaj starego