2010-02-18 3 views
1

RFC2289 (S/KEY)에서 볼 수 있듯이 16 진수 문자열을 읽을 수있는 형식으로 변환 할 때 사용해야하는 단어 목록이 있습니다.OTP 또는 S/KEY - 16 진수 문자열을 6 개의 읽을 수있는 단어로 변환

어떻게 그렇게할까요?

은 RFC는 언급 :

일회성 비밀번호 따라서 가 변환되고으로 인정하고, 여섯 짧은 (1 ~ 4 편지) 영어 단어의 순서를. 각 낱말은 2048의 사전의 사전에서 선정된다; 단어 당 11 비트로, 모든 일회성 암호 이 인코딩 될 수 있습니다.

자세히 : http://www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe

사용하여 다음 진수로 진수로 변환하고이 무슨 뜻하는 단어의 배열의 인덱스 등. 다른 예는 텍스트 인코딩을 사용하는 것입니다. 1111은 개가 UTF-8 인코딩으로 동일 할 수도 있습니다.

미리 도움을 청하십시오!

답변

1

10 진수로 변환 할 필요가 없습니다. 16 진수 값이 문자열이면 숫자로 변환하십시오 (예 : Integer.valueOf(value, 16)). 그 번호를 사용하여 단어를 찾습니다. 전체 사전을 메모리에 저장할 수 있으면 그 숫자를 색인으로 사용하십시오. 메모리에 저장할 수 없다면, 그것을 사용하여 보이는 사전 파일의 범위를 제어하십시오 (모든 항목이 별도의 행에 있다면 파일에 여러 줄을 읽으십시오). 어딘가에 데이터베이스가 있다면 테이블의 키로 숫자를 사용하고 키로 선택하십시오.

+0

숫자로 10 진수라고도하는 숫자를 의미한다고 가정합니다. 나는 실제 시스템이 S/Key 시스템의 측면에서 따라야 만한다고 희망했다. – Garbit

+0

당신은 http://sourceforge.net/projects/otp-j2me/와 같은 API를 찾고 있었습니까? "number"와 관련해서는 int, double, short 등의 숫자의 Java 표현을 의미합니다. 기수가 16 인 Integer.valueOf (radix)는 16 진수 문자열을 int로 변환합니다. 문자열이 기본 10 인 경우 Integer.valueOf (string)를 사용하거나 기수에 10을 사용할 수 있습니다. – atk

관련 문제