当前位置:首页 » 安卓系统 » base64android

base64android

发布时间: 2024-06-19 10:21:59

1. Android Okhttp/Retrofit网络请求加解密实现方案

比较安全的方案应该是AES+RSA的加密方式。具体如下图所示。

为什么要这样做呢?
1、RSA是非对称加密,公钥和私钥分开,且公钥可以公开,很适合网络数据传输场景。但RSA加密比较慢,据说比AES慢100倍,且对加密的数据长度也有限制。
2、AES是对称加密,加密速度快,安全性高,但密钥的保存是个问题,在网络数据传输的场景就很容易由于密钥泄露造成安全隐患
3、所以,AES+RSA结合才更好,AES加密数据,且密钥随机生成,RSA用对方(服务器)的公钥加密随机生成的AES密钥。传输时要把密文,加密的AES密钥和自己的公钥传给对方(服务器)。对方(服务器)接到数据后,用自己的私钥解密AES密钥,再拿AES密钥解密数据得到明文。这样就综合了两种加密体系的优点。
4、除上面说的外,还可以加签名,即对传输的数据(加密前)先做个哈希,然后用自己的RSA私钥对哈希签名(对方拿到自己的公钥可以验签),这样可以验证传输内容有没有被修改过。

java来说,加密的输入和输出都是字节数组类型的,也就是二进制数据,网络传输或本地保存都需要重新编码为字符串。推荐使用Base64。Android 有自带的Base64实现,flag要选Base64.NO_WRAP,不然末尾会有换行影响服务端解码。
Android中Base64加密

总而言之,这些不同语言都有实现库,调用即可,关键是参数要一致,具体还需要和后台联调一下。
rsa加解密的内容超长的问题解决

现在说到网络框架,应该毫无疑问是Retrofit了。上面说的加密方案说到底还是要在网络请求框架内加上,怎么做入侵最小,怎么做最方便才是重点。
1、坑定不能直接在接口调用层做加密,加参数,这样每个接口都要修改,这是不可能的。
2、ConverterFactory处理,这也是网上可以搜到的很多文章的写法,但我觉得还是有入侵。而且有点麻烦。
3、OkHttp添加拦截器,这种方法入侵最小(可以说没有),实现呢也非常优雅。
下面的实现,网上也找不到多少可以参考的文章,但不得不说,OkHttp的封装和设计真的很好用,所见即所得。看下源码,就知道该怎么用了,连文档都不用查。

主要注意点:
0、和接口无关的新加的数据放在请求头里。
1、该close的要close,不然会内存泄漏。
2、新旧Request和Response要区分好,新的要替换旧的去传递或返回。
3、要对response.code()做处理,只有在和后台约定好的返回码下才走解密的逻辑,具体看自己的需求,不一定都是200。

2. android 程序 从数据库获取的base64类型的字符串转换成图片 再通过HashMap 传进入 但是图片显示不了

可以把bitmap图片和base64字符串来互相转换~ 从此妈妈再也不用担心我处理bitmap啦~
/**
* 将bitmap转换成base64字符串
*
* @param bitmap
* @return base64 字符串
*/
public String bitmaptoString(Bitmap bitmap, int bitmapQuality) {
// 将Bitmap转换成字符串
String string = null;
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, bitmapQuality, bStream);
byte[] bytes = bStream.toByteArray();
string = Base64.encodeToString(bytes, Base64.DEFAULT);
return string;
}
/**
* 将base64转换成bitmap图片
*
* @param string base64字符串
* @return bitmap
*/
public Bitmap stringtoBitmap(String string) {
// 将字符串转换成Bitmap类型
Bitmap bitmap = null;
try {
byte[] bitmapArray;
bitmapArray = Base64.decode(string, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,
bitmapArray.length);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}

3. Android ,base64转bitmap

1 把图像文件读如byte数组中。
2 然后调用EncodeBase64函数,把Byte数组传入,函数返回Base64的字符串。
以上即可完成Base64转换。

反方向
1 然后调用DecodeBase64函数,把Byte64字符串传入,函数返回Byte数组。
2 把Bye数组内容写入文件,文件名为bitmap位图的bpm文件即可。

4. java base64解密乱码问题 代码如下:

private String getPictureString() {
String upload = "";
try {
FileInputStream in = new FileInputStream(fileName);
byte[] ba = new byte[in.available()];
in.read(ba);
in.close();
upload = new String(android.util.Base64.encode(ba,
android.util.Base64.DEFAULT));
} catch (FileNotFoundException e) {
LogUtil.e(e.getMessage(), e);
} catch (IOException e) {
LogUtil.e(e.getMessage(), e);
}
return upload;
}


这个是加密

解密就是

encode换成decode

upload=newString(android.util.Base64.decode(ba,

android.util.Base64.DEFAULT));

5. 濡备綍鎶奲yte杞鎹㈡垚base64镄刡yte

鐢变簬璇ラ梾棰樻病链夋爣鏄庢槸java鎴栬呮槸android镄勶纴浠ヤ笅鎴戠殑瑙e喅鏂规硶:

android:

byte[]result=Base64.encode(key,Base64.DEFAULT);

鍏朵腑key 镄勭被鍨嬫槸byte[].姝ゆ柟娉曟槸android镊甯︾殑瑁呮崲鏂规硶銆

濡傛灉镒熻 byte[] result 寰堜笉鐩磋傦纴鍙浠ヤ娇鐢 new String锛坮esult锛 鏂规硶杞鍖栨垚 瀛楃︿覆绫诲瀷杩涜岃緭鍑恒

java璇瑷锛堜笉澶氲磋存槑浜嗭纴搴曚笅浠g爜鍐欑殑寰堣︾粏锛夛细

//瀹氢箟涓涓狟ASE64Encoder
BASE64Encoderencode=newBASE64Encoder();
//灏哹yte[]杞鎹涓篵ase64
Stringbase64=encode.encode("浜旂玛瀛楀瀷鐢靛瓙璁$畻链".getBytes());
//杈揿嚭base64
System.out.println(base64);
//鏂板缓涓涓狟ASE64Decoder
BASE64Decoderdecode=newBASE64Decoder();
//灏哹ase64杞鎹涓篵yte[]
byte[]b=decode.decodeBuffer(base64);
//杈揿嚭杞鎹㈠悗镄刡yte[]
System.out.println(newString(b));}

