- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试调用下面提到的 hash(String plainText)
函数 -
import java.security.MessageDigest;
import java.lang.Exception;
import java.util.Base64;
public class MyHash {
private MessageDigest messageDigest = null;
private String algo = "SHA3-384";
public String hash(String plainText)
{
byte[] hashBytes = null;
try
{
messageDigest = MessageDigest.getInstance(algo);
messageDigest.update( plainText.getBytes() );
hashBytes = messageDigest.digest();
}
catch(Exception e)
{
e.printStackTrace();
}
return Base64.getEncoder().encodeToString(hashBytes);
}
}
得到了这个错误-
java.security.NoSuchAlgorithmException: SHA3-384 MessageDigest not available
at sun.security.jca.GetInstance.getInstance(java.base@9-internal/GetInstance.java:159)
at java.security.Security.getImpl(java.base@9-internal/Security.java:695)
at java.security.MessageDigest.getInstance(java.base@9-internal/MessageDigest.java:174)
at MyHash.hash(MyHash.java:16)
at Main.main(Main.java:36)
此外,java -version
的输出 -
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
不知道为什么会出现这个错误。任何帮助将不胜感激。
编辑 1:
这些是支持的算法-
Provider: SUN
Algorithm: SHA1PRNG
Algorithm: NativePRNG
Algorithm: NativePRNGBlocking
Algorithm: NativePRNGNonBlocking
Algorithm: SHA1withDSA
Algorithm: NONEwithDSA
Algorithm: SHA224withDSA
Algorithm: SHA256withDSA
Algorithm: SHA1withDSAinP1363Format
Algorithm: NONEwithDSAinP1363Format
Algorithm: SHA224withDSAinP1363Format
Algorithm: SHA256withDSAinP1363Format
Algorithm: DSA
Algorithm: MD2
Algorithm: MD5
Algorithm: SHA
Algorithm: SHA-224
Algorithm: SHA-256
Algorithm: SHA-384
Algorithm: SHA-512
Algorithm: DSA
Algorithm: DSA
Algorithm: DSA
Algorithm: X.509
Algorithm: PKCS12
Algorithm: JKS
Algorithm: CaseExactJKS
Algorithm: DKS
Algorithm: JavaPolicy
Algorithm: JavaLoginConfig
Algorithm: PKIX
Algorithm: PKIX
Algorithm: Collection
Algorithm: com.sun.security.IndexedCollection
Provider: SunRsaSign
Algorithm: RSA
Algorithm: RSA
Algorithm: MD2withRSA
Algorithm: MD5withRSA
Algorithm: SHA1withRSA
Algorithm: SHA224withRSA
Algorithm: SHA256withRSA
Algorithm: SHA384withRSA
Algorithm: SHA512withRSA
Provider: SunJSSE
Algorithm: RSA
Algorithm: RSA
Algorithm: MD2withRSA
Algorithm: MD5withRSA
Algorithm: SHA1withRSA
Algorithm: MD5andSHA1withRSA
Algorithm: SunX509
Algorithm: NewSunX509
Algorithm: SunX509
Algorithm: PKIX
Algorithm: TLSv1
Algorithm: TLSv1.1
Algorithm: TLSv1.2
Algorithm: TLS
Algorithm: DTLSv1.0
Algorithm: DTLSv1.2
Algorithm: DTLS
Algorithm: Default
Algorithm: PKCS12
Provider: SunJCE
Algorithm: RSA
Algorithm: DES
Algorithm: DESede
Algorithm: DESedeWrap
Algorithm: PBEWithMD5AndDES
Algorithm: PBEWithMD5AndTripleDES
Algorithm: PBEWithSHA1AndDESede
Algorithm: PBEWithSHA1AndRC2_40
Algorithm: PBEWithSHA1AndRC2_128
Algorithm: PBEWithSHA1AndRC4_40
Algorithm: PBEWithSHA1AndRC4_128
Algorithm: PBEWithHmacSHA1AndAES_128
Algorithm: PBEWithHmacSHA224AndAES_128
Algorithm: PBEWithHmacSHA256AndAES_128
Algorithm: PBEWithHmacSHA384AndAES_128
Algorithm: PBEWithHmacSHA512AndAES_128
Algorithm: PBEWithHmacSHA1AndAES_256
Algorithm: PBEWithHmacSHA224AndAES_256
Algorithm: PBEWithHmacSHA256AndAES_256
Algorithm: PBEWithHmacSHA384AndAES_256
Algorithm: PBEWithHmacSHA512AndAES_256
Algorithm: Blowfish
Algorithm: AES
Algorithm: AES_128/ECB/NoPadding
Algorithm: AES_128/CBC/NoPadding
Algorithm: AES_128/OFB/NoPadding
Algorithm: AES_128/CFB/NoPadding
Algorithm: AES_128/GCM/NoPadding
Algorithm: AES_192/ECB/NoPadding
Algorithm: AES_192/CBC/NoPadding
Algorithm: AES_192/OFB/NoPadding
Algorithm: AES_192/CFB/NoPadding
Algorithm: AES_192/GCM/NoPadding
Algorithm: AES_256/ECB/NoPadding
Algorithm: AES_256/CBC/NoPadding
Algorithm: AES_256/OFB/NoPadding
Algorithm: AES_256/CFB/NoPadding
Algorithm: AES_256/GCM/NoPadding
Algorithm: AESWrap
Algorithm: AESWrap_128
Algorithm: AESWrap_192
Algorithm: AESWrap_256
Algorithm: RC2
Algorithm: ARCFOUR
Algorithm: DES
Algorithm: DESede
Algorithm: Blowfish
Algorithm: AES
Algorithm: RC2
Algorithm: ARCFOUR
Algorithm: HmacMD5
Algorithm: HmacSHA1
Algorithm: HmacSHA224
Algorithm: HmacSHA256
Algorithm: HmacSHA384
Algorithm: HmacSHA512
Algorithm: DiffieHellman
Algorithm: DiffieHellman
Algorithm: DiffieHellman
Algorithm: DiffieHellman
Algorithm: DES
Algorithm: DESede
Algorithm: PBE
Algorithm: PBEWithMD5AndDES
Algorithm: PBEWithMD5AndTripleDES
Algorithm: PBEWithSHA1AndDESede
Algorithm: PBEWithSHA1AndRC2_40
Algorithm: PBEWithSHA1AndRC2_128
Algorithm: PBEWithSHA1AndRC4_40
Algorithm: PBEWithSHA1AndRC4_128
Algorithm: PBES2
Algorithm: PBEWithHmacSHA1AndAES_128
Algorithm: PBEWithHmacSHA224AndAES_128
Algorithm: PBEWithHmacSHA256AndAES_128
Algorithm: PBEWithHmacSHA384AndAES_128
Algorithm: PBEWithHmacSHA512AndAES_128
Algorithm: PBEWithHmacSHA1AndAES_256
Algorithm: PBEWithHmacSHA224AndAES_256
Algorithm: PBEWithHmacSHA256AndAES_256
Algorithm: PBEWithHmacSHA384AndAES_256
Algorithm: PBEWithHmacSHA512AndAES_256
Algorithm: Blowfish
Algorithm: AES
Algorithm: GCM
Algorithm: RC2
Algorithm: OAEP
Algorithm: DiffieHellman
Algorithm: DES
Algorithm: DESede
Algorithm: PBEWithMD5AndDES
Algorithm: PBEWithMD5AndTripleDES
Algorithm: PBEWithSHA1AndDESede
Algorithm: PBEWithSHA1AndRC2_40
Algorithm: PBEWithSHA1AndRC2_128
Algorithm: PBEWithSHA1AndRC4_40
Algorithm: PBEWithSHA1AndRC4_128
Algorithm: PBEWithHmacSHA1AndAES_128
Algorithm: PBEWithHmacSHA224AndAES_128
Algorithm: PBEWithHmacSHA256AndAES_128
Algorithm: PBEWithHmacSHA384AndAES_128
Algorithm: PBEWithHmacSHA512AndAES_128
Algorithm: PBEWithHmacSHA1AndAES_256
Algorithm: PBEWithHmacSHA224AndAES_256
Algorithm: PBEWithHmacSHA256AndAES_256
Algorithm: PBEWithHmacSHA384AndAES_256
Algorithm: PBEWithHmacSHA512AndAES_256
Algorithm: PBKDF2WithHmacSHA1
Algorithm: PBKDF2WithHmacSHA224
Algorithm: PBKDF2WithHmacSHA256
Algorithm: PBKDF2WithHmacSHA384
Algorithm: PBKDF2WithHmacSHA512
Algorithm: HmacMD5
Algorithm: HmacSHA1
Algorithm: HmacSHA224
Algorithm: HmacSHA256
Algorithm: HmacSHA384
Algorithm: HmacSHA512
Algorithm: HmacPBESHA1
Algorithm: PBEWithHmacSHA1
Algorithm: PBEWithHmacSHA224
Algorithm: PBEWithHmacSHA256
Algorithm: PBEWithHmacSHA384
Algorithm: PBEWithHmacSHA512
Algorithm: SslMacMD5
Algorithm: SslMacSHA1
Algorithm: JCEKS
Algorithm: SunTlsPrf
Algorithm: SunTls12Prf
Algorithm: SunTlsMasterSecret
Algorithm: SunTlsKeyMaterial
Algorithm: SunTlsRsaPremasterSecret
编辑 2:
Oracle 的 JDK 9.0.1 没有错误
最佳答案
OpenJdk 9 也应该按照下面的链接实现这一点。
JEP 287: SHA-3 Hash Algorithms
尝试在您的环境中运行以下代码,看看支持哪些算法。
public static void main(String[] args) {
for (Provider provider : Security.getProviders()) {
System.out.println("Provider: " + provider.getName());
for (Provider.Service service : provider.getServices()) {
System.out.println(" Algorithm: " + service.getAlgorithm());
}
}
}
不确定,但我认为您提供的链接指向 Oracle 的 JDK,而您使用的是 openjdk。
关于java - "java.security.NoSuchAlgorithmException: SHA3-384 MessageDigest not available"与 Java 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040299/
我正在使用下面的代码但收到警告, bool versionSupports = (@available(iOS 10, *)); @available does not guard availabil
我需要检查 Xamarin.iOS 中的 API 可用性 - 在 Objective-C 或 Swift 中我可以使用这些调用: if (@available(iOS 13, *)) 或 if #av
我遇到了一个我似乎不明白的奇怪问题。我正在制作一个从文件中读取数据的程序。但是当我读取数据时,我立即收到 EOFException。 所以我用 .available() 检查文件是否为空。我得到了一个
Swift 2.0 允许使用 @available 或 #available 进行可用性检查,但是使用 @available 和 有什么区别#可用? 最佳答案 您可以使用 if #available
我刚刚开始学习 angularjs 我尝试了这段代码:在文件 angularmy.js var myname = angular.module("myModule",[]); myname.contr
我有一个 USB 麦克风和扬声器适配器连接到 raspberry pi 3。我已经在 alsamixer 上设置了所有内容。我也设置了pcm.!default sysdefault:0在文件中 .as
import requests import time import csv import ast import sys import mysql.connector config = { 'user
我想让页脚的宽度与浏览器无关。 对于 Mozilla,我想使用 -moz-available 的值,当用户使用 Opera 时,那么 CSS 应该从 -webkit-fill-available 中获
如果您的代码需要仅在 macOS 10.12 或更高版本中可用的功能,但您希望您的代码也部署到更早的系统版本,您可以使用 @available在 Objective-C 中: if (@availab
我正在使用 Element Query允许在任何元素上使用 @media queries 的元素。这是它的处理方式: #foo:media(min-available-width:350px and
我正在尝试安装 oracle 19c,但在安装过程中遇到了与内存相关的问题“[INS-35179] 当前可用内存小于创建数据库所需的可用内存 (6,537MB)”。我仔细检查了所有先决条件,例如超过
我正在编写代码以使用此页面中的文档跟踪现场请求:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-bid-
我仔细阅读了 Kubernetes 文档 here关于扩展 imagefs.available 的默认 15%和其他参数,但没有说明如何设置,我已经安装了具有以下配置的 RKE(Rancher Kub
我想进入PAPI。我在Debian GNU/Linux上有5.3.2.0版。 papi_avail告诉我没有可用的硬件事件: $ papi_avail Available events and har
我目前正在构建一个混合云解决方案,需要将消息写入队列以供稍后处理。队列具有高可用性(99.999+% 的正常运行时间)是绝对必要的。 我的选择是将消息读/写到本地 ZeroMQ 高可用性对或 Azur
在 Mac OS X Leopard 中使用 Eclipse Helios 并调试调用 fsf gdb 7.1 的 C++ 代码,调试停止在 main 的第一行。然后在第一步之后我得到 No sour
无论如何,是否可以将 UIWebView 与针对 tvos 的应用程序一起使用?这个苹果文档,UIWebView Class Reference ,会建议否则不是吗?或者我只是解释错了? UIWebV
我想删除以下数据框中的“不可用”,但是当我使用以下代码将 Number 更改为数字时,“不可用”变为 4: c1 data 是一个 factor 列。 当您将一个因子直接转换为numeric 时,生成
PushKit 在 iOS 11 中提供了一种新方法,旨在取代 iOS 10 中的方法。 使用 iOS 11 作为基础 SDK 构建时无法使用 iOS 10 方法(我当前使用的是 Xcode 9.2B
不确定使用@rename 指令的所有方法。 我正在尝试重命名一个方法 @available(*, deprecated, renamed: "setValueInTable") public func
我是一名优秀的程序员,十分优秀!