Android数据传输中的参数加密
来源:互联网 发布:易语言数据库查找 编辑:程序博客网 时间:2024/06/05 18:23
1、数据传输
1)、http请求中,最常用的方法有两种:get和post;一般post请求适合做提交,而get请求适合做请求数据
2)、数据的加密,大概有三种常用的:AES,DES,Base64
2、Base64加密
这里使用的aes加密,然后再将字符串使用Base64编码,其中有增加向量,是为了提高加密破解难度,一段参数加密的方法如下:
/** * 对post请求数据进行加密 * @param params * @return * @throws Throwable */ public static byte[] encryptParams(HashMap<String, String> params) throws Throwable{ if (params == null){ return null; } StringBuilder stringBuilder = new StringBuilder(); Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry<String,String> entry = iterator.next(); String key = entry.getKey(); String value = entry.getValue(); if (stringBuilder.length() > 0){ stringBuilder.append("&"); } stringBuilder.append(key).append("=").append(Uri.encode(value)); } byte[] buff = stringBuilder.toString().getBytes("utf-8"); byte[] iv = new byte[16]; Random random = new Random(); random.nextBytes(iv); byte[] data = Aes.encrypt(buff,PASSWORD,iv); ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write(iv,0,iv.length); baos.write(data,0,data.length); byte[] out = baos.toByteArray(); try { baos.close(); } catch (Throwable e){ e.printStackTrace(); } return out; }
3、遇到问题
在使用Base64的过程中,遇到一些问题,如下:
1)请求的字符串被截断,抓取链接之后,得到一段空格的字符串。经过分析,其实这里是换行。。。。。
解决的方法是,在请求的时候,将输出的字符串,做如下处理:
将 android.util.Base64.encodeToString(input, Base64.DEFAULT)换成android.util.Base64.encodeToString(input, Base64.NO_WRAP);
2)除了上面的是因为换行之外,其实也真的存在空格的情况,这个时候,可以使用替换,如下:
// 加密:byte[] bodyBytes = RequestManager.encryptParams(hashMap);// 使用base64encode做最后的加密String result = new BASE64Encoder().encode(bodyBytes);String ans_url = headUrl + result.replaceAll("\n","");
4、总结
base64encode编码会在76位之后,将字符串截断。在含有中文字符串的情况下,会出现加号被替换成空格的情况。
0 0
- Android数据传输中的参数加密
- Android数据传输加密(二):AES加密
- Android数据传输加密(三):RSA加密
- Android开发笔记之数据传输中的常见加密AES\DES\DES3\RSA
- RSA加密 - 数据传输过程中的加密和防篡改
- url中的参数加密
- Android数据传输加密(一):Base64转码算法
- Android网络数据传输中的GZIP压缩
- 数据传输加密技术
- 加密数据传输接口
- Web API数据传输加密
- 数据传输加密技术分析
- PHP数据传输加密解密
- 数据传输加密设计
- 对称加密与非对称加密的在数据传输过程中的具体应用
- Android中的MD5加密
- android中的加密传输
- Android中的MD5加密
- Web、App中添加动效设计应遵循的12条原则
- 最大升序
- 常量指针和指针常量的区别详解
- html5用canvas画一个时钟
- 善于使用Linux中的help
- Android数据传输中的参数加密
- Android高效加载大图、多图解决方案,有效避免程序OOM
- bzoj 2463: [中山市选2009]谁能赢呢?
- escape()、encodeURI()、encodeURIComponent()区别详解
- 调用flask-SQLAlchemy出现 import error 错误时的解决办法
- 乌鲁木齐治鼻炎哪家医院比较好
- 二叉查找树(简单C实现)
- 控制网平差软件设计
- Spring整合Ibatis事务实现