将密码进程从java转换为nodejs(Blowfish)

时间:2017-11-10 09:27:11

标签: java node.js cryptography blowfish

我们正在将用java编写的旧中间件迁移到我们的服务器,我们想在nodejs中将其写下来,我们不知道如何翻译某些函数:

使用第一个函数,我们需要在nodejs中找到 Cipher 类的解决方案,我们还没有找到它,是否有任何“simmetric”或类似的包我们可以在节点

public static String encryptBlowFish(String cleartext, String key)
            throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException
    {
        String encBlowFish = "";
        SecretKeySpec skeySpec = getGenerateKey(key);
        Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
        cipher.init(1, skeySpec);
        byte[] raw = cipher.doFinal(cleartext.getBytes("UTF8"));
        encBlowFish = new Base64Encoder().encode(raw);
        encBlowFish = URLEncoder.encode(encBlowFish, "UTF8");
        encBlowFish = specialChars(encBlowFish);
        return encBlowFish;
    }

对于第二种方法,它几乎是一样的,我们需要在节点中使用一个解决方案来模拟这种行为:

private static SecretKeySpec getGenerateKey(String key)
            throws NoSuchAlgorithmException
    {
        SecretKeySpec skeySpec = null;
        Provider sunJce = new SunJCE();
        Security.addProvider(sunJce);
        KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
        kgen.init(448);
        byte[] raw = key.getBytes();
        skeySpec = new SecretKeySpec(raw, "Blowfish");
        return skeySpec;
    }

由于我们一直在浏览并且没有从节点的“crypto”包中找到任何相关的appart,这看起来不错,但我们不知道使用哪种方法来模拟预期的结果。

如果还有其他任何事情可以帮助您了解我们的问题,请告知我们。

感谢您的时间。

0 个答案:

没有答案