You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mirth Connect中运行Bouncy Castle算法并转换对应Java代码为JS

Mirth可用的Bouncy Castle PGP加密JavaScript代码

前置准备

  • 下载对应版本的Bouncy Castle依赖包:bcprov-jdk15on、bcpg-jdk15on
  • 将两个jar包放入Mirth安装目录下的custom-lib文件夹
  • 重启Mirth服务使依赖生效

加密函数代码

// 导入依赖Java类
var ByteArrayOutputStream = java.io.ByteArrayOutputStream;
var ArmoredOutputStream = org.bouncycastle.bcpg.ArmoredOutputStream;
var PGPEncryptedDataGenerator = org.bouncycastle.openpgp.PGPEncryptedDataGenerator;
var JcePGPDataEncryptorBuilder = org.bouncycastle.openpgp.operator.jcajce.JcePGPDataEncryptorBuilder;
var SecureRandom = java.security.SecureRandom;
var JcePBEKeyEncryptionMethodGenerator = org.bouncycastle.openpgp.operator.jcajce.JcePBEKeyEncryptionMethodGenerator;
var Security = java.security.Security;
var BouncyCastleProvider = org.bouncycastle.jce.provider.BouncyCastleProvider;

// 注册BC加密提供者,全局仅需执行一次
Security.addProvider(new BouncyCastleProvider());

function encrypt(dataToEncrypt, passPhrase, algorithm, armor) {
    var bOut = new ByteArrayOutputStream();
    var out = bOut;
    
    if (armor) {
        out = new ArmoredOutputStream(out);
    }
    
    var encGen = new PGPEncryptedDataGenerator(
        new JcePGPDataEncryptorBuilder(algorithm)
            .setSecureRandom(new SecureRandom())
            .setProvider("BC")
    );
    encGen.addMethod(
        new JcePBEKeyEncryptionMethodGenerator(passPhrase)
            .setProvider("BC")
    );
    
    var encOut = encGen.open(out, dataToEncrypt.length);
    encOut.write(dataToEncrypt);
    encOut.close();
    
    if (armor) {
        out.close();
    }
    
    return bOut.toByteArray();
}

调用示例

// 待加密内容转UTF-8字节数组
var dataToEncrypt = new java.lang.String("测试加密内容").getBytes("UTF-8");
// 密码转char数组
var passArray = "你的加密密码".toCharArray();
// 调用加密方法,使用CAST5算法,开启ASCII装甲
var encryptedBytes = encrypt(dataToEncrypt, passArray, PGPEncryptedDataGenerator.CAST5, true);

// 如需转可读字符串可执行以下代码
var encryptedStr = new java.lang.String(encryptedBytes, "UTF-8");

注意事项

  • 加密后返回值为字节数组,若需要存储或传输可按需转为Base64编码或直接使用装甲格式的字符串
  • 密码建议避免硬编码在代码中,可存入Mirth的配置映射表中读取使用

内容的提问来源于stack exchange,提问作者sgowd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:09:02