다음과 같은 코드를 사용하여 vid 값을 계산한 후 인증서에서 읽어온 vid 값과 비교하여 본인 식별을 할 수 있다.
인자 vid, r, hashType은 인증서에서 읽어온 정보이고 idn은 사용자로 부터 입력받은 값이다.
public static boolean checkVidIntegrity(byte[] vid, String idn, byte[] r, String hashType ) {
try {
DERSequence derSequence = new DERSequence(new ASN1Encodable[] {new DERPrintableString(idn.getBytes()), new DERBitString(r)});
byte[] content = derSequence.getDEREncoded();
MessageDigest md2 = MessageDigest.getInstance(hashType);
md2.update(content);
byte[] h2 = md2.digest();
md2.reset();
md2.update(h2);
byte[] vidp2 = md2.digest();
System.out.println("frodo core: idn = "+ idn);
System.out.println("frodo core: compare vid = " + toHex(vid) + " with vid' = " + toHex(vidp2));
return Arrays.equals(vid, vidp2);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return false;
}
}
댓글 없음:
댓글 쓰기