Mã hóa và Giải mã một File bất kỳ

Các thủ thuật liên quan đến xử lý chuỗi và thời gian
Đăng trả lời
Hình đại diện của thành viên
tuyen_dt18
Guru
Guru
Bài viết: 261
Ngày tham gia: Thứ 7 19/04/2008 8:46 pm
Đến từ: Hưng Yên
Been thanked: 40 times
Tiếp xúc:

Mã hóa và Giải mã một File bất kỳ

Gửi bài by tuyen_dt18 »

Thủ thuật: Mã hóa và Giải mã một file bất kỳ
Tác giả: Sưu tầm
Mô tả: Đây là Code mã hóa dữ Liệu là dữ liệu của một Tệp tin , được tái chế từ đoạn code mã hóa dữ liệu dang Text(Mới ) trên diễn đàn do mình sưu tầm.Nó vừa có chức năng Mã Hóa Dữ Liệu của bạn vừa có chức năng Giải mã nữa.Thật là tuyệt phải không.Các bạn hãy thử nó nha.

Mã: Chọn tất cả

Function En_Decode(FilePath$,KeyPass) As StringIf FilePath  = ""  Or Dir$(FilePath) = "" Then Exit Function KeyPass=Clng(KeyPass)KeyPass=Asb(KeyPass)Dim X As SingleDim I As LongDIm FileNum As IntegerDim tempChar As String * 1Dim tempAsc As IntegerDim RandomInteger As IntegerX = Rnd(-KeyPass)FileNum = FreeFileOpen FilePath For Binary As #FileNumFor I =1 To LOF(FileNum)Get #FileNum,I,tempChar ' Lấy từng ký tựRandomInteger = Int(Rnd*256)tempAsc = Asc(tempChar) ' Lấy mã ASCIItempAsc = tempAsc Xor RandomInteger ' Mã hóa mã ASCII của ký tựtempChar = Chr(tempAsc) ' Đưa về dạng ký tự để đặt vào vị trí cũPut #FileNum,I,tempCharNext IClose #FileNumEnd Function
Hàm này thường dùng khi chỉ muốn chương trình của mình hoặc ai có đặc quyền mới được xem một tệp tin nào đó. Hỗ trợ mã hóa tất cả các loại File.
Sửa lần cuối bởi 2 vào ngày tuyen_dt18 với 0 lần sửa trong tổng số.
Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.
xinhx89
Thành viên chính thức
Thành viên chính thức
Bài viết: 38
Ngày tham gia: Thứ 5 26/03/2009 4:58 pm
Tiếp xúc:

Re: Mã hóa và Giải mã một File bất kỳ

Gửi bài by xinhx89 »

Cái này dùng thuật toán gì thế? À có bạn nào biết mấy cái file .dat lưu trữ những tin nhắn lưu trữ của yahoo mã hóa bằng thuật toán gì không. Mỡ ra toàn thấy ký tự lạ. Hic.
Hình đại diện của thành viên
tuyen_dt18
Guru
Guru
Bài viết: 261
Ngày tham gia: Thứ 7 19/04/2008 8:46 pm
Đến từ: Hưng Yên
Been thanked: 40 times
Tiếp xúc:

Re: Mã hóa và Giải mã một File bất kỳ

Gửi bài by tuyen_dt18 »

THuật toán thì có rất là nhiều. Nhưng chung quy lại chỉ là làm cho các ký tự ban đầu không còn nguyên dạng ban đầu. Nhưng phảỉ có một cơ sở căn cứ nhất định để có thể chuyển lại dạng ký tự ban đầu khi giải mã.
Ví dụ : Có thể để nguyên dạng chữ cái nhìn được nhưng xáo trộn vị trí của các ký tự, hay đưa các ký tự ban đầu làm sao cho ra các ký tự càng khó nhìn càng tốt.
Nếu mà bạn hỏi cách mã hóa của các chương trình khác thế nào thì làm sao mình biết được. Nếu dễ biết được thì gọi gì là bảo mật nữa.

Còn cách mã hóa như trên mà tôi đưa ra là :
Đầu tiên đọc từng ký tự một trong tệp tin bất kỳ muốn mã hóa, sau đó đưa ký tự vừa đọc ra mã của ký tự bằng các hàm của VB như Asc() hay AscW(). Sau đó cho And với một số nào đó , có thể dựa vào Mật khẩu để tạo ra số đó, rồi lại đưa số vừa And được ra dạng ký tự và ghi vào vị trí vừa đọc.Cứ thế ta đọc đến khi gặp ký tự cuối cùng .
Còn cách mã hóa dựa vào hàm Rnd đó là để việc khôi phục lại ký tự ban đầu được chính xác.
Hàm Rnd() nếu cung cấp một số âm trước thì khi gọi tiếp ta được một số mà nếu lặp lại thao tác đó lần nữa thì ta vẫn được số y nguyên như vậy.
Thế cho nên con số làm cơ sở để khôi phục ký tự ban đầu sẽ chính xác như lần mã hóa.
Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.
Hình đại diện của thành viên
THE LAST LEAF
VIP
VIP
Bài viết: 60
Ngày tham gia: Thứ 3 24/05/2005 9:32 am
Đến từ:
Tiếp xúc:

Re: Mã hóa và Giải mã một File bất kỳ

Gửi bài by THE LAST LEAF »

xinhx89 đã viết:Cái này dùng thuật toán gì thế? À có bạn nào biết mấy cái file .dat lưu trữ những tin nhắn lưu trữ của yahoo mã hóa bằng thuật toán gì không. Mỡ ra toàn thấy ký tự lạ. Hic.
yahoo archive cũng xử dụng kiểu mã hóa xor các byte thôi mà
http://www.venkydude.com/articles/yarchive.htm
Hình đại diện của thành viên
delta_hung1992
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 82
Ngày tham gia: Thứ 5 06/11/2008 10:51 pm

Re: Mã hóa và Giải mã một File bất kỳ

Gửi bài by delta_hung1992 »

Function này không được tối ưu lắm. Em đã thử với file 900KB thì thời gian mã hóa là 3min 02sec, còn các file lớn hơn thì còn lâu nữa. À mà cái KeyPass dùng để làm gì thế? Em thấy nó chẳng tham gia vào quá trình mã hóa, đến cái đoạn gán cái biến X thì nó hết nhiệm vụ, rồi biến X cũng không tham gia vào quá trình mã hóa. Thêm nữa, mã hóa nhờ vào biến RandomInteger, mà giá trị biến này lại là ngẫu nhiên, sau đó chẳng ghi lại giá trị biến này vào đâu cả, thế thì giải mã lại sao được :| ? Nếu theo cách này sẽ mất file vĩnh viễn (vì đâu biết pass) :((
Keep moving forward
Hình đại diện của thành viên
tuyen_dt18
Guru
Guru
Bài viết: 261
Ngày tham gia: Thứ 7 19/04/2008 8:46 pm
Đến từ: Hưng Yên
Been thanked: 40 times
Tiếp xúc:

Re: Mã hóa và Giải mã một File bất kỳ

Gửi bài by tuyen_dt18 »

Cái này để nhận giá trị từ hàm Random thôi.Ta phải gọi hàm Random để phát sinh bộ tạo số ngẫu nhiên.Mà gọi hàm này nó trả về giá trị nên ta phải gán cho nó tên một biến chứ.
Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.
Đăng trả lời

Quay về