【发布时间】:2021-05-07 03:13:17
【问题描述】:
所以,我浏览了几个 Stackoverflow 线程和其他网站,同时试图找到解决方案。
我正在处理一项需要使用 MessageDigest 实例的学校作业。
我将在下面粘贴我的代码,但我尝试过 getInstance("SHA-256") 和 getInstance("SHA-1") 和 getInstance("MD5") 都出现相同的错误。
我也尝试使用“SUN”添加提供程序参数,但随后我得到了一个
NoSuchProviderException。
我的学校指令要求import java.security.MessageDigest。
我已经尝试过,以及import java.security.*,以防万一丢失。
我试图获取提供者的列表,但这并没有给我任何东西,甚至无法编译。
我已按照this site 中的 try/catch 说明进行操作。还是什么都没有。
我不知道下一步该去哪里,而且似乎没有一个网站对此有可靠的答案。
根据 Oracle 的说法,该流程应该在提供者之间循环,直到找到一个支持您选择的任何算法的提供者,并且我已经尝试了他们列表中的所有三个 source。
我知道这可能是我忽略的超级简单的事情,但我似乎无法弄清楚。任何帮助,将不胜感激。代码如下
-乔恩
代码:
package com.snhu.sslserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.security.MessageDigest;
import java.util.Scanner;
@SpringBootApplication
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
@RestController
class ServerController{
//create instance of message digest
MessageDigest md = MessageDigest.getInstance("SHA-256");
//FIXME: Add hash function to return the checksum value for the data string that should contain your name.
@RequestMapping("/hash")
public String myHash(){
String data = "Hello Joe Smith!";
return "<p>data:"+data;
}
}
【问题讨论】:
-
这能回答你的问题吗? MessageDigest NoSuchAlgorithmException
-
只有显式构造函数才能抛出,需要定义
public ServerController() throws NoSuchAlgorithmException { this.md = MessageDigest.getInstance("SHA-256"); }并删除字段初始化器:private MessageDigest md;。 -
谢谢@PiotrP.Karwasz,我现在就试试。
-
@jon,请检查下面的答案。它不是线程安全的
-
@Horse,谢谢!我刚刚检查过了,现在正在处理你的建议。非常感谢您的帮助!