YFEncrypt 0.1.0

YFEncrypt 0.1.0

harryphone 维护。



YFEncrypt 0.1.0

YFEncrypt

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从示例目录中运行 pod install

要求

最低 iOS 目标是 iOS 10。

安装

YFEncrypt 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中即可。

pod 'YFEncrypt'

用法

哈希

MD5

NSLog(@"%@", [@"hello, world!" yf_md5String]);

Hmac SHA512

YFHashEncrypt *encryptor = [[YFHashEncrypt alloc] initWithType:YFHashTypeSHA512];
encryptor.contentData = [@"hello, world!" dataUsingEncoding:NSUTF8StringEncoding];
encryptor.keyData = [@"hmac key" dataUsingEncoding:NSUTF8StringEncoding];
NSString *result = [encryptor getHashString];
NSLog(@"result: %@", result);

文件 SHA256

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"private" ofType:@"pem"];
YFHashEncrypt *encryptor = [[YFHashEncrypt alloc] initWithType:YFHashTypeSHA256];
encryptor.filePath = filePath;
NSString *fileResult = [encryptor getHashString];
NSLog(@"fileResult: %@", fileResult);

对称加密

// random key
NSData *aes256KeyData = [NSData yf_randomDataWithLength:32];
NSString *aesKey = [aes256KeyData yf_base64Encode];
NSLog(@"aesKey: %@", aesKey);

NSString *testString = @"hello, world!";
YFSymmetricEncrypt *encryptor = [[YFSymmetricEncrypt alloc] initWithType:YFSymmetricEncryptTypeAES];

// encryption
NSData *resultData = [encryptor operationData:[testString dataUsingEncoding:NSUTF8StringEncoding] keyData:aes256KeyData isEncrypt:YES];
NSLog(@"encryptResult: %@", [resultData yf_base64Encode]);

NSString *result = [encryptor encryptString:testString withKey:aesKey];
NSLog(@"encryptResult: %@", result);

result = [testString yf_AESEncryptByKey:aesKey];
NSLog(@"encryptResult: %@", result);

// decryption
NSData *decryptData = [encryptor operationData:resultData keyData:aes256KeyData isEncrypt:NO];
NSLog(@"decryptResult: %@", [[NSString alloc] initWithData:decryptData encoding:NSUTF8StringEncoding]);

decryptData = [encryptor decryptString:result withKey:aesKey];
NSLog(@"decryptResult: %@", [[NSString alloc] initWithData:decryptData encoding:NSUTF8StringEncoding]);

decryptData = [result yf_AESDecryptByKey:aesKey];
NSLog(@"decryptResult: %@", [[NSString alloc] initWithData:decryptData encoding:NSUTF8StringEncoding]);

RSA

获取密钥字符串和加密

- (void)verifyRSAEncrypt:(YFRSAEncrypt *)encryptor {
    NSLog(@"public key: %@", [encryptor getPublicKey]);
    NSLog(@"private key: %@", [encryptor getPrivateKey]);
    
    NSString *result = [encryptor encryptData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding] isPublicKey:YES];
    NSLog(@"encryptResult: %@", result);
    
    NSData *decryptData = [encryptor decryptString:result isPublicKey:NO];
    NSLog(@"decryptResult: %@", [[NSString alloc] initWithData:decryptData encoding:NSUTF8StringEncoding]);
}

加载 P12 和 DER 文件

YFRSAEncrypt *encryptor = [[YFRSAEncrypt alloc] init];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"p" ofType:@"p12"];
[encryptor loadP12File:filePath password:@"123456"];

filePath = [[NSBundle mainBundle] pathForResource:@"rsacert" ofType:@"der"];
[encryptor loadDerFile:filePath];

[self verifyRSAEncrypt:encryptor];

加载密钥字符串

NSString *privateKey = @"-----BEGIN RSA PRIVATE KEY-----MIICXgIBAAKBgQDKM1liWihMQvCSme8KOgYJk7LoU/pzih1V6137ual1M4UxGmVLHYxiQ4P7DP8bwIAxN0D+NEFeDUi1lcDvzlQR83P8h6JzT777YwRDUPf7EAeTiwrV80UP2w01mO5DLCScszQ8Y9cJV76wJEAJI4Jf/SyX90So1j1y6gbvDDNi7wIDAQABAoGAEZFQjMkEg0u1lyckq6DK8X4RpznUosE3N0XRzpMc8//b7J48esBAeDEhgGhqqcCZ4qzISs3DeCZzUMOIFc25ZAZX5BVpBVdLYxHRvSgoIZIxy+IQ0Xy69ARFwYWsWTfxlXpC8VUPiU1FkNsKRjvUxL+IpOuDAsDyTByboS4MLjECQQDkpMaOi5qg7YSWxAXXNRE/ihu06CYWzl8VQ6TtrjLXnK+03aZIZIj4h7in1nWExRlSBR6IyGiIvvAxuvz5hipzAkEA4mSjKpXHUHXR6/TBCDm1d3+faDkBzEIk5KPO6zBJr349kW1aq6N9ulqRq5G2mApPjpZTB3Do0DCAynjTJ78alQJBAK82jmpCFTbpjUez4/3tTtBwV5ckp7umXjr/YW46pf+QtR1XFcw4Lra12w3TTK94E1VFUwbi/Sh9mbeiYaYd6H0CQQCNvD/C+36LSxgfx13Kjoajx8y+7WHIxWhflIaJC/Q14K0fDP2FE5g1QVqNtW5BhcMFG+vjbrbzEEqxeC+KZMR5AkEAqpIHukvTttU5EsR/wYm0+C11kIevsLRsiGZ7Me/JB2KjmmtOCMxxF/Vm+uwlL4j4xBO+LsaIRfHCtmB6l/YtXA==-----END RSA PRIVATE KEY-----";
NSString *publicKey = @"-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKM1liWihMQvCSme8KOgYJk7LoU/pzih1V6137ual1M4UxGmVLHYxiQ4P7DP8bwIAxN0D+NEFeDUi1lcDvzlQR83P8h6JzT777YwRDUPf7EAeTiwrV80UP2w01mO5DLCScszQ8Y9cJV76wJEAJI4Jf/SyX90So1j1y6gbvDDNi7wIDAQAB-----END PUBLIC KEY-----";

YFRSAEncrypt *encryptor = [[YFRSAEncrypt alloc] init];
[encryptor loadPublicKey:publicKey];
[encryptor loadPrivateKey:privateKey];

[self verifyRSAEncrypt:encryptor];

加载 Pem 文件

YFRSAEncrypt *encryptor = [[YFRSAEncrypt alloc] init];

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"private" ofType:@"pem"];
[encryptor loadPrivateKeyFromPemFile:filePath];

filePath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"pem"];
[encryptor loadPublicKeyFromPemFile:filePath];

[self verifyRSAEncrypt:encryptor];

生成密钥对

YFRSAEncrypt *encryptor = [[YFRSAEncrypt alloc] init];
[encryptor generateKeyPair:1024];

[self verifyRSAEncrypt:encryptor];

作者

[email protected]

许可证

YFEncrypt 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。