2010-03-10 4 views
3

이제 IMS 관련 분야 인 Android에 대한 작업을하고 있습니다. 서버가 클라이언트에 nonce를 문자열로 돌려 보내고 클라이언트 쪽에서 인쇄하기를 원합니다. nonce을 생성하기 위해이 사이트의 코드를 사용해 보았습니다. 내가 시작 부분에서 NONCE = generateNonce(); 선언NONCE를 생성하고 ANDROID의 클라이언트 측에 인쇄하는 방법

public static String generateNonce() { 
    try { 
    // Create a secure random number generator 
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 

    // Get 1024 random bits 
    byte[] bytes = new byte[1024/8]; 
    sr.nextBytes(bytes); 

    // Create two secure number generators with the same seed 
    int seedByteCount = 10; 
    byte[] seed = sr.generateSeed(seedByteCount); 

    sr = SecureRandom.getInstance("SHA1PRNG"); 
    sr.setSeed(seed); 
    SecureRandom sr2 = SecureRandom.getInstance("SHA1PRNG"); 
    sr2.setSeed(seed); 
    } catch (NoSuchAlgorithmException e) { 
    } 
    //return NONCE; 
    return null; 
} 

를 따를 때 내 코드의

http://www.exampledepot.com/egs/java.security/CreateSecureRandom.html

부분이다. 그러나 문제는 nonce 값을 얻는 대신 클라이언트 쪽에서 null으로 인쇄됩니다. 서버 쪽에서 인쇄하려고 시도했을 때 null으로 표시됩니다.

다른 사람이 내 코드에서 오류를 알려주거나 더 나은 코딩에 도움이 될 수 있습니까? 많은 감사드립니다.

감사합니다. Sebby.

+0

이 질문에서 스파이웨어 링크를 제거하십시오. – Roger

답변

6

당신은 지금 당신의 코드로 반환하고자하는 값으로 return 문을 추가 할 필요가 를 생성 (또는 생성하는 것) 비표를하지만 당신은 그렇게 문자열 NONCE이 값의 주어진 null을 반환 null.

return null 문도 제거해야합니다. 이 코드를 그대로두고 의 마지막 코드 인 return 문을 사용하면 코드가 유효하지 않은 을 생성하지만null을 반환합니다.

+0

감사합니다. 도움이되었습니다. –

+0

문제 없으니 기꺼이 도와 드리겠습니다. 행운을 빕니다. –

2

글쎄, 난 당신의 코드의 형식을 처음에는 꽤 읽을 수있는대로 정렬했다.

그런 다음 두 번째 SecureRandom 인스턴스를 제거합니다.

그런 다음 끝에 return null; 문을 제거합니다.

그때 나는이 같은 임의의 정수를 반환하는 기능을 다시 것 :

또한
return sr.next(32); 

이 함수는 문자열이 아닌 정수를 반환하는 선언 된 것을 확인.

관련 문제