2016-06-29 52 views
-1

我正在實現AES算法128位密鑰。加密後,加密數據的前16個字節將存儲在.docx文件中。之後,.docx文件將被阻止。使用Apache poi將數據寫入Word文檔?

XWPFDocument document = new XWPFDocument() ; 
FileOutputStream out = new FileOutputStream(filename,true);//filename is .docx word document 
XWPFParagraph paragraph = document.createParagraph(); 
XWPFRun run = paragraph.createRun(); 
run.setText(ress1);//ress1 is a String datatype 
document.write(out); 
+1

你是什麼意思的「封鎖」?你面對什麼確切的問題? –

+0

當我打開.docx文件它顯示:辦公室打開的XML文件無法打開,因爲內容有問題。之後,它顯示:在Word文檔中發現不可讀的Word內容。是否要恢復此文檔的內容? – kalyan

+0

您是如何計算出前16個字節的數據被存儲和剩餘數據未被存儲的?此外,我對你爲什麼要在Word文件中存儲加密數據有點好奇嗎?你是否想要密碼保護你的文件? –

回答

1

根據我的理解你的評論,你想加密你的word文件。你可以使用下面的代碼片段實現:

POIFSFileSystem fs = new POIFSFileSystem(); 
EncryptionInfo info = new EncryptionInfo(fs, EncryptionMode.agile); 

Encryptor enc = info.getEncryptor(); 
enc.confirmPassword(<your_password>); 


OPCPackage opc = OPCPackage.open(new File(<file_path>), PackageAccess.READ_WRITE); //opening package for encryption 
OutputStream os = enc.getDataStream(fs); //perform encryption 
opc.save(os); //save package 
opc.close(); 

FileOutputStream fos = new FileOutputStream("file_path"); 
fs.writeFilesystem(fos); //write the file back to file system 
fos.close(); 
+0

我已經在上面添加了sir.but但沒有變化先生。例如 – kalyan

+0

第一個字符串是dc3ae4d253f5620ec05848ff8847696d。這個字符串被存儲在.docx文件中。之後,那麼多的字符串正在生成,但是word文檔並沒有將這些字符串附加到第一個字符串。只有第一個字符串存儲在.docx文件中。 – kalyan

+0

@pavani是否解決了您的問題? –