का उपयोग करते समय आर्मर्डऑटपुटस्ट्रीम के साथ आउटपुटस्ट्रीम को कब और क्यों सजाने के लिए मैं बाउंसीकास्टल और पीजीपी के लिए काफी नया हूं। मैंने इंटरनेट पर कई लेख और नमूने देखे हैं। लगभग हर एन्क्रिप्शन नमूना कोड नीचे कतरनाBouncyCastle
if (armor)
out = new ArmoredOutputStream(out);
ऐसा लगता है कि अपने स्थानीय परीक्षण दोनों कवच और कोई भी-कवच के साथ पारित कर दिया होता है। मैंने चारों ओर गुगल किया लेकिन कुछ उपयोगी पाया और आर्मर्डऑटपुटस्ट्रीम का जावाडोक केवल दिखाता है कि यह मूल आउटपुट स्ट्रीम है।
तो क्या अंतर है और इसका उपयोग कब किया जाए?
पूरा कोड नमूना:
public static void encryptFile(String decryptedFilePath,
String encryptedFilePath,
String encKeyPath,
boolean armor,
boolean withIntegrityCheck)
throws Exception{
OutputStream out = new FileOutputStream(encryptedFilePath);
FileInputStream pubKey = new FileInputStream(encKeyPath);
PGPPublicKey encKey = readPublicKeyFromCollection2(pubKey);
Security.addProvider(new BouncyCastleProvider());
if (armor)
out = new ArmoredOutputStream(out);
// Init encrypted data generator
PGPEncryptedDataGenerator encryptedDataGenerator =
new PGPEncryptedDataGenerator(PGPEncryptedData.CAST5, withIntegrityCheck, new SecureRandom(),"BC");
encryptedDataGenerator.addMethod(encKey);
OutputStream encryptedOut = encryptedDataGenerator.open(out, new byte[BUFFER_SIZE]);
// Init compression
PGPCompressedDataGenerator compressedDataGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP);
OutputStream compressedOut = compressedDataGenerator.open(encryptedOut);
PGPLiteralDataGenerator literalDataGenerator = new PGPLiteralDataGenerator();
OutputStream literalOut = literalDataGenerator.open(compressedOut, PGPLiteralData.BINARY, decryptedFilePath, new Date(), new byte[BUFFER_SIZE]);
FileInputStream inputFileStream = new FileInputStream(decryptedFilePath);
byte[] buf = new byte[BUFFER_SIZE];
int len;
while((len = inputFileStream.read(buf))>0){
literalOut.write(buf,0,len);
}
literalOut.close();
literalDataGenerator.close();
compressedOut.close();
compressedDataGenerator.close();
encryptedOut.close();
encryptedDataGenerator.close();
inputFileStream.close();
out.close();
}
}