CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

YFEncrypt 0.1.0

YFEncrypt 0.1.0

Maintained by harryphone.



YFEncrypt 0.1.0

YFEncrypt

CI Status Version License Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

Minimum iOS Target is iOS 10.

Installation

YFEncrypt is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'YFEncrypt'

Usage

Hash

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);

File 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);

Symmetric Encrypt

// 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

Get Key String And Encryption

- (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]);
}

Load P12 And Der File

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];

Load Key String

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];

Load Pem File

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];

Generate Key Pair

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

[self verifyRSAEncrypt:encryptor];

Author

[email protected]

License

YFEncrypt is available under the MIT license. See the LICENSE file for more info.