6. 安卓开发中怎么将文件转换成base64字符串

将文件转成base64 字符串,android 手机开发的时候会用到,当然在android有转base64的方法,这里调用的是jdk的api
[代码] [Java]代码
01 package com.xbl.test;
02
03 import java.io.File;
04 import java.io.FileInputStream;
05 import java.io.FileOutputStream;
06
07 import sun.misc.BASE64Decoder;
08 import sun.misc.BASE64Encoder;
09
10 public class File2Code {
11
12 /**
13 * <p>将文件转成base64 字符串</p>
14 * @param path 文件路径
15 * @return
16 * @throws Exception
17 */
18 public static String encodeBase64File(String path) throwsException {
19 File file = new File(path);
20 FileInputStream inputFile = new FileInputStream(file);
21 byte[] buffer = new byte[(int)file.length()];
22 inputFile.read(buffer);
23 inputFile.close();
24 return new BASE64Encoder().encode(buffer);
25 }
26 /**
27 * <p>将base64字符解码保存文件</p>
28 * @param base64Code
29 * @param targetPath
30 * @throws Exception
31 */
32 public static void decoderBase64File(String base64Code,String targetPath) throws Exception {
33 byte[] buffer = new BASE64Decoder().decodeBuffer(base64Code);
34 FileOutputStream out = new FileOutputStream(targetPath);
35 out.write(buffer);
36 out.close();
37 }
38 /**
39 * <p>将base64字符保存文本文件</p>
40 * @param base64Code
41 * @param targetPath
42 * @throws Exception
43 */
44 public static void toFile(String base64Code,String targetPath)throws Exception {
45 byte[] buffer = base64Code.getBytes();
46 FileOutputStream out = new FileOutputStream(targetPath);
47 out.write(buffer);
48 out.close();
49 }
50 public static void main(String[] args) {
51 try {
52 String base64Code =encodeBase64File("D:\\1.jpg");
53 System.out.println(base64Code);
54 decoderBase64File(base64Code, "D:\\2.jpg");
55 toFile(base64Code, "D:\\three.txt");
56 } catch (Exception e) {
57 e.printStackTrace();
58 }
59 }
60
61 }

7. android webService开发过程中 接口上需要的Base64Binary参数 我应该用什么类型的参数去对应求答案

1、参考http://pointonline.iteye.com/blog/736356
byte[] d ; // d中存放需要传递的数据

String data = new String(Base64.encode(d));

SoapObject request= new SoapObject(nameSpace, function);

request.addProperty(str,new SoapPrimitive(SoapEnvelope.ENC,"base64Binary",data));

2、我自己开发的项目中,直接传递的,也成功了
ByteArrayOutputStream baos; // baos中存放需要传递的数据
// 进行Base64编码
String uploadBuffer = new String(Base64.encode(baos.toByteArray()));

SoapObject request= new SoapObject(nameSpace, function);
request.addProperty(str,uploadBuffer );

热点内容
ftp上传浏览器 发布:2024-11-26 15:39:56 浏览:787
mvc数据访问层 发布:2024-11-26 15:39:36 浏览:258
安卓的face怎么使用 发布:2024-11-26 15:05:50 浏览:89
存储魔力象限2016 发布:2024-11-26 15:04:47 浏览:866
QQ填写验证码是历史密码是什么 发布:2024-11-26 15:04:16 浏览:506
vs2017编译文件无效或损毁 发布:2024-11-26 15:04:16 浏览:598
腾讯微信如何更改登录密码 发布:2024-11-26 14:57:46 浏览:22
pythondict参数 发布:2024-11-26 14:49:41 浏览:106
ubuntu安装linux源码 发布:2024-11-26 14:48:52 浏览:745
百度云解压密码忘记 发布:2024-11-26 14:35:36 浏览:864