2011-01-31 49 views
8

Tôi nên bắt đầu lập trình bằng C# (.NET) cho thẻ thông minh như thế nào? Để bắt đầu, tôi chỉ cần biết, tên của Đầu đọc thẻ (ví dụ: Omnikey) và in ra.Lập trình thẻ thông minh C#

Cảm ơn câu trả lời, Ales.

Trả lời

13

Một thời gian ngắn, tôi phải viết những gì tôi nghĩ sẽ là một số mã thẻ thông minh đơn giản và dễ dàng và hãy để tôi nói với bạn, nó không đi bộ trong công viên. Trước hết, nó bật ra rằng thông tin tốt về smartcards là khó để đi qua trên Net. Và khi tôi đã tìm thấy một số trang web, đã có rất nhiều cuộc thảo luận về các cuộc gọi API Win32 cơ bản và một loạt các công cụ cấp thấp khác, mà không phải là đọc khá dễ dàng.

Vấn đề là chúng được gọi là thông minh thẻ vì một lý do. Lý do đó là về cơ bản bạn đang tương tác với một bộ vi xử lý nhúng bằng cách gửi các lệnh mà nó hiểu và phản hồi. Điều này có thể phức tạp hơn một chút vì nhiều nhà sản xuất nghĩ rằng nên thực hiện các lệnh riêng của họ là tốt, vì vậy nhiều thứ phụ thuộc vào loại thẻ bạn đang sử dụng. Trên hết, có những thẻ trông giống như smartcards nhưng không thực sự là smartcard và thậm chí không sử dụng bất kỳ giao diện smartcard "chuẩn" nào, vì vậy bạn chỉ sử dụng API Windows SmartCard để kích hoạt trình đọc của bạn, và API đặc biệt của người đọc thẻ thông minh được cung cấp dưới dạng .lib ở một số góc tối nghĩa trên trang web của họ cho phần còn lại ...

Vâng, tôi đã làm ứng dụng của mình hoạt động sau cùng nhưng như tôi đã nói, điều đó không dễ. Dù sao thì tôi đã phạm một sai lầm lớn bằng cách cho rằng nó sẽ không khó thực hiện.

Nếu bạn thực sự muốn tham gia vào các thẻ thông minh, tôi cho rằng đặt cược tốt nhất của bạn là có được một cuốn sách hay về chủ đề này, nhưng vì tôi còn nhỏ hơn một người mới, tôi thực sự không thể giúp bạn ở đó.

Đối với trang web, điều hữu ích nhất trong thuật ngữ C# mà tôi có thể đào lên là A Smartcard Framework for .Net. Lưu ý rằng đây không phải là bài viết giống như bài viết được đăng bởi michaelvdnest, mặc dù tác giả cũng vậy. Bài viết tôi liên kết để mô tả một wrapper C# cho API smartcard bản địa, trong khi michaelvdnest thêm XML vào hỗn hợp, mặc dù tôi không biết chính xác theo cách nào vì tôi chưa đọc nó.

Vì vậy, bắt đầu mổ xẻ mã được cung cấp kèm theo bài viết và chúc may mắn. Nếu bộ nhớ phục vụ tôi, công cụ đếm người đọc là khá dễ tìm.

+0

Cảm ơn bạn rất nhiều vì câu trả lời dài này :) đồng nghiệp đã nói với tôi rằng tôi đã có một chặng đường dài để đi ... và anh ấy cũng không thể giúp tôi. Bây giờ tôi biết nó có thể được thực hiện và cảm ơn cho các liên kết, tôi đã tìm thấy nó đã và tôi đang đọc và xử lý nó ngay bây giờ. – Thorusan86

+0

@sql Bạn chưa quen với Stackoverflow. Đặt một câu hỏi mới. – dandan78

+0

