summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/gnu/javax/crypto/prng/ARCFour.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/javax/crypto/prng/ARCFour.java')
-rw-r--r--libjava/classpath/gnu/javax/crypto/prng/ARCFour.java88
1 files changed, 32 insertions, 56 deletions
diff --git a/libjava/classpath/gnu/javax/crypto/prng/ARCFour.java b/libjava/classpath/gnu/javax/crypto/prng/ARCFour.java
index 22316ec8b9b..b7265294268 100644
--- a/libjava/classpath/gnu/javax/crypto/prng/ARCFour.java
+++ b/libjava/classpath/gnu/javax/crypto/prng/ARCFour.java
@@ -45,88 +45,65 @@ import gnu.java.security.prng.LimitReachedException;
import java.util.Map;
/**
- * RC4 is a stream cipher developed by Ron Rivest. Until 1994 RC4 was a
- * trade secret of RSA Data Security, Inc., when it was released
- * anonymously to a mailing list. This version is a descendent of that
- * code, and since there is no proof that the leaked version was in fact
- * RC4 and because "RC4" is a trademark, it is called "ARCFOUR", short for
- * "Allegedly RC4".
- *
- * <p>This class only implements the <i>keystream</i> of ARCFOUR. To use
- * this as a stream cipher, one would say:</p>
- *
- * <pre> out = in ^ arcfour.nextByte();</pre>
- *
- * <p>This operation works for encryption and decryption.</p>
- *
- * <p>References:</p>
- *
+ * RC4 is a stream cipher developed by Ron Rivest. Until 1994 RC4 was a trade
+ * secret of RSA Data Security, Inc., when it was released anonymously to a
+ * mailing list. This version is a descendent of that code, and since there is
+ * no proof that the leaked version was in fact RC4 and because "RC4" is a
+ * trademark, it is called "ARCFOUR", short for "Allegedly RC4".
+ * <p>
+ * This class only implements the <i>keystream</i> of ARCFOUR. To use this as a
+ * stream cipher, one would say:
+ * <pre>
+ * out = in &circ; arcfour.nextByte();
+ * </pre>
+ * <p>
+ * This operation works for encryption and decryption.
+ * <p>
+ * References:
* <ol>
- * <li>Schneier, Bruce: <i>Applied Cryptography: Protocols, Algorithms,
- * and Source Code in C, Second Edition.</i> (1996 John Wiley and Sons),
- * pp. 397--398. ISBN 0-471-11709-9</li>
+ * <li>Schneier, Bruce: <i>Applied Cryptography: Protocols, Algorithms, and
+ * Source Code in C, Second Edition.</i> (1996 John Wiley and Sons), pp.
+ * 397--398. ISBN 0-471-11709-9</li>
* <li>K. Kaukonen and R. Thayer, "A Stream Cipher Encryption Algorithm
* 'Arcfour'", Internet Draft (expired), <a
* href="http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-arcfour-03.txt">draft-kaukonen-cipher-arcfour-03.txt</a></li>
* </ol>
*/
-public class ARCFour extends BasePRNG implements Cloneable
+public class ARCFour
+ extends BasePRNG
+ implements Cloneable
{
-
- // Constants and variables.
- // -----------------------------------------------------------------------
-
/** The attributes property name for the key bytes. */
public static final String ARCFOUR_KEY_MATERIAL = "gnu.crypto.prng.arcfour.key-material";
-
/** The size of the internal S-box. */
public static final int ARCFOUR_SBOX_SIZE = 256;
-
/** The S-box. */
private byte[] s;
-
private byte m, n;
- // Constructors.
- // -----------------------------------------------------------------------
-
/** Default 0-arguments constructor. */
public ARCFour()
{
super(Registry.ARCFOUR_PRNG);
}
- // Methods implementing BasePRNG.
- // -----------------------------------------------------------------------
-
public void setup(Map attributes)
{
byte[] kb = (byte[]) attributes.get(ARCFOUR_KEY_MATERIAL);
-
if (kb == null)
- {
- throw new IllegalArgumentException("ARCFOUR needs a key");
- }
-
+ throw new IllegalArgumentException("ARCFOUR needs a key");
s = new byte[ARCFOUR_SBOX_SIZE];
m = n = 0;
byte[] k = new byte[ARCFOUR_SBOX_SIZE];
-
for (int i = 0; i < ARCFOUR_SBOX_SIZE; i++)
- {
- s[i] = (byte) i;
- }
-
+ s[i] = (byte) i;
if (kb.length > 0)
- {
- for (int i = 0, j = 0; i < ARCFOUR_SBOX_SIZE; i++)
- {
- k[i] = kb[j++];
- if (j >= kb.length)
- j = 0;
- }
- }
-
+ for (int i = 0, j = 0; i < ARCFOUR_SBOX_SIZE; i++)
+ {
+ k[i] = kb[j++];
+ if (j >= kb.length)
+ j = 0;
+ }
for (int i = 0, j = 0; i < ARCFOUR_SBOX_SIZE; i++)
{
j = j + s[i] + k[i];
@@ -134,7 +111,6 @@ public class ARCFour extends BasePRNG implements Cloneable
s[i] = s[j & 0xff];
s[j & 0xff] = temp;
}
-
buffer = new byte[ARCFOUR_SBOX_SIZE];
try
{
@@ -150,12 +126,12 @@ public class ARCFour extends BasePRNG implements Cloneable
for (int i = 0; i < buffer.length; i++)
{
m++;
- n = (byte) (n + s[m & 0xff]);
+ n = (byte)(n + s[m & 0xff]);
byte temp = s[m & 0xff];
s[m & 0xff] = s[n & 0xff];
s[n & 0xff] = temp;
- temp = (byte) (s[m & 0xff] + s[n & 0xff]);
+ temp = (byte)(s[m & 0xff] + s[n & 0xff]);
buffer[i] = s[temp & 0xff];
}
}
-} \ No newline at end of file
+}
OpenPOWER on IntegriCloud