2011-11-27 12 views
0

은 자바 카드를 사용하여 스마트 카드에 데이터를 쓰는 방법을 말해 줄 수 있습니까? 난 당신이 애플릿을 개발하기 위해, 당신은 패키지의 bin/디렉토리에있는 파일을 .CAP 볼 수 있습니다 JCOP 플러그인을 사용하는 경우 내가 자바 카드 2.2자바 카드를 사용하여 스마트 카드에 데이터를 쓰는 방법은 무엇입니까? 예를 들어

private void writeName(APDU apdu) throws ISOException 
{ 
    apdu.setIncomingAndReceive(); 
    byte[] apduBuffer = apdu.getBuffer(); 

    byte j = (byte)apduBuffer[4]; 

    userName = new byte[j]; 
    for (byte i=0; i<j; i++) 
    { 
     userName[(byte)i] = (byte)apduBuffer[5+i]; 
    } 
} 
+0

어떤 장비가 있습니까? – Dimme

+0

카드 판독기, 스마트 카드, 자바 카드 2.2.2, 편집기 - 일식 –

+1

가능한 복제 [어떻게 작성하고 스마트 카드에서 데이터를 읽는 자바 카드 apdu를 사용하여] (http://stackoverflow.com/questions/8264850/how- to-write-and-read-data-from-smart-card-using-java-card-apdu) – Abizern

답변

1

을 사용하고이 코드 있습니다. 이제 각 패키지를 종속성 순서대로 설치해야합니다. 응용 프로그램이 C 패키지로 된 애플릿과 함께 패키지 A, B 및 C로 구성된다고 가정하십시오. B가 A 및 C 수입품을 수입합니다. B.

패키지를 설치해야하는 순서는 A, B, C입니다. JCOP을 사용하면 다음을 수행 할 수 있습니다.

cm> install <pkgAID> package.cap 

세 가지 패키지에 대해이 작업을 완료했으면 애플릿을 설치해야합니다. 이 작업은 다음을 통해 수행 할 수 있습니다.

cm> install -q <install params> <pkgAID> <AppletAID> packageC.cap 

이렇게하면 애플릿이 SELECTABLE 상태로 표시됩니다. 귀하의 JCOP 쉘 콘솔과 같습니다

Card Manager AID : A000000003000000 
Card Manager state : SECURED 

    Application: SELECTABLE (--------) A00000008710015553 
    Application: SELECTABLE (--------) "2PAY.SYS.DDF01" 
    Application: SELECTABLE (--------) A0004D6946617265 
    Application: SELECTABLE (--------) A0000000041010 

그리고 "모듈"(라이브러리) 모두 해당 패키지는 다음과 같이 표시됩니다 :

Load File :  LOADED (--------) A0000002994E6F53 
    Module :      A0000002994E6F53656C656374 
    Load File :  LOADED (--------) A0000002990410 
    Module :      A00000029904101045 

그 모든 애플릿이 선택 가능한 상태가 지금 선택할 수 있습니다 INI 및 상호 작용했다. A00000008710015553으로 애플릿에 데이터를 보내려면 먼저 해당 애플릿을 선택해야합니다. 상호 작용은 아래와 같이 될 것이다 :

cm> /select A00000008710015553 
=> 00 A4 04 00 09 A0 00 00 00 87 10 01 55 53 00  ............US. 
(5273 usec) 
<= 90 00            .. 
Status: No Error 

지금, 당신은 명령을 전송 사용하여 위의 애플릿에 데이터를 보낼 수 있습니다

cm> /send 00200000043131313100 
=> 00 20 00 00 04 31 31 31 31 00      . ...1111. 
(34423 usec) 
<= 90 00            .. 
Status: No Error 

이 모든 표준 GP의 명령입니다. GP 준수 카드를 사용하고 있다고 가정했습니다. 당신은 그것에 대해 아무것도 언급하지 않았습니다.

개인적으로 JC 런타임 환경 및 JC VM의 작동 방식과 API와의 관계 및 더 자세히 조사하기 전에 약간의 GP 사양을 읽어야 할 필요가 있습니다.

+0

자바 카드 패키지가있는 Eclipse 편집기를 사용하고 있습니다. JCOP SHELL을 사용하고 있습니다. 프로그램을 실행하면 위의 모든 단계가 수행됩니다. 애플릿을 선택하고 읽기 및 쓰기 명령을 보내야합니다. 모든 지원에 대해 감사드립니다. –