java php sha1 函数

发布于 2024-11-02 08:12:32 字数 121 浏览 2 评论 0原文

java中sha1函数的alertnate是什么,

就像php中的一样,

sha1("here is string"); 

java中的是什么

what is alertnate of sha1 function in java

just like in php

sha1("here is string"); 

what will be in java

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我是有多爱你 2024-11-09 08:12:32

您使用 java.security.MessageDigest类。但请注意,哈希值通常应用于二进制数据而不是字符串 - 因此您需要首先将字符串转换为字节数组,通常使用String.getBytes(String)方法 - 确保使用指定编码的重载而不是使用平台默认值。例如(省略异常处理):

MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] data = text.getBytes("UTF-8");
byte[] hash = sha1.digest(data);

一旦您将哈希值作为字节数组,您可能希望将其转换回文本 - 这应该以十六进制或可能以 Base64 形式完成,例如使用 Apache Commons 编解码器

如果您尝试匹配 PHP 生成的 SHA-1 哈希值,则需要找出将字符串转换为字节时使用的编码,以及随后如何表示哈希值。

You use the java.security.MessageDigest class in Java. But note that hashes are generally applied to binary data rather than strings - so you need to convert your string into a byte array first, usually with the String.getBytes(String) method - make sure you use the overload which specifies an encoding rather than using the platform default. For example (exception handling elided):

MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] data = text.getBytes("UTF-8");
byte[] hash = sha1.digest(data);

Once you've got the hash as a byte array, you may want to convert that back to text - which should be done either as hex or possibly as Base64, e.g. using Apache Commons Codec.

If you're trying to match the SHA-1 hash produced by PHP, you'll need to find out what encoding that uses when converting the string to bytes, and how it then represents the hash afterwards.

铁轨上的流浪者 2024-11-09 08:12:32

这是我使用的。 (我对我编译这个答案的两个答案投了赞成票,但为了简单起见,我想将其粘贴到一个答案中。)

// This replicates the PHP sha1 so that we can authenticate the same users.
public static String sha1(String s) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    return byteArray2Hex(MessageDigest.getInstance("SHA1").digest(s.getBytes("UTF-8")));
}

private static final char[] hex = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static String byteArray2Hex(byte[] bytes) {
    StringBuilder sb = new StringBuilder(bytes.length * 2);
    for (final byte b : bytes) {
        sb.append(hex[(b & 0xF0) >> 4]);
        sb.append(hex[b & 0x0F]);
    }
    return sb.toString();
}

Here is what I use. (I upvoted the two answers I compiled this one from, but I thought I'd paste it in a single answer for simplicity.)

// This replicates the PHP sha1 so that we can authenticate the same users.
public static String sha1(String s) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    return byteArray2Hex(MessageDigest.getInstance("SHA1").digest(s.getBytes("UTF-8")));
}

private static final char[] hex = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static String byteArray2Hex(byte[] bytes) {
    StringBuilder sb = new StringBuilder(bytes.length * 2);
    for (final byte b : bytes) {
        sb.append(hex[(b & 0xF0) >> 4]);
        sb.append(hex[b & 0x0F]);
    }
    return sb.toString();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文