是否可以在java中通过bouncycastle使用SMIME加密常规文件
我已经看到了很多可以使用SMIME加密和发送电子邮件的示例,但是没有可以加密常规文件的示例。 我有一种在bd中插入密钥的方法,但我不知道如何使用bouncycastle的SMIME来加密文件是否可以在java中通过bouncycastle使用SMIME加密常规文件,java,encryption,bouncycastle,smime,Java,Encryption,Bouncycastle,Smime,我已经看到了很多可以使用SMIME加密和发送电子邮件的示例,但是没有可以加密常规文件的示例。 我有一种在bd中插入密钥的方法,但我不知道如何使用bouncycastle的SMIME来加密文件 public-CifradoDeArchivos-obtenerCifradoDeArchivosParticular( 参数化FRADOARCHIVOSBANCOS参数化FRADOARCHIVOSBANCOS){ CifradoDeArchivos newInstance=null; 试试{ //这是一个
public-CifradoDeArchivos-obtenerCifradoDeArchivosParticular(
参数化FRADOARCHIVOSBANCOS参数化FRADOARCHIVOSBANCOS){
CifradoDeArchivos newInstance=null;
试试{
//这是一个简单的介绍
clazz类=Class类
.forName(参数ZacioncifradoArchivosbancos)
.getClaseImplementacion());
构造函数clazzConstructor=clazz.getConstructor();
newInstance=(CifradoDeArchivos)clazzConstructor
.newInstance();
}捕获(NoClassDefFounde错误){
logger.info(例如getMessage());
}
返回newInstance;
}
只要您有公钥,就可以使用bouncycastle提供的cms对文件进行加密。Smime更倾向于电子邮件
片段如下:
CMSEnvelopedDataGenerator enGen = new CMSEnvelopedDataGenerator();
for (Certificate c : certs) {
enGen.addRecipientInfoGenerator(
new JceKeyTransRecipientInfoGenerator((X509Certificate) c));
}
OutputEncryptor encryptor =
new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES256_CBC).setProvider("BC").build();
CMSEnvelopedData envelopedData = enGen.generate(new CMSProcessableByteArray(bos.toByteArray()),
encryptor);
然后,加密数据将是:
envelopedData.getEncoded()
我不知道为什么我们会对这段代码感兴趣。SMIME是关于邮件扩展的。如果要加密文件,请查找加密消息语法或PKCS#7功能。如果文件被加密并嵌入到一个新的结构中,我们也称之为“封装数据”。