CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 562

562
Chương 14: Mật mã

Giao diện

ICryptoTransform

không quá khó sử dụng, nhưng không mấy thân thiện; do vậy

.NET Framework kèm thêm lớp

System.Security.Cryptography.CryptoStream

. Đây là lớp

dẫn xuất từ

System.IO.Stream

, dùng để đơn giản hóa việc mật hóa và giải mật hóa dữ liệu

được đọc từ các đối tượng

Stream

khác. Lớp này cho phép bạn mật hóa và giải mật hóa dữ

liệu từ các file và các kết nối mạng một cách dễ dàng bằng một mô hình xử lý quen thuộc, và
nó cung cấp cho bạn tất cả các tiện ích quen thuộc khi truy xuất dữ liệu dựa-vào-

Stream

.

Phương thức khởi dựng của

CryptoStream

yêu cầu ba đối số: một

Stream

nằm dưới, một thể

hiện của

ICryptoTransform

, và một giá trị thuộc kiểu liệt kê

System.Security.Cryptography.CryptoStreamMode

. Giá trị

CryptoStreamMode

cho biết chế độ

của đối tượng

CryptoStream

mới; các giá trị hợp lệ là

Read

Write

. Khi bạn gọi phương thức

Read

hay

Write

của

CryptoStream

,

CryptoStream

sẽ sử dụng thể hiện

ICryptoTransform

để

mật hóa và giải mật hóa dữ liệu đang truyền qua

CryptoStream

. Đối tượng

CryptoStream

bảo

đảm kích thước khối dùng cho thể hiện

ICryptoTransform

luôn đúng.

Cấu hình của một đối tượng

CryptoStream

có tính linh hoạt cao, nhưng có thể hơi khó hiểu.

Bảng 14.4 mô tả hoạt động của một đối tượng

CryptoStream

dựa trên chế độ của

CryptoStream

và kiểu thể hiện

ICryptoTransform

được sử dụng trong phương thức khởi dựng

của

CryptoStream

.

Bảng 14.4 Hoạt động của đối tượng CryptoStream

Chế độ của

CryptoStream

Chỉ thị của

ICryptoTransform

Mô tả

Read

Mật hóa

Stream

nằm dưới chứa plaintext nguồn.

CryptoStream.Read

ghi ciphertext ra bộ đệm xuất.

Read

Giải mật hóa

Stream

nằm dưới chứa ciphertext nguồn.

CryptoStream.Read

ghi plaintext ra bộ đệm xuất.

Write

Mật hóa

CryptoStream.Write

chỉ định plaintext cần mật hóa.

Stream

nằm dưới nhận ciphertext đã-được-mật-hóa.

Write

Giải mật hóa

CryptoStream.Write

chỉ định ciphertext cần giải mật

hóa.

Stream

nằm dưới nhận plaintext đã-được-giải-

mật-hóa.

Lớp

SymmetricEncryptionExample

dưới đây trình bày cách sử dụng giải thuật Triple DES để

mật hóa một file và rồi giải mật hóa file đó. Phương thức

Main

nhận tên của file cần mật hóa

làm đối số dòng lệnh. Trước tiên, nó sẽ tạo khóa và vectơ khởi động; sau đó, gọi phương thức

EncryptFile

, kế tiếp là phương thức

DecryptFile

, và sinh ra hai file: file thứ nhất chứa phiên

bản đã-được-mật-hóa của file nguồn, file thứ hai chứa phiên bản đã-được-giải-mật-hóa của
file đã-được-mật-hóa (giống file nguồn).

using System;

using System.IO;

using System.Security.Cryptography;

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.