您的位置:首页 > 移动开发 > Android开发

android使用Base64 加密解密传递 对象

2014-03-22 18:41 615 查看
关键代码:

一:Base64 将Data("Nicole",25) 加密成一个字符串baseString

// 把myData对象编码为 字符串,用Base64

    String baseString = "";    

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();   

  

    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);

    objectOutputStream.writeObject(myData);     

    baseString= Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);

    objectOutputStream.close(); // 关闭objectOutputStream

  

二:将字符串 txt 解码成 对象myData 

//讲字符串解码为对象MyData,用Base64解码

  byte [] bytes2 = Base64.decode(txt, Base64.DEFAULT);  

   ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes2);

  

   ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);

    myData = (MyData)objectInputStream.readObject();

    txt = myData.toString();

   

 

  ----------------------------------------------------------------------------------------------------------------------------------------

案例:将MyData myData = new Data("Nicole",25) 对象 从MainActivity.java 传递到OtherActivty.java .

方法:

          第一步:用Base64 将对象myData加密成一个字符串str.

          第二步:将字符串str解码成 对象myData 

-----------------------------------------------------------------

步骤一:Base64 将Data("Nicole",25) 加密成一个字符串str.

package com.android.myapp;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.util.Base64;
import android.util.Base64OutputStream;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

@SuppressLint("NewApi") public class MainActivity extends Activity {

private Button button ;
private MyData myData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

myData = new MyData("Nicole", 25);

// 把myData对象编码为 字符串,用Base64
String baseString = "";
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(myData);
baseString= Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
objectOutputStream.close(); // 关闭objectOutputStream

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
ClipData cData = ClipData.newPlainText("label", baseString);
cm.setPrimaryClip(cData);

Intent intent = new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);

}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


步骤二:Base64 将字符串txt解码为 MyData("Nicole",25);

package com.android.myapp;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipData.Item;
import android.content.ClipboardManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Base64;
import android.widget.Button;
import android.widget.TextView;

@TargetApi(Build.VERSION_CODES.HONEYCOMB) public class OtherActivity extends Activity {

private TextView textView ;
private MyData myData ;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);

ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
ClipData cd = (ClipData)cm.getPrimaryClip();
String txt = cd.getItemAt(0).getText().toString();

//讲字符串解码为对象MyData,用Base64解码
byte [] bytes2 = Base64.decode(txt, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes2);
try {
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
try {
myData = (MyData)objectInputStream.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
txt = myData.toString();

} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

textView = (TextView)findViewById(R.id.msg);
textView.setText(txt);

}

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  base64