당신은 그것 때문에 명명 규칙의 부족 것으로 보인다보다 더 어렵 자바 카드 매개 변수로 값을 매핑해야합니다. 또한 매개 변수 중 일부는 십진수이지만 Java Card의 경우 16 진수 여야합니다.
private final static byte[] r = new byte[] {
(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x99, (byte)0xDE, (byte)0xF8, (byte)0x36, (byte)0x14, (byte)0x6B, (byte)0xC9, (byte)0xB1, (byte)0xB4, (byte)0xD2, (byte)0x28, (byte)0x31
};
계수 a
효과적인 prime192v1
으로 계산을하기 위해 -3
(모듈 p
)로 설정됩니다. 이것은 당신이 알아야 할 사실입니다.
private final static byte[] a = new byte[] {
(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFE, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFC
};
계수는 자바 카드에서 key.setB
때문에 b
은 간단합니다 : 16 진수로, 그것은이다. 당신은 두 좌표를 연결하여 압축 형태로 변환하고 앞에 추가해야하기 때문에,
private final static byte[] b = new byte[] {
(byte)0x64, (byte)0x21, (byte)0x05, (byte)0x19, (byte)0xE5, (byte)0x9C, (byte)0x80, (byte)0xE7, (byte)0x0F, (byte)0xA7, (byte)0xE9, (byte)0xAB, (byte)0x72, (byte)0x24, (byte)0x30, (byte)0x49, (byte)0xFE, (byte)0xB8, (byte)0xDE, (byte)0xEC, (byte)0xC1, (byte)0x46, (byte)0xB9, (byte)0xB1
};
발전기 포인트 G
가 까다 롭습니다 : 당신은 16 진수 문자열 = 필요하지 전환으로 그것을 가지고 접두어 04
(압축되지 않은 양식의 표시기). 일부 카드는 다른 형식을 지원하지만, 보장 할 수 없습니다, 그래서 uncompressed form. 당신의 좌표 = 이미 필요 없음 변환 진수 없다 사용하는 것이 현명하다 :
private final static byte[] g = new byte[] {
(byte)0x04, (byte)0x18, (byte)0x8D, (byte)0xA8, (byte)0x0E, (byte)0xB0, (byte)0x30, (byte)0x90, (byte)0xF6, (byte)0x7C, (byte)0xBF, (byte)0x20, (byte)0xEB, (byte)0x43, (byte)0xA1, (byte)0x88, (byte)0x00, (byte)0xF4, (byte)0xFF, (byte)0x0A, (byte)0xFD, (byte)0x82, (byte)0xFF, (byte)0x10, (byte)0x12, (byte)0x07, (byte)0x19, (byte)0x2B, (byte)0x95, (byte)0xFF, (byte)0xC8, (byte)0xDA, (byte)0x78, (byte)0x63, (byte)0x10, (byte)0x11, (byte)0xED, (byte)0x6B, (byte)0x24, (byte)0xCD, (byte)0xD5, (byte)0x73, (byte)0xF9, (byte)0x77, (byte)0xA1, (byte)0x1E, (byte)0x79, (byte)0x48, (byte)0x11
};
공동 인자의 시간
가의 key.setK
에 해당 키. 일반적으로이 매개 변수는 생략되며 기본값은 1
입니다.
키 초기화
: 전술 한 바와 같이 제공은 당신이 당신의 ECkey
이 방법 init을 할 수 private static final byte
배열과 같은 매개 변수를 선언 : 당신은 궁금 할
key.setFieldFP(fp, (short)0, (short)fp.length);
key.setR(r, (short)0, (short)r.length);
key.setA(a, (short)0, (short)a.length);
key.setB(b, (short)0, (short)b.length);
key.setG(g, (short)0, (short)g.length);
무엇 SEED
및 c
값은 자바 카드 매개 변수를 전혀 계산하지 않기 때문에 의미가됩니다.
SEED은 임의의 값으로 다른 매개 변수를 생성하는 데 사용됩니다. SHA-1 해시는 SEED
에서 계산되었습니다. 그 표기법은 c
입니다. 값 a
및 b
은 c
에서 파생되었습니다.
전체 EC 암호화의 가장 문제가되는 부분은 입니다. NIST가 NIST에서 시드를 진정으로 무작위로 선택 했습니까?We don't know. 결과 곡선이 어떤 식 으로든 "쉽게"될 수 있기 때문에 암호 해독 또는 서명 위조에 대한 이점을 얻기 위해 선택했을 수 있습니다.
스택 오버플로에 오신 것을 환영합니다! 먼저 [둘러보기] (http://stackoverflow.com/tour)를 가져 와서 [좋은 질문을하는 법] (http://stackoverflow.com/help/how-to-ask)을 배우고 [ Minimal, Complete, Verifiable] (http://stackoverflow.com/help/mcve) 예제를 참조하십시오. 우리가 당신을도 더 쉬울 것입니다. 당신은 이미 무엇을 했습니까? –
EC 곡선의 이름을 말씀해 주시겠습니까? 'Prime192v1'입니까? 이 값들은 어디에서 찾았습니까? – vojta