ios object-c MD5、BASE64加密无法返回固定值

dced5bon  于 2022-12-15  发布在  iOS
关注(0)|答案(3)|浏览(148)

我使用这些代码来获得一个MD5+Base64加密字符串,但当我运行代码时,有时不能返回一个真正的加密字符串,不经常.我的加密代码如下:

+ (NSString *) md5: (NSData *) data
{
    const char* original_str = (const char *)[data bytes];
    unsigned char digist[CC_MD5_DIGEST_LENGTH]; //CC_MD5_DIGEST_LENGTH = 16
    CC_MD5(original_str, (uint)strlen(original_str), digist);
    NSData * md5data = [[NSData alloc] initWithBytes:digist length:sizeof(digist)];
    NSString * result = [md5data base64EncodedStringWithOptions:0];
    return result;
}
muk1a3rh

muk1a3rh1#

试试看

const char *cStr = [@"fd" UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, (int)strlen(cStr), result);
NSMutableString *md5String = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; ++i) {
    [md5String appendFormat:@"%02x", result[i]];
}
NSString *encodedString = [NSString stringWithString:md5String];
NSData *nsdata = [encodedString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64Encoded = [nsdata base64EncodedStringWithOptions:0];
uxhixvfz

uxhixvfz2#

我有办法了,改一下这个密码

CC_MD5(original_str, (uint)strlen(original_str), digist);

CC_MD5(original_str, (CC_LONG)data.length, digist);
moiiocjp

moiiocjp3#

斯威夫特

import CryptoKit
import CommonCrypto

func md5(data: Data) -> String {
        let digest = Insecure.MD5.hash(data: data)
        return Data(digest).base64EncodedString()
    }

相关问题