개인 키를 사용하여 파일에 서명하는 Java 프로그램을 작성하려고합니다. 이 프로그램은 파일, 비밀 키링 및 암호의 3 가지 인수를 취합니다. 출력은 분리 된 파일 * .bpg에 있어야합니다. 문제는 내 코드를 컴파일하려고 할 때 다음과 같은 오류를 얻을 수 있습니다 :BouncyCastle을 사용하여 Java 서명 파일 - 비밀 키링을 사용하여 파일의 서명을 만듭니다.
PGPPrivateKey pgpPrivKey =
key.extractPrivateKey(args[2].toCharArray(), "BC");
PGPSignatureGenerator sGen = new PGPSignatureGenerator(
key.getPublicKey().getAlgorithm(), PGPUtil.SHA1, "BC");
sGen.initSign(PGPSignature.BINARY_DOCUMENT, pgpPrivKey);
:
import java.io.*;
import java.security.*;
import java.util.Iterator;
import org.bouncycastle.bcpg.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openpgp.*;
public class Sign {
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
FileInputStream keyIn = new FileInputStream(args[1]);
FileOutputStream out = new FileOutputStream(args[0] + ".bpg");
InputStream in = PGPUtil.getDecoderStream(keyIn);
PGPSecretKeyRingCollection pgpSec =
new PGPSecretKeyRingCollection(in);
PGPSecretKey key = null;
Iterator rIt = pgpSec.getKeyRings();
while (key == null && rIt.hasNext()) {
PGPSecretKeyRing kRing = (PGPSecretKeyRing)rIt.next();
Iterator kIt = kRing.getSecretKeys();
while (key == null && kIt.hasNext()) {
PGPSecretKey k = (PGPSecretKey)kIt.next();
if (k.isSigningKey()) { key = k; }
}
}
if (key == null) {
throw new IllegalArgumentException("Can't find key");
}
PGPPrivateKey pgpPrivKey =
key.extractPrivateKey(args[2].toCharArray(), "BC");
PGPSignatureGenerator sGen = new PGPSignatureGenerator(
key.getPublicKey().getAlgorithm(), PGPUtil.SHA1, "BC");
sGen.initSign(PGPSignature.BINARY_DOCUMENT, pgpPrivKey);
PGPCompressedDataGenerator cGen = new PGPCompressedDataGenerator(
PGPCompressedDataGenerator.ZLIB);
BCPGOutputStream bOut = new BCPGOutputStream(cGen.open(out));
FileInputStream fIn = new FileInputStream(args[0]);
int ch = 0;
while ((ch = fIn.read()) >= 0) { sGen.update((byte)ch); }
sGen.generate().encode(bOut);
cGen.close();
out.close();
}
}
오류는 다음과 같은 라인에서 오는 다음과 같이
C:\CNS3\BCastle>javac Sign.java
Note: Sign.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
내 코드입니다
누구든지이 문제를 해결할 수있는 방법에 대해 제안 해 주시겠습니까? 고마워요!
답장을 보내 주셔서 감사합니다. 나는 정말 쓸모없는 메소드와 혼동을 겪었고 코드가 작동한다는 것을 깨닫지 못했습니다. @ 대니얼 감사합니다! –