OpenSSL 是最强大的 SSL 和 TLS 库,它封装了一个完整的加密库。该库是用纯 C 编写的,由于其巨大规模和设计不佳的 C 接口,初学者入门非常困难。
MIHCrypto 库的目标是提供一个面向对象的接口,允许开发者使用 OpenSSL libCrypto
库的强大功能来编写简单、干净的代码。由于 OpenSSL 是一个非常大的库,所以目前(尚)没有全部被 MIHCrypto 封装。由于我开发这个库是因为个人需求,功能重点在于现代加密方法,但欢迎任何人为库贡献其他部分。
MIHCrypto 基于一些较少数量的协议声明(在 MIHCrypto/Core
中),所有加密算法都实现了这些协议。因此,您只需使用少数几个接口即可使用不同的加密方法进行加密和解密。
id<MIHSymmetricKey> symmetricKey = ...
NSError *encryptionError = nil;
NSData *messageData = [@"My top secret message" dataByUsingEncoding:NSUTF8Encoding];
NSData *encryptedData = [symmetricKey encrypt:messageData error:&encryptionError];
这些密钥既可以从文件中加载,也可以使用 MIHKeyFactory
的实现生成。
MIHAESKeyFactory *factory = [[MIHAESKeyFactory alloc] init];
id<MIHSymmetricKey> aesKey = [factory generateKey];
如果需要更多示例代码,请查看单元测试或查看 文档。
MIHCrypto 基于五个核心协议,这些协议被各种算法和方法实现。
MIHKeyFactory
- 用于生成新的密钥MIHSymmetricKey
- 表示对称密钥(如 AES 或 DES),可以用来加密和解密数据MIHPublicKey
- 表示公钥(如 RSA PUBKEY),可以用来加密数据并验证签名MIHPrivateKey
- 表示私钥(如 RSA private key),可以用来解密数据并签名消息MIHHashAlgorithm
- 表示哈希函数,只有一个方法用于创建传入数据的哈希值MIHCrypto 需要 Xcode 4 及以上版本,目标为 iOS 5.0 及以上或 Mac OS 10.7 Mountain Lion(64 位具有现代 Cocoa 运行时)及以上。
如前所述,OpenSSL是一个非常强大且庞大的项目,因此这个库目前不支持它的所有功能,但会根据需要添加新功能。目前支持以下加密方法:
以下方法正在开发中,可能很快就会发布
任何人都可以添加对其他方法的额外支持。
MIHCrypto可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。