Javacard Framework를 사용하여 2 바이트 배열을 비교하고 싶습니다.Javacard - Arraycompare issues
최초 배열은 미리 정의되어
case (byte) 0x03: ///send D003000004|abcd
GetPassword = new byte[buffer[ISO7816.OFFSET_LC]];
Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, GetPassword, (short) 0, lc);
Util.arrayCopy(GetPassword, (short) 0, buffer, (short) 0, lc);
apdu.setOutgoingAndSend((short) 0, (short) lc);
출력 :
가 static byte[] PasswortA = { 'a', 'b', 'c', 'd' };
번째 어레이는 명령 라인을 통해 입력 될 것이다
/D003000004를 보낼 | ABCD
=> D0 03 00 00 04 61 62 63 64 ..... abcd
(349416 nsec)
< = 6162 63 개 64 90 00 ABCD ..
상태 : 없음 오류
내가 따라 배열을 비교 해요 : http://www.win.tue.nl/pinpasjc/docs/apis/jc222/javacard/framework/Util.html
case (byte) 0x05: ///send D005000001
if((byte) 0 == Util.arrayCompare(PasswortA, (short) 0, GetPassword, (short) 0, lc)){
buffer[0] = '1';
} else {
buffer[0] = '0';
}
출력 :
보내기/D005000001
=> D0 05 00 00 01 .....
(291102nsec)
< = 309000 ..
상태 : 아니요 오류 :
시각적으로 두 배열이 동일하므로 응답이 두 배열이 동일 할 때 함수가 반환해야하므로 응답으로 버퍼 (buffer [0] = '1';)에 1을 써야합니다. 위의 문서에 따라 0입니다.
누구나 내가 뭘 잘못하고 있는지, 왜 arrayCompare 함수가 2 개의 배열이 동일하지 않다고보고 했습니까?
감사합니다.
어떻게/GetPassword를 선언합니까? 'case (byte) 0x03 :'과'case (byte) 0x05 :'를 평가할 때'lc'의 값은 무엇입니까? –
GetPassword는 다음과 같이 선언됩니다 :'private byte [] GetPassword;''byte [] GetPassword = new byte [buffer [ISO7816.OFFSET_LC]];'. lc의 값은 항상'short lc = buffer [ISO7816.OFFSET_LC];'이다. – crappyleft
@wlstead'PasswortA'에서'static'을 제거하지 못했습니다. 그래도 감사합니다. – crappyleft