logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Generator kluczy w Java Script, Delphi i Visual Basic.

tzok 13 Lis 2004 19:52 3228 6
REKLAMA
  • #1 983053
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38707
    Pomógł: 3166
    Ocena: 6471
    Potrzebuję napisać funkcję generującą klucz alfanumeryczny na podstawie ciągu znakowego. Funkcja ma być użyta w programie do jego rejestracji, problem polega na tym, aby algorytm funkcji dał się zrealizować zarówno w VisualBasic'u, Delphi jak i w JavaScript'cie. Algorytm nie musi być specjalnie skomplikowany, jako że będzie jawny, nie musi też dać się odtworzyć oryginalny ciąg na podstawi klucza. Klucz ma mieć ograniczoną długość, najlepiej niezależną od długości ciągu wyjściowego.
    Po prostu nie mam dobrego pomysłu na taki algorytm. Obecnie wygląda on tak, że jest ciąg RegName, z niego pobierane są kloejne znaki i przetwarzane w/g wzoru RegVal=(RegVal+(kodznaku(RegName[i])*2+128))%1e6
    a następnie każdej z cyfr jest przyporządkowywany znak o kodzie w/g wzoru (cyfra*2+kodznaku('A')).

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 983577
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Wszystkie podstawowe operacje matematyczne i logiczne da się zrealizować w tych językach więc nie powinno być problem. Udałyby się chyba także 'zaawansowane' operacje matematyczne (jak trygonometria, logarytmy itp) na liczbach zmienno przecinkowych, ale nie dam głowy za to.
  • REKLAMA
  • #3 983633
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38707
    Pomógł: 3166
    Ocena: 6471
    Głównie chodzi mi o jakiś pomysł na algorytm, mój zupełnie niepotrzebnie operuje na dużych liczbach a wynikowy klucz jest krótki...
    JavaScriptu nie znam, miałem spore problemy z odczytywaniem kodów ASCII znaków czy wykonaniem dzielenia całkowitego ale jakoś się doszukałem potrzebnych poleceń, więc myślę, że powinienem sobie poradzić z realizacją dowolnego algorytmu. Na razie mam tylko swój i z programu GoldWave... ale to trochę "nie ładnie" było by go wykorzystać ;)
  • REKLAMA
  • #4 984354
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    Luźne uwagi:
    -termin z kryptografii: „funkcja skrótu”,
    -jeśli będzie to przepisywane przez człowieka problemem jest rozróżnienie litery „O” od cyfry „0”, podobnie „l”, „I”, „1” (małe „L”, wielkie „i”, cyfra „1”),
    -wygodne i jednoznaczne będą liczby szesnastkowe, łatwo zamienić dowolny bajt w dwie takie cyfry.
    -mam jakiś ciąg znaków (np. początek Inwokacji) o długości takiej jak chcesz (dokładniej połowie bo zamienimy to potem na hex), po kolei do każdego dodaję albo XORuję kolejne znaki ciągu który chcę zaplątać. Ewentualnie kilkukrotnie by wykorzystać wszystkie znaki obu. Na koniec dodałbym jeszcze coś do kontroli poprawności, choćby sumę.
  • REKLAMA
  • #5 984982
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38707
    Pomógł: 3166
    Ocena: 6471
    Mógłbym prosić o przykład algorytmu, choćby w "pseudokodzie" albo w dowolnym języku wysokiego poziomu?
    "Hasło" nie będzie przepisywane ręcznie - tzn. będzie możliwość skopiowania go i wklejenia.
    Napisałem kilka programów i chcę wiedzieć ile ludzi z nich korzysta, wprowadziłem więc "wymóg" rejestracji, jak do tej pory odbywała się ona ręcznie - trzeba było wysłać do mnie maila a ja odsyłałem plik - klucz. Algorytm generowania klucza był i ma pozostać jawny - jak ktoś, chce i się zna to może sam sobie wygenerować klucz i "zarejestrować" program. Takie założenie ma pozostać, jednocześnie algorytm ma być na tyle złożony, żeby nikomu się specjalnie nie chciało pisać własnego keygena czy generować klucz na kartce. Ma wpisać swoje dane do formularza na stronie a skrypt ma mu wygenerować klucz, który wklei do okienka w programie. Jednocześnie skrypt ma przesłać dane z formularza na mój adres e-mail.
  • #6 985102
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    i=0
    s=0
    h=’litwoojczyznomoja’
    k=max(len(h), len(z))
    while i<k
    . b= h[i mod len(h)] xor z[i mod len(z)]
    . h[ i mod len(h)]= b
    . s=(s+b) mod 256
    h=h+s

    i=0
    while i<len(h)
    . b=h[i]>>4+’0’
    . if b>’9’ b=b+’A’-‘0’
    . pisz(b)
    . b=h[i] mod 16+’0’
    . if b>’9’ b=b+’A’-‘0’
  • #7 990238
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38707
    Pomógł: 3166
    Ocena: 6471
    Dzięki :!: tylko ten while to for ;) bo nigdzie nie zwiększasz i... no i czemu dodajesz liczbę do tablicy znaków/stringa (h=h+s)? i czym jest z (źródłem klucza)?

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia funkcji generującej klucz alfanumeryczny na podstawie ciągu znakowego, który ma być implementowalny w językach Visual Basic, Delphi oraz JavaScript. Klucz ma mieć ograniczoną, stałą długość niezależną od długości wejściowego ciągu i nie musi umożliwiać odtworzenia oryginalnego tekstu. Proponowane podejścia obejmują wykorzystanie podstawowych operacji matematycznych i logicznych dostępnych we wszystkich trzech językach, w tym operacji XOR na znakach ciągów oraz sum kontrolnych. Zwrócono uwagę na problemy z rozróżnianiem podobnych znaków (np. 'O' i '0', 'l', 'I', '1') oraz na wygodę stosowania reprezentacji szesnastkowej dla jednoznaczności klucza. Przykładowy algorytm w pseudokodzie wykorzystuje iteracyjne XOR-owanie znaków dwóch ciągów, sumę modulo 256 oraz konwersję wyników na znaki alfanumeryczne, co ułatwia implementację i zapewnia prostą, jawnie znaną funkcję skrótu. Autor podkreśla, że klucz nie będzie wpisywany ręcznie, lecz kopiowany i wklejany, a generowanie klucza ma być zautomatyzowane na stronie internetowej wraz z przesłaniem danych rejestracyjnych na adres e-mail.
Wygenerowane przez model językowy.
REKLAMA