Java 字符串转 SHA1 [英] Java String to SHA1

查看:35
本文介绍了Java 字符串转 SHA1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用 Java 制作一个简单的字符串到 SHA1 转换器,这就是我所拥有的...

I'm trying to make a simple String to SHA1 converter in Java and this is what I've got...

public static String toSHA1(byte[] convertme) {
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("SHA-1");
    }
    catch(NoSuchAlgorithmException e) {
        e.printStackTrace();
    } 
    return new String(md.digest(convertme));
}

当我传递它toSHA1("password".getBytes())时,我得到[ a ɹ?? %l 3~ .我知道这可能是一个简单的编码修复,比如 UTF-8,但有人能告诉我我应该怎么做才能得到我想要的 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8?还是我这样做完全错误?

When I pass it toSHA1("password".getBytes()), I get [�a�ɹ??�%l�3~��. I know it's probably a simple encoding fix like UTF-8, but could someone tell me what I should do to get what I want which is 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8? Or am I doing this completely wrong?

推荐答案

更新
您可以使用 Apache Commons Codec(1.7+ 版)为您完成这项工作.

UPDATE
You can use Apache Commons Codec (version 1.7+) to do this job for you.

DigestUtils.sha1Hex(stringToConvertToSHexRepresentation)

感谢@Jon Onstott 提出这个建议.

Thanks to @Jon Onstott for this suggestion.

旧答案
将您的字节数组转换为十六进制字符串.Real's How To 告诉您方法.

return byteArrayToHexString(md.digest(convertme))

和(复制自 Real's How To)

and (copied from Real's How To)

public static String byteArrayToHexString(byte[] b) {
  String result = "";
  for (int i=0; i < b.length; i++) {
    result +=
          Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
  }
  return result;
}

<小时>

顺便说一句,您可以使用 Base64 获得更紧凑的表示.Apache Commons Codec API 1.4,有一个很好的实用程序,可以消除所有的痛苦.参考这里


BTW, you may get more compact representation using Base64. Apache Commons Codec API 1.4, has this nice utility to take away all the pain. refer here

这篇关于Java 字符串转 SHA1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