Android中Base64加密
2016-10-10 15:51
507 查看
最近集成第三方sdk时需要Basic Authentication认证,在用Base64加密做签权的时候用Base64.DEFAULT一直不能签权成功,最后用Base64.NO_WRAP成功了。
后来查了一下原因,原来使用Base64.DEFAULT当字符串过长(一般超过76)时会自动在中间加一个换行符,字符串最后也会加一个换行符,这样就导致和其他模块对接时结果不一致,于是签权失败。而Base64.NO_WRAP 这个参数意思是略去所有的换行符,因此签权成功。
因此Android端使用Base64加密解密时应使用Base64.NO_WRAP。
其他几种加密解密方式的含义:
加解密代码如下:
后来查了一下原因,原来使用Base64.DEFAULT当字符串过长(一般超过76)时会自动在中间加一个换行符,字符串最后也会加一个换行符,这样就导致和其他模块对接时结果不一致,于是签权失败。而Base64.NO_WRAP 这个参数意思是略去所有的换行符,因此签权成功。
因此Android端使用Base64加密解密时应使用Base64.NO_WRAP。
其他几种加密解密方式的含义:
CRLF:这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LF DEFAULT:这个参数是默认,使用默认的方法来加密 NO_PADDING:这个参数是略去加密字符串最后的“=” NO_WRAP:这个参数意思是略去所有的换行符(设置后CRLF就没用了) URL_SAFE:这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/
加解密代码如下:
public class Base64Utils { // 加密 public static String getBase64(String str) { String result = ""; if( str != null) { try { result = new String(Base64.encode(str.getBytes("utf-8"), Base64.NO_WRAP),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return result; } // 解密 public static String getFromBase64(String str) { String result = ""; if (str != null) { try { result = new String(Base64.decode(str, Base64.NO_WRAP), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return result; } }
相关文章推荐
- Android开发关于MD5和Base64加密的代码帮助类
- Android中base64加密后的字符串带有“\n”导致出错的问题解决
- Android 加密 MD5和Base64简单介绍
- android Base64加密解密
- android Base64加密解密
- android Base64加密解密
- Android gzip、base64 加密、解密
- Android的对称加密与Base64加密
- 学习笔记之——android MD5加密(32位)和 Base64加密解密
- Android数据加密之Base64编码算法
- Android - Base64加密与解密
- Android去除base64加密后的字符串中的换行符“\n”
- Android的对称加密与Base64加密
- Android Base64加密解密
- android zip压缩base64解密加密
- android Base64加密解密
- Android 自带Base64加密解密
- android zip压缩base64解密加密,做记录用
- Android Base64加密 多出\n