DELPHI:
EncdDecd单元下就自带有base64的加解密函数 EncodeString和 DecodeString
JAVA:
import javax.mail.internet.MimeUtility;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
/**
* Simple Base64 string decoding function
* @author Jason Borden <jborden@javasense.com>
*
* @version This is $Revision: 1.5.4.2 $
*/
public class Base64 {
public static BufferedReader decode(String b64string) throws Exception {
return new BufferedReader(
new InputStreamReader(
MimeUtility.decode(
new ByteArrayInputStream(
b64string.getBytes()), "base64")));
}
file://2003-10-29 10:28 hajavaor added
public static void main(String args[]) throws Exception{
if (args.length!=2){
System.err.println("Usage: java Base64 encORdec yourStrings");
System.exit(0);
}
String str1 = args[0].trim();
if (str1.equalsIgnoreCase("enc")){
System.out.println(encodeAsString(args[1]));
}
else if(str1.equalsIgnoreCase("dec")){
System.out.println(decodeAsString(args[1]));
}
else{
System.err.println("Usage: java Base64 encORdec yourStrings");
System.exit(0);
}
}
//
public static String decodeAsString(String b64string) throws Exception {
if (b64string == null) {
return b64string;
}
String returnString = decode(b64string).readLine();
if (returnString == null) {
return returnString;
}
return returnString.trim();
}
public static ByteArrayOutputStream encode(String plaintext)
throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] in = plaintext.getBytes();
ByteArrayOutputStream inStream = new ByteArrayOutputStream();
inStream.write(in, 0, in.length);
// pad
if ((in.length % 3 ) == 1){
inStream.write(0);
inStream.write(0);
} else if((in.length % 3 ) == 2){
inStream.write(0);
}
inStream.writeTo( MimeUtility.encode(out, "base64") );
return out;
}
public static String encodeAsString(String plaintext) throws Exception {
return encode(plaintext).toString();
}
}
///程序结束。
一个有趣的发现(关于微软mht文件的格式):
我们用IE另存网页文件时,有多种选择。
1、WEB页全部。你会发现一个html文件及一个相应的文件夹。这样,我们在打开这个网页文件的时候,能同时看到网页的附加元素(图片、样式表、帧等)。windows系统将这个文件与文件夹建立了一种关联,当你移动html文件的时候,你发现文件夹也同时被移动了。当你删除这个文件夹的时候,会发现文件也被删除了。我们可以先将文件夹改名,然后就可以安全删除文件夹了。
2、WEB文档,单一格式,即mht文件。这样我们就可以在一个文件中保存网页的全部内容。你可以用记事本打开这个文件,会发现:里面的正文以Base64编码,并且整个文件结构很象邮件的结构。是这样的吗?将mht改名为eml,然后双击,竟然真的能用Outlook express打开了。
原来,mht文件就是一封邮件,内容以Base64编码。
同理,你可以将邮件从outlook express拖到外面,生成一个*.eml文件。将文件改名试试。
有意思。
谁对mht格式有进一步的分析,请续之。
多谢。