package crypto;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;
public class SignatureGenerator {
private static final String PRIVATE_KEY_STRING =
"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMoOSFnSHgJpz3AD" +
"aJY+4R29ojGwEXN1n6Nl9MZvp7XWtPifh8cEfgm5hdL0U5j4POywtgKtVsHAdYXY" +
"R6rLylWlxfMiStQTqHwrgJCBHEtj9E7wXMpEPJtPSUZT1pvPq/hlgTkGrYayqUvf" +
"P/dBsXd0Rf26cCefhnevgdHvWzqIvW5uFSbLAgMBAAECgYBwRDdYML5NPS0i7E7vH" +
"ldHMEKwXMxI10eTr7ZiHRH2cl2f2+I8f+Zv5C97wvMf56VU1BDLamgAeW9B4v7hY" +
"h64N7Xne9J2dNg/kJyH3szK4eM3Wg79y5yVmumA4T2bXenRoVblHvByb8x2SfxAu" +
"XDA+1mQLkqSR8CEaRgntQQJBAPv5VlLQaduzhIeAShMyucI2J6NZ8KTFNt2HQ+h4" +
"b1aayquHmPtNxIZHfFVch1JehwZB40Vw6FVV5aIb+7MCQQDSXW+Q0T6f7Lw+DjFj" +
"NXSmLkCBDEYTrRlmvmBj4T69jsG7VQ6VTepfAmd2NhVqI4eOZICAVc2Pv0nWFOv8" +
"1zvhAkAXCnR5uFop03ULmsVci1KnJlJ7x9pZlZ2VrBMKtpjTZZWXYjXGTn1F46LI" +
"zTJYRVYQUhqZtVJH8AgnYpKS6VYxAkEApd5+zB9l9p4Bvbw72GbLjFu8v8Gjij2N" +
"QSy61dMj/1g5T6yI2F3RhjQ+pp/UK5UDkAz+IDNr4XXqPfMshXdOEQJBAI6T0JOx" +
"BpAF8XUd6Zrx5dfLsATkRwRHHrBRoN0gJESqjtP5kqNMc7MRdBJWGgWp9Kne03HO" +
"ugvRCaZ/g9DlKjA=";
private static PrivateKey privateKey;
static {
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
String cleanPrivateKeyString = PRIVATE_KEY_STRING.replaceAll("\\s", "");
byte[] privateKeyBytes = Base64.getDecoder().decode(cleanPrivateKeyString);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
privateKey = keyFactory.generatePrivate(keySpec);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String generateSignature(String data) {
try {
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(data.getBytes());
byte[] signedBytes = signature.sign();
return Base64.getEncoder().encodeToString(signedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
这是一个签名算法接到可视页面上,但是一直报错显示不符合格式,问了gpt修改也一直弹这条报错”java.lang.IllegalArgumentException: Input byte array has wrong 4-byte ending unit“,麻烦各位大牛帮忙看看应该如何修改