Đôi khi người lập trình cần một thỏa thuận đặt tên chung để hàng trăm các chuẩn, thuật toán, và kiểu dữ liệu được được đặt dưới 1 tên duy nhất. OIDs (Object Identifiers) sẽ định nghĩa và quản lý bằng số các cấu trúc, bao gồm cả ANSI (American National Standards Institute), với mục đích định danh duy nhất các kiểu thông qua một sơ đồ phân cấp logic. Có số lượng lớn OIDs để định danh mỗi kiểu riêng biệt như : giao thức, thuật toán, các kiểu dữ liệu. Chi tiết hơn, phần lớn các thuật toán mã hóa được công nhận bởi ANSI đều được đăng ký với một tên duy nhất trong OID. Ví dụ OIDs thường được sử nhất dụng cho thuật toán băm ở hình dưới. Chúng ta sẽ xem OIDs một cách cụ thể trong các lớp của .NET Security Framework như SignHash và
VerifyHash trong lớp RSACryptoServiceProvider và DSACryptoServiceProvider.
Cryptographic Hash Algorithm OID
MD5 1.2.840.113549.2.5
SHA-1 1.3.14.3.2.26
SHA-256 2.16.840.1.101.3.4.2.1
SHA-384 2.16.840.1.101.3.4.2.2
SHA-512 2.16.840.1.101.3.4.2.3
Đoạn mã nhỏ dưới đây là ví dụ minh họa việc sử dụng OID như một thành phần trong phương thức SignHash của lớp RSACryptoServiceProvider. Tất nhiên nó chỉ là giả định vì biến hashbytes là một mảng byte đã được tạo ra bằng cách gọi hàm ComputerHash của lớp SHA1.
//create RSA object using default key
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); //sign hash using OID for SHA-1
CHƯƠNG 5: LẬP TRÌNH VỚI MÃ HOÁ ĐỐI XỨNG VÀ MÃ HOÁ BẤT ĐỐI XỨNG TRONG .NET
Trong phần này chúng ta sẽ cùng đi sâu và nghiên cứu về lập trình ứng dụng mã hóa file sử dụng các thuật toán mã hóa đối xứng và bất đối xứng đã đề cập ở trên để có một cái nhìn cụ thể hơn về lớp cryptography va lập trình mã hóa trong .NET