2019独角兽企业重金招聘Python工程师标准>>>
在开发中使用加密的时候,发现同一个方法,在不同的电脑中,加密出来的数据不一样,因为是别人的电脑,也没具体去查,但是我用的电脑加密的时候,数据确实的对的,后来没办法,重新找了实现的方法才加密成功。
我的加密方法:
// md5
- (NSString *)md5String {const char *str = self.UTF8String;unsigned char buffer[CC_MD5_DIGEST_LENGTH];CC_MD5(str, (CC_LONG)strlen(str), buffer);return [self stringFromBytes:buffer length:CC_MD5_DIGEST_LENGTH];
}
// sha1
- (NSString *)sha1String {const char *str = self.UTF8String;unsigned char buffer[CC_SHA1_DIGEST_LENGTH];CC_SHA1(str, (CC_LONG)strlen(str), buffer);return [self stringFromBytes:buffer length:CC_SHA1_DIGEST_LENGTH];
}
- (NSString *)stringFromBytes:(unsigned char *)bytes length:(int)length {NSMutableString *strM = [NSMutableString string];for (int i = 0; i < length; i++) {[strM appendFormat:@"%02x", bytes[i]];}return [strM copy];
}
再找的方法:
// md5
-(NSString *) md5{const char *cStr = [self UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH];CC_MD5( cStr, strlen(cStr), digest );NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)[output appendFormat:@"%02x", digest[i]];return output;}
// sha1
- (NSString*) sha1{const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:self.length];uint8_t digest[CC_SHA1_DIGEST_LENGTH];CC_SHA1(data.bytes, data.length, digest);NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)[output appendFormat:@"%02x", digest[i]];return output;}