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.
步骤二: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 将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);
}
}
相关文章推荐
- iOS,Android服务器间通用的Base64加密解密传递数据
- JAVA 使用BASE64加密、解密
- iOS开发之Objective-C中BASE64编码加密解密的使用
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- AES加解密算法,使用Base64做转码以及辅助加密:
- Android-使用sqlcipher加密解密本地数据库-加密
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 【java】AES加密解密|及Base64的使用
- 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码
- php使用base64加密解密图片
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- 在Android中通过Intent使用Bundle传递对象
- android、ios与服务器端php使用rsa加密解密通讯
- 在Android中通过Intent使用Bundle传递对象
- Android使用AIDL时传递复杂数据对象的写法
- [Android基础]Android中如何使用Intent传递对象
- android 使用Intent传递对象 Serializable 或者 Parcelabel
- Android 全局获取 Context 与使用 Intent 传递对象
- android 使用socket与pc传递对象的问题
- iOS开发:base64简单的加密和解密使用