import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Formatter; public class SHA1 { private static String encryptPassword(String password) { String sha1 = ""; try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(password.getBytes("UTF-8")); sha1 = bytetoHex(crypt.digest()); } catch(NoSuchAlgorithmException e) { e.printstacktrace(); } catch(UnsupportedEncodingException e) { e.printstacktrace(); } return sha1; } private static String bytetoHex(final byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x",b); } String result = formatter.toString(); formatter.close(); return result; } public static void main(String args[]){ System.out.println(SHA1.encryptPassword("test")); } }
这个代码是基于这个问题和这个问题 。 请注意,这不是这些问题的重复,因为它们是关于格式化输出的。
问题是,它产生了一个不同的结果,通过在Linux – > echo test|sha1sum通过sha1sum命令运行相同的inputstring。
Java代码输出为“test” – > a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 sha1sum在linuxterminal上为“test” – > 4e1243bd22c66e76c2ba9eddc1f91394e57f9f83
cmd时cmd总是打开一个新窗口
如何将系统属性传递给作为Windows服务运行的Tomcat 7中托pipe的Web应用程序?
增加基于Windows安装程序的Tomcat PermGen空间
如何使用Java Native Access为Java.exe以外的进程设置进程关联?
从Windows CLI运行的Java代码仍然会得到空的System.console()
他们为什么不一样?
不要Java的MessageDigest类和Linux的sha1sum工具实现相同的algorithm?
复制图像到剪贴板不能在Linux上工作(Java AWT和SWT)
在Jython中使用java.util.prefs.Preferences
尝试在Eclipse中创build新项目时出现“构buildpath条目丢失”错误
如何在Java中获取Windows域
java.nio.file.path:与名称计数不一致的行为?
问题是你如何在Linux下使用sha1sum和echo。 包括换行。 把它分成几个步骤:
echo test > somefile sha1sum somefile
会显示相同的结果…但是如果你看一些文件,你会看到它是5个字节长而不是4个。编辑它来摆脱尾随的行,再次运行sha1sum ,你会看到相同的答案Java给。
如果你使用-n选项echo ,那应该没关系:
$ echo -n test | sha1sum a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 -
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。