XOR 1.0.0

XOR 1.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年9月
SwiftSwift 版本3.0.1
SPM支持 SPM

Alexis Aubry Radanovic 维护。



XOR 1.0.0

XOR 是一个 Swift 库,允许您计算两个整数数组的异或(XOR)

文档

什么是XOR?

异或(XOR)比较两个数字的位。操作返回一个新数字,其位在输入位不同时设置为 1,在输入位相同时设置为 0。

XOR Example

图片来自Swift编程语言书籍,CC by 4.0

此算法通常用于加密和数学。

安装

Swift 包管理器

将此行添加到您的 Package.swift 文件中

.Package(url: "https://github.com/alexaubry/XOR.git", majorVersion: 1, minor: 0)

用法

您可以为任何符合 Swift 本地 Integer 协议(即 IntUInt8 等)的 Array 计算异或。

要这样做,请在整数数组上使用 xor(key:) 方法。

let array = [0x1a,0x2b,0x3c,0x4d,0x5e,0x6f]
let key = [0x84,0x1b,0x76,0x91,0xfa,0x55]

let result = array.xor(key: key)

// result = [0x9e,0x30,0x4a,0xdc,0xa4,0x3a]

您也可以通过使用相同样键在 XOR 结果上调用 xor(key:) 方法来获取原始消息。

let originalMessage = result.xor(key: key)
// originalMessage = [0x1a,0x2b,0x3c,0x4d,0x5e,0x6f]

实现细节

  • 如果组件(接收器或密钥)的长度小于另一个组件,则会添加填充。这允许您有比消息更长的密钥,反之亦然。

示例

let message = [0x1a,0x2b]
let key = [0x3c,0x4d,0x5e,0x6f]
// message will be XOR-ed as [0x00,0x00,0x1a,0x2b]
let message = [0x1a,0x2b,0x3c,0x4d]
let key = [0x5e,0x6f]
// the key will be [0x00,0x00,0x5e,0x6f]
  • 将在接收器和密钥之间的任何公共前缀被删除,以便从输出中删除任何前导 0

示例

let message = [0x1a,0x2b,0x3c]
let key = [0x1a,0x4d,0x5e]
// message will be XOR-ed as [0x2b,0x3c] and the key will be [0x4d,0x5e]

祝你玩得开心