使用带有十六进制字符串的CryptoJS

问题描述 投票:1回答:1

我想连接到蓝牙设备。通信仅通过十六进制字符串进行。我需要编码一个16字节的值。结果,我也期望一个16字节的值。在我的实现中,CryptoJS总是返回更长的结果。根据文档,不需要IV。 (“必须使用AES128 CBC使用当前存储在设备中的客户主密钥对所有16字节数据进行加密。密码模式”),因此我将IV设置为00000000000000000000000000000000000000,因为CryptoJS似乎需要它。我在做什么错?

const CryptoJS = require('crypto-js');
const value =  CryptoJS.enc.Hex.parse('5ff58680541c5a5903f4833dfaa4281f');
const key  = CryptoJS.enc.Hex.parse('41435231323535552d4a312041757458'); // known master key
const ivvar   = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
const encryptedString = CryptoJS.AES.encrypt(value, key, {iv: ivvar, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.NoPadding}).toString();

//当前结果是edijc9R7sl3zwZVrBBBrFQ ==

当然,结果只是一个字符串,但是它太长了。

typescript authentication hex aes cryptojs
1个回答
0
投票

为了完整起见,我想添加对我有用的解决方案。 (感谢@Topaco)

encrypt(valueStringHex, keyStringHex) {
    const CryptoJS = require('crypto-js');
    const value =  CryptoJS.enc.Hex.parse(valueStringHex);
    const key  = CryptoJS.enc.Hex.parse(keyStringHex);
    const ivvar   = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    const encryptedStringHex = CryptoJS.AES.encrypt(value, key, {iv: ivvar, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.NoPadding}).ciphertext.toString();
    return encryptedStringHex;
    }

// encrypt('5ff58680541c5a5903f4833dfaa4281f', '41435231323535552d4a312041757458')
// returns 79d8a373d47bb25df3c1956b04106b15
decrypt(valueStringHex, keyStringHex) {
    const CryptoJS = require('crypto-js');
    const value = CryptoJS.enc.Hex.parse(valueStringHex);
    const key = CryptoJS.enc.Hex.parse(keyStringHex);
    const ivvar   = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    const decryptedStringHex = CryptoJS.AES.decrypt({ciphertext: value}, key, {iv: ivvar, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.NoPadding});
    return decryptedStringHex.toString();
    }

// decrypt('79d8a373d47bb25df3c1956b04106b15', '41435231323535552d4a312041757458')
// returns 5ff58680541c5a5903f4833dfaa4281f
© www.soinside.com 2019 - 2024. All rights reserved.