1;apache poi插件链接http://poi.apache.org/ 这个插件主要用于office文件文本内以及富文本(表格,图片)等的提取,还有支持对已知密码的office文件的提取,
其他格式的文件加密以及解密都有 见链接http://poi.apache.org/encryption.html
http://www.openoffice.org/sc/compdocfileformat.pdf
因为之前做全文检索的时候需要提取word03里面的表格进行分析,使用这个插件对加密的文件不支持,所以研究了下doc文件格式以及它的加密方式,另外office07系列的比较简单,基本都是对xml解析,这里就不分析了。再说一句,这里只是对linux平台,其他调用微软com的那套就不用说了。
2;首先先说下word97-03文件是怎么加密的,word加密时并不是所有字节都加密,只是带有文本,表格,富文本,图片的stream才会加密,涉及到的加密算法有RC4,MD5算法。
具体细节参考:
http://wenku.baidu.com/link?url=TrCAFtr1mHXZbh3qnnOlhYmXTS7-ynw-CES0W6KOUzRzzRg7l04Y5LXl0V3W8pQRGO4SxyzXDlXk5zlLOzPphlXOxfC6UglqRzJlnb6439_
这里只是列出一些代码实现:
字符串转utf8
public static String utf8ToUnicode(String inStr) {
char[] myBuffer = inStr.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < inStr.length(); i++) {
UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
if(ub == UnicodeBlock.BASIC_LATIN){
sb.append(myBuffer[i]);
}else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
int j = (int) myBuffer[i] - 65248;
sb.append((char)j);
}else{
short s = (short) myBuffer[i];
String hexS = Integer.toHexString(s);
String unicode = "\\u"+hexS;
sb.append(unicode.toLowerCase());
}
}
return sb.toString();
}
//验证passwd
public boolean verifypwd(