gpt4 book ai didi

java - 用于签名验证的 Apache Nifi 处理器

转载 作者:行者123 更新时间:2023-12-01 17:51:14 25 4
gpt4 key购买 nike

我开发了一个用于签名验证的JAVA应用程序,如下:

    package read_key_pck;

import static java.nio.charset.StandardCharsets.UTF_8;
import java.util.Scanner;

import javax.xml.bind.DatatypeConverter;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class Main {

public final static String RESOURCES_DIR = "C:\\Users\\KX5710\\eclipse-workspace\\read_key\\src\\read_key_pck\\";

public static boolean verify(String plainText, String signature, PublicKey publicKey) throws Exception {
Signature publicSignature = Signature.getInstance("SHA256withRSA");
publicSignature.initVerify(publicKey);
publicSignature.update(plainText.getBytes(UTF_8));

byte[] signatureBytes = DatatypeConverter.parseHexBinary(signature);

return publicSignature.verify(signatureBytes);
}

public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());

PublicKey pub = null;
KeyFactory factory = KeyFactory.getInstance("RSA", "BC");
try {

pub = generatePublicKey(factory, RESOURCES_DIR
+ "rsa_2048_pub.pem");

} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
String encodedPublicKey = Base64.getEncoder().encodeToString(pub.getEncoded());
System.out.println("publickey: " + encodedPublicKey);

boolean isCorrect = verify(" 4 5.00 1.80", "54c5645616a8567d605bd990df0456913420fb630860316cf29bf57e19ef3102933ac948e672a4e3dfa8b7e20cc9eb44520aa8d8dc69143a5bc718a17a1d3f2dfc0084f172dbda6dd38e411e75100136d95d46e3d563c3a0aed062c40c6d17a5038ef0ad681622245bd2332008b1edca693b3418df1f5f86f09a6585d4af7da0d2ab44f5ce1c7ec8eed51696697b2674a881868be7163eda7c6562d02bdf069fcd66d483e8b22c5c976d27c04ffe38e62800eec17f1786b2f2161fcf44b91ba85a4486edb48a5c5a2f58dc1fa3969917eadabd7af753947de4a7f03034de09adb3b1cacb77e21444eee2d90944037606f84d0aa99f4794e8df8a2d0fbfff55c7", pub);
System.out.println("Signature verification: " + isCorrect);
}

private static PublicKey generatePublicKey(KeyFactory factory,
String filename) throws InvalidKeySpecException,
FileNotFoundException, IOException {
PemFile pemFile = new PemFile(filename);
byte[] content = pemFile.getPemObject().getContent();
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(content);
return factory.generatePublic(pubKeySpec);
}
}

package read_key_pck;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemReader;

public class PemFile {

private PemObject pemObject;

public PemFile(String filename) throws FileNotFoundException, IOException {
PemReader pemReader = new PemReader(new InputStreamReader(
new FileInputStream(filename)));
try {
this.pemObject = pemReader.readPemObject();
} finally {
pemReader.close();
}
}

public PemObject getPemObject() {
return pemObject;
}
}

现在我想为这个JAVA应用程序开发一个Apache Nifi处理器;我这里有一个示例代码:

https://github.com/pcgrenier/nifi-examples

但是我不知道我必须修改这个示例代码的哪些部分,因为这是我第一次开发 Apache Nifi 处理器。

另外,当我想在 cmd 中运行 .bat 文件(即 run-nifi.bat)时,我收到此错误:

"The JAVA_HOME environment variable is not defined correctly. Instead the PATH will be used to find the java executable."

最佳答案

这是针对初学者的详细指南 https://community.hortonworks.com/articles/4318/build-custom-nifi-processor.html 。以上文章基于此视频https://www.youtube.com/watch?v=3ldmNFlelhw

简单说明:

  1. 您应该从 NiFi maven 原型(prototype)之一创建新项目。
  2. 根据您的需要修改生成的处理器。
  3. 构建 nar 文件并将其放入 NiFi。
  4. 在 NiFi 中使用它。

关于java - 用于签名验证的 Apache Nifi 处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com