为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2023-06-14 14:24:22
我见过很多可以使用 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;    }
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

你可以使用 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()


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信