Feistel 1.0.6

Feistel 1.0.6

William Vabrinskas 维护。



Feistel 1.0.6

  • 作者:
  • William Vabrinskas

Swift Feistel Cipher

我完全用 Swift 实现的 Feistel 密码尝试

背景

"在密码学中,Feistel 密码是一种对称结构,用于构造分组密码,以德国出生的物理学家和密码学家霍斯特·费斯特尔的名字命名,他在美国 IBM 公司工作时进行了开创性的研究;它也通常称为 Feistel 网络。相当多的分组密码使用此方案,包括数据加密标准(DES)。Feistel 结构的优点是加密和解密操作非常相似,甚至在某些情况下是相同的,只需要反转密钥调度。因此,实现此类密码所需的代码或电路大小将几乎减半。"(维基百科)

安装

  • 在 podfile 中添加 pod 'Feistel'

用法

  1. 使用 shared 属性创建一个 Feistel 对象。
    • let fest = Feistel.shared
  2. 设置您希望用于加密和解密的轮数。默认为 5
    • fest.passes = 10
  3. 可选地设置您想用于加密和解密的输入密钥。
    • fest.inputKeys = ["key1", "key2", "key3", "key4"]
    • 注意:设置输入密钥时,轮数将设置为输入密钥的数量
  4. 创建您想要加密的Data对象。
    • let data = "super duper awesome test".data(using: .utf8)
  5. 加密
    • let encrypted = fest.encrypt(data: data)
  6. 解密(使用已加密的数据)
    • let decrypt = fest.decrypt(data: encrypted)
  7. 密钥在每个实例会话中是唯一的。您可以通过调用以下代码来检索加密中使用的密钥:
    • fest.keys()

资源