猿问

是否可以通过 java 中的 bouncycastle 使用 SMIME 加密常规文件

我见过很多可以使用 SMIME 加密和发送电子邮件的示例,但没有加密常规文件的示例。我有一种将密钥插入 bd 的方法,但我不知道如何使用 bouncycastle 的 SMIME 来加密文件。


public CifradoDeArchivos obtenerCifradoDeArchivosParticular(

            ParametrizacionCifradoArchivosBancos parametrizacionCifradoArchivosBancos) {


        CifradoDeArchivos newInstance = null;

        try {           

                // Se realiza la introspección

                Class<?> clazz = Class

                        .forName(parametrizacionCifradoArchivosBancos

                                .getClaseImplementacion());

                Constructor<?> clazzConstructor = clazz.getConstructor();

                newInstance = (CifradoDeArchivos) clazzConstructor

                        .newInstance();


        } catch (NoClassDefFoundError e) {

            logger.info(e.getMessage());

        } 

        return newInstance;

    }


浮云间
浏览 117回答 1
1回答

泛舟湖上清波郎朗

你可以使用 bouncycastle 提供的 cms 来加密文件,前提是你有公钥。Smime 更倾向于电子邮件。片段如下:CMSEnvelopedDataGenerator enGen = new CMSEnvelopedDataGenerator();&nbsp; &nbsp; for (Certificate c : certs) {&nbsp; &nbsp; &nbsp; &nbsp; enGen.addRecipientInfoGenerator(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new JceKeyTransRecipientInfoGenerator((X509Certificate) c));&nbsp; &nbsp; }&nbsp; &nbsp; OutputEncryptor encryptor =&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES256_CBC).setProvider("BC").build();&nbsp; &nbsp; CMSEnvelopedData envelopedData = enGen.generate(new CMSProcessableByteArray(bos.toByteArray()),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; encryptor);那么加密后的数据将是:envelopedData.getEncoded()
随时随地看视频慕课网APP

相关分类

Java
我要回答