rc4算法的Java实现
时间: 2024-05-11 09:01:25 浏览: 11
以下是RC4算法的Java实现代码:
```java
public class RC4 {
private final byte[] S = new byte[256];
private final byte[] T = new byte[256];
public RC4(byte[] key) {
if (key.length < 1 || key.length > 256) {
throw new IllegalArgumentException("RC4: invalid key length");
}
for (int i = 0; i < 256; i++) {
S[i] = (byte) i;
T[i] = key[i % key.length];
}
int j = 0;
for (int i = 0; i < 256; i++) {
j = (j + S[i] + T[i]) & 0xff;
swap(S, i, j);
}
}
public byte[] encrypt(byte[] plaintext) {
byte[] ciphertext = new byte[plaintext.length];
int i = 0, j = 0;
for (int k = 0; k < plaintext.length; k++) {
i = (i + 1) & 0xff;
j = (j + S[i]) & 0xff;
swap(S, i, j);
ciphertext[k] = (byte) (plaintext[k] ^ S[(S[i] + S[j]) & 0xff]);
}
return ciphertext;
}
public byte[] decrypt(byte[] ciphertext) {
return encrypt(ciphertext);
}
private static void swap(byte[] array, int i, int j) {
byte temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
```
使用示例:
```java
byte[] key = "this is a key".getBytes();
byte[] plaintext = "hello world".getBytes();
RC4 rc4 = new RC4(key);
byte[] ciphertext = rc4.encrypt(plaintext);
byte[] decrypted = rc4.decrypt(ciphertext);
System.out.println(new String(ciphertext)); // output: ��~�p�e���
System.out.println(new String(decrypted)); // output: hello world
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)