因此,在我提出问题之前。我尝试搜索此词,但我可能措词不正确,以获得任何有效结果。因此,目的是在AES 128位加密程序中使用。
我需要将一个无符号字符(将是十六进制值)乘以2或3,这将是一个XOR
操作。所以基本上,有没有一种方法可以像这样不输入内容。
(SBOX[0] ^ SBOX[0]) ^ SBOX[0]
如果我必须这样做,那么每一行都将相当长,但是我相信可以做到。如果有一个接线员只说3 ^ SBOX[0]
,那就太好了。
答案 0 :(得分:2)
如果您正在执行AES,那么您将在Galois Field(特别是GF(2 8 ))中进行算术运算。因此,您不再习惯用于标准整数的规则。
尤其是,加法是异或(在GF(2 n 中)),乘法不是重复加法。您的示例说明了为什么-乘以2总是async foo(req, res, next) {
try {
await scan(req.params.stack);
res.send('ok');
} catch (err) {
res.status(500).send('fail');
}
}
async scan(stack) {
try {
const libs = [1,2,3];
// This libs.map functions return promise. then why not use await?
const promises = await libs.map(async l => analyze(stack, l);
// Again q.allSettled returns promise, use await here too
let results = await q.allSettled(promises);
const rejected = results.filter(r => r.state === 'rejected');
if (rejected.length === results.length) throw new Error('Failed');
return results;
}
// If any promise call reject function will be in catch
catch (err) {
throw new Error(err);
}
}
async function analyze(stack, libraries) {
try {
const config = await buildConfiguration(stack, libraries);
return await databaseInsertion(vulnsObject);
}
catch (err) {
console.log(err);
return null;
}
}
。
(在代码中)实际的步骤取决于Galois字段的约简多项式(无论如何,推导它们超出了我今天的能力范围)。但是,它们在网络上的多个位置都有汇总。在许多情况下,这些说明专门针对S-box MixColumns操作,例如Wikipedia。