NISA Posted June 20, 2004 Share Posted June 20, 2004 Trqbava mi malka programka za kodirane i dekodirane po vuzmojnost pisana na C nqma zna4enie po koi algoritum e pravena.Trqbava mi za edna kursova rabota ama nqmam vreme sama da sqdam da q mislq taka 4e ako nqkoi ima ne6to gotovo 6te sum mu blagodarna 10x Link to comment Share on other sites More sharing options...
ov3rm4n Posted June 20, 2004 Share Posted June 20, 2004 Гледам цял ден стои без отговор поста ти, та нека да го вдигнем нагоре в списъка. Ето ти програмен код, който реализира RSA кодиране. Приема на входа ключ + текст за кодиране и извежда кодиран текст. За съжаление не е на С - не ми е силната страна. Не съм сигурен и дали декодира, но май да. Но пък за сметка на това е наистина малка програмка - 4 реда. Ще се изненадам на С да стане толкова малка. #!/usr/local/bin/perl -s-- #export-a-crypto-system sig, RSA in 4 lines PERL: $e-$d&(($k,$n)=@ARGV)==2||die"$0 -d|-e key mod out\n";$v=$w=1+length$n& ~1;$v-=$d*2;$w-=$e*2;$_=unpack('B*',pack('H*',1$k?"0$k":$k));s/^0+//; s/1/0lM*ln%/g;s/0/d*ln%/g;while(read(STDIN,$m,$w/2)){$m=unpack("H$w",$m);$a= `echo 16oOi\U$m SM$n\Esn1$_ p|dc`;print pack("H$v",'0'x($v+1-length$a).$a);} Ето го и източника - http://fringe.davesource.com/Fringe/Crypt/RSA/Algorithm.html Айде сега някой С програмист да си каже тежката дума по същество. Link to comment Share on other sites More sharing options...
dinux Posted June 20, 2004 Share Posted June 20, 2004 Ето една малка програмка, която писах преди доста време. Кодирането е изключително просто - вариация на метода на Цезар. Надявам се не е прекалено простичко и да ти свърши работа. main.c /* This program is under the GNU General Public License. I took the encryption algorythm from an old book for the Second World War. dinux Enjoy! */ #include <stdlib.h> #ifdef __dos__ #include <conio.h> /*Very strange. Only DOS has it and needs it*/ #endif #include "crypt.h" void usage(const char* progname); int main(int argc, char **argv) { char* passwd = (char *)malloc(256); printf(" Programmed by dinux.\tdinux@mail.bg\n\n"); if(argc!=4) { usage(argv[0]); return -1; } passwd = getpass("Please, enter the password: "); switch ( *(argv[1]+1) ) { case 'e': encrypt_d(passwd, argv[2], argv[3]); break; case 'd': decrypt_d(passwd, argv[2], argv[3]); break; default: usage(argv[0]); return -1; } return 0; } void usage(const char* progname) { printf("\nUsage: %s [-ed] input.txt output.txt\n", progname); printf("-e Encrypts input.txt\n"); printf("-d Decrypts input.txt\n"); } crypt.c #include <string.h> #include <stdio.h> #define MAXCOORD 256 void encrypt_d(const char *passwd, const char* infile, const char* outfile) { int p = 0; FILE* input = fopen(infile, "r"); FILE* output = fopen(outfile, "w"); short int letter = 0; const int lenght = strlen(passwd); letter = fgetc(input); while ( !feof(input) ) { letter = (int) (letter+(int)(*(passwd+p)) % MAXCOORD); fputc(letter, output); p++; if (p > lenght) p = 0; letter = fgetc(input); } fclose(output); fclose(input); } void decrypt_d(const char *passwd,const char* infile, const char* outfile) { FILE* input = fopen(infile, "r"); FILE* output = fopen(outfile, "w"); int p = 0; short int Z; int letter = 0; const int lenght = strlen(passwd); letter = fgetc(input); while ( !feof(input) ) { if( ((int)(*(passwd+p))+letter) > MAXCOORD ) Z=1; else Z=0; letter = (int)(MAXCOORD*Z + letter - (int)(*(passwd+p))); fputc( letter, output); p++; if (p > lenght) p = 0; letter = fgetc(input); } fclose(output); fclose(input); } crypt.h extern void encrypt_d(const char* passwd,const char* infile,const char* outfile); extern void decrypt_d(const char* passwd,const char* infile,const char* outfile); Link to comment Share on other sites More sharing options...
sasquatch Posted June 20, 2004 Share Posted June 20, 2004 #!/usr/local/bin/perl -s-- #export-a-crypto-system sig, RSA in 4 lines PERL:<!--QuoteEBegin-->$e-$d&(($k,$n)=@ARGV)==2||die"$0 -d|-e key mod out\n";$v=$w=1+length$n&<!--QuoteEBegin-->~1;$v-=$d*2;$w-=$e*2;$_=unpack('B*',pack('H*',1$k?"0$k":$k));s/^0+//;<!--QuoteEBegin-->s/1/0lM*ln%/g;s/0/d*ln%/g;while(read(STDIN,$m,$w/2)){$m=unpack("H$w",$m);$a=<!--QuoteEBegin-->`echo 16oOi\U$m SM$n\Esn1$_ p|dc`;print pack("H$v",'0'x($v+1-length$a).$a);} Само едно нещо се чудя, абе това как изобщо го разбираш :) Link to comment Share on other sites More sharing options...
ov3rm4n Posted June 20, 2004 Share Posted June 20, 2004 Трудно.... Но се свиква. Какво му е неясното? Щом програмираш, значи повечето конструкции ти говорят нещо, нищо че е на Perl. Като за начало - не го гледай като цяло. Разглеждай го конструкция по конструкция. Ще видиш, че ще го разбереш горе-долу и че не е чак толкова неясно... Link to comment Share on other sites More sharing options...
NISA Posted June 20, 2004 Author Share Posted June 20, 2004 blagodarq ov3rm4n i dinux ve4e misleh 4e nikoi nqma da pomogne.Dinux mislq 4e tova 6te svar6i rabota no 6te go razgledam i ako ne razbera ne6to 6te te pitam Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.