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

49

Chương 1: Phát triển ứng dụng

10.

10.

Xác minh m t assembly tên m nh không b s a đ i

ị ử ổ

Xác minh m t assembly tên m nh không b s a đ i

ị ử ổ

Bạn cần xác minh rằng một assembly tên mạnh chưa hề bị sửa đổi sau khi nó
được biên dịch.

Sử dụng công cụ Strong Name (sn.exe) để xác minh tên mạnh của assembly.

Mỗi khi nạp một assembly tên mạnh, bộ thực thi .NET lấy mã băm đã-được-mật-hóa (được
nhúng trong assembly) và giải mật hóa với khóa công khai (cũng được nhúng trong
assembly). Sau đó, bộ thực thi tính mã băm của assembly manifest và so sánh nó với mã băm
vừa-được-giải-mật-hóa. Quá trình xác minh này sẽ nhận biết assembly có bị thay đổi sau khi
biên dịch hay không.
Nếu một quá trình xác minh tên mạnh thất bại với một assembly thực thi, bộ thực thi sẽ hiển
thị hộp thoại như hình 1.2. Nếu cố nạp một assembly đã thất bại trong quá trình xác minh, bộ
thực thi sẽ ném ngoại lệ

System.IO.FileLoadException

với thông điệp “Strong name

validation failed”.

Hình 1.2 Lỗi khi cố thực thi một assembly tên mạnh đã bị sửa đổi

Ngoài việc tạo và quản lý các khóa tên mạnh (đã được thảo luận trong mục 1.8), công cụ
Strong Name còn cho phép xác minh các assembly tên mạnh. Để xác minh assembly tên mạnh
HelloWorld.exe không bị sửa đổi, sử dụng lệnh

sn -vf HelloWorld.exe

. Đối số

-v

yêu cầu

công cụ Strong Name xác minh tên mạnh của một assembly xác định, đối số

-f

buộc thực hiện

việc xác minh tên mạnh ngay cả nó đã bị vô hiệu trước đó cho một assembly nào đó. (Bạn có
thể sử dụng đối số

-Vr

để vô hiệu việc xác minh tên mạnh đối với một assembly, ví dụ

sn -Vr

HelloWorld.exe

; mục 1.11 sẽ trình bày lý do tại sao cần vô hiệu việc xác minh tên mạnh).

Nếu assembly này được xác minh là không đổi, bạn sẽ thấy kết xuất như sau:

Microsoft (R) .NET Framework Strong Name Utility Version 1.1.4322.573

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Assembly 'HelloWorld.exe' is valid

Tuy nhiên, nếu assembly này đã bị sửa đổi, bạn sẽ thấy kết xuất như sau:

Microsoft (R) .NET Framework Strong Name Utility Version 1.1.4322.573

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Failed to verify assembly -- Unable to format error message 8013141A

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.