用于在 Swift 项目中对嵌入式密钥进行编码的工具
快速键编码器
用于在 Swift 项目中对嵌入式密钥进行编码的工具。
为什么我们需要在代码中对秘密进行编码?
在 Swift 代码中将密钥存储为字符串是非常不安全的,因为它们可以使用逆向工程软件轻松解析。 此实用程序有助于将密钥嵌入为编码的字节数组,这几乎不可能进行逆向工程。
如何使用
- 生成一组随机字节,用于对密钥进行 XOR 运算。此掩码的大小必须大于或等于密钥的长度。 使用以下命令在 macOS 终端中生成一组随机的 32 字节:
head -c32 /dev/random | xxd -i
如果需要大于 32 字节的掩码,请在命令参数中替换。32
- 在 Xcode 中打开
SwiftKeyEncoder.playground
- 将生成的掩码从终端复制到变量
mask
- 将键和变量名称作为函数的参数。
printEncodedKey
- 跑游乐场
- 将编码的密钥和掩码从控制台输出复制到代码
- 复制到您的项目
KeyDecoder.swift
- 在项目中使用公共方法将密钥解码为字符串。
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]