首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XOR加密32位数字安全吗?

使用XOR加密32位数字安全吗?
EN

Cryptography用户
提问于 2022-11-27 13:00:55
回答 1查看 236关注 0票数 1

假设我有一个32位数字和一个主密钥,并且希望在不增加大小的情况下对其进行加密。

我就是这样加密的,

  1. 我使用主键和当前日期作为数据创建HMAC哈希。
  2. 然后XOR输入字节与散列字节一起使用几次
代码语言:javascript
复制
for (let offset = 0; offset < hash.length - 4; offset++) {
    const key = hash.readUInt32BE(offset);
    input ^= key;
}

安全吗?如果不是,是否有安全的切片机算法可以在不增加数据大小的情况下加密32位(或更少)的数据

我真的很感激你能提供的任何帮助。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-11-27 13:53:25

原则上,您正在创建一个基于秘密密钥和公共信息的密钥流,希望不会重复日期。这是安全的,毕竟这就是流密码的工作方式。

然而,这就是理论,让我们来看看您的计划的实际问题:

  1. 您有方法存储或恢复当前日期吗?如果您需要存储它,那么您已经增加了数据大小。
  2. 这里的日期就像现在一样,否则它的安全性就像很多时间垫一样低。

至于第二条:你怎么确定你不重复日期?您能100%确定加密方法只在一个特定日期调用一次吗?我假设您使用的日期格式不能自行重复,但时钟差异等仍然是一个问题。

您可能需要的密码类型称为FPS,格式保持加密。作为流密码,它有一点不同的安全性:它是安全的,除非它会为相同的输入创建相同的密文。

然而,可以将密码与所谓的“调整”结合起来,这可能是公开的:

除了模式提供机密性的格式化数据之外,每种模式还需要额外的输入,称为“to”,这不一定是秘密的。调整可以看作是密钥的一个可变部分,因为它们共同决定了加密和解密功能。不同的调整对于FPE模式的实现特别重要,因为机密数据的可能值的数量通常相对较少,如附录A和附录C所讨论的那样。

您的“日期”可能是一个完美的调整,或者至少是一个调整的组件,假设日期不需要额外的存储(这当然会辜负FPS计划的目的)。原则上,对于每个纯文本(如当前日期)来说,一个不断变化的输入并不是调整的最佳输入。与纯文本相关的不改变的数据元素上的散列将更好,例如,类似于用户ID +列名。

FPE的一个实际缺点是它经常从主流密码库中缺失。它也有一些中断和与其相关的密码安全,特别是对小域名-所以请保持警惕,不要仅仅使用任何FPE方案或实现。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/102994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档