gpt4 book ai didi

java - Java 类 DES 算法中 block 的数据类型

转载 作者:行者123 更新时间:2023-11-29 05:16:59 24 4
gpt4 key购买 nike

我正在用 Java 编写类似 DES 的分组密码。该密码适用于 64 位 block ,我很难决定如何对数据进行分区以使其可用。如果您想知道数据将来自文件,我将用零填充它直到最接近 64 的倍数。这就是我一直在考虑的问题。

存储一个 long 数组。
使用多头数组,我可以用最少的步骤遍历每个 block 。但是,异或之类的逻辑运算能正常工作吗?另外,当我必须将 64 位拆分为 32 位时,我应该转换为整数还是继续使用长整数?然后是要担心的标志,但我认为我可以使用 Long 类来解决这个问题。

存储字节数组的数组。
这是我最初的想法,但我现在看到了局限性。我将不得不为每个数组处理 8 个元素,而不是只处理一个长整数数组。我什至不知道这可能无关紧要。

BitSets。
我看到这些并认为它们是我一直在寻找的答案,但是当我开始使用它们时我意识到它们不适合手头的问题而且很多方法实际上并没有达到我的预期做。

我想知道更有经验的人会怎么做。我认为做多是可行的方法,但我想知道是否所有的算法都有效。我走在正确的轨道上还是有更好的方法?

最佳答案

使用最适合您需要的数据结构。

如果您不想拆分您的值,请使用 long。如果您需要将数据分成两半,请使用 int

如果您需要对数据进行更多控制,您应该使用 byte[]。因为内部表示对您来说不是问题(因为您使用 Java),所以不需要在内部使用 byte[]

当涉及到与其他计算机的通信时(例如通过网络套接字或文件),字节顺序可能很重要。那么最好使用 byte[],因为这样您就可以更好地控制字节顺序。

BitSet 用于其他用例,不可用于加密。

关于java - Java 类 DES 算法中 block 的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26214041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com