Android中Base64加密

最近集成第三方sdk时需要Basic Authentication认证,在用Base64加密做签权的时候用Base64.DEFAULT一直不能签权成功,最后用Base64.NO_WRAP成功了。  后来查了一下原因,原来使用Base64.DEFAULT当字符串过长(一般超过76)时会自动在中间加一个换行符,字符串最后也会加一个换行符,这样就导致和其他模块对接时结果不一致,于是签权失败。而Base64.NO_WRAP 这个参数意思是略去所有的换行符,因此签权成功。  因此 Android 端使用Base64加密解密时应使用Base64.NO_WRAP。 

其他几种加密解密方式的含义:

CRLF:这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LFDEFAULT:这个参数是默认,使用默认的方法来加密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;  }  
}



转自:http://blog.csdn.net/z191726501/article/details/52778478






本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部