Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Kỹ thuật mã hóa file

  1. #1
    Ngày gia nhập
    07 2007
    Bài viết
    5

    Mặc định Kỹ thuật mã hóa file

    Mình đã nghe nói đến kỹ thuật mã hóa file nhưng ko biết mã hóa file la sao?
    Ai biết có thể giải thích và cho vài ví dụ để mình hiểu rõ hơn đc ko

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Có một vài bài về file bạn có thể xem ở đây.
    http://forums.congdongcviet.com/showthread.php?t=2556
    In code we trust

  3. #3
    No Avatar
    meohoang8x Khách

    tui chỉ biết về cách mã hóa và giải mã file bằng kỹ thuật chẵn lẻ(quên mất tên tiếng anh của nó rùi).

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Có bài nì thấy hay up lên
    Code:
    //  -------------------------------------------------------------
    //  Chuong trinh ma hoa - giai ma file
    //
    //	- Ma hoa tu cac file .txt
    //	- Chuyen thanh cac file .dat
    //	- Co the nhap noi dung can ma hoa tu ban phim
    //	- Phan nhap noi dung chua hoan chinh, chi gom cac thao tac sau:
    //		- Cac phim thong thuong
    //		- Phim Enter de xuong hang
    //		- Phim Backspace de xoa ky tu nhap sai
    //		- Khong su dung duoc cac phim mui ten ( se bo sung )
    //	- Thoat khoi che do nhap bang cach nhan phim Esc
    //
    //	* Nhap ten file: khong nhap phan mo rong, chi nhap ten file.
    //		 VD: file test.txt thi nhap: test
    //	* Mat khau co the la so hoac chu
    //	* File mahoa.dat dinh kem co mat khau: 123456
    //  -------------------------------------------------------------
    #include <iostream.h>
    #include <string.h>
    #include <fstream.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <stdio.h>
    #include <windows.h>
    const char duoi[5] = ".txt";
    const char duoiSave[5]= ".dat";
    
    /************************************************************************/
    /* Nguyen mau ham														*/
    /************************************************************************/
    void mahoa(char*tenfile);
    void giaima(char*tenfile);
    void mahoavb();
    char fm(char);	//Ham ma hoa
    char fg(char);	//Ham giai ma
    int mod(int a,int b); //Dinh nghia lai phep chia lay du
    char* nhapkey();		//Dung de nhap mat khau
    void add(char* x,char y);	//Them 1 ky tu vao chuoi
    void move(char* x);			//Xoa ky tu cuoi ra khoi chuoi
    char* NhapMatKhau();
    
    // 3 ham di copy duoc !
    void gotoxy(int x, int y);
    int wherex();
    int wherey();
    /************************************************************************/
    /*                                                                      */
    /************************************************************************/
    void main()
    {
    	int chon;
    	do 
    	{
    		system("cls");
    		cout<<"\tCHUONG TRINH MA HOA VA GIAI MA FILE"<<endl;
    		cout<<"\t\tChuc nang:\n";
    		cout<<"\t\t1. Ma hoa file.\n";
    		cout<<"\t\t2. Giai ma file.\n";
    		cout<<"\t\t3. Nhap van ban can ma hoa.\n";
    		cout<<"\t\t4. Thoat.\n";
    		cout<<"\t\tLua chon?: ";
    		cin>>chon;
    		cin.ignore();
    		if(chon ==1)
    		{
    			
    			char tenfile[30];
    			cout<<"Nhap ten file can ma hoa: ";
    			cin.getline(tenfile,30);
    			strcat(tenfile,duoi);
    			cout<<endl;
    			mahoa(tenfile);
    			cout.flush();
    			getch();
    		}
    		else if(chon ==2)
    		{			
    			char tenfile[30];
    			cout<<"Nhap ten file can giai ma : ";
    			cin.getline(tenfile,30);
    			strcat(tenfile,duoiSave);
    			giaima(tenfile);
    			cout.flush();
    			getch();
    		}
    		else if (chon ==3)
    		{
    			mahoavb();
    			cout.flush();
    			getch();
    		}
    		cout.flush();
    		
    	} while(chon !=4);
    }
    
    
    /************************************************************************/
    /* Dinh nghia cac ham                                                   */
    /************************************************************************/
    
    void mahoa(char*tenfile)
    {
    	ifstream fin(tenfile,ios::nocreate);
    	if(fin.is_open())
    	{
    		cout<<"Noi dung cua file can ma hoa: "<<endl;
    		cout<<"---------------------------"<<endl;
    		char ch;
    		fin.get(ch);
    
    		while(!fin.eof())
    		{
    			cout<<ch;
    			fin.get(ch);
    		}
    		cout<<endl<<"---------------------------"<<endl;
    		fin.close();
    
    		char* key;
    		key=NhapMatKhau();
    
    		char tenfilemh[30];
    		
    		cout<<"\nLuu file ma hoa voi ten: ";
    		cin.getline(tenfilemh,30);
    		strcat(tenfilemh,duoiSave);
    		fin.open(tenfile,ios::nocreate);
    		ofstream fout(tenfilemh,ios::noreplace);
    		if(!fout)
    		{
    			cout<<"File \""<<tenfilemh<<"\" da ton tai."<<endl;
    		}
    		else
    		{
    			int i=0;
    			while(key[i]!=0)
    			{
    				fout<<fm(key[i]);
    				i++;
    			}
    			fout<<endl;
    			char ch;
    			fin.get(ch);
    			char h;
    			h=fm(ch);
    			while(!fin.eof())
    			{
    				fout.put(h);
    				fin.get(ch);
    				h=fm(ch);				
    			}
    			fin.close();
    			fout.close();
    			cout<<"Ghi file thanh cong!"<<endl;
    			cout<<"Co muon xoa file nguon khong? [C/K]: ";
    			cout.flush();
    			char del=getch();
    			if(del=='c' || del=='C')
    				remove(tenfile);
    		}
    	}
    	else
    		cout<<"Khong doc duoc file "<<tenfile;
    }
    
    void giaima(char*tenfile)
    {
    	ifstream fin(tenfile,ios::nocreate);
    	if(fin.is_open())
    	{
    		char* key1;
    		key1=new char[20];
    		key1[0]='\0';
    		
    		char*key;
    		key=new char[20];
    		
    		char ch;
    		while (fin.get(ch))
    		{			
    			if(ch=='\n')
    				break;
    			add(key1,fg(ch));
    		}
    
    		do 
    		{
    			cout<<"Nhap mat khau: ";
    			key=nhapkey();
    			if(strcmp(key,key1)!=0)
    				cout<<"SAI MAT KHAU! HAY THU LAI."<<endl;
    		} while(strcmp(key,key1)!=0);
    		
    		cout<<"Noi dung giai ma duoc : "<<endl;
    		cout<<"---------------------------"<<endl;
    		
    		fin.get(ch);
    		while (!fin.eof())
    		{
    			cout<<fg(ch);
    			fin.get(ch);
    		}
    		cout<<endl<<"---------------------------"<<endl;
    		fin.close();
    		
    		char tenFileSave[30];
    		cout<<"Luu file giai ma voi ten: ";
    		cin.getline(tenFileSave,30);
    		strcat(tenFileSave,duoi);
    		ofstream fout(tenFileSave,ios::noreplace);
    		if(!fout)
    		{
    			cout<<"File \""<<tenFileSave<<"\" da ton tai."<<endl;
    		}
    		else
    		{
    			fin.open(tenfile,ios::nocreate);
    			fin.ignore(20,'\n');
    			fin.get(ch);
    			char h;
    			h=fg(ch);
    			while(!fin.eof())
    			{
    				fout.put(h);
    				fin.get(ch);
    				h=fg(ch);				
    			}
    			fin.close();
    			fout.close();
    			cout<<"Ghi file thanh cong!"<<endl;
    		}
    	}
    	else
    		cout<<"Khong doc duoc file "<<tenfile;
    }
    
    void mahoavb()
    {
    	char text[1000];
    	text[0]='\0';
    	char ch;
    
    	// Cho phep xoa ky tu da nhap
    	int dongdautien;
    	int vitrixuonghang[200];
    	int dong=0;
    	cout<<"Nhap van ban can ma hoa, nhan phim Esc de ket thuc: "<<endl;
    	cout<<"---------------------------";
    	cout.flush();
    	gotoxy(5,wherey()+1);
    	dongdautien=wherey();
    	do 
    	{
    		cout.flush();
    		ch=getch();
    		int dau=wherey();
    		if(int(ch) == 27)
    		{
    			add(text,'\0');
    			break;
    		}
    		else if(ch ==13)
    		{
    			add(text,'\n');
    			vitrixuonghang[dong]=wherex();
    			dong++;
    			gotoxy(5,wherey()+1);
    		}
    		else if(int(ch) ==8)
    		{
    			if(wherey()!=dongdautien || wherex() !=5)
    			{
    				if(wherex()==5)
    				{
    					dong--;
    					gotoxy(vitrixuonghang[dong],wherey()-1);
    				}
    				cout<<"\b";
    				cout<<" ";
    				cout<<"\b";
    				move(text);
    			}
    		}
    		else if(ch !=72 &&ch !=75 && ch !=77 && ch != 80 && ch !=-32)
    		{
    			add(text,ch);
    			cout<<ch;
    			if(wherex()==75)
    			{				
    				vitrixuonghang[dong]=75;
    				dong++;
    				gotoxy(5,wherey()+1);
    			}
    		}
    	} while(1);
    
    	cout<<endl<<"---------------------------"<<endl;
    
    	char tenFileSave[30];
    	cout<<"Nhap ten file de luu lai: ";
    	cin.getline(tenFileSave,30);
    	strcat(tenFileSave,duoiSave);
    	ofstream fout(tenFileSave,ios::noreplace);
    	if (!fout)
    	{
    		cout<<"File "<<tenFileSave<<" da ton tai."<<endl;
    	}
    	else
    	{
    		char* key;
    		key=NhapMatKhau();
    		int i=0;
    		while(key[i]!=0)
    		{
    			fout<<fm(key[i]);
    			i++;
    		}
    		fout<<endl;
    		i=0;
    		while (text[i]!=0)
    		{
    			fout<<fm(text[i]);
    			i++;
    		}
    		fout.close();
    		cout<<"Ghi file thanh cong!";
    	}
    }
    
    
    char fm(char a)//ma hoa
    {
    	int y=mod((int(a)*9+17),128);	
    	return char(y);
    }
    
    char fg(char a)//giai ma
    {
    	int y=mod((int(a)-17)*57,128);
    	return char(y);
    }
    
    int mod(int a,int b)//Dinh nghia phep chia lay phan du
    {
    	if(a>=0)
    		return a%b;
    	else
    	{
    		int x=a/b-1;
    		return a-(b*x);
    	}
    }
    
    char* nhapkey()
    {	
    	cout.flush();
    	char ch;
    	char* key;
    	key=new char[20];
    	key[0]='\0';
    	int dau=wherex();
    	do 
    	{		
    		ch=getch();
    		if(ch == 13)
    			break;
    		else if(ch ==8)
    		{
    			if(wherex()>dau)
    			{
    				cout<<"\b";
    				cout<<" ";
    				cout<<"\b";
    				cout.flush();
    				move(key);	
    				
    			//Hoac dung cach nay:
    				//gotoxy(wherex()-1,wherey());
    				//cout<<" ";
    				//cout.flush();
    				//gotoxy(wherex()-1,wherey());
    			}			
    			else;
    		}
    		else
    		{
    			add(key,ch);
    			cout<<"*";
    			cout.flush();
    		}
    	} while(ch !=13);
    	cout<<endl;
    	return key;
    }
    
    char* NhapMatKhau()
    {
    	char* key;
    	char* key1;
    	do 
    	{
    		cout<<"Nhap mat khau dai toi da 20 ky tu: ";
    		key=nhapkey();
    		cout<<"Nhap lai mat khau: ";
    		key1=nhapkey();
    		if (strcmp(key,key1) != 0)
    			cout<<"MAT KHAU KHONG CHINH XAC! HAY NHAP LAI.\n"<<endl;
    	} while(strcmp(key,key1) != 0);
    	return key;
    }
    
    void add(char* x,char y)
    {
    	int i=strlen(x);
    	x[i]=y;
    	x[i+1]='\0';
    }
    
    void move(char* x)
    {
    	int i=strlen(x);
    	if(x[i-1]=='\n')	//Loai bo ky tu xuong hang,
    		i--;			
    	x[i-1]='\0';
    }
    
    
    void gotoxy(int x, int y)
    {
    	HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    	COORD pos;
    	pos.X=x;
    	pos.Y=y;
    	SetConsoleCursorPosition(hCon, pos);
    }
    
    /* Chu y: phai flush ra truoc khi lay toa do
    /*-------------------------wherex()------------------------------------*/
    
    int wherex()
    {
    	CONSOLE_SCREEN_BUFFER_INFO  csbi;
    	HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    	GetConsoleScreenBufferInfo(hCon, &csbi);
    	return csbi.dwCursorPosition.X;
    }
    /*-------------------------wherey()----------------------------------*/
    
    int wherey()
    {
    	CONSOLE_SCREEN_BUFFER_INFO  csbi;
    	HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    	GetConsoleScreenBufferInfo(hCon, &csbi);
    	return csbi.dwCursorPosition.Y;
    }
    In code we trust

  5. #5
    Ngày gia nhập
    06 2007
    Bài viết
    40

    1 trang về các thuật toán mã hóa File;
    http://cryptofile.com

  6. #6
    No Avatar
    meohoang8x Khách

    Mặc định Kỹ thuật mã hóa file

    đang định up một bài lên thì thấy bài cua iamvtn, tự thấy bài của mình quá kém cỏi,thôi không up nữa.

  7. #7
    Ngày gia nhập
    07 2007
    Bài viết
    5

    cảm ơn nhìu,đã hiểu đc 1 chút roi

  8. #8
    No Avatar
    meohoang8x Khách

    Bài mã hóa file này tui dùng kỹ thuật chẵn lẻ (parity bits,hình như tên tiếng anh của nó là thế ),chương trình sẽ đọc từng kí tự của file và kiểm tra kí tự đó là byte chẵn hay byte lẻ:
    kiemtra(x)= 1 - nếu đó là byte lẻ
    0 - nếu đó là byte chẵn
    Nếu byte đó là lẻ thì sẽ chuyển byte đó thành byte chẵn (code (x)).
    Chắc chắn là chương trình còn nhiều vấn đề xảy ra, xin các bác đóng góp ý kiến. Cảm ơn!!!
    Dưới đây là chương trình:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    int kiemtra(char x){
     int i,s=0;
     for (i=0;i<=7;i++)
      if (x &(1<<i)) s++;
     if (s%2==0) return (0);
     return (1);
    }
    char code (char x){
     if (kiemtra(x))
       x=x/128;
     return(x);
    }
    char decode(char x){
      if (x&128)
       x=x&127;
     return (x);
    }
    void code_file(char *name1,char *name2){
      int i,k; char dong[255];
      FILE *fp1,*fp2;
      printf("\nTen file can ma hoa:");scanf("%s",&name1);
      printf("\nTen file ma hoa:");scanf("%s",&name2);
      fp1=fopen(name1,"r"); fp2=fopen(name2,"w");
      while(!feof(fp1)){
       fgets(dong,255,fp1);
       printf("%s",dong);
       k=strlen(dong);
       for (i=0;i<k;i++){
         if (dong[i]!=' ' && dong[i]!='\t' && dong[i]!='\n')
    	     dong[i]=code(dong[i]);
       }
       printf("%s",dong);
       fputs(dong,fp2);
      }
      fclose(fp1); fclose(fp2);
    }
    void decode_file(char *name1,char *name2){
      int i,k; char dong[255];
      FILE *fp1,*fp2;
      printf("\nTen file can ma hoa:");scanf("%s",&name1);
      printf("\nTen file ma hoa:");scanf("%s",&name2);
      fp1=fopen(name1,"r"); fp2=fopen(name2,"w");
      while(!feof(fp1)){
       fgets(dong,255,fp1);
       printf("%s",dong);
       k=strlen(dong);
       for (i=0;i<k;i++){
    	 dong[i]=decode(dong[i]);
       }
       printf("%s",dong);
       fputs(dong,fp2);
      }
      fclose(fp1); fclose(fp2);
    }
    void main(){
     char name1[20],name2[20];
      code_file(name1,name2);
      decode_file(name1,name2);
    }

Các đề tài tương tự

  1. Dịch vụ gửi hàng hóa đi Australia, gửi hàng hóa đi France, gửi hàng hóa đi Germany, gửi hàng hóa đi Janpan giá rẻ.
    Gửi bởi sales5ttico trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 30-07-2014, 02:51 PM
  2. ADO.NET Hướng Dẫn Mã Hóa File - Giải Mã File trong RichTextBox khi thực hiện Lưu và Mở tập tin
    Gửi bởi huuphat trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 34
    Bài viết cuối: 15-10-2012, 07:14 AM
  3. Bài tập C++ Viết chương trình nhập số lượng hàng hóa, giá cả, thuế, xuất ra tổng giá, thuế, tổng cộng
    Gửi bởi seit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 04-03-2011, 09:04 AM
  4. Thuật toán mã hóa RSA - Giải Mã File trên VC++?
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 27-10-2010, 02:59 PM
  5. Tài liệu về giải thuật mã hóa. Mã hóa file theo giải thuật DES. Ai có giúp mình?
    Gửi bởi daolong83 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 6
    Bài viết cuối: 17-07-2009, 11:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn