我们正在将用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,这看起来不错,但我们不知道使用哪种方法来模拟预期的结果。
如果还有其他任何事情可以帮助您了解我们的问题,请告知我们。
感谢您的时间。