java.security.NoSuchAlgorithmException: アルゴリズム HmacSHA256 は使用できません

java.security.NoSuchAlgorithmException: アルゴリズム HmacSHA256 を使用できない問題解決

同社はファイルのアップロードに minio を使用していますが、minio の下部で HmacSHA256 アルゴリズムが使用されており、私の jar パッケージはローカル Windows では問題なく実行されますが、Linux で実行するとこのエラーが発生します。

  1. jarパッケージアプリケーションが使用するlinux環境のjdkが
    追加されているか確認する
System.out.println(System.getProperty("java.version"));

表示結果を出力して、アプリケーションのバージョンが Linux の Java バージョンと一致しているかどうかを確認します。一致していない場合は、環境を一致させます。Linux の jdk バージョンをローカルのものに置き換えることができます。このアルゴリズムは、jdk1 でデフォルトでサポートされています.8+ 。
2. 一致している場合は、jdk パッケージが欠落している可能性がありますので、
Linux 環境に HmacSHA256Test.java ファイルを追加すると、そのコードは次のようになります。


import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.*;
public class HmacSHA256Test {
    
    
    public static void main(String[] args) {
    
    
        try {
    
    

            System.out.println(System.getProperty("java.version"));

            Key key = new SecretKeySpec("test".getBytes(), "HmacSHA256");
            Mac.getInstance("HmacSHA256").init(key);
            System.out.println("Success!");
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
 
}

javac HmacSHA256Test.java を使用してファイルをコンパイルし、java HmacSHA256Test を使用して実行して、成功が出力されるかどうかを確認します。成功が出力できない場合は、jre にセキュリティ パッケージを追加する必要があります。具体的には Baidu です。ここで出力できます。
3. 出力が成功した場合は、jar パッケージのアルゴリズム ポインティングに問題がある可能性があります。Bouncy Castle 拡張パッケージを追加し、pom.xml ファイルに依存関係を追加できます。

     <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.68</version>
        </dependency>

Springboot 起動メソッドにコードを追加して、
Security.addProvider(new BouncyCastleProvider());を指定します。

        public static void main(String[] args) {
    
    
        Security.addProvider(new BouncyCastleProvider());
        SpringApplication.run(abs.class, args);
    }

この時点で問題は基本的に解決しました

おすすめ

転載: blog.csdn.net/qq_42900469/article/details/130934009