Adrian Anderson created CRYPTO-160:
--------------------------------------

             Summary: CryptoRandom implementation classes unnecessarily extend 
Random
                 Key: CRYPTO-160
                 URL: https://issues.apache.org/jira/browse/CRYPTO-160
             Project: Commons Crypto
          Issue Type: Bug
            Reporter: Adrian Anderson


The CryptoRandom implementation class JavaCryptoRandom extends java.util.Random 
when they don't need to and without re-implementing the "protected int next(int 
bits)" method. 
The issue is that if a developer were to use the CryptoRandomFactory to create 
a JavaCryptoRandom instance and  to Random wanting to use as a replacement for 
code using an instance of Random in existing code the implementation would fall 
back to the java.util.Random (inherited) implementation rather than the 
CryptoRandom (encapsulated) implementation. For example

{{CryptoRandom cryptoRandom = CryptoRandomFactory.getCryptoRandom(); //instance 
of JavaCryptoRandom}}

{{Random rand = (Random)cryptoRandom;}}

{{long randomLong = rand.nextLong(); //returns java.util.Random.nextLong(), 
circumventing SecureRandom}}

A simple solution would be to override the "protected int next(int bits)" 
method within JavaCryptoRandom to invoke the SecureRandom "next(int bits)" 
implementation. 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to