【问题标题】:Encrypting the user credentials using SHA1 algorithm使用 SHA1 算法加密用户凭据
【发布时间】:2011-10-02 08:32:50
【问题描述】:

我正在创建一个将请求发送到服务器的黑莓应用程序。因此需要对用户进行身份验证。因此,为此我想在黑莓中使用 SHA1 加密用户 ID 和密码。然后将使用 SHA1 算法对 UserID 和密码进行加密的数据传递给服务器。

我的问题是如何实现这一点。有人可以提供在黑莓中实现此功能的示例代码。

【问题讨论】:

  • SHA1 是一个哈希函数。你不能用它“加密”。
  • 请不要试图自己发明加密协议。使用 SSL。

标签: blackberry encryption sha1


【解决方案1】:

SHA1 不是加密算法。它是哈希函数。

http://en.wikipedia.org/wiki/SHA1

如果你说的是Basic Authentication,那么你需要使用Base64算法来哈希用户名和密码。

这里是关于这个问题的讨论主题:HTTP authentication in J2ME

【讨论】:

  • 抱歉用错字了,我会改正的。所以我不需要加密的字符串,而是我可以对其进行编码的散列值......那么我该怎么做......请输入一些示例代码
  • 使用SHA1Digest 类。还有一个link to sample code
【解决方案2】:

添加这个类

public class Sha1 {

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 text) {
    SHA1Digest sha1Digest = new SHA1Digest();
    sha1Digest.update(text.getBytes(), 0, text.length());
    byte[] hashValBytes = new byte[sha1Digest.getDigestLength()];
    hashValBytes = sha1Digest.getDigest();
    return convertToHex(hashValBytes);
}
}

然后在你的代码上,写

 sha1 = Sha1.SHA1(email);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多