ricmoo / aes-js

A pure JavaScript implementation of the AES block cipher and all common modes of operation for node.js or web browsers.
MIT License
1.45k stars 273 forks source link

Big endian #101

Open williamgoodhew opened 4 years ago

williamgoodhew commented 4 years ago

Is there a way of ensuring the big-endian network byte order is maintained? I am using the 128 key in ECB.

here is my current code:

    const key = Buffer.from("20572F52364B3F473050415811632D2B", "hex")
    const text = '0x060x010x010x01'
    const textBytes = aesjs.utils.utf8.toBytes(text);
    console.log('textBytes: ', textBytes)

    const aesEcb = new aesjs.ModeOfOperation.ecb(key);
    console.log('aesEcb: ', aesEcb)
    const encryptedBytes = aesEcb.encrypt(textBytes);
    console.log('encryptedBytes: ', encryptedBytes)

    const encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes);
    console.log('encryptedHex: ', encryptedHex);
timomeara commented 3 years ago

@williamgoodhew did you ever figure this out? you're also trying to unlock an eddystone beacon?

ricmoo commented 3 years ago

Sorry. Just saw this.

I do not use any host ordered objects (i.e. uint32Array) in the code, so network order should always be preserved. More specifically any order should always be preserved as everything is operated on as a binary stream of bytes...

can you include output in your example that have the order change?