내 애플리케이션 클래스 경로에 탄력성 jar 파일을 Android 및 Java에 추가했습니다. 이 두 코드 모두에서 사용한 코드입니다. 그러나 공급자 "BC"를 인식하는 것 같지 않습니다.Bouncy castle 해당 제공자 예외가 없습니다.
java.security.NoSuchProviderException: no such provider: BC
어떻게이 문제를 해결하려면 :
SecureRandom sr1=new SecureRandom().getInstance("SHA1PRNG", "BC");
System.out.println(sr1.getProvider());
sr1.setSeed(12);
byte[] a=new byte[0];
sr1.nextBytes(a);
int ai=a[0];
System.out.println(ai);
그것은 모두 안드로이드와 자바에 다음과 같은 예외가 발생
정책 파일에 공급자를 추가하지 않았습니다. 그렇게 한 후에 다음과 같은 예외가 발생합니다.
java.security.NoSuchAlgorithmException: no such algorithm: SHA1PRNG for provider
BC<br>
그것은 탄력이 성이 "SHA1PRNG"알고리즘의 구현을 제공하지 않는다는 것을 의미합니까? 그러나 내가 성을 수입 한 전체 이유는 안드로이드와 자바 모두에서 공통의 공급자를 가지므로 동일한 시드로 생성 된 난수의 순서가 안드로이드와 자바에서 동일합니다.
, 그것은 않습니다 사용자 지정 시드에 엔트로피를 추가하지 않습니다. 보안 임의 번호의 두 인스턴스가 java에서 사용되는 경우 동일한 일련의 번호가 생성됩니다. 안드로이드에서도 똑같은 일이 일어나고 있습니다. 그러나 문제는 안드로이드와 자바에서 생성 된 시퀀스가 동일하지 않다는 것입니다. – Ashwin
그래, 내가 틀렸다. 엔트로피를 한 번 이상 호출하면 엔트로피 만 추가됩니다. 그래도 시퀀스를 일치 시키려면 데이터베이스를 사용하고 숫자를 증가시킵니다. 보안 임의 생성기는이를위한 도구가 아닙니다. 안드로이드에서 BC를 사용하기가 쉽지 않은 것에 대한 업데이트 된 답변을 참조하십시오. –
실제로 한 번 암호로 sequesnces를 사용하고 있습니다. 나는 숫자를 사용하고 그것을 증가시킬 수 없으며 그것을 otp로 사용할 수 없다.예, "trng"를 사용한다면이 목적을 무효화 할 수 있습니다. 그러나 난수 생성기를 사용하고 있습니다. – Ashwin