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
原创粉丝点击