Na wstępie, chciałbym prosić o pobłażliwość w kwestii błędów ortograficznych w kodzie(np. nazwy zmiennych), w końcu najważniejsza
jest treść a nie forma ortograficzna. Proszę też o pobłażliwość w kwestii licencji, nie znam się na prawie.
A teraz tak: prezentuje mój program szyfrujący, który napisałem trochę niechlujnie, jednak moim celem było jak najszybsze zaprezentowanie samej idei tego algorytmu. Program działa nie do końca dobrze, bo po zaszyfrowaniu i odszyfrowaniu plik jest nieco większy o kilka bajtów. To jedna sprawa a druga: czy taki algorytm szyfrujący już istnieje? Pytam bo nie wiem za bardzo wiem jak to sprawdzić. Większość moich programów dostępnych jest pod adresem tworczoscgorskiego.cba.pl
/*
Licencja: pozwalam używać tego programu pod warunkiem że będzie wykożystywany w celach niekomercyjnych jak również
w celach niekomercyjnych będą wykorzystywane wszystkie jego metody
szyfrowania w nim zawarte jeśli ktoś będzie chciał wykorzystywać ten program lub metody mojego autorstwa w nim zawarte
komercyjnie może to zrobić jednak musi mi za to zapłacić cena do uzgodnienia można się ze mną
skontaktować pod numerem 518242320 lub mailem [email protected]
copyright Marcin Górski 2016
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <sstream>
using namespace std;
void zrubmio(int * m,int * o)
{
do{
*m = rand()%32000;
if(rand()%2)*m = - *m;
*o = rand()%32000;
if(rand()%2)*o = - *o;
}while( !((*m) && (*m != *o) && (*m != -(*o)) &&(*o)) );
}
struct pakiet{
long int dane;
long int mnoznik;
long odejmning;
void pisz()
{
cout<<"dane "<<dane<<endl<<" monoznik"<<mnoznik<<endl<<"odejmnig"<<odejmning<<endl;
}
};
int main(int argc,char* argv[])
{
pakiet pakiecik;
int m,o,m2,o2,t,reszta,temp2;
int rozmiarz;
long int temp;
int cp=24;
string parametr="-c";
string parametr2="-e";
if(argc < 6)cout<<"używanie szyfrgorskiego parametr -c dla szyfrowania -e lda odszyfrowania plik wejsciowy \n plik wyjsciowy liczba od -32000 do 32000 i jeszcze jedna taka \n np. szyfrgorskiego -c obrazek.png zbiur 231 30021 lub szyfrgorskiego -e zbiur odszyfrowane.png 231 20021"<<endl;
ifstream zpliku(argv[2],ios::binary);
zpliku.seekg(0,ios::end);
rozmiarz =zpliku.tellg();
zpliku.seekg(0,ios::beg);
reszta=rozmiarz % 4;
ofstream dopliku(argv[3],ios::binary | ios::trunc);
istringstream ms(argv[4]);
istringstream os(argv[5]);
ms>>m;
os>>o;
if(m<(-32000) || m > 32000 || o<(-32000) || o > 32000)
{
cout<<"zle prametry"<<endl;
return 1;
}
if(!zpliku){
cout<<"blad pliku wejsciowego"<<endl;
return 1;
}
if(!dopliku){
cout<<"blad pliku wyjsciowego"<<endl;
return 1;
}
if(parametr==argv[1])
{
cout<<"szyfruje"<<endl;
pakiecik.mnoznik=reszta;
char* wsk =(char*)(&pakiecik.dane);
wsk="grs";
dopliku.write((char*)&pakiecik,cp);
int i=0;
while(zpliku)
{
//cout<<"obieg"<<i++<<endl;
zpliku.read((char*)&temp,4);
pakiecik.dane=m*temp-o;
zrubmio(&m2,&o2);
pakiecik.mnoznik=m*m2-o;
//if(!m2)m2=pakiecik.mnoznik=m*4-o;
pakiecik.odejmning=m*o2-o;
m=m2;
o=o2;
if(m==0 || o==0 || m==o || m== -o)cout<<"zle"<<endl;
dopliku.write((char*)&pakiecik,cp);
if(reszta && zpliku.tellg()==rozmiarz-reszta)
{
zpliku.read((char*)&temp,reszta);
pakiecik.dane=m*temp-o;
dopliku.write((char*)&pakiecik,cp);
}
//cout<<"obieg"<<i<<endl;
}
return 0;
}else if(parametr2==argv[1])
{
cout<<"odszyfrowuje"<<endl;
zpliku.read((char*)&pakiecik,cp);
reszta=pakiecik.mnoznik;
while(zpliku)
{
zpliku.read((char*)&pakiecik,cp);
//pakiecik.pisz();
temp2=(pakiecik.dane+o)/m;
m2=(pakiecik.mnoznik+o)/m;
o2=(pakiecik.odejmning+o)/m;
m=m2;
o=o2;
dopliku.write((char*)&temp2,4);
if(reszta && (zpliku.tellg() == rozmiarz-4))
{
zpliku.read((char*)&pakiecik,cp);
temp2=(pakiecik.dane+o)/m;
dopliku.write((char*)&temp2,reszta);
}
}
return 0;
}
return 1;
}
Z góry dziękuję za wszelką pomoc i jeszcze raz przepraszam, za straszny niechlujny kod.
Marcin Górski