![]() |
||
Nagrywarki |
Pliki |
Dyski twarde |
Recenzje |
Księgarnia |
Biosy |
Artykuły |
Nagrywanie od A do Z |
Słownik |
FAQ
|
||
|
|||||||
| Off topic Forum poświęcone wszelkim innym tematom. |
![]() |
|
|
Opcje związane z dyskusją | Tryby wyświetlania |
|
|
#1 |
|
gÓru
Data rejestracji: 20.12.2003
Lokalizacja: Zbąszynek
Posty: 5,986
![]() ![]() ![]() |
Algorytm, może ktoś pomoże :)
Witam
![]() Zainteresował mnie ten problem, udało mi się go rozwiązać, ale nie w sposób zadawalający mnie, więc dzis z nudy postanowiłem pobawić się i wpadłem na pomysł, że można byłoby stworzyć program odczytujący hasło z pliku avi, lub chociaż program, który po podaniu ciągu znaków (HEX) przeliczyłby je na haslo do pliku tzn. narazie chodzi o to, aby znaleść algorytm i przeliczyć pozostałe znaki na HEX a następnie odwrócić algorytm i napisać prosty programik do zamiany HEX-owych wartości na hasło ![]() Niestety kombinuje już ładne kilka godzin, ale nie mogę wykombinować w jaki sposób zostało zaszyfrowane hasło ![]() Może na forum jest ktoś znający się na algorytmach i potrafiłby to rozszyfrować, podam to co udało mi się zdobyć:
|
|
|
|
| #ads | |
|
CDRinfo.pl
Reklamowiec
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
|
|
|
|
|
|
#2 |
|
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
zalozmy ze na wejsciu mamy zakodowany znak ASCII w HEX (czyli 2 znaki opisujace 1 litere).
Jak zrobimy scanf("%x", &a); gdzie a jest unsigned int (int w praktyce tez moze byc). to z 9B otrzymamy 155. Teraz jak odejmiemy od 255 (to jest 2^8 - 1, najwieksza wartosc bajtu) otrzymane 155 - bedzie 100. Robimy (char) (100) i mamy d. To jest koncepcyjny zapis. Kuchni nie zrobie ![]() (to dziala tylko dla znakow lacinskich, nie polskich). Poza tym te dane sa bardzo ograniczone, wiec od bidy mozesz zrobic na chama alg, ze wczytujesz wszystko do tablicy i skaczesz wskaznikiem o 2 i za kazdym razem porownujesz za pomoca case/switch ze wszystkimi kodami i zapisujesz w tablicy wynikowej wlasciwy odkodowany znak. To jest szybke, latwe, ale bardzo 'nieinformatyczne', choc zyciowe
|
|
|
|
|
|
#3 |
|
.: AT90S2313 :.
Data rejestracji: 09.09.2002
Lokalizacja: Kraków
Posty: 2,724
![]() |
To teraz ja mam mały problem z algorytmami ;) Mam zrobić optymalne mnożenie macierzy. Znalazłem takie kod w c++: http://www-users.mat.uni.torun.pl/~l...orytmy/omm.htm i próbuję go przepisać pod delphi ale coś mi to nie wychodzi. Wydaje mi się że algorytm jest ten sam a mimo to nie działa.
Kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Label1: TLabel;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure drukuj(pocz:integer;kon:integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:array[0..100,0..100] of integer;
implementation
{$R *.dfm}
procedure TForm1.drukuj(pocz:integer;kon:integer);
begin
if pocz=kon then
begin
edit1.Text:=edit1.Text+'M['+inttostr(pocz+1)+']';
end
else
begin
edit1.Text:=edit1.Text+'(';
drukuj(pocz,pocz+a[kon][pocz]);
edit1.Text:=edit1.Text+')*(';
drukuj(pocz+a[kon][pocz]+1,kon);
edit1.Text:=edit1.Text+')';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,l,n,r:integer;
w:array[0..100] of integer;
k:array[0..100] of integer;
begin
edit1.Text:='';
n:=8;
w[0]:=2;
k[0]:=4;
w[1]:=4;
k[1]:=8;
w[2]:=8;
k[2]:=2;
w[3]:=2;
k[3]:=3;
w[4]:=3;
k[4]:=5;
w[5]:=5;
k[5]:=4;
w[6]:=4;
k[6]:=6;
w[7]:=6;
k[7]:=8;
for i:=0 to n-1 do
a[i][i]:=0;
for i:=1 to n-1 do
begin
for j:=0 to n-i-1 do
begin
a[j][i+j]:=-1;
for l:=0 to i-1 do
begin
r:=a[j][j+l]+a[j+l+1][i+j]+w[j]*k[j+l]*k[i+j];
if (r < a[j][i+j])=false then
begin
a[j][i+j]:=r;
a[i+j][j]:=l;
end;
end;
end;
end;
label3.Caption:='Ilość operacji: '+inttostr(a[0][n-1]);
drukuj(0,n-1);
end;
end.
Kod w c++ daje operacji: 306 ((((((M[1])*((M[2])*(M[3])))*(M[4]))*(M[5]))*(M[6]))*(M[7]))*(M[8]) a w delphi: operacji: 1232 (M[1])*((M[2])*(((((M[3])*(M[4]))*(M[5]))*((M[6])*(M[7])))*(M[8])))
__________________
LiteOn LTR-40125S & SOHW-1633S 8 ) Jak zrobić szybko sałatke z buraków? Wrzucić granata do BMW
|
|
|
|
|
|
#4 |
|
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
if (r < a[j][i+j])=false then
Dlaczego false ? |
|
|
|
|
|
#5 |
|
.: AT90S2313 :.
Data rejestracji: 09.09.2002
Lokalizacja: Kraków
Posty: 2,724
![]() |
bo chyba w c++ warunek si***281; spe***322;nia gdy jest false a w delphi gdy jest true wi***281;c doda***322;em gdy false. Nie zam si***281; za dobrze na c++ ale bez tego kod w delphi si***281; wywala.
To mo***380;e inaczej... jak optymalne nawiasowanie zapisa***263; w delphi wg tego: http://www.im.pwr.wroc.pl/~kik/AiSD/aisd5-4.pdf Algorytm podobny ale mo***380;e ten b***281;dzie dzia***322;a***263;.
__________________
LiteOn LTR-40125S & SOHW-1633S 8 ) Jak zrobić szybko sałatke z buraków? Wrzucić granata do BMW
|
|
|
|
|
|
#6 |
|
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
w C warunek jest spelniony gdy wartosc wylicza sie do nie-zera, czyli jak jest cokolwiek innego od 0 to spelnia, a jak 0 to else.
if (r<a[j][i+j]) to porownanie zwraca chyba 1 (napewno cos rownego od 0) jak jest spelnione 0 jak niespelnione. w Pascalu jest podobnie, tylko tam 0 nazywa sie false a cokolwiek innego - true. Czyli nie powinno byc tego =false. |
|
|
|
|
|
#7 |
|
.: AT90S2313 :.
Data rejestracji: 09.09.2002
Lokalizacja: Kraków
Posty: 2,724
![]() |
bez tego false dostaje to:
(M[1])*((M[2])*((M[3])*((M[4])*((M[5])*((M[6])*((M[7])*(M[8]))))))) czyli brak wyznaczonego optymalnego nawiasowania
__________________
LiteOn LTR-40125S & SOHW-1633S 8 ) Jak zrobić szybko sałatke z buraków? Wrzucić granata do BMW
Ostatnio zmieniany przez Ziele : 19.03.2006 o godz. 19:23 |
|
|
|
|
|
#8 |
|
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
a moze to cos z semantyka:
Kod:
(( r < a[j][i+j]) = true ) albo r < a[j][i+j] |
|
|
|
![]() |
|
|