栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java DES3算法在nodejs中的写法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java DES3算法在nodejs中的写法

背景

项目需要与客户那边对接,其中有个数据需要用DES3加密,对方提供了java版本的加密算法代码

代码如下:

private static final String SENSITIVE_INFO_SECRET_KEY = "58cf16b25485a0116b85806bba9ca7e4";

    private static final String KEY_ALGORITHM = "DESede";

    
    private static String IV = "12345678";

    private static final String CIPHER_ALGORITHM = "desede/CBC/PKCS5Padding";


    public String encrypt(String params) {

        try {
            DESedeKeySpec spec = new DESedeKeySpec(SENSITIVE_INFO_SECRET_KEY.getBytes(StandardCharsets.UTF_8));
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, SecretKeyFactory.getInstance(KEY_ALGORITHM).generateSecret(spec), new IvParameterSpec(IV.getBytes()));
            byte[] bOut = cipher.doFinal(params.getBytes(StandardCharsets.UTF_8));
            return base64Utils.encodeToString(bOut);
        } catch (Exception e) {
        }
        return "";
    }

我们后台使用nodejs实现,直接在网上找到DES3算法实现的例子:

const crypto = require('crypto');


function base64(text) {
    return Buffer.from(text, "base64");
};


function encode(text, secretKey) {
    secretKey = base64(secretKey);
    const cipher = crypto.createCipheriv('des-ede3-cbc', secretKey, Buffer.alloc(8));
    const encrypted = cipher.update(text, 'utf8', 'base64');

    return encrypted + cipher.final('base64');
};

但是这个实现中,IV参数使用的是默认值,我们需要改成客户设定的IV。

再参考官方文档中接口说明:

crypto.createCipheriv(algorithm, key, iv[, options])#

中英对照

版本历史