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

Jak zaszyfrować stringi w Bascom dla transmisji RS232 między uC?

gothye 20 Kwi 2008 10:54 3780 12
REKLAMA
  • #1 5056332
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    witam

    poszukuje sposobów ,linków do szyfrowania stringów (danych przesyłanych przez rs232 miedzy dwoma uC ) w [c] łatwiej znaleść ,w bascomie niestety zadnego :(
  • REKLAMA
  • #2 5056411
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Najprościej, to chyba przez podstawienie:)
    Masz dwa słowniki i zamieniasz konkretne literki na konkretne literki i w drugą stronę (i nie koniecznie na literski tablica ascii ma 255 kodów;) )
  • REKLAMA
  • #3 5056429
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    hmm ,tak znam ten sposób nosi nazwe szyfrowanie cezara ,troszkę za łatwę czy nie uwarzasz :?: :)
  • #5 5056470
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    ok 100 róznych stringów :)

    chciałbym aby strin wygenerowany przez szyfrator wyglądał mniej wiecej tak :

    Ŕ9VsýŔA™ŚýŔE�ýŔE]%ýŔE�ýŔE�ýŔE]%ýŔEpľąýŔEĺ�ýŔEŕýŔE<FýŔEX©ýŔE„óýŔIŃýŔIŃýŔA™

    wkleiłem z innego tematu
  • #6 5056502
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Hmm no to już dałoby się na upartego złamać:>

    http://www.iaik.tugraz.at/research/vlsi/02_products/03_aes_software_avr/index.php
    (Niestety płatny)
    http://www.crypto.rub.de/imperia/md/content/texte/theses/ms_meiser.pdf
    Okolice strony 40 - wygląda obiecująco:)

    Dodano po 4 [minuty]:

    Zainteresuj się tabelką ze strony 51:> I zobacz, czy gra warta świeczki:)
  • REKLAMA
  • Pomocny post
    #7 5056757
    johny_w
    Poziom 24  
    Posty: 672
    Pomógł: 80
    Ocena: 63
    Witam.
    Kodu w BASCOM nie mam, ale może to ci pomoże.
    https://www.elektroda.pl/rtvforum/topic969322.html
    W jednym z moich postów na dole strony podaję link do stronki, na której bardzo fajnie i przejrzyście opisane jest, jak zastosować szyfrowanie DES. dla kogoś znającego dany język programowania będzie to roboty na jakieś trzy godzinki (łącznie ze zrozumieniem algorytmu).
    Jeśli chcesz - mogę wrzucić tutaj kod w C# do wglądu. Aktualnie dodałem do algorytmu tryb CBC, dzięki czemu dwa takie same ciągi szyfrowane są inaczej.
    Załączniki:
    • Szyfrowanie DES.rar (8.96 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 5057886
    migod
    Poziom 21  
    Posty: 462
    Pomógł: 29
    Ocena: 8
    Polecam algorytm AES, nowszy generacyjnie od poczciwego DES-a, przykładowa implementacja w C http://www.geocities.com/malbrain/aesfast_c.html

    Jest też coś takiego jak TinyECC specjalnie do bezprzewodowych sieci, bazune na TinyOS http://discovery.csc.ncsu.edu/software/TinyECC/

    Szyfr cezara jest zbyt łatwy do przełamania, jeśli rozwiązanie ma być w miarę bezpieczne, to zupełnie nie brałbym tego pod uwagę.
  • REKLAMA
  • #9 5057961
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    a moze posiada ktoś link do AES w bascom :?:

    pozdrawiam
  • #10 5058036
    riddyk
    Poziom 21  
    Posty: 358
    Pomógł: 34
    Ocena: 109
    znając jakiś język bez problemu z innego można to przerobić na ten jaki się zna.

    Druga sprawa sam nie jesteś wstanie wymyślić swojego sposobu, aby coś zaszyfrować. Wykonać parę operacji na stringu w swojej tylko znanej kolejności?
  • #11 5058377
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    jak zrobisz kodowanie, jakieś nawet własne tego typu, że każdy swój string kodujesz za pomocą jakiegoś wielobajtowego unikalnego klucza, gdzie kodowanie polega na cyklicznym wg tego klucza xorowaniu stringów, do tego wpleciesz jeszcze kilka własnych sztuczek,czyli np dodawanie w wybranych miejscach stringu rozbitych na różne pozycje sum kontrolnych czy jeszcze kilku gadżetów to stawiam dużą skrzynkę piwa jeśli znajdziesz kogoś, kto rozkoduje ci ten zaszyfrowany string bez wiedzy n/t twojego klucza oraz wiedzy czy i jakie sumy kontrolne i gdzie wplatasz. Takie proste systemy są czasem dużo leplsze od dużych i ciężkich algorytmów DES AES itp jak na Bascom'a czy może na małe AVRki. A co najważniejsze szybko można je samemu napisać.

    Dodano po 8 [minuty]:

    o przy okazji tak na gorąco strzeliłem przykład takiego prostego ale bardzo skutecznego kodowania (to oczywiście tylko przykład i jak mówię warto go wzbogacić o kilka szczegółów i przetestować jeszcze - ale mam nadzieję, że obrazuje dobrze temat. Jak pisałem do tego zakodowanego stringa dodajesz jeszcze jakieś sumy kontrolne własnej roboty, mozna go jeszcze raz przelecieć kodowaniem w oparciu o drugi klucz i życzę powodzenia w jego rozszyfrowaniu bez znajomości klucza(-y) czy tych sum kontrolnych)

    poniżej obrazek prostego programu:
    Jak zaszyfrować stringi w Bascom dla transmisji RS232 między uC?

    a jeszcze poniżej fragmenty super prostego kodu. Pisane to jest w Delphi więc to będzie pikuś przerobić to na potrzeby Bascoma:

    to klawisz "ZAKODUJ"
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i, j, kluczdl, x,y: Integer;
      c, str, str2, klucz: String;
      b : char;
    begin
      str := Edit1.Text;
      klucz := Edit2.Text;
      kluczdl := Length(klucz);
      j := 1;
      str2 := '';
      for i := 1 to Length(str) do begin
        b := str[i];
        x := ord(b);
        y := ord(klucz[j]);
        y := y - 23;
        c := Chr( x xor y );
        str2 := str2 + c;
        inc(j);
        if j > kluczdl then j := 1;
    
      end;
    
      Edit3.Text := str2;
    
    end;



    a to klawisz "ODKODUJ"
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i, j, kluczdl, x,y: Integer;
      c, str, str2, klucz: String;
      b : char;
    begin
      str := Edit3.Text;
      klucz := Edit2.Text;
      kluczdl := Length(klucz);
      j := 1;
      str2 := '';
      for i := 1 to Length(str) do begin
        b := str[i];
        x := ord(b);
        y := ord(klucz[j]);
        y := y - 23;
        c := Chr( x xor y );
        str2 := str2 + c;
        inc(j);
        if j > kluczdl then j := 1;
    
      end;
    
      Edit4.Text := str2;
    
    end;


    tak więc widać mniej więcej jak można do tego podejść aby było bezpiecznie i aby skutecznie odstraszyć amatorów cudzych gruszek (czyli tych którzy chcą rozkodować)

    pozdrawiam
  • #12 5058886
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2817
    Na AVRFreaks jest AVRCryptoLib za darmo. Do wyboru wiele metod. Kod jest w C, ale dla wytrawnych Bascomowców nie stanowi to chyba problemu
    Załączniki:
    • AVR Crypto Lib.doc (89.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #13 5060411
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    sposób który podał mirekk36 jest świetny staram sie tylko go przełozyc na bascom dopiero zaczynam z delphi :(

Podsumowanie tematu

✨ Dyskusja dotyczy metod szyfrowania stringów przesyłanych przez interfejs RS232 między mikrokontrolerami w języku Bascom. Proponowano proste metody podstawieniowe, takie jak szyfr Cezara, jednak uznano je za zbyt łatwe do złamania. Zasugerowano zastosowanie bardziej zaawansowanych algorytmów kryptograficznych, takich jak DES i AES, z przykładami implementacji w języku C, które można przenieść do Bascom. Wskazano na dostępność biblioteki AVRCryptoLib dla AVR, oferującej różne metody szyfrowania, choć w C. Podkreślono, że dla małych mikrokontrolerów i Bascomu efektywne mogą być także autorskie, lekkie metody szyfrowania oparte na cyklicznym XORowaniu z unikalnym kluczem i dodatkowymi mechanizmami, np. sumami kontrolnymi. Podano linki do materiałów i przykładów, w tym do AES i DES, oraz omówiono kwestie bezpieczeństwa i praktyczności implementacji w środowisku Bascom.
REKLAMA