Bạn không đùa vì nó không đi bộ trong công viên. Một trong những nhà phát triển của chúng tôi trước đây đã triển khai mã dựa trên bài viết được tham chiếu để đọc thẻ không hiển thị cho tôi sự cố nhưng tôi đang cố gắng tìm hiểu cách thực hiện xác thực để cho phép tôi đọc dữ liệu bảo mật từ thẻ tachograph kỹ thuật số châu Âu. Đọc thông số kỹ thuật hơi giống như bơi qua bùn. –

3

Khám phá Smart Card Framework for .NET về Dự án mã. Nó mô tả một khuôn khổ XML cho .NET để lập trình các ứng dụng Thẻ thông minh.

+0

Tôi đã thực hiện điều đó và tôi vẫn đang làm việc đó. Cảm ơn! :) – Thorusan86

+0

Đây là bởi cùng một chàng trai và mới hơn: http://www.codeproject.com/Articles/16653/A-Smart-Card-Framework-for-NET – VoteCoffee

1

Tôi biết đó là cách cuối .....

nhưng

Bạn có thể có được một rất dễ sử dụng, và miễn phí cho sử dụng cá nhân professionall thư viện ở đây:

http://www.smartcard-api.com/index.shtml

Một khi bạn có điều đó, sau đó bạn cần phải bắt đầu hiểu APDU và làm thế nào để đưa họ qua lại từ thẻ đến thiết bị đầu cuối.

Nó thực sự là một chủ đề lớn để che, tôi có mã sẽ đọc tất cả các yếu tố phổ biến trên một thẻ tiêu chuẩn Chip & Pin EMV không may nó được viết cho một khách hàng dịch vụ tài chính để tôi không thể cung cấp cho bạn, tôi Tuy nhiên, có thể giải thích một số điều bạn cần thực hiện để đọc thẻ.

Đối với các thẻ khác, thẻ này sẽ tự chuyển xuống thẻ, ví dụ: tôi có đầu đọc thẻ và thẻ trống ở đây và tôi có một số dữ liệu tùy chỉnh trên một số trong số đó. một số thẻ vệ tinh và du lịch cũ khác nhau.

Bạn có thể nhận được một số ý tưởng ở đây:

How do I read the PAN from an EMV SmartCard from Java

và có rất nhiều thông tin về thẻ thông minh nói chung được tìm thấy ở đây:

http://www.wrankl.de/SCH/SCH.html

đặc biệt là những thứ chung chung (trong đó có một số)

0

Tôi đã làm việc trên một ứng dụng trong Visual Studio 2015 để rea d thẻ thông minh. Những gì bạn muốn làm là đưa Thiết bị USB được kết nối với máy tính của bạn, đó là Đầu đọc thẻ thông minh. Sau đó lặp lại thông qua việc trả lại thông tin mà bạn đang tìm kiếm. Trong khi các độc giả có khá nhiều thuộc tính, thì đây là những đặc tính mà tôi đã chọn để sử dụng. Tôi hy vọng điều này mang lại cho bạn sự khởi đầu đúng hướng:

static List<USBDeviceInfo> GetUSBDevices() 
    { 
     List<USBDeviceInfo> devices = new List<USBDeviceInfo>(); 

     ManagementObjectCollection collection; 
     using (var searcher = new ManagementObjectSearcher(@"Select *  FROM Win32_PnPEntity where Description Like ""%Smart%card%""")) 
      collection = searcher.Get(); 
     string Device_ID = ""; 

     foreach (var device in collection) 
     { 
      devices.Add(new USBDeviceInfo(
      (string)device.GetPropertyValue("DeviceID"), 
      (string)device.GetPropertyValue("PNPDeviceID"), 
      (string)device.GetPropertyValue("Name"), 
      (string)device.GetPropertyValue("Description"), 
      (string)device.GetPropertyValue("Status"))); 


      Device_ID = (string)device.GetPropertyValue("DeviceID"); 

     } 

     collection.Dispose(); 
     return devices; 
    } 
Các vấn đề liên quan