Java – Mã hóa và giải mã với thuật toán RSA

Công nghệ mã hóa

Mã hóa và giải mã dữ liệu là kỹ thuật nhằm bảo mật dữ liệu, xác thực và đảm bảo tính toàn vẹn của thông tin được truyền trên các phương tiện truyền thông. Mã hóa là thao tác chuyển đổi văn bản hoặc dữ liệu ban đầu thành một hình thức mã hóa hay các bản mã bằng cách áp dụng các biến đổi toán học. Ngược lại với thao tác này là giải mã. Giải mã truy xuất dữ liệu gốc từ các bản mã sử dụng một khóa giải mã.

Khi nói đến mã hóa, chúng ta dễ liên tưởng đến những bộ phim trình chiếu những đoạn mã số dài chạy nhấp nháy trên màn hình với những thông điệp khó hiểu. Hay cuộc chiến giữa Apple và FBI về vụ thông tin bị mã hóa mà chính phủ Mỹ buộc Apple phải giải mã thông tin trên chiếc iPhone của thủ phạm trong vụ xả súng ở San Bernardino, Mỹ. Nói đơn giản, mã hóa là một kỹ thuật làm cho nội dung không thể đọc được đối với bất kỳ ai không có chìa khóa. Ta có nghe thấy những thông tin như gián điệp sử dụng mã hóa để gửi thông tin bí mật, các tướng chỉ huy quân đội gửi nội dung mã hóa để phối hợp chiến đấu cho đồng bộ, còn tội phạm sử dụng mã hóa để trao đổi thông tin và lên kế hoạch hành động, tin nhắn của người dùng được mã hóa để kể cả quản trị tối cao của hệ thống cũng không đọc được…

Các hệ thống mã hóa cũng xuất hiện trong hầu hết mọi lĩnh vực liên quan đến công nghệ, không chỉ che dấu thông tin của tội phạm, kẻ thù hay gián điệp mà còn xác thực và làm rõ những thông tin rất cơ bản, rất cá nhân.

Mã hóa và giải mã dữ liệu trong java – Các thuật toán mã hoá cơ bản

Có nhiều thuật toán mã hóa được phổ biến rộng rãi và được sử dụng trong an ninh thông tin. Chúng được phân loại gồm mã hoá khoá đối xứng và mã hoá khoá không đối xứng. Trong mã hóa khóa đối xứng chỉ có một khoá (key) được sử dụng để mã hóa và giải mã dữ liệu. Trong mã hoá khóa bất đối xứng sử dụng hai khoá là khóa riêng và khoá công khai. Trong đó khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã. Bảng bên dưới trình bày các thuật toán mã hoá phổ biến.

AES DES RSA
Developed 2000 1977 1978
Key Size 128, 192, 256 bits 56 bits >1024 bits
Algorithm Đối xứng (Symmetric) Đối xứng (Symmetric)  Bất đối xứng         (Asymmetric)

Tuy nhiên trong bài này mình sẽ sử dụng RSA để mô tả

Mã hóa và giải mã dữ liệu trong java(RSA) – Cách thức hoạt động

Thuật toán RSA có hai khóa: khóa công khai (public key) và khóa bí mật (private key). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.

Ví dụ về mã hóa và giải mã(RSA) một chuỗi kí tự

  1. Tạo cặp khoá

  1. Mã hoá dữ liệu

Giải mã dữ liệu

Dữ liệu sau khi giải mã: helloworld

Qua bài viết này hy vọng có thể phần nào giúp các bạn học lập trình Java có cái nhìn cơ bản về mã hóa .

Java – Mã hóa và giải mã với thuật toán RSA
5 (100%) 11 votes

Nhận xét