通过环顾四周和一般的互联网,我找到了Bouncy Castle.我想使用Bouncy Castle(或其他一些免费提供的实用程序)在Java中生成一个SHA-256 Hash of String.看看他们的文档,我似乎找不到任何我想做的好例子.这里有人可以帮帮我吗?
好的,我知道如何在C#中做到这一点.
它很简单:
Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.
Run Code Online (Sandbox Code Playgroud)
我怎么能用Java做到这一点?
我有以下Java代码:
byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)
int result = value & 0xff;
Run Code Online (Sandbox Code Playgroud)
打印时结果是254,但我不知道这段代码是如何工作的.如果&运算符只是按位,那么为什么它不会产生一个字节而是一个整数呢?
我需要从一个字符串生成一个SHA-256校验和,该字符串将作为get参数发送.
如果找到此链接以生成校验和.
像这样生成校验和:
val digest = MessageDigest.getInstance("SHA-256");
private def getCheckSum() = {
println(new String(digest.digest(("Some String").getBytes(StandardCharsets.UTF_8))))
}
Run Code Online (Sandbox Code Playgroud)
打印校验和类似于:
*??¼?]9AòdJb:#?o6?T?B5C?¼O~??àÿG
Run Code Online (Sandbox Code Playgroud)
我们需要发送它的API说校验和应该如下所示:
45e00158bc8454049b7208e76670466d49a5dfb2db4196
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
请指教.谢谢.
我偶然发现了包Hashing中的课程com.google.common.hash。如果我使用该类的函数,Intellij IDEA 将显示以下警告:
类本身带有@Beta注释:
注释的描述@Beta说:
表示公共 API(公共类、方法或字段)在未来版本中可能会发生不兼容的更改,甚至被删除。带有此注释的 API 不受其包含库所做的任何兼容性保证的约束。请注意,此注释的存在并不意味着API 的质量或性能......
...有问题的只是它不是“API 冻结”这一事实。应用程序依赖 beta API 通常是安全的,但需要做一些额外的工作......
...在升级期间。然而,通常不建议库(包含在用户的 CLASSPATH 中,超出库开发人员的控制)这样做。
问题是使用上述类及其功能是否安全/稳定?使用测试版 API 时需要权衡什么?
对于密码列,是否存在使用"sha-256"存储密码的mysql功能?或者我应该在Java代码中将其哈希(比如如何在Java中使用sha256散列一些字符串?),然后再将其存储在数据库中,然后每次哈希密码输入并与数据库列值进行比较以进行身份验证?
TIA.
我们需要读取文件内容并将其转换为SHA256,然后将其转换为Base64.
任何指针或示例代码都足够了,因为我是这种加密机制的新手.
提前致谢.
我想用来MessageDigest获取MD5哈希,但是我收到了一个错误.
import java.security.MessageDigest;
public class dn {
public static void main(String[] args) {
MessageDigest md = MessageDigest.getInstance("MD5");
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Run Code Online (Sandbox Code Playgroud)Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type NoSuchAlgorithmException
错误是指
NoSuchAlgorithmException - 如果指定的算法的MessageDigestSpi实现不可用于指定的提供程序.
在此网站上发现http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html下的getInstance
我重新安装了最新的java jdk1.7.0_21和不同版本的eclipse,但错误仍然存在.日食上的其他一切都运行良好.
我不知道我还能做什么.
我试图使用SHA-256哈希我的用户密码字符串类型
我使用SHA-256使用以下方法散列字符串
String text = "abc";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
要将btye数组转换为字符串,我使用以下方法
String doc2 = new String(hash, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
当我打印doc2输出时,我得到了垃圾
?x????AA@?]?"#?a??z???a?
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ???如何使用SHA-256散列字符串并将其转换回字符串?
我想使用SHA-256算法在数据库中加密密码.我已经做了一些研究,我发现我应该使用MessageDigest类来正确加密字符串对象.问题是如何恢复哈希函数以恢复原始密码?我的意思是如果我要创建一个登录系统,我必须能够恢复到原来的密码,或者可能不是?也许当密码填写到表单中时,必须将其转换为哈希函数并与存储在数据库中的哈希字符串进行比较,对吧?