[PHP] szyfrowanie

Wszystko co dotyczy tworzenia i optymalizacji stron internetowych oraz programowania
mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 09:47

Witam wszystkich,
Chciałbym zrobić szyfrowanie liczb, tzn będziemy szyfrować 1,2,3,.,62,.,980, . itd x należy do N <-zbior liczb naturalnych ;)
Ale to wszystko było by łatwe, gdyby nie to że ten szyfr musi spełniać następujące warunki:

1.postać zaszyfrowana powinna mieścić się w przedziale od ok 4-8 znaków, czyli jak np. ma być 5 znaków to wszystkie szyfry powinny być 5 - znakowe - najlepiej aby były cyfry + litery
2.szyfr w żadnym wypadku nie może być rozszyfrowalny
3.szyfr nie może się powtarzać

Proszę o pomoc :)

Awatar użytkownika
lewy

Ekspert
Posty: 1462
Rejestracja: 15 gru 2009, 11:10

[PHP] szyfrowanie

Post16 paź 2010, 09:58

2.szyfr w żadnym wypadku nie może być rozszyfrowalny


Hehe, nawet bez hasła? żartuję.

Może szyfr podstawieniowy albo XOR z kluczem?
W sumie nawet zwykły Cezara z przesunięciem cyklicznym.

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 10:29

Cezar odpada, nie spełnia warunków, @lewy jak sobie wyobrażasz przesunięcia cykliczne cyfr?
A tak to proszę o podanie jakichś funkcji, może przykładów php, czekam dalej na pomoc.

Awatar użytkownika
cosik_ktosik

Administrator
Posty: 21409
Rejestracja: 13 lis 2008, 01:17
Lokalizacja: Szczecin
Kontaktowanie:

[PHP] szyfrowanie

Post16 paź 2010, 12:44

Cezar sam w sobie jest już z założenia cykliczny:
Alfabet: AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻ
Szyfr: CĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻAĄB


-- So, 16 paź 2010, 12:44 ---

Jak chcesz literki, to zmieniasz alfabet, więc jest to podstawieniowy.

To co chcesz osiągnąć dotyczące przyporządkowania jednej litery szyfrogramu jednej alfabetu to afiniczność: Dostępne tylko dla zarejestrowanych użytkowników
Hotfix
Pozdrawiam, cosik_ktosik :)

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 16:23

Może ja wytłumaczę to jeszcze raz :D
Do jednej z kolumn bazy danych będę dopisywał zaszyfrowany tekst. Tym tekstem zaszyfrowanym będzie liczba, liczba którą będę szyfrować na pewno się nie powtórzy. I chciałbym wykluczyć możliwość odszyfrowania, złamania ( oczywiście w najwyższym możliwym stopniu) i aby szyfr nie był długi ( nawet kosztem bezpieczeństwa - jednak to ono jest priorytetem) długość ma wynosić 6-12 znaków. Chodzi mi tu o podejście bardziej od strony PHP jakaś funkcji czy coś, robiłem na md5 + sól, ale wychodzi dużo znaków. Proszę o pomoc;)

Awatar użytkownika
cosik_ktosik

Administrator
Posty: 21409
Rejestracja: 13 lis 2008, 01:17
Lokalizacja: Szczecin
Kontaktowanie:

[PHP] szyfrowanie

Post16 paź 2010, 16:34

Czyli już gotowiec?

Jak tak to funkcje:
mcrypt_get_iv_size do sprawdzenia wielkości wektora IV dla danego szyfru
mcrypt_create_iv do stworzenia IV
mcrypt_encrypt do szyfrowania.

A szyfr np MCRYPT_RIJNDAEL czyli standard AES

-- So, 16 paź 2010, 16:34 ---

Albo potrójny DES: MCRYPT_TripleDES

Więcej: Dostępne tylko dla zarejestrowanych użytkowników
Hotfix
Pozdrawiam, cosik_ktosik :)

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 17:07

muszę przyznać że nie za bardzo mogę się w tym wszystkim połapać
Nie rozumiem, o co chodzi ze sprawdzeniem wielkości wektora.
Na samym początku mam tylko liczbę w zmiennej $liczba i ją chcę zaszyfrować i zapisać do bazy danych. :)

Awatar użytkownika
cosik_ktosik

Administrator
Posty: 21409
Rejestracja: 13 lis 2008, 01:17
Lokalizacja: Szczecin
Kontaktowanie:

[PHP] szyfrowanie

Post16 paź 2010, 17:10

Wektor IV to tak jak "sól" czyli wchodzi na start do szyfrowania.

Przykład użycia:

Kod: Zaznacz cały

<?php
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
   $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
   $key = "This is a very secret key";
   $text = "Meet me at 11 o'clock behind the monument.";
   echo strlen($text) . "\n";

   $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
   echo strlen($crypttext) . "\n";
?>

Z algorytmy.pl
Hotfix
Pozdrawiam, cosik_ktosik :)

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 17:28

aha, i ten sposób byłby w pełni bezpieczny i pewny, a jako sól co powinienem dać?

Awatar użytkownika
cosik_ktosik

Administrator
Posty: 21409
Rejestracja: 13 lis 2008, 01:17
Lokalizacja: Szczecin
Kontaktowanie:

[PHP] szyfrowanie

Post16 paź 2010, 18:00

Nic, wektor IV jest inicjowany przez mcrypt_create_iv($iv_size, MCRYPT_RAND);
Hotfix
Pozdrawiam, cosik_ktosik :)

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 18:29

wiem, że proszę o gotowca, czego nie powinienem robić, ale jest dla mnie ważne, aby tego nie "zepsuć"- czy mógłbyś mi napisać coś takiego:
na wejście początku mamy $liczba
a na weyjściu powinniśmy mieć $liczba_zaszyfrowana, zmienna ta posiada ciąg znaków ( nie więcej niż 14), i opisz mi to
więc jak zdecydujesz mi się w ten sposób pomóc to dobrze ;)
a jeśli zdecydujesz inaczej to drugie dobrze, jednak wtedy proszę Cię o pomoc krok po kroku

Awatar użytkownika
cosik_ktosik

Administrator
Posty: 21409
Rejestracja: 13 lis 2008, 01:17
Lokalizacja: Szczecin
Kontaktowanie:

[PHP] szyfrowanie

Post16 paź 2010, 19:43

AES jest szyfrem blokowym i na wyjściu też są bloki. Ogólnie musisz zobaczyć co na wyjściu dostaniesz z 14 liczb. Nie wiem jak w AES w PHP co jest na wyjściu, czy tablica czy ogólnie string. Zawsze można przekonwertować binaria na hex lub dec. Tu znalazłem fajny przykład użycia Dostępne tylko dla zarejestrowanych użytkowników
Hotfix
Pozdrawiam, cosik_ktosik :)

mir

Stały bywalec
Posty: 617
Rejestracja: 01 kwie 2009, 15:23

[PHP] szyfrowanie

Post16 paź 2010, 23:12

ok, coś pomyślę, dziękuję za pomoc :)



  • Reklama

Wróć do „Webmastering i programowanie”



Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości