toán nổi tiếng trong mã hóa đổi xứng là: DES, Triple DES3DES, RC4, AES,...- Hệ mật mã bất đổi xứnghay còn gọi là mật mã khóa công khai: Các hệ mật này dùng một khóa để mã hóa sau đó dùng
Trang 1Bộ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ Nội
• • • •
BÀI TẬP LỞN
MÔN AN TOÀN BẢO MẬT THÔNG TIN
ĐÈ TÀI: XÂY DƯNG CHƯƠNG TRÌNH MÃ HÓA
Họ và tên sinh viên :
Bùi Đăng Tân Nguyễn Văn Thàng Cao Thế Thắng
2018602630 2018603539 2018606392
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1 ? TỒNG QUAN 2
CHƯƠNG 2 ? KÉT QUẢ NGHIÊN CỨU 7
2.1 Giới thiệu 7
2.2 Nội dung thuật toán 7
2.3 Cài đặt và triển khai 9
2.3.1 Công cụ lập trình NetBeans 9
2.3.2 Công cụ lập trình Visual Studio 13
2.3.3 Công cụ lập trình PyCharm 17
2.4 Thực hiện bài toán 18
2.4.1 Phân công công việc 18
2.4.2 Bùi Đăng Tân - Viết chương trình demo mã hóa và giải mã Êlgamal bằng ngôn ngữ lập trình Java 18
2.4.3 Nguyễn Văn Thàng - Viết chương trình demo mã hóa và giải mã Êlgamal bằng ngôn ngữ lập trình C# 24
2.4.4 Cao Thế Thắng - Viết chương trình demo mã hóa và giải mã Êlgamal bằng ngôn ngữ lập trình Python 28
CHƯƠNG III? PHẦN KIÉN THỨC LĨNH HỘI VÀ BÀI HỌC KINH NGHIỆM 33
3.1 Nội dung đã thực hiện 33
3.2 Hướng phát triển 37
KÉT LUẬN 39
TÀI LIỆU THAM KHẢO 40
Trang 3LỜI MỞ ĐẦU
Ngày nay với sự phát triển như vũ bão của khoa học công nghệ Trong đó,ngành CNTT có vị thế dẫn đầu và có vai trò rẩt quan trọng trọng trong sự pháttriển chung Các lĩnh vực của CNTT được áp dụng trong nhiều lĩnh vực củacuộc sổng Vì vậy, vẩn đề bảo mật thông tin là một trong những vẩn đề được đặtlên hàng đầu trong quá trình phát triển của các lĩnh vực
Bắt nguồn với ý tưởng này, cùng với những gợi ý của giảng viên TrầnPhưong Nhung, chúng em đã chọn đề tài ‘Xây dựng chưong trình mã hoá vàgiải mã Elgammal” và đã hoàn thành báo cáo thực nghiệm đúng phần kế hoạchđược giao Có được kết quả như vậy, nhóm chúng em xin được gửi lời cảm onsâu sắc tới giảng viên Trần Phưong Nhung, người đã hướng dẫn chúng em trongsuốt quá trình làm báo cáo thực nghiệm này
Chúng em xin chân thành cảm on !
Trang 4CHƯƠNG 1 ? TỔNG QUAN
Ngày nay, việc trao đổi thông tin qua internet là một việc cự kỳ phổ biến,
nó là một phần quan trọng không thể thiếu trong đời sổng và công việc của mỗingười đặc biệt là trong thời kỳ dịch bệnh Covid-19 đang diễn biến phức tạp Bêncạnh việc trao đổi thông tin thì không thể thiếu được bảo mật thông tin Bởi vìthông tin sau khi được đưa lên mạng thì rẩt dễ bị đánh cắp hoặc bị sửa đổi Đểđảm bảo việc truyền tin an toàn và kiểm tra tính toàn vẹn của thông tin, người tathường mã hóa thông tin trưỜc khi truyền đi bằng các một sổ các hệ mật nhưDES, Triple DES(3DES), RC4, AES, RSA, Rabin, Diffle-Hellman, Elgamal,
Một hệ thổng mật mã là một hệ bao gồm 5 thành phần (P, C, K, E, D)thỏa mãn các tính chẩt :
- P (Plaintext) là tập hợp hữu hạn các bản rõ có thể (hay còn gị là khônggian bản rõ)
- C (Ciphertext) là tập hợp hữu hạn các bản mã có thể (hay còn gọi làkhông gian bản mã)
- K (Key) là tập hợp các bản khóa có thể (hay còn gọi là không giankhóa)
- E (Encryption) là tập hợp các quy tắc mã hóa có thể.(hay còn gọi làkhông gian các hàm mã hóa)
- D (Decryption) là tập hợp các quy tắc giải mã có thể(hay còn gọi là
không gian các hàm giải mã)Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lênthông tin P để trở thành thông tin để trở thành thông tin đã mã hóa C
Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin
C để được thông tin đã giải mã
Hệ mật mã gồm 2 loại :
- Hệ mật mã đổi xứng (hay còn gọi là hệ mật mã khóa bí mật): là những
hệ mật dùng chung một khóa cả trong quá trình mã hóa và giải mãthông tin Do đó khóa phải được giữ bí mật tuyệt đổi Một sổ thuật
Trang 5toán nổi tiếng trong mã hóa đổi xứng là: DES, Triple DES(3DES), RC4, AES,
- Hệ mật mã bất đổi xứng(hay còn gọi là mật mã khóa công khai): Các
hệ mật này dùng một khóa để mã hóa sau đó dùng một khóa khác đểgiải mã, nghĩa là khóa để mã hóa và khóa để giải mã là khác nhau
Các khóa này tạo nên từng cặp chuyển đổi ngược nhau và không cókhóa nào có thể suy được ra khóa còn lại Khóa dùng để mã hóa có thểcông khai nhưng khóa dùng để giải mã thì giữ bí mật Do đó trongthuật toán này có hai loại khóa: khóa dùng để mã hóa được gọi là khóacông khai-Public Key còn khóa để giải mã được gọi là khóa bí mật-Private Key Một sổ thuật toán mã hóa công khai nổi tiếng: Diffle-Hellman, Elgamal, RSA, Rabin,
Mật mã khóa công khai là bước tiến lờn của ngành mật mã Hệ mật mã rađời đã phá bỏ tư duy cũ về mật mã, đồng thời có nhiều ứng dụng to lớn như:phân phổi khóa, chữ ký sổ v.v Mặc dù giải quyết được điểm yếu logic của hệmật mã khóa đổi xứng nhưng hệ mật mã khóa công khai(bất đổi xứng) đồng thờibiến điểm mạnh của hệ mật mã khóa bí mật thành điểm yếu của mình Hệ khóacông khai tính toán chậm do liên tục xử lý các sổ lớn (ở ElGamal là tính toánvới sổ nguyên tổ lớn) Để đảm bảo tính an toàn của hệ mật mã ElGamal Mộtquy luật tự nhiên là yếu ở đâu thì ta khắc phục ở đó Để giảm thời gian tính toáncủa hệ mật mã khóa công khai, ta đang cổ gắng thực hiện Giảm độ dài khóađồng thời vẫn giữ được tính an toàn của hệ mật mã Đây chính là xu thế của mật
mã học hiện nay
Xuất phát từ mong muổn tìm hiểu, tạo nên một chưong trình demo mãhóa và giải mã thông tin và lợi ích mà việc mã hóa mang lại như trên cùng vớiyêu cầu bài tập lớn của môn an toàn và bảo mật thông tin nên nhóm 16 chúng
em đã lựa chọn tìm hiểu về hệ mã hóa công khai (hệ mật mã bất đổi xứng)Elgamal với mục đích hiểu rõ phưong pháp, cách thức thực hiện mã hóa, giải mã
và các thuật toán dùng để mã hóa và giải mã thông tin Qua đó ta có thể thấy
Trang 6được tầm quan trọng của hệ mã hóa công khai Elgamal đổi với việc truyền tin an toàn và kiểm tra tính toàn vẹn của thông tin.
Hệ mật mã Elgamal được đề xuẩt lần đầu tiên vào năm 1985 bởi TaherElgamal
Hệ Elgamal dựa trên bài toán logarithm rời rạc nên tính bảo mẩt của hệmật Elgamal phụ thuộc vào độ phức tạp của bài toán logarithm
- Là hệ mã hóa bẩt đổi xứng sử dụng tính chẩt của các bài toán mà việctính xuôi rẩt dễ dàng nhưng việc tính ngược lại lại tổn nhiều thời gian,
có thể đến hàng triệu năm
- Hệ Elgamal là 1 biến thể của so đồ phân phổi khóa Diffie-Hellmal
- So với RSA, Hệ Elgamal không có nhiều rắc rổi về vẩn đề quyền sửdụng
Thuật toán tạo khóa trong hệ mã hóa Elgamal ?
- B1 ? Chọn một sổ nguyên tổ p lớn
- B2 ? Chọn một giá trị nguyên thủy alpha trong modulo của p
- B3 ? Chọn ngẫu nhiên một sổ a sao cho 2 <= a <= p-2 (sổ a này dongười nhận chọn và được dùng để làm khóa bí mật nên chỉ có ngườinhận mới biết được khóa này)
- B4 ? Tính beta = alpha mũ a mod p (p = aa mod p) (sử dụng thuật toánbình phưong và nhân trong modulo)
- B5 ? Ta thu được khóa công khai Kpublic = (p, a, p)
- V à khóa bí mật Kprivate = (a)
Thuật toán mã hóa Elgamal ? Để mã hóa thông tin x ta làm theo các bước ?
- B1 ? Chọn một sổ nguyên bí mật ngẫu nhiên k thuộc [0, p-2]
- B2 ? Tính y1 = ak mod p (sử dụng thuật toán bình phưong và nhântrong modulo)
- B3 ? Tính y2 = x * pk mod p(sử dụng thuật toán bình phưong và nhântrong modulo và loại bỏ k)
- B4 ? Thu được bản mã hóa của thông tin x là ? (y1, y2)
Trang 7- Loại bỏ k ở bước thứ 3 để giữ k luôn là một bí mật không bị rò rỉ rabên ngoài Điều này rẩt cần thiết vì điểm mạnh của thuật toán này dựatrên việc giải cho k là khó Do đó, nếu như có người dùng muốn đánhcắp thông tin có đueọc quyền truy cập và k, họ có thể giải mã thôngtin mà không cần khóa riêng tư.
Thuật toán giải mã Elgamal ? Để giải mã thông tin từ cặp mã hóa (yl, y2)
ta làm như sau ?
- Bl ? Tính M = (yla)-l mod p = (yl)p-l-a mod p(có thể dùng thuậttoán nghịch đảo của phép nhân modulo hoặc dùng thuật toán bìnhphương và nhân trong modulo)
- B2 ? Tính x = y2 * M mod p
- Sau hai bước trên ta thu được bản rõ ban đầu x
Ưu điểm của hệ mật mã Elgamal ?
- Độ phức tạp của bài toán logarith lớn nên độ an toàn cao
- Bản mã phụ thuộc vào bản rõ x và giá trị ngẫu nhiên nên từ một bản rõ
ta có thể có nhiều bản mã khác nhau
Nhược điểm của hệ mật mã Elgamal ?
- Tốc độ chậm do phải xử lý với số nguyên lớn
- Dung lượng bộ nhớ dùng cho việc lưu trữ khóa yêu cầu phải lớn
Trong quá trình thực hiện đề tài này, các thành viên trong nhóm đã vậndụng các kiến thức đã được giảng dạy bởi giảng viên-ThS Trần Phương Nhungtrong bộ môn An toàn và bảo mât thông tin, cùng với các kiến thức được tíchlũy trong quá trình học tập trên ghế nhà trường và các kiến thức thu thập đượctrên internet Dựa vào những kiến thức đó nhóm chúng em đã lựa chọn các ngônngữ Java, C# và Python để ứng dụng xây dụng chương trình và demo chươngtrình thao tác vơi hệ mật khóa công khai Elgamal Việc triển khai xây dụngchương trình bằng các ngôn ngữ lập trình đòi hỏi cần phải hiểu biết thông thạo
cú pháp, cẩu trúc câu lệnh của ngôn ngữ lập trình và các thao tác trên IDE củatừng ngôn ngữ Đối với ngôn ngữ Java chúng em sử dụng NetBeans làm môitrường để thao tác Trong NetBeans chúng em đã sử dụng Java Swing để thiết kế
Trang 8form giao diện cho chưong trình demo và ứng dụng các thuật toán trong hệ mã hóa công khai Elgamal như thuật toán mã hóa, giải mã Elgamal, ngoài ra còn một sổ thuật toán liên quan khác như thuật toán Euclid mở rộng hay thuật toán bình phưong nhân Đối voi ngôn ngữ C#, chúng em sử dụng công cụ Visual Studio làm môi trường thực hiện thao tác code demo chưong trình, trong đó có phần Windows Form để kéo thả giao diện cho ngôn ngữ C# Đối vời ngôn ngữ Python, chúng em sử dụng PyCharm làm môi trường thực hiện thao tác code demo chưong trình Sử dung pyQT5 để thiết kế giao diện cho ngôn ngữ Python.
Để hoàn thành đề tài tìm hiều về hệ mật Elgamal và xây dựng chưongtrình demo mã hóa và giải mã Elgamal, mỗi thành viên trong nhóm cần phảinắm vững được ?
- Phưong pháp mã hóa Elgamal một cách thành thạo
- Đọc hiểu được một số tài liệu liên quan đến hệ mã hóa Elgamal vàcông cụ, ngôn ngữ lập trình
- Nắm vững ít nhẩt một ngôn ngữ lập trình co bản (Java, C#, Python)
- Hiểu và áp dụng các thuật toán liên quan đến hệ mã hóa Elgamal như(thuật toán sinh khóa, thuật toán mã hóa, thuật toán giải mã cùng vờicác thuật toán liên quan như thuật toán nghịch đảo của phép nhânmodulo hay thuật toán bình phưong và nhân trong modulo) vào việc
mã hóa và giải mã để giải quyết bài toán có tính ứng dụng vào thựctiễn
Chưong trình demo mã hóa và giải mã Elgamal mà nhóm đã thực hiệnthuộc lĩnh vực bảo an toàn bảo mật thông tin giúp mã hóa thông tin người gửigửi và giải mã thông tin người nhận nhận
Trang 9CHƯƠNG 2 ? KÉT QUẢ NGHIÊN cửu
Tên đề tài: Xây dựng chương trình mã hóa và giải mã Elgammal
Nội dung cần thực hiện:
- Tìm hiểu về hệ mã hóa công khai Elgammal
- ứng dụng xây dựng chương trình
- Demo chương trình
Các yêu cầu cần giải quyết:
- Hiểu rõ phương pháp mã hóa Elgammal một cách thành thạo (cả tiếngviệt và tiếng anh)
- Đọc hiểu đựợc một sổ tài liệu chuyên môn bằng tiếng Anh
- Nắm vững một ngôn ngữ lập trình cơ bản (Java, C#, C++,Matlab) vàgiải được bài toán có tính ứng dụng vào thực tiễn
Bước 1: Tạo khoá
- Chọn p là sổ nguyên tổ
- Chọn alpha thuộc zp - là phần tử nguyên thuỷ
- Chọn a thuộc {2, 3, p - 2} là khoá bí mật thứ I’ (ở phía người nhận)
- Tính beta = alphaa mod p
- Từ đó ta tạo được khoá:
kpub = z(p’ alpha, beta)
kpri = (a)Bước 2: Mã hoá
- Chọn 1 sổ bí mật k thuộc zp - 1 (0, 1, p - 2)
- Gọi phần tử của bản rõ là x, phần tử của bản mã là y
- Khi đó EKpub (x, k) = (y1, y2) với y1 = alphak mod p & y2 = x *betak mod p
Trang 10[1]? Người dung ẩn nút này để tạo key mới gồm key public (p, alpha, beta)[2]
và khóa ptivate (a)[8]
[3] ? Người dùng nhập thông tin cần mã hóa vào đây
[4] ? Người dùng ẩn nút này để bắt đầu mã hóa thông tin [3] thành bản mã [5][6]? Ẩn nút này để lẩy thông tin bản mã từ [5] sang [7]
[9] ? Ản nút này để giải mã thông tin từ bản mã[7] thành bản rõ [10]
Trang 11[11] : Đây là nút xóa toàn bộ thông tin hiện có của chương trình[12] : ẩn vào đây để thoát chương trình.
Trang 122.4 Cài đặt và triển khei
2.4.1 Công cụ lập trình NetBeans
NetBeans là một môi trường phát triển tích hợp (IDE) cho Java NetBeanscho phép các ứng dụng được phát triển từ một tập hợp các thành phần phầnmềm được gọi là modules NetBeans chạy trên Windows, macOS, Linux và
Solaris
Ngoài việc phát triển Java, nó còn có các phần mở rộng cho các ngôn ngữkhác như PHP, C, C++, HTML5 và OavaScript Các ứng dụng dựa trênNetBeans, bao gồm NetBeans IDE, có thể được mở rộng bởi các nhà phát triểnbên thứ ba
Giao diện dễ sử dụng vời người lập trình Có đầy đủ các thư viện củangôn ngữ Java giúp người lập trình sửa dụng các các API một cách dễ dàng.Ngoài ra NetBeans còn hỗ trợ người lập trình dễ dàng thiết kế giao diện vời thưviện Java Swing hay Java Awt
Hường dẫn cài đặt và chạy chưong trình demo :
Cài đặt NetBeans :
- BI : Truy cập trang https https://www.oracle.com/ để tải JDK vàcông cụ NetBeans IDE về máy
- B2 : Mở file sau khi đã tải thành công
- B3 : Ản theo hường dẫn cài đặt của phần mềm
- B4 : Thiết lập biến môi trường
- B5 : Mở công cụ và hoàn tẩt cài đặt
Chạy chưong trình demo :
- BI : Ở giao diện làm việc của NetBeans IDE, vào file chọn openproject rồi chọn project cần chạy
- B2 : Click vào nút run trên thanh công cụ hoặc nhẩp chuột phải vàotên project và chọn run
- B3 : Lúc này chưong trình demo bắt đầu chạy Đây là giao diệnchưong trình :
Trang 13Ikl Gui_ELGAMAL - □ ỉx
- B4 ? Để sử dụng chương trình mã hóa thì người dùng ẩn nútGeneration Key để chương trình tự sinh ra khóa ?
Trang 14- B5 ? Tiếp theo người dùng sẽ nhập thông tin cần mã hóa vào ô đểbắt đầu mã hóa ?
- B6 ? Click chuột vào nút Encrypt để mã hóa thông tin, ta đượcchuỗi thông tin mã hóa ?
Trang 15- B7 : Tiếp theo Click chuột vào nút Receive Ciphertext để lẩy thôngtin đã mã hóa :
- B8 : Click chuột vào nút Decrypt để lẩy giải mã thông tin đã mãhóa, ta được thông tin giải mã trùng khớp vời thông tin ban đầu:
- B9 : Click vào nút Clear để xóa toàn bộ thông tin trên cửa sổ
chưong trình, chưong trình sẽ trở về ban đầu như khi ta khởi độngchưong trình
Trang 162.4.2 Công cụ lập trình Visuel Studio
Microsoít Visual Studio là một môi trường phát triển tích hợp (IDE)
từ Microsoít Nó được sử dụng để phát triển chương trình máy tính choMicrosoít Windows, cũng như các trang web, các ứng dụng web và các dịch vụweb Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoít
Foundation, Windows Store vàMicrosoít Silverlight Nó có thể sản xuẩt cảhai ngôn ngữ máy và mã sổ quản lý
Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũngnhư cải tiến mã nguồn Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ
mã nguồn và gỡ lỗi mức độ máy Công cụ tích hợp khác bao gồm một mẫu thiết
kế các hình thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp và thiết
kế giản đồ cơ sở dữ liệu Nó chẩp nhận các plug-in nâng cao các chức năng ởhầu hết các cẩp bao gồm thêm hỗ trợ cho các hệ thống quản lý phiênbản (như Subversion) và bổ sung thêm bộ công cụ mới như biên tập và thiết kếtrực quan cho các miền ngôn ngữ cụ thể hoặc bộ công cụ dành cho các khía cạnhkhác trong quy trình phát triển phần mềm
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trìnhbiên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lậptrình Các ngôn ngữ tích hợp gồm có C, C++ và C++/CLI (thông qua Visual C++), VB.NET (thông quaVisual Basic.NET), C# (thông quaVisual C#)vàF# (như của Visual Studio 2010) Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ Nó cũng hỗtrợ XML/XSLT, HTML/XHTML, OavaScript và CSS
Microsoít cung cẩp phiên bản "Express" (đối với phiên bản Visual Studio
2013 trở về trước) và "Community" (đối với bản Visual Studio 2015 trở về sau)
là phiên bản miễn phí của Visual Studio
Trang 17Hướng dẫn cài đặt công cụ Visual Studio :
Cài đặt Visual Studio 2019 :
- B1 :Vào trang chủ của Visual Studio để tải bộ cài đặt Visual Studio
2019 mới nhẩt (https://visualstudio.microsoft.com/)
- B2 : Mở file sau khi đã tải thành công
- B3 : Ân theo hướng dẫn cài đặt của phần mềm
- B4 : Mở công cụ và hoàn tẩt cài đặt
Chạy chương trình demo :
- B1 : Ở trong giao diện làm việc, chọn open project và chọn đến thưmục chứ project Chọn open
- B2 : Lúc này chương trình demo bắt đầu chạy Đây là giao diệnchương trình :
Trang 18- B3 ? Để sử dụng chương trình mã hóa thì người dùng cần nhập cácgiá trị alpha, a, p theo điều kiện tương ứng của chúng, sau đó ẩn nútCreate Generation Key để chương trình tạo ra khóa ?
- B4 ? Tiếp theo người dùng sẽ nhập thông tin cần mã hóa vào ô đểbắt đầu mã hóa, sau đó nhẩn nút Encrypt để mã hoá dữ liệu ?
Alpha fl p Ềets
Trang 19- B5 : Tiếp theo Click chuột vào nút Receive Ciphertext để lẩy thôngtin đã mã hóa :
- B8 : Click chuột vào nút Decrypt để lẩy giải mã thông tin đã mãhóa, ta được thông tin giải mã trùng khớp vời thông tin ban đầu:
Trang 20- B9 ? Click vào nút Clear để xóa toàn bộ thông tin trên cửa sổchưong trình, chưong trình sẽ trở về ban đầu như khi ta khởi độngchưong trình.
2.4.3 Công cụ lập trình PyCherm
PyCharm là môi trường phát triển tích hợp đa nền tảng (IDE) được pháttriển bởi Jet Brains và được thiết kế đặc biệt cho Python PyCharm có mặt trên
cả 3 nền tảng Windows, Linux và Mac OS
Ưu điểm khi sử dụng PyCharm:
đến nghiên cứu Khoa Học Dữ Liệu (Data Science) hay Trí Tuệ Nhân Tạo(Machine Learning, Deep Learning)
Trang 212.5 Thực hiện bài toán
2.5.1 Phân công công việc
Nội dung trình bày ở đây ? Nêu các chức năng sẽ cài đặt và nội dung phâncông cho từng thành viên trong nhóm
Tên sinh vỉcn
-Bui Đăng Tân
Tên công việc— -—-————
- Tìm hiểu về ngôn ngữ lập trình Java
- Tìm hiểu về công cụ lập trình Java NetBeans
- Viết chương trình demo mã hóa và giải mã Elgamalbằng ngôn ngữ lập trình Java
Nguyễn Văn Thàng - Tìm hiểu về ngôn ngữ lập trình C#
- Tìm hiểu về công cụ lập trình C# Visual Studio
- Viết chương trình demo mã hóa và giải mã Elgamal
- Tìm hiểu về công cụ lập trình Python Pycharm
- Viết chương trình demo mã hóa và giải mã Elgamalbằng ngôn ngữ lập trình Python
2.5.2 Bùi Đăng Tân - Viết chương trình demo mã hóa và giải mã Elgamal bằng ngôn ngữ lập trình Java
• Tìm hiểu về ngôn ngữ lập trình Java
Java là một trong những ngôn ngữ lập trình hướng đôi tượng Nó được sửdụng trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị
di động
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở SunMicroSystem năm 1991 Ban đầu Java được tạo ra nhằm mục đích viết phầnmềm cho các sản phẩm gia dụng, và có tên là Oak
Java được phát hành năm 1994, đến năm 2010 và được Oracle mua lại từSun MicroSystem