用于在 Swift 项目中对嵌入式密钥进行编码的工具

快速键编码器

用于在 Swift 项目中对嵌入式密钥进行编码的工具。

为什么我们需要在代码中对秘密进行编码?

在 Swift 代码中将密钥存储为字符串是非常不安全的,因为它们可以使用逆向工程软件轻松解析。 此实用程序有助于将密钥嵌入为编码的字节数组,这几乎不可能进行逆向工程。

如何使用

  1. 生成一组随机字节,用于对密钥进行 XOR 运算。此掩码的大小必须大于或等于密钥的长度。 使用以下命令在 macOS 终端中生成一组随机的 32 字节:
head -c32 /dev/random | xxd -i

如果需要大于 32 字节的掩码,请在命令参数中替换。32

  1. 在 Xcode 中打开SwiftKeyEncoder.playground
  2. 将生成的掩码从终端复制到变量mask
  3. 变量名称作为函数的参数。printEncodedKey
  4. 跑游乐场
  5. 编码的密钥和掩码从控制台输出复制到代码
  6. 复制到您的项目KeyDecoder.swift
  7. 在项目中使用公共方法将密钥解码为字符串。func decode(bytes: [UInt8], mask: [UInt8]) -> String

例:

let mask: [UInt8] = [
    0x3a, 0x4c, 0x09, 0xf8, 0xfb, 0x8d, 0x84, 0xa0, 0x36, 0xeb, 0x53, 0x03, 0x3c, 0xb4, 0x95, 0xd8, 0x90, 0xf8, 0xd4,
    0x22, 0x3c, 0xc8, 0xe8, 0x97, 0x7e, 0x82, 0x53, 0xd7, 0x29, 0xd3, 0xa8, 0x57
]

let keyCoder = KeyCoder(saltSize: 20, mask: mask)
keyCoder.printEncodedKey("1234567890abcdefghi", named: "myKey")

你应该得到类似的输出(我们在编码密钥的开头和结尾有 20 个随机生成的字节):

🔑 Encoding completed successfully.

You can copy the following output directly into your code:

var myKey = [0x46, 0x3f, 0x0a, 0xd6, 0xe5, 0xa3, 0x19, 0xdd, 0xbe, 0xec, 0x96, 0xa2, 0x56, 0xe0, 0xb0, 0x69, 0xf8, 0xf5, 0x6d, 0x5f, 0x6a, 0x0d, 0x5a, 0xac, 0xbe, 0xd2, 0xdd, 0xef, 0x63, 0xb9, 0x0c, 0x48, 0x79, 0xed, 0xca, 0x90, 0xd5, 0xaa, 0x91, 0x54, 0x05, 0xb5, 0xbd, 0xf8, 0x5f, 0xd1, 0x6d, 0x65, 0x97, 0xe7, 0xb4, 0xe0, 0xd2, 0x8e, 0x41, 0x48, 0xce, 0x31, 0x02]

GitHub

点击跳转