Các bác xem thử:
http://teamdn.info/crypto/index.php
php nó support nhiều hàm quá đâm ra cũng mất hay, mong được xem các bài bằng C của anh em
Lâu lắm rồi pete không có cảm giác vui như mấy hôm nay. Không biết tại sao
. Nhìn lại forum mình cũng đã gần 2 năm rồi mà chưa thấy phát triển mạnh cho lắm. Quanh quẩn cũng chỉ qua box C/C++ cơ bản thôi, mà không thấy nâng cao mấy
. Ngồi chat với mấy ông bạn pete nghĩ ra cái này. Thời đại mới, xã hội phát triển, lập trình viên mà không đi nhanh theo thời đại thì không thể làm việc được. Chắc là đúng
?. Vì thế forum cần mọi người cùng tham khảo và trao đổi nhiều hơn , cùng nhau tiến bộ. Topic này xin bắt đầu bằng các vấn đề về mật mã hóa CRYPTO. Cái này chắc mọi người biết để làm gì
.
* Vì đây là bài đầu tiên, mà pete cũng có giới hạn về vấn đề này nên mình đưa ra thuật toán mã hóa đầu tiên rất đơn giản
[Method : chuyển chuỗi sang ASCII Numbers sau đó viết ngược lại, lấy cặp 2 chữ số lại convert từ số sang char theo bảng ASCII, được cái code đã mã hóa. Chuỗi nhập vào giới hạn : chữ cái thường, chữ hoa, và số.]
Ví dụ : chuoiIn = "ABC" -> chuoiInRaSo = "656667" -> chuoiOutSo="766656" -> chuoiOut = "LB8";
* Anh em cùng luyện skill cho ra sản phẩm mã hóa và giải mã nhé ^^, sản phẩm viết = gì cũng OK, C/C++/C# Console hay API đều hay cả ^^.
* Ai có thuật toán crypt gì hay ý kiến gì thì cũng cho anh em biết ý kiến tham khảo nhé !
===Có gì không phải anh em góp ý để cải thiện nhé===
---------Tất cả vì lợi ích chung--------------
None!
Các bác xem thử:
http://teamdn.info/crypto/index.php
php nó support nhiều hàm quá đâm ra cũng mất hay, mong được xem các bài bằng C của anh em
Trước khi yêu cầu ebook, bạn nên search ở:
http://www.flazx.com/
http://knowfree.net/
http://www.itstudy8.org/
Falling in love with Java
uhm cách trên của pete thì cũng hay nhưng mà phải có thêm 1 số điều kiện ràng buộc nữa , nếu chuổi nhập vào có chữ có mã ASCII là 89 thì ngược lại sẽ là 98 nếu in ra thì không thể ở dạng kí tự được.chuoiIn = "ABC" -> chuoiInRaSo = "656667" -> chuoiOutSo="766656" -> chuoiOut = "LB8";
kidkid nghĩ như thế này : Chúng ta có thể lấy 1 kí tự nào đó làm khóa ví dụ đơn giản như trong mật thư : kidkid cho chuỗi " anh yeu em " và có khóa là a = b như vậy chuỗi xuất ra sẽ là : "boi jfv fn" như thế là đơn giản . Nếu phức tạp thì rườm ra hơn một chút . như vậy sẽ ok ngay !
Ặc lâu rồi mới vào lại mà chẳng thấy ma nào cho ý kiến thế này ? Lão pete lập ra thì phải xung phong đi đầu chứ chẳng lẽ đợi anh em nhắc à ? Kid tui chờ lâu quá nên đành spam vậy !
Hi, việc mà pete giao tớ đã hoàn thành, 1 chương trình mô tả thuật toán mà pete đã nói, do chương trình này được làm trong quá trình mình mày mó Windows Forms nên không được pro lắm, post lên để mọi người test xem có bug nào không? Có gì phản hồi....cho pete. Sau đây là link tải file thực thi chương trình (lưu ý: do được làm từ C# nên yêu cầu máy các bạn phải cài .NET FRAMEWORK v2.0)
http://www.zshare.net/download/crypto-exe-kf2.html
http://www.zshare.net/download/crypto-exe-kyz.html
Vừa làm xong kiểm tra dùm! chỉ là consol thôi!Code:#include<conio.h> #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include<string.h> int daoSo(int s) { int t,m; int x=s; t=x%10; while(x/10>0) { x=x/10; m=x%10; t=t*10 +m; } return t; } void main() { char s1[1000],s2[1000]; int t1[1000],len,t2[1000]; cout<<"Nhap vao chuoi can ma hoa:"; cin>>s1; len=strlen(s1); cout<<"Ma ASCII:"; for(int i=0;i<len;i++) { t1[i]=s1[i]; cout<<t1[i]; } cout<<endl; cout<<"Dao ma ASCII:"; for(i=len-1;i>=0;i--) { t2[i]=daoSo(t1[i]); s2[i]=t2[i]; cout<<t2[i]; } cout<<endl; cout<<"Cac ki tu sau khi ma hoa:"; for(i=len-1;i>=0;i--) cout<<s2[i]; cout<<endl; getch(); }
Ok !
Hiện giờ :
Lần sau post lên nhớ có thêm source và cipher của các cậu nhé ^^! Để mọi người tham gia thảo luận và nghiên cứu.Code:ID | Points ------------------------ ntnam 5/10 <không có đưa ra source + cipher> neverland87 6/10 <---như trên---1 extra do diễn dịch quá trình crypt :D> soda_chanhmuoi 5/10 <không có chương trình mẫu>
Đã được chỉnh sửa lần cuối bởi Xcross87 : 30-04-2007 lúc 11:22 PM.
None!
Source code của neverland87 :
Code:http://www.mediafire.com/?9az2dtoezt2
cipher là j` vậy?"soda_chanhmuoi 5/10 <không có chương trình mẫu>" là sao?Ok !
Hiện giờ :
Code:
ID | Points
------------------------
ntnam 5/10 <không có đưa ra source + cipher>
neverland87 6/10 <---như trên---1 extra do diễn dịch quá trình crypt>
soda_chanhmuoi 5/10 <không có chương trình mẫu>
Lần sau post lên nhớ có thêm source và cipher của các cậu nhé ^^! Để mọi người tham gia thảo luận và nghiên cứu.
Một số thuật ngữ Crypto :
+ Encrypt : mã hóa
+ Decrypt : giải mã
+ Cipher : phương pháp mã hóa (=algorithm)
+ Key : Một chuỗi kí tự chữ số từ thuật toán mà có thể dùng để mã hóa và giải mã.
+ Plaintext : dữ liệu chưa được mã hóa hoặc đã được giải mã
+ Ciphertext : dữ liệu được mã hóa
Trên là 1 số thuật ngữ cơ bản trong Crypto.
Tại sao mình làm cái Topic về crypto này ?
- Câu trả lời đơn giản : rèn luyện tư duy thuật toán, thực hành kĩ năng lập trình, biết càng nhiều càng ít.
_ Các bạn có thể tham gia thảo luận hoặc không.
=================================================
Một ví dụ về mã hóa :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
--------------------------------------------------
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
như vậy nếu như dữ liệu cần mã hóa là :
--------------------------------------------------
ATTACK AT DAWN AT THE NORTHERN BRIDGE
--------------------------------------------------
trở thành
--------------------------------------------------
SLLSUC SL VSOF SL LZW FGJLZWJF TJAVYW
--------------------------------------------------
+ Tại sao lại thế ?
+ %Trả lời : để ý thấy các kí tự bị dịch sang phải 18 đơn vị bắt đầu từ A. Vì vậy người ta quy ước Key ( = khóa) = 18. Và đây là một trong những cipher nổi tiếng nhất thể giới, "Caesar Cipher" ( =Mã Xê-da).
<Các bạn có thể tìm đọc lại lịch sử về vua Julius Caesar để tìm thêm chi tiết>
$-=Mục tiêu của chúng ta lần này là gì ?
#Bắt đầu bằng các chương trình thể hiện phương pháp mã hóa trên.
#Nhớ post một poster về chương trình mẫu của bạn và source lên cho mọi người tham khảo nhé !
#Học rồi mới biết mình ngu. Vì ngu mới càng phải học cho bằng bạn bằng bè#
@Hết bài 1. <=Cipher Key 18=>
None!