|
@@ -11,14 +11,18 @@ import java.util.Base64;
|
|
|
|
|
|
public class FileSigner {
|
|
|
|
|
|
- private static final String PRIVATE_KEY_PATH = "sign/private_key.pem"; // 私钥文件路径
|
|
|
- private static final String INPUT_FILE_PATH = "sign/FV200_G050_1JA30.s19"; // 待签名文件路径
|
|
|
- // private static final String SIGNATURE_FILE_PATH = "sign/signature.bin"; // 签名文件输出路径
|
|
|
+ private static final String PRIVATE_KEY_PATH = "/usr/local/docker/opera/static/private_key.pem"; // 私钥文件路径
|
|
|
+
|
|
|
|
|
|
public static MultipartFile sign(MultipartFile file) throws Exception {
|
|
|
// 加载私钥
|
|
|
- PrivateKey privateKey = loadPrivateKey(PRIVATE_KEY_PATH);
|
|
|
-
|
|
|
+ PrivateKey privateKey = null;
|
|
|
+ try {
|
|
|
+ privateKey = loadPrivateKey(PRIVATE_KEY_PATH);
|
|
|
+ }catch (Exception e){
|
|
|
+ System.out.println("-----------------------------------");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
// 读取待签名文件内容
|
|
|
byte[] fileContent = file.getBytes();
|
|
|
|
|
@@ -42,59 +46,6 @@ public class FileSigner {
|
|
|
return signedFile;
|
|
|
}
|
|
|
|
|
|
- public static void signTest(MultipartFile file) throws Exception {
|
|
|
- // 加载私钥
|
|
|
- PrivateKey privateKey = loadPrivateKey(PRIVATE_KEY_PATH);
|
|
|
-
|
|
|
- // 读取待签名文件内容
|
|
|
- byte[] fileContent = file.getBytes();
|
|
|
-
|
|
|
- // 使用SHA256withRSA算法签名文件
|
|
|
- Signature signer = Signature.getInstance("SHA256withRSA");
|
|
|
- signer.initSign(privateKey);
|
|
|
- signer.update(fileContent);
|
|
|
- byte[] signature = signer.sign();
|
|
|
-
|
|
|
- // 将签名信息保存签名到文件
|
|
|
- // Files.write(Paths.get(SIGNATURE_FILE_PATH), signature);
|
|
|
-
|
|
|
- // 刷写文件数据和签名信息拼接保存到文件
|
|
|
- byte[] lengthBytes = intToByteArray(signature.length);//签名长度
|
|
|
- System.out.println("签名字节长度int:"+signature.length);
|
|
|
- System.out.println("签名字节长度:"+bytesToHexString(lengthBytes,lengthBytes.length));
|
|
|
- byte[] concatenate = concatenate(lengthBytes, signature);//签名长度+签名
|
|
|
- System.out.println("签名字节长度+签名字节:"+bytesToHexString(concatenate,concatenate.length));
|
|
|
- Files.write(Paths.get(INPUT_FILE_PATH), concatenate(concatenate,fileContent));//签名长度+签名+刷写文件
|
|
|
-
|
|
|
- System.out.println("File signed successfully!");
|
|
|
- }
|
|
|
-
|
|
|
- public static void main(String[] args) throws Exception {
|
|
|
- // 加载私钥
|
|
|
- PrivateKey privateKey = loadPrivateKey(PRIVATE_KEY_PATH);
|
|
|
-
|
|
|
- // 读取待签名文件内容
|
|
|
- byte[] fileContent = Files.readAllBytes(Paths.get(INPUT_FILE_PATH));
|
|
|
-
|
|
|
- // 使用SHA256withRSA算法签名文件
|
|
|
- Signature signer = Signature.getInstance("SHA256withRSA");
|
|
|
- signer.initSign(privateKey);
|
|
|
- signer.update(fileContent);
|
|
|
- byte[] signature = signer.sign();
|
|
|
-
|
|
|
- // 将签名信息保存签名到文件
|
|
|
- // Files.write(Paths.get(SIGNATURE_FILE_PATH), signature);
|
|
|
-
|
|
|
- // 刷写文件数据和签名信息拼接保存到文件
|
|
|
- byte[] lengthBytes = intToByteArray(signature.length);//签名长度
|
|
|
- System.out.println("签名字节长度int:"+signature.length);
|
|
|
- System.out.println("签名字节长度:"+bytesToHexString(lengthBytes,lengthBytes.length));
|
|
|
- byte[] concatenate = concatenate(lengthBytes, signature);//签名长度+签名
|
|
|
- System.out.println("签名字节长度+签名字节:"+bytesToHexString(concatenate,concatenate.length));
|
|
|
- Files.write(Paths.get(INPUT_FILE_PATH), concatenate(concatenate,fileContent));//签名长度+签名+刷写文件
|
|
|
-
|
|
|
- System.out.println("File signed successfully!");
|
|
|
- }
|
|
|
|
|
|
private static PrivateKey loadPrivateKey(String keyPath) throws Exception {
|
|
|
// 这里是简化代码,实际中你可能需要使用PEM解析器来加载私钥
|