ruby - 在 Ruby 中计算一个字节的奇偶校验

标签 ruby des 3des parity

在 Ruby 中计算一个字节是奇校验还是偶校验的最佳方法是什么?我有一个可用的版本:

result = "AB".to_i(16).to_s(2).count('1').odd?
=> true

不过,将数字转换为字符串并计算“1”似乎是一种糟糕的计算奇偶校验的方法。有什么更好的方法吗?

我希望能够计算 3DES key 的奇偶校验。最终,我想将偶数字节转换为奇数。

谢谢, 丹

最佳答案

除非你拥有的速度不够快,否则请保留它。它清晰简洁,性能比您想象的要好。

我们将根据数组查找对所有内容进行基准测试,这是我测试过的最快的方法:

ODD_PARITY = [
  false,
  true,
  true,
  ...
  true,
  false,
]

def odd_parity?(hex_string)
  ODD_PARITY[hex_string.to_i(16)]
end
  • 数组查找以每秒 640,000 字节的速率计算奇偶校验。
  • Bowsersenior 的 C 代码以每秒 640,000 字节的速率计算奇偶校验。
  • 您的代码以每秒 284,000 字节的速率计算奇偶校验。
  • Bowsersenior 的 native 代码以每秒 171,000 字节的速率计算奇偶校验。
  • Theo 的缩短代码以每秒 128,000 字节的速率计算奇偶校验。

关于ruby - 在 Ruby 中计算一个字节的奇偶校验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4481887/

相关文章:

ruby - 如何在 Capybara 中获取 DOM 元素的 HTML?

java - 在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES

java - PHP 中的 3DES 与 Java 不同

ios 3DES加密/解密CBC

c# - C#.Net 中的 3DES key 大小很重要

ruby - 将转换方法添加到 Numeric 导致 SystemStackError

ruby-on-rails - Rails 4 - 使用带有 select_tag 的 Acts as Taggable gem 从集合中选择标签

python - 为什么我可以使用一个 DES key 加密数据并使用另一个成功解密?

ruby-on-rails - Rails JSON API 的基于 token 的身份验证

aes - DES、Triple DES、AES、blowfish 数据加密比较