Skip to content

Commit fe70165

Browse files
committed
fix security methods
1 parent e7a13b4 commit fe70165

File tree

3 files changed

+69
-20
lines changed

3 files changed

+69
-20
lines changed

VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/Common/Utils/Encryption/VPUPMD5Util.m

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@
1515
@implementation VPUPMD5Util
1616

1717
+ (NSString *)md5HashString:(NSString *)string {
18-
unsigned char *hashStr = (unsigned char *)malloc(sizeof(unsigned char) * (CC_MD5_DIGEST_LENGTH * 2 + 1));
1918

20-
vpup_md5_encryption((char *)[string UTF8String], hashStr);
19+
if (!string) {
20+
return nil;
21+
}
2122

22-
NSString *hashString = [NSString stringWithUTF8String:(char *)hashStr];
23+
//要进行UTF8的转码
24+
const char* input = [string UTF8String];
25+
unsigned char result[CC_MD5_DIGEST_LENGTH];
26+
CC_MD5(input, (CC_LONG)strlen(input), result);
2327

24-
free(hashStr);
28+
NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
29+
for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
30+
[digest appendFormat:@"%02x", result[i]];
31+
}
2532

26-
return hashString;
33+
return digest;
2734
}
2835

2936
+ (NSString *)md5_16bitHashString:(NSString *)string {

VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/Common/Utils/Encryption/VPUPRSAUtil.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,22 @@ @implementation VPUPRSAUtil
2222
*/
2323

2424
static NSString *base64_encode_data(NSData *data){
25+
26+
if (!data) {
27+
return nil;
28+
}
29+
2530
data = [data base64EncodedDataWithOptions:0];
2631
NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
2732
return ret;
2833
}
2934

3035
static NSData *base64_decode(NSString *str){
36+
37+
if (!str) {
38+
return nil;
39+
}
40+
3141
NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];
3242
return data;
3343
}

VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/VideoPlsUtilsPlatformSDK/Common/Utils/Encryption/VPUPSHAUtil.m

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,36 +13,68 @@
1313
@implementation VPUPSHAUtil
1414

1515
+ (NSString *)sha1HashString:(NSString *)string {
16-
unsigned char *hashStr = (unsigned char *)malloc(sizeof(unsigned char) * (CC_SHA1_DIGEST_LENGTH * 2 + 1));
17-
vpup_sha1_encryption((char *)[string UTF8String], hashStr);
1816

19-
NSString *hashString = [NSString stringWithUTF8String:(char *)hashStr];
17+
if (!string) {
18+
return nil;
19+
}
2020

21-
free(hashStr);
21+
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
2222

23-
return hashString;
23+
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
24+
25+
CC_SHA1(data.bytes, (unsigned int)data.length, digest);
26+
27+
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
28+
29+
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
30+
[output appendFormat:@"%02x", digest[i]];
31+
}
32+
33+
return output;
2434
}
2535

2636
+ (NSString *)sha256HashString:(NSString *)string {
27-
unsigned char *hashStr = (unsigned char *)malloc(sizeof(unsigned char) * (CC_SHA256_DIGEST_LENGTH * 2 + 1));
28-
vpup_sha256_encryption((char *)[string UTF8String], hashStr);
29-
NSString *hashString = [NSString stringWithUTF8String:(char *)hashStr];
3037

31-
free(hashStr);
38+
if (!string) {
39+
return nil;
40+
}
41+
42+
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
43+
44+
uint8_t digest[CC_SHA256_DIGEST_LENGTH];
45+
46+
CC_SHA256(data.bytes, (unsigned int)data.length, digest);
3247

33-
return hashString;
48+
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
49+
50+
for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
51+
[output appendFormat:@"%02x", digest[i]];
52+
}
53+
54+
return output;
3455
}
3556

3657
+ (NSString *)hmac_sha1HashString:(NSString *)string key:(NSString *)hmacKey {
37-
unsigned char *hashStr = (unsigned char *)malloc(sizeof(unsigned char) * (CC_SHA1_DIGEST_LENGTH * 2 + 1));
3858

39-
vpup_hmac_sha1_hex_encryption((char *)[hmacKey UTF8String], (char *)[string UTF8String], hashStr);
59+
if (!string || !hmacKey) {
60+
return nil;
61+
}
62+
63+
const char *cData = [string cStringUsingEncoding:NSUTF8StringEncoding];
64+
65+
const char *cKey = [hmacKey cStringUsingEncoding:NSUTF8StringEncoding];
66+
67+
uint8_t cHMAC[CC_SHA1_DIGEST_LENGTH];
68+
69+
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
4070

41-
NSString *hashString = [NSString stringWithUTF8String:(char *)hashStr];
71+
NSMutableString * output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
4272

43-
free(hashStr);
73+
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
74+
[output appendFormat:@"%02x", cHMAC[i]];
75+
}
4476

45-
return hashString;
77+
return output;
4678
}
4779

4880
@end

0 commit comments

Comments
 (0)