【问题标题】:how to encode pass with sha1 and Base64?如何使用 sha1 和 Base64 对 pass 进行编码?
【发布时间】:2015-09-15 12:39:17
【问题描述】:

我需要提供带有 sha1 和 Base64 的哈希密码,如下所示:

base64(sha1(password))

这是我尝试的:

private static String convertToHex(byte[] data) { 
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < data.length; i++) { 
        int halfbyte = (data[i] >>> 4) & 0x0F;
        int two_halfs = 0;
        do { 
            if ((0 <= halfbyte) && (halfbyte <= 9)) {
                buf.append((char) ('0' + halfbyte));
            }
            else {
                buf.append((char) ('a' + (halfbyte - 10)));
            }
            halfbyte = data[i] & 0x0F;
        } while(two_halfs++ < 1);
    } 
    return buf.toString();
} 


public static String SHA1(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.update(password.getBytes("iso-8859-1"), 0, password.length());
    byte[] sha1hash = md.digest();
    return convertToHex(sha1hash);
}

比:

String encodedPass = Base64.encodeToString(password.getBytes(), Base64.DEFAULT);

但这不能正常工作... 也许有一些错误或更简单的方法来做到这一点?

【问题讨论】:

    标签: android base64 encode sha1


    【解决方案1】:

    接下来的问题是: convertToHex(sha1hash) - 返回字符串,但是为了 Base64 的正确工作,我需要将 byte [] 放在这里:

    Base64.encodeToString(byte[], Base64.DEFAULT);
    

    所以解决方案非常简单:

    public static String encodePassword(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
            String result;
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            md.update(password.getBytes("iso-8859-1"), 0, password.length());
            byte[] sha1hash = md.digest();
            result = Base64.encodeToString(sha1hash, Base64.DEFAULT);
            result = result.substring(0, result.length()-1);
            return result;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多