Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在java中通过bouncycastle使用SMIME加密常规文件_Java_Encryption_Bouncycastle_Smime - Fatal编程技术网

是否可以在java中通过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; 试试{ //这是一个

我已经看到了很多可以使用SMIME加密和发送电子邮件的示例,但是没有可以加密常规文件的示例。 我有一种在bd中插入密钥的方法,但我不知道如何使用bouncycastle的SMIME来加密文件

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功能。如果文件被加密并嵌入到一个新的结构中,我们也称之为“封装数据”。