我想将一些文件发送到客户端位置并在客户端位置接收这些文件。我在下面给出了发送和接收的步骤,
发送
使用java.util.zip.Deflater
JAVA API压缩需要传输的数据文件。
使用对称密钥加密压缩文件。
对称密钥是随机生成的盐,密码和密钥的组合。秘密密钥。
在Receiver End
我能够完成所有发送方操作。 在接收方,我可以使用公钥执行除发件人签名验证之外的所有内容。在接收端,我有下面给出的代码 -
public static void receive(String filePath, byte[] checksum)
throws Exception {
// Check if Sender Signature is Valid or not
// Sender Public Key to Verify Signature.
PublicKey senderPublicKey = CertificateUtil.readPublicKey("G:\\Work\\SMC\\temp\\Certs\\Sender\\publicKey.cer");
byte[] dataBytes = FileUtils.getFileAsBytes(filePath);
boolean verifySig = CertificateUtil.verifySig(dataBytes, senderPublicKey, checksum);
System.out.println("Certificate Valid " + verifySig);
// Unzip the file
FileZipUtils.unZipFile(filePath, "G://Work//SMC//temp//Data//Receiver");
// Read Key File and Populate key Object
String readLines = FileUtils
.readFirstLine("G://Work//SMC//temp//Data//Receiver//OPC_SNAPSHOT_Data_Req77_Key.csv");
ObjectMapper mapperReceiver = new ObjectMapper();
SymmetricKey readValue = mapperReceiver.readValue(readLines,
SymmetricKey.class);
// Decrypt Symmetric Key using Private Key
PrivateKey privateKey = CertificateUtil
.readPrivateKey("G:\\Work\\SMC\\temp\\Certs\\Receiver\\privatekey.pkcs8");
byte[] recovered_message = CertificateUtil.decrypt(privateKey,
readValue.getPasswordBytes());
readValue.setPassword(new String(recovered_message, "UTF8"));
System.out.println(new String(recovered_message, "UTF8"));
// Decrypting the file using symmetric key.
EncryptionUtil
.decrypt("G://Work//SMC//temp//Data//Receiver//OPC_SNAPSHOT_Data_Req77_Encrtypt.csv",readValue);
}
我的问题是,要调用接收函数,我需要byte[]
校验和,但我将在接收端获得此校验和。