RC5 Encryption Algorithm
publication in RSA CryptoBytes, Spring of 1995.
https://www.rsasecurity.com/rsalabs/cryptobytes.
This implementation has a word size of 32 bits.
| Modifier and Type | Field and Description |
|---|---|
| private int | |
| private int[] | |
| private boolean | |
| private static final int | |
| private static final int |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private int | |
| private int | |
| private int | encryptBlock(byte[]
in byte buffer containing data to encrypt in, int offset into src buffer inOff, byte[] out buffer where encrypted data is written out, int offset into out buffer outOff)Encrypt the given block starting at the given offset and place the result in the provided buffer starting at the given offset. |
| public String | getAlgorithmName()
Implements org. |
| public int | getBlockSize()
Implements org. |
| public void | init(boolean
whether or not we are for encryption. forEncryption, CipherParameters the parameters required to set up the cipher. params)Implements org. |
| public int | processBlock(byte[]
the array containing the input data. in, int offset into the in array the data starts at. inOff, byte[] the array the output data will be copied into. out, int the offset into the out array the output will start at. outOff)Implements org. |
| public void | |
| private int | rotateLeft(int
word to rotate x, int number of bits to rotate % 32 y)Perform a left "spin" of the word. |
| private int | rotateRight(int
word to rotate x, int number of bits to rotate % 32 y)Perform a right "spin" of the word. |
| private void | |
| private void |
| _noRounds | back to summary |
|---|---|
| private int _noRounds | |
| _S | back to summary |
|---|---|
| private int[] _S | |
| forEncryption | back to summary |
|---|---|
| private boolean forEncryption | |
| P32 | back to summary |
|---|---|
| private static final int P32 | |
| Q32 | back to summary |
|---|---|
| private static final int Q32 | |
| RC532Engine | back to summary |
|---|---|
| public RC532Engine() Create an instance of the RC5 encryption algorithm and set some defaults | |
| bytesToWord | back to summary |
|---|---|
| private int bytesToWord(byte[] src, int srcOff) | |
| decryptBlock | back to summary |
|---|---|
| private int decryptBlock(byte[] in, int inOff, byte[] out, int outOff) | |
| encryptBlock | back to summary |
|---|---|
| private int encryptBlock(byte[] in, int inOff, byte[] out, int outOff) Encrypt the given block starting at the given offset and place the result in the provided buffer starting at the given offset.
| |
| getAlgorithmName | back to summary |
|---|---|
| public String getAlgorithmName() Implements org. Doc from org. Return the name of the algorithm the cipher implements.
| |
| getBlockSize | back to summary |
|---|---|
| public int getBlockSize() Implements org. Doc from org. Return the block size for this cipher (in bytes).
| |
| init | back to summary |
|---|---|
| public void init(boolean forEncryption, CipherParameters params) Implements org. initialise a RC5-32 cipher.
| |
| processBlock | back to summary |
|---|---|
| public int processBlock(byte[] in, int inOff, byte[] out, int outOff) Implements org. Doc from org. Process one block of input from the array in and write it to the out array.
| |
| reset | back to summary |
|---|---|
| public void reset() Implements org. Doc from org. Reset the cipher. After resetting the cipher is in the same state as it was after the last init (if there was one). | |
| rotateLeft | back to summary |
|---|---|
| private int rotateLeft(int x, int y) Perform a left "spin" of the word. The rotation of the given word x is rotated left by y bits. Only the lg(32) low-order bits of y are used to determine the rotation amount. Here it is assumed that the wordsize used is a power of 2.
| |
| rotateRight | back to summary |
|---|---|
| private int rotateRight(int x, int y) Perform a right "spin" of the word. The rotation of the given word x is rotated left by y bits. Only the lg(32) low-order bits of y are used to determine the rotation amount. Here it is assumed that the wordsize used is a power of 2.
| |
| setKey | back to summary |
|---|---|
| private void setKey(byte[] key) Re-key the cipher.
| |
| wordToBytes | back to summary |
|---|---|
| private void wordToBytes(int word, byte[] dst, int dstOff) | |