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

Java 在android中将字节数组转换为Base64字符串,java,android,base64,Java,Android,Base64,所以我让用户输入密码从android应用程序注册 在将密码保存到服务器上的数据库之前,我想将其转换为MD5单向散列并保存到数据库 MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e3) { // TODO Auto-generated catch block e3.print

所以我让用户输入密码从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编码


这是一个你可以试试的。它包括一个Base64编解码器:。

以下是我是如何做到的。。。在我的问题上面的代码之后就是这个代码

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

对于(int i=0;i对于这样一个基本的实用程序类,由于API 8中有Base64的最新实现,我将复制到我自己的应用程序包中。它使用API级别3编译

通过这种方式,您可以使用与官方android Base64实现相同的API在应用程序中编写代码,并与所有android版本保持兼容。当API 8成为市场上最旧的android版本时,您只需删除包中该类的版本,并将导入更新为官方的android.util.Base64即可。


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

一个很好的紧凑实现从API级别8(android 2.2)开始,android.util.Base64是一个非常开放的许可证。如果需要支持早期的操作系统版本,那么这将不是一个选项。这让我有些畏缩,但这是一个快速的解决方案。谢谢!你可以在这里找到代码:这个答案不正确,这个答案将字节编码为十六进制,而问题要求BASE64,这两种编码之间存在巨大差异