Ты совсем близко.Вы сериализуете объект в encrypted
после выполнения шифрования DES в строку.CryptoJS
сериализует эти данные в строку base64
.Например.
Давайте возьмем предоставленный вами пример.
var keyHex = "01010101010101010101010101010101"
var block = "041234CFFFFEFDEE";
var encrypted = CryptoJS.DES.encrypt(CryptoJS.enc.Hex.parse(block), CryptoJS.enc.Hex.parse(keyHex), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
// encrypted.toString() returns "JB1t/hK0cNZ+QigidzZmwA=="
// What you are interested in is the cipherText
var d = encrypted.ciphertext;
// This size of this ciphertext is 16 bytes. Serializing this
var encryptedHex = d.toString();
// which returns : "241d6dfe12b470d67e422822773666c0"
Учитывая это, вы можете прочитать первые 8 байтов, эквивалентные для вашего варианта использования.Модифицированная версия вашего кода будет выглядеть следующим образом:
function test3DES() {
var keyHex = "01010101010101010101010101010101"
var block = "041234CFFFFEFDEE";
var encrypted = CryptoJS.DES.encrypt(CryptoJS.enc.Hex.parse(block), CryptoJS.enc.Hex.parse(keyHex), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
encrypted = encrypted.ciphertext.toString();
alert(encrypted.substr(0, 8*2)); // <-- read the first 8 bytes i.e. 16 bytes of hex string.
}
Надеюсь, это поможет.