java采用伪随机数生成程序,生成不同大小的文件,如1M、5M、10M、20M、40M、60M、80M、100M、200M、500M等,然后采用DES加密解密
时间: 2023-09-25 22:12:15 浏览: 176
java实现DES加密、解密算法
5星 · 资源好评率100%
这个问题的解答需要分为两个部分,一是生成不同大小的文件,二是采用DES加密解密。
一、生成不同大小的文件
Java可以使用随机数生成程序来生成不同大小的文件,示例代码如下:
```java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
public class FileGenerator {
public static void main(String[] args) throws IOException {
long size = 1_000_000; // 文件大小为1M
Random random = new Random();
byte[] data = new byte[(int) size];
random.nextBytes(data);
File file = new File("1M.dat");
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
}
}
```
上述代码可以生成一个大小为1M的二进制文件,可以根据需要修改文件大小和文件名,生成不同大小的文件。
二、采用DES加密解密
Java提供了DES加密算法的实现,示例代码如下:
```java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;
public class DesEncryptor {
public static void main(String[] args) throws Exception {
byte[] key = generateKey(64);
System.out.println("Key: " + Arrays.toString(key));
byte[] data = "Hello, world!".getBytes(StandardCharsets.UTF_8);
System.out.println("Original data: " + new String(data, StandardCharsets.UTF_8));
byte[] encryptedData = encrypt(data, key);
System.out.println("Encrypted data: " + Arrays.toString(encryptedData));
byte[] decryptedData = decrypt(encryptedData, key);
System.out.println("Decrypted data: " + new String(decryptedData, StandardCharsets.UTF_8));
}
private static byte[] generateKey(int keySize) throws NoSuchAlgorithmException {
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
SecureRandom secureRandom = new SecureRandom();
keyGenerator.init(keySize, secureRandom);
SecretKey secretKey = keyGenerator.generateKey();
return secretKey.getEncoded();
}
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "DES");
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
return cipher.doFinal(data);
}
private static byte[] decrypt(byte[] encryptedData, byte[] key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "DES");
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(encryptedData);
}
}
```
上述代码生成了一个64位(8字节)的DES密钥,然后对一个字符串进行加密和解密。可以根据需要修改密钥长度和加密算法,对文件进行加密和解密。
阅读全文