转换字节数组为Base64字符串在android

转换字节数组为Base64字符串在android

问题描述:

所以我有用户输入密码从Android应用程序注册。转换字节数组为Base64字符串在android

在将密码保存到服务器上的数据库之前,我想将其转换为MD5单向散列并将其保存到数据库。

MessageDigest md = null; 
    try { 
     md = MessageDigest.getInstance("MD5"); 
    } catch (NoSuchAlgorithmException e3) { 
     // TODO Auto-generated catch block 
     e3.printStackTrace(); 
    } 
    try { 
     md.update(password.getBytes("UTF-8")); 
    } catch (UnsupportedEncodingException e3) { 
     // TODO Auto-generated catch block 
     e3.printStackTrace(); 
    } 
    byte raw[] = md.digest(); 

如何将此字节数组转换为Base64字符串。我在一些论坛上看到,android util软件包遗漏了Base64编码和解码,另一方面,我在android开发人员网站上看到了encodetoString函数。

任何帮助表示赞赏。

如果您希望您的应用程序在API级别8以下兼容,那么您可以引入第三方零件库来处理Base64编码。

Apache Commons Codec是一个你可以尝试。它包括一个Base64编解码器:http://commons.apache.org/codec/api-release/index.html

+3

一个非常宽松的许可证是一个很好的紧凑实施是[这里](http://iharder.sourceforge.net/current/java/base64/) – 2010-12-01 01:04:41

+0

请问你从哪里可以告诉我从哪里搜索.... – Aakash 2010-12-01 01:05:13

+0

酷让我尝试! – Aakash 2010-12-01 01:05:54

下面是我是如何做到的......只是在我的问题上面的代码之后的代码。

StringBuffer hexString = new StringBuffer(); 
    for (int i=0; i<raw.length; i++) 
     hexString.append(Integer.toHexString(0xFF & raw[i])); 
    password = hexString.toString(); 

谢谢。

对于这样一个基本的工具类,由于在API 8中有一个Base64的后期实现,我会将the latest source from the AOSP git repo复制到我自己的应用程序包中。它编译API级别3.

这样,您可以在应用程序中使用与官方Android Base64实现相同的API进行编码,并与所有Android版本保持兼容。当天API 8成为市场上最早的Android版本,你只需要删除你的包中的类的版本,并更新导入到官方的android.util.Base64。

的Eclipse提示:只要按照我在浏览器中提供给源链接,按Ctrl-A选择所有的代码,按Ctrl-C复制,打开Eclipse,点击包要创建类,按Ctrl-V。 .java文件是自动创建的,源代码直接使用正确的包声明进行修改。