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

关键代码:

一: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)