2016-07-12 11 views
2

Zu Testzwecken muss ich SecureRandom mit einem benutzerdefinierten Algorithmus verwenden. Wie ist es möglich?SecureRandom benutzerdefinierten Algorithmus

Ich glaube, ich habe SecureRandom Unterklasse und eine SecureRandomSpi benutzerdefinierte Implementierung bieten:

167: /** 
168:  A constructor for SecureRandom. It constructs a new 
169:  SecureRandom using the specified SecureRandomSpi from 
170:  the specified security provier. 
171: 
172:  @param secureRandomSpi A SecureRandomSpi class 
173:  @param provider A Provider class 
174: */ 
175: protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider) 
176: { 
177:  this(secureRandomSpi, provider, "unknown"); 
178: } 

Gibt es eine einfache Art und Weise oder kann jemand Anzeige Beispiel nennen?

Antwort

0

Der Konstruktor

protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider) 

geschützt ist, sollten Sie es nicht verwenden. Verwenden Sie stattdessen

public static SecureRandom getInstance(String algorithm) 

Wenn Sie Ihren eigenen Algorithmus definiert haben, müssen Sie einen Anbieter erstellen und registrieren Sie es so, wenn Sie den Namen des Algorithmus angeben, kann der jre es finden. Aber Sie möchten wahrscheinlich eine existierende verwenden.

Wenn Sie jedoch Ihren eigenen Kryptoalgorithmus erstellt haben, verwenden Sie ihn einfach, anstatt ihn in die SecureRandom-API einzubetten. Wenn es gut genug ist sicher, dass einige Provider Ihnen bezahlen, um es zu seiner API hinzuzufügen, D

+0

Können Sie ein einfaches Beispiel schreiben? – Alvins

+0

Über die Verwendung einer bestehenden Alg? Zum Beispiel SecureRandom sr = SecureRandom.getInstance ("SHA1PRNG"); sr.nextInt() gibt eine zufällige Ganzzahl aus den 2^32 verschiedenen Werten zurück. Weitere Informationen finden Sie hier: http://stackoverflow.com/questions/27622625/securerandom-with-nativeprng-vs-sha1prng. Über das Registrieren Ihres eigenen Providers Ich fürchte, es gibt nicht so etwas wie ein einfaches Beispiel. Aber schau hier: http://stackoverflow.com/questions/10060261/how-do-i-get-java-to-use-my-security-provider –

+0

Über die Bereitstellung einer benutzerdefinierten Alg. Eine einfache, die ++ Samen – Alvins