2011-01-31 2 views
8

Как начать программирование на C# (.NET) для смарт-карт? Для начала мне просто нужно знать, как называется Card Reader (например, Omnikey) и распечатать это.C# smartcards programming

Спасибо за ответ, Алес.

ответ

13

Некоторое время назад я должен был написать то, что, как я думал, будет простым и простым кодом смарт-карты, и позвольте мне сказать вам, что в парке не было прогулки. Прежде всего, оказалось, что хорошей информации о смарт-картах сложно найти в Сети. И когда я нашел несколько веб-сайтов, было много обсуждений основных вызовов Win32 API и целой группы других низкоуровневых материалов, что не так просто читать.

Дело в том, что они называются смарт- карт по причине. Причина в том, что вы в основном взаимодействуете со встроенным микропроцессором, отправляя ему команды, которые он понимает и отвечает. Это может немного усложниться, потому что многие производители считают, что было бы неплохо реализовать свои собственные команды, поэтому многие вещи зависят от типа используемой вами карты. Кроме того, есть карты, которые выглядят как смарт-карты, но на самом деле не являются смарт-картами и даже не используют никаких «стандартных» интерфейсов смарт-карт, поэтому вы в конечном итоге используете API-интерфейс Windows SmartCard, чтобы запустить ваш читатель, и специальный API-интерфейс смарт-карт, предоставляемый как .lib в некотором неясном углу их сайта для остальных ...

Ну, я действительно получил свое приложение, работая в конце концов, но, как я уже сказал, это было непросто. Во всяком случае, я сделал большую ошибку, предположив, что это будет не очень сложно.

Если вы действительно хотите попасть в смарт-карты, я полагаю, что ваша лучшая ставка будет заключаться в том, чтобы получить хорошую книгу по этой теме, но так как я тоже немного больше, чем новичок, я действительно не могу вам помочь.

Что касается веб-сайтов, то самая полезная вещь в терминах C#, которую я смог выкопать, был A Smartcard Framework for .Net. Обратите внимание, что это не та же статья, что и опубликованная michaelvdnest, хотя автор тот же. В статье, в которой я связан, описывается оболочка C# для собственного API смарт-карт, а michaelvdnest добавляет XML в микс, хотя я точно не знаю, каким образом, потому что я еще не прочитал его.

Так что начните разбирать код, прилагаемый к статье, и удачи. Если память мне помогает, то список нумераторов читателей довольно легко найти.

+0

Большое спасибо за этот длинный ответ :) мой коллега уже сказал мне, что мне предстоит пройти долгий путь ... и он тоже не мог мне помочь. Ну, теперь я знаю, что это можно сделать и спасибо за ссылку, я ее уже нашел, и сейчас я ее читаю и обрабатываю. – Thorusan86

+0

@sql Вы не новичок в Stackoverflow. Задайте новый вопрос. – dandan78

+0

Вы не шутите, что это не прогулка по парку. Один из наших разработчиков ранее реализовал код, основанный на указанной статье, поэтому чтение карты не представляет мне проблемы, но я изо всех сил пытаюсь выяснить, как сделать аутентификацию, чтобы я мог читать защищенные данные из европейских цифровых тахографических карт. Чтение спецификации немного похоже на плавание через грязь. –

3

Отъезд Smart Card Framework for .NET по проекту кода. В нем описывается инфраструктура XML для .NET для программирования приложений смарт-карт.

+0

Я сделал это, и я все еще работаю над этим. Благодаря! :) – Thorusan86

+0

Это тот же парень и новее: http://www.codeproject.com/Articles/16653/A-Smart-Card-Framework-for-NET – VoteCoffee

1

Я знаю, что это путь поздно .....

но

Вы можете получить очень простой в использовании, и бесплатно для личного пользования professionall библиотеки здесь:

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

После того, как вы это сделаете, вам нужно начать понимать APDU и как перемещать их обратно и обратно с карты на терминал.

Это действительно большой объект для обложки, у меня есть код, который будет читать все общие элементы на стандартной плате Chip & Pin EMV, к сожалению, он был написан для клиента финансовых услуг, поэтому я не могу дать вам это, я может объяснить, однако, некоторые из того, что вам нужно предпринять, чтобы прочитать карточку.

Для других карточек, например, у самой карты, у меня есть кард-ридер и пустые карточки, и у меня есть некоторые пользовательские данные по некоторым из них, которые только я знаю, как получить доступ, но все же у меня есть некоторые старые спутниковые и дорожные карты, которые снова отличаются.

Вы можете получить некоторые идеи здесь:

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

и есть много информации о смарт-картах в целом можно найти здесь:

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

особенно общий материал (которых нет)

0

Я работаю над приложением в Visual Studio 2015 до версии d смарт-карт. Что вы хотите сделать, это подключить USB-устройства к вашему компьютеру, которые являются считывателями смарт-карт. Затем повторите попытку возврата информации, которую вы ищете. Хотя у читателей есть немало свойств, вот те, которые я выбрал для использования. Надеюсь, это даст вам начало в правильном направлении:

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; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^