Comment puis-je convertir ce code de cryptage DES du code Java en JavaScript ?
P粉504080992
P粉504080992 2023-09-06 13:31:17
0
1
570

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);

P粉504080992
P粉504080992

répondre à tous(1)
P粉550257856
const crypto = require('crypto');

function getSignature(skey, iv, data) {
    const IV = Buffer.from(iv, 'utf-8');
    const desKey = Buffer.from(skey, 'utf-8');

    const cipher = crypto.createCipheriv('des', desKey.slice(0, 8), IV);
    let encrypted = cipher.update(data, 'utf-8', 'base64');
    encrypted += cipher.final('base64');
    return encrypted;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal