我的代码遇到了一些问题。
当我尝试每次使用函数byte[]
将文件Files.write write
(例如,长度为173517)写入文件随机字节(例如3355)时,我得到一个不同的值。
这是我的代码:
byte[] dataBytes = Files.readAllBytes(Paths.get(file.getAbsolutePath()));
byte[] cipByte = cipher.doFinal(dataBytes);
byte[] encr = Base64.getEncoder().encode(cipByte);
Files.write(Paths.get(encryptedFile.getAbsolutePath()), encr); //encr len = 173517
答案 0 :(得分:0)
从我的测试来看,问题似乎不是Files.write。我设法编写了一个大小为 94486449 的字节数组,没有任何问题 对于未达到预期效果的可能问题:
答案 1 :(得分:0)
您确定要检查右侧encryptedFile
吗?
您的片段中包含缺少的部分会产生有效的输出。
byte[] dataBytes = "text to be encrypted".getBytes(StandardCharsets.ISO_8859_1);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
SecretKey key = KeyGenerator.getInstance("DES").generateKey();
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] cipByte = cipher.doFinal(dataBytes);
byte[] encr = Base64.getEncoder().encode(cipByte);
File encryptedFile = new File("/tmp/in.enc");
Files.write(Paths.get(encryptedFile.getAbsolutePath()), encr);
System.out.println("encr length: " + encr.length);
System.out.println("file length: " + encryptedFile.length());
输出
encr length: 32
file length: 32