[bash] Kryptografia
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
[bash] Kryptografia
Witam dostałem do napisania program na zaliczenia, który po wetknięciu w gniazdo pendrajwa odczytuje plik z niego, a z pliku haszyfrowane haslo i porownuje z zadanym z listy.
Moje pytanie brzmi czy jest jakas wbudowana funkcja do szyfrowania?? I jak tego uzywac??
Z gory dziekuje i pozdrawiam
Moje pytanie brzmi czy jest jakas wbudowana funkcja do szyfrowania?? I jak tego uzywac??
Z gory dziekuje i pozdrawiam
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Bash, jak można się było spodziewać, nie posiada wbudowanej funkcji do szyfrowania - trzeba się posłużyć zewnętrznymi programami. Wszystko zależy od tego, jakiego algorytmu szyfrującego chcemy użyć. Do szyfrowania można wykorzystać GPG, do obliczania funkcji haszujących można użyć programów md5sum, sha1sum (czy ogólnie shaxsum).
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
a czy przypadkiem md5sum nie oblicza sumy kontrolnej pliku??
jak ta funkcja zahaszowac ciag znakow????
jak ta funkcja zahaszowac ciag znakow????
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Kod: Zaznacz cały
$ echo -n "Ala ma kota" | md5sum
91162629d258a876ee994e9233b2ad87 -
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
@el.pescado a mam pytanie o co chodzi z tym minusem na koncu ??
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Ten minus oznacza, że dane były czytane ze standardowego wejścia, w odróżnieniu od pliku. W tym ostatnim przypadku w miejsce minusa pojawi się nazwa pliku.
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
Witam podrąże jeszcze temat. a co z funkcja base64 mozna przy jej pomocy zaszyfrowac / odszyfrowac ciag znaków z tym ze.
http://pl.wikipedia.org/wiki/Base64#Kodowanie
w łatwy sposób można obliczyć jaki ciąg znaków został zaszyfrowany.
wiec czy lepiej użyć md5sum czy base64 ???
http://pl.wikipedia.org/wiki/Base64#Kodowanie
w łatwy sposób można obliczyć jaki ciąg znaków został zaszyfrowany.
wiec czy lepiej użyć md5sum czy base64 ???
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
W repozytoriach nie ma chyba żadnego programu do kodowania base64, można poszukać czegoś np. na freshmeat, albo napisać skrypt w perlu czy php.
W każdym razie, nazywanie tego szyfrowaniem jest trochę na wyrost - to po prostu kodowanie. Mając tekst zakodowany base64, bez problemu można otrzymać tekst wyjściowy.
Natomiast w przypadku md5, na wyjściu otrzymamy tzw. skrót wiadomości, na którego podstawie nie można obliczyć oryginalnej wiadomości. tak więc, dysponując np. dwoma skrótami haseł, można porównać, czy hasła są takie same (z dużym prawdopodobieństwem), natomiast nie można odczytać żadnego z nich.
Base64 ma zupełnie inne zastosowanie. Chcąc przesłać dowolne dane binarne (obraz, dźwięk), przez medium przeznaczone do przesyłania danych tekstowych (np. poczta elektroniczna), trzeba przetworzyć dane binarne w jakąś tekstową reprezentację (żeby np. niedrukowalne znaki kontrolne niczego nie popsuły). I w takim celu stosuje się m.in. base64.
Do haseł bym, w każdym razie, base64 nie używał, poza specyficznymi przypadkami. Pozostaje wybór między funkcją haszującą, jak MD5 czy SHA, a "normalnym" szyfrem.
W każdym razie, nazywanie tego szyfrowaniem jest trochę na wyrost - to po prostu kodowanie. Mając tekst zakodowany base64, bez problemu można otrzymać tekst wyjściowy.
Natomiast w przypadku md5, na wyjściu otrzymamy tzw. skrót wiadomości, na którego podstawie nie można obliczyć oryginalnej wiadomości. tak więc, dysponując np. dwoma skrótami haseł, można porównać, czy hasła są takie same (z dużym prawdopodobieństwem), natomiast nie można odczytać żadnego z nich.
Base64 ma zupełnie inne zastosowanie. Chcąc przesłać dowolne dane binarne (obraz, dźwięk), przez medium przeznaczone do przesyłania danych tekstowych (np. poczta elektroniczna), trzeba przetworzyć dane binarne w jakąś tekstową reprezentację (żeby np. niedrukowalne znaki kontrolne niczego nie popsuły). I w takim celu stosuje się m.in. base64.
Do haseł bym, w każdym razie, base64 nie używał, poza specyficznymi przypadkami. Pozostaje wybór między funkcją haszującą, jak MD5 czy SHA, a "normalnym" szyfrem.
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
Witam mam jeszcze pytanie jak uzyć tego skryptu
http://search.cpan.org/src/MATTBM/Crypt ... fish_PP.pm
ponizej opis
http://search.cpan.org/~mattbm/Crypt-Bl ... fish_PP.pm
w programie z bash-a ?? jak przekazac zmienne do tych metod i jak uzskac wynik ktore one zwracaja??
pzdr.
http://search.cpan.org/src/MATTBM/Crypt ... fish_PP.pm
ponizej opis
http://search.cpan.org/~mattbm/Crypt-Bl ... fish_PP.pm
w programie z bash-a ?? jak przekazac zmienne do tych metod i jak uzskac wynik ktore one zwracaja??
pzdr.
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Trzeba napisać pomocniczy skrypt w Perlu, coś w stylu:
Taki program, uruchomiony poleceniem "perl nazwaskryptu.pl klucz tekst" wypisze na standardowe wyjście zaszyfrowany tekst. Można oczywiście zmodyfikować skrypt, tak by czytał dane ze standardowego wejścia, ale ogólna idea jest ta sama.
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
$blowfish=new Crypt::Blowfish_PP($ARGV[0]);
print $blowfish->encrypt($ARGV[1]);
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
@el.pescado a jak ta wartosc przypisac do zmiennej??
szczerze mowiąc niebardzo wiem co i jak
Kod: Zaznacz cały
ZMIENNA=$blowfish->encrypt($ARGV[1]);
echo $ZMIENNA
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Tworzysz pomocniczy skrypt w perlu, np: blowfish.pl, w którym wpisujesz:
Następnie, w bashu, wywołujesz ten skrypt perlowy:
Wtedy w bashowej zmiennej MSG mamy zaszyfrowaną wiadomość. Zmienna $blowfish jest zmienną perla, więc nie można jej odczytać w bashu.
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
$blowfish=new Crypt::Blowfish_PP($ARGV[0]);
print $blowfish->encrypt($ARGV[1]);
Kod: Zaznacz cały
MSG=`perl blowfish.pl "tajny_klucz" "wiadomość"`
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
el.pescado zrobiłem tak ( dodałem to "my" bo wypatrzyłem to w pliku blowfish.t )
z tym ze po odpaleniu skryptu bash dostaje error
can't call method encrypt on empty value
no niebardzo wiem co i jak tzn wiem ze zmienna $bf jest pusta ale dlaczego ??
może trzeba jakoś dodać ten plik "Blowfish_PP.pm"
do tego skryptu pomocnieczego ???
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
my $bf=new Crypt::Blowfish_PP($ARGV[0]);
print $bf->encrypt($ARGV[1]);
can't call method encrypt on empty value
no niebardzo wiem co i jak tzn wiem ze zmienna $bf jest pusta ale dlaczego ??
może trzeba jakoś dodać ten plik "Blowfish_PP.pm"
do tego skryptu pomocnieczego ???
- NoName_1990
- Sędziwy Jeż
- Posty: 59
- Rejestracja: 28 lut 2007, 18:01
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86
Odp: [bash] Kryptografia
skowron-line, myślę, że nie chodzi o to, że $bf jest puste (bo nie jestskowron-line pisze:el.pescado zrobiłem tak ( dodałem to "my" bo wypatrzyłem to w pliku blowfish.t )z tym ze po odpaleniu skryptu bash dostaje errorKod: Zaznacz cały
use Crypt::Blowfish_PP; my $bf=new Crypt::Blowfish_PP($ARGV[0]); print $bf->encrypt($ARGV[1]);
can't call method encrypt on empty value
no niebardzo wiem co i jak tzn wiem ze zmienna $bf jest pusta ale dlaczego ??
może trzeba jakoś dodać ten plik "Blowfish_PP.pm"
do tego skryptu pomocnieczego ???

-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
@NoName_1990 zrobilem tak jak mowiles podstawilem wartosci pod zmienne
i teraz mam
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
my $bf=new Crypt::Blowfish_PP('klucz');
print $bf->encrypt('wiadomosc');
Kod: Zaznacz cały
Can't use method "encrypt" on an undefined value at line 3
print $bf->encrypt( 'wiadonosc');
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Zrób:
Powinno spowodować wypisanie większej ilości informacji podczas wykonania programu.
P.S. moduł Crypt::Blowfish_PP masz?
Kod: Zaznacz cały
#!/usr/bin/perl -w;
use Crypt::Blowfish_PP;
use strict;
my $bf=new Crypt::Blowfish_PP('klucz');
print $bf->encrypt('wiadomosc');
P.S. moduł Crypt::Blowfish_PP masz?
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
parametr -w nic nie pokazal ( nic co mozna by byc pomocne )
el.pescado pisze:Zrób:Kod: Zaznacz cały
#!/usr/bin/perl -w; P.S. moduł Crypt::Blowfish_PP masz?[/quote] Mam te pliki co byly w paczce do ktorej link dalem kilka postow wyzej - CHANGELOG - MANIFEST - README - Makefile.PL - Blowfish_PP.pm - t [ dir ] - blowfish.t i tylko tyle wczesniej wyczytalem ze plik Blowfish_PP.pm musi byc w folderze crypto ale to nic nie daje p.s A może ktos pokaze jakis skrypt perl odpalany pod bashem z parametrem @NoName_1990 to napewno zmienna $bf poniewaz napisalem najbanalniejszy skrypt przekazujacy parametr i wyswietlajacy i dziala tak jak powinien ze zmienna tablicowa $ARGV[0]
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Moduły perlowe najlepiej instalować za pomocą CPAN.Mam te pliki co byly w paczce do ktorej link dalem kilka postow wyzej
Kod: Zaznacz cały
sudo cpan
... za pierwszym razem program zapyta o konfigurację tego i owego ...
> install Crypt::Blowfish_PP
> quit[/quote]
Udało mi się uruchomić ten (mój;D) skrypt. W sumie dobrze jest poczytać dokumentację: [quote]The key is anywhere between 64 and 448 bits (8 and 56 bytes),[/quote]
To jest powód, dla którego nie działa - "klucz" to nie jest 8 bajtów.
[quote]encrypt(block)
The encrypt() method uses the initialised blowfish object to encrypt [b]8 bytes[/b] of data of the string passed to it. It returns the encrypted block.[/quote]
-
- Piegowaty Guziec
- Posty: 15
- Rejestracja: 01 paź 2007, 15:22
- Płeć: Mężczyzna
- Wersja Ubuntu: 7.10
- Środowisko graficzne: GNOME
Odp: [bash] Kryptografia
A uruchomilem skrytp z katalogu "t"
i idac tym tropem napisalem skrypt
który dziala elegancko
ale jak juz odpale ten wczesniej z przekazywaniem zmiennych do pliku to juz nie chce działać
wczesniej mialem rozszezenie .pl a zmienilem na .t ale to tez nie pomogło.
EDIT // -----------------------
zadzialalo tak
i idac tym tropem napisalem skrypt
Kod: Zaznacz cały
#!/usr/bin/perl
use Crypt::Blowfish_PP;
my $bf=new Crypt::Blowfish_PP(pack("H*","014933E0CDAFF6E4"));
print "not" if(!defined($bf));
my $in;
$in=$bf->encrypt("skowron");
print $in;
print "\n";
print $bf->decrypt($in);
ale jak juz odpale ten wczesniej z przekazywaniem zmiennych do pliku to juz nie chce działać
wczesniej mialem rozszezenie .pl a zmienilem na .t ale to tez nie pomogło.
EDIT // -----------------------
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
my $bf=new Crypt::Blowfish_PP($ARGV[0]);
print $bf->encrypt($ARGV[1]);
Kod: Zaznacz cały
use Crypt::Blowfish_PP;
my $bf=new Crypt::Blowfish_PP(pack("h16",$ARGV[0]));
print $bf->encrypt($ARGV[1]);
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [bash] Kryptografia
Żeby zakodować więcej niż jeden blok, można użyć modułu Crypt::CBC:
Kod: Zaznacz cały
#!/usr/bin/perl -w
use strict;
use Crypt::CBC;
$cipher = Crypt::CBC->new( -key => 'my secret key',
-cipher => 'Blowfish'
);
$ciphertext = $cipher->encrypt("This data is hush hush");
$plaintext = $cipher->decrypt($ciphertext);
print "$plaintext\n";
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości