Comment convertir ce code Java en JavaScript ?
public static String getSignature(String skey, String iv, String data) throws Exception { IvParameterSpec Ⅳ = new IvParameterSpec(iv.getBytes("utf-8")); DESKeySpec desKey = new DESKeySpec(skey.getBytes("utf-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(desKey); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, Ⅳ); byte[] databyte = cipher.doFinal(data.getBytes("utf-8")); return new String(Base64.getEncoder().encode(databyte)); }
Je l'ai essayé moi-même et le résultat est :
function getSignature( skey, iv, data, ) { const IV = Buffer.from(ivString, 'utf-8'); const desKey = Buffer.from(skey, 'utf-8'); const cipher = crypto.createCipheriv('des-cbc', desKey, IV); let encrypted = cipher.update(data, 'utf-8', 'base64'); encrypted += cipher.final('base64'); return encrypted; }
Mais j'ai eu l'erreur ERR_CRYPTO_INVALID_KEYLEN
car la longueur de ma clé n'est pas de 8. Je suppose qu'il manque cette partie du code Java dans mon code JavaScript, mais je ne sais pas comment traduire cette partie en JavaScript... :
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(desKey);